diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..44f32c1c5d329f77b8584dbee495c1645f1a6ebd
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,402 @@
+name: Build
+
+on:
+  workflow_dispatch:
+  pull_request:
+  push:
+    branches: ["main", "release/*", "project/*"]
+    tags: ["Second_Life_*"]
+
+jobs:
+  build:
+    strategy:
+      matrix:
+        runner: [windows-large, macos-12-xl]
+        configuration: [Release]
+        include:
+          - runner: macos-12-xl
+            developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
+    runs-on: ${{ matrix.runner }}
+    outputs:
+      viewer_channel: ${{ steps.build.outputs.viewer_channel }}
+      viewer_version: ${{ steps.build.outputs.viewer_version }}
+      viewer_branch:  ${{ steps.which-branch.outputs.branch }}
+      relnotes:       ${{ steps.which-branch.outputs.relnotes }}
+      imagename: ${{ steps.build.outputs.imagename }}
+    env:
+      AUTOBUILD_ADDRSIZE: 64
+      AUTOBUILD_BUILD_ID: ${{ github.run_id }}
+      AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }}
+      # authorizes fetching private constituent packages
+      AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }}
+      AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables
+      AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables
+      # Direct autobuild to store vcs_url, vcs_branch and vcs_revision in
+      # autobuild-package.xml.
+      AUTOBUILD_VCS_INFO: "true"
+      AUTOBUILD_VSVER: "170"
+      DEVELOPER_DIR: ${{ matrix.developer_dir }}
+      # Ensure that Linden viewer builds engage Bugsplat.
+      BUGSPLAT_DB: ${{ matrix.configuration != 'ReleaseOS' && 'SecondLife_Viewer_2018' || '' }}
+      build_coverity: false
+      build_log_dir: ${{ github.workspace }}/.logs
+      build_viewer: true
+      BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared
+      # extracted and committed to viewer repo
+      BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions
+      GIT_REF: ${{ github.head_ref || github.ref }}
+      LL_SKIP_REQUIRE_SYSROOT: 1
+      # Setting this variable directs Linden's TUT test driver code to capture
+      # test-program log output at the specified level, but to display it only if
+      # the individual test fails.
+      LOGFAIL: DEBUG
+      master_message_template_checkout: ${{ github.workspace }}/.master-message-template
+      # Only set variants to the one configuration: don't let build.sh loop
+      # over variants, let GitHub distribute variants over multiple hosts.
+      variants: ${{ matrix.configuration }}
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+        with:
+          ref: ${{ github.event.pull_request.head.sha || github.sha }}
+
+      - name: Setup python
+        uses: actions/setup-python@v5
+        with:
+          python-version: "3.11"
+
+      - name: Checkout build variables
+        uses: actions/checkout@v4
+        with:
+          repository: secondlife/build-variables
+          ref: master
+          path: .build-variables
+
+      - name: Checkout master-message-template
+        uses: actions/checkout@v4
+        with:
+          repository: secondlife/master-message-template
+          path: .master-message-template
+
+      - name: Install autobuild and python dependencies
+        run: pip3 install autobuild llsd
+
+      - name: Cache autobuild packages
+        uses: actions/cache@v4
+        id: cache-installables
+        with:
+          path: .autobuild-installables
+          key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-64-${{ matrix.configuration }}-
+            ${{ runner.os }}-64-
+
+      - name: Install windows dependencies
+        if: runner.os == 'Windows'
+        run: choco install nsis-unicode
+
+      - name: Determine source branch
+        id: which-branch
+        uses: secondlife/viewer-build-util/which-branch@v2
+        with:
+          token: ${{ github.token }}
+
+      - name: Build
+        id: build
+        shell: bash
+        env:
+          AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }}
+          RUNNER_OS: ${{ runner.os }}
+        run: |
+          # set up things the viewer's build.sh script expects
+          set -x
+          mkdir -p "$build_log_dir"
+          mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python"
+          source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS"
+          if [[ "$OSTYPE" =~ cygwin|msys ]]
+          then
+            native_path() { cygpath --windows "$1"; }
+            shell_path()  { cygpath --unix "$1"; }
+          else
+            native_path() { echo "$1"; }
+            shell_path()  { echo "$1"; }
+          fi
+          finalize()
+          {
+            case "$1" in
+              true|0)
+                record_success "Build Succeeded"
+                ;;
+              *)
+                record_failure "Build Failed with $1"
+                ;;
+            esac
+          }
+          initialize_build()
+          {
+            echo "initialize_build"
+          }
+          initialize_version()
+          {
+            export revision="$AUTOBUILD_BUILD_ID"
+          }
+          python_cmd()
+          {
+              if [[ "x${1:0:1}" == "x-" ]]    # -m, -c, etc.
+              then # if $1 is a switch, don't try to twiddle paths
+                   "$(shell_path "$PYTHON_COMMAND")" "$@"
+              elif [[ "$(basename "$1")" == "codeticket.py" ]]
+              then # ignore any attempt to contact codeticket
+                   echo "## $@"
+              else # running a script at an explicit path: fix path for Python
+                   local script="$1"
+                   shift
+                   "$(shell_path "$PYTHON_COMMAND")" "$(native_path "$script")" "$@"
+              fi
+          }
+          repo_branch()
+          {
+            echo "$AUTOBUILD_VCS_BRANCH"
+          }
+          record_dependencies_graph()
+          {
+            echo "TODO: generate and post dependency graph"
+          }
+          # Since we're not uploading to codeticket, DO NOT sleep for minutes.
+          sleep()
+          {
+            echo "Not sleeping for $1 seconds"
+          }
+          export -f native_path shell_path finalize initialize_build initialize_version
+          export -f python_cmd repo_branch record_dependencies_graph sleep
+          ## Useful for diagnosing Windows LLProcess/LLLeap test failures
+          ##export APR_LOG="${RUNNER_TEMP}/apr.log"
+          export arch=$(uname | cut -b-6)
+          # Surprise! GH Windows runner's MINGW6 is a $arch value we've never
+          # seen before, so numerous tests don't know about it.
+          [[ "$arch" == "MINGW6" ]] && arch=CYGWIN
+          export AUTOBUILD="$(which autobuild)"
+          # Build with a tag like "Second_Life_Project_Shiny#abcdef0" to get a
+          # viewer channel "Second Life Project Shiny" (ignoring "#hash",
+          # needed to disambiguate tags).
+          if [[ "$GITHUB_REF_TYPE" == "tag" && "${GITHUB_REF_NAME:0:12}" == "Second_Life_" ]]
+          then viewer_channel="${GITHUB_REF_NAME%#*}"
+               export viewer_channel="${viewer_channel//_/ }"
+          else export viewer_channel="Second Life Test"
+          fi
+          echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT"
+
+          # On windows we need to point the build to the correct python
+          # as neither CMake's FindPython nor our custom Python.cmake module
+          # will resolve the correct interpreter location.
+          if [[ "$RUNNER_OS" == "Windows" ]]; then
+            export PYTHON="$(native_path "$(which python)")"
+            echo "Python location: $PYTHON"
+            export PYTHON_COMMAND="$PYTHON"
+          else
+            export PYTHON_COMMAND="python3"
+          fi
+          export PYTHON_COMMAND_NATIVE="$(native_path "$PYTHON_COMMAND")"
+
+          ./build.sh
+
+          # Each artifact is downloaded as a distinct .zip file. Multiple jobs
+          # (per the matrix above) writing the same filepath to the same
+          # artifact name will *overwrite* that file. Moreover, they can
+          # interfere with each other, causing the upload to fail.
+          # https://github.com/actions/upload-artifact#uploading-to-the-same-artifact
+          # Given the size of our installers, and the fact that we typically
+          # only want to download just one instead of a single zip containing
+          # several, generate a distinct artifact name for each installer.
+          # If the matrix above can run multiple builds on the same
+          # platform, we must disambiguate on more than the platform name.
+          # e.g. if we were still running Windows 32-bit builds, we'd need to
+          # qualify the artifact with bit width.
+          if [[ "$AUTOBUILD_CONFIGURATION" == "ReleaseOS" ]]
+          then cfg_suffix='OS'
+          else cfg_suffix=''
+          fi
+          echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT
+
+      - name: Upload executable
+        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app
+        uses: actions/upload-artifact@v4
+        with:
+          name: "${{ steps.build.outputs.artifact }}-app"
+          path: |
+            ${{ steps.build.outputs.viewer_app }}
+
+      # The other upload of nontrivial size is the symbol file. Use a distinct
+      # artifact for that too.
+      - name: Upload symbol file
+        if: matrix.configuration != 'ReleaseOS'
+        uses: actions/upload-artifact@v4
+        with:
+          name: "${{ steps.build.outputs.artifact }}-symbols"
+          path: |
+            ${{ steps.build.outputs.symbolfile }}
+
+      - name: Upload metadata
+        if: matrix.configuration != 'ReleaseOS'
+        uses: actions/upload-artifact@v4
+        with:
+          name: "${{ steps.build.outputs.artifact }}-metadata"
+          # emitted by build.sh, possibly multiple lines
+          path: |
+            ${{ steps.build.outputs.metadata }}
+
+      - name: Upload physics package
+        uses: actions/upload-artifact@v4
+        # should only be set for viewer-private
+        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.physicstpv
+        with:
+          name: "${{ steps.build.outputs.artifact }}-physics"
+          # emitted by build.sh, zero or one lines
+          path: |
+            ${{ steps.build.outputs.physicstpv }}
+
+  sign-and-package-windows:
+    env:
+      AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
+      AZURE_CERT_NAME:     ${{ secrets.AZURE_CERT_NAME }}
+      AZURE_CLIENT_ID:     ${{ secrets.AZURE_CLIENT_ID }}
+      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
+      AZURE_TENANT_ID:     ${{ secrets.AZURE_TENANT_ID }}
+    needs: build
+    runs-on: windows
+    steps:
+      - name: Sign and package Windows viewer
+        if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID
+        uses: secondlife/viewer-build-util/sign-pkg-windows@v2
+        with:
+          vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
+          cert_name: "${{ env.AZURE_CERT_NAME }}"
+          client_id: "${{ env.AZURE_CLIENT_ID }}"
+          client_secret: "${{ env.AZURE_CLIENT_SECRET }}"
+          tenant_id: "${{ env.AZURE_TENANT_ID }}"
+
+  sign-and-package-mac:
+    env:
+      NOTARIZE_CREDS_MACOS:        ${{ secrets.NOTARIZE_CREDS_MACOS }}
+      SIGNING_CERT_MACOS:          ${{ secrets.SIGNING_CERT_MACOS }}
+      SIGNING_CERT_MACOS_IDENTITY: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }}
+      SIGNING_CERT_MACOS_PASSWORD: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }}
+    needs: build
+    runs-on: macos-latest
+    steps:
+      - name: Unpack Mac notarization credentials
+        if: env.NOTARIZE_CREDS_MACOS
+        id: note-creds
+        shell: bash
+        run: |
+          # In NOTARIZE_CREDS_MACOS we expect to find:
+          # USERNAME="..."
+          # PASSWORD="..."
+          # TEAM_ID="..."
+          eval "${{ env.NOTARIZE_CREDS_MACOS }}"
+          echo "::add-mask::$USERNAME"
+          echo "::add-mask::$PASSWORD"
+          echo "::add-mask::$TEAM_ID"
+          echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT"
+          echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT"
+          echo "note_team=$TEAM_ID" >> "$GITHUB_OUTPUT"
+          # If we didn't manage to retrieve all of these credentials, better
+          # find out sooner than later.
+          [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]]
+
+      - name: Sign and package Mac viewer
+        if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team
+        uses: secondlife/viewer-build-util/sign-pkg-mac@v2
+        with:
+          channel: ${{ needs.build.outputs.viewer_channel }}
+          imagename: ${{ needs.build.outputs.imagename }}
+          cert_base64: ${{ env.SIGNING_CERT_MACOS }}
+          cert_name: ${{ env.SIGNING_CERT_MACOS_IDENTITY }}
+          cert_pass: ${{ env.SIGNING_CERT_MACOS_PASSWORD }}
+          note_user: ${{ steps.note-creds.outputs.note_user }}
+          note_pass: ${{ steps.note-creds.outputs.note_pass }}
+          note_team: ${{ steps.note-creds.outputs.note_team }}
+
+  post-windows-symbols:
+    env:
+      BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }}
+      BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}
+    needs: build
+    runs-on: ubuntu-latest
+    steps:
+      - name: Post Windows symbols
+        if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
+        uses: secondlife/viewer-build-util/post-bugsplat-windows@v2
+        with:
+          username: ${{ env.BUGSPLAT_USER }}
+          password: ${{ env.BUGSPLAT_PASS }}
+          database: "SecondLife_Viewer_2018"
+          channel: ${{ needs.build.outputs.viewer_channel }}
+          version: ${{ needs.build.outputs.viewer_version }}
+
+  post-mac-symbols:
+    env:
+      BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }}
+      BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}
+    needs: build
+    runs-on: ubuntu-latest
+    steps:
+      - name: Post Mac symbols
+        if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
+        uses: secondlife/viewer-build-util/post-bugsplat-mac@v2
+        with:
+          username: ${{ env.BUGSPLAT_USER }}
+          password: ${{ env.BUGSPLAT_PASS }}
+          database: "SecondLife_Viewer_2018"
+          channel: ${{ needs.build.outputs.viewer_channel }}
+          version: ${{ needs.build.outputs.viewer_version }}
+
+  release:
+    needs: [build, sign-and-package-windows, sign-and-package-mac]
+    runs-on: ubuntu-latest
+    if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_')
+    steps:
+      - uses: actions/download-artifact@v4
+        with:
+          pattern: "*-installer"
+
+      - uses: actions/download-artifact@v4
+        with:
+          pattern: "*-metadata"
+      
+      - name: Rename metadata
+        run: |
+          cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml
+          cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt
+          cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml
+          cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt
+
+      # forked from softprops/action-gh-release
+      - name: Create GitHub release
+        id: release
+        uses: secondlife-3p/action-gh-release@v1
+        with:
+          # name the release page for the branch
+          name: "${{ needs.build.outputs.viewer_branch }}"
+          # SL-20546: want the channel and version to be visible on the
+          # release page
+          body: |
+            Build ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+            ${{ needs.build.outputs.viewer_channel }}
+            ${{ needs.build.outputs.viewer_version }}
+            ${{ needs.build.outputs.relnotes }}
+          prerelease: true
+          generate_release_notes: true
+          target_commitish: ${{ github.sha }}
+          previous_tag: release
+          append_body: true
+          fail_on_unmatched_files: true
+          files: |
+            macOS-installer/*.dmg 
+            Windows-installer/*.exe
+            *-autobuild-package.xml
+            *-viewer_version.txt
+
+      - name: post release URL
+        run: |
+          echo "::notice::Release ${{ steps.release.outputs.url }}"
diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3f4bf21864972e71c804b900af5ae70e3dba81eb
--- /dev/null
+++ b/.github/workflows/cla.yaml
@@ -0,0 +1,26 @@
+name: Check CLA
+
+on:
+  issue_comment:
+    types: [created]
+  pull_request_target:
+    types: [opened, closed, synchronize]
+
+jobs:
+  cla:
+    name: Check CLA
+    runs-on: ubuntu-latest
+    steps:
+      - name: CLA Assistant
+        if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
+        uses: secondlife-3p/contributor-assistant@v2
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          PERSONAL_ACCESS_TOKEN: ${{ secrets.SHARED_CLA_TOKEN }}
+        with:
+          branch: main
+          path-to-document: https://github.com/secondlife/cla/blob/main/CLA.md
+          path-to-signatures: signatures.json
+          remote-organization-name: secondlife
+          remote-repository-name: cla-signatures
+          allowlist: callum@mbp.localdomain
diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e44e22358945c8507dd0b6242674273bacf058c2
--- /dev/null
+++ b/.github/workflows/stale.yaml
@@ -0,0 +1,25 @@
+name: Stale PRs 
+on:
+  workflow_dispatch:
+  schedule:
+    - cron: 0 0 * * *
+
+permissions:
+  issues: write
+  pull-requests: write
+
+jobs:
+  stale:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/stale@v6
+        id: stale
+        with:
+          stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days
+          days-before-stale: 30
+          days-before-close: 7
+          days-before-issue-close: -1
+          exempt-pr-labels: blocked,must,should,keep
+          stale-pr-label: stale
+      - name: Print outputs
+        run: echo ${{ join(steps.stale.outputs.*, ',') }}
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..46a287ea32764f95e134d1867e7e4c6ede5d59d4
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,559 @@
+#!/usr/bin/env bash
+
+# This is the custom build script for the viewer
+#
+# It must be run by the Linden Lab build farm shared buildscript because
+# it relies on the environment that sets up, functions it provides, and
+# the build result post-processing it does.
+#
+# PLEASE NOTE:
+#
+# * This script is interpreted on three platforms, including windows and cygwin
+#   Cygwin can be tricky....
+# * The special style in which python is invoked is intentional to permit
+#   use of a native python install on windows - which requires paths in DOS form
+
+cleanup="true"
+
+retry_cmd()
+{
+    max_attempts="$1"; shift
+    initial_wait="$1"; shift
+    attempt_num=1
+    echo "trying" "$@"
+    until "$@"
+    do
+        if ((attempt_num==max_attempts))
+        then
+            echo "Last attempt $attempt_num failed"
+            return 1
+        else
+            wait_time=$(($attempt_num*$initial_wait))
+            echo "Attempt $attempt_num failed. Trying again in $wait_time seconds..."
+            sleep $wait_time
+            attempt_num=$(($attempt_num+1))
+        fi
+    done
+    echo "succeeded"
+    return 0
+}
+
+build_dir_Darwin()
+{
+  echo build-darwin-x86_64
+}
+
+build_dir_Linux()
+{
+  echo build-linux-i686
+}
+
+build_dir_CYGWIN()
+{
+  echo build-vc${AUTOBUILD_VSVER:-120}-${AUTOBUILD_ADDRSIZE}
+}
+
+viewer_channel_suffix()
+{
+    local package_name="$1"
+    local suffix_var="${package_name}_viewer_channel_suffix"
+    local suffix=$(eval "echo \$${suffix_var}")
+    if [ "$suffix"x = ""x ]
+    then
+        echo ""
+    else
+        echo "_$suffix"
+    fi
+}
+
+installer_Darwin()
+{
+  local package_name="$1"
+  local package_dir="$(build_dir_Darwin)/newview/"
+  local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_x86_64\\.dmg\$"
+  # since the additional packages are built after the base package,
+  # sorting oldest first ensures that the unqualified package is returned
+  # even if someone makes a qualified name that duplicates the last word of the base name
+  local package=$(ls -1tr "$package_dir" 2>/dev/null | grep -E "$pattern" | head -n 1)
+  test "$package"x != ""x && echo "$package_dir/$package"
+}
+
+installer_Linux()
+{
+  local package_name="$1"
+  local package_dir="$(build_dir_Linux)/newview/"
+  local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.xz\$"
+  # since the additional packages are built after the base package,
+  # sorting oldest first ensures that the unqualified package is returned
+  # even if someone makes a qualified name that duplicates the last word of the base name
+  package=$(ls -1tr "$package_dir" 2>/dev/null | grep -E "$pattern" | head -n 1)
+  test "$package"x != ""x && echo "$package_dir/$package"
+}
+
+installer_CYGWIN()
+{
+  local package_name="$1"
+  local variant=${last_built_variant:-Release}
+  local build_dir=$(build_dir_CYGWIN ${variant})
+  local package_dir
+  if [ "$package_name"x = ""x ]
+  then
+      package_dir="${build_dir}/newview/${variant}"
+  else
+      package_dir="${build_dir}/newview/${package_name}/${variant}"
+  fi
+  if [ -r "${package_dir}/touched.bat" ]
+  then
+    local package_file=$(sed 's:.*=::' "${package_dir}/touched.bat")
+    echo "${package_dir}/${package_file}"
+  fi
+}
+
+# if someone wants to run build.sh outside the GitHub environment
+[[ -n "$GITHUB_OUTPUT" ]] || export GITHUB_OUTPUT='/dev/null'
+# The following is based on the Warning for GitHub multiline output strings:
+# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
+EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
+
+# Build up these arrays as we go
+metadata=()
+symbolfile=()
+physicstpv=()
+# and dump them to GITHUB_OUTPUT when done
+cleanup="$cleanup ; \
+arrayoutput metadata ; \
+arrayoutput symbolfile ; \
+arrayoutput physicstpv"
+trap "$cleanup" EXIT
+
+arrayoutput()
+{
+    local outputname="$1"
+    # append "[*]" to the array name so array indirection works
+    local array="$1[*]"
+    local IFS='
+'
+    echo "$outputname<<$EOF
+${!array}
+$EOF" >> "$GITHUB_OUTPUT"
+}
+
+pre_build()
+{
+  local variant="$1"
+  begin_section "Configure $variant"
+    [ -n "$master_message_template_checkout" ] \
+    && [ -r "$master_message_template_checkout/message_template.msg" ] \
+    && template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg"
+
+    RELEASE_CRASH_REPORTING=ON
+    HAVOK=ON
+    SIGNING=()
+    if [[ "$arch" == "Darwin" && "$variant" == "Release" ]]
+    then SIGNING=("-DENABLE_SIGNING:BOOL=YES" \
+                  "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.")
+    fi
+
+    if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ]
+    then
+        case "$arch" in
+            CYGWIN)
+                symplat="windows"
+                ;;
+            Darwin)
+                symplat="darwin"
+                ;;
+            Linux)
+                symplat="linux"
+                ;;
+        esac
+        # This name is consumed by indra/newview/CMakeLists.txt. Make it
+        # absolute because we've had troubles with relative pathnames.
+        abs_build_dir="$(cd "$build_dir"; pwd)"
+        VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.xz")"
+    fi
+
+    # honor autobuild_configure_parameters same as sling-buildscripts
+    eval_autobuild_configure_parameters=$(eval $(echo echo $autobuild_configure_parameters))
+
+    "$autobuild" configure --quiet -c $variant \
+     ${eval_autobuild_configure_parameters:---} \
+     -DPACKAGE:BOOL=ON \
+     -DHAVOK:BOOL="$HAVOK" \
+     -DRELEASE_CRASH_REPORTING:BOOL="$RELEASE_CRASH_REPORTING" \
+     -DVIEWER_SYMBOL_FILE:STRING="${VIEWER_SYMBOL_FILE:-}" \
+     -DBUGSPLAT_DB:STRING="${BUGSPLAT_DB:-}" \
+     -DVIEWER_CHANNEL:STRING="${viewer_channel}" \
+     -DGRID:STRING="\"$viewer_grid\"" \
+     -DTEMPLATE_VERIFIER_OPTIONS:STRING="$template_verifier_options" $template_verifier_master_url \
+     "${SIGNING[@]}" \
+    || fatal "$variant configuration failed"
+
+  end_section "Configure $variant"
+}
+
+package_llphysicsextensions_tpv()
+{
+  begin_section "PhysicsExtensions_TPV"
+  tpv_status=0
+  # nat 2016-12-21: without HAVOK, can't build PhysicsExtensions_TPV.
+  if [ "$variant" = "Release" -a "${HAVOK:-}" != "OFF" ]
+  then 
+      tpvconfig="$build_dir/packages/llphysicsextensions/autobuild-tpv.xml"
+      test -r "$tpvconfig" || fatal "No llphysicsextensions_tpv autobuild configuration found"
+      # SL-19942: autobuild ignores -c switch if AUTOBUILD_CONFIGURATION set
+      unset AUTOBUILD_CONFIGURATION
+      "$autobuild" build --quiet --config-file "$(native_path "$tpvconfig")" -c Tpv \
+          || fatal "failed to build llphysicsextensions_tpv"
+      
+      # capture the package file name for use in upload later...
+      PKGTMP=`mktemp -t pgktpv.XXXXXX`
+      cleanup="$cleanup ; rm $PKGTMP* 2>/dev/null"
+      trap "$cleanup" EXIT
+      "$autobuild" package --quiet --config-file "$tpvconfig" --results-file "$(native_path $PKGTMP)" || fatal "failed to package llphysicsextensions_tpv"
+      tpv_status=$?
+      if [ -r "${PKGTMP}" ]
+      then
+          . "${PKGTMP}" # sets autobuild_package_{name,filename,md5}
+          echo "${autobuild_package_filename}" > $build_dir/llphysicsextensions_package
+      fi
+  else
+      record_event "Do not provide llphysicsextensions_tpv for $variant"
+      llphysicsextensions_package=""
+  fi
+  end_section "PhysicsExtensions_TPV"
+  return $tpv_status
+}
+
+build()
+{
+  local variant="$1"
+  if $build_viewer
+  then
+    begin_section "autobuild $variant"
+    # honor autobuild_build_parameters same as sling-buildscripts
+    eval_autobuild_build_parameters=$(eval $(echo echo $autobuild_build_parameters))
+    "$autobuild" build --no-configure -c $variant \
+         $eval_autobuild_build_parameters \
+    || fatal "failed building $variant"
+    echo true >"$build_dir"/build_ok
+    end_section "autobuild $variant"
+    
+    begin_section "extensions $variant"
+    # Run build extensions
+    if [ -d ${build_dir}/packages/build-extensions ]
+    then
+        for extension in ${build_dir}/packages/build-extensions/*.sh
+        do
+            begin_section "Extension $extension"
+            . $extension
+            end_section "Extension $extension"
+        done
+    fi
+
+    # *TODO: Make this a build extension.
+    package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages"
+    end_section "extensions $variant"
+
+  else
+      record_event "Skipping build due to configuration build_viewer=${build_viewer}"
+      echo true >"$build_dir"/build_ok
+  fi
+}
+
+################################################################
+# Start of the actual script
+################################################################
+
+# Check to see if we were invoked from the master buildscripts wrapper, if not, fail
+if [ "x${BUILDSCRIPTS_SUPPORT_FUNCTIONS}" = x ]
+then
+    echo "This script relies on being run by the master Linden Lab buildscripts" 1>&2
+    exit 1
+fi
+
+shopt -s nullglob # if nothing matches a glob, expand to nothing
+
+initialize_build # provided by master buildscripts build.sh
+
+begin_section "autobuild initialize"
+# ensure AUTOBUILD is in native path form for child processes
+AUTOBUILD="$(native_path "$AUTOBUILD")"
+# set "$autobuild" to cygwin path form for use locally in this script
+autobuild="$(shell_path "$AUTOBUILD")"
+if [ ! -x "$autobuild" ]
+then
+  record_failure "AUTOBUILD not executable: '$autobuild'"
+  exit 1
+fi
+
+# load autobuild provided shell functions and variables
+"$autobuild" --quiet source_environment > "$build_log_dir/source_environment"
+PYTHONPATH="$BUILDSCRIPTS_SHARED/packages/lib/python:$PYTHONPATH"
+begin_section "dump source environment commands"
+cat "$build_log_dir/source_environment"
+end_section "dump source environment commands"
+
+begin_section "execute source environment commands"
+. "$build_log_dir/source_environment"
+end_section "execute source environment commands"
+
+end_section "autobuild initialize"
+
+# something about the additional_packages mechanism messes up buildscripts results.py on Linux
+# since we don't care about those packages on Linux, just zero it out, yes - a HACK
+if [ "$arch" = "Linux" ]
+then
+    export additional_packages=
+fi
+
+begin_section "select viewer channel"
+# Look for a branch-specific viewer_channel setting
+#    changeset_branch is set in the sling-buildscripts
+viewer_build_branch=$(echo -n "${changeset_branch:-$(repo_branch ${BUILDSCRIPTS_SRC:-$(pwd)})}" | tr -Cs 'A-Za-z0-9_' '_' | sed -E 's/^_+//; s/_+$//')
+if [ -n "$viewer_build_branch" ] 
+then
+    branch_viewer_channel_var="${viewer_build_branch}_viewer_channel"
+    if [ -n "${!branch_viewer_channel_var}" ]
+    then
+        viewer_channel="${!branch_viewer_channel_var}"
+        record_event "Overriding viewer_channel for branch '$changeset_branch' to '$viewer_channel'"
+    else
+        record_event "No branch-specific viewer_channel for branch '$viewer_build_branch'; to set a branch build channel set '$branch_viewer_channel_var'"
+    fi
+fi
+end_section "select viewer channel"
+
+python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}"
+
+initialize_version # provided by buildscripts build.sh; sets version id
+
+begin_section "coding policy check"
+# On our TC Windows build hosts, the GitPython library underlying our
+# coding_policy_git.py script fails to run git for reasons we have not tried
+# to diagnose. Clearly git works fine on those hosts, or we would never get
+# this far. Running coding policy checks on one platform *should* suffice...
+if [[ "$arch" == "Darwin" ]]
+then
+    git_hooks_reqs="$git_hooks_checkout/requirements.txt"
+    if [[ -r "$(shell_path "$git_hooks_reqs")" ]]
+    then
+        # install the git-hooks dependencies
+        pip install -r "$(native_path "$git_hooks_reqs")" || \
+            fatal "pip install git-hooks failed"
+    fi
+    git_hooks_script="$git_hooks_checkout/coding_policy_git.py"
+    if [[ -r "$(shell_path "$git_hooks_script")" ]]
+    then
+        # validate the branch we're about to build
+        python_cmd "$(native_path "$git_hooks_script")" --all_files || \
+            fatal "coding policy check failed"
+    fi
+fi
+end_section "coding policy check"
+
+# Now run the build
+succeeded=true
+last_built_variant=
+for variant in $variants
+do
+  # Only the last built arch is available for upload
+  last_built_variant="$variant"
+
+  build_dir=`build_dir_$arch $variant`
+
+  begin_section "Initialize $variant Build Directory"
+  rm -rf "$build_dir"
+  mkdir -p "$build_dir/tmp"
+  end_section "Initialize $variant Build Directory"
+
+  if pre_build "$variant" "$build_dir"
+  then
+      begin_section "Build $variant"
+      build "$variant" "$build_dir"
+      end_section "Build $variant"
+
+      begin_section "post-build $variant"
+      if `cat "$build_dir/build_ok"`
+      then
+          case "$variant" in
+            Release)
+              if [ -r "$build_dir/autobuild-package.xml" ]
+              then
+                  begin_section "Autobuild metadata"
+                  python_cmd "$helpers/codeticket.py" addoutput "Autobuild Metadata" "$build_dir/autobuild-package.xml" --mimetype text/xml \
+                      || fatal "Upload of autobuild metadata failed"
+                  metadata+=("$build_dir/autobuild-package.xml")
+                  if [ "$arch" != "Linux" ]
+                  then
+                      record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh
+                  else
+                      record_event "TBD - no dependency graph for linux (probable python version dependency)"
+                  fi
+                  end_section "Autobuild metadata"
+              else
+                  record_event "no autobuild metadata at '$build_dir/autobuild-package.xml'"
+              fi
+              if [ -r "$build_dir/newview/viewer_version.txt" ]
+              then
+                  begin_section "Viewer Version"
+                  viewer_version="$(<"$build_dir/newview/viewer_version.txt")"
+                  python_cmd "$helpers/codeticket.py" addoutput "Viewer Version" "$viewer_version" --mimetype inline-text \
+                      || fatal "Upload of viewer version failed"
+                  metadata+=("$build_dir/newview/viewer_version.txt")
+                  echo "viewer_version=$viewer_version" >> "$GITHUB_OUTPUT"
+                  end_section "Viewer Version"
+              fi
+              ;;
+            Doxygen)
+              if [ -r "$build_dir/doxygen_warnings.log" ]
+              then
+                  record_event "Doxygen warnings generated; see doxygen_warnings.log"
+                  python_cmd "$helpers/codeticket.py" addoutput "Doxygen Log" "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD
+                  metadata+=("$build_dir/doxygen_warnings.log")
+              fi
+              if [ -d "$build_dir/doxygen/html" ]
+              then
+                  tar -cJf "$build_dir/viewer-doxygen.tar.xz" --strip-components 3  "$build_dir/doxygen/html"
+                  python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.xz" \
+                      || fatal "Upload of doxygen tarball failed"
+                  metadata+=("$build_dir/viewer-doxygen.tar.xz")
+              fi
+              ;;
+            *)
+              ;;
+          esac
+
+      else
+          record_failure "Build of \"$variant\" failed."
+      fi
+      end_section "post-build $variant"
+
+  else
+      record_event "configure for $variant failed: build skipped"
+  fi
+
+  if ! $succeeded 
+  then
+      record_event "remaining variants skipped due to $variant failure"
+      break
+  fi
+done
+
+# build debian package
+if [ "$arch" == "Linux" ]
+then
+  if $succeeded
+  then
+    if $build_viewer_deb && [ "$last_built_variant" == "Release" ]
+    then
+      begin_section "Build Viewer Debian Package"
+
+      # mangle the changelog
+      dch --force-bad-version \
+          --distribution unstable \
+          --newversion "${VIEWER_VERSION}" \
+          "Automated build #$build_id, repository $branch revision $revision."
+
+      # build the debian package
+      $pkg_default_debuild_command || record_failure "\"$pkg_default_debuild_command\" failed."
+
+      # Unmangle the changelog file
+      hg revert debian/changelog
+
+      end_section "Build Viewer Debian Package"
+
+      # Run debian extensions
+      if [ -d ${build_dir}/packages/debian-extensions ]; then
+          for extension in ${build_dir}/packages/debian-extensions/*.sh; do
+              . $extension
+          done
+      fi
+      # Move any .deb results.
+      mkdir -p ../packages_public
+      mkdir -p ../packages_private
+      mv ${build_dir}/packages/*.deb ../packages_public 2>/dev/null || true
+      mv ${build_dir}/packages/packages_private/*.deb ../packages_private 2>/dev/null || true
+
+      # upload debian package and create repository
+      begin_section "Upload Debian Repository"
+      for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do
+        deb_pkg=$(basename "$deb_file" | sed 's,_.*,,')
+        python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" $deb_file \
+            || fatal "Upload of debian $deb_pkg failed"
+      done
+      for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do
+        deb_pkg=$(basename "$deb_file" | sed 's,_.*,,')
+        python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" "$deb_file" --private \
+            || fatal "Upload of debian $deb_pkg failed"
+      done
+
+      create_deb_repo
+
+      # Rename the local debian_repo* directories so that the master buildscript
+      # doesn't make a remote repo again.
+      for debian_repo_type in debian_repo debian_repo_private; do
+        if [ -d "$build_log_dir/$debian_repo_type" ]; then
+          mv $build_log_dir/$debian_repo_type $build_log_dir/${debian_repo_type}_pushed
+        fi
+      done
+      end_section "Upload Debian Repository"
+      
+    else
+      record_event "debian build not enabled"
+    fi
+  else
+    record_event "skipping debian build due to failed build"
+  fi
+fi
+
+# Some of the uploads takes a long time to finish in the codeticket backend,
+# causing the next codeticket upload attempt to fail.
+# Inserting this after each potentially large upload may prevent those errors.
+# JJ is making changes to Codeticket that we hope will eliminate this failure, then this can be removed
+wait_for_codeticket()
+{
+    sleep $(( 60 * 6 ))
+}
+
+# check status and upload results to S3
+if $succeeded
+then
+  if $build_viewer
+  then
+    begin_section "Uploads"
+    # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file.
+    if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ]
+    then
+        # BugSplat wants to see xcarchive.zip
+        # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip
+        symbol_file="${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip"
+        if [[ ! -f "$symbol_file" ]]
+        then
+            # symbol tarball we prep for (e.g.) Breakpad
+            symbol_file="$VIEWER_SYMBOL_FILE"
+        fi
+        # Upload crash reporter file
+        symbolfile+=("$symbol_file")
+    fi
+
+    # Upload the llphysicsextensions_tpv package, if one was produced
+    # Only upload this package when building the private repo so the
+    # artifact is private.
+    if [[ "x$GITHUB_REPOSITORY" == "xsecondlife/viewer-private" && \
+          -r "$build_dir/llphysicsextensions_package" ]]
+    then
+        llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package)
+        physicstpv+=("$llphysicsextensions_package")
+    fi
+    end_section "Uploads"
+  else
+    record_event "skipping upload of installer"
+  fi
+
+else
+    record_event "skipping upload of installer due to failed build"
+fi
+
+# The branch independent build.sh script invoking this script will finish processing
+$succeeded || exit 1
diff --git a/doc/contributions.txt b/doc/contributions.txt
index c902a118741b405747e79b30f1f560fe459e6c9e..5db05c872060f208307744dce1f23bb5e570d0ea 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -294,6 +294,7 @@ Beq Janus
 	SL-18637
 	SL-19317
 	SL-19660
+	SL-20610
 Beth Walcher
 Bezilon Kasei
 Biancaluce Robbiani
diff --git a/indra/llcommon/classic_callback.h b/indra/llcommon/classic_callback.h
index a683d725de4706e72bbd9508a838d5fafe6b5339..8a6ac7f7ffc06d9eac23f2dc102b8edb510a2bf7 100644
--- a/indra/llcommon/classic_callback.h
+++ b/indra/llcommon/classic_callback.h
@@ -119,11 +119,11 @@ class ClassicCallback
      * ClassicCallback must not itself be copied or moved! Once you've passed
      * get_userdata() to some API, this object MUST remain at that address.
      */
-    // However, we can't yet count on C++17 Class Template Argument Deduction,
-    // which means makeClassicCallback() is still useful, which means we MUST
-    // be able to return one to construct into caller's instance (move ctor).
-    // Possible defense: bool 'referenced' data member set by get_userdata(),
-    // with an llassert_always(! referenced) check in the move constructor.
+    // However, makeClassicCallback() is useful for deducing the CALLABLE
+    // type, which means we MUST be able to return one to construct into
+    // caller's instance (move ctor). Possible defense: bool 'referenced' data
+    // member set by get_userdata(), with an llassert_always(! referenced)
+    // check in the move constructor.
     ClassicCallback(ClassicCallback const&) = delete;
     ClassicCallback(ClassicCallback&&) = default; // delete;
     ClassicCallback& operator=(ClassicCallback const&) = delete;
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index db92a98344e21af931ad5217a049f62c952dcc5b..b3b4c9eb0141f88252fba8aae0a18313dbacce29 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -96,7 +96,6 @@ BOOL LLApp::sLogInSignal = FALSE;
 // Keeps track of application status
 LLScalarCond<LLApp::EAppStatus> LLApp::sStatus{LLApp::APP_STATUS_STOPPED};
 LLAppErrorHandler LLApp::sErrorHandler = NULL;
-BOOL LLApp::sErrorThreadRunning = FALSE;
 
 
 LLApp::LLApp()
@@ -783,13 +782,8 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
 				return;
 			}		
 			
-			// Flag status to ERROR, so thread_error does its work.
+			// Flag status to ERROR
 			LLApp::setError();
-			// Block in the signal handler until somebody says that we're done.
-			while (LLApp::sErrorThreadRunning && !LLApp::isStopped())
-			{
-				ms_sleep(10);
-			}
 			
 			if (LLApp::sLogInSignal)
 			{
diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h
index 8d426b9abc20f01d458fb526d304137b9d5a5f76..16f638afd0e679b683ee8c2998b6af07500c0d3c 100644
--- a/indra/llcommon/llapp.h
+++ b/indra/llcommon/llapp.h
@@ -284,7 +284,6 @@ class LL_COMMON_API LLApp
 
 	static void setStatus(EAppStatus status);		// Use this to change the application status.
 	static LLScalarCond<EAppStatus> sStatus; // Reflects current application status
-	static BOOL sErrorThreadRunning; // Set while the error thread is running
 	static BOOL sDisableCrashlogger; // Let the OS handle crashes for us.
 
 	/**
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index 36227e67990a69c54ea09e44268ba8f78b939620..3529b2212b24064ac79cfb662073c791f5329410 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -123,7 +123,7 @@ LLCoros::LLCoros():
     // Previously we used
     // boost::context::guarded_stack_allocator::default_stacksize();
     // empirically this is insufficient.
-    mStackSize(768*1024),
+    mStackSize(900*1024),
     // mCurrent does NOT own the current CoroData instance -- it simply
     // points to it. So initialize it with a no-op deleter.
     mCurrent{ [](CoroData*){} }
diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h
index 7dd889a62b423df692ffe8d5469f5fc45c06a094..9d57888cda09f405f978e88252908a624a31da53 100644
--- a/indra/llcommon/lldictionary.h
+++ b/indra/llcommon/lldictionary.h
@@ -87,11 +87,10 @@ class LLDictionary : public std::map<Index, Entry *>
 	}
 	void addEntry(Index index, Entry *entry)
 	{
-		if (lookup(index))
+		if (!this->emplace(index, entry).second) 
 		{
 			LL_ERRS() << "Dictionary entry already added (attempted to add duplicate entry)" << LL_ENDL;
 		}
-		(*this)[index] = entry;
 	}
 };
 
diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h
index ce01b9350ec73b3bb4de4550278c603a6c57c6c4..1b396bdf5422fe1c9891d76acbc3bd52083412a6 100644
--- a/indra/llcommon/llpointer.h
+++ b/indra/llcommon/llpointer.h
@@ -48,7 +48,6 @@ template <class Type> class LLPointer
 public:
 	template<typename Subclass>
 	friend class LLPointer;
-
 	LLPointer()  noexcept :
 		mPointer(nullptr)
 	{
@@ -72,7 +71,7 @@ template <class Type> class LLPointer
 		ptr.mPointer = nullptr;
 	}
 
-	// support conversion up the type hierarchy.  See Item 45 in Effective C++, 3rd Ed.
+	// Support conversion up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.
 	template<typename Subclass>
 	LLPointer(const LLPointer<Subclass>& ptr) noexcept :
 		mPointer(ptr.get())
@@ -87,7 +86,7 @@ template <class Type> class LLPointer
 		ptr.mPointer = nullptr;
 	}
 
-	~LLPointer()								
+	~LLPointer()
 	{
 		unref();
 	}
@@ -112,15 +111,15 @@ template <class Type> class LLPointer
 	bool operator > (const LLPointer<Type>& ptr) const noexcept          { return (mPointer > ptr.mPointer); 	}
 
 	LLPointer<Type>& operator =(Type* ptr) noexcept
-	{ 
+	{
 		assign(ptr);
-		return *this; 
+		return *this;
 	}
 
 	LLPointer<Type>& operator =(const LLPointer<Type>& ptr) noexcept
-	{ 
+	{
 		assign(ptr);
-		return *this; 
+		return *this;
 	}
 
 	LLPointer<Type>& operator =(LLPointer<Type>&& ptr) noexcept
@@ -135,9 +134,9 @@ template <class Type> class LLPointer
 	// support assignment up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.
 	template<typename Subclass>
 	LLPointer<Type>& operator =(const LLPointer<Subclass>& ptr) noexcept
-	{ 
+	{
 		assign(ptr.get());
-		return *this; 
+		return *this;
 	}
 
 	template<typename Subclass>
@@ -149,7 +148,7 @@ template <class Type> class LLPointer
 		}
 		return *this;
 	}
-	
+
 	inline void swap(LLPointer<Type>& ptr) noexcept
     {
 		Type* temp = mPointer;
@@ -179,16 +178,6 @@ template <class Type> class LLPointer
 	void unref();
 #else
 
-	inline void assign(const LLPointer<Type>& ptr) noexcept
-	{
-		if( mPointer != ptr.mPointer )
-		{
-			unref(); 
-			mPointer = ptr.mPointer;
-			ref();
-		}
-	}
-
 	inline void ref() noexcept
 	{ 
 		if (mPointer)
@@ -211,7 +200,18 @@ template <class Type> class LLPointer
 			}
 		}
 	}
-#endif
+#endif // LL_LIBRARY_INCLUDE
+
+	void assign(const LLPointer<Type>& ptr) noexcept
+	{
+		if (mPointer != ptr.mPointer)
+		{
+			unref();
+			mPointer = ptr.mPointer;
+			ref();
+		}
+	}
+
 protected:
 	Type*	mPointer;
 };
@@ -286,23 +286,23 @@ template <class Type> class LLConstPointer
 	{
 		if( mPointer != ptr )
 		{
-			unref(); 
-			mPointer = ptr; 
+			unref();
+			mPointer = ptr;
 			ref();
 		}
 
-		return *this; 
+		return *this;
 	}
 
 	LLConstPointer<Type>& operator =(const LLConstPointer<Type>& ptr) noexcept
-	{ 
+	{
 		if( mPointer != ptr.mPointer )
 		{
-			unref(); 
+			unref();
 			mPointer = ptr.mPointer;
 			ref();
 		}
-		return *this; 
+		return *this;
 	}
 
 	LLConstPointer<Type>& operator =(LLConstPointer<Type>&& ptr) noexcept
@@ -317,16 +317,16 @@ template <class Type> class LLConstPointer
 	// support assignment up the type hierarchy. See Item 45 in Effective C++, 3rd Ed.
 	template<typename Subclass>
 	LLConstPointer<Type>& operator =(const LLConstPointer<Subclass>& ptr) noexcept
-	{ 
+	{
 		if( mPointer != ptr.get() )
 		{
-			unref(); 
+			unref();
 			mPointer = ptr.get();
 			ref();
 		}
-		return *this; 
+		return *this;
 	}
-	
+
 	template<typename Subclass>
 	LLConstPointer<Type>& operator =(LLConstPointer<Subclass>&& ptr) noexcept
 	{
@@ -362,11 +362,11 @@ template <class Type> class LLConstPointer
 
 protected:
 #ifdef LL_LIBRARY_INCLUDE
-	void ref();                             
+	void ref();
 	void unref();
-#else
+#else // LL_LIBRARY_INCLUDE
 	inline void ref() noexcept
-	{ 
+	{
 		if (mPointer)
 		{
 			mPointer->ref();
@@ -377,9 +377,9 @@ template <class Type> class LLConstPointer
 	{
 		if (mPointer)
 		{
-			const Type *tempp = mPointer;
+			const Type *temp = mPointer;
 			mPointer = nullptr;
-			tempp->unref();
+			temp->unref();
 			if (mPointer != nullptr)
 			{
 				LL_WARNS() << "Unreference did assignment to non-NULL because of destructor" << LL_ENDL;
@@ -387,7 +387,8 @@ template <class Type> class LLConstPointer
 			}
 		}
 	}
-#endif
+#endif // LL_LIBRARY_INCLUDE
+
 protected:
 	const Type*	mPointer;
 };
@@ -397,8 +398,8 @@ class LLCopyOnWritePointer : public LLPointer<Type>
 {
 public:
 	typedef LLCopyOnWritePointer<Type> self_t;
-    typedef LLPointer<Type> pointer_t;
-    
+	typedef LLPointer<Type> pointer_t;
+
 	LLCopyOnWritePointer() noexcept
 	:	mStayUnique(false)
 	{}
diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp
index b63eed50b02e4a35a3de6dd715e83cd08d269f16..fda05e54e465b5fcde60ef8ba855302c196056ae 100644
--- a/indra/llcommon/llrand.cpp
+++ b/indra/llcommon/llrand.cpp
@@ -60,12 +60,17 @@
  * to restore uniform distribution.
  */
 
+// gRandomGenerator is a stateful static object, which is therefore not
+// inherently thread-safe.
 static thread_local std::unique_ptr<std::ranlux48> __generator;
 inline std::ranlux48* _generator()
 {
 	if (!__generator.get())
 	{
 		std::random_device seeder;
+	// Per Monty, it's important to clamp using the correct fmodf() rather
+	// than expanding to F64 for fmod() and then truncating back to F32. Prior
+	// to this change, we were getting sporadic ll_frand() == 1.0 results.
 		__generator = std::make_unique<std::ranlux48>(seeder());
 	}
 	return __generator.get();
diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp
index 6852b5536aecdfebb1627ae218cfcfed26bacc78..3da94e7a8d7c3e3522e6c18762d4ee9723112e18 100644
--- a/indra/llcommon/llrefcount.cpp
+++ b/indra/llcommon/llrefcount.cpp
@@ -30,7 +30,7 @@
 #include "llerror.h"
 
 // maximum reference count before sounding memory leak alarm
-const S32 gMaxRefCount = S32_MAX;
+const S32 gMaxRefCount = LL_REFCOUNT_FREE;
 
 LLRefCount::LLRefCount(const LLRefCount& other)
 :	mRef(0)
@@ -49,7 +49,7 @@ LLRefCount::LLRefCount() :
 }
 
 LLRefCount::~LLRefCount()
-{ 
+{
 	if (mRef != LL_REFCOUNT_FREE && mRef != 0)
 	{
 		LL_ERRS() << "deleting non-zero reference" << LL_ENDL;
diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h
index 43cef103280262b6aadde07c28b56f9392dea792..109c29c0c9eb8787bafaf6fda3a181d4f9795b60 100644
--- a/indra/llcommon/llrefcount.h
+++ b/indra/llcommon/llrefcount.h
@@ -51,24 +51,20 @@ class LL_COMMON_API LLRefCount
 public:
 	LLRefCount();
 
-    inline void validateRefCount() const
-    {
-        llassert(mRef > 0); // ref count below 0, likely corrupted
-        llassert(mRef < gMaxRefCount); // ref count excessive, likely memory leak
-    }
-
 	inline void ref() const
-	{ 
-		mRef++; 
-        validateRefCount();
-	} 
+	{
+		llassert(mRef != LL_REFCOUNT_FREE); // object is deleted
+		mRef++;
+		llassert(mRef < gMaxRefCount); // ref count excessive, likely memory leak
+	}
 
 	inline S32 unref() const
 	{
-        validateRefCount();
+		llassert(mRef != LL_REFCOUNT_FREE); // object is deleted
+		llassert(mRef > 0); // ref count below 1, likely corrupted
 		if (0 == --mRef)
 		{
-            mRef = LL_REFCOUNT_FREE; // set to nonsense yet recognizable value to aid in debugging
+			mRef = LL_REFCOUNT_FREE; // set to nonsense yet recognizable value to aid in debugging
 			delete this;
 			return 0;
 		}
@@ -82,8 +78,8 @@ class LL_COMMON_API LLRefCount
 		return mRef;
 	}
 
-private: 
-	mutable S32	mRef; 
+private:
+	mutable S32	mRef;
 };
 
 
@@ -99,7 +95,7 @@ class LL_COMMON_API LLThreadSafeRefCount
 public:
 	LLThreadSafeRefCount();
 	LLThreadSafeRefCount(const LLThreadSafeRefCount&);
-	LLThreadSafeRefCount& operator=(const LLThreadSafeRefCount& ref) 
+	LLThreadSafeRefCount& operator=(const LLThreadSafeRefCount& ref)
 	{
 		mRef = 0;
 		return *this;
@@ -107,8 +103,8 @@ class LL_COMMON_API LLThreadSafeRefCount
 
 	void ref()
 	{
-		mRef++; 
-	} 
+		mRef++;
+	}
 
 	void unref()
 	{
@@ -129,36 +125,36 @@ class LL_COMMON_API LLThreadSafeRefCount
 		return currentVal;
 	}
 
-private: 
-	LLAtomicS32 mRef; 
+private:
+	LLAtomicS32 mRef;
 };
 
 /**
  * intrusive pointer support for LLThreadSafeRefCount
  * this allows you to use boost::intrusive_ptr with any LLThreadSafeRefCount-derived type
  */
-inline void intrusive_ptr_add_ref(LLThreadSafeRefCount* p) 
+inline void intrusive_ptr_add_ref(LLThreadSafeRefCount* p)
 {
 	p->ref();
 }
 
-inline void intrusive_ptr_release(LLThreadSafeRefCount* p) 
+inline void intrusive_ptr_release(LLThreadSafeRefCount* p)
 {
-	p->unref(); 
+	p->unref();
 }
 
 /**
  * intrusive pointer support
  * this allows you to use boost::intrusive_ptr with any LLRefCount-derived type
  */
-inline void intrusive_ptr_add_ref(LLRefCount* p) 
+inline void intrusive_ptr_add_ref(LLRefCount* p)
 {
 	p->ref();
 }
 
-inline void intrusive_ptr_release(LLRefCount* p) 
+inline void intrusive_ptr_release(LLRefCount* p)
 {
-	p->unref(); 
+	p->unref();
 }
 
 #endif
diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h
index f46e2491e7d7f930f6869552b9bfd99cff95ac16..e6d86c42ea201575f49e15772b7aab92e5ac08df 100644
--- a/indra/llcommon/llsd.h
+++ b/indra/llcommon/llsd.h
@@ -215,12 +215,12 @@ class LL_COMMON_API LLSD final
 				  typename std::enable_if<std::is_integral<VALUE>::value &&
 										  ! std::is_same<VALUE, Boolean>::value,
 										  bool>::type = true>
-		LLSD(VALUE v): LLSD(Integer(narrow(v))) {}
+		LLSD(VALUE v): LLSD(Integer(narrow<VALUE>(v))) {}
 		// support construction from F32 et al.
 		template <typename VALUE,
 				  typename std::enable_if<std::is_floating_point<VALUE>::value,
 										  bool>::type = true>
-		LLSD(VALUE v): LLSD(Real(narrow(v))) {}
+		LLSD(VALUE v): LLSD(Real(narrow<VALUE>(v))) {}
 	//@}
 	
 	/** @name Scalar Assignment */
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
index 4990277524a81785784a72531a7c4c191f7a1ef0..3ceac3939006afc6726f99d2c6f35f7c4fdaff63 100644
--- a/indra/llcommon/llsdserialize.cpp
+++ b/indra/llcommon/llsdserialize.cpp
@@ -2183,7 +2183,7 @@ std::string zip_llsd(LLSD& data)
 		}
 	}
 
-	strm.avail_in = narrow(source.size());
+	strm.avail_in = narrow<size_t>(source.size());
 	strm.next_in = (U8*) source.data();
 	U8* output = NULL;
 
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index 667023943e1e83911845b566082635bda451860f..8f3bde87d868b8de51ce331e4ca88743f7f8a28f 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -203,12 +203,12 @@ S32 LLSDXMLFormatter::format_impl(const LLSD& data, std::ostream& ostr,
 			// *FIX: memory inefficient.
 			// *TODO: convert to use LLBase64
 			ostr << pre << "<binary encoding=\"base64\">";
-			int b64_buffer_length = apr_base64_encode_len(narrow(buffer.size()));
+			int b64_buffer_length = apr_base64_encode_len(narrow<size_t>(buffer.size()));
 			char* b64_buffer = new char[b64_buffer_length];
 			b64_buffer_length = apr_base64_encode_binary(
 				b64_buffer,
 				&buffer[0],
-				narrow(buffer.size()));
+				narrow<size_t>(buffer.size()));
 			ostr.write(b64_buffer, b64_buffer_length - 1);
 			delete[] b64_buffer;
 			ostr << "</binary>" << post;
@@ -419,11 +419,18 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
 		if (buffer)
 		{
 			((char*) buffer)[count ? count - 1 : 0] = '\0';
+            if (mEmitErrors)
+            {
+                LL_INFOS() << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*)buffer << LL_ENDL;
+            }
 		}
-		if (mEmitErrors)
-		{
-		LL_INFOS() << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << LL_ENDL;
-		}
+        else
+        {
+            if (mEmitErrors)
+            {
+                LL_INFOS() << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR, null buffer" << LL_ENDL;
+            }
+        }
 		data = LLSD();
 		return LLSDParser::PARSE_FAILURE;
 	}
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index c8284c5f9d29544a1717a65bfdba1ebd47d51531..654c07c6fb1f5b174fcce5cf8a2309aa015e1e1e 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -1521,9 +1521,17 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,
 		}
 		else
 		{
+#if 0
+			// EXT-1565 : Zai Lynch, James Linden : 15/Oct/09
+			// [BSI] Feedback: Viewer clock mentions SLT, but would prefer it to show PST/PDT
 			// "slt" = Second Life Time, which is deprecated.
 			// If not utc or user local time, fallback to Pacific time
 			replacement = LLStringOps::getPacificDaylightTime() ? "PDT" : "PST";
+#else
+			// SL-20370 : Steeltoe Linden : 29/Sep/23
+			// Change "PDT" to "SLT" on menu bar
+			replacement = "SLT";
+#endif
 		}
 		return true;
 	}
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index d82fc947b5fce26824f50dfd51e5f980a989c0e0..2472918ab929084403a8a875166312a7d2673697 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -938,7 +938,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	// Now stream stats
 	for (const MapEntry& pair : inMap(mStatsMap))
 	{
-		s << pfx << std::setw(narrow(key_width+1)) << (pair.first + ':') << ' ';
+		s << pfx << std::setw(narrow<size_t>(key_width+1)) << (pair.first + ':') << ' ';
 		LLSD value(pair.second);
 		if (value.isInteger())
 			s << std::setw(12) << value.asInteger();
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index c1d1768c6acff9d1ba2aafeec5982e9524c60ac9..87d5263d86cda9fecb1917f8811affe343626544 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -113,15 +113,16 @@ LL_COMMON_API bool on_main_thread()
     return (LLThread::currentID() == main_thread());
 }
 
-LL_COMMON_API void assert_main_thread()
+LL_COMMON_API bool assert_main_thread()
 {
     auto curr = LLThread::currentID();
     auto main = main_thread();
-    if (curr != main)
-    {
-        LL_WARNS() << "Illegal execution from thread id " << curr
-            << " outside main thread " << main << LL_ENDL;
-    }
+    if (curr == main)
+        return true;
+
+    LL_WARNS() << "Illegal execution from thread id " << curr
+               << " outside main thread " << main << LL_ENDL;
+    return false;
 }
 
 //
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
index 676ec8ddba5073b68eacf658a7f56bbec4672779..8f21ae10a9690b4c8f89db7d004978edcab0e614 100644
--- a/indra/llcommon/llthread.h
+++ b/indra/llcommon/llthread.h
@@ -146,7 +146,7 @@ class LL_COMMON_API LLResponder : public LLThreadSafeRefCount
 
 //============================================================================
 
-extern LL_COMMON_API void assert_main_thread();
+extern LL_COMMON_API bool assert_main_thread();
 extern LL_COMMON_API bool on_main_thread();
 
 #endif // LL_LLTHREAD_H
diff --git a/indra/llcommon/lltrace.cpp b/indra/llcommon/lltrace.cpp
index ff671a837089be312599ff7c9f010a8a61bd7e83..87457ad90771de45c3425a30ccb7fe511ab5a75c 100644
--- a/indra/llcommon/lltrace.cpp
+++ b/indra/llcommon/lltrace.cpp
@@ -33,8 +33,6 @@
 namespace LLTrace
 {
 
-MemStatHandle gTraceMemStat("LLTrace");
-
 StatBase::StatBase( const char* name, const char* description ) 
 :	mName(name),
 	mDescription(description ? description : "")
@@ -65,7 +63,7 @@ void TimeBlockTreeNode::setParent( BlockTimerStatHandle* parent )
 	llassert_always(parent != mBlock);
 	llassert_always(parent != NULL);
 
-	TimeBlockTreeNode* parent_tree_node = get_thread_recorder()->getTimeBlockTreeNode(narrow(parent->getIndex()));
+	TimeBlockTreeNode* parent_tree_node = get_thread_recorder()->getTimeBlockTreeNode(narrow<size_t>(parent->getIndex()));
 	if (!parent_tree_node) return;
 
 	if (mParent)
diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h
index 64cb14924ec50c8a388c2f328f62e3bba5410019..8edea1e38a6748b8d36c3d1fa804133bd5d67686 100644
--- a/indra/llcommon/lltrace.h
+++ b/indra/llcommon/lltrace.h
@@ -193,61 +193,6 @@ void add(CountStatHandle<T>& count, VALUE_T value)
 #endif
 }
 
-template<>
-class StatType<MemAccumulator::AllocationFacet>
-:	public StatType<MemAccumulator>
-{
-public:
-
-	StatType(const char* name, const char* description = "")
-	:	StatType<MemAccumulator>(name, description)
-	{}
-};
-
-template<>
-class StatType<MemAccumulator::DeallocationFacet>
-:	public StatType<MemAccumulator>
-{
-public:
-
-	StatType(const char* name, const char* description = "")
-	:	StatType<MemAccumulator>(name, description)
-	{}
-};
-
-class MemStatHandle : public StatType<MemAccumulator>
-{
-public:
-	typedef StatType<MemAccumulator> stat_t;
-	MemStatHandle(const char* name, const char* description = "")
-	:	stat_t(name, description)
-	{
-		mName = name;
-	}
-
-	void setName(const char* name)
-	{
-        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-		mName = name;
-		setKey(name);
-	}
-
-	/*virtual*/ const char* getUnitLabel() const { return "KB"; }
-
-	StatType<MemAccumulator::AllocationFacet>& allocations() 
-	{
-        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-		return static_cast<StatType<MemAccumulator::AllocationFacet>&>(*(StatType<MemAccumulator>*)this);
-	}
-
-	StatType<MemAccumulator::DeallocationFacet>& deallocations() 
-	{
-        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-		return static_cast<StatType<MemAccumulator::DeallocationFacet>&>(*(StatType<MemAccumulator>*)this);
-	}
-};
-
-
 // measures effective memory footprint of specified type
 // specialize to cover different types
 template<typename T, typename IS_MEM_TRACKABLE = void, typename IS_UNITS = void>
@@ -334,33 +279,6 @@ struct MeasureMem<std::basic_string<T>, IS_MEM_TRACKABLE, IS_BYTES>
 	}
 };
 
-
-template<typename T>
-inline void claim_alloc(MemStatHandle& measurement, const T& value)
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-#if LL_TRACE_ENABLED
-	auto size = MeasureMem<T>::measureFootprint(value);
-	if(size == 0) return;
-	MemAccumulator& accumulator = measurement.getCurrentAccumulator();
-	accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() + (F64)size : (F64)size);
-	accumulator.mAllocations.record(size);
-#endif
-}
-
-template<typename T>
-inline void disclaim_alloc(MemStatHandle& measurement, const T& value)
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-#if LL_TRACE_ENABLED
-	auto size = MeasureMem<T>::measureFootprint(value);
-	if(size == 0) return;
-	MemAccumulator& accumulator = measurement.getCurrentAccumulator();
-	accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size);
-	accumulator.mDeallocations.add(size);
-#endif
-}
-
 }
 
 #endif // LL_LLTRACE_H
diff --git a/indra/llcommon/lltraceaccumulators.cpp b/indra/llcommon/lltraceaccumulators.cpp
index 6bd886ae98aff6bf4e64b61412fbf7d88f9be05e..b5b32cba38fb3bb6311dbce66b2ebba04364cb68 100644
--- a/indra/llcommon/lltraceaccumulators.cpp
+++ b/indra/llcommon/lltraceaccumulators.cpp
@@ -1,24 +1,24 @@
-/** 
+/**
  * @file lltracesampler.cpp
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
  * Copyright (C) 2012, Linden Research, Inc.
- * 
+ *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation;
  * version 2.1 of the License only.
- * 
+ *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
@@ -32,73 +32,52 @@
 namespace LLTrace
 {
 
-extern MemStatHandle gTraceMemStat;
-
-
 ///////////////////////////////////////////////////////////////////////
 // AccumulatorBufferGroup
 ///////////////////////////////////////////////////////////////////////
 
-AccumulatorBufferGroup::AccumulatorBufferGroup() 
+AccumulatorBufferGroup::AccumulatorBufferGroup()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	claim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator));
-	claim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator));
-	claim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator));
-	claim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator));
-	claim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator));
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 }
 
 AccumulatorBufferGroup::AccumulatorBufferGroup(const AccumulatorBufferGroup& other)
 :	mCounts(other.mCounts),
 	mSamples(other.mSamples),
 	mEvents(other.mEvents),
-	mStackTimers(other.mStackTimers),
-	mMemStats(other.mMemStats)
+	mStackTimers(other.mStackTimers)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	claim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator));
-	claim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator));
-	claim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator));
-	claim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator));
-	claim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator));
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 }
 
 AccumulatorBufferGroup::~AccumulatorBufferGroup()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	disclaim_alloc(gTraceMemStat, mCounts.capacity() * sizeof(CountAccumulator));
-	disclaim_alloc(gTraceMemStat, mSamples.capacity() * sizeof(SampleAccumulator));
-	disclaim_alloc(gTraceMemStat, mEvents.capacity() * sizeof(EventAccumulator));
-	disclaim_alloc(gTraceMemStat, mStackTimers.capacity() * sizeof(TimeBlockAccumulator));
-	disclaim_alloc(gTraceMemStat, mMemStats.capacity() * sizeof(MemAccumulator));
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 }
 
 void AccumulatorBufferGroup::handOffTo(AccumulatorBufferGroup& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	other.mCounts.reset(&mCounts);
 	other.mSamples.reset(&mSamples);
 	other.mEvents.reset(&mEvents);
 	other.mStackTimers.reset(&mStackTimers);
-	other.mMemStats.reset(&mMemStats);
 }
 
 void AccumulatorBufferGroup::makeCurrent()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mCounts.makeCurrent();
 	mSamples.makeCurrent();
 	mEvents.makeCurrent();
 	mStackTimers.makeCurrent();
-	mMemStats.makeCurrent();
 
 	ThreadRecorder* thread_recorder = get_thread_recorder();
 	AccumulatorBuffer<TimeBlockAccumulator>& timer_accumulator_buffer = mStackTimers;
 	// update stacktimer parent pointers
 	for (size_t i = 0, end_i = mStackTimers.size(); i < end_i; i++)
 	{
-		TimeBlockTreeNode* tree_node = thread_recorder->getTimeBlockTreeNode(narrow(i));
+		TimeBlockTreeNode* tree_node = thread_recorder->getTimeBlockTreeNode(narrow<size_t>(i));
 		if (tree_node)
 		{
 			timer_accumulator_buffer[i].mParent = tree_node->mParent;
@@ -109,12 +88,11 @@ void AccumulatorBufferGroup::makeCurrent()
 //static
 void AccumulatorBufferGroup::clearCurrent()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	AccumulatorBuffer<CountAccumulator>::clearCurrent();	
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	AccumulatorBuffer<CountAccumulator>::clearCurrent();
 	AccumulatorBuffer<SampleAccumulator>::clearCurrent();
 	AccumulatorBuffer<EventAccumulator>::clearCurrent();
 	AccumulatorBuffer<TimeBlockAccumulator>::clearCurrent();
-	AccumulatorBuffer<MemAccumulator>::clearCurrent();
 }
 
 bool AccumulatorBufferGroup::isCurrent() const
@@ -124,44 +102,39 @@ bool AccumulatorBufferGroup::isCurrent() const
 
 void AccumulatorBufferGroup::append( const AccumulatorBufferGroup& other )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mCounts.addSamples(other.mCounts, SEQUENTIAL);
 	mSamples.addSamples(other.mSamples, SEQUENTIAL);
 	mEvents.addSamples(other.mEvents, SEQUENTIAL);
-	mMemStats.addSamples(other.mMemStats, SEQUENTIAL);
 	mStackTimers.addSamples(other.mStackTimers, SEQUENTIAL);
 }
 
 void AccumulatorBufferGroup::merge( const AccumulatorBufferGroup& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mCounts.addSamples(other.mCounts, NON_SEQUENTIAL);
 	mSamples.addSamples(other.mSamples, NON_SEQUENTIAL);
 	mEvents.addSamples(other.mEvents, NON_SEQUENTIAL);
-	mMemStats.addSamples(other.mMemStats, NON_SEQUENTIAL);
 	// for now, hold out timers from merge, need to be displayed per thread
 	//mStackTimers.addSamples(other.mStackTimers, NON_SEQUENTIAL);
 }
 
 void AccumulatorBufferGroup::reset(AccumulatorBufferGroup* other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mCounts.reset(other ? &other->mCounts : NULL);
 	mSamples.reset(other ? &other->mSamples : NULL);
 	mEvents.reset(other ? &other->mEvents : NULL);
 	mStackTimers.reset(other ? &other->mStackTimers : NULL);
-	mMemStats.reset(other ? &other->mMemStats : NULL);
 }
 
 void AccumulatorBufferGroup::sync()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	if (isCurrent())
 	{
 		F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds();
-
 		mSamples.sync(time_stamp);
-		mMemStats.sync(time_stamp);
 	}
 }
 
@@ -197,10 +170,9 @@ F64 SampleAccumulator::mergeSumsOfSquares(const SampleAccumulator& a, const Samp
 	return a.getSumOfSquares();
 }
 
-
 void SampleAccumulator::addSamples( const SampleAccumulator& other, EBufferAppendType append_type )
 {
-    if (append_type == NON_SEQUENTIAL)
+	if (append_type == NON_SEQUENTIAL)
 	{
 		return;
 	}
@@ -299,7 +271,7 @@ void EventAccumulator::addSamples( const EventAccumulator& other, EBufferAppendT
 
 void EventAccumulator::reset( const EventAccumulator* other )
 {
-    mNumSamples = 0;
+	mNumSamples = 0;
 	mSum = 0;
 	mMin = F32(NaN);
 	mMax = F32(NaN);
@@ -308,5 +280,4 @@ void EventAccumulator::reset( const EventAccumulator* other )
 	mLastValue = other ? other->mLastValue : NaN;
 }
 
-
 }
diff --git a/indra/llcommon/lltraceaccumulators.h b/indra/llcommon/lltraceaccumulators.h
index 09698f40f9dbf4d31fac94bd13d15d517c6536e7..6da87310c01cfa5dd4c09c5562aa1c07ae4f4b17 100644
--- a/indra/llcommon/lltraceaccumulators.h
+++ b/indra/llcommon/lltraceaccumulators.h
@@ -1,26 +1,26 @@
 
-/** 
+/**
  * @file lltraceaccumulators.h
  * @brief Storage for accumulating statistics
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
  * Copyright (C) 2012, Linden Research, Inc.
- * 
+ *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation;
  * version 2.1 of the License only.
- * 
+ *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
@@ -28,7 +28,6 @@
 #ifndef LL_LLTRACEACCUMULATORS_H
 #define LL_LLTRACEACCUMULATORS_H
 
-
 #include "stdtypes.h"
 #include "llpreprocessor.h"
 #include "llunits.h"
@@ -66,7 +65,7 @@ namespace LLTrace
 			: mStorageSize(0),
 			mStorage(NULL)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			const AccumulatorBuffer& other = *getDefaultBuffer();
 			resize(sNextStorageSlot);
 			for (S32 i = 0; i < sNextStorageSlot; i++)
@@ -77,7 +76,7 @@ namespace LLTrace
 
 		~AccumulatorBuffer()
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			if (isCurrent())
 			{
 				LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL);
@@ -85,14 +84,14 @@ namespace LLTrace
 			delete[] mStorage;
 		}
 
-		LL_FORCE_INLINE ACCUMULATOR& operator[](size_t index) 
-		{ 
-			return mStorage[index]; 
+		LL_FORCE_INLINE ACCUMULATOR& operator[](size_t index)
+		{
+			return mStorage[index];
 		}
 
 		LL_FORCE_INLINE const ACCUMULATOR& operator[](size_t index) const
-		{ 
-			return mStorage[index]; 
+		{
+			return mStorage[index];
 		}
 
 
@@ -100,7 +99,7 @@ namespace LLTrace
 			: mStorageSize(0),
 			mStorage(NULL)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			resize(sNextStorageSlot);
 			for (S32 i = 0; i < sNextStorageSlot; i++)
 			{
@@ -110,7 +109,7 @@ namespace LLTrace
 
 		void addSamples(const AccumulatorBuffer<ACCUMULATOR>& other, EBufferAppendType append_type)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			llassert(mStorageSize >= sNextStorageSlot && other.mStorageSize >= sNextStorageSlot);
 			for (size_t i = 0; i < sNextStorageSlot; i++)
 			{
@@ -120,7 +119,7 @@ namespace LLTrace
 
 		void copyFrom(const AccumulatorBuffer<ACCUMULATOR>& other)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			llassert(mStorageSize >= sNextStorageSlot && other.mStorageSize >= sNextStorageSlot);
 			for (size_t i = 0; i < sNextStorageSlot; i++)
 			{
@@ -130,7 +129,7 @@ namespace LLTrace
 
 		void reset(const AccumulatorBuffer<ACCUMULATOR>* other = NULL)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			llassert(mStorageSize >= sNextStorageSlot);
 			for (size_t i = 0; i < sNextStorageSlot; i++)
 			{
@@ -140,7 +139,7 @@ namespace LLTrace
 
 		void sync(F64SecondsImplicit time_stamp)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			llassert(mStorageSize >= sNextStorageSlot);
 			for (size_t i = 0; i < sNextStorageSlot; i++)
 			{
@@ -160,13 +159,13 @@ namespace LLTrace
 
 		static void clearCurrent()
 		{
-            LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL);
+			LLThreadLocalSingletonPointer<ACCUMULATOR>::setInstance(NULL);
 		}
 
 		// NOTE: this is not thread-safe.  We assume that slots are reserved in the main thread before any child threads are spawned
 		size_t reserveSlot()
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			size_t next_slot = sNextStorageSlot++;
 			if (next_slot >= mStorageSize)
 			{
@@ -180,7 +179,7 @@ namespace LLTrace
 
 		void resize(size_t new_size)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			if (new_size <= mStorageSize) return;
 
 			ACCUMULATOR* old_storage = mStorage;
@@ -214,14 +213,14 @@ namespace LLTrace
 			return mStorageSize;
 		}
 
-		static size_t getNumIndices() 
+		static size_t getNumIndices()
 		{
 			return sNextStorageSlot;
 		}
 
 		static self_t* getDefaultBuffer()
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			static bool sInitialized = false;
 			if (!sInitialized)
 			{
@@ -336,7 +335,7 @@ namespace LLTrace
 
 		void sample(F64 value)
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds();
 
 			// store effect of last value
@@ -399,7 +398,7 @@ namespace LLTrace
 		F64		mMean,
 				mSumOfSquares;
 
-		F64SecondsImplicit	
+		F64SecondsImplicit
 				mLastSampleTimeStamp,
 				mTotalSamplingTime;
 
@@ -409,7 +408,7 @@ namespace LLTrace
 		S32		mNumSamples;
 		// distinct from mNumSamples, since we might have inherited a last value from
 		// a previous sampling period
-		bool	mHasValue;		
+		bool	mHasValue;
 	};
 
 	class CountAccumulator
@@ -457,14 +456,14 @@ namespace LLTrace
 
 	class alignas(32) TimeBlockAccumulator
 	{
-    public:
+	public:
 		typedef F64Seconds value_t;
 		static F64Seconds getDefaultValue() { return F64Seconds(0); }
 
 		typedef TimeBlockAccumulator self_t;
 
 		// fake classes that allows us to view different facets of underlying statistic
-		struct CallCountFacet 
+		struct CallCountFacet
 		{
 			typedef S32 value_t;
 		};
@@ -515,12 +514,12 @@ namespace LLTrace
 		BlockTimerStatHandle* getParent() { return mParent; }
 
 		BlockTimerStatHandle*					mBlock;
-		BlockTimerStatHandle*					mParent;	
+		BlockTimerStatHandle*					mParent;
 		std::vector<BlockTimerStatHandle*>		mChildren;
 		bool						mCollapsed;
 		bool						mNeedsSorting;
 	};
-	
+
 	struct BlockTimerStackRecord
 	{
 		class BlockTimer*	mActiveTimer;
@@ -528,65 +527,6 @@ namespace LLTrace
 		U64					mChildTime;
 	};
 
-	struct MemAccumulator
-	{
-		typedef F64Bytes value_t;
-		static F64Bytes getDefaultValue() { return F64Bytes(0); }
-
-		typedef MemAccumulator self_t;
-
-		// fake classes that allows us to view different facets of underlying statistic
-		struct AllocationFacet 
-		{
-			typedef F64Bytes value_t;
-			static F64Bytes getDefaultValue() { return F64Bytes(0); }
-		};
-
-		struct DeallocationFacet 
-		{
-			typedef F64Bytes value_t;
-			static F64Bytes getDefaultValue() { return F64Bytes(0); }
-		};
-
-		void addSamples(const MemAccumulator& other, EBufferAppendType append_type)
-		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-			mAllocations.addSamples(other.mAllocations, append_type);
-			mDeallocations.addSamples(other.mDeallocations, append_type);
-
-			if (append_type == SEQUENTIAL)
-			{
-				mSize.addSamples(other.mSize, SEQUENTIAL);
-			}
-			else
-			{
-				F64 allocation_delta(other.mAllocations.getSum() - other.mDeallocations.getSum());
-				mSize.sample(mSize.hasValue() 
-					? mSize.getLastValue() + allocation_delta 
-					: allocation_delta);
-			}
-		}
-
-		void reset(const MemAccumulator* other)
-		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-			mSize.reset(other ? &other->mSize : NULL);
-			mAllocations.reset(other ? &other->mAllocations : NULL);
-			mDeallocations.reset(other ? &other->mDeallocations : NULL);
-		}
-
-		void sync(F64SecondsImplicit time_stamp) 
-		{
-			mSize.sync(time_stamp);
-		}
-
-		bool hasValue() const			 { return mSize.hasValue(); }
-
-		SampleAccumulator	mSize;
-		EventAccumulator	mAllocations;
-		CountAccumulator	mDeallocations;
-	};
-
 	struct AccumulatorBufferGroup : public LLRefCount
 	{
 		AccumulatorBufferGroup();
@@ -607,9 +547,7 @@ namespace LLTrace
 		AccumulatorBuffer<SampleAccumulator>	mSamples;
 		AccumulatorBuffer<EventAccumulator>		mEvents;
 		AccumulatorBuffer<TimeBlockAccumulator> mStackTimers;
-		AccumulatorBuffer<MemAccumulator> 	mMemStats;
 	};
 }
 
 #endif // LL_LLTRACEACCUMULATORS_H
-
diff --git a/indra/llcommon/lltracerecording.cpp b/indra/llcommon/lltracerecording.cpp
index 67a2e6b7d4e33e9f00c076dbef6912ce30ffe6ca..da1e66db0d2199fb55a674a1110f5fc3d38a36d9 100644
--- a/indra/llcommon/lltracerecording.cpp
+++ b/indra/llcommon/lltracerecording.cpp
@@ -1,24 +1,24 @@
-/** 
+/**
  * @file lltracesampler.cpp
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
  * Copyright (C) 2012, Linden Research, Inc.
- * 
+ *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation;
  * version 2.1 of the License only.
- * 
+ *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
@@ -40,34 +40,29 @@ inline F64 al_lerp(F64 a, F64 b, F64 u)
 namespace LLTrace
 {
 
-extern MemStatHandle gTraceMemStat;
-
 ///////////////////////////////////////////////////////////////////////
 // Recording
 ///////////////////////////////////////////////////////////////////////
 
-Recording::Recording(EPlayState state) 
+Recording::Recording(EPlayState state)
 :	mElapsedSeconds(0),
 	mActiveBuffers(NULL)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	claim_alloc(gTraceMemStat, this);
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mBuffers = new AccumulatorBufferGroup();
-	claim_alloc(gTraceMemStat, mBuffers);
 	setPlayState(state);
 }
 
 Recording::Recording( const Recording& other )
 :	mActiveBuffers(NULL)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	claim_alloc(gTraceMemStat, this);
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	*this = other;
 }
 
 Recording& Recording::operator = (const Recording& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	// this will allow us to seamlessly start without affecting any data we've acquired from other
 	setPlayState(PAUSED);
 
@@ -85,14 +80,11 @@ Recording& Recording::operator = (const Recording& other)
 	return *this;
 }
 
-
 Recording::~Recording()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	disclaim_alloc(gTraceMemStat, this);
-	disclaim_alloc(gTraceMemStat, mBuffers);
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 
-	// allow recording destruction without thread recorder running, 
+	// allow recording destruction without thread recorder running,
 	// otherwise thread shutdown could crash if a recording outlives the thread recorder
 	// besides, recording construction and destruction is fine without a recorder...just don't attempt to start one
 	if (isStarted() && LLTrace::get_thread_recorder() != NULL)
@@ -107,14 +99,14 @@ void Recording::update()
 #if LL_TRACE_ENABLED
 	if (isStarted())
 	{
-        LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+		LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 		mElapsedSeconds += mSamplingTimer.getElapsedTimeF64();
 
-		// must have 
-		llassert(mActiveBuffers != NULL 
+		// must have
+		llassert(mActiveBuffers != NULL
 				&& LLTrace::get_thread_recorder() != NULL);
 
-		if(!mActiveBuffers->isCurrent() && LLTrace::get_thread_recorder() != NULL)
+		if (!mActiveBuffers->isCurrent() && LLTrace::get_thread_recorder() != NULL)
 		{
 			AccumulatorBufferGroup* buffers = mBuffers.write();
 			LLTrace::get_thread_recorder()->deactivate(buffers);
@@ -128,7 +120,7 @@ void Recording::update()
 
 void Recording::handleReset()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 #if LL_TRACE_ENABLED
 	mBuffers.write()->reset();
 
@@ -139,7 +131,7 @@ void Recording::handleReset()
 
 void Recording::handleStart()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 #if LL_TRACE_ENABLED
 	mSamplingTimer.reset();
 	mBuffers.setStayUnique(true);
@@ -151,7 +143,7 @@ void Recording::handleStart()
 
 void Recording::handleStop()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 #if LL_TRACE_ENABLED
 	mElapsedSeconds += mSamplingTimer.getElapsedTimeF64();
 	// must have thread recorder running on this thread
@@ -204,7 +196,6 @@ F64Seconds Recording::getSum(const StatType<TimeBlockAccumulator::SelfTimeFacet>
 	return F64Seconds(((F64)(accumulator.mSelfTimeCounter) + (F64)(active_accumulator ? active_accumulator->mSelfTimeCounter : 0)) / (F64)LLTrace::BlockTimer::countsPerSecond());
 }
 
-
 S32 Recording::getSum(const StatType<TimeBlockAccumulator::CallCountFacet>& stat)
 {
 	update();
@@ -219,7 +210,7 @@ F64Seconds Recording::getPerSec(const StatType<TimeBlockAccumulator>& stat)
 	const TimeBlockAccumulator& accumulator = mBuffers->mStackTimers[stat.getIndex()];
 	const TimeBlockAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mStackTimers[stat.getIndex()] : NULL;
 
-	return F64Seconds((F64)(accumulator.mTotalTimeCounter + (active_accumulator ? active_accumulator->mTotalTimeCounter : 0)) 
+	return F64Seconds((F64)(accumulator.mTotalTimeCounter + (active_accumulator ? active_accumulator->mTotalTimeCounter : 0))
 				/ ((F64)LLTrace::BlockTimer::countsPerSecond() * mElapsedSeconds.value()));
 }
 
@@ -241,144 +232,9 @@ F32 Recording::getPerSec(const StatType<TimeBlockAccumulator::CallCountFacet>& s
 	return (F32)(accumulator.mCalls + (active_accumulator ? active_accumulator->mCalls : 0)) / mElapsedSeconds.value();
 }
 
-bool Recording::hasValue(const StatType<MemAccumulator>& stat)
-{
-	update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return accumulator.mSize.hasValue() || (active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.hasValue() : false);
-}
-
-F64Kilobytes Recording::getMin(const StatType<MemAccumulator>& stat)
-{
-	update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes(llmin(accumulator.mSize.getMin(), (active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.getMin() : F32_MAX)));
-}
-
-F64Kilobytes Recording::getMean(const StatType<MemAccumulator>& stat)
-{
-	update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	
-	if (active_accumulator && active_accumulator->mSize.hasValue())
-	{
-        F32 t = 0.0f;
-        S32 div = accumulator.mSize.getSampleCount() + active_accumulator->mSize.getSampleCount();
-        if (div > 0)
-        {
-            t = active_accumulator->mSize.getSampleCount() / div;
-        }
-		return F64Bytes(al_lerp(accumulator.mSize.getMean(), active_accumulator->mSize.getMean(), t));
-	}
-	else
-	{
-		return F64Bytes(accumulator.mSize.getMean());
-	}
-}
-
-F64Kilobytes Recording::getMax(const StatType<MemAccumulator>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes(llmax(accumulator.mSize.getMax(), active_accumulator && active_accumulator->mSize.hasValue() ? active_accumulator->mSize.getMax() : F32_MIN));
-}
-
-F64Kilobytes Recording::getStandardDeviation(const StatType<MemAccumulator>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	if (active_accumulator && active_accumulator->hasValue())
-	{
-		F64 sum_of_squares = SampleAccumulator::mergeSumsOfSquares(accumulator.mSize, active_accumulator->mSize);
-		return F64Bytes(sqrtf(sum_of_squares / (accumulator.mSize.getSamplingTime().value() + active_accumulator->mSize.getSamplingTime().value())));
-	}
-	else
-	{
-		return F64Bytes(accumulator.mSize.getStandardDeviation());
-	}
-}
-
-F64Kilobytes Recording::getLastValue(const StatType<MemAccumulator>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes(active_accumulator ? active_accumulator->mSize.getLastValue() : accumulator.mSize.getLastValue());
-}
-
-bool Recording::hasValue(const StatType<MemAccumulator::AllocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return accumulator.mAllocations.hasValue() || (active_accumulator ? active_accumulator->mAllocations.hasValue() : false);
-}
-
-F64Kilobytes Recording::getSum(const StatType<MemAccumulator::AllocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes(accumulator.mAllocations.getSum() + (active_accumulator ? active_accumulator->mAllocations.getSum() : 0));
-}
-
-F64Kilobytes Recording::getPerSec(const StatType<MemAccumulator::AllocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes((accumulator.mAllocations.getSum() + (active_accumulator ? active_accumulator->mAllocations.getSum() : 0)) / mElapsedSeconds.value());
-}
-
-S32 Recording::getSampleCount(const StatType<MemAccumulator::AllocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return accumulator.mAllocations.getSampleCount() + (active_accumulator ? active_accumulator->mAllocations.getSampleCount() : 0);
-}
-
-bool Recording::hasValue(const StatType<MemAccumulator::DeallocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return accumulator.mDeallocations.hasValue() || (active_accumulator ? active_accumulator->mDeallocations.hasValue() : false);
-}
-
-
-F64Kilobytes Recording::getSum(const StatType<MemAccumulator::DeallocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes(accumulator.mDeallocations.getSum() + (active_accumulator ? active_accumulator->mDeallocations.getSum() : 0));
-}
-
-F64Kilobytes Recording::getPerSec(const StatType<MemAccumulator::DeallocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return F64Bytes((accumulator.mDeallocations.getSum() + (active_accumulator ? active_accumulator->mDeallocations.getSum() : 0)) / mElapsedSeconds.value());
-}
-
-S32 Recording::getSampleCount(const StatType<MemAccumulator::DeallocationFacet>& stat)
-{
-    update();
-	const MemAccumulator& accumulator = mBuffers->mMemStats[stat.getIndex()];
-	const MemAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mMemStats[stat.getIndex()] : NULL;
-	return accumulator.mDeallocations.getSampleCount() + (active_accumulator ? active_accumulator->mDeallocations.getSampleCount() : 0);
-}
-
 bool Recording::hasValue(const StatType<CountAccumulator>& stat)
 {
-    update();
+	update();
 	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];
 	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;
 	return accumulator.hasValue() || (active_accumulator ? active_accumulator->hasValue() : false);
@@ -386,7 +242,7 @@ bool Recording::hasValue(const StatType<CountAccumulator>& stat)
 
 F64 Recording::getSum(const StatType<CountAccumulator>& stat)
 {
-    update();
+	update();
 	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];
 	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;
 	return accumulator.getSum() + (active_accumulator ? active_accumulator->getSum() : 0);
@@ -394,7 +250,7 @@ F64 Recording::getSum(const StatType<CountAccumulator>& stat)
 
 F64 Recording::getPerSec( const StatType<CountAccumulator>& stat )
 {
-    update();
+	update();
 	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];
 	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;
 	F64 sum = accumulator.getSum() + (active_accumulator ? active_accumulator->getSum() : 0);
@@ -403,7 +259,7 @@ F64 Recording::getPerSec( const StatType<CountAccumulator>& stat )
 
 S32 Recording::getSampleCount( const StatType<CountAccumulator>& stat )
 {
-    update();
+	update();
 	const CountAccumulator& accumulator = mBuffers->mCounts[stat.getIndex()];
 	const CountAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mCounts[stat.getIndex()] : NULL;
 	return accumulator.getSampleCount() + (active_accumulator ? active_accumulator->getSampleCount() : 0);
@@ -411,7 +267,7 @@ S32 Recording::getSampleCount( const StatType<CountAccumulator>& stat )
 
 bool Recording::hasValue(const StatType<SampleAccumulator>& stat)
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	return accumulator.hasValue() || (active_accumulator && active_accumulator->hasValue());
@@ -419,7 +275,7 @@ bool Recording::hasValue(const StatType<SampleAccumulator>& stat)
 
 F64 Recording::getMin( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	return llmin(accumulator.getMin(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMin() : F32_MAX);
@@ -427,7 +283,7 @@ F64 Recording::getMin( const StatType<SampleAccumulator>& stat )
 
 F64 Recording::getMax( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	return llmax(accumulator.getMax(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMax() : F32_MIN);
@@ -435,17 +291,17 @@ F64 Recording::getMax( const StatType<SampleAccumulator>& stat )
 
 F64 Recording::getMean( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	if (active_accumulator && active_accumulator->hasValue())
 	{
-        F32 t = 0.0f;
-        S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount();
-        if (div > 0)
-        {
-            t = active_accumulator->getSampleCount() / div;
-        }
+		F32 t = 0.0f;
+		S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount();
+		if (div > 0)
+		{
+			t = active_accumulator->getSampleCount() / div;
+		}
 		return al_lerp(accumulator.getMean(), active_accumulator->getMean(), t);
 	}
 	else
@@ -456,7 +312,7 @@ F64 Recording::getMean( const StatType<SampleAccumulator>& stat )
 
 F64 Recording::getStandardDeviation( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 
@@ -473,7 +329,7 @@ F64 Recording::getStandardDeviation( const StatType<SampleAccumulator>& stat )
 
 F64 Recording::getLastValue( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	return (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getLastValue() : accumulator.getLastValue());
@@ -481,7 +337,7 @@ F64 Recording::getLastValue( const StatType<SampleAccumulator>& stat )
 
 S32 Recording::getSampleCount( const StatType<SampleAccumulator>& stat )
 {
-    update();
+	update();
 	const SampleAccumulator& accumulator = mBuffers->mSamples[stat.getIndex()];
 	const SampleAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mSamples[stat.getIndex()] : NULL;
 	return accumulator.getSampleCount() + (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getSampleCount() : 0);
@@ -489,7 +345,7 @@ S32 Recording::getSampleCount( const StatType<SampleAccumulator>& stat )
 
 bool Recording::hasValue(const StatType<EventAccumulator>& stat)
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return accumulator.hasValue() || (active_accumulator && active_accumulator->hasValue());
@@ -497,7 +353,7 @@ bool Recording::hasValue(const StatType<EventAccumulator>& stat)
 
 F64 Recording::getSum( const StatType<EventAccumulator>& stat)
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return (F64)(accumulator.getSum() + (active_accumulator && active_accumulator->hasValue() ? active_accumulator->getSum() : 0));
@@ -505,7 +361,7 @@ F64 Recording::getSum( const StatType<EventAccumulator>& stat)
 
 F64 Recording::getMin( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return llmin(accumulator.getMin(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMin() : F32_MAX);
@@ -513,7 +369,7 @@ F64 Recording::getMin( const StatType<EventAccumulator>& stat )
 
 F64 Recording::getMax( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return llmax(accumulator.getMax(), active_accumulator && active_accumulator->hasValue() ? active_accumulator->getMax() : F32_MIN);
@@ -521,17 +377,17 @@ F64 Recording::getMax( const StatType<EventAccumulator>& stat )
 
 F64 Recording::getMean( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	if (active_accumulator && active_accumulator->hasValue())
 	{
 		F32 t = 0.0f;
-        S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount();
-        if (div > 0)
-        {
-            t = active_accumulator->getSampleCount() / div;
-        }
+		S32 div = accumulator.getSampleCount() + active_accumulator->getSampleCount();
+		if (div > 0)
+		{
+			t = active_accumulator->getSampleCount() / div;
+		}
 		return al_lerp(accumulator.getMean(), active_accumulator->getMean(), t);
 	}
 	else
@@ -542,7 +398,7 @@ F64 Recording::getMean( const StatType<EventAccumulator>& stat )
 
 F64 Recording::getStandardDeviation( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 
@@ -559,7 +415,7 @@ F64 Recording::getStandardDeviation( const StatType<EventAccumulator>& stat )
 
 F64 Recording::getLastValue( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return active_accumulator ? active_accumulator->getLastValue() : accumulator.getLastValue();
@@ -567,7 +423,7 @@ F64 Recording::getLastValue( const StatType<EventAccumulator>& stat )
 
 S32 Recording::getSampleCount( const StatType<EventAccumulator>& stat )
 {
-    update();
+	update();
 	const EventAccumulator& accumulator = mBuffers->mEvents[stat.getIndex()];
 	const EventAccumulator* active_accumulator = mActiveBuffers ? &mActiveBuffers->mEvents[stat.getIndex()] : NULL;
 	return accumulator.getSampleCount() + (active_accumulator ? active_accumulator->getSampleCount() : 0);
@@ -577,7 +433,7 @@ S32 Recording::getSampleCount( const StatType<EventAccumulator>& stat )
 // PeriodicRecording
 ///////////////////////////////////////////////////////////////////////
 
-PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state) 
+PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state)
 :	mAutoResize(num_periods == 0),
 	mCurPeriod(0),
 	mNumRecordedPeriods(0),
@@ -585,15 +441,13 @@ PeriodicRecording::PeriodicRecording( size_t num_periods, EPlayState state)
 	// code in several methods.
 	mRecordingPeriods(num_periods ? num_periods : 1)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	setPlayState(state);
-	claim_alloc(gTraceMemStat, this);
 }
 
 PeriodicRecording::~PeriodicRecording()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	disclaim_alloc(gTraceMemStat, this);
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 }
 
 void PeriodicRecording::nextPeriod()
@@ -615,12 +469,11 @@ void PeriodicRecording::nextPeriod()
 
 void PeriodicRecording::appendRecording(Recording& recording)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	getCurRecording().appendRecording(recording);
 	nextPeriod();
 }
 
-
 void PeriodicRecording::appendPeriodicRecording( PeriodicRecording& other )
 {
 	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
@@ -693,16 +546,14 @@ F64Seconds PeriodicRecording::getDuration() const
 	return duration;
 }
 
-
 LLTrace::Recording PeriodicRecording::snapshotCurRecording() const
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	Recording recording_copy(getCurRecording());
 	recording_copy.stop();
 	return recording_copy;
 }
 
-
 Recording& PeriodicRecording::getLastRecording()
 {
 	return getPrevRecording(1);
@@ -737,19 +588,19 @@ const Recording& PeriodicRecording::getPrevRecording( size_t offset ) const
 
 void PeriodicRecording::handleStart()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	getCurRecording().start();
 }
 
 void PeriodicRecording::handleStop()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	getCurRecording().pause();
 }
 
 void PeriodicRecording::handleReset()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	getCurRecording().stop();
 
 	if (mAutoResize)
@@ -771,13 +622,13 @@ void PeriodicRecording::handleReset()
 
 void PeriodicRecording::handleSplitTo(PeriodicRecording& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	getCurRecording().splitTo(other.getCurRecording());
 }
 
 F64 PeriodicRecording::getPeriodMin( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	bool has_value = false;
@@ -792,14 +643,14 @@ F64 PeriodicRecording::getPeriodMin( const StatType<EventAccumulator>& stat, siz
 		}
 	}
 
-	return has_value 
-			? min_val 
+	return has_value
+			? min_val
 			: NaN;
 }
 
 F64 PeriodicRecording::getPeriodMax( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	bool has_value = false;
@@ -814,15 +665,15 @@ F64 PeriodicRecording::getPeriodMax( const StatType<EventAccumulator>& stat, siz
 		}
 	}
 
-	return has_value 
-			? max_val 
+	return has_value
+			? max_val
 			: NaN;
 }
 
 // calculates means using aggregates per period
 F64 PeriodicRecording::getPeriodMean( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	F64 mean = 0;
@@ -838,14 +689,14 @@ F64 PeriodicRecording::getPeriodMean( const StatType<EventAccumulator>& stat, si
 		}
 	}
 
-	return valid_period_count 
+	return valid_period_count
 			? mean / (F64)valid_period_count
 			: NaN;
 }
 
 F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<EventAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	F64 period_mean = getPeriodMean(stat, num_periods);
@@ -870,7 +721,7 @@ F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<EventAccumulat
 
 F64 PeriodicRecording::getPeriodMin( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	bool has_value = false;
@@ -885,14 +736,14 @@ F64 PeriodicRecording::getPeriodMin( const StatType<SampleAccumulator>& stat, si
 		}
 	}
 
-	return has_value 
-			? min_val 
+	return has_value
+			? min_val
 			: NaN;
 }
 
 F64 PeriodicRecording::getPeriodMax(const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	bool has_value = false;
@@ -907,15 +758,15 @@ F64 PeriodicRecording::getPeriodMax(const StatType<SampleAccumulator>& stat, siz
 		}
 	}
 
-	return has_value 
-			? max_val 
+	return has_value
+			? max_val
 			: NaN;
 }
 
 
 F64 PeriodicRecording::getPeriodMean( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	S32 valid_period_count = 0;
@@ -938,7 +789,7 @@ F64 PeriodicRecording::getPeriodMean( const StatType<SampleAccumulator>& stat, s
 
 F64 PeriodicRecording::getPeriodMedian( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	std::vector<F64> buf;
@@ -964,7 +815,7 @@ F64 PeriodicRecording::getPeriodMedian( const StatType<SampleAccumulator>& stat,
 
 F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<SampleAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 	F64 period_mean = getPeriodMean(stat, num_periods);
@@ -987,105 +838,13 @@ F64 PeriodicRecording::getPeriodStandardDeviation( const StatType<SampleAccumula
 			: NaN;
 }
 
-
-F64Kilobytes PeriodicRecording::getPeriodMin( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	num_periods = llmin(num_periods, getNumRecordedPeriods());
-
-	F64Kilobytes min_val(std::numeric_limits<F64>::max());
-	for (size_t i = 1; i <= num_periods; i++)
-	{
-		Recording& recording = getPrevRecording(i);
-		min_val = llmin(min_val, recording.getMin(stat));
-	}
-
-	return min_val;
-}
-
-F64Kilobytes PeriodicRecording::getPeriodMin(const MemStatHandle& stat, size_t num_periods)
-{
-	return getPeriodMin(static_cast<const StatType<MemAccumulator>&>(stat), num_periods);
-}
-
-F64Kilobytes PeriodicRecording::getPeriodMax(const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/)
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	num_periods = llmin(num_periods, getNumRecordedPeriods());
-
-	F64Kilobytes max_val(0.0);
-	for (size_t i = 1; i <= num_periods; i++)
-	{
-		Recording& recording = getPrevRecording(i);
-		max_val = llmax(max_val, recording.getMax(stat));
-	}
-
-	return max_val;
-}
-
-F64Kilobytes PeriodicRecording::getPeriodMax(const MemStatHandle& stat, size_t num_periods)
-{
-	return getPeriodMax(static_cast<const StatType<MemAccumulator>&>(stat), num_periods);
-}
-
-F64Kilobytes PeriodicRecording::getPeriodMean( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	num_periods = llmin(num_periods, getNumRecordedPeriods());
-
-	F64Kilobytes mean(0);
-
-	for (size_t i = 1; i <= num_periods; i++)
-	{
-		Recording& recording = getPrevRecording(i);
-		mean += recording.getMean(stat);
-	}
-
-	return mean / F64(num_periods);
-}
-
-F64Kilobytes PeriodicRecording::getPeriodMean(const MemStatHandle& stat, size_t num_periods)
-{
-	return getPeriodMean(static_cast<const StatType<MemAccumulator>&>(stat), num_periods);
-}
-
-F64Kilobytes PeriodicRecording::getPeriodStandardDeviation( const StatType<MemAccumulator>& stat, size_t num_periods /*= std::numeric_limits<size_t>::max()*/ )
-{
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
-	num_periods = llmin(num_periods, getNumRecordedPeriods());
-
-	F64Kilobytes period_mean = getPeriodMean(stat, num_periods);
-	S32 valid_period_count = 0;
-	F64 sum_of_squares = 0;
-
-	for (size_t i = 1; i <= num_periods; i++)
-	{
-		Recording& recording = getPrevRecording(i);
-		if (recording.hasValue(stat))
-		{
-			F64Kilobytes delta = recording.getMean(stat) - period_mean;
-			sum_of_squares += delta.value() * delta.value();
-			valid_period_count++;
-		}
-	}
-
-	return F64Kilobytes(valid_period_count
-			? sqrt(sum_of_squares / (F64)valid_period_count)
-			: NaN);
-}
-
-F64Kilobytes PeriodicRecording::getPeriodStandardDeviation(const MemStatHandle& stat, size_t num_periods)
-{
-	return getPeriodStandardDeviation(static_cast<const StatType<MemAccumulator>&>(stat), num_periods);
-}
-
 ///////////////////////////////////////////////////////////////////////
 // ExtendableRecording
 ///////////////////////////////////////////////////////////////////////
 
 void ExtendableRecording::extend()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	// push the data back to accepted recording
 	mAcceptedRecording.appendRecording(mPotentialRecording);
 	// flush data, so we can start from scratch
@@ -1094,76 +853,72 @@ void ExtendableRecording::extend()
 
 void ExtendableRecording::handleStart()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.start();
 }
 
 void ExtendableRecording::handleStop()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.pause();
 }
 
 void ExtendableRecording::handleReset()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mAcceptedRecording.reset();
 	mPotentialRecording.reset();
 }
 
 void ExtendableRecording::handleSplitTo(ExtendableRecording& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.splitTo(other.mPotentialRecording);
 }
 
-
 ///////////////////////////////////////////////////////////////////////
 // ExtendablePeriodicRecording
 ///////////////////////////////////////////////////////////////////////
 
-
-ExtendablePeriodicRecording::ExtendablePeriodicRecording() 
-:	mAcceptedRecording(0), 
+ExtendablePeriodicRecording::ExtendablePeriodicRecording()
+:	mAcceptedRecording(0),
 	mPotentialRecording(0)
 {}
 
 void ExtendablePeriodicRecording::extend()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	// push the data back to accepted recording
 	mAcceptedRecording.appendPeriodicRecording(mPotentialRecording);
 	// flush data, so we can start from scratch
 	mPotentialRecording.reset();
 }
 
-
 void ExtendablePeriodicRecording::handleStart()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.start();
 }
 
 void ExtendablePeriodicRecording::handleStop()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.pause();
 }
 
 void ExtendablePeriodicRecording::handleReset()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mAcceptedRecording.reset();
 	mPotentialRecording.reset();
 }
 
 void ExtendablePeriodicRecording::handleSplitTo(ExtendablePeriodicRecording& other)
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	mPotentialRecording.splitTo(other.mPotentialRecording);
 }
 
-
 PeriodicRecording& get_frame_recording()
 {
 	static thread_local PeriodicRecording sRecording(200, PeriodicRecording::STARTED);
@@ -1174,7 +929,7 @@ PeriodicRecording& get_frame_recording()
 
 void LLStopWatchControlsMixinCommon::start()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1196,7 +951,7 @@ void LLStopWatchControlsMixinCommon::start()
 
 void LLStopWatchControlsMixinCommon::stop()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1216,7 +971,7 @@ void LLStopWatchControlsMixinCommon::stop()
 
 void LLStopWatchControlsMixinCommon::pause()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1236,7 +991,7 @@ void LLStopWatchControlsMixinCommon::pause()
 
 void LLStopWatchControlsMixinCommon::unpause()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1256,7 +1011,7 @@ void LLStopWatchControlsMixinCommon::unpause()
 
 void LLStopWatchControlsMixinCommon::resume()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1277,7 +1032,7 @@ void LLStopWatchControlsMixinCommon::resume()
 
 void LLStopWatchControlsMixinCommon::restart()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch (mPlayState)
 	{
 	case STOPPED:
@@ -1301,13 +1056,13 @@ void LLStopWatchControlsMixinCommon::restart()
 
 void LLStopWatchControlsMixinCommon::reset()
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	handleReset();
 }
 
 void LLStopWatchControlsMixinCommon::setPlayState( EPlayState state )
 {
-    LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+	LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 	switch(state)
 	{
 	case STOPPED:
diff --git a/indra/llcommon/lltracerecording.h b/indra/llcommon/lltracerecording.h
index 54a0f4d3cbe97de355ab358a03098b6dabeaf6cc..2aa92d9298fe93d28e47d614fd397b24c76d2664 100644
--- a/indra/llcommon/lltracerecording.h
+++ b/indra/llcommon/lltracerecording.h
@@ -1,25 +1,25 @@
-/** 
+/**
  * @file lltracerecording.h
  * @brief Sampling object for collecting runtime statistics originating from lltrace.
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
  * Copyright (C) 2012, Linden Research, Inc.
- * 
+ *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation;
  * version 2.1 of the License only.
- * 
+ *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
@@ -112,7 +112,6 @@ class LLStopWatchControlsMixin
 	// atomically stop this object while starting the other
 	// no data can be missed in between stop and start
 	virtual void handleSplitTo(DERIVED& other) {};
-
 };
 
 namespace LLTrace
@@ -129,8 +128,6 @@ namespace LLTrace
 	template<typename T>
 	class EventStatHandle;
 
-	class MemStatHandle;
-
 	template<typename T>
 	struct RelatedTypes
 	{
@@ -152,7 +149,7 @@ namespace LLTrace
 		typedef S32 sum_t;
 	};
 
-	class Recording 
+	class Recording
 	:	public LLStopWatchControlsMixin<Recording>
 	{
 	public:
@@ -182,24 +179,6 @@ namespace LLTrace
 		F64Seconds getPerSec(const StatType<TimeBlockAccumulator::SelfTimeFacet>& stat);
 		F32 getPerSec(const StatType<TimeBlockAccumulator::CallCountFacet>& stat);
 
-		// Memory accessors
-		bool hasValue(const StatType<MemAccumulator>& stat);
-		F64Kilobytes getMin(const StatType<MemAccumulator>& stat);
-		F64Kilobytes getMean(const StatType<MemAccumulator>& stat);
-		F64Kilobytes getMax(const StatType<MemAccumulator>& stat);
-		F64Kilobytes getStandardDeviation(const StatType<MemAccumulator>& stat);
-		F64Kilobytes getLastValue(const StatType<MemAccumulator>& stat);
-
-		bool hasValue(const StatType<MemAccumulator::AllocationFacet>& stat);
-		F64Kilobytes getSum(const StatType<MemAccumulator::AllocationFacet>& stat);
-		F64Kilobytes getPerSec(const StatType<MemAccumulator::AllocationFacet>& stat);
-		S32 getSampleCount(const StatType<MemAccumulator::AllocationFacet>& stat);
-
-		bool hasValue(const StatType<MemAccumulator::DeallocationFacet>& stat);
-		F64Kilobytes getSum(const StatType<MemAccumulator::DeallocationFacet>& stat);
-		F64Kilobytes getPerSec(const StatType<MemAccumulator::DeallocationFacet>& stat);
-		S32 getSampleCount(const StatType<MemAccumulator::DeallocationFacet>& stat);
-
 		// CountStatHandle accessors
 		bool hasValue(const StatType<CountAccumulator>& stat);
 		F64 getSum(const StatType<CountAccumulator>& stat);
@@ -318,7 +297,7 @@ namespace LLTrace
 		/*virtual*/ void handleSplitTo(Recording& other);
 
 		// returns data for current thread
-		class ThreadRecorder* getThreadRecorder(); 
+		class ThreadRecorder* getThreadRecorder();
 
 		LLTimer											mSamplingTimer;
 		F64Seconds										mElapsedSeconds;
@@ -335,10 +314,10 @@ namespace LLTrace
 		~PeriodicRecording();
 
 		void nextPeriod();
-		auto getNumRecordedPeriods() 
-		{ 
+		auto getNumRecordedPeriods()
+		{
 			// current period counts if not active
-			return mNumRecordedPeriods + (isStarted() ? 0 : 1); 
+			return mNumRecordedPeriods + (isStarted() ? 0 : 1);
 		}
 
 		F64Seconds getDuration() const;
@@ -367,7 +346,7 @@ namespace LLTrace
 			}
 			return num_samples;
 		}
-        
+
 		//
 		// PERIODIC MIN
 		//
@@ -376,7 +355,7 @@ namespace LLTrace
 		template <typename T>
 		typename T::value_t getPeriodMin(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			bool has_value = false;
@@ -391,15 +370,15 @@ namespace LLTrace
 				}
 			}
 
-			return has_value 
-				? min_val 
+			return has_value
+				? min_val
 				: T::getDefaultValue();
 		}
 
 		template<typename T>
 		T getPeriodMin(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMin(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 
@@ -407,7 +386,7 @@ namespace LLTrace
 		template<typename T>
 		T getPeriodMin(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMin(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));
 		}
 
@@ -415,17 +394,14 @@ namespace LLTrace
 		template<typename T>
 		T getPeriodMin(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMin(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));
 		}
 
-		F64Kilobytes getPeriodMin(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		F64Kilobytes getPeriodMin(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-
 		template <typename T>
 		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMinPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			typename RelatedTypes<typename T::value_t>::fractional_t min_val(std::numeric_limits<F64>::max());
@@ -440,7 +416,7 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMinPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMinPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 
@@ -452,7 +428,7 @@ namespace LLTrace
 		template <typename T>
 		typename T::value_t getPeriodMax(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			bool has_value = false;
@@ -467,15 +443,15 @@ namespace LLTrace
 				}
 			}
 
-			return has_value 
-				? max_val 
+			return has_value
+				? max_val
 				: T::getDefaultValue();
 		}
 
 		template<typename T>
 		T getPeriodMax(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMax(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 
@@ -483,7 +459,7 @@ namespace LLTrace
 		template<typename T>
 		T getPeriodMax(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMax(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));
 		}
 
@@ -491,17 +467,14 @@ namespace LLTrace
 		template<typename T>
 		T getPeriodMax(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return T(getPeriodMax(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));
 		}
 
-		F64Kilobytes getPeriodMax(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		F64Kilobytes getPeriodMax(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-
 		template <typename T>
 		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMaxPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			F64 max_val = std::numeric_limits<F64>::min();
@@ -516,7 +489,7 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMaxPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMaxPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 
@@ -528,7 +501,7 @@ namespace LLTrace
 		template <typename T>
 		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMean(const StatType<T >& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			typename RelatedTypes<typename T::value_t>::fractional_t mean(0);
@@ -549,14 +522,14 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMean(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 		F64 getPeriodMean(const StatType<SampleAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		template<typename T> 
+		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMean(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));
 		}
 
@@ -564,17 +537,14 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMean(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));
 		}
 
-		F64Kilobytes getPeriodMean(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		F64Kilobytes getPeriodMean(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		
 		template <typename T>
 		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMeanPerSec(const StatType<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			num_periods = llmin(num_periods, getNumRecordedPeriods());
 
 			typename RelatedTypes<typename T::value_t>::fractional_t mean = 0;
@@ -596,7 +566,7 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodMeanPerSec(const CountStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodMeanPerSec(static_cast<const StatType<CountAccumulator>&>(stat), num_periods));
 		}
 
@@ -635,10 +605,10 @@ namespace LLTrace
 
 		F64 getPeriodStandardDeviation(const StatType<SampleAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
 
-		template<typename T> 
+		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodStandardDeviation(const SampleStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodStandardDeviation(static_cast<const StatType<SampleAccumulator>&>(stat), num_periods));
 		}
 
@@ -646,13 +616,10 @@ namespace LLTrace
 		template<typename T>
 		typename RelatedTypes<T>::fractional_t getPeriodStandardDeviation(const EventStatHandle<T>& stat, size_t num_periods = std::numeric_limits<size_t>::max())
 		{
-            LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
+			LL_PROFILE_ZONE_SCOPED_CATEGORY_STATS;
 			return typename RelatedTypes<T>::fractional_t(getPeriodStandardDeviation(static_cast<const StatType<EventAccumulator>&>(stat), num_periods));
 		}
 
-		F64Kilobytes getPeriodStandardDeviation(const StatType<MemAccumulator>& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-		F64Kilobytes getPeriodStandardDeviation(const MemStatHandle& stat, size_t num_periods = std::numeric_limits<size_t>::max());
-
 	private:
 		// implementation for LLStopWatchControlsMixin
 		/*virtual*/ void handleStart();
@@ -731,7 +698,7 @@ namespace LLTrace
 
 		PeriodicRecording& getResults()				{ return mAcceptedRecording; }
 		const PeriodicRecording& getResults() const	{return mAcceptedRecording;}
-		
+
 		void nextPeriod() { mPotentialRecording.nextPeriod(); }
 
 	private:
diff --git a/indra/llcommon/lltracethreadrecorder.cpp b/indra/llcommon/lltracethreadrecorder.cpp
index ad6554b38c92420d132bdd52098a62b55b84bb35..dab7abb76f62f19a655d1e8cc689f76262d8d1bf 100644
--- a/indra/llcommon/lltracethreadrecorder.cpp
+++ b/indra/llcommon/lltracethreadrecorder.cpp
@@ -32,7 +32,7 @@
 
 namespace LLTrace
 {
-extern MemStatHandle gTraceMemStat;
+//extern MemStatHandle gTraceMemStat;
 
 static ThreadRecorder* sMasterThreadRecorder = NULL;
 
@@ -81,9 +81,9 @@ void ThreadRecorder::init()
 
 	BlockTimer::getRootTimeBlock().getCurrentAccumulator().mActiveCount = 1;
 
-	claim_alloc(gTraceMemStat, this);
-	claim_alloc(gTraceMemStat, mRootTimer);
-	claim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);
+	//claim_alloc(gTraceMemStat, this);
+	//claim_alloc(gTraceMemStat, mRootTimer);
+	//claim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);
 #endif
 }
 
@@ -101,9 +101,9 @@ ThreadRecorder::~ThreadRecorder()
 #if LL_TRACE_ENABLED
 	LLThreadLocalSingletonPointer<BlockTimerStackRecord>::setInstance(NULL);
 
-	disclaim_alloc(gTraceMemStat, this);
-	disclaim_alloc(gTraceMemStat, sizeof(BlockTimer));
-	disclaim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);
+	//disclaim_alloc(gTraceMemStat, this);
+	//disclaim_alloc(gTraceMemStat, sizeof(BlockTimer));
+	//disclaim_alloc(gTraceMemStat, sizeof(TimeBlockTreeNode) * mNumTimeBlockTreeNodes);
 
 	deactivate(&mThreadRecordingBuffers);
 
diff --git a/indra/llcommon/lluriparser.cpp b/indra/llcommon/lluriparser.cpp
index 9aad1e42173f968446afd5ffbd35acd8afe06c47..53998aed6249e0b1240d99a54a4ffa01315917aa 100644
--- a/indra/llcommon/lluriparser.cpp
+++ b/indra/llcommon/lluriparser.cpp
@@ -164,8 +164,10 @@ void LLUriParser::extractParts()
 #if LL_DARWIN
 typedef void(*sighandler_t)(int);
 jmp_buf return_to_normalize;
+static int sLastSignal = 0;
 void uri_signal_handler(int signal)
 {
+    sLastSignal = signal;
     // Apparently signal handler throwing an exception doesn't work.
     // This is ugly and unsafe due to not unwinding content of uriparser library,
     // but unless we have a way to catch this as NSexception, jump appears to be the only option.
@@ -179,8 +181,10 @@ S32 LLUriParser::normalize()
 	if (!mRes)
 	{
 #if LL_DARWIN
-        sighandler_t last_handler;
-        last_handler = signal(SIGILL, &uri_signal_handler);		// illegal instruction
+        sighandler_t last_sigill_handler, last_sigbus_handler;
+        last_sigill_handler = signal(SIGILL, &uri_signal_handler);		// illegal instruction
+        last_sigbus_handler = signal(SIGBUS, &uri_signal_handler);
+        
         if (setjmp(return_to_normalize))
         {
             // Issue: external library crashed via signal
@@ -194,8 +198,9 @@ S32 LLUriParser::normalize()
             // if this can be handled by NSexception, it needs to be remade
             llassert(0);
 
-            LL_WARNS() << "Uriparser crashed with SIGILL, while processing: " << mNormalizedUri << LL_ENDL;
-            signal(SIGILL, last_handler);
+            LL_WARNS() << "Uriparser crashed with " << sLastSignal << " , while processing: " << mNormalizedUri << LL_ENDL;
+            signal(SIGILL, last_sigill_handler);
+            signal(SIGBUS, last_sigbus_handler);
             return 1;
         }
 #endif
@@ -203,7 +208,8 @@ S32 LLUriParser::normalize()
         mRes = uriNormalizeSyntaxExA(&mUri, URI_NORMALIZE_SCHEME | URI_NORMALIZE_HOST);
 
 #if LL_DARWIN
-        signal(SIGILL, last_handler);
+        signal(SIGILL, last_sigill_handler);
+        signal(SIGBUS, last_sigbus_handler);
 #endif
 
         if (!mRes)
@@ -226,7 +232,7 @@ S32 LLUriParser::normalize()
         }
 	}
 
-	if(mTmpScheme)
+	if(mTmpScheme && mNormalizedUri.size() > 7)
 	{
 		mNormalizedUri = mNormalizedUri.substr(7);
 		mTmpScheme = false;
diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h
index 6cc47dd29a318fd3f9ba18136ed8788d6bec3913..bcede05073b565a0979bfead28f0030248067027 100644
--- a/indra/llcommon/stdtypes.h
+++ b/indra/llcommon/stdtypes.h
@@ -157,18 +157,15 @@ typedef int intptr_t;
  * type.
  */
 // narrow_holder is a struct that accepts the passed value as its original
-// type and provides templated conversion functions to other types. Once we're
-// building with compilers that support Class Template Argument Deduction, we
-// can rename this class template 'narrow' and eliminate the narrow() factory
-// function below.
+// type and provides templated conversion functions to other types.
 template <typename FROM>
-class narrow_holder
+class narrow
 {
 private:
     FROM mValue;
 
 public:
-    narrow_holder(FROM value): mValue(value) {}
+    narrow(FROM value): mValue(value) {}
 
     /*---------------------- Narrowing unsigned to signed ----------------------*/
     template <typename TO,
@@ -208,13 +205,4 @@ class narrow_holder
     }
 };
 
-/// narrow() factory function returns a narrow_holder<FROM>(), which can be
-/// implicitly converted to the target type.
-template <typename FROM>
-inline
-narrow_holder<FROM> narrow(FROM value)
-{
-    return { value };
-}
-
 #endif
diff --git a/indra/llcommon/tests/threadsafeschedule_test.cpp b/indra/llcommon/tests/threadsafeschedule_test.cpp
index c421cc7b1c3634ba4b81511a1097d136a50bb166..885159018939c329960ec72e29958e073d27cd61 100644
--- a/indra/llcommon/tests/threadsafeschedule_test.cpp
+++ b/indra/llcommon/tests/threadsafeschedule_test.cpp
@@ -46,11 +46,12 @@ namespace tut
         // the real time required for each push() call. Explicitly increment
         // the timestamp for each one -- but since we're passing explicit
         // timestamps, make the queue reorder them.
-        queue.push(Queue::TimeTuple(Queue::Clock::now() + 200ms, "ghi"));
+        auto now{ Queue::Clock::now() };
+        queue.push(Queue::TimeTuple(now + 200ms, "ghi"));
         // Given the various push() overloads, you have to match the type
         // exactly: conversions are ambiguous.
         queue.push("abc"s);
-        queue.push(Queue::Clock::now() + 100ms, "def");
+        queue.push(now + 100ms, "def");
         queue.close();
         auto entry = queue.pop();
         ensure_equals("failed to pop first", std::get<0>(entry), "abc"s);
diff --git a/indra/llcommon/threadpool.cpp b/indra/llcommon/threadpool.cpp
index 3a9a5a20626abf939a97bbb489ad22d2b6ce2990..c48989358ec4790b61b122cd3055c06b7570e708 100644
--- a/indra/llcommon/threadpool.cpp
+++ b/indra/llcommon/threadpool.cpp
@@ -60,12 +60,15 @@ struct sleepy_robin: public boost::fibers::algo::round_robin
 /*****************************************************************************
 *   ThreadPoolBase
 *****************************************************************************/
-LL::ThreadPoolBase::ThreadPoolBase(const std::string& name, size_t threads,
-                                   WorkQueueBase* queue):
+LL::ThreadPoolBase::ThreadPoolBase(const std::string& name,
+                                   size_t threads,
+                                   WorkQueueBase* queue,
+                                   bool auto_shutdown):
     super(name),
     mName("ThreadPool:" + name),
     mThreadCount(getConfiguredWidth(name, threads)),
-    mQueue(queue)
+    mQueue(queue),
+    mAutomaticShutdown(auto_shutdown)
 {}
 
 void LL::ThreadPoolBase::start()
@@ -79,6 +82,14 @@ void LL::ThreadPoolBase::start()
                 run(tname);
             });
     }
+
+    if (!mAutomaticShutdown)
+    {
+        // Some threads, like main window's might need to run a bit longer
+        // to wait for a proper shutdown message
+        return;
+    }
+
     // Listen on "LLApp", and when the app is shutting down, close the queue
     // and join the workers.
     LLEventPumps::instance().obtain("LLApp").listen(
@@ -109,8 +120,11 @@ void LL::ThreadPoolBase::close()
         mQueue->close();
         for (auto& pair: mThreads)
         {
-            LL_DEBUGS("ThreadPool") << mName << " waiting on thread " << pair.first << LL_ENDL;
-            pair.second.join();
+            if (pair.second.joinable())
+            {
+                LL_DEBUGS("ThreadPool") << mName << " waiting on thread " << pair.first << LL_ENDL;
+                pair.second.join();
+            }
         }
         LL_DEBUGS("ThreadPool") << mName << " shutdown complete" << LL_ENDL;
     }
diff --git a/indra/llcommon/threadpool.h b/indra/llcommon/threadpool.h
index 60f4a0ce1bc4c0d99da918320288518e313880bf..74056aea170c7a2da3b1fce33db3b383d2ec4f7c 100644
--- a/indra/llcommon/threadpool.h
+++ b/indra/llcommon/threadpool.h
@@ -40,7 +40,7 @@ namespace LL
          * overrides this parameter.
          */
         ThreadPoolBase(const std::string& name, size_t threads,
-                       WorkQueueBase* queue);
+                       WorkQueueBase* queue, bool auto_shutdown = true);
         virtual ~ThreadPoolBase();
 
         /**
@@ -55,7 +55,7 @@ namespace LL
          * ThreadPool listens for application shutdown messages on the "LLApp"
          * LLEventPump. Call close() to shut down this ThreadPool early.
          */
-        void close();
+        virtual void close();
 
         std::string getName() const { return mName; }
         size_t getWidth() const { return mThreads.size(); }
@@ -87,13 +87,14 @@ namespace LL
 
     protected:
         std::unique_ptr<WorkQueueBase> mQueue;
+        std::vector<std::pair<std::string, std::thread>> mThreads;
+        bool mAutomaticShutdown;
 
     private:
         void run(const std::string& name);
 
         std::string mName;
         size_t mThreadCount;
-        std::vector<std::pair<std::string, std::thread>> mThreads;
     };
 
     /**
@@ -117,8 +118,11 @@ namespace LL
          * Constraining the queue can cause a submitter to block. Do not
          * constrain any ThreadPool accepting work from the main thread.
          */
-        ThreadPoolUsing(const std::string& name, size_t threads=1, size_t capacity=1024*1024):
-            ThreadPoolBase(name, threads, new queue_t(name, capacity))
+        ThreadPoolUsing(const std::string& name,
+                        size_t threads=1,
+                        size_t capacity=1024*1024,
+                        bool auto_shutdown = true):
+            ThreadPoolBase(name, threads, new queue_t(name, capacity), auto_shutdown)
         {}
         ~ThreadPoolUsing() override {}
 
diff --git a/indra/llcorehttp/bufferarray.cpp b/indra/llcorehttp/bufferarray.cpp
index 27679fb20b3758eb9c80459b3c4d1090a878e344..ac083de5f024999fb6003bf7873f71118be34e64 100644
--- a/indra/llcorehttp/bufferarray.cpp
+++ b/indra/llcorehttp/bufferarray.cpp
@@ -288,7 +288,7 @@ int BufferArray::findBlock(size_t pos, size_t * ret_offset)
 	if (pos >= mLen)
 		return -1;		// Doesn't exist
 
-	const int block_limit(narrow(mBlocks.size()));
+	const int block_limit(narrow<size_t>(mBlocks.size()));
 	for (int i(0); i < block_limit; ++i)
 	{
 		if (pos < mBlocks[i]->mUsed)
diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp
index 06042e183f0d3454da06db1ca546b7557b791993..b1ebfbb23a1d4dbb6e0b3acc0dd51eb7007448b4 100644
--- a/indra/llimage/llimagedimensionsinfo.cpp
+++ b/indra/llimage/llimagedimensionsinfo.cpp
@@ -52,6 +52,7 @@ bool LLImageDimensionsInfo::load(const std::string& src_filename,U32 codec)
 
 	if (file_size == 0)
 	{
+        mWarning = "texture_load_empty_file";
 		setLastError("File is empty",src_filename);
 		return false;
 	}
@@ -94,6 +95,7 @@ bool LLImageDimensionsInfo::getImageDimensionsBmp()
 	if (signature[0] != 'B' || signature[1] != 'M')
 	{
 		LL_WARNS() << "Not a BMP" << LL_ENDL;
+        mWarning = "texture_load_format_error";
 		return false;
 	}
 
@@ -144,6 +146,7 @@ bool LLImageDimensionsInfo::getImageDimensionsPng()
 	if (memcmp(signature, png_magic, PNG_MAGIC_SIZE) != 0)
 	{
 		LL_WARNS() << "Not a PNG" << LL_ENDL;
+        mWarning = "texture_load_format_error";
 		return false;
 	}
 
@@ -216,12 +219,14 @@ bool LLImageDimensionsInfo::getImageDimensionsJpeg()
 	if (fread(signature, sizeof(signature), 1, fp) != 1)
 	{
 		LL_WARNS() << "Premature end of file" << LL_ENDL;
+        mWarning = "texture_load_format_error";
 		fclose(fp);
 		return false;
 	}
 	if (memcmp(signature, jpeg_magic, JPEG_MAGIC_SIZE) != 0)
 	{
 		LL_WARNS() << "Not a JPEG" << LL_ENDL;
+        mWarning = "texture_load_format_error";
 		fclose(fp);
 		return false;
 	}
diff --git a/indra/llimage/llimagedimensionsinfo.h b/indra/llimage/llimagedimensionsinfo.h
index 783dc49e9e2f89035b6bec35165be5b80e6a8405..89fd998ecdd829f5d6437c93b096fbb5fe66a923 100644
--- a/indra/llimage/llimagedimensionsinfo.h
+++ b/indra/llimage/llimagedimensionsinfo.h
@@ -55,6 +55,12 @@ class LLImageDimensionsInfo
 	{
 		return mLastError;
 	}
+
+    const std::string& getWarningName()
+    {
+        return mWarning;
+    }
+
 protected:
 
 	void clean()
@@ -130,6 +136,7 @@ class LLImageDimensionsInfo
 	std::string mSrcFilename;
 
 	std::string mLastError;
+    std::string mWarning;
 
 	U8* mData;
 
diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp
index 312626ef3deece79ddb248810446d26714153870..f2b7fcea718fbf8db862eb72dcbc74b23c444d0d 100644
--- a/indra/llimage/llimageworker.cpp
+++ b/indra/llimage/llimageworker.cpp
@@ -35,8 +35,10 @@ class ImageRequest
 {
 public:
 	ImageRequest(const LLPointer<LLImageFormatted>& image,
-				 S32 discard, BOOL needs_aux,
-				 const LLPointer<LLImageDecodeThread::Responder>& responder);
+                 S32 discard,
+                 BOOL needs_aux,
+                 const LLPointer<LLImageDecodeThread::Responder>& responder,
+                 U32 request_id);
 	virtual ~ImageRequest();
 
 	/*virtual*/ bool processRequest();
@@ -48,6 +50,7 @@ class ImageRequest
 	// input
 	LLPointer<LLImageFormatted> mFormattedImage;
 	S32 mDiscardLevel;
+    U32 mRequestId;
 	BOOL mNeedsAux;
 	// output
 	LLPointer<LLImageRaw> mDecodedImageRaw;
@@ -62,6 +65,7 @@ class ImageRequest
 
 // MAIN THREAD
 LLImageDecodeThread::LLImageDecodeThread(bool /*threaded*/)
+    : mDecodeCount(0)
 {
     mThreadPool.reset(new LL::ThreadPool("ImageDecode", 8));
     mThreadPool->start();
@@ -92,9 +96,10 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
 
+    U32 decode_id = ++mDecodeCount;
     // Instantiate the ImageRequest right in the lambda, why not?
     bool posted = mThreadPool->getQueue().post(
-        [req = ImageRequest(image, discard, needs_aux, responder)]
+        [req = ImageRequest(image, discard, needs_aux, responder, decode_id)]
         () mutable
         {
             auto done = req.processRequest();
@@ -103,13 +108,10 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(
     if (! posted)
     {
         LL_DEBUGS() << "Tried to start decoding on shutdown" << LL_ENDL;
-        // should this return 0?
+        return 0;
     }
 
-    // It's important to our consumer (LLTextureFetchWorker) that we return a
-    // nonzero handle. It is NOT important that the nonzero handle be unique:
-    // nothing is ever done with it except to compare it to zero, or zero it.
-    return 17;
+    return decode_id;
 }
 
 void LLImageDecodeThread::shutdown()
@@ -123,15 +125,18 @@ LLImageDecodeThread::Responder::~Responder()
 
 //----------------------------------------------------------------------------
 
-ImageRequest::ImageRequest(const LLPointer<LLImageFormatted>& image, 
-							S32 discard, BOOL needs_aux,
-							const LLPointer<LLImageDecodeThread::Responder>& responder)
+ImageRequest::ImageRequest(const LLPointer<LLImageFormatted>& image,
+                           S32 discard,
+                           BOOL needs_aux,
+                           const LLPointer<LLImageDecodeThread::Responder>& responder,
+                           U32 request_id)
 	: mFormattedImage(image),
 	  mDiscardLevel(discard),
 	  mNeedsAux(needs_aux),
 	  mDecodedRaw(FALSE),
 	  mDecodedAux(FALSE),
-	  mResponder(responder)
+	  mResponder(responder),
+	  mRequestId(request_id)
 {
 }
 
@@ -199,7 +204,7 @@ void ImageRequest::finishRequest(bool completed)
 	if (mResponder.notNull())
 	{
 		bool success = completed && mDecodedRaw && (!mNeedsAux || mDecodedAux);
-		mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux);
+		mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux, mRequestId);
 	}
 	// Will automatically be deleted
 }
diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h
index ca4c0d93d0c16e7f967c31600dd83a4d1da9ddd3..b4ab9432e6f6380e41245b2267dc386397388de1 100644
--- a/indra/llimage/llimageworker.h
+++ b/indra/llimage/llimageworker.h
@@ -39,7 +39,7 @@ class LLImageDecodeThread
 	protected:
 		virtual ~Responder();
 	public:
-		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux) = 0;
+		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux, U32 request_id) = 0;
 	};
 
 public:
@@ -53,6 +53,7 @@ class LLImageDecodeThread
 						 const LLPointer<Responder>& responder);
 	size_t getPending();
 	size_t update(F32 max_time_ms);
+    S32 getTotalDecodeCount() { return mDecodeCount; }
 	void shutdown();
 
 private:
@@ -60,6 +61,7 @@ class LLImageDecodeThread
 	// LLQueuedThread - instead this is the API by which we submit work to the
 	// "ImageDecode" ThreadPool.
 	std::unique_ptr<LL::ThreadPool> mThreadPool;
+    LLAtomicU32 mDecodeCount;
 };
 
 #endif
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 66cedaea5a1becc4ddc4ac5b19718da16b93a6f6..4f8841ad079fc77c26f5c21ee5cfc40d9dd16624 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -5575,9 +5575,9 @@ bool LLVolumeFace::cacheOptimize(bool gen_tangents)
 
         U32 stream_count = data.w_data.empty() ? 4 : 5;
 
-        U32 vert_count = meshopt_generateVertexRemapMulti(&remap[0], nullptr, data.p_data.size(), data.p_data.size(), mos, stream_count);
+        size_t vert_count = meshopt_generateVertexRemapMulti(&remap[0], nullptr, data.p_data.size(), data.p_data.size(), mos, stream_count);
 
-        if (vert_count < 65535)
+        if (vert_count < 65535 && vert_count != 0)
         {
             //copy results back into volume
             resizeVertices(vert_count);
@@ -5593,6 +5593,13 @@ bool LLVolumeFace::cacheOptimize(bool gen_tangents)
             {
                 U32 src_idx = i;
                 U32 dst_idx = remap[i];
+                if (dst_idx >= mNumVertices)
+                {
+                    dst_idx = mNumVertices - 1;
+                    // Shouldn't happen, figure out what gets returned in remap and why.
+                    llassert(false);
+                    LL_DEBUGS_ONCE("LLVOLUME") << "Invalid destination index, substituting" << LL_ENDL;
+                }
                 mIndices[i] = dst_idx;
 
                 mPositions[dst_idx].load3(data.p_data[src_idx].mV);
@@ -5626,6 +5633,10 @@ bool LLVolumeFace::cacheOptimize(bool gen_tangents)
         }
         else
         {
+            if (vert_count == 0)
+            {
+                LL_WARNS_ONCE("LLVOLUME") << "meshopt_generateVertexRemapMulti failed to process a model or model was invalid" << LL_ENDL;
+            }
             // blew past the max vertex size limit, use legacy tangent generation which never adds verts
             createTangents();
         }
diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp
index 93d5cfc13156b71d5e89a1baf71b23dee9355a42..212d0619d1e92ce2b18ea012a896e96aa4141943 100644
--- a/indra/llmessage/llxfer.cpp
+++ b/indra/llmessage/llxfer.cpp
@@ -386,12 +386,3 @@ std::ostream& operator<< (std::ostream& os, LLXfer &hh)
 	os << hh.getFileName() ;
 	return os;
 }
-
-
-
-
-
-
-
-
-
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
index 86c01e1bb9874b82ad145149c9c656548b19691f..745f13b9422e586c7359bb4f3c6910f200165ff3 100644
--- a/indra/llprimitive/llmodel.cpp
+++ b/indra/llprimitive/llmodel.cpp
@@ -1043,7 +1043,12 @@ LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)
 	weight_map::iterator iterPos = mSkinWeights.begin();
 	weight_map::iterator iterEnd = mSkinWeights.end();
 
-    llassert(!mSkinWeights.empty());
+    if (mSkinWeights.empty())
+    {
+        // function calls iter->second on all return paths
+        // everything that calls this function should precheck that there is data.
+        LL_ERRS() << "called getJointInfluences with empty weights list" << LL_ENDL;
+    }
 	
 	for ( ; iterPos!=iterEnd; ++iterPos )
 	{
@@ -1070,11 +1075,16 @@ LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)
 		const F32 epsilon = 1e-5f;
 		weight_map::iterator iter_up = mSkinWeights.lower_bound(pos);
 		weight_map::iterator iter_down = iter_up;
-		if (iter_up != mSkinWeights.end())
-		{
-			iter_down = ++iter_up;
-		}
-		weight_map::iterator best = iter_up;
+        weight_map::iterator best = iter_up;
+        if (iter_up != mSkinWeights.end())
+        {
+            iter_down = ++iter_up;
+        }
+        else
+        {
+            // Assumes that there is at least one element
+            --best;
+        }
 
 		F32 min_dist = (best->first - pos).magVec();
 
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index b69e8a590c4277352f0100cc13fd85ccc7f693c6..c83bd549ab047ee58c1b4f5652d9732b8d5196dd 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -95,6 +95,17 @@ void APIENTRY gl_debug_callback(GLenum source,
         return;
     }*/
 
+    if (gGLManager.mIsDisabled &&
+        severity == GL_DEBUG_SEVERITY_HIGH_ARB &&
+        source == GL_DEBUG_SOURCE_API_ARB &&
+        type == GL_DEBUG_TYPE_ERROR_ARB &&
+        id == GL_INVALID_VALUE)
+    {
+        // Suppress messages about deleting already deleted objects called from LLViewerWindow::stopGL()
+        // "GL_INVALID_VALUE error generated. Handle does not refer to an object generated by OpenGL."
+        return;
+    }
+
     // list of messages to suppress
     const char* suppress[] =
     {
@@ -149,8 +160,9 @@ void APIENTRY gl_debug_callback(GLenum source,
         glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_SIZE, &ubo_size);
         glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_IMMUTABLE_STORAGE, &ubo_immutable);
     }
-    
-    if (severity == GL_DEBUG_SEVERITY_HIGH)
+
+    // No needs to halt when is called from LLViewerWindow::stopGL()
+    if (severity == GL_DEBUG_SEVERITY_HIGH && !gGLManager.mIsDisabled)
     {
         LL_ERRS() << "Halting on GL Error" << LL_ENDL;
     }
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 55a6272c8d112264a73593ae042314fcb4e3c763..a3eb18dfd10e87c30c27242eca4792b2308a2941 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -126,12 +126,12 @@ class LLAccordionCtrlTab : public LLUICtrl
 
 	void setSelected(bool is_selected);
 
-	bool getCollapsible() {return mCollapsible;};
+	bool getCollapsible() { return mCollapsible; };
 
-	void setCollapsible(bool collapsible) {mCollapsible = collapsible;};
+	void setCollapsible(bool collapsible) { mCollapsible = collapsible; };
 	void changeOpenClose(bool is_open);
 
-	void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;};
+	void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close; };
 	bool canOpenClose() const { return mCanOpenClose; };
 
 	virtual BOOL postBuild();
@@ -142,8 +142,8 @@ class LLAccordionCtrlTab : public LLUICtrl
 
 	void draw();
 
-	void    storeOpenCloseState		();
-	void    restoreOpenCloseState	();
+	void storeOpenCloseState();
+	void restoreOpenCloseState();
 
 protected:
 	LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&);
diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp
index cae6abbd44bc857c0e54fa2762d00b9749b414d9..244f6324872d78cc395b7cbf9ca16e9d728fc164 100644
--- a/indra/llui/llcontainerview.cpp
+++ b/indra/llui/llcontainerview.cpp
@@ -282,7 +282,7 @@ void LLContainerView::setLabel(const std::string& label)
 	mLabel = label;
 }
 
-void LLContainerView::setDisplayChildren(const BOOL displayChildren)
+void LLContainerView::setDisplayChildren(BOOL displayChildren)
 {
 	mDisplayChildren = displayChildren;
     for (LLView* childp : *getChildList())
diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h
index 99267d978aa49f7c5283f846441bd15e81a7044c..8e75aaef6ef82bd9e5a93d918138ac066fc9b862 100644
--- a/indra/llui/llcontainerview.h
+++ b/indra/llui/llcontainerview.h
@@ -78,7 +78,7 @@ class LLContainerView : public LLView
 
 	void setLabel(const std::string& label);
 	void showLabel(BOOL show) { mShowLabel = show; }
-	void setDisplayChildren(const BOOL displayChildren);
+	void setDisplayChildren(BOOL displayChildren);
 	BOOL getDisplayChildren() { return mDisplayChildren; }
 	void setScrollContainer(LLScrollContainer* scroll) {mScrollContainer = scroll;}
 
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 2894f102ab9e715328e94b26bb81aa34898a68e8..a1276c966d1f1532c57ed69f6fce6f82c7d2148f 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -1368,26 +1368,28 @@ void LLFlatListViewEx::setForceShowingUnmatchedItems(bool show)
 	mForceShowingUnmatchedItems = show;
 }
 
-void LLFlatListViewEx::setFilterSubString(const std::string& filter_str)
+void LLFlatListViewEx::setFilterSubString(const std::string& filter_str, bool notify_parent)
 {
 	if (0 != LLStringUtil::compareInsensitive(filter_str, mFilterSubString))
 	{
 		mFilterSubString = filter_str;
 		updateNoItemsMessage(mFilterSubString);
-		filterItems();
+		filterItems(false, notify_parent);
 	}
 }
 
-void LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action)
+bool LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action)
 {
-	if (!item) return;
+    if (!item)
+        return false;
+
+	BOOL visible = TRUE;
 
 	// 0 signifies that filter is matched,
 	// i.e. we don't hide items that don't support 'match_filter' action, separators etc.
 	if (0 == item->notify(action))
 	{
 		mHasMatchedItems = true;
-		item->setVisible(true);
 	}
 	else
 	{
@@ -1395,34 +1397,45 @@ void LLFlatListViewEx::updateItemVisibility(LLPanel* item, const LLSD &action)
 		if (!mForceShowingUnmatchedItems)
 		{
 			selectItem(item, false);
+			visible = FALSE;
 		}
-		item->setVisible(mForceShowingUnmatchedItems);
 	}
+
+	if (item->getVisible() != visible)
+	{
+		item->setVisible(visible);
+		return true;
+	}
+
+	return false;
 }
 
-void LLFlatListViewEx::filterItems()
+void LLFlatListViewEx::filterItems(bool re_sort, bool notify_parent)
 {
-	typedef std::vector <LLPanel*> item_panel_list_t;
-
 	std::string cur_filter = mFilterSubString;
 	LLStringUtil::toUpper(cur_filter);
 
 	LLSD action;
 	action.with("match_filter", cur_filter);
 
-	item_panel_list_t items;
-	getItems(items);
-
 	mHasMatchedItems = false;
-    item_panel_list_t::iterator iter = items.begin(), iter_end = items.end();
-	while (iter < iter_end)
+	bool visibility_changed = false;
+	pairs_const_iterator_t iter = getItemPairs().begin(), iter_end = getItemPairs().end();
+	while (iter != iter_end)
 	{
-		LLPanel* pItem = *(iter++);
-		updateItemVisibility(pItem, action);
+		LLPanel* pItem = (*(iter++))->first;
+		visibility_changed |= updateItemVisibility(pItem, action);
 	}
 
-	sort();
-	notifyParentItemsRectChanged();
+    if (re_sort)
+    {
+        sort();
+    }
+
+    if (visibility_changed && notify_parent)
+    {
+        notifyParentItemsRectChanged();
+    }
 }
 
 bool LLFlatListViewEx::hasMatchedItems()
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 5919396fffbf224d2d49f8182e8fa7c417444860..7e382ec82c5a1012144f4baa9fd6e5a61a2bf8a7 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -306,6 +306,7 @@ class LLFlatListView : public LLScrollContainer, public LLEditMenuHandler
 	virtual S32	notify(const LLSD& info) ;
 
 	virtual ~LLFlatListView();
+
 protected:
 
 	/** Pairs LLpanel representing a single item LLPanel and LLSD associated with it */
@@ -381,7 +382,9 @@ class LLFlatListView : public LLScrollContainer, public LLEditMenuHandler
 
 	LLRect getLastSelectedItemRect();
 
-	void   ensureSelectedVisible();
+	void ensureSelectedVisible();
+
+	const pairs_list_t& getItemPairs() { return mItemPairs; }
 
 private:
 
@@ -491,14 +494,14 @@ class LLFlatListViewEx : public LLFlatListView
 	/**
 	 * Sets up new filter string and filters the list.
 	 */
-	void setFilterSubString(const std::string& filter_str);
+	void setFilterSubString(const std::string& filter_str, bool notify_parent);
 	std::string getFilterSubString() { return mFilterSubString; }
 	
 	/**
 	 * Filters the list, rearranges and notifies parent about shape changes.
 	 * Derived classes may want to overload rearrangeItems() to exclude repeated separators after filtration.
 	 */
-	void filterItems();
+	void filterItems(bool re_sort, bool notify_parent);
 
 	/**
 	 * Returns true if last call of filterItems() found at least one matching item
@@ -522,7 +525,7 @@ class LLFlatListViewEx : public LLFlatListView
 	* @param item - item we are changing
 	* @param item - action - parameters to determin visibility from
 	*/
-	void updateItemVisibility(LLPanel* item, const LLSD &action);
+	bool updateItemVisibility(LLPanel* item, const LLSD &action);
 
 private:
 	std::string mNoFilteredItemsMsg;
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index 697e5ee5a6f0deb748255e1958a15dad8167d7ab..d650d38350d9698326d1320f47c0798daaf65306 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -188,14 +188,18 @@ LLFolderViewItem::~LLFolderViewItem()
 
 BOOL LLFolderViewItem::postBuild()
 {
-    LLFolderViewModelItem& vmi = *getViewModelItem();
-    // getDisplayName() is expensive (due to internal getLabelSuffix() and name building)
-    // it also sets search strings so it requires a filter reset
-    mLabel = utf8str_to_wstring(vmi.getDisplayName());
-    setToolTip(vmi.getName());
+    LLFolderViewModelItem* vmi = getViewModelItem();
+    llassert(vmi); // not supposed to happen, if happens, find out why and fix
+    if (vmi)
+    {
+        // getDisplayName() is expensive (due to internal getLabelSuffix() and name building)
+        // it also sets search strings so it requires a filter reset
+        mLabel = utf8str_to_wstring(vmi->getDisplayName());
+        setToolTip(vmi->getName());
 
-    // Dirty the filter flag of the model from the view (CHUI-849)
-    vmi.dirtyFilter();
+        // Dirty the filter flag of the model from the view (CHUI-849)
+        vmi->dirtyFilter();
+    }
 
     // Don't do full refresh on constructor if it is possible to avoid
     // it significantly slows down bulk view creation.
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index 9f3fe0552ff7d99b65e0bee49bae12c396797007..b98e056c3bb92fb60503172ba28ca4d6d897e25a 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -532,7 +532,7 @@ LLTrace::BlockTimerStatHandle FTM_SYNTAX_COLORING("Syntax Coloring");
 
 // Walk through a string, applying the rules specified by the keyword token list and
 // create a list of color segments.
-void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLWString& wtext, const LLColor4 &defaultColor, LLTextEditor& editor)
+void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLWString& wtext, LLTextEditor& editor, LLStyleConstSP style)
 {
 	LL_RECORD_BLOCK_TIME(FTM_SYNTAX_COLORING);
 	seg_list->clear();
@@ -544,8 +544,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 	S32 text_len = wtext.size() + 1;
 
-	LLStyleSP style = getDefaultStyle(editor);
-	style->setColor(defaultColor);
 	seg_list->push_back( new LLNormalTextSegment( style, 0, text_len, editor ) );
 
 	const llwchar* base = wtext.c_str();
@@ -556,9 +554,9 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 		{
 			if( *cur == '\n' )
 			{
-				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(getDefaultStyle(editor), cur-base);
+				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, cur-base);
 				text_segment->setToken( 0 );
-				insertSegment( *seg_list, text_segment, text_len, defaultColor, editor);
+				insertSegment( *seg_list, text_segment, text_len, style, editor);
 				cur++;
 				if( !*cur || *cur == '\n' )
 				{
@@ -596,7 +594,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 						S32 seg_end = cur - base;
 
 						//create segments from seg_start to seg_end
-						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor);
+						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, style, editor);
 						line_done = TRUE; // to break out of second loop.
 						break;
 					}
@@ -703,7 +701,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 						seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();
 					}
 
-					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, defaultColor, editor);
+					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, style, editor);
 					/*
 					LLStyleSP seg_style = getDefaultStyle(editor);
 					seg_style->setColor(defaultColor);
@@ -740,7 +738,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 						// LL_INFOS("SyntaxLSL") << "Seg: [" << word.c_str() << "]" << LL_ENDL;
 
-						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, defaultColor, editor);
+						insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, style, editor);
 					}
 					cur += seg_len;
 					continue;
@@ -755,34 +753,32 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 	}
 }
 
-void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmentPtr>& seg_list, LLKeywordToken* cur_token, S32 text_len, S32 seg_start, S32 seg_end, const LLColor4 &defaultColor, LLTextEditor& editor )
+void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmentPtr>& seg_list, LLKeywordToken* cur_token, S32 text_len, S32 seg_start, S32 seg_end, LLStyleConstSP style, LLTextEditor& editor )
 {
 	std::string::size_type pos = wtext.find('\n',seg_start);
+    
+    LLStyleConstSP cur_token_style = new LLStyle(LLStyle::Params().font(style->getFont()).color(cur_token->getColor()));
 
 	while (pos!=-1 && pos < (std::string::size_type)seg_end)
 	{
 		if (pos!=seg_start)
 		{
-			LLStyleSP style = getDefaultStyle(editor);
-			style->setColor(cur_token->getColor());
-			LLTextSegmentPtr text_segment = new LLNormalTextSegment( style, seg_start, pos, editor );
+            LLTextSegmentPtr text_segment = new LLNormalTextSegment(cur_token_style, seg_start, pos, editor);
 			text_segment->setToken( cur_token );
-			insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
+			insertSegment( seg_list, text_segment, text_len, style, editor);
 		}
 
-		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(getDefaultStyle(editor), pos);
+		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, pos);
 		text_segment->setToken( cur_token );
-		insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
+		insertSegment( seg_list, text_segment, text_len, style, editor);
 
 		seg_start = pos+1;
 		pos = wtext.find('\n',seg_start);
 	}
 
-	LLStyleSP style = getDefaultStyle(editor);
-	style->setColor(cur_token->getColor());
-	LLTextSegmentPtr text_segment = new LLNormalTextSegment( style, seg_start, seg_end, editor );
+	LLTextSegmentPtr text_segment = new LLNormalTextSegment(cur_token_style, seg_start, seg_end, editor);
 	text_segment->setToken( cur_token );
-	insertSegment( seg_list, text_segment, text_len, defaultColor, editor);
+	insertSegment( seg_list, text_segment, text_len, style, editor);
 }
 
 void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, const LLColor4 &defaultColor, LLTextEditor& editor )
@@ -802,17 +798,29 @@ void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSe
 
 	if( new_seg_end < text_len )
 	{
-		LLStyleSP style = getDefaultStyle(editor);
-		style->setColor(defaultColor);
-		seg_list.push_back( new LLNormalTextSegment( style, new_seg_end, text_len, editor ) );
+		seg_list.push_back( new LLNormalTextSegment( defaultColor, new_seg_end, text_len, editor ) );
 	}
 }
 
-LLStyleSP LLKeywords::getDefaultStyle(const LLTextEditor& editor)
+void LLKeywords::insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, LLStyleConstSP style, LLTextEditor& editor )
 {
-	LLStyleSP style(new LLStyle(LLStyle::Params()));
-	style->setFont(editor.getFont());
-	return style;
+	LLTextSegmentPtr last = seg_list.back();
+	S32 new_seg_end = new_segment->getEnd();
+
+	if( new_segment->getStart() == last->getStart() )
+	{
+		seg_list.pop_back();
+	}
+	else
+	{
+		last->setEnd( new_segment->getStart() );
+	}
+	seg_list.push_back( new_segment );
+
+	if( new_seg_end < text_len )
+	{
+		seg_list.push_back( new LLNormalTextSegment( style, new_seg_end, text_len, editor ) );
+	}
 }
 
 #ifdef _DEBUG
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index d54d562a5e89fc35922cc2a8cce7765f37e0df60..c60835ed95b3b6c746e48f913012dc8da902dbd1 100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -29,6 +29,7 @@
 
 
 #include "lldir.h"
+#include "llstyle.h"
 #include "llstring.h"
 #include "v3color.h"
 #include "v4color.h"
@@ -118,8 +119,8 @@ class LLKeywords
 
 	void		findSegments(std::vector<LLTextSegmentPtr> *seg_list,
 							 const LLWString& text,
-							 const LLColor4 &defaultColor,
-							 class LLTextEditor& editor);
+							 class LLTextEditor& editor,
+                             LLStyleConstSP style);
 	void		initialize(LLSD SyntaxXML);
 	void		processTokens();
 
@@ -184,9 +185,11 @@ class LLKeywords
 							   S32 text_len,
 							   S32 seg_start,
 							   S32 seg_end,
-							   const LLColor4 &defaultColor,
+							   LLStyleConstSP style,
 							   LLTextEditor& editor);
 
+    void insertSegment(std::vector<LLTextSegmentPtr>& seg_list, LLTextSegmentPtr new_segment, S32 text_len, LLStyleConstSP style, LLTextEditor& editor );
+
 	bool		mLoaded;
 	LLSD		mSyntax;
 	word_token_map_t mWordTokenMap;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 972e1f22075a4e0b2924e21b74123813650acd4a..be721612afd17e64ded84cc9603b909be39a90ab 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1789,7 +1789,8 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
 	mNeedsArrange(FALSE),
 	mAlwaysShowMenu(FALSE),
 	mResetScrollPositionOnShow(true),
-	mShortcutPad(p.shortcut_pad)
+	mShortcutPad(p.shortcut_pad),
+    mFont(p.font)
 {
 	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
 	boost::char_separator<char> sep("_");
@@ -3645,6 +3646,7 @@ BOOL LLMenuBarGL::appendMenu( LLMenuGL* menu )
 	p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
 	p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
 	p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
+    p.font = menu->getFont();
 
 	LLMenuItemBranchDownGL* branch = LLUICtrlFactory::create<LLMenuItemBranchDownGL>(p);
 	success &= branch->addToAcceleratorList(&mAccelerators);
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 12cc315a99ef1d29dfd12e43746198ba16c77cf3..f5fd403ad8f87c2e3d4207920ab345bdbbc1e40f 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -562,7 +562,9 @@ class LLMenuGL
 	// add a context menu branch
 	BOOL appendContextSubMenu(LLMenuGL *menu);
 
-protected:
+    const LLFontGL *getFont() const { return mFont; }
+
+  protected:
 	void createSpilloverBranch();
 	void cleanupSpilloverBranch();
 	// Add the menu item to this menu.
@@ -594,6 +596,9 @@ class LLMenuGL
 	BOOL			mKeepFixedSize;
 	BOOL			mNeedsArrange;
 
+    // Font for top menu items only
+    const LLFontGL* mFont;
+
 private:
 
 
diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
index 43408543be021f540c9f182fba43a7c5572a7881..91772ae142a87d80e88d9689f03e0a0032d7b4f3 100644
--- a/indra/llui/llstatbar.cpp
+++ b/indra/llui/llstatbar.cpp
@@ -181,7 +181,7 @@ LLStatBar::LLStatBar(const Params& p)
 	mTargetMinBar(llmin(p.bar_min, p.bar_max)),
 	mTargetMaxBar(llmax(p.bar_max, p.bar_min)),
 	mCurMaxBar(p.bar_max),
-    mCurMinBar(0),
+	mCurMinBar(0),
 	mDecimalDigits(p.decimal_digits),
 	mNumHistoryFrames(p.num_frames),
 	mNumShortHistoryFrames(p.num_frames_short),
@@ -222,9 +222,6 @@ BOOL LLStatBar::handleHover(S32 x, S32 y, MASK mask)
 	case STAT_SAMPLE:
 		LLToolTipMgr::instance().show(LLToolTip::Params().message(mStat.sampleStatp->getDescription()).sticky_rect(calcScreenRect()));
 		break;
-	case STAT_MEM:
-		LLToolTipMgr::instance().show(LLToolTip::Params().message(mStat.memStatp->getDescription()).sticky_rect(calcScreenRect()));
-		break;
 	default:
 		break;
 	}
@@ -373,18 +370,6 @@ void LLStatBar::draw()
 			}
 		}
 		break;
-	case STAT_MEM:
-		{
-			const LLTrace::StatType<LLTrace::MemAccumulator>& mem_stat = *mStat.memStatp;
-
-			unit_label        = mUnitLabel.empty() ? mem_stat.getUnitLabel() : mUnitLabel;
-			current           = last_frame_recording.getLastValue(mem_stat).value();
-			min               = frame_recording.getPeriodMin(mem_stat, num_frames).value();
-			max               = frame_recording.getPeriodMax(mem_stat, num_frames).value();
-			mean              = frame_recording.getPeriodMean(mem_stat, num_frames).value();
-			display_value	  = current;
-		}
-		break;
 	default:
 		break;
 	}
@@ -500,11 +485,6 @@ void LLStatBar::draw()
 							max_value		= recording.getMax(*mStat.sampleStatp);
 							num_samples		= recording.getSampleCount(*mStat.sampleStatp);
 							break;
-						case STAT_MEM:
-							min_value       = recording.getMin(*mStat.memStatp).value();
-							max_value		= recording.getMax(*mStat.memStatp).value();
-							num_samples = 1;
-							break;
 						default:
 							break;
 					}
@@ -588,14 +568,8 @@ void LLStatBar::setStat(const std::string& stat_name)
 		mStat.sampleStatp = sample_stat.get();
 		mStatType = STAT_SAMPLE;
 	}
-	else if (auto mem_stat = StatType<MemAccumulator>::getInstance(stat_name))
-	{
-		mStat.memStatp = mem_stat.get();
-		mStatType = STAT_MEM;
-	}
 }
 
-
 void LLStatBar::setRange(F32 bar_min, F32 bar_max)
 {
 	mTargetMinBar		= llmin(bar_min, bar_max);
diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h
index 37adf51f5b87a0f0302753a8d538da183e6b1bd4..d55ff1a20bbc72f214a1121cb3a531c347c1d52d 100644
--- a/indra/llui/llstatbar.h
+++ b/indra/llui/llstatbar.h
@@ -95,17 +95,15 @@ class LLStatBar : public LLView
 		STAT_NONE,
 		STAT_COUNT,
 		STAT_EVENT,
-		STAT_SAMPLE,
-		STAT_MEM
+		STAT_SAMPLE
 	} mStatType;
 
 	union
 	{
-		void*														valid;
+		void*													valid;
 		const LLTrace::StatType<LLTrace::CountAccumulator>*		countStatp;
 		const LLTrace::StatType<LLTrace::EventAccumulator>*		eventStatp;
-		const LLTrace::StatType<LLTrace::SampleAccumulator>*		sampleStatp;
-		const LLTrace::StatType<LLTrace::MemAccumulator>*		memStatp;
+		const LLTrace::StatType<LLTrace::SampleAccumulator>*	sampleStatp;
 	} mStat;
 
 	LLWString   mLabel;
diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp
index bb4969c81f1d74c2f86c206b909f6fc6872225d7..03f2fb7cc0e51081e6a7e96878256eae5054e7b2 100644
--- a/indra/llui/llstatview.cpp
+++ b/indra/llui/llstatview.cpp
@@ -58,10 +58,7 @@ LLStatView::~LLStatView()
 	}
 }
 
-
 static StatViewRegistry::Register<LLStatBar> r1("stat_bar");
 static StatViewRegistry::Register<LLStatView> r2("stat_view");
 // stat_view can be a child of panels/etc.
 static LLDefaultChildRegistry::Register<LLStatView> r3("stat_view");
-
-
diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h
index af4db7d7ea0a56f50ef8e64bf97e19637e477be4..044f0a8679ee93837887e5e17ce751cf8b8728ad 100644
--- a/indra/llui/llstatview.h
+++ b/indra/llui/llstatview.h
@@ -63,7 +63,7 @@ class LLStatView : public LLContainerView
 	friend class LLUICtrlFactory;
 
 protected:
-	std::string mSetting;
-
+	const std::string mSetting;
 };
+
 #endif // LL_STATVIEW_
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index ab5a0f5ec5c804afd842077adc7cd2f7322be6d9..94faa0eab64ce8978d8180325a47e984044e07bd 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1531,25 +1531,23 @@ BOOL LLTabContainer::selectTab(S32 which)
 
 	LLTabTuple* selected_tuple = getTab(which);
 	if (!selected_tuple)
-	{
 		return FALSE;
-	}
-	
+
 	LLSD cbdata;
 	if (selected_tuple->mTabPanel)
 		cbdata = selected_tuple->mTabPanel->getName();
 
-	BOOL res = FALSE;
-	if( !mValidateSignal || (*mValidateSignal)( this, cbdata ) )
+	BOOL result = FALSE;
+	if (!mValidateSignal || (*mValidateSignal)(this, cbdata))
 	{
-		res = setTab(which);
-		if (res && mCommitSignal)
+		result = setTab(which);
+		if (result && mCommitSignal)
 		{
 			(*mCommitSignal)(this, cbdata);
 		}
 	}
-	
-	return res;
+
+	return result;
 }
 
 // private
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index cdf98fecd227f4d75a430fd489d02b11e30681f0..be2256c5a0cf14203418b7ba4e8a0c792cd4b2fb 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -3685,7 +3685,7 @@ BOOL LLNormalTextSegment::handleToolTip(S32 x, S32 y, MASK mask)
 	if (mToken && !mToken->getToolTip().empty())
 	{
 		const LLWString& wmsg = mToken->getToolTip();
-		LLToolTipMgr::instance().show(wstring_to_utf8str(wmsg));
+        LLToolTipMgr::instance().show(wstring_to_utf8str(wmsg), (mToken->getType() == LLKeywordToken::TT_FUNCTION));
 		return TRUE;
 	}
 	// or do we have an explicitly set tooltip (e.g., for Urls)
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index aef8d3119b194b8fb4f3701a98cc6bdba553b947..f5e90d4ee36a603c38a880d268683fc1efac2597 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -1968,6 +1968,7 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
 
 		if (mEnableTooltipPaste &&
 			LLToolTipMgr::instance().toolTipVisible() &&
+            LLToolTipMgr::instance().isTooltipPastable() &&
 			KEY_TAB == key)
 		{	// Paste the first line of a tooltip into the editor
 			std::string message;
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index a009b5c57d3449e9dd6e3b411d08ce15b636a6a5..659c90ee77618e9dcd62d0938ee2601345b68acc 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -150,7 +150,8 @@ LLToolTip::Params::Params()
 	text_color("text_color"),
 	time_based_media("time_based_media", false),
 	web_based_media("web_based_media", false),
-	media_playing("media_playing", false)
+	media_playing("media_playing", false),
+    allow_paste_tooltip("allow_paste_tooltip", false)
 {
 	static LLUICachedControl<F32> tool_tip_delay("ToolTipDelay", 0.69999f);
 	static LLUICachedControl<F32> visible_time_over_setting("ToolTipVisibleTimeOver", 1000.f);
@@ -172,7 +173,8 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
 	mTextBox(NULL),
 	mInfoButton(NULL),
 	mPlayMediaButton(NULL),
-	mHomePageButton(NULL)
+	mHomePageButton(NULL),
+    mIsTooltipPastable(p.allow_paste_tooltip)
 {
 	LLTextBox::Params params;
 	params.name = params.initial_value().asString();
@@ -294,6 +296,8 @@ void LLToolTip::initFromParams(const LLToolTip::Params& p)
 		mTextBox->setText(p.message());
 	}
 
+	mIsTooltipPastable = p.allow_paste_tooltip;
+
 	updateTextBox();
 	snapToChildren();
 }
@@ -488,9 +492,9 @@ void LLToolTipMgr::createToolTip(const LLToolTip::Params& params)
 }
 
 
-void LLToolTipMgr::show(const std::string& msg)
+void LLToolTipMgr::show(const std::string& msg, bool allow_paste_tooltip)
 {
-	show(LLToolTip::Params().message(msg));
+    show(LLToolTip::Params().message(msg).allow_paste_tooltip(allow_paste_tooltip));
 }
 
 void LLToolTipMgr::show(const LLToolTip::Params& params)
@@ -631,5 +635,13 @@ void LLToolTipMgr::getToolTipMessage(std::string & message)
 	}
 }
 
+bool LLToolTipMgr::isTooltipPastable()
+{
+    if (toolTipVisible())
+    {
+        return mToolTip->isTooltipPastable();
+    }
+    return false;
+ }
 
 // EOF
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 6bb9be8e2eb01c631afd7c28ede23488fc48a5af..d1c175495271733b81d4ba1d6d4669838d04856f 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -94,6 +94,8 @@ class LLToolTip : public LLPanel
 									padding;
 		Optional<bool>				wrap;
 
+        Optional<bool> allow_paste_tooltip;
+
 		Params();
 	};
 	/*virtual*/ void draw();
@@ -109,6 +111,7 @@ class LLToolTip : public LLPanel
 	virtual void initFromParams(const LLToolTip::Params& params);
 
 	void getToolTipMessage(std::string & message);
+    bool isTooltipPastable() { return mIsTooltipPastable; }
 
 protected:
 	void updateTextBox();
@@ -125,6 +128,8 @@ class LLToolTip : public LLPanel
 	bool			mHasClickCallback;
 	S32				mPadding;	// pixels
 	S32				mMaxWidth;
+
+    bool mIsTooltipPastable;
 };
 
 // used for the inspector tooltips which need different background images etc.
@@ -142,7 +147,7 @@ class LLToolTipMgr final : public LLSingleton<LLToolTipMgr>
 
 public:
 	void show(const LLToolTip::Params& params);
-	void show(const std::string& message);
+	void show(const std::string& message, bool allow_paste_tooltip = false);
 
 	void unblockToolTips();
 	void blockToolTips();
@@ -154,6 +159,7 @@ class LLToolTipMgr final : public LLSingleton<LLToolTipMgr>
 	void updateToolTipVisibility();
 
 	void getToolTipMessage(std::string & message);
+    bool isTooltipPastable();
 
 private:
 	void createToolTip(const LLToolTip::Params& params);
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 29df54b6f5e9046e39845ce6a12364c5c9588a80..30d3c42c477475dd8b648e82c1c0f9a588fba2a8 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -227,14 +227,20 @@ bool LLUrlEntryBase::isWikiLinkCorrect(const std::string &labeled_url) const
 
 std::string LLUrlEntryBase::urlToLabelWithGreyQuery(const std::string &url) const
 {
+    if (url.empty())
+    {
+        return url;
+    }
 	LLUriParser up(escapeUrl(url));
-	up.normalize();
-
-	std::string label;
-	up.extractParts();
-	up.glueFirst(label);
+	if (up.normalize() == 0)
+    {
+        std::string label;
+        up.extractParts();
+        up.glueFirst(label);
 
-	return unescapeUrl(label);
+        return unescapeUrl(label);
+    }
+    return std::string();
 }
 
 std::string LLUrlEntryBase::urlToGreyQuery(const std::string &url) const
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index e8e932c7d438b9122c1eee37cbeb281dc06f1df1..ba5cadd18d666c63022726e0c4a091845776e951 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -227,8 +227,10 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
 		if (match_entry == mUrlEntryTrusted)
 		{
 			LLUriParser up(url);
-			up.normalize();
-			url = up.normalizedUri();
+			if (up.normalize() == 0)
+            {
+                url = up.normalizedUri();
+            }
 		}
 
 		match.setValues(match_start, match_end,
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index a36e76a6eba23f8ebe20e43f7b78aa4483409086..71964c9537cc8279ecd48542f680e2d5148f6ddc 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -315,6 +315,10 @@ struct LLWindowWin32::LLWindowWin32Thread : public LL::ThreadPool
     LLWindowWin32Thread();
 
     void run() override;
+    void close() override;
+
+    // closes queue, wakes thread, waits until thread closes
+    void wakeAndDestroy();
 
     void glReady()
     {
@@ -327,6 +331,9 @@ struct LLWindowWin32::LLWindowWin32Thread : public LL::ThreadPool
     // initialize D3D (if DXGI cannot be used)
     void initD3D();
 
+    //clean up DXGI/D3D resources
+    void cleanupDX();
+
     // call periodically to update available VRAM
     void updateVRAMUsage();
 
@@ -376,8 +383,8 @@ struct LLWindowWin32::LLWindowWin32Thread : public LL::ThreadPool
     using FuncType = std::function<void()>;
     // call GetMessage() and pull enqueue messages for later processing
     void gatherInput();
-    HWND mWindowHandle = NULL;
-    HDC mhDC = 0;
+    HWND mWindowHandleThrd = NULL;
+    HDC mhDCThrd = 0;
 
     // *HACK: Attempt to prevent startup crashes by deferring memory accounting
     // until after some graphics setup. See SL-20177. -Cosmic,2023-09-18
@@ -985,46 +992,10 @@ void LLWindowWin32::close()
 
 	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
 
-    mWindowThread->post([=]()
-        {
-            if (IsWindow(mWindowHandle))
-            {
-                if (mhDC)
-                {
-                    if (!ReleaseDC(mWindowHandle, mhDC))
-                    {
-                        LL_WARNS("Window") << "Release of ghDC failed!" << LL_ENDL;
-                    }
-                }
-
-                // Make sure we don't leave a blank toolbar button.
-                ShowWindow(mWindowHandle, SW_HIDE);
-
-                // This causes WM_DESTROY to be sent *immediately*
-                if (!destroy_window_handler(mWindowHandle))
-                {
-                    OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
-                        mCallbacks->translateString("MBShutdownErr"),
-                        OSMB_OK);
-                }
-            }
-            else
-            {
-                // Something killed the window while we were busy destroying gl or handle somehow got broken
-                LL_WARNS("Window") << "Failed to destroy Window, invalid handle!" << LL_ENDL;
-            }
-
-        });
-    // Window thread might be waiting for a getMessage(), give it
-    // a push to enshure it will process destroy_window_handler
-    kickWindowThread();
-
-    // Even though the above lambda might not yet have run, we've already
-    // bound mWindowHandle into it by value, which should suffice for the
-    // operations we're asking. That's the last time WE should touch it.
     mhDC = NULL;
     mWindowHandle = NULL;
-    mWindowThread->close();
+    
+    mWindowThread->wakeAndDestroy();
 }
 
 BOOL LLWindowWin32::isValid()
@@ -1785,8 +1756,8 @@ void LLWindowWin32::recreateWindow(RECT window_rect, DWORD dw_ex_style, DWORD dw
         ()
         {
             LL_DEBUGS("Window") << "recreateWindow(): window_work entry" << LL_ENDL;
-            self->mWindowHandle = 0;
-            self->mhDC = 0;
+            self->mWindowHandleThrd = 0;
+            self->mhDCThrd = 0;
 
             if (oldWindowHandle)
             {
@@ -1821,20 +1792,20 @@ void LLWindowWin32::recreateWindow(RECT window_rect, DWORD dw_ex_style, DWORD dw
             {
                 // Failed to create window: clear the variables. This
                 // assignment is valid because we're running on mWindowThread.
-                self->mWindowHandle = NULL;
-                self->mhDC = 0;
+                self->mWindowHandleThrd = NULL;
+                self->mhDCThrd = 0;
             }
             else
             {
                 // Update mWindowThread's own mWindowHandle and mhDC.
-                self->mWindowHandle = handle;
-                self->mhDC = GetDC(handle);
+                self->mWindowHandleThrd = handle;
+                self->mhDCThrd = GetDC(handle);
             }
             
             updateWindowRect();
 
             // It's important to wake up the future either way.
-            promise.set_value(std::make_pair(self->mWindowHandle, self->mhDC));
+            promise.set_value(std::make_pair(self->mWindowHandleThrd, self->mhDCThrd));
             LL_DEBUGS("Window") << "recreateWindow(): window_work done" << LL_ENDL;
         };
     // But how we pass window_work to the window thread depends on whether we
@@ -3646,6 +3617,9 @@ void LLSplashScreenWin32::showImpl()
 		NULL,	// no parent
 		(DLGPROC) LLSplashScreenWin32::windowProc); 
 	ShowWindow(mWindow, SW_SHOW);
+
+    // Should set taskbar text without creating a header for the window (caption)
+    SetWindowTextA(mWindow, "Second Life");
 }
 
 
@@ -4553,11 +4527,25 @@ U32 LLWindowWin32::getAvailableVRAMMegabytes()
 #endif // LL_WINDOWS
 
 inline LLWindowWin32::LLWindowWin32Thread::LLWindowWin32Thread()
-    : LL::ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE)
+    : LL::ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE, true /*should be false, temporary workaround for SL-18721*/)
 {
     LL::ThreadPool::start();
 }
 
+void LLWindowWin32::LLWindowWin32Thread::close()
+{
+    if (!mQueue->isClosed())
+    {
+        LL_WARNS() << "Closing window thread without using destroy_window_handler" << LL_ENDL;
+        LL::ThreadPool::close();
+
+        // Workaround for SL-18721 in case window closes too early and abruptly
+        LLSplashScreen::show();
+        LLSplashScreen::update("..."); // will be updated later
+    }
+}
+
+
 /**
  * LogChange is to log changes in status while trying to avoid spamming the
  * log with repeated messages, especially in a tight loop. It refuses to log
@@ -4709,7 +4697,7 @@ void LLWindowWin32::LLWindowWin32Thread::initD3D()
 {
     if (!mGLReady) { return; }
 
-    if (mDXGIAdapter == NULL && mD3DDevice == NULL && mWindowHandle != 0)
+    if (mDXGIAdapter == NULL && mD3DDevice == NULL && mWindowHandleThrd != 0)
     {
         mD3D = Direct3DCreate9(D3D_SDK_VERSION);
         
@@ -4719,7 +4707,7 @@ void LLWindowWin32::LLWindowWin32Thread::initD3D()
         d3dpp.Windowed = TRUE;
         d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
 
-        HRESULT res = mD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, mWindowHandle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &mD3DDevice);
+        HRESULT res = mD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, mWindowHandleThrd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &mD3DDevice);
         
         if (FAILED(res))
         {
@@ -4732,6 +4720,28 @@ void LLWindowWin32::LLWindowWin32Thread::initD3D()
     }
 }
 
+void LLWindowWin32::LLWindowWin32Thread::cleanupDX()
+{
+    //clean up DXGI/D3D resources
+    if (mDXGIAdapter)
+    {
+        mDXGIAdapter->Release();
+        mDXGIAdapter = nullptr;
+    }
+
+    if (mD3DDevice)
+    {
+        mD3DDevice->Release();
+        mD3DDevice = nullptr;
+    }
+
+    if (mD3D)
+    {
+        mD3D->Release();
+        mD3D = nullptr;
+    }
+}
+
 void LLWindowWin32::LLWindowWin32Thread::updateVRAMUsage()
 {
     LL_PROFILE_ZONE_SCOPED;
@@ -4825,7 +4835,7 @@ void LLWindowWin32::LLWindowWin32Thread::run()
         // lazily call initD3D inside this loop to catch when mGLReady has been set to true
         initDX();
 
-        if (mWindowHandle != 0)
+        if (mWindowHandleThrd != 0)
         {
             // lazily call initD3D inside this loop to catch when mWindowHandle has been set, and mGLReady has been set to true
             // *TODO: Shutdown if this fails when mWindowHandle exists
@@ -4833,16 +4843,16 @@ void LLWindowWin32::LLWindowWin32Thread::run()
 
             MSG msg;
             BOOL status;
-            if (mhDC == 0)
+            if (mhDCThrd == 0)
             {
                 LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("w32t - PeekMessage");
-                logger.onChange("PeekMessage(", std::hex, mWindowHandle, ")");
-                status = PeekMessage(&msg, mWindowHandle, 0, 0, PM_REMOVE);
+                logger.onChange("PeekMessage(", std::hex, mWindowHandleThrd, ")");
+                status = PeekMessage(&msg, mWindowHandleThrd, 0, 0, PM_REMOVE);
             }
             else
             {
                 LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("w32t - GetMessage");
-                logger.always("GetMessage(", std::hex, mWindowHandle, ")");
+                logger.always("GetMessage(", std::hex, mWindowHandleThrd, ")");
                 status = GetMessage(&msg, NULL, 0, 0);
             }
             if (status > 0)
@@ -4879,25 +4889,110 @@ void LLWindowWin32::LLWindowWin32Thread::run()
 #endif
     }
 
-    //clean up DXGI/D3D resources
-    if (mDXGIAdapter)
+    cleanupDX();
+}
+
+void LLWindowWin32::LLWindowWin32Thread::wakeAndDestroy()
+{
+    if (mQueue->isClosed())
     {
-        mDXGIAdapter->Release();
-        mDXGIAdapter = nullptr;
+        LL_WARNS() << "Tried to close Queue. Win32 thread Queue already closed." << LL_ENDL;
+        return;
     }
 
-    if (mD3DDevice)
+    // Make sure we don't leave a blank toolbar button.
+    // Also hiding window now prevents user from suspending it
+    // via some action (like dragging it around)
+    ShowWindow(mWindowHandleThrd, SW_HIDE);
+
+    // Schedule destruction
+    HWND old_handle = mWindowHandleThrd;
+    post([this]()
+         {
+             if (IsWindow(mWindowHandleThrd))
+             {
+                 if (mhDCThrd)
+                 {
+                     if (!ReleaseDC(mWindowHandleThrd, mhDCThrd))
+                     {
+                         LL_WARNS("Window") << "Release of ghDC failed!" << LL_ENDL;
+                     }
+                     mhDCThrd = NULL;
+                 }
+
+                 // This causes WM_DESTROY to be sent *immediately*
+                 if (!destroy_window_handler(mWindowHandleThrd))
+                 {
+                     LL_WARNS("Window") << "Failed to destroy Window! " << std::hex << GetLastError() << LL_ENDL;
+                 }
+             }
+             else
+             {
+                 // Something killed the window while we were busy destroying gl or handle somehow got broken
+                 LL_WARNS("Window") << "Failed to destroy Window, invalid handle!" << LL_ENDL;
+             }
+             mWindowHandleThrd = NULL;
+             mhDCThrd = NULL;
+             mGLReady = false;
+         });
+
+    LL_DEBUGS("Window") << "Closing window's pool queue" << LL_ENDL;
+    mQueue->close();
+
+    // Post a nonsense user message to wake up the thread in
+    // case it is waiting for a getMessage()
+    if (old_handle)
     {
-        mD3DDevice->Release();
-        mD3DDevice = nullptr;
+        WPARAM wparam{ 0xB0B0 };
+        LL_DEBUGS("Window") << "PostMessage(" << std::hex << old_handle
+            << ", " << WM_DUMMY_
+            << ", " << wparam << ")" << std::dec << LL_ENDL;
+        PostMessage(old_handle, WM_DUMMY_, wparam, 0x1337);
     }
 
-    if (mD3D)
+    // There are cases where window will refuse to close,
+    // can't wait forever on join, check state instead
+    LLTimer timeout;
+    timeout.setTimerExpirySec(2.0);
+    while (!getQueue().done() && !timeout.hasExpired() && mWindowHandleThrd)
     {
-        mD3D->Release();
-        mD3D = nullptr;
+        ms_sleep(100);
+    }
+
+    if (getQueue().done() || mWindowHandleThrd == NULL)
+    {
+        // Window is closed, started closing or is cleaning up
+        // now wait for our single thread to die.
+        if (mWindowHandleThrd)
+        {
+            LL_INFOS("Window") << "Window is closing, waiting on pool's thread to join, time since post: " << timeout.getElapsedSeconds() << "s" << LL_ENDL;
+        }
+        else
+        {
+            LL_DEBUGS("Window") << "Waiting on pool's thread, time since post: " << timeout.getElapsedSeconds() << "s" << LL_ENDL;
+        }
+        for (auto& pair : mThreads)
+        {
+            pair.second.join();
+        }
     }
+    else
+    {
+        // Something suspended window thread, can't afford to wait forever
+        // so kill thread instead
+        // Ex: This can happen if user starts dragging window arround (if it
+        // was visible) or a modal notification pops up
+        LL_WARNS("Window") << "Window is frozen, couldn't perform clean exit" << LL_ENDL;
 
+        for (auto& pair : mThreads)
+        {
+            // very unsafe
+            TerminateThread(pair.second.native_handle(), 0);
+            pair.second.detach();
+            cleanupDX();
+        }
+    }
+    LL_DEBUGS("Window") << "thread pool shutdown complete" << LL_ENDL;
 }
 
 void LLWindowWin32::post(const std::function<void()>& func)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 79f1c55d5f7cef652c34babde22172dbf343dbe7..77536a17fb39bea0c19f6b01f027ebfa978a251b 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -2036,7 +2036,7 @@ if (WINDOWS)
 
     if (PACKAGE)
       add_custom_command(
-        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz
         COMMAND ${Python3_EXECUTABLE}
         ARGS
           ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
@@ -2082,7 +2082,7 @@ if (WINDOWS)
         )
         # temporarily disable packaging of event_host until hg subrepos get
         # sorted out on the parabuild cluster...
-        #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
+        #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz)
 
     endif (PACKAGE)
 elseif (DARWIN)
@@ -2426,12 +2426,12 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE
         OUTPUT_VARIABLE PARENT_DIRECTORY_CYGWIN
         OUTPUT_STRIP_TRAILING_WHITESPACE)
       add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
-        # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.bz2;
+        # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.xz;
         # testing a string suffix is painful enough in CMake language that
         # we'll continue assuming it until forced to generalize.
         COMMAND "tar"
         ARGS
-          "cjf"
+          "cJf"
           "${VIEWER_SYMBOL_FILE_CYGWIN}"
           "-C"
           "${PARENT_DIRECTORY_CYGWIN}"
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index b7f8ee41e6934d953db404b5c91f4465bd1850cb..14627a7c8cd1411397811977f7011d3439bb3040 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-7.1.4
+7.1.6
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5b7ab6c5a1d0bc317b1eec8de7d64cc2a795003f..86c8a4714bbae4344e61e4120a1c79ce07333a34 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5809,6 +5809,17 @@
       <key>Value</key>
       <string>http://wiki.secondlife.com/wiki/[LSL_STRING]</string>
     </map>
+    <key>LSLFontSizeName</key>
+    <map>
+        <key>Comment</key>
+        <string>Text font size in LSL editor</string>
+        <key>Persist</key>
+        <integer>1</integer>
+        <key>Type</key>
+        <string>String</string>
+        <key>Value</key>
+        <string>Monospace</string>
+    </map>
     <key>GridStatusRSS</key>
     <map>
       <key>Comment</key>
@@ -7984,10 +7995,21 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>OpenDebugStatBasic</key>
+    <map>
+      <key>Comment</key>
+      <string>Expand Basic performance stats display</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>OpenDebugStatAdvanced</key>
     <map>
       <key>Comment</key>
-      <string>Expand advanced performance stats display</string>
+      <string>Expand Advanced performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -7995,10 +8017,10 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>OpenDebugStatBasic</key>
+    <key>OpenDebugStatRender</key>
     <map>
       <key>Comment</key>
-      <string>Expand basic performance stats display</string>
+      <string>Expand Render performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -8006,10 +8028,21 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>OpenDebugStatNet</key>
+    <key>OpenDebugStatTexture</key>
+    <map>
+      <key>Comment</key>
+      <string>Expand Texture performance stats display</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
+    <key>OpenDebugStatMemory</key>
     <map>
       <key>Comment</key>
-      <string>Expand network stats display</string>
+      <string>Expand Memory Usage stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -8017,10 +8050,10 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>OpenDebugStatRender</key>
+    <key>OpenDebugStatNet</key>
     <map>
       <key>Comment</key>
-      <string>Expand render stats display</string>
+      <string>Expand Network performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -8031,7 +8064,7 @@
     <key>OpenDebugStatSim</key>
     <map>
       <key>Comment</key>
-      <string>Expand simulator performance stats display</string>
+      <string>Expand Simulator performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -8039,10 +8072,10 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>OpenDebugStatTexture</key>
+    <key>OpenDebugStatPhysicsDetails</key>
     <map>
       <key>Comment</key>
-      <string>Expand Texture performance stats display</string>
+      <string>Expand Physics Details performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -8050,10 +8083,10 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>OpenDebugStatPhysicsDetails</key>
+    <key>OpenDebugStatPathfinding</key>
     <map>
       <key>Comment</key>
-      <string>Expand Physics Details performance stats display</string>
+      <string>Expand Pathfinding performance stats display</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 63e32654d4fbc1f70b110b3ae95f18cfd14b1f44..18c345291eab0e2479434c564ac9059bb5827bbf 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -2021,7 +2021,7 @@
      value_min="-1"
      value_max="1">
       <param_skeleton>
-	  
+
         <bone
          name="mEyeLeft"
          scale="0 0 0"
@@ -2031,9 +2031,8 @@
          name="mEyeRight"
          scale="0 0 0"
          offset="-.005 0 0" />
-		 
-	  
-<bone
+
+        <bone
          name="mFaceEyeAltLeft"
          scale="0 0 0"
          offset="-.005 0 0" />
@@ -2042,7 +2041,7 @@
          name="mFaceEyeAltRight"
          scale="0 0 0"
          offset="-.005 0 0" />
-	  
+
         <bone
          name="mFaceEyeLidLowerRight"
          scale="0 0.3 0.7"
@@ -2053,7 +2052,7 @@
          scale="0 0.3 0.7"
          offset="0 0 0" />
 
-		 <bone
+        <bone
          name="mFaceEyeLidUpperRight"
          scale="0 0.3 0.7"
          offset=" 0 0 0" />
@@ -2062,17 +2061,17 @@
          name="mFaceEyeLidUpperLeft"
          scale="0 0.3 0.7"
          offset=" 0 0 0" />
-		 
+
         <bone
          name="mFaceEyecornerInnerLeft"
          scale="0 0 0"
          offset="-0.005 -0.008 0.0" />
-		 
+
         <bone
          name="mFaceEyecornerInnerRight"
          scale="0 0 0"
          offset="-0.005 0.008 0.0" />
-		 
+
       </param_skeleton>
     </param>
 
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 69b056b1dd2e6b45c9d0bd9ce3e698578c21f46d..ac9db674865a00122e43a19a57c4764b431756a3 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1839,6 +1839,9 @@ bool LLAppViewer::cleanup()
 		LL_INFOS() << "ViewerWindow deleted" << LL_ENDL;
 	}
 
+    LLSplashScreen::show();
+    LLSplashScreen::update(LLTrans::getString("ShuttingDown"));
+
 	LL_INFOS() << "Cleaning up Keyboard & Joystick" << LL_ENDL;
 
 	// viewer UI relies on keyboard so keep it aound until viewer UI isa gone
@@ -2118,6 +2121,8 @@ bool LLAppViewer::cleanup()
 	// deleteSingleton() methods.
 	LLSingletonBase::deleteAll();
 
+    LLSplashScreen::hide();
+
     LL_INFOS() << "Goodbye!" << LL_ENDL;
 
 	removeDumpDir();
@@ -2923,13 +2928,14 @@ bool LLAppViewer::initConfiguration()
 
 	if (mSecondInstance)
 	{
-		// This is the second instance of SL. Turn off voice support,
+		// This is the second instance of SL. Mute voice,
 		// but make sure the setting is *not* persisted.
-		LLControlVariable* disable_voice = gSavedSettings.getControl("CmdLineDisableVoice");
-        if (disable_voice && !gSavedSettings.getBOOL("VoiceMultiInstance"))
+		// Also see LLVivoxVoiceClient::voiceEnabled()
+		LLControlVariable* enable_voice = gSavedSettings.getControl("EnableVoiceChat");
+		if(enable_voice && !gSavedSettings.getBOOL("VoiceMultiInstance"))
 		{
 			const BOOL DO_NOT_PERSIST = FALSE;
-			disable_voice->setValue(LLSD(TRUE), DO_NOT_PERSIST);
+			enable_voice->setValue(LLSD(FALSE), DO_NOT_PERSIST);
 		}
 	}
 
@@ -5063,6 +5069,9 @@ void LLAppViewer::idleShutdown()
 		&& gLogoutTimer.getElapsedTimeF32() < SHUTDOWN_UPLOAD_SAVE_TIME
 		&& !logoutRequestSent())
 	{
+        gViewerWindow->setShowProgress(TRUE);
+        gViewerWindow->setProgressPercent(100.f);
+        gViewerWindow->setProgressString(LLTrans::getString("LoggingOut"));
 		return;
 	}
 
@@ -5446,9 +5455,18 @@ void LLAppViewer::forceErrorBadMemoryAccess()
 void LLAppViewer::forceErrorInfiniteLoop()
 {
    	LL_WARNS() << "Forcing a deliberate infinite loop" << LL_ENDL;
+    // Loop is intentionally complicated to fool basic loop detection
+    LLTimer timer_total;
+    LLTimer timer_expiry;
+    const S32 report_frequency = 10;
+    timer_expiry.setTimerExpirySec(report_frequency);
     while(true)
     {
-        ;
+        if (timer_expiry.hasExpired())
+        {
+            LL_INFOS() << "Infinite loop time : " << timer_total.getElapsedSeconds() << LL_ENDL;
+            timer_expiry.setTimerExpirySec(report_frequency);
+        }
     }
     return;
 }
@@ -5459,6 +5477,13 @@ void LLAppViewer::forceErrorSoftwareException()
     LLTHROW(LLException("User selected Force Software Exception"));
 }
 
+void LLAppViewer::forceErrorOSSpecificException()
+{
+    // Virtual, MacOS only
+    const std::string exception_text = "User selected Force OS Exception, Not implemented on this OS";
+    throw std::runtime_error(exception_text);
+}
+
 void LLAppViewer::forceErrorDriverCrash()
 {
    	LL_WARNS() << "Forcing a deliberate driver crash" << LL_ENDL;
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index ac9bd45dbca0e687c74766885303e4b02691e509..07a541d669e3029ee533a1aa756e92d3c21ea0f0 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -157,6 +157,7 @@ class LLAppViewer : public LLApp
     virtual void forceErrorBadMemoryAccess();
     virtual void forceErrorInfiniteLoop();
     virtual void forceErrorSoftwareException();
+    virtual void forceErrorOSSpecificException();
     virtual void forceErrorDriverCrash();
     virtual void forceErrorCoroutineCrash();
     virtual void forceErrorThreadCrash();
diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h
index 1e8e832afac30818643862af7eb755f3c21852fa..109c9228316955ae2b80916641ef46197f0e9da9 100644
--- a/indra/newview/llappviewermacosx-objc.h
+++ b/indra/newview/llappviewermacosx-objc.h
@@ -33,4 +33,6 @@
 //Why?  Because BOOL
 void setCrashUserMetadataWrapper(const std::string& userid, const std::string& username);
 
+void force_ns_sxeption();
+
 #endif // LL_LLAPPVIEWERMACOSX_OBJC_H
diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm
index ce300d328b952f20510af73bd83031b5571b998f..8200d1d9c6c192d3c20b4910ec0f75a59be36c7d 100644
--- a/indra/newview/llappviewermacosx-objc.mm
+++ b/indra/newview/llappviewermacosx-objc.mm
@@ -46,3 +46,9 @@ void setCrashUserMetadataWrapper(const std::string& userid, const std::string& u
     [SentrySDK setUser:user];
 #endif
 }
+
+void force_ns_sxeption()
+{
+    NSException *exception = [NSException exceptionWithName:@"Forced NSException" reason:nullptr userInfo:nullptr];
+    @throw exception;
+}
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index dc0bad04bcab06fbdc91633d6bb55e98419fd3ad..d6cb02a364d01496c9b634fe58c2253b55cf3356 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -257,6 +257,11 @@ void LLAppViewerMacOSX::setCrashUserMetadata(const LLUUID& user_id, const std::s
     setCrashUserMetadataWrapper(user_id.asString(), avatar_name);
 }
 
+void LLAppViewerMacOSX::forceErrorOSSpecificException()
+{
+    force_ns_sxeption();
+}
+
 // MacOSX may add and addition command line arguement for the process serial number.
 // The option takes a form like '-psn_0_12345'. The following method should be able to recognize
 // and either ignore or return a pair of values for the option.
diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h
index a384ae515afe29e78bce348003cb809272db7c40..9f86c3b5539c051cd04d628b18400566bb822591 100644
--- a/indra/newview/llappviewermacosx.h
+++ b/indra/newview/llappviewermacosx.h
@@ -42,8 +42,9 @@ class LLAppViewerMacOSX final : public LLAppViewer
 	//
     bool init() override;			// Override to do application initialization
 
+    void forceErrorOSSpecificException() override;
+
     void setCrashUserMetadata(const LLUUID& user_id, const std::string& avatar_name) override;
-    
 protected:
     bool restoreErrorTrap() override;
     void initCrashReporting(bool reportFreeze) override;
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp
index 68a539abb0fba4eb0a0af9a14de4e9787d9f5cb3..5f80232fb2b3a8d6b7a554627336fbe512d68a81 100644
--- a/indra/newview/llcontrolavatar.cpp
+++ b/indra/newview/llcontrolavatar.cpp
@@ -357,6 +357,9 @@ LLControlAvatar *LLControlAvatar::createControlAvatar(LLVOVolume *obj)
 void LLControlAvatar::markForDeath()
 {
     mMarkedForDeath = true;
+    // object unlinked cav and might be dead already
+    // might need to clean mControlAVBridge here as well
+    mRootVolp = NULL;
 }
 
 void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time)
@@ -374,6 +377,7 @@ void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time)
 
 void LLControlAvatar::markDead()
 {
+    mRootVolp = NULL;
     super::markDead();
     mControlAVBridge = NULL;
 }
@@ -435,7 +439,7 @@ void LLControlAvatar::updateDebugText()
         F32 streaming_cost = 0.f;
         std::string cam_dist_string = "";
         S32 cam_dist_count = 0;
-        F32 lod_radius = mRootVolp->mLODRadius;
+        F32 lod_radius = mRootVolp ? mRootVolp->mLODRadius : 0.f;
 
         for (std::vector<LLVOVolume*>::iterator it = volumes.begin();
              it != volumes.end(); ++it)
diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp
index 5ea92cde22ced5cb5febc872072bdc1aea710790..494e0b76c214680d3afa953e34b2c67aabedfc7b 100644
--- a/indra/newview/llconversationmodel.cpp
+++ b/indra/newview/llconversationmodel.cpp
@@ -91,6 +91,8 @@ LLConversationItem::~LLConversationItem()
 	{
 		mAvatarNameCacheConnection.disconnect();
 	}
+
+    clearChildren();
 }
 
 //virtual
@@ -267,6 +269,11 @@ LLConversationItemSession::LLConversationItemSession(const LLUUID& uuid, LLFolde
 	mConvType = CONV_SESSION_UNKNOWN;
 }
 
+LLConversationItemSession::~LLConversationItemSession()
+{
+    clearAndDeparentModels();
+}
+
 bool LLConversationItemSession::hasChildren() const
 {
 	return getChildrenCount() > 0;
diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h
index 1e1bece1464613bf68a9921415dbfa2ae3e603d1..5fe16af0c1a35e6b6b9f8a365d75b6f4e49abfd2 100644
--- a/indra/newview/llconversationmodel.h
+++ b/indra/newview/llconversationmodel.h
@@ -160,6 +160,7 @@ class LLConversationItemSession : public LLConversationItem
 public:
 	LLConversationItemSession(std::string display_name, const LLUUID& uuid, LLFolderViewModelInterface& root_view_model);
 	LLConversationItemSession(const LLUUID& uuid, LLFolderViewModelInterface& root_view_model);
+    ~LLConversationItemSession();
 	
 	/*virtual*/ bool hasChildren() const;
     LLPointer<LLUIImage> getIcon() const { return NULL; }
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index ee9fe7df47a9ac2ecfcc110bc65c71f605f33bc1..d51e3263f55a8cbb44cef375be94c06069f0411c 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -964,7 +964,7 @@ void LLFastTimerView::printLineStats()
 	{
 		std::string legend_stat;
 		bool first = true;
-		for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
+		for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
 			it != LLTrace::end_block_timer_tree_df();
 			++it)
 		{
@@ -986,7 +986,7 @@ void LLFastTimerView::printLineStats()
 
 		std::string timer_stat;
 		first = true;
-		for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
+		for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
 			it != LLTrace::end_block_timer_tree_df();
 			++it)
 		{
@@ -1063,7 +1063,7 @@ void LLFastTimerView::drawLineGraph()
 	F32Seconds cur_max(0);
 	U32 cur_max_calls = 0;
 
-	for(block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
+	for(LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
 		it != LLTrace::end_block_timer_tree_df();
 		++it)
 	{
@@ -1209,8 +1209,8 @@ void LLFastTimerView::drawLegend()
 		S32 scroll_offset = 0; // element's y offset from top of the inner scroll's rect
 		ft_display_idx.clear();
 		std::map<BlockTimerStatHandle*, S32> display_line;
-		for (block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
-			it != block_timer_tree_df_iterator_t();
+		for (LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
+			it != LLTrace::end_block_timer_tree_df();
 			++it)
 		{
 			BlockTimerStatHandle* idp = (*it);
@@ -1325,8 +1325,8 @@ void LLFastTimerView::generateUniqueColors()
 
 		F32 hue = 0.f;
 
-		for (block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
-			it != block_timer_tree_df_iterator_t();
+		for (LLTrace::block_timer_tree_df_iterator_t it = LLTrace::begin_block_timer_tree_df(FTM_FRAME);
+			it != LLTrace::end_block_timer_tree_df();
 			++it)
 		{
 			BlockTimerStatHandle* idp = (*it);
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index adc2f7b4e78646ac367b4674797b6b90196344f3..a66d8db17dabb6d38546ee33a65ac12a3aed5bd2 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -320,6 +320,7 @@ class LLItemCopiedCallback : public LLInventoryCallback
 
 		if (item)
 		{
+            LLFavoritesBarCtrl::sWaitingForCallabck = 0.f;
 			LLFavoritesOrderStorage::instance().setSortIndex(item, mSortField);
 
 			item->setComplete(TRUE);
@@ -365,6 +366,9 @@ struct LLFavoritesSort
 	}
 };
 
+
+F64 LLFavoritesBarCtrl::sWaitingForCallabck = 0.f;
+
 LLFavoritesBarCtrl::Params::Params()
 : image_drag_indication("image_drag_indication"),
   more_button("more_button"),
@@ -381,7 +385,7 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
 	mShowDragMarker(FALSE),
 	mLandingTab(NULL),
 	mLastTab(NULL),
-	mTabsHighlightEnabled(TRUE),
+    mItemsListDirty(false),
 	mUpdateDropDownItems(true),
 	mRestoreOverflowMenu(false),
 	mGetPrevItems(true),
@@ -618,6 +622,9 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
 	int sortField = 0;
 	LLPointer<LLItemCopiedCallback> cb;
 
+    const F64 CALLBACK_WAIT_TIME = 30.f;
+    sWaitingForCallabck = LLTimer::getTotalSeconds() + CALLBACK_WAIT_TIME;
+
 	// current order is saved by setting incremental values (1, 2, 3, ...) for the sort field
 	for (LLInventoryModel::item_array_t::iterator i = mItems.begin(); i != mItems.end(); ++i)
 	{
@@ -691,16 +698,22 @@ void LLFavoritesBarCtrl::changed(U32 mask)
 			LLFavoritesOrderStorage::instance().getSLURL((*i)->getAssetUUID());
 		}
 
-		updateButtons();
-		if (!mItemsChangedTimer.getStarted())
-		{
-			mItemsChangedTimer.start();
-		}
-		else
-		{
-			mItemsChangedTimer.reset();
-		}
-
+        if (sWaitingForCallabck < LLTimer::getTotalSeconds())
+        {
+            updateButtons();
+            if (!mItemsChangedTimer.getStarted())
+            {
+                mItemsChangedTimer.start();
+            }
+            else
+            {
+                mItemsChangedTimer.reset();
+            }
+        }
+        else
+        {
+            mItemsListDirty = true;
+        }
 	}
 }
 
@@ -754,6 +767,18 @@ void LLFavoritesBarCtrl::draw()
 		mItemsChangedTimer.start();
 	}
 
+    if (mItemsListDirty && sWaitingForCallabck < LLTimer::getTotalSeconds())
+    {
+        updateButtons();
+        if (!mItemsChangedTimer.getStarted())
+        {
+            mItemsChangedTimer.start();
+        }
+        else
+        {
+            mItemsChangedTimer.reset();
+        }
+    }
 }
 
 const LLButton::Params& LLFavoritesBarCtrl::getButtonParams()
@@ -782,6 +807,7 @@ void LLFavoritesBarCtrl::updateButtons(bool force_update)
         return;
     }
 
+    mItemsListDirty = false;
 	mItems.clear();
 
 	if (!collectFavoriteItems(mItems))
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 2fb9f8411ca329dec650b6a421cdcc00ce98166d..40c225346b6065f85a6b18ae059cca7dbc56bf42 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -53,6 +53,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 protected:
 	LLFavoritesBarCtrl(const Params&);
 	friend class LLUICtrlFactory;
+    friend class LLItemCopiedCallback;
 public:
 	virtual ~LLFavoritesBarCtrl();
 
@@ -84,7 +85,6 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	void onButtonRightClick(LLUUID id,LLView* button,S32 x,S32 y,MASK mask);
 	
 	void onButtonMouseDown(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
-	void onOverflowMenuItemMouseDown(LLUUID id, LLUICtrl* item, S32 x, S32 y, MASK mask);
 	void onButtonMouseUp(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
 
 	void onEndDrag();
@@ -164,7 +164,8 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	BOOL mStartDrag;
 	LLInventoryModel::item_array_t mItems;
 
-	BOOL mTabsHighlightEnabled;
+    static F64 sWaitingForCallabck;
+    bool mItemsListDirty;
 
 	S32 mMouseX;
 	S32 mMouseY;
diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp
index 82426834c055916527bd620afd7a2cf022b61ef8..22797d9534d9db47bb664106da9f3a9633226056 100644
--- a/indra/newview/llfloaterimnearbychathandler.cpp
+++ b/indra/newview/llfloaterimnearbychathandler.cpp
@@ -705,6 +705,8 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
 	// errors in separate window.
 	if (chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG)
 	{
+        if (LLFloater::isQuitRequested()) return;
+
 		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
 			return;
 
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 6bf9f524dacae58711c0af9a35caa31235631592..97775c795dd4462b431de2fd25fc633bbcf71c11 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -122,6 +122,7 @@
 #include "llpresetsmanager.h"
 #include "llviewercontrol.h"
 #include "llpresetsmanager.h"
+#include "llinventoryfunctions.h"
 
 #include <boost/json.hpp>
 #include <utility>
@@ -2037,25 +2038,6 @@ void LLFloaterPreference::onChangeMaturity()
 	getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT);
 }
 
-std::string get_category_path(LLUUID cat_id)
-{
-    LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);
-    std::string localized_cat_name;
-    if (!LLTrans::findString(localized_cat_name, "InvFolder " + cat->getName()))
-    {
-        localized_cat_name = cat->getName();
-    }
-
-    if (cat->getParentUUID().notNull())
-    {
-        return get_category_path(cat->getParentUUID()) + " > " + localized_cat_name;
-    }
-    else
-    {
-        return localized_cat_name;
-    }
-}
-
 std::string get_category_path(LLFolderType::EType cat_type)
 {
     LLUUID cat_id = gInventory.findUserDefinedCategoryUUIDForType(cat_type);
diff --git a/indra/newview/llfloaterprofiletexture.cpp b/indra/newview/llfloaterprofiletexture.cpp
index 20d7a69add4829a703379b0a7c0a79537ca40844..ae9c1e8d02a0b6f678f77c5c547a7ae1bcf27e3f 100644
--- a/indra/newview/llfloaterprofiletexture.cpp
+++ b/indra/newview/llfloaterprofiletexture.cpp
@@ -58,6 +58,8 @@ LLFloaterProfileTexture::~LLFloaterProfileTexture()
         mImage->setBoostLevel(mImageOldBoostLevel);
         mImage = NULL;
     }
+
+    LLLoadedCallbackEntry::cleanUpCallbackList(&mCallbackTextureList);
 }
 
 // virtual
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 3795e0db2e257345008b19be2105941ed7a41ca8..f737be7a7ded0198ece87af72034eebe65193345 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -145,7 +145,7 @@ class LLDispatchSetEstateExperience : public LLDispatchHandler
 		const LLUUID& invoice,
 		const sparam_t& strings);
 
-	LLSD getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count );
+	static LLSD getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count );
 };
 
 
@@ -2454,11 +2454,12 @@ bool LLDispatchSetEstateAccess::operator()(
 	return true;
 }
 
+// static
 LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_t::const_iterator end, S32 count )
 {
 	LLSD idList = LLSD::emptyArray();
 	LLUUID id;
-	while(count--> 0)
+	while (count-- > 0 && it < end)
 	{
 		memcpy(id.mData, (*(it++)).data(), UUID_BYTES);
 		idList.append(id);
@@ -2472,7 +2473,7 @@ LLSD LLDispatchSetEstateExperience::getIDs( sparam_t::const_iterator it, sparam_
 // strings[2] = str(num blocked)
 // strings[3] = str(num trusted)
 // strings[4] = str(num allowed)
-// strings[8] = bin(uuid) ...
+// strings[5] = bin(uuid) ...
 // ...
 bool LLDispatchSetEstateExperience::operator()(
 	const LLDispatcher* dispatcher,
@@ -2481,22 +2482,29 @@ bool LLDispatchSetEstateExperience::operator()(
 	const sparam_t& strings)
 {
 	LLPanelRegionExperiences* panel = LLFloaterRegionInfo::getPanelExperiences();
-	if (!panel) return true;
+	if (!panel)
+		return true;
+
+	const sparam_t::size_type MIN_SIZE = 5;
+	if (strings.size() < MIN_SIZE)
+		return true;
 
+	// Skip 2 parameters
 	sparam_t::const_iterator it = strings.begin();
 	++it; // U32 estate_id = strtol((*it).c_str(), NULL, 10);
 	++it; // U32 send_to_agent_only = strtoul((*(++it)).c_str(), NULL, 10);
 
+	// Read 3 parameters
 	S32 num_blocked = strtol((*(it++)).c_str(), NULL, 10);
 	S32 num_trusted = strtol((*(it++)).c_str(), NULL, 10);
 	S32 num_allowed = strtol((*(it++)).c_str(), NULL, 10);
 
 	LLSD ids = LLSD::emptyMap()
-		.with("blocked", getIDs(it,								strings.end(), num_blocked))
-		.with("trusted", getIDs(it + (num_blocked),				strings.end(), num_trusted))
-		.with("allowed", getIDs(it + (num_blocked+num_trusted),	strings.end(), num_allowed));
+		.with("blocked", getIDs(it, strings.end(), num_blocked))
+		.with("trusted", getIDs(it + num_blocked, strings.end(), num_trusted))
+		.with("allowed", getIDs(it + num_blocked + num_trusted, strings.end(), num_allowed));
 
-	panel->processResponse(ids);			
+	panel->processResponse(ids);
 
 	return true;
 }
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index f75554bb93456350d395000afbb67543ddc87b74..b96d372718d56659a2b628a1d0a178d420ea8ebd 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -76,14 +76,14 @@ void LLFloaterSidePanelContainer::closeFloater(bool app_quitting)
 			if (parent == this )
 			{
 				LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(mMainPanel);
-				if ( panel_appearance )
+			if ( panel_appearance )
 				{
 					LLPanelEditWearable *edit_wearable_ptr = panel_appearance->getWearable();
 					if (edit_wearable_ptr)
 					{
 						edit_wearable_ptr->onClose();
 					}
-					if(!app_quitting)
+				if(!app_quitting)
 					{
 						panel_appearance->showOutfitsInventoryPanel();
 					}
@@ -126,12 +126,17 @@ LLFloater* LLFloaterSidePanelContainer::getTopmostInventoryFloater()
 LLPanel* LLFloaterSidePanelContainer::openChildPanel(std::string_view panel_name, const LLSD& params)
 {
 	LLView* view = findChildView(panel_name, true);
-	if (!view) return NULL;
+	if (!view)
+		return NULL;
 
 	if (!getVisible())
 	{
 		openFloater();
 	}
+	else if (!hasFocus())
+	{
+		setFocus(TRUE);
+	}
 
 	LLPanel* panel = NULL;
 
diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp
index 20e5313843193b4a0372fd1b61f87aa85db0f092..b3ca0473ba6c00d28c64c0c11378dac31a427c72 100644
--- a/indra/newview/llhudnametag.cpp
+++ b/indra/newview/llhudnametag.cpp
@@ -910,6 +910,15 @@ void LLHUDNameTag::shift(const LLVector3& offset)
 	mPositionAgent += offset;
 }
 
+F32 LLHUDNameTag::getWorldHeight() const
+{
+	const LLViewerCamera* camera = LLViewerCamera::getInstance();
+	F32 height_meters = mLastDistance * (F32)tan(camera->getView() / 2.f);
+	F32 height_pixels = camera->getViewHeightInPixels() / 2.f;
+	F32 meters_per_pixel = height_meters / height_pixels;
+	return mHeight * meters_per_pixel * gViewerWindow->getDisplayScale().mV[VY];
+}
+
 //static 
 void LLHUDNameTag::addPickable(std::set<LLViewerObject*> &pick_list)
 {
diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h
index f825099fa192d690b13333495bdd9da3be7d0f35..0d72637dd5b648cfa3a41d7b9e357bdcb6d1e22c 100644
--- a/indra/newview/llhudnametag.h
+++ b/indra/newview/llhudnametag.h
@@ -127,11 +127,12 @@ class LLHUDNameTag final : public LLHUDObject
 	/*virtual*/ void markDead();
 	friend class LLHUDObject;
 	/*virtual*/ F32 getDistance() const { return mLastDistance; }
-	S32  getLOD() { return mLOD; }
-	BOOL getVisible() { return mVisible; }
+	S32  getLOD() const { return mLOD; }
+	BOOL getVisible() const { return mVisible; }
 	BOOL getHidden() const { return mHidden; }
 	void setHidden( BOOL hide ) { mHidden = hide; }
 	void shift(const LLVector3& offset);
+	F32 getWorldHeight() const;
 
 	BOOL lineSegmentIntersect(const LLVector4a& start, const LLVector4a& end, LLVector4a& intersection, BOOL debug_render = FALSE);
 
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 5669a473d5483aeab298c4d9aeccc28519da671d..2333b25e2a2a74e468cffe165fa56fb7c991dd1a 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -1905,7 +1905,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
 	}
 	else if ("show_in_main_panel" == action)
 	{
-		LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, mUUID, TRUE);
+		LLInventoryPanel::openInventoryPanelAndSetSelection(true, mUUID, true);
 		return;
 	}
 	else if ("cut" == action)
@@ -3644,7 +3644,7 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
 	}
 	else if ("show_in_main_panel" == action)
 	{
-		LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, mUUID, TRUE);
+		LLInventoryPanel::openInventoryPanelAndSetSelection(true, mUUID, true);
 		return;
 	}
 	else if ("cut" == action)
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 7c9df4e9f72ca98678a205528e95c58539389d62..6296283f42a5978b4791d032f75c9fd1cf560104 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2216,6 +2216,24 @@ void move_items_to_new_subfolder(const uuid_vec_t& selected_uuids, const std::st
     gInventory.createNewCategory(first_item->getParentUUID(), LLFolderType::FT_NONE, folder_name, func);
 }
 
+std::string get_category_path(LLUUID cat_id)
+{
+    LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
+    std::string localized_cat_name;
+    if (!LLTrans::findString(localized_cat_name, "InvFolder " + cat->getName()))
+    {
+        localized_cat_name = cat->getName();
+    }
+
+    if (cat->getParentUUID().notNull())
+    {
+        return get_category_path(cat->getParentUUID()) + " > " + localized_cat_name;
+    }
+    else
+    {
+        return localized_cat_name;
+    }
+}
 // Returns true if the item can be moved to Current Outfit or any outfit folder.
 bool can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit)
 {
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index c98db4bc44394b325c66960731ca643cdaa95118..111b68654ca92ecc97e7b4e27b4ca5c0603fd877 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -116,6 +116,7 @@ void move_items_to_new_subfolder(const uuid_vec_t& selected_uuids, const std::st
 void move_items_to_folder(const LLUUID& new_cat_uuid, const uuid_vec_t& selected_uuids);
 bool is_only_cats_selected(const uuid_vec_t& selected_uuids);
 bool is_only_items_selected(const uuid_vec_t& selected_uuids);
+std::string get_category_path(LLUUID cat_id);
 
 bool can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
 bool can_move_to_landmarks(LLInventoryItem* inv_item);
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
index 23129f7d441e1a38abe4e0ed076e64d71de63d16..cac859387cdd9f40a1f2a0bb9f1c5eedd414790c 100644
--- a/indra/newview/llinventoryitemslist.cpp
+++ b/indra/newview/llinventoryitemslist.cpp
@@ -240,7 +240,7 @@ void LLInventoryItemsList::refresh()
     case REFRESH_LIST_SORT:
         {
             // Filter, sort, rearrange and notify parent about shape changes
-            filterItems();
+            filterItems(true, true);
 
             if (mAddedItems.size() == 0)
             {
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index ce41105f989f28d3117ceb792e0f0f60848a8ad9..5b83298bb9a62a4904a93f4787582706fbcd7f51 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -51,20 +51,20 @@ class LLInventoryItemsList : public LLFlatListViewEx
 	/**
 	 * Let list know items need to be refreshed in next doIdle()
 	 */
-	void setNeedsRefresh(bool needs_refresh){ mRefreshState = needs_refresh ? REFRESH_ALL : REFRESH_COMPLETE; }
+	void setNeedsRefresh(bool needs_refresh) { mRefreshState = needs_refresh ? REFRESH_ALL : REFRESH_COMPLETE; }
 
-	U32 getNeedsRefresh(){ return mRefreshState; }
+	U32 getNeedsRefresh() { return mRefreshState; }
 
 	/**
 	 * Sets the flag indicating that the list needs to be refreshed even if it is
 	 * not currently visible.
 	 */
-	void setForceRefresh(bool force_refresh){ mForceRefresh = force_refresh; }
+	void setForceRefresh(bool force_refresh) { mForceRefresh = force_refresh; }
 
 	/**
 	* If refreshes when invisible.
 	*/
-	bool getForceRefresh(){ return mForceRefresh;  }
+	bool getForceRefresh() { return mForceRefresh; }
 
 	virtual bool selectItemByValue(const LLSD& value, bool select = true);
 
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 5078807e835774c68f56a768619146769ec5cf8a..8d6ec23f3a1ddc2d9177404b852e92024c8fe7f2 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -566,8 +566,12 @@ void LLInventoryAddItemByAssetObserver::changed(U32 mask)
 	for (uuid_set_t::iterator it = added.begin(); it != added.end(); ++it)
 	{
 		LLInventoryItem *item = gInventory.getItem(*it);
+        if (!item)
+        {
+            continue;
+        }
 		const LLUUID& asset_uuid = item->getAssetUUID();
-		if (item && item->getUUID().notNull() && asset_uuid.notNull())
+		if (item->getUUID().notNull() && asset_uuid.notNull())
 		{
 			if (isAssetWatched(asset_uuid))
 			{
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 934df2e21b5072ca4131c3aed3229611ab24af4f..4199d95966069e7403b524fe135e01226f82ca7b 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -1930,46 +1930,52 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
 }
 
 //static
-void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id, BOOL use_main_panel, BOOL take_keyboard_focus, BOOL reset_filter)
+void LLInventoryPanel::openInventoryPanelAndSetSelection(bool auto_open, const LLUUID& obj_id,
+	bool use_main_panel, bool take_keyboard_focus, bool reset_filter)
 {
 	LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
 	sidepanel_inventory->showInventoryPanel();
 
-	bool in_inbox = (gInventory.isObjectDescendentOf(obj_id, gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX)));
-
-	if (!in_inbox && (use_main_panel || !sidepanel_inventory->getMainInventoryPanel()->isRecentItemsPanelSelected()))
+	LLUUID cat_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX);
+	bool in_inbox = gInventory.isObjectDescendentOf(obj_id, cat_id);
+	if (!in_inbox && use_main_panel)
 	{
 		sidepanel_inventory->selectAllItemsPanel();
 	}
 
-    LLFloater* inventory_floater = LLFloaterSidePanelContainer::getTopmostInventoryFloater();
-    if(!auto_open && inventory_floater && inventory_floater->getVisible())
+    if (!auto_open)
     {
-        LLSidepanelInventory *inventory_panel = inventory_floater->findChild<LLSidepanelInventory>("main_panel");
-        LLPanelMainInventory* main_panel = inventory_panel->getMainInventoryPanel();
-        if(main_panel->isSingleFolderMode() && main_panel->isGalleryViewMode())
+        LLFloater* inventory_floater = LLFloaterSidePanelContainer::getTopmostInventoryFloater();
+        if (inventory_floater && inventory_floater->getVisible())
         {
-            LL_DEBUGS("Inventory") << "Opening gallery panel for item" << obj_id << LL_ENDL;
-            main_panel->setGallerySelection(obj_id);
-            return;
+            LLSidepanelInventory *inventory_panel = inventory_floater->findChild<LLSidepanelInventory>("main_panel");
+            LLPanelMainInventory* main_panel = inventory_panel->getMainInventoryPanel();
+            if (main_panel->isSingleFolderMode() && main_panel->isGalleryViewMode())
+            {
+                LL_DEBUGS("Inventory") << "Opening gallery panel for item" << obj_id << LL_ENDL;
+                main_panel->setGallerySelection(obj_id);
+                return;
+            }
         }
     }
 
-    LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
-    if (main_inventory && main_inventory->isSingleFolderMode()
-        && use_main_panel)
+    if (use_main_panel)
     {
-        const LLInventoryObject *obj = gInventory.getObject(obj_id);
-        if (obj)
+        LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
+        if (main_inventory && main_inventory->isSingleFolderMode())
         {
-            LL_DEBUGS("Inventory") << "Opening main inventory panel for item" << obj_id << LL_ENDL;
-            main_inventory->setSingleFolderViewRoot(obj->getParentUUID(), false);
-            main_inventory->setGallerySelection(obj_id);
-            return;
+            const LLInventoryObject *obj = gInventory.getObject(obj_id);
+            if (obj)
+            {
+                LL_DEBUGS("Inventory") << "Opening main inventory panel for item" << obj_id << LL_ENDL;
+                main_inventory->setSingleFolderViewRoot(obj->getParentUUID(), false);
+                main_inventory->setGallerySelection(obj_id);
+                return;
+            }
         }
     }
-	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
 
+	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
 	if (active_panel)
 	{
 		LL_DEBUGS("Messaging", "Inventory") << "Highlighting" << obj_id  << LL_ENDL;
@@ -1981,11 +1987,8 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L
 
 		if (in_inbox)
 		{
-			
-			LLInventoryPanel * inventory_panel = NULL;
 			sidepanel_inventory->openInbox();
-			inventory_panel = sidepanel_inventory->getInboxPanel();
-
+			LLInventoryPanel* inventory_panel = sidepanel_inventory->getInboxPanel();
 			if (inventory_panel)
 			{
 				inventory_panel->setSelection(obj_id, take_keyboard_focus);
@@ -2010,7 +2013,6 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L
 
 void LLInventoryPanel::setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id)
 {
-
     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)
     {
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 467e1a122689015880722477bb820c73e8fc2f98..d6adee6440b00a34fe4f322b0ff6378f3697de7b 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -246,12 +246,12 @@ class LLInventoryPanel : public LLPanel
 	// "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,
+	static void openInventoryPanelAndSetSelection(bool auto_open,
 													const LLUUID& obj_id,
-													BOOL use_main_panel = FALSE,
-													BOOL take_keyboard_focus = TAKE_FOCUS_YES,
-													BOOL reset_filter = FALSE);
-    static void setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id);
+													bool use_main_panel = false,
+													bool take_keyboard_focus = true,
+													bool reset_filter = false);
+	static void setSFViewAndOpenFolder(const LLInventoryPanel* panel, const LLUUID& folder_id);
 	void addItemID(const LLUUID& id, LLFolderViewItem* itemp);
 	void removeItemID(const LLUUID& id);
 	LLFolderViewItem* getItemByID(const LLUUID& id);
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 37452f4ccbed6c8d9acfb311660e41254e32638a..26fb706f18436e1f409976ebe750f985ca204fb2 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -1124,6 +1124,13 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)
 	LLImageDimensionsInfo image_info;
 	if (!image_info.load(filename,codec))
 	{
+        LLSD args;
+        args["NAME"] = gDirUtilp->getBaseFileName(filename);
+        if (!image_info.getWarningName().empty())
+        {
+            args["REASON"] = LLTrans::getString(image_info.getWarningName());
+        }
+        LLNotificationsUtil::add("CannotUploadTexture", args);
 		return false;
 	}
 
@@ -1136,6 +1143,7 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)
 
 		LLSD notif_args;
 		notif_args["REASON"] = mImageLoadError;
+        notif_args["NAME"] = gDirUtilp->getBaseFileName(filename);
 		LLNotificationsUtil::add("CannotUploadTexture", notif_args);
 
 		return false;
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 20dd664b1028bf87971302ebbd221169810ddcad..ec296447863406148044bf02c047ed1ad0f15155 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -5508,7 +5508,7 @@ void on_new_single_inventory_upload_complete(
         }
         else
         {
-            LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, server_response["new_inventory_item"].asUUID(), TRUE, TAKE_FOCUS_NO, TRUE);
+            LLInventoryPanel::openInventoryPanelAndSetSelection(true, server_response["new_inventory_item"].asUUID(), true, false, true);
         }
 
         // restore keyboard focus
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index 1bed4977f1ff5c56434498bdda75fad7054bdb4a..a5a3755663b2cc83a89960eb9aba94c0329441a5 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -249,7 +249,7 @@ void LLModelPreview::updateDimentionsAndOffsets()
         {
             accounted.insert(instance.mModel);
 
-            //update instance skin info for each lods pelvisZoffset 
+            // update instance skin info for each lods pelvisZoffset
             for (int j = 0; j<LLModel::NUM_LODS; ++j)
             {
                 if (instance.mLOD[j])
@@ -271,6 +271,7 @@ void LLModelPreview::rebuildUploadData()
 {
     assert_main_thread();
 
+    mDefaultPhysicsShapeP = NULL;
     mUploadData.clear();
     mTextureSet.clear();
 
@@ -310,7 +311,7 @@ void LLModelPreview::rebuildUploadData()
         mat *= scale_mat;
 
         for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end();)
-        { //for each instance with said transform applied 
+        { // for each instance with said transform applied
             LLModelInstance instance = *model_iter++;
 
             LLModel* base_model = instance.mModel;
@@ -573,7 +574,7 @@ void LLModelPreview::rebuildUploadData()
     else if (getLoadState() == LLModelLoader::ERROR_MATERIALS
              || getLoadState() == LLModelLoader::WARNING_BIND_SHAPE_ORIENTATION)
     {
-        // This is only valid for these two error types because they are 
+        // This is only valid for these two error types because they are
         // only used inside rebuildUploadData() and updateStatusMessages()
         // updateStatusMessages() is called after rebuildUploadData()
         setLoadState(LLModelLoader::DONE);
@@ -798,7 +799,7 @@ void LLModelPreview::loadModel(std::string filename, S32 lod, bool force_disable
         // it tends to force the UI into strange checkbox options
         // which cannot be altered.
 
-        //only try to load from slm if viewer is configured to do so and this is the 
+        //only try to load from slm if viewer is configured to do so and this is the
         //initial model load (not an LoD or physics shape)
         mModelLoader->mTrySLM = gSavedSettings.getBOOL("MeshImportUseSLM") && mUploadData.empty();
     }
@@ -884,12 +885,13 @@ void LLModelPreview::clearIncompatible(S32 lod)
 
         // Check if already started
         bool subscribe_for_generation = mLodsQuery.empty();
-        
+
         // Remove previously scheduled work
         mLodsQuery.clear();
 
         LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance;
-        if (!fmp) return;
+        if (!fmp)
+            return;
 
         // Schedule new work
         for (S32 i = LLModel::LOD_HIGH; i >= 0; --i)
@@ -1721,7 +1723,7 @@ F32 LLModelPreview::genMeshOptimizerPerFace(LLModel *base_model, LLModel *target
 
     ll_aligned_free_16(output_indices);
     ll_aligned_free_16(shadow_indices);
-     
+
     if (size_new_indices < 3)
     {
         // At least one triangle is needed
@@ -1914,7 +1916,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
                 {
                     precise_ratio = genMeshOptimizerPerModel(base, target_model, indices_decimator, lod_error_threshold, MESH_OPTIMIZER_NO_UVS);
                 }
-                
+
                 if (precise_ratio < 0 || (precise_ratio * allowed_ratio_drift < indices_decimator))
                 {
                     // Try sloppy variant if normal one failed to simplify model enough.
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index bbbb58a05f757e2f00adca4cef27dd8e39f49823..1ba6886b46033606bc09c8e11345e61ad91bd47a 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -431,8 +431,7 @@ bool compareGalleryItem(LLOutfitGalleryItem* item1, LLOutfitGalleryItem* item2)
 }
 
 void LLOutfitGallery::reArrangeRows(S32 row_diff)
-{
- 
+{ 
     std::vector<LLOutfitGalleryItem*> buf_items = mItems;
     for (std::vector<LLOutfitGalleryItem*>::const_reverse_iterator it = buf_items.rbegin(); it != buf_items.rend(); ++it)
     {
@@ -444,16 +443,24 @@ void LLOutfitGallery::reArrangeRows(S32 row_diff)
     }
     mHiddenItems.clear();
     
-    mItemsInRow+= row_diff;
+    mItemsInRow += row_diff;
     updateGalleryWidth();
     std::sort(buf_items.begin(), buf_items.end(), compareGalleryItem);
-    
+
+    std::string cur_filter = getFilterSubString();
+    LLStringUtil::toUpper(cur_filter);
+
     for (std::vector<LLOutfitGalleryItem*>::const_iterator it = buf_items.begin(); it != buf_items.end(); ++it)
     {
-    	(*it)->setHidden(false);
-    	applyFilter(*it,sFilterSubString);
+        std::string outfit_name = (*it)->getItemName();
+        LLStringUtil::toUpper(outfit_name);
+
+        bool hidden = (std::string::npos == outfit_name.find(cur_filter));
+        (*it)->setHidden(hidden);
+
     	addToGallery(*it);
     }
+
     updateMessageVisibility();
 }
 
@@ -723,9 +730,9 @@ LLOutfitGallery::~LLOutfitGallery()
     }
 }
 
-void LLOutfitGallery::setFilterSubString(const std::string& string)
+// virtual
+void LLOutfitGallery::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)
 {
-    sFilterSubString = string;
     reArrangeRows();
 }
 
@@ -744,20 +751,6 @@ void LLOutfitGallery::onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id)
     }
 }
 
-void LLOutfitGallery::applyFilter(LLOutfitGalleryItem* item, const std::string& filter_substring)
-{
-    if (!item) return;
-
-    std::string outfit_name = item->getItemName();
-    LLStringUtil::toUpper(outfit_name);
-
-    std::string cur_filter = filter_substring;
-    LLStringUtil::toUpper(cur_filter);
-
-    bool hidden = (std::string::npos == outfit_name.find(cur_filter));
-    item->setHidden(hidden);
-}
-
 void LLOutfitGallery::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)
 {
 }
@@ -907,11 +900,11 @@ bool LLOutfitGallery::hasDefaultImage(const LLUUID& outfit_cat_id)
 
 void LLOutfitGallery::updateMessageVisibility()
 {
-    if(mItems.empty())
+    if (mItems.empty())
     {
         mMessageTextBox->setVisible(TRUE);
         mScrollPanel->setVisible(FALSE);
-        std::string message = sFilterSubString.empty()? getString("no_outfits_msg") : getString("no_matched_outfits_msg");
+        std::string message = getString(getFilterSubString().empty() ? "no_outfits_msg" : "no_matched_outfits_msg");
         mMessageTextBox->setValue(message);
     }
     else
@@ -1107,8 +1100,11 @@ bool LLOutfitGalleryItem::openOutfitsContent()
             {
                 outfit_list->setSelectedOutfitByUUID(mUUID);
                 LLAccordionCtrlTab* tab = accordion->getSelectedTab();
-                tab->showAndFocusHeader();
-                return true;
+                if (tab)
+                {
+                    tab->showAndFocusHeader();
+                    return true;
+                }
             }
         }
     }
diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h
index 9883bad5b655dac27ac04daadd52775b2cd0f7d6..549602bac8fc62c6abd222a346e41ec4a47631d4 100644
--- a/indra/newview/lloutfitgallery.h
+++ b/indra/newview/lloutfitgallery.h
@@ -90,7 +90,7 @@ class LLOutfitGallery : public LLOutfitListBase
     void wearSelectedOutfit();
 
 
-    /*virtual*/ void setFilterSubString(const std::string& string);
+    /*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);
 
     /*virtual*/ void getCurrentCategories(uuid_vec_t& vcur);
     /*virtual*/ void updateAddedCategory(LLUUID cat_id);
@@ -117,8 +117,6 @@ class LLOutfitGallery : public LLOutfitListBase
     /*virtual*/ void onExpandAllFolders() {}
     /*virtual*/ LLOutfitListGearMenuBase* createGearMenu();
 
-    void applyFilter(LLOutfitGalleryItem* item, const std::string& filter_substring);
-
 private:
     LLUUID getPhotoAssetId(const LLUUID& outfit_id);
     LLUUID getDefaultPhoto();
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index e995a45542c85dec8ea7d69c4a8246699beca1a6..79ced1ce75c5d862e79d17ae06ca2238da1bea4c 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -189,7 +189,7 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)
     list->setCommitCallback(boost::bind(&LLOutfitsList::onListSelectionChange, this, _1));
 
     // Setting list refresh callback to apply filter on list change.
-    list->setRefreshCompleteCallback(boost::bind(&LLOutfitsList::onFilteredWearableItemsListRefresh, this, _1));
+    list->setRefreshCompleteCallback(boost::bind(&LLOutfitsList::onRefreshComplete, this, _1));
 
     list->setRightMouseDownCallback(boost::bind(&LLOutfitsList::onWearableItemsListRightClick, this, _1, _2, _3));
 
@@ -200,19 +200,17 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)
     // Further list updates will be triggered by the category observer.
     list->updateList(cat_id);
 
-    // If filter is currently applied we store the initial tab state and
-    // open it to show matched items if any.
-    if (!sFilterSubString.empty())
+    // If filter is currently applied we store the initial tab state.
+    if (!getFilterSubString().empty())
     {
         tab->notifyChildren(LLSD().with("action", "store_state"));
-        tab->setDisplayChildren(true);
 
         // Setting mForceRefresh flag will make the list refresh its contents
         // even if it is not currently visible. This is required to apply the
         // filter to the newly added list.
         list->setForceRefresh(true);
 
-        list->setFilterSubString(sFilterSubString);
+        list->setFilterSubString(getFilterSubString(), false);
     }
 }
 
@@ -313,14 +311,6 @@ void LLOutfitsList::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)
     }
 }
 
-// virtual
-void LLOutfitsList::setFilterSubString(const std::string& string)
-{
-	applyFilter(string);
-
-	sFilterSubString = string;
-}
-
 // virtual
 bool LLOutfitListBase::isActionEnabled(const LLSD& userdata)
 {
@@ -486,9 +476,9 @@ void LLOutfitsList::restoreOutfitSelection(LLAccordionCtrlTab* tab, const LLUUID
 	}
 }
 
-void LLOutfitsList::onFilteredWearableItemsListRefresh(LLUICtrl* ctrl)
+void LLOutfitsList::onRefreshComplete(LLUICtrl* ctrl)
 {
-	if (!ctrl || sFilterSubString.empty())
+	if (!ctrl || getFilterSubString().empty())
 		return;
 
     for (const auto& outfit_pair : mOutfitsMap)
@@ -499,54 +489,50 @@ void LLOutfitsList::onFilteredWearableItemsListRefresh(LLUICtrl* ctrl)
 		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());
 		if (list != ctrl) continue;
 
-		applyFilterToTab(outfit_pair.first, tab, sFilterSubString);
+		applyFilterToTab(outfit_pair.first, tab, getFilterSubString());
 	}
 }
 
-void LLOutfitsList::applyFilter(const std::string& new_filter_substring)
+// virtual
+void LLOutfitsList::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)
 {
-	mAccordion->setFilterSubString(new_filter_substring);
+	mAccordion->setFilterSubString(new_string);
 
-    for (const auto& outfit_pair : mOutfitsMap)
+	outfits_map_t::iterator iter = mOutfitsMap.begin(), iter_end = mOutfitsMap.end();
+	while (iter != iter_end)
 	{
-		LLAccordionCtrlTab* tab = outfit_pair.second;
+		const LLUUID& category_id = iter->first;
+		LLAccordionCtrlTab* tab = iter++->second;
 		if (!tab) continue;
 
-		bool more_restrictive = sFilterSubString.size() < new_filter_substring.size() && !new_filter_substring.substr(0, sFilterSubString.size()).compare(sFilterSubString);
-
-		// Restore tab visibility in case of less restrictive filter
-		// to compare it with updated string if it was previously hidden.
-		if (!more_restrictive)
-		{
-			tab->setVisible(TRUE);
-		}
-
 		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());
 		if (list)
 		{
-			list->setFilterSubString(new_filter_substring);
+			list->setFilterSubString(new_string, tab->getDisplayChildren());
 		}
 
-		if(sFilterSubString.empty() && !new_filter_substring.empty())
+		if (old_string.empty())
 		{
-			//store accordion tab state when filter is not empty
-			tab->notifyChildren(LLSD().with("action","store_state"));
+			// Store accordion tab state when filter is not empty
+			tab->notifyChildren(LLSD().with("action", "store_state"));
 		}
 
-		if (!new_filter_substring.empty())
+		if (!new_string.empty())
 		{
-			applyFilterToTab(outfit_pair.first, tab, new_filter_substring);
+			applyFilterToTab(category_id, tab, new_string);
 		}
 		else
 		{
-			// restore tab title when filter is empty
+			tab->setVisible(TRUE);
+
+			// Restore tab title when filter is empty
 			tab->setTitle(tab->getTitle());
 
-			//restore accordion state after all those accodrion tab manipulations
-			tab->notifyChildren(LLSD().with("action","restore_state"));
+			// Restore accordion state after all those accodrion tab manipulations
+			tab->notifyChildren(LLSD().with("action", "restore_state"));
 
 			// Try restoring the tab selection.
-			restoreOutfitSelection(tab, outfit_pair.first);
+			restoreOutfitSelection(tab, category_id);
 		}
 	}
 
@@ -572,11 +558,11 @@ void LLOutfitsList::applyFilterToTab(
 
 	if (std::string::npos == title.find(cur_filter))
 	{
-		// hide tab if its title doesn't pass filter
-		// and it has no visible items
+		// Hide tab if its title doesn't pass filter
+		// and it has no matched items
 		tab->setVisible(list->hasMatchedItems());
 
-		// remove title highlighting because it might
+		// Remove title highlighting because it might
 		// have been previously highlighted by less restrictive filter
 		tab->setTitle(tab->getTitle());
 
@@ -588,18 +574,6 @@ void LLOutfitsList::applyFilterToTab(
 		// Try restoring the tab selection.
 		restoreOutfitSelection(tab, category_id);
 	}
-
-	if (tab->getVisible())
-	{
-		// Open tab if it has passed the filter.
-		tab->setDisplayChildren(true);
-	}
-	else
-	{
-		// Set force refresh flag to refresh not visible list
-		// when some changes occur in it.
-		list->setForceRefresh(true);
-	}
 }
 
 bool LLOutfitsList::canWearSelected()
@@ -684,11 +658,10 @@ void LLOutfitsList::onCOFChanged()
 	// These links UUIDs are not the same UUIDs that we have in each wearable items list.
 	// So we collect base items' UUIDs to find them or links that point to them in wearable
 	// items lists and update their worn state there.
-	for (LLInventoryModel::item_array_t::const_iterator iter = item_array.begin();
-		iter != item_array.end();
-		++iter)
+	LLInventoryModel::item_array_t::const_iterator array_iter = item_array.begin(), array_end = item_array.end();
+	while (array_iter < array_end)
 	{
-		vnew.push_back((*iter)->getLinkedUUID());
+		vnew.push_back((*(array_iter++))->getLinkedUUID());
 	}
 
 	// We need to update only items that were added or removed from COF.
@@ -697,18 +670,20 @@ void LLOutfitsList::onCOFChanged()
 	// Store the ids of items currently linked from COF.
 	mCOFLinkedItems = vnew;
 
-    for (const auto& outfit_pair : mOutfitsMap)
+	// Append removed ids to added ids because we should update all of them.
+	vadded.reserve(vadded.size() + vremoved.size());
+	vadded.insert(vadded.end(), vremoved.begin(), vremoved.end());
+	vremoved.clear();
+
+	outfits_map_t::iterator map_iter = mOutfitsMap.begin(), map_end = mOutfitsMap.end();
+	while (map_iter != map_end)
 	{
-		LLAccordionCtrlTab* tab = outfit_pair.second;
+		LLAccordionCtrlTab* tab = (map_iter++)->second;
 		if (!tab) continue;
 
 		LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(tab->getAccordionView());
 		if (!list) continue;
 
-		// Append removed ids to added ids because we should update all of them.
-		vadded.reserve(vadded.size() + vremoved.size());
-		vadded.insert(vadded.end(), vremoved.begin(), vremoved.end());
-
 		// Every list updates the labels of changed items  or
 		// the links that point to these items.
 		list->updateChangedItems(vadded);
@@ -818,7 +793,6 @@ void LLOutfitListBase::onOpen(const LLSD& info)
         // arrive.
         category->fetch();
         refreshList(outfits);
-        highlightBaseOutfit();
 
         mIsInitialized = true;
     }
@@ -826,6 +800,9 @@ void LLOutfitListBase::onOpen(const LLSD& info)
 
 void LLOutfitListBase::refreshList(const LLUUID& category_id)
 {
+    bool wasNull = mRefreshListState.CategoryUUID.isNull();
+    mRefreshListState.CategoryUUID.setNull();
+
     LLInventoryModel::cat_array_t cat_array;
     LLInventoryModel::item_array_t item_array;
 
@@ -838,34 +815,90 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)
         LLInventoryModel::EXCLUDE_TRASH,
         is_category);
 
-    uuid_vec_t vadded;
-    uuid_vec_t vremoved;
-
-    // Create added and removed items vectors.
-    computeDifference(cat_array, vadded, vremoved);
+    // Memorize item names for each UUID
+    std::map<LLUUID, std::string> names;
+    for (const LLPointer<LLViewerInventoryCategory>& cat : cat_array)
+    {
+        names.emplace(std::make_pair(cat->getUUID(), cat->getName()));
+    }
 
+    // Fill added and removed items vectors.
+    mRefreshListState.Added.clear();
+    mRefreshListState.Removed.clear();
+    computeDifference(cat_array, mRefreshListState.Added, mRefreshListState.Removed);
+    // Sort added items vector by item name.
+    std::sort(mRefreshListState.Added.begin(), mRefreshListState.Added.end(),
+        [names](const LLUUID& a, const LLUUID& b)
+        {
+            return LLStringUtil::compareDict(names.at(a), names.at(b)) < 0;
+        });
+    // Initialize iterators for added and removed items vectors.
+    mRefreshListState.AddedIterator = mRefreshListState.Added.begin();
+    mRefreshListState.RemovedIterator = mRefreshListState.Removed.begin();
+
+    LL_INFOS() << "added: " << mRefreshListState.Added.size() <<
+        ", removed: " << mRefreshListState.Removed.size() <<
+        ", changed: " << gInventory.getChangedIDs().size() <<
+        LL_ENDL;
+
+    mRefreshListState.CategoryUUID = category_id;
+    if (wasNull)
+    {
+        gIdleCallbacks.addFunction(onIdle, this);
+    }
+	
 	{
 		std::string count_string;
 		LLLocale locale("");
 		LLResMgr::getInstance()->getIntegerString(count_string, (S32)cat_array.size());
 		getChild<LLTextBox>("OutfitcountText")->setTextArg("COUNT", count_string);
 	}
+}
+
+// static
+void LLOutfitListBase::onIdle(void* userdata)
+{
+    LLOutfitListBase* self = (LLOutfitListBase*)userdata;
+
+    self->onIdleRefreshList();
+}
+
+void LLOutfitListBase::onIdleRefreshList()
+{
+    if (mRefreshListState.CategoryUUID.isNull())
+        return;
+
+    const F64 MAX_TIME = 0.05f;
+    F64 curent_time = LLTimer::getTotalSeconds();
+    const F64 end_time = curent_time + MAX_TIME;
+
+
 
     // Handle added tabs.
-    for (uuid_vec_t::const_iterator iter = vadded.begin();
-        iter != vadded.end();
-        ++iter)
+    while (mRefreshListState.AddedIterator < mRefreshListState.Added.end())
     {
-        const LLUUID cat_id = (*iter);
+        const LLUUID cat_id = (*mRefreshListState.AddedIterator++);
         updateAddedCategory(cat_id);
+
+        curent_time = LLTimer::getTotalSeconds();
+        if (curent_time >= end_time)
+            return;
     }
+    mRefreshListState.Added.clear();
+    mRefreshListState.AddedIterator = mRefreshListState.Added.end();
 
     // Handle removed tabs.
-    for (uuid_vec_t::const_iterator iter = vremoved.begin(); iter != vremoved.end(); ++iter)
+    while (mRefreshListState.RemovedIterator < mRefreshListState.Removed.end())
     {
-        const LLUUID cat_id = (*iter);
+        const LLUUID cat_id = (*mRefreshListState.RemovedIterator++);
         updateRemovedCategory(cat_id);
+
+        curent_time = LLTimer::getTotalSeconds();
+        if (curent_time >= end_time)
+            return;
     }
+    mRefreshListState.Removed.clear();
+    mRefreshListState.RemovedIterator = mRefreshListState.Removed.end();
 
     // Get changed items from inventory model and update outfit tabs
     // which might have been renamed.
@@ -878,9 +911,9 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)
         if (!cat)
         {
             LLInventoryObject* obj = gInventory.getObject(*items_iter);
-            if(!obj || (obj->getType() != LLAssetType::AT_CATEGORY))
+            if (!obj || (obj->getType() != LLAssetType::AT_CATEGORY))
             {
-                return;
+                break;
             }
             cat = (LLViewerInventoryCategory*)obj;
         }
@@ -890,6 +923,12 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)
     }
 
     sortOutfits();
+    highlightBaseOutfit();
+
+    gIdleCallbacks.deleteFunction(onIdle, this);
+    mRefreshListState.CategoryUUID.setNull();
+
+    LL_INFOS() << "done" << LL_ENDL;
 }
 
 void LLOutfitListBase::computeDifference(
@@ -926,7 +965,6 @@ void LLOutfitListBase::highlightBaseOutfit()
         mHighlightedOutfitUUID = base_id;
         onHighlightBaseOutfit(base_id, prev_id);
     }
-
 }
 
 void LLOutfitListBase::removeSelected()
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
index 221a0b8c52979f47b4851b5e53cefb628d360c6f..e1bd2492b1444dd264fdabc6df9064ba7a87e228 100644
--- a/indra/newview/lloutfitslist.h
+++ b/indra/newview/lloutfitslist.h
@@ -119,8 +119,20 @@ class LLOutfitListBase : public LLPanelAppearanceTab
     void onOutfitsRemovalConfirmation(const LLSD& notification, const LLSD& response);
     virtual void onChangeOutfitSelection(LLWearableItemsList* list, const LLUUID& category_id) = 0;
 
+    static void onIdle(void* userdata);
+    void onIdleRefreshList();
+
+    struct
+    {
+        LLUUID						CategoryUUID;
+        uuid_vec_t					Added;
+        uuid_vec_t					Removed;
+        uuid_vec_t::const_iterator	AddedIterator;
+        uuid_vec_t::const_iterator	RemovedIterator;
+    } mRefreshListState;
+
     bool                            mIsInitialized;
-    LLInventoryCategoriesObserver* 	mCategoriesObserver;    
+    LLInventoryCategoriesObserver* 	mCategoriesObserver;
     LLUUID							mSelectedOutfitUUID;
     // id of currently highlited outfit
     LLUUID							mHighlightedOutfitUUID;
@@ -229,7 +241,7 @@ class LLOutfitsList : public LLOutfitListBase
 	//void performAction(std::string action);
 
 
-	/*virtual*/ void setFilterSubString(const std::string& string);
+	/*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);
 
 	/*virtual*/ void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const;
 
@@ -299,12 +311,7 @@ class LLOutfitsList : public LLOutfitListBase
 	 * Called upon list refresh event to update tab visibility depending on
 	 * the results of applying filter to the title and list items of the tab.
 	 */
-	void onFilteredWearableItemsListRefresh(LLUICtrl* ctrl);
-
-	/**
-	 * Highlights filtered items and hides tabs which haven't passed filter.
-	 */
-	void applyFilter(const std::string& new_filter_substring);
+	void onRefreshComplete(LLUICtrl* ctrl);
 
 	/**
 	 * Applies filter to the given tab
diff --git a/indra/newview/llpanelappearancetab.cpp b/indra/newview/llpanelappearancetab.cpp
index fdb331163b2c8e1487c143a4ec8657485cace9ce..81a6cf082aabc1d6ed6e7bbbb24844ee754f2a05 100644
--- a/indra/newview/llpanelappearancetab.cpp
+++ b/indra/newview/llpanelappearancetab.cpp
@@ -28,7 +28,6 @@
 
 #include "llpanelappearancetab.h"
 
-
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "llviewerinventory.h"
@@ -37,7 +36,31 @@
 #include "rlvhandler.h"
 // [/RLVa:KB]
 
-//virtual
+std::string LLPanelAppearanceTab::sRecentFilterSubString;
+
+void LLPanelAppearanceTab::setFilterSubString(const std::string& new_string)
+{
+    if (new_string != mFilterSubString)
+    {
+        std::string old_string = mFilterSubString;
+        mFilterSubString = new_string;
+        onFilterSubStringChanged(mFilterSubString, old_string);
+    }
+
+    sRecentFilterSubString = new_string;
+}
+
+void LLPanelAppearanceTab::checkFilterSubString()
+{
+    if (sRecentFilterSubString != mFilterSubString)
+    {
+        std::string old_string = mFilterSubString;
+        mFilterSubString = sRecentFilterSubString;
+        onFilterSubStringChanged(mFilterSubString, old_string);
+    }
+}
+
+// virtual
 bool LLPanelAppearanceTab::canTakeOffSelected()
 {
 	uuid_vec_t selected_uuids;
diff --git a/indra/newview/llpanelappearancetab.h b/indra/newview/llpanelappearancetab.h
index 2ed6b004977009cad0e13242f8acc6adde2c45e9..e81394dd3ce989f4caf9aa2d89d42bf68b37bf9b 100644
--- a/indra/newview/llpanelappearancetab.h
+++ b/indra/newview/llpanelappearancetab.h
@@ -35,13 +35,17 @@ class LLPanelAppearanceTab : public LLPanel
 	LLPanelAppearanceTab() : LLPanel() {}
 	virtual ~LLPanelAppearanceTab() {}
 
-	virtual void setFilterSubString(const std::string& string) = 0;
+	void setFilterSubString(const std::string& new_string);
+
+    void checkFilterSubString();
+
+    virtual void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string) = 0;
 
 	virtual bool isActionEnabled(const LLSD& userdata) = 0;
 
 	virtual void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const {}
 
-	static const std::string& getFilterSubString() { return sFilterSubString; }
+	const std::string& getFilterSubString() { return mFilterSubString; }
 
 protected:
 
@@ -50,7 +54,10 @@ class LLPanelAppearanceTab : public LLPanel
 	 */
 	bool canTakeOffSelected();
 
-	static std::string		sFilterSubString;
+private:
+    std::string mFilterSubString;
+
+    static std::string sRecentFilterSubString;
 };
 
 #endif //LL_LLPANELAPPEARANCETAB_H
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 6d431d64a405cdea7838f3cc5b1da7f95f519e4f..f5d3639cac6c9b617c6a672fe631ce052ed0dca2 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -99,7 +99,7 @@ enum ESubpart {
         SUBPART_SKIRT,
         SUBPART_ALPHA,
         SUBPART_TATTOO,
-		SUBPART_UNIVERSAL,
+        SUBPART_UNIVERSAL,
         SUBPART_PHYSICS_BREASTS_UPDOWN,
         SUBPART_PHYSICS_BREASTS_INOUT,
         SUBPART_PHYSICS_BREASTS_LEFTRIGHT,
@@ -122,7 +122,7 @@ class LLEditWearableDictionary final : public LLSingleton<LLEditWearableDictiona
         //--------------------------------------------------------------------
         LLSINGLETON(LLEditWearableDictionary);
         virtual ~LLEditWearableDictionary();
-        
+
         //--------------------------------------------------------------------
         // Wearable Types
         //--------------------------------------------------------------------
@@ -216,7 +216,6 @@ class LLEditWearableDictionary final : public LLSingleton<LLEditWearableDictiona
 
 LLEditWearableDictionary::LLEditWearableDictionary()
 {
-
 }
 
 //virtual 
@@ -229,23 +228,23 @@ LLEditWearableDictionary::Wearables::Wearables()
         // note the subpart that is listed first is treated as "default", regardless of what order is in enum.
         // Please match the order presented in XUI. -Nyx
         // this will affect what camera angle is shown when first editing a wearable
-        addEntry(LLWearableType::WT_SHAPE,              new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS}));
-        addEntry(LLWearableType::WT_SKIN,               new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL}));
-        addEntry(LLWearableType::WT_HAIR,               new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL}));
-        addEntry(LLWearableType::WT_EYES,               new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES}));
-        addEntry(LLWearableType::WT_SHIRT,              new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT}));
-        addEntry(LLWearableType::WT_PANTS,              new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS}));
-        addEntry(LLWearableType::WT_SHOES,              new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES}));
-        addEntry(LLWearableType::WT_SOCKS,              new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS}));
+        addEntry(LLWearableType::WT_SHAPE,      new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS}));
+        addEntry(LLWearableType::WT_SKIN,       new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL}));
+        addEntry(LLWearableType::WT_HAIR,       new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL}));
+        addEntry(LLWearableType::WT_EYES,       new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES}));
+        addEntry(LLWearableType::WT_SHIRT,      new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT}));
+        addEntry(LLWearableType::WT_PANTS,      new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS}));
+        addEntry(LLWearableType::WT_SHOES,      new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES}));
+        addEntry(LLWearableType::WT_SOCKS,      new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS}));
         addEntry(LLWearableType::WT_JACKET,     new WearableEntry(LLWearableType::WT_JACKET,"edit_jacket_title","jacket_desc_text", texture_vec_t{TEX_UPPER_JACKET}, texture_vec_t{TEX_UPPER_JACKET, TEX_LOWER_JACKET}, subpart_vec_t{SUBPART_JACKET}));
         addEntry(LLWearableType::WT_GLOVES,     new WearableEntry(LLWearableType::WT_GLOVES,"edit_gloves_title","gloves_desc_text", texture_vec_t{TEX_UPPER_GLOVES}, texture_vec_t{TEX_UPPER_GLOVES}, subpart_vec_t{SUBPART_GLOVES}));
         addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry(LLWearableType::WT_UNDERSHIRT,"edit_undershirt_title","undershirt_desc_text", texture_vec_t{TEX_UPPER_UNDERSHIRT}, texture_vec_t{TEX_UPPER_UNDERSHIRT}, subpart_vec_t{SUBPART_UNDERSHIRT}));
         addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry(LLWearableType::WT_UNDERPANTS,"edit_underpants_title","underpants_desc_text", texture_vec_t{TEX_LOWER_UNDERPANTS}, texture_vec_t{TEX_LOWER_UNDERPANTS}, subpart_vec_t{SUBPART_UNDERPANTS}));
-        addEntry(LLWearableType::WT_SKIRT,              new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT}));
-        addEntry(LLWearableType::WT_ALPHA,              new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA}));
+        addEntry(LLWearableType::WT_SKIRT,      new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT}));
+        addEntry(LLWearableType::WT_ALPHA,      new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA}));
         addEntry(LLWearableType::WT_TATTOO,     new WearableEntry(LLWearableType::WT_TATTOO,"edit_tattoo_title","tattoo_desc_text", texture_vec_t{TEX_HEAD_TATTOO}, texture_vec_t{TEX_LOWER_TATTOO, TEX_UPPER_TATTOO, TEX_HEAD_TATTOO}, subpart_vec_t{SUBPART_TATTOO}));
-		addEntry(LLWearableType::WT_UNIVERSAL, new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL }));
-		addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS,"edit_physics_title","physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED}));
+        addEntry(LLWearableType::WT_UNIVERSAL,  new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL }));
+        addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS, "edit_physics_title", "physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{ SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED }));
 }
 
 LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType type,
@@ -261,52 +260,59 @@ LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType typ
         mSubparts(subparts),
         mColorSwatchCtrls(color_swatches),
         mTextureCtrls(texture_pickers)
-{}
+{
+}
 
 LLEditWearableDictionary::Subparts::Subparts()
 {
-        addEntry(SUBPART_SHAPE_WHOLE, new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_HEAD, new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_EYES, new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_EARS, new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_NOSE, new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_MOUTH, new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_CHIN, new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_TORSO, new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
-        addEntry(SUBPART_SHAPE_LEGS, new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
-
-        addEntry(SUBPART_SKIN_COLOR, new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        // WT_SHAPE
+        addEntry(SUBPART_SHAPE_WHOLE,     new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_HEAD,      new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_EYES,      new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_EARS,      new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_NOSE,      new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_MOUTH,     new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_CHIN,      new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_TORSO,     new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
+        addEntry(SUBPART_SHAPE_LEGS,      new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+
+        // WT_SKIN
+        addEntry(SUBPART_SKIN_COLOR,      new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
         addEntry(SUBPART_SKIN_FACEDETAIL, new SubpartEntry(SUBPART_SKIN_FACEDETAIL, "mHead", "skin_facedetail", "skin_face_param_list", "skin_face_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_SKIN_MAKEUP, new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_SKIN_MAKEUP,     new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
         addEntry(SUBPART_SKIN_BODYDETAIL, new SubpartEntry(SUBPART_SKIN_BODYDETAIL, "mPelvis", "skin_bodydetail", "skin_body_param_list", "skin_body_tab", LLVector3d(0.f, 0.f, -0.2f), LLVector3d(-2.5f, 0.5f, 0.5f),SEX_BOTH));
 
-        addEntry(SUBPART_HAIR_COLOR, new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH));
-        addEntry(SUBPART_HAIR_STYLE, new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH));
-        addEntry(SUBPART_HAIR_EYEBROWS, new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-        addEntry(SUBPART_HAIR_FACIAL, new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE));
-
-        addEntry(SUBPART_EYES, new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
-
-        addEntry(SUBPART_SHIRT, new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
-        addEntry(SUBPART_PANTS, new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
-        addEntry(SUBPART_SHOES, new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
-        addEntry(SUBPART_SOCKS, new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
-        addEntry(SUBPART_JACKET, new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH));
-        addEntry(SUBPART_SKIRT, new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
-        addEntry(SUBPART_GLOVES, new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH));
-        addEntry(SUBPART_UNDERSHIRT, new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
-        addEntry(SUBPART_UNDERPANTS, new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+        // WT_HAIR
+        addEntry(SUBPART_HAIR_COLOR,      new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH));
+        addEntry(SUBPART_HAIR_STYLE,      new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f), SEX_BOTH));
+        addEntry(SUBPART_HAIR_EYEBROWS,   new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+        addEntry(SUBPART_HAIR_FACIAL,     new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE));
+
+        // WT_EYES
+        addEntry(SUBPART_EYES,            new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));
+
+        // WT_SHIRT, WT_PANTS, WT_SHOES, WT_SOCKS, WT_JACKET, WT_GLOVES, WT_UNDERSHIRT, WT_UNDERPANTS, WT_SKIRT, WT_ALPHA, WT_TATTOO, WT_UNIVERSAL
+        addEntry(SUBPART_SHIRT,           new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
+        addEntry(SUBPART_PANTS,           new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+        addEntry(SUBPART_SHOES,           new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+        addEntry(SUBPART_SOCKS,           new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+        addEntry(SUBPART_JACKET,          new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH));
+        addEntry(SUBPART_GLOVES,          new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH));
+        addEntry(SUBPART_UNDERSHIRT,      new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
+        addEntry(SUBPART_UNDERPANTS,      new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
+        addEntry(SUBPART_SKIRT,           new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
         addEntry(SUBPART_ALPHA, new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
         addEntry(SUBPART_TATTOO, new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
 		addEntry(SUBPART_UNIVERSAL, new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH));
 
-		addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
-        addEntry(SUBPART_PHYSICS_BREASTS_INOUT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
+        // WT_PHYSICS
+        addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN,    new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f), SEX_FEMALE));
+        addEntry(SUBPART_PHYSICS_BREASTS_INOUT,     new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
         addEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, "mTorso", "physics_breasts_leftright", "physics_breasts_leftright_param_list", "physics_breasts_leftright_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
         addEntry(SUBPART_PHYSICS_BELLY_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
         addEntry(SUBPART_PHYSICS_BUTT_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
-        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
-        addEntry(SUBPART_PHYSICS_ADVANCED, new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
+        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT,    new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
+        addEntry(SUBPART_PHYSICS_ADVANCED,          new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));
 }
 
 LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,
@@ -331,55 +337,55 @@ LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,
 
 LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls()
 {
-        addEntry ( TEX_UPPER_SHIRT,  new PickerControlEntry (TEX_UPPER_SHIRT, "Color/Tint" ));
-        addEntry ( TEX_LOWER_PANTS,  new PickerControlEntry (TEX_LOWER_PANTS, "Color/Tint" ));
-        addEntry ( TEX_LOWER_SHOES,  new PickerControlEntry (TEX_LOWER_SHOES, "Color/Tint" ));
-        addEntry ( TEX_LOWER_SOCKS,  new PickerControlEntry (TEX_LOWER_SOCKS, "Color/Tint" ));
-        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Color/Tint" ));
-        addEntry ( TEX_SKIRT,  new PickerControlEntry (TEX_SKIRT, "Color/Tint" ));
-        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Color/Tint" ));
-        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Color/Tint" ));
-        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Color/Tint" ));
-        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint" ));
-		addEntry (TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint"));
+        addEntry(TEX_UPPER_SHIRT, new PickerControlEntry(TEX_UPPER_SHIRT, "Color/Tint"));
+        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Color/Tint"));
+        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Color/Tint"));
+        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Color/Tint"));
+        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Color/Tint"));
+        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Color/Tint"));
+        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Color/Tint"));
+        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Color/Tint"));
+        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Color/Tint"));
+        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint"));
+        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint"));
 }
 
 LLEditWearableDictionary::TextureCtrls::TextureCtrls()
 {
-        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 ));
-        addEntry ( TEX_LOWER_PANTS, new PickerControlEntry (TEX_LOWER_PANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultPantsUUID" ) ), FALSE ));
-        addEntry ( TEX_LOWER_SHOES, new PickerControlEntry (TEX_LOWER_SHOES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShoesUUID" ) ), FALSE ));
-        addEntry ( TEX_LOWER_SOCKS, new PickerControlEntry (TEX_LOWER_SOCKS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSocksUUID" ) ), FALSE ));
-        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Upper Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE ));
-        addEntry ( TEX_LOWER_JACKET, new PickerControlEntry (TEX_LOWER_JACKET, "Lower Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE ));
-        addEntry ( TEX_SKIRT, new PickerControlEntry (TEX_SKIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSkirtUUID" ) ), FALSE ));
-        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultGlovesUUID" ) ), FALSE ));
-        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE ));
-        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE ));
-        addEntry ( TEX_LOWER_ALPHA, new PickerControlEntry (TEX_LOWER_ALPHA, "Lower Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE ));
-        addEntry ( TEX_UPPER_ALPHA, new PickerControlEntry (TEX_UPPER_ALPHA, "Upper Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE ));
-        addEntry ( TEX_HEAD_ALPHA, new PickerControlEntry (TEX_HEAD_ALPHA, "Head Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE ));
-        addEntry ( TEX_EYES_ALPHA, new PickerControlEntry (TEX_EYES_ALPHA, "Eye Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE ));
-        addEntry ( TEX_HAIR_ALPHA, new PickerControlEntry (TEX_HAIR_ALPHA, "Hair Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE ));
-        addEntry ( TEX_LOWER_TATTOO, new PickerControlEntry (TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE ));
-        addEntry ( TEX_UPPER_TATTOO, new PickerControlEntry (TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE ));
-        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry (TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE ));
-		addEntry ( TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE));
-		addEntry ( TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE));
-		addEntry ( TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE));
-		addEntry ( TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE));
-		addEntry ( TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE));
-		addEntry ( TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE));
-		addEntry (TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE));
-		addEntry (TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE));
-		addEntry (TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE));
-		addEntry (TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE));
-		addEntry (TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", 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));
+        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultPantsUUID")), FALSE));
+        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultShoesUUID")), FALSE));
+        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSocksUUID")), FALSE));
+        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Upper Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE));
+        addEntry(TEX_LOWER_JACKET, new PickerControlEntry(TEX_LOWER_JACKET, "Lower Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE));
+        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSkirtUUID")), FALSE));
+        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultGlovesUUID")), FALSE));
+        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE));
+        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE));
+        addEntry(TEX_LOWER_ALPHA, new PickerControlEntry(TEX_LOWER_ALPHA, "Lower Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE));
+        addEntry(TEX_UPPER_ALPHA, new PickerControlEntry(TEX_UPPER_ALPHA, "Upper Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE));
+        addEntry(TEX_HEAD_ALPHA, new PickerControlEntry(TEX_HEAD_ALPHA, "Head Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE));
+        addEntry(TEX_EYES_ALPHA, new PickerControlEntry(TEX_EYES_ALPHA, "Eye Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE));
+        addEntry(TEX_HAIR_ALPHA, new PickerControlEntry(TEX_HAIR_ALPHA, "Hair Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE));
+        addEntry(TEX_LOWER_TATTOO, new PickerControlEntry(TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_UPPER_TATTOO, new PickerControlEntry(TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE));
+        addEntry(TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE));
 }
 
 LLEditWearableDictionary::PickerControlEntry::PickerControlEntry(ETextureIndex tex_index,
@@ -492,8 +498,8 @@ template <typename CtrlType, class Predicate>
 const LLEditWearableDictionary::PickerControlEntry*
 find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)
 {
-        const LLEditWearableDictionary::WearableEntry *wearable_entry
-                = LLEditWearableDictionary::getInstance()->getWearable(type);
+        const LLEditWearableDictionary::WearableEntry *wearable_entry =
+                LLEditWearableDictionary::getInstance()->getWearable(type);
         if (!wearable_entry)
         {
                 LL_WARNS() << "could not get wearable dictionary entry for wearable of type: " << type << LL_ENDL;
@@ -522,8 +528,7 @@ find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)
 }
 
 template <typename CtrlType>
-void
-for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun)
+void for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun)
 {
         if (!panel)
         {
@@ -544,14 +549,13 @@ for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_
                  iter != iter_end; ++iter)
         {
                 const ETextureIndex te = *iter;
-                const LLEditWearableDictionary::PickerControlEntry*     entry
-                        = get_picker_entry<CtrlType>(te);
+                const LLEditWearableDictionary::PickerControlEntry* entry = get_picker_entry<CtrlType>(te);
                 if (!entry)
                 {
                         LL_WARNS() << "could not get picker dictionary entry (" << te << ") for wearable of type: " << type << LL_ENDL;
                         continue;
                 }
-                fun (panel, entry);
+                fun(panel, entry);
         }
 }
 
@@ -596,7 +600,7 @@ static void update_texture_ctrl(LLPanelEditWearable* self, LLPanel* panel, const
         {
                 LLUUID new_id;
                 LLLocalTextureObject *lto = self->getWearable()->getLocalTextureObject(entry->mTextureIndex);
-                if( lto && (lto->getID() != IMG_DEFAULT_AVATAR) )
+                if (lto && (lto->getID() != IMG_DEFAULT_AVATAR))
                 {
                         new_id = lto->getID();
                 }
@@ -646,7 +650,6 @@ LLPanelEditWearable::LLPanelEditWearable()
 //virtual
 LLPanelEditWearable::~LLPanelEditWearable()
 {
-
 }
 
 bool LLPanelEditWearable::changeHeightUnits(const LLSD& new_value)
@@ -661,7 +664,7 @@ void LLPanelEditWearable::updateMetricLayout(BOOL new_value)
         LLUIString current_metric, replacment_metric;
         current_metric = new_value ? mMeters : mFeet;
         replacment_metric = new_value ? mFeet : mMeters;
-        mHeigthValue.setArg( "[METRIC1]", current_metric.getString() );
+        mHeightValue.setArg( "[METRIC1]", current_metric.getString() );
         mReplacementMetricUrl.setArg( "[URL_METRIC2]", std::string("[secondlife:///app/metricsystem ") + replacment_metric.getString() + std::string("]"));
 }
 
@@ -669,11 +672,11 @@ void LLPanelEditWearable::updateAvatarHeightLabel()
 {
         mTxtAvatarHeight->setText(LLStringUtil::null);
         LLStyle::Params param;
-        param.color = mAvatarHeigthLabelColor;
-        mTxtAvatarHeight->appendText(mHeigth, false, param);
-        param.color = mAvatarHeigthValueLabelColor;
-        mTxtAvatarHeight->appendText(mHeigthValue, false, param);
-        param.color = mAvatarHeigthLabelColor; // using mAvatarHeigthLabelColor for '/' separator
+        param.color = mAvatarHeightLabelColor;
+        mTxtAvatarHeight->appendText(mHeight, false, param);
+        param.color = mAvatarHeightValueLabelColor;
+        mTxtAvatarHeight->appendText(mHeightValue, false, param);
+        param.color = mAvatarHeightLabelColor; // using mAvatarHeightLabelColor for '/' separator
         mTxtAvatarHeight->appendText(" / ", false, param);
         mTxtAvatarHeight->appendText(this->mReplacementMetricUrl, false, param);
 }
@@ -758,7 +761,7 @@ BOOL LLPanelEditWearable::postBuild()
         mPanelSkirt = getChild<LLPanel>("edit_skirt_panel");
         mPanelAlpha = getChild<LLPanel>("edit_alpha_panel");
         mPanelTattoo = getChild<LLPanel>("edit_tattoo_panel");
-		mPanelUniversal = getChild<LLPanel>("edit_universal_panel");
+        mPanelUniversal = getChild<LLPanel>("edit_universal_panel");
         mPanelPhysics = getChild<LLPanel>("edit_physics_panel");
 
         mTxtAvatarHeight = mPanelShape->getChild<LLTextBox>("avatar_height");
@@ -782,33 +785,31 @@ BOOL LLPanelEditWearable::postBuild()
                         continue;
                 }
                 U8 num_subparts = (U8)(wearable_entry->mSubparts.size());
-        
+
                 for (U8 index = 0; index < num_subparts; ++index)
                 {
                         // dive into data structures to get the panel we need
                         ESubpart subpart_e = wearable_entry->mSubparts[index];
                         const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e);
-        
+
                         if (!subpart_entry)
                         {
                                 LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;
                                 continue;
                         }
-        
+
                         const std::string accordion_tab = subpart_entry->mAccordionTab;
-        
                         if (accordion_tab.empty())
                         {
                             continue;
                         }
                         LLAccordionCtrlTab *tab = findChild<LLAccordionCtrlTab>(accordion_tab);
-        
                         if (!tab)
                         {
                                 LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;
                                 continue;
                         }
-        
+
                         // initialize callback to ensure camera view changes appropriately.
                         tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index));
                 }
@@ -821,14 +822,14 @@ BOOL LLPanelEditWearable::postBuild()
         // init all strings
         mMeters         = mPanelShape->getString("meters");
         mFeet           = mPanelShape->getString("feet");
-        mHeigth         = mPanelShape->getString("height") + " ";
-        mHeigthValue    = "[HEIGHT] [METRIC1]";
+        mHeight         = mPanelShape->getString("height") + " ";
+        mHeightValue    = "[HEIGHT] [METRIC1]";
         mReplacementMetricUrl   = "[URL_METRIC2]";
 
-        std::string color = mPanelShape->getString("heigth_label_color");
-        mAvatarHeigthLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green);
-        color = mPanelShape->getString("heigth_value_label_color");
-        mAvatarHeigthValueLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green);
+        std::string color = mPanelShape->getString("height_label_color");
+        mAvatarHeightLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green);
+        color = mPanelShape->getString("height_value_label_color");
+        mAvatarHeightValueLabelColor = LLUIColorTable::instance().getColor(color, LLColor4::green);
         gSavedSettings.getControl("HeightUnits")->getSignal()->connect(boost::bind(&LLPanelEditWearable::changeHeightUnits, this, _2));
         updateMetricLayout(gSavedSettings.getBOOL("HeightUnits"));
 
@@ -842,14 +843,16 @@ BOOL LLPanelEditWearable::isDirty() const
         BOOL isDirty = FALSE;
         if (mWearablePtr)
         {
-			if (mWearablePtr->isDirty() ||
-				( mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0 ))
-			{
-				isDirty = TRUE;
-			}
+                if (mWearablePtr->isDirty() ||
+                        (mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0))
+                {
+                        isDirty = TRUE;
+                }
         }
         return isDirty;
 }
+
+
 //virtual
 void LLPanelEditWearable::draw()
 {
@@ -865,8 +868,8 @@ void LLPanelEditWearable::draw()
 
 void LLPanelEditWearable::onClose()
 {
-	// any unsaved changes should be reverted at this point
-	revertChanges();
+        // any unsaved changes should be reverted at this point
+        revertChanges();
 }
 
 void LLPanelEditWearable::setVisible(BOOL visible)
@@ -888,11 +891,11 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c
 //static 
 void LLPanelEditWearable::onBackButtonClicked(void* userdata)
 {
-    LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata;
-	if ( panel->isDirty() )
-	{
-		LLAppearanceMgr::instance().setOutfitDirty( true );		
-	}
+        LLPanelEditWearable* panel = (LLPanelEditWearable*)userdata;
+        if (panel->isDirty())
+        {
+                LLAppearanceMgr::instance().setOutfitDirty(true);
+        }
 }
 
 //static 
@@ -917,7 +920,7 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r
         {
                 std::string wearable_name = response["message"].asString();
                 LLStringUtil::trim(wearable_name);
-                if( !wearable_name.empty() )
+                if (!wearable_name.empty())
                 {
                         mNameEditor->setText(wearable_name);
                         saveChanges(true);
@@ -927,24 +930,27 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r
 
 void LLPanelEditWearable::onCommitSexChange()
 {
-        if (!isAgentAvatarValid()) return;
+        if (!isAgentAvatarValid())
+        {
+                return;
+        }
 
         LLWearableType::EType type = mWearablePtr->getType();
         U32 index;
-        if( !gAgentWearables.getWearableIndex(mWearablePtr, index) ||
-			!gAgentWearables.isWearableModifiable(type, index))
+        if (!gAgentWearables.getWearableIndex(mWearablePtr, index) ||
+                !gAgentWearables.isWearableModifiable(type, index))
         {
-			return;
+                return;
         }
 
         LLViewerVisualParam* param = static_cast<LLViewerVisualParam*>(gAgentAvatarp->getVisualParam( "male" ));
-        if( !param )
+        if (!param)
         {
-			return;
+                return;
         }
 
         bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE;
-        LLViewerWearable*     wearable = gAgentWearables.getViewerWearable(type, index);
+        LLViewerWearable* wearable = gAgentWearables.getViewerWearable(type, index);
         if (wearable)
         {
                 wearable->setVisualParamWeight(param->getID(), is_new_sex_male);
@@ -977,23 +983,23 @@ void LLPanelEditWearable::onTexturePickerCommit(const LLUICtrl* ctrl)
                 {
                         // Set the new version
                         LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(texture_ctrl->getImageAssetID());
-                        if( image->getID() == IMG_DEFAULT )
+                        if (image->getID() == IMG_DEFAULT)
                         {
                                 image = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR);
                         }
                         if (getWearable())
                         {
-							U32 index;
-							if (gAgentWearables.getWearableIndex(getWearable(), index))
-							{
-								gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index);
-								LLVisualParamHint::requestHintUpdates();
-								gAgentAvatarp->wearableUpdated(type);
-							}
-							else
-							{
-								LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL;
-							}
+                                U32 index;
+                                if (gAgentWearables.getWearableIndex(getWearable(), index))
+                                {
+                                        gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index);
+                                        LLVisualParamHint::requestHintUpdates();
+                                        gAgentAvatarp->wearableUpdated(type);
+                                }
+                                else
+                                {
+                                        LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL;
+                                }
                         }
                 }
                 else
@@ -1009,13 +1015,13 @@ void LLPanelEditWearable::onColorSwatchCommit(const LLUICtrl* ctrl)
         {
                 LLWearableType::EType type = getWearable()->getType();
                 const PickerControlEntryNamePredicate name_pred(ctrl->getName());
-                const LLEditWearableDictionary::PickerControlEntry* entry
-                        = find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred);
+                const LLEditWearableDictionary::PickerControlEntry* entry =
+                        find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred);
                 if (entry)
                 {
                         const LLColor4& old_color = getWearable()->getClothesColor(entry->mTextureIndex);
                         const LLColor4& new_color = LLColor4(ctrl->getValue());
-                        if( old_color != new_color )
+                        if (old_color != new_color)
                         {
                                 getWearable()->setClothesColor(entry->mTextureIndex, new_color);
                                 LLVisualParamHint::requestHintUpdates();
@@ -1033,11 +1039,13 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
 {
         LLPanel* panel = getPanel(type);
         if (!panel)
+        {
                 return;
+        }
 
         bool is_modifiable = false;
 
-        if(mWearableItem)
+        if (mWearableItem)
         {
                 const LLPermissions& perm = mWearableItem->getPermissions();
                 is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID());
@@ -1059,7 +1067,6 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
 
 void LLPanelEditWearable::incrementCofVersionLegacy()
 {
-
 }
 
 void LLPanelEditWearable::saveChanges(bool force_save_as)
@@ -1071,59 +1078,57 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
         }
 
         U32 index;
-		if (!gAgentWearables.getWearableIndex(mWearablePtr, index))
-		{
-			LL_WARNS() << "wearable not found" << LL_ENDL;
-			return;
-		}
+        if (!gAgentWearables.getWearableIndex(mWearablePtr, index))
+        {
+                LL_WARNS() << "wearable not found" << LL_ENDL;
+                return;
+        }
 
         std::string new_name = mNameEditor->getText();
 
-		// Find an existing link to this wearable's inventory item, if any, and its description field.
-		LLInventoryItem *link_item = NULL;
-		std::string description;
-		LLInventoryModel::item_array_t links =
-			LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID());
-		if (links.size()>0)
-		{
-			link_item = links.at(0).get();
-			if (link_item && link_item->getIsLinkType())
-			{
-				description = link_item->getActualDescription();
-			}
-		}
+        // Find an existing link to this wearable's inventory item, if any, and its description field.
+        LLInventoryItem* link_item = NULL;
+        std::string description;
+        LLInventoryModel::item_array_t links =
+                LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID());
+        if (links.size() > 0)
+        {
+                link_item = links.at(0).get();
+                if (link_item && link_item->getIsLinkType())
+                {
+                        description = link_item->getActualDescription();
+                }
+        }
 
         if (force_save_as)
         {
-			// the name of the wearable has changed, re-save wearable with new name
-			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(),gAgentAvatarp->mEndCustomizeCallback);
-			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE);
-			mNameEditor->setText(mWearableItem->getName());
+                // the name of the wearable has changed, re-save wearable with new name
+                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(), gAgentAvatarp->mEndCustomizeCallback);
+                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE);
+                mNameEditor->setText(mWearableItem->getName());
         }
         else
         {
-			// Make another copy of this link, with the same
-			// description.  This is needed to bump the COF
-			// version so texture baking service knows appearance has changed.
-			if (link_item)
-			{
-				// Create new link
-				LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID()
-									<< " removing old link at " << link_item->getUUID()
-									<< " wearable item id " << mWearablePtr->getItemID() << LL_ENDL;
-
-				LLInventoryObject::const_object_list_t obj_array;
-				obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item));
-				link_inventory_array(LLAppearanceMgr::instance().getCOF(),
-									 obj_array, 
-									 gAgentAvatarp->mEndCustomizeCallback);
-				// Remove old link
-				remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback);
-			}
-			gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name);
+                // Make another copy of this link, with the same
+                // description.  This is needed to bump the COF
+                // version so texture baking service knows appearance has changed.
+                if (link_item)
+                {
+                        // Create new link
+                        LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID()
+                                << " removing old link at " << link_item->getUUID()
+                                << " wearable item id " << mWearablePtr->getItemID() << LL_ENDL;
+
+                        LLInventoryObject::const_object_list_t obj_array;
+                        obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item));
+                        link_inventory_array(LLAppearanceMgr::instance().getCOF(),
+                                obj_array,
+                                gAgentAvatarp->mEndCustomizeCallback);
+                        // Remove old link
+                        remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback);
+                }
+                gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name);
         }
-
-	
 }
 
 void LLPanelEditWearable::revertChanges()
@@ -1173,15 +1178,15 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO
 
         targetPanel->setVisible(show);
         toggleTypeSpecificControls(type);
-		// Update type controls here
-		updateTypeSpecificControls(type);
+        // Update type controls here
+        updateTypeSpecificControls(type);
 
         if (show)
         {
                 mPanelTitle->setText(title);
                 mPanelTitle->setToolTip(title);
                 mDescTitle->setText(description_title);
-                
+
                 // set name
                 mNameEditor->setText(mWearableItem->getName());
 
@@ -1189,33 +1194,34 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO
 
                 // clear and rebuild visual param list
                 U8 num_subparts = (U8)(wearable_entry->mSubparts.size());
-        
+
                 for (U8 index = 0; index < num_subparts; ++index)
                 {
                         // dive into data structures to get the panel we need
                         ESubpart subpart_e = wearable_entry->mSubparts[index];
                         const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e);
-        
+
                         if (!subpart_entry)
                         {
                                 LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;
                                 continue;
                         }
-        
+
                         const std::string scrolling_panel = subpart_entry->mParamList;
                         const std::string accordion_tab = subpart_entry->mAccordionTab;
                         if (scrolling_panel.empty() || accordion_tab.empty())
                         {
                             continue;
                         }
-        
+
                         LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);
+			
                         if (!panel_list)
                         {
                                 LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
                                 continue;
                         }
-        
+
                         LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab);
                         if (!tab)
                         {
@@ -1223,20 +1229,20 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO
                                 continue;
                         }
 
-			// Don't show female subparts if you're not female, etc.
-			if (!(gAgentAvatarp->getSex() & subpart_entry->mSex))
-			{
-				tab->setVisible(FALSE);
-				continue;
-			}
-			else
-			{
-				tab->setVisible(TRUE);
-			}
-			
+                        // Don't show female subparts if you're not female, etc.
+                        if (!(gAgentAvatarp->getSex() & subpart_entry->mSex))
+                        {
+                                tab->setVisible(FALSE);
+                                continue;
+                        }
+                        else
+                        {
+                                tab->setVisible(TRUE);
+                        }
+
                         // what edit group do we want to extract params for?
                         const std::string edit_group = subpart_entry->mEditGroup;
-        
+
                         // storage for ordered list of visual params
                         value_map_t sorted_params;
                         getSortedParams(sorted_params, edit_group);
@@ -1248,9 +1254,10 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO
                         }
 
                         buildParamList(panel_list, sorted_params, tab, jointp);
-        
+
                         updateScrollingPanelUI();
                 }
+
                 if (!disable_camera_switch)
                 {
                         showDefaultSubpart();
@@ -1279,17 +1286,17 @@ void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index)
         {
                 changeCamera(index);
         }
-
 }
 
 void LLPanelEditWearable::changeCamera(U8 subpart)
 {
-	// Don't change the camera if this type doesn't have a camera switch.
-	// Useful for wearables like physics that don't have an associated physical body part.
-	if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType()))
-	{
-		return;
-	}
+        // Don't change the camera if this type doesn't have a camera switch.
+        // Useful for wearables like physics that don't have an associated physical body part.
+        if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType()))
+        {
+                return;
+        }
+
         const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType());
         if (!wearable_entry)
         {
@@ -1318,9 +1325,9 @@ void LLPanelEditWearable::changeCamera(U8 subpart)
         gMorphView->setCameraOffset( subpart_entry->mCameraOffset );
         if (gSavedSettings.getBOOL("AppearanceCameraMovement"))
         {
-            // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE
-            gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating());
-            gMorphView->updateCamera();
+                // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE
+                gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating());
+                gMorphView->updateCamera();
         }
 }
 
@@ -1359,7 +1366,7 @@ void LLPanelEditWearable::updateTypeSpecificControls(LLWearableType::EType type)
                 }
 
                 std::string avatar_height_str = llformat("%.2f", new_size);
-                mHeigthValue.setArg("[HEIGHT]", avatar_height_str);
+                mHeightValue.setArg("[HEIGHT]", avatar_height_str);
                 updateAvatarHeightLabel();
         }
 
@@ -1382,14 +1389,18 @@ void LLPanelEditWearable::updateScrollingPanelUI()
         LLWearableType::EType type = mWearablePtr->getType();
         LLPanel *panel = getPanel(type);
 
-        if(panel && (mWearablePtr->getItemID().notNull()))
+        if (panel && (mWearablePtr->getItemID().notNull()))
         {
                 const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type);
                 llassert(wearable_entry);
-                if (!wearable_entry) return;
-                U8 num_subparts = (U8)(wearable_entry->mSubparts.size());
+                if (!wearable_entry)
+                {
+                        return;
+                }
 
                 LLScrollingPanelParam::sUpdateDelayFrames = 0;
+
+                U8 num_subparts = (U8)(wearable_entry->mSubparts.size());
                 for (U8 index = 0; index < num_subparts; ++index)
                 {
                         // dive into data structures to get the panel we need
@@ -1399,13 +1410,13 @@ void LLPanelEditWearable::updateScrollingPanelUI()
                         const std::string scrolling_panel = subpart_entry->mParamList;
 
                         LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);
-        
+
                         if (!panel_list)
                         {
                                 LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
                                 continue;
                         }
-                        
+
                         panel_list->updatePanels(TRUE);
                 }
         }
@@ -1417,76 +1428,58 @@ LLPanel* LLPanelEditWearable::getPanel(LLWearableType::EType type)
         {
                 case LLWearableType::WT_SHAPE:
                         return mPanelShape;
-                        break;
 
                 case LLWearableType::WT_SKIN:
                         return mPanelSkin;
-                        break;
 
                 case LLWearableType::WT_HAIR:
                         return mPanelHair;
-                        break;
 
                 case LLWearableType::WT_EYES:
                         return mPanelEyes;
-                        break;
 
                 case LLWearableType::WT_SHIRT:
                         return mPanelShirt;
-                        break;
 
                 case LLWearableType::WT_PANTS:
                         return mPanelPants;
-                        break;
 
                 case LLWearableType::WT_SHOES:
                         return mPanelShoes;
-                        break;
 
                 case LLWearableType::WT_SOCKS:
                         return mPanelSocks;
-                        break;
 
                 case LLWearableType::WT_JACKET:
                         return mPanelJacket;
-                        break;
 
                 case LLWearableType::WT_GLOVES:
                         return mPanelGloves;
-                        break;
 
                 case LLWearableType::WT_UNDERSHIRT:
                         return mPanelUndershirt;
-                        break;
 
                 case LLWearableType::WT_UNDERPANTS:
                         return mPanelUnderpants;
-                        break;
 
                 case LLWearableType::WT_SKIRT:
                         return mPanelSkirt;
-                        break;
 
                 case LLWearableType::WT_ALPHA:
                         return mPanelAlpha;
-                        break;
 
                 case LLWearableType::WT_TATTOO:
                         return mPanelTattoo;
-                        break;
-				
-				case LLWearableType::WT_UNIVERSAL:
-					return mPanelUniversal;
-					break;
+
+                case LLWearableType::WT_UNIVERSAL:
+                        return mPanelUniversal;
 
                 case LLWearableType::WT_PHYSICS:
                         return mPanelPhysics;
-                        break;
 
                 default:
-                        break;
+                        return NULL;
         }
-        return NULL;
 }
 
 void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std::string &edit_group)
@@ -1522,11 +1515,11 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
         // sorted_params is sorted according to magnitude of effect from
         // least to greatest.  Adding to the front of the child list
         // reverses that order.
-        if( panel_list )
+        if (panel_list)
         {
                 panel_list->clearPanels();
                 value_map_t::iterator end = sorted_params.end();
-                for(value_map_t::iterator it = sorted_params.begin(); it != end; ++it)
+                for (value_map_t::iterator it = sorted_params.begin(); it != end; ++it)
                 {
                         LLPanel::Params p;
                         p.name("LLScrollingPanelParam");
@@ -1549,7 +1542,7 @@ void LLPanelEditWearable::updateVerbs()
 {
         bool can_copy = false;
 
-        if(mWearableItem)
+        if (mWearableItem)
         {
                 can_copy = mWearableItem->getPermissions().allowCopyBy(gAgentID);
         }
@@ -1560,7 +1553,7 @@ void LLPanelEditWearable::updateVerbs()
         getChildView("save_as_button")->setEnabled(is_dirty && can_copy);
         childSetEnabled("import_btn", mWearableItem->getPermissions().allowModifyBy(gAgentID));
 
-        if(isAgentAvatarValid())
+        if (isAgentAvatarValid())
         {
                 // Update viewer's radio buttons (of RadioGroup with control_name="AvatarSex") of Avatar's gender
                 // with value from "AvatarSex" setting
@@ -1601,17 +1594,20 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETex
 
 void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)
 {
-        if (!checkbox_ctrl) return;
-        if (!getWearable()) return;
+        if (!checkbox_ctrl || !getWearable())
+        {
+                return;
+        }
 
         LL_INFOS() << "onInvisibilityCommit, self " << this << " checkbox_ctrl " << checkbox_ctrl << LL_ENDL;
 
-		U32 index;
-		if (!gAgentWearables.getWearableIndex(getWearable(),index))
-		{
-			LL_WARNS() << "wearable not found" << LL_ENDL;
-			return;
-		}
+        U32 index;
+        if (!gAgentWearables.getWearableIndex(getWearable(), index))
+        {
+                LL_WARNS() << "wearable not found" << LL_ENDL;
+                return;
+        }
+
         bool new_invis_state = checkbox_ctrl->get();
         if (new_invis_state)
         {
@@ -1619,8 +1615,8 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL
                 mPreviousAlphaTexture[te] = lto->getID();
                 
                 LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE );
-				gAgentAvatarp->setLocalTexture(te, image, FALSE, index);
-				gAgentAvatarp->wearableUpdated(getWearable()->getType());
+                gAgentAvatarp->setLocalTexture(te, image, FALSE, index);
+                gAgentAvatarp->wearableUpdated(getWearable()->getType());
         }
         else
         {
@@ -1630,10 +1626,16 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL
                 {
                         prev_id = LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) );
                 }
-                if (prev_id.isNull()) return;
-                
+                if (prev_id.isNull())
+                {
+                        return;
+                }
+
                 LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(prev_id);
-                if (!image) return;
+                if (!image)
+                {
+                        return;
+                }
 
                 gAgentAvatarp->setLocalTexture(te, image, FALSE, index);
                 gAgentAvatarp->wearableUpdated(getWearable()->getType());
@@ -1644,7 +1646,7 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL
 
 void LLPanelEditWearable::updateAlphaCheckboxes()
 {
-        for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
+        for (string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();
                 iter != mAlphaCheckbox2Index.end(); ++iter )
         {
                 LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second;
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index fbca41b27f54c2a119bb219822a740c0003d5528..124f5284e3263582ae1507f4c6c6914d9f2a29b7 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -138,14 +138,14 @@ class LLPanelEditWearable : public LLPanel
 	// localized and parameterized strings that used to build avatar_height_label
 	std::string mMeters;
 	std::string mFeet;
-	std::string mHeigth;
-	LLUIString  mHeigthValue;
+	std::string mHeight;
+	LLUIString  mHeightValue;
 	LLUIString  mReplacementMetricUrl;
 
-	// color for mHeigth string
-	LLUIColor mAvatarHeigthLabelColor;
-	// color for mHeigthValue string
-	LLUIColor mAvatarHeigthValueLabelColor;
+	// color for mHeight string
+	LLUIColor mAvatarHeightLabelColor;
+	// color for mHeightValue string
+	LLUIColor mAvatarHeightValueLabelColor;
 
 	// This text editor reference will change each time we edit a new wearable - 
 	// it will be grabbed from the currently visible panel
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index b0bb720279efef917379c493baf21cb972014dc8..d9fe66c0be9c9219d1a884f3b4c589be829a11f9 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -1063,9 +1063,15 @@ void LLTaskLSLBridge::openItem()
 		LLSD floater_key;
 		floater_key["taskid"] = mPanel->getTaskUUID();
 		floater_key["itemid"] = mUUID;
+
 		LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key, TAKE_FOCUS_YES);
 		if (preview)
 		{
+            LLSelectNode *node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(NULL, TRUE);
+            if (node && node->mValid)
+            {
+                preview->setObjectName(node->mName);
+            }
 			preview->setObjectID(mPanel->getTaskUUID());
 		}
 	}
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 4254796f32c5b9627b70d8ad3f098d5d5bc236ba..d6fb8564d64661625bee95d547a72733d72b0964 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -751,7 +751,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
 	if (mSearchString == "")
 	{
 		mInventoryItemsPanel->setFilterSubString(LLStringUtil::null);
-		mWearableItemsList->setFilterSubString(LLStringUtil::null);
+		mWearableItemsList->setFilterSubString(LLStringUtil::null, true);
 		// re-open folders that were initially open
 		mSavedFolderState->setApply(TRUE);
 		mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
@@ -781,8 +781,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
 	
 	// set new filter string
 	mInventoryItemsPanel->setFilterSubString(mSearchString);
-	mWearableItemsList->setFilterSubString(mSearchString);
-
+	mWearableItemsList->setFilterSubString(mSearchString, true);
 }
 
 void LLPanelOutfitEdit::onPlusBtnClicked(void)
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index f824682c04ea3eeb5ac043207937286c46349a6f..c55deae0eca00dc6856fe0d606c3ad8b6ec7290d 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -28,19 +28,19 @@
 
 #include "llpaneloutfitsinventory.h"
 
-#include "llnotificationsutil.h"
-#include "lltabcontainer.h"
-
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
 #include "llfloatersidepanelcontainer.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodelbackgroundfetch.h"
-#include "llagentwearables.h"
-#include "llappearancemgr.h"
-#include "lloutfitobserver.h"
+#include "llnotificationsutil.h"
 #include "lloutfitgallery.h"
+#include "lloutfitobserver.h"
 #include "lloutfitslist.h"
+#include "llpanelappearancetab.h"
 #include "llpanelwearing.h"
 #include "llsidepanelappearance.h"
+#include "lltabcontainer.h"
 #include "llviewercontrol.h"
 #include "llviewerfoldertype.h"
 #include "llvoavatarself.h"
@@ -174,25 +174,12 @@ void LLPanelOutfitsInventory::onSearchEdit(const std::string& string)
 {
 	if (!mActivePanel) return;
 
-	mFilterSubString = string;
-
-	if (string == "")
-	{
-		mActivePanel->setFilterSubString(LLStringUtil::null);
-	}
-
     if (!LLInventoryModelBackgroundFetch::instance().inventoryFetchStarted())
     {
         llassert(false); // this should have been done on startup
         LLInventoryModelBackgroundFetch::instance().start();
     }
 
-	if (mActivePanel->getFilterSubString().empty() && string.empty())
-	{
-		// current filter and new filter empty, do nothing
-		return;
-	}
-
 	// set new filter string
 	mActivePanel->setFilterSubString(string);
 }
@@ -344,6 +331,7 @@ bool LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 {
 	return mActivePanel && mActivePanel->isActionEnabled(userdata);
 }
+
 // List Commands                                                                //
 //////////////////////////////////////////////////////////////////////////////////
 
@@ -372,7 +360,7 @@ void LLPanelOutfitsInventory::onTabChange()
 	mActivePanel = dynamic_cast<LLPanelAppearanceTab*>(mAppearanceTabs->getCurrentPanel());
 	if (!mActivePanel) return;
 
-	mActivePanel->setFilterSubString(mFilterSubString);
+	mActivePanel->checkFilterSubString();
 	mActivePanel->onOpen(LLSD());
 
 	updateVerbs();
@@ -399,8 +387,6 @@ bool LLPanelOutfitsInventory::isOutfitsGalleryPanelActive() const
 	return mActivePanel->getName() == OUTFIT_GALLERY_TAB_NAME;
 }
 
-
-
 void LLPanelOutfitsInventory::setWearablesLoading(bool val)
 {
 	updateVerbs();
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index be821c76f926065253d62cf41c6b65c48d217550..e8099e1de73edecd090bcaa2af715bba8290287b 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -75,7 +75,6 @@ class LLPanelOutfitsInventory : public LLPanel
 
 private:
 	LLTabContainer*			mAppearanceTabs;
-	std::string 			mFilterSubString;
 
 	LLInventoryCategoriesObserver* mCategoriesObserver;
 	void onCOFChanged();
diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp
index b988f8ab3319783789aef856a791cd489eaf25f3..1ee6dc1a3188b83e1fcedded8571a8ac4fd3d377 100644
--- a/indra/newview/llpanelprofilepicks.cpp
+++ b/indra/newview/llpanelprofilepicks.cpp
@@ -757,32 +757,6 @@ BOOL LLPanelProfilePick::isDirty() const
     return FALSE;
 }
 
-void LLPanelProfilePick::onClickSetLocation()
-{
-    // Save location for later use.
-    setPosGlobal(gAgent.getPositionGlobal());
-
-    std::string parcel_name, region_name;
-
-    LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-    if (parcel)
-    {
-        mParcelId = parcel->getID();
-        parcel_name = parcel->getName();
-    }
-
-    LLViewerRegion* region = gAgent.getRegion();
-    if (region)
-    {
-        region_name = region->getName();
-    }
-
-    setPickLocation(createLocationText(getLocationNotice(), parcel_name, region_name, getPosGlobal()));
-
-    mLocationChanged = true;
-    enableSaveButton(TRUE);
-}
-
 void LLPanelProfilePick::onClickSave()
 {
     sendUpdate();
diff --git a/indra/newview/llpanelprofilepicks.h b/indra/newview/llpanelprofilepicks.h
index 4e9c9da0b3ff9146c6e7ad9212810389e487daab..c3e3e5c4faf20c14394556ae1da80f5dd2cb5434 100644
--- a/indra/newview/llpanelprofilepicks.h
+++ b/indra/newview/llpanelprofilepicks.h
@@ -202,11 +202,6 @@ class LLPanelProfilePick
      */
     void resetDirty() override;
 
-    /**
-     * Callback for "Set Location" button click
-     */
-    void onClickSetLocation();
-
     /**
      * Callback for "Save" and "Create" button click
      */
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index 6ca9b63f34af1eb72bfb0802d843f1882af056f6..5be4ec89474f9ce86591426ffd5c238afffb21f9 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -32,6 +32,7 @@
 // Viewer includes
 #include "llcombobox.h"
 #include "llsliderctrl.h"
+#include "llstartup.h"
 #include "llviewercontrol.h"
 #include "llvoiceclient.h"
 #include "llvoicechannel.h"
@@ -70,11 +71,14 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()
 
 	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");
 	mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device");
+    mUnmuteBtn = getChild<LLButton>("unmute_btn");
 
 	mCtrlInputDevices->setCommitCallback(
 		boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this));
 	mCtrlOutputDevices->setCommitCallback(
 		boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this));
+    mUnmuteBtn->setCommitCallback(
+        boost::bind(&LLPanelVoiceDeviceSettings::onCommitUnmute, this));
 
 	mLocalizedDeviceNames[DEFAULT_DEVICE]				= getString("default_text");
 	mLocalizedDeviceNames["No Device"]					= getString("name_no_device");
@@ -108,11 +112,27 @@ void LLPanelVoiceDeviceSettings::draw()
 
 	// let user know that volume indicator is not yet available
 	bool is_in_tuning_mode = LLVoiceClient::getInstance()->inTuningMode();
-	getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode);
+    bool voice_enabled = LLVoiceClient::getInstance()->voiceEnabled();
+    if (voice_enabled)
+    {
+        getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode);
+        getChildView("disabled_text")->setVisible(FALSE);
+        mUnmuteBtn->setVisible(FALSE);
+    }
+    else
+    {
+        getChildView("wait_text")->setVisible(FALSE);
+
+        static LLCachedControl<bool> chat_enabled(gSavedSettings, "EnableVoiceChat");
+        // If voice isn't enabled, it is either disabled or muted
+        bool voice_disabled = chat_enabled() || LLStartUp::getStartupState() <= STATE_LOGIN_WAIT;
+        getChildView("disabled_text")->setVisible(voice_disabled);
+        mUnmuteBtn->setVisible(!voice_disabled);
+    }
 
 	LLPanel::draw();
 
-	if (is_in_tuning_mode)
+	if (is_in_tuning_mode && voice_enabled)
 	{
 		const S32 num_bars = 5;
 		F32 voice_power = LLVoiceClient::getInstance()->tuningGetEnergy() / LLVoiceClient::OVERDRIVEN_POWER_LEVEL;
@@ -339,3 +359,8 @@ void LLPanelVoiceDeviceSettings::onInputDevicesClicked()
 {
 	LLVoiceClient::getInstance()->refreshDeviceLists(false);  // fill in the pop up menus again if needed.
 }
+
+void LLPanelVoiceDeviceSettings::onCommitUnmute()
+{
+    gSavedSettings.setBOOL("EnableVoiceChat", TRUE);
+}
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
index 355bc02b05473627abea9311b615d09da5dfc62d..e704394d4a45bee172ed0ce675db4ce398c68a7d 100644
--- a/indra/newview/llpanelvoicedevicesettings.h
+++ b/indra/newview/llpanelvoicedevicesettings.h
@@ -55,12 +55,14 @@ class LLPanelVoiceDeviceSettings : public LLPanel
 	void onCommitOutputDevice();
 	void onOutputDevicesClicked();
 	void onInputDevicesClicked();
+    void onCommitUnmute();
 
 	F32 mMicVolume;
 	std::string mInputDevice;
 	std::string mOutputDevice;
 	class LLComboBox		*mCtrlInputDevices;
 	class LLComboBox		*mCtrlOutputDevices;
+    class LLButton          *mUnmuteBtn;
 	BOOL mDevicesUpdated;
 	bool mUseTuningMode;
 	std::map<std::string, std::string> mLocalizedDeviceNames;
diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp
index d126a2d35878c8e1e9d98693ca9be7b1b35fcdb3..8036ba440b073f99fda1728988494ef5634cbf76 100644
--- a/indra/newview/llpanelvolumepulldown.cpp
+++ b/indra/newview/llpanelvolumepulldown.cpp
@@ -50,7 +50,7 @@ LLPanelVolumePulldown::LLPanelVolumePulldown()
 {
 	mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2));
 	mCommitCallbackRegistrar.add("Vol.SetSounds", boost::bind(&LLPanelVolumePulldown::onClickSetSounds, this));
-	mCommitCallbackRegistrar.add("Vol.updateMediaAutoPlayCheckbox",	boost::bind(&LLPanelVolumePulldown::updateMediaAutoPlayCheckbox, this, _1));
+	mCommitCallbackRegistrar.add("Vol.updateCheckbox",	boost::bind(&LLPanelVolumePulldown::updateCheckbox, this, _1, _2));
 	mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2));
 	buildFromFile( "panel_volume_pulldown.xml");
 }
@@ -89,19 +89,23 @@ void LLPanelVolumePulldown::setControlFalse(const LLSD& user_data)
 		control->set(LLSD(FALSE));
 }
 
-void LLPanelVolumePulldown::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl)
+void LLPanelVolumePulldown::updateCheckbox(LLUICtrl* ctrl, const LLSD& user_data)
 {
-	std::string name = ctrl->getName();
+    std::string control_name = user_data.asString();
+    if (control_name == "MediaAutoPlay")
+    {
+        std::string name = ctrl->getName();
 
-	// Disable "Allow Media to auto play" only when both
-	// "Streaming Music" and "Media" are unchecked. STORM-513.
-	if ((name == "enable_music") || (name == "enable_media"))
-	{
-		bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get();
-		bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get();
+        // Disable "Allow Media to auto play" only when both
+        // "Streaming Music" and "Media" are unchecked. STORM-513.
+        if ((name == "enable_music") || (name == "enable_media"))
+        {
+            bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get();
+            bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get();
 
-		getChild<LLCheckBoxCtrl>("media_auto_play_combo")->setEnabled(music_enabled || media_enabled);
-	}
+            getChild<LLCheckBoxCtrl>("media_auto_play_combo")->setEnabled(music_enabled || media_enabled);
+        }
+    }
 }
 
 void LLPanelVolumePulldown::onClickSetSounds()
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
index 190220476114e9fa77ef5d6f87af89d83132ccf4..bfe1aec14ea7934d30b87faf3070edd1077225fa 100644
--- a/indra/newview/llpanelvolumepulldown.h
+++ b/indra/newview/llpanelvolumepulldown.h
@@ -43,7 +43,7 @@ class LLPanelVolumePulldown final : public LLPanelPulldown
 	void onClickSetSounds();
 	// Disables "Allow Media to auto play" check box only when both
 	// "Streaming Music" and "Media" are unchecked. Otherwise enables it.
-	void updateMediaAutoPlayCheckbox(LLUICtrl* ctrl);
+	void updateCheckbox(LLUICtrl* ctrl, const LLSD& user_data);
 	void onAdvancedButtonClick(const LLSD& user_data);
 };
 
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 6bb106fb43942e74bdfbb9fc85cbaefb704b3a0d..f43a0e6bb56e7b2379da8df8e4ce4235a9563764 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -232,8 +232,6 @@ class LLTempAttachmentsContextMenu : public LLListContextMenu
 
 //////////////////////////////////////////////////////////////////////////
 
-std::string LLPanelAppearanceTab::sFilterSubString = LLStringUtil::null;
-
 static LLPanelInjector<LLPanelWearing> t_panel_wearing("panel_wearing");
 
 LLPanelWearing::LLPanelWearing()
@@ -354,10 +352,11 @@ void LLPanelWearing::startUpdateTimer()
 }
 
 // virtual
-void LLPanelWearing::setFilterSubString(const std::string& string)
+void LLPanelWearing::onFilterSubStringChanged(const std::string& new_string, const std::string& old_string)
 {
-	sFilterSubString = string;
-	mCOFItemsList->setFilterSubString(sFilterSubString);
+	mCOFItemsList->setFilterSubString(new_string, true);
+
+	mAccordionCtrl->arrange();
 }
 
 // virtual
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
index 880d5fb7d6eb2f36466e0881bb553dbecfeba340..30ead58a88e55740c5f9de0f16a72648093fc20d 100644
--- a/indra/newview/llpanelwearing.h
+++ b/indra/newview/llpanelwearing.h
@@ -62,7 +62,7 @@ class LLPanelWearing : public LLPanelAppearanceTab
 
 	/*virtual*/ void onOpen(const LLSD& info);
 
-	/*virtual*/ void setFilterSubString(const std::string& string);
+	/*virtual*/ void onFilterSubStringChanged(const std::string& new_string, const std::string& old_string);
 
 	/*virtual*/ bool isActionEnabled(const LLSD& userdata);
 
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index b39de851c11a84469985ee6ff9a94dd6ec3c16d6..8db98954caec24b28ab2eeb5149299f0131263b1 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -90,6 +90,9 @@
 #include "llexperiencecache.h"
 #include "llfloaterexperienceprofile.h"
 #include "llviewerassetupload.h"
+#include "lltoggleablemenu.h"
+#include "llmenubutton.h"
+#include "llinventoryfunctions.h"
 #include "llviewernetwork.h"
 // [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1a)
 #include "rlvhandler.h"
@@ -334,6 +337,38 @@ bool LLLiveLSLFile::loadFile()
 //	}
 //}
 
+/// ---------------------------------------------------------------------------
+
+class LLScriptMovedObserver : public LLInventoryObserver
+{
+  public:
+    LLScriptMovedObserver(LLPreviewLSL *floater) : mPreview(floater) { gInventory.addObserver(this); }
+    virtual ~LLScriptMovedObserver() { gInventory.removeObserver(this); }
+    virtual void changed(U32 mask);
+
+  private:
+    LLPreviewLSL *mPreview;
+};
+
+void LLScriptMovedObserver::changed(U32 mask)
+{
+    const std::set<LLUUID> &mChangedItemIDs = gInventory.getChangedIDs();
+    std::set<LLUUID>::const_iterator it;
+
+    const LLUUID &item_id = mPreview->getScriptID();
+
+    for (it = mChangedItemIDs.begin(); it != mChangedItemIDs.end(); it++)
+    {
+        if (*it == item_id)
+        {
+            if ((mask & (LLInventoryObserver::STRUCTURE)) != 0)
+            {
+                mPreview->setDirty();
+            }
+        }
+    }
+}
+
 /// ---------------------------------------------------------------------------
 /// LLScriptEdCore
 /// ---------------------------------------------------------------------------
@@ -516,6 +551,13 @@ BOOL LLScriptEdCore::postBuild()
 	LLSyntaxIdLSL::getInstance()->initialize();
 	processKeywords();
 
+    //mCommitCallbackRegistrar.add("FontSize.Set", boost::bind(&LLScriptEdCore::onChangeFontSize, this, _2));
+    //mEnableCallbackRegistrar.add("FontSize.Check", boost::bind(&LLScriptEdCore::isFontSizeChecked, this, _2));
+
+    //LLToggleableMenu *context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>(
+    //    "menu_lsl_font_size.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+    //getChild<LLMenuButton>("font_btn")->setMenu(context_menu, LLMenuButton::MP_BOTTOM_LEFT, true);
+
 	return TRUE;
 }
 
@@ -939,7 +981,7 @@ void LLScriptEdCore::setHelpPage(const std::string& help_string)
 
 	LLUIString url_string = gSavedSettings.getString("LSLHelpURL");
 
-	url_string.setArg("[LSL_STRING]", help_string);
+	url_string.setArg("[LSL_STRING]", help_string.empty() ? HELP_LSL_PORTAL_TOPIC : help_string);
 
 	addHelpItemToHistory(help_string);
 
@@ -1507,6 +1549,20 @@ LLUUID LLScriptEdCore::getAssociatedExperience()const
 	return mAssociatedExperience;
 }
 
+//void LLScriptEdCore::onChangeFontSize(const LLSD &userdata)
+//{
+//    const std::string font_name = userdata.asString();
+//    gSavedSettings.setString("LSLFontSizeName", font_name);
+//}
+//
+//bool LLScriptEdCore::isFontSizeChecked(const LLSD &userdata)
+//{
+//    const std::string current_size_name = LLScriptEditor::getScriptFontSize();
+//    const std::string size_name = userdata.asString();
+//
+//    return (size_name == current_size_name);
+//}
+
 void LLLiveLSLEditor::setExperienceIds( const LLSD& experience_ids )
 {
 	mExperienceIds=experience_ids;
@@ -1713,7 +1769,21 @@ bool LLScriptEdContainer::onExternalChange(const std::string& filename)
 	return true;
 }
 
-/// ---------------------------------------------------------------------------
+BOOL LLScriptEdContainer::handleKeyHere(KEY key, MASK mask) 
+{
+    if (('A' == key) && (MASK_CONTROL == (mask & MASK_MODIFIERS)))
+    {
+        mScriptEd->selectAll();
+        return TRUE;
+    }
+
+    if (!LLPreview::handleKeyHere(key, mask)) 
+    {
+        return mScriptEd->handleKeyHere(key, mask);
+    }
+    return TRUE;
+}
+    /// ---------------------------------------------------------------------------
 /// LLPreviewLSL
 /// ---------------------------------------------------------------------------
 
@@ -1754,6 +1824,14 @@ LLPreviewLSL::LLPreviewLSL(const LLSD& key )
 	mPendingUploads(0)
 {
 	mFactoryMap["script panel"] = LLCallbackMap(LLPreviewLSL::createScriptEdPanel, this);
+
+    mItemObserver = new LLScriptMovedObserver(this);
+}
+
+LLPreviewLSL::~LLPreviewLSL() 
+{ 
+    delete mItemObserver;
+    mItemObserver = NULL;
 }
 
 // virtual
@@ -1765,10 +1843,14 @@ BOOL LLPreviewLSL::postBuild()
 	if (item)
 	{
 		getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+
+        std::string item_path = get_category_path(item->getParentUUID());
+        getChild<LLUICtrl>("path_txt")->setValue(item_path);
+        getChild<LLUICtrl>("path_txt")->setToolTip(item_path);
 	}
 	childSetCommitCallback("desc", LLPreview::onText, this);
 	getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
-
+ 
 	return LLPreview::postBuild();
 }
 
@@ -1780,7 +1862,12 @@ void LLPreviewLSL::draw()
 		setTitle(LLTrans::getString("ScriptWasDeleted"));
 		mScriptEd->setItemRemoved(TRUE);
 	}
-
+    else if (mDirty) 
+    {
+        std::string item_path = get_category_path(item->getParentUUID());
+        getChild<LLUICtrl>("path_txt")->setValue(item_path);
+        getChild<LLUICtrl>("path_txt")->setToolTip(item_path);
+    }
 	LLPreview::draw();
 }
 // virtual
@@ -2151,7 +2238,8 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) :
 	mPendingUploads(0),
 	mIsModifiable(FALSE),
 	mIsNew(false),
-	mIsSaving(FALSE)
+	mIsSaving(FALSE),
+    mObjectName("")
 {
 	mFactoryMap["script ed panel"] = LLCallbackMap(LLLiveLSLEditor::createScriptEdPanel, this);
 }
@@ -2311,6 +2399,7 @@ void LLLiveLSLEditor::loadAsset()
 			}
 
 			refreshFromItem();
+            getChild<LLUICtrl>("obj_name")->setValue(mObjectName);
 			// This is commented out, because we don't completely
 			// handle script exports yet.
 			/*
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 9a7977a0d5ae7b08ac3bc87bbba8c4b521f1fadb..d03cd3132c001e57bf74e5144d2201ad5ec2e7e9 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -36,6 +36,7 @@
 #include "llfloatergotoline.h"
 #include "lllivefile.h"
 #include "llsyntaxid.h"
+#include "llscripteditor.h"
 
 class LLLiveLSLFile;
 class LLMessageSystem;
@@ -52,6 +53,7 @@ class LLViewerInventoryItem;
 class LLScriptEdContainer;
 class LLFloaterGotoLine;
 class LLFloaterExperienceProfile;
+class LLScriptMovedObserver;
 class FSLSLPreprocessor;
 class FSLSLPreProcViewer;
 
@@ -154,7 +156,13 @@ class LLScriptEdCore final : public LLPanel
     void 			setAssetID( const LLUUID& asset_id){ mAssetID = asset_id; };
     LLUUID 			getAssetID() { return mAssetID; }
 
-private:
+    //bool isFontSizeChecked(const LLSD &userdata);
+    //void onChangeFontSize(const LLSD &size_name);
+
+    virtual BOOL handleKeyHere(KEY key, MASK mask);
+    void selectAll() { mEditor->selectAll(); }
+
+  private:
 	// NaCl - LSL Preprocessor
 	LLCachedControl<bool> mLSLPreprocEnabled; 
 	boost::signals2::connection	mTogglePreprocConnection;
@@ -167,8 +175,6 @@ class LLScriptEdCore final : public LLPanel
 
 	void selectFirstError();
 
-	virtual BOOL handleKeyHere(KEY key, MASK mask);
-	
 	void enableSave(BOOL b) {mEnableSave = b;}
 
 protected:
@@ -235,6 +241,8 @@ class LLScriptEdContainer : public LLPreview
 	LLScriptEdContainer(const LLSD& key);
 	LLScriptEdContainer(const LLSD& key, const bool live);
 
+    BOOL handleKeyHere(KEY key, MASK mask);
+
 protected:
 	std::string		getTmpFileName(const std::string& script_name);
 // [SL:KB] - Patch: Build-ScriptRecover | Checked: 2011-11-23 (Catznip-3.2)
@@ -252,6 +260,12 @@ class LLPreviewLSL final : public LLScriptEdContainer
 {
 public:
 	LLPreviewLSL(const LLSD& key );
+    ~LLPreviewLSL();
+
+    LLUUID getScriptID() { return mItemUUID; }
+
+    void setDirty() { mDirty = true; }
+
 	virtual void callbackLSLCompileSucceeded();
 	virtual void callbackLSLCompileFailed(const LLSD& compile_errors);
 
@@ -287,6 +301,8 @@ class LLPreviewLSL final : public LLScriptEdContainer
 	// Can safely close only after both text and bytecode are uploaded
 	S32 mPendingUploads;
 
+    LLScriptMovedObserver* mItemObserver;
+
 };
 
 
@@ -319,6 +335,8 @@ class LLLiveLSLEditor final : public LLScriptEdContainer
 	void requestExperiences();
 	void experienceChanged();
 	void addAssociatedExperience(const LLSD& experience);
+
+    void setObjectName(std::string name) { mObjectName = name; }
 	
 // [SL:KB] - Patch: UI-FloaterSearchReplace | Checked: 2010-11-05 (Catznip-2.3)
 	LLScriptEditor* getEditor() { return (mScriptEd) ? mScriptEd->mEditor : NULL; }
@@ -381,6 +399,7 @@ class LLLiveLSLEditor final : public LLScriptEdContainer
 	LLSD			mExperienceIds;
 
 	LLHandle<LLFloater> mExperienceProfile;
+    std::string mObjectName;
 };
 
 #endif  // LL_LLPREVIEWSCRIPT_H
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index a3424d86bd9df199cdcf6c48e56385af4a66ea43..91b27b14ac4b03bebe300e74e94a8d771ccb30e6 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -657,19 +657,6 @@ void LLSceneMonitor::dumpToFile(const std::string &file_name)
 			}
 		}
 
-		typedef LLTrace::StatType<LLTrace::MemAccumulator> trace_mem;
-		for (auto& it : trace_mem::instance_snapshot())
-		{
-			os << it.getName() << "(KiB)";
-
-			for (S32 frame = 1; frame <= frame_count; frame++)
-			{
-				os << ", " << scene_load_recording.getPrevRecording(frame_count - frame).getMax(it).valueInUnits<LLUnits::Kilobytes>();
-			}
-
-			os << '\n';
-		}
-
 		os.flush();
 		os.close();
 	}
diff --git a/indra/newview/llscripteditor.cpp b/indra/newview/llscripteditor.cpp
index 18127846fc2d6e1bc5a9b3f6b390e01fa86fceeb..5e1283d6a9e23b23963b42477a99f7e5cad9daae 100644
--- a/indra/newview/llscripteditor.cpp
+++ b/indra/newview/llscripteditor.cpp
@@ -30,21 +30,23 @@
 
 #include "llsyntaxid.h"
 #include "lllocalcliprect.h"
-
 #include "llviewercontrol.h"
 
+
 const S32	UI_TEXTEDITOR_LINE_NUMBER_MARGIN = 32;
 
 static LLDefaultChildRegistry::Register<LLScriptEditor> r("script_editor");
 
 LLScriptEditor::Params::Params()
 :	show_line_numbers("show_line_numbers", true)
+//    default_font_size("default_font_size", false)
 {}
 
 
 LLScriptEditor::LLScriptEditor(const Params& p)
 :	LLTextEditor(p)
 ,	mShowLineNumbers(p.show_line_numbers)
+//    mUseDefaultFontSize(p.default_font_size)
 {
 	if (mShowLineNumbers)
 	{
@@ -77,6 +79,8 @@ BOOL LLScriptEditor::postBuild()
 		};
 	mFontNameConnection = gSavedSettings.getControl("ScriptFontName")->getCommitSignal()->connect(font_callback);
 	mFontSizeConnection = gSavedSettings.getControl("ScriptFontSize")->getCommitSignal()->connect(font_callback);
+	// [ALCHEMY]
+	//    gSavedSettings.getControl("LSLFontSizeName")->getCommitSignal()->connect(boost::bind(&LLScriptEditor::onFontSizeChange, this)); Our's is better. Don't touch.
 	return LLTextEditor::postBuild();
 }
 
@@ -138,12 +142,11 @@ void LLScriptEditor::drawLineNumbers()
 			// draw the line numbers
 			if(line.mLineNum != last_line_num && line.mRect.mTop <= scrolled_view_rect.mTop)
 			{
-				const LLFontGL *num_font = getFont();
 				const LLWString ltext = utf8str_to_wstring(llformat("%d", line.mLineNum ));
 				BOOL is_cur_line = cursor_line == line.mLineNum;
 				const U8 style = is_cur_line ? LLFontGL::BOLD : LLFontGL::NORMAL;
 				const LLColor4 fg_color = is_cur_line ? mCursorColor : mReadOnlyFgColor;
-				num_font->render(
+				getFont()->render(
 								 ltext, // string to draw
 								 0, // begin offset
 								 UI_TEXTEDITOR_LINE_NUMBER_MARGIN - 2, // x
@@ -171,8 +174,10 @@ void LLScriptEditor::loadKeywords()
     LL_PROFILE_ZONE_SCOPED;
 	mKeywords.processTokens();
 	
+    LLStyleConstSP style = new LLStyle(LLStyle::Params().font(getFont()).color(mDefaultColor));
+
 	segment_vec_t segment_list;
-	mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this);
+    mKeywords.findSegments(&segment_list, getWText(), *this, style);
 	
 	mSegments.clear();
 	segment_set_t::iterator insert_it = mSegments.begin();
@@ -187,9 +192,12 @@ void LLScriptEditor::updateSegments()
 	if (mReflowIndex < S32_MAX && mKeywords.isLoaded() && mParseOnTheFly)
 	{
         LL_PROFILE_ZONE_SCOPED;
+
+        LLStyleConstSP style = new LLStyle(LLStyle::Params().font(getFont()).color(mDefaultColor));
+
 		// HACK:  No non-ascii keywords for now
 		segment_vec_t segment_list;
-		mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this);
+        mKeywords.findSegments(&segment_list, getWText(), *this, style);
 		
 		clearSegments();
 		for (segment_vec_t::iterator list_it = segment_list.begin(); list_it != segment_list.end(); ++list_it)
@@ -241,3 +249,24 @@ void LLScriptEditor::drawSelectionBackground()
 		}
 	}
 }
+
+// [ALCHEMY]
+//std::string LLScriptEditor::getScriptFontSize()
+//{ 
+//    static LLCachedControl<std::string> size_name(gSavedSettings, "LSLFontSizeName", "Monospace");
+//    return size_name;
+//}
+//
+//LLFontGL* LLScriptEditor::getScriptFont()
+//{
+//    std::string font_size_name = mUseDefaultFontSize ? "Monospace" : getScriptFontSize();
+//    return LLFontGL::getFont(LLFontDescriptor("Monospace", font_size_name, 0));
+//}
+//
+//void LLScriptEditor::onFontSizeChange() 
+//{
+//    if (!mUseDefaultFontSize)
+//    {
+//        needsReflow();
+//    }
+//}
diff --git a/indra/newview/llscripteditor.h b/indra/newview/llscripteditor.h
index 5aa02b8d212e768e978288ec0ecc7540ffd9b9eb..c187fce206c3e6cb8e7c296f91bad3daecb9315b 100644
--- a/indra/newview/llscripteditor.h
+++ b/indra/newview/llscripteditor.h
@@ -37,7 +37,7 @@ class LLScriptEditor : public LLTextEditor
 	struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>
 	{
 		Optional<bool>		show_line_numbers;
-		
+//        Optional<bool> default_font_size;
 		Params();
 	};
 	
@@ -53,7 +53,11 @@ class LLScriptEditor : public LLTextEditor
 	LLKeywords::keyword_iterator_t keywordsBegin()	{ return mKeywords.begin(); }
 	LLKeywords::keyword_iterator_t keywordsEnd()	{ return mKeywords.end(); }
 	
-protected:
+//    static std::string getScriptFontSize();
+//    LLFontGL* getScriptFont();
+//    void onFontSizeChange();
+
+  protected:
 	friend class LLUICtrlFactory;
 	LLScriptEditor(const Params& p);
 	
@@ -66,7 +70,7 @@ class LLScriptEditor : public LLTextEditor
 	
 	LLKeywords	mKeywords;
 	bool		mShowLineNumbers;
-
+//    bool mUseDefaultFontSize;
 	boost::signals2::connection mFontNameConnection;
 	boost::signals2::connection mFontSizeConnection;
 };
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
index bfa453a0ae1862f72286ef4be3453f13e7e2a734..efd84eaa6dfbc7f8cca9e110c21e591c92745f0b 100644
--- a/indra/newview/llscrollingpanelparam.cpp
+++ b/indra/newview/llscrollingpanelparam.cpp
@@ -259,19 +259,15 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )
 
 		// Make sure we're not taking the slider out of bounds
 		// (this is where some simple UI limits are stored)
-		F32 new_percent = weightToPercent(new_weight);
-		LLSliderCtrl* slider = getChild<LLSliderCtrl>("param slider");
-		if (slider)
+		F32 new_percent = weightToSlider(new_weight);
+		if (mSlider->getMinValue() < new_percent
+			&& new_percent < mSlider->getMaxValue())
 		{
-			if (slider->getMinValue() < new_percent
-				&& new_percent < slider->getMaxValue())
-			{
-				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight);
-				mWearable->writeToAvatar(gAgentAvatarp);
-				gAgentAvatarp->updateVisualParams();
+			mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight);
+			mWearable->writeToAvatar(gAgentAvatarp);
+			gAgentAvatarp->updateVisualParams();
 
-				slider->setValue( weightToPercent( new_weight ) );
-			}
+			mSlider->setValue( weightToSlider( new_weight ) );
 		}
 	}
 }
@@ -292,17 +288,13 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )
 		F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();
 		// step a fraction in the negative directiona
 		F32 new_weight = current_weight - (range / 10.f);
-		F32 new_percent = self->weightToPercent(new_weight);
-		LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider");
-		if (slider)
+		F32 new_percent = self->weightToSlider(new_weight);
+		if (self->mSlider->getMinValue() < new_percent
+			&& new_percent < self->mSlider->getMaxValue())
 		{
-			if (slider->getMinValue() < new_percent
-				&& new_percent < slider->getMaxValue())
-			{
-				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
-				self->mWearable->writeToAvatar(gAgentAvatarp);
-				slider->setValue( self->weightToPercent( new_weight ) );
-			}
+			self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
+			self->mWearable->writeToAvatar(gAgentAvatarp);
+			self->mSlider->setValue( self->weightToSlider( new_weight ) );
 		}
 	}
 
@@ -326,33 +318,16 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )
 			F32 range = self->mHintMax->getVisualParamWeight() - self->mHintMin->getVisualParamWeight();
 			// step a fraction in the negative direction
 			F32 new_weight = current_weight + (range / 10.f);
-			F32 new_percent = self->weightToPercent(new_weight);
-			LLSliderCtrl* slider = self->getChild<LLSliderCtrl>("param slider");
-			if (slider)
+			F32 new_percent = self->weightToSlider(new_weight);
+			if (self->mSlider->getMinValue() < new_percent
+				&& new_percent < self->mSlider->getMaxValue())
 			{
-				if (slider->getMinValue() < new_percent
-					&& new_percent < slider->getMaxValue())
-				{
-					self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
-					self->mWearable->writeToAvatar(gAgentAvatarp);
-					slider->setValue( self->weightToPercent( new_weight ) );
-				}
+				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);
+				self->mWearable->writeToAvatar(gAgentAvatarp);
+				self->mSlider->setValue( self->weightToSlider( new_weight ) );
 			}
 		}
 	}
 
 	LLVisualParamHint::requestHintUpdates( self->mHintMin, self->mHintMax );
 }
-
-
-F32 LLScrollingPanelParam::weightToPercent( F32 weight )
-{
-	LLViewerVisualParam* param = mParam;
-	return (weight - param->getMinWeight()) /  (param->getMaxWeight() - param->getMinWeight()) * 100.f;
-}
-
-F32 LLScrollingPanelParam::percentToWeight( F32 percent )
-{
-	LLViewerVisualParam* param = mParam;
-	return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight();
-}
diff --git a/indra/newview/llscrollingpanelparam.h b/indra/newview/llscrollingpanelparam.h
index c7a47d5c7a585fe924de09d0ea07ed269d99ac01..dc344486fc6b8469389efea7e1b74eecb3b286e7 100644
--- a/indra/newview/llscrollingpanelparam.h
+++ b/indra/newview/llscrollingpanelparam.h
@@ -61,9 +61,6 @@ class LLScrollingPanelParam : public LLScrollingPanelParamBase
 	void				onHintMouseDown( LLVisualParamHint* hint );
 	void				onHintHeldDown( LLVisualParamHint* hint );
 
-	F32					weightToPercent( F32 weight );
-	F32					percentToWeight( F32 percent );
-
 public:
 	// Constants for LLPanelVisualParam
 	const static F32 PARAM_STEP_TIME_THRESHOLD;
diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp
index fe7a3627235560c7cd38b126d7417477c928aece..2a6c25235df8b00450a87ff95125b5135d97c5e2 100644
--- a/indra/newview/llscrollingpanelparambase.cpp
+++ b/indra/newview/llscrollingpanelparambase.cpp
@@ -43,6 +43,7 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan
 						      LLViewerJointMesh* mesh, LLViewerVisualParam* param, BOOL allow_modify, LLWearable* wearable, LLJoint* jointp, BOOL use_hints)
 	: LLScrollingPanel( panel_params ),
 	  mParam(param),
+	  mSlider(nullptr),
 	  mAllowModify(allow_modify),
 	  mWearable(wearable)
 {
@@ -50,13 +51,15 @@ LLScrollingPanelParamBase::LLScrollingPanelParamBase( const LLPanel::Params& pan
 		buildFromFile( "panel_scrolling_param.xml");
 	else
 		buildFromFile( "panel_scrolling_param_base.xml");
-	
-	getChild<LLUICtrl>("param slider")->setValue(weightToPercent(param->getWeight()));
+
+	mSlider = getChild<LLSliderCtrl>("param slider");
+	mSlider->setMaxValue(100.f * (mParam->getMaxWeight() - mParam->getMinWeight()));
+	mSlider->setValue(weightToSlider(param->getWeight()));
 
 	std::string display_name = LLTrans::getString(param->getDisplayName());
-	getChild<LLUICtrl>("param slider")->setLabelArg("[DESC]", display_name);
-	getChildView("param slider")->setEnabled(mAllowModify);
-	childSetCommitCallback("param slider", LLScrollingPanelParamBase::onSliderMoved, this);
+	mSlider->setLabelArg("[DESC]", display_name);
+	mSlider->setEnabled(mAllowModify);
+	mSlider->setCommitCallback(boost::bind(LLScrollingPanelParamBase::onSliderMoved, mSlider, this));
 
 	setVisible(FALSE);
 	setBorderVisible( FALSE );
@@ -77,9 +80,9 @@ void LLScrollingPanelParamBase::updatePanel(BOOL allow_modify)
 	}
 
 	F32 current_weight = mWearable->getVisualParamWeight( param->getID() );
-	getChild<LLUICtrl>("param slider")->setValue(weightToPercent( current_weight ) );
+	mSlider->setValue(weightToSlider( current_weight ) );
 	mAllowModify = allow_modify;
-	getChildView("param slider")->setEnabled(mAllowModify);
+	mSlider->setEnabled(mAllowModify);
 }
 
 // static
@@ -90,7 +93,7 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)
 	LLViewerVisualParam* param = self->mParam;
 	
 	F32 current_weight = self->mWearable->getVisualParamWeight( param->getID() );
-	F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() );
+	F32 new_weight = self->sliderToWeight( (F32)slider->getValue().asReal() );
 	if (current_weight != new_weight )
 	{
 		self->mWearable->setVisualParamWeight( param->getID(), new_weight);
@@ -99,14 +102,12 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)
 	}
 }
 
-F32 LLScrollingPanelParamBase::weightToPercent( F32 weight )
+F32 LLScrollingPanelParamBase::weightToSlider(F32 weight)
 {
-	LLViewerVisualParam* param = mParam;
-	return (weight - param->getMinWeight()) /  (param->getMaxWeight() - param->getMinWeight()) * 100.f;
+	return (weight - mParam->getMinWeight()) * 100.f;
 }
 
-F32 LLScrollingPanelParamBase::percentToWeight( F32 percent )
+F32 LLScrollingPanelParamBase::sliderToWeight(F32 slider)
 {
-	LLViewerVisualParam* param = mParam;
-	return percent / 100.f * (param->getMaxWeight() - param->getMinWeight()) + param->getMinWeight();
+	return slider / 100.f + mParam->getMinWeight();
 }
diff --git a/indra/newview/llscrollingpanelparambase.h b/indra/newview/llscrollingpanelparambase.h
index 95388262514bc455c4e6f0170157d9c9c366fd37..e7f88a21bd0037cb8d12d0ff37380ffe02b2a94d 100644
--- a/indra/newview/llscrollingpanelparambase.h
+++ b/indra/newview/llscrollingpanelparambase.h
@@ -36,6 +36,7 @@ class LLViewerVisualParam;
 class LLWearable;
 class LLVisualParamHint;
 class LLViewerVisualParam;
+class LLSliderCtrl;
 class LLJoint;
 
 class LLScrollingPanelParamBase : public LLScrollingPanel
@@ -49,11 +50,13 @@ class LLScrollingPanelParamBase : public LLScrollingPanel
 
 	static void			onSliderMoved(LLUICtrl* ctrl, void* userdata);
 
-	F32					weightToPercent( F32 weight );
-	F32					percentToWeight( F32 percent );
+	F32					weightToSlider(F32 weight);
+	F32					sliderToWeight(F32 slider);
 
 public:
 	LLViewerVisualParam* mParam;
+	LLSliderCtrl* mSlider;
+
 protected:
 	BOOL mAllowModify;
 	LLWearable *mWearable;
diff --git a/indra/newview/llsearchhistory.cpp b/indra/newview/llsearchhistory.cpp
index b3de712ab55210df05241300eee07d446d0cca47..6594f38ef69526259bd442e93eaa37ae2fb0e8c2 100644
--- a/indra/newview/llsearchhistory.cpp
+++ b/indra/newview/llsearchhistory.cpp
@@ -78,6 +78,17 @@ bool LLSearchHistory::save()
 {
 	// build filename for each user
 	std::string resolved_filename = getHistoryFilePath();
+
+    // delete the file if it is empty or contains only empty entries
+    if (std::find_if(mSearchHistory.begin(), mSearchHistory.end(), [](const LLSearchHistoryItem& x)
+        {
+            return !x.search_query.empty();
+        }) == mSearchHistory.end())
+    {
+        remove(resolved_filename.c_str());
+        return true;
+    }
+
 	// open a file for writing
 	llofstream file(resolved_filename.c_str());
 	if (!file.is_open())
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index fdd8b3c9ac6479318270ce9a110ee4b44cfd441e..59ae417cb39d6c0c22272bd1275e045532bc0e10 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -4271,10 +4271,10 @@ BOOL LLSelectMgr::isMovableAvatarSelected()
 {
 	if (mAllowSelectAvatar && getSelection()->getObjectCount() == 1)
 	{
-		if (auto ret = getSelection()->getFirstRootObject())
-		{
-			return  (ret->isAvatar()) && getSelection()->getFirstMoveableNode(TRUE);
-		}
+        // nothing but avatar should be selected, so check that
+        // there is only one selected object and it is a root
+        LLViewerObject* obj = getSelection()->getFirstRootObject();
+		return obj && obj->isAvatar() && getSelection()->getFirstMoveableNode(TRUE);
 	}
 	return FALSE;
 }
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index 485b8af58b07930fd28644097c211ec10787a5e6..87b78c5fb7ecea3c3ee657674b844e789b53b0a6 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file llurlsimstring.cpp (was llsimurlstring.cpp)
  * @brief Handles "SLURL fragments" like Ahern/123/45 for
  * startup processing, login screen, prefs, etc.
@@ -6,21 +6,21 @@
  * $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$
  */
@@ -40,7 +40,7 @@
 // [/RLVa:KB]
 const char* LLSLURL::SLURL_HTTP_SCHEME		 = "http";
 const char* LLSLURL::SLURL_HTTPS_SCHEME		 = "https";
-const char* LLSLURL::SLURL_SECONDLIFE_SCHEME	 = "secondlife";
+const char* LLSLURL::SLURL_SECONDLIFE_SCHEME = "secondlife";
 const char* LLSLURL::SLURL_SECONDLIFE_PATH	 = "secondlife";
 const char* LLSLURL::SLURL_COM		         = "slurl.com";
 // For DnD - even though www.slurl.com redirects to slurl.com in a browser, you  can copy and drag
@@ -59,475 +59,472 @@ const char* LLSLURL::SIM_LOCATION_LAST           = "last";
 // resolve a simstring from a slurl
 LLSLURL::LLSLURL(const std::string& slurl)
 {
-	// by default we go to agni.
-	mType = INVALID;
-
-	if(slurl == SIM_LOCATION_HOME)
-	{
-		mType = HOME_LOCATION;
-	}
-	else if(slurl.empty() || (slurl == SIM_LOCATION_LAST))
-	{
-		mType = LAST_LOCATION;
-	}
-	else
-	{
-		LLURI slurl_uri;
-		// parse the slurl as a uri
-		if(slurl.find(':') == std::string::npos)
-		{
-			// There may be no scheme ('secondlife:' etc.) passed in.  In that case
-			// we want to normalize the slurl by putting the appropriate scheme
-			// in front of the slurl.  So, we grab the appropriate slurl base
-			// from the grid manager which may be http://slurl.com/secondlife/ for maingrid, or
-			// https://<hostname>/region/ for Standalone grid (the word region, not the region name)
-			// these slurls are typically passed in from the 'starting location' box on the login panel,
-			// where the user can type in <regionname>/<x>/<y>/<z>
-			std::string fixed_slurl = LLGridManager::getInstance()->getSLURLBase();
-
-			// the slurl that was passed in might have a prepended /, or not.  So,
-			// we strip off the prepended '/' so we don't end up with http://slurl.com/secondlife/<region>/<x>/<y>/<z>
-			// or some such.
-			
-			if(slurl[0] == '/')
-		    {
-				fixed_slurl += slurl.substr(1);
-		    }
-			else
-		    {
-				fixed_slurl += slurl;
-		    }
-			// We then load the slurl into a LLURI form
-			slurl_uri = LLURI(fixed_slurl);
-		}
-		else
-		{
-		    // as we did have a scheme, implying a URI style slurl, we
-		    // simply parse it as a URI
-		    slurl_uri = LLURI(slurl);
-		}
-		
-		LLSD path_array = slurl_uri.pathArray();
-		
-		// determine whether it's a maingrid URI or an Standalone/open style URI
-		// by looking at the scheme.  If it's a 'secondlife:' slurl scheme or
-		// 'sl:' scheme, we know it's maingrid
-		
-		// At the end of this if/else block, we'll have determined the grid,
-		// and the slurl type (APP or LOCATION)
-		if(slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME)
-		{
-			// parse a maingrid style slurl.  We know the grid is maingrid
-			// so grab it.
-			// A location slurl for maingrid (with the special schemes) can be in the form
-			// secondlife://<regionname>/<x>/<y>/<z>
-			// or
-			// secondlife://<Grid>/secondlife/<region>/<x>/<y>/<z>
-			// where if grid is empty, it specifies Agni
-			
-			// An app style slurl for maingrid can be
-			// secondlife://<Grid>/app/<app parameters>
-			// where an empty grid implies Agni
-			
-			// we'll start by checking the top of the 'path' which will be 
-			// either 'app', 'secondlife', or <x>.
-			
-			// default to maingrid
-			
-			mGrid = MAINGRID;
-			
-			if ((path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) ||
-				(path_array[0].asString() == LLSLURL::SLURL_APP_PATH))
-		    {
-				// it's in the form secondlife://<grid>/(app|secondlife)
-				// so parse the grid name to derive the grid ID
-				if (!slurl_uri.hostName().empty())
-				{
-					mGrid = LLGridManager::getInstance()->getGridId(slurl_uri.hostName());
-				}
-				else if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)
-				{
-					// If the slurl is in the form secondlife:///secondlife/<region> form, 
-					// then we are in fact on maingrid.  
-					mGrid = MAINGRID;
-				}
-				else if(path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
-				{
-					// for app style slurls, where no grid name is specified, assume the currently
-					// selected or logged in grid.
-					mGrid =  LLGridManager::getInstance()->getGridId();
-				}
-
-				if(mGrid.empty())
-				{
-					// we couldn't find the grid in the grid manager, so bail
-					LL_WARNS("AppInit")<<"unable to find grid"<<LL_ENDL;
-					return;
-				}
-				// set the type as appropriate.
-				if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)
-				{
-					mType = LOCATION;
-				}
-				else
-				{
-					mType = APP;
-				}
-				path_array.erase(0);
-		    }
-			else
-		    {
-				if(slurl_uri.hostName() == LLSLURL::SLURL_APP_PATH)
+    // by default we go to agni.
+    mType = INVALID;
+
+    if (slurl.empty() || (slurl == SIM_LOCATION_LAST))
+    {
+        mType = LAST_LOCATION;
+    }
+    else if (slurl == SIM_LOCATION_HOME)
+    {
+        mType = HOME_LOCATION;
+    }
+    else
+    {
+        LLURI slurl_uri;
+        // parse the slurl as a uri
+        if (slurl.find(':') == std::string::npos)
+        {
+            // There may be no scheme ('secondlife:' etc.) passed in.  In that case
+            // we want to normalize the slurl by putting the appropriate scheme
+            // in front of the slurl.  So, we grab the appropriate slurl base
+            // from the grid manager which may be http://slurl.com/secondlife/ for maingrid, or
+            // https://<hostname>/region/ for Standalone grid (the word region, not the region name)
+            // these slurls are typically passed in from the 'starting location' box on the login panel,
+            // where the user can type in <regionname>/<x>/<y>/<z>
+            std::string fixed_slurl = LLGridManager::getInstance()->getSLURLBase();
+
+            // the slurl that was passed in might have a prepended /, or not.  So,
+            // we strip off the prepended '/' so we don't end up with http://slurl.com/secondlife/<region>/<x>/<y>/<z>
+            // or some such.
+
+            if (slurl[0] == '/')
+            {
+                fixed_slurl += slurl.substr(1);
+            }
+            else
+            {
+                fixed_slurl += slurl;
+            }
+            // We then load the slurl into a LLURI form
+            slurl_uri = LLURI(fixed_slurl);
+        }
+        else
+        {
+            // as we did have a scheme, implying a URI style slurl, we
+            // simply parse it as a URI
+            slurl_uri = LLURI(slurl);
+        }
+
+        LLSD path_array = slurl_uri.pathArray();
+
+        // determine whether it's a maingrid URI or an Standalone/open style URI
+        // by looking at the scheme.  If it's a 'secondlife:' slurl scheme or
+        // 'sl:' scheme, we know it's maingrid
+
+        // At the end of this if/else block, we'll have determined the grid,
+        // and the slurl type (APP or LOCATION)
+        if (slurl_uri.scheme() == LLSLURL::SLURL_SECONDLIFE_SCHEME)
+        {
+            if (path_array.size() == 0
+                && slurl_uri.authority().empty()
+                && slurl_uri.escapedQuery().empty())
+            {
+                mType = EMPTY;
+                // um, we need a path...
+                return;
+            }
+
+            // parse a maingrid style slurl.  We know the grid is maingrid
+            // so grab it.
+            // A location slurl for maingrid (with the special schemes) can be in the form
+            // secondlife://<regionname>/<x>/<y>/<z>
+            // or
+            // secondlife://<Grid>/secondlife/<region>/<x>/<y>/<z>
+            // where if grid is empty, it specifies Agni
+
+            // An app style slurl for maingrid can be
+            // secondlife://<Grid>/app/<app parameters>
+            // where an empty grid implies Agni
+
+            // we'll start by checking the top of the 'path' which will be
+            // either 'app', 'secondlife', or <x>.
+
+            // default to maingrid
+
+            mGrid = MAINGRID;
+
+            if ((path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH) ||
+                (path_array[0].asString() == LLSLURL::SLURL_APP_PATH))
+            {
+                // it's in the form secondlife://<grid>/(app|secondlife)
+                // so parse the grid name to derive the grid ID
+                if (!slurl_uri.hostName().empty())
+                {
+                    mGrid = LLGridManager::getInstance()->getGridId(slurl_uri.hostName());
+                }
+                else if(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)
+                {
+                    // If the slurl is in the form secondlife:///secondlife/<region> form,
+                    // then we are in fact on maingrid.
+                    mGrid = MAINGRID;
+                }
+                else if(path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
+                {
+                    // for app style slurls, where no grid name is specified, assume the currently
+                    // selected or logged in grid.
+                    mGrid =  LLGridManager::getInstance()->getGridId();
+                }
+
+                if (mGrid.empty())
+                {
+                    // we couldn't find the grid in the grid manager, so bail
+                    LL_WARNS("AppInit")<<"unable to find grid"<<LL_ENDL;
+                    return;
+                }
+                // set the type as appropriate.
+                if (path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH)
+                {
+                    mType = LOCATION;
+                }
+                else
+                {
+                    mType = APP;
+                }
+                path_array.erase(0);
+            }
+            else
+            {
+                if (slurl_uri.hostName() == LLSLURL::SLURL_APP_PATH)
                 {
                     mType = APP;
                 }
                 else
                 {
                     // it wasn't a /secondlife/<region> or /app/<params>, so it must be secondlife://<region>
-				// therefore the hostname will be the region name, and it's a location type
-				mType = LOCATION;
-				// 'normalize' it so the region name is in fact the head of the path_array
-				path_array.insert(0, slurl_uri.hostName());
+                    // therefore the hostname will be the region name, and it's a location type
+                    mType = LOCATION;
+                    // 'normalize' it so the region name is in fact the head of the path_array
+                    path_array.insert(0, slurl_uri.hostName());
                 }
-		    }
-		}
-		else if((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME) ||
-			(slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) ||
+            }
+        }
+        else if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME) ||
+		   (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || 
 			(slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_INFO_SCHEME) ||
-			(slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME))
-		{
-			// We're dealing with either a Standalone style slurl or slurl.com slurl
-			if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||
-				(slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) ||
-				(slurl_uri.hostName() == LLSLURL::MAPS_SECONDLIFE_COM))
-			{
-				// slurl.com implies maingrid
-				mGrid = MAINGRID;
-			}
-		    else
-			{
-				// Don't try to match any old http://<host>/ URL as a SLurl.
-				// SLE SLurls will have the grid hostname in the URL, so only
-				// match http URLs if the hostname matches the grid hostname
-				// (or its a slurl.com or maps.secondlife.com URL).
-				if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME ||
-					 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) &&
+		   (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME))
+        {
+		    // We're dealing with either a Standalone style slurl or slurl.com slurl
+		  if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||
+		      (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || 
+		      (slurl_uri.hostName() == LLSLURL::MAPS_SECONDLIFE_COM))
+            {
+                // slurl.com implies maingrid
+                mGrid = MAINGRID;
+            }
+            else
+            {
+                // Don't try to match any old http://<host>/ URL as a SLurl.
+                // SLE SLurls will have the grid hostname in the URL, so only
+                // match http URLs if the hostname matches the grid hostname
+                // (or its a slurl.com or maps.secondlife.com URL).
+                if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME ||
+                     slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) &&
 					LLGridManager::getInstance()->getGridByProbing(slurl_uri.hostName()) != LLGridManager::getInstance()->getGrid())
-				{
-					return;
-				}
+                {
+                    return;
+                }
 
-				// As it's a Standalone grid/open, we will always have a hostname, as Standalone/open  style
-				// urls are properly formed, unlike the stinky maingrid style
+                // As it's a Standalone grid/open, we will always have a hostname, as Standalone/open  style
+                // urls are properly formed, unlike the stinky maingrid style
 				mGrid = slurl_uri.hostNameAndPort();
-			}
-		    if (path_array.size() == 0)
-			{
-				// um, we need a path...
-				return;
-			}
-			
-			// we need to normalize the urls so
-			// the path portion starts with the 'command' that we want to do
-			// it can either be region or app.  
-		    if ((path_array[0].asString() == LLSLURL::SLURL_REGION_PATH) ||
-				(path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH))
-			{
-				// strip off 'region' or 'secondlife'
-				path_array.erase(0);
-				// it's a location
-				mType = LOCATION;
-			}
-			else if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
-			{
-				mType = APP;
-				path_array.erase(0);
-				// leave app appended.  
-			}
-			else
-			{
-				// not a valid https/http/x-grid-location-info slurl, so it'll likely just be a URL
-				return;
-			}
-		}
-		else
-		{
-		    // invalid scheme, so bail
-		    return;
-		}
-		
-		
-		if(path_array.size() == 0)
-		{
-			// we gotta have some stuff after the specifier as to whether it's a region or command
-			return;
-		}
-		
-		// now that we know whether it's an app slurl or a location slurl,
-		// parse the slurl into the proper data structures.
-		if(mType == APP)
-		{		
-			// grab the app command type and strip it (could be a command to jump somewhere, 
-			// or whatever )
-			mAppCmd = path_array[0].asString();
-			path_array.erase(0);
-			
-			// Grab the parameters
-			mAppPath = path_array;
-			// and the query
-			mAppQuery = slurl_uri.query();
-			mAppQueryMap = slurl_uri.queryMap();
-			return;
-		}
-		else if(mType == LOCATION)
-		{
-			// at this point, head of the path array should be [ <region>, <x>, <y>, <z> ] where x, y and z 
-			// are collectively optional
-			// are optional
-
-			mRegion = LLURI::unescape(path_array[0].asString());
-
-			if(LLStringUtil::containsNonprintable(mRegion))
-			{
-				LLStringUtil::stripNonprintable(mRegion);
-			}
-
-			path_array.erase(0);
-			
-			// parse the x, y, and optionally z
-			if(path_array.size() >= 2)
-			{	
-			  
-			  mPosition = LLVector3(path_array); // this construction handles LLSD without all components (values default to 0.f)
-			  if((F32(mPosition[VX]) < 0.f) || 
-                             (mPosition[VX] > 8192.f) ||
-			     (F32(mPosition[VY]) < 0.f) || 
-                             (mPosition[VY] > 8192.f))
-			    {
-			      mType = INVALID;
-			      return;
-			    }
- 
-			}
-			else
-			{
-				// if x and y were not fully passed in, go to the middle of the region.
-				// teleport will adjust the actual location to make sure you're on the ground
-				// and such
-				mPosition = LLVector3(REGION_WIDTH_METERS/2, REGION_WIDTH_METERS/2, 0);
-			}
-		}
-	}
+            }
+            if (path_array.size() == 0)
+            {
+                // um, we need a path...
+                return;
+            }
+
+            // we need to normalize the urls so
+            // the path portion starts with the 'command' that we want to do
+            // it can either be region or app.
+            if ((path_array[0].asString() == LLSLURL::SLURL_REGION_PATH) ||
+                (path_array[0].asString() == LLSLURL::SLURL_SECONDLIFE_PATH))
+            {
+                // strip off 'region' or 'secondlife'
+                path_array.erase(0);
+                // it's a location
+                mType = LOCATION;
+            }
+            else if (path_array[0].asString() == LLSLURL::SLURL_APP_PATH)
+            {
+                mType = APP;
+                path_array.erase(0);
+                // leave app appended.
+            }
+            else
+            {
+                // not a valid https/http/x-grid-location-info slurl, so it'll likely just be a URL
+                return;
+            }
+        }
+        else
+        {
+            // invalid scheme, so bail
+            return;
+        }
+
+        if (path_array.size() == 0)
+        {
+            // we gotta have some stuff after the specifier as to whether it's a region or command
+            return;
+        }
+
+        // now that we know whether it's an app slurl or a location slurl,
+        // parse the slurl into the proper data structures.
+        if (mType == APP)
+        {
+            // grab the app command type and strip it (could be a command to jump somewhere,
+            // or whatever )
+            mAppCmd = path_array[0].asString();
+            path_array.erase(0);
+
+            // Grab the parameters
+            mAppPath = path_array;
+            // and the query
+            mAppQuery = slurl_uri.query();
+            mAppQueryMap = slurl_uri.queryMap();
+            return;
+        }
+        else if (mType == LOCATION)
+        {
+            // at this point, head of the path array should be [ <region>, <x>, <y>, <z> ] where x, y and z
+            // are collectively optional
+            // are optional
+
+            mRegion = LLURI::unescape(path_array[0].asString());
+
+            if (LLStringUtil::containsNonprintable(mRegion))
+            {
+                LLStringUtil::stripNonprintable(mRegion);
+            }
+
+            path_array.erase(0);
+
+            // parse the x, y, and optionally z
+            if (path_array.size() >= 2)
+            {
+                mPosition = LLVector3(path_array); // this construction handles LLSD without all components (values default to 0.f)
+			  if((F32(mPosition[VX]) < 0.f) || (mPosition[VX] > 8192.f) ||
+			     (F32(mPosition[VY]) < 0.f) || (mPosition[VY] > 8192.f))
+                {
+                    mType = INVALID;
+                    return;
+                }
+            }
+            else
+            {
+				// if x, y and z were not fully passed in, go to the middle of the region.
+                // teleport will adjust the actual location to make sure you're on the ground
+                // and such
+                mPosition = LLVector3(REGION_WIDTH_METERS / 2, REGION_WIDTH_METERS / 2, 0);
+            }
+        }
+    }
 }
 
-
 // Create a slurl for the middle of the region
-LLSLURL::LLSLURL(const std::string& grid, 
-				 const std::string& region)
+LLSLURL::LLSLURL(const std::string& grid, const std::string& region)
 {
-	mGrid = grid;
-	mRegion = region;
-	mType = LOCATION;
-	mPosition = LLVector3((F64)REGION_WIDTH_METERS/2, (F64)REGION_WIDTH_METERS/2, 0);
+    mGrid = grid;
+    mRegion = region;
+    mType = LOCATION;
+    mPosition = LLVector3((F64)REGION_WIDTH_METERS / 2, (F64)REGION_WIDTH_METERS / 2, 0);
 }
 
-
-
 // create a slurl given the position.  The position will be modded with the region
 // width handling global positions as well
-LLSLURL::LLSLURL(const std::string& grid, 
-		 const std::string& region, 
-		 const LLVector3& position)
+LLSLURL::LLSLURL(const std::string& grid,
+        const std::string& region,
+        const LLVector3& position)
 {
-	mGrid = grid;
-	mRegion = region;
+    mGrid = grid;
+    mRegion = region;
 	S32 x = ll_round(position[VX]);
 	S32 y = ll_round(position[VY]);
 	S32 z = ll_round(position[VZ]);
-	mType = LOCATION;
-	mPosition = LLVector3(x, y, z);
+    mType = LOCATION;
+    mPosition = LLVector3(x, y, z);
 }
 
-
 // create a simstring
-LLSLURL::LLSLURL(const std::string& region, 
-		 const LLVector3& position)
+LLSLURL::LLSLURL(const std::string& region,
+        const LLVector3& position)
 {
-  *this = LLSLURL(LLGridManager::getInstance()->getGridId(),
-		  region, position);
+    *this = LLSLURL(LLGridManager::getInstance()->getGridId(), region, position);
 }
 
 // create a slurl from a global position
-LLSLURL::LLSLURL(const std::string& grid, 
-		 const std::string& region, 
-		 const LLVector3d& global_position)
+LLSLURL::LLSLURL(const std::string& grid,
+         const std::string& region,
+         const LLVector3d& global_position)
 {
-	*this = LLSLURL(grid,
-		  region, LLVector3(global_position.mdV[VX],
-				    global_position.mdV[VY],
-				    global_position.mdV[VZ]));
+	*this = LLSLURL(grid, region,
+        LLVector3(global_position.mdV[VX], global_position.mdV[VY], global_position.mdV[VZ]));
 }
 
 // create a slurl from a global position
-LLSLURL::LLSLURL(const std::string& region, 
-		 const LLVector3d& global_position)
+LLSLURL::LLSLURL(const std::string& region,
+        const LLVector3d& global_position)
 {
-  *this = LLSLURL(LLGridManager::getInstance()->getGridId(),
-		  region, global_position);
+    *this = LLSLURL(LLGridManager::getInstance()->getGridId(),
+        region, global_position);
 }
 
 LLSLURL::LLSLURL(const std::string& command, const LLUUID&id, const std::string& verb)
 {
-  mType = APP;
-  mAppCmd = command;
-  mAppPath = LLSD::emptyArray();
-  mAppPath.append(LLSD(id));
-  mAppPath.append(LLSD(verb));
+    mType = APP;
+    mAppCmd = command;
+    mAppPath = LLSD::emptyArray();
+    mAppPath.append(LLSD(id));
+    mAppPath.append(LLSD(verb));
 }
 
-
 std::string LLSLURL::getSLURLString() const
 {
-	switch(mType)
-	{
-		case HOME_LOCATION:
-			return SIM_LOCATION_HOME;
-		case LAST_LOCATION:
-			return SIM_LOCATION_LAST;
-		case LOCATION:
-			{
-				// lookup the grid
-				S32 x = ll_round( (F32)mPosition[VX] );
-				S32 y = ll_round( (F32)mPosition[VY] );
-				S32 z = ll_round( (F32)mPosition[VZ] );	
+    switch (mType)
+    {
+        case HOME_LOCATION:
+            return SIM_LOCATION_HOME;
+        case LAST_LOCATION:
+            return SIM_LOCATION_LAST;
+        case LOCATION:
+        {
+            // lookup the grid
+            S32 x = ll_round((F32)mPosition[VX]);
+            S32 y = ll_round((F32)mPosition[VY]);
+            S32 z = ll_round((F32)mPosition[VZ]);
 //				return LLGridManager::getInstance()->getSLURLBase(mGrid) + 
 //				LLURI::escape(mRegion) + llformat("/%d/%d/%d",x,y,z); 
 // [RLVa:KB] - Checked: 2010-04-05 (RLVa-1.2.0d) | Added: RLVa-1.2.0d
-				return LLGridManager::getInstance()->getSLURLBase(mGrid) +
+				return LLGridManager::getInstance()->getSLURLBase(mGrid) + 
 					( ((!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) || (!RlvUtil::isNearbyRegion(mRegion)))
 						? (fmt::format(FMT_COMPILE("{:s}/{:d}/{:d}/{:d}"), LLURI::escape(mRegion), x, y, z)) : RlvStrings::getString(RlvStringKeys::Hidden::Region) );
 // [/RLVa:KB]
-			}
-		case APP:
-		{
+        }
+        case APP:
+        {
 			std::string app_url;
 			app_url += LLGridManager::getInstance()->getAppSLURLBase() + "/" + mAppCmd;
 			for(const LLSD& entry : mAppPath.asArray())
-			{
+            {
 				app_url += "/" + entry.asString();
-			}
-			if(mAppQuery.length() > 0)
-			{
+            }
+            if (mAppQuery.length() > 0)
+            {
 				app_url += "?" + mAppQuery;
-			}
+            }
 			return app_url;
-		}	
-		default:
-			LL_WARNS("AppInit") << "Unexpected SLURL type for SLURL string" << (int)mType << LL_ENDL;			
-			return std::string();
-	}
+        }
+        default:
+            LL_WARNS("AppInit") << "Unexpected SLURL type for SLURL string" << (int)mType << LL_ENDL;
+            return std::string();
+    }
 }
 
 std::string LLSLURL::getLoginString() const
 {
-	
-	std::stringstream unescaped_start;
-	switch(mType)
-	{
-		case LOCATION:
-			unescaped_start << "uri:" 
-			<< mRegion << "&" 
-			<< ll_round(mPosition[0]) << "&" 
-			<< ll_round(mPosition[1]) << "&" 
-			<< ll_round(mPosition[2]);
-			break;
-		case HOME_LOCATION:
-			unescaped_start << "home";
-			break;
-		case LAST_LOCATION:
-			unescaped_start << "last";
-			break;
-		default:
-			LL_WARNS("AppInit") << "Unexpected SLURL type ("<<(int)mType <<")for login string"<< LL_ENDL;
-			break;
-	}
-	return  xml_escape_string(unescaped_start.str());
+    std::stringstream unescaped_start;
+    switch (mType)
+    {
+        case LOCATION:
+            unescaped_start << "uri:"
+                << mRegion << "&"
+                << ll_round(mPosition[0]) << "&"
+                << ll_round(mPosition[1]) << "&"
+                << ll_round(mPosition[2]);
+            break;
+        case HOME_LOCATION:
+            unescaped_start << "home";
+            break;
+        case LAST_LOCATION:
+            unescaped_start << "last";
+            break;
+        default:
+            LL_WARNS("AppInit") << "Unexpected SLURL type (" << (int)mType << ")for login string" << LL_ENDL;
+            break;
+    }
+    return  xml_escape_string(unescaped_start.str());
 }
 
-bool LLSLURL::operator==(const LLSLURL& rhs)
+bool LLSLURL::operator ==(const LLSLURL& rhs)
 {
-	if(rhs.mType != mType) return false;
-	switch(mType)
-	{
-		case LOCATION:
-			return ((mGrid == rhs.mGrid) &&
-					(mRegion == rhs.mRegion) &&
-					(mPosition == rhs.mPosition));
-		case APP:
-			return getSLURLString() == rhs.getSLURLString();
-			
-		case HOME_LOCATION:
-		case LAST_LOCATION:
-			return true;
-		default:
-			return false;
-	}
+    if (rhs.mType != mType)
+        return false;
+
+    switch (mType)
+    {
+        case LOCATION:
+            return (mGrid == rhs.mGrid) &&
+                    (mRegion == rhs.mRegion) &&
+                    (mPosition == rhs.mPosition);
+
+        case APP:
+            return getSLURLString() == rhs.getSLURLString();
+
+        case HOME_LOCATION:
+        case LAST_LOCATION:
+            return true;
+
+        default:
+            return false;
+    }
 }
 
 bool LLSLURL::operator !=(const LLSLURL& rhs)
 {
-	return !(*this == rhs);
+    return !(*this == rhs);
 }
 
 std::string LLSLURL::getLocationString() const
 {
-	return llformat("%s/%d/%d/%d",
-					mRegion.c_str(),
-					(int)ll_round(mPosition[0]),
-					(int)ll_round(mPosition[1]),
-					(int)ll_round(mPosition[2]));						 
+    return llformat("%s/%d/%d/%d",
+        mRegion.c_str(),
+        (int)ll_round(mPosition[0]),
+        (int)ll_round(mPosition[1]),
+        (int)ll_round(mPosition[2]));
 }
 
 // static
-const std::string LLSLURL::typeName[NUM_SLURL_TYPES] = 
+const std::string LLSLURL::typeName[NUM_SLURL_TYPES] =
 {
-	"INVALID", 
-	"LOCATION",
-	"HOME_LOCATION",
-	"LAST_LOCATION",
-	"APP",
-	"HELP"
+    "INVALID",
+    "LOCATION",
+    "HOME_LOCATION",
+    "LAST_LOCATION",
+    "APP",
+    "HELP",
+    "EMPTY"
 };
-		
+
 std::string LLSLURL::getTypeString(SLURL_TYPE type)
 {
-	std::string name;
-	if ( type >= INVALID && type < NUM_SLURL_TYPES )
-	{
-		name = LLSLURL::typeName[type];
-	}
-	else
-	{
-		name = llformat("Out of Range (%d)",type);
-	}
-	return name;
+    std::string name;
+    if (type >= INVALID && type < NUM_SLURL_TYPES)
+    {
+        name = LLSLURL::typeName[type];
+    }
+    else
+    {
+        name = llformat("Out of Range (%d)", type);
+    }
+    return name;
 }
 
-
 std::string LLSLURL::asString() const
 {
     std::ostringstream result;
     result
-		<< "   mType: " << LLSLURL::getTypeString(mType)
-		<< "   mGrid: " + getGrid()
-		<< "   mRegion: " + getRegion()
-		<< "   mPosition: " << mPosition
-		<< "   mAppCmd:"  << getAppCmd()
-		<< "   mAppPath:" + getAppPath().asString()
-		<< "   mAppQueryMap:" + getAppQueryMap().asString()
-		<< "   mAppQuery: " + getAppQuery()
-		;
-	
+        << "   mType: " << LLSLURL::getTypeString(mType)
+        << "   mGrid: " + getGrid()
+        << "   mRegion: " + getRegion()
+        << "   mPosition: " << mPosition
+        << "   mAppCmd:"  << getAppCmd()
+        << "   mAppPath:" + getAppPath().asString()
+        << "   mAppQueryMap:" + getAppQueryMap().asString()
+        << "   mAppQuery: " + getAppQuery()
+        ;
+
     return result.str();
 }
-
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 3beff26c74c6569278d86a662e1a9e89873e083b..3f79985cecfb698ef17a316773779cb790dbb36a 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -53,13 +53,14 @@ class LLSLURL
 	static const char* SLURL_REGION_PATH;	
 	
 	// if you modify this enumeration, update typeName as well
-	enum SLURL_TYPE { 
-		INVALID, 
+	enum SLURL_TYPE {
+		INVALID,
 		LOCATION,
 		HOME_LOCATION,
 		LAST_LOCATION,
 		APP,
 		HELP,
+		EMPTY,
 		NUM_SLURL_TYPES // must be last
 	};
 		
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 2215976ac30bda3e8f51e5b9463785e2289b04e6..a56008b456038a3ede675700d21ba7cc62029d71 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -856,10 +856,9 @@ void LLSpatialGroup::rebound()
             LLControlAvatar* controlAvatar = bridge->mDrawable->getVObj()->getControlAvatar();
             if (controlAvatar &&
                 controlAvatar->mDrawable &&
-                controlAvatar->mControlAVBridge)
+                controlAvatar->mControlAVBridge &&
+                controlAvatar->mControlAVBridge->mOctree)
             {
-                llassert(controlAvatar->mControlAVBridge->mOctree);
-
                 LLSpatialGroup* root = (LLSpatialGroup*)controlAvatar->mControlAVBridge->mOctree->getListener(0);
                 if (this == root)
                 {
@@ -1324,17 +1323,8 @@ void drawBox(const LLVector4a& c, const LLVector4a& r)
 
 void drawBoxOutline(const LLVector3& pos, const LLVector3& size)
 {
-
-	llassert(pos.isFinite());
-	llassert(size.isFinite());
-
-	llassert(!llisnan(pos.mV[0]));
-	llassert(!llisnan(pos.mV[1]));
-	llassert(!llisnan(pos.mV[2]));
-
-	llassert(!llisnan(size.mV[0]));
-	llassert(!llisnan(size.mV[1]));
-	llassert(!llisnan(size.mV[2]));
+    if (!pos.isFinite() || !size.isFinite())
+        return;
 
 	LLVector3 v1 = size.scaledVec(LLVector3( 1, 1,1));
 	LLVector3 v2 = size.scaledVec(LLVector3(-1, 1,1));
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 96d6b3027f746fb38b7ce2066707efdfd52c1603..3fceea4c079e0f96e895c6817c28e168d9f7213d 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2591,6 +2591,34 @@ void login_callback(S32 option, void *userdata)
 	}
 }
 
+void release_notes_coro(const std::string url)
+{
+    if (url.empty())
+    {
+        return;
+    }
+
+    LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+    LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+        httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("releaseNotesCoro", httpPolicy));
+    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+    LLCore::HttpOptions::ptr_t httpOpts = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions);
+
+    httpOpts->setHeadersOnly(true); // only making sure it isn't 404 or something like that
+
+    LLSD result = httpAdapter->getAndSuspend(httpRequest, url, httpOpts);
+
+    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+    if (!status)
+    {
+        return;
+    }
+
+    LLWeb::loadURLInternal(url);
+}
+
 /**
 * Check if user is running a new version of the viewer.
 * Display the Release Notes if it's not overriden by the "UpdaterShowReleaseNotes" setting.
@@ -2623,7 +2651,8 @@ void show_release_notes_if_required()
             LLEventPumps::instance().obtain("relnotes").listen(
                 "showrelnotes",
                 [](const LLSD& url) {
-                LLWeb::loadURLInternal(url.asString());
+                    LLCoros::instance().launch("releaseNotesCoro",
+                    boost::bind(&release_notes_coro, url.asString()));
                 return false;
             });
         }
@@ -2631,7 +2660,9 @@ void show_release_notes_if_required()
 #endif // LL_RELEASE_FOR_DOWNLOAD
         {
             LLSD info(LLAppViewer::instance()->getViewerInfo());
-            LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]);
+            std::string url = info["VIEWER_RELEASE_NOTES_URL"].asString();
+            LLCoros::instance().launch("releaseNotesCoro",
+                                       boost::bind(&release_notes_coro, url));
         }
         release_notes_shown = true;
     }
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 3812e832cb785280d957f0a5bb318148c62ef5d1..223a3bdb06e0de6961f046ff1ae54df487b8e715 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -203,6 +203,14 @@ BOOL LLStatusBar::postBuild()
 	mBoxBalance->setVisible(gSavedSettings.getBool("ShowStatusBarBalance"));
 
 	gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2));
+// [ALCHEMY]
+//    gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLStatusBar::onVoiceChanged, this, _2));
+//
+//    if (!gSavedSettings.getBOOL("EnableVoiceChat") && LLAppViewer::instance()->isSecondInstance())
+//    {
+//        // Indicate that second instance started without sound
+//        mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off"));
+//    }
 	gSavedPerAccountSettings.getControl("AlchemyAOEnable")->getCommitSignal()->connect(boost::bind(&LLStatusBar::onAOStateChanged, this));
 
 	mTextFPS = getChild<LLTextBox>("FPSText");
@@ -687,6 +695,17 @@ void LLStatusBar::onVolumeChanged(const LLSD& newvalue)
 	refresh();
 }
 
+// [ALCHEMY]
+//void LLStatusBar::onVoiceChanged(const LLSD& newvalue)
+//{
+//    if (newvalue.asBoolean())
+//    {
+//        // Second instance starts with "VoiceMute_Off" icon, fix it
+//        mBtnVolume->setImageUnselected(LLUI::getUIImage("Audio_Off"));
+//    }
+//    refresh();
+//}
+
 void LLStatusBar::onUpdateFilterTerm()
 {
 	LLWString searchValue = utf8str_to_wstring( mFilterEdit->getValue().asString() );
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index bfba5c781aaf0821dbf941e3b2a16c5c37185773..7be5d00f3f1aafbd8beedc79f722eba7022eeb76 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -101,6 +101,7 @@ class LLStatusBar final
 	
 	void onClickBuyCurrency();
 	void onVolumeChanged(const LLSD& newvalue);
+    void onVoiceChanged(const LLSD& newvalue);
 
 	void onMouseEnterPresetsCamera();
 	void onMouseEnterPresets();
@@ -108,7 +109,6 @@ class LLStatusBar final
 	void onMouseEnterAO();
 	void onMouseEnterVolume();
 	void onMouseEnterNearbyMedia();
-	void onClickScreen(S32 x, S32 y);
 
 	static void onClickAOBtn(void* data);
 	static void onClickVolume(void* data);
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 5eafb6351ee6c044e51852bb02d8e5aee8a641a5..7e5518137b42f7199bcac1311c68be105341ceba 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -348,13 +348,13 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 		}
 
 		// Threads:  Tid
-		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux)
+		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux, U32 request_id)
 		{
             LL_PROFILE_ZONE_SCOPED;
 			LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
 			if (worker)
 			{
- 				worker->callbackDecoded(success, raw, aux);
+ 				worker->callbackDecoded(success, raw, aux, request_id);
 			}
 		}
 	private:
@@ -398,7 +398,7 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 	void callbackCacheWrite(bool success);
 
 	// Threads:  Tid
-	void callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux);
+	void callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux, S32 decode_id);
 	
 	// Threads:  T*
 	void setGetStatus(LLCore::HttpStatus status, const std::string& reason)
@@ -1825,8 +1825,21 @@ bool LLTextureFetchWorker::doWork(S32 param)
 		LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
 						   << " All Data: " << mHaveAllData << LL_ENDL;
 #endif
-		mDecodeHandle = LLAppViewer::getImageDecodeThread()->decodeImage(mFormattedImage, discard, mNeedsAux,
-																  new DecodeResponder(mFetcher, mID, this));
+        // In case worked manages to request decode, be shut down,
+        // then init and request decode again with first decode
+        // still in progress, assign a sufficiently unique id
+        mDecodeHandle = LLAppViewer::getImageDecodeThread()->decodeImage(mFormattedImage,
+                                                                       discard,
+                                                                       mNeedsAux,
+                                                                       new DecodeResponder(mFetcher, mID, this));
+        if (mDecodeHandle == 0)
+        {
+            // Abort, failed to put into queue.
+            // Happens if viewer is shutting down
+            setState(DONE);
+            LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: failed to post for decoding" << LL_ENDL;
+            return true;
+        }
 		// fall though
 	}
 	
@@ -2344,16 +2357,24 @@ void LLTextureFetchWorker::callbackCacheWrite(bool success)
 //////////////////////////////////////////////////////////////////////////////
 
 // Threads:  Tid
-void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux)
+void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImageRaw* aux, S32 decode_id)
 {
 	LLMutexLock lock(&mWorkMutex);										// +Mw
 	if (mDecodeHandle == 0)
 	{
 		return; // aborted, ignore
 	}
+    if (mDecodeHandle != decode_id)
+    {
+        // Queue doesn't support canceling old requests.
+        // This shouldn't normally happen, but in case it's possible that a worked
+        // will request decode, be aborted, reinited then start a new decode
+        LL_DEBUGS(LOG_TXT) << mID << " received obsolete decode's callback" << LL_ENDL;
+        return; // ignore
+    }
 	if (mState != DECODE_IMAGE_UPDATE)
 	{
-// 		LL_WARNS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;
+		LL_DEBUGS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;
 		mDecodeHandle = 0;
 		return;
 	}
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index d71a96ff9880fb5ea8b19eba728aa60415735aed..c3613168553978a077b6451c7f00bae31dc48d25 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -254,7 +254,7 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s
 
     try
     {
-        res = this->parseResponse(httpResults, parseResult, body, translation, detected_lang, err_msg);
+        res = parseResponse(httpResults, parseResult, body, translation, detected_lang, err_msg);
     }
     catch (std::out_of_range&)
     {
@@ -294,8 +294,6 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s
         if (!failure.empty())
             failure(status, err_msg);
     }
-
-
 }
 
 //=========================================================================
@@ -354,7 +352,6 @@ class LLGoogleTranslationHandler : public LLTranslationAPIHandler
         std::string& translation,
         std::string& detected_lang);
     static std::string getAPIKey();
-
 };
 
 //-------------------------------------------------------------------------
@@ -392,15 +389,16 @@ bool LLGoogleTranslationHandler::checkVerificationResponse(
 
 // virtual
 bool LLGoogleTranslationHandler::parseResponse(
-    const LLSD& http_response,
+	const LLSD& http_response,
 	int& status,
 	const std::string& body,
 	std::string& translation,
 	std::string& detected_lang,
 	std::string& err_msg) const
 {
+	const std::string& text = !body.empty() ? body : http_response["error_body"].asStringRef();
     boost::json::error_code ec;
-    boost::json::value root = boost::json::parse(body, ec);
+    boost::json::value root = boost::json::parse(text, ec);
     if (ec.failed())
     {
         err_msg = ec.what();
@@ -495,7 +493,7 @@ void LLGoogleTranslationHandler::verifyKey(const LLSD &key, LLTranslate::KeyVeri
 /*virtual*/
 void LLGoogleTranslationHandler::initHttpHeader(LLCore::HttpHeaders::ptr_t headers, const std::string& user_agent) const
 {
-    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_TEXT_PLAIN);
+    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_JSON);
     headers->append(HTTP_OUT_HEADER_USER_AGENT, user_agent);
 }
 
@@ -505,8 +503,7 @@ void LLGoogleTranslationHandler::initHttpHeader(
     const std::string& user_agent,
     const LLSD &key) const
 {
-    headers->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_TEXT_PLAIN);
-    headers->append(HTTP_OUT_HEADER_USER_AGENT, user_agent);
+    initHttpHeader(headers, user_agent);
 }
 
 LLSD LLGoogleTranslationHandler::sendMessageAndSuspend(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t adapter,
@@ -708,7 +705,7 @@ bool LLAzureTranslationHandler::parseResponse(
     }
 
     detected_lang = lang_val.value();
-    translation = text_val.value();
+    translation = LLURI::unescape(text_val.value());
 
     return true;
 }
@@ -806,8 +803,13 @@ LLSD LLAzureTranslationHandler::sendMessageAndSuspend(LLCoreHttpUtil::HttpCorout
 {
     LLCore::BufferArray::ptr_t rawbody(new LLCore::BufferArray);
     LLCore::BufferArrayStream outs(rawbody.get());
+
+    static const std::string allowed_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "
+                                             "0123456789"
+                                             "-._~";
+
     outs << "[{\"text\":\"";
-    outs << msg;
+    outs << LLURI::escape(msg, allowed_chars);
     outs << "\"}]";
 
     return adapter->postRawAndSuspend(request, url, rawbody, options, headers);
@@ -1295,5 +1297,4 @@ LLTranslationAPIHandler& LLTranslate::getHandler(EService service)
     }
 
     return azure;
-
 }
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index 7c912fa63237236b871d9c1b61e9c73da75e1cca..b160b07d81a5a199667eac447a9baa1d8e2d02c0 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -135,6 +135,11 @@ bool LLURLDispatcherImpl::dispatch(const LLSLURL& slurl,
 								   LLMediaCtrl* web,
 								   bool trusted_browser)
 {
+    // SL-20422 : Clicking the "Bring it back" link on Aditi displays a teleport alert
+    // Stop further processing empty urls like [secondlife:/// Bring it back.]
+    if (slurl.getType() == LLSLURL::EMPTY)
+        return true;
+
 	const bool right_click = false;
 	return dispatchCore(slurl, nav_type, right_click, web, trusted_browser);
 }
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 00aa7b234a707a12b0f60dc84cf7fa6a77f524d8..4a284feb64207ca0afdec2f6e084fdbf686f8de8 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -972,7 +972,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
             // Show the preview panel for textures and sounds to let
             // user know that the image (or snapshot) arrived intact.
             LLInventoryPanel* panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
-            LLInventoryPanel::openInventoryPanelAndSetSelection(TRUE, serverInventoryItem, FALSE, TAKE_FOCUS_NO, (panel == NULL));
+            LLInventoryPanel::openInventoryPanelAndSetSelection(true, serverInventoryItem, false, false, !panel);
 
             // restore keyboard focus
             gFocusMgr.setKeyboardFocus(focus);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index b0242efd0a8e501660d3135e85c708e1e4850086..2e7787b676096762b5544a1f4e320efca2674243 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -312,6 +312,7 @@ void force_error_llerror_msg(void*);
 void force_error_bad_memory_access(void *);
 void force_error_infinite_loop(void *);
 void force_error_software_exception(void *);
+void force_error_os_exception(void*);
 void force_error_driver_crash(void *);
 void force_error_coroutine_crash(void *);
 void force_error_thread_crash(void *);
@@ -2551,6 +2552,15 @@ class LLAdvancedForceErrorSoftwareException : public view_listener_t
 	}
 };
 
+class LLAdvancedForceOSException: public view_listener_t
+{
+    bool handleEvent(const LLSD& userdata)
+    {
+        force_error_os_exception(NULL);
+        return true;
+    }
+};
+
 class LLAdvancedForceErrorSoftwareExceptionCoro : public view_listener_t
 {
     bool handleEvent(const LLSD& userdata)
@@ -3371,6 +3381,15 @@ bool enable_object_select_in_pathfinding_characters()
 	return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() &&  LLSelectMgr::getInstance()->selectGetViewableCharacters();
 }
 
+bool enable_os_exception()
+{
+#if LL_DARWIN
+    return true;
+#else
+    return false;
+#endif
+}
+
 class LLSelfRemoveAllAttachments : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -6338,8 +6357,9 @@ class LLCommunicateNearbyChat : public view_listener_t
 	bool handleEvent(const LLSD& userdata)
 	{
 		LLFloaterIMContainer* im_box = LLFloaterIMContainer::getInstance();
-		bool nearby_visible	= LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat")->isInVisibleChain();
-		if(nearby_visible && im_box->getSelectedSession() == LLUUID() && im_box->getConversationListItemSize() > 1)
+        LLFloaterIMNearbyChat* floater_nearby = LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat");
+        if (floater_nearby->isInVisibleChain() && !floater_nearby->isTornOff() 
+            && im_box->getSelectedSession() == LLUUID() && im_box->getConversationListItemSize() > 1)
 		{
 			im_box->selectNextorPreviousConversation(false);
 		}
@@ -8794,6 +8814,11 @@ void force_error_software_exception(void *)
     LLAppViewer::instance()->forceErrorSoftwareException();
 }
 
+void force_error_os_exception(void*)
+{
+    LLAppViewer::instance()->forceErrorOSSpecificException();
+}
+
 void force_error_driver_crash(void *)
 {
     LLAppViewer::instance()->forceErrorDriverCrash();
@@ -10082,6 +10107,7 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedForceErrorBadMemoryAccessCoro(), "Advanced.ForceErrorBadMemoryAccessCoro");
 	view_listener_t::addMenu(new LLAdvancedForceErrorInfiniteLoop(), "Advanced.ForceErrorInfiniteLoop");
 	view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareException(), "Advanced.ForceErrorSoftwareException");
+    view_listener_t::addMenu(new LLAdvancedForceOSException(), "Advanced.ForceErrorOSException");
 	view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareExceptionCoro(), "Advanced.ForceErrorSoftwareExceptionCoro");
 	view_listener_t::addMenu(new LLAdvancedForceErrorDriverCrash(), "Advanced.ForceErrorDriverCrash");
     view_listener_t::addMenu(new LLAdvancedForceErrorCoroutineCrash(), "Advanced.ForceErrorCoroutineCrash");
@@ -10275,6 +10301,7 @@ void initialize_menus()
 	enable.add("VisibleSelectInPathfindingLinksets", boost::bind(&visible_object_select_in_pathfinding_linksets));
 	commit.add("Pathfinding.Characters.Select", boost::bind(&LLFloaterPathfindingCharacters::openCharactersWithSelectedObjects));
 	enable.add("EnableSelectInPathfindingCharacters", boost::bind(&enable_object_select_in_pathfinding_characters));
+    enable.add("Advanced.EnableErrorOSException", boost::bind(&enable_os_exception));
 
 	view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
 	view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel");
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index bc01f30e6cadbdeb2c36d5d6fbdacfbb3937275f..2d8807694fbeef82a487285bcdd3fdf1d50215b3 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1579,8 +1579,22 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
         else
         {
             // Highlight item
-            // Only show if either ShowInInventory is true OR it is an inventory
-            // offer from an agent and the asset is not previewable
+// [ALCHEMY]
+//            bool show_in_inventory = gSavedSettings.get<bool>("ShowInInventory");
+//            bool auto_open =
+//                show_in_inventory && // don't open if ShowInInventory is FALSE
+//                !from_name.empty();  // don't open if it's not from anyone
+//
+//            // SL-20419 : Don't change active tab if floater is visible
+//           LLFloater* instance = LLFloaterReg::findInstance("inventory");
+//            bool use_main_panel = instance && instance->getVisible();
+//
+//            if (auto_open)
+//            {
+//                LLFloaterReg::showInstance("inventory");
+//            }
+//
+//            LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id, use_main_panel);
             const BOOL auto_open = gSavedSettings.getBOOL("ShowInInventory") || (manual_offer && !check_asset_previewable(asset_type));
             if(auto_open)
             {
@@ -4564,7 +4578,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
     LLObjectSignaledAnimationMap::instance().getMap()[uuid] = signaled_anims;
     
     LLViewerObject *objp = gObjectList.findObject(uuid);
-    if (!objp)
+    if (!objp || objp->isDead())
     {
 #ifdef SHOW_DEBUG
 		LL_DEBUGS("AnimatedObjectsNotify") << "Received animation state for unknown object " << uuid << LL_ENDL;
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index d09ae42dac67565187a0ad81fe5384b39d1dbf08..7a6f41d39a4f4d28e5506ea77f88867d44e5bb9d 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -390,6 +390,13 @@ LLViewerObject::~LLViewerObject()
 	sNumObjects--;
 	sNumZombieObjects--;
 	llassert(mChildList.size() == 0);
+    llassert(mControlAvatar.isNull()); // Should have been cleaned by now
+    if (mControlAvatar.notNull())
+    {
+        mControlAvatar->markForDeath();
+        mControlAvatar = NULL;
+        LL_WARNS() << "Dead object owned a live control avatar" << LL_ENDL;
+    }
 
 	clearInventoryListeners();
 }
@@ -3157,6 +3164,10 @@ void LLViewerObject::updateControlAvatar()
         return;
     }
 
+    // caller isn't supposed to operate on a dead object,
+    // avatar was already cleaned up
+    llassert(!isDead());
+
     bool should_have_control_avatar = false;
     if (is_animated_object)
     {
@@ -3249,7 +3260,6 @@ void LLViewerObject::unlinkControlAvatar()
         if (mControlAvatar)
         {
             mControlAvatar->markForDeath();
-			mControlAvatar->mRootVolp = NULL;
             mControlAvatar = NULL;
         }
     }
@@ -5181,7 +5191,7 @@ void LLViewerObject::setTEImage(const U8 te, LLViewerTexture *imagep)
 S32 LLViewerObject::setTETextureCore(const U8 te, LLViewerTexture *image)
 {
 	LLUUID old_image_id = getTE(te)->getID();
-	const LLUUID& uuid = image->getID();
+	const LLUUID& uuid = image ? image->getID() : LLUUID::null;
 	S32 retval = 0;
 	if (uuid != getTE(te)->getID() ||
 		uuid == LLUUID::null)
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 73e3139743dd3dfa7446315becc8b8f2ef121808..03e73649a9b53cdafa980baa1791036af00bf4ef 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -853,10 +853,17 @@ void LLViewerRegion::saveObjectCache()
 		mCacheDirty = FALSE;
 	}
 
-	// Map of LLVOCacheEntry takes time to release, store map for cleanup on idle
-	sRegionCacheCleanup.insert(mImpl->mCacheMap.begin(), mImpl->mCacheMap.end());
-	mImpl->mCacheMap.clear();
-	// TODO - probably need to do the same for overrides cache
+    if (LLAppViewer::instance()->isQuitting())
+    {
+        mImpl->mCacheMap.clear();
+    }
+    else
+    {
+        // Map of LLVOCacheEntry takes time to release, store map for cleanup on idle
+        sRegionCacheCleanup.insert(mImpl->mCacheMap.begin(), mImpl->mCacheMap.end());
+        mImpl->mCacheMap.clear();
+        // TODO - probably need to do the same for overrides cache
+    }
 }
 
 void LLViewerRegion::sendMessage()
@@ -2655,7 +2662,10 @@ void LLViewerRegion::decodeBoundingInfo(LLVOCacheEntry* entry)
 
 		//set parent id
 		U32	parent_id = 0;
-		LLViewerObject::unpackParentID(entry->getDP(), parent_id);
+        if (entry->getDP()) // NULL if nothing cached
+        {
+            LLViewerObject::unpackParentID(entry->getDP(), parent_id);
+        }
 		if(parent_id != entry->getParentID())
 		{				
 			entry->setParentID(parent_id);
@@ -2675,7 +2685,7 @@ void LLViewerRegion::decodeBoundingInfo(LLVOCacheEntry* entry)
 	LLQuaternion rot;
 
 	//decode spatial info and parent info
-	U32 parent_id = LLViewerObject::extractSpatialExtents(entry->getDP(), pos, scale, rot);
+	U32 parent_id = entry->getDP() ? LLViewerObject::extractSpatialExtents(entry->getDP(), pos, scale, rot) : entry->getParentID();
 	
 	U32 old_parent_id = entry->getParentID();
 	bool same_old_parent = false;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 35b2f18eb75656eef8cd2e87f24de8d04b8c3b50..43fa9f2f73cb1ccf95c9dca3597ce55a5b6b403c 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -3634,7 +3634,10 @@ void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep)
 	
 	if(te && te->getID().notNull()) //should have a texture
 	{
-		LL_ERRS() << "The face does not have a valid texture before media texture." << LL_ENDL;
+        LL_WARNS_ONCE() << "The face's texture " << te->getID() << " is not valid. Face must have a valid texture before media texture." << LL_ENDL;
+        // This might break the object, but it likely isn't a 'recoverable' situation.
+        LLViewerFetchedTexture* tex = LLViewerTextureManager::getFetchedTexture(te->getID());
+        mTextureList.push_back(tex);
 	}
 }
 
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 77e4be1941644c7ceeed63a09cca65b2b7db0599..278f1625cf0c5ffb323cc3043117f91ad6878a79 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -708,7 +708,6 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image)
 	assert_main_thread();
 	llassert_always(mInitialized) ;
 	llassert(image);
-    image->validateRefCount();
 
 	S32 count = 0;
 	if (image->isInImageList())
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e768adcf67315bd917a271cb19e459ed13e0925a..409ae1f9439665b900f83b208da5a449c51e9e10 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2571,7 +2571,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
 	{
         if (!mIsControlAvatar)
         {
-            idleUpdateNameTag( mLastRootPos );
+            idleUpdateNameTag(idleCalcNameTagPosition(mLastRootPos));
         }
 		return;
 	}
@@ -2674,7 +2674,9 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
 	bool voice_enabled = (visualizers_in_calls || LLVoiceClient::getInstance()->inProximalChannel()) &&
 						 LLVoiceClient::getInstance()->getVoiceEnabled(mID);
 
-	idleUpdateVoiceVisualizer( voice_enabled );
+    LLVector3 hud_name_pos = idleCalcNameTagPosition(mLastRootPos);
+
+	idleUpdateVoiceVisualizer(voice_enabled, hud_name_pos);
 	idleUpdateMisc( detailed_update );
 	idleUpdateAppearanceAnimation();
 	if (detailed_update)
@@ -2685,7 +2687,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
 		idleUpdateWindEffect();
 	}
 		
-	idleUpdateNameTag( mLastRootPos );
+	idleUpdateNameTag(hud_name_pos);
 
     // Complexity has stale mechanics, but updates still can be very rapid
     // so spread avatar complexity calculations over frames to lesen load from
@@ -2725,7 +2727,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
     idleUpdateDebugInfo();
 }
 
-void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
+void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled, const LLVector3 &position)
 {
 	bool render_visualizer = voice_enabled;
 	
@@ -2814,24 +2816,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
 				}
 			}
 		}
-		
-		//--------------------------------------------------------------------------------------------
-		// here we get the approximate head position and set as sound source for the voice symbol
-		// (the following version uses a tweak of "mHeadOffset" which handle sitting vs. standing)
-		//--------------------------------------------------------------------------------------------
-		
-		if ( isSitting() )
-		{
-			LLVector3 headOffset = LLVector3( 0.0f, 0.0f, mHeadOffset.mV[2] );
-			mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot->getWorldPosition() + headOffset );
-		}
-		else 
-		{
-			LLVector3 tagPos = mRoot->getWorldPosition();
-			tagPos[VZ] -= mPelvisToFoot;
-			tagPos[VZ] += ( mBodySize[VZ] + 0.125f ); // does not need mAvatarOffset -Nyx
-			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos );
-		}
+        mVoiceVisualizer->setPositionAgent(position);
 	}//if ( voiceEnabled )
 }		
 
@@ -3369,7 +3354,8 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
 		new_name = TRUE;
     }
 				
-	idleUpdateNameTagPosition(root_pos_last);
+    mNameText->setPositionAgent(root_pos_last);
+
 	idleUpdateNameTagText(new_name);			
 	idleUpdateNameTagAlpha(new_name, alpha);
 }
@@ -3746,7 +3732,7 @@ void LLVOAvatar::invalidateNameTags()
 }
 
 // Compute name tag position during idle update
-void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
+LLVector3 LLVOAvatar::idleCalcNameTagPosition(const LLVector3 &root_pos_last)
 {
 	auto& viewerCamera = LLViewerCamera::instance();
 	LLQuaternion root_rot = mRoot->getWorldRotation();
@@ -3761,7 +3747,6 @@ void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 	local_camera_up.normalize();
 	local_camera_up = local_camera_up * inv_root_rot;
 
-
 	// position is based on head position, does not require mAvatarOffset here. - Nyx
 	LLVector3 avatar_ellipsoid(mBodySize.mV[VX] * 0.4f,
 								mBodySize.mV[VY] * 0.4f,
@@ -3783,7 +3768,26 @@ void LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 	name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));	
 	name_position += pixel_up_vec * NAMETAG_VERTICAL_SCREEN_OFFSET;
 
-	mNameText->setPositionAgent(name_position);				
+	const F32 water_height = getRegion()->getWaterHeight();
+	static const F32 WATER_HEIGHT_DELTA = 0.25f;
+	if (name_position[VZ] < water_height + WATER_HEIGHT_DELTA)
+	{
+		if (LLViewerCamera::getInstance()->getOrigin()[VZ] >= water_height)
+		{
+			name_position[VZ] = water_height;
+		}
+		else if (mNameText) // both camera and HUD are below watermark
+		{
+			F32 name_world_height = mNameText->getWorldHeight();
+			F32 max_z_position = water_height - name_world_height;
+			if (name_position[VZ] > max_z_position)
+			{
+				name_position[VZ] = max_z_position;
+			}
+		}
+	}
+
+	return name_position;
 }
 
 void LLVOAvatar::idleUpdateNameTagAlpha(bool new_name, F32 alpha)
@@ -3900,6 +3904,10 @@ bool LLVOAvatar::isVisuallyMuted()
         else if (isInMuteList())
         {
             muted = true;
+        }
+        else if (mIsControlAvatar)
+        {
+            muted = isTooSlow();
         }
 		else 
 		{
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 408e8cd16d64992f1f14341a781ba8e1f26a365d..5ff92199ee2e9d2e0e2b48aea94cf2998deb34f4 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -288,7 +288,7 @@ class LLVOAvatar :
     void			updateTimeStep();
     void			updateRootPositionAndRotation(LLAgent &agent, F32 speed, bool was_sit_ground_constrained);
     
-	void 			idleUpdateVoiceVisualizer(bool voice_enabled);
+	void            idleUpdateVoiceVisualizer(bool voice_enabled, const LLVector3 &position);
 	void 			idleUpdateMisc(bool detailed_update);
 	virtual void	idleUpdateAppearanceAnimation();
 	void 			idleUpdateLipSync(bool voice_enabled);
@@ -296,7 +296,6 @@ class LLVOAvatar :
 	void 			idleUpdateWindEffect();
 	void 			idleUpdateNameTag(const LLVector3& root_pos_last);
 	void			idleUpdateNameTagText(bool new_name);
-	void			idleUpdateNameTagPosition(const LLVector3& root_pos_last);
 	void			idleUpdateNameTagAlpha(bool new_name, F32 alpha);
 	LLColor4		getNameTagColor(bool is_friend);
 	void			clearNameTag();
@@ -357,6 +356,8 @@ class LLVOAvatar :
 
 	static void updateNearbyAvatarCount();
 
+    LLVector3 idleCalcNameTagPosition(const LLVector3 &root_pos_last);
+
 	//--------------------------------------------------------------------
 	// Static preferences (controlled by user settings/menus)
 	//--------------------------------------------------------------------
diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp
index 165a4e15e56fc938c6f7e379ded8ab0617347aab..147791f8781359efa46af20957def8527878fc79 100644
--- a/indra/newview/llvoicevisualizer.cpp
+++ b/indra/newview/llvoicevisualizer.cpp
@@ -40,6 +40,7 @@
 #include "llviewertexturelist.h"
 #include "llvoiceclient.h"
 #include "llrender.h"
+#include "llagent.h"
 #include "alcinematicmode.h"
 
 //brent's wave image
@@ -350,7 +351,7 @@ void LLVoiceVisualizer::render()
 		//---------------------------------------------------------------
 		// set the sound symbol position over the source (avatar's head)
 		//---------------------------------------------------------------
-		mSoundSymbol.mPosition = mVoiceSourceWorldPosition + WORLD_UPWARD_DIRECTION * HEIGHT_ABOVE_HEAD;
+        mSoundSymbol.mPosition = gAgent.getPosAgentFromGlobal(mPositionGlobal) + WORLD_UPWARD_DIRECTION * HEIGHT_ABOVE_HEAD;
 	
 		//---------------------------------------------------------------
 		// some gl state
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 5ce356cb1a1239dc757cd2a7722f5b58586132ee..a0b009fc78366671a3019c26df56d4502ba9e518 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -1009,7 +1009,13 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
                 params.args.add( exe_path );
             }
 
-            std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
+            static LLCachedControl<std::string> host(gSavedSettings, "VivoxVoiceHost");
+            static LLCachedControl<std::string> loglevel_cc(gSavedSettings, "VivoxDebugLevel");
+            static LLCachedControl<std::string> log_folder_cc(gSavedSettings, "VivoxLogDirectory");
+            static LLCachedControl<std::string> shutdown_timeout(gSavedSettings, "VivoxShutdownTimeout");
+			std::string loglevel = loglevel_cc;
+			std::string log_folder = log_folder_cc;
+
             if (loglevel.empty())
             {
                 loglevel = "0";
@@ -1017,8 +1023,6 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
             params.args.add("-ll");
             params.args.add(loglevel);
 
-            std::string log_folder = gSavedSettings.getString("VivoxLogDirectory");
-
             if (log_folder.empty())
             {
                 log_folder = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
@@ -1051,8 +1055,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
                 LLFile::rename(new_log, old_log);
             }
             
-            std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
-            if (!shutdown_timeout.empty())
+            if (!shutdown_timeout().empty())
             {
                 params.args.add("-st");
                 params.args.add(shutdown_timeout);
@@ -1065,7 +1068,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
                 {
                     voice_port->setValue(LLSD(port_nr), false);
                     params.args.add("-i");
-                    params.args.add(llformat("%s:%u", gSavedSettings.getString("VivoxVoiceHost").c_str(), gSavedSettings.getU32("VivoxVoicePort")));
+                    params.args.add(llformat("%s:%u", host().c_str(), gSavedSettings.getU32("VivoxVoicePort")));
                 }
             }
 
@@ -1091,7 +1094,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
 
             sGatewayPtr = LLProcess::create(params);
 
-            mDaemonHost = LLHost(gSavedSettings.getString("VivoxVoiceHost"), gSavedSettings.getU32("VivoxVoicePort"));
+            mDaemonHost = LLHost(host().c_str(), gSavedSettings.getU32("VivoxVoicePort"));
         }
         else
         {
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 1e746ebf509f1653a6a2eaa651df508628c5c414..8c7171a628de9e2c742574e37078b5c3c1153a60 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5528,6 +5528,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
     LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
     llassert(!gCubeSnapshot);
 
+    if (group->isDead())
+    {
+        return;
+    }
+
 	if (group->changeLOD())
 	{
 		group->mLastUpdateDistance = group->mDistance;
@@ -5597,7 +5602,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 	
 			LLVOVolume* vobj = drawablep->getVOVolume();
             
-			if (!vobj)
+			if (!vobj || vobj->isDead())
 			{
 				continue;
 			}
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 3c76e9003441aead5f342db70834e1ad890fac0e..d776dd31c53c0de2aca8fd641f9380b37c86d67e 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -785,35 +785,27 @@ void LLWearableItemsList::updateList(const LLUUID& category_id)
 void LLWearableItemsList::updateChangedItems(const uuid_vec_t& changed_items_uuids)
 {
 	// nothing to update
-	if (changed_items_uuids.empty()) return;
-
-	typedef std::vector<LLPanel*> item_panel_list_t;
-
-	item_panel_list_t items;
-	getItems(items);
+	if (changed_items_uuids.empty())
+		return;
 
-	for (item_panel_list_t::iterator items_iter = items.begin();
-			items_iter != items.end();
-			++items_iter)
+	uuid_vec_t::const_iterator uuids_begin = changed_items_uuids.begin(), uuids_end = changed_items_uuids.end();
+	pairs_const_iterator_t pairs_iter = getItemPairs().begin(), pairs_end = getItemPairs().end();
+	while (pairs_iter != pairs_end)
 	{
-		LLPanelInventoryListItemBase* item = dynamic_cast<LLPanelInventoryListItemBase*>(*items_iter);
-		if (!item) continue;
+		LLPanel* panel = (*(pairs_iter++))->first;
+		LLPanelInventoryListItemBase* item = dynamic_cast<LLPanelInventoryListItemBase*>(panel);
+		if (!item)
+			continue;
 
 		LLViewerInventoryItem* inv_item = item->getItem();
-		if (!inv_item) continue;
-
-		LLUUID linked_uuid = inv_item->getLinkedUUID();
+		if (!inv_item)
+			continue;
 
-		for (uuid_vec_t::const_iterator iter = changed_items_uuids.begin();
-				iter != changed_items_uuids.end();
-				++iter)
-		{
-			if (linked_uuid == *iter)
-			{
-				item->setNeedsRefresh(true);
-				break;
-			}
-		}
+        const LLUUID& linked_uuid = inv_item->getLinkedUUID();
+        if (std::find(uuids_begin, uuids_end, linked_uuid) != uuids_end)
+        {
+            item->setNeedsRefresh(true);
+        }
 	}
 }
 
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 870eb5b426b29cab5b05ee635e01f0d4126f0a98..3d9347cf4e9ebc7d710828aa6e123c376d8681b4 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1830,21 +1830,23 @@ void LLPipeline::unlinkDrawable(LLDrawable *drawable)
 void LLPipeline::removeMutedAVsLights(LLVOAvatar* muted_avatar)
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
-	for (light_set_t::iterator iter = gPipeline.mNearbyLights.begin();
-		 iter != gPipeline.mNearbyLights.end();)
-	{
-        const LLViewerObject *vobj = iter->drawable->getVObj();
-        if (vobj && vobj->getAvatar()
-            && vobj->isAttachment() && vobj->getAvatar() == muted_avatar)
-		{
-			gPipeline.mLights.erase(iter->drawable);
-			iter = gPipeline.mNearbyLights.erase(iter);
-		}
-		else
-		{
-			++iter;
-		}
-	}
+    light_set_t::iterator iter = gPipeline.mNearbyLights.begin();
+    while (iter != gPipeline.mNearbyLights.end())
+    {
+        const LLViewerObject* vobj = iter->drawable->getVObj();
+        if (vobj
+            && vobj->getAvatar()
+            && vobj->isAttachment()
+            && vobj->getAvatar() == muted_avatar)
+        {
+            gPipeline.mLights.erase(iter->drawable);
+            iter = gPipeline.mNearbyLights.erase(iter);
+        }
+        else
+        {
+            iter++;
+        }
+    }
 }
 
 U32 LLPipeline::addObject(LLViewerObject *vobj)
diff --git a/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png b/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png
new file mode 100644
index 0000000000000000000000000000000000000000..28906001eae619b73ee3db6462995b061eeb8f67
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Icon_Color_Palette.png differ
diff --git a/indra/newview/skins/default/textures/icons/Icon_Font_Size.png b/indra/newview/skins/default/textures/icons/Icon_Font_Size.png
new file mode 100644
index 0000000000000000000000000000000000000000..37bdde69aa9e016df0a66153a51a0e380e965d90
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Icon_Font_Size.png differ
diff --git a/indra/newview/skins/default/textures/icons/VoiceMute_Off.png b/indra/newview/skins/default/textures/icons/VoiceMute_Off.png
new file mode 100644
index 0000000000000000000000000000000000000000..425ba267a51cd9faf2b30076f81cc612e7876c40
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/VoiceMute_Off.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 9e7af1278feb0583a4bd92a2553787ead016d067..233d158d1aa5b2cd267547bcacb0bfff50a49bc5 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -64,6 +64,7 @@ with the same filename but different name
 
   <texture name="AudioMute_Off" file_name="icons/AudioMute_Off.png" preload="false" />
   <texture name="AudioMute_Over" file_name="icons/AudioMute_Over.png" preload="false" />
+  <texture name="VoiceMute_Off" file_name="icons/VoiceMute_Off.png" preload="false" />
 
   <texture name="Audio_Off" file_name="icons/Audio_Off.png" preload="false" />
   <texture name="Audio_Press" file_name="icons/Audio_Press.png" preload="false" />
@@ -951,6 +952,8 @@ with the same filename but different name
   <texture name="Single_Folder_Back" file_name="icons/single_folder_back.png" preload="true"/>
   <texture name="Single_Folder_Forward" file_name="icons/single_folder_forward.png" preload="true"/>
   <texture name="Single_Folder_Up" file_name="icons/single_folder_up.png" preload="true"/>
+  <texture name="Icon_Color_Palette" file_name="icons/Icon_Color_Palette.png" preload="false"/>
+  <texture name="Icon_Font_Size" file_name="icons/Icon_Font_Size.png" preload="false"/>
  
   <texture name="AlchemyRelease128" file_name="alchemy/alchemy_128.png" preload="false" />
   <texture name="AlchemyBeta128" file_name="alchemy/alchemybeta_128.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml
index a60e9afab1163f543567b146b325802cb9d47cb0..aa408e2380cdd8789ba5fd558cb391e9f2306ed2 100644
--- a/indra/newview/skins/default/xui/en/alert_button.xml
+++ b/indra/newview/skins/default/xui/en/alert_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <button
   name="Alert Button"
diff --git a/indra/newview/skins/default/xui/en/alert_check_box.xml b/indra/newview/skins/default/xui/en/alert_check_box.xml
index 5535a5dc2ae56478a29e744c99708a3de595cb9f..21266da3b28fca9c79599411fc5a6c0816f610dc 100644
--- a/indra/newview/skins/default/xui/en/alert_check_box.xml
+++ b/indra/newview/skins/default/xui/en/alert_check_box.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <check_box
   label_text.text_color="LabelTextColor"
   label_text.text_readonly_color="LabelDisabledColor"
   font="SansSerif"
   follows="left|top"
-  name="check"/>
\ No newline at end of file
+  name="check"/>
diff --git a/indra/newview/skins/default/xui/en/alert_icon.xml b/indra/newview/skins/default/xui/en/alert_icon.xml
index b0886fce0616ad624447e11b33d22f571251bc24..d62addb98284449f4f69641c1e9925268d82036c 100644
--- a/indra/newview/skins/default/xui/en/alert_icon.xml
+++ b/indra/newview/skins/default/xui/en/alert_icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <icon color="1.0 1.0 1.0 1.0"
       tab_stop="false"
       mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml
index 54dbc698c830f7313e2c6ef5762acc45f2b23f33..78b97a2a7e15cbeedd4a8ed288b4f2bce5465092 100644
--- a/indra/newview/skins/default/xui/en/alert_line_editor.xml
+++ b/indra/newview/skins/default/xui/en/alert_line_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <line_editor
   select_on_focus="false"
   revert_on_esc="true"
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
index 388a69864e08a00315024029e0f2351a12374d4f..cdf15023a5a1a8f6312b1267bbd7c8adcd80e781 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <contents>
     <rows
      enabled="false"
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml
index e707aaf22c63dda1441fc52aabbf85b49dac04c8..9d57638835dd426ac6d367f3aef278a7404566ac 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <contents>
     <columns
      relative_width="0.34"
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_editing.xml b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml
index 2a3314840aa20a8445e05ea2a1c1d0dd75a7b33b..9876e43d8f75e3249db54d6c8a10e07ddc59a4c4 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_editing.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <contents>
     <rows
      enabled="false"
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_media.xml b/indra/newview/skins/default/xui/en/control_table_contents_media.xml
index 43e8d730cd9679460d8bf6eeb9277c0d46b3a71e..5d5b6ed3ce7db59d6651a047bad78e6ad0b99b8c 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_media.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_media.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <contents>
     <rows
      enabled="false"
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_movement.xml b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml
index 0ec9d9e2fe6509e7a96d436ef623c270cf605033..ada65c3bed7a383ebba03673f55c7c341c01292b 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_movement.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <contents>
     <rows
      enabled="false"
diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
index e7dd62eb6427aa57e3a8a57af92f3108478661cc..ab55c80ba2ce72275f3b6325f781a321df4963ad 100644
--- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml
+++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- *NOTE: mantipov: top & height should be synchronized with <favorites_bar> in the panel_navigation_bar.xml-->
 <!-- All buttons in the Favorites bar will be created from this one -->
 <button
diff --git a/indra/newview/skins/default/xui/en/floater_360capture.xml b/indra/newview/skins/default/xui/en/floater_360capture.xml
index 23d054105f2220a3bfe39f6c36b3beb97b48e19c..70bcaf86be42ff4ad7e99a1447e020a0a4dec6de 100644
--- a/indra/newview/skins/default/xui/en/floater_360capture.xml
+++ b/indra/newview/skins/default/xui/en/floater_360capture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater can_resize="true"
          height="400"
          layout="topleft"
@@ -133,4 +133,4 @@
       Click and drag on the image to pan
     </text>
   </panel>
-</floater>
\ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index d11373ce1d574c7a35cd08fcc6df7bf19ffbeb90..950ed192c0daa8ed05a60e0d90bc5a088dcfc3ae 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_minimize="false"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index f740a4090d244c96b8052dda92d907ec0e07b8fd..95f6059f832b66855bb21a03d78e40ae2563a94c 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_close="true"
  can_minimize="true"
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 eb5c1623fbca2d0a67c596fa63c580e31806a835..14aa4f27c7901ee16f92cafab184982c30662a2b 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml
index 42c3e7e93532183e52d0f094c97f3508cf184928..97339f06f471a04b16768fbf362945103b79280d 100644
--- a/indra/newview/skins/default/xui/en/floater_activeim.xml
+++ b/indra/newview/skins/default/xui/en/floater_activeim.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
 	name="floater_activeim"
diff --git a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml b/indra/newview/skins/default/xui/en/floater_add_payment_method.xml
index ac88263aa197975fc12c7b47b0dd22afdfcac566..870ddee5548b5fb39d31f7b5e5f6dd96cce86f77 100644
--- a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml
+++ b/indra/newview/skins/default/xui/en/floater_add_payment_method.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="405"
  width="900"
diff --git a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml
index c4ffba33fd4b9365ffb7b201a037a8344c5064d4..1aa96ae261e28b846bfa724414fb9e5eafd2d6a9 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_anim_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="180"
diff --git a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml
index e89aee7568ede7cd446be76cdea09259afd645ce..ed3f9f76eaac65535fede7234b60a924cbc55386 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_bvh_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_associate_listing.xml b/indra/newview/skins/default/xui/en/floater_associate_listing.xml
index 402730151ada3256c5514d9d753153a22c839e84..5ebdb6ce424a9124781c61a1bb7f25d563e20164 100644
--- a/indra/newview/skins/default/xui/en/floater_associate_listing.xml
+++ b/indra/newview/skins/default/xui/en/floater_associate_listing.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml
index 9c6d114c4ca1792c875b553bb4655cec7fac0c2b..56a2f51c43da5a68b7d63f9c9c75f7f31326b810 100644
--- a/indra/newview/skins/default/xui/en/floater_auction.xml
+++ b/indra/newview/skins/default/xui/en/floater_auction.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_autoreplace.xml b/indra/newview/skins/default/xui/en/floater_autoreplace.xml
index 9cfb562001ac9baf8083044196d6f128b327f9aa..c1752f98696999a4132227108bc8cf4350dd09fa 100644
--- a/indra/newview/skins/default/xui/en/floater_autoreplace.xml
+++ b/indra/newview/skins/default/xui/en/floater_autoreplace.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  border="true"
  can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
index db586f036c0538d0c03f41bde9be5af9e5ae390c..ff7c86c6efad42fac31284c7f74320dec21fef80 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="225"
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 d389379307911027c78d8dcdffd4baf9c19dd807..2b89bc9eda4b1ddc530ddfe74b5df898168e832f 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
index d222dca98bbc5569c90e54e27ceec1146be70044..aca5ddf3efcbf89d50783d3fdfd7c0eac92e063b 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="true"
  positioning="cascading"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
index 6c0754868443c9343c5535d3610487cc8f6c9742..fd6a3d8c5f3ac2b3d8bcabefef6c3d4edfe4d5f3 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="700"
@@ -453,4 +453,4 @@ Textures
 </panel>
 </panel>
 </scroll_container>
-</floater>
\ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_ban_duration.xml b/indra/newview/skins/default/xui/en/floater_ban_duration.xml
index bb000a6a7c5a8e138a0cec18be95c1b1d363e643..2b3acd2907f210bcf99596fa4a4bcb16ef4ba429 100644
--- a/indra/newview/skins/default/xui/en/floater_ban_duration.xml
+++ b/indra/newview/skins/default/xui/en/floater_ban_duration.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_minimize="false"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml
index d5947fc0af8b016eeccb091ef6716df2e5f9d582..6248829500a7bc46ccef672f13b10e80bc62e82d 100644
--- a/indra/newview/skins/default/xui/en/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/en/floater_beacons.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="310"
@@ -157,7 +157,7 @@
          font="SansSerif"
          left="0"
          top_pad="7"
-         name="label_objects"
+         name="label_direction"
          text_color="White"
          type="string">
            Show direction to:
diff --git a/indra/newview/skins/default/xui/en/floater_big_preview.xml b/indra/newview/skins/default/xui/en/floater_big_preview.xml
index c0bdd3d9bd4d7f7b87972c7d1b09a78567b557f9..362853d06fdb1be0c07d1e27a4577fe97b36f6a6 100644
--- a/indra/newview/skins/default/xui/en/floater_big_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_big_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   positioning="cascading"
   can_close="true"
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 ed66d9c7a2e16f7fdd786975811225b8b2166786..5d9a0e37a71ed79c732ecc5c193cfe95611d1114 100644
--- a/indra/newview/skins/default/xui/en/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_build_options.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="193"
diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml
index 7aa31bed714344876833cac61c600c6a63156825..7636284b4b65c929564f41d8609afdfabb9a3094 100644
--- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml
index 126e3aac480a659a242d1fc54f6e54b808ad9b1f..874c05eec88933f803110abdab8fb0544af6c2ce 100644
--- a/indra/newview/skins/default/xui/en/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/en/floater_bumps.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="180"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml
index ac96a7080572de496d1b368eb72eeb9dc72c0cf3..6b6f497808bed5b814af6d99ddeb87766e47cbee 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_contents.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 0637eedfb225f208c8a2633cfd91ca198825ccfc..996937cd45f451e92be45d9c0f9d33de31beaf06 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="false"
  can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml
index 9fe56e447e98128bb72ee8f336f55df7e9b1a4dc..889339c38d0366774bcabb1f40dfdf61fbdd0229 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml
index 1f7d52dbf5b504c6c4d4df0245add2dd998a91f4..2dec53ff7d289f43180bbf6659f8ba16e3c0c577 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 34694803f0378462f4fec8dd81221acfd460ee4d..707721349b5eb7631eeefb04222a52ac30658dda 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="specified"
  right="-460"
diff --git a/indra/newview/skins/default/xui/en/floater_camera_presets.xml b/indra/newview/skins/default/xui/en/floater_camera_presets.xml
index 930357f5688d88ced839975a44beeb0f9a0e0deb..702d5d1b173d443e73250af63e77365d843d4806 100644
--- a/indra/newview/skins/default/xui/en/floater_camera_presets.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera_presets.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml
index 726cb38481b612c673e89cfcbfd3df3d4852f3b7..223069ed0cbccb57d846eeff60e1857655a96023 100644
--- a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml
+++ b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="false"
  height="366"
diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml
index 2cf6e682fde9d484d7c778c5f2246391fc69e090..beb6e490def47b311fea3e51129ea97a3d385473 100644
--- a/indra/newview/skins/default/xui/en/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/en/floater_choose_group.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="258"
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 07a4bf0ec5cea259e1a0feb4a2219d2c8bd2abf0..d474d3f264f69c575eede2194a84c8da9cf53b21 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml
index f3bee8c8b7e83045c15fc9180a1a09edd1913467..8f356e4363993a1515f75d36ffe7413504622ae6 100644
--- a/indra/newview/skins/default/xui/en/floater_conversation_log.xml
+++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
index 99ad59a7a3fa67de772d30fb387accc52397f707..27913baff6b63232a95459605c2436c2d3fced78 100644
--- a/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_conversation_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_create_landmark.xml b/indra/newview/skins/default/xui/en/floater_create_landmark.xml
index 632daaec7ec33badaa4b5179927d6ab9d23334aa..ba2527e55012fb82b525f8977153ff6a523e0136 100644
--- a/indra/newview/skins/default/xui/en/floater_create_landmark.xml
+++ b/indra/newview/skins/default/xui/en/floater_create_landmark.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="false"
  show_title="false"
diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml
index 143bcb44300ad988dbc8590fa0d8bbed27255062..caa4a2292c5b1b3f6c4a0ebf41c63d0f69f9a54e 100644
--- a/indra/newview/skins/default/xui/en/floater_critical.xml
+++ b/indra/newview/skins/default/xui/en/floater_critical.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_close="false"
diff --git a/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml
index 3360d7bec9766fd3868ea01850a6c7dd1fd1ce41..ad724fb2aaf9e6b282315258b3f2871ca4c1555b 100644
--- a/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_delete_pref_preset.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="130"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 8ae7caa644f5f0dd3ab4695122f4d54ccb15cf74..bd68e0360eaeababee824acd915d355959057d9b 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"	
  legacy_header_height="225"
diff --git a/indra/newview/skins/default/xui/en/floater_display_name.xml b/indra/newview/skins/default/xui/en/floater_display_name.xml
index f3431da858d78c15e9ccdf10845dde815941c8cf..1205b0a1d652dc4ec16566a3c7f1fbc25f060ea4 100644
--- a/indra/newview/skins/default/xui/en/floater_display_name.xml
+++ b/indra/newview/skins/default/xui/en/floater_display_name.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
index f3d7c38a763644169023d0020d163151e713dd87..2eacc8150eaef65c835b9c099193c11ef22db218 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
         layout="topleft"
         name="env_edit_extdaycycle"
diff --git a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml
index 3570456b444eed0b368135e2fc9707d94572378f..c83168459472df279bfc3166f9b88f24e1871d64 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="225"
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index e12b10df3a0d0de5f99845516c227bae830c35b8..4b430877762bd213bc1f664b670dc7e612a8c98c 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="590"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_experience_search.xml b/indra/newview/skins/default/xui/en/floater_experience_search.xml
index 15a4b5665eb5063e26e2e807fdb57266578d7e2c..60c95a8a0c06a572b838c74bd7a95fdde4b4442b 100644
--- a/indra/newview/skins/default/xui/en/floater_experience_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_experience_search.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   positioning="cascading"
   legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_experienceprofile.xml b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml
index 0708a2374382eefe3e956dbf316df2ddca17669b..c5bfaa9da925ba82b8e531b18ce7f12e17f4c80d 100644
--- a/indra/newview/skins/default/xui/en/floater_experienceprofile.xml
+++ b/indra/newview/skins/default/xui/en/floater_experienceprofile.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
   name="experience_profile"
diff --git a/indra/newview/skins/default/xui/en/floater_experiences.xml b/indra/newview/skins/default/xui/en/floater_experiences.xml
index f1dd488dc7711117e11e4871d116fe4f9960d926..72b1a46e65c80823b87b3219ffc80bf896fb79f3 100644
--- a/indra/newview/skins/default/xui/en/floater_experiences.xml
+++ b/indra/newview/skins/default/xui/en/floater_experiences.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
   can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_fast_timers.xml b/indra/newview/skins/default/xui/en/floater_fast_timers.xml
index ec08583ac1372c6660337d1cfc7b94e2cc0bb9f4..ac7bbef061982bcbeba4b89fe2e565fc32f25668 100644
--- a/indra/newview/skins/default/xui/en/floater_fast_timers.xml
+++ b/indra/newview/skins/default/xui/en/floater_fast_timers.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_fbc_web.xml b/indra/newview/skins/default/xui/en/floater_fbc_web.xml
index 0d35e22a19296bf101fb02246b2d0f9ceff52c65..b0a7305094f2ac0b924e32d55d90ec8d0c3884a8 100644
--- a/indra/newview/skins/default/xui/en/floater_fbc_web.xml
+++ b/indra/newview/skins/default/xui/en/floater_fbc_web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_fbc_web"
          help_topic="fbc_web"
          width="780"
diff --git a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
index 45f3880a156264b05d45b1576d5ec6e60aedbbb7..f424f67df0c1249b430968abc2f10821f82fc9c3 100644
--- a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
+++ b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
         can_tear_off="false"
         can_resize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml
index 3ab19ec9d92f97481e7a94c2673175f1146e85dc..61cb91e2f3f892e84f76dc9506f02864a80cd5c4 100644
--- a/indra/newview/skins/default/xui/en/floater_font_test.xml
+++ b/indra/newview/skins/default/xui/en/floater_font_test.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_forget_user.xml b/indra/newview/skins/default/xui/en/floater_forget_user.xml
index a9ec1b74a3b4d16c951f06d2eef2a4ba6d44eb9b..62422ba47831ef191eff4f65552d2d47b5f74138 100644
--- a/indra/newview/skins/default/xui/en/floater_forget_user.xml
+++ b/indra/newview/skins/default/xui/en/floater_forget_user.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="258"
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index 9f051d9f8d8de9daea1e4a6044543bc9392df032..832716c6004e758286a94a492992e11757c58e12 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  save_rect="true"
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
index e7131e20cbd05c92f83f82abd815a184c50c85b4..f8ec696af9f34cec9ad53394bd04323feb7a1584 100644
--- a/indra/newview/skins/default/xui/en/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="384"
diff --git a/indra/newview/skins/default/xui/en/floater_goto_line.xml b/indra/newview/skins/default/xui/en/floater_goto_line.xml
index b2368882199bb3419fdce0c63309271c8fc53fe0..99be81cc1c2d901e2d15dc437a0b01159e690aa6 100644
--- a/indra/newview/skins/default/xui/en/floater_goto_line.xml
+++ b/indra/newview/skins/default/xui/en/floater_goto_line.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  default_tab_group="1"
@@ -41,4 +41,4 @@
      tab_group="1"
      top="21"
      width="85" />
-</floater>
\ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_grid_status.xml b/indra/newview/skins/default/xui/en/floater_grid_status.xml
index bf782042824b56651d6bdf8b922079368e63b93b..d42fec3ece2651dd21da947a17eeb4a3bd111364 100644
--- a/indra/newview/skins/default/xui/en/floater_grid_status.xml
+++ b/indra/newview/skins/default/xui/en/floater_grid_status.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   positioning="cascading"
   legacy_header_height="18"
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 c06cb63f8acd1b414d814a5e708740f7306dcc38..76895df7323edc66d085f385a10e590d36a8535c 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml
index 19e42798af7a65c1d9f3ebfe804474d08c37cb57..5b00d23faaf328ba92f4782b329e91370c8c4e65 100644
--- a/indra/newview/skins/default/xui/en/floater_how_to.xml
+++ b/indra/newview/skins/default/xui/en/floater_how_to.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   legacy_header_height="18"
   can_resize="false"
@@ -13,4 +13,4 @@
   width="310"
   rel_x="-0.469309"
   rel_y="-0.011166"
-  filename="floater_web_content.xml"/>
\ No newline at end of file
+  filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml
index e2d860881a25be8d9cde567b149b13e0247e4e56..2a8d2ad5ef08f985fd2fb00ae35b57fcb7641b8f 100644
--- a/indra/newview/skins/default/xui/en/floater_hud.xml
+++ b/indra/newview/skins/default/xui/en/floater_hud.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index 181c2ec967e13288550618446be50271201472b0..338ca749ae518357f6ad4116a5d0f83727e6f180 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <multi_floater
  can_close="true"  
  can_minimize="true"
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 6fee0f1e71ded64538b4fd2a138a3291dd1e7c6b..475485c9d8ff3ba74534561dc50a774ade537f16 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  background_visible="true"
  height="355"
diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml
index 773d9aafc9cba2cd75c91f53ea64b67ff2280c6b..79f62c4dbcf7dffcf4c8689e1acad6f5260452dd 100644
--- a/indra/newview/skins/default/xui/en/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_import_collada.xml b/indra/newview/skins/default/xui/en/floater_import_collada.xml
index 441ab6a2dee648fb348c274d39d4abe46a07c92a..baea660f30329df298393d171131916c202251ff 100644
--- a/indra/newview/skins/default/xui/en/floater_import_collada.xml
+++ b/indra/newview/skins/default/xui/en/floater_import_collada.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater can_close="false" can_drag_on_left="false" can_minimize="false"
      can_resize="false" height="160" min_height="160" width="300" min_width="300"
      name="Import Collada" title="Import Scene">
diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml
index a7864381a9b954421227b89dcaef227af71c96da..169d4c9d24d01ba809af2926f0abe6b08fa49f37 100644
--- a/indra/newview/skins/default/xui/en/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_close="false"
diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml
index d4a615909872edf954bd337f7071d896e95453ca..6a875c0d78f20bf948a2007c821eac1ebcdb7129 100644
--- a/indra/newview/skins/default/xui/en/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/en/floater_inspect.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 0bd62198c000188ba55a4a5582823ef7cdea0fdf..71231c7afd68bc0fb736c60d42eff48e22a1150b 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,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="260"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_settings.xml b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml
index 2e619d91fb71d9a71631fe84720295db4cb9df0d..156bba6c27cb0b012f9500d1a80ba7b2616cbcfb 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_close="true"
  can_minimize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml
index e91efb89b2df2df52251c6ee591bfa9da3f72e08..f908d23d8e0083f0b1500caed4716c6bce8dbab5 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_item_properties.xml b/indra/newview/skins/default/xui/en/floater_item_properties.xml
index 336bb902ca98c2e6c8d1e4b3e373fe17f06ee916..fc9351bff281d3593be9ad8aba49e1cb930f5130 100644
--- a/indra/newview/skins/default/xui/en/floater_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_item_properties.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="570"
diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml
index 2cd1435f7e5b28c83d3af7ae3e0d26414cbdb852..a84fe28cf79fd9532d404d0ed99345d0b3fb8973 100644
--- a/indra/newview/skins/default/xui/en/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/en/floater_joystick.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="500"
diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml
index b24c745bdd0bc67fc0cbf085af4fbd09335b8238..eab66ab83ef4cc0f4120847248f041bba62d6101 100644
--- a/indra/newview/skins/default/xui/en/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="170"
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 390ec9ab7d4015364fbc0bcd1660fb2acc994377..affd2b196d2e49ab7a8955491e877abbcfa8f864 100644
--- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="centered"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_linkreplace.xml b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
index ece75e2576457c7dd7018660f27fb3f53c4b0cf0..1fa039f2d1f8571d2776424dc329778ae461ab89 100644
--- a/indra/newview/skins/default/xui/en/floater_linkreplace.xml
+++ b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  name="linkreplace"
  help_topic="linkreplace"
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 c6ebcbaa28cd39ad90d1af6b595f5524e6bd8905..e30c519c8a6abf13672ae291fb4a473135f345d8 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   legacy_header_height="18"
   bevel_style="none"
   border_style="line"
   can_resize="true"
-  height="582"
+  height="607"
   layout="topleft"
   min_height="271"
   min_width="328"
@@ -45,6 +45,21 @@
     name="loading">
     Loading...
   </floater.string>
+  <text
+   type="string"
+   length="1"
+   follows="left|top|right"
+   width="490"
+   use_ellipses="true"
+   font="SansSerif"
+   height="18"
+   layout="topleft"
+   left="13"
+   name="obj_name"
+   text_color="white"
+   top="21">
+    Object name
+  </text>
   <panel
     bevel_style="none"
      
@@ -54,7 +69,7 @@
     layout="topleft"
     left="10"
     name="script ed panel"
-    top="16"
+    top_pad="2"
     width="501" />
   <button
     follows="left|bottom"
diff --git a/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml
index 49c21f1ea794d2e3bbb9f25b15a2f2f44351932e..ba1b812d28b626a76925820f1a763c34ea8a4973 100644
--- a/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_load_pref_preset.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="130"
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 e9676777f439eb94aa3b2179906407e9fe903e93..17a07c5ec2fe7dc13c34668b4562122ea22358b1 100644
--- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 4b6cdef041641644684dccc81a80285c18b25f18..5193513e8f5af0d6095a9f0751c475824c751316 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  bg_alpha_image_overlay="DkGray_33"
diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml
index 9035a7c1619b00675bde9bd1d572e1919864af81..368a8b26ca6768d748cae03e72ba7f1a7a353805 100644
--- a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml
+++ b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
     title="Audit Marketplace Listings"
     name="floater_marketplace_validation"
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 ce788654aa32ed97a8d4789a273dc25be2f92d4c..5ea751dc7c037aeecd181752494963d947566a37 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 0e03c0ab6df324d61bd5788d1c61e926a74768a8..454585581137c0c37caaf776e6786215b3956257 100644
--- a/indra/newview/skins/default/xui/en/floater_media_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_close="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 fb7d09a21eb9e96511f701c9b85c2e05c7926a9c..af45974e0eb5ac80ae63e815e0b594de986b29f0 100644
--- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_mfa.xml b/indra/newview/skins/default/xui/en/floater_mfa.xml
index a649cc6d471101fd6e9b5731c0db7c555ab47d3a..e8be95612d2ab6340f3f90f286c5dc79108ce240 100644
--- a/indra/newview/skins/default/xui/en/floater_mfa.xml
+++ b/indra/newview/skins/default/xui/en/floater_mfa.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  title="MFA Token Requred"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
index 21c894d3afeef19e9cd40fcdb670579cf13993a1..5dcac85b4ff2ac42a1eed64f387b0bc0f8925f91 100644
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_close="true"
  can_drag_on_left="false"
@@ -745,7 +745,7 @@
              height="0"
              layout="topleft"
              left="10"
-             name="lod_tab_border"
+             name="lod_tab_border1"
              top_pad="20"
              width="614" />
             <check_box
@@ -858,7 +858,7 @@
               height="0"
               layout="topleft"
               left="18"
-              name="physics_tab_border"
+              name="physics_tab_border1"
               top_pad="10"
               width="589"/>
                 <panel
@@ -965,7 +965,7 @@
               height="0"
               layout="topleft"
               left="18"
-              name="physics_tab_border"
+              name="physics_tab_border2"
               top_pad="10"
               width="589"/>
                 <panel
@@ -1073,7 +1073,7 @@
               height="0"
               layout="topleft"
               left="18"
-              name="physics_tab_border"
+              name="physics_tab_border3"
               top_pad="10"
               width="589"/>
                 <panel
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 90166232e97c64d4f982732d22c92519f868edc9..fc7c418ca8b8e702d9666a4b288c884b1cd55775 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="specified"
  right="-693"
diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml
index 10848198e52aec15997a992ef6450583f5ab2e7f..2d992dfa72c3c1b6ca40359b6740816f37d1a0ac 100644
--- a/indra/newview/skins/default/xui/en/floater_mute_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_my_scripts.xml b/indra/newview/skins/default/xui/en/floater_my_scripts.xml
index ee6defce9d56ca45b43fe7911475e3ba6fced0e7..ad89787031ad3163b46b5a9f1fd51c3663d601f7 100644
--- a/indra/newview/skins/default/xui/en/floater_my_scripts.xml
+++ b/indra/newview/skins/default/xui/en/floater_my_scripts.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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
index df46fc198f2acfca79af55fbd0087fe22c68ff76..e7b2abda620f3324b34a7a39cfebe89df0cb7d42 100644
--- a/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
+++ b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_my_web_profile"
          help_topic="web_profile"
          width="780"
@@ -6,4 +6,4 @@
          save_rect="true"
          single_instance="true"
          reuse_instance="false"
-         filename="floater_web_content.xml"/>
\ No newline at end of file
+         filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml b/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml
index c8726d36b44d2b8e81590561ba4bf31bdfd4594d..57b74b360aaa3663fe12c198cf412b7fd41e068c 100644
--- a/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml
+++ b/indra/newview/skins/default/xui/en/floater_new_feature_notification.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="130"
  width="300"
diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml
index 1f9ddecac277c996b5cecd6ac85498fb45db93db..32345981e4d888fc0b98d21c71f4e19b51ab4c07 100644
--- a/indra/newview/skins/default/xui/en/floater_notification.xml
+++ b/indra/newview/skins/default/xui/en/floater_notification.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_notifications_console.xml b/indra/newview/skins/default/xui/en/floater_notifications_console.xml
index e243ccd2f91e1401217fdca93e7f76b280609887..46a824a8b02476375e5960856d92f274c31dfb32 100644
--- a/indra/newview/skins/default/xui/en/floater_notifications_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_object_weights.xml b/indra/newview/skins/default/xui/en/floater_object_weights.xml
index 889efa061c1a3765a02866a63987bd3425d5b139..5e4b0175903f8bd46df4d93689f273446e092efc 100644
--- a/indra/newview/skins/default/xui/en/floater_object_weights.xml
+++ b/indra/newview/skins/default/xui/en/floater_object_weights.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_close="true"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml
index ec03d7d32cd637d1a6827ce0a65e7f90d5782dd9..bc04dc9f468cfae917583e1581ebf6385e7a4af9 100644
--- a/indra/newview/skins/default/xui/en/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/en/floater_openobject.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 bbe280582b5ec833f8acdf94fc56c0038cb6657e..98cb997c6633cf1e43856d8d387747a68b3fe04b 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_close="false"
  can_minimize="false"
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 ae1fb4cccd24261f286b6f211880cb130027630a..328ee2b8352b14d7d62a658f95b5c0598320f196 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_close="false"
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml
index 7242c734cf8f788da092e689d99f86ecb81334be..37fed38af695be47c637dc9bed788c4e10a462a3 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_characters.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
     positioning="cascading"
     can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
index eb37cf214c7738ada3ba92c9a027768d35e897f0..296cec56932abf5d644bea413d890cdeef5956ed 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
     positioning="cascading"
     can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
index 59117c01782d85513fa74987116c651adc5b1adf..4a07000db82d9a698213108e93b54f6055508d3c 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
     positioning="cascading"
     can_resize="true"
@@ -372,7 +372,7 @@
       follows="left|bottom|right"
       height="0"
       layout="topleft"
-      name="horiz_separator"
+      name="horiz_separator1"
       top_pad="0"
       left="18"
       width="1039"/>
diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml
index 3e3f8b49ce9072497313646e7b3acf8c3230d4c6..6865bd0a6400dc8141c76feb4b9ddf7a7a01085f 100644
--- a/indra/newview/skins/default/xui/en/floater_pay.xml
+++ b/indra/newview/skins/default/xui/en/floater_pay.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml
index f1e27b918ee799914f16369c04bed60e55c77478..3c1d79940c4a8046daf1c6daab7a54de32ee6a9e 100644
--- a/indra/newview/skins/default/xui/en/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
index 0cc0ca1ce49acbb9c046b260990e69d930273e28..41149bfe1b7c229a9e532c8b63cfdca4b263ac05 100644
--- a/indra/newview/skins/default/xui/en/floater_people.xml
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
   positioning="cascading"
diff --git a/indra/newview/skins/default/xui/en/floater_performance.xml b/indra/newview/skins/default/xui/en/floater_performance.xml
index d1a1119f77c4c27de7643dd36f717d766aad3484..dac8a71b2d3a45d9cb98a2ae5c8b49de54829aff 100644
--- a/indra/newview/skins/default/xui/en/floater_performance.xml
+++ b/indra/newview/skins/default/xui/en/floater_performance.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="642"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_perms_default.xml b/indra/newview/skins/default/xui/en/floater_perms_default.xml
index 9ca61671e1842580e72a1cf7a52ef7c7a7df2ba9..46e4cb47640cf05674b6cee553aea8b083825495 100644
--- a/indra/newview/skins/default/xui/en/floater_perms_default.xml
+++ b/indra/newview/skins/default/xui/en/floater_perms_default.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="266"
diff --git a/indra/newview/skins/default/xui/en/floater_pick_track.xml b/indra/newview/skins/default/xui/en/floater_pick_track.xml
index d8a9877be23e9dd37ade7f84328ff4c0d5c5c940..103422a04dd516683288a049d036333cf66d58f3 100644
--- a/indra/newview/skins/default/xui/en/floater_pick_track.xml
+++ b/indra/newview/skins/default/xui/en/floater_pick_track.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
         legacy_header_height="0"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index 997823a431ce60053de79929fc99810a16d75567..c1197a4a339a50bd4f7c08f25ed42855f914ea42 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  positioning="centered"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
index 659033efd4192a40128586e6c3571dcb072cc801..fb5af724566eaf195010d9335da5caa91072816a 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="500"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml
index 43962dc6caa8856c093f423b5454cae76b8e0e04..cf7182d8b7ccb45c725a76a899bd9ebb5441b922 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_view_advanced.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="271"
  layout="topleft"
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 d1f8da55be4337aa72e2d42cb61677386231c8c4..d116e574c62739d91d80339e692e688c69450c3a 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="241"
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 1fa6395afa9acb1e37309c7b63eee4386031a0d9..9275e685e9d39033b6db392b217a5e5f1d04ac69 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="460"
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 ac5467c0368bac57120acf3cec8e7d9b82e18e20..5ab90f7051f4e6995afc09153a72da05b40375ea 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 83a1f5a96f63672dd4e00524c13dcf70e7f069db..78d69d3e09799328b5f71574f4f7491f6f0cb892 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="85"
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 e772f081973fda81c9c89ddd0abf226c06bbc203..e977bfb375b54344da29f4c7d1228e3d9b7f899a 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_trash.xml b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
index 3001bfe0c2197572e3d34bc915a7547b9979c4b2..a477896d80a75c4a67db17cc0c5ad96ddeb0c0d7 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_trash.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml
index 6312366b866f821b45be3458755039f30ac625f1..0b1e23c27e626559108821e10113eb9039e03701 100644
--- a/indra/newview/skins/default/xui/en/floater_price_for_listing.xml
+++ b/indra/newview/skins/default/xui/en/floater_price_for_listing.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_profile_permissions.xml b/indra/newview/skins/default/xui/en/floater_profile_permissions.xml
index 9f3b4d9a00b50c143c9c1f9b9e70a32bc140c7b9..e434face8b8deef9f37eccaed90dc9570be74676 100644
--- a/indra/newview/skins/default/xui/en/floater_profile_permissions.xml
+++ b/indra/newview/skins/default/xui/en/floater_profile_permissions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="false"
  show_title="false"
diff --git a/indra/newview/skins/default/xui/en/floater_profile_texture.xml b/indra/newview/skins/default/xui/en/floater_profile_texture.xml
index 347b45f8f70a4a00fe67e60400215640166d95a3..da74b7f78e5b842318a35c716d7ef05d802c5cd8 100644
--- a/indra/newview/skins/default/xui/en/floater_profile_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_profile_texture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_resize="true"
  show_title="false"
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 84e0b489d0eff34783b40f15a69b7338f094162e..2d7d03f7a0087588067a8327534025bd1dd6e25c 100644
--- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml
+++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
index 11172d8a3e25edb8844def4752041b3c44045897..c7fd9da219e87d75ca92c35f410f00a03909406b 100644
--- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   name="region_debug_console"
   title="Region Debug"
diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml
index 14faeff6d987506a43164ec93af1bf71de4b302f..ef506923ca5c92550523f16a716c1ae990c347ec 100644
--- a/indra/newview/skins/default/xui/en/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/en/floater_region_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="555"
  help_topic="regioninfo"
diff --git a/indra/newview/skins/default/xui/en/floater_region_restarting.xml b/indra/newview/skins/default/xui/en/floater_region_restarting.xml
index 2fe4d0190a8a0eda42467b69f000733ec508daaf..825f90d265344953bfbfec786bbdef437ae0b5ec 100644
--- a/indra/newview/skins/default/xui/en/floater_region_restarting.xml
+++ b/indra/newview/skins/default/xui/en/floater_region_restarting.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  height="150"
  width="290"
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
index 2d6d02a68c3384d82013d7a884422b23f7314214..24e584b431b1e921b5f68f85bc10dd199ec5cdb9 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="580"
diff --git a/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml b/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml
index 54fdb6d1670810eefa4628e383a6eb33073e99a1..ce86bd65f70d3e3e5d6e0a7f24765c2e56a69d36 100644
--- a/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_save_camera_preset.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="185"
diff --git a/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml b/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml
index 62260274f5cfca9e4dd4edc067ae02443952bdfd..dbfbc058c0140aa31e5a0fda6f26648ed04b69a8 100644
--- a/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_save_pref_preset.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="145"
diff --git a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml
index 3517479cc3f03a943e1f10099fdaf0830746bbe4..33d3a555071277c070899eab0bded295fc6ced42 100644
--- a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater legacy_header_height="18"
          can_resize="true"
          height="400"
@@ -119,7 +119,7 @@
                     tick_spacing="100"
                     show_history="true"
                     show_bar="false"/>
-          <stat_bar name="texture_decode_latency"
+          <stat_bar name="texture_write_latency"
                     label="Cache Write Latency"
                     orientation="horizontal"
                     unit_label="sec"
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index bd4edb81c85dd329f03ecc06dda0cb1decf913b6..ae6e68de175b7b7c93c7eb544026380ad64147b5 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/floater_script_debug.xml b/indra/newview/skins/default/xui/en/floater_script_debug.xml
index 6c49cfa1a8179fcd2eaea36bdb8411f449bdeea8..da269e070503a12a04791598c0eec576081572a4 100644
--- a/indra/newview/skins/default/xui/en/floater_script_debug.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_debug.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <multi_floater
  can_resize="true"
  height="233"
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 b5dd2f97b9237b4e4ab6d65b699b5a4affe8005f..c58f5b9d43eed2228106a8c1f26216852d684344 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
index 8541973baaac37797e420fdb8c17618ed4e8418f..51f2c38eb01f43df0fb9a574046b1cee4db384b3 100644
--- a/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_ed_prefs.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="false"
@@ -334,6 +334,7 @@
      layout="topleft"
      max_length="300"
      name="Script Preview"
+     default_font_size="true"
      text_color="ScriptText"
      default_color="ScriptText"
      bg_writeable_color="ScriptBackground"
diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml
index 96b2ceec63d5114908b81d4fe33f5dca3a13e73f..a0d2b74b5b55294a9e4ace1c82bc65afcb505189 100644
--- a/indra/newview/skins/default/xui/en/floater_script_limits.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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 91a9e67e4cd0ff3b6761cdd2e99ed0a4513fdf41..b0b105fe580cd269652df4fe2a8744796c268426 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
- height="570"
+ height="593"
  layout="topleft"
  min_height="271"
- min_width="290"
+ min_width="320"
  name="preview lsl text"
  help_topic="preview_lsl_text"
  save_rect="true"
@@ -21,7 +21,7 @@
      layout="topleft"
      left="10"
      name="script panel"
-     top="42"
+     top="65"
      width="497" />
     <icon
      follows="top|right"
@@ -33,6 +33,21 @@
      name="lock"
      top="4"
      width="18" />
+    <text
+     type="string"
+     length="1"
+     follows="left|top|right"
+     width="490"
+     use_ellipses="true"
+     font="SansSerif"
+     height="18"
+     layout="topleft"
+     left="13"
+     name="path_txt"
+     text_color="white"
+     top="21">
+        File path
+    </text>
     <text
      type="string"
      length="1"
@@ -42,7 +57,7 @@
      layout="topleft"
      left="13"
      name="desc txt"
-     top="19"
+     top_pad="5"
      width="80">
         Description:
     </text>
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 f0ccd03dcccf1f475c0fe0dd1f95bb9cb4b976c4..d21925e18c17c600a8f6e838ccd36aa8f8c32da0 100644
--- a/indra/newview/skins/default/xui/en/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml
index ade0156bc798ec48a47cf82ac2f2db181a9db824..9cd621898209a2eaf87f725f28a1b595ec4ca052 100644
--- a/indra/newview/skins/default/xui/en/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_search.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  default_tab_group="1"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index c3e7028dc5b79e2686a0230143d91e691e84a960..fc1e32915a8ba4ccd80e707525f68d71855e4e46 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   positioning="cascading"
   legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml
index 998948fca1cfb374a7671e13ce0999ce267a47c9..13362c26a75eb3b830d5821f90e2012d86464a7f 100644
--- a/indra/newview/skins/default/xui/en/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/en/floater_select_key.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  border="false"
diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml
index 37989331cc7e7724bac60b8f1204b08c2a8ead5c..59e30c7242f55ec29e83a7b18481b4ce95e0fde6 100644
--- a/indra/newview/skins/default/xui/en/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml
index e4fda5cd108320022ef3be55fb44b29f5f72ecbb..a93be6a18d6b9e32ce78d56b6b57566c1c140d17 100644
--- a/indra/newview/skins/default/xui/en/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_settings_picker.xml b/indra/newview/skins/default/xui/en/floater_settings_picker.xml
index 375ae13f0eb24abf9b60e4ca0a55e89ee1270bdb..55752b763a8bb8e9f25e6813453a24808e6a32e6 100644
--- a/indra/newview/skins/default/xui/en/floater_settings_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_settings_picker.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
         legacy_header_height="18"
         can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml b/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml
index 484ad159d13b92cc295492d3a414c45a8adde1ea..0b91e136320ba225595051f893974ac38ef5f2d6 100644
--- a/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_simple_snapshot.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index c60618bb33a603368467b5c8049433373dfaefd0..cf0e80492732589ffe77c4ad7c020c43bab7ca6f 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="cascading"
  legacy_header_height="18"
@@ -238,7 +238,7 @@
          height="1"
          left="10"
          layout="topleft"
-         name="advanced_options_hr"
+         name="advanced_options_hr1"
          right="-1"
          top_pad="7"
          />
diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml
index 3889b975a91a2ead30a57a48bcea626095878766..61fb22892637263ed9398bceeb65b3e6744e3919 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="180"
diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck.xml b/indra/newview/skins/default/xui/en/floater_spellcheck.xml
index 76a350dd294729e73dfa72559a2c26c3e730ba45..2575bef48f08e6b96ef8c14c2bcd3629a1777a24 100644
--- a/indra/newview/skins/default/xui/en/floater_spellcheck.xml
+++ b/indra/newview/skins/default/xui/en/floater_spellcheck.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  border="true"
  can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml
index 94393a6c77d1bce70d4f06a1a03cc0286d302a3b..a3109a15a8c87ac82acd8181da079a24f4df8603 100644
--- a/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml
+++ b/indra/newview/skins/default/xui/en/floater_spellcheck_import.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  border="true"
  can_close="true"
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index d056eaa0d2da97a6efb979aecd80e4017feb4757..80b2b6e4dce316a4829c1703d493e6533e73e6a9 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater legacy_header_height="18"
          can_resize="true"
          height="400"
@@ -25,7 +25,7 @@
                     name="statistics_view"
                     top="20"
                     width="250" >
-     <stat_view name="basic"
+      <stat_view name="basic"
                  label="Basic"
                  setting="OpenDebugStatBasic">
         <stat_bar name="fps"
@@ -54,7 +54,7 @@
                   label="jitter"
                   decimal_digits="1"
                   stat="frametimejitter"/>
-       <stat_bar name="bandwidth"
+        <stat_bar name="bandwidth"
                   label="UDP Data Received"
                   stat="activemessagedatareceived"
                   decimal_digits="0"
@@ -68,7 +68,7 @@
                   stat="simpingstat"/>
       </stat_view>
 
-     <stat_view name="advanced"
+      <stat_view name="advanced"
                  label="Advanced"
                  setting="OpenDebugStatAdvanced">
         <stat_view name="render"
@@ -84,28 +84,29 @@
           <stat_bar name="totalobjs"
                     label="Total Objects"
                     stat="numobjectsstat"/>
-					<stat_bar name="cachedobjs"
+          <stat_bar name="cachedobjs"
                     label="Cached Objects"
                     stat="numactivecachedobjects"/>
-					<stat_bar name="newobjs"
+          <stat_bar name="newobjs"
                     label="New Objects"
                     stat="numnewobjectsstat"/>
           <stat_bar name="object_cache_hits"
                     label="Object Cache Hit Rate"
                     stat="object_cache_hits"
                     show_history="true"/>
-					<stat_bar name="occlusion_queries"
-										label="Occlusion Queries Performed"
-										stat="occlusion_queries"/>
-					<stat_bar name="occluded"
-										label="Objects Occluded"
-										stat="occluded_objects"/>
-					<stat_bar name="unoccluded"
-										label="Object Unoccluded"
-										stat="unoccluded_objects"/>
-				</stat_view>
+          <stat_bar name="occlusion_queries"
+                    label="Occlusion Queries Performed"
+                    stat="occlusion_queries"/>
+          <stat_bar name="occluded"
+                    label="Objects Occluded"
+                    stat="occluded_objects"/>
+          <stat_bar name="unoccluded"
+                    label="Object Unoccluded"
+                    stat="unoccluded_objects"/>
+        </stat_view>
         <stat_view name="texture"
-                   label="Texture">
+                   label="Texture"
+                   setting="OpenDebugStatTexture">
           <stat_bar name="texture_cache_hits"
                     label="Cache Hit Rate"
                     stat="texture_cache_hits"
@@ -195,7 +196,8 @@
                   decimal_digits="1"
                   bar_max="45" />
         <stat_view name="physicsdetail"
-                   label="Physics Details">
+                   label="Physics Details"
+                   setting="OpenDebugStatPhysicsDetails">
           <stat_bar name="physicspinnedtasks"
                     label="Pinned Objects"
                     stat="physicspinnedtasks"/>
@@ -234,7 +236,8 @@
                   stat="simscripteps"
                   unit_label="eps"/>
         <stat_view name="simpathfinding"
-                   label="Pathfinding">
+                   label="Pathfinding"
+                   setting="OpenDebugStatPathfinding">
           <stat_bar name="simsimaistepmsec"
                     label="AI Step Time"
                     stat="simsimaistepmsec"/>
@@ -267,7 +270,8 @@
                   stat="simtotalunackedbytes"
                   decimal_digits="1"/>
         <stat_view name="simperf"
-                   label="Time">
+                   label="Time"
+                   setting="OpenDebugStatSimTime">
           <stat_bar name="simframemsec"
                     label="Total Frame Time"
                     stat="simframemsec"/>
@@ -293,7 +297,8 @@
                     label="Spare Time"
                     stat="simsparemsec"/>
           <stat_view name="timedetails"
-                     label="Time Details">
+                     label="Time Details"
+                     setting="OpenDebugStatSimTimeDetails">
             <stat_bar name="simsimphysicsstepmsec"
                       label="Physics Step"
                       stat="simsimphysicsstepmsec"/>
diff --git a/indra/newview/skins/default/xui/en/floater_task_properties.xml b/indra/newview/skins/default/xui/en/floater_task_properties.xml
index 56c236eab48f539d6b1274eb4db1d24faae8f615..ecec41c66300c15ba75f776d9ccfb535a552845b 100644
--- a/indra/newview/skins/default/xui/en/floater_task_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_task_properties.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="590"
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index 547613fb672b0d4c58c2187dfa9c3aa144b15986..9d4fb82ec6fa2980221b706ae5a32b98d3ac2b09 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Explicit left edge to avoid overlapping build tools -->
 <floater
  legacy_header_height="18"
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 9bc05107a207e5461e5129927cddc3b587a9576c..90eaa09e13ce2463677a4d011b417e575761a316 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
index 95aaadfcf3f565b0a3a19ad20fb5be930d87414b..0b443508467a77062ec64163590fc41eebdff6e8 100644
--- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
index 45e2e34da76731d32872428bbc9015cd9ddd5c0a..4211d624ac40fc9a45219b7ac7388ad1eeb73c6d 100644
--- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
index 1b8be21dc7e77c9a8ca88eb59f473decb156d5d1..c195f021e3fc1c85114985421b479b411e15a7ab 100644
--- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml
index 94f7e0b7980183b58292dc8bad47373fb0c4cba7..bade805cdbde168bd5ec5d6735fe2d656944f992 100644
--- a/indra/newview/skins/default/xui/en/floater_test_layout.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
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
index a3ed22f42211f15b884f8d1633b77df339558672..70361cc8dadac78d0cc386611c2ef89dfceb8484 100644
--- a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
         can_resize="true"
         can_close="true"
@@ -26,7 +26,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex2"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -36,7 +36,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex3"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -46,7 +46,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex4"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -56,7 +56,7 @@
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
     </layout_stack>
-    <layout_stack name="test_stack"
+    <layout_stack name="test_stack1"
             left_pad="5"
             top="0"
             width="100"
@@ -71,7 +71,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex2"
                 auto_resize="true"
                 user_resize="true"
                 visible="false"
@@ -89,7 +89,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="black">fixed</text>
         </layout_panel>
-        <layout_panel name="fixed"
+        <layout_panel name="fixed2"
                 auto_resize="false"
                 user_resize="true"
                 height="50"
@@ -98,7 +98,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="black">fixed</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex3"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -106,7 +106,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex4"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -114,7 +114,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex5"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -122,7 +122,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex6"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -132,7 +132,7 @@
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
     </layout_stack>
-    <layout_stack name="test_stack"
+    <layout_stack name="test_stack2"
             left_pad="5"
             top="0"
             width="100"
@@ -155,7 +155,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="black">fixed</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex2"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -164,7 +164,7 @@
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
     </layout_stack>
-    <layout_stack name="test_stack"
+    <layout_stack name="test_stack3"
             left_pad="5"
             top="0"
             width="100"
@@ -179,7 +179,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="black">fixed</text>
         </layout_panel>
-        <layout_panel name="fixed"
+        <layout_panel name="fixed2"
                 auto_resize="false"
                 user_resize="true"
                 height="50"
@@ -187,7 +187,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="black">fixed</text>
         </layout_panel>
-        <layout_panel name="fixed"
+        <layout_panel name="fixed3"
                 auto_resize="false"
                 user_resize="true"
                 height="50"
@@ -204,7 +204,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex2"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
@@ -213,7 +213,7 @@
                 background_visible="true">
             <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
-        <layout_panel name="flex"
+        <layout_panel name="flex3"
                 auto_resize="true"
                 user_resize="true"
                 bg_alpha_color="blue"
diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
index 8f76c53f5b85554b03bbb9e47592131be9c20d9b..2eea5c361f32e805cbaf56a82ebc874a1f2ce283 100644
--- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
@@ -75,7 +75,7 @@
   <line_editor
    height="20"
    left_delta="0"
-   name="left_pad_editor"
+   name="left_pad_editor1"
    text_pad_right="75"
    top_pad="10"
    width="200">
@@ -84,7 +84,7 @@
   <line_editor
    height="20"
    left_delta="0"
-   name="left_pad_editor"
+   name="left_pad_editor2"
    text_pad_left="25"
    text_pad_right="75"
    top_pad="10"
diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml
index 32ccc31dfd4108154c9125192cd7944433428103..9fdeeb08b4cd16eceaf09a20054afc3aa116dc20 100644
--- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
index f4a50ecc9626e7ee9abd0ea8f8af05650090d063..0e54d332cdb37d6d2f82cf46f4e3ab5e92d91d44 100644
--- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
index db14ecae831117e1e7ca9dd6b810003c15c7fa85..505de80f55f28b1cff19f233890c800ace3139f8 100644
--- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml
index 20bd555a03263a41cd377898860f0c69c26fb721..d86c43b48c2b757947501ac32dad0fb524df2b67 100644
--- a/indra/newview/skins/default/xui/en/floater_test_slider.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
index acd49aa492edd01133cc4e3d828fd0d449cecc4c..5fa0b20d4f8d358763a1a1c9083319b2930369d2 100644
--- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
index e1fefc363133250c94dfaa3c8819b24ce71204ff..ab3b819e34bd270651ebf09fe5ed7f44ced92278 100644
--- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
@@ -24,7 +24,7 @@
    follows="top|left|bottom"
    font="SansSerif" 
    left="10"
-   name="test_text_editor"
+   name="test_text_editor1"
    tool_tip="text editor"
    top_pad="10"
    width="200">
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml
index d11373ce1d574c7a35cd08fcc6df7bf19ffbeb90..950ed192c0daa8ed05a60e0d90bc5a088dcfc3ae 100644
--- a/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_text_vertical_aligment.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  can_minimize="false"
  can_tear_off="false"
diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
index 1d31fbd6dc05f14f2dfd3ef275a800435ff73a74..023df69f0fe2ce6e127a187be3338f2e31c1e1d2 100644
--- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
@@ -82,7 +82,7 @@
   </text>
   <text
  left="10"
- name="v_pad_text"
+ name="v_pad_text1"
  height="40"
  width="300"
  halign="left"
@@ -197,7 +197,7 @@ scroll bar gjyrrr
       follows="top|left|bottom"
       font="Monospace"
  left_delta="0"
- name="monospace_text_editor"
+ name="monospace_text_editor1"
  tool_tip="text editor"
  top_pad="10"
  width="200">
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index 067c1fed8245488732f2b4bc4bda58e2f0e7c94e..41d95c5a1585b05007fbbf0df0df8e931746b696 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
index 10854f5a499c358bba03f8b2b4a84f69ce2f7e6a..3271cddd525e26a0193e123773461e716d7a6cb7 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Sample "floater" window with examples of common widgets.
 
     Notes:
@@ -300,7 +300,7 @@
    layout="topleft"
    width="60"
    use_ellipses="true"
-   name="test_text"
+   name="test_text1"
    tool_tip="text">
     Truncated text here
   </text>
@@ -395,7 +395,7 @@ line to actually fit
        width="250" 
        follows="top|left"
        font.name="SansSerifSmall"
-       name="test_text10"
+       name="test_text101"
        tool_tip="text">
         SansSerifSmall.  Русский 中文 (简体)
       </text>
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
index 7328723318b5a8d17088e43de1d65a834a502bcf..d429fa0d24bed4c7e47de14e2f15b3a12795e2ac 100644
--- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 16025e03cc0ec3b3ceb27bbdb1687adc5acbdfc8..57bba4acd88f653ab8036c0c1ed205b74dff337f 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  positioning="none"
  legacy_header_height="18"
diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml
index 90ea4a989037e2e121e41149847836ef8d0a18c7..563d0caa174c45df78d80489fd0200cf25a71c3c 100644
--- a/indra/newview/skins/default/xui/en/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml
index 2064ca811381397907e29b7131552d6e847e452b..c678e23425a5e131771b14f3106d22c2d10c1847 100644
--- a/indra/newview/skins/default/xui/en/floater_tos.xml
+++ b/indra/newview/skins/default/xui/en/floater_tos.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_close="false"
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index c8c10d3775b41816b968ce03a2b79d628e1d6351..56aaf22126ab54d9d593086b00eb091a184ebce9 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   can_close="true"
   can_dock="false"
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
index 3f3331b468af6cf720fa25f6ca39ff31d63bac2a..22dbd80cdaa57023d8875619caf6b39f6f8321a0 100644
--- a/indra/newview/skins/default/xui/en/floater_translation_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  height="470"
@@ -161,7 +161,7 @@
    layout="topleft"
    left="185"
    length="1"
-   name="google_links_text"
+   name="azure_links_text"
    top_pad="-262"
    type="string"
    width="100">
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 b669b2160d579cca4d1d007ea87cbed1debac32d..f2942ae5247a41a6666d396872ee91277cc0f56b 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml
index 2dfc0fd1251933276bb9f99ef5372749f864aa5e..769a3b0ec6de5231afc91751eeacca79c3516162 100644
--- a/indra/newview/skins/default/xui/en/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
index 5c71fd3bc6d9c64737b0471138aa2cf359e7fb6d..51809793d38eb1b7c5d9d7751edf8ee7f4aa2c0c 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_chat_volume.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <floater
  legacy_header_height="25"
@@ -45,4 +45,4 @@
 		name="mute_audio"
 		tab_stop="false"
 		width="16" />
-</floater>
\ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
index 146c3d7e30daf841c6afdb1b8c80320cf85dbd14..d037bdb813cfd80a9365d299f45af13db0b58284 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="27"
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_voice_volume.xml b/indra/newview/skins/default/xui/en/floater_voice_volume.xml
index 9346295d5b8f9ac058af150f146f596a914c5286..4e3dc5edf107da95ca5af6e42a2213afba92a238 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_volume.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_volume.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
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 9a097d933bb513ab03a7f6ee680e63e460296724..2e1dfa00c7a1e849c0da64e31f85ef506be482d9 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   legacy_header_height="18"
   can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml
index d0225f78a9b55f9cb2890b3c0c41f725a673944b..51b5336066a381b06e35c811414d8be3dafece56 100644
--- a/indra/newview/skins/default/xui/en/floater_web_profile.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
+         filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
index 897d959b989f5d38e090d5c08e065248253418df..4e75b2b29c66b305fdfdb84cfa7d756a940a3842 100644
--- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_minimize="false"
diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml
index 115fe413f3ca4e3dc96c1375ea660487cfed895f..e5a1c0da8815dbde238d9d5da189df95821f7377 100644
--- a/indra/newview/skins/default/xui/en/floater_window_size.xml
+++ b/indra/newview/skins/default/xui/en/floater_window_size.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
   can_minimize="false" 
   can_resize="false"
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 bb08564f5b18cfda8f031074a5642032f2bbd6a6..1f6361291c31a67e52617a8a7c3040a20e215612 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
  can_resize="true"
@@ -223,7 +223,7 @@
        image_name="legend.tga"
        layout="topleft"
        mouse_opaque="true"
-       name="square2"
+       name="square2_auction"
        left="23"
        top_pad="2"
        width="16" />
@@ -246,7 +246,7 @@
        image_name="legend.tga"
        layout="topleft"
        mouse_opaque="true"
-       name="square2"
+       name="square2_owner"
        left="23"
        top_pad="-2"
        width="16" />
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index fceb9b218426432df9757b00b2ef9797b7897f6b..4c72bc4703218c53220ae3f63e8bf5d7e0a9c2b1 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml
index a69585074ca189b505c5433f02495aaadd34d3e6..c190d9610fb78de7938df263a49c3d2fcc229de8 100644
--- a/indra/newview/skins/default/xui/en/inspect_group.xml
+++ b/indra/newview/skins/default/xui/en/inspect_group.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml
index bfeb8fc470144883d6cf27ddc8f20e6e25b0e00f..efe518f2f7a7a9e180b21b3541d030aac2efcf18 100644
--- a/indra/newview/skins/default/xui/en/inspect_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
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 e83257d2a0da096229b6c9eeee6295b3b8238e63..2d0a9ccb3c3ef6abc69e0e249ca5c74b643f9309 100644
--- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml
index 0221397a8ca2fd5050395a8bc7fead6487376600..48df86804e2480bffba842c92429a8b3f638bc38 100644
--- a/indra/newview/skins/default/xui/en/inspect_toast.xml
+++ b/indra/newview/skins/default/xui/en/inspect_toast.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
index a7ecc39ed85d84d77c43e6835960afdaf96e6a65..6a89468dc9660146fcb4e7e2efaaca8ee62b21e1 100644
--- a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <button
  chrome="true"
  image_selected="Info_Over"
@@ -6,4 +7,4 @@
  height="12"
  name="inspector_info_ctrl"
  width="12" />
- 
\ No newline at end of file
+ 
diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml
index 4b7cb84044d5564952fd3afaebdd01d95af8bfc1..0c1ea0cea7e80661f7fe92f2f38bd07b31c9723e 100644
--- a/indra/newview/skins/default/xui/en/language_settings.xml
+++ b/indra/newview/skins/default/xui/en/language_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- This file contains strings that used to be hardcoded in the source.-->
 <strings>
 
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index bab37c625898f459b966d12280f6a4a96c17ee78..a4ef4a57cede6bd7a832701c85dc6e86309e6f4b 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|right|top|bottom"
  height="768"
diff --git a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
index 5033ea95469df1709f97dead6d9734cf22cbedd0..e3b248d17bcd0b25bffd92c49d46da40f5c62835 100644
--- a/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_add_wearable_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Add Wearable Gear Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
index 6011f611ae402acb46e0af142ece9394d4edf291..582a12b395ee349b4193255f54bba3c089f8c407 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- *NOTE: See also menu_avatar_other.xml -->
 <context_menu
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index 5815c5300c812f0c8897e566f4d1fce1d6565461..7796ec02adf36e53aad40fd26b2cd893d2e3905c 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Attachment Pie">
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
index 0a028bf89acf5be1c0a3936875db3164871fda7b..34a93d4024ec0f83ae915cfaedd6e60802522dad 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
index 2c7a25f0c3d8e84e86ad36e617982e4c09d184f8..5e69c956620b58b79a2081f992c31e832dbe4600 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- *NOTE: See also menu_attachment_other.xml -->
 <context_menu
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml
index 1a18483418d484ad56fd86feadacdfa39c6801db..dc9007c61d8f528902353265460fa28c09b4379f 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Settings">
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml
index 6e09eb5981f5fa8517f1627fe3b3db35a2604026..7eca0b51a6643f01523b91f18a695fa1fec61c11 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_rendering_settings_add.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_settings_add.xml"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index d5421874c8eacf450447d77ea0101234cc147b35..6b743d0ccb8fac1551a0a12d51bbf2f6660fbe10 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Self Pie">
diff --git a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
index 3f545c936d5733147a8b2dd7090b46390f0873fb..23049aae06d44359cb6d04c20903360427848f34 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="COF Attachment">
diff --git a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml
index f0e8461360d19de63eb60f2b66db7c44a6fb1375..157d5739e5579a3a4939f199b1e13c2860da2be4 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_body_part.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_body_part.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="COF Body">
diff --git a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml
index 206d49e8c748d81b080c95f78f2bc32415351208..a0bd8b4bc936d84c84d890107d037501ff62121f 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="COF Clothing">
diff --git a/indra/newview/skins/default/xui/en/menu_cof_gear.xml b/indra/newview/skins/default/xui/en/menu_cof_gear.xml
index 45cf780557b698ce1183595917a7d17eafffaeed..a491e272cf9ed6a100797c37964e954be2d81e78 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Gear COF">
diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml
index c98dc5dd88a5b14ca74c1bf18c1763a728ad48eb..bf7f41ff9b7e3dd0193cf78272ba6b725931d60d 100644
--- a/indra/newview/skins/default/xui/en/menu_conversation.xml
+++ b/indra/newview/skins/default/xui/en/menu_conversation.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
index a1a3afbf6820d2786a55f5dd920ac82fef5f5696..9c803d08777918e2c19db862e29cd192c0fa325c 100644
--- a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Conversation Context Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
index ce65b23971a28e593031a063c9689099718638b0..864bec5d9a6773faa38e2c2aee6c6df6ea557690 100644
--- a/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_conversation_log_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
      name="menu_conversation_view"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml
index 4c12180daf32f53bc78324a03f636e3f449118fb..6605dd8eb9bc530317c3ce5aeada6161784a51eb 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_color.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Color Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml
index 4823d74a261c2ecb57d359a05b4af5708610cf53..6791a5ec8bb9ea621b113bb1cf09fd8c678410cd 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_features.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Features Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml
index 5de23dfee3f9bdd0a4d57d7ea8a4ca9aa7585c22..5a0411ca27a9eb45f5dd2f2fdd86912984cd1230 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_light.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Light Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml
index bdc4537a9dc0d39c0ace17aec056fe448c589ee0..66cfd29ba4485ff3d5dbec9b259994d93f6c8d66 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Object Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml
index 3ea95b281f08d6e64d558cb1301d3b6b205a819d..6c68994a80b2ba940020009b15f016857acfd6d4 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_pos.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Position Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml
index 06ce80f8977c32488cd7b58d5f3a9cdfe09562e5..400af57371a1216f85f7197a6c6f6bb86e470a3b 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_rot.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Rotation Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml
index 7082a0e65b37c10df8cf24a7bf3c9f392dcb24b9..3547f3b3677562abcfa04873a7aa89c635568b41 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_size.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Size Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml b/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml
index f358affc23d2e32d512e8646abaa3ade304e66eb..a6d8fc1c9c59dfdf81b28a1ecb16ad987ae95a3f 100644
--- a/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml
+++ b/indra/newview/skins/default/xui/en/menu_copy_paste_texture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Copy Paste Texture Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml
index 6f83756f838eedf4116fccf5d66a7565e8e8ee3b..8406c744e27d61b65303a6bdd0943e975a63f941 100644
--- a/indra/newview/skins/default/xui/en/menu_edit.xml
+++ b/indra/newview/skins/default/xui/en/menu_edit.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu create_jump_keys="true"
       label="Edit"
       name="Edit"
@@ -81,4 +81,4 @@
     <menu_item_call.on_enable
      function="Edit.EnableDeselect" />
   </menu_item_call>
-</menu>
\ No newline at end of file
+</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml
index 0eab7c451b8656de6ed4f584978c585b2f539f2b..6345394b46e983c83125a96482d5d1b84d87ad93 100644
--- a/indra/newview/skins/default/xui/en/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/en/menu_favorites.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  bottom="825"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
index d82c453e5f731328d4ca725ceb3108251d1c91ea..41e018337031fd3581feadd433af30e6878ace11 100644
--- a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
     layout="topleft"
     name="Gallery">
diff --git a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
index 0ca505dd5d01a667678dd88a1cc6c91b647a14ca..25d64ba74d99e9e6786988cae698b150b2481cfc 100755
--- a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
     layout="topleft"
     name="Outfit">
diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
index 359df63634d08607379a77905e43e96432ca680e..691801fbd3a6969e21b2fb3a9cd58a8e1e231d5f 100644
--- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml
index eca9e7f3c9fb98e6926fb5c6e8212421fb0f6c6a..71c75743837a1115f75c8fa33afce0e678ec01c7 100644
--- a/indra/newview/skins/default/xui/en/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
      mouse_opaque="false">
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 e52dae1c99a47360e671f1239ea0ec6d00ccd932..1be5f2dc5ecc3877d654e472643af91051273110 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="201"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_im_conversation.xml b/indra/newview/skins/default/xui/en/menu_im_conversation.xml
index de34f9ee0addf4ce7f6a3d73654269baf9d3881f..dd39f6deab88e31b43f3afc0ff261ebd2d244172 100644
--- a/indra/newview/skins/default/xui/en/menu_im_conversation.xml
+++ b/indra/newview/skins/default/xui/en/menu_im_conversation.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Conversation Gear Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
index 880791c5e7999c630b83fbe19bfd0eb20eb2b07c..323886ff74e726eb4214569e049b582eb231f4da 100644
--- a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
+++ b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  name="menu_modes"
  left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml
index eb5e31b57d9c216a704b2ac3c77c84ba796f317d..19fca92818e840ac5f123fe732e2f9dce0a9abb1 100644
--- a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml
index 8cbe62cfb01b8cbd83e490f0f726525cca7031ac..a5d656d3405d04234daa99f224ee3d20139f8626 100644
--- a/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml
+++ b/indra/newview/skins/default/xui/en/menu_imchiclet_group.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml
index 038b8328cb59f8d5a5dfafd21c57ef26198c32ad..a6dda4e7fe10696e6793d723b43f2ed4ee0a8824 100644
--- a/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml
+++ b/indra/newview/skins/default/xui/en/menu_imchiclet_p2p.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  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 9b83b158b96f67eee827fd30055475f63811ec18..f5c7dde5ef86ee5700a4380cc41d6d20e2e1d24d 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
    create_jump_keys="true"
    layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml
index 45a0a6635baac2fe530002b88b483bac7f31e856..391d8f4db74d971c0f7c06f2d963b3f81fa8c8ea 100644
--- a/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml
+++ b/indra/newview/skins/default/xui/en/menu_inv_offer_chiclet.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  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 d2887ab84ece5432f758967ca7e475e8f0b72380..a77ae6ff0d01aa63fc658b802f86f2899208fcc9 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  bottom="825"
  layout="topleft"
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 4db25db1035e8bdd532f520db00aaed7c29cfd9e..9664a97c6bc251e7512ef9f5ab9c9408e0ceafcb 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  layout="topleft"
  left="0"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
index e7a24c72b7dd0108dcb001ee284f935505ffa7b8..5c94eed528669d8aca319befbea88c1a0847bd10 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml b/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml
index 8e34f52f3ac2f846ea2a7bcc1199f8c9c0b71fca..b95a8ad6765cbc5d9dfed032a9eebdee9f590c02 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_search_visibility.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
index c020bc4548e8c64326ebf2bf1004ac8de19fb5b6..70beb32f3a26e4776757507553b2d060daea893b 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml
index 7f0be9c8bceb4d538e506f6d394f0a0e39b62072..9fde8c8d3e2e775e21af8ca3028b442a31a425fb 100644
--- a/indra/newview/skins/default/xui/en/menu_land.xml
+++ b/indra/newview/skins/default/xui/en/menu_land.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Land Pie">
diff --git a/indra/newview/skins/default/xui/en/menu_landmark.xml b/indra/newview/skins/default/xui/en/menu_landmark.xml
index 93b6db222a4e1ddad02f70138481348da2d0d550..e879d7b6fa577cf2d4623bc9710fcef983685d63 100644
--- a/indra/newview/skins/default/xui/en/menu_landmark.xml
+++ b/indra/newview/skins/default/xui/en/menu_landmark.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="201"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index be5ae7260c72eba7ac21468dba6e4e5d6dbeb65f..f95db4ce975e1f8bb389d9d967feb7e3ae70657a 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar
  follows="left|top"
  height="18"
diff --git a/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml b/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml
new file mode 100644
index 0000000000000000000000000000000000000000..39a2bc511c20720050bb2acc8eb90d7dbdb220de
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_lsl_font_size.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ bottom="806"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="menu_font_size"
+ visible="false">
+  <menu_item_check
+   label="Small"
+   layout="topleft"
+   name="font_small">
+    <on_click
+     function="FontSize.Set"
+     parameter="SmallLSL" />
+    <on_check
+     function="FontSize.Check"
+     parameter="SmallLSL" />
+  </menu_item_check>
+  <menu_item_check
+   label="Default"
+   layout="topleft"
+   name="font_monospace">
+    <on_click
+     function="FontSize.Set"
+     parameter="Monospace" />
+    <on_check
+     function="FontSize.Check"
+     parameter="Monospace" />
+    </menu_item_check>
+  <menu_item_check
+   label="Medium"
+   layout="topleft"
+   name="font_medium">
+    <on_click
+     function="FontSize.Set"
+     parameter="Medium" />
+    <on_check
+     function="FontSize.Check"
+     parameter="Medium" />
+  </menu_item_check>
+  <menu_item_check
+   label="Large"
+   layout="topleft"
+   name="font_large">
+    <on_click
+     function="FontSize.Set"
+     parameter="Large" />
+    <on_check
+     function="FontSize.Check"
+     parameter="Large" />
+  </menu_item_check>
+  <menu_item_check
+   label="Huge"
+   layout="topleft"
+   name="font_huge">
+    <on_click
+     function="FontSize.Set"
+     parameter="HugeLSL" />
+    <on_check
+     function="FontSize.Check"
+     parameter="HugeLSL" />
+  </menu_item_check>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml
index 4b3bb8ee1c0280aef36f2e54ea80428411fc32b5..84395da903fb66e5d6f5a3afb30619a59b138dd0 100644
--- a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  name="menu_marketplace_sort"
  left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml
index 7ea5c8fd44213d1c20a387984ab1f2b73255c444..95ade34a28fcdd7c28fa9effb601a57341a17bce 100644
--- a/indra/newview/skins/default/xui/en/menu_media_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/menu_media_ctrl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  name="media ctrl context menu">
   <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml
index 8caff8f775f290158b7e5ca9358846388b40e15d..b3391127da5a1a3c89a49fbe583fb1912a2ceb09 100644
--- a/indra/newview/skins/default/xui/en/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/en/menu_mini_map.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml
index 2650903f88c687c9aaf29a92a02ae5063c28af4e..5bdcbc567a03506977ee9b741924b523eb0504ef 100644
--- a/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_model_import_gear_default.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_mute_particle.xml b/indra/newview/skins/default/xui/en/menu_mute_particle.xml
index a4261bf39e6ea5f411d477fa195132e765ccdcfd..fe5233c3a3c9d4f072bb789eac2033bba9d2c5da 100644
--- a/indra/newview/skins/default/xui/en/menu_mute_particle.xml
+++ b/indra/newview/skins/default/xui/en/menu_mute_particle.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- *NOTE: See also menu_attachment_other.xml -->
 <context_menu
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml
index b71b866c4b55d295f5c03e9f8790bcb79688788c..e15bb2b5ba8838337e6bd24aa7e6008ef724bc4b 100644
--- a/indra/newview/skins/default/xui/en/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_navbar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="201"
  layout="topleft"
@@ -39,7 +39,7 @@
          parameter="landmark" />
     </menu_item_call>
     <menu_item_separator
-     name="Separator" />
+     name="Separator1" />
     <menu_item_call
      label="Cut"
      name="Cut">
diff --git a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml
index ff89e20ea52da223c46dea1d82fe77a45aff3dcb..c201b49229829c911a60adfc83f5643371389c97 100644
--- a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu bottom="100" color="MenuDefaultBgColor" drop_shadow="true" height="101" left="100"
      mouse_opaque="false" name="NearBy Chat Menu" opaque="true" width="128" visible="false">
 	<menu_item_call bottom_delta="-18" height="18" label="Show Nearby People..." left="0" mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
index 263ac40f4eb7d2aa771d7f4695e3d99491ce965d..0f5ba811717f1eccb7fc7c9e940057347bfc9342 100644
--- a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
+++ b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Notification Well Button Context Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index fd5543bfb57063853636021373ba4e19c95008c3..e5ebb7b5b8f883678aaf7140a1d041bb5fcb7695 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
     layout="topleft"
     name="Object Pie">
diff --git a/indra/newview/skins/default/xui/en/menu_object_icon.xml b/indra/newview/skins/default/xui/en/menu_object_icon.xml
index 5137aea72ac4825746608ab8c3f0fb8811e04f36..f3e520700be240961ad4d0f4e25503aa697bbafd 100644
--- a/indra/newview/skins/default/xui/en/menu_object_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_object_icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index e216962d12a4fead02a8316dec8c6c7ca15b1161..85eb941e31adb948b5c4b6424f69dc567006630d 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
index 8c8bb29baf1061876b6ed7b8d8e259e9c9e6b393..ae5fae864d9564715e43f89f9ed61306fa73b1a4 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Outfit">
diff --git a/indra/newview/skins/default/xui/en/menu_participant_view.xml b/indra/newview/skins/default/xui/en/menu_participant_view.xml
index b9750284cdf29e61b30b00ada3d99bdc4c788bb4..7591e6e02fcabce0eed160ce516d5419bca085b4 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="participant_manu_view">
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
index 5e16707340d8111738e7fdee10f134e8dffddb23..ddf7572e56e635b8d1a7677193fa5909014f2ebb 100644
--- a/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_blocked_gear"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
index 0c7155667ed13ae52fe642e9cc457b8e860ee2e7..27e2431ce65294d6616f930bcf3dfa5307707e0e 100644
--- a/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_plus.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_blocked_plus"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
index 2efb70ee37b7966d991e5d6e3ae602d8f5fd94c3..d9808401df5878d97b25e5d49afc97d5751c9609 100644
--- a/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_blocked_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_blocked_view"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
index d8b9e96942ba9887185cbdd4745dac784b770555..1dfed5baac7e088bcabe2d2e277824123e594b9c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
      name="menu_group_plus"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups.xml b/indra/newview/skins/default/xui/en/menu_people_groups.xml
index c82f834fccca9d5970d5977010dd82e0c52d0b53..ebe6de4f465f8f656a4fd01b640cde4d4a9f2e56 100644
--- a/indra/newview/skins/default/xui/en/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_groups.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_group_plus"
  left="0" bottom="0" visible="false"
  mouse_opaque="false" opaque="true" color="MenuDefaultBgColor">
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
index 73f79f1e70d69fd8811a22afb941ff84b82d338f..e0c199bc27e52c2194417f1a2a2767bd43f52997 100644
--- a/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_groups_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_group_plus"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index cdb78d26cf74b0ebb8dcc27af909b4540f359843..83a415e6991cbbaefc9db6d3fa9a9856e3bd5a2e 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Nearby People Context Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
index a936163cbb75e737d131d20a2a6fe3c88aa6f848..5b4c5fa0144203a9c06c073029e37b0ea24eb9c3 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Multi-Selected People Context Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
index f2b08fb710b9bd0ffd620ead74bcb996b4926008..fe56b2ef56d2cd39f6ea73ba4fe64e3a32064330 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  name="menu_group_plus"
  left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
index 8154109ad41be00d66d5086374260416ff94439a..1e3cfc709e95d8b7880778a04ea45ef06ef3d728 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu 
      name="menu_group_plus"
      left="0" bottom="0" visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_picks.xml b/indra/newview/skins/default/xui/en/menu_picks.xml
index a408e6136c11fdced40ae309e5271e21c5a186a2..9701e784674d866cef48a2cabbd46fc17c52bb89 100644
--- a/indra/newview/skins/default/xui/en/menu_picks.xml
+++ b/indra/newview/skins/default/xui/en/menu_picks.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Picks">
diff --git a/indra/newview/skins/default/xui/en/menu_picks_plus.xml b/indra/newview/skins/default/xui/en/menu_picks_plus.xml
index f3b207e36c750c7fa41a635a40c2e08330e26043..b35df52ae75107ffe602ae18c543a283da0e3685 100644
--- a/indra/newview/skins/default/xui/en/menu_picks_plus.xml
+++ b/indra/newview/skins/default/xui/en/menu_picks_plus.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="201"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_place.xml b/indra/newview/skins/default/xui/en/menu_place.xml
index c9c2df834e669ab88278f71245057fdbffebb8c6..ac4b53c0fcb8ea5bdd9644dca5743c1aa6eda83c 100644
--- a/indra/newview/skins/default/xui/en/menu_place.xml
+++ b/indra/newview/skins/default/xui/en/menu_place.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="201"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_place_add_button.xml b/indra/newview/skins/default/xui/en/menu_place_add_button.xml
index ad49f7c3a8581926a6f1327dd34b8b1eae876c98..9a6f9c49569fb3713f5ff5e8b016c625ebb18634 100644
--- a/indra/newview/skins/default/xui/en/menu_place_add_button.xml
+++ b/indra/newview/skins/default/xui/en/menu_place_add_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  left="0"
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
index e9ada52a8f6aa1484f48663391be24a3b93cfd14..81ad2c83404c98afb1e8732156e7d8f2ce56a841 100644
--- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml
index c89b498ddf8f934aabe304c72a7e7fc9b5c21371..a89a36de86748b889a59d1be24b6a3ecd4cdfa08 100644
--- a/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/en/menu_places_gear_landmark.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml b/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml
index 4193a72e2e340defa04e8f68f925a018f4121f5d..6abefc9bb6f07b78d4fdd355c6cab5e1439501f1 100644
--- a/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml
+++ b/indra/newview/skins/default/xui/en/menu_places_gear_sorting.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  left="0"
diff --git a/indra/newview/skins/default/xui/en/menu_profile_other.xml b/indra/newview/skins/default/xui/en/menu_profile_other.xml
index 20608050b5f635b6d8aea311be90ea56c020b9f5..0b26152413f90d9e0982d17f98a9e696207d5cc3 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_other.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Avatar Profile Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
index b0b7b554b07ec9a1dad96a85341e9de57400a071..5a9b8e41f79ca7013cd9557f0df1e114d21ab9a9 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="50"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_profile_self.xml b/indra/newview/skins/default/xui/en/menu_profile_self.xml
index 30d7f8ea2cc9ebccdf4b927a783ae5be22bfdcc4..5f6c062a5734cefead623317276693851e44d358 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_self.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  name="Avatar Profile Menu Self">
diff --git a/indra/newview/skins/default/xui/en/menu_save_outfit.xml b/indra/newview/skins/default/xui/en/menu_save_outfit.xml
index 6285bf741718b9fff81b2b63d7779ef2c4da2896..38f21e8caac1ca3a92adab6846585d1ee34187c0 100644
--- a/indra/newview/skins/default/xui/en/menu_save_outfit.xml
+++ b/indra/newview/skins/default/xui/en/menu_save_outfit.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  height="201"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_save_settings.xml b/indra/newview/skins/default/xui/en/menu_save_settings.xml
index 84dacaa8b8a535c8c0612b80abb79c5b319963c2..9f88c5001138b72352e0afa710dd4b4af78933bc 100644
--- a/indra/newview/skins/default/xui/en/menu_save_settings.xml
+++ b/indra/newview/skins/default/xui/en/menu_save_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
         height="602"
         layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
index 49e52ebb8d6a28eb17b987a19c52c175c2fdfc17..7949618ad377b3b6955355dabf03779fe56debfb 100644
--- a/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
+++ b/indra/newview/skins/default/xui/en/menu_script_chiclet.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_settings_add.xml b/indra/newview/skins/default/xui/en/menu_settings_add.xml
index a4782cfdc351a9409ff68267ddb0f37ae1f8be85..21d70b85156d56b2bb90545e7a94eef25a5417b6 100644
--- a/indra/newview/skins/default/xui/en/menu_settings_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_settings_add.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
         layout="topleft"
         mouse_opaque="false"
@@ -34,4 +34,4 @@
         <menu_item_call.on_enable
                 function="MyEnvironments.EnvironmentEnabled" />
     </menu_item_call>
-</toggleable_menu>
\ No newline at end of file
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_settings_gear.xml b/indra/newview/skins/default/xui/en/menu_settings_gear.xml
index 93aa47abe6e8415f652512090b35960f089729d0..079a58275101cf34efb7565c10870f102f5731fe 100644
--- a/indra/newview/skins/default/xui/en/menu_settings_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_settings_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
         layout="topleft"
         mouse_opaque="false"
@@ -49,7 +49,7 @@
     </menu_item_call>
     <menu_item_separator
             layout="topleft" 
-            name="Separator" />
+            name="Separator1" />
     <menu_item_call
             label="Copy"
             layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_slurl.xml b/indra/newview/skins/default/xui/en/menu_slurl.xml
index ee37d4994662dae9a1b0ebc2f8765f0c5eefc32e..f32f6885f08113812c22fb7ea9ebce6e31d83cad 100644
--- a/indra/newview/skins/default/xui/en/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/en/menu_slurl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="101"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
index c11d668698e2cbdacc895967b97da084d3739ca5..0f361d375abbe40988310f25e83012ca8b6fcf30 100644
--- a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  name="Teleport History Gear Context Menu"
  left="0"
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
index 153e5a70a90904454127bbdd343a874d6d55d8d9..910a0adc28f923f1e607d35678317c6d9ec57600 100644
--- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  name="Teleport History Item Menu"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml
index ecc1d8a954b5cda2fbf6620d1e53362c4f8805c6..96216be0171ab14b939b9076ab2b2ad3444c6336 100644
--- a/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_teleport_history_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Teleport History Item Context Menu">
diff --git a/indra/newview/skins/default/xui/en/menu_text_editor.xml b/indra/newview/skins/default/xui/en/menu_text_editor.xml
index 70b40dd89b4cd09aac8b503b2ae7d9bea7e4292e..48657a64356ec8791d72bbaf5344dcae9678446e 100644
--- a/indra/newview/skins/default/xui/en/menu_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/menu_text_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  name="Text editor context menu">
   <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
index f6c816a5f70de833e266a4b907bd3c8af3a4a728..25bd5eafe679829b93645d1f2e0064532ae119c9 100644
--- a/indra/newview/skins/default/xui/en/menu_toolbars.xml
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
       layout="topleft"
       name="Toolbars Popup"
diff --git a/indra/newview/skins/default/xui/en/menu_topinfobar.xml b/indra/newview/skins/default/xui/en/menu_topinfobar.xml
index cbe249ed4d8a14b385bf33ee94a23af1a190c274..eaa8aaee511bc320197fa7d66a1f2724d93ae564 100644
--- a/indra/newview/skins/default/xui/en/menu_topinfobar.xml
+++ b/indra/newview/skins/default/xui/en/menu_topinfobar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  height="201"
  layout="topleft"
@@ -40,7 +40,7 @@
          parameter="landmark" />
     </menu_item_call>
     <menu_item_separator
-     name="Separator" />
+     name="Separator1" />
     <menu_item_call
      label="Copy"
      name="Copy">
diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml
index 255e6bbf2d63a6eb7982180c4e4fedd0923c923f..d6c9e5a295aed08cdcca81581c8a7d8a8b8563d7 100644
--- a/indra/newview/skins/default/xui/en/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">  
diff --git a/indra/newview/skins/default/xui/en/menu_url_email.xml b/indra/newview/skins/default/xui/en/menu_url_email.xml
index 6467fe5c90460271e24f910c621a8ba6676708bf..d513e51d819d6474d73022d4a666cce0411560eb 100644
--- a/indra/newview/skins/default/xui/en/menu_url_email.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_email.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Email Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_experience.xml b/indra/newview/skins/default/xui/en/menu_url_experience.xml
index f4d50e1603f435c0dd9d821e5311751562f0d685..bdc89156823805c7a6e860e03e5f9a5fbf7ad595 100644
--- a/indra/newview/skins/default/xui/en/menu_url_experience.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_experience.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_group.xml b/indra/newview/skins/default/xui/en/menu_url_group.xml
index 792c2581a72d17e1343ac8a41b62ac707ce1527a..066c014a148a61729d6d73e8ec1f381a874a8967 100644
--- a/indra/newview/skins/default/xui/en/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_group.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_http.xml b/indra/newview/skins/default/xui/en/menu_url_http.xml
index 7a4b1e619bf93cc6aa9ffa0b8f8a80b2d990ae43..350e21b44fee47b850b2e1b95cd63309347c4afa 100644
--- a/indra/newview/skins/default/xui/en/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_http.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_inventory.xml b/indra/newview/skins/default/xui/en/menu_url_inventory.xml
index cf9d1d58817e39a1b8633d3080cd8f1f2b5c2f9d..7d46aa7d3724de4a63cffed6f9a779ff4799b34e 100644
--- a/indra/newview/skins/default/xui/en/menu_url_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_map.xml b/indra/newview/skins/default/xui/en/menu_url_map.xml
index 2ca9e3b3fe63a1fa5dacd0c6dbf18194c9365a14..6627c907bd49d43f250dc4362ef9843de6066c26 100644
--- a/indra/newview/skins/default/xui/en/menu_url_map.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_map.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_objectim.xml b/indra/newview/skins/default/xui/en/menu_url_objectim.xml
index 00ff524ed48cc89724f90edd9eb08eee8fd9486b..f5615b255ad12ad630aed664f60f76c0bedbb239 100644
--- a/indra/newview/skins/default/xui/en/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_objectim.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_parcel.xml b/indra/newview/skins/default/xui/en/menu_url_parcel.xml
index f477c310fb708b20b415632c223aa4a17ed30bcf..e0f1fcf9c38635777a893b761436e1aae8582a7b 100644
--- a/indra/newview/skins/default/xui/en/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_parcel.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_slapp.xml b/indra/newview/skins/default/xui/en/menu_url_slapp.xml
index 6d1060b6339b4ff4533c7a0575f08c1b0d58d97f..aab84a63ef96d6aa0a6fea77193b25cdadd0af46 100644
--- a/indra/newview/skins/default/xui/en/menu_url_slapp.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_slapp.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_slurl.xml b/indra/newview/skins/default/xui/en/menu_url_slurl.xml
index 98abc206a590129ca2f23841291911df351f348d..fb3cfbc11688ef0ad8b71384ee9b6f8d63ccf2bb 100644
--- a/indra/newview/skins/default/xui/en/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_slurl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_url_teleport.xml b/indra/newview/skins/default/xui/en/menu_url_teleport.xml
index 289e32bcf418abb7d6f1686ac9bdfb52424f8985..3c4ec4ae4a5851d4af749282fd13a23d3f527bb0 100644
--- a/indra/newview/skins/default/xui/en/menu_url_teleport.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_teleport.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Url Popup">
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index b544710b9a8e28739deefe377c10f8c7e0a5c2e3..9f203afa59cb39594164382851d2a0fa882a037d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar
  bg_visible="false"
  follows="left|top|right"
@@ -78,6 +78,14 @@
          function="Floater.ToggleOrBringToFront"
          parameter="camera" />
       </menu_item_call>
+      <menu_item_call
+       label="Notifications..."
+       name="Notifications"
+       shortcut="alt|shift|N">
+        <menu_item_call.on_click
+         function="Floater.ToggleOrBringToFront"
+         parameter="notification_well_window" />
+      </menu_item_call>
 
       <menu_item_separator/>
       <menu_item_check
@@ -526,7 +534,7 @@
      name="Help with avatars">
         <menu_item_call.on_click
             function="Advanced.ShowURL"
-            parameter="https://community.secondlife.com/search/?type=cms_records3&amp;tags=avatar&amp;nodes=30&amp;search_and_or=or"/>
+            parameter="https://community.secondlife.com/knowledgebase/english/controlling-your-avatars-appearance-r216/"/>
       </menu_item_call>
     </menu>
     <menu
@@ -3274,6 +3282,14 @@ function="World.EnvPreset"
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorSoftwareException" />
             </menu_item_call>
+            <menu_item_call
+             label="Force OS Exception"
+             name="Force OS Exception">
+                <menu_item_call.on_click
+                 function="Advanced.ForceErrorOSException" />
+                <menu_item_call.on_visible
+                 function="Advanced.EnableErrorOSException" />
+            </menu_item_call>            
             <menu_item_call
              label="Force a Crash in a Coroutine"
              name="Force a Crash in a Coroutine">
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
index 20c81c983ba0517fa8773252a9e0e819afd854a4..ee77ef23f08b48ae7cf584346deba53e6e2eb9f4 100644
--- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  name="Outfit Wearable Context Menu">
     <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 57b20dfda9167ef7a00ccb71e77ab96ea1c508ab..eacc5ab365371d9b3463f3369c5390c116f33815 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu
  layout="topleft"
  visible="false"
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
index b8e2b448843f9b10998b7f355980b109e59e1d61..321e8a083181549922c4f30df599d933f12b19fa 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu
  layout="topleft"
  name="Wearing">
diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml
index 705b5263c36ce72c071fc6ce451b1f5cc73c0966..b60b000251f4314ec0e666685479596c83a7fae1 100644
--- a/indra/newview/skins/default/xui/en/mime_types.xml
+++ b/indra/newview/skins/default/xui/en/mime_types.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <mimetypes name="default">
 	<defaultlabel>
 		(Unknown)
diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml
index c14c0031778794c8d345eba783c9c881686b00ab..4f0323fdbf0f42eee6827eda314c03de0933ad1b 100644
--- a/indra/newview/skins/default/xui/en/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <mimetypes name="default">
 	<defaultlabel>
 		(Unknown)
diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml
index 1a4512bc2ecb94d6c67383a45247f8ffc3621b96..fe6dc51ca6d9eb2800f8b0fecc10719ec1f50325 100644
--- a/indra/newview/skins/default/xui/en/mime_types_mac.xml
+++ b/indra/newview/skins/default/xui/en/mime_types_mac.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <mimetypes name="default">
 	<defaultlabel>
 		(Unknown)
diff --git a/indra/newview/skins/default/xui/en/notification_visibility.xml b/indra/newview/skins/default/xui/en/notification_visibility.xml
index db292100d7b19e89a595945c95d0279e96cb9283..68a52a82ce29449183048cffd679706d7ddb639d 100644
--- a/indra/newview/skins/default/xui/en/notification_visibility.xml
+++ b/indra/newview/skins/default/xui/en/notification_visibility.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <notification_visibility>
   <hide tag="custom_skin"/>
 	<show/> 
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 7dda553b94ceb8872bc6e9b705b6a541fcdd1d05..2f49995b61f935682a7965238aef326a12ad5431 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -1,4 +1,5 @@
-<?xml version="1.0" ?><notifications>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<notifications>
     <global name="skipnexttime">
 
 		Don&apos;t show me this again
@@ -9405,7 +9406,7 @@ You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME]
    icon="alertmodal.tga"
    name="CannotUploadTexture"
    type="alertmodal">
-Unable to upload texture.
+Unable to upload texture: &apos;[NAME]&apos;
 [REASON]   
   <tag>fail</tag>  
   </notification>
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 d74dca8b95cd804bc128720ae889d81caf3643e9..66c71425a2c2cca94e72e599039a815e1c45b237 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- *NOTE: mantipov: this xml is intended to be used inside panel_outfits_list.xml for each outfit folder-->
 <!-- All accordion tabs in the My Appearance/My Outfits panel will be created from this one at runtime-->
 <!-- Non of string values of controls below are visible to user. They are not need to be translated. -->
diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
index 656171ff960cc5fd5c04e0ee2fc77e6f87716be7..e21a04698f3a5bf4e425871c816b140146862e49 100644
--- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml
+++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   name="panel_activeim_row"
   layout="topleft"
@@ -59,4 +59,4 @@
     image_unselected="Toast_CloseBtn"
     image_selected="Toast_CloseBtn"
   />
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
index 2f9c6439524158f92466d2ef6bdd6c8609d7a9a9..c26ea1f9605b3aa440318bf897adc13e73384c39 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="24"
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml
index b779b08a63c487e6c637a42d39f8c21a9279ebd4..a0b0459b0e956d7dd7875224437c0eab54062d0e 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_tag.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_tag.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="avatar_tag_notification"
  top="10"
diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
index 934ef53ccd88a7ee523bdc947b8b272e368c0e75..dec8490c6e48091b05575e5c31093aff6f0079cc 100644
--- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  follows="left|top|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
index 752321b949ff349c3aa492cbd10efadc9fc40a20..5ac0bf54de93e82f92ac278089bb855c51995767 100644
--- a/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_blocked_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
@@ -68,4 +68,4 @@
      top="6"
      use_ellipses="true"
      width="180" />
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
index 216a265164449775c8ba3868ee98763cb09ec2b5..e348306464e005f562370fc85dc761358070dcd2 100644
--- a/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_body_parts_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
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 1c0b205c4f6668f4406e42c5f9bf9e964e55f72f..f86d7cf8d5b3232fc3f5f9e025422ab009a2e8e5 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  mouse_opaque="true"
  background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml b/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml
index 9417ab4ac2d0de1b36cf36e69b6550bad7dbd1cb..381af3607e942b9c8a375525e0b0fb1c1105eadb 100644
--- a/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_camera_preset_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="20"
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 5c5c718bdf9c684fd6e21e6f9c9aab8f07e89f43..4f489113768025c74006ba27d459019a8cb8e582 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 	 background_visible="true"
      bevel_style="in"
diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
index 357dbc07ccf2f87680850864037495fd839cff49..dffd73c2aa00d06d6b9fa59b1c2f7e11aaa184c5 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  bg_alpha_color="black"
diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
index a6051b6ae37cc3034e6a5e0c17f40f3485ec740f..2d67ae52a305424ba59fbefb989f6b7a89f0d2b1 100644
--- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="false"
  chrome="true"
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 98bc306b9e717bb7ab81a38cf82d004d9f67b492..e3fd1cd5a1fab2799f387eada4da0a9ffdc88a7e 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
index d1175a9fe18926a444a102af31cbaa8440efead3..8bd6bc066c2f364fcd8e85d12d17374a1228e41f 100644
--- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="top|left|right"
diff --git a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
index cc0541e65c03bdffc517b8cd8d8891097ff0390f..68d4296743bdd1814a5fa83a248e892c524d4f8a 100644
--- a/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_clothing_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
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 d0eededad06fa351d2ab50fc0dc4d33da8257225..651411fabd2f475fef5f527489757e5b10fae640 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  bg_alpha_color="DkGray"
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
index 4372cf69bf208029e88c52361ea6e21d6c48cce5..7902588598418a8f834cfc26838e0203e5d3e438 100644
--- a/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_conversation_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|top|right"
  height="24"
diff --git a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
index 78d4c174d2cf7f01140c0cf82c97e9af34bba991..0766e8504f884e239d4bae543c3d01e58e32caa4 100644
--- a/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_conversation_log_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
@@ -104,4 +104,4 @@
      height="14"
      width="14"
      tab_stop="false"/>
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
index de2ff0afc934af7d23f5465f43bc5d704b810bf1..d12da0ca62d7255949148286220d50cc2bf2a7f6 100644
--- a/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_deletable_wearable_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
index 4b05ab27e4690c4ed6240e4eb8332e67f2fc204e..766b6298244c48123b6008ccc443f3d18efb26d2 100644
--- a/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_dummy_clothing_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
index b319e5e872ac10a45d9ce6130b42ccd7af5ebbce..366cc396de16bc8858045522cbbabc698609a7fc 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
index 0ef18fe1c21fc5d78445b8fb76bbfb55a8ea6c37..3cdb5b9a9e2862f4149279dcce2baab95939e656 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
index b70208d870e80df1abf5e788ad047e7cce6a5458..2fa7b51ebab76f2afbf884c8bed06565abfed845 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
index c3b2d5af096f317dda61be5a000ae0bb8514d644..9f41b8adde6eb17e0bc23d4330b3fb8154953288 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
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 44382e3a96300961cfaf63ec72dbefef5b6fefba..e4efff3cd911f6dd6ae3db6e5f9afe956259311f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
index 135a4ac39dc560c282e9d5ebb9f411e05906d73e..da3bfe6d4d1f04d2e50a7e5ffde6b1e72e65d64a 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
index e93cf68f8853e3f3551d6b9bedab8d6f4737ab7f..d30afdf953761d812053a97f74f8d66540a3c420 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_physics.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
index e73ae37592b80e39465afd9598f870eeb6a68453..3b38bb52a808f4aed2aca171bddb909d05a669f0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
@@ -11,8 +11,8 @@
      <string name="meters">Meters</string>
      <string name="feet">Feet</string>
      <string name="height">Height:</string>
-     <string name="heigth_label_color" translate="false">White_50</string>
-     <string name="heigth_value_label_color" translate="false">White</string>
+     <string name="height_label_color" translate="false">White_50</string>
+     <string name="height_value_label_color" translate="false">White</string>
      <text
          follows="top|left|right"
          font="SansSerifSmallBold"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
index e51ec292d00b3f02950c57520e4de9e68453e7ad..e681da2dc16ff671e4a03c4fd2401cea761bc9a3 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
index 8a1b7dba5b2cf386fcb185a22495e6807679eab9..992edfeb6ec120ca0c3bbf95d7d36d22a1107d31 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
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 78044a64cf0fe45e5ecc1a747b0f92b9271cdc70..8845809c87f453679e65fb405c6e2759412c0e6c 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
index 5ca393e8961e63095a582216385f610306dad63a..48044fa313c124270c5e78c2a90a6274ce395e47 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
index ed0d0afba33429024729b7deaf781b3e5771cc96..dfbaf6477f18e833b16d0c798f8aea30d9a58b7a 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
index a2684d82deff588c3283df1827f467d234ecc3ac..91e199d3a1a67d47c68e65f8dd9233285d5ff625 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
     background_visible="true"
   follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
index dabdb427ff662e84cde4a6cbff6b911b4bec76b0..24cc5f326d440c5f3ac68cc8deb64e081d489002 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
index 19a6b14bd07ae480a81e46ad12c529734a99822f..06f00f1e5feb66efc95686ebab3b7adc1452ad79 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel
      background_visible="true"
 	 follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_universal.xml b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
index c607d566a4c60c45b07a30337f90e209cf31f16c..770314f903eff681525ad68948dfb10455216537 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_universal.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
     background_visible="true"
   follows="all"
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 133e6e32e3dd7b38c935e518fa48924c0985e638..12dc96ba2a55b07595ab764728d573e8d5c602cb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="in"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_experience_info.xml b/indra/newview/skins/default/xui/en/panel_experience_info.xml
index a246b2e3224ca91ca44a0b85d958f37d0cb4418d..2b03655aa1212137f05241eee350a2948b759907 100644
--- a/indra/newview/skins/default/xui/en/panel_experience_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_experience_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   background_visible="true"
   follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml
index c357f9e7d501ae2cee6fd2f043dc2ced4c4b38e6..9377f14fc061de1e76975fa51849031751d4bc67 100644
--- a/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml
+++ b/indra/newview/skins/default/xui/en/panel_experience_list_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   layout="topleft"
   left="0"
diff --git a/indra/newview/skins/default/xui/en/panel_experience_list_item.xml b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml
index 58c18b8bb15d9d76694a80c543b86c05b80b4893..97dfccb31a5990e75ffdacc07a6a49088c83c01a 100644
--- a/indra/newview/skins/default/xui/en/panel_experience_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_experience_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <panel
   name="panel_experience_list_item"
diff --git a/indra/newview/skins/default/xui/en/panel_experience_log.xml b/indra/newview/skins/default/xui/en/panel_experience_log.xml
index bf7295b1875e0b8044663e7eccaa99be4e4ce5d4..7d2bf83be3c4b07892ed1e08b045a009f6d72d09 100644
--- a/indra/newview/skins/default/xui/en/panel_experience_log.xml
+++ b/indra/newview/skins/default/xui/en/panel_experience_log.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <panel
   name="panel_experience_log"
diff --git a/indra/newview/skins/default/xui/en/panel_experience_search.xml b/indra/newview/skins/default/xui/en/panel_experience_search.xml
index c2fe9fb0851c48b2355e1f2c0dfe835f29bc3d8f..bb07476ad0208d11ddd20ee00e15c52441ebcec2 100644
--- a/indra/newview/skins/default/xui/en/panel_experience_search.xml
+++ b/indra/newview/skins/default/xui/en/panel_experience_search.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   name="panel_experience_search"
   layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_experiences.xml b/indra/newview/skins/default/xui/en/panel_experiences.xml
index 9d306154425950fa1930a413010b2d32b0a1dcda..2dd4ba57fee9e70159448708d9d195a25e14aa5c 100644
--- a/indra/newview/skins/default/xui/en/panel_experiences.xml
+++ b/indra/newview/skins/default/xui/en/panel_experiences.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <panel
   name="panel_experiences"
diff --git a/indra/newview/skins/default/xui/en/panel_favorites.xml b/indra/newview/skins/default/xui/en/panel_favorites.xml
index 1e8ea34ad289ae93bacaa3f765b044b0b28110e1..67148ad24e9011ff6bc16eef4b56ac5805ffa5ef 100644
--- a/indra/newview/skins/default/xui/en/panel_favorites.xml
+++ b/indra/newview/skins/default/xui/en/panel_favorites.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    name="Favorites"
    layout="topleft" 
diff --git a/indra/newview/skins/default/xui/en/panel_generic_tip.xml b/indra/newview/skins/default/xui/en/panel_generic_tip.xml
index eea92895f58191928cde40d1fabf5d1ea460968e..47379b69b8b74aa0625d14108e4914094a0194dd 100644
--- a/indra/newview/skins/default/xui/en/panel_generic_tip.xml
+++ b/indra/newview/skins/default/xui/en/panel_generic_tip.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="40"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml b/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml
index 509dcf354ea311abb0a3179f97e12149ed48cef6..43ed304ee83c6da545e7b2033a8695631bd4dde5 100644
--- a/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_bulk_ban.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="330"
  label="Ban Residents"
diff --git a/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml
index 284f239887593b1e5fd21ae36f4c872ceeabaa4f..10efcca8e9e0c6f9f1e33dbcf39fa552ce77981c 100644
--- a/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_creation_sidetray.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 background_visible="true"
  follows="all"
@@ -230,7 +230,7 @@ background_visible="true"
     <layout_panel
       background_visible="false"
       background_opaque="true"
-      name="create_actions"
+      name="create_actions1"
       follows="all"
       layout="topleft"
       auto_resize="false"
@@ -259,7 +259,7 @@ background_visible="true"
         <layout_panel
           follows="bottom|left|right"
           layout="bottomleft"
-          name="layout_crt"
+          name="layout_crt1"
           auto_resize="false"
           height="23"
           width="245">
@@ -288,7 +288,7 @@ background_visible="true"
         <layout_panel
           follows="bottom|left|right"
           layout="bottomleft"
-          name="layout_crt"
+          name="layout_crt2"
           auto_resize="true"
           height="23"
           width="91">
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index 23b54b296e6c55700c2428e369b8b2d4f389a0bf..203e07d6caf1567fb914b207ac541977e4d51f40 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  label="General"
  height="490"
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 31a8668df025050c8f379b092de6252a2f242795..f4b7db4e234ab674b9803955f937cd8456b27467 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 background_visible="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
index ebb460deb0cb452e1e0567f3fa83b3c4c93785ac..fa45bc8aebd44dfebc35364a739944aad1a26732 100644
--- a/indra/newview/skins/default/xui/en/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  label="Invite a Member"
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 d4da55e32e9881af3d78011cbdfe0eb3ee4fb742..ad9ce8f37e8a6a6c131e41e6d0d7d4ee5476783c 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="false"
  height="500"
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
index e758a8ce302bc3c0d1b47aced6ce1aa87b99b332..9e31ff604a7a3e32c68a189ca9f9c69710547afe 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="24"
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml b/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml
index 8e2a2416618111bc23c80f760ab2961bfc8fdf01..6a1466867d81c625b88c19cff29bbea3e9fed8c4 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item_short.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="group_list_item"
  top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index 2d16119a59279a2f5e30ef6285fee89398f0948d..e2c29fc01953cdebf034c598bc7d594e33bf66a1 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="530"
  label="Notices"
diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml
index 60e5a03d5183ca711b53db37c0af727d5e5a6fb2..be34a2e02fb93456f1390b6f0634fba32680f350 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  height="90"
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index e99119a85e55d8a7e53d61e630437c2f5f29272f..fe83d79fb2975de0b3d7c6bd7c0a2b7b25e8bee0 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="750"
  label="Members &amp; Roles"
diff --git a/indra/newview/skins/default/xui/en/panel_hide_beacon.xml b/indra/newview/skins/default/xui/en/panel_hide_beacon.xml
index 7cab285f77dc37e1cba722b0ad44a6652fe3b6bc..0516db96e0aecc60e07f5caa91452d5f73b573f2 100644
--- a/indra/newview/skins/default/xui/en/panel_hide_beacon.xml
+++ b/indra/newview/skins/default/xui/en/panel_hide_beacon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="25"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_hint.xml b/indra/newview/skins/default/xui/en/panel_hint.xml
index f7434f03307c18543d2d640b88dc1f13099119d8..744213676149dbdeb42f2542c44a14aad50c598b 100644
--- a/indra/newview/skins/default/xui/en/panel_hint.xml
+++ b/indra/newview/skins/default/xui/en/panel_hint.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  width="205"
  height="34">
diff --git a/indra/newview/skins/default/xui/en/panel_hint_image.xml b/indra/newview/skins/default/xui/en/panel_hint_image.xml
index df05d50dc520c32fdbb983d44179587614a7adcc..d712245df841408065747faf46df7e51d5e27269 100644
--- a/indra/newview/skins/default/xui/en/panel_hint_image.xml
+++ b/indra/newview/skins/default/xui/en/panel_hint_image.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  width="305"
  height="40"
diff --git a/indra/newview/skins/default/xui/en/panel_hud.xml b/indra/newview/skins/default/xui/en/panel_hud.xml
index 3e9614a9b7d0af5c4366400823d37aec9ca7e785..15b3c3b44471f872992f6a21bd0585695ee9645d 100644
--- a/indra/newview/skins/default/xui/en/panel_hud.xml
+++ b/indra/newview/skins/default/xui/en/panel_hud.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|right|top|bottom"
  height="728"
diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
index 48decf76d93bd4e9c020b07ef925b3ffe9270123..8ad0f44dfd889c40e1daff21ed26312206f4bf1a 100644
--- a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inbox_inventory_panel
     accepts_drag_and_drop="false"
     name="inventory_inbox"
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index 3aeeb1509776daaefc276dad0c6f36d5e36f5ff0..748818f261bee3270020511f8a6ad09466152374 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  height="152"
@@ -7,7 +7,7 @@
  left="0"
  name="im_panel"
  top="0"
- width="305">
+ width="310">
     <string
      name="message_max_lines_count">
         6
@@ -24,7 +24,7 @@
      mouse_opaque="false"
      name="im_header"
      top="5"
-     width="295">
+     width="300">
         <avatar_icon
          follows="right"
          height="18"
@@ -65,11 +65,11 @@
          name="user_name"
          parse_urls="false"
          text_color="White"
-         top="8"
+         top="7"
          translate="false"
          use_ellipses="true"
-         value="TestString PleaseIgnore"
-         width="205" />
+         value="TestString PleaseIgnore (testing plsignore)"
+         width="172" />
 	 <!-- TIME STAMP -->
         <text
         font="SansSerifSmall"
@@ -79,9 +79,9 @@
 	 halign="right"
          right="-5"
          name="time_box"
-         top="8"
-         value="23:30"
-         width="50" />
+         top="7"
+         value="2022/09/23 23:30"
+         width="96" />
     </panel>
     <text
         font="SansSerifSmall"
@@ -95,7 +95,7 @@
      top="33"
      use_ellipses="true"
      value=""
-     width="285"
+     width="290"
      word_wrap="true"
      max_length="350" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml b/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml
index ed04e121932941b003d1326fbf4de52f5680a2e4..fcff9e3bececf7ba356b62484353aefae062852b 100644
--- a/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml
+++ b/indra/newview/skins/default/xui/en/panel_inventory_gallery.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="true"
    bg_alpha_color="InventoryBackgroundColor"
diff --git a/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml
index 574872a8701a7bc3bda6f3c2cc9a4fff1093cd15..73cb9b080f554779116b04293f7e889905f02ab8 100644
--- a/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_inventory_gallery_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="false"
    background_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/panel_inventory_item.xml b/indra/newview/skins/default/xui/en/panel_inventory_item.xml
index 2e38835810c73ba2ad79a5ec9373a348c48ae750..b9bbf7689d6adc4c41e8010692dc18519c63d6fd 100644
--- a/indra/newview/skins/default/xui/en/panel_inventory_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_inventory_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="20"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index f036b43f122efd4782855ac35479431a0baefe40..3c62b8a02ef2059fa3eeaa2bbe777df492cc3879 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 10b925ec93e9fbf67ae4115c4e0e76d19a7df0f0..ee96e7ede864e0bc0f2c270816069827b34d69e5 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    name="Landmarks"
    layout="topleft" 
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 0f555f07f52c787bae076d5953fdf847ad229b8e..6b8fdcf1e9b4eb57b21bc385a9032691bceaf110 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="all"
  height="423"
diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml
index 2b17473a84d2cee0de4fd09f7378906ab1b5cc1a..61cd6a83d4954ddf2dd39b99bcd1ee622eca02ab 100644
--- a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml
+++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   label="Marketplace"
   name="Marketplace Panel"
@@ -114,4 +114,4 @@
           Drop folders here to create new listings
       </text>
   </panel>
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml
index 692675d5fa8903f3a352f9bc6a4ee4d80d6bad0b..23600b1c29883f160b64aa2afbd847cc4f538131 100644
--- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_panel
     label="ALL"
     name="All Items"
diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml
index ba97969130d96cc3457e563d1c9aff611703feea..7eed799557c1db8af473a43027cb438a5c966e97 100644
--- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml
+++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_panel
     label="LISTED"
     name="Active Items"
diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml
index 43e6bf2bc344b0a9b97450e4b1630291b827a656..2e282d36a979048c7ca529d7e74949d70018a2c7 100644
--- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml
+++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_panel
     label="UNASSOCIATED"
     name="Unassociated Items"
diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml
index 98ca97a0ae4b3bfa48b6f7bfd2334578f2a7da9e..26dcfd378fc699a0cdd70f4c949f538e1c1cfdc6 100644
--- a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml
+++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_panel
     label="UNLISTED"
     name="Inactive Items"
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
index 6829aa6385533690d8139b76f3bb0238adc55be6..b24680b032e992d718b42704433b7b6497321867 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel 
  border="true" 
  enabled="true" 
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
index d3a58fed5842e2977ca7f992d0378f8faa450d76..082aad2816ad5906d6947de279a71e763679560b 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel 
  border="true" 
  enabled="true" 
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
index 1f580831f92f28ac5563cb3990442ec936ab0366..82e9c25b1c5868d235e554eff251936cbc0787f5 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel 
  border="true" 
  enabled="true" 
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 eb0f3ad5e4f46f5f3d27bd3a970d8d377b86150c..6c24bf6c81d00790a2e6e5ac2a89e218c3ee8e09 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_opaque="true"
  background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 74ec50e79acd5081cecc0080adff36155a900a1b..56af88f4f7888a43fb32e584ed3875550a1574b4 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|bottom|right"
  height="25"
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 d1cb64f7ad3570270b5ad03808f1bd28f477ac7c..f305a161f2ec819f115920627d15d2af6b9739c6 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bg_opaque_image="Volume_Background" 
  bg_alpha_image="Volume_Background" 
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index c1a68fb9af46a12237ccfc73b96335bdf622271c..56d871406464ab072c9b7d306693f3be7919a132 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   background_opaque="false"
   border_visible="false"
diff --git a/indra/newview/skins/default/xui/en/panel_notification_list_item.xml b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml
index 7e638cf8262ae6a8d2bbb1e4a1fdd7709f776e27..9ba86ce266a3e46543858454c8af1e7f686b8046 100644
--- a/indra/newview/skins/default/xui/en/panel_notification_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification_list_item.xml
@@ -68,7 +68,7 @@
                 </panel>
               </panel>
             </layout_panel>
-            <layout_panel width="18" height="48" follows="right|top|bottom" name="layout_panel_right">
+            <layout_panel width="18" height="48" follows="right|top|bottom" name="layout_panel_right1">
               <panel top="0" left="0" width="17"  height="39" follows="left|top|right|bottom" layout="topleft" name="close_expand_panel">
                 <button top="0" left="0" width="17" height="17" layout="topleft" follows="top" name="close_btn" mouse_opaque="true"
                   tab_stop="false" image_unselected="Icon_Close_Foreground" image_selected="Icon_Close_Press" />
diff --git a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
index c3dc588ba2bd0eef928b1466abc04cc39fece045..f1e990e68f76dab7fa5a7f79abd034fd234725a7 100644
--- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
+++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="100"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
index 6dc1bf9e9ed44b748d97b23356ec5c78db7c7c58..27d0f7d383277fae0e23612bc4e9d848f1108622 100644
--- a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="true"
    height="215"
diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
index dadbd9c9abc807f0a50674cb63254938494fcc22..9819d2008b81842502883a83e195981178355d0e 100644
--- a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="false"
  height="40"
@@ -32,4 +32,4 @@
      width="189"
      word_wrap="true"
      max_length="350" />
-</panel>
\ No newline at end of file
+</panel>
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 e1db174606fad91f97250f5078ca464ba37b1c89..32a2442443507f0d5d4ccafa9ab9961386b584bc 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray Outfit Edit panel -->
 <panel
         border="false"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
index 27a13792923f0c519d331b05e9ae9d9eeb5decf7..f101e334b5410550d167849f71d3a1bb5ea736a8 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="true"
    bg_alpha_color="DkGray"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml
index 4dc4e8544961d8852ed0532022d92ff07e4a2e78..fbd3bf96835ebb1e55a1bbcfd80f0e6aa4e6038c 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="false"
    background_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml
index 441cf97e870208479566276655644efe4d3f2b06..14b41aced347ffe4c37007b51a5a101673082c52 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_snapshot_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
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 3850d0b331af1a842742854b8a1713e33999cb73..c2e90784b569f3e0eb3d060ac3ec93bbd9a38110 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  <panel name="Outfits"
   follows="all"
  height="575"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
index 2c7a51f0e78f6921e56462d6f0558a1e0e9df614..f600b2bd310d4f2e05b6ec67b8c0b29f162aca66 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu
  bottom="806"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index ab37d85457425b5638d1c1ce09923c32b6c788c6..535f25d31d096082ed11efe8fa0093db1dd99786 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
    background_visible="true"
    bg_alpha_color="DkGray"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
index 5d39211386ac7d758cb2e07ee4c48e0874266bea..97bed5c7f70d63d414a908d1c0fa2e8a0b72525b 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  bg_alpha_color="DkGray"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 4a12546d5ce36b0b0fea95708f904d1ae03b8774..bd6afd5822dfc7ca5f9bfb50167bf452a0259f43 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray panel -->
 <panel
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml b/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml
index 904ce1cc523b8c9befc2fe6af7fd18ec1eeddea4..9f930d1557d6f4763d6f8030cdfeb688206b51ab 100644
--- a/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml
+++ b/indra/newview/skins/default/xui/en/panel_performance_autoadjustments.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_performance_complexity.xml b/indra/newview/skins/default/xui/en/panel_performance_complexity.xml
index cd3f610a923643091ca26c8d608f43ff70e9e75f..fc38c056ad80fd71b50d32d0e15fd860fa7795d2 100644
--- a/indra/newview/skins/default/xui/en/panel_performance_complexity.xml
+++ b/indra/newview/skins/default/xui/en/panel_performance_complexity.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_performance_huds.xml b/indra/newview/skins/default/xui/en/panel_performance_huds.xml
index 2fddcb3b9edea80fb7fa4eb7fd8ef4024f163edb..f0054800c7dcf355932d419aff6d67d5c7761ba3 100644
--- a/indra/newview/skins/default/xui/en/panel_performance_huds.xml
+++ b/indra/newview/skins/default/xui/en/panel_performance_huds.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml
index cb795e59a91db91f7c3870daf8816e5fc2be3acf..ca961747c4c0f218e201554d132a76126f3f5ecb 100644
--- a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml
+++ b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml
index 83db17b679c5c145adb97222908eb591af64c87e..7ba7b1d5796bc7e60331265f85ce37dcfc51c7a6 100644
--- a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml
+++ b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="left|top"
@@ -156,7 +156,7 @@
    layout="topleft"
    left_pad="10"
    top_delta="1"
-   name="quality_lbl"
+   name="best_quality_lbl"
    width="70">
     Best quality
   </text>
@@ -325,7 +325,7 @@
     bevel_style="in"
     height="0"
     layout="topleft"
-    name="border3"
+    name="border31"
     top_pad="7"
     left="20"
     width="540"/>
@@ -416,7 +416,7 @@
    layout="topleft"
    top_delta="3"
    left_pad="10"
-   name="photo_desc"
+   name="photo_dist_det_desc"
    width="180">
       (Enter value between 0.0 and 4.0)
   </text>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
index 5dbca3d75a3c96597858f38fae43511bc474d251..674f028d03e6bdd8e91be93db5734767be2dec88 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  bevel_style="none"
  follows="top|left|right"
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 fdde795bc15a332e420ccb7be96e1e72b0b5b645..f8235d599aee9c36caae18193ff7d75ecbd03798 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 22667ec3fe7499519b48429b7cd4a212b3bf996e..c6e3d60acbd20485f9afe8bb3459bdadf8a53f4e 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  default_tab_group="1"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
index 63c7259878687f5727a6bceb0d416430a7c1d155..f9d288ea59ed31ed4cbb2efb73525f3b4dcd4b30 100644
--- a/indra/newview/skins/default/xui/en/panel_postcard_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="319"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
index 525149d7eee40a3168a2c290655c57f2abe70e7b..f121338c2a9a06d8cf244ccf49c4a98187624e8f 100644
--- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
+++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index cdb883aab186c819bcc85a1990a67a3c52b9aeba..a8965a8da312410883e94618f058d830415f617a 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="all"
@@ -196,7 +196,7 @@
    left_pad="0"
    max_val="2.0"
    min_val="1.0"
-   name="ui_scale_slider"
+   name="hud_scale_slider"
    top_pad="-14"
    width="250" />
   <check_box
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
index 050bbf6841acf904f1c9fdf5e747c455e99d515b..6868afa7ff373123b256bf058c1453feb20ac2f8 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  height="408"
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 36e37a2884bf6957fd93fd52ab0ecdc993aa4fb3..b5e024d5175abf8f1f67d454f70ff7f693542662 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
     border="true"
     height="430"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
index b586e254fbd76c97ffad23e3519d4dddeb087b59..b3f40a9cf6dcd8033f25b3961f73b41d1a1e5e1b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="left|top|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml
index 9dab7d34e6cf4a4054a9e73cc75620c831892885..f8801f9c89ce07d6b5bd87ae3869a729d096564b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="all"
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 1252a6ec8782339c6d783acc138c476cb51747fc..264c8aed241b23ebc6a656b2dcfad563b9f88eea 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="left|top|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 492be96f84791ef084f436cb8eede8a19a685a57..4a9ea3c04d544d0a5d188edd436de1a5b146fa90 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="left|top|right|bottom"
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 f93774c03385e7237dc7f43f54986bde15296b54..b637a8129bfff73112de3c4bc5db29a1e129f96b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="left|top|right|bottom"
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 8898769987f85d94aece23c21d56eabcfb5d032c..c1f736dc7aadb629bd02d13e00f934b1c5aef361 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
     border="true"
     follows="left|top|right|bottom"
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 d034ea879cd09947fa5410d91961a1da891f6407..1accf7b5d861ecb7f15d190599051346d06c5ef7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="left|top|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 02081ac435656329882edbcf99912ff77dc7bf8c..bf16e0066e706a95ded00d1f154b0b6d362a1794 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="all"
@@ -107,7 +107,7 @@
 		is_toggle="true"
 		layout="topleft"
 		left_pad="5"
-		name="mute_audio"
+		name="mute_audio_ui"
 		tab_stop="false"
 		width="16" />
     <slider
@@ -141,7 +141,7 @@
      is_toggle="true"
      layout="topleft"
      left_pad="5"
-     name="mute_audio"
+     name="mute_audio_ambient"
      tab_stop="false"
      width="16" />
     <slider
@@ -175,7 +175,7 @@
      is_toggle="true"
      layout="topleft"
      left_pad="5"
-     name="mute_audio"
+     name="mute_audio_sounds"
      tab_stop="false"
      width="16">
       <button.commit_callback
@@ -212,7 +212,7 @@
      is_toggle="true"
      layout="topleft"
 	   left_pad="5"
-     name="mute_audio"
+     name="mute_audio_music"
      tab_stop="false"
 	 width="16" />
 	<check_box
@@ -258,7 +258,7 @@
 		is_toggle="true"
 		layout="topleft"
 		left_pad="5"
-		name="mute_audio"
+		name="mute_audio_media"
 		tab_stop="false"
 		width="16" />
 	<check_box
@@ -306,7 +306,7 @@
 		is_toggle="true"
 		layout="topleft"
 		left_pad="5"
-		name="mute_audio"
+		name="mute_audio_voice"
 		tab_stop="false"
 		width="16" />
 	<check_box
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml
index beb1bcb7d500e19e498972bf0711bc0932448a74..2c9ac878b06ac7e7650138c94037a5c8ed0c76ac 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml b/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml
index 25d9c47449fac1ba042d2b7c32f3b8029a7b0fa8..d5f1bc81ee580ab7371013bdef681ecf8dff2b80 100644
--- a/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml
+++ b/indra/newview/skins/default/xui/en/panel_presets_camera_pulldown.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_opaque="true"
  background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml b/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml
index b3d165c4fd2e824c03486f7489fd425aaffa7a89..5ea92e3973461137e3dd5bc2153247055645105b 100644
--- a/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml
+++ b/indra/newview/skins/default/xui/en/panel_presets_pulldown.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_opaque="true"
  background_visible="true"
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 068e4420bc02296149b93cad7a02f54a121fe272..b507da8b48e446af87565b8a981f3d390d3a0b4a 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 	follows="left|right|top|bottom"
 	name="MediaControls"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_classified.xml b/indra/newview/skins/default/xui/en/panel_profile_classified.xml
index 561937ba5bef9c79120ca883ea12322cfed79ff1..9567b1f4ab82e1f2a1501b37e534023c419a3ad4 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_classified.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_profile_classified"
  top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml
index 2b2f60e0c20ab4c2fada2f6e9435ccbc4e108153..c74053d58e883ea664d6ad9ae0aa0ab38c08536a 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_classifieds.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_profile_classifieds"
  label="Classified"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml
index 973ae19b9852fd861a786692f564a8f7969e8e8a..e0297a9200ed12874e378623cc28e330aa705b2d 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_profile_firstlife"
  label="Profile"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_notes.xml b/indra/newview/skins/default/xui/en/panel_profile_notes.xml
index ba677549270d0ae69d9f64a3f41abcf843b2bffc..871dc9deb5ac5dd5bb7dd753e204bb46180705bf 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_notes.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_notes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_notes"
  label="Notes &amp; Privacy"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_pick.xml b/indra/newview/skins/default/xui/en/panel_profile_pick.xml
index 32412b979ef581e7fc5244b1b60b71a2d9e8e110..4edcd8d17a81b9d1525fbca0d4e33b7b85e312ab 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_pick.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_pick_info"
  top="0"
@@ -139,11 +139,11 @@
     <layout_panel
      follows="all"
      layout="bottomleft"
-     name="save_changes_lp"
+     name="util_buttons_lp"
      auto_resize="false"
      height="25">
       <layout_stack
-       name="save_changes_stack"
+       name="util_buttons_stack"
        left="1"
        right="-1"
        top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_picks.xml b/indra/newview/skins/default/xui/en/panel_profile_picks.xml
index 77c85f4233aea5ad76443814e7aea60a86a446f4..9755098e21d86f923996619a73298de1de8e44fa 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_picks.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_picks"
  label="Picks"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml
index 80d717e19d74bef8271342b9656961f6e180d96f..29846b58fe24f5381868e747e7b38caa8719eac9 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_profile"
  label="Profile"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_web.xml b/indra/newview/skins/default/xui/en/panel_profile_web.xml
index e0cb4d3d06f9ec6130db17b96a39d0fc9c3fbc47..591effd4f40be5f950c5556d0e8a176a7a633bc5 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_web.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  name="panel_profile_web"
  label="Web"
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
index 2d87e94426dc610567dd9c34fd48bfb33ced5b79..de178aa53633027900c9f77b319d1040e9d5461f 100644
--- a/indra/newview/skins/default/xui/en/panel_progress.xml
+++ b/indra/newview/skins/default/xui/en/panel_progress.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|bottom|right|top"
  height="768"
diff --git a/indra/newview/skins/default/xui/en/panel_region_access.xml b/indra/newview/skins/default/xui/en/panel_region_access.xml
index 6246560b54fc67603a672ea450532c2a31536784..efa73ace61938b029c78ff3cad79f22dc2504503 100644
--- a/indra/newview/skins/default/xui/en/panel_region_access.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_access.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
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 112f12500df2f95a4409a42e7bc4453db7bf8bd8..bc764ecc5519287c560ffd06e1271ed3d28daf97 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
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 6065228d55c7eb8ab857878b818e0361be5723db..d7d1d105577186e7060efec6dfd166d7f4d8bcdf 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml
index c3c14844253c4387f0e04c2501014db213764c40..a0fc243079c4c998916773b736bf9e117c87805e 100644
--- a/indra/newview/skins/default/xui/en/panel_region_environment.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <panel
         border="true"
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 33e99a46aecf4a62d341ead9666955bb21e76679..0910a3ef90d7dd785d78c27e3048059ca263fb99 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_region_experiences.xml b/indra/newview/skins/default/xui/en/panel_region_experiences.xml
index bced46f7dc037644db713648308118e72dd47cfb..199dca4853d740f6ab06a71c29b2485edd89ab2f 100644
--- a/indra/newview/skins/default/xui/en/panel_region_experiences.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_experiences.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   border="true"
   follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index d1cfb8ead6ee0876ba8487d32174670f0ee3e7dd..74d21c436ec49207f98591251ca21b2af2f40242 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml
index 2aaea04a6d306f6058c580f2d44d52c7a07e2272..ad41691323407af21d11942a182007f6b9a1ef3a 100644
--- a/indra/newview/skins/default/xui/en/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
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 436834a34bc6ddbe587952ab9d92dd70bc8010a1..d24cc55477f6c305c583402adc90f0c0ee4fa750 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   bevel_style="none"
   border_style="line"
@@ -44,13 +44,14 @@
       layout="topleft"
       left="0"
       mouse_opaque="false"
+      font="SansSerif"
       name="File"
       width="138">
       <menu_item_call
         label="Save"
+        shortcut="control|S"
         layout="topleft"
-        name="Save"
-        shortcut="control|S" />
+        name="Save" />
       <menu_item_separator
         layout="topleft" />
       <menu_item_call
@@ -84,6 +85,7 @@
       label="Edit"
       layout="topleft"
       mouse_opaque="false"
+      font="SansSerif"
       name="Edit"
       width="139">
       <menu_item_call
@@ -126,9 +128,9 @@
         shortcut="Del" />
       <menu_item_call
         label="Select All"
+        shortcut="control|A"
         layout="topleft"
-        name="Select All"
-        shortcut="control|A" />
+        name="Select All" />
       <menu_item_call
         enabled="false"
         label="Deselect"
@@ -154,6 +156,7 @@
       label="LSL Reference"
       layout="topleft"
       mouse_opaque="false"
+      font="SansSerif"
       name="Help"
       width="112">
       <menu_item_call
@@ -163,12 +166,34 @@
              shortcut="shift|F1" />
     </menu>
   </menu_bar>
+  <!--<menu_button
+   follows="right|top"
+   height="24"
+   image_overlay="Icon_Font_Size"
+   layout="topleft"
+   top_delta="-2"
+   right="453"
+   name="font_btn"
+   width="32" />-->
+  <button
+   follows="right|top"
+   height="24"
+   image_overlay="Icon_Color_Palette"
+   layout="topleft"
+   top_delta="0"
+   right="487"
+   name="color_btn"
+   width="32">
+    <button.commit_callback
+      function="Floater.Toggle"
+      parameter="script_colors"/>
+  </button>
     <script_editor
     left="0"
     type="string"
     length="1"
     follows="left|top|right|bottom"
-    font="Monospace"
+
      height="376"
     ignore_tab="false"
     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_script_experience.xml b/indra/newview/skins/default/xui/en/panel_script_experience.xml
index 9ae5b201a6735293fdc573db138724dc5a5ce135..1a1ee16628aaafc4895ed596f3d94d6acaa4f104 100644
--- a/indra/newview/skins/default/xui/en/panel_script_experience.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_experience.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   name="script_experience"
   title="EXPERIENCE"
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
index 2c2803a503cd7bd20f2a306b0815f96ef248762a..3be3e23d4769cddd47203da1ef6214ffb9f71f2d 100644
--- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
index 79bb781bc6ff77bb73c3afb5a8cb2bb6e958967f..18ebb2f13358a7c291feb0750a71db365682a911 100644
--- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  border="true"
  follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml
index b0436bb6dcd452f5df2ea05b48485ef4fd650869..1b1e31165afed5ba8cac8b350041f9416650de50 100644
--- a/indra/newview/skins/default/xui/en/panel_script_question_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_question_toast.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   background_opaque="false"
   border_visible="false"
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
index b2d58ce0de798f33ec0c73b3a9f6ca707f00bd6f..ec642131aefccac144d7ded884efb6f01f7c4819 100644
--- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
+++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="157"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml
index 3e03f173c9b58846c73cd7a675954a230c32f84f..be719c3bba1705b797568be49031b296e5dfa97e 100644
--- a/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml
+++ b/indra/newview/skins/default/xui/en/panel_scrolling_param_base.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  layout="topleft"
  left="0"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml
index 41c48f8ca2991532b052a4bd59a578542383264e..dd362986b2b922f4c374d0bdb8f56a610ba2de3f 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_atmos.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
         border="true"
         follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml
index 9bdfa94a335b29cfcfde95e45c3b28dc59aa9d79..7687f7cd96240dee6698d612f07dee78372c0b22 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
         border="true"
         follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
index 9b3789697945a8f9799a75fa562f3bc531e282f1..60ab520cd535bdb159d4a43b011dd6ac30080d98 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
         border="true"
         follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
index 35adb262bbfd11c23616cf4365efe39417c9c45a..bd68434aab689f5ca20f85a45998e6c55be7a829 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
         border="true"
         follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_water.xml b/indra/newview/skins/default/xui/en/panel_settings_water.xml
index ddd8b180fa664e187d73a41f486d41a82390d4db..23782d25d98c186c39f4830206bb2fad13b00fdc 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_water.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_water.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
         border="true"
         follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml
index 557b04d281fbbc4e89ce78b31a8998593621c63a..4cb1364ff3058d74b68d97703be3f6db22e2b5bb 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  bottom="0"
diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
index 912f81f915f9901a31158548071f7eca65acb4fc..cc3fb4abdb72fbc34407ce103fb5b3e2d820084f 100644
--- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
+++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- the web-based Home panel of the side tray -->
 <panel
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
index 1456b7ea52e5b128a0cc8d76cebaa384cf9c6c05..8e6078d6268dff7f71805226b61c17351147714c 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
@@ -148,4 +148,4 @@
       <button.commit_callback
        function="Inventory.Save" />
     </button>
-</panel>
\ No newline at end of file
+</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
index 0dfb9f97631dc26701e0c9cf1f6aae8c209b08f5..a4c1e46eb52f3ff197a8d8ad17619d04e69354f8 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
index 8fc5cd7e63b029d8561f87e256346922eb3ddb9e..3a7731d2356bd58e4e921c2b71870898ebcb0808 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="all"
  height="240"
@@ -87,4 +87,4 @@
    word_wrap="true">
     Fee is based on your subscription level. Higher levels are charged lower fees.
   </text>
-</panel>
\ No newline at end of file
+</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
index 8e9255292173f715f7fedecb39d6bcb520686416..60e99c04c38e50c93c348415728d8467c8c7eaea 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
@@ -99,4 +99,4 @@
       <button.commit_callback
        function="Postcard.Send" />
     </button>
-</panel>
\ No newline at end of file
+</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
index 2fdbee49f0389991f64fa5be59baf009550160b3..f0219da88ff49066cfba97a521a8155850c66941 100644
--- a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  height="380"
  layout="topleft"
@@ -165,4 +165,4 @@
       <button.commit_callback
        function="PostToProfile.Send" />
     </button>
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
index 3dbb7fb7fc2b3309a6ef7d2b48026803ea30483a..7598f7d7e5750b9892e6f71139313c9b5a7ca175 100644
--- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="false"
  bg_alpha_color="DkGray"
@@ -122,7 +123,7 @@
      layout="topleft"
      left_pad="5"
      name="wait_text"
-     top_delta="-1"
+     top_delta="2"
      width="110">
         Please wait
     </text>
@@ -132,7 +133,7 @@
      layout="topleft"
      left_delta="0"
      name="bar0"
-     top_delta="-2"
+     top_delta="-5"
      width="20" />
   <locate
      follows="right|top"
@@ -166,4 +167,26 @@
      name="bar4"
      top_delta="0"
      width="20" />
-</panel>
\ No newline at end of file
+    <text
+     type="string"
+     name="disabled_text"
+     text_color="EmphasisColor"
+     length="1"
+     follows="right|top"
+     height="18"
+     layout="topleft"
+     left_delta="-100"
+     top_delta="5"
+     width="110">
+        Disabled
+    </text>
+    <button
+       follows="right|top"
+       height="23"
+       layout="topleft"
+       left_delta="0"
+       name="unmute_btn"
+       label="Unmute"
+       top_delta="-6"
+       width="110" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
index 07642946f843d8fe19ed6ea16cda32901f1b515f..76b6713d4367b8667cd0c8c924d20edaf93112c1 100644
--- a/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/en/panel_stand_stop_flying.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
  height="25"
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 25afcd847e25a4f09e11aed0906e3f6952dc9654..f8e6a55ee910ea41a599bf6b029cd6816be691fc 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_opaque="true"
  background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index 3a9c65daa9d787961f1cdcb14dda219c6fe22842..0e752097d49f71f60faa3aa24d245c5d5c4e2795 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Teleport History" bottom="0" height="400" left="0" width="313"
      help_topic="panel_teleport_history"
      border="false" follows="left|top|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
index 5c728718ef19d5ce75be85d89bb45290565b37d4..6331458eb793e09d2d169cd91a60cdcbd5569e26 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="top|right|left"
  height="20"
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index e2c7878055a0f05aed8a5b398df129abbd5cd88b..202c4c28aa7aa9a0bb95635e5d0dae29820ae9ae 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toolbar_view
  follows="all"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index a3337959d38277240ee3d4a2aeafb0389e04ff01..98c16814489b186c8b370ba26dd6814be66b6644 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
          border="false"
          follows="all"
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 45dd53c4a9d5c17c0ca47ab8d486f21429d47092..8fbc664abe5557c95864e89edf6142b5892e5481 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_visible="true"
  background_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml
index 93e79b73281bd902d787a3f77ec4ea6fc2d01c04..42cd510efda0c8a524a22decb83a6d0225bd6113 100644
--- a/indra/newview/skins/default/xui/en/panel_voice_effect.xml
+++ b/indra/newview/skins/default/xui/en/panel_voice_effect.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="all"
  height="26"
diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
index 92fd490e6c0f6fb33c0e50a18eb961652be5489c..5096b654cd0c4f4928bd695bebbcffa3e470b697 100644
--- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
+++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  background_opaque="true"
  background_visible="true"
@@ -72,7 +72,7 @@
         is_toggle="true"
         layout="topleft"
         left_pad="5"
-        name="mute_audio"
+        name="mute_audio_ui"
         tab_stop="false"
         width="16" />
     <slider
@@ -104,7 +104,7 @@
      is_toggle="true"
      layout="topleft"
      left_pad="5"
-     name="mute_audio"
+     name="mute_audio_ambient"
      tab_stop="false"
      width="16" />
     <slider
@@ -136,7 +136,7 @@
      is_toggle="true"
      layout="topleft"
      left_pad="5"
-     name="mute_audio"
+     name="mute_audio_sounds"
      tab_stop="false"
      width="16">
       <button.commit_callback
@@ -181,7 +181,7 @@
      is_toggle="true"
      layout="topleft"
      left_pad="5"
-     name="mute_audio"
+     name="mute_audio_music"
      tab_stop="false"
      width="16" />
     <check_box
@@ -194,7 +194,8 @@
         top_delta="2"
         width="350">
         <check_box.commit_callback
-            function="Vol.updateMediaAutoPlayCheckbox"/>
+            function="Vol.updateCheckbox"
+            parameter="MediaAutoPlay"/>
     </check_box>
     <slider
         control_name="AudioLevelMedia"
@@ -225,7 +226,7 @@
         is_toggle="true"
         layout="topleft"
         left_pad="5"
-        name="mute_audio"
+        name="mute_audio_media"
         tab_stop="false"
         width="16" />
     <check_box
@@ -240,7 +241,8 @@
         name="enable_media"
         width="110">
         <check_box.commit_callback
-            function="Vol.updateMediaAutoPlayCheckbox"/>
+            function="Vol.updateCheckbox"
+            parameter="MediaAutoPlay"/>
     </check_box>
     <slider
         control_name="AudioLevelVoice"
@@ -271,7 +273,7 @@
         is_toggle="true"
         layout="topleft"
         left_pad="5"
-        name="mute_audio"
+        name="mute_audio_voice"
         tab_stop="false"
         width="16" />
     <check_box
@@ -285,5 +287,6 @@
         top_delta="2"
         left_pad="5"
         name="enable_voice_check"
-        width="110"/>
+        width="110"
+        />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_world_map.xml b/indra/newview/skins/default/xui/en/panel_world_map.xml
index 16860a6117378d2e16945c57071c7397a2e7210e..c436f69c598d0bec7a646f6bffefd62bb110b0d4 100644
--- a/indra/newview/skins/default/xui/en/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/en/panel_world_map.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
  follows="left|top|right|bottom"
  height="300"
diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml
index bda08f34219e220f7cd2c3f5d5316e82cc051cd8..af371dea267c4243f2df7a4bf42f4bb287532a6a 100644
--- a/indra/newview/skins/default/xui/en/role_actions.xml
+++ b/indra/newview/skins/default/xui/en/role_actions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
 	<action_set
 	     description="These Abilities include powers to add and remove group Members, and allow new Members to join without an invitation."
diff --git a/indra/newview/skins/default/xui/en/script_editor.xml b/indra/newview/skins/default/xui/en/script_editor.xml
index f1c6161711ca30e79a1b124d773ae22e43d8a218..68aa725606bdac86b6b8f1c98c59631952bd43dd 100644
--- a/indra/newview/skins/default/xui/en/script_editor.xml
+++ b/indra/newview/skins/default/xui/en/script_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <script_editor
  name="script_editor"
  parse_urls="false"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 14ea609fbf1e39430065930f75775968ea9031ff..78e8d03944e8a724cfc2911ec7a7cc40d4c32f57 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 default_tab_group="1"
 follows="all"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 76d0ffcb8e04c86797e150ff0551f9f53256b9cc..de47e052912afdbcbc4238dfe53fc13fb2720b1f 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 	  follows="all"
 	  height="570"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index ad521cb1af1bb5a1c0e7381edee47566b7f013c9..bdb4b545c159aba02541ea69d57cbe3a344353e1 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   follows="all"
   height="570"
@@ -288,7 +288,7 @@ TestString PleaseIgnore
         height="15"
         follows="left|top"
         layout="topleft"
-        name="perm_modify"
+        name="you_perm_modify"
         width="200">
         You can:
       </text>
@@ -401,7 +401,7 @@ TestString PleaseIgnore
         layout="topleft"
         left="5"
         right="-5"
-        name="cost_text_border"
+        name="cost_text_border1"
         top_pad="9"/>
         
       <check_box
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 041536651deb915d8945603cfc0fe687df5bd7b2..5e9902f750f9a4be926a8ac195e7fd5435815616 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
 	 height="570"
 	 layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index e021a99d4fd4601c6ff85ed35d32663a858d88d3..70a58eaa89d792b575007fe1168f4ce1be2aecdf 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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
@@ -4004,6 +4004,8 @@ Abuse Report</string>
 
   <string name="DefaultMimeType">none/none</string>
   <string name="texture_load_dimensions_error">Can't load images larger than [WIDTH]*[HEIGHT]</string>
+  <string name="texture_load_format_error">Incorrect image format.</string>
+  <string name="texture_load_empty_file">File is empty.</string>
   <string name="outfit_photo_load_dimensions_error">Max outfit photo size is [WIDTH]*[HEIGHT]. Please resize or use another image</string>
   <string name="outfit_photo_select_dimensions_error">Max outfit photo size is [WIDTH]*[HEIGHT]. Please select another texture</string>
   <string name="outfit_photo_verify_dimensions_error">Cannot verify photo dimensions. Please wait until photo size is displayed in picker</string>
diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml
index 1456114b25a42ce1ea1239205ce3c738ee27f075..1b45cdb1914cc1c014dc25720e5e7f8f953cda3c 100644
--- a/indra/newview/skins/default/xui/en/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/en/teleport_strings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <teleport_messages>
 	<message_set name="errors">
 		<message name="invalid_tport">
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml
index 55dde492ca770cc627fab072b04c6b4e0b44140c..8c5f6ebfc2f8a1254cadcd94f476ee6048659b29 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <accordion
  height="100"
  name="accordion"
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
index f289a05ffb6e9ffa89cba0d79e1709436bfac166..b4a821021148c87d27abb160717b071c30afd564 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <accordion_tab
     header_bg_color="AccordionHeaderBgColor"
     header_collapse_img="Accordion_ArrowClosed_Off"
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
index 7f8fac04d0e6c5d85201f47e1bd0e21fa0ad137c..260dc78008ba47d437a9a918c556e86d9045079e 100644
--- a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
+++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 
 <avatar_icon name="avatar_icon"
 						 default_icon_name="Generic_Person_Large"
diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
index 99fe56534ab1dca6e4b5eb5eafdaedcb28637675..6f62d4aa6128c14ba46b080922495953d7d42809 100644
--- a/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/avatar_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <avatar_list_item
  name_right_pad="5"
  height="0"
diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml
index 738d150f642b2ae46a3c2293047e63d4ae4d1c91..b1d92b1609c7b0ccb791ddf3199c4e388a36c6ed 100644
--- a/indra/newview/skins/default/xui/en/widgets/badge.xml
+++ b/indra/newview/skins/default/xui/en/widgets/badge.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Additional attributes:
    -->
 <badge name="badge"
diff --git a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
index 0016a8cf53cee8f8a66e056b02576de9345e829d..b99b097096a5c42a04c6737f5f336f2d6f36a190 100644
--- a/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/bodyparts_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <bodyparts_list_item
  follows="top|right|left"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 2b2c3faf917e8ad4acc59aa0c6dbfedbbe6892c8..090447a6a2f8b779e017b811b04cb68288235a85 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Additional attributes:
   image_pressed
 	image_pressed_selected
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
index c550f634e54d2cf9a5071758fbebd31725a35c52..94cc18e4434018439a1c07e1789cb779e1ce43e7 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <chat_editor
   name="chat_editor"
   show_context_menu="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
index c4300c93502216bdb90a3dcc9f35a2319cf16200..97a83148eb23d01f4365f0b4c88f668ca4c4c549 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <chat_history
   message_header="panel_chat_header.xml"
   message_separator="panel_chat_separator.xml"
@@ -22,4 +22,4 @@
     parse_urls="false"
     word_wrap="true"
     />
-</chat_history>
\ No newline at end of file
+</chat_history>
diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml
index 8947024e458e05959268cf36937df1729ac3e9bc..eef935dafc470a8be8940590a329ef03133548b7 100644
--- a/indra/newview/skins/default/xui/en/widgets/check_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <check_box font="SansSerifSmall"
            follows="left|top">
   <check_box.label_text name="checkbox label"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
index 4bc295f747a8bf8a145802822249b98c5a19ae28..2700eed3f07cfabbdde6e0b745b1fc11ff70ff36 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <chiclet_offer
  height="23"
  name="offer_chiclet"
@@ -27,4 +27,4 @@
   name="new_message_icon"
   visible="false"
   width="14" />
-</chiclet_offer>
\ No newline at end of file
+</chiclet_offer>
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml
index 5f51f4afd9da99b132145935b3aed183e6930cf9..e097ad3dcd125494a2cb452cde615da5bd5d18bf 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <chiclet_panel
  name="chiclet_panel"
  chiclet_padding="3"
@@ -6,4 +6,4 @@
  scroll_button_hpad="0"
  scroll_ratio="10"
  min_width="180"
- />
\ No newline at end of file
+ />
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
index db6a9434dfa24b45b6f2bbb2858c6cf03971523a..09d6aa6162f38089ed85062f338c0a5637c10646 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <chiclet_script
  height="23"
  name="script_chiclet"
@@ -27,4 +27,4 @@
   name="new_message_icon"
   visible="false"
   width="14" />
-</chiclet_script>
\ No newline at end of file
+</chiclet_script>
diff --git a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
index d83f44737ecca46add346afbc78fb7e80f94c3bb..bd449f655692a7f7d76e65c070fe3ac34568b3c7 100644
--- a/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/clothing_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <clothing_list_item
  follows="top|right|left"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
index ab3de1eaab0441e16912499be6f56f89e4ce160b..7ae9158e655c39ff7f149087370bc2ddeb5d5286 100644
--- a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
+++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <color_swatch alpha_background_image="color_swatch_alpha.tga"
               border_color="ColorSwatchBorderColor"
               name="colorswatch">
diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
index 65f9a143e9ea4acfd37285cecf973c7eb90ed082..daec17c2f964bbd1896530e570b9c9f3c87f507c 100644
--- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <combo_box font="SansSerifSmall"
            list_position="below"
            max_chars="20"
diff --git a/indra/newview/skins/default/xui/en/widgets/context_menu.xml b/indra/newview/skins/default/xui/en/widgets/context_menu.xml
index 459706c689c940d100852fe1c81fcada91b628a1..a712b41a2a9bc84334a888f165ba07a48a149df8 100644
--- a/indra/newview/skins/default/xui/en/widgets/context_menu.xml
+++ b/indra/newview/skins/default/xui/en/widgets/context_menu.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu visible="false"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
index b83d9122f72cfdfe253ec44ad7bec94d30c6b744..cf995e5833782616d32e89ee6a67d1c26e0f621c 100644
--- a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
+++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <conversation_view_participant
   folder_arrow_image="Folder_Arrow"
   item_height="24" 
diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
index b8c39eec1db7f6826b21972f1e69982b651a632d..b876dd835169fd9cd396e971d63fd8403f194f06 100644
--- a/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
+++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_session.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <conversation_view_session
   folder_arrow_image="Folder_Arrow"
   folder_indentation="8"
diff --git a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
index 0534485ddd5386c3e8db56c0ae1b3588aaecdcd2..18839a94aef8e7a125851c50853b7e223f929e10 100644
--- a/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/deletable_wearable_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <deletable_wearable_list_item
   follows="top|right|left"
   height="23"
diff --git a/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml
index eb665fd3cbf7301f2ec9dfd6528f61104ea5d013..6fd0c291cdd6452039c5c36ae94130182305cc39 100644
--- a/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/widgets/density_ctrl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <densityctrl
  border="true"
  follows="all"
diff --git a/indra/newview/skins/default/xui/en/widgets/drop_down.xml b/indra/newview/skins/default/xui/en/widgets/drop_down.xml
index 8644702555847b28f76407581cbddb531dfb9f2c..80f98b64fc7a661d98dc1069589b048b36310a87 100644
--- a/indra/newview/skins/default/xui/en/widgets/drop_down.xml
+++ b/indra/newview/skins/default/xui/en/widgets/drop_down.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <drop_down text_enabled_color="LabelTextColor"
            text_disabled_color="LabelDisabledColor"
            font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
index 8c805da04822b40dbb29ce4b91c8a7f424064734..71119d7c9e219a296d04407c2994b652da749bb5 100644
--- a/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/dummy_clothing_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <dummy_clothing_list_item
  follows="top|right|left"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
index c6331ec87b234164e225df0b6f9d3ade5549cd1f..15c7a4064747e9b503535341b446a6993b52a8eb 100644
--- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <expandable_text
  max_height="300" >
  <textbox
diff --git a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
index 9c80deeafc242e20ed8c496e27f2299406917505..604f62b099e7fc211c44c9d865390444e1a1cf2e 100644
--- a/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/filter_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <filter_editor
   name="filter_editor"
   clear_button_visible="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
index e05ddf98158780b5ba47dcfb5cb9ee2a63f0dd69..c376e455a1675adce10c61f2129ad2c06fe517f8 100644
--- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <flat_list_view
  allow_select="true"
  color="PanelFocusBackgroundColor"
@@ -13,4 +13,4 @@
      h_pad="10"
      value="No matches found"
      wrap="true" />
-</flat_list_view>
\ No newline at end of file
+</flat_list_view>
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
index dbc1f6f516062b2680d3c1f2c8591f2ea58fd367..a7ff9c8181f34a3e68629bbbf06922bdc6c74afb 100644
--- a/indra/newview/skins/default/xui/en/widgets/floater.xml
+++ b/indra/newview/skins/default/xui/en/widgets/floater.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- See also settings.xml UIFloater* settings for configuration -->
 <floater
  name="floater"
diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
index 83df10e4179dc53511509e2fcc8ed88c51db91d9..e42bef4a45b0ab086864c35baa1d01327629b286 100644
--- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <flyout_button list_position="below" height="23">
   <action_button scale_image="true"
                 image_selected="SegmentedBtn_Left_Selected"
@@ -9,4 +9,4 @@
                 image_disabled="ComboButton_Disabled"
                 pad_right="6"
                 tab_stop="false"/>
-</flyout_button>
\ No newline at end of file
+</flyout_button>
diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
index bbd53ccb121374170c7002144725d566a4bc8d90..b598bbccd8be46dd601660ed91141d5afbd0c258 100644
--- a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <folder_view_item
   folder_arrow_image="Folder_Arrow"
   folder_indentation="8"
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
index 808683864d967ba282ed1305a43255275d9e2d1f..14cd3e159c289718bff4a8ec2398ade59983d698 100644
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <gesture_combo_list
     follows="right|top">
     <gesture_combo_list.combo_button
diff --git a/indra/newview/skins/default/xui/en/widgets/group_icon.xml b/indra/newview/skins/default/xui/en/widgets/group_icon.xml
index 36ee6dd7ebcef7a463b3cee5466c6aa3dd2fbddb..73a0acd80d3433b0191929e70ced16a5fca5d1d8 100644
--- a/indra/newview/skins/default/xui/en/widgets/group_icon.xml
+++ b/indra/newview/skins/default/xui/en/widgets/group_icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <group_icon
  default_icon_name="Generic_Group"
  image_name="Generic_Group"
diff --git a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml
index 92080df1548c933572029bbc52214f62e5cf44bb..2e548476b6f91849db78b73f52d1761275c5b867 100644
--- a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml
+++ b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <hint_popup
  name="hint"
  background_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml
index cf8edfcedb65d884c5f14b07f33d1eba27a7d9b2..a4ea15f88ab1cad309fcde1126e08e7bbe34b450 100644
--- a/indra/newview/skins/default/xui/en/widgets/icon.xml
+++ b/indra/newview/skins/default/xui/en/widgets/icon.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <icon color="1.0 1.0 1.0 1.0"
       tab_stop="false"
       mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
index 590a4730a9bc7a10141d09cff1a67f13c206af66..27ec6ded8102eafedd0ca408b9cb78d2c4dff66a 100644
--- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inbox_folder_view_folder
   folder_arrow_image="Folder_Arrow"
   folder_indentation="8"
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
index 7a7a6e9a091fe99861e8d8cd32a3873ccd65c482..09cbb1d3abc7fa9ece72796e82b3ee1459b51470 100644
--- 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
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inbox_folder_view_item
   item_height="20" 
   item_top_pad="4"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
index 92f815d4bfe61ba1f3745562d8b8fad217aecddf..fadca90972e6d17587126323e78644cbd5b73274 100644
--- a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inbox_inventory_panel start_folder.type="inbox"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml
index 8c171c387f7badb381fcd8baa8aa49693fd9818f..3c8e7c79409219295da11ae85ad0ae394ad7a784 100644
--- a/indra/newview/skins/default/xui/en/widgets/inspector.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inspector name="inspector"
            max_width="300"
            bg_opaque_color="DkGray_66"
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
index da9059c819f55aff71c098909fe73469c1e30312..ce36a39a214cadbe7b72e7c502811f25d386b5dc 100644
--- a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_list_item
   follows="top|right|left"
   height="20"
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
index d5efd723c4c75ba4033d13fa43a88aabd843ef6e..15e28746db0cc434be6f27f5a1218457a377a4f6 100644
--- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel
   bg_opaque_color="InventoryBackgroundColor"
   background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml
index a190da3909959deb8f77587a2a3654637c85724e..bfde1dc752efa9b581f1110e985a3583c319a0b6 100644
--- a/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <joystick_rotate
    image_selected="Cam_Rotate_In"
    image_unselected="Cam_Rotate_Out"
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
index cbf721b346c2b9625c10e3bffd7ca9e15b7d8054..55159d8ba7cb5257d5925bb24668ddf94136fdd8 100644
--- a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <joystick_quat
    image_selected="Cam_Rotate_In"
    image_unselected="Cam_Rotate_Out"
diff --git a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml
index 48bcb465331d4896031389c61279411737029ed8..375fab9403358d7fe75ebbe952f66ab4460ca026 100644
--- a/indra/newview/skins/default/xui/en/widgets/layout_stack.xml
+++ b/indra/newview/skins/default/xui/en/widgets/layout_stack.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Global settings for all widgets ("UI Controls") -->
 <!-- The params in this file aren't currently getting loaded in OSX -->
 <layout_stack name="stack"/> 
diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
index a7ff4acb51dad134c088a795eb2681098640727e..570e500252679d15543b947ac169e459d0572eb1 100644
--- a/indra/newview/skins/default/xui/en/widgets/line_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <line_editor background_image="TextField_Off"
              background_image_disabled="TextField_Disabled"
              background_image_focused="TextField_Active"
diff --git a/indra/newview/skins/default/xui/en/widgets/list_view.xml b/indra/newview/skins/default/xui/en/widgets/list_view.xml
index 2e976bc7556dafcbbbbf62aacaf4724fce393a60..5fb134535b4c5eb247fa7e926ec0961aac8efa26 100644
--- a/indra/newview/skins/default/xui/en/widgets/list_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/list_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <list_view
   fg_selected_color="ListViewSelectedFgColor"
   bg_selected_color="ListViewSelectedBgColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml
index ea1d89c975c4eaed5802c8b93e46c75285193fb0..af4b9aa1ee9584dfd54fa03497d22623ab0cd014 100644
--- a/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml
+++ b/indra/newview/skins/default/xui/en/widgets/loading_indicator.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <loading_indicator
     follows="left|top"
     mouse_opaque="false"
@@ -19,4 +19,4 @@
     <image name="Progress_11"/>
     <image name="Progress_12"/>
   </images>
-</loading_indicator>
\ No newline at end of file
+</loading_indicator>
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 674be597535c98e5c46382b214d9374a8d679e10..d12f1434a82208264c6a018c6b494f74031b78fd 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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.
diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml
index 13ac84beb2787d81f16c95016ad0407edd3c7f44..285c0207fb84147c372a256a95ab991c585cc951 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu.xml
@@ -1,8 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu" 
       bg_color="MenuDefaultBgColor"
       bg_visible="true"
       drop_shadow="true"
       tear_off="false"
+      font="SansSerifSmall" 
       shortcut_pad="15">
 </menu>
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml
index 27efa72563568485adac534a39081df088274368..8867e97b6c712badb35ee74de7b962b94a7af80e 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar
 			tear_off = "false"
 			keep_fixed_size = "true"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
index 563f3dc5c2bd360f643c01e08825e610c7a181b5..fb890985cec196ab11582a4672187ee1574b9d72 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
@@ -1,3 +1,3 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Use this for the top-level menu styling -->
 <menu_item font="SansSerifSmall" />
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml
index 24bda97f44c210f2d47fe50b21ec899d598cb7db..db46e6ddfc8817af9a1106307c73636f37502e24 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_item_call enabled_color="MenuItemEnabledColor"
 	disabled_color="MenuItemDisabledColor"
 	highlight_bg_color="MenuItemHighlightBgColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml
index f6b06cb50b8e3774c9c19a157a634eb4692a3f17..92478be7da9db2806a43a093593979cc0c70a96c 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_item_check enabled_color="MenuItemEnabledColor"
 	disabled_color="MenuItemDisabledColor"
 	highlight_bg_color="MenuItemHighlightBgColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml
index 7452d685eba5d7bcd20e20214ae0fb0a6a54fa1c..366d9284aae32c117668901519867f836fb4a311 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_item_separator enabled_color="MenuItemEnabledColor"
                      name="separator"
                      disabled_color="MenuItemDisabledColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml
index ee61a302f52cfaffccd7d021832da465d4e3098d..82310e4f1af8eff806d770a4900a13833b7b13a8 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item_tear_off.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Use "disabled color" to make it look like menu separators -->
 <menu_item_tear_off enabled_color="MenuItemDisabledColor"
                     name="tear_off"
diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml
index 90b06259828c126a9af7bb4f28abf24a5a81b6d4..30fda073a6854a3865f5550de73f931bb094f700 100644
--- a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml
+++ b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <multi_slider text_color="LabelTextColor"
               mouse_opaque="true"
               text_disabled_color="LabelDisabledColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml
index bbcb008df4d86506f721acb2ed4943206670c18e..a56c819b4de6c14e574fc86d8119e0b3277ca7b1 100644
--- a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <multi_slider_bar name="multi_slider_bar"
                   track_color="MultiSliderTrackColor"
                   thumb_disabled_color="MultiSliderDisabledThumbColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/name_editor.xml b/indra/newview/skins/default/xui/en/widgets/name_editor.xml
index 21ba5c77f828a480f90f03c4b1e9f2afdf5dca12..1d7d23eb8f0c94cbd38304023b15446c7451744c 100644
--- a/indra/newview/skins/default/xui/en/widgets/name_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/name_editor.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<name_editor default_text="(retrieving)"/>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<name_editor default_text="(retrieving)"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/name_list.xml b/indra/newview/skins/default/xui/en/widgets/name_list.xml
index 3ae0f6822792a7c2719d1501031bf433f38666fe..4ad2512ccde7582054e0e27ea1167ad7bc8884cc 100644
--- a/indra/newview/skins/default/xui/en/widgets/name_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/name_list.xml
@@ -1,3 +1,3 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <name_list name="name_list"
            />
diff --git a/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml
index 150225af27ed2e373f0c40444c1295cbe9c52047..4f87c58420e2185f4418745e67dab0afcadbd537 100644
--- a/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/notification_list_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <notification_list_view
  allow_select="false"
  color="PanelFocusBackgroundColor"
@@ -15,4 +15,4 @@
     top="20"
     height="0"
     width="318"/>
-</notification_list_view>
\ No newline at end of file
+</notification_list_view>
diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
index 9d71ceca2f4c332cfdea76bb6f8abd0a40fcfa83..788c733ca8c5dd879595ea8a4b0499bb0b5a0625 100644
--- a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <output_monitor
   draw_border="true"
   follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml
index b36f723831d9eeae9f1ee13e04f8e26e8f360697..77f3ef5675233dbf3495c12fd74db096bc41d09b 100644
--- a/indra/newview/skins/default/xui/en/widgets/panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/panel.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Optional parameters:
   border - show border around panel
   bg_opaque_image - image name for "in-front" panel look
@@ -12,4 +12,4 @@
        background_visible="false"
        background_opaque="false"
        chrome="false"
-       accepts_badge="true"/>
\ No newline at end of file
+       accepts_badge="true"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml
index 612a1daf16da489a1b7e7f70903cacdfa8bb0ffb..db941060b7a3d4d88c7f5765f025ce404206a9f7 100644
--- a/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/panel_camera_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel_camera_item
  background_visible="false"
  height="23"
diff --git a/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml b/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml
index af5aec2c34d0c5a9389dffa8fa21d3e1760369c5..ad63a80a05cb76371dfea209da1006d20517b414 100644
--- a/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/person_tab_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <person_tab_view
   folder_arrow_image="Folder_Arrow"
   folder_indentation="5"
diff --git a/indra/newview/skins/default/xui/en/widgets/person_view.xml b/indra/newview/skins/default/xui/en/widgets/person_view.xml
index bfe6941a8a8b96fbe25c961b25e9b8d384800bef..82dbdf0dab6cdc850485f3af3367ac7796941d36 100644
--- a/indra/newview/skins/default/xui/en/widgets/person_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/person_view.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <person_view
   folder_arrow_image="Folder_Arrow"
   folder_indentation="5"
diff --git a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml
index 339e53fbb8287ffe526dea8374cfcd157425d34c..a9c90f0094477069cc52192a451d12e935818d1c 100644
--- a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <progress_bar image_bar="ProgressTrack"
               image_fill="ProgressBar"
               color_bar.red="0.5764"
diff --git a/indra/newview/skins/default/xui/en/widgets/radio_group.xml b/indra/newview/skins/default/xui/en/widgets/radio_group.xml
index ab3184d34b3f636ebab75ef9c7e692dd9c59b13e..a307e919901427050fbe659b68763be10e57f5fa 100644
--- a/indra/newview/skins/default/xui/en/widgets/radio_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/radio_group.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <radio_group name="radio_group"
              mouse_opaque="false"
              follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/widgets/radio_item.xml b/indra/newview/skins/default/xui/en/widgets/radio_item.xml
index 3ddf18b2cbce368ba2b8da52ad76b63751dac909..b95e1add475f99457362af0e090148f01ac25ca6 100644
--- a/indra/newview/skins/default/xui/en/widgets/radio_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/radio_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <radio_item follows="left|top" font="SansSerif">
   <radio_item.label_text name="Radio Item label"/>
   <radio_item.check_button name="Radio control button"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml
index 682dcf40d8b62c29f9832a2bd9568ac2f0fe9065..83a66da89e6a19ec7d6f4b52a6811b2878eb91d0 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <scroll_bar thumb_image_vertical ="ScrollThumb_Vert"
 			thumb_image_horizontal ="ScrollThumb_Horiz"
             track_image_vertical ="ScrollTrack_Vert"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml
index 8a48fcb32d4e73157795957479c1b5588a597314..2575d33d96d63fb98abd46d4b7d452c4aea77890 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_column_header.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <scroll_column_header name="column_header"
                       image_unselected="SegmentedBtn_Middle_Selected"
                       image_selected="SegmentedBtn_Middle_Selected"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml
index a6d096a964b2f1b5bad6d38de895c17023131442..a361d4fac88ca45b57fc54644518c2bca8e3ceb0 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <scroll_container name="scroll_container"
                   color="black"
                   opaque="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
index e43989c6c7d2b1c8d72aba97350e60a6f5df4da1..9819e7a22680397aa96adb7ff117bdbda37e1039 100644
--- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <scroll_list name="scroll_list" 
              fg_unselected_color="ScrollUnselectedColor"
              fg_selected_color="ScrollSelectedFGColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml
index 40cbf5977a863ac84dc488920a62f46885dcbf9f..019c4b7fc0c65aa847b147d8b7e40cc96007e31b 100644
--- a/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml
+++ b/indra/newview/skins/default/xui/en/widgets/scrolling_panel_list.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<scrolling_panel_list name="scrolling_panel_list"/>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<scrolling_panel_list name="scrolling_panel_list"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml
index ce84cfedc0a5d7a1a299634f66e6b0dbb452018e..61341188edcd2fbf04ed6a2d987df9f9262f0b5a 100644
--- a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <search_combo_box
  allow_text_entry="true"
  list_position="below"
@@ -28,4 +28,4 @@
   height="13" 
   image_unselected="Search"
   image_selected="Search" />
-</search_combo_box>
\ No newline at end of file
+</search_combo_box>
diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml
index 7972911185f8678349d8b6d8b1ac2957d11767de..76c3b2cec2716b8035311ad02cdc712b3e747860 100644
--- a/indra/newview/skins/default/xui/en/widgets/search_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <search_editor
   name="search_editor"
   clear_button_visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml
index 022564c12fcee20dc04b7d23d71fcfa01a46dec9..3835c777b59d63474a431cb14691e353b3cb8d6e 100644
--- a/indra/newview/skins/default/xui/en/widgets/side_tray.xml
+++ b/indra/newview/skins/default/xui/en/widgets/side_tray.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <side_tray tab_btn_image="TaskPanel_Tab_Off"
            tab_btn_image_selected="TaskPanel_Tab_Selected"
            tab_btn_width="32"
diff --git a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml
index aa8461d367be46395ae227cf044757850bf5a3d4..5d94cd7b2eb1c073077dfed1410d37535ec34a3a 100644
--- a/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml
+++ b/indra/newview/skins/default/xui/en/widgets/sidetray_tab.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <sidetray_tab 
   focus_root="true"
   />
diff --git a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
index 3fd9e66562c58ceaf7e30727d60aaf39def5d220..e2659a25b2630c5357aa10480a72850d60a98bb4 100644
--- a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <simple_text_editor
   parse_urls="false" 
   mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml
index ef4c58ed106e9a417f0711609501aee8d875d48e..07fbed155a11e380fca20bacd85f683adaf81d12 100644
--- a/indra/newview/skins/default/xui/en/widgets/slider.xml
+++ b/indra/newview/skins/default/xui/en/widgets/slider.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <slider name="slider" 
         can_edit_text="false" 
         font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
index d0a53fda7b010481827f77015da5f46ccf3f9144..8c52f06c45700488a9a1da4498979794a4b44596 100644
--- a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!--All horizontal sliders are configured to have no highlighted track. See EXT-5939. -->
 <slider_bar follows="left|top"
             thumb_outline_color="SliderThumbOutlineColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/spinner.xml b/indra/newview/skins/default/xui/en/widgets/spinner.xml
index d7af6077e51388246ca6562b224ffc5fb9ca0caa..12f03ab0477cf28cdfce179167afd833e8dac497 100644
--- a/indra/newview/skins/default/xui/en/widgets/spinner.xml
+++ b/indra/newview/skins/default/xui/en/widgets/spinner.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <spinner text_enabled_color="LabelTextColor"
          text_disabled_color="LabelDisabledColor"
          font="SansSerifSmall" 
@@ -14,4 +14,4 @@
                        image_selected="Stepper_Down_Press"
                        tab_stop="false"
                        follows="left|bottom" />
-</spinner>
\ No newline at end of file
+</spinner>
diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml
index 2ff9ada90a7ed7e61f8b10940610858c4dc9f045..f85638166be9ef61cfe88b748781e14d701ecff3 100644
--- a/indra/newview/skins/default/xui/en/widgets/split_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/split_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <split_button
  font="SansSerifSmall"
  arrow_position="left"
diff --git a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
index 9fa77855c0db714a353ad1bd61d86c78ed3f4d6f..cdeff6ab05937f6d3cc95a754cebc96eba244d76 100644
--- a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
+++ b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <sun_moon_trackball
     name="virtualtrackball"
     width="150"
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 0586119681a5cf16953c5bd056eec0a9e2b8298f..22955fe73d5b71a7880b6d9db3551054fe2fca01 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!--
 label_pad_bottom - vertical padding under tab button labels
 label_pad_left - padding to the left of tab button labels
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
index d792e9f29c46bc3be7e19c80936f99397bec1970..6468a023e363e11ae9a35246a6e1a0bc112645e8 100644
--- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Derives from LLUICtrl -->
 <talk_button>
   <!-- To make speak button look green when selected set:
diff --git a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
index 4f574d75d559976f8c11e788cb7f9d7b96202342..1b4ac4dba7d7735661765133cb40d97894d0176e 100644
--- a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Menu items for the back button drop-down menu of locations.
   Based on menu_item_call.xml -->
 <teleport_history_menu_item
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 210207467435b44ab7231f00ef05c95906f79649..505d98368e5de8aa4a115b479c95741ccbc59a83 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <text parse_urls="true"
       mouse_opaque="false" 
       name="text_box" 
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
index 100571cc01d8cf1bf6de2bd6ef1c61d39209885b..c359e52a921ae2c00308d3a01e41f0fc80e9f261 100644
--- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Core parameters are in simple_text_editor.xml -->
 <text_editor
   name="text_editor"
diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml
index b2da2147c1682442298cd3ae8f57500b1321fbe1..ada907ca8f5a9ad4034cce3be82d80ba253fc760 100644
--- a/indra/newview/skins/default/xui/en/widgets/textbase.xml
+++ b/indra/newview/skins/default/xui/en/widgets/textbase.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <textbase clip_partial="false"
           halign="left" 
           valign="top" 
diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml
index 1511116ba690a819c0dbc307bee4616e97acf1ad..eb5344d3119a68d0c6a1f51b07af8983ba90f7f5 100644
--- a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml
+++ b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <texture_picker border_color="DefaultHighlightLight"
                 name="texture picker"
                 mouse_opaque="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/time.xml b/indra/newview/skins/default/xui/en/widgets/time.xml
index b5bdd564a61073963b4c4971a11c996e9fe720c5..3162d49be49dd1cacee618c46c3dc317317c5543 100644
--- a/indra/newview/skins/default/xui/en/widgets/time.xml
+++ b/indra/newview/skins/default/xui/en/widgets/time.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <time text_enabled_color="LabelTextColor"
          text_disabled_color="LabelDisabledColor"
          font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml
index 48950a98ad547f59d7d83a2396438e0f414d8894..a9d17d098907667c800209dab616c6b5103d74ae 100644
--- a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu visible="false"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
index 9ca15ae50d39a63ed1715620436b7811161ddba1..d0a9adece372006588e4832daf8237e35764d9b5 100644
--- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <tool_tip name="tooltip"
           max_width="200"
           padding="4"
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 11bba972dbb91c61c9f067b0fa03c0df65e45d7b..928c4df5c17d92c17998fa119ab71c7bd6a35c47 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toolbar pad_left="1"
          pad_right="1"
          pad_top="1"
diff --git a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml
index f4dbb8f40489da3ccd72251ecde31435a64b0d3c..8a5dbc72abac2ff3b0366e2b5060cbb0fcf8a779 100644
--- a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Global settings for all widgets ("UI Controls") -->
 <!-- The params in this file aren't currently getting loaded in OSX -->
 <ui_ctrl
diff --git a/indra/newview/skins/default/xui/en/widgets/view_border.xml b/indra/newview/skins/default/xui/en/widgets/view_border.xml
index bf40e3086bbaec00380ec9d54d5d693b491cf830..db77f5a07e82a353a765b4404d6286b78a432c93 100644
--- a/indra/newview/skins/default/xui/en/widgets/view_border.xml
+++ b/indra/newview/skins/default/xui/en/widgets/view_border.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <view_border name="view_border" 
              highlight_light_color="DefaultHighlightLight"
              highlight_dark_color="DefaultHighlightDark"
@@ -8,4 +8,4 @@
              border_style="line"
              bevel_style="out"
              mouse_opaque="false"
-             follows="all"/>
\ No newline at end of file
+             follows="all"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml b/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml
index 866276f9975dc7ab2a1ea8e644c1a4eb28bde97f..aa235e103bc234334dc19e05c04511fa65984d70 100644
--- a/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/wearable_outfit_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <inventory_list_item
   follows="top|right|left"
   height="20"
diff --git a/indra/newview/skins/default/xui/en/widgets/web_browser.xml b/indra/newview/skins/default/xui/en/widgets/web_browser.xml
index 676fafd828f88926bd2217f481322de19ffdb069..8af330c84a213a454c46f5adb8dae473362b9b46 100644
--- a/indra/newview/skins/default/xui/en/widgets/web_browser.xml
+++ b/indra/newview/skins/default/xui/en/widgets/web_browser.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <web_browser border_visible="true"
              tab_stop="false"
              />
diff --git a/indra/newview/skins/default/xui/en/widgets/window_shade.xml b/indra/newview/skins/default/xui/en/widgets/window_shade.xml
index 23eb2f13fb821531e12de71b63f3668379beab57..a0e26bc81c97600851ffc209d99d46f7d9ca40bb 100644
--- a/indra/newview/skins/default/xui/en/widgets/window_shade.xml
+++ b/indra/newview/skins/default/xui/en/widgets/window_shade.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?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/en/widgets/xy_vector.xml b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml
index 93ae26a6ad69b022c435cea1f065e6cda7936939..23cde55f305eb286d1430bbe893114617e2e2aa8 100644
--- a/indra/newview/skins/default/xui/en/widgets/xy_vector.xml
+++ b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <xy_vector
     name="xyvector"
     width="120"
diff --git a/indra/newview/skins/default/xui/en/xui_version.xml b/indra/newview/skins/default/xui/en/xui_version.xml
index 0e777751d3f13b0b47e740254ea5f6ba40b074a1..2a8fd9c6c40b9b60ab4918cbe42e036b381a25e2 100644
--- a/indra/newview/skins/default/xui/en/xui_version.xml
+++ b/indra/newview/skins/default/xui/en/xui_version.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <xui_version>
 	1.0
 </xui_version>
diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp
index a0a27af28cea6ad79ebdc83f93a223b83e16fff8..ff8094faae01ff329b602299a692225cfa9e87e9 100644
--- a/indra/newview/tests/llslurl_test.cpp
+++ b/indra/newview/tests/llslurl_test.cpp
@@ -249,6 +249,12 @@ namespace tut
 		ensure_equals("maps.secondlife.com slurl, region + coords", slurl.getSLURLString(),
 					  "http://maps.secondlife.com/secondlife/myregion/1/2/3");
 
+		slurl = LLSLURL("secondlife://");
+		ensure_equals("secondlife: slurl, empty - type", slurl.getType(), LLSLURL::EMPTY);
+
+		slurl = LLSLURL("secondlife:///");
+		ensure_equals("secondlife: slurl, root - type", slurl.getType(), LLSLURL::EMPTY);
+
 		slurl = LLSLURL("secondlife://myregion");
 		ensure_equals("secondlife: slurl, region only - type", slurl.getType(), LLSLURL::LOCATION);
 		ensure_equals("secondlife: slurl, region only", slurl.getSLURLString(),