Merge the last PGO-green inbound changeset to m-c.
authorRyan VanderMeulen <ryanvm@gmail.com>
Wed, 24 Oct 2012 21:50:09 -0400
changeset 111428 3fb7c935a625095027941e3850b510bacee63437
parent 111373 3098b9949017274321ae45edad078075b66397db (current diff)
parent 111427 50ce28b49e32a1c81349fe9bcb97d7d7f271b5b4 (diff)
child 111429 5c82f5a5e90d9682d32b72ae76c9deca4a84804e
child 111447 8d1a935cd822897e7a8d5361b771b88bbbdb7449
push id93
push usernmatsakis@mozilla.com
push dateWed, 31 Oct 2012 21:26:57 +0000
milestone19.0a1
Merge the last PGO-green inbound changeset to m-c.
other-licenses/nsis/Contrib/CityHash/cityhash/city.cc
other-licenses/nsis/Contrib/CityHash/cityhash/stdint.h
python/virtualenv/virtualenv_support/distribute-0.6.27.tar.gz
python/virtualenv/virtualenv_support/pip-1.1.tar.gz
--- a/b2g/components/ContentPermissionPrompt.js
+++ b/b2g/components/ContentPermissionPrompt.js
@@ -1,21 +1,64 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+let DEBUG = 0;
+let debug;
+if (DEBUG) {
+  debug = function (s) { dump("-*- ContentPermissionPrompt: " + s + "\n"); };
+}
+else {
+  debug = function (s) {};
+}
+
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 const Cc = Components.classes;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/Webapps.jsm");
 Cu.import("resource://gre/modules/AppsUtils.jsm");
+Cu.import("resource://gre/modules/PermissionsInstaller.jsm");
+
+var permissionManager = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
+var secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager);
+
+XPCOMUtils.defineLazyServiceGetter(this,
+                                   "PermSettings",
+                                   "@mozilla.org/permissionSettings;1",
+                                   "nsIDOMPermissionSettings");
+
+function rememberPermission(aPermission, aPrincipal)
+{
+  function convertPermToAllow(aPerm, aPrincipal)
+  {
+    let type =
+      permissionManager.testExactPermissionFromPrincipal(aPrincipal, aPerm);
+    if (type == Ci.nsIPermissionManager.PROMPT_ACTION) {
+      permissionManager.addFromPrincipal(aPrincipal,
+                                         aPerm,
+                                         Ci.nsIPermissionManager.ALLOW_ACTION);
+    }
+  }
+
+  // Expand the permission to see if we have multiple access properties to convert
+  let access = PermissionsTable[aPermission].access;
+  if (access) {
+    for (let idx in access) {
+      convertPermToAllow(aPermission + "-" + access[idx], aPrincipal);
+    }
+  }
+  else {
+    convertPermToAllow(aPermission, aPrincipal);
+  }
+}
 
 function ContentPermissionPrompt() {}
 
 ContentPermissionPrompt.prototype = {
 
   handleExistingPermission: function handleExistingPermission(request) {
     let result = Services.perms.testExactPermissionFromPrincipal(request.principal, request.type);
     if (result == Ci.nsIPermissionManager.ALLOW_ACTION) {
@@ -42,18 +85,18 @@ ContentPermissionPrompt.prototype = {
 
     let requestId = this._id++;
     content.addEventListener("mozContentEvent", function contentEvent(evt) {
       if (evt.detail.id != requestId)
         return;
       evt.target.removeEventListener(evt.type, contentEvent);
 
       if (evt.detail.type == "permission-allow") {
-
         if (evt.detail.remember) {
+          rememberPermission(request.type, request.principal);
           Services.perms.addFromPrincipal(request.principal, request.type,
                                           Ci.nsIPermissionManager.ALLOW_ACTION);
         }
 
         request.allow();
         return;
       }
 
@@ -68,19 +111,24 @@ ContentPermissionPrompt.prototype = {
     let principal = request.principal;
     let isApp = principal.appStatus != Ci.nsIPrincipal.APP_STATUS_NOT_INSTALLED;
 
     let details = {
       type: "permission-prompt",
       permission: request.type,
       id: requestId,
       origin: principal.origin,
-      isApp: isApp
+      isApp: isApp,
+      remember: request.remember
     };
 
+    this._permission = request.type;
+    this._uri = request.principal.URI.spec;
+    this._origin = request.principal.origin;
+
     if (!isApp) {
       browser.shell.sendChromeEvent(details);
       return;
     }
 
     // When it's an app, get the manifest to add the l10n application name.
     let app = DOMApplicationRegistry.getAppByLocalId(principal.appId);
     DOMApplicationRegistry.getManifestFor(app.origin, function getManifest(aManifest) {
--- a/b2g/installer/package-manifest.in
+++ b/b2g/installer/package-manifest.in
@@ -330,16 +330,18 @@
 @BINPATH@/components/ConsoleAPI.manifest
 @BINPATH@/components/ConsoleAPI.js
 @BINPATH@/components/BrowserElementParent.manifest
 @BINPATH@/components/BrowserElementParent.js
 @BINPATH@/components/ContactManager.js
 @BINPATH@/components/ContactManager.manifest
 @BINPATH@/components/PermissionSettings.js
 @BINPATH@/components/PermissionSettings.manifest
+@BINPATH@/components/PermissionPromptService.js
+@BINPATH@/components/PermissionPromptService.manifest
 @BINPATH@/components/AlarmsManager.js
 @BINPATH@/components/AlarmsManager.manifest
 @BINPATH@/components/FeedProcessor.manifest
 @BINPATH@/components/FeedProcessor.js
 @BINPATH@/components/BrowserFeeds.manifest
 @BINPATH@/components/FeedConverter.js
 @BINPATH@/components/FeedWriter.js
 @BINPATH@/components/fuelApplication.manifest
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -324,16 +324,20 @@ pref("browser.download.manager.scanWhenD
 pref("browser.download.manager.resumeOnWakeDelay", 10000);
 
 // This allows disabling the Downloads Panel in favor of the old interface.
 pref("browser.download.useToolkitUI", false);
 
 // This controls retention behavior in the Downloads Panel only.
 pref("browser.download.panel.removeFinishedDownloads", false);
 
+// This records whether or not at least one session with the Downloads Panel
+// enabled has been completed already.
+pref("browser.download.panel.firstSessionCompleted", false);
+
 // search engines URL
 pref("browser.search.searchEnginesURL",      "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/");
 
 // pointer to the default engine name
 pref("browser.search.defaultenginename",      "chrome://browser-region/locale/region.properties");
 
 // disable logging for the search service by default
 pref("browser.search.log", false);
--- a/browser/components/downloads/src/DownloadsStartup.js
+++ b/browser/components/downloads/src/DownloadsStartup.js
@@ -93,17 +93,17 @@ DownloadsStartup.prototype = {
 
       case "sessionstore-windows-restored":
       case "sessionstore-browser-state-restored":
         // Unless there is no saved session, there is a chance that we are
         // starting up after a restart or a crash.  We should check the disk
         // database to see if there are completed downloads to recover and show
         // in the panel, in addition to in-progress downloads.
         if (gSessionStartup.sessionType != Ci.nsISessionStartup.NO_SESSION) {
-          this._recoverAllDownloads = true;
+          this._restoringSession = true;
         }
         this._ensureDataLoaded();
         break;
 
       case "download-manager-initialized":
         // Don't initialize the JavaScript data and user interface layer if we
         // are initializing the Download Manager service during shutdown.
         if (this._shuttingDown) {
@@ -183,28 +183,37 @@ DownloadsStartup.prototype = {
         // "quit-application" listeners are invoked, so that the Download
         // Manager service has a chance to pause or cancel in-progress downloads
         // before we remove completed downloads from the list.  Note that, since
         // "quit-application" was invoked, we've already exited Private Browsing
         // Mode, thus we are always working on the disk database.
         if (this._cleanupOnShutdown) {
           Services.downloads.cleanUp();
         }
+
+        if (!DownloadsCommon.useToolkitUI) {
+          // If we got this far, that means that we finished our first session
+          // with the Downloads Panel without crashing. This means that we don't
+          // have to force displaying only active downloads on the next startup
+          // now.
+          this._firstSessionCompleted = true;
+        }
         break;
     }
   },
 
   //////////////////////////////////////////////////////////////////////////////
   //// Private
 
   /**
-   * Indicates whether we should load all downloads from the previous session,
-   * including completed items as well as active downloads.
+   * Indicates whether we're restoring a previous session. This is used by
+   * _recoverAllDownloads to determine whether or not we should load and
+   * display all downloads data, or restrict it to only the active downloads.
    */
-  _recoverAllDownloads: false,
+  _restoringSession: false,
 
   /**
    * Indicates whether the Download Manager service has been initialized.  This
    * flag is required because we want to avoid accessing the service immediately
    * at browser startup.  The service will start when the user first requests a
    * download, or some time after browser startup.
    */
   _downloadsServiceInitialized: false,
@@ -215,16 +224,41 @@ DownloadsStartup.prototype = {
   _shuttingDown: false,
 
   /**
    * True during shutdown if we need to remove completed downloads.
    */
   _cleanupOnShutdown: false,
 
   /**
+   * True if we should display all downloads, as opposed to just active
+   * downloads. We decide to display all downloads if we're restoring a session,
+   * or if we're using the Downloads Panel anytime after the first session with
+   * it has completed.
+   */
+  get _recoverAllDownloads() {
+    return this._restoringSession ||
+           (!DownloadsCommon.useToolkitUI && this._firstSessionCompleted);
+  },
+
+  /**
+   * True if we've ever completed a session with the Downloads Panel enabled.
+   */
+  get _firstSessionCompleted() {
+    return Services.prefs
+                   .getBoolPref("browser.download.panel.firstSessionCompleted");
+  },
+
+  set _firstSessionCompleted(aValue) {
+    Services.prefs.setBoolPref("browser.download.panel.firstSessionCompleted",
+                               aValue);
+    return aValue;
+  },
+
+  /**
    * Ensures that persistent download data is reloaded at the appropriate time.
    */
   _ensureDataLoaded: function DS_ensureDataLoaded()
   {
     if (!this._downloadsServiceInitialized ||
         gPrivateBrowsingService.privateBrowsingEnabled) {
       return;
     }
--- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi
@@ -826,17 +826,26 @@ Function preShortcuts
 FunctionEnd
 
 Function leaveShortcuts
   ${MUI_INSTALLOPTIONS_READ} $0 "shortcuts.ini" "Settings" "State"
   ${If} $0 != 0
     Abort
   ${EndIf}
   ${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "State"
-  ${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
+
+  ; If we have a Metro browser and are Win8, then we don't have a Field 3
+!ifdef MOZ_METRO
+  ${Unless} ${AtLeastWin8}
+!endif
+    ${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
+!ifdef MOZ_METRO
+  ${EndIf}
+!endif
+
   ; Don't install the quick launch shortcut on Windows 7
   ${Unless} ${AtLeastWin7}
     ${MUI_INSTALLOPTIONS_READ} $AddQuickLaunchSC "shortcuts.ini" "Field 4" "State"
   ${EndUnless}
 
   ${If} $InstallType == ${INSTALLTYPE_CUSTOM}
     Call CheckExistingInstall
   ${EndIf}
@@ -1092,23 +1101,31 @@ Function .onInit
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Text   "$(ICONS_DESKTOP)"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Left   "0"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Right  "-1"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Top    "20"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Bottom "30"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" State  "1"
   WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Flags  "GROUP"
 
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Type   "checkbox"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Text   "$(ICONS_STARTMENU)"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Left   "0"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Right  "-1"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Top    "40"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Bottom "50"
-  WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" State  "1"
+  ; Don't offer to install the start menu shortcut on Windows 8
+  ; for Metro builds.
+!ifdef MOZ_METRO
+  ${Unless} ${AtLeastWin8}
+!endif
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Type   "checkbox"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Text   "$(ICONS_STARTMENU)"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Left   "0"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Right  "-1"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Top    "40"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Bottom "50"
+    WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" State  "1"
+!ifdef MOZ_METRO
+  ${EndIf}
+!endif
 
   ; Don't offer to install the quick launch shortcut on Windows 7
   ${Unless} ${AtLeastWin7}
     WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Type   "checkbox"
     WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Text   "$(ICONS_QUICKLAUNCH)"
     WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Left   "0"
     WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Right  "-1"
     WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Top    "60"
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -1111,16 +1111,37 @@ Function SetAsDefaultAppUserHKCU
       ${GetLongPath} "$0" $0
       ${If} "$0" == "$INSTDIR"
         WriteRegStr HKCU "Software\Clients\StartMenuInternet" "" "$R9"
       ${EndIf}
     ${EndIf}
   ${EndUnless}
 
   SetShellVarContext current  ; Set SHCTX to the current user (e.g. HKCU)
+
+  ${If} ${AtLeastWin8}
+    ${SetStartMenuInternet} "HKCU"
+    ${FixShellIconHandler} "HKCU"
+    ${FixClassKeys} ; Does not use SHCTX
+; If MOZ_METRO is defined and we're at least win8, then we should re-create
+; the start menu shortcut so that the Metro browser is accessible.
+; This is also for zip builds who won't have a start menu shortcut yet.
+!ifdef MOZ_METRO
+    Delete "$SMPROGRAMS\${BrandFullName}.lnk"
+    CreateShortCut "$SMPROGRAMS\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}"
+    ${If} ${FileExists} "$SMPROGRAMS\${BrandFullName}.lnk"
+      ShellLink::SetShortCutWorkingDirectory "$SMPROGRAMS\${BrandFullName}.lnk" \
+                                             "$INSTDIR"
+      ${If} "$AppUserModelID" != ""
+        ApplicationID::Set "$SMPROGRAMS\${BrandFullName}.lnk" "$AppUserModelID" "true"
+      ${EndIf}
+    ${EndIf}
+!endif
+  ${EndIf}
+
   ${SetHandlers}
 
   ${If} ${AtLeastWinVista}
     ; Only register as the handler on Vista and above if the app registry name
     ; exists under the RegisteredApplications registry key. The protocol and
     ; file handlers set previously at the user level will associate this install
     ; as the default browser.
     ClearErrors
@@ -1143,19 +1164,38 @@ Function FixShortcutAppModelIDs
   ${EndIf}
 FunctionEnd
 
 ; The !ifdef NO_LOG prevents warnings when compiling the installer.nsi due to
 ; this function only being used by the uninstaller.nsi.
 !ifdef NO_LOG
 
 Function SetAsDefaultAppUser
-  ; It is only possible to set this installation of the application as the
-  ; StartMenuInternet handler if it was added to the HKLM StartMenuInternet
-  ; registry keys.
+  ; On Win8, we want to avoid having a UAC prompt since we'll already have
+  ; another action for control panel default browser selection popping up
+  ; to the user.  Win8 is the first OS where the start menu keys can be
+  ; added into HKCU.  The call to SetAsDefaultAppUserHKCU will have already
+  ; set the HKCU keys for SetStartMenuInternet.
+  ${If} ${AtLeastWin8}
+    ; Check if this is running in an elevated process
+    ClearErrors
+    ${GetParameters} $0
+    ${GetOptions} "$0" "/UAC:" $0
+    ${If} ${Errors} ; Not elevated
+      Call SetAsDefaultAppUserHKCU
+    ${Else} ; Elevated - execute the function in the unelevated process
+      GetFunctionAddress $0 SetAsDefaultAppUserHKCU
+      UAC::ExecCodeSegment $0
+    ${EndIf}
+    Return ; Nothing more needs to be done
+  ${EndIf}
+
+  ; Before Win8, it is only possible to set this installation of the application
+  ; as the StartMenuInternet handler if it was added to the HKLM
+  ; StartMenuInternet registry keys.
   ; http://support.microsoft.com/kb/297878
 
   ; Check if this install location registered as the StartMenuInternet client
   ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
   ClearErrors
   ReadRegStr $0 HKCU "Software\Clients\StartMenuInternet\$R9\DefaultIcon" ""
   ${If} ${Errors}
   ${OrIf} ${AtMostWin2008R2}
@@ -1179,27 +1219,16 @@ Function SetAsDefaultAppUser
           GetFunctionAddress $0 SetAsDefaultAppUserHKCU
           UAC::ExecCodeSegment $0
         ${EndIf}
         Return ; Nothing more needs to be done
       ${EndIf}
     ${EndIf}
   ${EndUnless}
 
-  ; On Win8, we want to avoid having a UAC prompt since we'll already have
-  ; another action for control panel default browser selection popping up
-  ; to the user.  Win8 is the first OS where the start menu keys can be
-  ; added into HKCU.
-  ${If} ${AtLeastWin8}
-    ${SetStartMenuInternet} "HKCU"
-    ${FixShellIconHandler} "HKCU"
-    ${FixClassKeys} ; Does not use SHCTX
-    Return
-  ${EndIf}
-
   ; The code after ElevateUAC won't be executed on Vista and above when the
   ; user:
   ; a) is a member of the administrators group (e.g. elevation is required)
   ; b) is not a member of the administrators group and chooses to elevate
   ${ElevateUAC}
 
   ${SetStartMenuInternet} "HKLM"
 
--- a/caps/idl/nsIPrincipal.idl
+++ b/caps/idl/nsIPrincipal.idl
@@ -179,28 +179,58 @@ interface nsIPrincipal : nsISerializable
 
     /**
      * Returns the app id the principal is in, or returns
      * nsIScriptSecurityManager::NO_APP_ID if this principal isn't part of an
      * app.
      */
     readonly attribute unsigned long appId;
 
+    %{C++
+    uint32_t GetAppId()
+    {
+      uint32_t appId;
+      mozilla::DebugOnly<nsresult> rv = GetAppId(&appId);
+      MOZ_ASSERT(NS_SUCCEEDED(rv));
+      return appId;
+    }
+    %}
+
     /**
      * Returns true iif the principal is inside a browser element.
      */
     readonly attribute boolean isInBrowserElement;
 
+    %{C++
+    bool GetIsInBrowserElement()
+    {
+      bool isInBrowserElement;
+      mozilla::DebugOnly<nsresult> rv = GetIsInBrowserElement(&isInBrowserElement);
+      MOZ_ASSERT(NS_SUCCEEDED(rv));
+      return isInBrowserElement;
+    }
+    %}
+
     /**
      * Returns true if this principal has an unknown appId. This shouldn't
      * generally be used. We only expose it due to not providing the correct
      * appId everywhere where we construct principals.
      */
     readonly attribute boolean unknownAppId;
 
+    %{C++
+    bool GetUnknownAppId()
+    {
+      bool unkwnownAppId;
+      mozilla::DebugOnly<nsresult> rv = GetUnknownAppId(&unkwnownAppId);
+      MOZ_ASSERT(NS_SUCCEEDED(rv));
+      return unkwnownAppId;
+    }
+    %}
+
     /**
      * Returns true iff this principal is a null principal (corresponding to an
      * unknown, hence assumed minimally privileged, security context).
      */
     readonly attribute boolean isNullPrincipal;
 };
 
 /**
@@ -218,9 +248,9 @@ interface nsIPrincipal : nsISerializable
 interface nsIExpandedPrincipal : nsISupports
 {
   /**
    * An array of principals that the expanded principal subsumes.
    * Note: this list is not reference counted, it is shared, so 
    * should not be changed and should only be used ephemerally.
    */
   [noscript] readonly attribute PrincipalArray whiteList;
-};
\ No newline at end of file
+};
--- a/caps/include/nsScriptSecurityManager.h
+++ b/caps/include/nsScriptSecurityManager.h
@@ -343,16 +343,32 @@ public:
     HashPrincipalByOrigin(nsIPrincipal* aPrincipal);
 
     static bool
     GetStrictFileOriginPolicy()
     {
         return sStrictFileOriginPolicy;
     }
 
+    /**
+     * Returns true if the two principals share the same app attributes.
+     *
+     * App attributes are appId and the inBrowserElement flag.
+     * Two principals have the same app attributes if those information are
+     * equals.
+     * This method helps keeping principals from different apps isolated from
+     * each other. Also, it helps making sure mozbrowser (web views) and their
+     * parent are isolated from each other. All those entities do not share the
+     * same data (cookies, IndexedDB, localStorage, etc.) so we shouldn't allow
+     * violating that principle.
+     */
+    static bool
+    AppAttributesEqual(nsIPrincipal* aFirst,
+                       nsIPrincipal* aSecond);
+
 private:
 
     // GetScriptSecurityManager is the only call that can make one
     nsScriptSecurityManager();
     virtual ~nsScriptSecurityManager();
 
     bool SubjectIsPrivileged();
 
--- a/caps/src/nsPrincipal.cpp
+++ b/caps/src/nsPrincipal.cpp
@@ -258,44 +258,52 @@ NS_IMETHODIMP
 nsPrincipal::GetOrigin(char **aOrigin)
 {
   return GetOriginForURI(mCodebase, aOrigin);
 }
 
 NS_IMETHODIMP
 nsPrincipal::Equals(nsIPrincipal *aOther, bool *aResult)
 {
+  *aResult = false;
+
   if (!aOther) {
     NS_WARNING("Need a principal to compare this to!");
-    *aResult = false;
     return NS_OK;
   }
 
-  if (this != aOther) {
-
-    // Codebases are equal if they have the same origin.
-    *aResult =
-      NS_SUCCEEDED(nsScriptSecurityManager::CheckSameOriginPrincipal(this,
-                                                                     aOther));
+  if (aOther == this) {
+    *aResult = true;
     return NS_OK;
   }
 
-  *aResult = true;
+  // Codebases are equal if they have the same origin.
+  *aResult = NS_SUCCEEDED(
+               nsScriptSecurityManager::CheckSameOriginPrincipal(this, aOther));
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsPrincipal::EqualsIgnoringDomain(nsIPrincipal *aOther, bool *aResult)
 {
-  if (this == aOther) {
+  *aResult = false;
+
+  if (!aOther) {
+    NS_WARNING("Need a principal to compare this to!");
+    return NS_OK;
+  }
+
+  if (aOther == this) {
     *aResult = true;
     return NS_OK;
   }
 
-  *aResult = false;
+  if (!nsScriptSecurityManager::AppAttributesEqual(this, aOther)) {
+    return NS_OK;
+  }
 
   nsCOMPtr<nsIURI> otherURI;
   nsresult rv = aOther->GetURI(getter_AddRefs(otherURI));
   if (NS_FAILED(rv)) {
     return rv;
   }
 
   NS_ASSERTION(mCodebase,
--- a/caps/src/nsScriptSecurityManager.cpp
+++ b/caps/src/nsScriptSecurityManager.cpp
@@ -885,16 +885,20 @@ nsScriptSecurityManager::CheckSameOrigin
                                                   nsIPrincipal* aObject)
 {
     /*
     ** Get origin of subject and object and compare.
     */
     if (aSubject == aObject)
         return NS_OK;
 
+    if (!AppAttributesEqual(aSubject, aObject)) {
+        return NS_ERROR_DOM_PROP_ACCESS_DENIED;
+    }
+
     // Default to false, and change if that turns out wrong.
     bool subjectSetDomain = false;
     bool objectSetDomain = false;
     
     nsCOMPtr<nsIURI> subjectURI;
     nsCOMPtr<nsIURI> objectURI;
 
     aSubject->GetDomain(getter_AddRefs(subjectURI));
@@ -945,16 +949,36 @@ nsScriptSecurityManager::HashPrincipalBy
 {
     nsCOMPtr<nsIURI> uri;
     aPrincipal->GetDomain(getter_AddRefs(uri));
     if (!uri)
         aPrincipal->GetURI(getter_AddRefs(uri));
     return SecurityHashURI(uri);
 }
 
+/* static */ bool
+nsScriptSecurityManager::AppAttributesEqual(nsIPrincipal* aFirst,
+                                            nsIPrincipal* aSecond)
+{
+    MOZ_ASSERT(aFirst && aSecond, "Don't pass null pointers!");
+
+    uint32_t firstAppId = nsIScriptSecurityManager::UNKNOWN_APP_ID;
+    if (!aFirst->GetUnknownAppId()) {
+        firstAppId = aFirst->GetAppId();
+    }
+
+    uint32_t secondAppId = nsIScriptSecurityManager::UNKNOWN_APP_ID;
+    if (!aSecond->GetUnknownAppId()) {
+        secondAppId = aSecond->GetAppId();
+    }
+
+    return ((firstAppId == secondAppId) &&
+            (aFirst->GetIsInBrowserElement() == aSecond->GetIsInBrowserElement()));
+}
+
 nsresult
 nsScriptSecurityManager::CheckSameOriginDOMProp(nsIPrincipal* aSubject,
                                                 nsIPrincipal* aObject,
                                                 uint32_t aAction)
 {
     nsresult rv;
     bool subsumes;
     rv = aSubject->Subsumes(aObject, &subsumes);
--- a/caps/tests/mochitest/Makefile.in
+++ b/caps/tests/mochitest/Makefile.in
@@ -11,16 +11,17 @@ relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MOCHITEST_FILES = 	test_bug423375.html \
                 test_bug246699.html \
                 test_bug292789.html \
                 test_bug470804.html \
                 test_disallowInheritPrincipal.html \
+                test_app_principal_equality.html \
                 $(NULL)
 
 # extendedOrigin test doesn't work on Windows, see bug 776296.
 ifneq ($(OS_ARCH),WINNT)
 MOCHITEST_CHROME_FILES = test_principal_extendedorigin_appid_appstatus.html \
                          $(NULL)
 endif
 
new file mode 100644
--- /dev/null
+++ b/caps/tests/mochitest/test_app_principal_equality.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=777467
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test app principal's equality</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=777467">Mozilla Bug 777467</a>
+<p id="display"></p>
+<script>
+  // Initialization.
+  SpecialPowers.addPermission("browser", true, document);
+  SpecialPowers.addPermission("embed-apps", true, document);
+
+  var previousPrefs = {
+    mozBrowserFramesEnabled: undefined,
+    oop_by_default: undefined,
+  };
+  try {
+    previousPrefs.mozBrowserFramesEnabled = SpecialPowers.getBoolPref('dom.mozBrowserFramesEnabled');
+  } catch(e) {}
+
+  try {
+    previousPrefs.oop_by_default = SpecialPowers.getBoolPref('dom.ipc.browser_frames.oop_by_default');
+  } catch(e) {}
+
+  SpecialPowers.setBoolPref('dom.mozBrowserFramesEnabled', true);
+  SpecialPowers.setBoolPref("dom.ipc.browser_frames.oop_by_default", false);
+</script>
+<div id="content" style="display: none;">
+  <iframe src="error404"></iframe>
+  <iframe mozbrowser src="error404"></iframe>
+  <iframe mozapp="http://example.org/manifest.webapp" mozbrowser src="error404"></iframe>
+</div>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for app principal's equality **/
+
+SimpleTest.waitForExplicitFinish();
+
+function canAccessDocument(win) {
+  var result = true;
+  try {
+    win.document;
+  } catch(e) {
+    result = false;
+  }
+  return result;
+}
+
+addLoadEvent(function() {
+  // Test the witness frame (we can access same-origin frame).
+  is(canAccessDocument(frames[0]), true,
+     "should be able to access the first frame");
+
+  // Test different app/browserElement frames.
+  for (var i=1; i<frames.length; ++i) {
+    is(canAccessDocument(frames[i]), false,
+       "should not be able to access the other frames");
+  }
+
+  // Cleanup.
+  if (previousPrefs.mozBrowserFramesEnabled !== undefined) {
+    SpecialPowers.setBoolPref('dom.mozBrowserFramesEnabled', previousPrefs.mozBrowserFramesEnabled);
+  }
+  if (previousPrefs.oop_by_default !== undefined) {
+    SpecialPowers.setBoolPref("dom.ipc.browser_frames.oop_by_default", previousPrefs.oop_by_default);
+  }
+
+  SpecialPowers.removePermission("browser", window.document);
+  SpecialPowers.removePermission("embed-apps", window.document);
+
+  SimpleTest.finish();
+});
+
+</script>
+</pre>
+</body>
+</html>
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -3005,16 +3005,19 @@ nsXMLHttpRequest::Send(nsIVariant* aVari
     // created a listener around 'this', do so now.
 
     listener = new nsStreamListenerWrapper(listener);
   }
 
   if (mIsAnon) {
     AddLoadFlags(mChannel, nsIRequest::LOAD_ANONYMOUS);
   }
+  else {
+    AddLoadFlags(mChannel, nsIChannel::LOAD_EXPLICIT_CREDENTIALS);
+  }
 
   NS_ASSERTION(listener != this,
                "Using an object as a listener that can't be exposed to JS");
 
   // Bypass the network cache in cases where it makes no sense:
   // 1) Multipart responses are very large and would likely be doomed by the
   //    cache once they grow too large, so they are not worth caching.
   // 2) POST responses are always unique, and we provide no API that would
--- a/content/base/test/file_XHR_anon.sjs
+++ b/content/base/test/file_XHR_anon.sjs
@@ -1,17 +1,18 @@
 function handleRequest(request, response) {
   let invalidHeaders = ["Cookie"];
   let headers = {};
 
   if (request.queryString == "expectAuth=true") {
     if (request.hasHeader("Authorization")) {
       headers["authorization"] = request.getHeader("Authorization");
     } else {
-      response.setStatusLine(null, 500, "Server Error");
+      response.setStatusLine(null, 401, "Authentication required");
+      response.setHeader("WWW-Authenticate", "basic realm=\"testrealm\"", true);
     }
   } else {
     invalidHeaders.push("Authorization");
   }
 
   for each (let header in invalidHeaders) {
     if (request.hasHeader(header)) {
       response.setStatusLine(null, 500, "Server Error");
--- a/content/base/test/test_XHR_anon.html
+++ b/content/base/test/test_XHR_anon.html
@@ -11,77 +11,168 @@
 <iframe id="loader"></iframe>
 </p>
 <div id="content" style="display: none">
   
 </div>
 <pre id="test">
 <script class="testbody" type="application/javascript;version=1.8">
 
+// An XHR with the anon flag set will not send cookie and auth information.
+const TEST_URL = "http://example.com/tests/content/base/test/file_XHR_anon.sjs";
+document.cookie = "foo=bar";
+
+let am = {
+  authMgr: null,
+
+  init: function() {
+    const {classes: Cc, interfaces: Ci} = SpecialPowers.wrap(Components);
+
+    this.authMgr = Cc["@mozilla.org/network/http-auth-manager;1"]
+                     .getService(Components.interfaces.nsIHttpAuthManager)
+  },
+
+  addIdentity: function() {
+    this.authMgr.setAuthIdentity("http", "example.com", -1, "basic", "testrealm",
+                                 "", "example.com", "user1", "password1");
+  },
+
+  tearDown: function() {
+    this.authMgr.clearAll();
+  },
+}
+
+var tests = [ test1, test2, test2a, test3, test3, test3, test4, test4, test4, test5, test5, test5 ];
 
 function runTests() {
-  let tearDown = (function setUp() {
-    SimpleTest.waitForExplicitFinish();
-
-    const {classes: Cc, interfaces: Ci} = SpecialPowers.wrap(SpecialPowers.Components);
-
-    let authMgr = Cc["@mozilla.org/network/http-auth-manager;1"]
-                    .getService(SpecialPowers.Ci.nsIHttpAuthManager)
-    authMgr.setAuthIdentity("http", "example.com", 80, "basic", "testrealm",
-                            "", "example.com", "user1", "password1");
-
-    SpecialPowers.addPermission("systemXHR", true, document);
-
-    return function tearDown() {
-      authMgr.clearAll();
-      SpecialPowers.removePermission("systemXHR", document);
-      SimpleTest.finish();
-    }
-  }());
-
-  // An XHR with the anon flag set will not send cookie and auth information.
-
-  const TEST_URL = "http://example.com/tests/content/base/test/file_XHR_anon.sjs";
-
-  document.cookie = "foo=bar";
-
-
-  function withoutCredentials() {
-    let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
-    is(xhr.mozAnon, true, "withoutCredentials: .mozAnon == true");
-    xhr.open("GET", TEST_URL);
-    xhr.onload = function onload() {
-      is(xhr.status, 200, "withoutCredentials: " + xhr.responseText);
-      withCredentials();
-    };
-    xhr.onerror = function onerror() {
-      ok(false, "Got an error event!");
-      tearDown();
-    }
-    xhr.send();
+  if (!tests.length) {
+    am.tearDown();
+    SpecialPowers.removePermission("systemXHR", document);
+    SimpleTest.finish();
+    return;
   }
 
-  function withCredentials() {
-    // TODO: this currently does not work as expected, see bug 761479
-    let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
-    is(xhr.mozAnon, true, "withCredentials: .mozAnon == true");
-    xhr.open("GET", TEST_URL + "?expectAuth=true", true,
-             "user2name", "pass2word");
-    xhr.onload = function onload() {
-      todo_is(xhr.status, 200, "withCredentials: " + xhr.responseText);
-      let response = JSON.parse(xhr.responseText);
-      todo_is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
-      tearDown();
-    };
-    xhr.onerror = function onerror() {
-      ok(false, "Got an error event!");
-      tearDown();
-    }
-    xhr.send();
+  var test = tests.shift();
+  test();
+}
+
+function test1() {
+  am.addIdentity();
+
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test1: .mozAnon == true");
+  xhr.open("GET", TEST_URL);
+  xhr.onload = function onload() {
+    is(xhr.status, 200, "test1: " + xhr.responseText);
+    am.tearDown();
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    am.tearDown();
+    runTests();
   }
+  xhr.send();
+}
 
-  withoutCredentials();
+function test2() {
+  am.addIdentity();
+
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test2: .mozAnon == true");
+  xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+           "user2name", "pass2word");
+  xhr.onload = function onload() {
+    is(xhr.status, 200, "test2: " + xhr.responseText);
+    let response = JSON.parse(xhr.responseText);
+    is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
+    am.tearDown();
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    am.tearDown();
+    runTests();
+  }
+  xhr.send();
 }
 
+function test2a() {
+  am.addIdentity();
+
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test2: .mozAnon == true");
+  xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+           "user1", "pass2word");
+  xhr.onload = function onload() {
+    is(xhr.status, 200, "test2: " + xhr.responseText);
+    let response = JSON.parse(xhr.responseText);
+    is(response.authorization, "Basic dXNlcjE6cGFzczJ3b3Jk");
+    am.tearDown();
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    am.tearDown();
+    runTests();
+  }
+  xhr.send();
+}
+
+function test3() {
+  am.addIdentity();
+
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test3: .mozAnon == true");
+  xhr.open("GET", TEST_URL + "?expectAuth=true", true);
+  xhr.onload = function onload() {
+    is(xhr.status, 401, "test3: " + xhr.responseText);
+    am.tearDown();
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    am.tearDown();
+    runTests();
+  }
+  xhr.send();
+}
+
+function test4() {
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test4: .mozAnon == true");
+  xhr.open("GET", TEST_URL + "?expectAuth=true", true);
+  xhr.onload = function onload() {
+    is(xhr.status, 401, "test4: " + xhr.responseText);
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    runTests();
+  }
+  xhr.send();
+}
+
+function test5() {
+  let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+  is(xhr.mozAnon, true, "test5: .mozAnon == true");
+  xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+           "user2name", "pass2word");
+  xhr.onload = function onload() {
+    is(xhr.status, 200, "test5: " + xhr.responseText);
+    let response = JSON.parse(xhr.responseText);
+    is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
+    runTests();
+  };
+  xhr.onerror = function onerror() {
+    ok(false, "Got an error event!");
+    runTests();
+  }
+  xhr.send();
+}
+
+am.init();
+SpecialPowers.addPermission("systemXHR", true, document);
+SimpleTest.waitForExplicitFinish();
 </script>
 </pre>
 </body>
 </html>
--- a/content/canvas/src/WebGLContext.h
+++ b/content/canvas/src/WebGLContext.h
@@ -617,17 +617,17 @@ public:
         // between threads.
         if (mContextLossTimerRunning) {
             mDrawSinceContextLossTimerSet = true;
             return;
         }
 
         mContextRestorer->InitWithFuncCallback(RobustnessTimerCallbackStatic,
                                                static_cast<void*>(this),
-                                               PR_MillisecondsToInterval(1000),
+                                               1000,
                                                nsITimer::TYPE_ONE_SHOT);
         mContextLossTimerRunning = true;
         mDrawSinceContextLossTimerSet = false;
     }
 
     void TerminateContextLossTimer() {
         if (mContextLossTimerRunning) {
             mContextRestorer->Cancel();
--- a/content/xbl/crashtests/crashtests.list
+++ b/content/xbl/crashtests/crashtests.list
@@ -30,8 +30,9 @@ load 463511-1.xhtml
 load 464863-1.xhtml
 load 472260-1.xhtml
 load 477878-1.html
 load 492978-1.xul
 asserts-if(Android,2) load 493123-1.xhtml
 load 495354-1.xhtml
 load 507628-1.xhtml
 load 507991-1.xhtml
+load set-field-bad-this.xhtml
new file mode 100644
--- /dev/null
+++ b/content/xbl/crashtests/set-field-bad-this.xhtml
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+  <title>Gracefully handle setting a field on a bad |this|</title>
+
+  <bindings xmlns="http://www.mozilla.org/xbl">
+    <binding id="a">
+      <implementation>
+        <field name="f">17</field>
+      </implementation>
+    </binding>
+  </bindings>
+
+  <script type="application/javascript">
+    window.onload = function()
+    {
+      var bound = document.getElementById("bound");
+      try
+      {
+        Object.getPrototypeOf(bound).f = 42;
+      }
+      catch (e) { /* Throwing's fine, crashing isn't. */ }
+    };
+  </script>
+</head>
+
+<body>
+  <div id="bound" style="-moz-binding: url(#a)"></div>
+</body>
+
+</html>
--- a/content/xbl/src/nsXBLBinding.cpp
+++ b/content/xbl/src/nsXBLBinding.cpp
@@ -257,19 +257,25 @@ FieldSetterImpl(JSContext *cx, JS::CallA
 
   bool installed = false;
   js::Rooted<JSObject*> callee(cx, &args.calleev().toObject());
   js::Rooted<jsid> id(cx);
   if (!InstallXBLField(cx, callee, thisObj, id.address(), &installed)) {
     return false;
   }
 
-  js::Rooted<JS::Value> v(cx,
-                          args.length() > 0 ? args[0] : JS::UndefinedValue());
-  return JS_SetPropertyById(cx, thisObj, id, v.address());
+  if (installed) {
+    js::Rooted<JS::Value> v(cx,
+                            args.length() > 0 ? args[0] : JS::UndefinedValue());
+    if (!::JS_SetPropertyById(cx, thisObj, id, v.address())) {
+      return false;
+    }
+  }
+  args.rval().setUndefined();
+  return true;
 }
 
 static JSBool
 FieldSetter(JSContext *cx, unsigned argc, JS::Value *vp)
 {
   JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
   return JS::CallNonGenericMethod<ValueHasISupportsPrivate, FieldSetterImpl>
                                  (cx, args);
--- a/dom/apps/src/PermissionsInstaller.jsm
+++ b/dom/apps/src/PermissionsInstaller.jsm
@@ -6,18 +6,20 @@
 
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/AppsUtils.jsm");
 Cu.import("resource://gre/modules/PermissionSettings.jsm");
 
-var EXPORTED_SYMBOLS = ["PermissionsInstaller"];
-
+var EXPORTED_SYMBOLS = ["PermissionsInstaller",
+                        "expandPermissions",
+                        "PermissionsTable",
+                       ];
 const UNKNOWN_ACTION = Ci.nsIPermissionManager.UNKNOWN_ACTION;
 const ALLOW_ACTION = Ci.nsIPermissionManager.ALLOW_ACTION;
 const DENY_ACTION = Ci.nsIPermissionManager.DENY_ACTION;
 const PROMPT_ACTION = Ci.nsIPermissionManager.PROMPT_ACTION;
 
 // Permission access flags
 const READONLY = "readonly";
 const CREATEONLY = "createonly";
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -820,18 +820,16 @@ protected:
   nsresult SetDocShellWidthAndHeight(int32_t width, int32_t height);
 
   static bool CanSetProperty(const char *aPrefName);
 
   static void MakeScriptDialogTitle(nsAString &aOutTitle);
 
   bool CanMoveResizeWindows();
 
-  bool     GetBlurSuppression();
-
   // If aDoFlush is true, we'll flush our own layout; otherwise we'll try to
   // just flush our parent and only flush ourselves if we think we need to.
   nsresult GetScrollXY(int32_t* aScrollX, int32_t* aScrollY,
                        bool aDoFlush);
   nsresult GetScrollMaxXY(int32_t* aScrollMaxX, int32_t* aScrollMaxY);
 
   nsresult GetOuterSize(nsIntSize* aSizeCSSPixels);
   nsresult SetOuterSize(int32_t aLengthCSSPixels, bool aIsWidth);
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -83,16 +83,24 @@ DefinePrefable(JSContext* cx, JSObject* 
       if (!Define(cx, obj, props->specs)) {
         return false;
       }
     }
   } while ((++props)->specs);
   return true;
 }
 
+bool
+DefineUnforgeableAttributes(JSContext* cx, JSObject* obj,
+                            Prefable<JSPropertySpec>* props)
+{
+  return DefinePrefable(cx, obj, props);
+}
+
+
 // We should use JSFunction objects for interface objects, but we need a custom
 // hasInstance hook because we have new interface objects on prototype chains of
 // old (XPConnect-based) bindings. Because Function.prototype.toString throws if
 // passed a non-Function object we also need to provide our own toString method
 // for interface objects.
 
 enum {
   TOSTRING_CLASS_RESERVED_SLOT = 0,
@@ -494,59 +502,68 @@ XrayResolveProperty(JSContext* cx, JSObj
             desc->getter = nullptr;
            return true;
           }
         }
       }
     }
   }
 
-  if (nativeProperties->attributes) {
-    Prefable<JSPropertySpec>* attr;
-    for (attr = nativeProperties->attributes; attr->specs; ++attr) {
-      if (attr->enabled) {
-        // Set i to be the index into our full list of ids/specs that we're
-        // looking at now.
-        size_t i = attr->specs - nativeProperties->attributeSpecs;
-        for ( ; nativeProperties->attributeIds[i] != JSID_VOID; ++i) {
-          if (id == nativeProperties->attributeIds[i]) {
-            JSPropertySpec& attrSpec = nativeProperties->attributeSpecs[i];
-            // Because of centralization, we need to make sure we fault in the
-            // JitInfos as well. At present, until the JSAPI changes, the easiest
-            // way to do this is wrap them up as functions ourselves.
-            desc->attrs = attrSpec.flags & ~JSPROP_NATIVE_ACCESSORS;
-            // They all have getters, so we can just make it.
-            JSObject *global = JS_GetGlobalForObject(cx, wrapper);
-            JSFunction *fun = JS_NewFunction(cx, (JSNative)attrSpec.getter.op,
-                                             0, 0, global, nullptr);
-            if (!fun)
-              return false;
-            SET_JITINFO(fun, attrSpec.getter.info);
-            JSObject *funobj = JS_GetFunctionObject(fun);
-            desc->getter = js::CastAsJSPropertyOp(funobj);
-            desc->attrs |= JSPROP_GETTER;
-            if (attrSpec.setter.op) {
-              // We have a setter! Make it.
-              fun = JS_NewFunction(cx, (JSNative)attrSpec.setter.op, 1, 0,
-                                   global, nullptr);
+  JSPropertySpec* attributeSpecs = nativeProperties->attributeSpecs;
+  Prefable<JSPropertySpec>* attr = nativeProperties->attributes;
+  jsid* attributeIds = nativeProperties->attributeIds;
+  // Do the attribute stuff for attributes, then for unforgeable attributes
+  for (int attrIteration = 0; attrIteration < 2; ++attrIteration) {
+    if (attr) {
+      for (; attr->specs; ++attr) {
+        if (attr->enabled) {
+          // Set i to be the index into our full list of ids/specs that we're
+          // looking at now.
+          size_t i = attr->specs - attributeSpecs;
+          for ( ; attributeIds[i] != JSID_VOID; ++i) {
+            if (id == attributeIds[i]) {
+              JSPropertySpec& attrSpec = attributeSpecs[i];
+              // Because of centralization, we need to make sure we fault in the
+              // JitInfos as well. At present, until the JSAPI changes, the easiest
+              // way to do this is wrap them up as functions ourselves.
+              desc->attrs = attrSpec.flags & ~JSPROP_NATIVE_ACCESSORS;
+              // They all have getters, so we can just make it.
+              JSObject *global = JS_GetGlobalForObject(cx, wrapper);
+              JSFunction *fun = JS_NewFunction(cx, (JSNative)attrSpec.getter.op,
+                                               0, 0, global, nullptr);
               if (!fun)
                 return false;
-              SET_JITINFO(fun, attrSpec.setter.info);
-              funobj = JS_GetFunctionObject(fun);
-              desc->setter = js::CastAsJSStrictPropertyOp(funobj);
-              desc->attrs |= JSPROP_SETTER;
-            } else {
-              desc->setter = nullptr;
+              SET_JITINFO(fun, attrSpec.getter.info);
+              JSObject *funobj = JS_GetFunctionObject(fun);
+              desc->getter = js::CastAsJSPropertyOp(funobj);
+              desc->attrs |= JSPROP_GETTER;
+              if (attrSpec.setter.op) {
+                // We have a setter! Make it.
+                fun = JS_NewFunction(cx, (JSNative)attrSpec.setter.op, 1, 0,
+                                     global, nullptr);
+                if (!fun)
+                  return false;
+                SET_JITINFO(fun, attrSpec.setter.info);
+                funobj = JS_GetFunctionObject(fun);
+                desc->setter = js::CastAsJSStrictPropertyOp(funobj);
+                desc->attrs |= JSPROP_SETTER;
+              } else {
+                desc->setter = nullptr;
+              }
+              desc->obj = wrapper;
+              return true;
             }
-            desc->obj = wrapper;
-            return true;
           }
         }
       }
     }
+
+    attributeSpecs = nativeProperties->unforgeableAttributeSpecs;
+    attr = nativeProperties->unforgeableAttributes;
+    attributeIds = nativeProperties->unforgeableAttributeIds;
   }
 
   if (nativeProperties->constants) {
     Prefable<ConstantSpec>* constant;
     for (constant = nativeProperties->constants; constant->specs; ++constant) {
       if (constant->enabled) {
         // Set i to be the index into our full list of ids/specs that we're
         // looking at now.
@@ -603,31 +620,40 @@ XrayEnumerateProperties(JS::AutoIdVector
               !props.append(nativeProperties->methodIds[i])) {
             return false;
           }
         }
       }
     }
   }
 
-  if (nativeProperties->attributes) {
-    Prefable<JSPropertySpec>* attr;
-    for (attr = nativeProperties->attributes; attr->specs; ++attr) {
-      if (attr->enabled) {
-        // Set i to be the index into our full list of ids/specs that we're
-        // looking at now.
-        size_t i = attr->specs - nativeProperties->attributeSpecs;
-        for ( ; nativeProperties->attributeIds[i] != JSID_VOID; ++i) {
-          if ((nativeProperties->attributeSpecs[i].flags & JSPROP_ENUMERATE) &&
-              !props.append(nativeProperties->attributeIds[i])) {
-            return false;
+  JSPropertySpec* attributeSpecs = nativeProperties->attributeSpecs;
+  Prefable<JSPropertySpec>* attr = nativeProperties->attributes;
+  jsid* attributeIds = nativeProperties->attributeIds;
+  // Do the attribute stuff for attributes, then for unforgeable attributes
+  for (int attrIteration = 0; attrIteration < 2; ++attrIteration) {
+    if (attr) {
+      for (; attr->specs; ++attr) {
+        if (attr->enabled) {
+          // Set i to be the index into our full list of ids/specs that we're
+          // looking at now.
+          size_t i = attr->specs - attributeSpecs;
+          for ( ; attributeIds[i] != JSID_VOID; ++i) {
+            if ((attributeSpecs[i].flags & JSPROP_ENUMERATE) &&
+                !props.append(attributeIds[i])) {
+              return false;
+            }
           }
         }
       }
     }
+
+    attributeSpecs = nativeProperties->unforgeableAttributeSpecs;
+    attr = nativeProperties->unforgeableAttributes;
+    attributeIds = nativeProperties->unforgeableAttributeIds;
   }
 
   if (nativeProperties->constants) {
     Prefable<ConstantSpec>* constant;
     for (constant = nativeProperties->constants; constant->specs; ++constant) {
       if (constant->enabled) {
         // Set i to be the index into our full list of ids/specs that we're
         // looking at now.
--- a/dom/bindings/BindingUtils.h
+++ b/dom/bindings/BindingUtils.h
@@ -345,16 +345,19 @@ struct NativeProperties
   jsid* staticMethodIds;
   JSFunctionSpec* staticMethodsSpecs;
   Prefable<JSFunctionSpec>* methods;
   jsid* methodIds;
   JSFunctionSpec* methodsSpecs;
   Prefable<JSPropertySpec>* attributes;
   jsid* attributeIds;
   JSPropertySpec* attributeSpecs;
+  Prefable<JSPropertySpec>* unforgeableAttributes;
+  jsid* unforgeableAttributeIds;
+  JSPropertySpec* unforgeableAttributeSpecs;
   Prefable<ConstantSpec>* constants;
   jsid* constantIds;
   ConstantSpec* constantSpecs;
 };
 
 /*
  * Create a DOM interface object (if constructorClass is non-null) and/or a
  * DOM interface prototype object (if protoClass is non-null).
@@ -397,16 +400,23 @@ JSObject*
 CreateInterfaceObjects(JSContext* cx, JSObject* global, JSObject* receiver,
                        JSObject* protoProto, JSClass* protoClass,
                        JSClass* constructorClass, JSNative constructor,
                        unsigned ctorNargs, const DOMClass* domClass,
                        const NativeProperties* properties,
                        const NativeProperties* chromeProperties,
                        const char* name);
 
+/*
+ * Define the unforgeable attributes on an object.
+ */
+bool
+DefineUnforgeableAttributes(JSContext* cx, JSObject* obj,
+                            Prefable<JSPropertySpec>* props);
+
 inline bool
 MaybeWrapValue(JSContext* cx, JSObject* obj, JS::Value* vp)
 {
   if (vp->isObject() &&
       js::GetObjectCompartment(&vp->toObject()) != js::GetObjectCompartment(obj)) {
     return JS_WrapValue(cx, vp);
   }
 
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -571,16 +571,22 @@ DOMInterfaces = {
         },
 
 'TestIndexedAndNamedGetterAndSetterInterface' : {
         'headerFile': 'TestBindingHeader.h',
         'register': False,
         'binaryNames': { '__stringifier': 'Stringify' }
         },
 
+'TestRenamedInterface' : {
+        'headerFile': 'TestBindingHeader.h',
+        'register': False,
+        'nativeType': 'nsRenamedInterface'
+        },
+
 'TestExampleInterface' : {
         # Keep this in sync with TestInterface
         'headerFile': 'TestExampleInterface-example.h',
         'register': False,
         'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf',
                                'receiveWeakOther', 'receiveWeakNullableOther',
                                'receiveWeakExternal', 'receiveWeakNullableExternal',
                                'ReceiveWeakCallbackInterface',
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -131,17 +131,17 @@ DOMJSClass Class = {
     %s, /* finalize */
     NULL,                  /* checkAccess */
     NULL,                  /* call */
     NULL,                  /* hasInstance */
     NULL,                  /* construct */
     %s, /* trace */
     JSCLASS_NO_INTERNAL_MEMBERS
   },
-  %s
+%s
 };
 """ % (self.descriptor.interface.identifier.name,
        ADDPROPERTY_HOOK_NAME if self.descriptor.concrete and not self.descriptor.workers and self.descriptor.wrapperCache else 'JS_PropertyStub',
        FINALIZE_HOOK_NAME, traceHook,
        CGIndenter(CGGeneric(DOMClass(self.descriptor))).define())
 
 class CGPrototypeJSClass(CGThing):
     def __init__(self, descriptor):
@@ -887,16 +887,17 @@ class PropertyDefiner:
         else:
             if self.hasNonChromeOnly():
                 return "s" + self.name
         return "nullptr"
     def usedForXrays(self):
         # We only need Xrays for methods, attributes and constants, but in
         # workers there are no Xrays.
         return (self.name is "Methods" or self.name is "Attributes" or
+                self.name is "UnforgeableAttributes" or
                 self.name is "Constants") and not self.descriptor.workers
 
     def __str__(self):
         # We only need to generate id arrays for things that will end
         # up used via ResolveProperty or EnumerateProperties.
         str = self.generateArray(self.regular, self.variableName(False),
                                  self.usedForXrays())
         if self.hasChromeOnly():
@@ -1079,29 +1080,40 @@ class MethodDefiner(PropertyDefiner):
         return self.generatePrefableArray(
             array, name,
             '  JS_FNINFO("%s", %s, %s, %s, %s)',
             '  JS_FS_END',
             'JSFunctionSpec',
             pref, specData, doIdArrays)
 
 class AttrDefiner(PropertyDefiner):
-    def __init__(self, descriptor, name):
+    def __init__(self, descriptor, name, unforgeable):
         PropertyDefiner.__init__(self, descriptor, name)
         self.name = name
-        attributes = [m for m in descriptor.interface.members if m.isAttr()]
+        attributes = [m for m in descriptor.interface.members
+                      if m.isAttr() and m.isUnforgeable() == unforgeable]
         self.chrome = [m for m in attributes if isChromeOnly(m)]
         self.regular = [m for m in attributes if not isChromeOnly(m)]
+        self.unforgeable = unforgeable
+
+        if unforgeable and len(attributes) != 0 and descriptor.proxy:
+            raise TypeError("Unforgeable properties are not supported on "
+                            "proxy bindings without [NamedPropertiesObject].  "
+                            "And not even supported on the ones with "
+                            "[NamedPropertiesObject] yet, but we should fix "
+                            "that, since they're safe there.")
 
     def generateArray(self, array, name, doIdArrays):
         if len(array) == 0:
             return ""
 
         def flags(attr):
-            return "JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_NATIVE_ACCESSORS"
+            unforgeable = " | JSPROP_PERMANENT" if self.unforgeable else ""
+            return ("JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_NATIVE_ACCESSORS" +
+                    unforgeable)
 
         def getter(attr):
             native = ("genericLenientGetter" if attr.hasLenientThis()
                       else "genericGetter")
             return ("{(JSPropertyOp)%(native)s, &%(name)s_getterinfo}"
                     % {"name" : attr.identifier.name,
                        "native" : native})
 
@@ -1150,26 +1162,29 @@ class ConstDefiner(PropertyDefiner):
             '  { 0, JSVAL_VOID }',
             'ConstantSpec',
             PropertyDefiner.getControllingPref, specData, doIdArrays)
 
 class PropertyArrays():
     def __init__(self, descriptor):
         self.staticMethods = MethodDefiner(descriptor, "StaticMethods", True)
         self.methods = MethodDefiner(descriptor, "Methods", False)
-        self.attrs = AttrDefiner(descriptor, "Attributes")
+        self.attrs = AttrDefiner(descriptor, "Attributes", unforgeable=False)
+        self.unforgeableAttrs = AttrDefiner(descriptor, "UnforgeableAttributes",
+                                            unforgeable=True)
         self.consts = ConstDefiner(descriptor, "Constants")
 
     @staticmethod
     def arrayNames():
-        return [ "staticMethods", "methods", "attrs", "consts" ]
+        return [ "staticMethods", "methods", "attrs", "unforgeableAttrs",
+                 "consts" ]
 
     @staticmethod
     def xrayRelevantArrayNames():
-        return [ "methods", "attrs", "consts" ]
+        return [ "methods", "attrs", "unforgeableAttrs", "consts" ]
 
     def hasChromeOnly(self):
         return any(getattr(self, a).hasChromeOnly() for a in self.arrayNames())
     def hasNonChromeOnly(self):
         return any(getattr(self, a).hasNonChromeOnly() for a in self.arrayNames())
     def __str__(self):
         define = ""
         for array in self.arrayNames():
@@ -1306,20 +1321,17 @@ class CGCreateInterfaceObjectsMethod(CGA
         else:
             domClass = "nullptr"
 
         if self.properties.hasNonChromeOnly():
             properties = "&sNativeProperties"
         else:
             properties = "nullptr"
         if self.properties.hasChromeOnly():
-            if self.descriptor.workers:
-                accessCheck = "mozilla::dom::workers::GetWorkerPrivateFromContext(aCx)->IsChromeWorker()"
-            else:
-                accessCheck = "xpc::AccessCheck::isChrome(aGlobal)"
+            accessCheck = GetAccessCheck(self.descriptor, "aGlobal")
             chromeProperties = accessCheck + " ? &sChromeOnlyNativeProperties : nullptr"
         else:
             chromeProperties = "nullptr"
         call = """return dom::CreateInterfaceObjects(aCx, aGlobal, aReceiver, parentProto,
                                    %s, %s, %s, %d,
                                    %s,
                                    %s,
                                    %s,
@@ -1509,24 +1521,69 @@ def CreateBindingJSObject(descriptor, pa
     else:
         assert descriptor.nativeOwnership == 'owned'
         create += """  // Make sure the native objects inherit from NonRefcountedDOMObject so that we
   // log their ctor and dtor.
   MustInheritFromNonRefcountedDOMObject(aObject);
 """
     return create % parent
 
+def GetAccessCheck(descriptor, globalName):
+    """
+    globalName is the name of the global JSObject*
+
+    returns a string
+    """
+    if descriptor.workers:
+        accessCheck = "mozilla::dom::workers::GetWorkerPrivateFromContext(aCx)->IsChromeWorker()"
+    else:
+        accessCheck = "xpc::AccessCheck::isChrome(%s)" % globalName
+    return accessCheck
+
+def InitUnforgeableProperties(descriptor, properties):
+    """
+    properties is a PropertyArrays instance
+    """
+    defineUnforgeables = ("if (!DefineUnforgeableAttributes(aCx, obj, %s)) {\n"
+                          "  return nullptr;\n"
+                          "}")
+    unforgeableAttrs = properties.unforgeableAttrs
+    unforgeables = []
+    if unforgeableAttrs.hasNonChromeOnly():
+        unforgeables.append(CGGeneric(defineUnforgeables %
+                                      unforgeableAttrs.variableName(False)))
+    if unforgeableAttrs.hasChromeOnly():
+        unforgeables.append(
+            CGIfWrapper(CGGeneric(defineUnforgeables %
+                                  unforgeableAttrs.variableName(True)),
+                        GetAccessCheck(descriptor, "global")))
+
+    return CGIndenter(CGWrapper(
+            CGList(unforgeables, "\n"),
+            pre=("\n"
+            "// Important: do unforgeable property setup after we have handed\n"
+            "// over ownership of the C++ object to obj as needed, so that if\n"
+            "// we fail and it ends up GCed it won't have problems in the\n"
+            "// finalizer trying to drop its ownership of the C++ object.\n"),
+            post="\n")).define() if len(unforgeables) > 0 else ""
+
 class CGWrapWithCacheMethod(CGAbstractMethod):
-    def __init__(self, descriptor):
+    """
+    Create a wrapper JSObject for a given native that implements nsWrapperCache.
+
+    properties should be a PropertyArrays instance.
+    """
+    def __init__(self, descriptor, properties):
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'), Argument('JSObject*', 'aScope'),
                 Argument(descriptor.nativeType + '*', 'aObject'),
                 Argument('nsWrapperCache*', 'aCache'),
                 Argument('bool*', 'aTriedToWrap')]
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args)
+        self.properties = properties
 
     def definition_body(self):
         if self.descriptor.workers:
             return """  *aTriedToWrap = true;
   return aObject->GetJSObject();"""
 
         return """  *aTriedToWrap = true;
 
@@ -1539,52 +1596,61 @@ class CGWrapWithCacheMethod(CGAbstractMe
   JSObject* global = JS_GetGlobalForObject(aCx, parent);
 %s
   JSObject* proto = GetProtoObject(aCx, global, global);
   if (!proto) {
     return NULL;
   }
 
 %s
-
+%s
   aCache->SetWrapper(obj);
 
   return obj;""" % (CheckPref(self.descriptor, "global", "*aTriedToWrap", "NULL", "aCache"),
-                    CreateBindingJSObject(self.descriptor, "parent"))
+                    CreateBindingJSObject(self.descriptor, "parent"),
+                    InitUnforgeableProperties(self.descriptor, self.properties))
 
 class CGWrapMethod(CGAbstractMethod):
     def __init__(self, descriptor):
         # XXX can we wrap if we don't have an interface prototype object?
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'), Argument('JSObject*', 'aScope'),
                 Argument('T*', 'aObject'), Argument('bool*', 'aTriedToWrap')]
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args, inline=True, templateArgs=["class T"])
 
     def definition_body(self):
         return "  return Wrap(aCx, aScope, aObject, aObject, aTriedToWrap);"
 
 class CGWrapNonWrapperCacheMethod(CGAbstractMethod):
-    def __init__(self, descriptor):
+    """
+    Create a wrapper JSObject for a given native that does not implement
+    nsWrapperCache.
+
+    properties should be a PropertyArrays instance.
+    """
+    def __init__(self, descriptor, properties):
         # XXX can we wrap if we don't have an interface prototype object?
         assert descriptor.interface.hasInterfacePrototypeObject()
         args = [Argument('JSContext*', 'aCx'), Argument('JSObject*', 'aScope'),
                 Argument(descriptor.nativeType + '*', 'aObject')]
         CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args)
+        self.properties = properties
 
     def definition_body(self):
         return """
   JSObject* global = JS_GetGlobalForObject(aCx, aScope);
   JSObject* proto = GetProtoObject(aCx, global, global);
   if (!proto) {
     return NULL;
   }
 
 %s
-
-  return obj;""" % CreateBindingJSObject(self.descriptor, "global")
+%s
+  return obj;""" % (CreateBindingJSObject(self.descriptor, "global"),
+                    InitUnforgeableProperties(self.descriptor, self.properties))
 
 builtinNames = {
     IDLType.Tags.bool: 'bool',
     IDLType.Tags.int8: 'int8_t',
     IDLType.Tags.int16: 'int16_t',
     IDLType.Tags.int32: 'int32_t',
     IDLType.Tags.int64: 'int64_t',
     IDLType.Tags.uint8: 'uint8_t',
@@ -5326,20 +5392,21 @@ class CGDescriptor(CGThing):
                 cgThings.append(CGProxyUnwrap(descriptor))
                 cgThings.append(CGDOMJSProxyHandlerDOMClass(descriptor))
                 cgThings.append(CGDOMJSProxyHandler(descriptor))
                 cgThings.append(CGIsMethod(descriptor))
             else:
                 cgThings.append(CGDOMJSClass(descriptor))
 
             if descriptor.wrapperCache:
-                cgThings.append(CGWrapWithCacheMethod(descriptor))
+                cgThings.append(CGWrapWithCacheMethod(descriptor, properties))
                 cgThings.append(CGWrapMethod(descriptor))
             else:
-                cgThings.append(CGWrapNonWrapperCacheMethod(descriptor))
+                cgThings.append(CGWrapNonWrapperCacheMethod(descriptor,
+                                                            properties))
 
         cgThings = CGList((CGIndenter(t, declareOnly=True) for t in cgThings), "\n")
         cgThings = CGWrapper(cgThings, pre='\n', post='\n')
         self.cgRoot = CGWrapper(CGNamespace(toBindingNamespace(descriptor.name),
                                             cgThings),
                                 post='\n')
 
     def declare(self):
@@ -6058,17 +6125,19 @@ class CGExampleMember(CGThing):
             else:
                 if optional or isMember:
                     if forceOwningType:
                         typeDecl = "OwningNonNull<%s>"
                     else:
                         typeDecl = "NonNull<%s>"
                 else:
                     typeDecl = "%s&"
-            return (typeDecl % iface.identifier.name), False, False
+            return ((typeDecl %
+                     self.descriptor.getDescriptor(iface.identifier.name).nativeType),
+                    False, False)
 
         if type.isSpiderMonkeyInterface():
             assert not isMember
             if type.nullable():
                 typeDecl = "%s*"
             else:
                 typeDecl = "%s"
                 if not optional:
--- a/dom/bindings/parser/WebIDL.py
+++ b/dom/bindings/parser/WebIDL.py
@@ -512,16 +512,32 @@ class IDLInterface(IDLObjectWithScope):
                                       [self.location, self.parent.location])
             elif self.parent.isCallback():
                 raise WebIDLError("Non-callback interface %s inheriting from "
                                   "callback interface %s" %
                                   (self.identifier.name,
                                    self.parent.identifier.name),
                                   [self.location, self.parent.location])
 
+            # Now make sure our parent doesn't have any [Unforgeable]
+            # attributes.  We don't need to check its ancestors, because it has
+            # already checked those.  We don't need to check its consequential
+            # interfaces, because it has already imported those into its
+            # .members.
+            unforgeableParentMembers = [
+                attr for attr in parent.members
+                if attr.isAttr() and attr.isUnforgeable() ]
+            if len(unforgeableParentMembers) != 0:
+                locs = [self.location, parent.location]
+                locs.extend(attr.location for attr in unforgeableParentMembers)
+                raise WebIDLError("Interface %s inherits from %s, which has "
+                                  "[Unforgeable] members" %
+                                  (self.identifier.name, parent.identifier.name),
+                                  locs)
+
         for iface in self.implementedInterfaces:
             iface.finish(scope)
 
         cycleInGraph = self.findInterfaceLoopPoint(self)
         if cycleInGraph:
             raise WebIDLError("Interface %s has itself as ancestor or "
                               "implemented interface" % self.identifier.name,
                               [self.location, cycleInGraph.location])
@@ -1941,16 +1957,17 @@ class IDLAttribute(IDLInterfaceMember):
                                     IDLInterfaceMember.Tags.Attr)
 
         assert isinstance(type, IDLType)
         self.type = type
         self.readonly = readonly
         self.inherit = inherit
         self.static = static
         self.lenientThis = False
+        self._unforgeable = False
 
         if readonly and inherit:
             raise WebIDLError("An attribute cannot be both 'readonly' and 'inherit'",
                               [self.location])
 
     def isStatic(self):
         return self.static
 
@@ -2002,30 +2019,38 @@ class IDLAttribute(IDLInterfaceMember):
         elif identifier == "LenientThis":
             if not attr.noArguments():
                 raise WebIDLError("[LenientThis] must take no arguments",
                                   [attr.location])
             if self.isStatic():
                 raise WebIDLError("[LenientThis] is only allowed on non-static "
                                   "attributes", [attr.location, self.location])
             self.lenientThis = True
+        elif identifier == "Unforgeable":
+            if not self.readonly:
+                raise WebIDLError("[Unforgeable] is only allowed on readonly "
+                                  "attributes", [attr.location, self.location])
+            self._unforgeable = True
         IDLInterfaceMember.handleExtendedAttribute(self, attr)
 
     def resolve(self, parentScope):
         assert isinstance(parentScope, IDLScope)
         self.type.resolveType(parentScope)
         IDLObjectWithIdentifier.resolve(self, parentScope)
 
     def addExtendedAttributes(self, attrs):
         attrs = self.checkForStringHandlingExtendedAttributes(attrs)
         IDLInterfaceMember.addExtendedAttributes(self, attrs)
 
     def hasLenientThis(self):
         return self.lenientThis
 
+    def isUnforgeable(self):
+        return self._unforgeable
+
 class IDLArgument(IDLObjectWithIdentifier):
     def __init__(self, location, identifier, type, optional=False, defaultValue=None, variadic=False, dictionaryMember=False):
         IDLObjectWithIdentifier.__init__(self, location, None, identifier)
 
         assert isinstance(type, IDLType)
         self.type = type
 
         self.optional = optional
@@ -2464,20 +2489,24 @@ class IDLMethod(IDLInterfaceMember, IDLS
                           locations)
 
     def handleExtendedAttribute(self, attr):
         identifier = attr.identifier()
         if identifier == "GetterInfallible":
             raise WebIDLError("Methods must not be flagged as "
                               "[GetterInfallible]",
                               [attr.location, self.location])
-        if identifier == "SetterInfallible":
+        elif identifier == "SetterInfallible":
             raise WebIDLError("Methods must not be flagged as "
                               "[SetterInfallible]",
                               [attr.location, self.location])
+        elif identifier == "Unforgeable":
+            raise WebIDLError("Methods must not be flagged as "
+                              "[Unforgeable]",
+                              [attr.location, self.location])
         IDLInterfaceMember.handleExtendedAttribute(self, attr)
 
 class IDLImplementsStatement(IDLObject):
     def __init__(self, location, implementor, implementee):
         IDLObject.__init__(self, location)
         self.implementor = implementor;
         self.implementee = implementee
 
new file mode 100644
--- /dev/null
+++ b/dom/bindings/parser/tests/test_unforgeable.py
@@ -0,0 +1,50 @@
+def WebIDLTest(parser, harness):
+    threw = False
+    try:
+        parser.parse("""
+            interface Child : Parent {
+            };
+            interface Parent {
+              [Unforgeable] readonly attribute long foo;
+            };
+        """)
+
+        results = parser.finish()
+    except:
+        threw = True
+
+    harness.ok(threw, "Should have thrown.")
+
+    parser = parser.reset();
+    threw = False
+    try:
+        parser.parse("""
+            interface Child : Parent {
+            };
+            interface Parent {};
+            interface Consequential {
+              [Unforgeable] readonly attribute long foo;
+            };
+            Parent implements Consequential;
+        """)
+
+        results = parser.finish()
+    except:
+        threw = True
+
+    harness.ok(threw, "Should have thrown.")
+
+    parser = parser.reset();
+    threw = False
+    try:
+        parser.parse("""
+            interface iface {
+              [Unforgeable] attribute long foo;
+            };
+        """)
+
+        results = parser.finish()
+    except:
+        threw = True
+
+    harness.ok(threw, "Should have thrown.")
--- a/dom/bindings/test/TestBindingHeader.h
+++ b/dom/bindings/test/TestBindingHeader.h
@@ -30,16 +30,32 @@ class TestNonCastableInterface : public 
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEST_NONCASTABLE_INTERFACE_IID)
   NS_DECL_ISUPPORTS
 
   // We need a GetParentObject to make binding codegen happy
   virtual nsISupports* GetParentObject();
 };
 
+// IID for nsRenamedInterface
+#define NS_RENAMED_INTERFACE_IID \
+{ 0xd4b19ef3, 0xe68b, 0x4e3f, \
+ { 0x94, 0xbc, 0xc9, 0xde, 0x3a, 0x69, 0xb0, 0xe8 } }
+
+class nsRenamedInterface : public nsISupports,
+                           public nsWrapperCache
+{
+public:
+  NS_DECLARE_STATIC_IID_ACCESSOR(NS_RENAMED_INTERFACE_IID)
+  NS_DECL_ISUPPORTS
+
+  // We need a GetParentObject to make binding codegen happy
+  virtual nsISupports* GetParentObject();
+};
+
 // IID for the IndirectlyImplementedInterface
 #define NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID \
 { 0xfed55b69, 0x7012, 0x4849, \
  { 0xaf, 0x56, 0x4b, 0xa9, 0xee, 0x41, 0x30, 0x89 } }
 
 class IndirectlyImplementedInterface : public nsISupports,
                                        public nsWrapperCache
 {
@@ -410,16 +426,19 @@ public:
   // Typedefs
   void ExerciseTypedefInterfaces1(TestInterface&);
   already_AddRefed<TestInterface> ExerciseTypedefInterfaces2(TestInterface*);
   void ExerciseTypedefInterfaces3(TestInterface&);
 
   // Miscellania
   int32_t AttrWithLenientThis();
   void SetAttrWithLenientThis(int32_t);
+  uint32_t UnforgeableAttr();
+  uint32_t UnforgeableAttr2();
+  void PassRenamedInterface(nsRenamedInterface&);
 
   // Methods and properties imported via "implements"
   bool ImplementedProperty();
   void SetImplementedProperty(bool);
   void ImplementedMethod();
   bool ImplementedParentProperty();
   void SetImplementedParentProperty(bool);
   void ImplementedParentMethod();
--- a/dom/bindings/test/TestCodeGen.webidl
+++ b/dom/bindings/test/TestCodeGen.webidl
@@ -8,16 +8,19 @@ typedef long myLong;
 typedef TestInterface AnotherNameForTestInterface;
 typedef TestInterface? NullableTestInterface;
 
 interface TestExternalInterface;
 
 interface TestNonCastableInterface {
 };
 
+interface TestRenamedInterface {
+};
+
 callback interface TestCallbackInterface {
   readonly attribute long foo;
   void doSomething();
 };
 
 enum TestEnum {
   "a",
   "b"
@@ -328,16 +331,19 @@ interface TestInterface {
   // Typedefs
   const myLong myLongConstant = 5;
   void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
   AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
   void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
 
   // Miscellania
   [LenientThis] attribute long attrWithLenientThis;
+  [Unforgeable] readonly attribute long unforgeableAttr;
+  [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
+  void passRenamedInterface(TestRenamedInterface arg);
 
   // If you add things here, add them to TestExampleGen as well
 };
 
 interface TestNonWrapperCacheInterface {
 };
 
 interface ImplementedInterfaceParent {
--- a/dom/bindings/test/TestExampleGen.webidl
+++ b/dom/bindings/test/TestExampleGen.webidl
@@ -298,11 +298,14 @@ interface TestExampleInterface {
   // Typedefs
   const myLong myLongConstant = 5;
   void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
   AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
   void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
 
   // Miscellania
   [LenientThis] attribute long attrWithLenientThis;
+  [Unforgeable] readonly attribute long unforgeableAttr;
+  [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
+  void passRenamedInterface(TestRenamedInterface arg);
 
   // If you add things here, add them to TestCodeGen as well
 };
--- a/dom/contacts/fallback/ContactService.jsm
+++ b/dom/contacts/fallback/ContactService.jsm
@@ -17,19 +17,28 @@ Cu.import("resource://gre/modules/XPCOMU
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/ContactDB.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
                                    "@mozilla.org/parentprocessmessagemanager;1",
                                    "nsIMessageListenerManager");
 
 XPCOMUtils.defineLazyGetter(this, "mRIL", function () {
-  return Cc["@mozilla.org/telephony/system-worker-manager;1"].
-           getService(Ci.nsIInterfaceRequestor).
-           getInterface(Ci.nsIRadioInterfaceLayer);
+  let telephony = Cc["@mozilla.org/telephony/system-worker-manager;1"];
+  if (!telephony) {
+    // Return a mock RIL because B2G Desktop build does not support telephony.
+    return {
+      getICCContacts: function(aContactType, aCallback) {
+        aCallback("!telephony", null, null);
+      }
+    };
+  }
+  return telephony.
+         getService(Ci.nsIInterfaceRequestor).
+         getInterface(Ci.nsIRadioInterfaceLayer);
 });
 
 let myGlobal = this;
 
 let DOMContactManager = {
   init: function() {
     if (DEBUG) debug("Init");
     this._messages = ["Contacts:Find", "Contacts:Clear", "Contact:Save", "Contact:Remove", "Contacts:GetSimContacts"];
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -1930,18 +1930,16 @@ nsDOMDeviceStorage::Stat(nsIDOMDOMReques
 }
 
 NS_IMETHODIMP
 nsDOMDeviceStorage::GetRootDirectory(nsIFile** aRootDirectory)
 {
   if (!mRootDirectory) {
     return NS_ERROR_FAILURE;
   }
-
-  nsCOMPtr<nsIFile> file;
   return mRootDirectory->Clone(aRootDirectory);
 }
 
 NS_IMETHODIMP
 nsDOMDeviceStorage::Enumerate(const JS::Value & aName,
                              const JS::Value & aOptions,
                              JSContext* aCx,
                              uint8_t aArgc,
--- a/dom/interfaces/permission/Makefile.in
+++ b/dom/interfaces/permission/Makefile.in
@@ -10,15 +10,16 @@ VPATH          = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_permissionsettings
 GRE_MODULE     = 1
 
 XPIDLSRCS =                             \
             nsIDOMPermissionSettings.idl    \
+            nsIPermissionPromptService.idl \
             $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
new file mode 100644
--- /dev/null
+++ b/dom/interfaces/permission/nsIPermissionPromptService.idl
@@ -0,0 +1,20 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+interface nsIContentPermissionRequest;
+
+/**
+ * Generic permission service for access to WebAPIs, hardware, capabilities.
+ */
+[scriptable, uuid(e5f953b3-a6ca-444e-a88d-cdc81383741c)]
+interface nsIPermissionPromptService : nsISupports 
+{
+  /**
+   * Checks if the capability requires a permission, fires the corresponding cancel() 
+   * or allow() method in aRequest after consulting nsIDOMPermissionSettings, etc.
+   */
+  void getPermission(in nsIContentPermissionRequest aRequest);
+};
--- a/dom/media/tests/crashtests/791330.html
+++ b/dom/media/tests/crashtests/791330.html
@@ -12,18 +12,18 @@ https://bugzilla.mozilla.org/show_bug.cg
     }
 
     function runTest() {
       var pc = mozRTCPeerConnection();
       pc.close();
 
       navigator.mozGetUserMedia({audio: true, fake: true}, function (stream) {
         pc.addStream(stream);
-        pc.createOffer(function (offer) {
-        }, finish);
+        pc.createOffer(function (offer) {});
+        finish();
       }, function () {});
     }
   </script>
 </head>
 
 <body onload="setTimeout(runTest, 100)">
 </body>
 </html>
--- a/dom/permission/Makefile.in
+++ b/dom/permission/Makefile.in
@@ -13,16 +13,18 @@ MODULE         = dom
 LIBRARY_NAME   = jsdompermissionsettings_s
 
 XPIDL_MODULE   = dom_permissionsettings
 GRE_MODULE     = 1
 
 EXTRA_COMPONENTS =        \
   PermissionSettings.js       \
   PermissionSettings.manifest \
+  PermissionPromptService.js \
+  PermissionPromptService.manifest \
   $(NULL)
 
 EXTRA_JS_MODULES =   \
   PermissionPromptHelper.jsm \
   PermissionSettings.jsm \
   $(NULL)
 
 TEST_DIRS += tests
--- a/dom/permission/PermissionPromptHelper.jsm
+++ b/dom/permission/PermissionPromptHelper.jsm
@@ -20,58 +20,100 @@
 "use strict";
 
 let DEBUG = 0;
 if (DEBUG)
   debug = function (s) { dump("-*- Permission Prompt Helper component: " + s + "\n"); }
 else
   debug = function (s) {}
 
-const Cu = Components.utils; 
+const Cu = Components.utils;
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 
 let EXPORTED_SYMBOLS = ["PermissionPromptHelper"];
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/PermissionsInstaller.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
                                    "@mozilla.org/parentprocessmessagemanager;1",
                                    "nsIMessageListenerManager");
 
+XPCOMUtils.defineLazyServiceGetter(this, "permissionPromptService",
+                                   "@mozilla.org/permission-prompt-service;1",
+                                   "nsIPermissionPromptService");
+
 var permissionManager = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
 var secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager);
 var appsService = Cc["@mozilla.org/AppsService;1"].getService(Ci.nsIAppsService);
 
 let PermissionPromptHelper = {
   init: function() {
     debug("Init");
     ppmm.addMessageListener("PermissionPromptHelper:AskPermission", this);
     Services.obs.addObserver(this, "profile-before-change", false);
   },
 
   askPermission: function(aMessage, aCallbacks) {
     let msg = aMessage.json;
-    debug("askPerm: " + JSON.stringify(aMessage.json));
-    let uri = Services.io.newURI(msg.origin, null, null);
-    let principal = secMan.getAppCodebasePrincipal(uri, msg.appID, msg.browserFlag);
-    let perm = permissionManager.testExactPermissionFromPrincipal(principal, msg.type);
+
+    let access;
+    if (PermissionsTable[msg.type].access) {
+      access = "readwrite"; // XXXddahl: Not sure if this should be set to READWRITE
+    }
+    // expand Permissions:
+    var expandedPerms = expandPermissions(msg.type, access);
+    let installedPerms = [];
+    let principal;
+
+    for (let idx in expandedPerms) {
+      let uri = Services.io.newURI(msg.origin, null, null);
+      principal =
+        secMan.getAppCodebasePrincipal(uri, msg.appID, msg.browserFlag);
+      let perm =
+        permissionManager.testExactPermissionFromPrincipal(principal, msg.type);
+      installedPerms.push(perm);
+    }
 
-    switch(perm) {
-      case Ci.nsIPermissionManager.ALLOW_ACTION:
+    // TODO: see bug 804623, We are preventing "read" operations
+    // even if just "write" has been set to DENY_ACTION
+    for (let idx in installedPerms) {
+      // if any of the installedPerms are deny, run aCallbacks.cancel
+      if (installedPerms[idx] == Ci.nsIPermissionManager.DENY_ACTION ||
+          installedPerms[idx] == Ci.nsIPermissionManager.UNKNOWN_ACTION) {
+        aCallbacks.cancel();
+        return;
+      }
+    }
+
+    for (let idx in installedPerms) {
+      if (installedPerms[idx] == Ci.nsIPermissionManager.PROMPT_ACTION) {
+        // create a nsIContentPermissionRequest
+        let request = {
+          type: msg.type,
+          principal: principal,
+          QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionRequest]),
+          allow: aCallbacks.allow,
+          cancel: aCallbacks.cancel,
+          window: Services.wm.getMostRecentWindow("navigator:browser")
+        };
+
+        permissionPromptService.getPermission(request);
+        return;
+      }
+    }
+
+    for (let idx in installedPerms) {
+      if (installedPerms[idx] == Ci.nsIPermissionManager.ALLOW_ACTION) {
         aCallbacks.allow();
         return;
-      case Ci.nsIPermissionManager.DENY_ACTION:
-        aCallbacks.cancel();
-        return;
+      }
     }
-
-  // FIXXMEE PROMPT MAGIC! Bug 773114.
-  // We have to diplay the prompt here.
   },
 
   observe: function(aSubject, aTopic, aData) {
     ppmm.removeMessageListener("PermissionPromptHelper:AskPermission", this);
     Services.obs.removeObserver(this, "profile-before-change");
     ppmm = null;
   },
 
new file mode 100644
--- /dev/null
+++ b/dom/permission/PermissionPromptService.js
@@ -0,0 +1,90 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+/* static functions */
+let DEBUG = 0;
+let debug;
+if (DEBUG) {
+  debug = function (s) { dump("-*- PermissionPromptService: " + s + "\n"); };
+}
+else {
+  debug = function (s) {};
+}
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/PermissionsInstaller.jsm");
+
+const PERMISSIONPROMPTSERVICE_CONTRACTID = "@mozilla.org/permission-prompt-service;1";
+const PERMISSIONPROMPTSERVICE_CID = Components.ID("{e5f953b3-a6ca-444e-a88d-cdc81383741c}");
+const permissionPromptService = Ci.nsIPermissionPromptService;
+
+XPCOMUtils.defineLazyServiceGetter(this,
+                                   "PermSettings",
+                                   "@mozilla.org/permissionSettings;1",
+                                   "nsIDOMPermissionSettings");
+
+var permissionManager = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
+var secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager);
+
+function makePrompt()
+{
+  return Cc["@mozilla.org/content-permission/prompt;1"].createInstance(Ci.nsIContentPermissionPrompt);
+}
+
+function PermissionPromptService()
+{
+  debug("Constructor");
+}
+
+PermissionPromptService.prototype = {
+
+  classID : PERMISSIONPROMPTSERVICE_CID,
+
+  QueryInterface : XPCOMUtils.generateQI([permissionPromptService, Ci.nsIObserver]),
+
+  classInfo : XPCOMUtils.generateCI({classID: PERMISSIONPROMPTSERVICE_CID,
+                                     contractID: PERMISSIONPROMPTSERVICE_CONTRACTID,
+                                     classDescription: "PermissionPromptService",
+                                     interfaces: [permissionPromptService]
+                                     }),
+  /**
+   * getPermission
+   *   Ask for permission for an API, device, etc.
+   * @param nsIContentPermissionRequest aRequest
+   * @returns void
+   **/
+  getPermission: function PS_getPermission(aRequest)
+  {
+    if (!(aRequest instanceof Ci.nsIContentPermissionRequest)) {
+      throw new Error("PermissionService.getPermission: "
+                      + "2nd argument must be type 'nsIContentPermissionRequest'");
+    }
+
+    let perm =
+      permissionManager.testExactPermissionFromPrincipal(aRequest.principal,
+                                                         aRequest.type);
+    switch (perm) {
+      case Ci.nsIPermissionManager.ALLOW_ACTION:
+        aRequest.allow();
+        break;
+      case Ci.nsIPermissionManager.PROMPT_ACTION:
+        makePrompt().prompt(aRequest);
+        break;
+      case Ci.nsIPermissionManager.DENY_ACTION:
+      case Ci.nsIPermissionManager.UNKNOWN_ACTION:
+    default:
+      aRequest.cancel();
+      break;
+    }
+  },
+};
+
+const NSGetFactory = XPCOMUtils.generateNSGetFactory([PermissionPromptService]);
new file mode 100644
--- /dev/null
+++ b/dom/permission/PermissionPromptService.manifest
@@ -0,0 +1,2 @@
+component {e5f953b3-a6ca-444e-a88d-cdc81383741c} PermissionPromptService.js
+contract @mozilla.org/permission-prompt-service;1 {e5f953b3-a6ca-444e-a88d-cdc81383741c}
--- a/dom/tests/mochitest/bugs/test_devicemotion_multiple_listeners.html
+++ b/dom/tests/mochitest/bugs/test_devicemotion_multiple_listeners.html
@@ -15,17 +15,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 <script type="application/javascript">
 
 function f() {
 try {
   var ifr = document.getElementById('i');
   if (ifr.contentWindow.document.location == 'about:blank') {
     ifr.parentNode.removeChild(ifr);
     ok(true, "no crash received");
-    SpecialPowers.executeSoon(SimpleTest.finish);
+    SimpleTest.executeSoon(SimpleTest.finish);
   }
 } catch(e) {
 ok(false, e);
 }
 }
 
 SimpleTest.waitForExplicitFinish();
 </script>
--- a/embedding/android/GeckoSmsManager.java
+++ b/embedding/android/GeckoSmsManager.java
@@ -545,18 +545,16 @@ public class GeckoSmsManager
         Postman.getInstance().destroyEnvelope(envelopeId);
       }
 
       GeckoAppShell.notifySmsSendFailed(kUnknownError, aRequestId, aProcessId);
     }
   }
 
   public int saveSentMessage(String aRecipient, String aBody, long aDate) {
-    class IdTooHighException extends Exception { }
-
     try {
       ContentValues values = new ContentValues();
       values.put("address", aRecipient);
       values.put("body", aBody);
       values.put("date", aDate);
 
       ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
       Uri uri = cr.insert(kSmsSentContentUri, values);
@@ -588,21 +586,16 @@ public class GeckoSmsManager
       GetMessageRunnable(int aMessageId, int aRequestId, long aProcessId) {
         mMessageId = aMessageId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class NotFoundException extends Exception { }
-        class UnmatchingIdException extends Exception { }
-        class TooManyResultsException extends Exception { }
-        class InvalidTypeException extends Exception { }
-
         Cursor cursor = null;
 
         try {
           ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
           Uri message = ContentUris.withAppendedId(kSmsContentUri, mMessageId);
 
           cursor = cr.query(message, kRequiredMessageRows, null, null, null);
           if (cursor == null || cursor.getCount() == 0) {
@@ -675,18 +668,16 @@ public class GeckoSmsManager
       DeleteMessageRunnable(int aMessageId, int aRequestId, long aProcessId) {
         mMessageId = aMessageId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class TooManyResultsException extends Exception { }
-
         try {
           ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
           Uri message = ContentUris.withAppendedId(kSmsContentUri, mMessageId);
 
           int count = cr.delete(message, null, null);
 
           if (count > 1) {
             throw new TooManyResultsException();
@@ -728,19 +719,16 @@ public class GeckoSmsManager
         mDeliveryState = aDeliveryState;
         mReverse = aReverse;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class UnexpectedDeliveryStateException extends Exception { };
-        class InvalidTypeException extends Exception { }
-
         Cursor cursor = null;
         boolean closeCursor = true;
 
         try {
           // TODO: should use the |selectionArgs| argument in |ContentResolver.query()|.
           ArrayList<String> restrictions = new ArrayList<String>();
 
           if (mStartDate != 0) {
@@ -841,18 +829,16 @@ public class GeckoSmsManager
       GetNextMessageInListRunnable(int aListId, int aRequestId, long aProcessId) {
         mListId = aListId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class UnexpectedDeliveryStateException extends Exception { };
-
         try {
           Cursor cursor = MessagesListManager.getInstance().get(mListId);
 
           if (!cursor.moveToNext()) {
             MessagesListManager.getInstance().remove(mListId);
             GeckoAppShell.notifyNoMessageInList(mRequestId, mProcessId);
             return;
           }
@@ -898,9 +884,33 @@ public class GeckoSmsManager
   public void stop() {
     GeckoApp.mAppContext.unregisterReceiver(this);
   }
 
   public void shutdown() {
     SmsIOThread.getInstance().interrupt();
     MessagesListManager.getInstance().clear();
   }
+
+  class IdTooHighException extends Exception {
+    private static final long serialVersionUID = 395697882128640L;
+  }
+
+  class InvalidTypeException extends Exception {
+    private static final long serialVersionUID = 23359904803795434L;
+  }
+
+  class NotFoundException extends Exception {
+    private static final long serialVersionUID = 266226999371957426L;
+  }
+
+  class TooManyResultsException extends Exception {
+    private static final long serialVersionUID = 48899777673841920L;
+  }
+
+  class UnexpectedDeliveryStateException extends Exception {
+    private static final long serialVersionUID = 5044567998961920L;
+  }
+
+  class UnmatchingIdException extends Exception {
+    private static final long serialVersionUID = 1935649715512128L;
+  }
 }
--- a/gfx/angle/README.mozilla
+++ b/gfx/angle/README.mozilla
@@ -27,16 +27,19 @@ In this order:
   angle-abort-on-oom-in-preprocessor.patch
     see bug 680840. Probably not useful anymore now that we're on the new
     preprocessor, but it doesn't hurt to keep it around a bit longer.
 
   angle-faceforward-emu.patch
     See bug 771406. Adds emulation for faceforward(float,float,float),
     which is needed to prevent crashing on Mac+Intel.
 
+  angle-r1278.patch
+    Imports ANGLE r1278, which fixes ANGLE bug 350, a crasher.
+
 In addition to these patches, the Makefile.in files are ours, they're not present in
 upsteam ANGLE. Therefore, changes made to the Makefile.in files should not be stored
 in the local .patch files.
 
 == How to update this ANGLE copy ==
 
 1. Unapply patches
 
--- a/gfx/angle/src/libGLESv2/Texture.cpp
+++ b/gfx/angle/src/libGLESv2/Texture.cpp
@@ -1907,16 +1907,20 @@ IDirect3DBaseTexture9 *Texture2D::getBas
     return mTexStorage ? mTexStorage->getBaseTexture() : NULL;
 }
 
 // Constructs a Direct3D 9 texture resource from the texture images
 void Texture2D::createTexture()
 {
     GLsizei width = mImageArray[0].getWidth();
     GLsizei height = mImageArray[0].getHeight();
+
+    if (!(width > 0 && height > 0))
+        return; // do not attempt to create d3d textures for nonexistant data
+
     GLint levels = creationLevels(width, height);
     D3DFORMAT d3dfmt = mImageArray[0].getD3DFormat();
     DWORD d3dusage = GetTextureUsage(d3dfmt, mUsage, false);
 
     delete mTexStorage;
     mTexStorage = new TextureStorage2D(levels, d3dfmt, d3dusage, width, height);
     
     if (mTexStorage->isManaged())
@@ -2467,16 +2471,20 @@ IDirect3DBaseTexture9 *TextureCubeMap::g
 {
     return mTexStorage ? mTexStorage->getBaseTexture() : NULL;
 }
 
 // Constructs a Direct3D 9 texture resource from the texture images, or returns an existing one
 void TextureCubeMap::createTexture()
 {
     GLsizei size = mImageArray[0][0].getWidth();
+
+    if (!(size > 0))
+        return; // do not attempt to create d3d textures for nonexistant data
+
     GLint levels = creationLevels(size, 0);
     D3DFORMAT d3dfmt = mImageArray[0][0].getD3DFormat();
     DWORD d3dusage = GetTextureUsage(d3dfmt, mUsage, false);
 
     delete mTexStorage;
     mTexStorage = new TextureStorageCubeMap(levels, d3dfmt, d3dusage, size);
 
     if (mTexStorage->isManaged())
--- a/gfx/layers/basic/BasicTiledThebesLayer.cpp
+++ b/gfx/layers/basic/BasicTiledThebesLayer.cpp
@@ -406,17 +406,20 @@ BasicTiledThebesLayer::PaintThebes(gfxCo
     for (ContainerLayer* parent = GetParent(); parent; parent = parent->GetParent()) {
       if (parent->UseIntermediateSurface()) {
         transform.PreMultiply(parent->GetEffectiveTransform());
       }
     }
     transform.Invert();
 
     // Store the old valid region, then clear it before painting.
+    // We clip the old valid region to the visible region, as it only gets
+    // used to decide stale content (currently valid and previously visible)
     nsIntRegion oldValidRegion = mTiledBuffer.GetValidRegion();
+    oldValidRegion.And(oldValidRegion, mVisibleRegion);
     mTiledBuffer.ClearPaintedRegion();
 
     // Make sure that tiles that fall outside of the visible region are
     // discarded on the first update.
     if (!BasicManager()->IsRepeatTransaction()) {
       mValidRegion.And(mValidRegion, mVisibleRegion);
     }
 
@@ -449,18 +452,24 @@ BasicTiledThebesLayer::PaintThebes(gfxCo
         } else {
           return;
         }
       }
 
       // Keep track of what we're about to refresh.
       mValidRegion.Or(mValidRegion, regionToPaint);
 
+      // mValidRegion would have been altered by InvalidateRegion, but we still
+      // want to display stale content until it gets progressively updated.
+      // Create a region that includes stale content.
+      nsIntRegion validOrStale;
+      validOrStale.Or(mValidRegion, oldValidRegion);
+
       // Paint the computed region and subtract it from the invalid region.
-      mTiledBuffer.PaintThebes(this, mValidRegion, regionToPaint, aCallback, aCallbackData);
+      mTiledBuffer.PaintThebes(this, validOrStale, regionToPaint, aCallback, aCallbackData);
       invalidRegion.Sub(invalidRegion, regionToPaint);
     } while (repeat);
   } else {
     mTiledBuffer.ClearPaintedRegion();
     mTiledBuffer.SetResolution(resolution);
     mValidRegion = mVisibleRegion;
     mTiledBuffer.PaintThebes(this, mValidRegion, invalidRegion, aCallback, aCallbackData);
   }
--- a/gfx/layers/opengl/CanvasLayerOGL.cpp
+++ b/gfx/layers/opengl/CanvasLayerOGL.cpp
@@ -220,16 +220,17 @@ CanvasLayerOGL::UpdateSurface()
   if (mDrawTarget && mDrawTarget->GetNativeSurface(gfx::NATIVE_SURFACE_CGCONTEXT_ACCELERATED)) {
     if (!mTexture) {
       mTexture = MakeIOSurfaceTexture((CGContextRef)mDrawTarget->GetNativeSurface(
                                       gfx::NATIVE_SURFACE_CGCONTEXT_ACCELERATED),
                                       gl());
       mTextureTarget = LOCAL_GL_TEXTURE_RECTANGLE_ARB;
       mLayerProgram = gl::RGBARectLayerProgramType;
     }
+    mDrawTarget->Flush();
     return;
   }
 #endif
 
   nsRefPtr<gfxASurface> updatedAreaSurface;
   if (mCanvasGLContext) {
     gfxIntSize size(mBounds.width, mBounds.height);
     nsRefPtr<gfxImageSurface> updatedAreaImageSurface =
--- a/js/src/jsfun.cpp
+++ b/js/src/jsfun.cpp
@@ -615,18 +615,22 @@ FindBody(JSContext *cx, HandleFunction f
     JS_ASSERT(*bodyStart <= *bodyEnd);
     return true;
 }
 
 JSString *
 js::FunctionToString(JSContext *cx, HandleFunction fun, bool bodyOnly, bool lambdaParen)
 {
     StringBuffer out(cx);
+    RootedScript script(cx);
 
-    if (fun->isInterpreted() && fun->script()->isGeneratorExp) {
+    if (fun->isInterpreted())
+        script = fun->script();
+
+    if (fun->isInterpreted() && script->isGeneratorExp) {
         if ((!bodyOnly && !out.append("function genexp() {")) ||
             !out.append("\n    [generator expression]\n") ||
             (!bodyOnly && !out.append("}"))) {
             return NULL;
         }
         return out.finishString();
     }
     if (!bodyOnly) {
@@ -638,23 +642,22 @@ js::FunctionToString(JSContext *cx, Hand
         if (!out.append("function "))
             return NULL;
         if (fun->atom()) {
             if (!out.append(fun->atom()))
                 return NULL;
         }
     }
     bool haveSource = fun->isInterpreted() && !fun->isSelfHostedBuiltin();
-    if (haveSource && !fun->script()->scriptSource()->hasSourceData() &&
-        !fun->script()->loadSource(cx, &haveSource))
+    if (haveSource && !script->scriptSource()->hasSourceData() &&
+        !JSScript::loadSource(cx, script, &haveSource))
     {
         return NULL;
     }
     if (haveSource) {
-        RootedScript script(cx, fun->script());
         RootedString srcStr(cx, script->sourceData(cx));
         if (!srcStr)
             return NULL;
         Rooted<JSStableString *> src(cx, srcStr->ensureStable(cx));
         if (!src)
             return NULL;
 
         StableCharPtr chars = src->chars();
--- a/js/src/jsscript.cpp
+++ b/js/src/jsscript.cpp
@@ -1036,30 +1036,30 @@ SourceCompressorThread::abort(SourceComp
 void
 JSScript::setScriptSource(ScriptSource *ss)
 {
     JS_ASSERT(ss);
     ss->incref();
     scriptSource_ = ss;
 }
 
-bool
-JSScript::loadSource(JSContext *cx, bool *worked)
+/* static */ bool
+JSScript::loadSource(JSContext *cx, HandleScript script, bool *worked)
 {
-    JS_ASSERT(!scriptSource_->hasSourceData());
+    JS_ASSERT(!script->scriptSource_->hasSourceData());
     *worked = false;
-    if (!cx->runtime->sourceHook || !scriptSource_->sourceRetrievable())
+    if (!cx->runtime->sourceHook || !script->scriptSource_->sourceRetrievable())
         return true;
     jschar *src = NULL;
     uint32_t length;
-    if (!cx->runtime->sourceHook(cx, this, &src, &length))
+    if (!cx->runtime->sourceHook(cx, script, &src, &length))
         return false;
     if (!src)
         return true;
-    ScriptSource *ss = scriptSource();
+    ScriptSource *ss = script->scriptSource();
     ss->setSource(src, length);
     *worked = true;
     return true;
 }
 
 JSFlatString *
 JSScript::sourceData(JSContext *cx)
 {
--- a/js/src/jsscript.h
+++ b/js/src/jsscript.h
@@ -570,17 +570,17 @@ struct JSScript : public js::gc::Cell
      * Original compiled function for the script, if it has a function.
      * NULL for global and eval scripts.
      */
     JSFunction *function() const { return function_; }
     void setFunction(JSFunction *fun);
 
     JSFlatString *sourceData(JSContext *cx);
 
-    bool loadSource(JSContext *cx, bool *worked);
+    static bool loadSource(JSContext *cx, js::HandleScript scr, bool *worked);
 
     js::ScriptSource *scriptSource() {
         return scriptSource_;
     }
 
     void setScriptSource(js::ScriptSource *ss);
 
   public:
--- a/layout/tools/reftest/remotereftest.py
+++ b/layout/tools/reftest/remotereftest.py
@@ -430,29 +430,32 @@ def main(args):
     procName = options.app.split('/')[-1]
     if (dm.processExist(procName)):
         dm.killProcess(procName)
 
     print dm.getInfo()
 
 #an example manifest name to use on the cli
 #    manifest = "http://" + options.remoteWebServer + "/reftests/layout/reftests/reftest-sanity/reftest.list"
-    logcat = []
+    retVal = 0
     try:
         cmdlineArgs = ["-reftest", manifest]
         if options.bootstrap:
             cmdlineArgs = []
         dm.recordLogcat()
         reftest.runTests(manifest, options, cmdlineArgs)
-        logcat = dm.getLogcat()
     except:
         print "TEST-UNEXPECTED-FAIL | | exception while running reftests"
-        reftest.stopWebServer(options)
-        return 1
+        retVal = 1
 
     reftest.stopWebServer(options)
-    print ''.join(logcat[-500:-1])
-    print dm.getInfo()
-    return 0
+    try:
+        logcat = dm.getLogcat()
+        print ''.join(logcat[-500:-1])
+        print dm.getInfo()
+    except devicemanager.DMError:
+        print "WARNING: Error getting device information at end of test"
+
+    return retVal
 
 if __name__ == "__main__":
     sys.exit(main(sys.argv[1:]))
 
--- a/media/libjpeg/MOZCHANGES
+++ b/media/libjpeg/MOZCHANGES
@@ -53,16 +53,20 @@ To upgrade to a new revision of libjpeg-
     $ patch -p0 -i mozilla.diff
 
 * Update Makefile.in to build any new files.
 
 * Finally, tell hg that we've added or removed some files:
 
     $ hg addremove
 
+== October 13, 2012 ==
+
+* Modified config.h to use MOZ_ALWAYS_INLINE (bug 800106).
+
 == July 4, 2012 (libjpeg-turbo v1.2.1 r853 2012-06-30) ==
 
 * Updated to v1.2.1 stable release.
 
 == June 5, 2012 (libjpeg-turbo v1.2.x branch, r831 2012-05-30) ==
 
 * Updated to latest version on v1.2.x branch (bug 759891).
 
--- a/media/libjpeg/config.h
+++ b/media/libjpeg/config.h
@@ -1,6 +1,7 @@
 #define VERSION "1.2.1"
 #define BUILD "2012-06-30"
 #define PACKAGE_NAME "libjpeg-turbo"
 
 /* Need to use Mozilla-specific function inlining. */
-#define INLINE NS_ALWAYS_INLINE
+#include "mozilla/Attributes.h"
+#define INLINE MOZ_ALWAYS_INLINE
--- a/media/webrtc/signaling/test/mediaconduit_unittests.cpp
+++ b/media/webrtc/signaling/test/mediaconduit_unittests.cpp
@@ -265,23 +265,24 @@ void AudioSendAndReceive::GenerateMusic(
 
 //Hardcoded for 16 bit samples for now
 void AudioSendAndReceive::GenerateAndReadSamples()
 {
    int16_t audioInput[PLAYOUT_SAMPLE_LENGTH];
    int16_t audioOutput[PLAYOUT_SAMPLE_LENGTH];
    short* inbuf;
    int sampleLengthDecoded = 0;
-   int SAMPLES = PLAYOUT_SAMPLE_FREQUENCY * 10; //10 milliseconds
+   int SAMPLES = (PLAYOUT_SAMPLE_FREQUENCY * 10)/1000; //10 milliseconds
    int CHANNELS = 1; //mono audio
-   int sampleLengthInBytes = PLAYOUT_SAMPLE_LENGTH * sizeof(short);
+   int sampleLengthInBytes = sizeof(audioInput);
    //generated audio buffer
    inbuf = (short *)moz_xmalloc(sizeof(short)*SAMPLES*CHANNELS);
    memset(audioInput,0,sampleLengthInBytes);
    memset(audioOutput,0,sampleLengthInBytes);
+   MOZ_ASSERT(SAMPLES <= PLAYOUT_SAMPLE_LENGTH);
 
    FILE* inFile = fopen( iFile.c_str(), "wb+");
    if(!inFile) {
      cerr << "Input File Creation Failed " << endl;
      return;
    }
 
    FILE* outFile = fopen( oFile.c_str(), "wb+");
--- a/media/webrtc/signaling/test/signaling_unittests.cpp
+++ b/media/webrtc/signaling/test/signaling_unittests.cpp
@@ -539,17 +539,17 @@ class SignalingAgent {
 
     PR_ASSERT(aHintContents);
 
     domMediaStream->SetHintContents(aHintContents);
 
     pc->AddStream(domMediaStream);
 
     pObserver->state = TestObserver::stateNoResponse;
-    ASSERT_EQ(pc->CreateAnswer(constraints, NS_OK);
+    ASSERT_EQ(pc->CreateAnswer(constraints), NS_OK);
     ASSERT_TRUE_WAIT(pObserver->state == TestObserver::stateSuccess, kDefaultTimeout);
     SDPSanityCheck(pObserver->lastString, audio, video, false);
     answer_ = pObserver->lastString;
   }
 
   void CreateOfferRemoveStream(sipcc::MediaConstraints& constraints, bool audio, bool video) {
 
     uint32_t aHintContents = 0;
--- a/memory/mozalloc/mozalloc.h
+++ b/memory/mozalloc/mozalloc.h
@@ -34,18 +34,18 @@
 /* Make sure symbols are still exported even if we're wrapped in a
  * |visibility push(hidden)| blanket. */
 #  define MOZALLOC_EXPORT __attribute__ ((visibility ("default")))
 #else
 #  define MOZALLOC_EXPORT
 #endif
 
 
-#if defined(NS_ALWAYS_INLINE)
-#  define MOZALLOC_INLINE NS_ALWAYS_INLINE inline
+#if defined(MOZ_ALWAYS_INLINE)
+#  define MOZALLOC_INLINE MOZ_ALWAYS_INLINE
 #elif defined(HAVE_FORCEINLINE)
 #  define MOZALLOC_INLINE __forceinline
 #else
 #  define MOZALLOC_INLINE inline
 #endif
 
 /* Workaround build problem with Sun Studio 12 */
 #if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
--- a/mfbt/LinkedList.h
+++ b/mfbt/LinkedList.h
@@ -8,16 +8,20 @@
 /*
  * The classes LinkedList<T> and LinkedListElement<T> together form a
  * convenient, type-safe doubly-linked list implementation.
  *
  * The class T which will be inserted into the linked list must inherit from
  * LinkedListElement<T>.  A given object may be in only one linked list at a
  * time.
  *
+ * A LinkedListElement automatically removes itself from the list upon
+ * destruction, and a LinkedList will fatally assert in debug builds if it's
+ * non-empty when it's destructed.
+ *
  * For example, you might use LinkedList in a simple observer list class as
  * follows.
  *
  *   class Observer : public LinkedListElement<Observer>
  *   {
  *     public:
  *       void observe(char* topic) { ... }
  *   };
@@ -105,16 +109,21 @@ class LinkedListElement
 
   public:
     LinkedListElement()
       : next(thisDuringConstruction()),
         prev(thisDuringConstruction()),
         isSentinel(false)
     { }
 
+    ~LinkedListElement() {
+      if (!isSentinel && isInList())
+        remove();
+    }
+
     /*
      * Get the next element in the list, or NULL if this is the last element in
      * the list.
      */
     T* getNext() {
       return next->asT();
     }
     const T* getNext() const {
@@ -179,18 +188,17 @@ class LinkedListElement
       NODE_KIND_NORMAL,
       NODE_KIND_SENTINEL
     };
 
     LinkedListElement(NodeKind nodeKind)
       : next(this),
         prev(this),
         isSentinel(nodeKind == NODE_KIND_SENTINEL)
-    {
-    }
+    { }
 
     /*
      * Return |this| cast to T* if we're a normal node, or return NULL if we're
      * a sentinel node.
      */
     T* asT() {
       if (isSentinel)
         return NULL;
@@ -241,16 +249,20 @@ template<typename T>
 class LinkedList
 {
   private:
     LinkedListElement<T> sentinel;
 
   public:
     LinkedList() : sentinel(LinkedListElement<T>::NODE_KIND_SENTINEL) { }
 
+    ~LinkedList() {
+      MOZ_ASSERT(isEmpty());
+    }
+
     /*
      * Add elem to the front of the list.
      */
     void insertFront(T* elem) {
       /* Bypass setNext()'s this->isInList() assertion. */
       sentinel.setNextUnsafe(elem);
     }
 
--- a/mfbt/SHA1.h
+++ b/mfbt/SHA1.h
@@ -4,16 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Simple class for computing SHA1. */
 
 #ifndef mozilla_SHA1_h_
 #define mozilla_SHA1_h_
 
 #include "mozilla/StandardInteger.h"
+#include "mozilla/Types.h"
 
 #include <stddef.h>
 
 namespace mozilla {
 
 /**
  * This class computes the SHA1 hash of a byte sequence, or of the concatenation
  * of multiple sequences.  For example, computing the SHA1 of two sequences of
@@ -38,23 +39,23 @@ class SHA1Sum
         uint32_t w[16]; /* input buffer */
         uint8_t b[64];
     } u;
     uint64_t size; /* count of hashed bytes. */
     unsigned H[22]; /* 5 state variables, 16 tmp values, 1 extra */
     bool mDone;
 
   public:
-    SHA1Sum();
+    MFBT_API() SHA1Sum();
 
     static const size_t HashSize = 20;
     typedef uint8_t Hash[HashSize];
 
     /* Add len bytes of dataIn to the data sequence being hashed. */
-    void update(const void* dataIn, uint32_t len);
+    MFBT_API(void) update(const void* dataIn, uint32_t len);
 
     /* Compute the final hash of all data into hashOut. */
-    void finish(SHA1Sum::Hash& hashOut);
+    MFBT_API(void) finish(SHA1Sum::Hash& hashOut);
 };
 
 } /* namespace mozilla */
 
 #endif /* mozilla_SHA1_h_ */
--- a/mfbt/Types.h
+++ b/mfbt/Types.h
@@ -91,18 +91,21 @@
  * export mfbt declarations when building mfbt, and they expose import mfbt
  * declarations when using mfbt.
  */
 #if defined(IMPL_MFBT)
 #  define MFBT_API(type)        MOZ_EXPORT_API(type)
 #  define MFBT_DATA(type)       MOZ_EXPORT_DATA(type)
 #else
   /*
-   * When mozglue is linked in the program, we need the MFBT API symbols
-   * to be weak.
+   * On linux mozglue is linked in the program and we link libxul.so with
+   * -z,defs. Normally that causes the linker to reject undefined references in
+   * libxul.so, but as a loophole it allows undefined references to weak
+   * symbols. We add the weak attribute to the import version of the MFBT API
+   * macros to exploit this.
    */
 #  if defined(MOZ_GLUE_IN_PROGRAM)
 #    define MFBT_API(type)        __attribute__((weak)) MOZ_IMPORT_API(type)
 #    define MFBT_DATA(type)       __attribute__((weak)) MOZ_IMPORT_DATA(type)
 #  else
 #    define MFBT_API(type)        MOZ_IMPORT_API(type)
 #    define MFBT_DATA(type)       MOZ_IMPORT_DATA(type)
 #  endif
--- a/mobile/android/base/GeckoSmsManager.java
+++ b/mobile/android/base/GeckoSmsManager.java
@@ -538,18 +538,16 @@ public class GeckoSmsManager
         Postman.getInstance().destroyEnvelope(envelopeId);
       }
 
       GeckoAppShell.notifySmsSendFailed(kUnknownError, aRequestId, aProcessId);
     }
   }
 
   public int saveSentMessage(String aRecipient, String aBody, long aDate) {
-    class IdTooHighException extends Exception { }
-
     try {
       ContentValues values = new ContentValues();
       values.put("address", aRecipient);
       values.put("body", aBody);
       values.put("date", aDate);
 
       ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
       Uri uri = cr.insert(kSmsSentContentUri, values);
@@ -581,21 +579,16 @@ public class GeckoSmsManager
       GetMessageRunnable(int aMessageId, int aRequestId, long aProcessId) {
         mMessageId = aMessageId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class NotFoundException extends Exception { }
-        class UnmatchingIdException extends Exception { }
-        class TooManyResultsException extends Exception { }
-        class InvalidTypeException extends Exception { }
-
         Cursor cursor = null;
 
         try {
           ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
           Uri message = ContentUris.withAppendedId(kSmsContentUri, mMessageId);
 
           cursor = cr.query(message, kRequiredMessageRows, null, null, null);
           if (cursor == null || cursor.getCount() == 0) {
@@ -668,18 +661,16 @@ public class GeckoSmsManager
       DeleteMessageRunnable(int aMessageId, int aRequestId, long aProcessId) {
         mMessageId = aMessageId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class TooManyResultsException extends Exception { }
-
         try {
           ContentResolver cr = GeckoApp.mAppContext.getContentResolver();
           Uri message = ContentUris.withAppendedId(kSmsContentUri, mMessageId);
 
           int count = cr.delete(message, null, null);
 
           if (count > 1) {
             throw new TooManyResultsException();
@@ -721,19 +712,16 @@ public class GeckoSmsManager
         mDeliveryState = aDeliveryState;
         mReverse = aReverse;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class UnexpectedDeliveryStateException extends Exception { };
-        class InvalidTypeException extends Exception { }
-
         Cursor cursor = null;
         boolean closeCursor = true;
 
         try {
           // TODO: should use the |selectionArgs| argument in |ContentResolver.query()|.
           ArrayList<String> restrictions = new ArrayList<String>();
 
           if (mStartDate != 0) {
@@ -834,18 +822,16 @@ public class GeckoSmsManager
       GetNextMessageInListRunnable(int aListId, int aRequestId, long aProcessId) {
         mListId = aListId;
         mRequestId = aRequestId;
         mProcessId = aProcessId;
       }
 
       @Override
       public void run() {
-        class UnexpectedDeliveryStateException extends Exception { };
-
         try {
           Cursor cursor = MessagesListManager.getInstance().get(mListId);
 
           if (!cursor.moveToNext()) {
             MessagesListManager.getInstance().remove(mListId);
             GeckoAppShell.notifyNoMessageInList(mRequestId, mProcessId);
             return;
           }
@@ -891,9 +877,33 @@ public class GeckoSmsManager
   public void stop() {
     GeckoApp.mAppContext.unregisterReceiver(this);
   }
 
   public void shutdown() {
     SmsIOThread.getInstance().interrupt();
     MessagesListManager.getInstance().clear();
   }
+
+  class IdTooHighException extends Exception {
+    private static final long serialVersionUID = 29935575131092050L;
+  }
+
+  class InvalidTypeException extends Exception {
+    private static final long serialVersionUID = 47436856832535912L;
+  }
+
+  class NotFoundException extends Exception {
+    private static final long serialVersionUID = 1940676816633984L;
+  }
+
+  class TooManyResultsException extends Exception {
+    private static final long serialVersionUID = 51883196784325305L;
+  }
+
+  class UnexpectedDeliveryStateException extends Exception {
+    private static final long serialVersionUID = 494122763684005716L;
+  }
+
+  class UnmatchingIdException extends Exception {
+    private static final long serialVersionUID = 158467542575633280L;
+  }
 }
--- a/mobile/android/base/Tab.java
+++ b/mobile/android/base/Tab.java
@@ -153,21 +153,22 @@ public class Tab {
         return mThumbnail;
     }
 
     synchronized public ByteBuffer getThumbnailBuffer() {
         int capacity = Tabs.getThumbnailWidth() * Tabs.getThumbnailHeight() * 2 /* 16 bpp */;
         if (mThumbnailBuffer != null && mThumbnailBuffer.capacity() == capacity)
             return mThumbnailBuffer;
         freeBuffer();
+        mThumbnailBitmap = null;
         mThumbnailBuffer = DirectBufferAllocator.allocate(capacity);
         return mThumbnailBuffer;
     }
 
-    public Bitmap getThumbnailBitmap() {
+    synchronized public Bitmap getThumbnailBitmap() {
         if (mThumbnailBitmap != null)
             return mThumbnailBitmap;
         return mThumbnailBitmap = Bitmap.createBitmap(Tabs.getThumbnailWidth(), Tabs.getThumbnailHeight(), Bitmap.Config.RGB_565);
     }
 
     synchronized void freeBuffer() {
         DirectBufferAllocator.free(mThumbnailBuffer);
         mThumbnailBuffer = null;
@@ -231,17 +232,16 @@ public class Tab {
         return mExternal;
     }
 
     public synchronized void updateURL(String url) {
         if (url != null && url.length() > 0) {
             mUrl = url;
             Log.d(LOGTAG, "Updated URL for tab with id: " + mId);
             updateBookmark();
-            updateHistory(mUrl, mTitle);
         }
     }
 
     public void setDocumentURI(String documentURI) {
         mDocumentURI = documentURI;
     }
 
     public String getDocumentURI() {
@@ -290,17 +290,17 @@ public class Tab {
         });
     }
 
     public void setState(int state) {
         mState = state;
 
         if (mState != Tab.STATE_LOADING)
             mEnteringReaderMode = false;
-        }
+    }
 
     public int getState() {
         return mState;
     }
 
     public void setZoomConstraints(ZoomConstraints constraints) {
         mZoomConstraints = constraints;
     }
@@ -493,17 +493,16 @@ public class Tab {
         return true;
     }
 
     void handleSessionHistoryMessage(String event, JSONObject message) throws JSONException {
         if (event.equals("New")) {
             final String url = message.getString("url");
             mHistoryIndex++;
             mHistorySize = mHistoryIndex + 1;
-            addHistory(url);
         } else if (event.equals("Back")) {
             if (!canDoBack()) {
                 Log.e(LOGTAG, "Received unexpected back notification");
                 return;
             }
             mHistoryIndex--;
         } else if (event.equals("Forward")) {
             if (!canDoForward()) {
--- a/mobile/android/base/tests/robocop.ini
+++ b/mobile/android/base/tests/robocop.ini
@@ -1,24 +1,24 @@
 [testAllPagesTab]
 [testHistoryTab]
 [testBookmarksTab]
 [testAwesomebar]
 [testBookmark]
 [testBookmarklets]
 [testMigration]
-# [testLoad] # see bug 767215
+[testLoad]
 [testNewTab]
-# [testPanCorrectness] # see bug 767215
+[testPanCorrectness]
 # [test_bug720538] # see bug 746876
-# [testFlingCorrectness] # see bug 767215
-# [testOverscroll] # see bug 767215
-# [testAxisLocking] # see bug 767215
+[testFlingCorrectness]
+[testOverscroll]
+[testAxisLocking]
 [testAboutPage]
-# [testWebContentContextMenu] # see bug 785577
+[testWebContentContextMenu]
 [testPasswordProvider]
 [testPasswordEncrypt]
 [testFormHistory]
 [testBrowserProvider]
 [testSearchSuggestions]
 [testThumbnails]
 [testAddonManager]
 [testHistory]
--- a/mozglue/android/SQLiteBridge.cpp
+++ b/mozglue/android/SQLiteBridge.cpp
@@ -21,16 +21,17 @@
 
 #define SQLITE_WRAPPER_INT(name) name ## _t f_ ## name;
 
 SQLITE_WRAPPER_INT(sqlite3_open)
 SQLITE_WRAPPER_INT(sqlite3_errmsg)
 SQLITE_WRAPPER_INT(sqlite3_prepare_v2)
 SQLITE_WRAPPER_INT(sqlite3_bind_parameter_count)
 SQLITE_WRAPPER_INT(sqlite3_bind_text)
+SQLITE_WRAPPER_INT(sqlite3_bind_null)
 SQLITE_WRAPPER_INT(sqlite3_step)
 SQLITE_WRAPPER_INT(sqlite3_column_count)
 SQLITE_WRAPPER_INT(sqlite3_finalize)
 SQLITE_WRAPPER_INT(sqlite3_close)
 SQLITE_WRAPPER_INT(sqlite3_column_name)
 SQLITE_WRAPPER_INT(sqlite3_column_type)
 SQLITE_WRAPPER_INT(sqlite3_column_blob)
 SQLITE_WRAPPER_INT(sqlite3_column_bytes)
@@ -247,16 +248,24 @@ sqliteInternalCall(JNIEnv* jenv,
         goto error_close;
     }
 
     if (jParams != NULL) {
         // Bind parameters, if any
         if (numPars > 0) {
             for (int i = 0; i < numPars; i++) {
                 jobject jObjectParam = jenv->GetObjectArrayElement(jParams, i);
+                if (jObjectParam == NULL) {
+                  rc = f_sqlite3_bind_null(ppStmt, i + 1);
+                  if (rc != SQLITE_OK) {
+                      asprintf(&errorMsg, "Error binding null query parameter");
+                      goto error_close;
+                  }
+                  continue;
+                }
                 // IsInstanceOf or isAssignableFrom? String is final, so IsInstanceOf
                 // should be OK.
                 jboolean isString = jenv->IsInstanceOf(jObjectParam, stringClass);
                 if (isString != JNI_TRUE) {
                     asprintf(&errorMsg, "Parameter is not of String type");
                     goto error_close;
                 }
                 jstring jStringParam = (jstring)jObjectParam;
--- a/mozglue/android/SQLiteBridge.h
+++ b/mozglue/android/SQLiteBridge.h
@@ -13,16 +13,17 @@ void setup_sqlite_functions(void *sqlite
 typedef return_type (*name ## _t)(args);  \
 extern name ## _t f_ ## name;
 
 SQLITE_WRAPPER(sqlite3_open, int, const char*, sqlite3**)
 SQLITE_WRAPPER(sqlite3_errmsg, const char*, sqlite3*)
 SQLITE_WRAPPER(sqlite3_prepare_v2, int, sqlite3*, const char*, int, sqlite3_stmt**, const char**)
 SQLITE_WRAPPER(sqlite3_bind_parameter_count, int, sqlite3_stmt*)
 SQLITE_WRAPPER(sqlite3_bind_text, int, sqlite3_stmt*, int, const char*, int, void(*)(void*))
+SQLITE_WRAPPER(sqlite3_bind_null, int, sqlite3_stmt*, int)
 SQLITE_WRAPPER(sqlite3_step, int, sqlite3_stmt*)
 SQLITE_WRAPPER(sqlite3_column_count, int, sqlite3_stmt*)
 SQLITE_WRAPPER(sqlite3_finalize, int, sqlite3_stmt*)
 SQLITE_WRAPPER(sqlite3_close, int, sqlite3*)
 SQLITE_WRAPPER(sqlite3_column_name, const char*, sqlite3_stmt*, int)
 SQLITE_WRAPPER(sqlite3_column_type, int, sqlite3_stmt*, int)
 SQLITE_WRAPPER(sqlite3_column_blob, const void*, sqlite3_stmt*, int)
 SQLITE_WRAPPER(sqlite3_column_bytes, int, sqlite3_stmt*, int)
--- a/netwerk/base/public/nsIChannel.idl
+++ b/netwerk/base/public/nsIChannel.idl
@@ -243,16 +243,27 @@ interface nsIChannel : nsIRequest
      * If this flag is set and a server's response is Content-Type
      * application/octet-steam, the server's Content-Type will be ignored and
      * the channel content will be sniffed as though no Content-Type had been
      * passed.
      */
     const unsigned long LOAD_TREAT_APPLICATION_OCTET_STREAM_AS_UNKNOWN = 1 << 23;
 
     /**
+     * Set to let explicitely provided credentials be used over credentials
+     * we have cached previously. In some situations like form login using HTTP
+     * auth via XMLHttpRequest we need to let consumers override the cached
+     * credentials explicitely. For form login 403 response instead of 401 is
+     * usually used to prevent an auth dialog. But any code other then 401/7
+     * will leave original credentials in the cache and there is then no way
+     * to override them for the same user name.
+     */
+    const unsigned long LOAD_EXPLICIT_CREDENTIALS = 1 << 24;
+
+    /**
      * Access to the type implied or stated by the Content-Disposition header
      * if available and if applicable. This allows determining inline versus
      * attachment.
      *
      * Setting contentDisposition provides a hint to the channel about the
      * disposition.  If a normal Content-Disposition header is present its
      * value will always be used.  If it is missing the hinted value will
      * be used if set.
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -760,32 +760,32 @@ nsHttpChannel::SetupTransaction()
     mRequestTime = NowInSeconds();
     mRequestTimeInitialized = true;
 
     // if doing a reload, force end-to-end
     if (mLoadFlags & LOAD_BYPASS_CACHE) {
         // We need to send 'Pragma:no-cache' to inhibit proxy caching even if
         // no proxy is configured since we might be talking with a transparent
         // proxy, i.e. one that operates at the network level.  See bug #14772.
-        mRequestHead.SetHeader(nsHttp::Pragma, NS_LITERAL_CSTRING("no-cache"), true);
+        mRequestHead.SetHeaderOnce(nsHttp::Pragma, "no-cache", true);
         // If we're configured to speak HTTP/1.1 then also send 'Cache-control:
         // no-cache'
         if (mRequestHead.Version() >= NS_HTTP_VERSION_1_1)
-            mRequestHead.SetHeader(nsHttp::Cache_Control, NS_LITERAL_CSTRING("no-cache"), true);
+            mRequestHead.SetHeaderOnce(nsHttp::Cache_Control, "no-cache", true);
     }
     else if ((mLoadFlags & VALIDATE_ALWAYS) && (mCacheAccess & nsICache::ACCESS_READ)) {
         // We need to send 'Cache-Control: max-age=0' to force each cache along
         // the path to the origin server to revalidate its own entry, if any,
         // with the next cache or server.  See bug #84847.
         //
         // If we're configured to speak HTTP/1.0 then just send 'Pragma: no-cache'
         if (mRequestHead.Version() >= NS_HTTP_VERSION_1_1)
-            mRequestHead.SetHeader(nsHttp::Cache_Control, NS_LITERAL_CSTRING("max-age=0"), true);
+            mRequestHead.SetHeaderOnce(nsHttp::Cache_Control, "max-age=0", true);
         else
-            mRequestHead.SetHeader(nsHttp::Pragma, NS_LITERAL_CSTRING("no-cache"), true);
+            mRequestHead.SetHeaderOnce(nsHttp::Pragma, "no-cache", true);
     }
 
     if (mResuming) {
         char byteRange[32];
         PR_snprintf(byteRange, sizeof(byteRange), "bytes=%llu-", mStartPos);
         mRequestHead.SetHeader(nsHttp::Range, nsDependentCString(byteRange));
 
         if (!mEntityID.IsEmpty()) {
@@ -831,19 +831,19 @@ nsHttpChannel::SetupTransaction()
     if (mTimingEnabled)
         mCaps |= NS_HTTP_TIMING_ENABLED;
 
     mConnectionInfo->SetAnonymous((mLoadFlags & LOAD_ANONYMOUS) != 0);
     mConnectionInfo->SetPrivate(mPrivateBrowsing);
 
     if (mUpgradeProtocolCallback) {
         mRequestHead.SetHeader(nsHttp::Upgrade, mUpgradeProtocol, false);
-        mRequestHead.SetHeader(nsHttp::Connection,
-                               nsDependentCString(nsHttp::Upgrade.get()),
-                               true);
+        mRequestHead.SetHeaderOnce(nsHttp::Connection,
+                                   nsHttp::Upgrade.get(),
+                                   true);
         mCaps |=  NS_HTTP_STICKY_CONNECTION;
         mCaps &= ~NS_HTTP_ALLOW_PIPELINING;
         mCaps &= ~NS_HTTP_ALLOW_KEEPALIVE;
         mCaps |=  NS_HTTP_DISALLOW_SPDY;
     }
 
     nsCOMPtr<nsIAsyncInputStream> responseStream;
     rv = mTransaction->Init(mCaps, mConnectionInfo, &mRequestHead,
--- a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
+++ b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
@@ -87,30 +87,19 @@ nsHttpChannelAuthProvider::ProcessAuthen
     nsCOMPtr<nsIProxyInfo> proxyInfo;
     nsresult rv = mAuthChannel->GetProxyInfo(getter_AddRefs(proxyInfo));
     if (NS_FAILED(rv)) return rv;
     if (proxyInfo) {
         mProxyInfo = do_QueryInterface(proxyInfo);
         if (!mProxyInfo) return NS_ERROR_NO_INTERFACE;
     }
 
-    uint32_t loadFlags;
-    rv = mAuthChannel->GetLoadFlags(&loadFlags);
-    if (NS_FAILED(rv)) return rv;
-
     nsAutoCString challenges;
     mProxyAuth = (httpStatus == 407);
 
-    // Do proxy auth even if we're LOAD_ANONYMOUS
-    if ((loadFlags & nsIRequest::LOAD_ANONYMOUS) &&
-        (!mProxyAuth || !UsingHttpProxy())) {
-        LOG(("Skipping authentication for anonymous non-proxy request\n"));
-        return NS_ERROR_NOT_AVAILABLE;
-    }
-
     rv = PrepareForAuthentication(mProxyAuth);
     if (NS_FAILED(rv))
         return rv;
 
     if (mProxyAuth) {
         // only allow a proxy challenge if we have a proxy server configured.
         // otherwise, we could inadvertently expose the user's proxy
         // credentials to an origin server.  We could attempt to proceed as
@@ -671,23 +660,39 @@ nsHttpChannelAuthProvider::GetCredential
     nsAutoCString path, scheme;
     bool identFromURI = false;
     nsISupports **continuationState;
 
     rv = GetAuthorizationMembers(proxyAuth, scheme, host, port,
                                  path, ident, continuationState);
     if (NS_FAILED(rv)) return rv;
 
+    uint32_t loadFlags;
+    rv = mAuthChannel->GetLoadFlags(&loadFlags);
+    if (NS_FAILED(rv)) return rv;
+
     if (!proxyAuth) {
         // if this is the first challenge, then try using the identity
         // specified in the URL.
         if (mIdent.IsEmpty()) {
             GetIdentityFromURI(authFlags, mIdent);
             identFromURI = !mIdent.IsEmpty();
         }
+
+        if ((loadFlags & nsIRequest::LOAD_ANONYMOUS) && !identFromURI) {
+            LOG(("Skipping authentication for anonymous non-proxy request\n"));
+            return NS_ERROR_NOT_AVAILABLE;
+        }
+
+        // Let explicit URL credentials pass
+        // regardless of the LOAD_ANONYMOUS flag
+    }
+    else if ((loadFlags & nsIRequest::LOAD_ANONYMOUS) && !UsingHttpProxy()) {
+        LOG(("Skipping authentication for anonymous non-proxy request\n"));
+        return NS_ERROR_NOT_AVAILABLE;
     }
 
     //
     // if we already tried some credentials for this transaction, then
     // we need to possibly clear them from the cache, unless the credentials
     // in the cache have changed, in which case we'd want to give them a
     // try instead.
     //
@@ -713,27 +718,32 @@ nsHttpChannelAuthProvider::GetCredential
     sessionStateGrip.swap(sessionState);
     if (NS_FAILED(rv)) return rv;
 
     LOG(("  identity invalid = %d\n", identityInvalid));
 
     if (identityInvalid) {
         if (entry) {
             if (ident->Equals(entry->Identity())) {
-                LOG(("  clearing bad auth cache entry\n"));
-                // ok, we've already tried this user identity, so clear the
-                // corresponding entry from the auth cache.
-                authCache->ClearAuthEntry(scheme.get(), host,
-                                          port, realm.get());
-                entry = nullptr;
-                ident->Clear();
+                if (!identFromURI) {
+                    LOG(("  clearing bad auth cache entry\n"));
+                    // ok, we've already tried this user identity, so clear the
+                    // corresponding entry from the auth cache.
+                    authCache->ClearAuthEntry(scheme.get(), host,
+                                              port, realm.get());
+                    entry = nullptr;
+                    ident->Clear();
+                }
             }
             else if (!identFromURI ||
-                     nsCRT::strcmp(ident->User(),
-                                   entry->Identity().User()) == 0) {
+                     (nsCRT::strcmp(ident->User(),
+                                    entry->Identity().User()) == 0 &&
+                     !(loadFlags &
+                       (nsIChannel::LOAD_ANONYMOUS |
+                        nsIChannel::LOAD_EXPLICIT_CREDENTIALS)))) {
                 LOG(("  taking identity from auth cache\n"));
                 // the password from the auth cache is more likely to be
                 // correct than the one in the URL.  at least, we know that it
                 // works with the given username.  it is possible for a server
                 // to distinguish logons based on the supplied password alone,
                 // but that would be quite unusual... and i don't think we need
                 // to worry about such unorthodox cases.
                 ident->Set(entry->Identity());
@@ -1286,18 +1296,25 @@ nsHttpChannelAuthProvider::SetAuthorizat
         // based on the presence of an auth cache entry for this URL (which is
         // true since we are here).  but, if the username from the URL matches
         // the username from the cache, then we should prefer the password
         // stored in the cache since that is most likely to be valid.
         if (header == nsHttp::Authorization && entry->Domain()[0] == '\0') {
             GetIdentityFromURI(0, ident);
             // if the usernames match, then clear the ident so we will pick
             // up the one from the auth cache instead.
-            if (nsCRT::strcmp(ident.User(), entry->User()) == 0)
-                ident.Clear();
+            // when this is undesired, specify LOAD_EXPLICIT_CREDENTIALS load
+            // flag.
+            if (nsCRT::strcmp(ident.User(), entry->User()) == 0) {
+                uint32_t loadFlags;
+                if (NS_SUCCEEDED(mAuthChannel->GetLoadFlags(&loadFlags)) &&
+                    !(loadFlags && nsIChannel::LOAD_EXPLICIT_CREDENTIALS)) {
+                    ident.Clear();
+                }
+            }
         }
         bool identFromURI;
         if (ident.IsEmpty()) {
             ident.Set(entry->Identity());
             identFromURI = false;
         }
         else
             identFromURI = true;
--- a/netwerk/protocol/http/nsHttpRequestHead.h
+++ b/netwerk/protocol/http/nsHttpRequestHead.h
@@ -49,16 +49,24 @@ public:
     }
     bool HasHeaderValue(nsHttpAtom h, const char *v) const
     {
       return mHeaders.HasHeaderValue(h, v);
     }
 
     void Flatten(nsACString &, bool pruneProxyHeaders = false);
 
+    // Don't allow duplicate values
+    nsresult SetHeaderOnce(nsHttpAtom h, const char *v, bool merge = false)
+    {
+        if (!merge || !HasHeaderValue(h, v))
+            return mHeaders.SetHeader(h, nsDependentCString(v), merge);
+        return NS_OK;
+    }
+
 private:
     // All members must be copy-constructable and assignable
     nsHttpHeaderArray mHeaders;
     nsHttpAtom        mMethod;
     nsHttpVersion     mVersion;
     mozilla::net::InfallableCopyCString mRequestURI;
 };
 
--- a/nsprpub/TAG-INFO
+++ b/nsprpub/TAG-INFO
@@ -1,1 +1,1 @@
-NSPR_4_9_3_BETA2
+NSPR_4_9_3_RTM
--- a/nsprpub/config/prdepend.h
+++ b/nsprpub/config/prdepend.h
@@ -5,8 +5,9 @@
 
 /*
  * A dummy header file that is a dependency for all the object files.
  * Used to force a full recompilation of NSPR in Mozilla's Tinderbox
  * depend builds.  See comments in rules.mk.
  */
 
 #error "Do not include this header file."
+
--- a/nsprpub/pr/include/prinit.h
+++ b/nsprpub/pr/include/prinit.h
@@ -26,21 +26,21 @@ PR_BEGIN_EXTERN_C
 /*
 ** NSPR's version is used to determine the likelihood that the version you
 ** used to build your component is anywhere close to being compatible with
 ** what is in the underlying library.
 **
 ** The format of the version string is
 **     "<major version>.<minor version>[.<patch level>] [<Beta>]"
 */
-#define PR_VERSION  "4.9.3 Beta"
+#define PR_VERSION  "4.9.3"
 #define PR_VMAJOR   4
 #define PR_VMINOR   9
 #define PR_VPATCH   3
-#define PR_BETA     PR_TRUE
+#define PR_BETA     PR_FALSE
 
 /*
 ** PRVersionCheck
 **
 ** The basic signature of the function that is called to provide version
 ** checking. The result will be a boolean that indicates the likelihood
 ** that the underling library will perform as the caller expects.
 **
--- a/nsprpub/pr/src/pthreads/ptthread.c
+++ b/nsprpub/pr/src/pthreads/ptthread.c
@@ -1011,26 +1011,24 @@ PR_IMPLEMENT(PRStatus) PR_Cleanup(void)
         _PR_CleanupIO();
         _PR_CleanupCMon();
 
         _pt_thread_death(me);
         rv = pthread_setspecific(pt_book.key, NULL);
         PR_ASSERT(0 == rv);
         /*
          * I am not sure if it's safe to delete the cv and lock here,
-         * since there may still be "system" or "foreign" threads
-         * around. If this call isn't immediately prior to exiting,
-         * then there's a problem.
+         * since there may still be "system" threads around. If this
+         * call isn't immediately prior to exiting, then there's a
+         * problem.
          */
-        if (0 == pt_book.system && NULL == pt_book.first)
+        if (0 == pt_book.system)
         {
             PR_DestroyCondVar(pt_book.cv); pt_book.cv = NULL;
             PR_DestroyLock(pt_book.ml); pt_book.ml = NULL;
-            rv = pthread_key_delete(pt_book.key);
-            PR_ASSERT(0 == rv);
         }
         PR_DestroyLock(_pr_sleeplock);
         _pr_sleeplock = NULL;
         _PR_CleanupLayerCache();
         _PR_CleanupEnv();
 #ifdef _PR_ZONE_ALLOCATOR
         _PR_DestroyZones();
 #endif
--- a/other-licenses/nsis/Contrib/CityHash/CityHash.cpp
+++ b/other-licenses/nsis/Contrib/CityHash/CityHash.cpp
@@ -1,15 +1,16 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "CityHash.h"
 #include "cityhash/city.h"
+#include <tchar.h>
 
 #define MAX_STRLEN 1024
 
 typedef struct _stack_t {
   struct _stack_t *next;
   TCHAR text[MAX_STRLEN];
 } stack_t;
 
@@ -51,30 +52,31 @@ void pushString(const TCHAR *str)
   lstrcpyn(th->text, str, strLen);
   th->next = *g_stacktop;
   *g_stacktop = th;
 }
 
 extern "C"
 {
 
-CITYHASH_API
 void GetCityHash64(HWND hwndParent, int string_size, char *variables, stack_t **stacktop)
 {
   TCHAR hashString[MAX_STRLEN];
-  TCHAR hexResult[18];
+  TCHAR hexResult[18] = { _T('\0') };
 
   g_stacktop = stacktop;
   g_variables = variables;
 
   memset(hashString, 0, sizeof(hashString));
   memset(hexResult, 0, sizeof(hexResult));
 
   if (!popString(hashString)) {
     pushString(L"error");
     return;
   }
   uint64 result = CityHash64((const char*)&hashString[0], wcslen(hashString)*sizeof(TCHAR));
-  swprintf_s(hexResult, 17, L"%16I64X", result);
+  // If the hash happens to work out to less than 16 hash digits it will just
+  // use less of the buffer.
+  swprintf(hexResult, L"%I64X", result);
   pushString(hexResult);
 }
 
 }
new file mode 100644
--- /dev/null
+++ b/other-licenses/nsis/Contrib/CityHash/CityHash.def
@@ -0,0 +1,3 @@
+LIBRARY   CityHash
+EXPORTS
+   GetCityHash64   @1
new file mode 100644
--- /dev/null
+++ b/other-licenses/nsis/Contrib/CityHash/CityHash.dsp
@@ -0,0 +1,159 @@
+# Microsoft Developer Studio Project File - Name="CityHash" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=CityHash - Win32 Debug Unicode
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "CityHash.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "CityHash.mak" CFG="CityHash - Win32 Debug Unicode"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "CityHash - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "CityHash - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "CityHash - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "CityHash - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "CityHash - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /dll /machine:I386 /nodefaultlib /out:"../../Plugins/CityHash.dll" /opt:nowin98
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF  "$(CFG)" == "CityHash - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ELSEIF  "$(CFG)" == "CityHash - Win32 Release Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "CityHash___Win32_Release_Unicode"
+# PROP BASE Intermediate_Dir "CityHash___Win32_Release_Unicode"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_Unicode"
+# PROP Intermediate_Dir "Release_Unicode"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O1 /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /dll /machine:I386 /nodefaultlib /out:"../../Plugins/CityHash.dll" /opt:nowin98
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD LINK32 wininet.lib kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /dll /machine:I386 /out:"./Unicode/CityHash.dll" /opt:nowin98
+# SUBTRACT LINK32 /pdb:none /nodefaultlib
+
+!ELSEIF  "$(CFG)" == "CityHash - Win32 Debug Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "CityHash___Win32_Debug_Unicode"
+# PROP BASE Intermediate_Dir "CityHash___Win32_Debug_Unicode"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_Unicode"
+# PROP Intermediate_Dir "Debug_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CityHash_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "CityHash - Win32 Release"
+# Name "CityHash - Win32 Debug"
+# Name "CityHash - Win32 Release Unicode"
+# Name "CityHash - Win32 Debug Unicode"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\CityHash.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
new file mode 100644
--- /dev/null
+++ b/other-licenses/nsis/Contrib/CityHash/CityHash.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "CityHash"=.\CityHash.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
--- a/other-licenses/nsis/Contrib/CityHash/CityHash.vcproj
+++ b/other-licenses/nsis/Contrib/CityHash/CityHash.vcproj
@@ -166,17 +166,17 @@
 	</References>
 	<Files>
 		<Filter
 			Name="Source Files"
 			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 			>
 			<File
-				RelativePath=".\cityhash\city.cc"
+				RelativePath=".\cityhash\city.cpp"
 				>
 			</File>
 			<File
 				RelativePath=".\CityHash.cpp"
 				>
 				<FileConfiguration
 					Name="Debug|Win32"
 					>
rename from other-licenses/nsis/Contrib/CityHash/cityhash/city.cc
rename to other-licenses/nsis/Contrib/CityHash/cityhash/city.cpp
--- a/other-licenses/nsis/Contrib/CityHash/cityhash/city.cc
+++ b/other-licenses/nsis/Contrib/CityHash/cityhash/city.cpp
@@ -40,20 +40,20 @@ using namespace std;
 #if defined(__GNUC__)
 #define LIKELY(x) (__builtin_expect(!!(x), 1))
 #else
 #define LIKELY(x) (x)
 #endif
 #endif
 
 // Some primes between 2^63 and 2^64 for various uses.
-static const uint64 k0 = 0xc3a5c85c97cb3127ULL;
-static const uint64 k1 = 0xb492b66fbe98f273ULL;
-static const uint64 k2 = 0x9ae16a3b2f90404fULL;
-static const uint64 k3 = 0xc949d7c7509e6557ULL;
+static const uint64 k0 = 0xc3a5c85c97cb3127;
+static const uint64 k1 = 0xb492b66fbe98f273;
+static const uint64 k2 = 0x9ae16a3b2f90404f;
+static const uint64 k3 = 0xc949d7c7509e6557;
 
 // Bitwise right rotate.  Normally this will compile to a single
 // instruction, especially if the shift is a manifest constant.
 static uint64 Rotate(uint64 val, int shift) {
   // Avoid shifting by 64: doing so yields an undefined result.
   return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
 }
 
--- a/other-licenses/nsis/Contrib/CityHash/cityhash/city.h
+++ b/other-licenses/nsis/Contrib/CityHash/cityhash/city.h
@@ -41,22 +41,21 @@
 // doesn't hold for any hash functions in this file.
 
 #ifndef CITY_HASH_H_
 #define CITY_HASH_H_
 
 #include "../CityHash.h" // added by moz, specific to nsis project
 
 #include <stdlib.h>  // for size_t.
-#include "stdint.h"
 #include <utility>
 
-typedef uint8_t uint8;
-typedef uint32_t uint32;
-typedef uint64_t uint64;
+typedef unsigned __int8 uint8;
+typedef unsigned __int32 uint32;
+typedef unsigned __int64 uint64;
 typedef std::pair<uint64, uint64> uint128;
 
 inline uint64 Uint128Low64(const uint128& x) { return x.first; }
 inline uint64 Uint128High64(const uint128& x) { return x.second; }
 
 // Hash function for a byte array.
 uint64 CityHash64(const char *buf, size_t len);
 
@@ -75,17 +74,17 @@ uint128 CityHash128(const char *s, size_
 // Hash function for a byte array.  For convenience, a 128-bit seed is also
 // hashed into the result.
 uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed);
 
 // Hash 128 input bits down to 64 bits of output.
 // This is intended to be a reasonably good hash function.
 inline uint64 Hash128to64(const uint128& x) {
   // Murmur-inspired hashing.
-  const uint64 kMul = 0x9ddfea08eb382d69ULL;
+  const uint64 kMul = 0x9ddfea08eb382d69;
   uint64 a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
   a ^= (a >> 47);
   uint64 b = (Uint128High64(x) ^ a) * kMul;
   b ^= (b >> 47);
   b *= kMul;
   return b;
 }
 
deleted file mode 100644
--- a/other-licenses/nsis/Contrib/CityHash/cityhash/stdint.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* ISO C9x  7.18  Integer types <stdint.h>
- * Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794)
- *
- *  THIS SOFTWARE IS NOT COPYRIGHTED
- *
- *  Contributor: Danny Smith <danny_r_smith_2001@yahoo.co.nz>
- *
- *  This source code is offered for use in the public domain. You may
- *  use, modify or distribute it freely.
- *
- *  This code is distributed in the hope that it will be useful but
- *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- *  DISCLAIMED. This includes but is not limited to warranties of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- *  Date: 2000-12-02
- */
-
-
-#ifndef _STDINT_H
-#define _STDINT_H
-#define __need_wint_t
-#define __need_wchar_t
-#include <stddef.h>
-
-/* 7.18.1.1  Exact-width integer types */
-typedef signed char int8_t;
-typedef unsigned char   uint8_t;
-typedef short  int16_t;
-typedef unsigned short  uint16_t;
-typedef int  int32_t;
-typedef unsigned   uint32_t;
-typedef long long  int64_t;
-typedef unsigned long long   uint64_t;
-
-/* 7.18.1.2  Minimum-width integer types */
-typedef signed char int_least8_t;
-typedef unsigned char   uint_least8_t;
-typedef short  int_least16_t;
-typedef unsigned short  uint_least16_t;
-typedef int  int_least32_t;
-typedef unsigned   uint_least32_t;
-typedef long long  int_least64_t;
-typedef unsigned long long   uint_least64_t;
-
-/*  7.18.1.3  Fastest minimum-width integer types 
- *  Not actually guaranteed to be fastest for all purposes
- *  Here we use the exact-width types for 8 and 16-bit ints. 
- */
-typedef char int_fast8_t;
-typedef unsigned char uint_fast8_t;
-typedef short  int_fast16_t;
-typedef unsigned short  uint_fast16_t;
-typedef int  int_fast32_t;
-typedef unsigned  int  uint_fast32_t;
-typedef long long  int_fast64_t;
-typedef unsigned long long   uint_fast64_t;
-
-/* 7.18.1.4  Integer types capable of holding object pointers */
-typedef int intptr_t;
-typedef unsigned uintptr_t;
-
-/* 7.18.1.5  Greatest-width integer types */
-typedef long long  intmax_t;
-typedef unsigned long long   uintmax_t;
-
-/* 7.18.2  Limits of specified-width integer types */
-#if !defined ( __cplusplus) || defined (__STDC_LIMIT_MACROS)
-
-/* 7.18.2.1  Limits of exact-width integer types */
-#define INT8_MIN (-128) 
-#define INT16_MIN (-32768)
-#define INT32_MIN (-2147483647 - 1)
-#define INT64_MIN  (-9223372036854775807LL - 1)
-
-#define INT8_MAX 127
-#define INT16_MAX 32767
-#define INT32_MAX 2147483647
-#define INT64_MAX 9223372036854775807LL
-
-#define UINT8_MAX 0xff /* 255U */
-#define UINT16_MAX 0xffff /* 65535U */
-#define UINT32_MAX 0xffffffff  /* 4294967295U */
-#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */
-
-/* 7.18.2.2  Limits of minimum-width integer types */
-#define INT_LEAST8_MIN INT8_MIN
-#define INT_LEAST16_MIN INT16_MIN
-#define INT_LEAST32_MIN INT32_MIN
-#define INT_LEAST64_MIN INT64_MIN
-
-#define INT_LEAST8_MAX INT8_MAX
-#define INT_LEAST16_MAX INT16_MAX
-#define INT_LEAST32_MAX INT32_MAX
-#define INT_LEAST64_MAX INT64_MAX
-
-#define UINT_LEAST8_MAX UINT8_MAX
-#define UINT_LEAST16_MAX UINT16_MAX
-#define UINT_LEAST32_MAX UINT32_MAX
-#define UINT_LEAST64_MAX UINT64_MAX
-
-/* 7.18.2.3  Limits of fastest minimum-width integer types */
-#define INT_FAST8_MIN INT8_MIN
-#define INT_FAST16_MIN INT16_MIN
-#define INT_FAST32_MIN INT32_MIN
-#define INT_FAST64_MIN INT64_MIN
-
-#define INT_FAST8_MAX INT8_MAX
-#define INT_FAST16_MAX INT16_MAX
-#define INT_FAST32_MAX INT32_MAX
-#define INT_FAST64_MAX INT64_MAX
-
-#define UINT_FAST8_MAX UINT8_MAX
-#define UINT_FAST16_MAX UINT16_MAX
-#define UINT_FAST32_MAX UINT32_MAX
-#define UINT_FAST64_MAX UINT64_MAX
-
-/* 7.18.2.4  Limits of integer types capable of holding
-    object pointers */ 
-#define INTPTR_MIN INT32_MIN
-#define INTPTR_MAX INT32_MAX
-#define UINTPTR_MAX UINT32_MAX
-
-/* 7.18.2.5  Limits of greatest-width integer types */
-#define INTMAX_MIN INT64_MIN
-#define INTMAX_MAX INT64_MAX
-#define UINTMAX_MAX UINT64_MAX
-
-/* 7.18.3  Limits of other integer types */
-#define PTRDIFF_MIN INT32_MIN
-#define PTRDIFF_MAX INT32_MAX
-
-#define SIG_ATOMIC_MIN INT32_MIN
-#define SIG_ATOMIC_MAX INT32_MAX
-
-#define SIZE_MAX UINT32_MAX
-
-#ifndef WCHAR_MIN  /* also in wchar.h */ 
-#define WCHAR_MIN 0
-#define WCHAR_MAX ((wchar_t)-1) /* UINT16_MAX */
-#endif
-
-/*
- * wint_t is unsigned short for compatibility with MS runtime
- */
-#define WINT_MIN 0
-#define WINT_MAX ((wint_t)-1) /* UINT16_MAX */
-
-#endif /* !defined ( __cplusplus) || defined __STDC_LIMIT_MACROS */
-
-
-/* 7.18.4  Macros for integer constants */
-#if !defined ( __cplusplus) || defined (__STDC_CONSTANT_MACROS)
-
-/* 7.18.4.1  Macros for minimum-width integer constants
-
-    Accoding to Douglas Gwyn <gwyn@arl.mil>:
-	"This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC
-	9899:1999 as initially published, the expansion was required
-	to be an integer constant of precisely matching type, which
-	is impossible to accomplish for the shorter types on most
-	platforms, because C99 provides no standard way to designate
-	an integer constant with width less than that of type int.
-	TC1 changed this to require just an integer constant
-	*expression* with *promoted* type."
-*/
-
-#define INT8_C(val) ((int8_t) + (val))
-#define UINT8_C(val) ((uint8_t) + (val##U))
-#define INT16_C(val) ((int16_t) + (val))
-#define UINT16_C(val) ((uint16_t) + (val##U))
-
-#define INT32_C(val) val##L
-#define UINT32_C(val) val##UL
-#define INT64_C(val) val##LL
-#define UINT64_C(val) val##ULL
-
-/* 7.18.4.2  Macros for greatest-width integer constants */
-#define INTMAX_C(val)  INT64_C(val)
-#define UINTMAX_C(val) UINT64_C(val)
-
-#endif  /* !defined ( __cplusplus) || defined __STDC_CONSTANT_MACROS */
-
-#endif
index 757412d07dc161512a98beaf0667efdd44e236cf..d357a785ad9e106c5f8925c99c12191e1662ea48
GIT binary patch
literal 44544
zc%1Bg4O|r0_2?`+zyJ%oDnyJJ*NBM*V-}Y01q5LcjjM|*yOIco2n07q4b1qFzZl3s
z!Z6v!{@b)^o2D@)txeK4ZBt{@M0Z^anAp^hd=Rw>X>B@mjX|ZbDq-F^cV-by()PXg
ze_y}n=-vBu?z!jQd+xdC-g{=S-L-?#QWQmllVyt9ODRtw^{<~^aB<ULkE33V`ooO9
znk9djv7%vZlW}9?hWi?89x$${S-*Y*YrMD4*vPFnu3c{|S>`Z4u%WhYUTkc1vWnx5
z?!}+o|KsF+At$|l+rDP-t6JvmO9nscw^{odNZzb{GfDa#B>wG3jr-i-FJHT+0n1%W
zo83xLOEffPn);YMl-5VZ&4|%NP}IE;saDeVPK6%>xE2yMkZ_pN9~5=Prv|P>!c<TK
zJLW6iD<VbNz~B8SMa}+ao!3WEWfA{ICtv#jozg$ap2ya0VZmQeqY`xQ_(mv?k)rOI
z*H~M_0?ZdN3QkG~uKsGcLij&V0i&oAa67O9aE)Jr^UiCmTeo2iMLiNrk+xBB;GX>w
z+=74I!0XTd&d04;c|b?)q~4?q&UP<5Pc*d;v9mp;bOUmYU1pOFasu5#8N^tG5hI*}
zMo#E}gjY1x{xom3-vuy?G$o3n#9-w@J|Dp-*5quUf&JWtasq>;2N28vc<l;0Qlm%-
z5hNg(s#p6f#51jDk{Q5bjc=g9-$h`ohFvuHp7vA2vh1ep(jutJo$Rrm!bl!Olq|cH
zDa$f{FsaSU#Wv*apbSzCBvc;qhw?eVd9=?Siq3%M^9Oay?SQJm1n_ogBS1jRF5OB{
z#UDbV_%ka-n~uL|+&sCQzi5y-W^<%83xsAML9#+81>*RNg_~o`AwxP6PEnOmrC6bJ
zI9*~h^Scdu{`1v+P3NE5C$5;>BSyBKzcuyk?+VtSxR4eqB!CmFBVvhuKwP391dzk#
zw_DGz>UqI$?h-1_lnd4Y^D(<<MJh`oy@G8JsO_~&Kc$iOM6<U6VH*&q!)cc}og_jN
zmSYKkhqhXK?9w&>mbue1*C(ZgVL7A2x!f+*0Hnq$xo;J%(u9gLTA;~xW|D2B+%6r`
zkgg$Mxd7&#0Tj#JpinU)a|6<g<FcnhHc$x_mI)Pu$zH*#3oy`drOgWs;<9+Hwbwms
zlI@h%IxxvL2=yqH)Q-dQUL*|rvUJifCiiVxYadiK$#z;P0>D}0fOki#RUSzNc<Z~V
z(1X_AR7^P~+71I5sn$W!+GDnzF+=-iK=B}qHD*~QNC!MX1avQ<!{Jo>raTgR&STx{
z0v?0m6$d=cy)V1~&3@qps7tiHtF=nd{7JSm<<P+l?==GSZo8DE0{0+Xkhe005a1-S
z`3$LVgg<EFAJ7#F)-wVZ6q-l$?Wab8zqog0?uc6V%Y+vV+OA0-EQetn#9oFK1bC@o
z$D#-BZ1BY1R|GBpc?6E+VFh{0fXwwwy(Dv|WUg0os~83*U2-|4RZ47i_1y{!HybFY
zi(^Fi->eJ3h%>->?!w9xn?d?*1ojO~QB1uA>C$765;G8UN&G<UT3ub`7fX^E^D*;^
zWX31y%_YgSGA&?kGRn{k*xv>mJ!?Ghv&TAMm!1Qzt0c9Tmphyyr*rY6%%*%O;}jWj
zn<*%+GK~nfpjbwmz1m^HHZsX?cS`#y90i#JMhi+$Dl^*LZ9d+=6Pq+jH_iqO=3~oc
z)-)nA%iYZKa_PG;>&%Cs^Nu20lQM<?+dj0Z9-H*e(f)?+4;CG2aMe9y*YC;G==U)C
zJtZdD_cz9q{-~RBYA;GF0L8v#g*)zOu(&_@zS!$@Q$iKv5>H6E;n+Ql`GmR0Q7)Z>
zk%K`&AY{d9kQs>Hiv?fDv`~jD9qe?eUF;0Mwu_U)ukK>fp+@W{#?^o_qXFlSyor`G
zrM=LTFl=J4Sjv!^v7<|M+TjMQSEx7*T`q5e|3S$EpjSkKylD`|2j+vkX+Ua3EVdEC
zlEKz<*dy-v4D6F~JIn>?y)R^0#JOSirZf*swGL|kIO&LJJ*|Cv(vg&^;PUdR))9A#
z-66dUfbN?_;J!ie5;E!!zQ7(&MAp-C(xm1yz<?)7+86`MToSN}%q7ZPyv!NojY;yx
zM0sPpyb;1Wc_Sllq-7IIPzGlzOs<3JRZ2(dpyM23)m-SBWRR${wY_531e;0g7ysx^
zm;?c9`XpO6%<*_^fGtt5ri)gSPz6j03<|<0$vs!7$ev^~YI~ua%$Xcg|A^AoM6FE+
zl})NJXl?0}Dzdc~CN-M`lTgM8cAc<=2J+RRF)2f1KGd))>#jVpG_m2schVcMGfR_T
zVxzpxi_n%t3`|;v;wl_P!cFe<6c{sFe0%BvtxbYanq)m=FPH9z+TF7RYaehqjGjZf
z3&~lk!?{$-xFfZ_Fk};KFat&$QUT;?FvB1&jdxF<P%((j7!mzM7{PG%iUhAiu%418
zAfjGzVV|~YKwNg(4Q(3KR`pG)IIS%;Oj;T*ZiWiq6<tB#AngH|a<Bvm+?h%50LkxN
zzKSZGeg_~)Ty_TOS}5@c%QPr82i=hhZ3yw~WrezhP~9M*4q&ciw<3Zd_H*-qcpfCE
z=%2(5YMc8=FOn{t#GO`F1ZWSDtYq=gHun-vCmb&JOyW)nHb%f1MHU~Jk10M_l&9i^
zuf9yC<QPUsdK6%w>#grjJpc@we|c=q5_|wq2LOaO%gaHy=^PbKu|X%UgbDwi*$x9{
zX7)3G|M-Xd*4~~Sa5+K5q(cFrB-tPyKoNMz><2MuF#o~)mdgnw-+(l|Wj^Wa*PBnc
z%soz!6k()_s=F&I{o;~jx}MLWJVjw_biHUOEUa%o#to(Tjt0xrnU7)-xCy%7V>NVJ
z&!D0Vs|yT<uG@MVMB2l4X+TTXK-qR$9M}>gTKigzlx*z_!~&e%O-XyhaKV7=EsT;m
zmh%kB5xc4n`43<Hh%1tHNM8FfcA?qZ34-1wUgR&)jkgbf$bX_`nUtd)kqZ}bm&6`l
zAEWi5X8`Xl{?A%pe;6Ba;Uy><0WgaJ28yr7)q)<Y29p54A*Kg@bzBr?4u5jMKskm#
z0ZxV7;o9VQtrGe~d;D(58c$!##loh9mW#%w2>s8F9RIstJYYW7^2zk$lHcq#AM=mT
zf8oIKKEHUx?8W>)EBT0)4{G%79nhb0f&ny7w`P|S^hwE@KvC`9N;YpNM$LyhV`qRr
z3--X2?{-Ww?3#_LY3yA1C2il8jO7l-U^y;IssRLMZ=g|5&;i<A!Q+s*Xd<YsIs}^o
z8zJd4J^b8(KO3W={%{6z0tMzn79Te^Cl+Jd-;{};6T1?Axp1i+0Hxiqdy;+u6-guU
zu)yf}pq7g)moi|JR;g(0z%?Kg8M3a5&4%_NE{e}bL{#7wepJJT^P^$h%{xbcC{XL8
zTuz641Ohq;NPmMh3|auoZeS_KgBL(nk7_`3<8+Xo<$^imN0=c*qvdWvpkFD4v@@(a
zzF9}H6GFHdf*T5h3`BW}+lhD}1iGD#g%WXmej-FQ(6$etF|ZAwrAX+y2AK?r9Tabv
zBG?{m46JKnwPE)o`nDm+-d(6~Ka0MGy@9W%soe&B+ef%SEM<~Mg*c%U;W2}+(^1Kv
z>%!`Ps?$I!cXR8g>6?^+Wm-q=;Bzq!>3kv?Z!Xd)?Sf!s{cx#{(YV<AK<0`CDM3$}
zMu-!aCN651g{Aa%1NK7a4P?flPMgVJmf0!d+oIohF`Vz4F6ume$6#ARdp&e(Abjsi
zXva_?ZDeEJVQ$JHZB8IX0ePp5>0ko!ZjHyvtVXQqV_0*Vb*tG3eyPqF(1QdZ%okvE
zMrZ=xBdd!~>zNg}bVI*ebzu(kp?WdVS#SB!CD;Z8+Zn-jSl?C*s;ir+c89GFM2NOG
zAjmhLq4bZZV7l?HddrE%_<H{Gmd$bc*ZiF=hBg?UK7Am}?A7mU^O+#(j`RiTO2PVu
z#ixJlV^lMf+Y@HNyzuh2pe$HHuRkbQ-v#*u%NQ&*{l5bkK$dcV&EX|2o08JS-jveK
zPJoEM{TaxN;zs(v13qsXq5C~bK-1p_ffn0HOaFf$Nb^X46Zk;dZQM){e0B*bhEam5
z^q!S!>ET|8_Af>?6_Q_j+e5c_N{WsI`uVyb)t?qZa1%lB_Xrh1Q16*c5CrA^I8ruv
zr7UFkUkoQL;Dd|U>3pz(oyZ3_>)Zbljs$+e^q+u0RK-aDv2fD)^?Y_F2c5VjES-ym
zk)Q#nrT;gO$=AIBo5nNU)>9f3+MvWZBrFU=-2Y^#j{Eda+>Lv$V4dFcB5Jb1mHH<p
zKmmQ*FEL#z*0=oz(o?$iZLP#-n|Vp6Z_k9WuOGIKm>5nA<nYZwc|R@(tX6Cek`@P{
zjv?!au~O`T{h_{X9^h*~1fn)}$G1R!*#`N#0jgcre<J|vN2jLEt8e=R)suvSkgeb2
z9V%I%X<;=*MY44ur+Hx8ss00y-EH+^bF?R51PY;6%Jb&Su#O7NgL=>V6y^u<_^Lla
za}|Ba<%Vjzz@3ur3DG53_p<ZljJ;4@OWkp*!+OkPJqFuw#AlbDm_oX$-P?S#z#R-s
z<E6XUIlL6bzFMYly8zhx%|K4QK){tk0yh9Vj{d1y+^s_o4AF`xH^W|{{SZ5M$od7t
zPS)?Ij!MvcP+!!s>F>v`t~*6xKkcXbKY-{?(n;1qd;co{!RdjO?&FG~byy&fyBAOU
za;(AaT40&h=HM<!-JT4*6kY`YcIms5RdzefMvAbx8w^B3*<D15HOQP-+a;h6yPTk4
zds!@mx$}yCpC6X?mtA%_;aR9$<Y0#w-}-3_6k_ABt3lC}6JCa_N<xheq&ucOk0~wl
zZ|4}`J<UR>%q2YyvZS&<j<C>LeVZRyOA6Pw;Za=~yS<Ec;Dl`ZJ?O^BT0bHAFhf7q
z;1KrQijB-vxaHdlx2Sz3`os^G!O|WLj8Cz2VPW8N)K~g<p&|s^SX&Q_ZA-Ux01p}2
zO4wG{cUyZ+6z?q;n)~Vn>xn=KLcmzD7N9pQkU_?3u~y{@HmY8<ov9a?KsfjU(``LS
z#%Ng>ne~N$8kRzU{i21{k)pWIt_&1mX?6zu7Gf%^lZH{d(eL+uFEC3Aknn5X!1*x%
zMtUC;1AWpv=$nsW4m+*=*uzt{(e2)*NyEMTF-owW9zKEn3Mz3R0%G7}-5kx=NfeGs
zb5w{cCh&D5!&h+z?2}@w62kUTp7xiZx5<_`DBFVV-iH|_o1HIO2fhdUzX6w1=0JNt
zE!_?)5s8Ssyx)W=F9AdGmva;XwrjOjJ)(6`wheY927aMnPJy^}5NHbn&W0t)HrSG5
z;-Dp5EWi~)yh~$(EWY_5rEjNDHLV&M@)yFq=+>|d4%6*aAaTgAMpCFi%#c5fjm3x&
zxT24YKlg45*O$T#4Ec53M38SN*qm;oG@YEp7%;_S?S({{>$6L_O6rgwCf<;r9#_I7
zeWn~n@Xe<vZXw@1Ky5FAju5K`JzHc&EO@MY9d@ZbL0uPLZTD_Bs|aLnuk<(yqN-PM
zIqhBs{rOfPVJsK7q0$>l4KT1YJD%32P|b%aHdf{iOPeO5060tmzv^JMgr!u|tgCN7
zsc-*%5Vk7TGh|b+a5`l$-b5Ml!L@^X6I>TK8QdDk!xK+(>iHL(ef9ZJ5_SWXF#L?{
zmnpx~C2oVQ0@AvDhR7x-IsrNnT)gBXrxQB9Kn8h18uORc)qaP#3e<4_olX~&xD^T~
zK`BGM7=fpzNu{NBNl?qp$8!EVq1-1xD$%uhiWVu5ENX-i8L=oRmXG*%4k{X2n0%xm
z9@LWt1`kF54t>%<W0b<^Nu`VYZpy8J%5>5s<yh43)<6;^(Q4Es{fHbFug=L|g_`OF
z(g_Jkp!$LwO9YSKmaL<&CGkQ&DzhEaRv=*B&H;sto5k2O5OR7R9I*^EP7)&&()hEq
zB?Cd4KC5mpB3+3{SFv*XH5(I>F(Hj4w4c12jg+QAc(orX5C}DLLOc+#+V75)KEffv
zK;~o&IH4mM3$&{#cC5lKI`CPw-znX611g}ik@TRvYXwxo=DJz8Mlwvs1HH=jp-Og+
zQ_jE~IU%`)v?9?dr6VPBf)NWYrDeB9h*((-`;BV9Gzcub6X5|P8wVXT7lC341~NX~
zh4vlap$y%H@i@tVQ{;qf08uItgK|PTIV}f?KcA4&e#00kw_Hm~f>Zh_o^W3wMTiJ6
zZiBRK5K;lN32}7+e}zcWw|x_8C4B-l#M-Y^$F37glL2R>U0M$Nl}fR6wh}8*VkRY)
zsl>9C*lZ<MsKjnmVkJsUr^M{}*j!Aw411bNr!<J3n;PGgYGn^x=5V?iT7ciA1qQXz
z9OIrU{T#L@l|lw;+uh-Pz$iv&gXd9%v<x)e)Pm}NoXpoVR99(u^iG81yOP5(KkyMq
z7HDM|)Kbqk{~ffgqhx75(+*lt7Y4IED`^jH0j+i~-Z@x;+rq?PPCnMt?A&)6kSR3%
zT(52yd4&cc!qY)W@HHj1+yf*qGJg+{P#7L9#_`_dRv#gt54cUiw(T|0%}K~S)Glvd
zB3eg8hQBDY*_~S0-=ytkxR`P|p+p(mnc_QQ*H`Q`MB9iMB`}>a9c45R;;yvVGQ90o
z^GPvQfjP<NwaT9KR?gObva6JC<-*-VD+AG@ziha7s+afv1A3zn$2`c(GCSEdR-uk;
zK7;~37{*1kETszrdfatJLy!s3@Y_<%U)FB>uAG5QkQ4H7!lAH)QQL=glj)Tu21&<T
zf=x3#t9AT;j8JT(Lrz$NRYvgL%CPYMWJ|E|&vK^pDeP$ZTc}FtrPfi>OM6kQIm{<>
zrb#F)T(E820UDy1fxBw6+!>MUXD8<6vzmoY=|`}~uJo`Gnt<e?-$Y4emm=Z_?^rGf
z8F?sv7<ZJk?i_HCn2#8;r?WW~E~ySmic+PuWqv+;bA@yiq85Lp5JAB6&yneqDJ_Hj
zDw0;I{UUohcc@AxL`bQ)4Hu?iSh#6*b$9q_pcJR`-Rf!gRn#AYC4S#M0NX$V4D6K?
z?0El$#|1*h61?FW%}!*2={(jTtf(V)hr=b=2$u$7v^{i(T}nlA2l#`DmJ2{3BmH0i
zC=9^^BYEgY?M|08nUq3pvP{TGe-j62mkB)eOxl(xTH_r~eg-V=2A9~Z>!viyX=}U8
zGC~&LO$*Jsmh79kl1{s(u;tRt?3}h^>@5ABV?&SZ^ic+y)yW!=6%n0=jvGn~N%%by
z4!lDmbjvMNDIzE>3>1@;aFX3=DAeycF~pBY65g5EaZ@SOVq~MBmZ+9XQQYCSW1O}u
zzz|gRGAz}JR7*C@+CHGO(}1wy2&XL!oFnNykUpMxu_9g$>$Wo3F7wHj>{T3HSR5Ee
zlIDWK!_6|wIn9Y|Y|9qS%^tgkqs0ROt<a3OBIaW`6^Z(99}p@Mj|Rl!cY^L4SB!*o
zMXV~7HFt6sIt@VQV!k<%f@uMy%m-4~T)vs1*m(drWn2>@l>SlrMnA3twU8=n3j0^e
z<a~v6n5^laj8U1@^0(scCrkmEs`8hY@2uTN85|Yj?X@k)P3Dv4A+v1pb7uKHalmqc
z)pds>1W`(7%L(_8iEX*8Z^K1i$wOm>{wK(eQ=@OkttIe~PARW%I{@+eoSVchHm<O+
zJ|~g8sCeg7y2SidfbM9};V5)C>`sS6C`nG2KM*BLfK98Ao{3hb3@ASAOoyWauZoia
zO8x-PeDJbYii*N{vI;aIa85a4C6eb4I8ekav0Mf!#wcd<vZssPY;<9EB6k^ohElo<
zMX5r{idLsHN1KNNF%>RY^At4^MAr(kzTq*3deBN%HaAKXIiUe%ervYvE-qdy%Y$uU
ztk&0Ac4J3eXW`V2QVm&j_Ra-;P%2BpJLCo!0*Aeu_}?Z+QyUe@cq9KN=&5oTH-Ue1
z9R$J~8MkI-Kc4S;+TZ<5mK%1!dS!1gw4z*GM+)iNjt~y?cn~1_hxp4*>eS@bY-92s
zdYGPT?9dctPvJgOFt~59Hw2-e)I3$)40DW<6IkSFuN{RtP<Yr?;gS7AO!9c}_iM0X
zmR&(%mws|1s!kR^Ti~8+mp%k>3Xw|IR4Dd<=!t8|v2b+9lmIDv-W?69_(PKk9WYYt
zG*|}ML_E!#gwjTO3NW`ck3>}Ba-s#%V)nYJoRVaw0qsrn-}b@^vxRiRu7j{Fu$j`g
zpadY<)dNv3wjl`HI7vGdw`9@C3W?IfndC@SFK1v0Ie~4#gD22HSNeBiAt#h}arH#5
zZt+qEm=G-hvb}KUHi(J&+aTiEsB1tAlLj<<ku&8F8qlo8O@i_!8Z{1r{5`%azSu(0
zY<ow}Km=Fvs_qWliX`2<-}n?D9u`ZH0pe6t&@ik?%(M)1e;rRNYFOisJZ}pfdCq7U
z0XC3e1)z2|z+|jcwQ*c(C7hX+$^qZ=xJj#E%!l^2fL3HNura)sDato|lQJ}(bBgDD
zpK2}N!7P1y5`cy()3>215N`a`3iWLtKtk&!tX1E34)vt=Rb$-arWE#p0+ZBqstwH^
z?!$GoQb}^zJ#V5fEr_6~!b(1vw`q=&W0&s0W3-?W<0Xq*s|_}c@RY$NWz1GKh3)si
z1Zn8w5$l9ltR53wb}4==(r}98Y9T@1)3$?B3)!V}u&g#1jG7SKs|0S@t%!N<>cA}?
zE8`&ra3nIN=g`yw0`5UYqk++BLuK-is`C>)rK#|%^r)edR$9Z(0$JjlLr$b|Zw89}
zY@!?orRdwR&UmpK23C3-QoE@r9I->#N+X3wvq~j^A%6~vR=JXkm3EFn25!gAo|~Ws
zx~P!C1shhP?xV;;oy#s=x)oK79yu^we24#ZI#4QhT_Lokww3<E1Jn{y{yW;$Kl`iN
zl{RNwyDr>1)~<86UTGKM$9T}CK(E8a(jYVkh2{Y+((LW8*AQ*N7Yz3#wG*As$^ZeL
zbg!uOeHu1YVxo;~oIA{g7r7@#$&OXjYP*IC=@xyPkLVgYL}?v?HCO-W-wA`B!AnBh
zNQzBou^F1?Kv1@hbVjvYjOHR`>p&M3TiC&XsPa6CkSTAqUPRNRZHJK)NeXCAgTNC?
z%w-p~a=J-j2I%8r(TaDHmhNpapc<uEbr!3kvC|BDeMr-{<2hMQGsE8N4zJGP7;cGl
z@|LlF`4EDFDNv*gnqXxD-5%SZs~m5zVfDIF37{T?775m1;3rprpT=&Oa*H~^b44w7
zP$7#KB`w)E>f2t#X||43mxR^1vAXQQu@vh7(X8e0b^CCeZoo?<Jo_RSbzY%}VPpA4
zI;OiQ5%U5QAVPbJ;voZ)P^^eW3|~W2f`;rlEo8^is0EQK_P}@n+W@nuY|{xm!}k^X
zcY0CKy5rlu)m$Vw+X_Tjx|$=!u3ebprtQ+jNT6ZY?gQB5N^XXmb_yAoC-q&G!MJaf
zF8vi0R1jw<!Ndg25$FlL*U0<md^~X7_ILB4*NvEYPW1Uk2^**XMrC7>eiXOQc%r4{
zqh<bpv8eS@3jl9B3Vi#0VAhuW6~xLcyuTItj5PAMSe3=sI5~eK;NNUW@d2Ci-Xyzp
zI0EG?TI<LOkHgR?=On@S<`|OwGm=d%3a<wFdW<K>VchX$jBi|nk$}Lwa?1^gAa5Ij
zt0_Y*nzK;$T45IY{Fy{F7vn(j)wiK75Lxzc|7C&wNDSiR>qaQ26puR+!Fn3+^qh9d
zgwaYKW{iY~@qF`XDo_q3auot$C38URZIqPV))7<_@j@6a$ehx=o7B^`Q-Dlwm$^PP
zBif*(5|l9n<td7r28<kt226hrCub^S3uXc?!=i1VRzR~)<wpIQ`(<F+VINu;v+<pp
zqBbvEs6@GQ;aEh}ye^N9Zr2{+2W0aBV2__t8ci!JiA5s-o7Q%kP5vo}GK!t_Q`E`W
zu)rTYMKWSd@%cSPqhp~j#zG@%NX|IDPdTfTwB+o_&u>en`!?T9t{{^r<vQ>NR9#pD
zN$Z@gq<sW4MH#Q%UpHQ8-ZwT##V~S~j22KO^pAZDPsySr7d<v+uO=vCM*37ogdmRJ
z1O1OGplGwB4Axz^74x!;XQQ6~bReL08>$7wT(TGVZytbZ=qn=$;$MPEshu_sdu#|h
zce^u?B$D0iJc6EJ=Cq(v@m_uMfc?r4e*4QqNG@ad)k1q*pte7a0Qpa$P6qndJ&?-A
zIpq)BlcYv1xsSeEm4_hhrc)|Y8QM>>(E#!aIkVRSyl6Fq%xTC?ulXcwU=nhw46Fe+
z^&BoHprUH)g+#L#0duBN`$1uxB-$9u+iYaLevh|a&_D|UpNO$zcUMK47Ix`QJVXYC
zX!~tBR>QVC%!hKS82ytzG|99(-BEIeVLvwYSt6|oF!w`%Yz)t?)^OjFBqPe;+mLn;
z)V$eCihJ=C*{%6fd3`%>2Lgu(e?wDBk`rURTq1B?JRSp^j}4zAmJK@aj|Ymx9y}5i
zSHLz1(vJ2YJ$dx+M|)!qaf8Db#DU@3<V1idNsb@>RC}~B&H`|onZ`&9z;4nkH6IhZ
zs>j<zI1p5=jvyq}q4C5yG>r(@Np%Kd)&Z&4RM&&X7T<&)gIbpk>WYK9m`zLy&^~oV
zay<A9_`2Z}!@c|o3M+>p!x0-Q)fMX7e~&y?N)9+Di#`AJG8`8D@8Yb5&5RXvoqLjT
zPN1$7FLBdDU0xq6%l$i)4JtQRUP^D#ixHhRT?eDzW7WwKfmr=Ms}6+ShaaOE57v7a
z?fL?%$HU4I2t5Y-voY9b5h@m;VhP6Bz{>y=>kRyyFQrEzCk}7{U-1!PQ2I411Eqh6
zgjQBpfyR~bJUN|>{|@}VFK5uIKlr5Lzf1gTJn_%RGp>C{o>Wi5Qd&o`5IeJV6brFa
zTSu`FJE?UP3$ZbF*q3BVf4vBVlG86dC*5{XMg4(V)dy<TAE;G*u)10`FLd&G?N}M*
zNhdy6;BqHQ3^BN>Y)8(WAh90-a`4~6%Yy={(#1u~3D_W^AP^zBFDkh>?<-fsK8Y-S
z)vDPYBP)27<*Q1Shu(j&e(8U~=>+_Lnjh`k9FKDxg-$i!g%S;NK=VB*RP{lw{;}QT
z7rG*``Lrb;W$5N@Ahqy7q*ACFaY>wk2)I5X;Pj}jRrRseGIu&qW<CjA3BY$EFp;1|
zs<6y~)OXQT^J-!F{^W7EmZ-QUIvr?&d;SE`S0RNfaJrfC;t@(<@~t`3a7AIKJEePW
z21F<dOehK_ga|o+Rf4ST``R@TZ-$tF+w(km0Y)S%nM++D^~wTi2`!NSd~KWwYvYZ|
z+8B3bZQLpcVm(_&1B_?u7XhtjD=vmQ75|jZ2}Nzk*xHWC3)L#l2Ev8Od^b(%5jAQ}
z;)JofJ^}djwjuV`;RB?miRhE6x`oM#xmUds=vo*?jYU@bJ5-;X>?3oyr%1(Lpw%-Y
zJ&D_h-b%}~HW+OfWCk`DL;V{ewf&^N%?ZBw*xuRSr3^WVEX#XM3-S}6!i})UD&Yyp
zZeqk$ZRygt&(Pp22K=n&LBXUd&EEab`k)jiU3lq5fne7^8UT7*n$N;^7%vGuw$D2!
zv>ns8{Q`H$dx~WJo@15+`p59Vr=^1&(G>>H;=1iF4B_*nFTe1T?^F6k&okLTREvcY
z-)84_mTQ!=QH_4jB}@0_c(G!n^FNIM!0bRgg_iD3|0pVI$)UJ+VL!wB8NPXhZuG&-
z>JER}s~p<dcOj9|J4o4{xlnfh4v4?-Lgg-O(F=j)fMBak>Dw1V&xu_Mg-l^So*y)x
zb4X9()FrS&2I34v^0UyVfON$4(n~J|;`sa{`%qcdOW(s?#+!H`_&9FP-jQKY^dopS
z-bL7ysIjvMG#?!04Bg>J)YC<I)+^+i?2D@tUnYqooPH-RkXLdDrrVzf9%FCjC7PYg
zOR=o3jKwX;UK$h<|K5q@muB#H0)|~zdK`vNZ2;+?UDzbjN@$Pzo=AK+>au5?b~yt<
z6s{mgoM?+__U^-@?T)taGtkgNOIPDyr}cbSJI0JKcd{HVPsIiOo@h`ZEWXXtQhGdZ
z5YVE%MtH;zef?n<UJ~EtKha)zalwMl1#+90JF@z2H*Qxi!B}J<HA>aE?}U<0yIUij
zn1Sa+kbs;{a-Cz@PNk4^-*gpb<jXJ(xbITo=1)geYL(gR@nDtp;)J0C8ukW-2MnFx
z4#!G5c07y2o-}kIj5R1(M$7`-fxomoi<wkmQ4w^&{=g!&SNLF2;}kx4*XH;TuAUa3
zv7>`vn$8Dn8Yl6=hc?HB(Dk(R8v}hIWPoa4^&vl>j~5&iH_`otl!z?U9WJT2AXn`G
zV6a@ouFqx=n;Fq39@TbPMmI5*p#G6906pAI1W`P6IR9rYf01dNbKwO!`N`c@SVy~G
z$4tJTZq)I8T5XS<-0m%beoyx7h3p;R=b?WD(ni1;Au{u5XGBM2XQ`%Rp{BDm4A6Eg
z4CA}Bd^bUUcnrB`5j6%&pfr3}7~dU+P(L1n+M&Rd0>nbhd3=2NAA$EcxHfRxz_H-g
zfvW|#3h6KT#%ZDCiPPXq;7j120sjp61K<yUKM4LH_(AZ4;E#Ym;-NjbIA{m7!B9`g
z*kCWX!{GX?<m9D#^&$Tbq;7mzX}OvLG+xyk&=nzA51TsT*_Jb+_J8t~{*V3Q!V4o%
zZ{b3$clbl-<$+St-q3hlRK_C($D^#2j0XbmSP9`R;GPB7S*o3Rv}2)mDIi{kX!ndm
zi*%{^SH|dU82>rx{l~{a?idFLKv%}<td{>A$<;q{7fhq8aSuZMBj9L=>cGW=O9Gb+
zE^8qfmn7)tB=8f#PXs?6e9+#%VE`ZVb>M>n{S5|u27DTP`s#5}`o|8xE5S8@+qQ7r
zxRh#v>T%;h;#ZHs__V9WjT{^rLQXZoFeq!O&Vg2s<lVB)>7LCRfg9oTaYv)suGjDJ
zyBWLGI~~>6fIhTK@^{ijd>`&C!#i&(4IF8?d^?olB6wSTSRlORatap#>5v3lG|*`t
z7c|OkQCkZMB<r8pjO#2p+(~Y^Y+|Fjtp>Es3Z!*L<ZWSN^H!21e03u*U9cH)YzA&J
z0CE#aKApFcV>+ufrC0~-uwcu=8TM<@kjy%$60hHLVY|*vJEf@#@i9A*_D*^u-$&z?
zSikRWzTXr`3$-=I<&*|)8V6c0(i>-X1L$Hjuamxq+hVbY@6W<R#Y~Y4LTecdH`o}@
z=|VJE-r9tnKnJ2gZ#8Jo30zRLlGDe;{#smdt?{yLM6A;7W;oo?MvxbtMsNTEckZV5
zp&ceSb+?8q;QPYZsMcnD&8%f}6zsI;=5WDHw@Tlbh!$+|nr`Z5)W9Op8a05gr6h+9
z^-lE;_o97Z5KxCh#ex<<!&pYN2GQgdXbA>lM5_)j4TNmG<oeR_%3;p}`EI|eO?qmR
zDaD50A@=(E7}x|d!v~1!H>opvLH392(Y8Zuxst?v7Srnz{l32#oH4y(^nRiN`ov-L
z+rZx!`ExR=f`2r3@dxPEPf!=+l4cQ=@Hl!Jj%ocA8_ON6UVS$nEG`(y?qxG!ZT&p^
z6niV^rhoHE21rVPq*IU-0ZH!$zEizgp?JY4lmqVz#T!9SJuhNh4rk{Cw4ee7Yi;L)
z8qhzNiNm<R?u;zWK0;8&bVgt>8rJ21RNuWCD8PgPF5uZNch-bKWwSdYK%!^&aR)n#
zv``|kvtH(XkidQ%_$8h&tnNI}e;n`87RnIui{1E3)+-0BR)4ug{18{HVYB!A&xb$M
zzAcWzGIrs|ou#t*Q0_u`GtJVA77ZU2eRt!O4UI>6J|4+>pcRert^F9j9e>(2B)#cO
zN{@K3T_b)XGGZZZ_cs)3$R*Xd%|^R-7hXzn8uHo*Ka0g>m!E|fR+L+_Yoiz6Nx*$l
zcX$K*qWR@Y|4z*I=vv5ym`B%P@ipO*1D#^mwO+y-vBpT=8y}FAgDre@&&DYB_C*Gl
zILdd8q-@psKG%zXTziNH9mMmvrUd7wZ9t4$H009=wh?{%r;s7Wr+Si7g^EGZIU-a9
z#fm}DN`xvMx7~M%Ud&&bze($!f0uYCZMl=-mhhL1O*j1x`9yr{c)+tHj2=EdW7Xc0
z(I{><P%vXkV1{RL9|0K4etPdghyz3fLR8WsnSlW<`VL0Co7UO}g}Z2ca~4t{u$&Pf
z{peNoR|WaM09k|jcGT=sU|v@ReV1wXeAt5CS#9}fQ<(UX))o|x0uC%_c^^{Vx13<t
zh&G-0AZ>Y&;R^Z7#-^lwg!;FSpB;XG1`Cug(bC*4NLgxNy64V5l1(ySRp`ciLivL<
zLB)uRXkn=mro}~!u#|yrhvrnlhG3B57|RL8;v2S%;;N&xM|V`Hh7ybb;7e%%5G<uF
zOBwE-PUs)#&<>k^)Yk#wrdch`dWwr1>tCofYRZ+~F4<cWl^B>qfDBi<8KEj^h`&za
zfA_Qz!lMi*fg*$w6D$J*GNW%F#_c(BA6{plLJDKo;dN^UUV{2Q(QC_ezr%}Ba_#CU
zm)}?NNf8xyl${|_wPc}zf4&1NQ}9B3w5(VOmKj>M7E@dle-AxMQur;5%&m36+}Nm-
z-zQ1(M#I%7&xGs61j6%li?1(C>>+@l&M%p8rrc8&Uv8HcPf=ee)XA|3ZwW_`O*H=i
z6HlfKnNld(^O4A1m^=2~?3ws+bvT?*i_4Su2m&{cc*-X8pA5hh@m-`B@fVHFaj>I0
zewMs1!3_osysr-znxW$oL_wVIB=z)KK877{(-fE@qGhHnICC`Sk6aAzkGE8fKt|)=
zz~{D#CoH`PmT(nVIDiE{we)h80Ms;r{|^TE2hspC@EMl7B~&h!<PrF@03Ro1<J|3S
zKM9#^yhA#HmeAsz20<eh8~ALQT<_^2QJ6-kEH;P+{*o+IjIi<I<2!K7#BDoDLWE?A
zO47!XnH9mA+#qh4J!K^^?~B|ZH(C5<8}1IRBaq4aXmNCAPRs{vKWvc2x6JZ20%lNL
z0(jryV%2KgMyO<U`=M>&M?YB@7#0Cw#YI|-PJ!uhPOt@iqx4dKbpCdj=GB&AeOoLZ
zCM>2ciy5wlmyOLS$^`f$GCF9u*&tGcsxvcJb(9F;M)h1a%skO{W=2dP)wAr%q#&@K
z#|e9a6q+)shhkie3VbI`W~{iF5g($_7+ly&L#^UNjIfo_w|$$;-$8NPIheoagokKh
zF(Z^Cgiy|?)YWz_iJ<vWn7=X2b4GnF%`sF5q;N6&3Bm6i|2)bv76f{twsn*Q?idFc
z>si`I008noP%L`hAk;##Dutr5L|d@^5E~;z3ri-9pv(-4+<^9|XQ>90(ner>#JKiD
zo~;_8fV<H$4Vj&r2)Ha{hH{bWdV?<tGoA%BnFz`hh{e?g?}RNr&g3Z(>@eT#iUEZy
zG%5GOq_lLiHN3Jkk%dexjlqV4Mfjc)%p#?LC%si!^DNy$se!%CO*i1jNr(xDOHO!I
z&Czl3@}?`5v=Hl%z+`?YBMSw>c3KW6Rg@ZdMkeO2XoW`>IG6aKK`dg-C)>TiPkqI}
zPk#6OwO-`FyF6_s!h#_73K^l0=Do~f=$^}N+V?lTcB_tDyb{w7l@_$hff?P8S3I8Y
zQX47Ca%pp(XQ6>F3(9=Q89gw)r(*=X?!u7)@SqDjMn0Eip^WZs!Lv(D3?~Xg*#Ib?
z-DtYEOc#!C6}UC40Zb@jJd1Vs{&5k_*FIB132!`uW87I<+}ShgYx9EW=~!CKX`{B#
zud6H5--nOQurs2cj1`}6dI~zpQQ>rPk^9h!B`~eQXuMX*K$Bm6n-1sB?bx&{Jzt2B
z?}@>7S>N^^&PN)ih=wAa;c&_C;bMS?XL}L1Wq`Yh&&Lo5n_cMh`N<@fv<v+}f)KG2
z141b+WMDvqfXVY1*5mocQ-DV(jrWu$3QKjuc7S5cpZyliR?NrvFAVx09#}l{=whp2
zfS!TTY5js+{Qm_O1(#I(d&Rt<)S&fSf=yFfo<QXrlsQI->|RLY=XzSZ$@Tatu`6(^
zYQp1EOn6#HkyciJ%}u6aN2b_Wgv^IF8I&S98HIb%oD>?c3qvXjBfj4qhhGa|#0Xrk
z%joeKtNnZ|84!gjLFFR7;NrI%WJPQc(YX(8ntw+P%%@uCBjsF<=qJmnwp6+QS51##
zCorAY%W~|y`>-o<XFyxJH))0KIuN(AjbUS30|?K5&a|Iw{uSRmLW%E)n`m|}zco?j
zZgFcoMaH{O;OiD(k6t1@`nlrcE2b14rCSJ*Y&4oS>YuPf(%A9f>)2|i_?D%}uqoV9
z6yL~*QI@yZtiajbdM;HQcpXoeT0fP6(Jkj2jnI=iAr4<=5PRxjA2E>P6XH@1RQrOo
zr-WgM(LAC>wLhiI;Jc{vl=R@;mQKHCg2vD?gKEvj4(TqWkuA8%ayT}f&&OXQhsN&D
zlQZ|wXC}xfxkM+fUivnCWkKA|c)pPc{VR5-bn#N6FR1nP>9hwd7h&c%<%)Wc>z22-
z-I%kQ-jv_~h2giFkPRM(D$#11?^ZF8sY}W=_9*K?DQIT~&-O%E-Yr4UC7aA*q{Y8&
z3L=Yl;Abo(_ZYfc09UJZgp5x&V`&aH9#gPnS_s)}LVq#zwLl_srVHDd{@EIJrinrR
zVS@}C$cJ?lXzlYYLB-Z9Ac?DW$V1`<(VsHRpH1|QYJH#Tw3`jQMdl^|2N=*Sfx$EA
zY?=KWngjx_PmykRCw|vO5wu<UcKrAkusj!ZN~e9W{jC^5!jFk>Z#Q{h-d2pXbPSS7
zW~T-F$m=*TFgGW37m>jsy~Fz$*fMkP3;Eax&tuqamYyaZpChy3kQq2{>6z-C=@S;>
zhZj0Z8DTXuM?0sK_AH5DJdYyx2yuaQDg83OZp_XB#jvB2@vNA_kXa{8Aho6(ht*ZT
z=lC3ZqNf$hC^n#q(uSg6tN?8d6mFN8<M|#62FrQS*u-wsux5DZ$sLm|{-#LHggND~
z`A1V3PZ1+%KzQ`yS-f_*rGR3?#4b;|!E&LgxHGZsBxi!Tvr<#tVxc&?xHK?qIp4I@
zVjbbaK~WFr=5V^43Z4EDJYpB2CVwDYzvqIMVBna>H$4wBmf@!D9{L80m1)}4837yD
zLcmz9S&0~D6&D7EJxK-&=x$Ld=Y=VVR3Yp^Mo8^2zz7C1EeDz=&9P!djp^crz|Zx2
zyxM`lPdrICDCG`7xuWq6>bSvE%G`fQ@9U#ed}Dn?>?nKp5&QH74NN-<D{qTxh<l%y
z@dkt&M%r*)e;;<E2+7(T&L{~Dz3A^cg{Bqn?*h%kuoJ^DRyW8;P{U;7cJ?U=;SNj*
znW3R`$O(uIP5fa64=Ve8oeNZ!hhWqFA;^jN;VvyvHj_aa@%4vs8v-+6XOG_?U}wQD
zevXpQ1;`maSI+-M%f>1IkbB3S+y%UYhb_5ZIoV_<Vo`ltCpC7~d{!yC4l?fKF5O+N
zTvU;Jutn@Il&i3a&{fzCe3yC^_EFn0c5d4cdy{$<rc<uMxGrIGAhGq&`0+dl#X*Q7
zA=-S5;52&|vC(F)5Q+FX*q3U#_7IIuX%jXUgr9jxVD{R9!z~PZGYocV{@&l>ofm&`
zQsd41#pKP?B>W^qH-(pq)qW`h%jy2H0!ma1jKB3F-flG}v|fA*{LQga0s&?eV1`6)
zP$I(HuyA@AztlnkI&#e5w8Wx~n5$`}h*nOXJjJ}vr&{+#`aTUKW_%hp3#CX}$iQ{F
z*_+bC8Wyq4B5so1Js4o@?tcWdcK48+a1dE4lGmAJ80#A(9z>gJSJ#U7(Zt?xb@ez4
zwWjG`HculajUKv{)ryo~ntugH{umB|!4WD7I$yeCjF6;wd0yY&!nDKucGwWjbWf1p
z?1O?3sRV_(RA*N%#N|@FFV}v8cVSvjNw!Wk1Pi@m_hrI7C9S%UZI{F44l|#W*7V_p
zx^{I=K3c_XuX650!#8mlI!~n0CZK4jP{*^eb}1067>%-;VqT8lHb()ZBNTfvG$bG?
za(aYx@IzT9kxD)}f?8-HxVODf?GBSxV11zXsTzw@nn@||D1{SC&Y{xSLRJq7jC2vI
z8}6;Fp6VqFt^>h!=94b`*g_BgiMHip7?)N5Q%1w4svkpWm$%>IvSZoD-XnUJrJIWb
z@ZBwJT=Ey7k_RI3s|EbqG8DiMFbEN=ML%?wTcg@F<CQOTidmMHd@RE*xH5;>3T|iB
zw!Q-Wv6}QprQIp5?G3fE60*cH-H?xGO*}{e4X3wDNjTWpU(<>MH)1NqO&aorv2k`u
zqh@hoF+sJ{UU5qI_oDqrsfE<J?Q!U=TY(BF8LxpJ1JT}%Bdgp`0i_lAs$)aqY6`#Z
zCM8d#s4B=8|5`;R$8Zsi)^&UFa*NfIFPf}KHV9#RQJi2yaXQ=GqYXwhjF53^QmSDD
z<QT=3jJQ$9kIL*k3!9wG&i15l5_P{8VAcy|I)2-)X^NZJpg~={<kyT;h*D+6ubF_q
z_6cGl2feQd%vzCH6tr%ou_DeOmg~gjx}0)`3n#Ss9p%46sS$`)1F#SZcQQgTE!?lG
zy!!x69X{+VPBX16Hkrub2JVn5@N^B9;^9KlNPYVwD8BIU*+9PJ6%>j`#3r5i9}Kpj
z#-rQBZ+n8KSgW(bbH71e@dRB}4H#m)ta(cwKsltJ62o5_a-9z8BNAbtm|G*3Ji(C9
zbBXj5La`3YGEe}r#PlZuJIR+v14*PMfdoYEmL1YFO8F|192%4gl$hciu_(zd7A4xH
zttt?-@ZU9Ed+ij?RWw~Ac563L#4tqHezKC7tzE=y)oe`{GFww@=)$UClZBRPFlzOp
zO;_J~QKmNMxHTQj$|}Fd#_)9vRgN1Ays5BztU9;G-e4pbyNVgvDn*lzAa4%EN$yK1
z)Ku%UDnIb*8?U2EyHiq@Q9arw;@4X$SsGu7P|k46$3B;`)Uf*zJfCgDg$KWwf(Liz
zle;x+!fu05P3zn6q+WF5CsS@vKA8fk$)5{Vx+@<{nRV?4Q_3aZaa6&`2U8l4qolEo
zgua>55c+0{JxsVkbS5rdY`H8r$wyPlrHZ3OV&F$pGVuMzDdJIBR4x%avG^y)?8F`!
z|IrkkJIqlo6(3RebPQ<4^+IA`D){cO)gCJYi0eUllY&P=$j5y<B~J9u!u2;0O+KBn
z7sIMD=$0Fd?O$WFlmzTA)JbMJCqEG_4NF}v;0Q-UA`~Du<@k2)5oNF#VH&~&Zg#mG
z4e{-$JIM)$6??$8oAF}`;h2xIFQ+*kc6a1EXVNnoyrL4U@jEdWEtICoT+)^Apb_p<
z5cT7SZHNWKae@SPH^iz!uo_)11zfZyleakgm_pcE7!`v=u~(=%ZTVQ=_B2l1<`EA)
zmG^3sN2CY;278G*NjxZ6Pocq6U=nhVhz%B+Ns3r?I;Z&*Tkjy>5X2hXnlZf4Xd5(^
zWGPf0AqNKn*J~MO(}t|EG+UU{oTP9273$Yq(!)0?O}n-Tnn~dcXlAdcuIC!VsE}1M
zovG0L=BEnHr_e?WX`VPnv-u<;8EXHSeHBf%PJgK$_GzHU<>F|UD-fX&<8&xf4_md0
z(2s|P4-#{leteq?FUfF)Z$IYrESA~WmTZb;3dM7a+K0Fc5UJ+EQ}BaU;sKSNvcHa<
z5*2pZnY16pjm6Iuc&w-GZcVk5a1@B6UWH0p><Uc7Jg34*pcTKXauV)7++izsC8^w!
zELxKQQ}|94IOBQ7u9WHjQHW{qEFq^Vag1pa9S#Lpv>L}TO`<Zmg0;`$XV(Z-Bc43i
z7%QD$_*bR#2L<kw%i)yzeof|DASN^hC(T1R29^u#9GUBLD)^CQRIGp!iL^V(m|$yh
z&*7;%e9fqn4Tx&oOFqz5v#pX3KJ@SkUNV9*bCvj3#I_>DL&E#g`>OE9+i?`#AhyYi
zh$y-XJ{S|-kc2BIN=sE_JGg0h7Z9w`KmH5Sa}VjC_%Q|~WB)TKC99a$%Q*F$XNPW@
zQ8Y>I)K$0AEBU@K{DKy2^X^x^qa*r#K}Nr)XQ*Vc26UvBx@f8c_P140?yx{qOI;Mz
zQH5^}dTb-)y9(NJSQwa)y$_NmExU}pZ3O=KDO$p!J?lsy7Jk3b@3D>e`j{ABXn$*E
zJY|~Ji%92YoqEgv8eJ4vF7`OZ42=3N0x?I2N}QUOYNTeA>adM;SiexH`2uJgA=E@G
zUwJ4eFA{_9Hidk)F$tHsLw@~h*65j5-Bowa|D*OiTh@NHJ<pB?Vn5QcR<Y;Nq5mwT
z9R@eh@Ne4lAo720&x253ZO@~Y-vHh!a4Wzq0apSp4_rF9xoiKc?0HB}$fUvGo(A{I
z+W#H)Jcj$n?0LNIueIk%bd&Kw;2pCeTn28V`=8kJAmqPi&qHwjciHo(xDP`8hrzuI
z?i9Gw;Ld;>1Q&V#f0aFt(mzJ{oeeG<+>-nMi|l!ncLn)B%4k6kI!nEd3QTrNR@i_$
zCA`4Lm-EQJ9KUcAdecuWz_aO2Y0-HA1)$eZUcj#GkD)`w=5T-tOcYC#@HI5M^dw@b
zPogTZ5`qiA$ii5r^^xxpG&Q228r$Fd$L;U&<unbu+#&sJ09M7wN+mwWA>EB18-VrZ
zlyU_Ut-RnS4uEVQY9C?~q+j6`he>+w^U&s;e+M-8-wzPO(m<RfT*<&4|J~!|2^uM&
zHm@3`<cVRq8g5>+m%SyoM#IgDKFv<^Nrv2_Fm4JYPROm%at7W<^9ShY)7&vp24#51
zRPWKgLO<~K0kT7j?+jZ2NcxMQK;Q5IRLR)g^<o%*0C69K)VC1#A;9h9ePMyeud!Ej
zn!R@Q5i4{!)?rX4a)JIOIyrDb<QV>tyrZZy0uxL1yXfSm^P&$VH~F~czf+zRjaG_Y
z@RZ6*+3|08W`F(Lozq-SDduxzoX}gHt3JQNIMTGUV<#k2&xTG&uDq@K#94JCoj3N8
z$Qxk8u?3Q0e-@NBoW<k+?n*YvDXlrHjC<eJ;~s=@huXV7Llp{NSq+B6o}KWMM>o_`
z+d<<O8FVgb`e*oRLyxSSJ1QjL5dzOn+s&|3<V}q9w;oxpZ>`r2Up9Lyg$SXP5lZRm
zFReEYTyUBhPk3-2F$|zM%PX=dLod$jj418Abz$~F_WazUyc=&k)bfcj%tseJ+ILkn
zyN^9~qc=&`@AC$>49MZAVDR~<SWpksZrE-P$g!9P>ccbdKnK#v$Vq!;vXR;W_1uc}
zOkbGY%bvG8q-<iq4trc_9+`)9wx2x#Dps#7_O6Waa#1R}0O}(@e}`;`ML)3<8nZ8o
zIizpvM~#Dgl6zd!mcCZ>>$~<Ck#BB^KHV9~&Vc%-l`hO4X^hA|wK**8)9fIGdLh)6
zeUOV?#C>2slzmX&_5;B7TM(YI{t<kgX86N?0lcqh?G%+f@k1o<4`b~W-!^;ACq=n4
zBF5V}ot+tTlAT_<upAn^kP0<8pBzZgm7tVHE#lrY9|D~(iqzT|HvHjLjgKSvfAI&U
z`ERR+Qsb2|r%P4Giu8{wA4R-N{{;EYx7XPJJw+YcPm#+}%g5EtvvSCmdV7r1Aq@`U
z0Z$-0q>#<*QuVRAuhPf#sE@hB6pd`<m_jCYIo%YhWU4ymQdO~o=R&I3&n;bFsfj7?
z=g#VB3H|Ml|5u;HPKxS!jG~T#I}48Lpr|--N#IQ2O2FL(t^phiZacVdfO{I;%i#8b
zdk5SpaA(0q0M8|X%LHc^@Vkvr2HaENUIy0%?tO5l!JS9`g!*;h_CnpafxiIUUEu1$
zZ3p)qa4&=F0rxJrkHGyM+$C^~NKrR}yA50}xKa@XB9sNU1zab%XGEo)_&Id^E;@cy
z9Y3$WdiBC3%N7(ZSzTr=vafbnmspEeSW94kvfAcw7B62hJ{`+9a_iZ(57Zg!8XGq>
z8YwC^nxa-LS>|vkDHx?3i<T}N7o|#;*@_k|y^^v#)0CDS8-2TxTVHeUx;i7f!MJw)
zT6S&Cy0s7085`<qHY(*1E(_uC&*#*w-@x71U~Jl0v!>2i4|T8GuzBscf;H^g4ePIz
z%lz7MO>FHyDVKreHgb)1#!YJ*S*~WCv7TGM24ReAYSyhIfC!iVwfI+WSYNkgEqg}|
zi=L6iCXV4x&AGbW8#dMf;tlJYHbA_#ZqwQ|<6zZ3s@t-$ZVg*kOL}H}zamW5H82lw
z>)5qyLt|Y{E%eZu`>%!n`hHOh;orFd@Yv{@d)IGhd;mHi^mmNdy2c0AuD`m!OgUeR
zuWmi`;D+@N)U9U$9AUG+7PhAGJ`Mq!Lj7w>L)iLt8=$)N_Zc^CSi7DjMIoiOu2!kv
zwsuY9hNcbmtkJo)35TjUCB?X0WzZ#S?`^DU+=_6~$a8A46}w|bbhKS*R4%YEHE-TL
zDlgQ^^)&#+t-pW$hRy2>@NYrkAsR&;&w~Ac8cxZk3=uHJQ6d{CZ3Gn&W}vNBYdAg`
zCW`!_CFAUD`^rd$$}*W;_DF~u@%D*g?rFFO9*WwyaSJ>QKv0ns!+^)YKa5hdsr3{`
zt%HAa$ef+Mo?Ew0369azl5>TgQ{%#K7F-FJ&Zi6u>)0hVO>7ac@TNNZhK<}tih?vH
z?pnLPcEe`MR@c;2b6?$p4O@yRuBookoHnm^-MXvgBjWsQ4P`jDM!~<cmNL9htAuCO
zQ-(R<%5oogAh)TBs)c8+(FTtZ16$#tY<JY&0Ul+yQB)DQlDai@58PWv{({od4V%Wo
z%hs?PFzBe;$c7S&xcj&!mZBDO>&SR627X7sXk+7AB-2*YxTXQyTX%0Gr;hpJn)M_I
z^&o!4i#QP%;z1lxZY$!z@>mwjP>vdwYpksyI7%DWlF*6<uCYl?bJf+ZuTvu{I3;A;
zu%0A1IMuIVu`HHDc!Wb3%tr@7NP!H<2QY*t^a2S$2@nKy0eL_r5DPQ|>Cggf2s}p~
zy)q_!xK6eF|Gl1dXcn&9aBt1J(#AUAi3shwCbn_S#;xmJRI8d(v=09u*PYhoORY;n
zoc$Kgf#MAhJW#W~cFEfHbww1bffQ$5V-rX>ifX2;AiF_EtbwUPJrlM<6@7J~Bx;yo
z;2Il2YK0OnjZ0fWr0Jqsih3bz#kwX3Ag@^meDEB`6q2Z27$$^280JvsDG^T;^*rV*
z43)W2v+%0i2N1dpNMBc1yaD7INH>IVu(e7eMI~UobnUvj6<asfQFbM_2G+BUi`Lg~
zD55H0UaYHQ>xvs;6@+!oQAd_IDj6Yd8)~_Aby#{S$igCu`W1ylTCd1+2ipizxv7Zy
z_1EOMsAFNSwY7D{4K<A`HrQ}YTCkO^qaqOhm%%CKtJ7T+b;}isl*R!)QP)5_YZ}+$
zf(p`W+$dT>n*C5y25V+X9Wcd)t<(=ltQZCcNTK$JIh7TjjKGgbp29^Rhq<6%NDqLr
z>`;2rj!O`Vqk77Ufor>t@@baT)ol7wmr~y&n3W;_nPw4|#f7=97G`u~9nw!xuZ&M$
zw0<o8v}UaDR%{4$DD@&hht#EOtJ_a_(2m1Q{gz1jVpxt+v0s*1Z5aMtsNE_TK1b+V
zUZ+G05E2=>sJ6C|aQXqw5?FK9<rI2<8}`UJUb`b~IlHc6{bpE8sQsEH#kQJ_%J2cK
zcYGX1)1h!8#*i}s!g+NHz`RJ6uH%{-u+JB8_4P2A6g8D9UbmsCE>xxZg#M=CpGAs%
zz%k@{A$|&6A2<>AC7%;nQM{JjT2|B4KqLTmk{ZuUzgBieWm1Ohk}Er!UuJ%JcQcDx
zL}gOx)Jh1~QH}6#!&QF{FzOa%Z6s@P^jFL1(4+pTMe1>$BJYmf13sQyq=Sz|4ZQMt
z%jrib!vyeO1%D#=JHW@U6xV`}pH`a-{uJ<O@NWeFa4TiNKkN8y@bNP*>%iXv{wnZs
z{aOP4L*VCuk6%j5#t-*_KO21S0j168<CXkX#9s4+sr~+SPZ$;YTankF>(9UUJl#ea
z9&fwCZU0$A8NSLP-{GI)ME{*{Q3iDQmp!ljH+$^gm-D{-uZ;Ww)UW^7_7(rGhG-r4
zPxEj78(;pBasR^p&3~b?#{W};_J7&4ao;~bm3sD?{Jq!2JN`xa|CLWTh~5}AJPpF3
zKVAEsabXXH88!Tkap5P%g?Ee#e{)>;KgWf?H7<;|53pOMaGe;xY-z%10)pSNxaX0r
zkIYchfBdoH?|eb=TYuDtO9@rDy@mL@0p7Rk#4h94w6k?o@e5V|H~%Jlk?QXO_&+{(
z`nemazdk2DclX!h-@cQC%AsS+PgI{UQmaq6Po#Yr{&??4eHTGv+8!#YJZO84E?ae>
zwH>Xn&wUN8*PrXp_2>F?{ki^Jf382*pX<-{=lXN~x&B;#u0PkG>(BM)`g8rc{#<{q
zKi8k@&-Lf}bN#vgTz~%GdeAnYZ=4Yv2Ju5vA=@{t>Z9!j+UnsKZSX??_^lbV^+THr
z{F`Wu>PM-5w3-()F7F1lEc$vCuR%>i`@o5+!}J+ydWIS=Qsc#H+^&{cuBJOw-=*TO
zRO?=+raypf1-B6#+7vdbv_`1#Eh^2es{e?Z&#U=uDxPnG!&e%fQR6#RdY)J7`-z(V
zno8e0YW@dmeqyB37sl{!O&LE9#j5*1{rulR!}v#fU9n}VeUviX18x<#mEcx@vx8d#
zt^`~jxO8x{!6ku<2giV;!BOBw+9^X2+#t9CaA&|t;7)_<19u8sFSsM%4uX3F+^Z`5
z%ix{|_cXX2;5xu<1Gf>}I{calxO>1Y0awzl&^u41|Eb?mhR65+Yxl7FJo~$=ZMRxB
zDsyt+oGjZNEB>eY(q8gESN;spHunvMzR<fmp=W#?!}wJX3%I)|#U=~?j@)m+y$kLF
zxCziG6S$?|9?)DVlS?UccQZw7#;8}p;rDdTgF~aqJHXk%t@~$&yZ=8uFdFxO7ipSh
zN-<@cmYdd?SkqS1Bc>mkUNH5VnAEem|H!2+I?H6sG|NoO?G~$Lv1Ns2y=9xF&C+T4
zgXLq3CC`~xm)DwiBJa<6dHIX-|B+7@Bo+K={>Xfa2+cn5?l*;{KAigf)R$9Z(jG}q
z$e5BbEn`N;tc*Dsw`Zhg{3%1q_$*^MV<aOzvoLdErYo~5vo>>m=3|*pWPUsI*~}L*
z4`lXahGj)(C1>51WyxBRbx&4(R#O(AC1iaw>lazS$?D4bQ`X<IsO)>QAIfgYelh!%
z>|@!VW+&!M&q>dz&)Jys&72?Syp=PU6P9bv&B-mzy)XCi+#lq=n0qSsOzs^P3$&`z
za-W5@Y_&XWIbr$4GAD0+UU|Md|3~>h$@k^|A^%VLNd@Z)9xiyZ;6y>v{5$8D&+nZ7
zOKhJB)+hW_l&Q+J&h&)oNz+c#FHL(*`%S+$oiPPXR4S92n0iO5CABDZQR>Q6cj}JR
zAEv&Px+nEe>OiWTT9j6i)|B>e+7HrRN$X1cL)yu-vuSnaM)P;gzczQ7bJI_x-<mN$
zV@1X@8J}i+krADloS6nabZ6%3%(~2`%x#&T%%5iN&3r5Kc;@Gs6SI=CW@Qy+)n;wT
zVzZvg%E_Le{ip2dImtQsId|r~kTU|UpPD-}cTR3<?hkYK=62`)E%&qB!Q5M6R2RV*
z&d9$t|Bn2u{Q3EJ=G*gE<=5t~%V+aD^Zzsd`}xo1znK4K{_pe8=f@UIE0|euM?rc)
zYrzu*#|oy-pE3WA`S`J7BYro>^gYv$O}{pEnf_=xX^Ksqo;ojeS!zY<rqq^H5!(J#
z>Mv3croNSWEcHa{UsETgO;4MXmY!CSR+hFj?VHdG&!)YQ_F|ep?NC~_xxl>2{D8T|
z{3P^+&-{-0BeQIdNuQRUlAfD>XZlm=ucW`0zCZn7dQbY{^navJ&B(~e%P7n!$tcTM
zl3|BFTbc1(#_o)lGhWGfHRHz2S%kBeWZE-VWImYrgUml<zMI*bc`CCn^K_<^c_wop
zGdHU+t0b!|YYA}EM_GLK_p^VM{rl_=%Qq}fTAs7~)bdNqYnC@HJ(eRDW5GOV|Iz|S
z!Mz0y1zQUEf+q`h7yP>5w*~tO4i+3OI9o7SAQ#Z{W9LttfAjp=^ViKsg#%^RM3bBv
zoi;ITR$5A05oz_xwCc1qX=~HArahAOblT6-ehqvu+k6aK`<eNISqp6~Nnet_JpHcp
zHR<cp&!-2|wHZ+`b5fwamW+ywyEE2gG-kY*@mj{@%+$<Z0XH1Y?8tgD>-ntk?7OmG
z%DxDr&g91DPJxlXEjKMUJ9mC=Np3~%gSj5d_bvM^(Rowya`NuZ>&SaL@BO?#<!SS$
z=4a#=<~#GN^B>FqcK&~B*L+@^2%<QiLqsV#EEu$h93tirXoR;rJG(RUc4sSiu&7WF
zL@}TTk&02`53oql9;#IcSRtZ9l!A-o5Hv^-!5|d^dJqvB1VN-=4{h`ySfxS^zK!@7
z2%h$P9T<4?zTeNh!@KK0^q=@8eNI>OTfL-H!M@;W@GkfeMBs>)UEjkeSSGi-X3;!t
zo;Pch@y*s5>yq`^TCp~=G~32T7-v4)!%ncP>^^(Jw%7&xi2cg`YFpgp`}uKxieKil
z{5Ey$IbY=8`IvLqx#-+-?l}+0<2@(i0(Iw#+i@4&3Cj4axFM?Ij;K+OzK9JnB@LOD
z!!jeY<oLWiD<|cYoR%}PCx1voZB-eSRXMd&oh0{%s;(NUsalkSwpvg_XkZ$LF@vl4
z3r9Te-Sk6$yWXM4^dtRK_w`V4D7YRh2fbiD%6<9IJbM5xz+-p`T`){-CI*9GHo_j&
z*R<Q@&90r}c@EqjxHDQzF4B1l49LJZ%s>UIP=gQ}(1JE};0@jNaqymN(1)a%G7Tcg
z9ILW<7P2~PuqJD<4tveIe2piaw38J%krxG#XeJU<boZ!OQY*x@Z<OtI)mI5j;wB>a
z-wLys!#oxc&_;nCj^ZxdjeBvNxPB0ecodJ}1eUN&Je(xXPZQ~{VFl-K9z(2S1Dn{w
cXV}IC>`)p?UfKK4zgDbRv0}xF73&}L8#<SM+W-In
--- a/python/virtualenv/AUTHORS.txt
+++ b/python/virtualenv/AUTHORS.txt
@@ -13,16 +13,17 @@ Jannis Leidel
 Contributors
 ------------
 
 Alex Grönholm
 Anatoly Techtonik
 Antonio Cuni
 Armin Ronacher
 Bradley Ayers
+Branden Rolston
 Cap Petschulat
 CBWhiz
 Chris McDonough
 Christian Stefanescu
 Christopher Nilsson
 Cliff Xuan
 Curt Micol
 David Schoonover
--- a/python/virtualenv/PKG-INFO
+++ b/python/virtualenv/PKG-INFO
@@ -1,24 +1,24 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: virtualenv
-Version: 1.7.1.2
+Version: 1.8.2
 Summary: Virtual Python Environment builder
 Home-page: http://www.virtualenv.org
 Author: Jannis Leidel, Carl Meyer and Brian Rosner
 Author-email: python-virtualenv@groups.google.com
 License: MIT
 Description: 
         
         Installation
         ------------
         
         You can install virtualenv with ``pip install virtualenv``, or the `latest
-        development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
-        with ``pip install virtualenv==dev``.
+        development version <https://github.com/pypa/virtualenv/tarball/develop>`_
+        with ``pip install https://github.com/pypa/virtualenv/tarball/develop``.
         
         You can also use ``easy_install``, or if you have no Python package manager
         available at all, you can just grab the single file `virtualenv.py`_ and run
         it with ``python virtualenv.py``.
         
         .. _virtualenv.py: https://raw.github.com/pypa/virtualenv/master/virtualenv.py
         
         What It Does
@@ -42,16 +42,19 @@ Description:
         Also, what if you can't install packages into the global
         ``site-packages`` directory?  For instance, on a shared host.
         
         In all these cases, ``virtualenv`` can help you.  It creates an
         environment that has its own installation directories, that doesn't
         share libraries with other virtualenv environments (and optionally
         doesn't access the globally installed libraries either).
         
+        Usage
+        -----
+        
         The basic usage is::
         
             $ python virtualenv.py ENV
         
         If you install it you can also just do ``virtualenv ENV``.
         
         This creates ``ENV/lib/pythonX.X/site-packages``, where any libraries you
         install will go.  It also creates ``ENV/bin/python``, which is a Python
@@ -61,39 +64,143 @@ Description:
         
         It also installs either `Setuptools
         <http://peak.telecommunity.com/DevCenter/setuptools>`_ or `distribute
         <http://pypi.python.org/pypi/distribute>`_ into the environment. To use
         Distribute instead of setuptools, just call virtualenv like this::
         
             $ python virtualenv.py --distribute ENV
         
-        You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE.
+        You can also set the environment variable VIRTUALENV_DISTRIBUTE.
         
-        A new virtualenv also includes the `pip <http://pypy.python.org/pypi/pip>`_
+        A new virtualenv also includes the `pip <http://pypi.python.org/pypi/pip>`_
         installer, so you can use ``ENV/bin/pip`` to install additional packages into
         the environment.
         
+        
+        activate script
+        ~~~~~~~~~~~~~~~
+        
+        In a newly created virtualenv there will be a ``bin/activate`` shell
+        script. For Windows systems, activation scripts are provided for CMD.exe
+        and Powershell.
+        
+        On Posix systems you can do::
+        
+            $ source bin/activate
+        
+        This will change your ``$PATH`` so its first entry is the virtualenv's
+        ``bin/`` directory.  (You have to use ``source`` because it changes your
+        shell environment in-place.) This is all it does; it's purely a
+        convenience.  If you directly run a script or the python interpreter
+        from the virtualenv's ``bin/`` directory (e.g.  ``path/to/env/bin/pip``
+        or ``/path/to/env/bin/python script.py``) there's no need for
+        activation.
+        
+        After activating an environment you can use the function ``deactivate`` to
+        undo the changes to your ``$PATH``.
+        
+        The ``activate`` script will also modify your shell prompt to indicate
+        which environment is currently active.  You can disable this behavior,
+        which can be useful if you have your own custom prompt that already
+        displays the active environment name.  To do so, set the
+        ``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
+        value before running the ``activate`` script.
+        
+        On Windows you just do::
+        
+            > \path\to\env\Scripts\activate
+        
+        And type `deactivate` to undo the changes.
+        
+        Based on your active shell (CMD.exe or Powershell.exe), Windows will use
+        either activate.bat or activate.ps1 (as appropriate) to activate the
+        virtual environment. If using Powershell, see the notes about code signing
+        below.
+        
+        .. note::
+        
+            If using Powershell, the ``activate`` script is subject to the
+            `execution policies`_ on the system. By default on Windows 7, the system's
+            excution policy is set to ``Restricted``, meaning no scripts like the
+            ``activate`` script are allowed to be executed. But that can't stop us
+            from changing that slightly to allow it to be executed.
+        
+            In order to use the script, you have to relax your system's execution
+            policy to ``AllSigned``, meaning all scripts on the system must be
+            digitally signed to be executed. Since the virtualenv activation
+            script is signed by one of the authors (Jannis Leidel) this level of
+            the execution policy suffices. As an administrator run::
+        
+                PS C:\> Set-ExecutionPolicy AllSigned
+        
+            Then you'll be asked to trust the signer, when executing the script.
+            You will be prompted with the following::
+        
+                PS C:\> virtualenv .\foo
+                New python executable in C:\foo\Scripts\python.exe
+                Installing setuptools................done.
+                Installing pip...................done.
+                PS C:\> .\foo\scripts\activate
+        
+                Do you want to run software from this untrusted publisher?
+                File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
+                CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
+                and is not trusted on your system. Only run scripts from trusted publishers.
+                [V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
+                (default is "D"):A
+                (foo) PS C:\>
+        
+            If you select ``[A] Always Run``, the certificate will be added to the
+            Trusted Publishers of your user account, and will be trusted in this
+            user's context henceforth. If you select ``[R] Run Once``, the script will
+            be run, but you will be prometed on a subsequent invocation. Advanced users
+            can add the signer's certificate to the Trusted Publishers of the Computer
+            account to apply to all users (though this technique is out of scope of this
+            document).
+        
+            Alternatively, you may relax the system execution policy to allow running
+            of local scripts without verifying the code signature using the following::
+        
+                PS C:\> Set-ExecutionPolicy RemoteSigned
+        
+            Since the ``activate.ps1`` script is generated locally for each virtualenv,
+            it is not considered a remote script and can then be executed.
+        
+        .. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx
+        
+        The ``--system-site-packages`` Option
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        If you build with ``virtualenv --system-site-packages ENV``, your virtual
+        environment will inherit packages from ``/usr/lib/python2.7/site-packages``
+        (or wherever your global site-packages directory is).
+        
+        This can be used if you have control over the global site-packages directory,
+        and you want to depend on the packages there.  If you want isolation from the
+        global system, do not use this flag.
+        
+        
         Environment variables and configuration files
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
         virtualenv can not only be configured by passing command line options such as
         ``--distribute`` but also by two other means:
         
         - Environment variables
         
           Each command line option is automatically used to look for environment
           variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means
           the name of the command line options are capitalized and have dashes
           (``'-'``) replaced with underscores (``'_'``).
         
           For example, to automatically install Distribute instead of setuptools
           you can also set an environment variable::
         
-              $ export VIRTUALENV_USE_DISTRIBUTE=true
+              $ export VIRTUALENV_DISTRIBUTE=true
               $ python virtualenv.py ENV
         
           It's the same as passing the option to virtualenv directly::
         
               $ python virtualenv.py --distribute ENV
         
           This also works for appending command line options, like ``--find-links``.
           Just leave an empty space between the passsed values, e.g.::
@@ -104,17 +211,17 @@ Description:
           is the same as calling::
         
               $ python virtualenv.py --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/other/dists ENV
         
         - Config files
         
           virtualenv also looks for a standard ini config file. On Unix and Mac OS X
           that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's
-          ``%HOME%\\virtualenv\\virtualenv.ini``.
+          ``%APPDATA%\virtualenv\virtualenv.ini``.
         
           The names of the settings are derived from the long command line option,
           e.g. the option ``--distribute`` would look like this::
         
               [virtualenv]
               distribute = true
         
           Appending options like ``--extra-search-dir`` can be written on multiple
@@ -215,119 +322,19 @@ Description:
                 subprocess.call([join(home_dir, 'bin', 'paster'),
                                  'setup-app', join(etc, 'blog.ini')])
             """))
             f = open('blog-bootstrap.py', 'w').write(output)
         
         Another example is available `here
         <https://github.com/socialplanning/fassembler/blob/master/fassembler/create-venv-script.py>`_.
         
-        activate script
-        ~~~~~~~~~~~~~~~
-        
-        In a newly created virtualenv there will be a ``bin/activate`` shell
-        script. For Windows systems, activation scripts are provided for CMD.exe
-        and Powershell.
-        
-        On Posix systems you can do::
-        
-            $ source bin/activate
-        
-        This will change your ``$PATH`` to point to the virtualenv's ``bin/``
-        directory.  (You have to use ``source`` because it changes your shell
-        environment in-place.) This is all it does; it's purely a convenience.  If
-        you directly run a script or the python interpreter from the virtualenv's
-        ``bin/`` directory (e.g.  ``path/to/env/bin/pip`` or
-        ``/path/to/env/bin/python script.py``) there's no need for activation.
-        
-        After activating an environment you can use the function ``deactivate`` to
-        undo the changes to your ``$PATH``.
-        
-        The ``activate`` script will also modify your shell prompt to indicate
-        which environment is currently active.  You can disable this behavior,
-        which can be useful if you have your own custom prompt that already
-        displays the active environment name.  To do so, set the
-        ``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
-        value before running the ``activate`` script.
-        
-        On Windows you just do::
-        
-            > \path\to\env\Scripts\activate
-        
-        And type `deactivate` to undo the changes.
-        
-        Based on your active shell (CMD.exe or Powershell.exe), Windows will use
-        either activate.bat or activate.ps1 (as appropriate) to activate the
-        virtual environment. If using Powershell, see the notes about code signing
-        below.
-        
-        .. note::
-        
-            If using Powershell, the ``activate`` script is subject to the
-            `execution policies`_ on the system. By default on Windows 7, the system's
-            excution policy is set to ``Restricted``, meaning no scripts like the
-            ``activate`` script are allowed to be executed. But that can't stop us
-            from changing that slightly to allow it to be executed.
-        
-            In order to use the script, you have to relax your system's execution
-            policy to ``AllSigned``, meaning all scripts on the system must be
-            digitally signed to be executed. Since the virtualenv activation
-            script is signed by one of the authors (Jannis Leidel) this level of
-            the execution policy suffices. As an adminstrator run::
-        
-                PS C:\> Set-ExecutionPolicy AllSigned
-        
-            Then you'll be asked to trust the signer, when executing the script.
-            You will be prompted with the following::
-        
-                PS C:\> virtualenv .\foo
-                New python executable in C:\foo\Scripts\python.exe
-                Installing setuptools................done.
-                Installing pip...................done.
-                PS C:\> .\foo\scripts\activate
-        
-                Do you want to run software from this untrusted publisher?
-                File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
-                CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
-                and is not trusted on your system. Only run scripts from trusted publishers.
-                [V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
-                (default is "D"):A
-                (foo) PS C:\>
-        
-            If you select ``[A] Always Run``, the certificate will be added to the
-            Trusted Publishers of your user account, and will be trusted in this
-            user's context henceforth. If you select ``[R] Run Once``, the script will
-            be run, but you will be prometed on a subsequent invocation. Advanced users
-            can add the signer's certificate to the Trusted Publishers of the Computer
-            account to apply to all users (though this technique is out of scope of this
-            document).
-        
-            Alternatively, you may relax the system execution policy to allow running
-            of local scripts without verifying the code signature using the following::
-        
-                PS C:\> Set-ExecutionPolicy RemoteSigned
-        
-            Since the ``activate.ps1`` script is generated locally for each virtualenv,
-            it is not considered a remote script and can then be executed.
-        
-        .. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx
-        
-        The ``--system-site-packages`` Option
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        
-        If you build with ``virtualenv --system-site-packages ENV``, your virtual
-        environment will inherit packages from ``/usr/lib/python2.7/site-packages``
-        (or wherever your global site-packages directory is).
-        
-        This can be used if you have control over the global site-packages directory,
-        and you want to depend on the packages there.  If you want isolation from the
-        global system, do not use this flag.
         
         Using Virtualenv without ``bin/python``
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        ---------------------------------------
         
         Sometimes you can't or don't want to use the Python interpreter
         created by the virtualenv.  For instance, in a `mod_python
         <http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_
         environment, there is only one interpreter.
         
         Luckily, it's easy.  You must use the custom Python interpreter to
         *install* libraries.  But to *use* libraries, you just have to be sure
@@ -343,17 +350,17 @@ Description:
         always be accessible (as if the ``--system-site-packages`` flag had been used
         in creating the environment, whether it was or not).  Also, this cannot undo
         the activation of other environments, or modules that have been imported.
         You shouldn't try to, for instance, activate an environment before a web
         request; you should activate *one* environment as early as possible, and not
         do it again in that process.
         
         Making Environments Relocatable
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        -------------------------------
         
         Note: this option is somewhat experimental, and there are probably
         caveats that have not yet been identified.  Also this does not
         currently work on Windows.
         
         Normally environments are tied to a specific path.  That means that
         you cannot move an environment around or copy it to another computer.
         You can fix up an environment to make it relocatable with the
@@ -380,18 +387,18 @@ Description:
         vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C
         libraries on the system, if those C libraries are located somewhere
         different (either different versions, or a different filesystem
         layout).
         
         If you use this flag to create an environment, currently, the
         ``--system-site-packages`` option will be implied.
         
-        The ``--extra-search-dir`` Option
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        The ``--extra-search-dir`` option
+        ---------------------------------
         
         When it creates a new environment, virtualenv installs either
         setuptools or distribute, and pip.  In normal operation, the latest
         releases of these packages are fetched from the `Python Package Index
         <http://pypi.python.org>`_ (PyPI). In some circumstances, this
         behavior may not be wanted, for example if you are using virtualenv
         during a deployment and do not want to depend on Internet access and
         PyPI availability.
@@ -469,23 +476,25 @@ Description:
         
         I *strongly* recommend anyone doing application development or
         deployment use one of these tools.
         
         Contributing
         ------------
         
         Refer to the `contributing to pip`_ documentation - it applies equally to
-        virtualenv.
+        virtualenv, except that virtualenv issues should filed on the `virtualenv
+        repo`_ at GitHub.
         
         Virtualenv's release schedule is tied to pip's -- each time there's a new pip
         release, there will be a new virtualenv release that bundles the new version of
         pip.
         
         .. _contributing to pip: http://www.pip-installer.org/en/latest/contributing.html
+        .. _virtualenv repo: https://github.com/pypa/virtualenv/
         
         Running the tests
         ~~~~~~~~~~~~~~~~~
         
         Virtualenv's test suite is small and not yet at all comprehensive, but we aim
         to grow it.
         
         The easy way to run tests (handles test dependencies automatically)::
@@ -527,17 +536,17 @@ Description:
         
         * Chris Perkins created a `showmedo video including virtualenv
           <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
         
         * `Using virtualenv with mod_wsgi
           <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
         
         * `virtualenv commands
-          <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
+          <https://github.com/thisismedium/virtualenv-commands>`_ for some more
           workflow-related tools around virtualenv.
         
         Status and License
         ------------------
         
         ``virtualenv`` is a successor to `workingenv
         <http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
         of `virtual-python
@@ -547,16 +556,104 @@ Description:
         Project <http://openplans.org>`_ and is now maintained by a
         `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_.
         It is licensed under an
         `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
         
         Changes & News
         --------------
         
+        .. warning::
+        
+           Python bugfix releases 2.6.8, 2.7.3, 3.1.5 and 3.2.3 include a change that
+           will cause "import random" to fail with "cannot import name urandom" on any
+           virtualenv created on a Unix host with an earlier release of Python
+           2.6/2.7/3.1/3.2, if the underlying system Python is upgraded. This is due to
+           the fact that a virtualenv uses the system Python's standard library but
+           contains its own copy of the Python interpreter, so an upgrade to the system
+           Python results in a mismatch between the version of the Python interpreter
+           and the version of the standard library. It can be fixed by removing
+           ``$ENV/bin/python`` and re-running virtualenv on the same target directory
+           with the upgraded Python.
+        
+        
+        1.8.2 (2012-09-06)
+        ~~~~~~~~~~~~~~~~~~
+        
+        * Updated the included pip version to 1.2.1 to fix regressions introduced
+          there in 1.2.
+        
+        1.8.1 (2012-09-03)
+        ~~~~~~~~~~~~~~~~~~
+        
+        * Fixed distribute version used with `--never-download`. Thanks michr for
+          report and patch.
+        
+        * Fix creating Python 3.3 based virtualenvs by unsetting the
+          ``__PYVENV_LAUNCHER__`` environment variable in subprocesses.
+        
+        1.8 (2012-09-01)
+        ~~~~~~~~~~~~~~~~
+        
+        * **Dropped support for Python 2.4** The minimum supported Python version is
+          now Python 2.5.
+        
+        * Fix `--relocatable` on systems that use lib64. Fixes #78. Thanks Branden
+          Rolston.
+        
+        * Symlink some additional modules under Python 3. Fixes #194. Thanks Vinay
+          Sajip, Ian Clelland, and Stefan Holek for the report.
+        
+        * Fix ``--relocatable`` when a script uses ``__future__`` imports. Thanks
+          Branden Rolston.
+        
+        * Fix a bug in the config option parser that prevented setting negative
+          options with environemnt variables. Thanks Ralf Schmitt.
+        
+        * Allow setting ``--no-site-packages`` from the config file.
+        
+        * Use ``/usr/bin/multiarch-platform`` if available to figure out the include
+          directory. Thanks for the patch, Mika Laitio.
+        
+        * Fix ``install_name_tool`` replacement to work on Python 3.X.
+        
+        * Handle paths of users' site-packages on Mac OS X correctly when changing
+          the prefix.
+        
+        * Updated the embedded version of distribute to 0.6.28 and pip to 1.2.
+        
+        1.7.2 (2012-06-22)
+        ~~~~~~~~~~~~~~~~~~
+        
+        * Updated to distribute 0.6.27.
+        
+        * Fix activate.fish on OS X. Fixes #8. Thanks David Schoonover.
+        
+        * Create a virtualenv-x.x script with the Python version when installing, so
+          virtualenv for multiple Python versions can be installed to the same
+          script location. Thanks Miki Tebeka.
+        
+        * Restored ability to create a virtualenv with a path longer than 78
+          characters, without breaking creation of virtualenvs with non-ASCII paths.
+          Thanks, Bradley Ayers.
+        
+        * Added ability to create virtualenvs without having installed Apple's
+          developers tools (using an own implementation of ``install_name_tool``).
+          Thanks Mike Hommey.
+        
+        * Fixed PyPy and Jython support on Windows. Thanks Konstantin Zemlyak.
+        
+        * Added pydoc script to ease use. Thanks Marc Abramowitz. Fixes #149.
+        
+        * Fixed creating a bootstrap script on Python 3. Thanks Raul Leal. Fixes #280.
+        
+        * Fixed inconsistency when having set the ``PYTHONDONTWRITEBYTECODE`` env var
+          with the --distribute option or the ``VIRTUALENV_USE_DISTRIBUTE`` env var.
+          ``VIRTUALENV_USE_DISTRIBUTE`` is now considered again as a legacy alias.
+        
         1.7.1.2 (2012-02-17)
         ~~~~~~~~~~~~~~~~~~~~
         
         * Fixed minor issue in `--relocatable`. Thanks, Cap Petschulat.
         
         1.7.1.1 (2012-02-16)
         ~~~~~~~~~~~~~~~~~~~~
         
@@ -756,17 +853,17 @@ Description:
         * Include pip 0.6.2 and Distribute 0.6.10
         
         * Create the ``virtualenv`` script even when Setuptools isn't
           installed
         
         * Fix problem with ``virtualenv --relocate`` when ``bin/`` has
           subdirectories (e.g., ``bin/.svn/``); from Alan Franzoni.
         
-        * If you set ``$VIRTUALENV_USE_DISTRIBUTE`` then virtualenv will use
+        * If you set ``$VIRTUALENV_DISTRIBUTE`` then virtualenv will use
           Distribute by default (so you don't have to remember to use
           ``--distribute``).
         
         1.4.3
         ~~~~~
         
         * Include pip 0.6.1
         
@@ -847,17 +944,17 @@ Description:
         
         1.3.2
         ~~~~~
         
         * Remove the ``[install] prefix = ...`` setting from the virtualenv
           ``distutils.cfg`` -- this has been causing problems for a lot of
           people, in rather obscure ways.
         
-        * If you use a `boot script <./index.html#boot-script>`_ it will attempt to import ``virtualenv``
+        * If you use a boot script it will attempt to import ``virtualenv``
           and find a pre-downloaded Setuptools egg using that.
         
         * Added platform-specific paths, like ``/usr/lib/pythonX.Y/plat-linux2``
         
         1.3.1
         ~~~~~
         
         * Real Python 2.6 compatibility.  Backported the Python 2.6 updates to
@@ -1008,15 +1105,14 @@ Description:
         Initial release.  Everything is changed and new!
         
 Keywords: setuptools deployment installation distutils
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.4
 Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.1
 Classifier: Programming Language :: Python :: 3.2
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/README.rst
@@ -0,0 +1,7 @@
+virtualenv
+==========
+
+.. image:: https://secure.travis-ci.org/pypa/virtualenv.png?branch=develop
+   :target: http://travis-ci.org/pypa/virtualenv
+
+For documentation, see http://www.virtualenv.org/
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/bin/rebuild-script.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+"""
+Helper script to rebuild virtualenv.py from virtualenv_support
+"""
+
+import re
+import os
+import sys
+
+here = os.path.dirname(__file__)
+script = os.path.join(here, '..', 'virtualenv.py')
+
+file_regex = re.compile(
+    r'##file (.*?)\n([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*convert\("""(.*?)"""\)',
+    re.S)
+file_template = '##file %(filename)s\n%(varname)s = convert("""\n%(data)s""")'
+
+def rebuild():
+    f = open(script, 'rb')
+    content = f.read()
+    f.close()
+    parts = []
+    last_pos = 0
+    match = None
+    for match in file_regex.finditer(content):
+        parts.append(content[last_pos:match.start()])
+        last_pos = match.end()
+        filename = match.group(1)
+        varname = match.group(2)
+        data = match.group(3)
+        print('Found reference to file %s' % filename)
+        pathname = os.path.join(here, '..', 'virtualenv_embedded', filename)
+        f = open(pathname, 'rb')
+        c = f.read()
+        f.close()
+        new_data = c.encode('zlib').encode('base64')
+        if new_data == data:
+            print('  Reference up to date (%s bytes)' % len(c))
+            parts.append(match.group(0))
+            continue
+        print('  Content changed (%s bytes -> %s bytes)' % (
+            zipped_len(data), len(c)))
+        new_match = file_template % dict(
+            filename=filename,
+            varname=varname,
+            data=new_data)
+        parts.append(new_match)
+    parts.append(content[last_pos:])
+    new_content = ''.join(parts)
+    if new_content != content:
+        sys.stdout.write('Content updated; overwriting... ')
+        f = open(script, 'wb')
+        f.write(new_content)
+        f.close()
+        print('done.')
+    else:
+        print('No changes in content')
+    if match is None:
+        print('No variables were matched/found')
+
+def zipped_len(data):
+    if not data:
+        return 'no data'
+    try:
+        return len(data.decode('base64').decode('zlib'))
+    except:
+        return 'unknown'
+
+if __name__ == '__main__':
+    rebuild()
+    
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/bin/refresh-support-files.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+"""
+Refresh any files in ../virtualenv_support/ that come from elsewhere
+"""
+
+import os
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib2 import urlopen
+import sys
+
+here = os.path.dirname(__file__)
+support_location = os.path.join(here, '..', 'virtualenv_support')
+embedded_location = os.path.join(here, '..', 'virtualenv_embedded')
+
+embedded_files = [
+    ('http://peak.telecommunity.com/dist/ez_setup.py', 'ez_setup.py'),
+    ('http://python-distribute.org/distribute_setup.py', 'distribute_setup.py'),
+]
+
+support_files = [
+    ('http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg', 'setuptools-0.6c11-py2.6.egg'),
+    ('http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg', 'setuptools-0.6c11-py2.5.egg'),
+    ('http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg', 'setuptools-0.6c11-py2.4.egg'),
+    ('http://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz', 'distribute-0.6.28.tar.gz'),
+    ('http://pypi.python.org/packages/source/p/pip/pip-1.2.1.tar.gz', 'pip-1.2.1.tar.gz'),
+]
+
+
+def refresh_files(files, location):
+    for url, filename in files:
+        sys.stdout.write('fetching %s ... ' % url)
+        sys.stdout.flush()
+        f = urlopen(url)
+        content = f.read()
+        f.close()
+        print('done.')
+        filename = os.path.join(location, filename)
+        if os.path.exists(filename):
+            f = open(filename, 'rb')
+            cur_content = f.read()
+            f.close()
+        else:
+            cur_content = ''
+        if cur_content == content:
+            print('  %s up-to-date' % filename)
+        else:
+            print('  overwriting %s' % filename)
+            f = open(filename, 'wb')
+            f.write(content)
+            f.close()
+
+
+def main():
+    refresh_files(embedded_files, embedded_location)
+    refresh_files(support_files, support_location)
+
+if __name__ == '__main__':
+    main()
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/Makefile
@@ -0,0 +1,130 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-compressor.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-compressor.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/django-compressor"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/django-compressor"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	make -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/_theme/nature/static/nature.css_t
@@ -0,0 +1,229 @@
+/**
+ * Sphinx stylesheet -- default theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+ 
+@import url("basic.css");
+ 
+/* -- page layout ----------------------------------------------------------- */
+ 
+body {
+    font-family: Arial, sans-serif;
+    font-size: 100%;
+    background-color: #111;
+    color: #555;
+    margin: 0;
+    padding: 0;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+hr{
+    border: 1px solid #B1B4B6;
+}
+ 
+div.document {
+    background-color: #eee;
+}
+ 
+div.body {
+    background-color: #ffffff;
+    color: #3E4349;
+    padding: 0 30px 30px 30px;
+    font-size: 0.8em;
+}
+ 
+div.footer {
+    color: #555;
+    width: 100%;
+    padding: 13px 0;
+    text-align: center;
+    font-size: 75%;
+}
+ 
+div.footer a {
+    color: #444;
+    text-decoration: underline;
+}
+ 
+div.related {
+    background-color: #6BA81E;
+    line-height: 32px;
+    color: #fff;
+    text-shadow: 0px 1px 0 #444;
+    font-size: 0.80em;
+}
+ 
+div.related a {
+    color: #E2F3CC;
+}
+ 
+div.sphinxsidebar {
+    font-size: 0.75em;
+    line-height: 1.5em;
+}
+
+div.sphinxsidebarwrapper{
+    padding: 20px 0;
+}
+ 
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+    font-family: Arial, sans-serif;
+    color: #222;
+    font-size: 1.2em;
+    font-weight: normal;
+    margin: 0;
+    padding: 5px 10px;
+    background-color: #ddd;
+    text-shadow: 1px 1px 0 white
+}
+
+div.sphinxsidebar h4{
+    font-size: 1.1em;
+}
+ 
+div.sphinxsidebar h3 a {
+    color: #444;
+}
+ 
+ 
+div.sphinxsidebar p {
+    color: #888;
+    padding: 5px 20px;
+}
+ 
+div.sphinxsidebar p.topless {
+}
+ 
+div.sphinxsidebar ul {
+    margin: 10px 20px;
+    padding: 0;
+    color: #000;
+}
+ 
+div.sphinxsidebar a {
+    color: #444;
+}
+ 
+div.sphinxsidebar input {
+    border: 1px solid #ccc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar input[type=text]{
+    margin-left: 20px;
+}
+ 
+/* -- body styles ----------------------------------------------------------- */
+ 
+a {
+    color: #005B81;
+    text-decoration: none;
+}
+ 
+a:hover {
+    color: #E32E00;
+    text-decoration: underline;
+}
+ 
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: Arial, sans-serif;
+    background-color: #BED4EB;
+    font-weight: normal;
+    color: #212224;
+    margin: 30px 0px 10px 0px;
+    padding: 5px 0 5px 10px;
+    text-shadow: 0px 1px 0 white
+}
+ 
+div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 150%; background-color: #C8D5E3; }
+div.body h3 { font-size: 120%; background-color: #D8DEE3; }
+div.body h4 { font-size: 110%; background-color: #D8DEE3; }
+div.body h5 { font-size: 100%; background-color: #D8DEE3; }
+div.body h6 { font-size: 100%; background-color: #D8DEE3; }
+ 
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+ 
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+ 
+div.body p, div.body dd, div.body li {
+    line-height: 1.5em;
+}
+ 
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.highlight{
+    background-color: white;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+ 
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+ 
+div.topic {
+    background-color: #eee;
+}
+ 
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+ 
+p.admonition-title {
+    display: inline;
+}
+ 
+p.admonition-title:after {
+    content: ":";
+}
+ 
+pre {
+    padding: 10px;
+    background-color: White;
+    color: #222;
+    line-height: 1.2em;
+    border: 1px solid #C6C9CB;
+    font-size: 1.2em;
+    margin: 1.5em 0 1.5em 0;
+    -webkit-box-shadow: 1px 1px 1px #d8d8d8;
+    -moz-box-shadow: 1px 1px 1px #d8d8d8;
+}
+ 
+tt {
+    background-color: #ecf0f3;
+    color: #222;
+    padding: 1px 2px;
+    font-size: 1.2em;
+    font-family: monospace;
+}
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/_theme/nature/static/pygments.css
@@ -0,0 +1,54 @@
+.c { color: #999988; font-style: italic } /* Comment */
+.k { font-weight: bold } /* Keyword */
+.o { font-weight: bold } /* Operator */
+.cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.cp { color: #999999; font-weight: bold } /* Comment.preproc */
+.c1 { color: #999988; font-style: italic } /* Comment.Single */
+.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #aa0000 } /* Generic.Error */
+.gh { color: #999999 } /* Generic.Heading */
+.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.go { color: #111 } /* Generic.Output */
+.gp { color: #555555 } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #aaaaaa } /* Generic.Subheading */
+.gt { color: #aa0000 } /* Generic.Traceback */
+.kc { font-weight: bold } /* Keyword.Constant */
+.kd { font-weight: bold } /* Keyword.Declaration */
+.kp { font-weight: bold } /* Keyword.Pseudo */
+.kr { font-weight: bold } /* Keyword.Reserved */
+.kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.m { color: #009999 } /* Literal.Number */
+.s { color: #bb8844 } /* Literal.String */
+.na { color: #008080 } /* Name.Attribute */
+.nb { color: #999999 } /* Name.Builtin */
+.nc { color: #445588; font-weight: bold } /* Name.Class */
+.no { color: #ff99ff } /* Name.Constant */
+.ni { color: #800080 } /* Name.Entity */
+.ne { color: #990000; font-weight: bold } /* Name.Exception */
+.nf { color: #990000; font-weight: bold } /* Name.Function */
+.nn { color: #555555 } /* Name.Namespace */
+.nt { color: #000080 } /* Name.Tag */
+.nv { color: purple } /* Name.Variable */
+.ow { font-weight: bold } /* Operator.Word */
+.mf { color: #009999 } /* Literal.Number.Float */
+.mh { color: #009999 } /* Literal.Number.Hex */
+.mi { color: #009999 } /* Literal.Number.Integer */
+.mo { color: #009999 } /* Literal.Number.Oct */
+.sb { color: #bb8844 } /* Literal.String.Backtick */
+.sc { color: #bb8844 } /* Literal.String.Char */
+.sd { color: #bb8844 } /* Literal.String.Doc */
+.s2 { color: #bb8844 } /* Literal.String.Double */
+.se { color: #bb8844 } /* Literal.String.Escape */
+.sh { color: #bb8844 } /* Literal.String.Heredoc */
+.si { color: #bb8844 } /* Literal.String.Interpol */
+.sx { color: #bb8844 } /* Literal.String.Other */
+.sr { color: #808000 } /* Literal.String.Regex */
+.s1 { color: #bb8844 } /* Literal.String.Single */
+.ss { color: #bb8844 } /* Literal.String.Symbol */
+.bp { color: #999999 } /* Name.Builtin.Pseudo */
+.vc { color: #ff99ff } /* Name.Variable.Class */
+.vg { color: #ff99ff } /* Name.Variable.Global */
+.vi { color: #ff99ff } /* Name.Variable.Instance */
+.il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/_theme/nature/theme.conf
@@ -0,0 +1,4 @@
+[theme]
+inherit = basic
+stylesheet = nature.css
+pygments_style = tango
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/conf.py
@@ -0,0 +1,139 @@
+# -*- coding: utf-8 -*-
+#
+# Paste documentation build configuration file, created by
+# sphinx-quickstart on Tue Apr 22 22:08:49 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys
+
+# If your extensions are in another directory, add it here.
+#sys.path.append('some/directory')
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Add any paths that contain templates here, relative to this directory.
+## FIXME: disabled for now because I haven't figured out how to use this:
+#templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'virtualenv'
+copyright = '2007-2012, Ian Bicking, The Open Planning Project, The virtualenv developers'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+try:
+    from virtualenv import __version__
+    # The short X.Y version.
+    version = '.'.join(__version__.split('.')[:2])
+    # The full version, including alpha/beta/rc tags.
+    release = __version__
+except ImportError:
+    version = release = 'dev'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+unused_docs = []
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+#html_style = 'default.css'
+
+html_theme = 'nature'
+html_theme_path = ['_theme']
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+# html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Content template for the index page.
+#html_index = ''
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Pastedoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+#latex_documents = []
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
new file mode 100644
--- /dev/null
+++ b/python/virtualenv/docs/make.bat
@@ -0,0 +1,170 @@
+@ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+	:help
+	echo.Please use `make ^<target^>` where ^<target^> is one of
+	echo.  html       to make standalone HTML files
+	echo.  dirhtml    to make HTML files named index.html in directories
+	echo.  singlehtml to make a single large HTML file
+	echo.  pickle     to make pickle files
+	echo.  json       to make JSON files
+	echo.  htmlhelp   to make HTML files and a HTML help project
+	echo.  qthelp     to make HTML files and a qthelp project
+	echo.  devhelp    to make HTML files and a Devhelp project
+	echo.  epub       to make an epub
+	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+	echo.  text       to make text files
+	echo.  man        to make manual pages
+	echo.  changes    to make an overview over all changed/added/deprecated items
+	echo.  linkcheck  to check all external links for integrity
+	echo.  doctest    to run all doctests embedded in the documentation if enabled
+	goto end
+)
+
+if "%1" == "clean" (
+	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+	del /q /s %BUILDDIR%\*
+	goto end
+)
+
+if "%1" == "html" (
+	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+	goto end
+)
+
+if "%1" == "dirhtml" (
+	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+	goto end
+)
+
+if "%1" == "singlehtml" (
+	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+	goto end
+)
+
+if "%1" == "pickle" (
+	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the pickle files.
+	goto end
+)
+
+if "%1" == "json" (
+	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the JSON files.
+	goto end
+)
+
+if "%1" == "htmlhelp" (
+	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+	goto end
+)
+
+if "%1" == "qthelp" (
+	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\django-compressor.qhcp
+	echo.To view the help file:
+	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\django-compressor.ghc
+	goto end
+)
+
+if "%1" == "devhelp" (
+	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished.
+	goto end
+)
+
+if "%1" == "epub" (
+	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The epub file is in %BUILDDIR%/epub.
+	goto end
+)
+
+if "%1" == "latex" (
+	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+	goto end
+)
+
+if "%1" == "text" (
+	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The text files are in %BUILDDIR%/text.
+	goto end
+)
+
+if "%1" == "man" (
+	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The manual pages are in %BUILDDIR%/man.
+	goto end
+)
+
+if "%1" == "changes" (
+	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.The overview file is in %BUILDDIR%/changes.
+	goto end
+)
+
+if "%1" == "linkcheck" (
+	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+	goto end
+)
+
+if "%1" == "doctest" (
+	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+	goto end
+)
+
+:end
--- a/python/virtualenv/docs/news.txt
+++ b/python/virtualenv/docs/news.txt
@@ -10,16 +10,61 @@ Changes & News
    the fact that a virtualenv uses the system Python's standard library but
    contains its own copy of the Python interpreter, so an upgrade to the system
    Python results in a mismatch between the version of the Python interpreter
    and the version of the standard library. It can be fixed by removing
    ``$ENV/bin/python`` and re-running virtualenv on the same target directory
    with the upgraded Python.
 
 
+1.8.2 (2012-09-06)
+~~~~~~~~~~~~~~~~~~
+
+* Updated the included pip version to 1.2.1 to fix regressions introduced
+  there in 1.2.
+
+1.8.1 (2012-09-03)
+~~~~~~~~~~~~~~~~~~
+
+* Fixed distribute version used with `--never-download`. Thanks michr for
+  report and patch.
+
+* Fix creating Python 3.3 based virtualenvs by unsetting the
+  ``__PYVENV_LAUNCHER__`` environment variable in subprocesses.
+
+1.8 (2012-09-01)
+~~~~~~~~~~~~~~~~
+
+* **Dropped support for Python 2.4** The minimum supported Python version is
+  now Python 2.5.
+
+* Fix `--relocatable` on systems that use lib64. Fixes #78. Thanks Branden
+  Rolston.
+
+* Symlink some additional modules under Python 3. Fixes #194. Thanks Vinay
+  Sajip, Ian Clelland, and Stefan Holek for the report.
+
+* Fix ``--relocatable`` when a script uses ``__future__`` imports. Thanks
+  Branden Rolston.
+
+* Fix a bug in the config option parser that prevented setting negative
+  options with environemnt variables. Thanks Ralf Schmitt.
+
+* Allow setting ``--no-site-packages`` from the config file.
+
+* Use ``/usr/bin/multiarch-platform`` if available to figure out the include
+  directory. Thanks for the patch, Mika Laitio.
+
+* Fix ``install_name_tool`` replacement to work on Python 3.X.
+
+* Handle paths of users' site-packages on Mac OS X correctly when changing
+  the prefix.
+
+* Updated the embedded version of distribute to 0.6.28 and pip to 1.2.
+
 1.7.2 (2012-06-22)
 ~~~~~~~~~~~~~~~~~~
 
 * Updated to distribute 0.6.27.
 
 * Fix activate.fish on OS X. Fixes #8. Thanks David Schoonover.
 
 * Create a virtualenv-x.x script with the Python version when installing, so
--- a/python/virtualenv/setup.py
+++ b/python/virtualenv/setup.py
@@ -66,17 +66,16 @@ setup(
     version=get_version(),
     description="Virtual Python Environment builder",
     long_description=long_description,
     classifiers=[
         'Development Status :: 4 - Beta',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: MIT License',
         'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.4',
         'Programming Language :: Python :: 2.5',
         'Programming Language :: Python :: 2.6',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.1',
         'Programming Language :: Python :: 3.2',
     ],
     keywords='setuptools deployment installation distutils',
--- a/python/virtualenv/virtualenv.py
+++ b/python/virtualenv/virtualenv.py
@@ -1,42 +1,39 @@
 #!/usr/bin/env python
 """Create a "virtual" Python installation
 """
 
 # If you change the version here, change it in setup.py
 # and docs/conf.py as well.
-__version__ = "1.7.2"  # following best practices
+__version__ = "1.8.2"  # following best practices
 virtualenv_version = __version__  # legacy, again
 
 import base64
 import sys
 import os
 import codecs
 import optparse
 import re
 import shutil
 import logging
 import tempfile
 import zlib
 import errno
+import glob
 import distutils.sysconfig
 from distutils.util import strtobool
 import struct
+import subprocess
 
-try:
-    import subprocess
-except ImportError:
-    if sys.version_info <= (2, 3):
-        print('ERROR: %s' % sys.exc_info()[1])
-        print('ERROR: this script requires Python 2.4 or greater; or at least the subprocess module.')
-        print('If you copy subprocess.py from a newer version of Python this script will probably work')
-        sys.exit(101)
-    else:
-        raise
+if sys.version_info < (2, 5):
+    print('ERROR: %s' % sys.exc_info()[1])
+    print('ERROR: this script requires Python 2.5 or greater.')
+    sys.exit(101)
+
 try:
     set
 except NameError:
     from sets import Set as set
 try:
     basestring
 except NameError:
     basestring = str
@@ -46,22 +43,23 @@ try:
 except ImportError:
     import configparser as ConfigParser
 
 join = os.path.join
 py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1])
 
 is_jython = sys.platform.startswith('java')
 is_pypy = hasattr(sys, 'pypy_version_info')
-is_win  = (sys.platform == 'win32')
+is_win = (sys.platform == 'win32')
+is_cygwin = (sys.platform == 'cygwin')
+is_darwin = (sys.platform == 'darwin')
 abiflags = getattr(sys, 'abiflags', '')
 
 user_dir = os.path.expanduser('~')
-if sys.platform == 'win32':
-    user_dir = os.environ.get('APPDATA', user_dir)  # Use %APPDATA% for roaming
+if is_win:
     default_storage_dir = os.path.join(user_dir, 'virtualenv')
 else:
     default_storage_dir = os.path.join(user_dir, '.virtualenv')
 default_config_file = os.path.join(default_storage_dir, 'virtualenv.ini')
 
 if is_pypy:
     expected_exe = 'pypy'
 elif is_jython:
@@ -87,34 +85,36 @@ if majver == 2:
     if minver <= 3:
         REQUIRED_MODULES.extend(['sets', '__future__'])
 elif majver == 3:
     # Some extra modules are needed for Python 3, but different ones
     # for different versions.
     REQUIRED_MODULES.extend(['_abcoll', 'warnings', 'linecache', 'abc', 'io',
                              '_weakrefset', 'copyreg', 'tempfile', 'random',
                              '__future__', 'collections', 'keyword', 'tarfile',
-                             'shutil', 'struct', 'copy'])
+                             'shutil', 'struct', 'copy', 'tokenize', 'token',
+                             'functools', 'heapq', 'bisect', 'weakref',
+                             'reprlib'])
     if minver >= 2:
         REQUIRED_FILES[-1] = 'config-%s' % majver
     if minver == 3:
         # The whole list of 3.3 modules is reproduced below - the current
         # uncommented ones are required for 3.3 as of now, but more may be
         # added as 3.3 development continues.
         REQUIRED_MODULES.extend([
             #"aifc",
             #"antigravity",
             #"argparse",
             #"ast",
             #"asynchat",
             #"asyncore",
             "base64",
             #"bdb",
             #"binhex",
-            "bisect",
+            #"bisect",
             #"calendar",
             #"cgi",
             #"cgitb",
             #"chunk",
             #"cmd",
             #"codeop",
             #"code",
             #"colorsys",
@@ -144,17 +144,17 @@ elif majver == 3:
             #"ftplib",
             #"functools",
             #"getopt",
             #"getpass",
             #"gettext",
             #"glob",
             #"gzip",
             "hashlib",
-            "heapq",
+            #"heapq",
             "hmac",
             #"html",
             #"http",
             #"idlelib",
             #"imaplib",
             #"imghdr",
             #"importlib",
             #"inspect",
@@ -191,17 +191,17 @@ elif majver == 3:
             #"pty",
             #"pyclbr",
             #"py_compile",
             #"pydoc_data",
             #"pydoc",
             #"_pyio",
             #"queue",
             #"quopri",
-            "reprlib",
+            #"reprlib",
             "rlcompleter",
             #"runpy",
             #"sched",
             #"shelve",
             #"shlex",
             #"smtpd",
             #"smtplib",
             #"sndhdr",
@@ -233,17 +233,17 @@ elif majver == 3:
             #"tty",
             #"turtledemo",
             #"turtle",
             #"unittest",
             #"urllib",
             #"uuid",
             #"uu",
             #"wave",
-            "weakref",
+            #"weakref",
             #"webbrowser",
             #"wsgiref",
             #"xdrlib",
             #"xml",
             #"xmlrpc",
             #"zipfile",
         ])
 
@@ -278,17 +278,17 @@ class Logger(object):
         self.log(self.DEBUG, msg, *args, **kw)
     def info(self, msg, *args, **kw):
         self.log(self.INFO, msg, *args, **kw)
     def notify(self, msg, *args, **kw):
         self.log(self.NOTIFY, msg, *args, **kw)
     def warn(self, msg, *args, **kw):
         self.log(self.WARN, msg, *args, **kw)
     def error(self, msg, *args, **kw):
-        self.log(self.WARN, msg, *args, **kw)
+        self.log(self.ERROR, msg, *args, **kw)
     def fatal(self, msg, *args, **kw):
         self.log(self.FATAL, msg, *args, **kw)
     def log(self, level, msg, *args, **kw):
         if args:
             if kw:
                 raise TypeError(
                     "You may give positional or keyword arguments, not both")
         args = args or kw
@@ -468,34 +468,35 @@ def make_exe(fn):
     if hasattr(os, 'chmod'):
         oldmode = os.stat(fn).st_mode & 0xFFF # 0o7777
         newmode = (oldmode | 0x16D) & 0xFFF # 0o555, 0o7777
         os.chmod(fn, newmode)
         logger.info('Changed mode of %s to %s', fn, oct(newmode))
 
 def _find_file(filename, dirs):
     for dir in reversed(dirs):
-        if os.path.exists(join(dir, filename)):
-            return join(dir, filename)
+        files = glob.glob(os.path.join(dir, filename))
+        if files and os.path.exists(files[0]):
+            return files[0]
     return filename
 
 def _install_req(py_executable, unzip=False, distribute=False,
                  search_dirs=None, never_download=False):
 
     if search_dirs is None:
         search_dirs = file_search_dirs()
 
     if not distribute:
-        setup_fn = 'setuptools-0.6c11-py%s.egg' % sys.version[:3]
+        setup_fn = 'setuptools-*-py%s.egg' % sys.version[:3]
         project_name = 'setuptools'
         bootstrap_script = EZ_SETUP_PY
         source = None
     else:
         setup_fn = None
-        source = 'distribute-0.6.27.tar.gz'
+        source = 'distribute-*.tar.gz'
         project_name = 'distribute'
         bootstrap_script = DISTRIBUTE_SETUP_PY
 
     if setup_fn is not None:
         setup_fn = _find_file(setup_fn, search_dirs)
 
     if source is not None:
         source = _find_file(source, search_dirs)
@@ -507,17 +508,17 @@ def _install_req(py_executable, unzip=Fa
         os.write(fd, bootstrap_script)
         os.close(fd)
         cmd = [py_executable, ez_setup]
     else:
         cmd = [py_executable, '-c', bootstrap_script]
     if unzip:
         cmd.append('--always-unzip')
     env = {}
-    remove_from_env = []
+    remove_from_env = ['__PYVENV_LAUNCHER__']
     if logger.stdout_level_matches(logger.DEBUG):
         cmd.append('-v')
 
     old_chdir = os.getcwd()
     if setup_fn is not None and os.path.exists(setup_fn):
         logger.info('Using existing %s egg: %s' % (project_name, setup_fn))
         cmd.append(setup_fn)
         if os.environ.get('PYTHONPATH'):
@@ -614,17 +615,17 @@ def install_pip(py_executable, search_di
     filenames = [(os.path.basename(filename).lower(), i, filename) for i, filename in enumerate(filenames)]
     filenames.sort()
     filenames = [filename for basename, i, filename in filenames]
     if not filenames:
         filename = 'pip'
     else:
         filename = filenames[-1]
     easy_install_script = 'easy_install'
-    if sys.platform == 'win32':
+    if is_win:
         easy_install_script = 'easy_install-script.py'
     # There's two subtle issues here when invoking easy_install.
     # 1. On unix-like systems the easy_install script can *only* be executed
     #    directly if its full filesystem path is no longer than 78 characters.
     # 2. A work around to [1] is to use the `python path/to/easy_install foo`
     #    pattern, but that breaks if the path contains non-ASCII characters, as
     #    you can't put the file encoding declaration before the shebang line.
     # The solution is to use Python's -x flag to skip the first line of the
@@ -727,17 +728,19 @@ class ConfigOptionParser(optparse.Option
                 # ignore empty values
                 if not val:
                     continue
                 # handle multiline configs
                 if option.action == 'append':
                     val = val.split()
                 else:
                     option.nargs = 1
-                if option.action in ('store_true', 'store_false', 'count'):
+                if option.action == 'store_false':
+                    val = not strtobool(val)
+                elif option.action in ('store_true', 'count'):
                     val = strtobool(val)
                 try:
                     val = option.convert_value(key, val)
                 except optparse.OptionValueError:
                     e = sys.exc_info()[1]
                     print("An error occured during configuration: %s" % e)
                     sys.exit(3)
                 defaults[option.dest] = val
@@ -1047,22 +1050,25 @@ def create_environment(home_dir, site_pa
     else:
         install_setuptools(py_executable, unzip=unzip_setuptools,
                            search_dirs=search_dirs, never_download=never_download)
 
     install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
 
     install_activate(home_dir, bin_dir, prompt)
 
+def is_executable_file(fpath):
+    return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
+
 def path_locations(home_dir):
     """Return the path locations for the environment (where libraries are,
     where scripts go, etc)"""
     # XXX: We'd use distutils.sysconfig.get_python_inc/lib but its
     # prefix arg is broken: http://bugs.python.org/issue3386
-    if sys.platform == 'win32':
+    if is_win:
         # Windows has lots of problems with executables with spaces in
         # the name; this function will remove them (using the ~1
         # format):
         mkdir(home_dir)
         if ' ' in home_dir:
             try:
                 import win32api
             except ImportError:
@@ -1077,34 +1083,49 @@ def path_locations(home_dir):
     if is_jython:
         lib_dir = join(home_dir, 'Lib')
         inc_dir = join(home_dir, 'Include')
         bin_dir = join(home_dir, 'bin')
     elif is_pypy:
         lib_dir = home_dir
         inc_dir = join(home_dir, 'include')
         bin_dir = join(home_dir, 'bin')
-    elif sys.platform != 'win32':
+    elif not is_win:
         lib_dir = join(home_dir, 'lib', py_version)
-        inc_dir = join(home_dir, 'include', py_version + abiflags)
+        multiarch_exec = '/usr/bin/multiarch-platform'
+        if is_executable_file(multiarch_exec):
+            # In Mageia (2) and Mandriva distros the include dir must be like:
+            # virtualenv/include/multiarch-x86_64-linux/python2.7
+            # instead of being virtualenv/include/python2.7
+            p = subprocess.Popen(multiarch_exec, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            stdout, stderr = p.communicate()
+            # stdout.strip is needed to remove newline character
+            inc_dir = join(home_dir, 'include', stdout.strip(), py_version + abiflags)
+        else:
+            inc_dir = join(home_dir, 'include', py_version + abiflags)
         bin_dir = join(home_dir, 'bin')
     return home_dir, lib_dir, inc_dir, bin_dir
 
 
 def change_prefix(filename, dst_prefix):
     prefixes = [sys.prefix]
 
-    if sys.platform == "darwin":
+    if is_darwin:
         prefixes.extend((
             os.path.join("/Library/Python", sys.version[:3], "site-packages"),
             os.path.join(sys.prefix, "Extras", "lib", "python"),
-            os.path.join("~", "Library", "Python", sys.version[:3], "site-packages")))
+            os.path.join("~", "Library", "Python", sys.version[:3], "site-packages"),
+            # Python 2.6 no-frameworks
+            os.path.join("~", ".local", "lib","python", sys.version[:3], "site-packages"),
+            # System Python 2.7 on OSX Mountain Lion
+            os.path.join("~", "Library", "Python", sys.version[:3], "lib", "python", "site-packages")))
 
     if hasattr(sys, 'real_prefix'):
         prefixes.append(sys.real_prefix)
+    prefixes = list(map(os.path.expanduser, prefixes))
     prefixes = list(map(os.path.abspath, prefixes))
     filename = os.path.abspath(filename)
     for src_prefix in prefixes:
         if filename.startswith(src_prefix):
             _, relpath = filename.split(src_prefix, 1)
             if src_prefix != os.sep: # sys.prefix == "/"
                 assert relpath[0] == os.sep
                 relpath = relpath[1:]
@@ -1159,19 +1180,19 @@ def install_python(home_dir, lib_dir, in
     if hasattr(sys, 'real_prefix'):
         logger.notify('Using real prefix %r' % sys.real_prefix)
         prefix = sys.real_prefix
     else:
         prefix = sys.prefix
     mkdir(lib_dir)
     fix_lib64(lib_dir)
     stdlib_dirs = [os.path.dirname(os.__file__)]
-    if sys.platform == 'win32':
+    if is_win:
         stdlib_dirs.append(join(os.path.dirname(stdlib_dirs[0]), 'DLLs'))
-    elif sys.platform == 'darwin':
+    elif is_darwin:
         stdlib_dirs.append(join(stdlib_dirs[0], 'site-packages'))
     if hasattr(os, 'symlink'):
         logger.info('Symlinking Python bootstrap modules')
     else:
         logger.info('Copying Python bootstrap modules')
     logger.indent += 2
     try:
         # copy required files...
@@ -1195,33 +1216,29 @@ def install_python(home_dir, lib_dir, in
         site_filename = site_filename.replace('$py.class', '.py')
     site_filename_dst = change_prefix(site_filename, home_dir)
     site_dir = os.path.dirname(site_filename_dst)
     writefile(site_filename_dst, SITE_PY)
     writefile(join(site_dir, 'orig-prefix.txt'), prefix)
     site_packages_filename = join(site_dir, 'no-global-site-packages.txt')
     if not site_packages:
         writefile(site_packages_filename, '')
-    else:
-        if os.path.exists(site_packages_filename):
-            logger.info('Deleting %s' % site_packages_filename)
-            os.unlink(site_packages_filename)
 
     if is_pypy or is_win:
         stdinc_dir = join(prefix, 'include')
     else:
         stdinc_dir = join(prefix, 'include', py_version + abiflags)
     if os.path.exists(stdinc_dir):
         copyfile(stdinc_dir, inc_dir)
     else:
         logger.debug('No include dir %s' % stdinc_dir)
 
     # pypy never uses exec_prefix, just ignore it
     if sys.exec_prefix != prefix and not is_pypy:
-        if sys.platform == 'win32':
+        if is_win:
             exec_dir = join(sys.exec_prefix, 'lib')
         elif is_jython:
             exec_dir = join(sys.exec_prefix, 'Lib')
         else:
             exec_dir = join(sys.exec_prefix, 'lib', py_version)
         for fn in os.listdir(exec_dir):
             copyfile(join(exec_dir, fn), join(lib_dir, fn))
 
@@ -1237,16 +1254,20 @@ def install_python(home_dir, lib_dir, in
         if os.path.exists(src):
             copyfile(src, join(home_dir, 'registry'), symlink=False)
         copyfile(join(prefix, 'cachedir'), join(home_dir, 'cachedir'),
                  symlink=False)
 
     mkdir(bin_dir)
     py_executable = join(bin_dir, os.path.basename(sys.executable))
     if 'Python.framework' in prefix:
+        # OS X framework builds cause validation to break
+        # https://github.com/pypa/virtualenv/issues/322
+        if os.environ.get('__PYVENV_LAUNCHER__'):
+          os.unsetenv('__PYVENV_LAUNCHER__')
         if re.search(r'/Python(?:-32|-64)*$', py_executable):
             # The name of the python executable is not quite what
             # we want, rename it.
             py_executable = os.path.join(
                     os.path.dirname(py_executable), 'python')
 
     logger.notify('New %s executable in %s', expected_exe, py_executable)
     pcbuild_dir = os.path.dirname(sys.executable)
@@ -1259,24 +1280,24 @@ def install_python(home_dir, lib_dir, in
         pcbuild_dir = None
         if os.path.exists(pyd_pth):
             logger.info('Deleting %s (not Windows env or not build directory python)' % pyd_pth)
             os.unlink(pyd_pth)
 
     if sys.executable != py_executable:
         ## FIXME: could I just hard link?
         executable = sys.executable
-        if sys.platform == 'cygwin' and os.path.exists(executable + '.exe'):
+        if is_cygwin and os.path.exists(executable + '.exe'):
             # Cygwin misreports sys.executable sometimes
             executable += '.exe'
             py_executable += '.exe'
             logger.info('Executable actually exists in %s' % executable)
         shutil.copyfile(executable, py_executable)
         make_exe(py_executable)
-        if sys.platform == 'win32' or sys.platform == 'cygwin':
+        if is_win or is_cygwin:
             pythonw = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe')
             if os.path.exists(pythonw):
                 logger.info('Also created pythonw.exe')
                 shutil.copyfile(pythonw, os.path.join(os.path.dirname(py_executable), 'pythonw.exe'))
             python_d = os.path.join(os.path.dirname(sys.executable), 'python_d.exe')
             python_d_dest = os.path.join(os.path.dirname(py_executable), 'python_d.exe')
             if os.path.exists(python_d):
                 logger.info('Also created python_d.exe')
@@ -1305,17 +1326,17 @@ def install_python(home_dir, lib_dir, in
         if is_pypy:
             # make a symlink python --> pypy-c
             python_executable = os.path.join(os.path.dirname(py_executable), 'python')
             if sys.platform in ('win32', 'cygwin'):
                 python_executable += '.exe'
             logger.info('Also created executable %s' % python_executable)
             copyfile(py_executable, python_executable)
 
-            if sys.platform == 'win32':
+            if is_win:
                 for name in 'libexpat.dll', 'libpypy.dll', 'libpypy-c.dll', 'libeay32.dll', 'ssleay32.dll', 'sqlite.dll':
                     src = join(prefix, name)
                     if os.path.exists(src):
                         copyfile(src, join(bin_dir, name))
 
     if os.path.splitext(os.path.basename(py_executable))[0] != expected_exe:
         secondary_exe = os.path.join(os.path.dirname(py_executable),
                                      expected_exe)
@@ -1388,17 +1409,17 @@ def install_python(home_dir, lib_dir, in
             os.symlink('python', pth)
         else:
             # reverse symlinking python -> pythonX.Y (with --python)
             pth = join(bin_dir, 'python')
             if os.path.exists(pth):
                 os.unlink(pth)
             os.symlink(os.path.basename(py_executable), pth)
 
-    if sys.platform == 'win32' and ' ' in py_executable:
+    if is_win and ' ' in py_executable:
         # There's a bug with subprocess on Windows when using a first
         # argument that has a space in it.  Instead we have to quote
         # the value:
         py_executable = '"%s"' % py_executable
     # NOTE: keep this check as one line, cmd.exe doesn't cope with line breaks
     cmd = [py_executable, '-c', 'import sys;out=sys.stdout;'
         'getattr(out, "buffer", out).write(sys.prefix.encode("utf-8"))']
     logger.info('Testing executable with %s %s "%s"' % tuple(cmd))
@@ -1422,17 +1443,17 @@ def install_python(home_dir, lib_dir, in
     if proc_stdout != norm_home_dir:
         logger.fatal(
             'ERROR: The executable %s is not functioning' % py_executable)
         logger.fatal(
             'ERROR: It thinks sys.prefix is %r (should be %r)'
             % (proc_stdout, norm_home_dir))
         logger.fatal(
             'ERROR: virtualenv is not compatible with this system or executable')
-        if sys.platform == 'win32':
+        if is_win:
             logger.fatal(
                 'Note: some Windows users have reported this error when they '
                 'installed Python for "Only this user" or have multiple '
                 'versions of Python installed. Copying the appropriate '
                 'PythonXX.dll to the virtualenv Scripts/ directory may fix '
                 'this problem.')
         sys.exit(100)
     else:
@@ -1441,22 +1462,27 @@ def install_python(home_dir, lib_dir, in
     pydistutils = os.path.expanduser('~/.pydistutils.cfg')
     if os.path.exists(pydistutils):
         logger.notify('Please make sure you remove any previous custom paths from '
                       'your %s file.' % pydistutils)
     ## FIXME: really this should be calculated earlier
 
     fix_local_scheme(home_dir)
 
+    if site_packages:
+        if os.path.exists(site_packages_filename):
+            logger.info('Deleting %s' % site_packages_filename)
+            os.unlink(site_packages_filename)
+
     return py_executable
 
 
 def install_activate(home_dir, bin_dir, prompt=None):
     home_dir = os.path.abspath(home_dir)
-    if sys.platform == 'win32' or is_jython and os._name == 'nt':
+    if is_win or is_jython and os._name == 'nt':
         files = {
             'activate.bat': ACTIVATE_BAT,
             'deactivate.bat': DEACTIVATE_BAT,
             'activate.ps1': ACTIVATE_PS,
         }
 
         # MSYS needs paths of the form /c/path/to/file
         drive, tail = os.path.splitdrive(home_dir.replace(os.sep, '/'))
@@ -1529,17 +1555,18 @@ def fix_lib64(lib_dir):
     if [p for p in distutils.sysconfig.get_config_vars().values()
         if isinstance(p, basestring) and 'lib64' in p]:
         logger.debug('This system uses lib64; symlinking lib64 to lib')
         assert os.path.basename(lib_dir) == 'python%s' % sys.version[:3], (
             "Unexpected python lib dir: %r" % lib_dir)
         lib_parent = os.path.dirname(lib_dir)
         assert os.path.basename(lib_parent) == 'lib', (
             "Unexpected parent dir: %r" % lib_parent)
-        copyfile(lib_parent, os.path.join(os.path.dirname(lib_parent), 'lib64'))
+        os.symlink(os.path.join('.', os.path.basename(lib_parent)),
+                   os.path.join(os.path.dirname(lib_parent), 'lib64'))
 
 def resolve_interpreter(exe):
     """
     If the executable given isn't an absolute path, search $PATH for the interpreter
     """
     if os.path.abspath(exe) != exe:
         paths = os.environ.get('PATH', '').split(os.pathsep)
         for path in paths:
@@ -1579,18 +1606,17 @@ def make_environment_relocatable(home_di
 OK_ABS_SCRIPTS = ['python', 'python%s' % sys.version[:3],
                   'activate', 'activate.bat', 'activate_this.py']
 
 def fixup_scripts(home_dir):
     # This is what we expect at the top of scripts:
     shebang = '#!%s/bin/python' % os.path.normcase(os.path.abspath(home_dir))
     # This is what we'll put:
     new_shebang = '#!/usr/bin/env python%s' % sys.version[:3]
-    activate = "import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); execfile(activate_this, dict(__file__=activate_this)); del os, activate_this"
-    if sys.platform == 'win32':
+    if is_win:
         bin_suffix = 'Scripts'
     else:
         bin_suffix = 'bin'
     bin_dir = os.path.join(home_dir, bin_suffix)
     home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
     for filename in os.listdir(bin_dir):
         filename = os.path.join(bin_dir, filename)
         if not os.path.isfile(filename):
@@ -1614,21 +1640,36 @@ def fixup_scripts(home_dir):
                 logger.debug('Cannot make script %s relative' % filename)
             elif lines[0].strip() == new_shebang:
                 logger.info('Script %s has already been made relative' % filename)
             else:
                 logger.warn('Script %s cannot be made relative (it\'s not a normal script that starts with %s)'
                             % (filename, shebang))
             continue
         logger.notify('Making script %s relative' % filename)
-        lines = [new_shebang+'\n', activate+'\n'] + lines[1:]
+        script = relative_script([new_shebang] + lines[1:])
         f = open(filename, 'wb')
-        f.write('\n'.join(lines).encode('utf-8'))
+        f.write('\n'.join(script).encode('utf-8'))
         f.close()
 
+def relative_script(lines):
+    "Return a script that'll work in a relocatable environment."
+    activate = "import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); execfile(activate_this, dict(__file__=activate_this)); del os, activate_this"
+    # Find the last future statement in the script. If we insert the activation
+    # line before a future statement, Python will raise a SyntaxError.
+    activate_at = None
+    for idx, line in reversed(list(enumerate(lines))):
+        if line.split()[:3] == ['from', '__future__', 'import']:
+            activate_at = idx + 1
+            break
+    if activate_at is None:
+        # Activate after the shebang.
+        activate_at = 1
+    return lines[:activate_at] + ['', activate, ''] + lines[activate_at:]
+
 def fixup_pth_and_egg_link(home_dir, sys_path=None):
     """Makes .pth and .egg-link files use relative paths"""
     home_dir = os.path.normcase(os.path.abspath(home_dir))
     if sys_path is None:
         sys_path = sys.path
     for path in sys_path:
         if not path:
             path = '.'
@@ -1992,149 +2033,150 @@ vzXQAgNE22ualqzbyAb97uvl6qF/2a5hcU+eBzVW
 dX85nKW3umfYbtu8713Sylhb2i3v2qaoc8C7S2P3pME8uIGedi1IxXbL+adi+P2fT8Xy/m+/PrxZ
 /TrXDcpqOMjotwdo9AJmg8r1N7BySygc+Gp+XaYdJhpV8f/7Oy3Y1s330l09YBDTjnyjn5qHGF7x
 6O7hZfMXz21OyLZB6lUfOGAGMzo/bjaL7VaV7Ha76D/1yJVEqKmr+L2nCbH7+959wDtv38JZplQG
 BDaonX65d/fwEjNqlDjLVIvM9X+XVxF7
 """)
 
 ##file distribute_setup.py
 DISTRIBUTE_SETUP_PY = convert("""
-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
+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
+9g==
 """)
 
 ##file activate.sh
 ACTIVATE_SH = convert("""
-eJytVVFv2jAQfs+vuIY+lGo06h5bMYmqSCC1UDWs09ZWwSQOseTYKHZI6bT/vnMSQtIA0rTmgRDf
-57vPd9+dOzCLmIKQcQpxqjQsKKSKBpAxHYGtZJr4FBZMOMTXbE00teE8TGQMC6Kic6sDG5mCT4SQ
-GpJUANMQsIT6mm8sK6DbXXDWhd8W4JMKRTWsNoH0rXyhAwk1S5IHQMWaJVLEVGhYk4SRBacqR7EQ
-nqEnwD71pne33tP4cfZ9cOc9DGYjG17hGnRERY40j1nu74NWCPq2konOgdVaQa21KbeH7CiNn7PR
-dDKa3g/3kamMLUq7bS1ilekovSYKSZYpzauqIpliUgOqsR55wYCIAN5V9AWyiPkRRGRNgeALTb6M
-Y2PWEdG5FkpXqAifcI6a0BKWyABLjP9CmZiPFUHRlFvVBcAP1I1MdWnWTCxLNw2gSRCcmuSCHxGx
-pAoyFCAJzM8GjJgwLOpihcxp8CH1NwMXi96Txdcvd+Q9DR/d8XSyJ/n50XoJfP3mBHTtiJTzRqoO
-FdS93FdJ97JVQgS2audeHi1aad5SKCBb63DytCN2gryQSB9sIUVAlU5S01D0A7cOuJSHsAWcfIje
-M6ZtJ25D/7GweQs7SxLKUQmNpqv1bjO2ZdWo9m3Pq316nm2VSaifx2r1FKax6Mfyo4Z2PO9mPPEm
-g/uh512VsHq7Vrx36jfZwhW0aCP8jHEOIWHcrNdRyqCMeo3+aLzSG8BzoUjhrGgIRCxIgG2yycim
-i/78vIVwJMIcfZ3l6Uyv4QrVW/ntwvUcmMg7zNoJ6uBQONDC/caWmjRqXW40U0R4h0bWvNuxO7i5
-G3oPj9P7h9nRiLmKK+Hm7uy3XR0LD1hKOOnD24EuaMN3HilXtOZ6jnmhgsQUXhqUX+x5Lm0TqRWk
-A6b3GeE4fDD5OE5ggCsC58OS+eUdIxNWXg/lFkoh0np15ThZll28U40TZX2BU8dRMtQZSahDjBen
-eZjnGsU5ut5L9mU+f4U9h6y8nB05aHe3sbxJyldtZJjaEs6IKm7Hvr3a4CwV0IuLBdso/1MG+ycM
-9f8c6P8+zPcNcszYX1+tk3g=
+eJytVVFvokAQfudXTLEPtTlLeo9tvMSmJpq02hSvl7u2wRUG2QR2DSxSe7n/frOACEVNLlceRHa+
+nfl25pvZDswCnoDPQ4QoTRQsENIEPci4CsBMZBq7CAsuLOYqvmYKTTj3YxnBgiXBudGBjUzBZUJI
+BXEqgCvweIyuCjeG4eF2F5x14bcB9KQiQQWrjSddI1/oQIx6SYYeoFjzWIoIhYI1izlbhJjkKO7D
+M/QEmKfO9O7WeRo/zr4P7pyHwWxkwitcgwpQ5Ej96OX+PmiFwLeVjFUOrNYKaq1Nud3nR2n8nI2m
+k9H0friPTGVsUdptaxGrTEfpNVFEskxpXtUkkCkl1UNF9cgLBkx48J4EXyALuBtAwNYIjF5kcmUU
+abMKmMq1ULoiRbgsDEkTSsKSGFCJ6Z8vY/2xYiSacmtyAfCDdCNTVZoVF8vSTQOoEwSnOrngBkws
+MYGMBMg8/bMBLSYKS7pYEXP0PqT+ZmBT0Xuy+Pplj5yn4aM9nk72JD8/Wi+Gr98sD9eWSMOwkapD
+BbUv91XSvmyVkICt2tmXR4tWmrcUCsjWOpw87YidEC8i0gdTSOFhouJUNxR+4NYBG0MftoCTD9F7
+2rTtxG3oPwY1b2HncYwhrlmj6Wq924xtGDWqfdNxap+OYxplEurnMVo9RWks+rH8qKEtx7kZT5zJ
+4H7oOFclrN6uFe+d+nW2aIUsSgs/42EIPuOhXq+jEo3S6tX6w2ilNkDnIpHCWdEQhFgwj9pkk7FN
+l/y5eQvRSIQ5+TrL05lewxWpt/Lbhes5cJF3mLET1MGhcKCF+40tNWnUulxrpojwDo2sObdje3Bz
+N3QeHqf3D7OjEXMVV8LN3ZlvuzoWHqiUcNKHtwNd0IbvPGKYYM31nPKCgkUILw3KL+Y8l7aO1ArS
+Ad37nIU0fCj5NE5gQCuC5sOSu+UdI2NeXg/lFkQIlFpdWVaWZRfvqGiirC9o6liJ9FXGYrSY9mI1
+D/Ncozgn13vJvsznr7DnkJWXsyMH7e42ljdJ+aqNDF1bFnKWFLdj31xtaJYK6EXFgqmV/ymD/ROG
++n8O9H8f5vsGOWXsL1+1k3g=
 """)
 
 ##file activate.fish
 ACTIVATE_FISH = convert("""
-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
+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
-vXL+eccQoRze2+02ekPDEtxEsVwNtEzNlikcMOdp8A7BT6f65VSDY9kjtD+HeZbb9C+5wZ4XZ9dC
-CQXc+2A6MNP4DqLuqe7t0v4/gA5wfBRGKQGX6oMhUbWv0Bg8uLXoVn8AkYzUxg==
+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
 """)
 
 ##file activate.csh
 ACTIVATE_CSH = convert("""
 eJx9U11v2jAUffevOA2o3ZBG9gxjGx2VVqmlVUUrTWMyTnLTWEocZDsg+uvnOEDDx5aHKLn3fFyf
 3HQwy6RBKnNCURmLiFAZSrCWNkNgykrHhEiqUMRWroSlfmyyAL1UlwXcY6/POvhVVoiFUqWFrhSk
 RSI1xTbf1N0fmhwvQbTBRKxkQphIXOfCSHxJfCGJvr8WQub9uCy+9hkTuRQGCe08cWXJzdb9xh/u
 Jvzl9mn2PL7jj+PZT1yM8BmXlzBkSa3ga0H3BBfUmEo5FE56Q2jKhMmGOOvy9HD/OGv7YOnOvrSj
-YxsP/KeR7w6bVj3prnEzfdkaB/OLQS+onQJVqsSVdFUHQFvNk1Ra1eUmKeMr5tJ+9t5Sa8rFipTF
+YxsP/KeR7w6bVj3prnEzfdkaB/OLQS+onQJVqsSVdFUHQFvNk1Ra1eUmKeMr5tJ+9t5Sa8ppJZTF
 SmgpopxMn7W4hw6MnU6FgPPWK+eBR53m54LwEbPDb9Dihpxf3075dHx/w/lgiz4j5jNyck3ADiJT
 fGiN0QDcJD6k4CNsRorBXbWW8+ZKFIQRznEY5YY8uFZdRMKQRx9MGiww8vS2eH11YJYUS5G7RTeE
 tNQYu4pCIV5lvN33UksybQoRMmuXgzBcr9f9N7IioVW95aEpU7sWmkJRq4R70tFB3secL5zHmYHn
-i4Un70/3X5WjwzZMlciUNff39a5T/N3difzB/qM0y71r7H5Wv4DubrNS4VPRvDPW/FmM/QUd6WEa
+i4Un70/3X5WjwzZMlciUNff39a5T/N3difzB/qM0y71r7H5Wv4DubrNS4VPRvDPW/FmM/QUd8WEa
 """)
 
 ##file activate.bat
 ACTIVATE_BAT = convert("""
 eJyFUkEKgzAQvAfyhz0YaL9QEWpRqlSjWGspFPZQTevFHOr/adQaU1GaUzI7Mzu7ZF89XhKkEJS8
 qxaKMMsvboQ+LxxE44VICSW1gEa2UFaibqoS0iyJ0xw2lIA6nX5AHCu1jpRsv5KRjknkac9VLVug
 sX9mtzxIeJDE/mg4OGp47qoLo3NHX2jsMB3AiDht5hryAUOEifoTdCXbSh7V0My2NMq/Xbh5MEjU
 ZT63gpgNT9lKOJ/CtHsvT99re3pX303kydn4HeyOeAg5cjf2EW1D6HOPkg9NGKhu
@@ -2235,37 +2277,39 @@ q9gNNsrlEMLdikBt9bFvBnfbUIh6voTw7eDsyTmP
 taxWYmwz1tYVFG/vOQhlM0gUkyvIab3nv2caJ1udU1F3pDMty7stubTE4OJqm0i0ECfrJIkLtraC
 HwRWKzlqpfhEIqYH09eT9WrOhQyt8YEoyBlnXtAT37WHIQ03TIuEHbnRxZDdLun0iok9PUC79prU
 m5beZzfQUelEXnhzb/pIROKx3F7qCttYIFGh5dXNzFzID7u8vKykA8Uejf7XXz//S4nKvW//ofS/
 QastYw==
 """)
 
 ##file distutils-init.py
 DISTUTILS_INIT = convert("""
-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
+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
 """)
 
 ##file distutils.cfg
 DISTUTILS_CFG = convert("""
 eJxNj00KwkAMhfc9xYNuxe4Ft57AjYiUtDO1wXSmNJnK3N5pdSEEAu8nH6lxHVlRhtDHMPATA4uH
 xJ4EFmGbvfJiicSHFRzUSISMY6hq3GLCRLnIvSTnEefN0FIjw5tF0Hkk9Q5dRunBsVoyFi24aaLg
 9FDOlL0FPGluf4QjcInLlxd6f6rqkgPu/5nHLg0cXCscXoozRrP51DRT3j9QNl99AP53T2Q=
 """)
@@ -2385,22 +2429,22 @@ def mach_o_change(path, what, value):
             cmd, cmdsize = read_data(file, endian, 2)
             if cmd == LC_LOAD_DYLIB:
                 # The first data field in LC_LOAD_DYLIB commands is the
                 # offset of the name, starting from the beginning of the
                 # command.
                 name_offset = read_data(file, endian)
                 file.seek(where + name_offset, os.SEEK_SET)
                 # Read the NUL terminated string
-                load = file.read(cmdsize - name_offset)
+                load = file.read(cmdsize - name_offset).decode()
                 load = load[:load.index('\0')]
                 # If the string is what is being replaced, overwrite it.
                 if load == what:
                     file.seek(where + name_offset, os.SEEK_SET)
-                    file.write(value + '\0')
+                    file.write(value.encode() + '\0'.encode())
             # Seek to the next command
             file.seek(where + cmdsize, os.SEEK_SET)
 
     def do_file(file, offset=0, size=maxint):
         file = fileview(file, offset, size)
         # Read magic number
         magic = read_data(file, BIG_ENDIAN)
         if magic == FAT_MAGIC:
--- a/python/virtualenv/virtualenv_embedded/activate.csh
+++ b/python/virtualenv/virtualenv_embedded/activate.csh
@@ -1,15 +1,15 @@
 # This file must be used with "source bin/activate.csh" *from csh*.
 # You cannot run it directly.
 # Created by Davide Di Blasi <davidedb@gmail.com>.
 
 alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
 
-# Unset irrelavent variables.
+# Unset irrelevant variables.
 deactivate nondestructive
 
 setenv VIRTUAL_ENV "__VIRTUAL_ENV__"
 
 set _OLD_VIRTUAL_PATH="$PATH"
 setenv PATH "$VIRTUAL_ENV/__BIN_NAME__:$PATH"
 
 set _OLD_VIRTUAL_PROMPT="$prompt"
--- a/python/virtualenv/virtualenv_embedded/activate.fish
+++ b/python/virtualenv/virtualenv_embedded/activate.fish
@@ -24,17 +24,17 @@ function deactivate  -d "Exit virtualenv
     
     set -e VIRTUAL_ENV
     if test "$argv[1]" != "nondestructive"
         # Self destruct!
         functions -e deactivate
     end
 end
 
-# unset irrelavent variables
+# unset irrelevant variables
 deactivate nondestructive
 
 set -gx VIRTUAL_ENV "__VIRTUAL_ENV__"
 
 set -gx _OLD_VIRTUAL_PATH $PATH
 set -gx PATH "$VIRTUAL_ENV/__BIN_NAME__" $PATH
 
 # unset PYTHONHOME if set
--- a/python/virtualenv/virtualenv_embedded/activate.sh
+++ b/python/virtualenv/virtualenv_embedded/activate.sh
@@ -31,17 +31,17 @@ deactivate () {
 
     unset VIRTUAL_ENV
     if [ ! "$1" = "nondestructive" ] ; then
     # Self destruct!
         unset -f deactivate
     fi
 }
 
-# unset irrelavent variables
+# unset irrelevant variables
 deactivate nondestructive
 
 VIRTUAL_ENV="__VIRTUAL_ENV__"
 export VIRTUAL_ENV
 
 _OLD_VIRTUAL_PATH="$PATH"
 PATH="$VIRTUAL_ENV/__BIN_NAME__:$PATH"
 export PATH
--- a/python/virtualenv/virtualenv_embedded/distribute_setup.py
+++ b/python/virtualenv/virtualenv_embedded/distribute_setup.py
@@ -42,17 +42,17 @@ except ImportError:
         if sys.platform == 'win32':
             def quote(arg):
                 if ' ' in arg:
                     return '"%s"' % arg
                 return arg
             args = [quote(arg) for arg in args]
         return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
 
-DEFAULT_VERSION = "0.6.27"
+DEFAULT_VERSION = "0.6.28"
 DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
 SETUPTOOLS_FAKED_VERSION = "0.6c11"
 
 SETUPTOOLS_PKG_INFO = """\
 Metadata-Version: 1.0
 Name: setuptools
 Version: %s
 Summary: xxxx
@@ -142,17 +142,17 @@ def use_setuptools(version=DEFAULT_VERSI
             import pkg_resources
             if not hasattr(pkg_resources, '_distribute'):
                 if not no_fake:
                     _fake_setuptools()
                 raise ImportError
         except ImportError:
             return _do_download(version, download_base, to_dir, download_delay)
         try:
-            pkg_resources.require("distribute>="+version)
+            pkg_resources.require("distribute>=" + version)
             return
         except pkg_resources.VersionConflict:
             e = sys.exc_info()[1]
             if was_imported:
                 sys.stderr.write(
                 "The required version of distribute (>=%s) is not available,\n"
                 "and can't be installed while this script is running. Please\n"
                 "install a more recent version first, using\n"
@@ -165,16 +165,17 @@ def use_setuptools(version=DEFAULT_VERSI
                                     download_delay)
         except pkg_resources.DistributionNotFound:
             return _do_download(version, download_base, to_dir,
                                 download_delay)
     finally:
         if not no_fake:
             _create_fake_setuptools_pkg_info(to_dir)
 
+
 def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
                         to_dir=os.curdir, delay=15):
     """Download distribute from a specified location and return its filename
 
     `version` should be a valid distribute version number that is available
     as an egg for download under the `download_base` URL (which should end
     with a '/'). `to_dir` is the directory where the egg will be downloaded.
     `delay` is the number of seconds to pause before an actual download
@@ -201,16 +202,17 @@ def download_setuptools(version=DEFAULT_
             dst.write(data)
         finally:
             if src:
                 src.close()
             if dst:
                 dst.close()
     return os.path.realpath(saveto)
 
+
 def _no_sandbox(function):
     def __no_sandbox(*args, **kw):
         try:
             from setuptools.sandbox import DirectorySandbox
             if not hasattr(DirectorySandbox, '_old'):
                 def violation(*args):
                     pass
                 DirectorySandbox._old = DirectorySandbox._violation
@@ -225,16 +227,17 @@ def _no_sandbox(function):
             return function(*args, **kw)
         finally:
             if patched:
                 DirectorySandbox._violation = DirectorySandbox._old
                 del DirectorySandbox._old
 
     return __no_sandbox
 
+
 def _patch_file(path, content):
     """Will backup the file then patch it"""
     existing_content = open(path).read()
     if existing_content == content:
         # already patched
         log.warn('Already patched.')
         return False
     log.warn('Patching...')
@@ -243,25 +246,28 @@ def _patch_file(path, content):
     try:
         f.write(content)
     finally:
         f.close()
     return True
 
 _patch_file = _no_sandbox(_patch_file)
 
+
 def _same_content(path, content):
     return open(path).read() == content
 
+
 def _rename_path(path):
     new_name = path + '.OLD.%s' % time.time()
     log.warn('Renaming %s into %s', path, new_name)
     os.rename(path, new_name)
     return new_name
 
+
 def _remove_flat_installation(placeholder):
     if not os.path.isdir(placeholder):
         log.warn('Unkown installation at %s', placeholder)
         return False
     found = False
     for file in os.listdir(placeholder):
         if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
             found = True
@@ -287,21 +293,23 @@ def _remove_flat_installation(placeholde
             _rename_path(element)
         else:
             log.warn('Could not find the %s element of the '
                      'Setuptools distribution', element)
     return True
 
 _remove_flat_installation = _no_sandbox(_remove_flat_installation)
 
+
 def _after_install(dist):
     log.warn('After install bootstrap.')
     placeholder = dist.get_command_obj('install').install_purelib
     _create_fake_setuptools_pkg_info(placeholder)
 
+
 def _create_fake_setuptools_pkg_info(placeholder):
     if not placeholder or not os.path.exists(placeholder):
         log.warn('Could not find the install location')
         return
     pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
     setuptools_file = 'setuptools-%s-py%s.egg-info' % \
             (SETUPTOOLS_FAKED_VERSION, pyver)
     pkg_info = os.path.join(placeholder, setuptools_file)
@@ -322,17 +330,20 @@ def _create_fake_setuptools_pkg_info(pla
     pth_file = os.path.join(placeholder, 'setuptools.pth')
     log.warn('Creating %s', pth_file)
     f = open(pth_file, 'w')
     try:
         f.write(os.path.join(os.curdir, setuptools_file))
     finally:
         f.close()
 
-_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
+_create_fake_setuptools_pkg_info = _no_sandbox(
+    _create_fake_setuptools_pkg_info
+)
+
 
 def _patch_egg_dir(path):
     # let's check if it's already patched
     pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
     if os.path.exists(pkg_info):
         if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
             log.warn('%s already patched.', pkg_info)
             return False
@@ -344,54 +355,58 @@ def _patch_egg_dir(path):
     try:
         f.write(SETUPTOOLS_PKG_INFO)
     finally:
         f.close()
     return True
 
 _patch_egg_dir = _no_sandbox(_patch_egg_dir)
 
+
 def _before_install():
     log.warn('Before install bootstrap.')
     _fake_setuptools()
 
 
 def _under_prefix(location):
     if 'install' not in sys.argv:
         return True
-    args = sys.argv[sys.argv.index('install')+1:]
+    args = sys.argv[sys.argv.index('install') + 1:]
     for index, arg in enumerate(args):
         for option in ('--root', '--prefix'):
             if arg.startswith('%s=' % option):
                 top_dir = arg.split('root=')[-1]
                 return location.startswith(top_dir)
             elif arg == option:
                 if len(args) > index:
-                    top_dir = args[index+1]
+                    top_dir = args[index + 1]
                     return location.startswith(top_dir)
         if arg == '--user' and USER_SITE is not None:
             return location.startswith(USER_SITE)
     return True
 
 
 def _fake_setuptools():
     log.warn('Scanning installed packages')
     try:
         import pkg_resources
     except ImportError:
         # we're cool
         log.warn('Setuptools or Distribute does not seem to be installed.')
         return
     ws = pkg_resources.working_set
     try:
-        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
-                                  replacement=False))
+        setuptools_dist = ws.find(
+            pkg_resources.Requirement.parse('setuptools', replacement=False)
+            )
     except TypeError:
         # old distribute API
-        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools'))
+        setuptools_dist = ws.find(
+            pkg_resources.Requirement.parse('setuptools')
+        )
 
     if setuptools_dist is None:
         log.warn('No setuptools distribution found')
         return
     # detecting if it was already faked
     setuptools_location = setuptools_dist.location
     log.warn('Setuptools installation detected at %s', setuptools_location)
 
@@ -423,17 +438,18 @@ def _fake_setuptools():
     log.warn('Patched done.')
     _relaunch()
 
 
 def _relaunch():
     log.warn('Relaunching...')
     # we have to relaunch the process
     # pip marker to avoid a relaunch bug
-    if sys.argv[:3] == ['-c', 'install', '--single-version-externally-managed']:
+    _cmd = ['-c', 'install', '--single-version-externally-managed']
+    if sys.argv[:3] == _cmd:
         sys.argv[0] = 'setup.py'
     args = [sys.executable] + sys.argv
     sys.exit(subprocess.call(args))
 
 
 def _extractall(self, path=".", members=None):
     """Extract all members from the archive to the current working
        directory and set owner, modification time and permissions on
@@ -449,17 +465,17 @@ def _extractall(self, path=".", members=
     if members is None:
         members = self
 
     for tarinfo in members:
         if tarinfo.isdir():
             # Extract directories with a safe mode.
             directories.append(tarinfo)
             tarinfo = copy.copy(tarinfo)
-            tarinfo.mode = 448 # decimal for oct 0700
+            tarinfo.mode = 448  # decimal for oct 0700
         self.extract(tarinfo, path)
 
     # Reverse sort directories.
     if sys.version_info < (2, 4):
         def sorter(dir1, dir2):
             return cmp(dir1.name, dir2.name)
         directories.sort(sorter)
         directories.reverse()
@@ -475,26 +491,28 @@ def _extractall(self, path=".", members=
             self.chmod(tarinfo, dirpath)
         except ExtractError:
             e = sys.exc_info()[1]
             if self.errorlevel > 1:
                 raise
             else:
                 self._dbg(1, "tarfile: %s" % e)
 
+
 def _build_install_args(argv):
     install_args = []
     user_install = '--user' in argv
-    if user_install and sys.version_info < (2,6):
+    if user_install and sys.version_info < (2, 6):
         log.warn("--user requires Python 2.6 or later")
         raise SystemExit(1)
     if user_install:
         install_args.append('--user')
     return install_args
 
+
 def main(argv, version=DEFAULT_VERSION):
     """Install or upgrade setuptools and EasyInstall"""
     tarball = download_setuptools()
     _install(tarball, _build_install_args(argv))
 
 
 if __name__ == '__main__':
     main(sys.argv[1:])
--- a/python/virtualenv/virtualenv_embedded/distutils-init.py
+++ b/python/virtualenv/virtualenv_embedded/distutils-init.py
@@ -1,24 +1,31 @@
 import os
 import sys
 import warnings 
+import imp
 import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
               # Important! To work on pypy, this must be a module that resides in the
               # lib-python/modified-x.y.z directory
 
 dirname = os.path.dirname
 
 distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
 if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
     warnings.warn(
         "The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
 else:
     __path__.insert(0, distutils_path)
-    exec(open(os.path.join(distutils_path, '__init__.py')).read())
+    real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY))
+    # Copy the relevant attributes
+    try:
+        __revision__ = real_distutils.__revision__
+    except AttributeError:
+        pass
+    __version__ = real_distutils.__version__
 
 from distutils import dist, sysconfig
 
 try:
     basestring
 except NameError:
     basestring = str
 
deleted file mode 100644
index fb3a6e40452265bf310e3766d283dc4dd72aa61e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..afd04fa83f458841570f2f7dedaf54a926964781
GIT binary patch
literal 627530
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