[Pkg-mozext-commits] [SCM] Web development plugin for Iceweasel/Firefox branch, upstream, updated. debian/1.8.1-1-g9f32ee5

Fabrizio Regalli fabreg at fabreg.it
Fri Sep 16 23:00:35 UTC 2011


The following commit has been merged in the upstream branch:
commit 9f32ee5909031f1103017d996cc84b5b837604e5
Author: Fabrizio Regalli <fabreg at fabreg.it>
Date:   Sat Sep 17 00:59:12 2011 +0200

    Imported Upstream version 1.8.3

diff --git a/content/firebug/branch.properties b/content/firebug/branch.properties
index 7991986..0176e3a 100644
--- a/content/firebug/branch.properties
+++ b/content/firebug/branch.properties
@@ -1,5 +1,5 @@
 # DO NOT MERGE INTO TRUNK
-RELEASE=.1
+RELEASE=.3
 VERSION=1.8
 TRUNK=
 # To allow build.xml to drop the xpi directly into the svn working copy for getfirebug.com
diff --git a/content/firebug/bti/inProcess/browser.js b/content/firebug/bti/inProcess/browser.js
index 3ba70ce..36dbc57 100644
--- a/content/firebug/bti/inProcess/browser.js
+++ b/content/firebug/bti/inProcess/browser.js
@@ -56,55 +56,88 @@ Browser.unimplementedHandler = function()
 
 Browser.listener =
 {
-    onBreak: function() {
+    onBreak: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onConsoleDebug: function() {
+
+    onConsoleDebug: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onConsoleError: function() {
+
+    onConsoleError: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onConsoleInfo: function() {
+
+    onConsoleInfo: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onConsoleLog: function() {
+
+    onConsoleLog: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onConsoleWarn: function() {
+
+    onConsoleWarn: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onContextCreated: function() {
+
+    onContextCreated: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onContextDestroyed: function() {
+
+    onContextDestroyed: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onContextChanged: function() {
+
+    onContextChanged: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onContextLoaded: function() {
+
+    onContextLoaded: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onInspectNode: function() {
+
+    onInspectNode: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onResume: function() {
+
+    onResume: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onScript: function() {
+
+    onScript: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onSuspend: function() {
+
+    onSuspend: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onToggleBreakpoint: function() {
+
+    onToggleBreakpoint: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onBreakpointError: function() {
+
+    onBreakpointError: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
-    onDisconnect: function() {
+
+    onDisconnect: function()
+    {
         Browser.unimplementedHandler.apply(this, arguments);
     },
 };
@@ -433,7 +466,9 @@ Browser.prototype.disconnect = function()
 Browser.prototype.toggleResume = function(resume)
 {
     if (FBTrace.DBG_ACTIVATION)
-        FBTrace.sysout("toggleResume ------------"+(Firebug.getSuspended()?"OFF":"ON")+"----> "+(!!resume?"ON":"OFF"));
+        FBTrace.sysout("toggleResume ------------"+(Firebug.getSuspended()?"OFF":"ON")+"----> "+
+            (!!resume?"ON":"OFF"));
+
     // this should be the only method to call suspend and resume.
     if (resume)  // either a new context or revisiting an old one
     {
@@ -446,7 +481,6 @@ Browser.prototype.toggleResume = function(resume)
     }
 },
 
-
 /**
  * Sets the browser context that has focus, possibly <code>null</code>.
  *
@@ -632,6 +666,8 @@ var clearContextTimeout = 0;
 
 var TabWatchListener =
 {
+    dispatchName: "TabWatchListener",
+
     initContext: function(context, persistedState)  // called after a context is created.
     {
         context.panelName = context.browser.panelName;
@@ -648,9 +684,7 @@ var TabWatchListener =
         Firebug.connection.toggleResume(context); // a newly created context is active
     },
 
-
-
-    /*
+    /**
      * To be called from Firebug.TabWatcher only, see selectContext
      */
     showContext: function(browser, context)  // Firebug.TabWatcher showContext. null context means we don't debug that browser
@@ -687,6 +721,7 @@ var TabWatchListener =
             var panel = context.panelMap[panelName];
             panel.unwatchWindow(win);
         }
+
         Events.dispatch(Firebug.modules, "unwatchWindow", [context, win]);
     },
 
@@ -719,13 +754,38 @@ var TabWatchListener =
         // next the context is deleted and removed from the Firebug.TabWatcher, we clean up in unWatchBrowser
     },
 
-    onSourceFileCreated: function(context, sourceFile)
+    onSourceFileCreated: function()
+    {
+        Events.dispatch(Firebug.modules, "onSourceFileCreated", arguments);
+    },
+
+    shouldCreateContext: function()
     {
-        Events.dispatch(Firebug.modules, "onSourceFileCreated", [context, sourceFile]);
+        if (Events.dispatch2(Firebug.modules, "shouldCreateContext", arguments))
+            return true;
+        else
+            return false;
+    },
+
+    shouldNotCreateContext: function()
+    {
+        if (Events.dispatch2(Firebug.modules, "shouldNotCreateContext", arguments))
+            return true;
+        else
+            return false;
     },
 
+    shouldShowContext: function()
+    {
+        if (Events.dispatch2(Firebug.modules, "shouldShowContext", arguments))
+            return true;
+        else
+            return false;
+    }
 };
 
+// ********************************************************************************************* //
+
 Browser.prototype.connect = function ()
 {
     // Events fired on browser are re-broadcast to Firebug.modules
@@ -740,6 +800,7 @@ Browser.prototype.connect = function ()
             Firebug.connection.dispatch("updateOption", [name, value]);
         }
     });
+
     TabWatcher.initialize();
     TabWatcher.addListener(TabWatchListener);
 
diff --git a/content/firebug/chrome/chrome.js b/content/firebug/chrome/chrome.js
index 6c57f4b..8b53d12 100644
--- a/content/firebug/chrome/chrome.js
+++ b/content/firebug/chrome/chrome.js
@@ -605,6 +605,9 @@ var FirebugChrome =
         var panel = this.selectPanel(bestPanelName, sidePanelName, true);
         if (panel)
             panel.select(object, forceUpdate);
+
+        // issue 4778
+        this.syncLocationList();
     },
 
     selectPanel: function(panelName, sidePanelName, noRefresh)
@@ -1629,7 +1632,7 @@ function getBestPanelName(object, context, panelName)
     // Check if the suggested panel name supports the object, and if so, go with it
     if (panelName)
     {
-        panelType = Firebug.getPanelType(panelName);
+        var panelType = Firebug.getPanelType(panelName);
         if (panelSupportsObject(panelType, object, context))
             return panelType.prototype.name;
     }
@@ -1813,23 +1816,23 @@ function onSelectedSidePanel(event)
 function onPanelMouseOver(event)
 {
     var object = Firebug.getRepObject(event.target);
-    if(!object)
+    if (!object)
         return;
 
     var rep = Firebug.getRep(object, Firebug.currentContext);
-    if(rep)
-        rep.highlightObject(object, Firebug.currentContext);
+    if (rep)
+        rep.highlightObject(object, Firebug.currentContext, event.target);
 }
 
 function onPanelMouseOut(event)
 {
     var object = Firebug.getRepObject(event.target);
-    if(!object)
+    if (!object)
         return;
 
     var rep = Firebug.getRep(object, Firebug.currentContext);
-    if(rep)
-        rep.unhighlightObject(object, Firebug.currentContext);
+    if (rep)
+        rep.unhighlightObject(object, Firebug.currentContext, event.target);
 }
 
 function onPanelClick(event)
diff --git a/content/firebug/chrome/panelActivation.js b/content/firebug/chrome/panelActivation.js
index 18c10d2..b063d4d 100644
--- a/content/firebug/chrome/panelActivation.js
+++ b/content/firebug/chrome/panelActivation.js
@@ -245,7 +245,7 @@ Firebug.PanelActivation = Obj.extend(Firebug.Module,
 
     updateOption: function(name, value)
     {
-        if (name = "allPagesActivation")
+        if (name == "allPagesActivation")
             this.updateAllPagesActivation();
     },
 
diff --git a/content/firebug/chrome/reps.js b/content/firebug/chrome/reps.js
index 89208ba..a100403 100644
--- a/content/firebug/chrome/reps.js
+++ b/content/firebug/chrome/reps.js
@@ -4,11 +4,13 @@ define([
     "firebug/lib/object",
     "firebug/firebug",
     "firebug/lib/domplate",
+    "firebug/firefox/firefox",
     "firebug/firefox/xpcom",
     "firebug/lib/locale",
     "firebug/html/htmlLib",
     "firebug/lib/events",
     "firebug/lib/wrapper",
+    "firebug/lib/options",
     "firebug/lib/url",
     "firebug/js/sourceLink",
     "firebug/js/stackFrame",
@@ -24,7 +26,7 @@ define([
     "firebug/firefox/menu",
     "arch/compilationunit",
 ],
-function(Obj, Firebug, Domplate, Xpcom, Locale, HTMLLib, Events, Wrapper,
+function(Obj, Firebug, Domplate, Firefox, Xpcom, Locale, HTMLLib, Events, Wrapper, Options,
     Url, SourceLink, StackFrame, Css, Dom, Win, System, Xpath, Str, Xml, ToggleBranch,
     EventMonitor, Menu, CompilationUnit) {
 
@@ -577,9 +579,36 @@ FirebugReps.Arr = domplate(Firebug.Rep,
         return this.isArray(object);
     },
 
+    highlightObject: function(object, context, target)
+    {
+        // Highlighting huge amount of elements on the page can cause sericous performance
+        // problems (see issue 4736). So, avoid highlighting if the number of elements in
+        // the array exceeds specified limit.
+        var arr = this.getRealObject(object, context);
+        var limit = Options.get("multiHighlightLimit");
+        if (!arr || arr.length > limit)
+        {
+            if (Css.hasClass(target, "arrayLeftBracket ") ||
+                Css.hasClass(target, "arrayRightBracket"))
+            {
+                var tooltip = Locale.$STRF("console.multiHighlightLimitExceeded", [limit]);
+                target.setAttribute("title", tooltip);
+            }
+
+            // Do not highlight, a tooltip will be displayed instead.
+            return;
+        }
+
+        target.removeAttribute("title");
+
+        // Highlight multiple elements on the page.
+        Firebug.Inspector.highlightObject(arr, context);
+    },
+
     // http://code.google.com/p/fbug/issues/detail?id=874
     // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
-    isArray: function(obj) {
+    isArray: function(obj)
+    {
         try {
             if (!obj)
                 return false;
@@ -1746,7 +1775,7 @@ FirebugReps.ErrorMessage = domplate(Firebug.Rep,
             DIV({"class": "errorTitle focusRow subLogRow", role : 'listitem'},
                 SPAN({"class": "errorDuplication"}, "$object.msgId|getDuplication"),
                 SPAN({"class": "errorMessage"},
-                    "$object.message|getMessage"
+                    "$object.message"
                 )
             ),
             DIV({"class": "errorTrace", role : 'presentation'}),
@@ -1788,13 +1817,6 @@ FirebugReps.ErrorMessage = domplate(Firebug.Rep,
         return FBS.fbs.hasErrorBreakpoint(Url.normalizeURL(error.href), error.lineNo);
     },
 
-    getMessage: function(message)
-    {
-        var re = /\[Exception... "(.*?)" nsresult:/;
-        var m = re.exec(message);
-        return m ? m[1] : message;
-    },
-
     getDuplication: function(msgId)
     {
         return ""; // filled in later
@@ -1888,7 +1910,7 @@ FirebugReps.ErrorMessage = domplate(Firebug.Rep,
     copyError: function(error)
     {
         var message = [
-            this.getMessage(error.message),
+            error.message,
             error.href,
             "Line " +  error.lineNo
         ];
@@ -1916,7 +1938,7 @@ FirebugReps.ErrorMessage = domplate(Firebug.Rep,
     className: "errorMessage",
     inspectable: false,
 
-    supportsObject: function(object, type, context)
+    supportsObject: function(object, type)
     {
         return object instanceof FirebugReps.ErrorMessageObj;
     },
@@ -2001,12 +2023,9 @@ FirebugReps.Except = domplate(Firebug.Rep,
         return errorObject;
     },
 
-    supportsObject: function(object, type, context)
+    supportsObject: function(object, type)
     {
-        var win = context ? Wrapper.getContentView(context.window) : null;
-        var found = (win && instanceOf(object, win.Error)) || (object instanceof FirebugReps.ErrorCopy) ||
-            (object.constructor && object.constructor.name == "ReferenceError");
-        return found;
+        return (object instanceof FirebugReps.ErrorCopy) || Obj.XW_instanceof(object, Error);
     }
 });
 
@@ -2607,7 +2626,7 @@ FirebugReps.NamedNodeMap = domplate(Firebug.Rep,
             var value = item.nodeValue;
 
             var rep = Firebug.getRep(value);
-            tag = rep.tag;
+            var tag = rep.tag;
 
             props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
         }
diff --git a/content/firebug/console/commandLine.js b/content/firebug/console/commandLine.js
index c070428..b1265b0 100644
--- a/content/firebug/console/commandLine.js
+++ b/content/firebug/console/commandLine.js
@@ -176,7 +176,7 @@ Firebug.CommandLine = Obj.extend(Firebug.Module,
         win.document.setUserData("firebug-methodName", "evaluate", null);
 
         expr = expr.toString();
-        expr = "with(_FirebugCommandLine){" + expr + "\n};";
+        expr = "with(_FirebugCommandLine){\n" + expr + "\n};";
         win.document.setUserData("firebug-expr", expr, null);
 
         var consoleHandler = Firebug.Console.injector.getConsoleHandler(context, win);
@@ -288,7 +288,7 @@ Firebug.CommandLine = Obj.extend(Firebug.Module,
         this.initializeCommandLineIfNeeded(context, win);
 
         expr = expr.toString();
-        expr = "with(_FirebugCommandLine){" + expr + "\n};";
+        expr = "with(_FirebugCommandLine){\n" + expr + "\n};";
 
         var consoleHandler = Firebug.Console.injector.getConsoleHandler(context, win);
 
@@ -800,10 +800,10 @@ Firebug.CommandLine = Obj.extend(Firebug.Module,
 
     onCommandLineKeyDown: function(event)
     {
-        if (event.keyCode === KeyEvent.DOM_VK_H && (event.ctrlKey || event.metaKey))
+        if (event.keyCode === KeyEvent.DOM_VK_H && Events.isControl(event))
         {
             event.preventDefault();
-            this.commandHistory.show($("fbCommandLineHistoryButton"));
+            this.commandHistory.show(Firebug.chrome.$("fbCommandLineHistoryButton"));
             return true;
         }
 
diff --git a/content/firebug/console/commandLineExposed.js b/content/firebug/console/commandLineExposed.js
index ab5686c..c2129b8 100644
--- a/content/firebug/console/commandLineExposed.js
+++ b/content/firebug/console/commandLineExposed.js
@@ -57,7 +57,7 @@ function createFirebugCommandLine(context, win)
         }
 
         commandLine[command] = createCommandHandler(command);
-        commandLine.__exposedProps__[command] = "r";
+        commandLine.__exposedProps__[command] = "rw";
     }
 
     // Define shortcuts for some console methods
@@ -77,7 +77,7 @@ function createFirebugCommandLine(context, win)
         }
 
         commandLine[command] = createShortcutHandler(command);
-        commandLine.__exposedProps__[command] = "r";
+        commandLine.__exposedProps__[command] = "rw";
     }
 
     // Define console variables (inspector history).
@@ -146,13 +146,35 @@ function createFirebugCommandLine(context, win)
     {
         try
         {
+            var line = Components.stack.lineNumber;
             var result = contentView.eval(expr);
             notifyFirebug([result], "evaluated", "firebugAppendConsole");
         }
         catch(exc)
         {
-            var result = exc;
-            result.source = expr;
+            // change source and line number of exeptions from commandline code
+            // create new error since properties of nsIXPCException are not modifiable
+            var shouldModify, isXPCException;
+            if (exc.filename == Components.stack.filename)
+                shouldModify = isXPCException = true;
+            else if(exc.fileName == Components.stack.filename)
+                shouldModify = true;
+
+            if (shouldModify)
+            {
+                var result = new Error;
+                delete result.stack;
+                result.source = expr;
+                result.message = exc.message;
+                result.lineNumber = exc.lineNumber - line;
+                result.fileName = "data:," + encodeURIComponent(expr);
+                if(!isXPCException)
+                    result.name = exc.name;
+            }
+            else
+            {
+                result = exc;
+            }
             notifyFirebug([result], "evaluateError", "firebugAppendConsole");
         }
     }
diff --git a/content/firebug/console/commandLineInjected.js b/content/firebug/console/commandLineInjected.js
index 72033d8..745fbfa 100644
--- a/content/firebug/console/commandLineInjected.js
+++ b/content/firebug/console/commandLineInjected.js
@@ -19,8 +19,9 @@ var _FirebugCommandLine =
             if (window[command])
                 continue;
 
-            this[command] = new Function(
-                "return window.console.notifyFirebug(arguments, '" + command + "', 'firebugExecuteCommand');");
+            this[command] = function notifyFirebug() {
+                return window.console.notifyFirebug(arguments, command, "firebugExecuteCommand");
+            };
         }
 
         // Define console shortcuts
@@ -33,7 +34,9 @@ var _FirebugCommandLine =
             if (window[command])
                 continue;
 
-            this[command] = new Function("return window.console." + command + ".apply(window.console, arguments)");
+            this[command] = function apply() {
+                return window.console[command].apply(window.console, arguments);
+            };
         }
 
         // Define console variables.
@@ -44,8 +47,9 @@ var _FirebugCommandLine =
             if (window[prop])
                 continue;
 
-            this.__defineGetter__(prop, new Function(
-                "return window.console.notifyFirebug(arguments, '" + prop + "', 'firebugExecuteCommand');"));
+            this.__defineGetter__(prop, function notifyFirebug() {
+                    return window.console.notifyFirebug(arguments, prop, "firebugExecuteCommand");
+                });
         }
 
         this.attachCommandLine();
diff --git a/content/firebug/console/console.js b/content/firebug/console/console.js
index f655c4a..aef52db 100644
--- a/content/firebug/console/console.js
+++ b/content/firebug/console/console.js
@@ -1117,7 +1117,7 @@ function parseFormat(format)
     if (format.length <= 0)
         return parts;
 
-    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
+    var reg = /((^%|(?=.)%)(\d+)?(\.)([a-zA-Z]))|((^%|(?=.)%)([a-zA-Z]))/;
     for (var m = reg.exec(format); m; m = reg.exec(format))
     {
         if (m[0].substr(0, 2) == "%%")
@@ -1136,11 +1136,13 @@ function parseFormat(format)
                 case "s":
                     rep = FirebugReps.Text;
                     break;
+
                 case "f":
                 case "i":
                 case "d":
                     rep = FirebugReps.Number;
                     break;
+
                 case "o":
                 case "c":
                     rep = null;
diff --git a/content/firebug/console/consoleExposed.js b/content/firebug/console/consoleExposed.js
index 8612c11..6534567 100644
--- a/content/firebug/console/consoleExposed.js
+++ b/content/firebug/console/consoleExposed.js
@@ -32,7 +32,7 @@ function createFirebugConsole(context, win)
 
     console.log = function log()
     {
-        return logFormatted(arguments, "log");
+        return logFormatted(arguments, "log", true);
     };
 
     console.debug = function debug()
diff --git a/content/firebug/console/errors.js b/content/firebug/console/errors.js
index ad4c804..8e20304 100644
--- a/content/firebug/console/errors.js
+++ b/content/firebug/console/errors.js
@@ -26,8 +26,12 @@ const WARNING_FLAG = nsIScriptError.warningFlag;
 
 const urlRe = new RegExp("([^:]*):(//)?([^/]*)");
 const reUncaught = /uncaught exception/;
-const reException = /uncaught exception:\s\[Exception...\s\"([^\"]*)\".*nsresult:.*\(([^\)]*)\).*location:\s\"([^\s]*)\sLine:\s(\d*)\"/;
-
+// regular expessions for parsing uncaught exceptions
+// see http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcexception.cpp#347 
+// and http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcstack.cpp#318 
+// and http://lxr.mozilla.org/mozilla/source/dom/src/base/nsDOMException.cpp#351
+const reException1 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)"  nsresult: "0x\S+ \((.+)\)"  location: "(?:(?:JS|native) frame :: (?!<unknown filename>)(.+) :: .+ :: line (\d+)|<unknown>)"  data: (?:yes|no)\]$/
+const reException2 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)"  code: "\d+" nsresult: "0x\S+ \((.+)\)"  location: "(?:(.+) Line: (\d+)|<unknown>)"\]$/
 const pointlessErrors =
 {
     "uncaught exception: Permission denied to call method Location.toString": 1,
@@ -554,15 +558,15 @@ const categoryMap =
 function getBaseCategory(categories)
 {
     var categoryList = categories.split(" ");
-    for (var i = 0 ; i < categoryList.length; ++i)
+    for (var i=0; i<categoryList.length; ++i)
     {
         var category = categoryList[i];
-        if ( categoryMap.hasOwnProperty(category) )
+        if (categoryMap.hasOwnProperty(category))
             return categoryMap[category];
     }
 }
 
-function whyNotShown(url, category, isWarning)
+function whyNotShown(url, categoryList, isWarning)
 {
     var m = urlRe.exec(url);
     var errorScheme = m ? m[1] : "";
@@ -571,11 +575,11 @@ function whyNotShown(url, category, isWarning)
 
     var isChrome = false;
 
-    if (!category)
-        return Firebug.showChromeErrors ? null :"no category, assume chrome, showChromeErrors false";
+    if (!categoryList)
+        return Firebug.showChromeErrors ? null : "no category, assume chrome, showChromeErrors false";
 
-    var categories = category.split(" ");
-    for (var i = 0 ; i < categories.length; ++i)
+    var categories = categoryList.split(" ");
+    for (var i=0; i<categories.length; ++i)
     {
         var category = categories[i];
         if (category == "CSS" && !Firebug.showCSSErrors)
@@ -791,15 +795,12 @@ function getExceptionContext(context, object)
 
 function correctLineNumbersOnExceptions(object, error)
 {
-    var m = reException.exec(object.errorMessage);
+    var m = reException1.exec(object.errorMessage) || reException2.exec(object.errorMessage);
     if (m)
     {
         var exception = m[1];
         if (exception)
-            errorMessage = "uncaught exception: "+exception;
-        var nsresult = m[2];
-        if (nsresult)
-            errorMessage += " ("+nsresult+")";
+            error.message = exception;
         var sourceName = m[3];
         var lineNumber = parseInt(m[4]);
 
diff --git a/content/firebug/css/cssPanel.js b/content/firebug/css/cssPanel.js
index 0ab3a74..45a5732 100644
--- a/content/firebug/css/cssPanel.js
+++ b/content/firebug/css/cssPanel.js
@@ -43,8 +43,8 @@ const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
 const nsISelectionDisplay = Ci.nsISelectionDisplay;
 const nsISelectionController = Ci.nsISelectionController;
 
-var appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
-var versionChecker = Cc["@mozilla.org/xpcom/version-comparator;1"].getService(Ci.nsIVersionComparator);
+// before firefox 6 getCSSStyleRules accepted only one argument
+const DOMUTILS_SUPPORTS_PSEUDOELEMENTS = Dom.domUtils.getCSSStyleRules.length > 1;
 
 // See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
 const STATE_ACTIVE  = 0x01;
@@ -464,6 +464,7 @@ Firebug.CSSModule = Obj.extend(Obj.extend(Firebug.Module, Firebug.EditorSelector
     {
         if (!context)
             return;
+
         // Due to the manner in which the layout engine handles multiple
         // references to the same sheet we need to kick it a little bit.
         // The injecting a simple stylesheet then removing it will force
@@ -476,7 +477,16 @@ Firebug.CSSModule = Obj.extend(Obj.extend(Firebug.Module, Firebug.EditorSelector
             var style = Css.createStyleSheet(doc);
             style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
             Css.addStyleSheet(doc, style);
-            style.parentNode.removeChild(style);
+
+            if (style.parentNode)
+            {
+                style.parentNode.removeChild(style);
+            }
+            else
+            {
+                if (FBTrace.DBG_ERRORS)
+                    FBTrace.sysout("css.cleanupSheets; ERROR no parent style:", style);
+            }
         }
 
         // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
@@ -1784,52 +1794,53 @@ CSSElementPanel.prototype = Obj.extend(Firebug.CSSStyleSheetPanel.prototype,
         var inspectedRules, displayedRules = {};
 
         // Firefox 6+ allows inspecting of pseudo-elements (see issue 537)
-        if (versionChecker.compare(appInfo.version, "6.0*") >= 0)
+        if (DOMUTILS_SUPPORTS_PSEUDOELEMENTS && !inheritMode)
             pseudoElements = Arr.extendArray(pseudoElements,
                 [":first-letter", ":first-line", ":before", ":after"]);
 
-        for(var p in pseudoElements)
+        for (var p in pseudoElements)
         {
             try
             {
-                inspectedRules = Dom.domUtils ? Dom.domUtils.getCSSStyleRules(
-                    element, pseudoElements[p]) : null;
+                inspectedRules = Dom.domUtils.getCSSStyleRules(element, pseudoElements[p]);
             }
             catch (exc)
             {
+                continue;
             }
 
-            if (inspectedRules)
-            {
-                for (var i = 0; i < inspectedRules.Count(); ++i)
-                {
-                    var rule = Xpcom.QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
-
-                    var isSystemSheet = Url.isSystemStyleSheet(rule.parentStyleSheet);
-                    if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
-                        continue;
+            if (!inspectedRules)
+                continue;
 
-                    var props = this.getRuleProperties(this.context, rule, inheritMode);
-                    if (inheritMode && !props.length)
-                        continue;
+            for (var i = 0; i < inspectedRules.Count(); ++i)
+            {
+                var rule = Xpcom.QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
 
-                    var isPseudoElementSheet = (pseudoElements[p] != "");
-                    var sourceLink = this.getSourceLink(null, rule);
+                var isSystemSheet = Url.isSystemStyleSheet(rule.parentStyleSheet);
+                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
+                    continue;
 
-                    if (!isPseudoElementSheet)
-                        this.markOverriddenProps(props, usedProps, inheritMode);
+                var props = this.getRuleProperties(this.context, rule, inheritMode);
+                if (inheritMode && !props.length)
+                    continue;
 
-                    var ruleId = getRuleId(rule);
-                    rules.splice(0, 0, {rule: rule, id: ruleId,
-                        // Show universal selectors with pseudo-class
-                        // (http://code.google.com/p/fbug/issues/detail?id=3683)
-                        selector: rule.selectorText.replace(/ :/g, " *:"),
-                            sourceLink: sourceLink,
-                            props: props, inherited: inheritMode,
-                            isSystemSheet: isSystemSheet,
-                            isPseudoElementSheet: isPseudoElementSheet,
-                            isSelectorEditable: true});
-                }
+                var isPseudoElementSheet = (pseudoElements[p] != "");
+                var sourceLink = this.getSourceLink(null, rule);
+
+                if (!isPseudoElementSheet)
+                    this.markOverriddenProps(props, usedProps, inheritMode);
+
+                var ruleId = getRuleId(rule);
+                rules.splice(0, 0, {rule: rule, id: ruleId,
+                    // Show universal selectors with pseudo-class
+                    // (http://code.google.com/p/fbug/issues/detail?id=3683)
+                    selector: rule.selectorText.replace(/ :/g, " *:"),
+                    sourceLink: sourceLink,
+                    props: props, inherited: inheritMode,
+                    isSystemSheet: isSystemSheet,
+                    isPseudoElementSheet: isPseudoElementSheet,
+                    isSelectorEditable: true
+                });
             }
         }
 
diff --git a/content/firebug/editor/editor.js b/content/firebug/editor/editor.js
index ab752a7..73856c7 100644
--- a/content/firebug/editor/editor.js
+++ b/content/firebug/editor/editor.js
@@ -1432,16 +1432,18 @@ Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode,
     {
         var clearedTabWarning = this.clearTabWarning(completionBox);
 
-        if (event.altKey || event.metaKey)
+        if (Events.isAlt(event))
             return false;
 
-        if (event.ctrlKey && event.keyCode === 32) // Control space
+        if (Events.isControl(event) && event.keyCode === KeyEvent.DOM_VK_SPACE)
         {
-            this.complete(context, textBox, completionBox, false, false, true); // force completion incl globals
+            // force completion incl globals
+            this.complete(context, textBox, completionBox, false, false, true);
             return true;
         }
-        else if (event.keyCode === 9 || // TAB
-            (event.keyCode === 39 && completionBox.value.length && textBox.selectionStart === textBox.value.length)) // right arrow
+        else if ((event.keyCode === KeyEvent.DOM_VK_TAB && !Events.isControl(event)) ||
+            (event.keyCode === KeyEvent.DOM_VK_RIGHT && completionBox.value.length &&
+            textBox.selectionStart === textBox.value.length))
         {
             if (!completionBox.value.length)  // then no completion text,
             {
@@ -1459,7 +1461,7 @@ Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode,
                 return true;
             }
         }
-        else if (event.keyCode === 27) // ESC, close the completer
+        else if (event.keyCode === KeyEvent.DOM_VK_ESCAPE)
         {
             if (this.hide(completionBox))  // then we closed the popup
             {
@@ -1467,7 +1469,7 @@ Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode,
                 return true;
             }
         }
-        else if (event.keyCode === 38 || event.keyCode === 40) // UP or DOWN arrow
+        else if (event.keyCode === KeyEvent.DOM_VK_UP || event.keyCode === KeyEvent.DOM_VK_DOWN)
         {
             if (this.getCompletionText(completionBox))
             {
diff --git a/content/firebug/firebug.js b/content/firebug/firebug.js
index 153a17d..b40a99f 100644
--- a/content/firebug/firebug.js
+++ b/content/firebug/firebug.js
@@ -124,6 +124,8 @@ window.Firebug =
     // xxxHonza: hack, all "Firebug.Options" occurences should be replaced by "Options"
     Options: Options,
 
+    viewChrome: null,
+
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
     // Initialization
 
@@ -317,25 +319,12 @@ window.Firebug =
 
     getSuspended: function()  // TODO XULWindow
     {
-        var suspendMarker = Firefox.getElementById("firebugStatus");
-        if (suspendMarker && suspendMarker.hasAttribute("suspended"))
-            return suspendMarker.getAttribute("suspended");
-        return null;
+        return Firebug.StartButton.getSuspended();
     },
 
     setSuspended: function(value)  // TODO XULWindow
     {
-        var suspendMarker = Firefox.getElementById("firebugStatus");
-        if (FBTrace.DBG_ACTIVATION)
-            FBTrace.sysout("Firebug.setSuspended to "+value+". Browser: " +
-                Firebug.chrome.window.document.title);
-
-        if (value)
-            suspendMarker.setAttribute("suspended", value);
-        else
-            suspendMarker.removeAttribute("suspended");
-
-        Firebug.StartButton.resetTooltip();
+        Firebug.StartButton.setSuspended(value);
     },
 
     toggleSuspend: function()  // TODO XULWindow IN detached "Activate Firebug for the current website"
@@ -862,6 +851,19 @@ window.Firebug =
 
     resetAllOptions: function(confirm)
     {
+        if (confirm)
+        {
+            var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+                getService(Ci.nsIPromptService);
+
+            // Do not reset options if the user changed its mind.
+            if (!promptService.confirm(null, Locale.$STR("Firebug"),
+                Locale.$STR("confirmation.Reset_All_Firebug_Options")))
+            {
+                return;
+            }
+        }
+
         Options.resetAllOptions(confirm);
     },
 
@@ -2248,7 +2250,8 @@ Firebug.Rep = domplate(
             Firebug.Inspector.highlightObject(realObject, context);
     },
 
-    unhighlightObject: function(object, context) {
+    unhighlightObject: function(object, context)
+    {
         Firebug.Inspector.highlightObject(null);
     },
 
diff --git a/content/firebug/firefox/bindings.xml b/content/firebug/firefox/bindings.xml
index 276c419..c7c9124 100644
--- a/content/firebug/firefox/bindings.xml
+++ b/content/firebug/firefox/bindings.xml
@@ -991,7 +991,7 @@
             <setter><![CDATA[
                 var locator = this.getLocator();
 
-                var fileName = null;
+                var fileName = "";
                 if (!locator)
                 {
                     fileName = "no locator!";
@@ -999,13 +999,20 @@
                 else if (val)
                 {
                     var description = locator.getObjectDescription(val);
-                    fileName = (description.label?description.label:description.name);
+                    fileName = description.label ? description.label : description.name;
                 }
-                else
-                    fileName = "(none)";
 
                 this.repObject = val;
-                this.setAttribute("label", FBL.cropString(fileName, 80));
+
+                var button = document.getAnonymousElementByAttribute(this, "anonid", "button");
+                var path = description.path != "/" ? description.path : description.domain;
+                if (fileName == path)
+                    FBL.setClass(button, "fbInlineItem");
+                else
+                    FBL.removeClass(button, "fbInlineItem");
+
+                this.setAttribute("label", fileName != path ?
+                    FBL.cropString(fileName, 80) : "Inline");
                 this.setAttribute("location", val);
                 if (FBTrace.DBG_LOCATIONS)
                 {
@@ -1148,14 +1155,15 @@
                     entry.selected = true;
                 }
 
+                var path = description.path != "/" ? description.path : description.domain;
                 if (groups.hasOwnProperty(description.path))
                 {
-                    groups[description.path].push(entry);
+                    groups[path].push(entry);
                 }
                 else
                 {
-                    groups[description.path] = [entry];
-                    groupNames.push(description.path);
+                    groups[path] = [entry];
+                    groupNames.push(path);
                 }
             }
 
@@ -1172,7 +1180,11 @@
 
                 for (var j = 0; j < urls.length; ++j)
                 {
-                    var menuInfo = {label: urls[j].fileName, nol10n: true};
+                    var menuInfo = {
+                        label: urls[j].fileName != path ? urls[j].fileName : "Inline",
+                        tooltiptext: path + urls[j].fileName,
+                        nol10n: true
+                    };
 
                     if (urls[j].selected)
                     {
@@ -1183,6 +1195,8 @@
                     var menuItem = FBL.createMenuItem(this.popup, menuInfo);
                     menuItem.repObject = urls[j].object;
                     FBL.setClass(menuItem, "fbURLMenuItem");
+                    if (urls[j].fileName == path)
+                        FBL.setClass(menuItem, "fbInlineItem");
                 }
             }
         ]]></handler>
@@ -1223,25 +1237,6 @@
                 this.selectObject(object);
             }, this));
         ]]></handler>
-
-        <handler event="mouseover"><![CDATA[
-            var object = Firebug.getRepObject(event.target);
-            if (object)
-            {
-                var locator = this.getLocator();
-                if (locator.getObjectLocation)
-                    event.target.setAttribute("tooltiptext", locator.getObjectLocation(object));
-                else
-                {
-                    if (FBTrace.DBG_LOCATIONS)
-                    {
-                        FBTrace.sysout("!locator.getObjectLocation for " +
-                            this.getAttribute("label"), locator);
-                    }
-                }
-            }
-            return;
-        ]]></handler>
     </handlers>
 </binding>
 
diff --git a/content/firebug/firefox/firefox.js b/content/firebug/firefox/firefox.js
index 572fa5f..4935d9b 100644
--- a/content/firebug/firefox/firefox.js
+++ b/content/firebug/firefox/firefox.js
@@ -149,6 +149,11 @@ catch (err)
 }
 
 // ********************************************************************************************* //
+// Registration
+
+// Expose this module through Firebug namespace so, it can be used by extensions that
+// are not based on AMD (e.g. FBTest).
+Firebug.Firefox = Firefox;
 
 return Firefox;
 
diff --git a/content/firebug/firefox/menu.js b/content/firebug/firefox/menu.js
index 1c679aa..7552db7 100644
--- a/content/firebug/firefox/menu.js
+++ b/content/firebug/firefox/menu.js
@@ -95,6 +95,9 @@ Menu.setItemIntoElement = function(element, item)
     if (item.acceltext)
         element.setAttribute("acceltext", item.acceltext);
 
+    if (item.name)
+        element.setAttribute("name", item.name);
+
     return element;
 }
 
diff --git a/content/firebug/firefox/start-button/startButtonOverlay.js b/content/firebug/firefox/start-button/startButtonOverlay.js
index 2936626..8e7a1c1 100644
--- a/content/firebug/firefox/start-button/startButtonOverlay.js
+++ b/content/firebug/firefox/start-button/startButtonOverlay.js
@@ -249,13 +249,17 @@ Firebug.StartButton = Obj.extend(Firebug.Module,
             FBTrace.sysout("resetTooltip called");
 
         var tooltip = "Firebug " + Firebug.getVersion();
-
         tooltip += "\n" + this.getEnablementStatus();
 
         if (Firebug.getSuspended())
-            tooltip += "\n" + Firebug.getSuspended();
+        {
+            tooltip += "\n" + this.getSuspended();
+        }
         else
-            tooltip += "\n" + Locale.$STRP("plural.Total_Firebugs2", [Firebug.TabWatcher.contexts.length]);
+        {
+            tooltip += "\n" + Locale.$STRP("plural.Total_Firebugs2",
+                [Firebug.TabWatcher.contexts.length]);
+        }
 
         if (Firebug.allPagesActivation == "on")
         {
@@ -301,6 +305,34 @@ Firebug.StartButton = Obj.extend(Firebug.Module,
 
         return status;
     },
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // Activation
+
+    getSuspended: function()
+    {
+        var suspendMarker = Firefox.getElementById("firebugStatus");
+        if (suspendMarker && suspendMarker.hasAttribute("suspended"))
+            return suspendMarker.getAttribute("suspended");
+
+        return null;
+    },
+
+    setSuspended: function(value)
+    {
+        var suspendMarker = Firefox.getElementById("firebugStatus");
+
+        if (FBTrace.DBG_ACTIVATION)
+            FBTrace.sysout("Firebug.setSuspended to "+value+". Browser: " +
+                Firebug.chrome.window.document.title);
+
+        if (value == "suspended")
+            suspendMarker.setAttribute("suspended", value);
+        else
+            suspendMarker.removeAttribute("suspended");
+
+        this.resetTooltip();
+    }
 });
 
 // ********************************************************************************************* //
diff --git a/content/firebug/firefox/tabWatcher.js b/content/firebug/firefox/tabWatcher.js
index 4b89741..9f4bf13 100644
--- a/content/firebug/firefox/tabWatcher.js
+++ b/content/firebug/firefox/tabWatcher.js
@@ -257,7 +257,7 @@ Firebug.TabWatcher = Obj.extend(new Firebug.Listener(),
     // Listeners decide to show or not
     shouldShowContext: function(context)
     {
-        if ( Events.dispatch2(this.fbListeners, "shouldShowContext", [context]))
+        if (Events.dispatch2(this.fbListeners, "shouldShowContext", [context]))
             return true;
         else
             return false;
@@ -279,6 +279,9 @@ Firebug.TabWatcher = Obj.extend(new Firebug.Listener(),
             return false;
         }
 
+        if (FBTrace.DBG_ACTIVATION)
+            FBTrace.sysout("-> shouldCreateContext FBLISTENERS" , this.fbListeners);
+
         // Create if any listener says true to showCreateContext
         if (Events.dispatch2(this.fbListeners, "shouldCreateContext", [browser, url, userCommands]))
         {
diff --git a/content/firebug/html/htmlPanel.js b/content/firebug/html/htmlPanel.js
index 3305059..c88170d 100644
--- a/content/firebug/html/htmlPanel.js
+++ b/content/firebug/html/htmlPanel.js
@@ -128,7 +128,7 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
 
         if (FBTrace.DBG_PANELS)
             FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+
-                ((object==this.selection)?"==":"!=")+this.selection);
+                ((object == this.selection) ? "==" : "!=")+this.selection);
 
         if (forceUpdate || object != this.selection)
         {
@@ -236,8 +236,9 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
             var editor = this.localEditors[type];
             if (!editor)
             {
-             // look for special purpose editor (inserted by an extension), otherwise use our html editor
-                var specializedEditor = Firebug.HTMLPanel.Editors[type] || Firebug.HTMLPanel.Editors['html'];
+                // look for special purpose editor (inserted by an extension), otherwise use our html editor
+                var specializedEditor = Firebug.HTMLPanel.Editors[type] ||
+                    Firebug.HTMLPanel.Editors["html"];
                 editor = this.localEditors[type] = new specializedEditor(this.document);
             }
             this.startEditingNode(node, objectNodeBox, editor, type);
@@ -248,8 +249,8 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
     {
         switch (type)
         {
-            case 'html':
-            case 'xhtml':
+            case "html":
+            case "xhtml":
                 this.startEditingHTMLNode(node, box, editor);
                 break;
             default:
@@ -276,7 +277,7 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
 
     deleteNode: function(node, dir)
     {
-        dir = dir || 'up';
+        dir = dir || "up";
         var box = this.ioBox.createObjectBox(node);
         if (Css.hasClass(box, "open"))
             this.ioBox.contractObject(this.selection);
@@ -284,9 +285,11 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
         Firebug.HTMLModule.deleteNode(node, this.context);
     },
 
-    toggleAll: function(node)
+    toggleAll: function(event, node)
     {
-        this.ioBox.toggleObject(node, true);
+        var expandExternalContentNodes = Events.isShift(event);
+        this.ioBox.toggleObject(node, true, expandExternalContentNodes ?
+            null : ["link", "script", "style"]);
     },
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -339,18 +342,21 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
         // Due to the delay call this may or may not exist in the tree anymore
         if (!this.ioBox.isInExistingRoot(target))
         {
-            if (FBTrace.DBG_HTML)   FBTrace.sysout("mutateAttr: different tree " + target, target);
+            if (FBTrace.DBG_HTML)
+                FBTrace.sysout("mutateAttr: different tree " + target, target);
             return;
         }
 
         if (FBTrace.DBG_HTML)
-            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName+" attrValue: "+attrValue, target);
+        {
+            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+
+                " attrName:"+attrName+" attrValue: "+attrValue, target);
+        }
 
         this.markChange();
 
-        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
-            ? this.ioBox.createObjectBox(target)
-            : this.ioBox.findObjectBox(target);
+        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
+            this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target);
 
         if (!objectNodeBox)
             return;
@@ -363,26 +369,34 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
         if (attrChange == MODIFICATION || attrChange == ADDITION)
         {
             var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
+
             if (FBTrace.DBG_HTML)
-                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
+                FBTrace.sysout("mutateAttr " + attrChange + " " + attrName + "=" + attrValue +
+                    " node: " + nodeAttr, nodeAttr);
+
             if (nodeAttr && nodeAttr.childNodes.length > 3)
             {
                 var attrValueBox = nodeAttr.querySelector("*> .nodeValue");
                 var attrValueText = attrValueBox.firstChild;
                 if (attrValueText)
                     attrValueText.nodeValue = attrValue;
+                else
+                    attrValueBox.innerHTML = Str.escapeForTextNode(attrValue);
 
                 this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
             }
             else
             {
                 var attr = target.getAttributeNode(attrName);
+
                 if (FBTrace.DBG_HTML)
-                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
+                    FBTrace.sysout("mutateAttr getAttributeNode " + attrChange + " " + attrName +
+                        "=" + attrValue + " node: " + attr, attr);
+
                 if (attr)
                 {
                     var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
-                            this.document);
+                        this.document);
 
                     var labelBox = objectNodeBox.querySelector("*> .nodeLabel > .nodeLabelBox");
                     var bracketBox = labelBox.querySelector("*> .nodeBracket");
@@ -419,13 +433,13 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
 
         this.markChange();
 
-        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
-            ? this.ioBox.createObjectBox(parent)
-            : this.ioBox.findObjectBox(parent);
+        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
+            this.ioBox.createObjectBox(parent) : this.ioBox.findObjectBox(parent);
 
         if (!parentNodeBox)
         {
-            if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, parent node box does not exist");
+            if (FBTrace.DBG_HTML)
+                FBTrace.sysout("html.mutateText failed to update text, parent node box does not exist");
             return;
         }
 
@@ -441,11 +455,15 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
             var nodeText = HTMLLib.getTextElementTextBox(parentNodeBox);
             if (!nodeText.firstChild)
             {
-                if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, TextElement firstChild does not exist");
+                if (FBTrace.DBG_HTML)
+                {
+                    FBTrace.sysout("html.mutateText failed to update text, " +
+                        "TextElement firstChild does not exist");
+                }
                 return;
             }
 
-            nodeText.firstChild.nodeValue = textValue;
+            nodeText.firstChild.firstChild.nodeValue = textValue;
 
             this.highlightMutation(nodeText, parentNodeBox, "mutated");
         }
@@ -454,7 +472,11 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
             var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
             if (!childBox)
             {
-                if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, no child object box found");
+                if (FBTrace.DBG_HTML)
+                {
+                    FBTrace.sysout("html.mutateText failed to update text, " +
+                        "no child object box found");
+                }
                 return;
             }
 
@@ -462,7 +484,7 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
             if (textNodeBox)
             {
                 // structure for comment and cdata. Are there others?
-                textNodeBox.children[0].firstChild.nodeValue = textValue;
+                textNodeBox.firstChild.firstChild.nodeValue = textValue;
 
                 this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
             }
@@ -530,9 +552,9 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
                         }
                     }
 
-                    var objectBox = nextSibling
-                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
-                        : this.ioBox.appendChildBox(parentNodeBox, target);
+                    var objectBox = nextSibling ?
+                        this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling) :
+                        this.ioBox.appendChildBox(parentNodeBox, target);
 
                     this.highlightMutation(objectBox, objectBox, "mutated");
                 }
@@ -614,8 +636,10 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
     createObjectBox: function(object, isRoot)
     {
         if (FBTrace.DBG_HTML)
+        {
             FBTrace.sysout("html.createObjectBox("+Css.getElementCSSSelector(object)+", isRoot:"+
-                (isRoot?"true":"false")+")");
+                (isRoot? "true" : "false")+")");
+        }
 
         var tag = getNodeTag(object);
         if (tag)
@@ -647,8 +671,10 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
                         return parentNode;
 
                     if (FBTrace.DBG_HTML)
+                    {
                         FBTrace.sysout("getParentObject parentNode.nodeType 9, frameElement:"+
                             parentNode.defaultView.frameElement);
+                    }
 
                     return parentNode.defaultView.frameElement;
                 }
@@ -930,16 +956,17 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
         if (!node)
             return;
 
-        if (!Events.noKeyModifiers(event))
-          return;
-
         // * expands the node with all its children
         // + expands the node
         // - collapses the node
         var ch = String.fromCharCode(event.charCode);
         if (ch == "*")
-            this.ioBox.toggleObject(node, true, event);
-        else if (ch == "+")
+            this.toggleAll(event, node);
+
+        if (!Events.noKeyModifiers(event))
+          return;
+
+        if (ch == "+")
             this.ioBox.expandObject(node);
         else if (ch == "-")
             this.ioBox.contractObject(node);
@@ -1403,7 +1430,7 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
             {
                 items.push("-",
                     {label: "html.label.Expand/Contract All", acceltext: "*",
-                        command: Obj.bindFixed(this.toggleAll, this, node)});
+                        command: Obj.bind(this.toggleAll, this, node)});
             }
         }
         else
@@ -1416,7 +1443,7 @@ Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
         }
 
         Firebug.HTMLModule.MutationBreakpoints.getContextMenuItems(
-            this.context,node, target, items);
+            this.context, node, target, items);
 
         return items;
     },
diff --git a/content/firebug/html/insideOutBox.js b/content/firebug/html/insideOutBox.js
index 951f868..38e3c5e 100644
--- a/content/firebug/html/insideOutBox.js
+++ b/content/firebug/html/insideOutBox.js
@@ -6,8 +6,9 @@ define([
     "firebug/lib/events",
     "firebug/lib/css",
     "firebug/lib/dom",
+    "firebug/lib/xml",
 ],
-function(Obj, Firebug, Events, Css, Dom) {
+function(Obj, Firebug, Events, Css, Dom, Xml) {
 
 // ************************************************************************************************
 
@@ -106,7 +107,7 @@ Firebug.InsideOutBox.prototype =
         return objectBox;
     },
 
-    toggleObject: function(object, all, event)
+    toggleObject: function(object, all, exceptions)
     {
         var objectBox = this.createObjectBox(object);
         if (!objectBox)
@@ -115,7 +116,7 @@ Firebug.InsideOutBox.prototype =
         if (Css.hasClass(objectBox, "open"))
             this.contractObjectBox(objectBox, all);
         else
-            this.expandObjectBox(objectBox, all, event);
+            this.expandObjectBox(objectBox, all, exceptions);
     },
 
     expandObject: function(object, expandAll)
@@ -205,7 +206,7 @@ Firebug.InsideOutBox.prototype =
         }
     },
 
-    expandObjectBox: function(objectBox, expandAll, event)
+    expandObjectBox: function(objectBox, expandAll, exceptions)
     {
         var nodeChildBox = this.getChildObjectBox(objectBox);
         if (!nodeChildBox)
@@ -217,9 +218,9 @@ Firebug.InsideOutBox.prototype =
             this.populateChildBox(firstChild, nodeChildBox);
         }
 
-        var labelBox = objectBox.getElementsByClassName('nodeLabelBox').item(0);
+        var labelBox = objectBox.getElementsByClassName("nodeLabelBox").item(0);
         if (labelBox)
-            labelBox.setAttribute('aria-expanded', 'true');
+            labelBox.setAttribute("aria-expanded", "true");
         Css.setClass(objectBox, "open");
 
         // Recursively expand all child boxes
@@ -227,23 +228,27 @@ Firebug.InsideOutBox.prototype =
         {
             for (var child = nodeChildBox.firstChild; child; child = child.nextSibling)
             {
-                if (event)
+                if (exceptions && child.repObject)
                 {
+                    var shouldBeExpanded = true;
                     var localName = child.repObject.localName;
-                    var localName = localName ? localName.toLowerCase() : "";
-
-                    // Avoid expanding SCRIPT and LINK tags. Their content is not
-                    // event part of the DOM and it isn't usually what the user
-                    // wants to see when exploring HTML in the HTML panel.
-                    // The user can force expanding by pressing SHIFT key.
-                    // xxxHonza: I believe this entire logic belongs int html.js
-                    //    Refactor when implementing the breakpoint column.
-                    if ((localName == "script" || localName == "link") && !Events.isShift(event))
+                    localName = localName ? localName.toLowerCase() : "";
+
+                    for (var i=0; i<exceptions.length; i++)
+                    {
+                        if (localName == exceptions[i] &&
+                            (Xml.isElementHTML(child.repObject) || Xml.isElementXHTML(child.repObject)))
+                        {
+                            shouldBeExpanded = false;
+                            break;
+                        }
+                    }
+                    if (!shouldBeExpanded)
                         continue;
                 }
 
                 if (Css.hasClass(child, "containerNodeBox"))
-                    this.expandObjectBox(child, expandAll);
+                    this.expandObjectBox(child, expandAll, exceptions);
             }
         }
     },
diff --git a/content/firebug/html/inspector.js b/content/firebug/html/inspector.js
index 1ea5afd..31893a4 100644
--- a/content/firebug/html/inspector.js
+++ b/content/firebug/html/inspector.js
@@ -17,7 +17,7 @@ define([
 function(Obj, Firebug, Firefox, FirebugReps, Locale, Events, Wrapper, Css, Dom, Xml,
     Win, System) {
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 // Constants
 
 const inspectDelay = 200;
@@ -29,13 +29,13 @@ const ident = {
     proxyElt: 3
 };
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 // Globals
 
 var boxModelHighlighter = null;
 var frameHighlighter = null;
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 
 /**
  * @module Implements Firebug Inspector logic.
@@ -47,20 +47,27 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     inspectingPanel: null,
 
     /**
-     * Main highlighter method. Can be used to highlight elements using the box model, frame or image map highlighters. Can highlight single or multiple elements.
+     * Main highlighter method. Can be used to highlight elements using the box model,
+     * frame or image map highlighters. Can highlight single or multiple elements.
      *
      * Examples:
-     * Firebug.Inspector.highlightObject([window.content.document.getElementById('gbar'), window.content.document.getElementById('logo')], window.content, "frame", null, ["#ff0000",{background:"#0000ff", border:"#ff0000"}])
+     * Firebug.Inspector.highlightObject([window.content.document.getElementById('gbar'),
+     *     window.content.document.getElementById('logo')],
+     *     window.content, "frame", null,
+     *     ["#ff0000",{background:"#0000ff", border:"#ff0000"}])
      * or
-     * Firebug.Inspector.highlightObject([window.content.document.getElementById('gbar'), window.content.document.getElementById('logo')], window.content, "boxModel", null, [{content: "#ff0000", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"},{content: "#00ff00", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"}])
+     * Firebug.Inspector.highlightObject([window.content.document.getElementById('gbar'),
+     *     window.content.document.getElementById('logo')], window.content, "boxModel", null,
+     *     [{content: "#ff0000", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"},
+     *         {content: "#00ff00", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"}])
      *
      * @param {Array} elementArr Elements to highlight
      * @param {Window} context Context of the elements to be highlighted
      * @param {String} [highlightType] Either "frame" or "boxModel". Default is configurable.
-     * @param {String} [boxFrame] Displays the line guides for the box model layout view. Valid values are
-     *        "content", "padding", "border" or "margin"
-     * @param {String | Array} [colorObj] Any valid html color e.g. red, #f00, #ff0000, etc., a valid color object
-     *        or any valid highlighter color array.
+     * @param {String} [boxFrame] Displays the line guides for the box model layout view.
+     *      Valid values are: "content", "padding", "border" or "margin"
+     * @param {String | Array} [colorObj] Any valid html color e.g. red, #f00, #ff0000, etc.,
+     *      a valid color object or any valid highlighter color array.
      */
     highlightObject: function(elementArr, context, highlightType, boxFrame, colorObj)
     {
@@ -72,9 +79,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
             // highlight a single element
             if (!elementArr || !Dom.isElement(elementArr) ||
                 (Wrapper.getContentView(elementArr) &&
-                    !Xml.isVisible(Wrapper.getContentView(elementArr))) )
+                    !Xml.isVisible(Wrapper.getContentView(elementArr))))
             {
-                if(elementArr && elementArr.nodeType == 3)
+                if (elementArr && elementArr.nodeType == 3)
                     elementArr = elementArr.parentNode;
                 else
                     elementArr = null;
@@ -99,7 +106,7 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
 
             if (elementArr)
             {
-                if(!isVisibleElement(elementArr))
+                if (!isVisibleElement(elementArr))
                     highlighter.unhighlight(context);
                 else if (context && context.window && context.window.document)
                     highlighter.highlight(context, elementArr, boxFrame, colorObj, false);
@@ -137,13 +144,13 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
 
             if (context && context.window && context.window.document)
             {
-                for (i = 0, elementLen = elementArr.length; i < elementLen; i++)
+                for (i=0, elementLen=elementArr.length; i<elementLen; i++)
                 {
                     elt = elementArr[i];
 
-                    if (elt)
+                    if (elt && elt instanceof HTMLElement)
                     {
-                        if(elt.nodeType === 3)
+                        if (elt.nodeType === 3)
                             elt = elt.parentNode;
 
                         if (usingColorArray)
@@ -161,7 +168,8 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     /**
      * Clear all highlighted areas on a page.
      */
-    clearAllHighlights: function() {
+    clearAllHighlights: function()
+    {
         highlighterCache.clear();
     },
 
@@ -283,7 +291,8 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     /**
      * Stop inspecting and clear all highlights.
      * @param {Boolean} canceled Indicates whether inspect was cancelled (usually via the escape key)
-     * @param {Boolean} [waitForClick] Indicates whether the next click will still forward you to the clicked element in the HTML panel
+     * @param {Boolean} [waitForClick] Indicates whether the next click will still forward you
+     *      to the clicked element in the HTML panel.
      */
     stopInspecting: function(canceled, waitForClick)
     {
@@ -349,7 +358,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     },
 
     /**
-     * Navigate up and down through the DOM and highlight the result. This method is used by the key handlers for the up and down arrow keys.
+     * Navigate up and down through the DOM and highlight the result. This method is used by
+     * the key handlers for the up and down arrow keys.
+     * 
      * @param {String} dir Direction to navigate the Dom, either "up" or "down"
      */
     inspectNodeBy: function(dir)
@@ -396,8 +407,10 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
         if(!context || (!highlighter && !isMulti))
             return;
 
-        if(isMulti && element)
+        if (isMulti && element)
+        {
             this.highlightObject(element, context, highlightType, null, colorObj);
+        }
         else if(!isMulti)
         {
             var highlighterNode = highlighterCache.get(highlighter.ident);
@@ -413,7 +426,7 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
         }
     },
 
-    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     /**
      * Attach the scroll and resize handlers to elts window. Called from every highlight call.
@@ -429,8 +442,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
         if (FBTrace.DBG_INSPECT)
             FBTrace.sysout("inspector.attachRepaintInspectListeners to " + win.location.href, elt);
 
-        // there is no way to check if the listeners have already been added and we should avoid adding properties
-        // to the users page. Adding them again will do no harm so lets just do that.
+        // there is no way to check if the listeners have already been added and we should
+        // avoid adding properties to the users page.
+        // Adding them again will do no harm so lets just do that.
         win.document.addEventListener("resize", this.onInspectingResizeWindow, true);
         win.document.addEventListener("scroll", this.onInspectingScroll, true);
     },
@@ -502,7 +516,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     },
 
     /**
-     * Remove the click listener independent from detachInspectListeners because if we remove it after mousedown, we won't be able to cancel clicked links.
+     * Remove the click listener independent from detachInspectListeners because if we remove
+     * it after mousedown, we won't be able to cancel clicked links.
+     *
      * @param {Window} context Context of the main browser window
      */
     detachClickInspectListeners: function(context)
@@ -552,7 +568,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     },
 
     /**
-     * Trap mousedown events to prevent clicking a document from triggering a document's mousedown event when inspecting.
+     * Trap mousedown events to prevent clicking a document from triggering a document's
+     * mousedown event when inspecting.
+     *
      * @param {Event} event Used for tracing and canceling the event
      */
     onInspectingMouseDown: function(event)
@@ -569,7 +587,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     },
 
     /**
-     * Trap mouseup events to prevent clicking a document from triggering a document's mouseup event when inspecting.
+     * Trap mouseup events to prevent clicking a document from triggering a document's mouseup
+     * event when inspecting.
+     *
      * @param {Event} event Used for tracing and canceling the event
      */
     onInspectingMouseUp: function(event)
@@ -588,7 +608,9 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
     },
 
     /**
-     * Trap click events to prevent clicking a document from triggering a document's click event when inspecting and removes the click inspect listener.
+     * Trap click events to prevent clicking a document from triggering a document's click event
+     * when inspecting and removes the click inspect listener.
+     *
      * @param {Event} event Used for tracing and canceling the event
      */
     onInspectingClick: function(event)
@@ -606,7 +628,7 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
         Events.cancelEvent(event);
     },
 
-    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
     // extends Module
 
     /**
@@ -651,15 +673,21 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
      */
     unwatchWindow: function(context, win)
     {
-        try {
+        try
+        {
             this.hideQuickInfoBox();
-        } catch (ex) {
-            // Get unfortunate errors here sometimes, so let's just ignore them since the window is going away anyhow
+        }
+        catch (ex)
+        {
+            // Get unfortunate errors here sometimes, so let's just ignore them since the
+            // window is going away anyhow
         }
     },
 
     /**
-     * Called when a FF tab is created or activated (user changes FF tab). We stop inspecting in this situation.
+     * Called when a FF tab is created or activated (user changes FF tab). We stop inspecting
+     * in this situation.
+     *
      * @param {xul:browser} [browser] Browser
      * @param {Window} [context] The main browser window
      */
@@ -763,7 +791,7 @@ Firebug.Inspector = Obj.extend(Firebug.Module,
 
 });
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 // Local Helpers
 
 function getHighlighter(type)
@@ -812,7 +840,7 @@ function resizeImp(element, w, h) {
         return css;
 }
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 // Imagemap Highlighter
 
 function getImageMapHighlighter(context)
@@ -1150,7 +1178,7 @@ var quickInfoBox =
     }
 };
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 Firebug.Inspector.FrameHighlighter = function()
 {
@@ -1185,7 +1213,8 @@ Firebug.Inspector.FrameHighlighter.prototype =
         var w = offset.width, h = offset.height;
 
         if (FBTrace.DBG_INSPECT)
-            FBTrace.sysout("FrameHighlighter HTML tag:" + element.tagName + " x:" + x + " y:" + y + " w:" + w + " h:" + h);
+            FBTrace.sysout("FrameHighlighter HTML tag:" + element.tagName + " x:" + x +
+                " y:" + y + " w:" + w + " h:" + h);
 
         var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
         if (wacked)
@@ -1323,7 +1352,7 @@ Firebug.Inspector.FrameHighlighter.prototype =
     }
 };
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 function BoxModelHighlighter()
 {
@@ -1602,7 +1631,7 @@ BoxModelHighlighter.prototype =
     }
 };
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 
 var highlighterCache =
 {
@@ -1712,7 +1741,7 @@ var highlighterCache =
     }
 };
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 
 function getNonFrameBody(elt)
 {
@@ -1732,16 +1761,16 @@ function attachStyles(context, body)
 
 function createProxiesForDisabledElements(body)
 {
-    var i, rect, div, node, cs, css
+    var i, rect, div, node, cs, css,
         doc = body.ownerDocument,
         xpe = new XPathEvaluator(),
         nsResolver = xpe.createNSResolver(doc.documentElement);
 
     var result = xpe.evaluate('//*[@disabled]', doc.documentElement,
-                      nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-    var l = result.snapshotLength;
+        nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
 
-    for(i = 0; i < l; i++)
+    var l = result.snapshotLength;
+    for (i=0; i<l; i++)
     {
         node = result.snapshotItem(i);
         cs = body.ownerDocument.defaultView.getComputedStyle(node, null);
@@ -1751,32 +1780,31 @@ function createProxiesForDisabledElements(body)
         div.className = "firebugResetStyles fbProxyElement";
 
         css = moveImp(null, rect.left, rect.top + body.scrollTop) + resizeImp(null, rect.width, rect.height);
-        if(cs.MozTransform && cs.MozTransform != "none")
+        if (cs.MozTransform && cs.MozTransform != "none")
           css += "-moz-transform:" + cs.MozTransform + "!important;" +
                  "-moz-transform-origin:" + cs.MozTransformOrigin + "!important;";
-        if(cs.borderRadius)
+        if (cs.borderRadius)
             css += "border-radius:" + cs.borderRadius + " !important;";
-        if(cs.borderTopLeftRadius)
+        if (cs.borderTopLeftRadius)
             css += "border-top-left-radius:" + cs.borderTopLeftRadius + " !important;";
-        if(cs.borderTopRightRadius)
+        if (cs.borderTopRightRadius)
             css += "border-top-right-radius:" + cs.borderTopRightRadius + " !important;";
-        if(cs.borderBottomRightRadius)
+        if (cs.borderBottomRightRadius)
             css += "border-bottom-right-radius:" + cs.borderBottomRightRadius + " !important;";
-        if(cs.borderBottomLeftRadius)
+        if (cs.borderBottomLeftRadius)
             css += "border-bottom-left-radius:" + cs.borderBottomLeftRadius + " !important;";
-        if(cs.MozBorderRadius)
+        if (cs.MozBorderRadius)
             css += "-moz-border-radius:" + cs.MozBorderRadius + " !important;";
-        if(cs.MozBorderRadiusTopleft)
+        if (cs.MozBorderRadiusTopleft)
             css += "-moz-border-radius-topleft:" + cs.MozBorderRadiusTopleft + " !important;";
-        if(cs.MozBorderRadiusTopright)
+        if (cs.MozBorderRadiusTopright)
             css += "-moz-border-radius-topright:" + cs.MozBorderRadiusTopright + " !important;";
-        if(cs.MozBorderRadiusBottomright)
+        if (cs.MozBorderRadiusBottomright)
             css += "-moz-border-radius-bottomright:" + cs.MozBorderRadiusBottomright + " !important;";
-        if(cs.MozBorderRadiusBottomleft)
+        if (cs.MozBorderRadiusBottomleft)
             css += "-moz-border-radius-bottomleft:" + cs.MozBorderRadiusBottomleft + " !important;";
 
         div.style.cssText = css;
-
         div.fbProxyFor = node;
 
         body.appendChild(div);
@@ -1818,7 +1846,8 @@ function hideElementFromInspection(elt)
 }
 
 // highlightType is only to be used for multihighlighters
-function storeHighlighterParams(highlighter, context, element, boxFrame, colorObj, highlightType, isMulti)
+function storeHighlighterParams(highlighter, context, element, boxFrame, colorObj,
+    highlightType, isMulti)
 {
     var fir = Firebug.Inspector.repaint;
 
@@ -1833,12 +1862,12 @@ function storeHighlighterParams(highlighter, context, element, boxFrame, colorOb
     Firebug.Inspector.highlightedContext = context;
 }
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 // Registration
 
 Firebug.registerModule(Firebug.Inspector);
 
 return Firebug.Inspector;
 
-// ************************************************************************************************
+// ********************************************************************************************* //
 });
diff --git a/content/firebug/html/layout.js b/content/firebug/html/layout.js
index c9871c4..7e58c62 100644
--- a/content/firebug/html/layout.js
+++ b/content/firebug/html/layout.js
@@ -216,7 +216,7 @@ LayoutPanel.prototype = Obj.extend(Firebug.Panel,
         args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode = "";
         args.zIndex = args.zIndex ? args.zIndex : "auto";
 
-        boxSizing = style.getPropertyCSSValue("box-sizing") ||
+        var boxSizing = style.getPropertyCSSValue("box-sizing") ||
             style.getPropertyCSSValue("-moz-box-sizing");
         args.boxSizing = boxSizing.cssText;
 
diff --git a/content/firebug/js/breakpoint.js b/content/firebug/js/breakpoint.js
index df3753d..9823b03 100644
--- a/content/firebug/js/breakpoint.js
+++ b/content/firebug/js/breakpoint.js
@@ -325,7 +325,7 @@ Firebug.Breakpoint.BreakpointsPanel.prototype = Obj.extend(Firebug.Panel,
         if (this.noRefresh)
             return;
 
-        var extracted = this.extractBreakpoints(this.context, breakpoints, errorBreakpoints, monitors);
+        var extracted = this.extractBreakpoints(this.context);
 
         var breakpoints = extracted.breakpoints;
         var errorBreakpoints = extracted.errorBreakpoints;
@@ -378,7 +378,7 @@ Firebug.Breakpoint.BreakpointsPanel.prototype = Obj.extend(Firebug.Panel,
         Events.dispatch(this.fbListeners, 'onBreakRowsRefreshed', [this, this.panelNode]);
     },
 
-    extractBreakpoints: function(context, breakpoints, errorBreakpoints, monitors)
+    extractBreakpoints: function(context)
     {
         var breakpoints = [];
         var errorBreakpoints = [];
diff --git a/content/firebug/js/callstack.js b/content/firebug/js/callstack.js
index c3f0e04..2eed178 100644
--- a/content/firebug/js/callstack.js
+++ b/content/firebug/js/callstack.js
@@ -153,7 +153,7 @@ Firebug.CallstackPanel.prototype = Obj.extend(Firebug.Panel,
                 FBTrace.sysout("Callstack updateSelection index:"+trace.currentFrameIndex+
                     " StackFrame "+object, object);
         }
-        else if(object instanceof Ci.jsdIStackFrame)
+        else if (object instanceof Ci.jsdIStackFrame)
         {
             var trace = this.location;
             if (trace)
diff --git a/content/firebug/js/debugger.js b/content/firebug/js/debugger.js
index 252a90c..be46cf1 100644
--- a/content/firebug/js/debugger.js
+++ b/content/firebug/js/debugger.js
@@ -2587,6 +2587,10 @@ Firebug.Debugger = Obj.extend(Firebug.ActivableModule,
             FBTrace.sysout("debugger.onSuspendFirebug paused: "+paused+" isAlwaysEnabled " +
                 Firebug.Debugger.isAlwaysEnabled()+"\n");
 
+        // JSD activation is not per browser-tab so, FBS.pause can return 'not-paused' when
+        // Firebug is activated on another tab.
+        // The start-button should somehow reflect that JSD can be still active (even if
+        // Firebug is suspended for the current tab).
         if (!paused)  // then we failed to suspend, undo
             return true;
 
@@ -2752,10 +2756,18 @@ Firebug.JSDebugClient =
 
     onPauseJSDRequested: function(rejection)
     {
-        //Firebug.connection.dispatch( "onPauseJSDRequested", arguments);
+        // A debugger client (an instance of Firebug.JSDebugClient)  asked to pause JSD.
+        // Note that there is one instance of Firebug.JSDebugClient per browser (XUL) window.
+        // If the debugger is 'on' in this browser window JSD should not be paused.
+        // (see issue 4609)
+        if (Firebug.jsDebuggerOn)
+            rejection.push(true);
+
+        //Firebug.connection.dispatch("onPauseJSDRequested", arguments);
 
         if (FBTrace.DBG_ACTIVATION)
-            FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested ignored");
+            FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested ignored" +
+                ", jsDebuggerOn: " + Firebug.jsDebuggerOn);
     },
 }
 
diff --git a/content/firebug/js/scriptPanel.js b/content/firebug/js/scriptPanel.js
index 24c9f5e..46879f2 100644
--- a/content/firebug/js/scriptPanel.js
+++ b/content/firebug/js/scriptPanel.js
@@ -67,6 +67,7 @@ Firebug.ScriptPanel.decorator = Obj.extend(new Firebug.SourceBoxDecorator,
         if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
             FBTrace.sysout("script.markExecutableLines START: "+compilationUnit.toString());
 
+        var lineNode;
         var lineNo = sourceBox.firstViewableLine;
         while (lineNode = sourceBox.getLineNode(lineNo))
         {
@@ -146,12 +147,6 @@ Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
         return Firebug.ScriptPanel.decorator;
     },
 
-    initialize: function(context, doc)
-    {
-        this.location = null;
-        Firebug.SourceBoxPanel.initialize.apply(this, arguments);
-    },
-
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     // TODO Class method
 
@@ -272,18 +267,24 @@ Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
 
     showStackFrameTrue: function(frame)
     {
-         var url = frame.getURL();
-         var lineNo = frame.getLineNumber();
+        // Make sure the current frame seen by the user is set (issue 4818)
+        // xxxHonza: Better solution (important for remoting)
+        // Set this.context.currentFrame = frame (meaning frameXB) and pass the value of
+        // frameXB during evaluation calls, causing the backend to select the appropriate
+        // frame for frame.eval().
+        this.context.currentFrame = frame.nativeFrame;
 
-         if (FBTrace.DBG_STACK)
-             FBTrace.sysout("showStackFrame: "+url+"@"+lineNo+"\n");
+        var url = frame.getURL();
+        var lineNo = frame.getLineNumber();
+
+        if (FBTrace.DBG_STACK)
+            FBTrace.sysout("showStackFrame: "+url+"@"+lineNo+"\n");
 
-         if (this.context.breakingCause)
-             this.context.breakingCause.lineNo = lineNo;
+        if (this.context.breakingCause)
+            this.context.breakingCause.lineNo = lineNo;
 
-         this.scrollToLine(url, lineNo, this.highlightLine(lineNo, this.context));
-         this.context.throttle(this.updateInfoTip, this);
-         return;
+        this.scrollToLine(url, lineNo, this.highlightLine(lineNo, this.context));
+        this.context.throttle(this.updateInfoTip, this);
     },
 
     showNoStackFrame: function()
@@ -520,6 +521,8 @@ Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
 
     initialize: function(context, doc)
     {
+        this.location = null;
+
         this.onMouseDown = Obj.bind(this.onMouseDown, this);
         this.onContextMenu = Obj.bind(this.onContextMenu, this);
         this.onMouseOver = Obj.bind(this.onMouseOver, this);
@@ -630,13 +633,18 @@ Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
 
     showWarning: function()
     {
-        if (FBTrace.DBG_PANELS)
-            FBTrace.sysout("showWarning Firebug.jsDebuggerOn:"+Firebug.jsDebuggerOn+
-                " jsDebuggerCalledUs "+this.context.jsDebuggerCalledUs+' in '+this.context.getName());
-
         // Fill the panel node with a warning if needed
         var aLocation = this.getDefaultLocation();
         var jsEnabled = Firebug.Options.getPref("javascript", "enabled");
+
+        if (FBTrace.DBG_PANELS)
+            FBTrace.sysout("script.showWarning; " + this.context.getName(), {
+                jsDebuggerOn: Firebug.jsDebuggerOn,
+                jsDebuggerCalledUs: this.context.jsDebuggerCalledUs,
+                jsEnabled: jsEnabled,
+                aLocation: aLocation,
+            });
+
         if (this.context.activitySuspended && !this.context.stopped)
         {
             // Make sure that the content of the panel is restored as soon as
@@ -1122,7 +1130,6 @@ Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
     // return.path: group/category label, return.name: item label
     getObjectDescription: function(compilationUnit)
     {
-        var kind = compilationUnit.getKind();
         return Url.splitURLBase(compilationUnit.getURL());
     },
 
diff --git a/content/firebug/js/sourceBox.js b/content/firebug/js/sourceBox.js
index 80273b9..1e9e69c 100644
--- a/content/firebug/js/sourceBox.js
+++ b/content/firebug/js/sourceBox.js
@@ -483,6 +483,8 @@ Firebug.SourceBoxPanel = Obj.extend(SourceBoxPanelBase,
         sourceBox.maximumLineNumber = compilationUnit.getNumberOfLines();
         sourceBox.maxLineNoChars = (sourceBox.maximumLineNumber + "").length;
 
+        this.setSourceBoxLineSizes(sourceBox);
+
         this.reViewOnSourceLinesAvailable(sourceBox, requestedLines);
     },
 
@@ -503,7 +505,7 @@ Firebug.SourceBoxPanel = Obj.extend(SourceBoxPanelBase,
 
         var view = sourceBox.viewport; // TODO some cleaner way
         view.previousSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
-        view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth +"px";
+        view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
 
         if (FBTrace.DBG_COMPILATION_UNITS)
         {
diff --git a/content/firebug/js/stackFrame.js b/content/firebug/js/stackFrame.js
index 83cb49c..8e71250 100644
--- a/content/firebug/js/stackFrame.js
+++ b/content/firebug/js/stackFrame.js
@@ -491,6 +491,11 @@ StackFrame.buildStackTrace = function(frame)
         frame.frameIndex = trace.frames.length;
         frame = frame.getCallingFrame();
     }
+
+    // Set the first frame (the one passed into this function) as the current one (issue 4249).
+    if (trace.frames.length > 0)
+        trace.currentFrameIndex = 1;
+
     return trace;
 };
 
diff --git a/content/firebug/lib/css.js b/content/firebug/lib/css.js
index e8a98b9..cbb9c02 100644
--- a/content/firebug/lib/css.js
+++ b/content/firebug/lib/css.js
@@ -24,7 +24,7 @@ var cssPropNames = {};
 var cssColorNames = null;
 var imageRules = null;
 
-Css.getCSSKeywordsByProperty = function(nodeType,propName)
+Css.getCSSKeywordsByProperty = function(nodeType, propName)
 {
     if (!cssKeywordMap[nodeType])
     {
@@ -46,7 +46,8 @@ Css.getCSSKeywordsByProperty = function(nodeType,propName)
         }
     }
 
-    return propName in cssKeywordMap[nodeType] ? cssKeywordMap[nodeType][propName] : [];
+    return propName.toLowerCase() in cssKeywordMap[nodeType] ?
+        cssKeywordMap[nodeType][propName.toLowerCase()] : [];
 };
 
 Css.getCSSPropertyNames = function(nodeType)
@@ -496,7 +497,15 @@ Css.createStyleSheetMap = function(context)
 
         for (var i = 0; i < rootSheets.length; ++i)
         {
-            addSheet(rootSheets[i]);
+            try
+            {
+                addSheet(rootSheets[i]);
+            }
+            catch (err)
+            {
+                //if (FBTrace.DBG_ERRORS)
+                //    FBTrace.sysout("css.createStyleSheetMap; EXCEPTION " + err, err);
+            }
         }
     });
 
@@ -557,6 +566,9 @@ Css.getURLForStyleSheet = function(styleSheet)
 {
     // http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet.
     // For inline style sheets, the value of this attribute is null.
+    if (!styleSheet.href && !styleSheet.ownerNode)
+        return null;
+
     return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
 };
 
diff --git a/content/firebug/lib/dom.js b/content/firebug/lib/dom.js
index 126bc05..33ccd1a 100644
--- a/content/firebug/lib/dom.js
+++ b/content/firebug/lib/dom.js
@@ -82,8 +82,7 @@ Dom.getElementByClass = function(node, className)  // className, className, ...
 Dom.getElementsByClass = function(node, className)  // className, className, ...
 {
     var args = Arr.cloneArray(arguments); args.splice(0, 1);
-    var className = args.join(" ");
-    return node.getElementsByClassName(className);
+    return node.getElementsByClassName(args.join(" "));
 };
 
 Dom.getElementsByAttribute = function(node, attrName, attrValue)
diff --git a/content/firebug/lib/domplate.js b/content/firebug/lib/domplate.js
index 12d12f6..610aea8 100644
--- a/content/firebug/lib/domplate.js
+++ b/content/firebug/lib/domplate.js
@@ -1206,6 +1206,7 @@ function defineTags()
 // We need to mark this as deprecated.
 FBL.TAG = Domplate.TAG;
 FBL.FOR = Domplate.FOR;
+FBL.DomplateTag = Domplate.DomplateTag;
 
 defineTags(
     "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2",
diff --git a/content/firebug/lib/lib.js b/content/firebug/lib/lib.js
index 67cb22a..662e068 100644
--- a/content/firebug/lib/lib.js
+++ b/content/firebug/lib/lib.js
@@ -123,8 +123,6 @@ FBL.SourceLink = SourceLink.SourceLink;
 //FBL.EventCopy = Dom.EventCopy;
 //FBL.PropertyObj = FirebugReps.PropertyObj;
 
-//FBL.NetFileLink = Firebug.NetMonitor.NetFileLink;
-
 // deprecated
 FBL.$ = function(id, doc)
 {
diff --git a/content/firebug/lib/locale.js b/content/firebug/lib/locale.js
index cdd2522..7b0b3c3 100644
--- a/content/firebug/lib/locale.js
+++ b/content/firebug/lib/locale.js
@@ -81,9 +81,9 @@ Locale.$STR = function(name, bundle)
     try
     {
         // The en-US string should be always available.
-        var bundle = Locale.getDefaultStringBundle();
-        if (bundle)
-            return bundle.GetStringFromName(strKey);
+        var defaultBundle = Locale.getDefaultStringBundle();
+        if (defaultBundle)
+            return defaultBundle.GetStringFromName(strKey);
     }
     catch (err)
     {
@@ -129,9 +129,9 @@ Locale.$STRF = function(name, args, bundle)
     try
     {
         // The en-US string should be always available.
-        var bundle = Locale.getDefaultStringBundle();
-        if (bundle)
-            return bundle.formatStringFromName(strKey, args, args.length);
+        var defaultBundle = Locale.getDefaultStringBundle();
+        if (defaultBundle)
+            return defaultBundle.formatStringFromName(strKey, args, args.length);
     }
     catch (err)
     {
diff --git a/content/firebug/lib/options.js b/content/firebug/lib/options.js
index 3682147..23ee99c 100644
--- a/content/firebug/lib/options.js
+++ b/content/firebug/lib/options.js
@@ -15,8 +15,6 @@ const Ci = Components.interfaces;
 const nsIPrefBranch = Ci.nsIPrefBranch;
 const nsIPrefBranch2 = Ci.nsIPrefBranch2;
 const PrefService = Cc["@mozilla.org/preferences-service;1"];
-const promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(
-    Ci.nsIPromptService);
 
 const nsIPrefService = Ci.nsIPrefService;
 const prefService = PrefService.getService(nsIPrefService);
@@ -47,7 +45,7 @@ const prefNames =  // XXXjjb TODO distribute to modules
     "showFullTextNodes", "showCommentNodes",
     "showTextNodesWithWhitespace", "showTextNodesWithEntities",
     "highlightMutations", "expandMutations", "scrollToMutations", "shadeBoxModel",
-    "showQuickInfoBox", "displayedAttributeValueLimit",
+    "showQuickInfoBox", "displayedAttributeValueLimit", "multiHighlightLimit",
 
     // CSS
     "onlyShowAppliedStyles",
@@ -361,6 +359,9 @@ var Options =
             prefs.clearUserPref(prefName);
     },
 
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // Firebug UI text zoom
+
     changeTextSize: function(amt)
     {
         var textSize = Options.get("textSize");
@@ -393,18 +394,14 @@ var Options =
         return zoom;
     },
 
-    resetAllOptions: function(confirm)  // to default state
-    {
-        if (confirm)
-        {
-            // xxxHonza: Options can't be dependent on firebug/lib/locale
-            if (!promptService.confirm(null, this.$STR("Firebug"),
-                this.$STR("confirmation.Reset_All_Firebug_Options")))
-            {
-                return;
-            }
-        }
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+    /**
+     * Resets all Firebug options to default state. Note that every option
+     * starting with "extensions.firebug" is considered as a Firebug option.
+     */
+    resetAllOptions: function()
+    {
         var preferences = prefs.getChildList("extensions.firebug", {});
         for (var i = 0; i < preferences.length; i++)
         {
@@ -428,52 +425,6 @@ var Options =
             Firebug.Debugger.clearAllBreakpoints(context);
         });
     },
-
-    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-    // Localization
-    $STR: function(name, bundle)
-    {
-        var strKey = name.replace(' ', '_', "g");
-
-        if (!Options.get("useDefaultLocale"))
-        {
-            try
-            {
-                if (typeof bundle == "string")
-                    bundle = document.getElementById(bundle);
-
-                if (bundle)
-                    return bundle.getString(strKey);
-                else
-                    return Locale.getStringBundle().GetStringFromName(strKey);
-            }
-            catch (err)
-            {
-                if (FBTrace.DBG_LOCALE)
-                    FBTrace.sysout("lib.getString FAILS '" + name + "'", err);
-            }
-        }
-
-        try
-        {
-            // The en-US string should be always available.
-            var bundle = Locale.getDefaultStringBundle();
-            if (bundle)
-                return bundle.GetStringFromName(strKey);
-        }
-        catch (err)
-        {
-            if (FBTrace.DBG_LOCALE)
-                FBTrace.sysout("lib.getString (default) FAILS '" + name + "'", err);
-        }
-
-        // Don't panic now and use only the label after last dot.
-        var index = name.lastIndexOf(".");
-        if (index > 0 && name.charAt(index-1) != "\\")
-            name = name.substr(index + 1);
-        name = name.replace("_", " ", "g");
-        return name;
-    }
 };
 
 // ********************************************************************************************* //
diff --git a/content/firebug/lib/url.js b/content/firebug/lib/url.js
index 895fcdb..7bf3e94 100644
--- a/content/firebug/lib/url.js
+++ b/content/firebug/lib/url.js
@@ -97,16 +97,16 @@ Url.splitDataURL = function(url)
     return props;
 };
 
-const reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
+const reSplitFile = /(.*?):\/{2,3}([^\/]*)(.*?)([^\/]*?)($|\?.*)/;
 Url.splitURLTrue = function(url)
 {
     var m = reSplitFile.exec(url);
     if (!m)
         return {name: url, path: url};
-    else if (!m[2])
-        return {path: m[1], name: m[1]};
+    else if (m[4] == "" && m[5] == "")
+        return {protocol: m[1], domain: m[2], path: m[3], name: m[3] != "/" ? m[3] : m[2]};
     else
-        return {path: m[1], name: m[2]+m[3]};
+        return {protocol: m[1], domain: m[2], path: m[2]+m[3], name: m[4]+m[5]};
 };
 
 Url.getFileExtension = function(url)
diff --git a/content/firebug/net/netMonitor.js b/content/firebug/net/netMonitor.js
index f163ec1..1c08f04 100644
--- a/content/firebug/net/netMonitor.js
+++ b/content/firebug/net/netMonitor.js
@@ -453,11 +453,10 @@ var NetHttpObserver =
             // We need to track the request now since the activity observer is not used in case
             // the response comes from BF cache. If it's a regular HTTP request the timing
             // is properly overridden by the activity observer (ACTIVITY_SUBTYPE_REQUEST_HEADER).
-            if (Firebug.netShowBFCacheResponses || !Ci.nsIHttpActivityDistributor)
-            {
-                var xhr = Http.isXHR(request);
-                networkContext.post(requestedFile, [request, NetUtils.now(), win, xhr]);
-            }
+            // Even if the Firebug.netShowBFCacheResponses is false now, the user could
+            // switch it on later.
+            var xhr = Http.isXHR(request);
+            networkContext.post(requestedFile, [request, NetUtils.now(), win, xhr]);
         }
     },
 
diff --git a/content/firebug/net/netPanel.js b/content/firebug/net/netPanel.js
index 19efbf4..bbb072f 100644
--- a/content/firebug/net/netPanel.js
+++ b/content/firebug/net/netPanel.js
@@ -228,6 +228,25 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
                 Firebug.NetMonitor.onToggleFilter(context, value);
             });
         }
+        else if (name == "netShowBFCacheResponses")
+        {
+            this.updateBFCacheResponses();
+        }
+    },
+
+    updateBFCacheResponses: function()
+    {
+        if (this.table)
+        {
+            if (Firebug.netShowBFCacheResponses)
+                Css.setClass(this.table, "showBFCacheResponses");
+            else
+                Css.removeClass(this.table, "showBFCacheResponses");
+
+            // Recalculate the summary information since some requests doesn't have to
+            // be displayed now.
+            this.updateSummaries(NetUtils.now(), true);
+        }
     },
 
     updateSelection: function(object)
@@ -275,8 +294,8 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
             this.disableCacheOption(),
             "-",
             Menu.optionMenu("net.option.Show Paint Events", "netShowPaintEvents"),
-            Menu.optionMenu("net.option.Show BF Cache Responses", "netShowBFCacheResponses",
-                "net.option.tip.Show_BF_Cache_Responses")
+            Menu.optionMenu("net.option.Show BFCache Responses", "netShowBFCacheResponses",
+                "net.option.tip.Show BFCache Responses")
         ];
     },
 
@@ -754,6 +773,8 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
             var hiddenCols = Options.get("net.hiddenColumns");
             if (hiddenCols)
                 this.table.setAttribute("hiddenCols", hiddenCols);
+
+            this.updateBFCacheResponses();
         }
     },
 
@@ -842,7 +863,7 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
         }
         else
         {
-            var sizeLabel = row.childNodes[4].firstChild;
+            var sizeLabel = row.getElementsByClassName("netSizeLabel").item(0);
 
             var sizeText = NetRequestEntry.getSize(file);
 
@@ -852,10 +873,10 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
 
             sizeLabel.firstChild.nodeValue = sizeText;
 
-            var methodLabel = row.childNodes[2].firstChild;
+            var methodLabel = row.getElementsByClassName("netStatusLabel").item(0);
             methodLabel.firstChild.nodeValue = NetRequestEntry.getStatus(file);
 
-            var hrefLabel = row.childNodes[1].firstChild;
+            var hrefLabel = row.getElementsByClassName("netHrefLabel").item(0);
             hrefLabel.firstChild.nodeValue = NetRequestEntry.getHref(file);
 
             if (file.mimeType)
@@ -1085,19 +1106,19 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
         if (!row)
             return;
 
-        var countLabel = row.childNodes[1].firstChild;
+        var countLabel = row.getElementsByClassName("netCountLabel").item(0); //childNodes[1].firstChild;
         countLabel.firstChild.nodeValue = Locale.$STRP("plural.Request_Count2", [fileCount]);
 
-        var sizeLabel = row.childNodes[4].firstChild;
+        var sizeLabel = row.getElementsByClassName("netTotalSizeLabel").item(0); //childNodes[4].firstChild;
         sizeLabel.setAttribute("totalSize", totalSize);
         sizeLabel.firstChild.nodeValue = NetRequestEntry.formatSize(totalSize);
 
-        var cacheSizeLabel = row.lastChild.firstChild.firstChild;
+        var cacheSizeLabel = row.getElementsByClassName("netCacheSizeLabel").item(0);
         cacheSizeLabel.setAttribute("collapsed", cachedSize == 0);
         cacheSizeLabel.childNodes[1].firstChild.nodeValue =
             NetRequestEntry.formatSize(cachedSize);
 
-        var timeLabel = row.lastChild.firstChild.lastChild.firstChild;
+        var timeLabel = row.getElementsByClassName("netTotalTimeLabel").item(0);
         var timeText = NetRequestEntry.formatTime(totalTime);
         var firstPhase = phases[0];
         if (firstPhase.windowLoadTime)
@@ -1124,6 +1145,10 @@ NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
         {
             var file = phase.files[i];
 
+            // Do not count BFCache responses if the user says so.
+            if (!Firebug.netShowBFCacheResponses && file.fromBFCache)
+                continue;
+
             if (!category || file.category == category)
             {
                 if (file.loaded)
@@ -1589,4 +1614,4 @@ Firebug.registerPanel(NetPanel);
 return Firebug.NetMonitor;
 
 // ********************************************************************************************* //
-}});
\ No newline at end of file
+}});
diff --git a/content/firebug/net/netReps.js b/content/firebug/net/netReps.js
index 52c8950..93a177b 100644
--- a/content/firebug/net/netReps.js
+++ b/content/firebug/net/netReps.js
@@ -583,6 +583,13 @@ Firebug.NetMonitor.NetRequestEntry = domplate(Firebug.Rep, new Firebug.Listener(
         if (file.aborted)
             return true;
 
+        if (file.responseStatus == 401)
+        {
+            var ntlm = NetUtils.findHeader(file.requestHeaders, "authorization");
+            if (ntlm && ntlm.indexOf("NTLM") == 0)
+                return false;
+        }
+
         var errorRange = Math.floor(file.responseStatus/100);
         return errorRange == 4 || errorRange == 5;
     },
@@ -594,7 +601,8 @@ Firebug.NetMonitor.NetRequestEntry = domplate(Firebug.Rep, new Firebug.Listener(
 
     getHref: function(file)
     {
-        return (file.method ? file.method.toUpperCase() : "?") + " " + Url.getFileName(file.href);
+        return (file.method ? file.method.toUpperCase() : "?") + " " +
+            Str.cropString(Url.getFileName(file.href), 40);
     },
 
     getStatus: function(file)
diff --git a/content/firebug/net/requestObserver.js b/content/firebug/net/requestObserver.js
index 733dc9d..f4fee01 100644
--- a/content/firebug/net/requestObserver.js
+++ b/content/firebug/net/requestObserver.js
@@ -202,6 +202,9 @@ function getObserverList()
 // ********************************************************************************************* //
 // Registration
 
+// Compatibility with Firebug 1.7 extensions: deprecated, obsolete
+FBL.httpObserver = HttpRequestObserver;
+
 // xxxHonza: Do we need to remove the listener?
 TraceModule.addListener(new TraceListener("httpObserver.", "DBG_HTTPOBSERVER", true));
 
diff --git a/content/firebug/net/spy.js b/content/firebug/net/spy.js
index 984fab6..4793e3f 100644
--- a/content/firebug/net/spy.js
+++ b/content/firebug/net/spy.js
@@ -636,7 +636,9 @@ Firebug.Spy.XMLHttpRequestSpy.prototype =
 
     getURL: function()
     {
-        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
+        // Don't use this.xhrRequest.channel.name to get the URL. In cases where the
+        // same XHR object is reused for more requests, the URL can be wrong (issue 4738).
+        return this.href;
     },
 
     // Cache listener
@@ -959,7 +961,8 @@ Firebug.Spy.XHR = domplate(Firebug.Rep,
     getContextMenuItems: function(spy)
     {
         var items = [
-            {label: "CopyLocation", command: Obj.bindFixed(this.copyURL, this, spy) }
+            {label: "CopyLocation", id: "fbSpyCopyLocation",
+                command: Obj.bindFixed(this.copyURL, this, spy) }
         ];
 
         if (spy.postText)
@@ -970,9 +973,11 @@ Firebug.Spy.XHR = domplate(Firebug.Rep,
         }
 
         items.push(
-            {label: "CopyResponse", command: Obj.bindFixed(this.copyResponse, this, spy) },
+            {label: "CopyResponse", id: "fbSpyCopyResponse",
+                command: Obj.bindFixed(this.copyResponse, this, spy) },
             "-",
-            {label: "OpenInTab", command: Obj.bindFixed(this.openInTab, this, spy) }
+            {label: "OpenInTab", id: "fbSpyOpenInTab",
+                command: Obj.bindFixed(this.openInTab, this, spy) }
         );
 
         return items;
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index 03e075c..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,270 +0,0 @@
-firebug (1.8.1-1) unstable; urgency=low
-
-  * New upstream release.
-  * debian/control:
-    - firebug now depends on Iceweasel >= 5.0 since
-      previous releases are no more compatible with
-      it. (Closes: #637411)
-
- -- Andrea Veri <and at debian.org>  Sat, 13 Aug 2011 15:47:05 +0200
-
-firebug (1.8.0~b5-2) unstable; urgency=low
-
-  * Iceweasel 5.0 has gone to unstable, so now firebug is compatible with
-    iceweasel/unstable, closes: #625292.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Sun, 17 Jul 2011 11:07:29 +0400
-
-firebug (1.8.0~b5-1) experimental; urgency=low
-
-  * New upstream version, compatible with iceweasel 5.0.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 04 Jul 2011 10:24:17 +0400
-
-firebug (1.7.0-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 06 May 2011 10:18:25 +0400
-
-firebug (1.7~b1-1) unstable; urgency=low
-
-  * New upstream version, closes: #588589, fix activation troubles,
-    closes: #616193.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 15 Mar 2011 19:35:08 +0300
-
-firebug (1.6.2-2) unstable; urgency=low
-
-  * Bump compatible version, closes: #616725.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 07 Mar 2011 09:44:56 +0300
-
-firebug (1.6.2-1) unstable; urgency=low
-
-  * New upstream version.
-  * Bump compatible version, closes: #611985.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 01 Mar 2011 23:18:05 +0300
-
-firebug (1.5.4-2) unstable; urgency=low
-
-  * Team upload.
-  * Remove myself from Uploaders.
-  * Drop transitional package.
-  * Bump Standard-Version to 3.9.1 (no changes required).
-  * Update debian/watch file.
-  * Fix documentation symlinks. (Closes: #588298)
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Thu, 16 Sep 2010 01:58:51 +0200
-
-firebug (1.5.4-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 18 May 2010 09:47:18 +0400
-
-firebug (1.5.3-1) unstable; urgency=low
-
-  * New upstream release, fixes memory leak, closes: #573758,
-    thanks for Filipus Klutiero <chealer at gmail.com>
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 15 Mar 2010 09:36:13 +0300
-
-firebug (1.5.2-1) unstable; urgency=low
-
-  * New upstream release.
-  * Bump Standards-Version to 3.8.4 (no changes required).
-  * Switch to dpkg-source 3.0 (quilt) format.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Wed, 03 Mar 2010 02:31:59 +0100
-
-firebug (1.5.0-2) unstable; urgency=low
-
-  * install.rdf:
-    - add back the Iceweasel / Firefox task to have 
-      Firebug correctly linked and working again. (looks
-      like that linking it using the generic Mozilla toolkit
-      application wasnt working as expected) 
-
- -- Andrea Veri <and at debian.org>  Mon, 25 Jan 2010 13:33:33 +0100
-
-firebug (1.5.0-1) unstable; urgency=low
-
-  * New upstream release.
-  * debian/control:
-    - updating my mail address.
-    - removing Conflicts field, replaces should be enough and
-      the 'Priorities' debcheck should be fine now.
-  * debian/rules:
-    - removing chmod hack, permissions are now set
-      correctly during build.
-  * debian/xul-ext-firebug.links:
-    - added to provide symlinks to doc files placed
-      upstream into /u/s/xul-ext-firebug, they now point
-      to /u/s/doc/xul-ext-firebug instead. (Closes: #560793)
-
- -- Andrea Veri <and at debian.org>  Sun, 24 Jan 2010 14:54:49 +0100
-
-firebug (1.4.5-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 13 Nov 2009 11:43:43 +0300
-
-firebug (1.4.4-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Thu, 05 Nov 2009 10:26:26 +0300
-
-firebug (1.4.3-2) unstable; urgency=low
-
-  [ Andrea Veri ]
-  * debian/control:
-    - refreshed depends and added m-ds fields.
-    - added a B-D on mozilla-devscripts 0.16~
-    - added myself and bdrung into uploaders plus DM tag
-    - dh bumped to level 7
-    - added a dummy transitional package after binary name change
-      from iceweasel-firebug to firebug. Have a look at
-      http://wiki.debian.org/Teams/DebianMozExtTeam for more infos.
-    - VCS-Git / Browser updated with new values.
-  * debian/rules:
-    - adapted to m-ds
-    - added a chmod rule to fix executable-not-elf-or-script lintian warning.
-      Thanks to Benjamin Drung for this fix.
-  * removed useless *.install, *.link files, they are no more needed with
-    m-ds.
-
-  [ Benjamin Drung ]
-  * add missing commas to uploaders list
-  * do not build depend on unzip any more
-
- -- Andrea Veri <andrea.veri89 at gmail.com>  Sat, 03 Oct 2009 22:43:58 +0200
-
-firebug (1.4.3-1) unstable; urgency=low
-
-  * New upstream version, closes: #548529.
-  * Standards-Version bumped to 3.8.3.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Thu, 01 Oct 2009 17:49:05 +0400
-
-firebug (1.4.2-1) unstable; urgency=low
-
-  * New upstream version.
-   * locale updates (cs-CZ, uk-UA, ja-JP)
-   * inspect E4X objects (issue 2114)
-   * POST Data not fully viewable (issue 2105)
-   * better console logging (related to issue 1860)
-   * allPagesActivation pref
-   * a11y fixes
-   * Translator name updates
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 10 Aug 2009 10:05:35 +0400
-
-firebug (1.4.1-2) unstable; urgency=low
-
-  * Updated debian/copyright (added translators/contributors).
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Wed, 05 Aug 2009 15:49:29 +0400
-
-firebug (1.4.1-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Sat, 01 Aug 2009 10:32:34 +0400
-
-firebug (1.4.0~b7-2) experimental; urgency=low
-
-  * Fixed dependence version, closes: #537083.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Wed, 15 Jul 2009 08:58:07 +0400
-
-firebug (1.4.0~b7-1) experimental; urgency=low
-
-  * New upstream version (It supports iceweasel 3.5).
-  * Standards-Version bumped to 3.8.2.
-  * Added DMEM team <pkg-mozext-maintainers at lists.alioth.debian.org> to
-    uploaders.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 13 Jul 2009 10:27:19 +0400
-
-firebug (1.3.3-1) unstable; urgency=low
-
-  * New upstream version.
-  * Fixed debian/watch.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 24 Feb 2009 12:24:53 +0300
-
-firebug (1.3.2-1) unstable; urgency=low
-
-  * New upstream version.
-  * Git-repo has been created on git.debian.org.
-  * Added VCS-* records to debian/control.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 17 Feb 2009 10:50:06 +0300
-
-firebug (1.3.0-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 13 Jan 2009 17:07:00 +0300
-
-firebug (1.2.1-1) unstable; urgency=low
-
-  * New upstream bugfix-release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 19 Sep 2008 13:00:26 +0400
-
-firebug (1.2.0-1) unstable; urgency=low
-
-  * New upstream release.
-   * Suspend feature
-   * Display which tabs have firebug enabled in a tooltip
-   * Performance enhancements
-   * Improved console output
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Wed, 27 Aug 2008 18:08:02 +0400
-
-firebug (1.2.0~b15-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 22 Aug 2008 20:31:35 +0400
-
-firebug (1.2.0~b13-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 22 Aug 2008 14:46:18 +0400
-
-firebug (1.2.0~b7-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 01 Aug 2008 20:02:31 +0400
-
-firebug (1.2.0~b6-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 21 Jul 2008 23:02:25 +0400
-
-firebug (1.2.0~b4-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Sun, 06 Jul 2008 10:48:23 +0400
-
-firebug (1.2.0~b3-2) unstable; urgency=low
-
-  * Binary package has been renamed to 'iceweasel-firebug'.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Sun, 22 Jun 2008 11:02:11 +0400
-
-firebug (1.2.0~b3-1) unstable; urgency=low
-
-  * Initial release (closes: #487226);
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 20 Jun 2008 19:11:27 +0400
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index 7f8f011..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 72724ea..0000000
--- a/debian/control
+++ /dev/null
@@ -1,36 +0,0 @@
-Source: firebug
-Section: web
-Priority: optional
-Maintainer: Dmitry E. Oboukhov <unera at debian.org>
-Uploaders: Debian Mozilla Extension Maintainers <pkg-mozext-maintainers at lists.alioth.debian.org>,
-           Andrea Veri <and at debian.org>
-Build-Depends: cdbs, debhelper (>= 7), mozilla-devscripts (>= 0.16~)
-DM-Upload-Allowed: yes
-Standards-Version: 3.9.1
-Homepage: http://getfirebug.com/
-VCS-Git: git://git.debian.org/pkg-mozext/firebug.git
-VCS-Browser: http://git.debian.org/?p=pkg-mozext/firebug.git;a=summary
-
-Package: xul-ext-firebug
-Architecture: all
-Depends: ${misc:Depends}, iceweasel (>= 5.0)
-Recommends: ${xpi:Recommends}
-Provides: ${xpi:Provides}
-Enhances: ${xpi:Enhances}
-Replaces: iceweasel-firebug (<< 1.4.3-2)
-Description: web development plugin for Iceweasel/Firefox
- Firebug integrates with Iceweasel/Firefox to put a wealth of web development
- tools at your fingertips while you browse. You can edit, debug, and monitor
- CSS, HTML, and JavaScript live in any web page.
- .
- Features:
- .
-  * Inspect and edit HTML
-  * Tweak CSS to perfection
-  * Visualize CSS metrics
-  * Monitor network activity
-  * Debug and profile JavaScript
-  * Quickly find errors
-  * Explore the DOM
-  * Execute JavaScript on the fly
-  * Logging for JavaScript
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index a3272b2..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,115 +0,0 @@
-This package was debianized by Dmitry E. Oboukhov <unera at debian.org> on
-Jun  20 18:39:03 MSD 2008
-
-It was downloaded from:
-	https://addons.mozilla.org/en-US/firefox/addon/1843
-
-Upstream Author:
-	Joe Hewitt
-
-Contributors:
-	John J. Barton (IBM Almaden)
-	Jan Odvarko (All Peers Inc.)
-	Max Stepanov (Aptana Inc.)
-	Rob Campbell (Mozilla Corp.)
-	Hans Hillen, (Paciello Group, Mozilla)
-	Curtis Bartley, (Mozilla Corp.)
-	Mike Collins, (IBM Almaden)
-	Kevin Decker
-	Mike Ratcliffe, (Comartis AG)
-	Hernan Rodríguez Colmeiro
-	Austin Andrews
-	Christoph Dorn
-
-Translators:
-	Leszek(teo)Życzkowski (pl-PL)
-	markh (nl-NL)
-	peter3 (sv-SE)
-	AlleyKat (da-DK)
-	lovelywcm (zh-CN)
-	Lukáš Kucharczyk, Michal Kec (cs-CZ)
-	Team erweiterungen.de, ReinekeFux, Benedikt Langens (de-DE)
-	l0stintranslation, gonzalopirobutirro (it-IT)
-	alexxed (ro-RO)
-	Nicolas Martin, Franck Marcia (fr-FR)
-	gLes (hu-HU)
-	Xavi Ivars - Softcatalà (ca)
-	gezmen (tr-TR)
-	eternoendless (es-AR)
-	Dark Preacher (ru-RU)
-	Tiago Oliveira, Diego de Carvalho Zimmermann, Alexandre Rapaki (pt-BR)
-	Juan Botías (es-ES)
-	Andriy Zhouck (uk-UA)
-	Hisateru Tanaka (ja-JP)
-
-Copyright (C) 2007, Parakey Inc.
-Copyright (C) Joe Hewitt.
-
-License:
-	All rights reserved.
-
-	Redistribution and use of this software in source and binary forms,
-	with or without  modification,  are  permitted  provided  that  the
-	following conditions are met:
-
-	* Redistributions of source code must retain  the  above  copyright
-	  notice, this list of conditions  and  the  following  disclaimer.
-
-	* Redistributions in binary form must reproduce the above copyright
-	  notice, this list of conditions and the following  disclaimer  in
-	  the  documentation  and/or  other  materials  provided  with  the
-	  distribution.
-
-	*  Neither  the  name  of  Parakey  Inc.   nor  the  names  of  its
-	  contributors may be used to endorse or promote  products  derived
-	  from this software without specific prior written  permission  of
-	  Parakey Inc.
-
-	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,  BUT  NOT
-	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY  AND  FITNESS
-	FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN  NO  EVENT  SHALL  THE
-	COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-	INCIDENTAL,   SPECIAL,   EXEMPLARY,   OR   CONSEQUENTIAL    DAMAGES
-	(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS  OR
-	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  INTERRUPTION)
-	HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-	STRICT LIABILITY,  OR  TORT  (INCLUDING  NEGLIGENCE  OR  OTHERWISE)
-	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-	OF THE POSSIBILITY OF SUCH DAMAGE.
-
-content/firebug/reps.js:
-
-Copyright (C) 2006, Yahoo! Inc.
-
-	Redistribution and use of this software in source and binary forms,
-	with or without  modification,  are  permitted  provided  that  the
-	following conditions are met:
-
-	* Redistributions of source code must retain  the  above  copyright
-	  notice, this list of conditions and the following disclaimer.
-
-	* Redistributions in binary form must reproduce the above copyright
-	  notice, this list of conditions and the following  disclaimer  in
-	  the  documentation  and/or  other  materials  provided  with  the
-	  distribution.
-
-	* Neither the name of Yahoo! Inc. nor the names of its contributors
-	  may be used to endorse or  promote  products  derived  from  this
-	  software without specific prior written permission of Yahoo! Inc.
-
-	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,  BUT  NOT
-	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY  AND  FITNESS
-	FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN  NO  EVENT  SHALL  THE
-	COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-	INCIDENTAL,   SPECIAL,   EXEMPLARY,   OR   CONSEQUENTIAL    DAMAGES
-	(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS  OR
-	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  INTERRUPTION)
-	HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-	STRICT LIABILITY,  OR  TORT  (INCLUDING  NEGLIGENCE  OR  OTHERWISE)
-	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-	OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Debian packaging is (C) 2008, Dmitry E. Oboukhov <unera at debian.org>
-and is licensed under the GPL, see /usr/share/common-licenses/GPL.
diff --git a/debian/gbp.conf b/debian/gbp.conf
deleted file mode 100644
index 680f531..0000000
--- a/debian/gbp.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-[DEFAULT]
-pristine-tar = True
-compression = bzip2
-
-[git-dch]
-meta = True
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index 135b64a..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/make -f
-
-UPSTREAM_VERSION = $(shell dpkg-parsechangelog \
-	|grep ^Version|awk '{print $$2}'|sed 's/-.*//' )
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/mozilla-devscripts/xpi.mk
-
-clean::
-	rm -fr .pc
-
-tarball: clean
-	cd .. && tar --exclude=debian --exclude=.git \
-		-cjvf firebug_$(UPSTREAM_VERSION).orig.tar.bz2 \
-			firebug-$(UPSTREAM_VERSION)
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index b6c2a6e..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,4 +0,0 @@
-version=3
-opts="uversionmangle=s/(?=[^\.\d]+(?:\d+)?)$/\~/;s/0(\d)/0.$1/g" \
-ftp://ftp.mozilla.org/pub/mozilla.org/addons/1843/\
-firebug-(\d+(?:\.\d+){1,3}(?:\w+\d+)?).*\.xpi
diff --git a/debian/xul-ext-firebug.links b/debian/xul-ext-firebug.links
deleted file mode 100644
index c26df02..0000000
--- a/debian/xul-ext-firebug.links
+++ /dev/null
@@ -1,8 +0,0 @@
-/usr/share/xul-ext/firebug/docs/Bugs.txt /usr/share/doc/xul-ext-firebug/Bugs.txt
-/usr/share/xul-ext/firebug/docs/ReleaseNotes_1.1.txt /usr/share/doc/xul-ext-firebug/ReleaseNotes_1.1.txt
-/usr/share/xul-ext/firebug/docs/ReleaseNotes_1.2.txt /usr/share/doc/xul-ext-firebug/ReleaseNotes_1.2.txt
-/usr/share/xul-ext/firebug/docs/ReleaseNotes_1.3.txt /usr/share/doc/xul-ext-firebug/ReleaseNotes_1.3.txt
-/usr/share/xul-ext/firebug/docs/ReleaseNotes_1.4.txt /usr/share/doc/xul-ext-firebug/ReleaseNotes_1.4.txt
-/usr/share/xul-ext/firebug/docs/ReleaseNotes_1.5.txt /usr/share/doc/xul-ext-firebug/ReleaseNotes_1.5.txt
-/usr/share/xul-ext/firebug/docs/TODO.txt /usr/share/doc/xul-ext-firebug/TODO.txt
-
diff --git a/defaults/preferences/firebug.js b/defaults/preferences/firebug.js
index dc7d199..860d730 100644
--- a/defaults/preferences/firebug.js
+++ b/defaults/preferences/firebug.js
@@ -69,6 +69,7 @@ pref("extensions.firebug.scrollToMutations", false);
 pref("extensions.firebug.shadeBoxModel", true);
 pref("extensions.firebug.showQuickInfoBox", false);
 pref("extensions.firebug.displayedAttributeValueLimit", 1024);
+pref("extensions.firebug.multiHighlightLimit", 250);
 
 // CSS
 pref("extensions.firebug.onlyShowAppliedStyles", false);
diff --git a/docs/ReleaseNotes_1.1.txt b/docs/ReleaseNotes_1.1.txt
deleted file mode 100644
index 97a024e..0000000
--- a/docs/ReleaseNotes_1.1.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-Release Notes for Firebug 1.1
-Firebug 1.1 is Firebug 1.05 by Joe Hewitt with additions by John J. Barton and Max Stepanov
-
-=== Javascript Debugging ===
-* eval() debugging,
-  Javascript code sent to eval() shows up in Script as a new source file. Code can be debugged as other source.
-  This is esp. important for Web 2.0 script-inclusion as in dojo.loader.
-  Implementation of http://www.almaden.ibm.com/u/bartonjj/fireclipse/test/DynLoadTest/WebContent/DynamicJavascriptErrors.htm
-  ** Script panel option "Show eval() source": turn false to hide the eval() buffers (there can be many).
-  ** Script panel option "UseLastLineForEvalName": set to ask Firebug to use the last
-     line of eval() buffer for the name of the buffer:
-     //@ sourceURL=<url>
-  ** support profiling of eval() scripts
-  ** Internal: mostly firebug-service.js, some debugger.js (where the Script panel is implemented)
-  **           also created nsIFirebugWithEval.idl extending nsIFirebug.idl
-
-* browser-generated event handler debugging,
-  Firefox generates event handler code that is normally invisible to programmers. 1.1 shows these
-  handlers in the Script panel and they can be breakpointed etc.
-  ** Internal: as eval() debugging.
-
-* executable lines marked with green line numbers,
-  ** Internal: lib.js
-
-* Stack side panel on "Script" panel for callstack,
-  This is visible when you BreakOnAllErrors or breakpoint and stop the debugger.
-  Stack side panel option: Omit Toolbar Stack, causes the toolbar to stop showing the stack (ie because it will be long).
-  ** Internal: debugger.js but the implementation was done by refactoring code.
-
-* ScriptPanel->Options->Break On Top Level, like break on next
-  When set the next top level script will halt the debugger like a breakpoint.
-  Should be similar to the oft-requested Break on Next.
-  ** Internal: mostly firebug-service.js, some debugger.js, also changed component interface (.idl and .xpt file)
-
-* limit filenames on locationList (script files) to 60 chars to avoid spilling UI
-
-* "better" debugging icons,
-  The original icons made no sense to me so I invent some similar colored ones that I like better.
-
-=== External Edtiors ===
- * External editors configuration, "Open With Editor" menu
- * Aptana IDE editor integration
-
-=== Console, Errors ===
-* CSS errors report against source lines,
-  CSS error used to report against CSS: but errors cause the CSS to be ignored so the erroneous
-  CSS was not even visible.
-
-* BreakOnError puts error text in StatusBar
-  BreakOnError halts the debugger but the console has not been updated yet. So you know there
-  is an error and even where it is but not the message.  This fix puts the error in red in the StatusBar.
-
-* New Console options
-   ShowChromeErrors=Show Chrome Errors
-   ShowChromeMessages=Show Chrome Messages
-   ShowExternalErrors=Show External Errors
-
-== Net panel ==
-* Cache tab for Net panel contributed by Kyle Scholz
-
-== XHR  ==
-* Spy was redesigned to avoid wrapping of XMLHttpRequest object that had caused many issues
-  An observer for http-on-modify-request events is used
-  ** Internal: spy.js
-
-=== Bug Fixes ===
-    ** Issue 8: using PrivilegeManager.enablePrivilege doesn't work for XHRs
-    ** Issue 27: codebrowser does not work, when there is an Java Applet on the page
-    ** Issue 69: incorrect enabled on new tabs
-    ** Issue 234: console.log displays string objects as arrays
-    ** Issue 230 CSS Errors reported on wrong or non-existent line numbers
-    ** Issue 181 Net->XHR Response tab shows "Loading..." not response text.
-    ** Issue 239 Fix for Frame refresh bug: http://groups.google.com/group/firebug/browse_thread/thread/c69e49b9815b2540
-    ** throw exception if firebugService cannot be loaded on startup (_CC[cname] error message).   http://groups.google.com/group/firebug/browse_thread/thread/c795b72931f2bd34/8fa8dca3c012c4f7
-    ** Issue 249: Fix for Net monitor memory leaks
-    ** Issue 342: debugger breaks on disabled breakpoints
-
-=== General ===
-* Supports Firefox 3
-  !Incomplete: HTML + DOM side panel still breaks browser repainting.
-  Internal: evalInSandBox introduced.
-
-* Internal firebug debug output
-  Add trace.js for internal Fbug debugging. Add tracePanel.js to control tracing.
-  This code is only on branches/explore
-
-* support for Chromebug extension
-  Some changes in initialization code, esp in chrome.js
-
diff --git a/docs/ReleaseNotes_1.2.txt b/docs/ReleaseNotes_1.2.txt
deleted file mode 100644
index f46af68..0000000
--- a/docs/ReleaseNotes_1.2.txt
+++ /dev/null
@@ -1,180 +0,0 @@
-Release Notes for Firebug 1.2
-Firebug 1.2 is Firebug 1.1 with additions by John J. Barton and Jan Odvarko.
-Firebug 1.1 is Firebug 1.05 by Joe Hewitt with additions by John J. Barton and Max Stepanov
-
-== Enablement UI ==
-    * Disable always: when the Firebug UI is not active on any page, the debugger is disabled (minimal overhead)
-    * Instant on: when the Firebug UI is active, HTML, CSS, DOM views activate (minimal overhead)
-    * Script panel user-activation: initially disabled or enabled always
-    * Net panel user-activiation: initially disabled or enabled always
-    * Console panel user-activation: initially disabled or enabled always. Controls ShowXMLHTTPRequest, consoleListener
-    * Bug Icon gray unless some page has Script or Net panel activation
-    * Multipanel enablement.
-    * No Allowed-sites/Disable for Site: no longer needed.
-    * Suspend/Resume Firebug in status bar context menu
-    * List pages that enable Firebug on the Context menu tooltip.
-  The UI for this feature is being refined; overhead tests have not been completed.
-  We are interested in feedback on this UI change.
-
-== Javascript Debugging ==
-    * Written/cleaned up eval support
-    * Performance on eval better, easier to support.
-  This feature is complete; Bug reports on javascript debugger welcome.
-
-== Net Panel ==
-    * Net timing more accurate
-    * Only real network requests displayed.
-    * Limit for number of requests (configurable in preferences).
-    * Additional columns for: request method, status response + text
-    * Cache tab has expiration time in Net panel
-    * The Response tab has a hack to prevent extra requests to the server. Users must click on a button to force the request. 
-      The hack will not be needed in the next release of Firebug.
-
-== Console ==
-    * Redesigned to use events/attribute passing.
-  tests/console/joes-original/test.html mostly passes
-
-== Command Line ==
-    * Redesigned to avoid using evalInSandbox.
-  tests/console/commandLineObjects.html mostly passes
-  commandLineAPI functions, ok.
-
-== DOM Panel ==
-    Works for FF3pre after about 2008041406 (https://bugzilla.mozilla.org/show_bug.cgi?id=425139)
-
-== Misc ==
-    Secure updates via signed update.rdf with xpi updateHash values.
-
-== Localization ==
-    * Hu-hu by Zoltan Papp (issue 749)
-
-== Bug Fixes ==
-    * Issue 1 Reload external Firebug window while its tab is hidden closes the window
-    * Issue 2 Can't set breakpoints in code called by unload event
-    * Issue 4 Visiting error page causes external Firebug window to close itself
-    * Issue 7 Long URLs in XHR spy rows should be cropped
-    * Issue 14 Programatically disable firebug log from Javascript
-    * Issue 38  console.group should allow optional collapse
-    * Issue 43 Edit CSS behaviour - appending styles to the dom is unexpected. Contribution by  tonygentilcore
-    * Issue 45 HTML Edit bug when editing <tr> and <td> (contribution by ash.searle)
-    * Issue 56 Enhancement: row distinction in profiler
-    * Issue 65 show HTTP Status code on NET response
-    * Issue 73 Can't show function contents in DOM browser. 
-    * Issue 165: Profile results table can get too wide for console.
-    * Issue 183 Configurable maximum output size
-    * Issue 186 Only one line in net monitor for multiple xhr post requests
-    * Issue 188 "Open in new tab" for failed POST request opens incorrect URL
-    * Issue 202 Clicking status bar error warning closes firebug
-    * Issue 215 Display total page load time
-    * Issue 216 Improve network monitor to include server-side processing time
-    * Issue 256 Inspect element in context menu always opens fbug in same window regardless of settings and closes inproperly
-    * Issue 266 PUT & DELETE requests appear as POST requests in firebug
-    * Issue 268 Firebug adds pt unit when unit not specified (e.g. 0pt) (contribution by ash.searle)
-    * Issue 307 Cannot edit HTML
-    * Issue 316 Show HTTP request method and request content in Firebugs "Net" tab
-    * Issue 321 arguments can no longer be logged
-    * Issue 325 PUT operations do not show contained entity in Net tab
-    * Issue 327 "Net" tab: lowercase b for bytes (instead of B)
-    * Issue 331 XHR resolves relative URIs to resource:// protocol
-    * Issue 346 Fix Net Panel timings
-    * Issue 349 Local file XHR events not listed in console
-    * Issue 359 No entry in the Net tab for XHR when response content length is 0
-    * Issue 361  Edit button gets stuck when reloading page whilst editing CSS. Contribution by tonygentilcore
-    * Issue 393 Text overlayed on text in script editor window.
-    * Issue 401 Net tab does not consider "application/javascript" a JS MIME type
-    * Issue 402 Net tab tries to show previews of non-images with image file extensions
-    * Issue 404 UI change to help users activate expensive debugging features only when they need them.
-    * Issue 405 The Net panel consumes a lot of memory if there is a lot of XHR activity without page reload.
-    * Issue 414 XHR Breaks When Using Firebug 1.1 beta when > 1 HTTP 302 Redirect Is Returned
-    * Issue 421 onLoad of XHRSpyListener does not fire correctly
-    * Issue 427 fix configure editor localization
-    * Issue 430 about:blank pages always show firebug as enabled
-    * Issue 438 hide "Open With Editor" menu item for input/iframe/textarea elements
-    * Issue 440 Scripts included with relative paths appear twice in script list
-    * Issue 445 http header content-type missing disables network monitoring
-    * Issue 455 Firebug and iMacros Incompatibility    
-    * Issue 468 [feature request] fast [enable -> inspect element -> disable] ergonomy
-    * Issue 469 hide "open with editor" when no editors configured
-    * Issue 474 base href applied to scripts
-    * Issue 475 Show Return Code (HTTP HEADER-Response)
-    * Issue 476 Infinite recursive loop crash firefox, fix the long time it takes to show the stack.
-    * Issue 479 pt-BR locale submission, Comment 10 by leandromerces, Jun 21
-    * Issue 503 disable doesn't work properly
-    * Issue 521 Prototype iterator functions die in console
-    * Issue 528 Context menu missing from script dropdown
-    * Issue 544 Net Panel incorrect rounding of file size
-    * Issue 549 The Options menu should *not* be displayed if there are no options available (contribution by Ash Searle)
-    * Issue 564 Can't "disable for on this site" firebug
-    * Issue 567 Slow script warning in debugger.js on some pages
-    * Issue 570 User agent stylesheet rules are not shown
-    * Issue 573 setting css background-color affects layout inspector. Contribution by tonygentilcore
-    * Issue 583 Javascript console cannot work with Firefox 3 beta5
-    * Issue 587 Custom listeners for observing net-monitor.
-    * issue 599 Firebug Inspect Outline Does Not Show Up Over Web Page Elements
-    * Issue 601 XHR in console shows stale/cached output
-    * Issue 618 HTML: tab order, fixed by setting order properties on side panels.
-    * Issue 619 Reopening firebug results in grey DOM, Layout or Style Pane, fixed by forceUpdate on syncSidePanel.
-    * Issue 622 Reopening firebug with inspect element results in grey html pane and Style/Layout/DOM
-    * Issue 623 Pop up windows do not show all FireBug controls
-    * Issue 634 XHR request details not showing up
-    * Issue 637 $ FireBug function overwrites existing $ function
-    * Issue 659 firebug.js:1473 - "this.context.browser is undefined"
-    * Issue 663 $0 should be a reference to the most recent inspected element
-    * Issue 676 Exception in firebug-cache.js when visiting http://www.takebacktheweb.org/CaE.html
-    * Issue 679 Firebug 1.2.0a27X blocking most AJAX calls
-    * Issue 663 $0 should be a reference to the most recent inspected element
-    * Issue 680 Tab completion of JavaScript elements not working
-    * Issue 690 New zh-CN local file for Firebug 1.2
-    * Issue 691 Enablement for site does not reload other tabs
-    * Issue 698 Debug panel file navigation too painful
-    * Issue 707 'Remove All Breakpoints' does nothing
-    * Issue 709 Visible Console Objects
-    * Issue 720 Net tab -> response status =   and response time = NaNm.
-    * Issue 761 HTML panel blank, fails to update view 
-    * Issue 719 Firebug's log limit has been reached - difficult named option
-    * Issue 723 JavaScript errors not shown in Firebug even when debugging is enabled;
-    * Issue 724 (Content in console tab is broken when opening firebug in new window)
-    * Issue 734 While debugging, click into the console. The execution context is not available
-    * Issue 736 Temp disabling breakpoints does not work. 
-    * Issue 749 Hungarian Locale
-    * Issue 750 DOM side-panel - variables names overlay actual values
-    * Issue 755 New zh-CN locale file for Firebug 1.2, contribution by http://code.google.com/u/shawphy/
-    * Issue 760 Inspect tab looses focus
-    * Issue 762 this.notifyFirebug is not a function error (contribution by zmarties)
-    * Issue 764 Source code for all scripts not visible on scripts tab without enabling debugger
-    * Issue 769 HTML Tab Unresponsive After Dock/Undock
-    * Issue 771 Improve the display of the FBTrace buttons contribution by Ken Arnold
-    * Issue 772 de locale for German Firebug, contribution by  benedikt.langens
-    * Issue 775 Deleting font-family from the Style tab doesn't delete it but sets it to 'null'
-    * Issue 784 Breakpoints in scripts included in an iframe don't cause debugger to break. Introduced
-    * Issue 785 Update Japanese Locale, contribution by http://code.google.com/u/norahmarinkovic/
-    * Issue 793 warnings classified as errors
-    * Issue 794 Catalan locale ca-AD, contribution by Àlex Corretgé http://bloc.corretge.cat
-    * Issue 797 Problem with XMLHttpRequest Logs
-    * Issue 810 1.2b3 bloody mess => no syntax error reporting, weird xul errors, and stuff 
-    * Issue 823 Firebug 1.2.0b3 unresponsive in Firefox 3 when opened in own window
-    * Issue 829 Refreshing Browser while stopped at a breakpoint will lock in an endless blank reload loop
-    * Issue 831 Clicking HTML select element in panelNode causes option menu items to multiply (contribution by Nathan Mische)
-    * Issue 840 Console links and buttons inactive on popout FF3
-    * Issue 869 Net page size info shows up as ? on some sites
-    * Issue 873 alien variable "y=2" in global watch list, contribution of jwitch
-    * Issue 881 "open with editor" not working on Linux
-    * Issue 883 "undefined" appears in the search box after selecting a script to show with the Enter key (contribution by splintor)
-    * Issue 884 FB 1.2b4 - en-/disable button missing
-    * Issue 889 variable-value on under the cursor is no longer displayed with Rainbow For Firebug, contributed patch by antonin.hildebrand
-    * Issue 892 firebug hangs up in net.js line 1298 when browsing in framesets
-    * Issue 910 Watch window stops responding after invalid JS Entry
-    * Issue 914 View Response of Ajax POST with empty reply displays entire HTML source of page
-    * Issue 920 fbug 1.2.0b4 will not launch in FireFox 3.0 with Danish languageda-DK
-    * Issue 921 Empty script tab when Firebug window is closed
-    * Issue 923 Don't enter breakpoints if Script panel is disabled for the domain
-    * Issue 926 1.2.0b4 version does not work in hungarian firefox
-    * Issue 947 Ajax request parameters and Arrays
-    * Issue 979 Firebug adds a hidden breakpoint when adding a breakpoint in a dynamically created function
-    * Issue 992 New zh-CN locale file for Firebug 1.2 (contribution by shawphy)
-    * Issue 993 Scripts included with relative paths appear twice in scripts list; breakpoints ignored
-    * Issue 997 GET and POST calls are shown truncated in console view using ellipsis
-    * Issue 1029 Firefox cache not cleared
-    * Issue 1037 incomplete report of uncaught exception
-    * Issue 1092 Open in new tab doesn't POST data
-    * Issue 
\ No newline at end of file
diff --git a/docs/ReleaseNotes_1.3.txt b/docs/ReleaseNotes_1.3.txt
deleted file mode 100644
index 85cda6f..0000000
--- a/docs/ReleaseNotes_1.3.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-Release Notes for Firebug 1.3
-Firebug 1.3 is Firebug 1.2 with additions by John J. Barton, Jan Odvarko, and more to come.
-Firebug 1.2 is Firebug 1.1 with additions by John J. Barton and Jan Odvarko.
-Firebug 1.1 is Firebug 1.05 by Joe Hewitt with additions by John J. Barton and Max Stepanov
-
-== Not Panel Specific ==
-    
-    * FBTrace service (for internal Firebug debugging). 
-    * TraceConsole (for internal Firebug debugging)
-
-== Javascript Debugging ==
-    * Script panel implemented with as viewport on source to improve performance on large JS files 
-    * Find debuggers by scope chain analysis rather than jsContext
-    * scope chain shows in watches panel (from contribution by kpdecker)
-
-== Console ==
-    * reimplement console/command line to reduce chance of console undefined.
-
-== DOM ==
-    * DOM properties alphabetical
-    
-== Net Panel ==
-    * Reimplement all response views with nsITraceableChannel
-    * Centralize handlers for http-on-modify-request in firebug-http-observer component
-    * Net panel timing improvements: more categories in timing.
-
-== Tracing ==
-    * Add TraceConsole to aid debugging Firebug.
-    * FBTrace panel removed from X versions (TraceConsole instead)
-    * new option DBG_SPY for spy.js
-    * firebug-service tracing to traceConsole
-
-== For Extensions ==
-    * add onApplyDecorator(sourceBox), allows annotation of source
-    * add module function isNeededGetReady() to signal a dependency and prepare for later use 
-        (debugger calls it to insure commandline is in for watches panel)
-        
-== Locales ==
-    * Internationalize via Babelizza; begin moving away from entities to properties.
-    * zh-CN locale update (contribution by lovelywcm)
-    * da-DK locale update (contribution by AlleyKat)
-    * sv-SE new locale (contribution by peter3)
-    * pl-PL locale update (contribution by Teo)
-    * nl-NL locale update (contribution by markh)
-    * add tranlator names to the about dialog
-
-== Bug Fixes ==
-    * Issue 156: Sort DOM object properties alphabetically
-    * Issue 472: New console API - clear
-    * Issue 489: Array content is not printed in version 1.1 beta
-    * Issue 502:  Component is not available (SessionStore exception)
-    * Issue 548:  'open with editor' mangles non-ascii characters
-    * Issue 588:  DOM HTMLCollection/NodeList should be formatted like an array in the console
-    * Issue 789:  Using the console in the context of the current debugging stack
-    * Issue 814:  cd not working correctly
-    * Issue 874:  User object incorrectly identified as arrays
-    * Issue 882:  console.log() reports wrong source file and line number
-    * Issue 983:  GWT with Firebug on FF3 cause "listener is undefined"
-    * Issue 992: New zh-CN locale file for Firebug 1.2
-    * Issue 1000: console.group doesn't work
-    * Issue 1050: GMaps2.setCenter seems to wipe out console.log in 1.2.0b7
-    * Issue 1063: Spanish translation for 'script' shouldn't be 'guión'
-    * Issue 1066: Tab completion fails for arrays
-    * Issue 1097: Inspect image tooltip confuses images from different tabs
-    * Issue 1107: Toggleing Table css properties breaks page permanently firebug 1.2.0b1
-    * Issue 1109: Missing POST information (empty POST tab)
-    * Issue 1110: Firebug doesn't respond (abclinuxu.cz) (very long URL)
-    * Issue 1121: "Open in Tab" does a POST request for a GET request
-    * Issue 1124: console.assert() doesn't work  
-    * Issue 1125: (partial) Net panel not working as expected (1.2.0) (issue 402 tested and works)
-    * Issue 1127: console fails to load into reload iframe (Frame > Reload Frame)
-    * Issue 1137: Forgets which JS file being viewed after switching away and back to Script tab
-    * Issue 1147: after refreshing page, text not shown properly
-    * Issue 1149: console.trace still not working
-    * Issue 1151: Break on all errors should not break when a watch is undefined
-    * Issue 1154: Debugger watch panel does not include closure variables, contribution kpdecker
-    * Issue 1159: Console results for "$x" incorrect
-    * Issue 1164: Firebug console no longer shows Array indicators
-    * Issue 1180: Show HTTP status code on all XHR requests in the console
-    * Issue 1190: 1.3.0 a3 with console enabled changes appearance of pages automaticallly
-    * Issue 1194: Firebug trims spaces from the lastmodified header
-    * Issue 1195: problems with xhr connection 
-    * Issue 1196: JavaScript logging is no longer displayed
-    * Issue 1198: Cannot expand line in FBTrace
-    * Issue 1199: "Reference error: url not defined" when calling monitor() contribution by tonysung
-    * Issue 1201: Both code and "script" disabled panel show up.
-    * Issue 1203: Step over causes Firebug to suspend on incorrect line after reload
-    * Issue 1206: showAllSources preference broken; contribution lezekdan
\ No newline at end of file
diff --git a/docs/ReleaseNotes_1.4.txt b/docs/ReleaseNotes_1.4.txt
deleted file mode 100644
index 5fc97d8..0000000
--- a/docs/ReleaseNotes_1.4.txt
+++ /dev/null
@@ -1,182 +0,0 @@
-Release Notes for Firebug 1.4
-Firebug 1.4 is Firebug 1.3 with additions by John J. Barton, Jan Odvarko, Hans Hillen, Kevin Decker, Mike Radcliffe, Hernan Rodríguez Colmeiro, Curtis Bartley, Mike Collins, and Templarian
-Firebug 1.3 is Firebug 1.2 with additions by John J. Barton, Jan Odvarko.
-Firebug 1.2 is Firebug 1.1 with additions by John J. Barton and Jan Odvarko.
-Firebug 1.1 is Firebug 1.05 by Joe Hewitt with additions by John J. Barton and Max Stepanov
-
-== Not Panel Specific ==
-    * Curtis Bartley's Tabs-on-top UI reordering
-    * Improved and simplified "natural" Activation UI, minimize to context menu, all on/off, Firebug stays put.
-    * Firebug remembers which pages you had opened Firebug on.
-    * Supports Firefox 3.5
-    * auto-suspend
-    * Adds tab switching shortcut. Currently hardcoded to ctrl + shift + pgup/pgdown
-    * search across all files (contribution by kpdecker)
-    * Accessiblity by Hans Hillen, incl. tabbing and focus identification, panels Script, DOM , CSS, Breakpoints, DOM
-    * (some) Testing before shipping!
-    * jsd.initAtStartup set false not true
-    * resetAllOptions on Firebug status bar context menu
-
-== Javascript Debugging ==
-    * Implement breakOnNext UI for STEP_SUSPEND
-    * Leave the debugger controls visible if the js is stopped
-    * Implement stepStayOnDebuggr to keep chrome out of firebug and vice versa
-    * Implement dynamicURLhasBP to avoid MD5 on eval unless breakpoints are set on evals
-    * skipScrolling if the lines are still in view.
-    * search in source boxes now ignores case unless the user puts an upper case character in the search request box
-    * group eval and events together under path to parent file
-    * implement traceCalls/untraceCalls
-    * implement decompileEvals
-
-== Net Panel ==
-    * support for STATUS_RESOLVING
-    * Support for custom tabs for net requests (like Headers, Params, etc.) within net panel.
-    * Json tab is available even for XHR entries in Console panel.
-    * Limit for cached responses in tabCache.
-    * Maximum size limit for cached responses can be specified in preferences.
-    * Console panel ShowXHRDisabled for FF3.5 until bugzilla 483672 is fixed.
-    * Search response bodies
-
-== For Extensions ==
-    * All modules support Firebug.Listener
-    * add option extensions.firebug-tracing-service.DBG_toOSConsole for debugging tracing or early FF
-    * TabWatch dispatch separate from modules dispatch
-    * acceptContext/declineContext replaced by shouldCreateContext/shouldNotCreateContext
-    * function() objects default rep is next to last so function types can be trapped by supportsObject()
-    * DBG_ACTIVATION to focus tracing on activation issues
-    * DBG_SHORTCUTS to focus tracing on key binding issues
-    * DBG_LOCALE tracing for missing localization
-
-== Locales ==
-    * No more entites, all properties
-    * de-DE locale update (contribution by Team erweiterungen.de, ReinekeFux, Monoman)
-    * it-IT locale update (contribution by l0stintranslation, gonzalopirobutirro)
-    * New Locale ro-RO, Romanian (contribution by alexxed)
-    * Locale update fr-FR (contribution by martin� and fmarcia)
-    * Locale update hu-HU (contribution by gLes)
-    * Update locale pl-PL (contribution by teo)
-    * ca-AD locale updated (contribution by xavivars, toniher)
-    * sv-SE locale update (contribution by peter3)
-    * da-DK locale update (contribution by AlleyKat)
-    * nl-NL locale update (contribution by markh)
-    * Update tr-TR locale (contribution by gezmen)
-    * New Locale es-AR (contribution by eternoendless)
-    * Update locale ro-RO (contribution by alexxed)
-    * Update zh-CN locale (contribution by lovelywcm)
-    * Update cs-CZ locale (contribution by lordfrikk and mik)
-
-== Bug Fixes ==
-    * Issue 64:  Displaying TextNodes with their content directly causes debugging headache; contribution by Hernan Colmeiro
-    * Issue 176: net flash tab not recognising flv files
-    * Issue 241: Does not reload javascript content when dynamically removed and added from page.
-    * Issue 260: Firebug disables Mac Standard Cmd-Tilde switching
-    * Issue 369: Inspect JSON data in HTTP responses (contribution by Ashish Datta)
-    * Issue 199: CSS priority with '!important'
-    * Issue 699: Inspector - Highlight Image Map Areas
-    * Issue 700: HTML preview for net responses
-    * Issue 749: Hungarian Locale
-    * Issue 716: Add "Inspect element" context menu element in Fx3 for button and select elements
-    * Issue 834: Not displayed POST variables in NET tab
-    * Issue 895: Firebug toolbar button should behave the same way as clicking on status bar icon.
-    * Issue 902: Allow adding new CSS rule
-    * Issue 1021: Editing of DOM properties fail
-    * Issue 1044: In a page with a HTML doc in an iframe, the CSS of the pagein the iframe cannot be displayed
-    * Issue 1113: Unresponsive when using large Data URI image replacement, contribution by  2005jimmont
-    * Issue 1122: can't copy or open image background from css viewer
-    * Issue 1143: Inspected element variables ( $1, $2 ) command-line regression (contribution by urkle0)
-    * Issue 1176: Firebug should preserve Suspend state across sessions (after restart)
-    * Issue 1184: Search across all Javascript sources, not just one. contribution by kpdecker.
-    * Issue 1210: 1.3b1 post message display is screwed up
-    * Issue 1222: incorrect localization Resume_Firebug=Suspend Firebug
-    * Issue 1226: FB 1.4 tabCache optimalization prevents webpages from being viewied in FF3.1 nighlies
-    * Issue 1263: Script error downloading files
-    * Issue 1229: console tab does not display XHR with xhr.onprogress.
-    * Issue 1231: console object has wrong version number
-    * Issue 1248: Console does not filter errors from other browser tabs.
-    * Issue 1255: Reloading page resets current Javascript file to default HTML file in Firebug's "Script" tab
-    * Issue 1258: Enhancement patch: filefield is editable in add external editor dialog
-    * Issue 1267: console.time('toString') returns `NaN`;
-    * Issue 1274: Firebug affects 304 responses, causing a new full request on reload
-    * Issue 1276: Break on error without message in status bar
-    * Issue 1278: console create unclickable, 4px-high log entries
-    * Issue 1281: Watch tab: New Watch expression fails if Firebug is not stopped on a breakpoint
-    * Issue 1284: Unable to add new editor to external editors
-    * Issue 1285: Enhancement patch: filefield is editable in add external editor dialog; contribution by antonin.hildebrand
-    * Issue 1290: Using backspace when searching in open files menu deletes two characters instead of one, contribution by splintor
-    * Issue 1303: console.log with wrong output -- scope of commandline
-    * Issue 1305: lib.ERROR with 1.3X.0b5 while debugging Google language API
-    * Issue 1306: console create unclickable, 4px-high log entries (revisited)
-    * Issue 1308: Missing URL-Encoding of reserved characters when using 'Copy Location with Parameters' from Net Panel
-    * Issue 1310: Net Panel - Wrong domain display
-    * Issue 1316: window.console is undefined, then console create empty log entries after clicking on the command line
-    * Issue 1317: Scrollbar in "Edit" view rendered half-invisible
-    * Issue 1319: Selecting multiple JavascriptLines to add watch also adds line numbers
-    * Issue 1323: img preview in CSS tab not working.
-    * Issue 1339: Command line becomes unusable after reload
-    * Issue 1347: Firebug 1.3 re-introduce "this.notifyFirebug is not a function" issue
-    * Issue 1352: All xmlhttprequest's appear to come from firebug-http-observer.js when looking at console view
-    * Issue 1367: Save as TXT/HTML or view in another tab ajax response
-    * Issue 1369: URL params parsing: omniture gifs no longer show params properly
-    * Issue 1381: Autocompletion only shows the first match
-    * Issue 1382: Add event dispatch when console is injected so extensions can know when console is available (contribution by collins.mike)
-    * Issue 1383: 1.3: if the last line is a comment throws Syntax Error: missing }
-    * Issue 1387:  switching between Firebug's tabs (as opposed to the window's) reverts contents of larger command line
-    * Issue 1395: Script debug loads only the first 20 lines of some scripts.
-    * Issue 1408: Google Docs (spreadsheets) - truncated view / not editable on inner worksheets (TracingListener implemented as XPCOM)
-    * Issue 1409: Selected source file does not persist on reload
-    * Issue 1468: File Locking on File upload when firebug is installed
-    * Issue 1479: Horizontal scroll bar appears and disappears when scrolling vertically in script tab (contribution by kpdecker)
-    * Issue 1483: Scripts fail to load when page reloaded during paused execution
-    * Issue 1495: No more ajax response for a while
-    * Issue 1496: Hash Character Links ( the # or fragement identifier for a URL) Creates Seperate Script View
-    * issue 1508: Problems with some downloads.
-    * Issue 1547: &editors.Description;
-    * Issue 1575: New watch expression can't be created when breakpoint is active
-    * Issue 1586: XHR complete fails to trigger onComplete callback (workaround removed)
-    * Issue 1592: Added display: autocompletions to CSS editor
-    * Issue 1591: Firebug cannot find _firebugConsole element
-    * Issue 1640: Fixed install.rdf typo
-    * Issue 1649: disabling script panel doesn't disable script view in 1.4
-    * Issue 1650: 1.4a18 not picking up other JS files
-    * Issue 1651: 1.4a18 panel not updating when changing tabs in firefox
-    * Issue 1655: CSS view is not correct
-    * Issue 1663: CSS Property Name Editor Does not always work (contribution by kpdecker)
-    * Issue 1679: Break On Next Statement ("pause" button): poor selection style (partial)
-    * Issue 1680: Firebug suspends on page reload.
-    * Issue 1688: Collection of issues relating to element Inspector
-    * Issue 1691: CSS style editor autocomplete problems
-    * Issue 1693: Viewing requests with large message bodies in Console tab temporarily freezes browser
-    * Issue 1694 in fbug: Net Panel Cutsomization: file.responseText doesn't include original line breaks
-    * Issue 1695: Clicking on sessionStorage (empty array) in DOM panel causes error
-    * Issue 1700: 'Inspect in DOM panel' for variables during script suspension broken
-    * Issue 1701: Stack panel not updated immediately during script suspension
-    * Issue 1706: "POST" disappears
-    * Issue 1707: I can't edit DOM values using Firebug
-    * Issue 1709: OS X - Pressing Cmd+, fails to open preferences window
-    * Issue 1712: Firebug 1.4's channel listener changes observable behaviour
-    * Issue 1715: Always Open in New Window prevents
-    * Issue 1727: Inspector offset when the screen is scrolled
-    * Issue 1733: Custom Net Panel: file.isXHR is not set in console log
-    * Issue 1738: All properties getters and not editable in DOM panels
-    * Issue 1740: Inspect context menu item should not be disabled
-    * Issue 1741: CSS Sheets listed multiple times in DOM included multiple times in CSS panel
-    * Issue 1742: CSS Source Links do not work
-    * Issue 1744: Defect commandLine openInNewWindow
-    * Issue 1747: Script Option Grayed-Out when Enabled by Console enable
-    * Issue 1750: "Inspect Element" causes firebug to hide
-    * Issue 1753: command line for open in new window does not immediately respond to Small <-> Large button
-    * Issue 1755: Script tab does not keep line highlighted after clicking on console trace
-    * Issue 1756: Firebug status bar error counter doesn't update on tab closure.
-    * Issue 1760: Popup window obscured in Net tab
-    * Issue 1762: Firebug body is replacing document.body
-    * Issue 1764: Net panel misses page load.
-    * Issue 1766: html, body { width: 100%, height: 100% } -> Inspect-Tool does not work properly
-    * Issue 1771: Firebug.resetAllOptions: Should this clear debug/developer options?
-    * Issue 1775: Command Line command could toggle like inspect does
-    * Issue 1789: Firebug console opens on some sites after console.log called (1.4.0a28)
-    * Issue 1793: Frames (still) cause problems -- detailed example
-    * Issue 1795: Fails to format string in locale bundle: en-US
-    * Issue 1800: Inspect shows no highlight borders when HTML and BODY are set to overflow:hidden
-    * Issue 1801: refreshing in detached window refreshes wrong tab
-    * Issue 1812: console.log(arguments)
-    * Issue 1814: Frames still cause problems in a30, though fewer. (ref Issue 1793)
\ No newline at end of file
diff --git a/docs/ReleaseNotes_1.5.txt b/docs/ReleaseNotes_1.5.txt
deleted file mode 100644
index d9d3183..0000000
--- a/docs/ReleaseNotes_1.5.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-Release Notes for Firebug 1.5
-Firebug 1.5 is Firebug 1.4 with additions by John J. Barton, Jan Odvarko Hans Hillen, Kevin Decker, Mike Radcliffe, Hernan Rodr�guez Colmeiro, Curtis Bartley, Mike Collins, Rob Campbell.
-Firebug 1.4 is Firebug 1.3 with additions by John J. Barton, Jan Odvarko, Hans Hillen, Kevin Decker, Mike Radcliffe, Hernan Rodr�guez Colmeiro, Curtis Bartley, Mike Collins, Rob Campbell and Templarian
-Firebug 1.3 is Firebug 1.2 with additions by John J. Barton, Jan Odvarko.
-Firebug 1.2 is Firebug 1.1 with additions by John J. Barton and Jan Odvarko.
-Firebug 1.1 is Firebug 1.05 by Joe Hewitt with additions by John J. Barton and Max Stepanov
-
-Firebug 1.5 supports Firefox 3.0 (min 3.0.11) and Firefox 3.5
-
-== New Features ==
- * Implement ActivateSameDomain option, default true, to cause an activate foo.bar.com to activate *.foo.com.
-
-== Net Panel ==
-  Break on XHR
-
-
-== Bug Fixes ==
- * issue 64: Displaying TextNodes with their content directly causes debugging headache
- * Issue 520: Firebug doesn't reload modified iFrame scripts until parent frame is reloaded;
- * Issue 568: Computed style and CSS rules should be separate tabs instead of an option
- * Issue 872: JS Errors in IFrame with 1.2.0b3.
- * Issue 882: console.log() reports wrong source file and line number
- * Issue 1282:  Editing boolean var in watch panel changes it to a string
- * Issue 1371: conditional breakpoint undefined?
- * Issue 1697: Console stops auto-scrolling
- * Issue 1864:  Allow scripts to log exceptions as if uncaught
- * Issue 1866: "Remove all breakpoints" only removes every other breakpoint\
- * Issue 1865: ignoring java reserved keywords even when nested in javascript objects
- * Issue 1867: File locked after upload: after uploading a file to a website (via a form) the file handle is not closed
- * Issue 1877: removed unecessary variable init, contribution by lchesn
- * Issue 1870: firefox 3.6 nightly - net panel problem
- * Issue 1879: nsIStreamListener.onDataAvailable throws exception
- * Issue 1880: Firebug will not open in new window when using Inspect Element in Context menu; NEED to test before 1.4 release
- * Issue 1883: domplate insertRows fails with root tags other than FOR
- * Issue 1890: Large command line broken when Firebug is in a separate window
- * Issue 1891: Some exceptions aren't caught even with "break on all errors"
- * Issue 1894: CSS-edit removes declaration if page with specific javascript
- * Issue 1928: Update Firebug Windows Script panel icons
- * Issue 1931: Inspect causes duplicate HTTP request
- * Issue 1947: update install.rdf(.tpl)+ with current contributors)
- * Issue 1968: "On for all pages", but minimized - Firebug doen't stay minimized
- * Issue 1970: Errors inside an XmlHttpRequest.onReadyStateChange fail silently
- * Issue 1993: FBTrace is not defined in chrome://firebug/content/spy.js, line 71
- * Issue 1988: Newlines dissappear after moving away from console
- * Issue 1998: Console logging doesn't work
- * Issue 2026: debugger icons look funky on Mac OS / Inner toolbar is the wrong color
- * Issue 2008: "Command Line" command hides everything if you start in Console
- * Issue 2010: Tracing Console -> Rightclick on message -> Remove ~ fails to remove details of open messages
- * Issue 2014: List of scripts missing from script panel;
- * Issue 2022: new off icon
- * Issue 2038: strange behavior with Always Open In New Window
- * Issue 2039: Removing a condition removes the breakpoint; contribution by http://code.google.com/u/@VBlTRV1WARJNXAd%2F/
- * Issue 2042: "Reload to activate window console" doesn't go away
- * Issue 2049: Firebug opens on mouse down (it does not wait for mouse up)
- * Issue 2054: update close icons
- * Issue 2140: Add newly supported CSS features to CSS panes auto-completion
- * Issue 2218: cleanup strict javascript warnings in Firebug code
-
- -------------
- Firebug 1.5a18
-
-getfirebug.com has Firebug 1.5a18 with the following fixes planned for 1.4.1:
-
-    * Issue 2077: Reload after break on error results in blank page
-    * Issue 1948: AJAX callback not fired in Firefox 3.5 + Firebug 1.4b3
-    * Issue 1860: console.log prints undefined where alert prints a value when �%� appears in log string.
-    * Locale updates: Hungarian hu-HU, Polish pl-PL. Romanian ro-RO, Russian ru-RU
-
-In addition there are previews of two features that will ultimately be moved into Honza�s Activation extension:
-
-    * Implement onByDefault option (Firebug > Firebug Icon Menu > Options > On By Default). Firebug will be active on every page, unless you hit �Off�. Once you hit Off on a page, Firebug won�t open for that page until you explicitly turn it on.
-    * Implement log activation URIs. (Firebug Status bar icon > Right click > Log Activation URIs). Prints into the Console panel of the seletected web page in the tab browser.
-
----------------
-getfirebug.com has Firebug 1.5a19 with the following fixes:
-
-    * Issue 2110: Firebug 1.4 disables JavaScript on yahoo.com (also for 1.4.1)
-    * Issue 2007: console.error only accepts 1 argument (part for 1.4.1)
-    * Issue 1187: Persistent Panels for Firebug (1.5 only)
-    * Issue 1723: Firebug hides when 'Tools:Clear Private Data' (clearing cache) is chosen (also for 1.4.1)
-    * Issue 2093: Copy in net pane adds extra new-lines
-    * Issue 2096: dynamic iframes refresh the console
-
-Note that this version previews persistent Console, an often-requested feature. When the Persist button is pressed, ConsolePersist, the the console will copy info from old to new Console when you reload a page.
-
-Two small activation related features are removed, On By Default and Log Activation URLs. These will reappear in Honza's FireStarter extension.
-
-------------
-getfirebug.com has released Firebug 1.5X.0a20.
-
-This release contains the following fixes that will also be in 1.4.1.
-
-    * Issue 2092: Copy does not appear on context menu in Net pane
-    * Update locale sv-SE
-    * Issue 2127: wrong delete icon for watch panel entries
-    * Issue 2124: Search options popup not keyboard accessible
-    * Issue 2070: Stack trace in 1.4 not resolving function names
-    * Issue 2086: Source links incorrectly positioned in error stack trace
-
-Some fixes are 1.5 only:
-
-    * Issue 2118: Persist and scroll to bottom
-    * Issue 2117: "Persist" setting persists...
-
-
diff --git a/docs/index.tpl.html b/docs/index.tpl.html
deleted file mode 100644
index e7e2910..0000000
--- a/docs/index.tpl.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-<title>Firebug Releases</title>
-<base href="http://getfirebug.com/" />
-<style type="text/css" media="screen">@import "/firebug.css";</style>
-</head>
-
-<body>
-<div id="main">
-<img class="corner cornerTopLeft" src="/blank.gif"/>
-<img class="corner cornerTopRight" src="/blank.gif"/>
-
-<div id="topNav">
-    <div><a href="/blog">blog</a></div>
-    <div><a href="http://groups.google.com/group/firebug">discuss</a></div>
-    <div><a href="/contribute.html">contribute</a></div>
-    <div><a href="/docs.html">documentation</a></div>
-</div>
-
-<a href="/"><img class="header" src="/header.png"/></a>
-
-<div id="content">
-    <div class="columns">
-        <div class="fullColumn">
-            <br/>
-            <h1>Firebug Releases</h1>
-
-            <p>The latest stable release is available on the <a href="/#install">front page</a>.</p>
-
-            <h2>Firebug 1.2 Betas</h2>
-            <p>
-            <a href="http://getfirebug.com/releases/firebug/1.2/firebug-1.2@FIREBUG-VERSION@.xpi">Firebug 1.2</a>
-             focuses on performance improvements and support for Firefox 3. The 1.2 features are complete and we are actively fixing bugs. Please read the
-             <a href="http://code.google.com/p/fbug/source/browse/branches/firebug1.2/docs/ReleaseNotes_1.2.txt">1.2 release notes</a>
-             before installing. Recommended for Firefox 3.
-             </p>
-
-             <p>
-             <a href="http://getfirebug.com/releases/firebug/1.2X/firebug-1.2X@FIREBUG-VERSION@.xpi">Firebug 1.2X</a> is the same code
-             as Firebug 1.2 but with internal debug tracing available for Firebug extension developers.
-             </p>
-
-            <h2>Firebug 1.1 Betas</h2>
-            <p> <a href="http://getfirebug.com/releases/firebug/1.1/firebug-1.1.0b12.xpi">Firebug 1.1.0</a> has had many beta tests and is the version recommended for Firefox 2</p>
-
-
-            <h2>Firebug 1.0.5</h2>
-            <p>Firebug 1.0.5 (aka 1.05) was released in May 2007. This version has been widely used.
-            Before reporting bugs, please try <a href="http://getfirebug.com/releases/firebug/1.2/firebug-1.2@FIREBUG-VERSION@.xpi">Firebug 1.2</a> </p>
-
-
-            <h2>ChromeBug Alphas</h2>
-            <p><a href="http://getfirebug.com/releases/chromebug/chromebug-0.3.0a4.xpi">ChromeBug</a> is Firebug for Firefox extensions.
-            <ul>
-                <li>Requires <a href="http://getfirebug.com/releases/firebug/1.2/firebug-1.2X@FIREBUG-VERSION@.xpi">Firebug 1.2.</a></li>
-                <li>Works on Firefox 3.0 and later </li>
-                <li> To run chromebug: <code>firefox.exe -chrome chrome://chromebug/content/chromebug.xul -firefox</code></li>
-                <li>Currently unstable, testing install and bugs in FF3, and comments welcome.</li>
-            </ul>
-
-            <!--  DO NOT EDIT see docs/index.tmp.html -->
-
-            <h2>Firebug Source</h2>
-            <p>Firebug <a href="http://code.google.com/p/fbug/source/checkout">open source</a> has a BSD-style license.
-            See the <a href="http://code.google.com/p/fbug/source/browse/branches/readme.txt">readme.txt</a> for build instructions.</p>
-
-        </div>
-    </div>
-
-        <div class="footer">
-        <p>Firebug is a free Firefox extension. <a href="/#install">Ready to install?</a></p>
-        <p id="legal">Firebug is a registered trademark of <a href="http://www.parakey.com">Parakey, Inc.</a></p>
-
-    </div>
-</div>
-
-</div>
-
-</body>
-</html>
diff --git a/install.rdf b/install.rdf
index cf0b341..af47758 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
 
   <Description about="urn:mozilla:install-manifest">
     <em:id>firebug at software.joehewitt.com</em:id>
-    <em:version>1.8.1</em:version>
+    <em:version>1.8.3</em:version>
     <em:type>2</em:type>
 
     <!-- Any suitably modern toolkit application -->
@@ -13,7 +13,7 @@
       <Description>
         <em:id>toolkit at mozilla.org</em:id>
         <em:minVersion>5.0</em:minVersion>
-        <em:maxVersion>6.*</em:maxVersion>
+        <em:maxVersion>8.*</em:maxVersion>
       </Description>
     </em:targetApplication>
 
@@ -22,7 +22,7 @@
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>5.0</em:minVersion>
-        <em:maxVersion>6.*</em:maxVersion>
+        <em:maxVersion>8.*</em:maxVersion>
       </Description>
     </em:targetApplication>
 
diff --git a/locale/bg/firebug-amo.properties b/locale/bg/firebug-amo.properties
index b1d896b..64c0077 100644
--- a/locale/bg/firebug-amo.properties
+++ b/locale/bg/firebug-amo.properties
@@ -1,11 +1,7 @@
 # LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-
 # These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-
 # They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-
 # Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-
 firebug.amo.summary1.6=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nFirebug 1.6 изисква Firefox 3.6 или по-висока версия.
 firebug.amo.description=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nПосетете уеб сайта за документация, снимки на екрана и дискусионни форуми: http://getfirebug.com
 firebug.amo.developer.comments=Ако имате проблеми, прочетете отговорите на често задаваните въпроси за FireBug.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/bg/firebug-tracing.properties b/locale/bg/firebug-tracing.properties
index bc49a71..b2b0e70 100644
--- a/locale/bg/firebug-tracing.properties
+++ b/locale/bg/firebug-tracing.properties
@@ -1,11 +1,8 @@
 # LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-
 # Firebug tracing console menu items (located in Firebug's menu).
-
 Open_Firebug_Tracing=Отваряне на трасирането на Firebug
 Always_Open_Firebug_Tracing=Винаги да се отваря трасирането на Firebug
 # LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-
 title.Tracing=Трасиране
 tracing.Show_Scope_Variables=Променливи от обхвата
 tracing.Show_Time=Времена
@@ -42,3 +39,55 @@ tracing.cmd.Force_Garbage_Collector=Изчистване на паметта (GC
 tracing.cmd.tip.Force_Garbage_Collector=Изчистване на паметта (GC)
 tracing.cmd.Open_Profile_Directory=Отваряне на папката на профила
 tracing.cmd.tip.Open_Profile_Directory=Отваряне на папката на профила
+tracing.option.A11Y_Description=Проблеми с достъпността
+tracing.option.ACTIVATION_Description=Активация на Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Наблюдател на Firebug активността
+tracing.option.ANNOTATIONS_Description=Firebug сайт анотация.
+tracing.option.BP_Description=Почивни точки.
+tracing.option.CACHE_Description=Кеш на сорса.
+tracing.option.COMMANDLINE_Description=Команден център & изскачащ прозорец на командния център
+tracing.option.COMPILATION_UNITS_Description=Секция за компилация на скриптове.
+tracing.option.CONSOLE_Description=Конзолен панел
+tracing.option.CSS_Description=CSS разбор
+tracing.option.DISPATCH_Description=Известяване на събития
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Създаване на Domplate
+tracing.option.EDITOR_Description=Редови редактор & Autocompleter
+tracing.option.ERRORLOG_Description=Лог за грешки на JS, CSS, XML и др.
+tracing.option.ERRORS_Description=Вътрешни Firebug грешки
+tracing.option.EVAL_Description=Script оценка
+tracing.option.FBS_BP_Description=Почивни точки на Firebug услугата
+tracing.option.FBS_CREATION_Description=Firebug услуга за създаване на скриптове
+tracing.option.FBS_ERRORS_Description=Грешки на Firebug услугата
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug услугата намира debbuger-и.
+tracing.option.FBS_FUNCTION_Description=Функцията на Firebug услугата.
+tracing.option.FBS_JSDCONTEXT_Description=JavaScript дебъгер на Firebug услугата.
+tracing.option.FBS_SRCUNITS_Description=Сорс единици на Firebug услугата
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Проследени файлове на Firebug услугата
+tracing.option.FUNCTION_NAMES_Description=Имена на JavaScript функции
+tracing.option.HISTORY_Description=Firebug навигационна история
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request наблюдател
+tracing.option.INFOTIP_Description=Инфо съвет
+tracing.option.INITIALIZE_Description=Инициализация на Firebug
+tracing.option.INSPECT_Description=Инспектор
+tracing.option.JSONVIEWER_Description=JSON диаскоп
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Локализация
+tracing.option.LOCATIONS_Description=Местоположения на сорс
+tracing.option.NET_Description=NET панел
+tracing.option.NET_EVENTS_Description=Мрежови събития
+tracing.option.OPTIONS_Description=Firebug предпочитания
+tracing.option.PANELS_Description=Панели
+tracing.option.SHORTCUTS_Description=Клавиатурни преки пътища
+tracing.option.SOURCEFILES_Description=JavaScript сорс файлове
+tracing.option.SPY_Description=XMLHttpRequests наблюдател
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Склад за настройки
+tracing.option.SVGVIEWER_Description=SVG диаскоп
+tracing.option.TOOLTIP_Description=Бутон за стартиране на ToolTip
+tracing.option.TOPLEVEL_Description=Най - високо ниво JavaScript
+tracing.option.UI_LOOP_Description=Юзер Интерфейс на JS дебъгването
+tracing.option.WINDOWS_Description=Firebug наблюдател на прозорци и табове
+tracing.option.XMLVIEWER_Description=XML диаскоп
diff --git a/locale/bg/firebug.properties b/locale/bg/firebug.properties
index 5041b2a..6401d2d 100644
--- a/locale/bg/firebug.properties
+++ b/locale/bg/firebug.properties
@@ -1,13 +1,9 @@
 Firebug=Firebug
 # LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-
 # %S Title of the associated web page.
-
 # examples: Firebug - Google
-
 WindowTitle=Firebug — %S
 # Panel titles
-
 Panel-console=Конзола
 Panel-net=Мрежа
 Panel-html=HTML
@@ -25,26 +21,16 @@ Panel-scopes=Обхвати
 firebug.DetachFirebug=Отваряне на Firebug в нов прозорец
 firebug.AttachFirebug=Прикачане на Firebug към прозорец на браузъра
 # LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.
-
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-
 # Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.
-
 # Displays number of pages with Firebug activated.
-
 pluralRule=1
 # %S number of Firebugs activated
-
 # example: 2 Total Firebugs
-
 # LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-
 # menu (available on Firebug's tab bar).
-
 # Console panel options.
-
 # LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,
-
 plural.Total_Firebugs2=Общо %1$S прозорец на Firebug;Общо %1$S прозореца на Firebug
 inBrowser=В браузъра
 detached=Отделѐн
@@ -62,12 +48,9 @@ On_for_all_web_pages=За всички уеб страници
 firebug.menu.Clear_Activation_List=Изчистване на списъка за задействане
 firebug_options=Настройки на Firebug
 # message, etc. within a source of a web page.
-
 # #1 File name, #2 Line number
-
 firebug.Show_All_Panels=Всички панели
 # examples: somePage.htm (line 64)
-
 ShowJavaScriptErrors=Грешки в JavaScript
 ShowJavaScriptWarnings=Предупреждения в JavaScript
 ShowCSSErrors=Грешки в CSS
@@ -86,38 +69,25 @@ Command_Editor=Редактор на командите
 commandLineShowCompleterPopup=Предложения за автоматично дописване
 Assertion=Грешно предположение
 # LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
-
 # For example, right clicking on an element in the HTML panel offers an action to inspect
-
 # clicked element in the DOM panel (tab).
-
 # #1 Target panel title
-
 Line=%S (ред %S)
 InstanceLine=%S #%S (ред %S)
 StackItem=%S (%S ред %S)
 SystemItem=<Системно>
 # examples: Inspect in DOM Tab
-
 # LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-
 # do not translate.
-
 # #1 jsdIScript.tag
-
 # HTML panel context menu items.
-
 InspectInTab=Изследване в подпрозорец за %S
 NoName=(без име)
 # Quick Info Box
-
 # LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-
 # button that are used when the HTML panel is currently selected. The button allows stopping
-
 jsdIScript=jsdIScript %S
 # JS execution when DOM of the current page is modified.
-
 ShowFullText=Пълен текст
 ShowWhitespace=Междини с интервали
 ShowTextNodesWithEntities=Основни последователности за заместване
@@ -136,15 +106,11 @@ DeleteNode=Изтриване на възел
 ShowQuickInfoBox=Поле за бърза информация
 ShadeBoxModel=Открояване на модела на кутиите
 # LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allows
-
 quickInfo=Бърза информация
 computedStyle=Изчислен стил
 # editing an existing HTML element attribute.
-
 # #1 Name of the clicked attribute.
-
 # examples: Edit Attribute "onclick"...
-
 html.Break_On_Mutate=Прекъсване при промяна
 html.Disable_Break_On_Mutate=Изключване на прекъсването при промяна
 html.label.Break_On_Text_Change=Прекъсване при промяна на текста
@@ -153,85 +119,59 @@ html.label.Break_On_Attribute_Change=Прекъсване при промяна
 html.label.Break_On_Child_Addition_or_Removal=Прекъсване при добавяне или изтриване на дете
 html.label.Break_On_Element_Removal=Прекъсване при изтриване на елемент
 # LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allows
-
 # deleting an existing HTML element attribute.
-
 # #1 Name of the clicked attribute.
-
 html.label.Expand/Contract_All=Разширяване/свиване на всичко
-dom.label.DOM_Breakpoints=Прекъсвания за DOM
 # examples: Delete Attribute "onclick"...
-
 # LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.
-
 # that has been inherited. Used in the Style side panel (under HTML panel).
-
+dom.label.breakOnPropertyChange=Почивка при сменяне на притежание
 # examples: Inherited from table.tabView
-
-EditAttribute=Редактиране на атрибута „%S“…
 # LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
-
+dom.disableBreakOnPropertyChange=Изключи почивка при сменяне на притежание.
+dom.label.DOM_Breakpoints=Прекъсвания за DOM
 # Allows to edit an existing CSS rule property.
-
 # %S Name of the clicked property
-
 # examples: Edit "background-color"...
-
-DeleteAttribute=Изтриване на атрибута „%S“
 # LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-
+EditAttribute=Редактиране на атрибута „%S“…
 # Allows to disable an existing CSS rule property.
-
 # %S Name of the clicked property
-
-InheritedFrom=Наследено от
-SothinkWarning=Разширението „Sothink SWF Catcher“ пречи на Firebug да работи нормално.<br><br>За помощ прочетете <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">това в ЧЗВ на Firebug</a>.
 # examples: Disable "background-color"
-
 # LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
-
+DeleteAttribute=Изтриване на атрибута „%S“
 # Allows to delete an existing CSS rule property.
-
-css.EmptyStyleSheet=Няма стилови правила. Можете да <a>създадете и добавите</a>.
 # %S Name of the clicked property
-
 # examples: Delete "background-color"
-
+InheritedFrom=Наследено от
+SothinkWarning=Разширението „Sothink SWF Catcher“ пречи на Firebug да работи нормално.<br><br>За помощ прочетете <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">това в ЧЗВ на Firebug</a>.
 # Console context menu labels.
-
-css.EmptyElementCSS=Този елемент няма стилови правила. Можете да му <a>създадете и добавите</a>.
-EditStyle=Редактиране на стила на елемент…
-NewRule=Ново правило…
-NewProp=Ново свойство…
 # LOCALIZATION NOTE do not translate, no longer used(?)
-
 # Breakpoints side panel
-
+css.EmptyStyleSheet=Няма стилови правила. Можете да <a>създадете и добавите</a>.
 # Script panel
-
 # LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-
-EditProp=Редактиране на „%S“…
 # Labels used to describe layout properties a the selected HTML element.
-
+css.EmptyElementCSS=Този елемент няма стилови правила. Можете да му <a>създадете и добавите</a>.
+EditStyle=Редактиране на стила на елемент…
+NewRule=Ново правило…
+NewProp=Ново свойство…
 # Used in the Layout side panel under HMTL panel.
-
 # LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panel
-
 # under HTML panel.
-
-DisableProp=Изключване на „%S“
 # Net panel
-
+EditProp=Редактиране на „%S“…
 # LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)
-
 # LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-
 # net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-
-DeleteProp=Изтриване на „%S“
 # net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):
-
+DisableProp=Изключване на „%S“
+# Labels and tooltips for a headers displayed on top of the Net panel.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context
+# menu for breaking on a XHR.
+DeleteProp=Изтриване на „%S“
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
 BreakOnThisError=Прекъсване при тази грешка
 BreakOnAllErrors=Прекъсване при всички грешки
 DisableBreakOnNext=Изключване на прекъсването при последващо
@@ -239,34 +179,26 @@ ShowAllSourceFiles=Изходен код на chrome
 TrackThrowCatch=Проследяване на throw/catch
 UseLastLineForEvalName=Използване на последния ред в кода за име на eval()
 UseMD5ForEvalName=Използване на MD5 за име на eval()
-# Labels and tooltips for a headers displayed on top of the Net panel.
-
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
 DBG_FBS_CREATION=Внимание! DBG_CREATION
 DBG_FBS_BP=Внимание! DBG_BP
 DBG_FBS_ERRORS=Внимание! DBG_ERRORS
 DBG_FBS_STEP=Внимание! DBG_STEP
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-
+# for a button that switches the view between "show raw source code" and "pretty formated header
 Breakpoints=Прекъсвания
 ErrorBreakpoints=Прекъсвания при грешки
 LoggedFunctions=Следени функции
 EnableAllBreakpoints=Включване на всички прекъсвания
 DisableAllBreakpoints=Изключване на всички прекъсвания
 ClearAllBreakpoints=Изтриване на всички прекъсвания
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context
-
-# menu for breaking on a XHR.
-
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-
-# for a button that switches the view between "show raw source code" and "pretty formated header
-
+# values".
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a net panel entry is expanded). The content of
+# this tab displays sent data (related to a HTTP send method).
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
 script.balloon.Continue=Продължаване
 script.balloon.Disable=Изключване
-# values".
-
+# Label used in the Net panel for detailed info about a network request (displayed
 StepOver=Стъпка през функция
 StepInto=Стъпка във функция
 StepOut=Стъпка извън функция
@@ -288,6 +220,7 @@ NoMembersWarning=Няма свойства, които да бъдат пока
 NewWatch=Нов израз за следене…
 AddWatch=Добавяне на израз
 CopySourceCode=Копиране на изходния код
+Use_hash_plus_number_to_go_to_line=Използвайте #<число> за да отидете на специфичен ред
 CopyValue=Копиране на стойност
 Copy_Name=Копиране на името
 Copy_Path=Копиране на пътя
@@ -302,41 +235,33 @@ SetBreakpoint=Поставяне на прекъсване
 DisableBreakpoint=Изключване на прекъсване
 EditBreakpointCondition=Редактиране на условието за прекъсване…
 NoBreakpointsWarning=В тази страница няма зададени прекъсвания.
+Only_Show_Applied_Styles=Показвай само приложени стилове.
 Show_User_Agent_CSS=CSS от потребителския агент
 Expand_Shorthand_Properties=Разширяване на съкратените свойства
+Sort_alphabetically=Сортирай по азбучен ред
+Show_Mozilla_specific_styles=Показвай специфичните за Мозила стилове.
 script.Type_any_key_to_filter_list=Натиснете клавиш за конкретизиране на списъка
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-
-# a network request (displayed when a net panel entry is expanded). The content of
-
-# this tab displays sent data (related to a HTTP send method).
-
+# when a net panel entry is expanded)
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel
+# (expand an entry in the panel and select Headers tab).
 LayoutPadding=отстъп
 LayoutBorder=контур
 LayoutMargin=граница
 LayoutPosition=разположение
 LayoutAdjacent=съсед
 position=разположение
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-
-# Label used in the Net panel for detailed info about a network request (displayed
-
+# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed since maximum number
 ShowRulers=Линеал
-# when a net panel entry is expanded)
-
+# of entries has been reached.
 Loading=Зареждане…
 Headers=Заглавни части
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel
-
+# %S the number of entries removed
 net.header.Reset_Header=Изчистване на заглавните части
-# (expand an entry in the panel and select Headers tab).
-
-# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.
-
-# A message displayed in the Net panel when some entries must be removed since maximum number
-
-# of entries has been reached.
-
+# example: Firebug's log limit has been reached. 150 entries not shown.
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preferencee should be changed to modify the limit.
+# %S Name of a preference.
 net.header.URL=URL
 net.header.URL_Tooltip=Изискан URL и метод на HTTP
 net.header.Status=Състояние
@@ -347,41 +272,27 @@ net.header.Size=Размер
 net.header.Size_Tooltip=Размер на получения отговор.
 net.header.Timeline=Времена
 net.header.Timeline_Tooltip=Подробен отчет за времената на цикъла заявка-отговор.
-# %S the number of entries removed
-
-net.label.XHR_Breakpoints=Прекъсвания при XHR
-# example: Firebug's log limit has been reached. 150 entries not shown.
-
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-
-net.label.Break_On_XHR=Прекъсване при XHR
-# has been reached. Informing the user what preferencee should be changed to modify the limit.
-
-# %S Name of a preference.
-
 # examples: In order to change the limit modify: firebug.extensions.console.logLimit
-
+net.label.XHR_Breakpoints=Прекъсвания при XHR
 # LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.
-
-net.headers.view_source=изходен код
-net.headers.pretty_print=форматиран вид
 # (result of javascript profiler tool). Represents a verb.
-
-net.filter.Media=Медия
+net.label.Break_On_XHR=Прекъсване при XHR
 # LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.
-
 # Used as a caption for reported profile info (result of javascript profiler tool).
-
 # #1 number of milliseconds
-
-Post=Заявка POST
-Put=Заявка PUT
 # #2 number of calls (plural)
-
+net.headers.view_source=изходен код
+net.headers.pretty_print=форматиран вид
 # example: (#1ms, #2 calls)
-
+net.filter.Media=Медия
 # LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-
+# (name of a report column). In order to see this, select the Console panel start profiling
+# by clicking the Profile button and stop it by clicking again. The report is logged into the
+Post=Заявка POST
+Put=Заявка PUT
+# console panel. Make sure Script panel is enabled.
+# Support for clipboard actions.
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
 Response=Отговор
 URLParameters=Параметри
 Cache=Кеш
@@ -389,58 +300,38 @@ HTML=HTML
 jsonviewer.tab.JSON=JSON
 xmlviewer.tab.XML=XML
 svgviewer.tab.SVG=SVG
-# (name of a report column). In order to see this, select the Console panel start profiling
-
-# by clicking the Profile button and stop it by clicking again. The report is logged into the
-
-jsonviewer.sort=Подреждане по ключ
-jsonviewer.do_not_sort=Без подреждане
-# console panel. Make sure Script panel is enabled.
-
-# Support for clipboard actions.
-
-RequestHeaders=Заглавни части на заявката
-ResponseHeaders=Заглавни части на отговора
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
-
 # panel when clicking a function object.
-
 # %S Name of the function
-
+jsonviewer.sort=Подреждане по ключ
+jsonviewer.do_not_sort=Без подреждане
 # Log Calls to "getData"
-
 # LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panel
-
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Настройки
+RequestHeaders=Заглавни части на заявката
+ResponseHeaders=Заглавни части на отговора
 # if specific method is not supported.
-
 # %S Name of a not supported method.
-
 # LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panel
-
 # when a not supported method is used on the command line.
-
-LimitPrefsTitle=За да промените ограничението, променете: %S
-Refresh=Обновяване
-OpenInTab=Отваряне в нов подпрозорец
-Open_Response_In_New_Tab=Отваряне на отговора в нов подпрозорец
 # %S Name of a not supported method.
-
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Настройки
 # LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-
-Profile=Отчет
-ProfilerStarted=Програмата за отчитане работи. Натиснете „Отчет“ отново, за да видите този доклад.
 # Tooltip for the "Break on... " button used when the Console panel is selected.
-
 # Console strings used when JavaScript is not available
-
 # LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-
+LimitPrefsTitle=За да промените ограничението, променете: %S
+Refresh=Обновяване
+OpenInTab=Отваряне в нов подпрозорец
+Open_Response_In_New_Tab=Отваряне на отговора в нов подпрозорец
 # net.sizeinfo.Total_Received):
-
 # Labels used for detailed size info tooltip. The tooltip is displayed if you hover mouse
-
+Profile=Отчет
+ProfilerStarted=Програмата за отчитане работи. Натиснете „Отчет“ отново, за да видите този доклад.
+# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# even sent and received heades size.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
 plural.Profile_Time2=(%1$Sms, %2$S извикване);(%1$Sms, %2$S извиквания)
 NothingToProfile=Няма дейност, която да се отчита.
 PercentTooltip=Процент време, в което е работила тази функция.
@@ -454,14 +345,10 @@ ProfileButton.Enabled.Tooltip=Отчитане на времето за изпъ
 ProfileButton.Disabled.Tooltip=Отчитане на времето за изпълнение на JavaScript. (Панелът за скриптове трябва да е включен.)
 Function=Функция
 Percent=Процент
-# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-
-# even sent and received heades size.
-
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
+# Labels for Net panel's options.
+# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.
 Calls=Извиквания
 OwnTime=Собствено време
 Time=Време
@@ -469,11 +356,11 @@ Avg=Срдн
 Min=Мин
 Max=Макс
 File=Файл
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-
+# %S number of requests
 Copy=Копиране
 Cut=Изрязване
 Remove=Изтриване
+Paste=Постави
 CopyHTML=Копиране на HTML
 CopySVG=Копиране на SVG
 CopyMathML=Копиране на MathML
@@ -487,71 +374,46 @@ CopyResponseHeaders=Копиране на заглавните части на 
 CopyResponse=Копиране на тялото на отговора
 CopyError=Копиране на грешката
 CopySource=Копиране на функцията
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
-
-# Labels for Net panel's options.
-
-# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.
-
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.
-
+# example: 21 requests
+# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.
+# %S number of errors
 ShowCallsInConsole=Засичане на извиквания на „%S“
 ShowEventsInConsole=Засичане на събитията
 panel.Enabled=Включено
 panel.Disabled=Изключено
 panel.Enable=Включване
 panel.Disable=Изключване
-# %S number of requests
-
-# example: 21 requests
-
-panel.tooltip.Show_Command_Line=Команден ред
-# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.
-
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.
-
-# %S number of errors
-
-console.MethodNotSupported=Конзолата на Firebug не поддържа „%S“
 # example: 111 Errors
-
 # LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.
-
+panel.tooltip.Show_Command_Line=Команден ред
 # With: the scope inside of the with(obj) {} statement
-
-commandline.MethodNotSupported=Командният ред на Firebug не поддържа „%S“
 # Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-
 # Window: the scope inside of a Javascript window object.
-
-console.Disable_Break_On_All_Errors=Без прекъсване при всички грешки
-console.Break_On_All_Errors=Прекъсване при всички грешки
-console.Break_On_This_Error=Прекъсване при тази грешка
+console.MethodNotSupported=Конзолата на Firebug не поддържа „%S“
 # Net panel timing info labels
-
 #A11y Chrome Labels (not visible, spoken by screen readers)
-
-console.Use_TAB_and_arrow_keys=Използвайте табулатора и стрелките
 #A11y panelNode labels (not visible, spoken by screen readers)
-
-console.JSDisabledInFirefoxPrefs=JavaScript е изключен в настройките на Firefox. Ако искате да използвате панела на конзолата, трябва да включите тази възможност от: „Инструменти“ или „Редактиране“ -> „Настройки“ -> „Съдържание“ -> „Включване на JavaScript“.
+commandline.MethodNotSupported=Командният ред на Firebug не поддържа „%S“
 #A11y Domplate labels  (not visible, spoken by screen readers)
-
 # LOCALIZATION NOTE
-
+console.Disable_Break_On_All_Errors=Без прекъсване при всички грешки
+console.Break_On_All_Errors=Прекъсване при всички грешки
+console.Break_On_This_Error=Прекъсване при тази грешка
 # Used by a11y. Not directly visible in the UI, intended for screen readers.
-
-commandline.disabledForXMLDocs=Командният ред на Firebug не работи на страници от XML. <a>Превключете към HTML</a>, за да го включите.
 # Describe contents of inline editor fields
-
+console.Use_TAB_and_arrow_keys=Използвайте табулатора и стрелките
 # LOCALIZATION NOTE (a11y.labels.overridden):
-
+console.JSDisabledInFirefoxPrefs=JavaScript е изключен в настройките на Firefox. Ако искате да използвате панела на конзолата, трябва да включите тази възможност от: „Инструменти“ или „Редактиране“ -> „Настройки“ -> „Съдържание“ -> „Включване на JavaScript“.
 # Used by a11y. Not directly visible in the UI, intended for screen readers.
-
 # indicates style property is overridden by selector with higher specificity
-
 # LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-
+commandline.disabledForXMLDocs=Командният ред на Firebug не работи на страници от XML. <a>Превключете към HTML</a>, за да го включите.
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# #1 Line number, #2 Function name, #3 File name
 net.sizeinfo.Response_Body=Тяло на отговора
 net.sizeinfo.Post_Body=Тяло на заявката POST
 net.sizeinfo.Total_Sent=Общо изпратени
@@ -559,41 +421,29 @@ net.sizeinfo.Total_Received=Общо получени
 net.sizeinfo.Including_Headers=Заедно със заглавните части
 net.ActivationMessage=Панелът за мрежата е включен. Не са показани заявките докато е бил изключен.
 net.responseSizeLimitMessage=Превишен е максималният размер на отговора за Firebug. Натиснете <a>тук</a>, за да отворите целия отговор в нов подпрозорец на Firefox.
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-
-# Existence and state of a breakpoint
-
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search 
 net.postDataSizeLimitMessage=Превишен е максималният размер на отговора за Firebug.
 net.Break_On_XHR=Прекъсване при XHR
 net.label.Parameters=Параметри
 net.label.Parts=Части
 net.label.Source=Изходен код
-# visible in the UI, intended for screen readers.
-
-# #1 Line number, #2 Function name, #3 File name
-
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
 net.option.Disable_Browser_Cache=Изключване на кеша на браузъра
 net.option.Show_Paint_Events=Събития за изобразяване
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
 # visible in the UI, intended for screen readers.
-
-# Describes the match found when performing a console panel search 
-
+# Describes the match found when performing a script panel search 
 net.option.Show_BF_Cache_Responses=Отговори от кеша от историята
 net.option.tip.Show_BF_Cache_Responses=Панелът за мрежата може да показва и отговорите от кеша от историята
 script.Break_On_Next=Прекъсване при следващо
 ShowHttpHeaders=Заглавни части на HTTP
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched text
-
-# examples: Match found for "test" in 17 log rows
-
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
 # visible in the UI, intended for screen readers.
-
 plural.Request_Count2=%1$S заявка;%1$S заявки
 FromCache=от кеша
 StopLoading=Спиране на зареждането
@@ -611,14 +461,10 @@ OpenImageInNewTab=Отваряне на изображението в нов п
 OmitObjectPathStack=Пропускане на стека на лентата с инструменти
 Copy_Rule_Declaration=Копиране на декларацията на правилото
 Copy_Style_Declaration=Копиране на декларацията на стила
-# Describes the match found when performing a script panel search 
-
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in
-
-# examples: Match found for "window.alert" on line 322 in utilities.js
-
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-
+# Describes the match found when performing an HTML panel search (if it is found in an element node) 
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying  the matched element
+# examples: Match found for "obj" in object element at /html/body/object[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
 plural.Error_Count2=%1$S грешка;%1$S грешки
 moduleManager.title=Панелът за „%S“ е изключен
 moduleManager.desc3=Включвайте/изключвайте всички панели на Firebug чрез иконата в лентата за състояние. За контрол на отделните панели използвайте малките менюта към подпрозорците им.
@@ -630,22 +476,17 @@ Open_Console=Отваряне на конзолата
 Open_Console_Tooltip=Отваряне на конзолата на Firebug за трасиране.
 Scope_Chain=Верига на обхватите
 # visible in the UI, intended for screen readers.
-
-# Describes the match found when performing an HTML panel search (if it is found in an element node) 
-
+# Describes the match found when performing an HTML  panel search (if it is found in an attribute node) 
 With_Scope=Обхват на with
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying  the matched element
-
+# #1 Search string that was matched. #2 Attribute name #3 attribute value 
 Call_Scope=Обхват на call
-# examples: Match found for "obj" in object element at /html/body/object[2]
-
+# #4 the HTML element name containing. #5 XPATH string specifying  the matched element
 Window_Scope=Обхват на window
 Logs=Журнали
 Options=Настройки
 Copy_Stack=Копиране на стека
 Copy Exception=Копиране на изключението
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-
+# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
 requestinfo.Blocking=Блокиране
 requestinfo.Resolving=Търсене по DNS
 requestinfo.Connecting=Свързване
@@ -713,8 +554,7 @@ firebug.shortcut.normalTextSize.label=Нормален размер на тек
 firebug.panel_selector=Избор на панел
 customizeShortcuts=Клавишни комбинации на Firebug
 keybindConfirmMsg=Да се запазят ли променените клавишни комбинации? Те влизат в сила след рестартиране на Firefox
-# visible in the UI, intended for screen readers.
-
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
 a11y.labels.panel_tools=инструменти на панела
 a11y.labels.firebug_panels=панели на Firebug
 a11y.labels.firebug_side_panels=странични панели на Firebug
@@ -723,8 +563,7 @@ a11y.labels.firebug_status=състояние на Firebug
 a11y.labels.reset=изчистване
 a11y.labels.reset_shortcut=изчистване на клавишната комбинация за %S
 aria.labels.inactive_panel=изключен панел
-# Describes the match found when performing an HTML  panel search (if it is found in an attribute node) 
-
+# visible in the UI, intended for screen readers.
 a11y.labels.log_rows=редове на журнала
 a11y.labels.call_stack=стек на извикванията
 a11y.labels.document_structure=структура на документа
@@ -732,8 +571,7 @@ a11y.labels.title_panel=панел %S
 a11y.labels.title_side_panel=страничен панел %S
 a11y.labels.cached=кеширани
 aria.labels.stack_trace=стек за трасиране
-# #1 Search string that was matched. #2 Attribute name #3 attribute value 
-
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) 
 a11y.layout.padding=отстъп
 a11y.layout.border=контур
 a11y.layout.margin=граница
@@ -768,12 +606,9 @@ a11y.labels.style_rules=стилови правила
 aria.labels.inherited_style_rules=наследени стилови правила
 a11y.labels.computed_styles=изчислени стилове
 a11y.labels.dom_properties=свойства на DOM
-# #4 the HTML element name containing. #5 XPATH string specifying  the matched element
-
-# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-
+# #1 Search string that was matched. #2 element's text content  
+# #3 the HTML element name containing. #4 XPATH string specifying  the matched element
+# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
 a11y.labels.inline_editor=вътрешен редактор
 a11y.labels.value_for_attribute_in_element=стойност на атрибута %S на елемента %S
 a11y.labels.attribute_for_element=атрибут на елемента %S
@@ -784,245 +619,142 @@ a11y.labels.property_for_selector=свойство на CSS за селекто
 a11y.labels.value_property_in_selector=стойност на свойството %S от селектора %S
 a11y.labels.css_selector=селектор на CSS
 a11y.labels.source_code_for_file=изходен код на файла %S
-# visible in the UI, intended for screen readers.
-
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) 
-
-# #1 Search string that was matched. #2 element's text content  
-
-a11y.labels.overridden=променен при унаследяване
-a11y.labels.press_enter_to_add_new_watch_expression=натиснете enter, за да добавите нов израз за следене
-# #3 the HTML element name containing. #4 XPATH string specifying  the matched element
-
-# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-
 # LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-
-a11y.updates.has_conditional_break_point=има условно прекъсване
-a11y.updates.has_disabled_break_point=има изключено прекъсване
 # visible in the UI, intended for screen readers.
-
 # Describes the match found when performing a CSS panel search (if it is found in a selector) 
-
+a11y.labels.overridden=променен при унаследяване
+a11y.labels.press_enter_to_add_new_watch_expression=натиснете enter, за да добавите нов израз за следене
 # #1 Search string that was matched. #2 selector in which the match was found  
-
-a11y.updates.script_suspended_on_line_in_file=Скриптът е спрян на ред %S в %S, файл %S
 # examples: Match found for "main" in #mainContent h2 {
-
 # LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-
+a11y.updates.has_conditional_break_point=има условно прекъсване
+a11y.updates.has_disabled_break_point=има изключено прекъсване
 # visible in the UI, intended for screen readers.
-
 # Describes the match found when performing a CSS panel search (if it is found in a style declaration) 
-
 # #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to  
-
-a11y.updates.match_found_in_logrows=открито е съвпадение за „%S“ в %S реда на журналите
+a11y.updates.script_suspended_on_line_in_file=Скриптът е спрян на ред %S в %S, файл %S
 # examples: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-
 # LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-
 # visible in the UI, intended for screen readers.
-
 # Describes the match found when performing a DOM panel search  
-
 # #1 Search string that was matched. #2 DOM property in which the match was found   
-
-a11y.updates.match_found_for_on_line=открито е съвпадение за „%S“ на ред %S в %S
+a11y.updates.match_found_in_logrows=открито е съвпадение за „%S“ в %S реда на журналите
 # examples: Match found for "time" in _starttime : 1257324992232 (Number)
-
 # LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-
 # visible in the UI, intended for screen readers.
-
 # Describes the match found when performing a Net panel search  
-
 # #1 Search string that was matched. #2 File name associated to the row in which the match was found. 
-
-a11y.updates.match_found_in_element=открито е съвпадение за „%S“ в елемента %S, с път %S
+a11y.updates.match_found_for_on_line=открито е съвпадение за „%S“ на ред %S в %S
 # #3 Column in which the match was found #4. Column value   
-
 # examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-
 # LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-
 # visible in the UI, intended for screen readers.
-
 # Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-
+a11y.updates.match_found_in_element=открито е съвпадение за „%S“ в елемента %S, с път %S
 # #1 Search string that was matched. #2 Column value in which the match was found 
-
-a11y.updates.match_found_in_attribute=открито е съвпадение за „%S“ в атрибута %S=%S на елемента %S, с път %S
 # examples: Match found for "05" in net summary row: 4.05s
-
 # LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-
 # visible in the UI, intended for screen readers.
-
 # Indicates that the searched string was not matched  
-
 # %S Search string that was matched.   
-
+a11y.updates.match_found_in_attribute=открито е съвпадение за „%S“ в атрибута %S=%S на елемента %S, с път %S
 # examples: No matched found for "wefkhwefkgwekhjgjh"
-
-a11y.updates.match_found_in_text_content=открито е съвпадение за „%S“ в текста: %S на елемента %S, с път %S
 # Console messages.
-
 # LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):
-
 # If Firebug is displayed in an external window (detached), but not active for the
-
 # currently selected Firefox tab, the following button label is used for an
-
 # activation button.
-
-a11y.updates.match_found_in_selector=открито е съвпадение за „%S“ в селектора %S
+a11y.updates.match_found_in_text_content=открито е съвпадение за „%S“ в текста: %S на елемента %S, с път %S
 # LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):
-
 # An error message displayed in the Script panel when a source can't be displayed
-
 # If Firebug is displayed in an external window (detached), but not active for the
-
 # currently selected Firefox tab, the following button label is used for an
-
 # activation button.
-
-a11y.updates.match_found_in_style_declaration=открито е съвпадение за „%S“ в декларацията на стила %S, в селектора %S
+a11y.updates.match_found_in_selector=открито е съвпадение за „%S“ в селектора %S
 # LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):
-
 # An error message displayed in the Script panel when a source can't be displayed
-
 # for specific URL.
-
 # examples: Failed to load source for: http://www.example.com/script.js
-
 # examples: The resource from this URL is not text: http://www.example.com/script.js
-
-a11y.updates.match_found_in_dom_property=открито е съвпадение за „%S“ за свойството в DOM %S
+a11y.updates.match_found_in_style_declaration=открито е съвпадение за „%S“ в декларацията на стила %S, в селектора %S
 # LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-
 # firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.
-
 # LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-
 # Tooltips for back/forward buttons on the Script panel toolbar.
-
 # Indicates that the searched string was not matched  
-
+a11y.updates.match_found_in_dom_property=открито е съвпадение за „%S“ за свойството в DOM %S
 # %S Search string that was matched.   
-
-a11y.updates.match_found_in_net_row=открито е съвпадение за „%S“ в %S, %S : %S;
 # examples: No matched found for "wefkhwefkgwekhjgjh"
-
 # Console messages.
-
 # LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showing
-
 # a link to known issues (with Firefox 4.0) page.
-
 # examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissues
-
-a11y.updates.match_found_in_net_summary_row=открито е съвпадение за „%S“ в обобщения ред: %S
+a11y.updates.match_found_in_net_row=открито е съвпадение за „%S“ в %S, %S : %S;
 # LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):
-
 # If Firebug is displayed in an external window (detached), but not active for the
-
 # currently selected Firefox tab, the following button label is used for an
-
 # activation button.
-
 # LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):
-
-a11y.updates.no_matches_found=няма съвпадения за „%S“
-confirmation.Reset_All_Firebug_Options=Наистина ли всички настройки на Firebug да се върнат към стандартните стойности?
+a11y.updates.match_found_in_net_summary_row=открито е съвпадение за „%S“ в обобщения ред: %S
 # An error message displayed in the Script panel when a source can't be displayed
-
-warning.Console_must_be_enabled=Конзолата трябва да бъде включена
-warning.Command_line_blocked?=Блокиран ли е командният ред?
-message.Reload_to_activate_window_console=Презаредете, за да включите конзолата на прозореца
 # for specific URL.
-
 # examples: Failed to load source for: http://www.example.com/script.js
-
 # examples: The resource from this URL is not text: http://www.example.com/script.js
-
-message.knownIssues40=Проблеми с Firefox, засягащи Firebug:
 # LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-
+a11y.updates.no_matches_found=няма съвпадения за „%S“
+confirmation.Reset_All_Firebug_Options=Наистина ли всички настройки на Firebug да се върнат към стандартните стойности?
 # firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.
-
+warning.Console_must_be_enabled=Конзолата трябва да бъде включена
+warning.Command_line_blocked?=Блокиран ли е командният ред?
+message.Reload_to_activate_window_console=Презаредете, за да включите конзолата на прозореца
 # LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-
 # Tooltips for back/forward buttons on the Script panel toolbar.
-
-label.Activate_Firebug_for_the_selected_Firefox_tab=Включване на Firebug за избрания подпрозорец
 # LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-
 # This message is displayed within the Script panel if debugger is inactive during page load.
-
+label.Activate_Firebug_for_the_selected_Firefox_tab=Включване на Firebug за избрания подпрозорец
 # The suggestion message represents an advice how to solve the problem.
-
 # LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-
 # This message is displayed within the Script panel if javascript is not enabled.
-
-message.Failed_to_load_source_for=Не е зареден адресът
-message.The_resource_from_this_URL_is_not_text=Ресурсът на този адрес не е текст
 # The suggestion message represents an advice how to solve the problem.
-
 # LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed on
-
+message.Failed_to_load_source_for=Не е зареден адресът
+message.The_resource_from_this_URL_is_not_text=Ресурсът на този адрес не е текст
+# the Script panel if Javascript is disabled. This button allows to enable it.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
 firebug.history.Go_back_to_this_panel=Назад до този панел
 firebug.history.Stay_on_this_panel=Оставане на този панел
 firebug.history.Go_forward_to_this_panel=Напред до този панел
-# the Script panel if Javascript is disabled. This button allows to enable it.
-
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-
+# This message is displayed within the Script panel if javascript is not enabled for the current page.
+# The suggestion message represents an advice how to solve the problem.
 firebug.history.Go_back=Назад
 firebug.history.Go_forward=Напред
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
 # This message is displayed within the Script panel if javascript is not enabled for the current page.
-
 # The suggestion message represents an advice how to solve the problem.
-
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-
 script.warning.inactive_during_page_load=Панелът за скриптове не е бил включен при зареждане на страницата
 script.suggestion.inactive_during_page_load2=<a>Презаредете</a>, за да видите целия изходен код
-# This message is displayed within the Script panel if javascript is not enabled for the current page.
-
-# The suggestion message represents an advice how to solve the problem.
-
 #firebug.dtd
-
-script.warning.javascript_not_enabled=Javascript е изключен
-script.suggestion.javascript_not_enabled=Проверете Firefox > Инструменти/Редактиране > Настройки > Съдържание > Включване на Javascript
 #editors.dtd
-
 # the Script panel if Javascript is disabled. This button allows to enable it.
-
-script.button.enable_javascript=Включете JavaScript и презаредете страницата
+script.warning.javascript_not_enabled=Javascript е изключен
+script.suggestion.javascript_not_enabled=Проверете Firefox > Инструменти/Редактиране > Настройки > Съдържание > Включване на Javascript
 # LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-
 # This message is displayed within the Script panel if javascript is not enabled for the current page.
-
+script.button.enable_javascript=Включете JavaScript и презаредете страницата
 # The suggestion message represents an advice how to solve the problem.
-
-script.warning.all_scripts_filtered=Всички скриптове са били филтрирани
-script.suggestion.all_scripts_filtered=Проверете в лентата с инструменти кои скриптове се показват или настройката „Изходен код на chrome“
 # LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-
 # This message is displayed within the Script panel if javascript is not enabled for the current page.
-
+script.warning.all_scripts_filtered=Всички скриптове са били филтрирани
+script.suggestion.all_scripts_filtered=Проверете в лентата с инструменти кои скриптове се показват или настройката „Изходен код на chrome“
 # The suggestion message represents an advice how to solve the problem.
-
+#firebug.dtd
+#editors.dtd
 script.warning.no_javascript=На страницата няма Javascript
 script.suggestion.no_javascript=Ако елементите <script> имат атрибут „type“, стойността му трябва да е „text/javascript“ или „application/javascript“
 script.warning.debugger_active=Изчистването на грешки вече е включено
 script.suggestion.debugger_active=Изчистването на грешки е спряно на точка на прекъсване на друга страница.
 script.button.Go_to_that_page=Към другата страница
-#firebug.dtd
-
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed
 firebug.Firebug=Firebug
 firebug.Close=Затваряне
 firebug.View=Изглед
@@ -1061,6 +793,9 @@ firebug.Permissions=Сайтове…
 firebug.Configure_Editors=Настройване на редакторите
 firebug.CommandLine=Команден ред
 firebug.Search=Търсене
+# in the Console panel when the private browsing mode is on (in Firefox 4 it's Start
+# Private Browsing mode)
+firebug.Rerun=Пусни наново
 firebug.Continue=Продължаване (F8)
 firebug.StepOver=Стъпка през функция (F10)
 firebug.StepInto=Стъпка във функция (F11)
@@ -1069,9 +804,7 @@ firebug.BreakOnErrors=Прекъсване при грешки
 firebug.Inspect=Изследване
 firebug.InspectElement=Изследване на елемент
 firebug.InspectTooltip=Натиснете върху елемента в страницата, който ще изследвате
-firebug.Edit=Редактиране
 firebug.EditHTMLTooltip=Редактиране на този HTML
-firebug.EditCSSTooltip=Редактиране на този CSS
 firebug.Profile=Отчет
 firebug.ProfileScript=Отчитане на JavaScript
 firebug.Clear=Изчистване
@@ -1080,8 +813,7 @@ firebug.ClearTooltip=Изчистване на конзолата
 firebug.All=Всички
 firebug.Images=Изображения
 firebug.Flash=Flash
-#editors.dtd
-
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed
 editors.Configured_Firebug_Editors=Настроени редактори на Firebug
 editors.Editor=Редактор
 editors.Executable=Изпълним файл
@@ -1097,60 +829,60 @@ changeEditor.Name=Име:
 changeEditor.Executable=Изпълним файл:
 changeEditor.CmdLine=Аргументи:
 changeEditor.Supplied_arguments=Аргументи добавяни от Firebug:
-changeEditor.URL_of_file=адресът на файла (ако %url липсва, стандартно се добавя %file)
-changeEditor.Path_to_local_file=Път към локалния файл (или временното му копие)
-changeEditor.Line_number=Номер на реда (ако е наличен)
+changeEditor.URL_of_file=<label class='text-link'>%url</label> адресът на файла (ако %url липсва, стандартно се добавя %file)
+changeEditor.Path_to_local_file=<label class='text-link'>%file</label> Път към локалния файл (или временното му копие)
+changeEditor.Line_number=<label class='text-link'>%line</label> Номер на реда (ако е наличен)
 changeEditor.Invalid_Application_Path=Неправилен път до приложение
 changeEditor.Application_does_not_exist=Указаното приложение не съществува
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed
-
-# in the Console panel when the private browsing mode is on (in Firefox 4 it's Start
-
-# Private Browsing mode)
-
-firebug.activation.privateBrowsingMode=В режим на „Поверително сърфиране“ сайтовете не биват запомняни
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed
-
 # in a break notification balloon popup next to a checkbox.
-
-firebug.breakpoint.doNotShowBreakNotification=Без известяване при прекъсване (можете да го включите отново в менюто на панела)
 # LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed
-
 # in a break notification balloon popup when break on debugger; keyword happens.
-
+firebug.Edit=Редактиране
+firebug.css.sourceEdit=Промени сорс кода.
+firebug.css.sourceEdit.tooltip=Text-area edit Stylesheet source as loaded by the browser
+firebug.css.liveEdit="Жива" редакция
+firebug.css.liveEdit.tooltip=Text-area edit CSS extracted from the browser.
+firebug.EditCSSTooltip=Редактиране на този CSS
 # The keyword can be disabled by creating a disabled breakpoint on the same line. 
-
-firebug.bon.cause.disableDebuggerKeyword=Можете да изключвате и прекъсванията създадени с „debugger;“
 # LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panel
-
 # in cases where there are no children objects and so nothing to display.
-
-firebug.dom.noChildren=Липсват елементи-наследници
+firebug.activation.privateBrowsingMode=В режим на „Поверително сърфиране“ сайтовете не биват запомняни
 # LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list has
-
 # more elements then it's displayed on the screen. "..." is automatically appended.
-
 # example: more...
-
+firebug.breakpoint.showBreakNotifications=Покажи почивни нотификации.
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panel
+# for local/session/global storage. It's informing the user about number of items in the storage.
+firebug.breakpoint.doNotShowBreakNotification2=Може да включите/изключите почивните нотификации в <a>панел таб менюто</a>.
+# #1 number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.table
+firebug.bon.cause.disableDebuggerKeyword2=Чрез цъкане на "Изключи" бутона  отменяте "debugger" със изключена почивна точка.
+firebug.bon.tooltip.disableDebuggerKeyword2=Създава изключена
+# method if an object is passed into it. Used in table header.
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command line
+firebug.dom.noChildren2=Няма дъщерни обекти
+# by auto-complete function. Displayed if there are no possible completions.
+# more elements then it's displayed on the screen. "..." is automatically appended.
+# example: more...
 firebug.reps.more=още
 # LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panel
-
 # for local/session/global storage. It's informing the user about number of items in the storage.
-
 # #1 number of storage items
-
 # example: 1 item in Storage
-
 # example: 2 items in Storage
-
 firebug.storage.totalItems=%1$S съхранен обект;%1$S съхранени обекта
 # LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.table
-
 # method if an object is passed into it. Used in table header.
-
 firebug.reps.table.ObjectProperties=Свойства на обект
 # LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command line
-
 # by auto-complete function. Displayed if there are no possible completions.
-
 firebug.completion.empty=(няма подходящо дописване)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)
+# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Линкът най - вероятно revoked използвайки revokeObjectURL метод.
+firebug.failedToPreviewImageURL=Провал при зареждане на дадения линк.
diff --git a/locale/en-US/firebug.properties b/locale/en-US/firebug.properties
index c81aee6..f54cab2 100644
--- a/locale/en-US/firebug.properties
+++ b/locale/en-US/firebug.properties
@@ -396,7 +396,7 @@ plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not show
 LimitPrefs=Preferences
 
 # LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preferencee should be changed to modify the limit.
+# has been reached. Informing the user what preference should be changed to modify the limit.
 # %S Name of a preference.
 # examples: In order to change the limit modify: firebug.extensions.console.logLimit
 LimitPrefsTitle=In order to change the limit modify: %S
@@ -501,7 +501,13 @@ console.Break_On_This_Error=Break On This Error
 console.Use_TAB_and_arrow_keys=Use TAB and arrow keys
 
 # Console strings used when JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you would like to use the Console panel then please enable this option under 'Tools' -> 'Options' -> 'Content' -> 'Enable JavaScript'
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via 'Tools' > 'Options' > 'Content' > 'Enable JavaScript'
+
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded)
+# Used by the console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
 
 # LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the console
 # in cases when the current page is an XML document. The text between <a> and </a> is a link.
@@ -537,11 +543,11 @@ net.label.Source=Source
 net.option.Disable_Browser_Cache=Disable Browser Cache
 net.option.Show_Paint_Events=Show Paint Events
 
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
 # Net panels's option. If set to true, the net panel displays also response coming from
 # BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BF_Cache_Responses=Show BF Cache Responses
-net.option.tip.Show_BF_Cache_Responses=The Net panel can show also responses coming from BF Cache.
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also responses from Back-Forward Cache will be shown
 
 # LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
 # Tooltip used for a "break-on" button on Firebug's toolbar. Used in context of Script panel
diff --git a/locale/ru-RU/firebug.properties b/locale/ru-RU/firebug.properties
index b13aeb8..412db4c 100644
--- a/locale/ru-RU/firebug.properties
+++ b/locale/ru-RU/firebug.properties
@@ -751,8 +751,8 @@ script.suggestion.all_scripts_filtered=Обратитесь к настройк
 # The suggestion message represents an advice how to solve the problem.
 script.warning.no_javascript=На этой странице JavaScript отсутствует
 script.suggestion.no_javascript=Если тэги <script> имеют атрибут "type" - он должен содержать "text/javascript" или "application/javascript"
-script.warning.debugger_active=Дебугер уже активен
-script.suggestion.debugger_active=На данный момент дебугер остановлен на точке останова на другой странице.
+script.warning.debugger_active=Дебаггер уже активен
+script.suggestion.debugger_active=На данный момент дебаггер остановлен на точке останова на другой странице.
 script.button.Go_to_that_page=Перейти на страницу
 #firebug.dtd
 firebug.Firebug=Firebug
@@ -858,7 +858,7 @@ firebug.breakpoint.doNotShowBreakNotification2=Вы можете включит
 # This message is displayed in a break notification popup when break on debugger; keyword happens.
 # The keyword can be disabled by creating a disabled breakpoint on the same line.
 # The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Нажатие на кнопку 'Отключить' переопределяет 'debugger' с неактивной точкой останова.
+firebug.bon.cause.disableDebuggerKeyword2=Нажатие на кнопку 'Отключить' переопределяет дебаггер с неактивной точкой останова.
 firebug.bon.tooltip.disableDebuggerKeyword2=Создаёт неактивную точку останова
 # LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panel
 # in cases where there are no children objects and so nothing to display.
diff --git a/modules/firebug-service.js b/modules/firebug-service.js
index d4039f1..ead10a6 100644
--- a/modules/firebug-service.js
+++ b/modules/firebug-service.js
@@ -518,7 +518,7 @@ LineStepper.prototype = extend(OutStepper.prototype,
     unhook: function unhookLineStepper(frame)
     {
         if (FBTrace.DBG_FBS_STEP)
-            FBTrace.sysout("LineStepper unhook ", this);
+            FBTrace.sysout(this.mode + ".hook; unhook " + frameToString(frame));
     },
 
     // jsdIExecutionHook, onExecute
@@ -582,6 +582,11 @@ IntoStepper.prototype = extend(LineStepper.prototype,
         var callingFrame = frame.callingFrame;
         if (callingFrame)
         {
+            // Skip functions running in the frame that is not in this context (issue 3077)
+            var lucky = this.context.getSourceFileByTag(frame.script.tag);
+            if (!lucky)
+                return;
+
             if (this.stepFrameTag === callingFrame.script.tag) // then we stepped into from our caller
                 return this.hit(frame, type);
 
@@ -1656,13 +1661,17 @@ var fbs =
         var rejection = [];
         dispatch(clients, "onPauseJSDRequested", [rejection]);
 
-        if (rejection.length == 0)  // then everyone wants to pause
+        // Number of rejections:
+        // 0 - then everyone wants to pause
+        // 1 - then everyone wants to pause (including the current active tab)
+        if (rejection.length < 2)
         {
             if (jsd.pauseDepth == 0)  // don't pause if we are paused.
             {
                 jsd.pause();
                 fbs.unhookScripts();
             }
+
             var active = fbs.isJSDActive();
             dispatch(clients, "onJSDDeactivate", [active, "pause depth "+jsd.pauseDepth]);
         }
@@ -2000,10 +2009,11 @@ var fbs =
             var debuggr = this.findDebugger(frame);  // sets debuggr.breakContext
             if (debuggr)
             {
-                fbs._lastErrorScript = frame.script;
-                fbs._lastErrorLine = frame.line;
-                fbs._lastErrorDebuggr = debuggr;
-                fbs._lastErrorContext = debuggr.breakContext; // XXXjjb this is bad API
+                // https://bugzilla.mozilla.org/show_bug.cgi?id=669730
+                //fbs._lastErrorScript = frame.script;
+                //fbs._lastErrorLine = frame.line;
+                //fbs._lastErrorDebuggr = debuggr;
+                //fbs._lastErrorContext = debuggr.breakContext; // XXXjjb this is bad API
             }
             else
                 delete fbs._lastErrorDebuggr;
@@ -2043,7 +2053,7 @@ var fbs =
 
         delete fbs.breakOnDebugCall;
 
-        if(exc)
+        if (exc)
         {
             var exception = exc.getWrappedValue();
             fbs.enumerateErrorBreakpoints(exception.fileName, {call: function breakIfMatch(url, lineNo, bp)
@@ -2059,12 +2069,15 @@ var fbs =
             }});
         }
 
-        // global to pass info to onDebug. Some duplicate values to support different apis
+        // Global to pass info to onDebug. Some duplicate values to support different apis
+        // Do not store the exception object itself |exc|, errofInfo is a global variable
+        // and it would keep the page (that is producing the error) in the memory
+        // (see bug 669730)
         errorInfo = { errorMessage: message, sourceName: fileName, lineNumber: lineNo,
                 message: message, fileName: fileName, lineNo: lineNo,
-                columnNumber: pos, flags: flags, category: "js", errnum: errnum, exc: exc };
+                columnNumber: pos, flags: flags, category: "js", errnum: errnum };
 
-        if (message=="out of memory")  // bail
+        if (message == "out of memory")  // bail
         {
             if (FBTrace.DBG_FBS_ERRORS)
                 fbs.osOut("fbs.onError sees out of memory "+fileName+":"+lineNo+"\n");
@@ -2381,7 +2394,8 @@ var fbs =
         if (!fbs)
         {
             if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_TRACKFILES)
-                FBTrace.sysout("onScriptCreated "+script.tag+", but no fbs for script.fileName="+script.fileName);
+                FBTrace.sysout("onScriptCreated " + script.tag + ", but no fbs for script.fileName=" +
+                    script.fileName);
              return;
         }
 
@@ -2391,46 +2405,63 @@ var fbs =
 
             if (FBTrace.DBG_FBS_TRACKFILES)
                 trackFiles.add(fileName);
+
             if (isFilteredURL(fileName) || fbs.isChromebug(fileName))
             {
-                try {
+                try
+                {
                     if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
-                        FBTrace.sysout("onScriptCreated "+script.tag+": filename filtered:\'"+fileName+"\'"+(fbs.filterConsoleInjections?" console injection":""));
-                } catch (exc) {
-                    FBTrace.sysout("onScriptCreated "+script.tag+" filtered msg ERROR \'"+script.fileName+"\'"); /*? Bug 426692 */
+                        FBTrace.sysout("onScriptCreated " + script.tag + ": filename filtered:\'" +
+                            fileName + "\'" + (fbs.filterConsoleInjections ? " console injection" : ""));
+                }
+                catch (exc)
+                {
+                    FBTrace.sysout("onScriptCreated " + script.tag + " filtered msg ERROR \'" +
+                        script.fileName+"\'"); /*? Bug 426692 */
                 }
+
                 if (FBTrace.DBG_FBS_TRACKFILES)
                     trackFiles.drop(fileName);
+
                 return;
             }
 
             if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
-                FBTrace.sysout("onScriptCreated: "+script.tag+"@("+script.baseLineNumber+"-"
-                    +(script.baseLineNumber+script.lineExtent)+")"+script.fileName);
+                FBTrace.sysout("onScriptCreated: " + script.tag + "@(" + script.baseLineNumber +
+                    "-" + (script.baseLineNumber+script.lineExtent) + ")" + script.fileName);
 
             if (script.lineExtent > 80000 && FBTrace.DBG_FBS_SRCUNITS)
-                FBTrace.sysout("****************>> BOGUS line extent ("+script.lineExtent+") for "+script.fileName);
+                FBTrace.sysout("****************>> BOGUS line extent (" + script.lineExtent +
+                    ") for " + script.fileName);
 
             if (FBTrace.DBG_FBS_CREATION)
             {
-                try {
-                    FBTrace.sysout("onScriptCreated: \'"+script.functionName+"\'", script.functionSource);
-                } catch (exc) {
-                    FBTrace.sysout("onScriptCreated "+script.tag+" ERROR \'"+script.fileName+"\'"); /*? Bug 426692 */
+                try
+                {
+                    FBTrace.sysout("onScriptCreated: \'"+script.functionName+"\'",
+                        script.functionSource);
+                }
+                catch (exc)
+                {
+                    FBTrace.sysout("onScriptCreated " + script.tag + " ERROR \'" +
+                        script.fileName + "\'"); /*? Bug 426692 */
                 }
             }
 
-            if( reXUL.test(script.fileName) )
+            if (reXUL.test(script.fileName))
             {
                 fbs.onXScriptCreatedByTag[script.tag] = fbs.onXULScriptCreated;
                 fbs.pendingXULScripts.push(script);
-                script.setBreakpoint(0);  // Stop in the first one called and assign all with this fileName to sourceFile.
+
+                // Stop in the first one called and assign all with this fileName to sourceFile.
+                script.setBreakpoint(0);
             }
             else if (!script.functionName) // top or eval-level
             {
                 // We need to detect eval() and grab its source.
                 var hasCaller = fbs.createdScriptHasCaller();
-                if (FBTrace.DBG_FBS_SRCUNITS) FBTrace.sysout("top or eval case createdScriptHasCaller "+hasCaller);
+                if (FBTrace.DBG_FBS_SRCUNITS)
+                    FBTrace.sysout("top or eval case createdScriptHasCaller " + hasCaller);
 
                 if (hasCaller)
                 {
@@ -2438,12 +2469,16 @@ var fbs =
                     fbs.onXScriptCreatedByTag[script.tag] = this.onEvalScriptCreated;
                 }
                 else
+                {
                     fbs.onXScriptCreatedByTag[script.tag] = this.onTopLevelScriptCreated;
+                }
 
                 script.setBreakpoint(0);
                 if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_BP)
                 {
-                    FBTrace.sysout("onScriptCreated: set BP at PC 0 in "+(hasCaller?"eval":"top")+" level tag="+script.tag+":"+script.fileName+" jsd depth:"+(jsd.isOn?jsd.pauseDepth+"":"OFF"));
+                    FBTrace.sysout("onScriptCreated: set BP at PC 0 in " +
+                        (hasCaller ? "eval" : "top") + " level tag=" + script.tag + ":" +
+                        script.fileName + " jsd depth:" + (jsd.isOn ? jsd.pauseDepth + "" : "OFF"));
                 }
             }
             else if (script.baseLineNumber == 1)
@@ -2455,7 +2490,7 @@ var fbs =
                 if (FBTrace.DBG_FBS_SRCUNITS)
                 {
                     var hasCaller = fbs.createdScriptHasCaller();
-                    FBTrace.sysout("browser generated createdScriptHasCaller "+hasCaller);
+                    FBTrace.sysout("browser generated createdScriptHasCaller " + hasCaller);
                 }
 
                 fbs.onXScriptCreatedByTag[script.tag] = this.onEventScriptCreated; // for case 1
@@ -2464,19 +2499,21 @@ var fbs =
                 fbs.nestedScriptStack.push(script);  // for case 2
 
                 if (FBTrace.DBG_FBS_CREATION)
-                    FBTrace.sysout("onScriptCreated: set BP at PC 0 in event level tag="+script.tag);
+                    FBTrace.sysout("onScriptCreated: set BP at PC 0 in event level tag=" + script.tag);
             }
             else
             {
                 fbs.nestedScriptStack.push(script);
-                if (FBTrace.DBG_FBS_CREATION) FBTrace.sysout("onScriptCreated: nested function named: "+script.functionName);
-                dispatch(scriptListeners,"onScriptCreated",[script, fileName, script.baseLineNumber]);
+                if (FBTrace.DBG_FBS_CREATION)
+                    FBTrace.sysout("onScriptCreated: nested function named: " + script.functionName);
+
+                dispatch(scriptListeners, "onScriptCreated", [script, fileName, script.baseLineNumber]);
             }
         }
         catch(exc)
         {
-            ERROR("onScriptCreated failed: "+exc);
-            FBTrace.sysout("onScriptCreated failed: ", exc);
+            ERROR("onScriptCreated failed: " + exc);
+            FBTrace.sysout("onScriptCreated failed:", exc);
         }
     },
 
@@ -3779,9 +3816,13 @@ function isFilteredURL(rawJSD_script_filename)
         return true;
     if (fbs.filterSystemURLs)
         return systemURLStem(rawJSD_script_filename);
+
     for (var i = 0; i < fbs.alwayFilterURLsStarting.length; i++)
+    {
         if (rawJSD_script_filename.indexOf(fbs.alwayFilterURLsStarting[i]) != -1)
             return true;
+    }
+
     return false;
 }
 
diff --git a/skin/classic/console.css b/skin/classic/console.css
index 8ed0d19..594b402 100644
--- a/skin/classic/console.css
+++ b/skin/classic/console.css
@@ -457,7 +457,8 @@
 
 /*****************************************************************************************/
 
-.panelNode.searching .logRow {
+.panelNode.searching .logRow,
+.panelNode.searching .logRow-group > .objectLink {
     display: none;
 }
 
diff --git a/skin/classic/firebug-gray-24.png b/skin/classic/firebug-gray-24.png
deleted file mode 100644
index 525e623..0000000
Binary files a/skin/classic/firebug-gray-24.png and /dev/null differ
diff --git a/skin/classic/firebug.css b/skin/classic/firebug.css
index c9b14f6..11e3882 100644
--- a/skin/classic/firebug.css
+++ b/skin/classic/firebug.css
@@ -250,6 +250,10 @@ textbox[type="fbSearchBox"] > panel {
     max-width: none;
 }
 
+.fbInlineItem {
+    font-style: italic;
+}
+
 /************************************************************************************************/
 /* Firebug toolbar buttons */
 
diff --git a/skin/classic/firebug24.png b/skin/classic/firebug24.png
deleted file mode 100644
index 4e84333..0000000
Binary files a/skin/classic/firebug24.png and /dev/null differ
diff --git a/skin/classic/mac/firebug.css b/skin/classic/mac/firebug.css
index abf2602..1123348 100644
--- a/skin/classic/mac/firebug.css
+++ b/skin/classic/mac/firebug.css
@@ -307,14 +307,15 @@ panelTab[selected="true"] > panelTabMenu {
 
 .toolbar-text-button,
 .toolbar-text-menubutton {
-    -moz-appearance: none;
     margin: 0 1px;
+    -moz-appearance: none;
     padding: 1px 0px 1px 7px;
     min-width: 0;
     max-width: 13em;
     font-weight: bold;
     color: #565656;
     border: none !important;
+    border-radius: 8px;
 }
 
 .toolbar-text-button > .toolbarbutton-text {
@@ -327,47 +328,44 @@ panelTab[selected="true"] > panelTabMenu {
 }
 
 .toolbar-text-button:hover:not([disabled="true"]),
-.toolbar-text-menubutton:hover:not([disabled="true"]) {
-    background: url("chrome://browser/skin/bookmark-hover-left.png") no-repeat left center;
+.toolbar-text-menubutton:hover:not([disabled="true"]) ,
+.toolbar-text-button[checked="true"]:hover:not([disabled="true"]),
+.toolbar-text-menubutton[open="true"]:hover:not([disabled="true"]) {
+    background: #999999;
 }
 
-.toolbar-text-button:hover:not([disabled="true"]) > .toolbarbutton-text,
-.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker {
-    background: url("chrome://browser/skin/bookmark-hover-right.png") no-repeat right center;
-    color: #FFFFFF;
+.toolbar-text-button:hover:active:not([disabled="true"]),
+.toolbar-text-menubutton:hover:active:not([disabled="true"]) {
+    box-shadow:
+        inset rgba(60, 60, 60, 0.15) 0 -1px 3px,
+        inset #111111 0 1px 3px,
+        inset rgba(60, 60, 60, 0.1) 0 1px 2px,
+        0 1px rgba(244, 244, 244, 0.4);
 }
 
+.toolbar-text-button:hover:not([disabled="true"]) > .toolbarbutton-text,
+.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
 .toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-text {
-    background: url("chrome://browser/skin/bookmark-hover-mid.png") repeat-x;
     color: #FFFFFF;
+    text-shadow: 1px 1px rgba(0, 0, 0, 0.4);
 }
 
-.toolbar-text-button:hover:active:not([disabled="true"]),
 .toolbar-text-button[checked="true"]:not([disabled="true"]),
-.toolbar-text-menubutton:hover:active:not([disabled="true"]),
 .toolbar-text-menubutton[open="true"]:not([disabled="true"]) {
-    background: url("chrome://browser/skin/bookmark-open-left.png") no-repeat left center;
+    text-shadow: 0 1px rgba(255, 255, 255, 0.4);
+    background-color: #CCCCCC;
 }
 
 .toolbar-text-menubutton:hover:active:not([disabled="true"]) > .toolbarbutton-text,
 .toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-text {
-    background: url("chrome://browser/skin/bookmark-open-mid.png") repeat-x !important;
     color: #FFFFFF;
 }
 
-.toolbar-text-button:hover:active:not([disabled="true"]) > .toolbarbutton-text,
-.toolbar-text-button[checked="true"]:not([disabled="true"]) > .toolbarbutton-text,
-.toolbar-text-menubutton:hover:active:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
-.toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-menu-dropmarker {
-    background: url("chrome://browser/skin/bookmark-open-right.png") no-repeat right center;
-}
-
-.toolbar-text-button[checked="true"] {
-    background-color: transparent;
+.toolbar-text-button > .toolbarbutton-text {
+    color: #333333;
 }
-
 .toolbar-text-button[checked="true"] > .toolbarbutton-text {
-    color: #FFFFFF;
+    color: #000000;
 }
 
 .toolbar-text-button .toolbarbutton-text,
diff --git a/skin/classic/net.css b/skin/classic/net.css
index c4611e6..cf27fc1 100644
--- a/skin/classic/net.css
+++ b/skin/classic/net.css
@@ -411,6 +411,14 @@
 /************************************************************************************************/
 /* If coming from BF cache (no network activity) */
 
+.netTable .netRow.fromBFCache {
+    visibility: collapse;
+}
+
+.netTable.showBFCacheResponses .netRow.fromBFCache {
+    visibility: visible;
+}
+
 .netRow.fromBFCache .netLabel,
 .netRow.fromBFCache .netBlockingBar,
 .netRow.fromBFCache .netResolvingBar,
diff --git a/skin/classic/win/firebug.css b/skin/classic/win/firebug.css
index 82de4e2..0984dcb 100644
--- a/skin/classic/win/firebug.css
+++ b/skin/classic/win/firebug.css
@@ -41,6 +41,11 @@
     color: #000000;
 }
 
+.toolbar-text-button[disabled="true"],
+.toolbar-text-menubutton[disabled="true"] {
+    color: graytext;
+}
+
 .toolbar-text-button[checked="true"] {
     padding: 3px 6px !important;
 }

-- 
Web development plugin for Iceweasel/Firefox



More information about the Pkg-mozext-commits mailing list