[Pkg-mozext-commits] [noscript] 01/17: New upstream version 5.1.1

David Prévot taffit at moszumanska.debian.org
Sun Oct 15 05:38:06 UTC 2017


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository noscript.

commit 616b3f81685971c1f5152ddd7faf8a2fc2944dc5
Author: David Prévot <david at tilapin.org>
Date:   Mon Oct 2 21:49:25 2017 -1000

    New upstream version 5.1.1
---
 META-INF/manifest.mf                               | 1491 +++++++++++++++++++-
 META-INF/mozilla.rsa                               |  Bin 4196 -> 4196 bytes
 META-INF/mozilla.sf                                |    4 +-
 bootstrap.js                                       |   66 +
 chrome.manifest                                    |  133 +-
 chrome/{noscript.jar! => }/content/noscript/ABE.g  |    0
 chrome/{noscript.jar! => }/content/noscript/ABE.js |    4 +-
 .../content/noscript/ABELexer.js                   |    0
 .../content/noscript/ABEParser.js                  |    0
 .../content/noscript/ASPIdiocy.js                  |    0
 .../content/noscript/AddressMatcher.js             |    0
 chrome/{noscript.jar! => }/content/noscript/Bug.js |    0
 .../content/noscript/ChannelReplacement.js         |    0
 .../content/noscript/ClearClickHandler.js          |   49 +-
 .../{noscript.jar! => }/content/noscript/Cookie.js |    0
 chrome/{noscript.jar! => }/content/noscript/DNS.js |    0
 chrome/{noscript.jar! => }/content/noscript/DOM.js |    0
 .../content/noscript/DoNotTrack.js                 |    0
 .../content/noscript/Entities.js                   |    0
 .../content/noscript/ExternalFilters.js            |    0
 .../content/noscript/FlashIdiocy.js                |    0
 .../content/noscript/ForcedRedirectionCallback.js  |    0
 chrome/content/noscript/FrameScript.jsm            |   58 +
 .../{noscript.jar! => }/content/noscript/HTTPS.js  |   37 +-
 chrome/{noscript.jar! => }/content/noscript/IO.js  |    0
 .../{noscript.jar! => }/content/noscript/IOUtil.js |    0
 .../content/noscript/InjectionChecker.js           |    0
 .../{noscript.jar! => }/content/noscript/JSURL.js  |    0
 .../{noscript.jar! => }/content/noscript/Lang.js   |    0
 .../content/noscript/MSEInterception.js            |    0
 .../{noscript.jar! => }/content/noscript/Main.js   |  182 ++-
 .../content/noscript/MainChild.js                  |   33 +-
 .../content/noscript/MainParent.js                 |   13 +-
 .../content/noscript/Membrane.js                   |    0
 .../content/noscript/MimeService.js                |    0
 .../content/noscript/MimeServiceParent.js          |    0
 .../content/noscript/NoScript_License.txt          |    0
 .../content/noscript/PasteHandler.jsm              |    5 +-
 .../content/noscript/Plugins.js                    |    0
 .../{noscript.jar! => }/content/noscript/Policy.js |   43 +-
 .../content/noscript/Profiler.js                   |    0
 .../content/noscript/Removal.js                    |    0
 .../content/noscript/RequestWatchdog.js            |   18 +-
 chrome/content/noscript/Restartless.jsm            |  180 +++
 .../content/noscript/ScriptSurrogate.js            |    4 +-
 .../content/noscript/ScriptlessBGThumbs.js         |   33 +-
 .../content/noscript/SiteUtils.js                  |    0
 .../content/noscript/Strings.js                    |    6 +-
 .../content/noscript/SyntaxChecker.js              |    0
 .../{noscript.jar! => }/content/noscript/Thread.js |    0
 .../content/noscript/UISync.jsm                    |   92 +-
 .../content/noscript/URIValidator.js               |    0
 .../{noscript.jar! => }/content/noscript/WebExt.js |   36 +-
 .../content/noscript/WebGLInterception.js          |    0
 .../content/noscript/WinScript.js                  |    0
 .../{noscript.jar! => }/content/noscript/about.xul |    6 +-
 .../{noscript.jar! => }/content/noscript/antlr.js  |    0
 .../content/noscript/clearClick.js                 |    0
 .../content/noscript/clearClick.xul                |    0
 .../{noscript.jar! => }/content/noscript/defer.jsm |    0
 chrome/content/noscript/e10sChild.js               |   51 +
 .../content/noscript/e10sIPC.js                    |    1 +
 .../content/noscript/e10sParent.js                 |    8 +-
 .../content/noscript/e10sProcessScript.js          |   10 +-
 chrome/content/noscript/frameScript.js             |    3 +
 .../{noscript.jar! => }/content/noscript/iaUI.js   |    0
 chrome/content/noscript/importer.jsm               |   30 +
 .../{noscript.jar! => }/content/noscript/loader.js |   23 +-
 .../content/noscript/noscript.js                   |   30 +-
 .../content/noscript/noscript.xbl                  |    0
 .../content/noscript/noscriptBM.js                 |   41 +-
 .../content/noscript/noscriptBMOverlay.xul         |    0
 .../content/noscript/noscriptOptions.js            |    0
 .../content/noscript/noscriptOptions.xul           |    0
 .../content/noscript/noscriptOverlay.js            |  114 +-
 .../content/noscript/noscriptOverlay.xul           |    0
 .../content/noscript/noscriptOverlayFx57.xul       |    0
 .../content/noscript/tree-copy.js                  |    0
 .../locale/ar/noscript/about.properties            |    0
 .../locale/ar/noscript/noscript.dtd                |    0
 .../locale/ar/noscript/noscript.properties         |    0
 .../locale/be-BY/noscript/about.properties         |    0
 .../locale/be-BY/noscript/noscript.dtd             |    0
 .../locale/be-BY/noscript/noscript.properties      |    0
 .../locale/bg-BG/noscript/about.properties         |    0
 .../locale/bg-BG/noscript/noscript.dtd             |    2 +-
 .../locale/bg-BG/noscript/noscript.properties      |    0
 .../locale/bn-IN/noscript/about.properties         |    0
 .../locale/bn-IN/noscript/noscript.dtd             |    0
 .../locale/bn-IN/noscript/noscript.properties      |    0
 .../locale/ca-AD/noscript/about.properties         |    0
 .../locale/ca-AD/noscript/noscript.dtd             |    2 +-
 .../locale/ca-AD/noscript/noscript.properties      |    0
 .../locale/cs-CZ/noscript/about.properties         |    0
 .../locale/cs-CZ/noscript/noscript.dtd             |    2 +-
 .../locale/cs-CZ/noscript/noscript.properties      |    0
 .../locale/cy-GB/noscript/about.properties         |    0
 .../locale/cy-GB/noscript/noscript.dtd             |    2 +-
 .../locale/cy-GB/noscript/noscript.properties      |    0
 .../locale/da/noscript/about.properties            |    0
 .../locale/da/noscript/noscript.dtd                |    2 +-
 .../locale/da/noscript/noscript.properties         |    0
 .../locale/de/noscript/about.properties            |    0
 .../locale/de/noscript/noscript.dtd                |    2 +-
 .../locale/de/noscript/noscript.properties         |    0
 .../locale/el/noscript/about.properties            |    0
 .../locale/el/noscript/noscript.dtd                |    2 +-
 .../locale/el/noscript/noscript.properties         |    0
 .../locale/en-GB/noscript/about.properties         |    0
 .../locale/en-GB/noscript/noscript.dtd             |    2 +-
 .../locale/en-GB/noscript/noscript.properties      |    0
 .../locale/en-US/noscript/about.properties         |    0
 .../locale/en-US/noscript/noscript.dtd             |    2 +-
 .../locale/en-US/noscript/noscript.properties      |    0
 .../locale/eo/noscript/about.properties            |    0
 .../locale/eo/noscript/noscript.dtd                |    2 +-
 .../locale/eo/noscript/noscript.properties         |    0
 .../locale/es-AR/noscript/about.properties         |    0
 .../locale/es-AR/noscript/noscript.dtd             |    2 +-
 .../locale/es-AR/noscript/noscript.properties      |    0
 .../locale/es-CL/noscript/about.properties         |    0
 .../locale/es-CL/noscript/noscript.dtd             |    2 +-
 .../locale/es-CL/noscript/noscript.properties      |    0
 .../locale/es-ES/noscript/about.properties         |    0
 .../locale/es-ES/noscript/noscript.dtd             |    2 +-
 .../locale/es-ES/noscript/noscript.properties      |    0
 .../locale/et-EE/noscript/about.properties         |    0
 .../locale/et-EE/noscript/noscript.dtd             |    2 +-
 .../locale/et-EE/noscript/noscript.properties      |    0
 .../locale/eu/noscript/about.properties            |    0
 .../locale/eu/noscript/noscript.dtd                |    2 +-
 .../locale/eu/noscript/noscript.properties         |    0
 .../locale/fa-IR/noscript/about.properties         |    0
 .../locale/fa-IR/noscript/noscript.dtd             |    2 +-
 .../locale/fa-IR/noscript/noscript.properties      |    0
 .../locale/fi/noscript/about.properties            |    0
 .../locale/fi/noscript/noscript.dtd                |    2 +-
 .../locale/fi/noscript/noscript.properties         |    0
 .../locale/fr/noscript/about.properties            |    0
 .../locale/fr/noscript/noscript.dtd                |    2 +-
 .../locale/fr/noscript/noscript.properties         |    0
 .../locale/gl-ES/noscript/about.properties         |    0
 .../locale/gl-ES/noscript/noscript.dtd             |    2 +-
 .../locale/gl-ES/noscript/noscript.properties      |    0
 .../locale/he-IL/noscript/about.properties         |    0
 .../locale/he-IL/noscript/noscript.dtd             |    2 +-
 .../locale/he-IL/noscript/noscript.properties      |    0
 .../locale/hr-HR/noscript/about.properties         |    0
 .../locale/hr-HR/noscript/noscript.dtd             |    2 +-
 .../locale/hr-HR/noscript/noscript.properties      |    0
 .../locale/hsb/noscript/about.properties           |    0
 .../locale/hsb/noscript/noscript.dtd               |    2 +-
 .../locale/hsb/noscript/noscript.properties        |    0
 .../locale/hu-HU/noscript/about.properties         |    0
 .../locale/hu-HU/noscript/noscript.dtd             |    2 +-
 .../locale/hu-HU/noscript/noscript.properties      |    0
 .../locale/id-ID/noscript/about.properties         |    0
 .../locale/id-ID/noscript/noscript.dtd             |    2 +-
 .../locale/id-ID/noscript/noscript.properties      |    0
 .../locale/it/noscript/about.properties            |    0
 .../locale/it/noscript/noscript.dtd                |    2 +-
 .../locale/it/noscript/noscript.properties         |    0
 .../locale/ja-JP/noscript/about.properties         |    0
 .../locale/ja-JP/noscript/noscript.dtd             |    2 +-
 .../locale/ja-JP/noscript/noscript.properties      |    0
 .../locale/kk-KZ/noscript/about.properties         |    0
 .../locale/kk-KZ/noscript/noscript.dtd             |    2 +-
 .../locale/kk-KZ/noscript/noscript.properties      |    0
 .../locale/km-KH/noscript/about.properties         |    0
 .../locale/km-KH/noscript/noscript.dtd             |    2 +-
 .../locale/km-KH/noscript/noscript.properties      |    0
 .../locale/ko-KR/noscript/about.properties         |    0
 .../locale/ko-KR/noscript/noscript.dtd             |    2 +-
 .../locale/ko-KR/noscript/noscript.properties      |    0
 .../locale/lt/noscript/about.properties            |    0
 .../locale/lt/noscript/noscript.dtd                |    2 +-
 .../locale/lt/noscript/noscript.properties         |    0
 .../locale/mk-MK/noscript/about.properties         |    0
 .../locale/mk-MK/noscript/noscript.dtd             |    2 +-
 .../locale/mk-MK/noscript/noscript.properties      |    0
 .../locale/ms-MY/noscript/about.properties         |    0
 .../locale/ms-MY/noscript/noscript.dtd             |    2 +-
 .../locale/ms-MY/noscript/noscript.properties      |    0
 .../locale/nb-NO/noscript/about.properties         |    0
 .../locale/nb-NO/noscript/noscript.dtd             |    2 +-
 .../locale/nb-NO/noscript/noscript.properties      |    0
 .../locale/nl/noscript/about.properties            |    0
 .../locale/nl/noscript/noscript.dtd                |    2 +-
 .../locale/nl/noscript/noscript.properties         |    0
 .../locale/pl/noscript/about.properties            |    0
 .../locale/pl/noscript/noscript.dtd                |    2 +-
 .../locale/pl/noscript/noscript.properties         |    0
 .../locale/pt-BR/noscript/about.properties         |    0
 .../locale/pt-BR/noscript/noscript.dtd             |    2 +-
 .../locale/pt-BR/noscript/noscript.properties      |    0
 .../locale/pt-PT/noscript/about.properties         |    0
 .../locale/pt-PT/noscript/noscript.dtd             |    2 +-
 .../locale/pt-PT/noscript/noscript.properties      |    0
 .../locale/ro/noscript/about.properties            |    0
 .../locale/ro/noscript/noscript.dtd                |    2 +-
 .../locale/ro/noscript/noscript.properties         |    0
 .../locale/ru-RU/noscript/about.properties         |    0
 .../locale/ru-RU/noscript/noscript.dtd             |    0
 .../locale/ru-RU/noscript/noscript.properties      |    0
 .../locale/sk-SK/noscript/about.properties         |    0
 .../locale/sk-SK/noscript/noscript.dtd             |    2 +-
 .../locale/sk-SK/noscript/noscript.properties      |    0
 .../locale/sl-SI/noscript/about.properties         |    0
 .../locale/sl-SI/noscript/noscript.dtd             |    2 +-
 .../locale/sl-SI/noscript/noscript.properties      |    0
 .../locale/sr-RS/noscript/about.properties         |    0
 .../locale/sr-RS/noscript/noscript.dtd             |    2 +-
 .../locale/sr-RS/noscript/noscript.properties      |    0
 .../locale/sr/noscript/about.properties            |    0
 .../locale/sr/noscript/noscript.dtd                |    0
 .../locale/sr/noscript/noscript.properties         |    0
 .../locale/sv-SE/noscript/about.properties         |    0
 .../locale/sv-SE/noscript/noscript.dtd             |    2 +-
 .../locale/sv-SE/noscript/noscript.properties      |    0
 .../locale/te-IN/noscript/about.properties         |    0
 .../locale/te-IN/noscript/noscript.dtd             |    2 +-
 .../locale/te-IN/noscript/noscript.properties      |    0
 .../locale/th/noscript/about.properties            |    0
 .../locale/th/noscript/noscript.dtd                |    2 +-
 .../locale/th/noscript/noscript.properties         |    0
 .../locale/tr/noscript/about.properties            |    0
 .../locale/tr/noscript/noscript.dtd                |    2 +-
 .../locale/tr/noscript/noscript.properties         |    0
 .../locale/uk/noscript/about.properties            |    0
 .../locale/uk/noscript/noscript.dtd                |    0
 .../locale/uk/noscript/noscript.properties         |    0
 .../locale/vi/noscript/about.properties            |    0
 .../locale/vi/noscript/noscript.dtd                |    2 +-
 .../locale/vi/noscript/noscript.properties         |    0
 .../locale/zh-CN/noscript/about.properties         |    0
 .../locale/zh-CN/noscript/noscript.dtd             |    2 +-
 .../locale/zh-CN/noscript/noscript.properties      |    0
 .../locale/zh-TW/noscript/about.properties         |    0
 .../locale/zh-TW/noscript/noscript.dtd             |    2 +-
 .../locale/zh-TW/noscript/noscript.properties      |    0
 .../noscript.jar!/content/noscript/FrameScript.jsm |   33 -
 chrome/noscript.jar!/content/noscript/e10sChild.js |   36 -
 .../noscript.jar!/content/noscript/frameScript.js  |    2 -
 .../noscript.jar!/webextension/lib/noscript/tld.js |   31 -
 .../skin/classic/noscript/abe16.png                |  Bin
 .../skin/classic/noscript/about.css                |    0
 .../skin/classic/noscript/block.wav                |  Bin
 .../skin/classic/noscript/browser.css              |    0
 .../skin/classic/noscript/clearclick16.png         |  Bin
 .../skin/classic/noscript/close.png                |  Bin
 .../skin/classic/noscript/console16.png            |  Bin
 .../skin/classic/noscript/content.css              |    0
 .../skin/classic/noscript/ef-no16.png              |  Bin
 .../skin/classic/noscript/ef16.png                 |  Bin
 .../skin/classic/noscript/emb16.png                |  Bin
 .../skin/classic/noscript/embed-no16.png           |  Bin
 .../skin/classic/noscript/embed16.png              |  Bin
 .../skin/classic/noscript/faq16.png                |  Bin
 .../skin/classic/noscript/flash16.png              |  Bin
 .../skin/classic/noscript/flash32.png              |  Bin
 .../skin/classic/noscript/folder_closed.png        |  Bin
 .../skin/classic/noscript/folder_open.png          |  Bin
 .../skin/classic/noscript/font.png                 |  Bin
 .../skin/classic/noscript/glb-emb16.png            |  Bin
 .../skin/classic/noscript/glb-no16.png             |  Bin
 .../skin/classic/noscript/glb16.png                |  Bin
 .../skin/classic/noscript/https16.png              |  Bin
 .../skin/classic/noscript/ia.png                   |  Bin
 .../skin/classic/noscript/icon24.png               |  Bin
 .../skin/classic/noscript/icon32.png               |  Bin
 .../skin/classic/noscript/icon64.png               |  Bin
 .../skin/classic/noscript/icon80.png               |  Bin
 .../skin/classic/noscript/inactive-emb16.png       |  Bin
 .../skin/classic/noscript/inactive-glb16.png       |  Bin
 .../skin/classic/noscript/inactive-no-emb16.png    |  Bin
 .../skin/classic/noscript/inactive-no16.png        |  Bin
 .../skin/classic/noscript/inactive-prt16.png       |  Bin
 .../skin/classic/noscript/inactive-yes16.png       |  Bin
 .../skin/classic/noscript/inactive-yu16.png        |  Bin
 .../skin/classic/noscript/java16.png               |  Bin
 .../skin/classic/noscript/java32.png               |  Bin
 .../skin/classic/noscript/mobile.css               |    0
 .../skin/classic/noscript/no-emb16.png             |  Bin
 .../skin/classic/noscript/no16.png                 |  Bin
 .../skin/classic/noscript/options.css              |    0
 .../skin/classic/noscript/prt16.png                |  Bin
 .../skin/classic/noscript/redirect16.png           |  Bin
 .../skin/classic/noscript/revtemp16.png            |  Bin
 .../skin/classic/noscript/somelight16.png          |  Bin
 .../skin/classic/noscript/somelight32.png          |  Bin
 .../skin/classic/noscript/subprt16.png             |  Bin
 .../skin/classic/noscript/temp16.png               |  Bin
 .../skin/classic/noscript/unsafe-reload16.png      |  Bin
 .../skin/classic/noscript/untrusted-glb16.png      |  Bin
 .../skin/classic/noscript/untrusted16.png          |  Bin
 .../skin/classic/noscript/webgl16.png              |  Bin
 .../skin/classic/noscript/webgl32.png              |  Bin
 .../skin/classic/noscript/xss16.png                |  Bin
 .../skin/classic/noscript/yes16.png                |  Bin
 .../skin/classic/noscript/yu-emb16.png             |  Bin
 .../skin/classic/noscript/yu-glb16.png             |  Bin
 .../skin/classic/noscript/yu16.png                 |  Bin
 install.rdf                                        |    3 +-
 webextension/legacy.js                             |   19 +-
 webextension/lib/tld.js                            |    2 +-
 webextension/noscript.js                           |   26 +-
 306 files changed, 2493 insertions(+), 559 deletions(-)

diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index 06b9bcf..653116c 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,13 +2,18 @@ Manifest-Version: 1.0
 
 Name: install.rdf
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: TDoIIS6+o86RVVQgPxI3jA==
-SHA1-Digest: VQluqfuz5ksFwHbDgLVAOooU16M=
+MD5-Digest: JZKDe07T7mwEpLhG6J1AXQ==
+SHA1-Digest: M8WdpFLznsLbvZSGT7mdzjh84rk=
 
 Name: chrome.manifest
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8xxOomWv5Eh1p3kjByZNdg==
-SHA1-Digest: DU7pawUXFY40m/o0f5P3LoaWPkw=
+MD5-Digest: V7KkvHOa25w5EOH+NRM6hw==
+SHA1-Digest: z4/9Lia05sKUaZOm5aOQWjShvvw=
+
+Name: bootstrap.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0L4y18XsK6mUTg6ZqaEgOw==
+SHA1-Digest: W344towRGDePnPWL539hzVAZKUY=
 
 Name: GPL.txt
 Digest-Algorithms: MD5 SHA1
@@ -25,10 +30,1470 @@ Digest-Algorithms: MD5 SHA1
 MD5-Digest: CYkluXWIXUk6QpUjqxcMtA==
 SHA1-Digest: 624YpFdNjCFbDE7kLhN+vbF9hgM=
 
-Name: chrome/noscript.jar
+Name: chrome/content/noscript/ABE.g
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0ndiHMR4gYmPSx0U2w0Glw==
+SHA1-Digest: YaQhyi7gw+UKy7h45EG/o3tjSm4=
+
+Name: chrome/content/noscript/ABE.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: efVxreJLBVnT1v4M8x7p1g==
+SHA1-Digest: qMeocOEicA0Pt1hfYgAWA8JDKlw=
+
+Name: chrome/content/noscript/ABELexer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2vn5ncWk3RoiIgzRFDWbfw==
+SHA1-Digest: zOGAS9GCyuI94LIUNyiaxRFqW+E=
+
+Name: chrome/content/noscript/ABEParser.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +Q7F49vEB2ge5LnrDcqQZQ==
+SHA1-Digest: idl2qN6ruxPfDks9LUMR4uR/6sQ=
+
+Name: chrome/content/noscript/about.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SFRAKkUhhjb9hVPv4NpxXQ==
+SHA1-Digest: HlR2o1Vj2ohoPmfQkQUmjbvTroE=
+
+Name: chrome/content/noscript/AddressMatcher.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7ljs5vp/L9x7Gapl6R4wVg==
+SHA1-Digest: h11BwNuVU826xsrz7rKxR2YReiM=
+
+Name: chrome/content/noscript/antlr.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: u+5zq9KU3YhTYZwnRO4/Vg==
+SHA1-Digest: uRLcqhWxdDNGO5Nqy2zGqc01/bk=
+
+Name: chrome/content/noscript/ASPIdiocy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lcuhpZC8unztEU41C+wTDg==
+SHA1-Digest: +d9gRnpk1u7Gz6R0yPxJbkRVj60=
+
+Name: chrome/content/noscript/Bug.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DcX/6xmaGT89vswATO5sTg==
+SHA1-Digest: jsa6GMTrayqkdgbu2NquDsJ1bck=
+
+Name: chrome/content/noscript/ChannelReplacement.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wqLge9ivOER94PkOuQUz5Q==
+SHA1-Digest: TZ6d5J/AW3amsC/9aRqPYXdLm7U=
+
+Name: chrome/content/noscript/clearClick.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UUI7RbryvunLCtbQejw4bQ==
+SHA1-Digest: gtXR+VBtWnsPnVBv3E0u6FL0McY=
+
+Name: chrome/content/noscript/clearClick.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C+gsI3w8QBnKvtarHvWgtw==
+SHA1-Digest: aD2kpx4CDzAtYg7rnQ/7IYQMysk=
+
+Name: chrome/content/noscript/ClearClickHandler.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hOEnlq5QQj+Yjri0RS+6nA==
+SHA1-Digest: +95/Pms57wxG+ZQ82FL3c/xu+LY=
+
+Name: chrome/content/noscript/Cookie.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 209O1VQ1INFtJqh+vDZYnA==
+SHA1-Digest: ATBv5Y6DnU7lFIdN4cxAK1WQpt8=
+
+Name: chrome/content/noscript/defer.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NIpbt8TsDurLbWsz6fKyAA==
+SHA1-Digest: c/9xd0fFqpZq+OvYh9uJJDqGnAE=
+
+Name: chrome/content/noscript/DNS.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: N7vT61OtOjNTHgSmRGOPrA==
+SHA1-Digest: slpXNsG2qKD+QvoX9Hoiw625fDg=
+
+Name: chrome/content/noscript/DOM.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JraWQaeU/YMnLLc6vhW4lw==
+SHA1-Digest: MQ66UEyOqVr7b2/iMuquOz3myVc=
+
+Name: chrome/content/noscript/DoNotTrack.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jSn9/zR9KQtPzLyluHJqqw==
+SHA1-Digest: 04DnfzJd8zAGJIfPePc8FpT2wfE=
+
+Name: chrome/content/noscript/e10sChild.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dNQv+NZpu1nupBdFe73/Dg==
+SHA1-Digest: SYnY0HVNKVTI4s0yc8tZqdOLNi4=
+
+Name: chrome/content/noscript/e10sIPC.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oY9dPIt4/v/IC08pkoGlxA==
+SHA1-Digest: qi6iQNIMhn0IOBB3P/R7mbH9pB4=
+
+Name: chrome/content/noscript/e10sParent.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: QdtZ+Z7jQHz0MtVPcyoy3Q==
+SHA1-Digest: S06mfyBzT3yWdhIyw65raXORXbQ=
+
+Name: chrome/content/noscript/e10sProcessScript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: si+8sS7zxHuNbH8JeLRZdw==
+SHA1-Digest: GLHJKtkz7ddTPNHGyfMtad3Rxp0=
+
+Name: chrome/content/noscript/Entities.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2WdF3QCjQN58N5eajkioHA==
+SHA1-Digest: dnhs1KNtgXcNOtIzsb64rVgqsjc=
+
+Name: chrome/content/noscript/ExternalFilters.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qQdm4Wo2B3d5NpQNmrftsA==
+SHA1-Digest: ySmv2bXn93Zu+4RgQEhCZgzzfn4=
+
+Name: chrome/content/noscript/FlashIdiocy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NrNKDK6FRugi+VSloK921Q==
+SHA1-Digest: 6WHGdT4I6ryJXLptiTxPV3ARtwY=
+
+Name: chrome/content/noscript/ForcedRedirectionCallback.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S5jy1fUsSTHFqvgr4JVBtg==
+SHA1-Digest: b3JgRHZPXwoCJBjEoETlvgpaggw=
+
+Name: chrome/content/noscript/frameScript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bnGK7aALxb4j4RSi2zP3/Q==
+SHA1-Digest: 1E9JvLF8RouOZDLjutanoVGkQJQ=
+
+Name: chrome/content/noscript/FrameScript.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JF4+y9Nd1kOhOrrD/aPBZQ==
+SHA1-Digest: qZY23lR2Yf3DB+lOkYoXC4mpJWc=
+
+Name: chrome/content/noscript/HTTPS.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /cyzmqBLYicfneXwqYSozA==
+SHA1-Digest: jFe3JSw478qy3wXJiNrtEOqf8yQ=
+
+Name: chrome/content/noscript/iaUI.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J7/4r9XjOLi/21lJ80OmWw==
+SHA1-Digest: /G5NZANc8ND3NSsGncf+Hqa9Mkc=
+
+Name: chrome/content/noscript/importer.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AWnybz+hGEgkww3VlFxD4w==
+SHA1-Digest: vV/i4cBl6Qs5UzSe4yaiD1+pyv0=
+
+Name: chrome/content/noscript/InjectionChecker.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nGJ24wAMZqVYBtK63WoESw==
+SHA1-Digest: muAsRgqt+oFpALy1s+q09W+mic4=
+
+Name: chrome/content/noscript/IO.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2hAtbcIUWEd36yrZWO0hFw==
+SHA1-Digest: SqBGSdTuxg4bi8JdY6IsnTmx5qU=
+
+Name: chrome/content/noscript/IOUtil.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 34GgAi5T3D5TbRDNkMOYyA==
+SHA1-Digest: F0TZIGG3khB/wKlskjWMWI41hFY=
+
+Name: chrome/content/noscript/JSURL.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GcLS0flp3gKM9c1t9oot2w==
+SHA1-Digest: lJMhz3mxpV5URGwpRSb8VE74cHs=
+
+Name: chrome/content/noscript/Lang.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bsdKcw+PtrA3pBYl0hwK9Q==
+SHA1-Digest: bugJLaFxuzKGJKEju09MQpVgOlA=
+
+Name: chrome/content/noscript/loader.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: l8pu18KJ1S1I48eda7t4Gg==
+SHA1-Digest: IP1FtRnULNQsRbu3E46+ynWOwGU=
+
+Name: chrome/content/noscript/Main.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oznsVNtkTylucrkTaXDvMw==
+SHA1-Digest: NThb0VZXH9WWGc54fczrkxWfYco=
+
+Name: chrome/content/noscript/MainChild.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Tc8aIP/ACd9RwPfxMUKC7w==
+SHA1-Digest: MV4XZnpyOQgOn8iCFe6wEbVsD34=
+
+Name: chrome/content/noscript/MainParent.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YVdXGpECT4+UlIK2+6E5oQ==
+SHA1-Digest: 6o97kDxdzZOTT61pIw4k9+2Yc8k=
+
+Name: chrome/content/noscript/Membrane.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4wHyeUqmVY86J9fdy1aqXQ==
+SHA1-Digest: dFCj9xR1wMwvTH4cpxKzXEjrn74=
+
+Name: chrome/content/noscript/MimeService.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9gO+HuxtLEpY9FZTTOAL+w==
+SHA1-Digest: aIQdi2ovmFC0+yt/ooMtVcb9BE8=
+
+Name: chrome/content/noscript/MimeServiceParent.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3EoZ+lq+3Sxkx9Rs0nrsCA==
+SHA1-Digest: g14nJ8e3gNDkDRFqY0ijGXSQCfg=
+
+Name: chrome/content/noscript/MSEInterception.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AO8t0sfPUkKXum0oNMI7IA==
+SHA1-Digest: GTTbeZeTYeAXao/rrNl72fizgu4=
+
+Name: chrome/content/noscript/noscript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qzPRTgI+VyqPB1C44IjxpA==
+SHA1-Digest: qzAwQnsxTCGMVs+tcDS4j8v3byc=
+
+Name: chrome/content/noscript/noscript.xbl
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mlFomy1P+DrECC7gUrkgZg==
+SHA1-Digest: 22P66R0UqDRI9jPe3pDfCCfTtH0=
+
+Name: chrome/content/noscript/NoScript_License.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NrUoK6LI7vWvTkknJ6hgfw==
+SHA1-Digest: uqtHOuEANw0yaB8FG+uGsIK+NXg=
+
+Name: chrome/content/noscript/noscriptBM.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: f5sDrEAtEYLbIQfpZYvj2g==
+SHA1-Digest: kBwjco19lSNQbXYt+C/c5snJOyo=
+
+Name: chrome/content/noscript/noscriptBMOverlay.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aXhUS7jXvNeb8gWencVFtw==
+SHA1-Digest: ZNPYutqQUp0KUVekLkMHIEkKqiw=
+
+Name: chrome/content/noscript/noscriptOptions.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tiYBVlwu9OcbdhBS8o3bPQ==
+SHA1-Digest: T49pgwgJ/iqnm8LyzNNY6FROed8=
+
+Name: chrome/content/noscript/noscriptOptions.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1BTqVjqipbVFoSCSEeTefw==
+SHA1-Digest: T4a9uqQZ91qFBGu9ZTSJVgC9dro=
+
+Name: chrome/content/noscript/noscriptOverlay.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xi561XztyMdFY1bE9JbAdA==
+SHA1-Digest: owlrEh8/a8hkq5eU4axv6cu4Slc=
+
+Name: chrome/content/noscript/noscriptOverlay.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: giWGrZcCCtlN82SQSU8CmA==
+SHA1-Digest: wagI/eCNsEv12PDTczIYFLZcsQU=
+
+Name: chrome/content/noscript/noscriptOverlayFx57.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SqC2axa7K+oRAA6mO+Q+qw==
+SHA1-Digest: jWWCtJsmGeh7UhGy8ptRe5GSP14=
+
+Name: chrome/content/noscript/PasteHandler.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0zIzYcZR5CMzFDIwkJtAKg==
+SHA1-Digest: vflWxtckVsNjaih2Kk8eCjdGU3s=
+
+Name: chrome/content/noscript/Plugins.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rSGF5A3AGXt4e1GXxFKboA==
+SHA1-Digest: TYWN7GGZVcQ2DdL2qgLdHzAbzv4=
+
+Name: chrome/content/noscript/Policy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: b7NfiFJ6yI/DD2EFwMQQGQ==
+SHA1-Digest: ayuvuVotiO21rhvYerGeSbKuRek=
+
+Name: chrome/content/noscript/Profiler.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X0QuBLQkAydLZfJx5djdhA==
+SHA1-Digest: s7kDNyVGtgwoLIDgVBxScm1BARI=
+
+Name: chrome/content/noscript/Removal.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cMpc9HMnCmQT+Koynjmdrg==
+SHA1-Digest: /wuq2zCx54vCUM+vmmDJU2kYJ5I=
+
+Name: chrome/content/noscript/RequestWatchdog.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XG5fZsqgj1JkygBQUErAyQ==
+SHA1-Digest: DZs9i9nhj38XO72GaUftxylBj3w=
+
+Name: chrome/content/noscript/Restartless.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZO5SMpire+gwi7iVcNtNTA==
+SHA1-Digest: F/sqQAyA1b/2FzAn+/ppuLC3tnA=
+
+Name: chrome/content/noscript/ScriptlessBGThumbs.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: W+HEtUS6k5za++bSAdqagQ==
+SHA1-Digest: G97emYsx9q8EiY6knedB1wFa2KI=
+
+Name: chrome/content/noscript/ScriptSurrogate.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lTBQ5BFEOFr/wslN/KWkOA==
+SHA1-Digest: jBBZSkI36jE8uNNyD0egBcy9c9M=
+
+Name: chrome/content/noscript/SiteUtils.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mtidullG9M5wNaav6jUp9g==
+SHA1-Digest: vIf3dZ2AM/otsWVn+E76b2z+Hac=
+
+Name: chrome/content/noscript/Strings.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MyozOK29iSPfcDLHVkII2A==
+SHA1-Digest: ltYRJ4foksAWkorfCfZ+xKIH3mE=
+
+Name: chrome/content/noscript/SyntaxChecker.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Tb+QaEGtSY7gwUmV7ZRigw==
+SHA1-Digest: i8VN8gDpd1KonEnLoC4ysXnWbWU=
+
+Name: chrome/content/noscript/Thread.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IGjiBcb31odzh1vXJRPDIg==
+SHA1-Digest: DCc/MQS5IZg5Ar0Jl5z5CJc54qg=
+
+Name: chrome/content/noscript/tree-copy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mNI3Z5R90TOmuMXA4ZvmYw==
+SHA1-Digest: vrTKbl7kvlvqSFIRpUSyDDhFFVQ=
+
+Name: chrome/content/noscript/UISync.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: eSLnENggl3Hs1kNO6kSHUg==
+SHA1-Digest: JCGsKPc36b7zByJy4UNgiaxY3J8=
+
+Name: chrome/content/noscript/URIValidator.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YFxdlTyr0DoYht9BPJjxgw==
+SHA1-Digest: YW3PmH2KYhx4nVKuJjhROY3xv4o=
+
+Name: chrome/content/noscript/WebExt.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xoF112sW4CN8+DeINsOafw==
+SHA1-Digest: TUiJloR/Pn8+BJxgE9Rz44Mn2kg=
+
+Name: chrome/content/noscript/WebGLInterception.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fyuOnlrP63ZtR5REsSG4hw==
+SHA1-Digest: GMED7x/AdKiFdxnVIOAwLjJbn/A=
+
+Name: chrome/content/noscript/WinScript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vhpD/sMtH20AD9ldNl9aQQ==
+SHA1-Digest: i+LJ59NAhmROaKPkIZPibPOqqfI=
+
+Name: chrome/locale/ar/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: H1PKSAifSJINiJkmWT2kFQ==
+SHA1-Digest: /K3W0C89MEzSUSqYh0LrK/CWSho=
+
+Name: chrome/locale/ar/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: duVPtutLf1IW1Y/ttghjNQ==
+SHA1-Digest: R1KipX0I1PiS3IyZx5ms0v7r5HI=
+
+Name: chrome/locale/ar/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Tk5JLy++0OLwuj2bQH7+Wg==
+SHA1-Digest: O4ByyYSUMhwMQdCe/pP66XQGD28=
+
+Name: chrome/locale/be-BY/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +89rwtXZOfrQwhjW+7AhvQ==
+SHA1-Digest: 5W2yJAiktdXKrCVe+2M/0/dYgbw=
+
+Name: chrome/locale/be-BY/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ln25XcNv3E4sNmEfxIo+Mg==
+SHA1-Digest: +aLS1OsJeO7/BqMU60tfCDVySMY=
+
+Name: chrome/locale/be-BY/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: a3eKz8d3jSnApPGWptBxDg==
+SHA1-Digest: 3gwXlLSg6qoN+pOd/771IhD7ZtQ=
+
+Name: chrome/locale/bg-BG/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: f6zhTDFvZpey1Q+6kaC5PA==
+SHA1-Digest: sNaAoiFjfluUFYT3NJO8pa0cBr4=
+
+Name: chrome/locale/bg-BG/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uWjMtkLPZ1hZ8KXI5oOLGw==
+SHA1-Digest: XxInKtHyc0ezFvpMjz7vH9iKNzw=
+
+Name: chrome/locale/bg-BG/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iygo4KqEnL0QrF6nOZhJqA==
+SHA1-Digest: xwKlq1r6O8MI135JpVXKiPSn+/8=
+
+Name: chrome/locale/bn-IN/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qrhfTzVSvcCE931BTILOYg==
+SHA1-Digest: P0fryPQLGhuFt0wFxXF3+YEEv2U=
+
+Name: chrome/locale/bn-IN/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xketljT3Hi0yeQgDtQ78BQ==
+SHA1-Digest: AZTHsA9FKyusJz4S2G+CdpMpTUU=
+
+Name: chrome/locale/bn-IN/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nz6Mfj0XD037il5sKP3dSQ==
+SHA1-Digest: iDJR1cFiA8TG208RVZHKmGjuWhk=
+
+Name: chrome/locale/ca-AD/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UKFgmCzaZmkBDhCKAX85hg==
+SHA1-Digest: kflYT0pG5PkXqcxExu1I32CKtmU=
+
+Name: chrome/locale/ca-AD/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: F3cVYLRFcBmhVxBdIZ6T8g==
+SHA1-Digest: ve6KJOqXk8LOa/qhE1l64bptg3c=
+
+Name: chrome/locale/ca-AD/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HXx2g8blX73iA4PC8yCqBg==
+SHA1-Digest: LkwAuOxXiEofe8H5i689ENE5WBQ=
+
+Name: chrome/locale/cs-CZ/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZohfG1V9zYBVGXp6Yg7Bfw==
+SHA1-Digest: uvHG2IX5kUIz3oj8KZ9WeopZNvk=
+
+Name: chrome/locale/cs-CZ/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: adIcMwPEIRy4mruwT34pjQ==
+SHA1-Digest: 8+Oyzov234BYHMbwh+vED6dkIU0=
+
+Name: chrome/locale/cs-CZ/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gFDS5aOP+8qZ19HObKWr1w==
+SHA1-Digest: RpA/hVNoUCi/neTvjkFtowkmJkI=
+
+Name: chrome/locale/cy-GB/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MXEXlCoWk2aroypJvAqimw==
+SHA1-Digest: QJMBA6MQxw4D8NcGjgbaRU5RMn8=
+
+Name: chrome/locale/cy-GB/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PMeDLceT6rjnfpNxSoWhag==
+SHA1-Digest: fTKx+NBN+7EoFd18y/pCMsRwMc0=
+
+Name: chrome/locale/cy-GB/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BU6T073gIOqOn/FbcvccHA==
+SHA1-Digest: SVxDCG8ncyIPIx4lWEYdF2wuHeQ=
+
+Name: chrome/locale/da/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DrzXOK58me0lcL/k9sdprw==
+SHA1-Digest: pbxJdqyMQHZfqpXhtN51RN56DUM=
+
+Name: chrome/locale/da/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qme8p8v7Zv7njUHR7QIbvQ==
+SHA1-Digest: m2CAqoexC4rehqT36nffoFMpaqw=
+
+Name: chrome/locale/da/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aA8JEUo9NLZ1Spi0Cy6xdg==
+SHA1-Digest: 4Ai+MzGkOVpAhICJHUnj8QzfS+E=
+
+Name: chrome/locale/de/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6IOkbstO9aSpxtpNTM+PGQ==
+SHA1-Digest: UvqiVC7ZhZNpetUZ3sD5OmBHshI=
+
+Name: chrome/locale/de/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6ovO2E1iXkNJq7RhdUbZ9g==
+SHA1-Digest: vnVpWBMat9tQhapIwIFf0tpZzIs=
+
+Name: chrome/locale/de/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zihOK0jHUuh9b1GVTxpR1A==
+SHA1-Digest: NCo1Juh6zxsOjGnZadv3bKDKeUk=
+
+Name: chrome/locale/el/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BF1Mg7Q6eTCuWBsgxaBcCA==
+SHA1-Digest: FzzY/kDgk9oB/yfhbthUH+3K+p0=
+
+Name: chrome/locale/el/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ERmth2uk5N5XLNGCAcesyQ==
+SHA1-Digest: PjEirajDKPRKgYzdklV5yw7nJXY=
+
+Name: chrome/locale/el/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4iw2LAgSJOhik5b5XzWCaQ==
+SHA1-Digest: GMu+CDk91eTD0+qu5I0aR7uWmgY=
+
+Name: chrome/locale/en-GB/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +CSdXzAU9jS9h21t8241Jg==
+SHA1-Digest: HUexKIcNtXuADoCrQga0QJQJMlw=
+
+Name: chrome/locale/en-GB/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pAeB8y1yZea208ZUTNRdkA==
+SHA1-Digest: 3UTRWFo8nEfQ2noKblg46z+gsKc=
+
+Name: chrome/locale/en-GB/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4RyELqQkIFWWHjiSX97zEg==
+SHA1-Digest: bPJM8AnF3Y6r/WHg8kBs87JwCfE=
+
+Name: chrome/locale/en-US/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZoKJKHADt2VViRef6nKdPA==
+SHA1-Digest: wPgAT8TTe+fOk2o/kzl27p7hiEA=
+
+Name: chrome/locale/en-US/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: atiSkqxjq4LWRL5wt7K/OA==
+SHA1-Digest: +0WOKfsdIbG2+WRJt2WPnW9YkgA=
+
+Name: chrome/locale/en-US/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZuJMoRA5YMlSI99AmMDOIg==
+SHA1-Digest: irkaYvdvYIyJHnIQS9zC4qUeSwA=
+
+Name: chrome/locale/eo/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S/Z7AzGHaDJ0/rChoZDFrw==
+SHA1-Digest: wImWq9Q0F9cVLKYccfgHDGULZUw=
+
+Name: chrome/locale/eo/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Li6xf8AClkZjxQq0t6pvYA==
+SHA1-Digest: hP/S6xnD7RG5R+U2og0sOfFz3n4=
+
+Name: chrome/locale/eo/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LiDacreijEpiyi3PJZl07Q==
+SHA1-Digest: aW70/P05nBKBHFrRIBq8smPZssY=
+
+Name: chrome/locale/es-AR/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8KW0EyIf3MaZi7NoI2wXtQ==
+SHA1-Digest: OdCbf6/mUi60G84lQxF9xvdj2i4=
+
+Name: chrome/locale/es-AR/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0OKnLcFF31L2nTCf0YO08g==
+SHA1-Digest: S5uMu0nycOWLyVW3Gsmxt984WYQ=
+
+Name: chrome/locale/es-AR/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oaKn4evzKpOvAFD6pNuMig==
+SHA1-Digest: fktFfqmNbpGFrqt46XbAvSwACz8=
+
+Name: chrome/locale/es-CL/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9gezd3zNEEndj84MC/WpsQ==
+SHA1-Digest: bANkMTYDxZWaaM8hLQZ3kFpkazo=
+
+Name: chrome/locale/es-CL/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7EwIk+/kDtNMKuPxXoM01g==
+SHA1-Digest: KTgWMCwsfZigPESdK11a1bo2zlc=
+
+Name: chrome/locale/es-CL/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4RyELqQkIFWWHjiSX97zEg==
+SHA1-Digest: bPJM8AnF3Y6r/WHg8kBs87JwCfE=
+
+Name: chrome/locale/es-ES/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BXvY0gQZ1ZiZM1wdsfQRIg==
+SHA1-Digest: VfTz8hfRFURHfliKGnVqXQxXFks=
+
+Name: chrome/locale/es-ES/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: c423XYNznfz5/mSH3jQV+Q==
+SHA1-Digest: 9vi2YrVeDa+S4sFSB8ip+vLDjz4=
+
+Name: chrome/locale/es-ES/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bE3yxTPAwWTZGf4fkufkxA==
+SHA1-Digest: qi3KJ4QAxpNhV2synkhjVqg6LVU=
+
+Name: chrome/locale/et-EE/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9BwVV5d6YStKdj0qkZqA4Q==
+SHA1-Digest: tLipgYuD6A9JdnK6tunUWzslLaM=
+
+Name: chrome/locale/et-EE/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gGiHCnWTTX3f1wLOO3fEyA==
+SHA1-Digest: 3l30PVtOzoIY+uqckSHoTILVGpI=
+
+Name: chrome/locale/et-EE/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3cEQkwxPu4c6JO90339HTw==
+SHA1-Digest: Bw/vHOOo0xvsmZI+BCVe7GrvR+o=
+
+Name: chrome/locale/eu/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CqIZnweKuwvypJIIBYeupA==
+SHA1-Digest: f2/STGGGc0EN5ASWPXXelE41f0g=
+
+Name: chrome/locale/eu/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: x4dk+KxTBw2V7XW2yXPPxA==
+SHA1-Digest: yeO90zVwxgR4FJKr4wgg82cPs7E=
+
+Name: chrome/locale/eu/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: d9bhACeHwDLDmmfvOSZdgQ==
+SHA1-Digest: AXjqd2PrJKQqbN8wbzGNXxNLGVk=
+
+Name: chrome/locale/fa-IR/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CRleqD8ui9NDjS6bxlO3aw==
+SHA1-Digest: azpjHw2wj68uxic90eEifEP6hdk=
+
+Name: chrome/locale/fa-IR/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ka5je+Yay9kX/dXXrkiaFQ==
+SHA1-Digest: GmX9m0QXJHtOAf+kKD76vDqajug=
+
+Name: chrome/locale/fa-IR/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: k7mij/AASkAdHs9ddJZ8jg==
+SHA1-Digest: 4ZebRuPX1A3FRFb27zfh7DqWqcQ=
+
+Name: chrome/locale/fi/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bf8b0UUoDNAIE+xB6rCjJw==
+SHA1-Digest: zn4bfaSGlqZv6201f53lOwwUGig=
+
+Name: chrome/locale/fi/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XZlekzj5gBlOZmfPaTIwDA==
+SHA1-Digest: wcy7S9hHZp1UHjGMFtY4iWiAq/I=
+
+Name: chrome/locale/fi/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vaTA9CK5ClXm6GJUn1mgig==
+SHA1-Digest: 8BCVVuiktX8p73XxcGvY9TQG7qk=
+
+Name: chrome/locale/fr/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +QJInwOz5QuNlYyPZhtf9g==
+SHA1-Digest: /jz7SZgj4l8NBAXZxNUV6YvNmq0=
+
+Name: chrome/locale/fr/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 92Ik1EBAGBkH1sqKPVCqzg==
+SHA1-Digest: et4P5I7CgiU7SWSFPlxdjhhkvy0=
+
+Name: chrome/locale/fr/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6xTty2Zi0Aqy2vQyEMbH5Q==
+SHA1-Digest: Guj92PS5w7izlO7juHvH87eQR0w=
+
+Name: chrome/locale/gl-ES/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Hfd5dQI1GI1c7kpJ6mf4ig==
+SHA1-Digest: LU8wXSphmmd7qv/nXZxsmy5/VZ8=
+
+Name: chrome/locale/gl-ES/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5p3u0m+PtfUPq2dU0N9CGA==
+SHA1-Digest: oycqhT5us/Ngsaj6oSu61QVI8I4=
+
+Name: chrome/locale/gl-ES/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: a5iixFttuTQCYvuu9vOYEg==
+SHA1-Digest: rZtQtJ0bc1m+eDFvuPPJ56f5fNE=
+
+Name: chrome/locale/he-IL/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AYqLJ4TnQ2CvsXJGolWr1Q==
+SHA1-Digest: s6RAVGXfmmTceVFCjTgg1rFDnr8=
+
+Name: chrome/locale/he-IL/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wnfmEziR1fx0q+jztP1KDg==
+SHA1-Digest: P9FxOTmFtaJ+9y6BYqsTG3ivVS4=
+
+Name: chrome/locale/he-IL/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nrglQQ29LKKKBSSdKDhYgA==
+SHA1-Digest: M3OPVISEJldI6J1eMfmLOLAP+jg=
+
+Name: chrome/locale/hr-HR/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Rc55SBCw09JoulETHfySpw==
+SHA1-Digest: wV5mzFilGjLReuYFadHBNBuVZ4k=
+
+Name: chrome/locale/hr-HR/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9DfHshIX234rIeedyE9kbA==
+SHA1-Digest: oZMEUOt1pKo7uK9Ee0JlEHkGIAg=
+
+Name: chrome/locale/hr-HR/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MGyPj/e9u6Xd1ASEBL8+2w==
+SHA1-Digest: hNgFNYuSCvD93I+OQo3wmZVRkrI=
+
+Name: chrome/locale/hsb/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Vt1vthMN/qcBznPAuUhJPw==
+SHA1-Digest: t5wMEPVua4wuGwBHf97L7FLdbwo=
+
+Name: chrome/locale/hsb/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Uji1PfRNGb8ONc4YqqpMVQ==
+SHA1-Digest: NABT9xzpH73GigI0NJwHWCO0nH0=
+
+Name: chrome/locale/hsb/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OaJjcDM7WXFLGqc7uy7ajA==
+SHA1-Digest: ZG8LUfEHveQS8tMPEcTiY8JG6Ww=
+
+Name: chrome/locale/hu-HU/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6NzsPuDmHvMxkv/PMXkSyw==
+SHA1-Digest: vZzf9pMQ/01ovCpCdaHSAOBoH/o=
+
+Name: chrome/locale/hu-HU/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VdXyHjYVErH7kaP96Q44KA==
+SHA1-Digest: WeW2HtsVBiWOsyPxOE/Nrkjfh/0=
+
+Name: chrome/locale/hu-HU/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: p4BYQRboXidrYSDxKip7bQ==
+SHA1-Digest: XO39EAm8pVvoL6e5n0Mez0Az4nY=
+
+Name: chrome/locale/id-ID/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dIBzeuFCGHkI+bwy+WQWVg==
+SHA1-Digest: f98lOBm8U6bwxWqz/51Ntq5SNxw=
+
+Name: chrome/locale/id-ID/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CldUSCTC1O6s6KjXeYofUw==
+SHA1-Digest: nHceFcur61m7Ww40om1OjHaFcEQ=
+
+Name: chrome/locale/id-ID/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mEvjrDVZ2VF21ybZeKXfVA==
+SHA1-Digest: 4hwf6lvFFVTwKHTbhrWB82MiT1s=
+
+Name: chrome/locale/it/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: szDseo8MxbOjW6+DPGnYRw==
+SHA1-Digest: AXC2nbKZGSkqbC8aIXiPvcMJImc=
+
+Name: chrome/locale/it/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0tCsUzZLxjzW5+Db1y7OlQ==
+SHA1-Digest: BjXDKUnOsgXe3qQH+64XgdMi/JU=
+
+Name: chrome/locale/it/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 300AT5avEzYHPZidIGbpxw==
+SHA1-Digest: qtPdVYakMi9zY9gbcq55ZKEHqig=
+
+Name: chrome/locale/ja-JP/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: izSJ0LVy5QeQc1ZnNAYc3g==
+SHA1-Digest: sta5MoQ0XEGJhUl65YPJ5hdtt1A=
+
+Name: chrome/locale/ja-JP/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6T3wLnikrby+lggClEON5Q==
+SHA1-Digest: CQq0D4n8VXSB3ZrJDRg8ahOGvi0=
+
+Name: chrome/locale/ja-JP/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: R33ya4Am10qqVxCKoT7PzA==
+SHA1-Digest: xDos2JoHKI3qrg3lb6X0peqWJeo=
+
+Name: chrome/locale/kk-KZ/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Pwhp59mc3uryK2XdsGBkeg==
+SHA1-Digest: BmojPYZwczyr7siGSTqMj6PRlG8=
+
+Name: chrome/locale/kk-KZ/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 236v/ltGSRTMiLrpCw2lwg==
+SHA1-Digest: oV3JN2Jfd3UwDAeXH6IJCJUjRTA=
+
+Name: chrome/locale/kk-KZ/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: V47tAhqRCr3FxYHM4Fwy8A==
+SHA1-Digest: xX8nalXj5/S3DS3HzNIP6KagUio=
+
+Name: chrome/locale/km-KH/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: arC5tu88LG5dzNvh3JzUpg==
+SHA1-Digest: mWY8HPNe6NqhGrPI3JdngLbbah4=
+
+Name: chrome/locale/km-KH/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mGA0TUipil1xYsK3Y3okvA==
+SHA1-Digest: REnAqwvCZzyFvSXPI29Ape0xQLk=
+
+Name: chrome/locale/km-KH/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4RyELqQkIFWWHjiSX97zEg==
+SHA1-Digest: bPJM8AnF3Y6r/WHg8kBs87JwCfE=
+
+Name: chrome/locale/ko-KR/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UbEUA1rLa2BQWzMR0P1Ekg==
+SHA1-Digest: 44MXu+9gzxhh8ayl4eczJepe1W4=
+
+Name: chrome/locale/ko-KR/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sJHt9vEtrFqKixG87ThhSQ==
+SHA1-Digest: A157eV5MLrU2DvwanOehD9mpmas=
+
+Name: chrome/locale/ko-KR/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: grGNi0/zl1BZ0QnoRf/u3A==
+SHA1-Digest: khmDFe+hobjJ76rK0CX0ByUHwYc=
+
+Name: chrome/locale/lt/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: v9lKh/yScY1EQW73mFr1uw==
+SHA1-Digest: OXJotNTKa+qW3KH2xglglsfyXps=
+
+Name: chrome/locale/lt/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FlixUAS1jftb7jWKIjoo5A==
+SHA1-Digest: 4FNpIjAJ7fle7RW/r9HrtQ4NlhI=
+
+Name: chrome/locale/lt/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7HhAo3BozszuKMv1QIkdrA==
+SHA1-Digest: fEroeFGpiOuyVDp3BQCrdVtY+lg=
+
+Name: chrome/locale/mk-MK/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sRTwduQrLC2elm6/tMrrYg==
+SHA1-Digest: FK2I4LKVCMG61glufAEd4Xu3AHo=
+
+Name: chrome/locale/mk-MK/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5imors+kvXAYBesMJPBcXA==
+SHA1-Digest: +UTeEYY1mgjMXzejvrmBYNnD1Oc=
+
+Name: chrome/locale/mk-MK/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S9+ga5Zt26F7rNOksg+43Q==
+SHA1-Digest: iMkkSAyz9IykMU86kPXFvPQKaYM=
+
+Name: chrome/locale/ms-MY/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 28gVoE/v1KgD+hLErzqy3A==
+SHA1-Digest: cfSmI7vUD8EMK3m2vZPKZpYFDPU=
+
+Name: chrome/locale/ms-MY/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: b2uudxiBZ7MDQq2IhWUcyw==
+SHA1-Digest: QSb6Ny3V5rGt+ioxEVEd2L1vklg=
+
+Name: chrome/locale/ms-MY/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jcciD9hK3xLGilkF08MaWA==
+SHA1-Digest: BGe9+DNh5xUX9NrjZeu/5ZcHim0=
+
+Name: chrome/locale/nb-NO/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vUI3CZaZlcKs3sNWkRembw==
+SHA1-Digest: wVO4Zccxj/r0+ZVVvg8Y4t2tE90=
+
+Name: chrome/locale/nb-NO/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: D6O2GsbZcptTR6bf8x/JeA==
+SHA1-Digest: qIcLN21vPu07WaY0QX0clE2WXlU=
+
+Name: chrome/locale/nb-NO/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ic9dKQeDVnkX6i3WOtSYZQ==
+SHA1-Digest: wJvkMHGCkHOooNIFSIgXPJkAAXs=
+
+Name: chrome/locale/nl/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IL6Os5f6Eq6wF3SF7RSMYg==
+SHA1-Digest: ocnQh9+4tavoFD6kFCm1NX/oBRY=
+
+Name: chrome/locale/nl/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FaUyTIjQdB3z8jFvciAs/w==
+SHA1-Digest: YI0eDAg830pDYzsPxJHKIpMeRcw=
+
+Name: chrome/locale/nl/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: eu0p31xS6/p+iLSnmTbarQ==
+SHA1-Digest: +3syHhliuXI/GPVzD7p5yHnzRck=
+
+Name: chrome/locale/pl/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Uql5SPnPNu3hkYRzqIljEQ==
+SHA1-Digest: I1Att5q7dUDdAIbhroTZi1FZ0os=
+
+Name: chrome/locale/pl/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0yZk9RQexEQIHkJ0KKmp2w==
+SHA1-Digest: +TY05HCdqh2AODRMpSX7oZOGSLI=
+
+Name: chrome/locale/pl/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bFm9VMKMczkoQEPwy0+QWg==
+SHA1-Digest: gAmSxXOea/MALl+tlxNZyyfr/1Y=
+
+Name: chrome/locale/pt-BR/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UmO5kXFLjjKk5w6EKCZHVQ==
+SHA1-Digest: P9ocXE7IK6wNPXiIr51c2D+MoXs=
+
+Name: chrome/locale/pt-BR/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NCneptn9SRDFG73Vjs7OEg==
+SHA1-Digest: zeHwRUTPKz2Qo3ESh+ATGxPpuKw=
+
+Name: chrome/locale/pt-BR/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xOQZP6XK3mX/7fsCyLyUTw==
+SHA1-Digest: zNq1QtZfwXiUNUPoV15UZcqpIVU=
+
+Name: chrome/locale/pt-PT/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: s6ho5LRsvRJRFA7mcyHvhw==
+SHA1-Digest: F5Gzudwcvj9tdqcBsxGr0efxB6Y=
+
+Name: chrome/locale/pt-PT/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iJ28fRSoC//NkNIQc3g+ng==
+SHA1-Digest: 87KaSQ+N8xKR5Oi6ZvOX4F53PcE=
+
+Name: chrome/locale/pt-PT/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iakHbPRXI1PdJQfbB0oBDA==
+SHA1-Digest: e/Gp4Cr9oX3VYpNyVi0ZvUyURKI=
+
+Name: chrome/locale/ro/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ilHOAJFL6Bf7eqa5Shcjgg==
+SHA1-Digest: 2lcDUg+dqYSX7FOY4prf39S61Uk=
+
+Name: chrome/locale/ro/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8D5JGGTnuGvAzJXISq/R1g==
+SHA1-Digest: 4CoSfEvGpojPstKYJt6s1s1WJLA=
+
+Name: chrome/locale/ro/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Btwz6U03u2sp78j8B2aRfA==
+SHA1-Digest: 88xBeGViJWjUKWqRGwdVk4UV0Sc=
+
+Name: chrome/locale/ru-RU/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VsiZXvHvwkTZxFP6GMyijg==
+SHA1-Digest: xyqr0DbphSybwqbSZvhPCInLzTI=
+
+Name: chrome/locale/ru-RU/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ux+1RrYMp234a4HTq1Cq+A==
+SHA1-Digest: cjaPgnoomL+QT2Tbde7IG4NgQQs=
+
+Name: chrome/locale/ru-RU/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jILlBqRqrqw5+/Omqb0YKg==
+SHA1-Digest: RNP+RuTFhVOe35ZCNLDN4AsRM4k=
+
+Name: chrome/locale/sk-SK/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DTOsXNuXy02Z+OeTxo6reQ==
+SHA1-Digest: l4ysX3tnwlN4hCoasmYaODXXcoA=
+
+Name: chrome/locale/sk-SK/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cDgE5PmNm5HbHN2xH6Jg1Q==
+SHA1-Digest: KCiXQtq1qnozJfwYZe+Y+D8iJbk=
+
+Name: chrome/locale/sk-SK/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BW/jbOXjV4NVJ06wD4kPRw==
+SHA1-Digest: YL5mDPfTWewXFqIbfGMh22jyiwQ=
+
+Name: chrome/locale/sl-SI/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +Fp1n7MCKptDGPk4N5ekwg==
+SHA1-Digest: vyVw61FTz5MIKLbhdN0RhokcOFQ=
+
+Name: chrome/locale/sl-SI/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xshIOI2wn6LYmrLHWq4CNg==
+SHA1-Digest: 6Drz+ZnSRp5pLEJBbgN4hUijPi8=
+
+Name: chrome/locale/sl-SI/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fXp7YOdIzqR+qgKpsYzkBw==
+SHA1-Digest: aTV7QM/IOQ8LY1cCr3Zehn+1cgg=
+
+Name: chrome/locale/sr-RS/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ArWtVmqV5m/TENtQxzog3g==
+SHA1-Digest: pzRQpOrfox3yFbjBJA7q9RxkUCI=
+
+Name: chrome/locale/sr-RS/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lp7LIlSao8OyBNy+m6thkg==
+SHA1-Digest: ZAuBrfgd4lIckvMft/nvCVoFR6M=
+
+Name: chrome/locale/sr-RS/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qgBG8y0U/8fu+zLkT9BlVQ==
+SHA1-Digest: xIrU7i0tMpfq/dXgNu0lAsdQ4Ks=
+
+Name: chrome/locale/sr/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3egQPOWjhe4oIgIaplqajQ==
+SHA1-Digest: 4M+KBXnUlLkFiRm5/VCk5JcVYg0=
+
+Name: chrome/locale/sr/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UxeDuhEq+HDikRkPJgWTsQ==
+SHA1-Digest: OP8xt7JeYbpRs8SpTlCSs8Z6HbY=
+
+Name: chrome/locale/sr/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rMUyUzCmhZzogJEvV9XcBQ==
+SHA1-Digest: JbSSA15eVmxCLXqZy9v76vQlWBs=
+
+Name: chrome/locale/sv-SE/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bwgJ5Z7Js12HC2H3F5yp3A==
+SHA1-Digest: DZdGzRyvtAVDdd+ieOShWPb/K/w=
+
+Name: chrome/locale/sv-SE/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0iyUz2Dn4W248auTL/b22A==
+SHA1-Digest: ZBdCDX0522Es6MURxTPytlOX3ZU=
+
+Name: chrome/locale/sv-SE/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UjAppeaDbvomMY6pu9nSiA==
+SHA1-Digest: Ti3CtkAHWsVIhggsDqOkOGSIEII=
+
+Name: chrome/locale/te-IN/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZoKJKHADt2VViRef6nKdPA==
+SHA1-Digest: wPgAT8TTe+fOk2o/kzl27p7hiEA=
+
+Name: chrome/locale/te-IN/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J9AasP1Zhl5EBDaJaaewJA==
+SHA1-Digest: vGytdv7S9D+1lu3+S7VQ4egrcUk=
+
+Name: chrome/locale/te-IN/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4RyELqQkIFWWHjiSX97zEg==
+SHA1-Digest: bPJM8AnF3Y6r/WHg8kBs87JwCfE=
+
+Name: chrome/locale/th/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: eypIbD8OKD0tEP4O64ZZ4g==
+SHA1-Digest: E9iNrmms3GPVPG83auLwHZhc3Yk=
+
+Name: chrome/locale/th/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wndduv43VUAkpQW2+OhGhg==
+SHA1-Digest: zt6Yp7URGTFQ/PfsCXMZmMW711c=
+
+Name: chrome/locale/th/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8TnyGgFpld+yJppN/5AWiA==
+SHA1-Digest: v3FaUdU53xPJb/LKBkJZy10qQ/s=
+
+Name: chrome/locale/tr/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KbBsReUK3st7rNTqOHe4LQ==
+SHA1-Digest: fyquCmWmcvO+XAQZEpRKesve1qE=
+
+Name: chrome/locale/tr/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rew6wRQFAEYalclunb912Q==
+SHA1-Digest: vi8ifK2HdwI21f6vd8xSucTTM00=
+
+Name: chrome/locale/tr/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OHjlr9v5XCP7z08JXaSp6Q==
+SHA1-Digest: e31jrvOCPdph2ccP7zWBEHgxxuY=
+
+Name: chrome/locale/uk/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fDaihgpC54MKtv6HB+zWwg==
+SHA1-Digest: YBc/+0+tXAETxynjV0pXTEt27sU=
+
+Name: chrome/locale/uk/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZvJ6Kt9TIzqivX8jBR+CoA==
+SHA1-Digest: +Vnp9wyXhsg15CQfKWAg/gQXlP8=
+
+Name: chrome/locale/uk/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0XzOgSxToCDLAhYXvpipUQ==
+SHA1-Digest: s6HpUKIPlU+GN3J3VYoajquYqgE=
+
+Name: chrome/locale/vi/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oZD3KvYI7IFj9Of/X8rBXQ==
+SHA1-Digest: jJ2uCXM0ppagHEC8Zga3rBAHiKY=
+
+Name: chrome/locale/vi/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: e8tSHwp4MYnggrYRX2xfXA==
+SHA1-Digest: wrQu9C/7/Zi0mT8pFtVT5UfCLbQ=
+
+Name: chrome/locale/vi/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +8WvTUdi8g9gTGEKQqmtBA==
+SHA1-Digest: nB418QU4XKNRNb34n19eooZrz/Y=
+
+Name: chrome/locale/zh-CN/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0Ys3EBssgf4cIC6mjb60hQ==
+SHA1-Digest: sjSFXUWhoyS0AL/uEOcWbEWXZiA=
+
+Name: chrome/locale/zh-CN/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ajqgyimAGw8PZO3DijWvCg==
+SHA1-Digest: ytYJPa0JJfJPrRVzk/IMSz69oqA=
+
+Name: chrome/locale/zh-CN/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wk6HO98GGOrtqWbhFVYmAQ==
+SHA1-Digest: XbGqU0GpUF1MzHq3mNPAzdAh7hI=
+
+Name: chrome/locale/zh-TW/noscript/about.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qwt33RzCUTiTXZvmcHDf8A==
+SHA1-Digest: 0ezRfaXTFlZHSTxEUFVH9gh3mvU=
+
+Name: chrome/locale/zh-TW/noscript/noscript.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: T07+OomtNFw9X/QNmgmcqg==
+SHA1-Digest: DhUHxVr04+/mEufM1/kph4/mSUU=
+
+Name: chrome/locale/zh-TW/noscript/noscript.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1qofp8rmxKkpGeQ9dT52qw==
+SHA1-Digest: DR08JnSqD8CFvd5n7198L/rPS8g=
+
+Name: chrome/skin/classic/noscript/abe16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0f+bdIdPfO1uFdtXgFBbhA==
+SHA1-Digest: RB623q5qAo65/aMou6xvwUMqi+U=
+
+Name: chrome/skin/classic/noscript/about.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1MPIjHChh9OWf9aWdVMmyg==
+SHA1-Digest: 5lk9kwULwBF3gR7uiAnzoFF9/jU=
+
+Name: chrome/skin/classic/noscript/block.wav
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SCJJyOYc5akoQVFI56ilkg==
+SHA1-Digest: za5cmy/DJGXu9DW+Co/WxBtUpkA=
+
+Name: chrome/skin/classic/noscript/browser.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: D8HX5TmXFrDK1/EQZFrtYQ==
+SHA1-Digest: DzJMQq4BfmoDeiE5VLwL9TD6WKE=
+
+Name: chrome/skin/classic/noscript/clearclick16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TWQDE/JsNJRVOlWnBHFP4g==
+SHA1-Digest: XsrxYjqTKj9b1JCgG4HyVUUzj34=
+
+Name: chrome/skin/classic/noscript/close.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TkLZGXGKw4XYQY3+bT0MtA==
+SHA1-Digest: tznx4NpA9+9lriTn0rAqkEpWdJ8=
+
+Name: chrome/skin/classic/noscript/console16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PAK2Xy8ruVh0NFyfOd0wQg==
+SHA1-Digest: c7Bl2/EInjObDE44sleeUFby6A4=
+
+Name: chrome/skin/classic/noscript/content.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aLMp2piT40CZx9itXLnJQA==
+SHA1-Digest: rcg7GeeTSRscbqD9i0bNnzLlkvw=
+
+Name: chrome/skin/classic/noscript/ef-no16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jJTPkF2tPRZ2dcBcqyPsag==
+SHA1-Digest: s317Fbkaj/E9ucnjtyD561eFj6M=
+
+Name: chrome/skin/classic/noscript/ef16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Rqe/Tc0UM1BU2XmUkJht6g==
+SHA1-Digest: sdMWRMgZNPyd/32/cBIROVowYaU=
+
+Name: chrome/skin/classic/noscript/emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CMe0tPLNKuX+skyDU2um+w==
+SHA1-Digest: xJnZ9yX4etJAtu0xuaD9H69AZuk=
+
+Name: chrome/skin/classic/noscript/embed-no16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cU45j7BMCURITH0nHCzOwg==
+SHA1-Digest: WXFW1BuRCbzWPcS7sfv71rVY9gA=
+
+Name: chrome/skin/classic/noscript/embed16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KULnY5e+8KI/mqQazSmLIQ==
+SHA1-Digest: pvP2VYjt64aOK9zVZZ6T9e+M09A=
+
+Name: chrome/skin/classic/noscript/faq16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MpUKBKC453oz9QY8MhBBIQ==
+SHA1-Digest: +EjhrthD7OBY11S16UyQ1f6EEuQ=
+
+Name: chrome/skin/classic/noscript/flash16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2IpsSirB1gG7wqLwcrXYMQ==
+SHA1-Digest: lr/3auKH5yCcj3LyVegycONxnCk=
+
+Name: chrome/skin/classic/noscript/flash32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JwLF0gihiQIOEecRQaSqcw==
+SHA1-Digest: z8FAd1a5h1mcCt8W6hCtiYL+ldw=
+
+Name: chrome/skin/classic/noscript/folder_closed.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4ef9Iz5mrAT2zygkVmeTXw==
+SHA1-Digest: 6PH7XQbXtVW2ed4k+tIbc9+vPJI=
+
+Name: chrome/skin/classic/noscript/folder_open.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X6JVyiimYkimzxeroFPFLA==
+SHA1-Digest: WJoJe9XfZ3zjDrapRQxMyJnTbMc=
+
+Name: chrome/skin/classic/noscript/font.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +TiQ5UAQGwDFRfmoD/u7Og==
+SHA1-Digest: Or6k6bN7ELAIIhyMaa+fMnSPM8Q=
+
+Name: chrome/skin/classic/noscript/glb-emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: N+LGGn6ydTJNVSkyLr/x9A==
+SHA1-Digest: MdE1+cAzk7lRtzPGui46jGki9nY=
+
+Name: chrome/skin/classic/noscript/glb-no16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6krWUZjF2Z/5kjMR1w+hDg==
+SHA1-Digest: 2jLhGclozC/YpblZ2cJQunl3AQA=
+
+Name: chrome/skin/classic/noscript/glb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: M/zJCYV0NKNnGDHp8NOm7A==
+SHA1-Digest: 8pVzthWEQ4DebIR5hCIAnpHrtmc=
+
+Name: chrome/skin/classic/noscript/https16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tQhBG7kV7PMrGplWRPZ/0Q==
+SHA1-Digest: wetnhKHS7U3IviBXlN5QrMMUQBo=
+
+Name: chrome/skin/classic/noscript/ia.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BW45jkS+1GVUP0+ktkxpDg==
+SHA1-Digest: AqtXi1oSu0JKRaJ8qJ/hO08rYOg=
+
+Name: chrome/skin/classic/noscript/icon24.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qkqpz7b/dF+TP3nxGESiPg==
+SHA1-Digest: gWBiFN8s6OO9VpUdYAGb3PQhppM=
+
+Name: chrome/skin/classic/noscript/icon32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TyT13x7d2ICAOf5/jYmrSQ==
+SHA1-Digest: PXFMgKtLr5ZBMdDGutZF99U+1r8=
+
+Name: chrome/skin/classic/noscript/icon64.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9Nyu7MseegFNNFM6Fho+NQ==
+SHA1-Digest: 8u76tleuKt2aS2ruFeQf4kMZA0w=
+
+Name: chrome/skin/classic/noscript/icon80.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dBC2O310i72jx/quDynuSw==
+SHA1-Digest: 0nGihMU+0lIdq39JYBdlNZ9iPIQ=
+
+Name: chrome/skin/classic/noscript/inactive-emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Hq35ZRPbDBi/E+z4m3KyKw==
+SHA1-Digest: hstCFcFJLr36IHrbBhFFM9YK01M=
+
+Name: chrome/skin/classic/noscript/inactive-glb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: m0imn5W+oosnl107Nw4f+g==
+SHA1-Digest: NdapM14Hdlg/QJCBpsgrwtTMUY8=
+
+Name: chrome/skin/classic/noscript/inactive-no-emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fMpFvXo5WabRchDkRa4rvw==
+SHA1-Digest: LWHu0/qUMQ2VVvhIYQRyyS4436c=
+
+Name: chrome/skin/classic/noscript/inactive-no16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: R1dXxebA7ySOzkAtP1cRGQ==
+SHA1-Digest: ZkFAxpzL8JthezttTm30Hbvm8Bw=
+
+Name: chrome/skin/classic/noscript/inactive-prt16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mQ3YgCDL44fkAqu9B8CumA==
+SHA1-Digest: YPY60PNmFHcnuBCnOVODEPxhq6w=
+
+Name: chrome/skin/classic/noscript/inactive-yes16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vIzZMJL8Nsof7Cca0u2kPw==
+SHA1-Digest: 0mJfLrwltFMaNv/EwNHbkpGPao4=
+
+Name: chrome/skin/classic/noscript/inactive-yu16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TFM92jGymhmMyPu/kO67hw==
+SHA1-Digest: eWCzmsCA1mmkjl4b1Q0klWMpkaw=
+
+Name: chrome/skin/classic/noscript/java16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: l5UDE65EnU4P8X1TRbYeCw==
+SHA1-Digest: oHzM1JgDo2Jt7XT7zF06wKQGWcw=
+
+Name: chrome/skin/classic/noscript/java32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kSJVrI964eUW2o8xFmiPLw==
+SHA1-Digest: S8vRlvXg5ZrbqqCUmDq0OR8eMfI=
+
+Name: chrome/skin/classic/noscript/mobile.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OCrfctAyT5DYZ6cu8H86Vg==
+SHA1-Digest: CelWssvyrxk8yP4ZatWluE4nU8U=
+
+Name: chrome/skin/classic/noscript/no-emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Fj3cPAlpjn9O832ZYQO/Jg==
+SHA1-Digest: NFJ1+8JIuRUw151rkgVeSpMJMGc=
+
+Name: chrome/skin/classic/noscript/no16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gF7wFJgdhwKZB043kabTqg==
+SHA1-Digest: wsJg1UJA8GphN3T2pQNQMXrJXXw=
+
+Name: chrome/skin/classic/noscript/options.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5w8XPppFGwnUYj7pN0oBnw==
+SHA1-Digest: Dk97HTts5IJXzikKI9HT+sQGWAQ=
+
+Name: chrome/skin/classic/noscript/prt16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XsdDzRdnzfektDPVxv1I5Q==
+SHA1-Digest: dHcupNg1iu8GKTQnf/sGdy2yFsk=
+
+Name: chrome/skin/classic/noscript/redirect16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z/a8dZt2Sz9Wrfe9w7TBew==
+SHA1-Digest: tlCeze/q3jK2eGYzY0QOnrAqwjw=
+
+Name: chrome/skin/classic/noscript/revtemp16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OAleBT8i+szAuEBNr53K7w==
+SHA1-Digest: auU/g7Q5HU1T8YIxIqjSxDg3G+8=
+
+Name: chrome/skin/classic/noscript/somelight16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sNyoXggVSSeqfpdTv6Hp/w==
+SHA1-Digest: sdIy9gGO3Pbu22wY3veyDtkjD1Q=
+
+Name: chrome/skin/classic/noscript/somelight32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Au+xOTpCkxWNbNW4lumbCQ==
+SHA1-Digest: n8TRra7qvQ158d0J3y9nGt/MpKU=
+
+Name: chrome/skin/classic/noscript/subprt16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sgsF83Gi2DNMeVl7fUv7xg==
+SHA1-Digest: +CJm4XGeyWtqP9eyyxWoqK1K+8k=
+
+Name: chrome/skin/classic/noscript/temp16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z0q06ZGVudt+Vl0n9UO6Eg==
+SHA1-Digest: IY2adCJpHRyjgnEy6mL4z/z35Gw=
+
+Name: chrome/skin/classic/noscript/unsafe-reload16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 33iqjAKVgpb7C5Bm+zKXSg==
+SHA1-Digest: Jlr8lKCf/uNheGEinVeDA7d5xlc=
+
+Name: chrome/skin/classic/noscript/untrusted-glb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mDLS86jeeVn50JRTuMG94A==
+SHA1-Digest: 1sijE/rZb6vR+S1yfA0zV15zpOI=
+
+Name: chrome/skin/classic/noscript/untrusted16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JEsRIdBt3iwhan6FLkhZ8Q==
+SHA1-Digest: 4SCHyq35CqfBK1SDH7WhaLbTo3M=
+
+Name: chrome/skin/classic/noscript/webgl16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VRUPaIbuURynZaPMR0ZAVA==
+SHA1-Digest: 3mQrEiQJRdKBWPRP2SSE2IAadmo=
+
+Name: chrome/skin/classic/noscript/webgl32.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3iPpUsRRcJY9f+4xznrRhw==
+SHA1-Digest: C//hQnK6q0MVEcBFUIIOJRYbRGA=
+
+Name: chrome/skin/classic/noscript/xss16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 54Jqi87vh4HZLf5YZOrl6A==
+SHA1-Digest: ajw3R0AR/lFuuqozv7ZYSsmpXds=
+
+Name: chrome/skin/classic/noscript/yes16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RiOPi9ZQo/Jard0RJNa5VA==
+SHA1-Digest: LHEhz56GvyeX92yncOWI8SjcwwE=
+
+Name: chrome/skin/classic/noscript/yu-emb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NImpOQglqYFcQP4qNSEpuw==
+SHA1-Digest: fJswbEf+m5sFdsH6FulUwbSCg+Y=
+
+Name: chrome/skin/classic/noscript/yu-glb16.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t7oGXbU21pSQcM+6HALzIA==
+SHA1-Digest: No95oIvE24q4zxCbceG0sqYwicg=
+
+Name: chrome/skin/classic/noscript/yu16.png
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: eAoXXrrfuqd6NGnYS6AC9g==
-SHA1-Digest: alTj3TxbkT5VMmPHI9qGabu0vb0=
+MD5-Digest: ImfjT+MqVzHN5Z7QA1531w==
+SHA1-Digest: 5HFWvY/aoPIbBCkqSI/KUQNCnyA=
 
 Name: components/noscriptService.js
 Digest-Algorithms: MD5 SHA1
@@ -47,8 +1512,8 @@ SHA1-Digest: JBcekwfoEoqK8XvDXxsQzGUeoGI=
 
 Name: webextension/legacy.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: /k5vGS0PYEgudQGaAYyGuQ==
-SHA1-Digest: 5hmZhseA3Yl58RK4feBuyYTNvo8=
+MD5-Digest: 8j4VygesnFQ+XbF8hZL6cA==
+SHA1-Digest: p1DTu1E3zQ7rgR7U70GGYNCGaDY=
 
 Name: webextension/manifest.json
 Digest-Algorithms: MD5 SHA1
@@ -57,8 +1522,8 @@ SHA1-Digest: XRKdwWItWXQwh+KrWk+Qh5HuaWk=
 
 Name: webextension/noscript.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Tllgl/Dq4QQimcnNVTw+NA==
-SHA1-Digest: 3uVjMfwtGmAuT7O5yeLcow+gKDs=
+MD5-Digest: Fyq4MH4L7NbYjNAK0ZvEAw==
+SHA1-Digest: eJQV4nneiZcT3BEILmWkbBIjSLA=
 
 Name: webextension/Policy.js
 Digest-Algorithms: MD5 SHA1
@@ -72,6 +1537,6 @@ SHA1-Digest: YC3niw8+JJeK/n6KRNRNO2VYGxE=
 
 Name: webextension/lib/tld.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: gblX7qMvkSwb6Mp4RkAHgg==
-SHA1-Digest: lkpBHisY+nSR/micPlmCb4/j/pY=
+MD5-Digest: k9d5DIy26dP8VrA+T/mVqQ==
+SHA1-Digest: 9EAXt4yk01hS7a6oMc4QBwwm4Y8=
 
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
index 8a04d2e..cd9f7d6 100644
Binary files a/META-INF/mozilla.rsa and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
index d72f39d..72325b1 100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
 Signature-Version: 1.0
-MD5-Digest-Manifest: 3UsMXt5XR+J4vRdNO8hSVQ==
-SHA1-Digest-Manifest: DZZML58b9yw0isVEtHRESKw1A4M=
+MD5-Digest-Manifest: Lbzi+9tv5aswQg8AyoKz3g==
+SHA1-Digest-Manifest: Ks4heYyno1GUkalmRSCBAj2RW74=
 
diff --git a/bootstrap.js b/bootstrap.js
new file mode 100644
index 0000000..a3da6ae
--- /dev/null
+++ b/bootstrap.js
@@ -0,0 +1,66 @@
+var { utils: Cu, interfaces: Ci } = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+let moduleURL = `chrome://noscript/content/Restartless.jsm?${Math.random() }.${Date.now()}`;
+let customizeStyle = "chrome://noscript/skin/browser.css";
+let module = {};
+
+function startup(data, reason) {
+    Cu.import(moduleURL, module);
+    module.startup(data);  // Do whatever initial startup stuff you need to do
+    if (module.upgrade && (reason === ADDON_INSTALL || reason === ADDON_UPGRADE)) {
+      module.upgrade(data);
+    }
+    if (module.loadIntoWindow) {
+      forEachOpenWindow(module.loadIntoWindow);
+    }
+    Services.wm.addListener(WindowListener);
+}
+
+function shutdown(data, reason) {
+    if (reason == APP_SHUTDOWN)
+        return;
+
+    Services.wm.removeListener(WindowListener);
+
+    if (module.unloadFromWindow) forEachOpenWindow(module.unloadFromWindow);
+
+
+    module.shutdown(data); 
+
+    Cu.unload(moduleURL); 
+    Services.obs.notifyObservers(null, "chrome-flush-caches", null);
+}
+function install(data, reason) { }
+function uninstall(data, reason) { }
+
+function forEachOpenWindow(todo)  // Apply a function to all open browser windows
+{
+    var windows = Services.wm.getEnumerator("navigator:browser");
+    while (windows.hasMoreElements())
+        todo(windows.getNext().QueryInterface(Ci.nsIDOMWindow));
+}
+var WindowListener =
+{
+    onOpenWindow: function(xulWindow)
+    {
+        var window = xulWindow.QueryInterface(Ci.nsIInterfaceRequestor)
+                              .getInterface(Ci.nsIDOMWindow);
+        function onWindowLoad()
+        {
+            window.removeEventListener("DOMContentLoad",onWindowLoad);
+            let doc = window.document;
+            if (doc.documentElement.getAttribute("windowtype") == "navigator:browser") {
+                module.loadIntoWindow(window, true);
+            } else if(window.location.href === "chrome://global/content/customizeToolbar.xul") {
+                let root = doc.documentElement;
+                let styleNode = doc.createProcessingInstruction("xml-stylesheet",`href="${customizeStyle}" type="text/css"`);
+                doc.insertBefore(styleNode, root);
+            }
+        }
+        window.addEventListener("DOMContentLoaded", onWindowLoad);
+    },
+    onCloseWindow: function(xulWindow) { },
+    onWindowTitleChange: function(xulWindow, newTitle) { }
+};
diff --git a/chrome.manifest b/chrome.manifest
index 6d0b1de..c8cdddc 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -1,83 +1,62 @@
-overlay	chrome://navigator/content/navigatorOverlay.xul	chrome://noscript/content/noscriptOverlay.xul
-overlay	chrome://browser/content/browser.xul chrome://noscript/content/noscriptOverlay.xul appversion<56
-overlay	chrome://browser/content/browser.xul chrome://noscript/content/noscriptOverlayFx57.xul appversion>=56
+content noscript chrome/content/noscript/
 
-
-overlay chrome://browser/content/bookmarks/bookmarksManager.xul chrome://noscript/content/noscriptBMOverlay.xul
-overlay chrome://browser/content/bookmarks/bookmarksPanel.xul chrome://noscript/content/noscriptBMOverlay.xul
-
-overlay chrome://communicator/content/bookmarks/bookmarksManager.xul chrome://noscript/content/noscriptBMOverlay.xul
-overlay chrome://communicator/content/bookmarks/bm-panel.xul chrome://noscript/content/noscriptBMOverlay.xul
-
-overlay chrome://browser/content/places/places.xul chrome://noscript/content/noscriptBMOverlay.xul
-
-content noscript jar:chrome/noscript.jar!/content/noscript/
-
-skin    noscript classic/1.0 jar:chrome/noscript.jar!/skin/classic/noscript/
-style chrome://global/content/customizeToolbar.xul chrome://noscript/skin/browser.css
-
-# resource noscript-mod modules/
+skin    noscript classic/1.0 chrome/skin/classic/noscript/
 
 # Work around for breakages caused by the .NET Framework Assistant
 override chrome://dotnetassistant/content/bootstrap.xul data:text/xml,<lame/>
 
-# Gecko 2 component registration
-component {31aec909-8e86-4397-9380-63a59e0c5ff5} components/noscriptService.js
-contract @maone.net/noscript-service;1 {31aec909-8e86-4397-9380-63a59e0c5ff5}
-category profile-after-change @maone.net/noscript-service;1 @maone.net/noscript-service;1
-
 # Localization
-locale noscript ar    jar:chrome/noscript.jar!/locale/ar/noscript/
-locale noscript be-BY jar:chrome/noscript.jar!/locale/be-BY/noscript/
-locale noscript bg-BG jar:chrome/noscript.jar!/locale/bg-BG/noscript/
-locale noscript bn-IN jar:chrome/noscript.jar!/locale/bn-IN/noscript/
-locale noscript ca-AD jar:chrome/noscript.jar!/locale/ca-AD/noscript/
-locale noscript cs-CZ jar:chrome/noscript.jar!/locale/cs-CZ/noscript/
-locale noscript cy-GB jar:chrome/noscript.jar!/locale/cy-GB/noscript/
-locale noscript da    jar:chrome/noscript.jar!/locale/da/noscript/
-locale noscript de    jar:chrome/noscript.jar!/locale/de/noscript/
-locale noscript el    jar:chrome/noscript.jar!/locale/el/noscript/
-locale noscript en-GB    jar:chrome/noscript.jar!/locale/en-GB/noscript/
-locale noscript en-US    jar:chrome/noscript.jar!/locale/en-US/noscript/
-locale noscript eo    jar:chrome/noscript.jar!/locale/eo/noscript/
-locale noscript es-AR jar:chrome/noscript.jar!/locale/es-AR/noscript/
-locale noscript es-CL jar:chrome/noscript.jar!/locale/es-CL/noscript/
-locale noscript es-ES jar:chrome/noscript.jar!/locale/es-ES/noscript/
-locale noscript et-EE jar:chrome/noscript.jar!/locale/et-EE/noscript/
-locale noscript eu    jar:chrome/noscript.jar!/locale/eu/noscript/
-locale noscript fa-IR jar:chrome/noscript.jar!/locale/fa-IR/noscript/
-locale noscript fi    jar:chrome/noscript.jar!/locale/fi/noscript/
-locale noscript fr    jar:chrome/noscript.jar!/locale/fr/noscript/
-locale noscript gl-ES jar:chrome/noscript.jar!/locale/gl-ES/noscript/
-locale noscript he-IL jar:chrome/noscript.jar!/locale/he-IL/noscript/
-locale noscript hr-HR jar:chrome/noscript.jar!/locale/hr-HR/noscript/
-locale noscript hsb   jar:chrome/noscript.jar!/locale/hsb/noscript/
-locale noscript hu-HU jar:chrome/noscript.jar!/locale/hu-HU/noscript/
-locale noscript id-ID jar:chrome/noscript.jar!/locale/id-ID/noscript/
-locale noscript it    jar:chrome/noscript.jar!/locale/it/noscript/
-locale noscript ja-JP jar:chrome/noscript.jar!/locale/ja-JP/noscript/
-locale noscript kk-KZ jar:chrome/noscript.jar!/locale/kk-KZ/noscript/
-locale noscript km-KH jar:chrome/noscript.jar!/locale/km-KH/noscript/
-locale noscript ko-KR jar:chrome/noscript.jar!/locale/ko-KR/noscript/
-locale noscript lt    jar:chrome/noscript.jar!/locale/lt/noscript/
-locale noscript mk-MK jar:chrome/noscript.jar!/locale/mk-MK/noscript/
-locale noscript ms-MY jar:chrome/noscript.jar!/locale/ms-MY/noscript/
-locale noscript nb-NO jar:chrome/noscript.jar!/locale/nb-NO/noscript/
-locale noscript nl    jar:chrome/noscript.jar!/locale/nl/noscript/
-locale noscript pl    jar:chrome/noscript.jar!/locale/pl/noscript/
-locale noscript pt-BR jar:chrome/noscript.jar!/locale/pt-BR/noscript/
-locale noscript pt-PT jar:chrome/noscript.jar!/locale/pt-PT/noscript/
-locale noscript ro    jar:chrome/noscript.jar!/locale/ro/noscript/
-locale noscript ru-RU jar:chrome/noscript.jar!/locale/ru-RU/noscript/
-locale noscript sk-SK jar:chrome/noscript.jar!/locale/sk-SK/noscript/
-locale noscript sl-SI jar:chrome/noscript.jar!/locale/sl-SI/noscript/
-locale noscript sr    jar:chrome/noscript.jar!/locale/sr/noscript/
-locale noscript sr-RS jar:chrome/noscript.jar!/locale/sr-RS/noscript/
-locale noscript sv-SE jar:chrome/noscript.jar!/locale/sv-SE/noscript/
-locale noscript te-IN jar:chrome/noscript.jar!/locale/te-IN/noscript/
-locale noscript th    jar:chrome/noscript.jar!/locale/th/noscript/
-locale noscript tr    jar:chrome/noscript.jar!/locale/tr/noscript/
-locale noscript uk    jar:chrome/noscript.jar!/locale/uk/noscript/
-locale noscript vi    jar:chrome/noscript.jar!/locale/vi/noscript/
-locale noscript zh-CN jar:chrome/noscript.jar!/locale/zh-CN/noscript/
-locale noscript zh-TW jar:chrome/noscript.jar!/locale/zh-TW/noscript/
+locale noscript ar    chrome/locale/ar/noscript/
+locale noscript be-BY chrome/locale/be-BY/noscript/
+locale noscript bg-BG chrome/locale/bg-BG/noscript/
+locale noscript bn-IN chrome/locale/bn-IN/noscript/
+locale noscript ca-AD chrome/locale/ca-AD/noscript/
+locale noscript cs-CZ chrome/locale/cs-CZ/noscript/
+locale noscript cy-GB chrome/locale/cy-GB/noscript/
+locale noscript da    chrome/locale/da/noscript/
+locale noscript de    chrome/locale/de/noscript/
+locale noscript el    chrome/locale/el/noscript/
+locale noscript en-GB    chrome/locale/en-GB/noscript/
+locale noscript en-US    chrome/locale/en-US/noscript/
+locale noscript eo    chrome/locale/eo/noscript/
+locale noscript es-AR chrome/locale/es-AR/noscript/
+locale noscript es-CL chrome/locale/es-CL/noscript/
+locale noscript es-ES chrome/locale/es-ES/noscript/
+locale noscript et-EE chrome/locale/et-EE/noscript/
+locale noscript eu    chrome/locale/eu/noscript/
+locale noscript fa-IR chrome/locale/fa-IR/noscript/
+locale noscript fi    chrome/locale/fi/noscript/
+locale noscript fr    chrome/locale/fr/noscript/
+locale noscript gl-ES chrome/locale/gl-ES/noscript/
+locale noscript he-IL chrome/locale/he-IL/noscript/
+locale noscript hr-HR chrome/locale/hr-HR/noscript/
+locale noscript hsb   chrome/locale/hsb/noscript/
+locale noscript hu-HU chrome/locale/hu-HU/noscript/
+locale noscript id-ID chrome/locale/id-ID/noscript/
+locale noscript it    chrome/locale/it/noscript/
+locale noscript ja-JP chrome/locale/ja-JP/noscript/
+locale noscript kk-KZ chrome/locale/kk-KZ/noscript/
+locale noscript km-KH chrome/locale/km-KH/noscript/
+locale noscript ko-KR chrome/locale/ko-KR/noscript/
+locale noscript lt    chrome/locale/lt/noscript/
+locale noscript mk-MK chrome/locale/mk-MK/noscript/
+locale noscript ms-MY chrome/locale/ms-MY/noscript/
+locale noscript nb-NO chrome/locale/nb-NO/noscript/
+locale noscript nl    chrome/locale/nl/noscript/
+locale noscript pl    chrome/locale/pl/noscript/
+locale noscript pt-BR chrome/locale/pt-BR/noscript/
+locale noscript pt-PT chrome/locale/pt-PT/noscript/
+locale noscript ro    chrome/locale/ro/noscript/
+locale noscript ru-RU chrome/locale/ru-RU/noscript/
+locale noscript sk-SK chrome/locale/sk-SK/noscript/
+locale noscript sl-SI chrome/locale/sl-SI/noscript/
+locale noscript sr    chrome/locale/sr/noscript/
+locale noscript sr-RS chrome/locale/sr-RS/noscript/
+locale noscript sv-SE chrome/locale/sv-SE/noscript/
+locale noscript te-IN chrome/locale/te-IN/noscript/
+locale noscript th    chrome/locale/th/noscript/
+locale noscript tr    chrome/locale/tr/noscript/
+locale noscript uk    chrome/locale/uk/noscript/
+locale noscript vi    chrome/locale/vi/noscript/
+locale noscript zh-CN chrome/locale/zh-CN/noscript/
+locale noscript zh-TW chrome/locale/zh-TW/noscript/
diff --git a/chrome/noscript.jar!/content/noscript/ABE.g b/chrome/content/noscript/ABE.g
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ABE.g
rename to chrome/content/noscript/ABE.g
diff --git a/chrome/noscript.jar!/content/noscript/ABE.js b/chrome/content/noscript/ABE.js
similarity index 96%
rename from chrome/noscript.jar!/content/noscript/ABE.js
rename to chrome/content/noscript/ABE.js
index 2493a81..881a22a 100644
--- a/chrome/noscript.jar!/content/noscript/ABE.js
+++ b/chrome/content/noscript/ABE.js
@@ -1171,10 +1171,10 @@ var ABEStorage = {
   _dirty: true,
   init: function(prefs) {
     this.prefs = prefs;
-    if (!prefs.getIntPref("migration")) {
+    if (!prefs.getIntPref("migration")) try {
       prefs.setIntPref("migration", 1);
       this._migrateLegacyFiles();
-    }
+    } catch (e) {}
     this.loadRules();
     for (let k  of prefs.getChildList("", {})) this.observe(prefs, null, k);
     prefs.addObserver("", this, true);
diff --git a/chrome/noscript.jar!/content/noscript/ABELexer.js b/chrome/content/noscript/ABELexer.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ABELexer.js
rename to chrome/content/noscript/ABELexer.js
diff --git a/chrome/noscript.jar!/content/noscript/ABEParser.js b/chrome/content/noscript/ABEParser.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ABEParser.js
rename to chrome/content/noscript/ABEParser.js
diff --git a/chrome/noscript.jar!/content/noscript/ASPIdiocy.js b/chrome/content/noscript/ASPIdiocy.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ASPIdiocy.js
rename to chrome/content/noscript/ASPIdiocy.js
diff --git a/chrome/noscript.jar!/content/noscript/AddressMatcher.js b/chrome/content/noscript/AddressMatcher.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/AddressMatcher.js
rename to chrome/content/noscript/AddressMatcher.js
diff --git a/chrome/noscript.jar!/content/noscript/Bug.js b/chrome/content/noscript/Bug.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Bug.js
rename to chrome/content/noscript/Bug.js
diff --git a/chrome/noscript.jar!/content/noscript/ChannelReplacement.js b/chrome/content/noscript/ChannelReplacement.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ChannelReplacement.js
rename to chrome/content/noscript/ChannelReplacement.js
diff --git a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js b/chrome/content/noscript/ClearClickHandler.js
similarity index 94%
rename from chrome/noscript.jar!/content/noscript/ClearClickHandler.js
rename to chrome/content/noscript/ClearClickHandler.js
index 51f97ff..f81ce4d 100644
--- a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
+++ b/chrome/content/noscript/ClearClickHandler.js
@@ -89,17 +89,34 @@ ClearClickHandler.prototype = {
     }
   },
 
-  chromeInstall(chromeWindow) {
-    let target = chromeWindow.document;
-    for (let et of this.rapidFire.events) {
-      target.addEventListener(et, this, true);
-    }
+  chromeInstall(window) {
+    this._install(window.document, this.rapidFire.events);
+  },
+  chromeUninstall(window) {
+    this.uninstall(window.document);
   },
 
   install(target) {
-    for (let et  of this.uiEvents) {
+    this._install(target, this.uiEvents);
+  },
+
+  _install(target, events) {
+    for (let et of events) {
       target.addEventListener(et, this, true);
     }
+    (target._clearClickEvents || (target._clearClickEvents = [])).push(...events);
+  },
+
+  uninstall(target) {
+    let events = target._clearClickEvents;
+    try {
+      for (let et of events) {
+        target.removeEventListener(et, this, true);
+      }
+      ns.dump(`Removed [${events.join(", ")}] listener.`);
+    } catch (e) {
+      if (Components) Components.utils.reportError(e);
+    }
   },
 
   exceptions: null,
@@ -167,9 +184,11 @@ ClearClickHandler.prototype = {
     this._whitelist = {};
     this.whitelistLen = 0;
   },
-  isEmbed: (o) => (o instanceof Ci.nsIDOMHTMLObjectElement ||
-                   (Ci.nsIDOMHTMLEmbedElement && o instanceof Ci.nsIDOMHTMLEmbedElement)) &&
-                    !o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI),
+  _embedRx: /^(?:object|embed)$/i,
+  isEmbed(o) {
+    return this._embedRx.test(o.tagName) &&
+      !o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI)
+  },
 
   swallowEvent: function(ev) {
     ev.cancelBubble = true;
@@ -190,7 +209,7 @@ ClearClickHandler.prototype = {
       x: x + w.scrollX, y: y + w.scrollY, // add scroll* to make it absolute
       width: c.width, height: c.height,
       screenX: w.mozInnerScreenX + x, screenY: w.mozInnerScreenY + y
-    }
+    };
   },
 
 
@@ -211,7 +230,7 @@ ClearClickHandler.prototype = {
     }
 
     if (l > 6) {
-      var bStart = Math.floor(l * .1) // 20% border
+      var bStart = Math.floor(l * 0.1) // 20% border
       var bEnd = bStart;
       if (bStart + n > center) {
         bStart = center - n;
@@ -432,7 +451,8 @@ ClearClickHandler.prototype = {
   },
 
   findParentForm: function(o) {
-    var ftype = Ci.nsIDOMHTMLFormElement;
+    var ftype = Cu.getGlobalForObject(o).HTMLFormElement;
+    if (!ftype) return null;
     while((o = o.parentNode)) {
       if (o instanceof ftype) return o;
     }
@@ -470,7 +490,7 @@ ClearClickHandler.prototype = {
   checkObstruction: function(o, ctx) {
     var d = o.ownerDocument;
     var w = d.defaultView;
-    if (!(ctx.isEmbed || d instanceof Ci.nsIDOMHTMLDocument)) {
+    if (!(ctx.isEmbed || d instanceof w.HTMLDocument)) {
       o = w.frameElement;
       d = o.ownerDocument;
       w = d.defaultView;
@@ -923,7 +943,8 @@ ClearClickHandler.prototype = {
 
   checkCursor: function(o) {
     let w = o.ownerDocument.defaultView;
-    for(; o && o instanceof Ci.nsIDOMHTMLElement; o = o.parentNode) {
+    let HTMLElement = w.HTMLElement;
+    for(; o && o instanceof HTMLElement; o = o.parentNode) {
       try {
         let cursor = w.getComputedStyle(o, ':hover').cursor;
         if (cursor === "none" || cursor.indexOf("url(") !== -1) return true;
diff --git a/chrome/noscript.jar!/content/noscript/Cookie.js b/chrome/content/noscript/Cookie.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Cookie.js
rename to chrome/content/noscript/Cookie.js
diff --git a/chrome/noscript.jar!/content/noscript/DNS.js b/chrome/content/noscript/DNS.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/DNS.js
rename to chrome/content/noscript/DNS.js
diff --git a/chrome/noscript.jar!/content/noscript/DOM.js b/chrome/content/noscript/DOM.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/DOM.js
rename to chrome/content/noscript/DOM.js
diff --git a/chrome/noscript.jar!/content/noscript/DoNotTrack.js b/chrome/content/noscript/DoNotTrack.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/DoNotTrack.js
rename to chrome/content/noscript/DoNotTrack.js
diff --git a/chrome/noscript.jar!/content/noscript/Entities.js b/chrome/content/noscript/Entities.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Entities.js
rename to chrome/content/noscript/Entities.js
diff --git a/chrome/noscript.jar!/content/noscript/ExternalFilters.js b/chrome/content/noscript/ExternalFilters.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ExternalFilters.js
rename to chrome/content/noscript/ExternalFilters.js
diff --git a/chrome/noscript.jar!/content/noscript/FlashIdiocy.js b/chrome/content/noscript/FlashIdiocy.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/FlashIdiocy.js
rename to chrome/content/noscript/FlashIdiocy.js
diff --git a/chrome/noscript.jar!/content/noscript/ForcedRedirectionCallback.js b/chrome/content/noscript/ForcedRedirectionCallback.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/ForcedRedirectionCallback.js
rename to chrome/content/noscript/ForcedRedirectionCallback.js
diff --git a/chrome/content/noscript/FrameScript.jsm b/chrome/content/noscript/FrameScript.jsm
new file mode 100644
index 0000000..a1c61c6
--- /dev/null
+++ b/chrome/content/noscript/FrameScript.jsm
@@ -0,0 +1,58 @@
+'use strict';
+
+var EXPORTED_SYMBOLS = ["FrameScript"];
+
+const { utils: Cu, interfaces: Ci, classes: Cc } = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+const SERVICE_READY = "NoScript:ServiceReady";
+
+Cu.import("chrome://noscript/content/importer.jsm");
+let IMPORT = IMPORT_FOR(this);
+IMPORT("PasteHandler");
+IMPORT("UISync");
+
+function FrameScript(ctx) {
+  Object.defineProperty(ctx, "ns", {
+    get: function() {
+      try {
+        const CTRID  = "@maone.net/noscript-service;1";
+        if (CTRID in Cc) {
+          let ns = Cc[CTRID].getService().wrappedJSObject;
+          delete this.ns;
+          return (this.ns = ns);
+        }
+      } catch(e) {
+        Cu.reportError(e);
+      }
+      return null;
+    },
+    configurable: true,
+    enumerable: true
+  });
+
+  this.ctx = ctx;
+
+  if (ctx.ns) {
+    this.init();
+  } else {
+    Services.obs.addObserver(this, SERVICE_READY, true);
+  }
+}
+
+FrameScript.prototype = {
+  QueryInterface: XPCOMUtils.generateQI(
+    [Ci.nsIObserver, Ci.nsISupportsWeakReference]),
+  init() {
+    let ctx = this.ctx;
+    new PasteHandler(ctx);
+    ctx.uiSync = new UISync(ctx);
+    ctx.ns.dump(`Framescript initialized in ${ctx.content.location.href}`);
+  },
+  observe(subj, topic, data) {
+    this.init();
+    Services.obs.removeObserver(this, SERVICE_READY);
+  }
+};
diff --git a/chrome/noscript.jar!/content/noscript/HTTPS.js b/chrome/content/noscript/HTTPS.js
similarity index 91%
rename from chrome/noscript.jar!/content/noscript/HTTPS.js
rename to chrome/content/noscript/HTTPS.js
index 2e6c766..1538036 100644
--- a/chrome/noscript.jar!/content/noscript/HTTPS.js
+++ b/chrome/content/noscript/HTTPS.js
@@ -61,27 +61,28 @@ var HTTPS = {
         return true;
 
       } catch(e) {
+        if (ctx) {
+          let g = Cu.getGlobalForObject(ctx);
+          if (ctx instanceof g.HTMLImageElement || ctx instanceof g.HTMLInputElement ||
+              ctx instanceof Ci.nsIObjectLoadingContent) {
+            uri = uri.clone();
+            uri.scheme = "https";
+
+            var type, attr;
+            if (ctx instanceof Ci.nsIObjectLoadingContent) {
+              type = "Object";
+              attr = "data";
+            } else {
+              type = "Image";
+              attr = "src";
+            }
+            Thread.asap(function() { ctx.setAttribute(attr, uri.spec); });
 
-        if (ctx && ctx instanceof Ci.nsIDOMHTMLImageElement || ctx instanceof Ci.nsIDOMHTMLInputElement ||
-            ctx instanceof Ci.nsIObjectLoadingContent) {
-          uri = uri.clone();
-          uri.scheme = "https";
-
-          var type, attr;
-          if (ctx instanceof Ci.nsIObjectLoadingContent) {
-            type = "Object";
-            attr = "data";
-          } else {
-            type = "Image";
-            attr = "src";
+            var msg = type + " HTTP->HTTPS redirection to " + uri.spec;
+            this.log(msg);
+            throw msg;
           }
-          Thread.asap(function() { ctx.setAttribute(attr, uri.spec); });
-
-          var msg = type + " HTTP->HTTPS redirection to " + uri.spec;
-          this.log(msg);
-          throw msg;
         }
-
         if (fallback && fallback()) {
            this.log("Channel redirection fallback on " + uri.spec);
            return true;
diff --git a/chrome/noscript.jar!/content/noscript/IO.js b/chrome/content/noscript/IO.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/IO.js
rename to chrome/content/noscript/IO.js
diff --git a/chrome/noscript.jar!/content/noscript/IOUtil.js b/chrome/content/noscript/IOUtil.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/IOUtil.js
rename to chrome/content/noscript/IOUtil.js
diff --git a/chrome/noscript.jar!/content/noscript/InjectionChecker.js b/chrome/content/noscript/InjectionChecker.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/InjectionChecker.js
rename to chrome/content/noscript/InjectionChecker.js
diff --git a/chrome/noscript.jar!/content/noscript/JSURL.js b/chrome/content/noscript/JSURL.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/JSURL.js
rename to chrome/content/noscript/JSURL.js
diff --git a/chrome/noscript.jar!/content/noscript/Lang.js b/chrome/content/noscript/Lang.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Lang.js
rename to chrome/content/noscript/Lang.js
diff --git a/chrome/noscript.jar!/content/noscript/MSEInterception.js b/chrome/content/noscript/MSEInterception.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/MSEInterception.js
rename to chrome/content/noscript/MSEInterception.js
diff --git a/chrome/noscript.jar!/content/noscript/Main.js b/chrome/content/noscript/Main.js
similarity index 96%
rename from chrome/noscript.jar!/content/noscript/Main.js
rename to chrome/content/noscript/Main.js
index 4300694..a9fdceb 100644
--- a/chrome/noscript.jar!/content/noscript/Main.js
+++ b/chrome/content/noscript/Main.js
@@ -108,7 +108,7 @@ this.__defineGetter__("ABE", function() {
 });
 
 const ns = {
-  VERSION: "5.0.10",
+  VERSION: "5.1.1",
   classDescription: CLASS_NAME,
 	classID: Components.ID(SERVICE_ID),
 	contractID: SERVICE_CTRID,
@@ -145,7 +145,6 @@ const ns = {
           break;
 
         case "profile-before-change":
-          this._disposeE10s();
           this.dispose();
           break;
 
@@ -180,17 +179,17 @@ const ns = {
     }
   },
 
-  bootstrap: function(childProcess = false) {
-    this.childProcess = childProcess;
+  bootstrap: function() {
+    this.childProcess = (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT);
 
     let log = msg => this.log(msg);
     INCLUDE_MIXIN(this, "MainChild");
-    if (!childProcess) {
+    if (!this.childProcess) {
       INCLUDE_MIXIN(this, "MainParent");
     }
 
     try {
-      IPC.autoSync(this, "Main", ["setJSEnabled", "eraseTemp", "allowObject", "resetAllowedObjects"]);
+      IPC.autoSync(this, "Main", ["setJSEnabled", "eraseTemp", "allowObject", "resetAllowedObjects", "shutdown"]);
     } catch (e) {
       log(e);
     }
@@ -200,18 +199,27 @@ const ns = {
   OBSERVED_TOPICS: ["profile-before-change", "xpcom-shutdown", "profile-after-change", "sessionstore-windows-restored",
                     "browser:purge-session-history", "private-browsing",
                     "content-document-global-created", "document-element-inserted"],
+  _started: false,
   startup: function() {
+    if (this._started) return;
+    this._started = true;
+    this.registerComponent();
     for (let topic of this.OBSERVED_TOPICS) {
       let observer = this[topic] || this;
       OS.addObserver(observer, topic, observer instanceof Ci.nsISupportsWeakReference);
     }
   },
   shutdown: function() {
+    if (!this._started) return;
+    this._started = false;
+    this.dump("NoScript shutting down");
+    this.dispose();
     for (let topic of this.OBSERVED_TOPICS) {
       try {
         OS.removeObserver(this[topic] || this, topic);
       } catch (e) {}
     }
+    this.dump("NoScript shutdown done");
   },
 
   // Preference driven properties
@@ -625,20 +633,32 @@ const ns = {
     }
   },
 
+  _sheets: new Set(),
   updateStyleSheet: function(sheet, enabled) {
     const sss = this.sss;
     if (!sss) return;
+    const SHEET_TYPE = sss.AGENT_SHEET;
+    ns.dump(`${enabled ? "Adding" : "Removing"} CSS:\n${sheet}`);
     const uri = IOS.newURI("data:text/css;charset=utf8," + encodeURIComponent(sheet), null, null);
-    if (sss.sheetRegistered(uri, sss.USER_SHEET)) {
-      if (!enabled) sss.unregisterSheet(uri, sss.USER_SHEET);
+    if (sss.sheetRegistered(uri, SHEET_TYPE)) {
+      if (!enabled) {
+        sss.unregisterSheet(uri, SHEET_TYPE);
+        this._sheets.delete(sheet);
+      }
     } else {
       try {
-        if (enabled) sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
+        if (enabled) {
+          sss.loadAndRegisterSheet(uri, SHEET_TYPE);
+          this._sheets.add(sheet);
+        }
       } catch(e) {
         this.log("[NoScript CSS] Can't register " + uri + ", " + e);
       }
     }
   },
+  disposeStyleSheets() {
+    for (let sheet of this._sheets) this.updateStyleSheet(sheet, false);
+  },
 
   get getString() {
     delete this.getString;
@@ -723,9 +743,10 @@ const ns = {
 
     this._batchPrefs = true;
     for (var p  of [
+      "consoleDump", "consoleLog", // first, so we can log side effects
       "autoAllow",
       "allowedMimeRegExp", "hideOnUnloadRegExp", "requireReloadRegExp",
-      "consoleDump", "consoleLog", "contentBlocker", "alwaysShowObjectSources",
+      "contentBlocker", "alwaysShowObjectSources",
       "filterXPost", "filterXGet",
       "filterXGetRx", "filterXGetUserRx",
       "filterXExceptions",
@@ -786,6 +807,49 @@ const ns = {
     this._batchPrefs = false;
     this.setupJSCaps();
   },
+  getService() {
+    try {
+      return Cc[this.contractID].getService().wrappedJSObject;
+    } catch(e) {
+    }
+    return null;
+  },
+  _registered: false,
+  registerComponent() {
+    if (this._registered) return;
+    this.dump("Registering NoScript Service");
+    let current = this.getService();
+    if (current) {
+      try {
+        current.unregisterComponent();
+      } catch (e)  {
+        Cu.reportError(e);
+      }
+    }
+    let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
+    try {
+      registrar.registerFactory(this.classID, this.classDescription, this.contractID, this);
+      this.onDisposal(() => this.unregisterComponent());
+    } catch(e) {
+      if (!registrar.isCIDRegistered(this.classID)) Cu.reportError(e);
+      return;
+    }
+    OS.notifyObservers(this, "NoScript.ServiceReady", null);
+    this._registered = true;
+  },
+  unregisterComponent() {
+    if (!this._registered) return;
+    this._registered = false;
+    let current = this.getService();
+    if (current !== this) {
+      Cu.reportError("Current NoScript service is different than this: live update?");
+      return;
+    }
+    let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
+    if (registrar.isCIDRegistered(this.classID)) {
+      registrar.unregisterFactory(this.classID, this);
+    }
+  },
 
   _disposalTasks: [],
   onDisposal: function(task) {
@@ -796,15 +860,26 @@ const ns = {
       if(!this._inited) return;
       this._inited = false;
 
-      for (let t of this.disposalTasks) t();
+      for (let t of this._disposalTasks) try {
+        ns.dump(`Executing disposal task ${t}`);
+        t();
+      } catch (e) {
+        Cu.reportError(e);
+      }
 
       this.shouldLoad = this.shouldProcess = CP_NOP;
+      let catMan = this.categoryManager;
+      try {
+        catMan.deleteCategoryEntry("content-policy", this.contractID, false);
+      } catch (e) {}
 
       OS.removeObserver(this, "em-action-requested");
 
       if (this.httpStarted) {
-        this.categoryManager.deleteCategoryEntry("net-channel-event-sinks", this.contractID, false);
         this.requestWatchdog.dispose();
+        try {
+          catMan.deleteCategoryEntry("net-channel-event-sinks", this.contractID, false);
+        } catch (e) {}
         Cc['@mozilla.org/docloaderservice;1'].getService(nsIWebProgress).removeProgressListener(this);
       }
 
@@ -812,10 +887,13 @@ const ns = {
       this.mozJSPref.removeObserver("enabled", this);
       this.resetJSCaps();
       this.eraseTemp();
-      if (typeof PolicyState === "object") PolicyState.reset();
+
       this.savePrefs();
+      this.disposeStyleSheets();
       if(this.consoleDump & LOG_LEAKS) this.reportLeaks();
+      if (typeof PolicyState === "object") PolicyState.reset();
     } catch(e) {
+      Cu.reportError(e);
       this.dump(e + " while disposing.");
     } finally {
       Thread.hostRunning = false;
@@ -1185,7 +1263,7 @@ const ns = {
     try {
       ps.toPref(this.policyPB);
     } catch (e) {
-      if (IPC.parent) throw e;
+      if (!this.childProcess) throw e;
     }
   },
   get injectionChecker() { return this. requestWatchdog.injectionChecker; },
@@ -1195,7 +1273,14 @@ const ns = {
   },
 
   savePrefs: function() {
-    if (this.webExt && this.webExt.started) this.webExt.saveData();
+    if (this.childProcess) return false;
+    if (this.webExt && this.webExt.started) {
+      try {
+        this.webExt.saveData();
+      } catch (e) {
+        Cu.reportError(e);
+      }
+    }
     var res = this.prefService.savePrefFile(null);
     return res;
   },
@@ -1871,7 +1956,7 @@ const ns = {
     var surrogates = this.getExpando(document, "surrogates", {});
     if (scount) {
       let win = document.defaultView;
-      const HTMLElement = Ci.nsIDOMHTMLElement;
+      const HTMLElement = win.HTMLElement;
       sites.scriptCount += scount;
       let nselForce = this.nselForce && this.isJSEnabled(docSite, win);
       let isHTMLScript;
@@ -1907,8 +1992,10 @@ const ns = {
 
 
   showNextNoscriptElement: function(script) {
-    const HTMLElement = Ci.nsIDOMHTMLElement;
-    var child, el, j, doc, docShell;
+    let doc = script.ownerDocument;
+    let checkRefresh = true;
+    let docShell;
+    const HTMLElement = doc.defaultView.HTMLElement;
     try {
       for (var node = script; (node = node.nextSibling);) {
 
@@ -1924,11 +2011,12 @@ const ns = {
           if (tag != "NOSCRIPT")
             return;
 
-          child = node.firstChild;
+          let child = node.firstChild;
           if (!(child && child.nodeType === 3)) break;
 
-          if (!doc) {
-            doc = node.ownerDocument;
+          if (checkRefresh) {
+            this.setExpando(doc, "nselForce", true);
+            checkRefresh = false;
             docShell = this.dom.getDocShellForWindow(doc.defaultView);
             if (docShell.allowMetaRedirects) {
               docShell.allowMetaRedirects = false;
@@ -1936,8 +2024,8 @@ const ns = {
               docShell = null;
             }
           }
-          this.setExpando(doc, "nselForce", true);
-          el = doc.createElementNS(HTML_NS, "span");
+          
+          let el = doc.createElementNS(HTML_NS, "span");
           el.__nselForce = true;
 
           el.innerHTML = child.nodeValue;
@@ -2242,14 +2330,13 @@ const ns = {
   },
 
   _preprocessObjectInfo: function(doc) {
-    const EMBED = Ci.nsIDOMHTMLEmbedElement,
-          OBJECT = Ci.nsIDOMHTMLObjectElement;
 
     const pe = this.getExpando(doc, "pe");
     if (!pe) return null;
     this.setExpando(doc, "pe", null);
 
     var ret = [];
+    var embedRx = /^(?:object|embed)$/i;
     for (var j = pe.length; j-- > 0;) {
       let o = pe[j];
       try {
@@ -2262,7 +2349,7 @@ const ns = {
         if (this.getExpando(embed, "processed")) continue;
         this.setExpando(embed, "processed", true);
 
-        if (embed instanceof OBJECT || EMBED && embed instanceof EMBED) {
+        if (embedRx.test(embed.tagName)) {
           let node = embed;
           while ((node = node.parentNode) && !node.__noscriptBlocked)
             //  if (node instanceof OBJECT) o.embed = embed = node
@@ -2472,7 +2559,7 @@ const ns = {
     delete this._objectPatch;
     return this._objectPatch = function() {
       const els = document.getElementsByClassName("__noscriptObjectPatchMe__");
-      const DUMMY_FUNC = function() {};
+      const DUMMY_FUNC = () => DUMMY_FUNC;
       var el;
       for (var j = els.length; j-- > 0;) {
         el = els[j];
@@ -2662,11 +2749,13 @@ const ns = {
   },
 
   isLegacyFrameDocument: function(doc) {
-    return (doc.defaultView.frameElement instanceof Ci.nsIDOMHTMLFrameElement) && this.isPluginDocumentURL(doc.URL, "iframe");
+    let w = doc.defaultView;
+    return (w.frameElement instanceof w.HTMLFrameElement) && this.isPluginDocumentURL(doc.URL, "iframe");
   },
   isLegacyFrameReplacement: function(obj) {
-     return (obj instanceof Ci.nsIDOMHTMLIFrameElement || obj instanceof Ci.nsIDOMHTMLAnchorElement) &&
-           (obj.ownerDocument.defaultView.frameElement instanceof Ci.nsIDOMHTMLFrameElement) &&
+    let g = Cu.getGlobalForObject(obj);
+     return (obj instanceof g.HTMLIFrameElement || obj instanceof g.HTMLAnchorElement) &&
+           (obj.ownerDocument.defaultView.frameElement instanceof g.HTMLFrameElement) &&
            obj.ownerDocument.URL == this.createPluginDocumentURL(obj.src || obj.href, "iframe");
   },
   isClickToPlay: (obj) => obj instanceof Ci.nsIObjectLoadingContent && ("playPlugin" in obj) && ("activated" in obj) && !obj.activated,
@@ -2678,6 +2767,7 @@ const ns = {
 
   checkAndEnableObject:  function(ctx) {
     var extras = ctx.extras;
+ 
     if (!this.confirmEnableObject(ctx.window, extras)) return;
 
 
@@ -2690,11 +2780,13 @@ const ns = {
 
 
     var isLegacyFrame = this.isLegacyFrameReplacement(ctx.object);
-
+    
+    let w = doc.defaultView;
+    
     if (isLegacyFrame || (mime == doc.contentType && doc.body &&
         (a === doc.body.firstChild &&
          a === doc.body.lastChild ||
-         (Ci.nsIDOMHTMLEmbedElement && ctx.object instanceof Ci.nsIDOMHTMLEmbedElement) && ctx.object.src != url))
+         ctx.object instanceof w.HTMLEmbedElement && ctx.object.src != url))
       ) { // stand-alone plugin or frame
         doc.body.removeChild(a); // TODO: add a throbber
         if (isLegacyFrame) {
@@ -3437,7 +3529,7 @@ const ns = {
         if(!topWin) {
           // check if this is an iframe
 
-          if (win.frameElement && !(win.frameElement instanceof Ci.nsIDOMHTMLFrameElement) &&
+          if (win.frameElement && !(win.frameElement instanceof win.HTMLFrameElement) &&
               this.shouldLoad(5, uri, originURI || IOS.newURI(win.parent.location.href, null, null),
                   win.frameElement, contentType, CP_SHOULDPROCESS) === CP_OK) {
             IOUtil.resumeParentChannel(channel);
@@ -4116,7 +4208,7 @@ const ns = {
   // simulate onchange on selects if options look like URLs
   onContentChange: function(ev) {
     var s = ev.originalTarget;
-    if (!(s instanceof Ci.nsIDOMHTMLSelectElement) ||
+    if (!(s instanceof s.ownerDocument.defaultView.HTMLSelectElement) ||
         s.hasAttribute("multiple") ||
         !/open|nav|location|\bgo|load/i.test(s.getAttribute("onchange"))) return;
 
@@ -4147,9 +4239,9 @@ const ns = {
     var url = doc.documentURI;
     if (this.isJSEnabled(this.getSite(url))) return;
 
-    var onclick;
-
-    while (!(a instanceof Ci.nsIDOMHTMLAnchorElement || a instanceof Ci.nsIDOMHTMLAreaElement)) {
+    let onclick;
+    let w = doc.defaultView;
+    while (!(a instanceof w.HTMLAnchorElement || a instanceof w.HTMLAreaElement)) {
       if (typeof(a.getAttribute) == "function" && (onclick = a.getAttribute("onclick"))) break;
       if (!(a = a.parentNode)) return;
     }
@@ -4174,18 +4266,18 @@ const ns = {
       var form;
       if (fixedHref) {
         form = doc.getElementById(fixedHref); // youtube
-        if (!(form instanceof Ci.nsIDOMHTMLFormElement)) {
+        if (!(form instanceof w.HTMLFormElement)) {
           form = doc.forms.namedItem(fixedHref);
         }
       }
       if (!form) {
         var m = onclick.match(/(?:(?:\$|document\.getElementById)\s*\(\s*["']#?([\w\-]+)[^;]+|\bdocument\s*\.\s*(?:forms)?\s*(?:\[\s*["']|\.)?([^\.\;\s"'\]]+).*)\.submit\s*\(\)/);
         form = m && (/\D/.test(m[1]) ? (doc.forms.namedItem(m[1]) || doc.getElementById(m[1])) : doc.forms.item(parseInt(m[1])));
-        if (!(form && (form instanceof Ci.nsIDOMHTMLFormElement))) {
-          while ((form = a.parentNode) && form != doc && !form instanceof Ci.nsIDOMHTMLFormElement);
+        if (!(form && (form instanceof w.HTMLFormElement))) {
+          while ((form = a.parentNode) && form != doc && !form instanceof w.HTMLFormElement);
         }
       }
-      if (form && (form instanceof Ci.nsIDOMHTMLFormElement)) {
+      if (form && (form instanceof w.HTMLFormElement)) {
         form.submit();
         ev.preventDefault();
       }
@@ -4379,8 +4471,12 @@ const ns = {
     if (!this.consoleDump) return;
     if (msg.stack) msg += msg.stack;
     msg = `[NoScript ${this.childProcess ? "C" : "P"}] ${msg}`;
-    dump(`${msg}\n`);
-    if(this.consoleLog && !noConsole) this.log(msg);
+    try {
+      dump(`${msg}\n`);
+      if(this.consoleLog && !noConsole) this.log(msg);
+    } catch (e) {
+      this.log(`Error ${e} while logging "${msg}"`);
+    }
   },
 
 
diff --git a/chrome/noscript.jar!/content/noscript/MainChild.js b/chrome/content/noscript/MainChild.js
similarity index 94%
rename from chrome/noscript.jar!/content/noscript/MainChild.js
rename to chrome/content/noscript/MainChild.js
index f00ded2..0cf34e0 100644
--- a/chrome/noscript.jar!/content/noscript/MainChild.js
+++ b/chrome/content/noscript/MainChild.js
@@ -1,22 +1,16 @@
 var MainChild = {
   beforeInit: function() {
-    // must register the service manually
-    let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
-    registrar.registerFactory(this.classID, this.classDescription, this.contractID, this);
-    this.onDisposal(() => registrar.unregisterFactory(this.classID, this));
     // can't use big preference values in the child process
-    {
-      INCLUDE("Membrane");
-      let proto = PolicySites.prototype;
-      proto.toPref = () => {};
-      let fromPref = proto.fromPref;
-      let wrap = (target, propKey) => propKey === "getCharPref" ?
-        name => Services.cpmm.sendSyncMessage(IPC_P_MSG.GET_PREF, {method: propKey, name: target.root + name})[0]
-        : target[propKey];
-      proto.fromPref = function(pref, ...args) {
-        return fromPref.call(this, Membrane.create(pref, wrap), ...args);
-      };
-    }
+    INCLUDE("Membrane");
+    let proto = PolicySites.prototype;
+    proto.toPref = () => {};
+    let fromPref = proto.fromPref;
+    let wrap = (target, propKey) => propKey === "getCharPref" ?
+      name => Services.cpmm.sendSyncMessage(IPC_P_MSG.GET_PREF, {method: propKey, name: target.root + name})[0]
+      : target[propKey];
+    proto.fromPref = function(pref, ...args) {
+      return fromPref.call(this, Membrane.create(pref, wrap), ...args);
+    };
   },
   afterInit: function() {
     let snapshot = Services.cpmm.sendSyncMessage(IPC_P_MSG.GET_SNAPSHOT)[0];
@@ -560,7 +554,7 @@ var MainChild = {
   cpDump: function(msg, aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aInternalCall, aPrincipal) {
     this.dump("Content " + msg + " -- type: " + aContentType + ", location: " + (aContentLocation && aContentLocation.spec) +
       ", requestOrigin: " + (aRequestOrigin && aRequestOrigin.spec) + ", ctx: " +
-        ((aContext instanceof Ci.nsIDOMHTMLElement) ? "<HTML " + aContext.tagName + ">" // try not to cause side effects of toString() during load
+        (aContext.tagName ? "<HTML " + aContext.tagName + ">" // try not to cause side effects of toString() during load
           : aContext)  +
         ", mime: " + aMimeTypeGuess + ", Internal: " + aInternalCall +
         ", principal.origin: " + (aPrincipal && aPrincipal.origin));
@@ -675,9 +669,10 @@ var MainChild = {
     const rx = /^(?:opaque|transparent)$/i;
     var b;
     try {
-      if (Ci.nsIDOMHTMLEmbedElement && o instanceof Ci.nsIDOMHTMLEmbedElement) {
+      let tag = o.tagName && o.tagName.toLowerCase();
+      if (tag === "embed") {
         b = rx.test(o.getAttribute("wmode"));
-      } else if (o instanceof Ci.nsIDOMHTMLObjectElement) {
+      } else if (tag === "object") {
         var params = o.getElementsByTagName("param");
         const wmodeRx = /^wmode$/i;
         for(var j = params.length; j-- > 0 &&
diff --git a/chrome/noscript.jar!/content/noscript/MainParent.js b/chrome/content/noscript/MainParent.js
similarity index 95%
rename from chrome/noscript.jar!/content/noscript/MainParent.js
rename to chrome/content/noscript/MainParent.js
index 7e4722f..f4e3fd4 100644
--- a/chrome/noscript.jar!/content/noscript/MainParent.js
+++ b/chrome/content/noscript/MainParent.js
@@ -32,12 +32,11 @@ var MainParent = {
 
     this.reloadWhereNeeded(this.RELOAD_NO); // init snapshots
 
-    if (this.getPref("webext.enabled")) { // experimental, only in dev builds for now
+    if (this.getPref("webext.enabled")) {
       INCLUDE("WebExt");
       this.webExt = WebExt;
     }
-  },
-  webExt: null,
+   },
 
    _initE10s: function() {
     INCLUDE("e10sParent");
@@ -403,11 +402,11 @@ var MainParent = {
 
    _dontSerialize: ["version", "temp", "preset", "placesPrefs.ts", "mandatory", "default"],
 
-  conf2JSON() {
-    const exclude = this._dontSerialize;
+  conf2JSON(excludeDefault = false) {
+    const excluded = this._dontSerialize;
     const prefs = {};
-    for (let key  of this.prefs.getChildList("", {})) {
-      if (exclude.indexOf(key) === -1) {
+    for (let key of this.prefs.getChildList("", {})) {
+      if (!(excluded.includes(key) || excludeDefault && !this.prefs.prefHasUserValue(key))) {
         prefs[key] = this.getPref(key);
       }
     }
diff --git a/chrome/noscript.jar!/content/noscript/Membrane.js b/chrome/content/noscript/Membrane.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Membrane.js
rename to chrome/content/noscript/Membrane.js
diff --git a/chrome/noscript.jar!/content/noscript/MimeService.js b/chrome/content/noscript/MimeService.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/MimeService.js
rename to chrome/content/noscript/MimeService.js
diff --git a/chrome/noscript.jar!/content/noscript/MimeServiceParent.js b/chrome/content/noscript/MimeServiceParent.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/MimeServiceParent.js
rename to chrome/content/noscript/MimeServiceParent.js
diff --git a/chrome/noscript.jar!/content/noscript/NoScript_License.txt b/chrome/content/noscript/NoScript_License.txt
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/NoScript_License.txt
rename to chrome/content/noscript/NoScript_License.txt
diff --git a/chrome/noscript.jar!/content/noscript/PasteHandler.jsm b/chrome/content/noscript/PasteHandler.jsm
similarity index 90%
rename from chrome/noscript.jar!/content/noscript/PasteHandler.jsm
rename to chrome/content/noscript/PasteHandler.jsm
index 415821b..b666176 100644
--- a/chrome/noscript.jar!/content/noscript/PasteHandler.jsm
+++ b/chrome/content/noscript/PasteHandler.jsm
@@ -4,6 +4,9 @@ var EXPORTED_SYMBOLS = ["PasteHandler"];
 
 const Cu = Components.utils;
 
+Cu.import("chrome://noscript/content/importer.jsm");
+let IMPORT = IMPORT_FOR(this);
+
 function PasteHandler(ctx) {
   ctx.addEventListener("paste", pasteEventHandler, true);
 }
@@ -28,7 +31,7 @@ function pasteEventHandler(e) {
     
     if (sanitizeExtras(node)) {
       let sanitized = node.innerHTML;
-      Cu.import("chrome://noscript/content/defer.jsm");
+      IMPORT("defer");
       defer(function() { try {
         sanitizeExtras(t);
         console.log("[NoScript] Sanitized\n<PASTE>\n" + html + "\n</PASTE>to\n<PASTE>\n" + sanitized + "</PASTE>");
diff --git a/chrome/noscript.jar!/content/noscript/Plugins.js b/chrome/content/noscript/Plugins.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Plugins.js
rename to chrome/content/noscript/Plugins.js
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/content/noscript/Policy.js
similarity index 94%
rename from chrome/noscript.jar!/content/noscript/Policy.js
rename to chrome/content/noscript/Policy.js
index a027406..5ef9c11 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/content/noscript/Policy.js
@@ -7,15 +7,16 @@ var PolicyState = {
   checking: [],
   addCheck: function(url) {
     if (typeof Map === "function") {
-      this.checking = new Map(),
-      this.addCheck = function(url) { this.checking.set(url, true); }
-      this.removeCheck = function(url) { this.checking.delete(url); }
+      this.checking = new Map();
+      this.addCheck = function(url) { this.checking.set(url, true); };
+      this.removeCheck = function(url) { this.checking.delete(url); };
       PolicyState.isChecking = (url) => this.checking.has(url);
     } else {
       this.addCheck = function(url) {
-        if (this.checking.indexOf(url) === -1)
+        if (this.checking.indexOf(url) === -1) {
           this.checking.push(url);
-      }
+        }
+      };
     }
     this.addCheck(url);
   },
@@ -235,7 +236,7 @@ var MainContentPolicy = {
 
         if (!codeBase)
           codeBase = aContext.getAttribute("codebase") ||
-          (aContext instanceof Ci.nsIDOMHTMLAppletElement ? "/" : ".");
+          (aContext instanceof win.HTMLAppletElement ? "/" : ".");
 
         if (!archive)
           archive = aContext.getAttribute("archive");
@@ -244,7 +245,7 @@ var MainContentPolicy = {
           aContentLocation = IOS.newURI(codeBase, cs, aRequestOrigin);
         } catch (e) {}
 
-        if (Ci.nsIDOMHTMLEmbedElement && aContext instanceof Ci.nsIDOMHTMLEmbedElement) {
+        if (aContext instanceof win.HTMLEmbedElement) {
           code = aContext.getAttribute("code");
           if (code && /\bjava\b/.test(aMimeTypeGuess)) {
             archive = archive ? code + " " + archive : code;
@@ -308,6 +309,12 @@ var MainContentPolicy = {
     
     try {
 
+      let win = aContext && (
+          aContext.ownerDocument
+          ? aContext.ownerDocument.defaultView
+          : aContext.document ? aContext : (aContext.defaultView || Cu.getGlobalForObject(aContext))
+        );
+
       unwrappedLocation = IOUtil.unwrapURL(aContentLocation);
       scheme = unwrappedLocation.scheme;
 
@@ -347,8 +354,7 @@ var MainContentPolicy = {
                 break;
 
             case 7:
-              if (aContext instanceof Ci.nsIDOMHTMLObjectElement) {
-                let win = aContext.ownerDocument.defaultView
+              if (aContext instanceof win.HTMLObjectElement) {
                 if (this.isCachedObjectMime(aMimeTypeGuess) &&
                     !(aContext.offsetWidth && aContext.offsetHeight) &&
                     this.getPref("allowCachingObjects") &&
@@ -439,7 +445,7 @@ var MainContentPolicy = {
               (locationURL = aContentLocation.spec) == (originURL = aRequestOrigin.spec) &&
               aMimeTypeGuess) {
 
-            if (Ci.nsIDOMHTMLEmbedElement && (aContext instanceof Ci.nsIDOMHTMLEmbedElement) &&
+            if (aContext instanceof win.HTMLEmbedElement &&
               this.isAllowedObject(locationURL, aMimeTypeGuess)
               ) {
               if (logIntercept) this.dump("Plugin document " + locationURL);
@@ -507,12 +513,12 @@ var MainContentPolicy = {
 
           if (!(aContext instanceof Ci.nsIDOMXULElement)) {
 
-            isLegacyFrame = aContext instanceof Ci.nsIDOMHTMLFrameElement;
+            isLegacyFrame = aContext instanceof win.HTMLFrameElement;
 
             if (isLegacyFrame
                 ? this.forbidFrames || // we shouldn't allow framesets nested inside iframes, because they're just as bad
                                        this.forbidIFrames &&
-                                       (aContext.ownerDocument.defaultView.frameElement instanceof Ci.nsIDOMHTMLIFrameElement) &&
+                                       (win.frameElement instanceof win.HTMLIFrameElement) &&
                                        this.getPref("forbidMixedFrames", true)
                 : this.forbidIFrames || // we use iframes to make placeholders for blocked legacy frames...
                                        this.forbidFrames &&
@@ -670,7 +676,7 @@ var MainContentPolicy = {
           }
 
           forbid = !(originSite && locationSite == originSite);
-          scriptElement = aContext instanceof Ci.nsIDOMHTMLScriptElement;
+          scriptElement = aContext && win && (aContext instanceof win.HTMLScriptElement);
 
           if (forbid && httpOrigin && this.requestWatchdog /* lazy init */) {
             // XSSI protection
@@ -698,7 +704,6 @@ var MainContentPolicy = {
 
         if (forbid) {
           let doc = aContext && aContext.ownerDocument || aContext;
-          let win = doc && doc.defaultView;
           forbid = !this.isJSEnabled(locationSite, win);
           if (forbid && this.ignorePorts && /:\d+$/.test(locationSite))
             forbid = !(this.isJSEnabled(locationSite.replace(/:\d+$/, '')) && this.autoTemp(locationSite));
@@ -795,12 +800,6 @@ var MainContentPolicy = {
         originURL = originURL || (aRequestOrigin && aRequestOrigin.spec);
         originSite = originSite || this.getSite(originURL);
 
-        let win = aContext && (
-          aContext.ownerDocument
-          ? aContext.ownerDocument.defaultView
-          : aContext.document ? aContext : aContext.defaultView
-        );
-
         let jsRx = /^(?:javascript|data):/;
 
         let originOK = originSite
@@ -916,7 +915,9 @@ var MainContentPolicy = {
 var PolicyUtil = {
   supportsXSL: ("TYPE_XSLT" in Ci.nsIContentPolicy),
   isXSL: function(ctx) {
-    return ctx && !(ctx instanceof Ci.nsIDOMHTMLLinkElement || ctx instanceof Ci.nsIDOMHTMLStyleElement || ctx instanceof Ci.nsIDOMHTMLDocument);
+    if (!ctx) return false;
+    let g = Cu.getGlobalForObject(ctx);
+    return !(ctx instanceof g.HTMLLinkElement || ctx instanceof g.HTMLStyleElement || ctx instanceof g.HTMLDocument);
   },
 
 };
diff --git a/chrome/noscript.jar!/content/noscript/Profiler.js b/chrome/content/noscript/Profiler.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Profiler.js
rename to chrome/content/noscript/Profiler.js
diff --git a/chrome/noscript.jar!/content/noscript/Removal.js b/chrome/content/noscript/Removal.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Removal.js
rename to chrome/content/noscript/Removal.js
diff --git a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js b/chrome/content/noscript/RequestWatchdog.js
similarity index 99%
rename from chrome/noscript.jar!/content/noscript/RequestWatchdog.js
rename to chrome/content/noscript/RequestWatchdog.js
index 7e7f07e..0efd1c9 100644
--- a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
+++ b/chrome/content/noscript/RequestWatchdog.js
@@ -16,8 +16,7 @@ var RequestGC = {
         }
       }
       if (reqs.length === 0) {
-        t.cancel();
-        this._running = false;
+        this.dispose();
       }
     } catch(e) {
       ns.dump(e);
@@ -29,6 +28,12 @@ var RequestGC = {
       this._running = true;
       this._timer.initWithCallback(this, this.INTERVAL, Ci.nsITimer.TYPE_REPEATING_SLACK);
     }
+  },
+  dispose() {
+    if (this._running) {
+      this._timer.cancel();
+      this._running = false;
+    }
   }
 };
 
@@ -54,6 +59,7 @@ RequestWatchdog.prototype = {
   },
   dispose: function() {
     for (var topic  of this.OBSERVED_TOPICS) OS.removeObserver(this, topic);
+    RequestGC.dispose();
   },
 
   callback: null,
@@ -65,8 +71,12 @@ RequestWatchdog.prototype = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
 
   observe(channel, topic) {
-
-    if (!(channel instanceof Ci.nsIHttpChannel)) return;
+    try {
+      if (!(channel instanceof Ci.nsIHttpChannel)) return;
+    } catch (e) {
+      ns.dump(`${topic} failed ${uneval(e)}`);
+      return;
+    }
 
     if(ns.consoleDump & LOG_SNIFF) {
       ns.dump(topic + ": " + channel.URI.spec + ", " + channel.loadFlags);
diff --git a/chrome/content/noscript/Restartless.jsm b/chrome/content/noscript/Restartless.jsm
new file mode 100644
index 0000000..df4a12a
--- /dev/null
+++ b/chrome/content/noscript/Restartless.jsm
@@ -0,0 +1,180 @@
+var EXPORTED_SYMBOLS = ["startup", "shutdown", "upgrade", "loadIntoWindow", "unloadFromWindow"];
+var { utils: Cu, interfaces: Ci } = Components;
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import(`chrome://noscript/content/importer.jsm`);
+
+Services.scriptloader.loadSubScript(NO_CACHE("loader.js"), this);
+
+function loadDefaultPrefs(xpiURI, fileName) {
+  try {
+      let prefURI = xpiURI.spec + "/defaults/preferences/" + fileName;
+      let branch = Services.prefs.getDefaultBranch("");
+      Services.scriptloader.loadSubScript(prefURI, {
+        Cc,
+        Ci,
+        pref(name, value) {
+            try {
+              switch (typeof value) {
+                  case "boolean":
+                      branch.setBoolPref(name, value);
+                      break;
+
+                  case "number":
+                      branch.setIntPref(name, value);
+                      break;
+
+                  case "string":
+                      var str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+                      str.data = value;
+                      branch.setComplexValue(name, Ci.nsISupportsString, str);
+                      break;
+              }
+            } catch (e) {
+                Cu.reportError(`NoScript could not set default pref value for ${name}: ${e}`);
+            }
+        }
+      });
+  } catch (err) {
+      Cu.reportError(err);
+  }
+}
+
+function startup(addonData) {
+  loadDefaultPrefs(addonData.resourceURI, "noscript.js");
+  INCLUDE("Main");
+  Main.bootstrap();
+
+  createWidgetTemplate();
+    Main.init();
+    if (Main.webExt && addonData.webExtension) {
+      Main.webExt.init(addonData.webExtension);
+    }
+}
+
+function shutdown(addonData) {
+  if (CustomizableUI && widgetTemplate) {
+    CustomizableUI.destroyWidget(widgetTemplate.id);
+  }
+  Main.shutdown();
+  UNLOAD_ALL();
+}
+
+function upgrade(addonData) {
+  Main.checkVersion();
+}
+
+try {
+  Cu.import("resource:///modules/CustomizableUI.jsm");
+} catch(e) {
+  var CustomizableUI = null;
+}
+var widgetTemplate = null;
+let isSeamonkey = () => !CustomizableUI && Services.appinfo.ID === "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}";
+const OVERLAY_URL = NO_CACHE(`noscriptOverlay${isSeamonkey() ? "" : "Fx57"}.xul`);
+
+function createWidgetTemplate() {
+  let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
+              .createInstance(Ci.nsIXMLHttpRequest);
+  xhr.open("GET", OVERLAY_URL);
+  
+  xhr.addEventListener("load", r => {
+    createWidget(xhr.responseXML.getElementById("noscript-tbb"));
+  });
+  xhr.send(null);
+}
+
+function createWidget(template) {
+  widgetTemplate = template;
+  if (CustomizableUI) {
+    CustomizableUI.createWidget({
+      id: widgetTemplate.id,
+      type: "custom",
+      onBuild(doc) {
+        return doc.importNode(widgetTemplate);
+      },
+      onCreated(node) {
+        let noscriptOverlay = node.ownerDocument.defaultView.noscriptOverlay;
+        if (noscriptOverlay) node.ownerDocument.defaultView.noscriptOverlay.initPopups();
+      }
+    });
+  }
+}
+
+
+function placeWidgetNoAustralis(document) {
+  let id = widgetTemplate.id;
+  let widget = document.getElementById(id) || document.importNode(widgetTemplate);
+  if (widget.parentNode) return;
+  let toolbar = document.querySelector(`toolbar[currentset*="${id}"],toolbar[currentset*=",${id},"],toolbar[currentset^="${id},"],toolbar[currentset=",${id}"]`);
+  if (toolbar) {
+    let currentSet = toolbar.getAttribute("currentset");
+    if (toolbar.currentSet !== currentSet) {
+      toolbar.currentSet = currentSet;
+      try {
+        document.defaultView.BrowserToolboxCustomizeDone(true);
+      } catch (e) {}
+    }
+    let items = currentSet.split(",");
+    let next = items.indexOf(id) + 1;
+    let nextNode = next > items.length ? null : document.getElementById(items[next]);
+    toolbar.insertBefore(widget, nextNode);
+  } else {
+    toolbar = document.querySelector("toolbar");
+    if (toolbar && toolbar.toolbox && toolbar.toolbox.palette) {
+      toolbar.toolbox.palette.appendChild(widget);
+    }
+  }
+}
+
+var overlayLoading = false;
+var overlayQueue = [];
+function loadIntoWindow(w, early = false) {
+  if (w.noscriptOverlay) return;
+  if (overlayLoading) {
+    overlayQueue.push(w);
+    return;
+  }
+  overlayLoading = true;
+  try {
+    w.document.loadOverlay(OVERLAY_URL, {
+      observe() {
+        if (!early) {
+          if (CustomizableUI) {
+            CustomizableUI.ensureWidgetPlacedInWindow(widgetTemplate.id, w);
+            let widget = w.document.getElementById(widgetTemplate.id);
+            if (widget) widget.hidden = false;
+            else {
+              Main.log(`${widgetTemplate.id} not found!`);
+            }
+          } else {
+            placeWidgetNoAustralis(w.document);
+          }
+          
+          (function initWindow() {
+              if (w.noscriptOverlay) {
+                w.noscriptOverlay.listeners.onLoad();
+              } else {
+                w.setTimeout(initWindow, 300);
+              }
+          })();
+        }
+        Main.dump(`Overlay loaded ${early}, ${w.noscriptOverlay}`);
+        overlayLoading = false;
+        if (overlayQueue.length) {
+          loadIntoWindow(overlayQueue.shift());
+        }
+      }
+    });
+  } catch (e) {
+    Cu.reportError(e);
+    Cu.reportError(`Could not overlay ${w.location.href}`);
+    overlayLoading = false;
+  }
+
+}
+
+
+function unloadFromWindow(w) {
+  if (w.noscriptOverlay) w.noscriptOverlay.listeners.onUnload();
+}
+
diff --git a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js b/chrome/content/noscript/ScriptSurrogate.js
similarity index 95%
rename from chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
rename to chrome/content/noscript/ScriptSurrogate.js
index 286e03c..1744cf6 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
+++ b/chrome/content/noscript/ScriptSurrogate.js
@@ -182,7 +182,7 @@ var ScriptSurrogate = {
 
   _errorListener: function(ev) {
     var s = ev.target;
-    if (!(s instanceof Ci.nsIDOMHTMLScriptElement)) return;
+    if (s.localName !== "script") return;
     let url = s.src;
     if (!url) return;
 
@@ -206,7 +206,7 @@ var ScriptSurrogate = {
   },
   _execListener: function(ev) {
     let s = ev.target;
-    if (s instanceof Ci.nsIDOMHTMLScriptElement && s.src) {
+    if (s.localName === "script" && s.src) {
       ScriptSurrogate.apply(s.ownerDocument, s.src, ev.type[0] === 'b' ? "<" : ">", false);
     }
   },
diff --git a/chrome/noscript.jar!/content/noscript/ScriptlessBGThumbs.js b/chrome/content/noscript/ScriptlessBGThumbs.js
similarity index 54%
rename from chrome/noscript.jar!/content/noscript/ScriptlessBGThumbs.js
rename to chrome/content/noscript/ScriptlessBGThumbs.js
index fc644ef..962c060 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptlessBGThumbs.js
+++ b/chrome/content/noscript/ScriptlessBGThumbs.js
@@ -1,12 +1,16 @@
 {
   let scope = {};
   Cu.import("resource://gre/modules/BackgroundPageThumbs.jsm", scope);
-  
 
   let bpt = scope.BackgroundPageThumbs;
-  if (!bpt._NoScript_capture) {
-    bpt._NoScript_capture = bpt.capture;
-    bpt.capture = function() {
+
+  if (!bpt._NoScript_) {
+    let patched = bpt._NoScript_ = {};
+    let patch = (name, f) => {
+      patched[name] = bpt[name];
+      bpt[name] = f;
+    };
+    patch("capture",  function() {
       Cu.import("resource://gre/modules/PageThumbs.jsm", scope);
       let PageThumbs = scope.PageThumbs;
       let e = PageThumbs._prefEnabled;
@@ -14,22 +18,31 @@
         PageThumbs._prefEnabled = () => false;
       }
       try {
-        bpt._NoScript_capture.apply(bpt, arguments);
+        bpt._NoScript_.capture.apply(bpt, arguments);
       } finally {
         PageThumbs._prefEnabled = e;
       }
-    };
+    });
     
     bpt._destroyBrowser();
 
-    bpt._NoScript_ensureBrowser = bpt._ensureBrowser;
-    bpt._ensureBrowser = function() {
+    patch("_ensureBrowser", function() {
       if (!this._thumbBrowser) {
-        this._NoScript_ensureBrowser();
+        this._NoScript_._ensureBrowser.apply(this, arguments);
         if (this._thumbBrowser && ns.getPref("bgThumbs.disableJS"))
           this._thumbBrowser.messageManager.loadFrameScript(
             "data:text/javascript,docShell.allowJavascript = false", false);
       }
-    };
+    });
+
+    ns.onDisposal(() => {
+      let patched = bpt._NoScript_;
+      if (!patched) return;
+      for(let name of Object.keys(patched)) {
+        bpt[name] = patched[name];
+      }
+      delete bpt._NoScript_;
+    });
   }
+   
 }
diff --git a/chrome/noscript.jar!/content/noscript/SiteUtils.js b/chrome/content/noscript/SiteUtils.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/SiteUtils.js
rename to chrome/content/noscript/SiteUtils.js
diff --git a/chrome/noscript.jar!/content/noscript/Strings.js b/chrome/content/noscript/Strings.js
similarity index 78%
rename from chrome/noscript.jar!/content/noscript/Strings.js
rename to chrome/content/noscript/Strings.js
index 0ec01ec..38fd8e5 100644
--- a/chrome/noscript.jar!/content/noscript/Strings.js
+++ b/chrome/content/noscript/Strings.js
@@ -5,6 +5,7 @@ function Strings(chromeName) {
 Strings.wrap = (s, count) => s.replace(new RegExp("\\w{" + (parseInt(count) || 20) + "}", 'g'), "$&\u200B");
 
 Strings.prototype = {
+  _rnd: `${Math.random()}-${Date.now()}`,
   bundles: {},
   getBundle: function(path) {
     if (path in this.bundles) return this.bundles[path];
@@ -12,8 +13,9 @@ Strings.prototype = {
       return this.bundles[path] = 
         Cc["@mozilla.org/intl/stringbundle;1"]
                   .getService(Ci.nsIStringBundleService)
-                  .createBundle("chrome://" + this.chromeName +  "/" + path +
-                                "/" + this.chromeName + ".properties");
+                  .createBundle(
+                    `chrome://${this.chromeName}/${path}/${this.chromeName}.properties?${this._rnd}`
+                  );
     } catch(ex) {
       return this.bundles[path] = null;
     }
diff --git a/chrome/noscript.jar!/content/noscript/SyntaxChecker.js b/chrome/content/noscript/SyntaxChecker.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/SyntaxChecker.js
rename to chrome/content/noscript/SyntaxChecker.js
diff --git a/chrome/noscript.jar!/content/noscript/Thread.js b/chrome/content/noscript/Thread.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/Thread.js
rename to chrome/content/noscript/Thread.js
diff --git a/chrome/noscript.jar!/content/noscript/UISync.jsm b/chrome/content/noscript/UISync.jsm
similarity index 70%
rename from chrome/noscript.jar!/content/noscript/UISync.jsm
rename to chrome/content/noscript/UISync.jsm
index 7283917..68d6c80 100644
--- a/chrome/noscript.jar!/content/noscript/UISync.jsm
+++ b/chrome/content/noscript/UISync.jsm
@@ -4,14 +4,14 @@ var EXPORTED_SYMBOLS = ["UISync"];
 
 let { interfaces: Ci, classes: Cc, utils: Cu, results: Cr } = Components;
 
-const HTMLDocument = Ci.nsIDOMHTMLDocument;
-const messages = ["NoScript:reload", "NoScript:reloadAllowedObjects", "NoScript:purgeRecent", "NoScript:forceSync"];
+const messages = ["NoScript:reload", "NoScript:reloadAllowedObjects",
+                  "NoScript:purgeRecent", "NoScript:forceSync",
+                  "NoScript:unload"];
 
 function UISync(ctx) {
   this.ctx = ctx;
   this.wire();
-  let ns = ctx.ns;
-  ns.clearClickHandler.install(ctx);
+  this.scheduleSync();
 }
 
 UISync.prototype = {
@@ -19,29 +19,42 @@ UISync.prototype = {
     tapped: null,
     delKey: false,
   },
-  wire: function() {
+
+  listeners: [],
+  addListener(type, handler, opts) {
+    this.ctx.addEventListener(type, handler, opts);
+    this.listeners.push({type, handler, opts});
+  },
+  removeListeners() {
+    let ctx = this.ctx;
+    for(let {type, handler, opts} of this.listeners) {
+      ctx.removeEventListener(type, handler, opts);
+    }
+  },
+
+  wire() {
     let ctx = this.ctx;
     let eraser = this.eraser;
 
-    ctx.addEventListener("DOMWindowCreated", () => this.sync());
-    ctx.addEventListener("NoScript:syncUI", ev => {
+    this.addListener("DOMWindowCreated", () => this.sync());
+    this.addListener("NoScript:syncUI", ev => {
        ev.stopPropagation();
        this.scheduleSync();
     }, true);
-    ctx.addEventListener("DOMContentLoaded", ev => {
+    this.addListener("DOMContentLoaded", ev => {
       this.onContentLoad(ev);
     }, true);
-    ctx.addEventListener("pageshow", ev => {
+    this.addListener("pageshow", ev => {
       this.onPageShow(ev);
     }, true);
-    ctx.addEventListener("pagehide", ev => {
+    this.addListener("pagehide", ev => {
       eraser.tapped = null;
       eraser.delKey = false;
       this.onPageHide(ev);
     }, true);
 
     
-    ctx.addEventListener("keyup", ev => {
+    this.addListener("keyup", ev => {
       let el = eraser.tapped;
       if (el && ev.keyCode === 46 &&
           ctx.ns.getPref("eraseFloatingElements")
@@ -63,14 +76,14 @@ UISync.prototype = {
       }
     }, true);
 
-    ctx.addEventListener("mousedown", ev => {
+    this.addListener("mousedown", ev => {
       if (ev.button === 0) {
         eraser.tapped = ev.target;
         eraser.delKey = false;
       }
     }, true);
 
-    ctx.addEventListener("mouseup", ev => {
+    this.addListener("mouseup", ev => {
       if (eraser.delKey) {
         eraser.delKey = false;
         ev.preventDefault();
@@ -83,18 +96,27 @@ UISync.prototype = {
     for (let m of messages) {
       ctx.addMessageListener(m, this);
     }
+    this.messages = messages;
+    ctx.ns.clearClickHandler.install(ctx);
   },
 
-  unwire: function() {
-    for (let m of messages) {
+  unwire() {
+    let ctx = this.ctx;
+    let ns = ctx.ns;
+    ns.dump("Unwiring frame script");
+    ns.clearClickHandler.uninstall(ctx);
+    for (let m of this.messages) {
       ctx.removeMessageListener(m, this);
     }
+    this.removeListeners();
   },
 
   receiveMessage: function(msg) {
     let ctx = this.ctx;
     let ns = ctx.ns;
-    if (ns.consoleDump) ns.dump(`Received message ${msg.name} ${uneval(msg.data)}`);
+    if (ns.consoleDump) try {
+      ns.dump(`Received message ${msg.name} ${uneval(msg.data)}`);
+    } catch (e) {}
     switch(msg.name) {
       case "NoScript:reload":
         let { innerWindowID, snapshots, reloadPolicy, mustReload } = msg.data;
@@ -111,6 +133,9 @@ UISync.prototype = {
       case "NoScript:forceSync":
         this.sync();
       break;
+      case "NoScript:unload":
+        this.unwire();
+      break;
     }
   },
 
@@ -145,34 +170,33 @@ UISync.prototype = {
   },
 
   notifyMetaRefresh(info) {
-    ctx.sendAsyncMessage("NoScript:notifyMetaRefresh", info);
+    this.ctx.sendAsyncMessage("NoScript:notifyMetaRefresh", info);
   },
 
   onContentLoad(ev) {
     var doc = ev.originalTarget;
-    if (doc instanceof HTMLDocument) {
-      let w = doc.defaultView;
-      if (w) {
-        let ns = this.ctx.ns;
-        ns.setExpando(doc, "domLoaded", true);
-        if (w === w.top) {
-          let url = doc.URL;
-          let jsBlocked = /^https?:/.test(url) && !ns.isJSEnabled(ns.getSite(url), w);
-          if (jsBlocked) {
-            ns.processMetaRefresh(doc, this.notifyMetaRefresh);
-            w.addEventListener("pageshow", ev => this.onPageShowNS(ev), false);
-          }
-        } else {
-          ns.frameContentLoaded(w);
+    let w = doc.defaultView;
+    if (w) {
+
+      let ns = this.ctx.ns;
+      ns.setExpando(doc, "domLoaded", true);
+      if (w === w.top) {
+        let url = doc.URL;
+        let jsBlocked = /^https?:/.test(url) && !ns.isJSEnabled(ns.getSite(url), w);
+        if (jsBlocked) {
+          ns.processMetaRefresh(doc, this.notifyMetaRefresh);
+          w.addEventListener("pageshow", ev => this.onPageShowNS(ev), false);
         }
-        this.sync();
+      } else {
+        ns.frameContentLoaded(w);
       }
+      this.sync();
     }
   },
 
   onPageShow(ev) {
     let d = ev.originalTarget;
-    if (d instanceof HTMLDocument) {
+    if (d.defaultView) {
       try {
         if (ev.persisted) {
           this.toggleObjectsVisibility(d, true);
@@ -190,7 +214,7 @@ UISync.prototype = {
   },
   onPageHide(ev) {
     let d = ev.originalTarget;
-    if (d instanceof HTMLDocument) {
+    if (d.defaultView) {
       this.toggleObjectsVisibility(d, false);
     }
     this.sync();
diff --git a/chrome/noscript.jar!/content/noscript/URIValidator.js b/chrome/content/noscript/URIValidator.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/URIValidator.js
rename to chrome/content/noscript/URIValidator.js
diff --git a/chrome/noscript.jar!/content/noscript/WebExt.js b/chrome/content/noscript/WebExt.js
similarity index 51%
rename from chrome/noscript.jar!/content/noscript/WebExt.js
rename to chrome/content/noscript/WebExt.js
index 82f97e4..e70a68e 100644
--- a/chrome/noscript.jar!/content/noscript/WebExt.js
+++ b/chrome/content/noscript/WebExt.js
@@ -3,7 +3,7 @@ var WebExt = {
   started: false,
   running: false,
   port: null,
-  saveData(json = ns.conf2JSON()) {
+  saveData(json = ns.conf2JSON(true)) {
     this.tell("saveData", json);
   },
   start(policy = null) {
@@ -16,29 +16,13 @@ var WebExt = {
     if (this.port) {
       this.port.postMessage({ type, data });
     }
-  }
-};
-
-try {
-
-  const addonId = EXTENSION_ID;
-  const {
-    AddonManager,
-  } = Components.utils.import("resource://gre/modules/AddonManager.jsm", {});
-
-  AddonManager.getAddonByID(addonId, addon => {
-    const baseURI = addon.getResourceURI("/");
-    const {
-      LegacyExtensionsUtils,
-    } = Components.utils.import("resource://gre/modules/LegacyExtensionsUtils.jsm");
+  },
 
-    const embeddedWebExtension = LegacyExtensionsUtils.getEmbeddedExtensionFor({
-      id: addonId, resourceURI: baseURI,
-    });
+  init(embeddedWebExtension) {
     WebExt.enabled = true;
     embeddedWebExtension.startup().then(({browser}) => {
       WebExt.started = true;
-      ns.dump(`${addonId} - embedded webext started`);
+      ns.dump(`Embedded webext started`);
       browser.runtime.onMessage.addListener(msg => {
         switch(msg) {
           case "STARTED":
@@ -48,20 +32,18 @@ try {
             WebExt.running = false;
             break;
         }
-        ns.dump(`${addonId} - received message from embedded webext ${msg}`);
+        ns.dump(`Received message from embedded webext ${msg}`);
       });
       browser.runtime.onConnect.addListener(port => {
-        ns.dump(`${addonId} - webext connected`);
+        ns.dump(`Webext connected`);
         WebExt.port = port;
         WebExt.saveData();
         WebExt.stop();
       });
     }).catch(err => {
       Components.utils.reportError(
-        `${addonId} - embedded webext startup failed: ${err.message} ${err.stack}\n`
+        `Embedded webext startup failed: ${err.message} ${err.stack}\n`
       );
     });
-  });
-} catch (e) {
-  Cu.reportError(e);
-}
+  },
+};
diff --git a/chrome/noscript.jar!/content/noscript/WebGLInterception.js b/chrome/content/noscript/WebGLInterception.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/WebGLInterception.js
rename to chrome/content/noscript/WebGLInterception.js
diff --git a/chrome/noscript.jar!/content/noscript/WinScript.js b/chrome/content/noscript/WinScript.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/WinScript.js
rename to chrome/content/noscript/WinScript.js
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/content/noscript/about.xul
similarity index 96%
rename from chrome/noscript.jar!/content/noscript/about.xul
rename to chrome/content/noscript/about.xul
index 6b935aa..c36393d 100644
--- a/chrome/noscript.jar!/content/noscript/about.xul
+++ b/chrome/content/noscript/about.xul
@@ -48,7 +48,7 @@ function about_onload() {
   
   var str = getString("aboutTitle",["NoScript"]);
   if(str) document.title = str;
-  str = getString("version", ["5.0.10"]);
+  str = getString("version", ["5.1.1"]);
   if(str) document.getElementById("extensionVersion").setAttribute("value", str);
   
   setString("extensionDescription",null,"extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.description");
@@ -86,7 +86,7 @@ function about_open(url, features) {
 <hbox id="headBox" align="end">
 <vbox flex="1">
 <label value="NoScript" id="extensionName" crop="right"/>
-<label value="Version 5.0.10" id="extensionVersion" crop="right"/>
+<label value="Version 5.1.1" id="extensionVersion" crop="right"/>
 </vbox>
 <vbox flex="1" align="end">
 <hbox align="end">
@@ -164,7 +164,7 @@ function about_open(url, features) {
 <hbox>
 <label id="license" class="text-link" tooltiptext="Read end-user license" onclick="about_open('chrome://noscript/content/NoScript_License.txt')">License</label>
 <spacer flex="1"/>
-<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.0.10')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.1.1')">Changelog</label>
 <spacer flex="1"/>
 <label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('https://noscript.net')">https://noscript.net</label>
 </hbox>
diff --git a/chrome/noscript.jar!/content/noscript/antlr.js b/chrome/content/noscript/antlr.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/antlr.js
rename to chrome/content/noscript/antlr.js
diff --git a/chrome/noscript.jar!/content/noscript/clearClick.js b/chrome/content/noscript/clearClick.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/clearClick.js
rename to chrome/content/noscript/clearClick.js
diff --git a/chrome/noscript.jar!/content/noscript/clearClick.xul b/chrome/content/noscript/clearClick.xul
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/clearClick.xul
rename to chrome/content/noscript/clearClick.xul
diff --git a/chrome/noscript.jar!/content/noscript/defer.jsm b/chrome/content/noscript/defer.jsm
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/defer.jsm
rename to chrome/content/noscript/defer.jsm
diff --git a/chrome/content/noscript/e10sChild.js b/chrome/content/noscript/e10sChild.js
new file mode 100644
index 0000000..4012ba6
--- /dev/null
+++ b/chrome/content/noscript/e10sChild.js
@@ -0,0 +1,51 @@
+var EXPORTED_SYMBOLS = [];
+Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import(`chrome://noscript/content/importer.jsm`);
+
+Services.scriptloader.loadSubScript(NO_CACHE(`loader.js`), this);
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+
+
+(function () {
+  try {
+    INCLUDE("Main");
+  } catch (e) {
+    Cu.reportError(e);
+  }
+
+  IPC.child = {
+    QueryInterface: XPCOMUtils.generateQI([Ci.nsIMessageListener, Ci.nsISupportsWeakReference]),
+    init: function() {
+      Services.cpmm.addWeakMessageListener(IPC_P_MSG.CALL, this);
+      Main.init();
+    },
+    dispose: function() {
+      Services.cpmm.removeWeakMessageListener(IPC_P_MSG.CALL, this);
+      Main.shutdown();
+      UNLOAD_ALL();
+    },
+
+    receiveMessage: function(m) {
+      if (IPC.receiveMessage(m)) {
+        return;
+      }
+      if (m.name === "NoScript:unload") {
+        this.dispose();
+      }
+    },
+
+    remote(objName, method, args) {
+      Services.cpmm.sendAsyncMessage(IPC_P_MSG.CALL, {objName, method, args});
+    }
+
+  };
+  try {
+    Main.bootstrap();
+    IPC.child.init();
+    Services.cpmm.sendAsyncMessage(IPC_P_MSG.SERVICE_READY);
+  } catch (e) {
+    Components.utils.reportError(e);
+  }
+})();
diff --git a/chrome/noscript.jar!/content/noscript/e10sIPC.js b/chrome/content/noscript/e10sIPC.js
similarity index 97%
rename from chrome/noscript.jar!/content/noscript/e10sIPC.js
rename to chrome/content/noscript/e10sIPC.js
index 43be529..3651517 100644
--- a/chrome/noscript.jar!/content/noscript/e10sIPC.js
+++ b/chrome/content/noscript/e10sIPC.js
@@ -4,6 +4,7 @@ var IPC_MSG = {
   CLEARCLICK_WARNING: "NoScript:clearClickWarning",
 },
 IPC_P_MSG = {
+  SERVICE_READY: "NoScript:ServiceReady",
   LOAD_SURROGATE: "NoScript:loadSurrogate",
   CALL: "NoScript:remoteCall",
   RESUME: "NoScript:resume",
diff --git a/chrome/noscript.jar!/content/noscript/e10sParent.js b/chrome/content/noscript/e10sParent.js
similarity index 89%
rename from chrome/noscript.jar!/content/noscript/e10sParent.js
rename to chrome/content/noscript/e10sParent.js
index f708582..29ed9e3 100644
--- a/chrome/noscript.jar!/content/noscript/e10sParent.js
+++ b/chrome/content/noscript/e10sParent.js
@@ -1,18 +1,18 @@
 IPC.parent = {
-  FRAME_SCRIPT: "chrome://noscript/content/frameScript.js",
-  PROCESS_SCRIPT: "chrome://noscript/content/e10sProcessScript.js",
+  FRAME_SCRIPT: NO_CACHE("frameScript.js"),
+  PROCESS_SCRIPT: NO_CACHE("e10sProcessScript.js"),
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIMessageListener, Ci.nsISupportsWeakReference]),
   init() {
     let globalMM = Services.mm;
     for (let m of Object.keys(IPC_MSG)) {
       globalMM.addWeakMessageListener(IPC_MSG[m], this);
     }
-    globalMM.loadFrameScript(this.FRAME_SCRIPT, true);
     let processMM = Services.ppmm;
     for (let m of Object.keys(IPC_P_MSG)) {
       processMM.addWeakMessageListener(IPC_P_MSG[m], this);
     }
     processMM.loadProcessScript(this.PROCESS_SCRIPT, true);
+    globalMM.loadFrameScript(this.FRAME_SCRIPT, true);
   },
   dispose() {
     let globalMM = Services.mm;
@@ -23,6 +23,8 @@ IPC.parent = {
     for (let m of Object.keys(IPC_P_MSG)) {
       processMM.removeWeakMessageListener(IPC_P_MSG[m], this);
     }
+    globalMM.removeDelayedFrameScript(this.FRAME_SCRIPT);
+    globalMM.broadcastAsyncMessage("NoScript:unload");
     processMM.removeDelayedProcessScript(this.PROCESS_SCRIPT);
   },
   
diff --git a/chrome/noscript.jar!/content/noscript/e10sProcessScript.js b/chrome/content/noscript/e10sProcessScript.js
similarity index 51%
rename from chrome/noscript.jar!/content/noscript/e10sProcessScript.js
rename to chrome/content/noscript/e10sProcessScript.js
index 8e5298a..d070694 100644
--- a/chrome/noscript.jar!/content/noscript/e10sProcessScript.js
+++ b/chrome/content/noscript/e10sProcessScript.js
@@ -1,14 +1,8 @@
 Components.utils.import("resource://gre/modules/Services.jsm");
-let console = Services.console;
 
-let scope = {
-  log: function(msg) {
-    console.logStringMessage(msg);
-  }
-}
 if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
-  Services.scriptloader.loadSubScript("chrome://noscript/content/e10sChild.js", scope);
-
+  Components.utils.import(`chrome://noscript/content/importer.jsm`);
+  Services.scriptloader.loadSubScript(NO_CACHE(`e10sChild.js`), {});
 } else {
   // nothing to do exclusively in the parent process yet...
 }
diff --git a/chrome/content/noscript/frameScript.js b/chrome/content/noscript/frameScript.js
new file mode 100644
index 0000000..808ce33
--- /dev/null
+++ b/chrome/content/noscript/frameScript.js
@@ -0,0 +1,3 @@
+Components.utils.import("chrome://noscript/content/importer.jsm");
+IMPORT_FOR(this)("FrameScript");
+new FrameScript(this);
diff --git a/chrome/noscript.jar!/content/noscript/iaUI.js b/chrome/content/noscript/iaUI.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/iaUI.js
rename to chrome/content/noscript/iaUI.js
diff --git a/chrome/content/noscript/importer.jsm b/chrome/content/noscript/importer.jsm
new file mode 100644
index 0000000..131bae4
--- /dev/null
+++ b/chrome/content/noscript/importer.jsm
@@ -0,0 +1,30 @@
+var EXPORTED_SYMBOLS = ["NO_CACHE", "IMPORT_FOR", "UNLOAD", "UNLOAD_ALL", "BASE_URL"];
+
+let { utils: Cu } = Components;
+
+let BASE_URL = "chrome://noscript/content/";
+let toURL = name => `${name}.jsm`;
+
+let _NO_CACHE_KEY = Date.now().toString(32).concat(Math.random().toString(32).substring(2));
+
+function NO_CACHE(url) {
+  return `${BASE_URL}${url}?${_NO_CACHE_KEY}`;
+}
+
+let _MODULES = new Set();
+
+function IMPORT_FOR(scope) {
+  return name => {
+    let url = NO_CACHE(toURL(name));
+    _MODULES.add(url);
+    return Cu.import(url, scope);
+  };
+}
+
+function UNLOAD(name) {
+  Cu.unload(NO_CACHE(toURL(name)));
+}
+function UNLOAD_ALL() {
+  for (let m of _MODULES) Cu.unload(m);
+  UNLOAD("importer");
+}
diff --git a/chrome/noscript.jar!/content/noscript/loader.js b/chrome/content/noscript/loader.js
similarity index 70%
rename from chrome/noscript.jar!/content/noscript/loader.js
rename to chrome/content/noscript/loader.js
index 2241056..fa17374 100644
--- a/chrome/noscript.jar!/content/noscript/loader.js
+++ b/chrome/content/noscript/loader.js
@@ -1,19 +1,25 @@
 // const TIME0 = Date.now();
-Components.utils.import("resource://gre/modules/Services.jsm");
+
 var { interfaces: Ci, classes: Cc, utils: Cu, results: Cr } = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import(`chrome://noscript/content/importer.jsm`);
+var IMPORT = IMPORT_FOR(this);
+
 var IOS = Services.io;
 var OS = Services.obs;
+var LOADER = Services.scriptloader;
 
 
-const LOADER = Services.scriptloader;
-const _INCLUDED = {};
+var _INCLUDED = new Set();
 
-function INCLUDE(...objectNames) {
+var INCLUDE = function (...objectNames) {
   for (let objectName of objectNames) {
-    if (!(objectName in _INCLUDED)) {
-      _INCLUDED[objectName] = true;
+    if (!(_INCLUDED.has(objectName))) {
+      _INCLUDED.add(objectName);
       // let t = Date.now();
-      LOADER.loadSubScript(`chrome://noscript/content/${objectName}.js`, this);
+      LOADER.loadSubScript(NO_CACHE(`${objectName}.js`), this);
       // dump((t - TIME0) + " - loaded " + objectName + " in " + (Date.now() - t) + "\n")
     }
   }
@@ -21,7 +27,7 @@ function INCLUDE(...objectNames) {
 
 function LAZY_INCLUDE(...objectNames) {
   for (let objectName of objectNames) {
-    if (!(objectName in _INCLUDED)) {
+     if (!(_INCLUDED.has(objectName))) {
       let key = objectName; // hack needed in Fx < 50
       this.__defineGetter__(key, function() {
         delete this[key];
@@ -48,3 +54,4 @@ function MIXIN(target, ...objects) {
   }
   return target;
 }
+
diff --git a/chrome/noscript.jar!/content/noscript/noscript.js b/chrome/content/noscript/noscript.js
similarity index 92%
rename from chrome/noscript.jar!/content/noscript/noscript.js
rename to chrome/content/noscript/noscript.js
index a9f541f..7c30dec 100644
--- a/chrome/noscript.jar!/content/noscript/noscript.js
+++ b/chrome/content/noscript/noscript.js
@@ -1,22 +1,24 @@
-var noscriptUtil = {
+window.noscriptUtil = {
   chromeBase: "chrome://noscript/content/",
   chromeName: "noscript",
-  get service() {
-    var ns = null;
-    for(var attempt=1; attempt <= 2 ;attempt++) {
-      try {
-        ns = Components.classes["@maone.net/noscript-service;1"].getService().wrappedJSObject;
-        break;
-      } catch(ex) {
-        dump(ex.message);
-        window.navigator.plugins.refresh();
+  getService(callback) {
+    let service;
+    try {
+        service = Components.classes["@maone.net/noscript-service;1"].getService().wrappedJSObject;
+        if (callback) callback(service);
+    } catch(ex) {
+      Cu.reportError(ex);
+      if (callback) {
+        window.setTimeout(() => callback(this.getService()), 100);
+      } else {
+        throw ex;
       }
     }
-    if(ns != null) {
-      ns.init();
-    }
+    return service;
+  },
+  get service() {
     delete this.service;
-    return this.service = ns;
+    return (this.service = this.getService());
   },
 
   confirm: function(msg, persistPref, title = "NoScript") {
diff --git a/chrome/noscript.jar!/content/noscript/noscript.xbl b/chrome/content/noscript/noscript.xbl
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscript.xbl
rename to chrome/content/noscript/noscript.xbl
diff --git a/chrome/noscript.jar!/content/noscript/noscriptBM.js b/chrome/content/noscript/noscriptBM.js
similarity index 85%
rename from chrome/noscript.jar!/content/noscript/noscriptBM.js
rename to chrome/content/noscript/noscriptBM.js
index e71d101..9d0995b 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptBM.js
+++ b/chrome/content/noscript/noscriptBM.js
@@ -1,4 +1,4 @@
-var noscriptBM = {
+window.noscriptBM = {
   openOneBookmarkOriginal: null,
   openOneBookmark: function (aURI, aTargetBrowser, aDS) {
     var ncNS = typeof(gNC_NS) == "undefined" ? ( typeof(NC_NS) == "undefined" ?
@@ -69,14 +69,20 @@ var noscriptBM = {
     pu.__ns = noscriptUtil.service;
     pu.checkURLSecurity = pu.__ns.placesCheckURLSecurity;
     
-    for (var method  of ["openNodeIn", "openSelectedNodeWithEvent"]) 
-      if (method in pu) pu[method].__noscriptPatched = true;
+    noscriptBM.onDisposal(() => {
+      if ("__originalCheckURLSecurity" in pu) {
+        pu.checkURLSecurity = pu.__originalCheckURLSecurity;
+        delete pu.__originalCheckURLSecurity;
+      }
+      delete pu.__ns;
+    });
+
   },
-  
+
   onLoad: function(ev) {
     ev.currentTarget.removeEventListener("load", arguments.callee, false);
     if(!noscriptUtil.service) return;
-    
+    window.addEventListener("unload", noscriptBM.dispose, false);
     noscriptBM.init();
   },
   init: function() {
@@ -90,9 +96,13 @@ var noscriptBM = {
       } else if ("gBrowser" in window) { // Fx >= 3.5
         patch = { obj: gBrowser, func: gBrowser.loadURIWithFlags };
         gBrowser.loadURIWithFlags = noscriptBM.loadURIWithFlags;
+        noscriptBM.onDisposal(() => {
+          gBrowser.loadURIWithFlags = patch.func;
+        });
       }
-      if (patch)
+      if (patch) {
         noscriptBM.handleURLBarCommandOriginal = (args) => patch.func.apply(patch.obj, args);
+      }
     }
     
     // delay bookmark stuff
@@ -112,6 +122,9 @@ var noscriptBM = {
           ? function(aURL, callback) { return replacement.apply(window, arguments); }
           : function(aURL) { return replacement.apply(window, arguments); }
           ;
+        noscriptBM.onDisposal(() => {
+          window[f] = getShortcut;
+        });
         break;
       }
     }
@@ -128,6 +141,22 @@ var noscriptBM = {
       noscriptBM.placesUtils = pu; // hold a reference even if in Fx 4 it's a module
       noscriptBM.patchPlacesMethods(pu);
     }
+  },
+
+  _disposalTasks: [],
+  onDisposal(t) {
+    this._disposalTasks.push(t);
+  },
+  dispose() {
+    window.removeEventListener("unload", noscriptBM.dispose, false);
+    for (let t of noscriptBM._disposalTasks) {
+      try {
+        t();
+      } catch (e) {
+        Components.utils.reportError(e);
+      }
+    }
+    delete window.noscriptBM;
   }
 };
 
diff --git a/chrome/noscript.jar!/content/noscript/noscriptBMOverlay.xul b/chrome/content/noscript/noscriptBMOverlay.xul
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscriptBMOverlay.xul
rename to chrome/content/noscript/noscriptBMOverlay.xul
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.js b/chrome/content/noscript/noscriptOptions.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscriptOptions.js
rename to chrome/content/noscript/noscriptOptions.js
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/content/noscript/noscriptOptions.xul
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscriptOptions.xul
rename to chrome/content/noscript/noscriptOptions.xul
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js b/chrome/content/noscript/noscriptOverlay.js
similarity index 95%
rename from chrome/noscript.jar!/content/noscript/noscriptOverlay.js
rename to chrome/content/noscript/noscriptOverlay.js
index 851f10b..2c88cad 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
+++ b/chrome/content/noscript/noscriptOverlay.js
@@ -1,10 +1,20 @@
-var noscriptOverlay = (function() {
+window.noscriptOverlay = (function() {
 
 var $ = (id) => document.getElementById(id);
 const Cc = Components.classes;
 const Ci = Components.interfaces;
-
-return noscriptUtil.service ? {
+function domCleanup() {
+  for (let node of document.querySelectorAll(
+    `toolbarbutton[id^="noscript-tbb"],
+     #mainPopupSet>menupopup[id^="noscript-"],
+     #noscript-context-menu,
+     #status-bar>[id^="noscript-"]`
+  )) {
+    node.hidden = true;
+    if (node.parentNode) node.parentNode.removeChild(node);
+  }
+}
+return {
 
   ns: noscriptUtil.service,
 
@@ -283,7 +293,6 @@ return noscriptUtil.service ? {
   prepareOptItems: function(popup) {
     const notifications = this.getNotificationBox();
     const opts = popup.getElementsByAttribute("type", "checkbox");
-    var k, j, node, id;
     for (let j = opts.length; j-- > 0;) {
       let node = opts[j];
       let opt = this.parseMenuOpt(node);
@@ -330,9 +339,9 @@ return noscriptUtil.service ? {
     const noFull = no + sep + info;
     const yes = this.getString("allowed.yes");
     const yesFull = yes + sep + info;
-    return (this.getSiteTooltip = function(enabled, full) {
+    return (this.getSiteTooltip = (function(enabled, full) {
       return enabled ? full && yesFull || yes : full && noFull || no;
-    })(enabled, full);
+    }))(enabled, full);
   },
 
   getRevokeTooltip: function(tempSites) {
@@ -417,7 +426,7 @@ return noscriptUtil.service ? {
           if (btcd) window.BrowserToolboxCustomizeDone = function(done) {
             btcd(done);
             if (done) noscriptOverlay.initPopups();
-          }
+          };
         }
 
         buttons.push(statusIcon);
@@ -434,8 +443,7 @@ return noscriptUtil.service ? {
         }
         if (!this._mustReverse(localPopup)) {
           localPopup.position = /(?:addon|status)/.test(button.parentNode.id)
-          ? "before_start"
-          : "after_start";
+          ? "before_start" : "after_start";
         }
       }
     } finally {
@@ -2117,6 +2125,18 @@ return noscriptUtil.service ? {
     this.ns.applyPreset(menulist.selectedItem.value);
   },
 
+   install: function() {
+    // this.ns.dump("*** OVERLAY INSTALL ***\n");
+    this.ns.setPref("badInstall", false);
+    window.addEventListener("load", this.listeners.onLoad, false);
+  },
+
+  dispose: function() {
+    for (var bb = this.browsers, j = bb.length; j-- > 0;) if (bb[j]) {
+      this.ns.cleanupBrowser(bb[j]);
+    }
+  },
+
   observer: {
     ns: noscriptUtil.service,
     QueryInterface: XPCOMUtils.generateQI([
@@ -2214,10 +2234,16 @@ return noscriptUtil.service ? {
       const ns = this.ns;
       const os = ns.os;
       for (let t  of this._topics){
-        os.removeObserver(this, t);
+        try {
+          os.removeObserver(this, t);
+        } catch (e) {}
       }
-      ns.prefs.removeObserver("", this);
-      ns.caps.removeObserver("", this);
+      try {
+        ns.prefs.removeObserver("", this);
+      } catch (e) {}
+      try {
+        ns.caps.removeObserver("", this);
+      } catch (e) {}
     }
   },
 
@@ -2351,12 +2377,14 @@ return noscriptUtil.service ? {
 
     onMainContextMenu:  function(ev) { noscriptOverlay.prepareContextMenu(ev) },
 
+    _loaded: false,
     onLoad: function(ev) {
-
+      if (this._loaded) return;
+      this._loaded = true;
       let winType = document.documentElement.getAttribute("windowtype");
       if (winType !== "navigator:browser") noscriptOverlay.ns.dom.browserWinType = winType;
 
-      window.removeEventListener("load", arguments.callee, false);
+      window.removeEventListener("load", noscriptOverlay.listeners.onLoad, false);
       window.addEventListener("unload", noscriptOverlay.listeners.onUnload, false);
 
       try {
@@ -2377,17 +2405,24 @@ return noscriptUtil.service ? {
         noscriptOverlay.ns.clearClickHandler.chromeInstall(window);
       } catch(e) {
         let msg = "[NoScript] Error initializing new window " + e + "\n" + e.stack;
-        noscriptOverlay.ns.log(msg);
         noscriptOverlay.ns.dump(msg);
       }
 
     },
     onUnload: function(ev) {
-      window.removeEventListener("unload", arguments.callee, false);
-
+      noscriptOverlay.ns.dump(`Unloading from ${window.location}`);
+      window.removeEventListener("unload", noscriptOverlay.listeners.onUnload, false);
+      noscriptOverlay.ns.clearClickHandler.chromeUninstall(window);
       noscriptOverlay.listeners.teardown();
-      window.browserDOMWindow = null;
+      let openURI = noscriptOverlay.browserAccess._originalOpenURI;
+      if (openURI && window.browserDOMWindow) {
+        browserDOMWindow.wrappedJSObject.openURI = openURI;
+      }
       noscriptOverlay.dispose();
+      if (window.noscriptBM) window.noscriptBM.dispose();
+      domCleanup();
+      delete window.noscriptOverlay;
+      delete window.noscriptUtil;
     },
 
     onAddonOptionsLoad: function(ev) {
@@ -2454,7 +2489,7 @@ return noscriptUtil.service ? {
 
     teardown: function() {
 
-      if ("CustomizableUI" in window) {
+      if (window.CustomizableUI) {
         CustomizableUI.removeListener(this.customizableUIListener);
       }
 
@@ -2551,7 +2586,7 @@ return noscriptUtil.service ? {
       window.setTimeout(noscriptOverlay.wrapBrowserAccess, 0, ++retryCount);
       return;
     }
-
+    noscriptOverlay.browserAccess._originalOpenURI = browserDOMWindow.wrappedJSObject.openURI;
     browserDOMWindow.wrappedJSObject.openURI = noscriptOverlay.browserAccess.openURI;
 
     if(noscriptOverlay.ns.consoleDump)
@@ -2642,45 +2677,8 @@ return noscriptUtil.service ? {
       }
     }
   },
-
-  install: function() {
-    // this.ns.dump("*** OVERLAY INSTALL ***\n");
-    this.ns.setPref("badInstall", false);
-    window.addEventListener("load", this.listeners.onLoad, false);
-  },
-
-  dispose: function() {
-    for (var bb = this.browsers, j = bb.length; j-- > 0;) if (bb[j]) {
-      this.ns.cleanupBrowser(bb[j]);
-    }
-  }
 }
-: {
-    install: function() {
-      window.addEventListener("load", function(ev) {
-        ev.currentTarget.removeEventListener("load", arguments.callee, false);
-        var node = null;
-        for (var id  of ["noscript-context-menu", "noscript-tbb", "noscript-statusIcon"]) {
-          node = $(id);
-          if (node) node.hidden = true;
-        }
-        node = null;
-        var prefs = this.prefService = Cc["@mozilla.org/preferences-service;1"]
-          .getService(Ci.nsIPrefService).getBranch("noscript.");
-        try {
-          if (prefs.getBoolPref("badInstall")) return;
-        } catch(e) {}
-        prefs.setBoolPref("badInstall", true);
-        prefs = null;
-        window.setTimeout(function() {
-          alert("NoScript is not properly installed and cannot operate correctly.\n" +
-                "Please install it again and check the Install FAQ section on http://noscript.net/faq if this problem persists.");
-          noscriptUtil.browse("https://noscript.net/faq#faqsec2", null);
-
-        },10);
-      }, false);
-  }
-}})()
+})()
 
 noscriptOverlay.install();
 
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul b/chrome/content/noscript/noscriptOverlay.xul
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
rename to chrome/content/noscript/noscriptOverlay.xul
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlayFx57.xul b/chrome/content/noscript/noscriptOverlayFx57.xul
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/noscriptOverlayFx57.xul
rename to chrome/content/noscript/noscriptOverlayFx57.xul
diff --git a/chrome/noscript.jar!/content/noscript/tree-copy.js b/chrome/content/noscript/tree-copy.js
similarity index 100%
rename from chrome/noscript.jar!/content/noscript/tree-copy.js
rename to chrome/content/noscript/tree-copy.js
diff --git a/chrome/noscript.jar!/locale/ar/noscript/about.properties b/chrome/locale/ar/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ar/noscript/about.properties
rename to chrome/locale/ar/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ar/noscript/noscript.dtd b/chrome/locale/ar/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/ar/noscript/noscript.dtd
rename to chrome/locale/ar/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/ar/noscript/noscript.properties b/chrome/locale/ar/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ar/noscript/noscript.properties
rename to chrome/locale/ar/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/be-BY/noscript/about.properties b/chrome/locale/be-BY/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/be-BY/noscript/about.properties
rename to chrome/locale/be-BY/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd b/chrome/locale/be-BY/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd
rename to chrome/locale/be-BY/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/be-BY/noscript/noscript.properties b/chrome/locale/be-BY/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/be-BY/noscript/noscript.properties
rename to chrome/locale/be-BY/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/about.properties b/chrome/locale/bg-BG/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/bg-BG/noscript/about.properties
rename to chrome/locale/bg-BG/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/locale/bg-BG/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
rename to chrome/locale/bg-BG/noscript/noscript.dtd
index 1c0a9e0..137fa06 100644
--- a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
+++ b/chrome/locale/bg-BG/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Настройки…">
 <!ENTITY noscriptOptions.accesskey "Н">
 <!ENTITY noscriptOptionsLong "Настройки на NoScript">
-<!ENTITY noscriptAbout "За NoScript 5.0.10">
+<!ENTITY noscriptAbout "За NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
 <!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
 <!ENTITY noscriptAllow "Разреши">
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.properties b/chrome/locale/bg-BG/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/bg-BG/noscript/noscript.properties
rename to chrome/locale/bg-BG/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/bn-IN/noscript/about.properties b/chrome/locale/bn-IN/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/bn-IN/noscript/about.properties
rename to chrome/locale/bn-IN/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd b/chrome/locale/bn-IN/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd
rename to chrome/locale/bn-IN/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.properties b/chrome/locale/bn-IN/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/bn-IN/noscript/noscript.properties
rename to chrome/locale/bn-IN/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/about.properties b/chrome/locale/ca-AD/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ca-AD/noscript/about.properties
rename to chrome/locale/ca-AD/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/locale/ca-AD/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
rename to chrome/locale/ca-AD/noscript/noscript.dtd
index 51b18bd..25bc49b 100644
--- a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
+++ b/chrome/locale/ca-AD/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcions...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcions de NoScript">
-<!ENTITY noscriptAbout "Quant a NoScript 5.0.10">
+<!ENTITY noscriptAbout "Quant a NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Podeu especificar quins llocs web poden executar seqüències. El tipus d'adreça o el domini (p.ex. "http://www.site.com" o "site.com") del lloc al qual voleu donar permissos i feu clic a Permet.">
 <!ENTITY noscriptWebAddress "Adreça del lloc web:">
 <!ENTITY noscriptAllow "Permet">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.properties b/chrome/locale/ca-AD/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ca-AD/noscript/noscript.properties
rename to chrome/locale/ca-AD/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/about.properties b/chrome/locale/cs-CZ/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/cs-CZ/noscript/about.properties
rename to chrome/locale/cs-CZ/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/locale/cs-CZ/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
rename to chrome/locale/cs-CZ/noscript/noscript.dtd
index 5531bbf..3be15a8 100644
--- a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
+++ b/chrome/locale/cs-CZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nastavení...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "Nastavení NoScript">
-<!ENTITY noscriptAbout "O rozšíření NoScript 5.0.10">
+<!ENTITY noscriptAbout "O rozšíření NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Můžete si zvolit, které webové stránky mají povoleno spouštět skripty. Zadejte adresu (např. http://www.site.com nebo site.com) na které se nachází stránka, pro kterou chcete skripty povolit a klepněte na Povolit.">
 <!ENTITY noscriptWebAddress "Adresa webové stránky:">
 <!ENTITY noscriptAllow "Povolit">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.properties b/chrome/locale/cs-CZ/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.properties
rename to chrome/locale/cs-CZ/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/about.properties b/chrome/locale/cy-GB/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/cy-GB/noscript/about.properties
rename to chrome/locale/cy-GB/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/locale/cy-GB/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
rename to chrome/locale/cy-GB/noscript/noscript.dtd
index 84898bd..79c95d1 100644
--- a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
+++ b/chrome/locale/cy-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opsiynau">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opsiynau NoScript">
-<!ENTITY noscriptAbout "Yngylch NoScript 5.0.10">
+<!ENTITY noscriptAbout "Yngylch NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Cewch enwi pa wefannau sy'n cael rhedeg sgriptiau. Teipiwch gyfeiriad neu barth (e.e. "http://www.site.com" neu "site.com") y safle rydych eisiau ei ganiatau ac wedyn cliciwch Caniatau.">
 <!ENTITY noscriptWebAddress "Cyfeiriad wefan">
 <!ENTITY noscriptAllow "Caniatau">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.properties b/chrome/locale/cy-GB/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/cy-GB/noscript/noscript.properties
rename to chrome/locale/cy-GB/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/da/noscript/about.properties b/chrome/locale/da/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/da/noscript/about.properties
rename to chrome/locale/da/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/locale/da/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/da/noscript/noscript.dtd
rename to chrome/locale/da/noscript/noscript.dtd
index 3f24686..588c439 100644
--- a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
+++ b/chrome/locale/da/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Indstillinger…">
 <!ENTITY noscriptOptions.accesskey "I">
 <!ENTITY noscriptOptionsLong "NoScript Indstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.10">
+<!ENTITY noscriptAbout "Om NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Du kan angive hvilke websteder der må udføre scripts. Indtast adresse eller domæne (f.eks. "http://www.site.com" eller "site.com") på det websted du ønsker at tillade og klik på Tillad.">
 <!ENTITY noscriptWebAddress "Webstedets adresse:">
 <!ENTITY noscriptAllow "Tillad">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.properties b/chrome/locale/da/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/da/noscript/noscript.properties
rename to chrome/locale/da/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/de/noscript/about.properties b/chrome/locale/de/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/de/noscript/about.properties
rename to chrome/locale/de/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/locale/de/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/de/noscript/noscript.dtd
rename to chrome/locale/de/noscript/noscript.dtd
index 140c3b8..895da2f 100644
--- a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
+++ b/chrome/locale/de/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Einstellungen…">
 <!ENTITY noscriptOptions.accesskey "E">
 <!ENTITY noscriptOptionsLong "NoScript - Einstellungen">
-<!ENTITY noscriptAbout "Über NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Über NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Sie können festlegen, welchen Websites Sie das Ausführen von Skripten erlauben möchten. Geben Sie bitte die exakte Adresse oder die Domain der Website ein (z.B. "http://www.site.com" oder "site.com"), für die Sie dies zulassen möchten, und klicken Sie dann auf "Erlauben".">
 <!ENTITY noscriptWebAddress "Adresse der Website:">
 <!ENTITY noscriptAllow "Erlauben">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.properties b/chrome/locale/de/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/de/noscript/noscript.properties
rename to chrome/locale/de/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/el/noscript/about.properties b/chrome/locale/el/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/el/noscript/about.properties
rename to chrome/locale/el/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/locale/el/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/el/noscript/noscript.dtd
rename to chrome/locale/el/noscript/noscript.dtd
index 8842f3e..da6e4ac 100644
--- a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
+++ b/chrome/locale/el/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Επιλογές">
 <!ENTITY noscriptOptions.accesskey "Ε">
 <!ENTITY noscriptOptionsLong "Επιλογές NoScript">
-<!ENTITY noscriptAbout "Περί NoScript 5.0.10">
+<!ENTITY noscriptAbout "Περί NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
 <!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
 <!ENTITY noscriptAllow "Να επιτρέπεται">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.properties b/chrome/locale/el/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/el/noscript/noscript.properties
rename to chrome/locale/el/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/about.properties b/chrome/locale/en-GB/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/en-GB/noscript/about.properties
rename to chrome/locale/en-GB/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/locale/en-GB/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
rename to chrome/locale/en-GB/noscript/noscript.dtd
index 09813d4..8d229c4 100644
--- a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
+++ b/chrome/locale/en-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.10…">
+<!ENTITY noscriptAbout "About NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.properties b/chrome/locale/en-GB/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/en-GB/noscript/noscript.properties
rename to chrome/locale/en-GB/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/about.properties b/chrome/locale/en-US/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/en-US/noscript/about.properties
rename to chrome/locale/en-US/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/locale/en-US/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
rename to chrome/locale/en-US/noscript/noscript.dtd
index a3535ff..3bc5cdf 100644
--- a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
+++ b/chrome/locale/en-US/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.10…">
+<!ENTITY noscriptAbout "About NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.properties b/chrome/locale/en-US/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/en-US/noscript/noscript.properties
rename to chrome/locale/en-US/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/eo/noscript/about.properties b/chrome/locale/eo/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/eo/noscript/about.properties
rename to chrome/locale/eo/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/locale/eo/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
rename to chrome/locale/eo/noscript/noscript.dtd
index 48ee920..8c23384 100644
--- a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
+++ b/chrome/locale/eo/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcioj…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcioj de NoScript">
-<!ENTITY noscriptAbout "Pri NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Pri NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Vi povas specifi, kiuj ttt-ejoj rajtu plenumigi skriptojn. Entajpu la adreson aŭ la domajnonomon (ekz. “http://www.retejo.org” aŭ “retejo.org”) de la ttt-ejo, kiun vi volas rajtigi, kaj poste alklaku “Rajtigi”.">
 <!ENTITY noscriptWebAddress "Adreso de retpaĝaro:">
 <!ENTITY noscriptAllow "Rajtigi">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.properties b/chrome/locale/eo/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/eo/noscript/noscript.properties
rename to chrome/locale/eo/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/about.properties b/chrome/locale/es-AR/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-AR/noscript/about.properties
rename to chrome/locale/es-AR/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/locale/es-AR/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
rename to chrome/locale/es-AR/noscript/noscript.dtd
index 94506fc..9687c16 100644
--- a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
+++ b/chrome/locale/es-AR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.10">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Puede especificar a cuáles sitios web le permitirá ejecutar scripts. Escriba la dirección o el dominio (por ejemplo, "http://www.sitio.com" o "sitio.com") del sitio y luego haga clic en Permitir.">
 <!ENTITY noscriptWebAddress "Dirección del sitio web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.properties b/chrome/locale/es-AR/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-AR/noscript/noscript.properties
rename to chrome/locale/es-AR/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/about.properties b/chrome/locale/es-CL/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-CL/noscript/about.properties
rename to chrome/locale/es-CL/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/locale/es-CL/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
rename to chrome/locale/es-CL/noscript/noscript.dtd
index 356a01f..e52b315 100644
--- a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
+++ b/chrome/locale/es-CL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "About NoScript 5.0.10…">
+<!ENTITY noscriptAbout "About NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.properties b/chrome/locale/es-CL/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-CL/noscript/noscript.properties
rename to chrome/locale/es-CL/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/about.properties b/chrome/locale/es-ES/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-ES/noscript/about.properties
rename to chrome/locale/es-ES/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/locale/es-ES/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
rename to chrome/locale/es-ES/noscript/noscript.dtd
index 0604663..5bffaad 100644
--- a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
+++ b/chrome/locale/es-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Configuración de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.10">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Aquí puede especificar las páginas web a las que va a permitir ejecutar código JavaScript. Escriba la dirección de la web que quiera incluir (ej. "http://www.paginaweb.com" o "paginaweb.com") y después pulse "Permitir".">
 <!ENTITY noscriptWebAddress "Dirección de la página web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.properties b/chrome/locale/es-ES/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/es-ES/noscript/noscript.properties
rename to chrome/locale/es-ES/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/about.properties b/chrome/locale/et-EE/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/et-EE/noscript/about.properties
rename to chrome/locale/et-EE/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/locale/et-EE/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
rename to chrome/locale/et-EE/noscript/noscript.dtd
index 970465f..3a28f8d 100644
--- a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
+++ b/chrome/locale/et-EE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Sätted…">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScripti sätted">
-<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Sa saad määrata, millistel veebilehtedel lubatakse skripte käivitada. Kirjuta veebilehe aadress või domeeni, mida soovid lubada (nt "http://www.site.com" või "site.com") ja klõpsa Luba nuppu">
 <!ENTITY noscriptWebAddress "Veebilehe aadress:">
 <!ENTITY noscriptAllow "Luba">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.properties b/chrome/locale/et-EE/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/et-EE/noscript/noscript.properties
rename to chrome/locale/et-EE/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/eu/noscript/about.properties b/chrome/locale/eu/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/eu/noscript/about.properties
rename to chrome/locale/eu/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/locale/eu/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
rename to chrome/locale/eu/noscript/noscript.dtd
index 97f20ca..71dea5b 100644
--- a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
+++ b/chrome/locale/eu/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Aukerak:">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript aukerak">
-<!ENTITY noscriptAbout "NoScript 5.0.10-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 5.1.1-eri buruz:">
 <!ENTITY noscriptPermissionsText "Zein webgunek script-ak exekuta ditzakeen zehaztu dezakezu. Idatzi script-ak erabiltzea onartzea nahi duzun domeinuaren izena (adib. "http://www.gunea.org" or "gunea.org") eta Onartu sakatu.">
 <!ENTITY noscriptWebAddress "Webgunearen helbidea:">
 <!ENTITY noscriptAllow "Onartu">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.properties b/chrome/locale/eu/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/eu/noscript/noscript.properties
rename to chrome/locale/eu/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/about.properties b/chrome/locale/fa-IR/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fa-IR/noscript/about.properties
rename to chrome/locale/fa-IR/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/locale/fa-IR/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
rename to chrome/locale/fa-IR/noscript/noscript.dtd
index c70de09..c27206d 100644
--- a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
+++ b/chrome/locale/fa-IR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "تنظیمات...">
 <!ENTITY noscriptOptions.accesskey "ت">
 <!ENTITY noscriptOptionsLong "تنظیمات NoScript">
-<!ENTITY noscriptAbout "درباره NoScript 5.0.10">
+<!ENTITY noscriptAbout "درباره NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
 <!ENTITY noscriptWebAddress "آدرس وب سایت :">
 <!ENTITY noscriptAllow "اجازه دادن">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.properties b/chrome/locale/fa-IR/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fa-IR/noscript/noscript.properties
rename to chrome/locale/fa-IR/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/fi/noscript/about.properties b/chrome/locale/fi/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fi/noscript/about.properties
rename to chrome/locale/fi/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/locale/fi/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
rename to chrome/locale/fi/noscript/noscript.dtd
index 7ecdc90..64c0bf4 100644
--- a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
+++ b/chrome/locale/fi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Asetukset…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript asetukset">
-<!ENTITY noscriptAbout "Tietoja NoScript 5.0.10istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 5.1.1istä…">
 <!ENTITY noscriptPermissionsText "Voit määrittää verkkosivut joiden sallitaan suorittaa scriptejä. Kirjoita verkko-osoite tai verkkonimi (esim. "http://www.site.com" tai "site.com") jonka haluat sallia ja paina Salli.">
 <!ENTITY noscriptWebAddress "Verkkosivun osoite:">
 <!ENTITY noscriptAllow "Salli">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.properties b/chrome/locale/fi/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fi/noscript/noscript.properties
rename to chrome/locale/fi/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/fr/noscript/about.properties b/chrome/locale/fr/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fr/noscript/about.properties
rename to chrome/locale/fr/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/locale/fr/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
rename to chrome/locale/fr/noscript/noscript.dtd
index 17265b5..530734a 100644
--- a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
+++ b/chrome/locale/fr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Options de NoScript">
-<!ENTITY noscriptAbout "À propos de NoScript 5.0.10…">
+<!ENTITY noscriptAbout "À propos de NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Il est possible de spécifier quels sites Web sont autorisés à exécuter des scripts. Saisissez l'adresse exacte du site que vous désirez autoriser puis cliquez sur Autoriser.">
 <!ENTITY noscriptWebAddress "Adresse du site Web :">
 <!ENTITY noscriptAllow "Autoriser">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.properties b/chrome/locale/fr/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/fr/noscript/noscript.properties
rename to chrome/locale/fr/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/about.properties b/chrome/locale/gl-ES/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/gl-ES/noscript/about.properties
rename to chrome/locale/gl-ES/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/locale/gl-ES/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
rename to chrome/locale/gl-ES/noscript/noscript.dtd
index d434673..25ee65d 100644
--- a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
+++ b/chrome/locale/gl-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcións...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcións de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.10">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Podes especificar que páxinas web poden executar scripts. Teclea o enderezo ou o dominio (por exemplo "http://www.paxina.com" ou "paxina.com") do sitio que queres autorizar e despois preme en "Permitir".">
 <!ENTITY noscriptWebAddress "Enderezo web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.properties b/chrome/locale/gl-ES/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/gl-ES/noscript/noscript.properties
rename to chrome/locale/gl-ES/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/about.properties b/chrome/locale/he-IL/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/he-IL/noscript/about.properties
rename to chrome/locale/he-IL/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/locale/he-IL/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
rename to chrome/locale/he-IL/noscript/noscript.dtd
index 24a5240..b42246b 100644
--- a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
+++ b/chrome/locale/he-IL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "הגדרות...">
 <!ENTITY noscriptOptions.accesskey "">
 <!ENTITY noscriptOptionsLong "NoScript הגדרות של">
-<!ENTITY noscriptAbout "אודות NoScript 5.0.10">
+<!ENTITY noscriptAbout "אודות NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
 <!ENTITY noscriptWebAddress "כתובת/תחום:">
 <!ENTITY noscriptAllow "התר">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.properties b/chrome/locale/he-IL/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/he-IL/noscript/noscript.properties
rename to chrome/locale/he-IL/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/about.properties b/chrome/locale/hr-HR/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hr-HR/noscript/about.properties
rename to chrome/locale/hr-HR/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/locale/hr-HR/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
rename to chrome/locale/hr-HR/noscript/noscript.dtd
index 5534ce6..bb41ec0 100644
--- a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
+++ b/chrome/locale/hr-HR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Opcije">
-<!ENTITY noscriptAbout "O NoScript 5.0.10">
+<!ENTITY noscriptAbout "O NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Možete odrediti koje web stranice imaju dopuštenje za izvođenje skripti. Upišite adresu ili domenu (npr. "http://www.stranica.hr" ili "stranica.hr") stranice kojoj želite dopustiti i kliknite na Dopusti.">
 <!ENTITY noscriptWebAddress "Adresa web stranice:">
 <!ENTITY noscriptAllow "Dopusti">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.properties b/chrome/locale/hr-HR/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hr-HR/noscript/noscript.properties
rename to chrome/locale/hr-HR/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/about.properties b/chrome/locale/hsb/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hsb/noscript/about.properties
rename to chrome/locale/hsb/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/locale/hsb/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
rename to chrome/locale/hsb/noscript/noscript.dtd
index a66c155..71ee45d 100644
--- a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
+++ b/chrome/locale/hsb/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcije NoScript">
-<!ENTITY noscriptAbout "Wo NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Wo NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Móžeće podać, kotre websydła smědźa skripty wuwjesć. Zapisajće adresu abo domenu  (na př. "http://www.site.com" abo "site.com") websydła, kotremuž chceće to dowolić a klikńće potom na "Dowolić".">
 <!ENTITY noscriptWebAddress "Adresa websydła:">
 <!ENTITY noscriptAllow "Dowolić">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.properties b/chrome/locale/hsb/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hsb/noscript/noscript.properties
rename to chrome/locale/hsb/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/about.properties b/chrome/locale/hu-HU/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hu-HU/noscript/about.properties
rename to chrome/locale/hu-HU/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/locale/hu-HU/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
rename to chrome/locale/hu-HU/noscript/noscript.dtd
index 24d00ab..56f237a 100644
--- a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
+++ b/chrome/locale/hu-HU/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Beállítások…">
 <!ENTITY noscriptOptions.accesskey "B">
 <!ENTITY noscriptOptionsLong "A NoScript beállításai">
-<!ENTITY noscriptAbout "A NoScript 5.0.10 névjegye">
+<!ENTITY noscriptAbout "A NoScript 5.1.1 névjegye">
 <!ENTITY noscriptPermissionsText "Megadhatja, hogy mely webhelyek számára engedélyezi a parancsfájlok futtatását. Írja be az engedélyezni kívánt webhely címét vagy tartomány nevét (pl. "http://www.webhely.hu" vagy "webhely.hu"), majd kattintson az Engedélyezés gombra.">
 <!ENTITY noscriptWebAddress "A webhely címe:">
 <!ENTITY noscriptAllow "Engedélyezés">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.properties b/chrome/locale/hu-HU/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/hu-HU/noscript/noscript.properties
rename to chrome/locale/hu-HU/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/about.properties b/chrome/locale/id-ID/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/id-ID/noscript/about.properties
rename to chrome/locale/id-ID/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/locale/id-ID/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
rename to chrome/locale/id-ID/noscript/noscript.dtd
index ee5d7f4..5f26ded 100644
--- a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
+++ b/chrome/locale/id-ID/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Pilihan...">
 <!ENTITY noscriptOptions.accesskey "P">
 <!ENTITY noscriptOptionsLong "Pilihan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.10">
+<!ENTITY noscriptAbout "Tentang NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Anda dapat menentukan situs web mana yang diijinkan menjalankan naskah. Masukkan alamat atau domain (contoh: "http://www.site.com" atau "site.com") yang akan diberi ijin kemudian klik Ijinkan.">
 <!ENTITY noscriptWebAddress "Alamat situs web:">
 <!ENTITY noscriptAllow "Ijinkan">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.properties b/chrome/locale/id-ID/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/id-ID/noscript/noscript.properties
rename to chrome/locale/id-ID/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/it/noscript/about.properties b/chrome/locale/it/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/it/noscript/about.properties
rename to chrome/locale/it/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/locale/it/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/it/noscript/noscript.dtd
rename to chrome/locale/it/noscript/noscript.dtd
index 76a6f14..bb09c68 100644
--- a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
+++ b/chrome/locale/it/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opzioni…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opzioni NoScript">
-<!ENTITY noscriptAbout "Informazioni su NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Qui si possono indicare i siti per i quali l'esecuzione degli script è consentita. Digitare l'indirizzo o il dominio (es. "http://www.sito.com" oppure "sito.com")  e fare clic su Permetti.">
 <!ENTITY noscriptWebAddress "Indirizzo del sito:">
 <!ENTITY noscriptAllow "Permetti">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.properties b/chrome/locale/it/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/it/noscript/noscript.properties
rename to chrome/locale/it/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/about.properties b/chrome/locale/ja-JP/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ja-JP/noscript/about.properties
rename to chrome/locale/ja-JP/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/locale/ja-JP/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
rename to chrome/locale/ja-JP/noscript/noscript.dtd
index cf62ed3..1628eca 100644
--- a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
+++ b/chrome/locale/ja-JP/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "オプション...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript オプション">
-<!ENTITY noscriptAbout "NoScript 5.0.10について...">
+<!ENTITY noscriptAbout "NoScript 5.1.1について...">
 <!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
 <!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
 <!ENTITY noscriptAllow "許可する">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.properties b/chrome/locale/ja-JP/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ja-JP/noscript/noscript.properties
rename to chrome/locale/ja-JP/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/about.properties b/chrome/locale/kk-KZ/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/kk-KZ/noscript/about.properties
rename to chrome/locale/kk-KZ/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/locale/kk-KZ/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
rename to chrome/locale/kk-KZ/noscript/noscript.dtd
index e3285d2..82a5396 100644
--- a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
+++ b/chrome/locale/kk-KZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Баптаулары">
 <!ENTITY noscriptOptions.accesskey "Б">
 <!ENTITY noscriptOptionsLong "NoScript баптаулары">
-<!ENTITY noscriptAbout "NoScript 5.0.10 туралы...">
+<!ENTITY noscriptAbout "NoScript 5.1.1 туралы...">
 <!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
 <!ENTITY noscriptWebAddress "Веб-сайт адресі:">
 <!ENTITY noscriptAllow "Рұқсат ету">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.properties b/chrome/locale/kk-KZ/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.properties
rename to chrome/locale/kk-KZ/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/about.properties b/chrome/locale/km-KH/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/km-KH/noscript/about.properties
rename to chrome/locale/km-KH/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/locale/km-KH/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
rename to chrome/locale/km-KH/noscript/noscript.dtd
index 24c625f..1ee716d 100644
--- a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
+++ b/chrome/locale/km-KH/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.10">
+<!ENTITY noscriptAbout "About NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.properties b/chrome/locale/km-KH/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/km-KH/noscript/noscript.properties
rename to chrome/locale/km-KH/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/about.properties b/chrome/locale/ko-KR/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ko-KR/noscript/about.properties
rename to chrome/locale/ko-KR/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/locale/ko-KR/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
rename to chrome/locale/ko-KR/noscript/noscript.dtd
index 3dcb3b9..efc6e13 100644
--- a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
+++ b/chrome/locale/ko-KR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "옵션...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 옵션">
-<!ENTITY noscriptAbout "NoScript 5.0.10 정보...">
+<!ENTITY noscriptAbout "NoScript 5.1.1 정보...">
 <!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
 <!ENTITY noscriptWebAddress "웹 사이트 주소">
 <!ENTITY noscriptAllow "허용">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.properties b/chrome/locale/ko-KR/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ko-KR/noscript/noscript.properties
rename to chrome/locale/ko-KR/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/lt/noscript/about.properties b/chrome/locale/lt/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/lt/noscript/about.properties
rename to chrome/locale/lt/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/locale/lt/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
rename to chrome/locale/lt/noscript/noscript.dtd
index bfffc92..3fa72d2 100644
--- a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
+++ b/chrome/locale/lt/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nuostatos...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "NoScript nuostatos">
-<!ENTITY noscriptAbout "Apie NoScript 5.0.10">
+<!ENTITY noscriptAbout "Apie NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Jūs galite nurodyti, kurioms interneto svetainėms suteikiamas leidimas vykdyti programinius kodus. Įveskite adresą arba domeną (pvz., "http://www.svetaine.lt" arba "svetaine.lt") svetainės, kuriai norite suteikti leidimą ir spauskite Leisti.">
 <!ENTITY noscriptWebAddress "Interneto svetainės adresas:">
 <!ENTITY noscriptAllow "Leisti">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.properties b/chrome/locale/lt/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/lt/noscript/noscript.properties
rename to chrome/locale/lt/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/about.properties b/chrome/locale/mk-MK/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/mk-MK/noscript/about.properties
rename to chrome/locale/mk-MK/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/locale/mk-MK/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
rename to chrome/locale/mk-MK/noscript/noscript.dtd
index 7dac954..87208df 100644
--- a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
+++ b/chrome/locale/mk-MK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Опции...">
 <!ENTITY noscriptOptions.accesskey "О">
 <!ENTITY noscriptOptionsLong "NoScript Опции">
-<!ENTITY noscriptAbout "За NoScript 5.0.10">
+<!ENTITY noscriptAbout "За NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
 <!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.properties b/chrome/locale/mk-MK/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/mk-MK/noscript/noscript.properties
rename to chrome/locale/mk-MK/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/about.properties b/chrome/locale/ms-MY/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ms-MY/noscript/about.properties
rename to chrome/locale/ms-MY/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/locale/ms-MY/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
rename to chrome/locale/ms-MY/noscript/noscript.dtd
index 637b0c8..4aabd86 100644
--- a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
+++ b/chrome/locale/ms-MY/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tetapan...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Tetapan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.10">
+<!ENTITY noscriptAbout "Tentang NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Anda boleh menentukan laman web yang anda benarkan skripnya diproses. Taipkan alamat atau domain(contoh:"http://www.tapak.com" atau "tapak.com") laman web yang diingini dan klik Benarkan">
 <!ENTITY noscriptWebAddress "Alamat laman web:">
 <!ENTITY noscriptAllow "Benarkan">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.properties b/chrome/locale/ms-MY/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ms-MY/noscript/noscript.properties
rename to chrome/locale/ms-MY/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/about.properties b/chrome/locale/nb-NO/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/nb-NO/noscript/about.properties
rename to chrome/locale/nb-NO/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/locale/nb-NO/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
rename to chrome/locale/nb-NO/noscript/noscript.dtd
index fc76134..d684cf6 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
+++ b/chrome/locale/nb-NO/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Innstillinger">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Innstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.10">
+<!ENTITY noscriptAbout "Om NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Du kan spesifisere hvilke websider som har tillatelse til å kjøre scritper. Skriv inn adresse, eller domene (F.eks: "http://www.side.no", eller &quotside.no") du ønsker å gi tillatelse til, og klikk Tillat.">
 <!ENTITY noscriptWebAddress "Webadresse:">
 <!ENTITY noscriptAllow "Tillat">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties b/chrome/locale/nb-NO/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
rename to chrome/locale/nb-NO/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/nl/noscript/about.properties b/chrome/locale/nl/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/nl/noscript/about.properties
rename to chrome/locale/nl/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/locale/nl/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
rename to chrome/locale/nl/noscript/noscript.dtd
index 77e93a4..520a794 100644
--- a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
+++ b/chrome/locale/nl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opties…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript-opties">
-<!ENTITY noscriptAbout "Over NoScript 5.0.10">
+<!ENTITY noscriptAbout "Over NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "U kunt opgeven welke websites scripts mogen gebruiken. Typ het adres of domein (bv. ‘http://www.website.com’ of ‘website.com’) van de website die u wilt toestaan, en klik daarna op Toestaan.">
 <!ENTITY noscriptWebAddress "Adres van website:">
 <!ENTITY noscriptAllow "Toestaan">
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.properties b/chrome/locale/nl/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/nl/noscript/noscript.properties
rename to chrome/locale/nl/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/pl/noscript/about.properties b/chrome/locale/pl/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pl/noscript/about.properties
rename to chrome/locale/pl/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/locale/pl/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
rename to chrome/locale/pl/noscript/noscript.dtd
index b9d0337..a3e3c3d 100644
--- a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
+++ b/chrome/locale/pl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Ustawienia">
 <!ENTITY noscriptOptions.accesskey "U">
 <!ENTITY noscriptOptionsLong "NoScript – ustawienia">
-<!ENTITY noscriptAbout "NoScript 5.0.10 – informacje">
+<!ENTITY noscriptAbout "NoScript 5.1.1 – informacje">
 <!ENTITY noscriptPermissionsText "Tutaj można określić witryny internetowe, które będą mogły uruchamiać skrypty. Proszę wprowadzić adres lub domenę witryny (np: „http://www.witryna.pl” lub „witryna.pl”) i nacisnąć przycisk Pozwól.">
 <!ENTITY noscriptWebAddress "Adres witryny:">
 <!ENTITY noscriptAllow "Pozwól">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.properties b/chrome/locale/pl/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pl/noscript/noscript.properties
rename to chrome/locale/pl/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/about.properties b/chrome/locale/pt-BR/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pt-BR/noscript/about.properties
rename to chrome/locale/pt-BR/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/locale/pt-BR/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
rename to chrome/locale/pt-BR/noscript/noscript.dtd
index a4822f4..e4c3523 100644
--- a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
+++ b/chrome/locale/pt-BR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.10…">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "Você pode especificar os sites que podem executar JavaScripts. Escreva o endereço ou o domínio (ex "http://www.site.com" ou "site.com") do site que deseja permitir e depois clique em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.properties b/chrome/locale/pt-BR/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pt-BR/noscript/noscript.properties
rename to chrome/locale/pt-BR/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/about.properties b/chrome/locale/pt-PT/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pt-PT/noscript/about.properties
rename to chrome/locale/pt-PT/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/locale/pt-PT/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
rename to chrome/locale/pt-PT/noscript/noscript.dtd
index 29984c0..f724a6d 100644
--- a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
+++ b/chrome/locale/pt-PT/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.10">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Pode especificar os sítios que podem executar scripts. Escreva o endereço ou o domínio (ex: "http://www.sitio.com" ou "sitio.com") do sítio que deseja permitir e depois pressione em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.properties b/chrome/locale/pt-PT/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/pt-PT/noscript/noscript.properties
rename to chrome/locale/pt-PT/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ro/noscript/about.properties b/chrome/locale/ro/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ro/noscript/about.properties
rename to chrome/locale/ro/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/locale/ro/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
rename to chrome/locale/ro/noscript/noscript.dtd
index 54187bd..720166c 100644
--- a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
+++ b/chrome/locale/ro/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opțiuni...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opțiuni NoScript">
-<!ENTITY noscriptAbout "Despre NoScript 5.0.10">
+<!ENTITY noscriptAbout "Despre NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Puteți specifica saiturile cărora li se permite să execute scripturi. Scrieți adresa sau domeniul paginii (exemplu: „http://www.sait.ro“ sau „sait.ro“), apoi apăsați pe butonul „Permite“.">
 <!ENTITY noscriptWebAddress "Adresă sait:">
 <!ENTITY noscriptAllow "Permite">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.properties b/chrome/locale/ro/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ro/noscript/noscript.properties
rename to chrome/locale/ro/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/ru-RU/noscript/about.properties b/chrome/locale/ru-RU/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ru-RU/noscript/about.properties
rename to chrome/locale/ru-RU/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd b/chrome/locale/ru-RU/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd
rename to chrome/locale/ru-RU/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.properties b/chrome/locale/ru-RU/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/ru-RU/noscript/noscript.properties
rename to chrome/locale/ru-RU/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/about.properties b/chrome/locale/sk-SK/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sk-SK/noscript/about.properties
rename to chrome/locale/sk-SK/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/locale/sk-SK/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
rename to chrome/locale/sk-SK/noscript/noscript.dtd
index 50daf68..5ffdec1 100644
--- a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
+++ b/chrome/locale/sk-SK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript – Možnosti">
-<!ENTITY noscriptAbout "O rozšírení NoScript 5.0.10">
+<!ENTITY noscriptAbout "O rozšírení NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Môžete určiť, ktoré webové stránky majú povolené spúšťať JavaScript. Zadajte adresu alebo doménu (napríklad "http://www.site.com" alebo "site.com") stránky, ktorú chcete povoliť, a potom kliknite na tlačidlo Povoliť.">
 <!ENTITY noscriptWebAddress "Adresa webovej stránky:">
 <!ENTITY noscriptAllow "Povoliť">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.properties b/chrome/locale/sk-SK/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sk-SK/noscript/noscript.properties
rename to chrome/locale/sk-SK/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/about.properties b/chrome/locale/sl-SI/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sl-SI/noscript/about.properties
rename to chrome/locale/sl-SI/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/locale/sl-SI/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
rename to chrome/locale/sl-SI/noscript/noscript.dtd
index fae80ad..b809994 100644
--- a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
+++ b/chrome/locale/sl-SI/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript Možnosti">
-<!ENTITY noscriptAbout "O NoScript 5.0.10 programu...">
+<!ENTITY noscriptAbout "O NoScript 5.1.1 programu...">
 <!ENTITY noscriptPermissionsText "Določite lahko na katerih straneh bo izvajanje skript dovoljeno. Vnesite naslov ali domeno (pr. "http://www.domena.com" or "domena.com") strani, na kateri želite omogočiti izvajanje skript in kliknite Dovoli.">
 <!ENTITY noscriptWebAddress "Naslov strani:">
 <!ENTITY noscriptAllow "Dovoli">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.properties b/chrome/locale/sl-SI/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sl-SI/noscript/noscript.properties
rename to chrome/locale/sl-SI/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/about.properties b/chrome/locale/sr-RS/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sr-RS/noscript/about.properties
rename to chrome/locale/sr-RS/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/locale/sr-RS/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
rename to chrome/locale/sr-RS/noscript/noscript.dtd
index 16c6518..69c9631 100644
--- a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
+++ b/chrome/locale/sr-RS/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Подешавања...">
 <!ENTITY noscriptOptions.accesskey "П">
 <!ENTITY noscriptOptionsLong "NoScript подешавања">
-<!ENTITY noscriptAbout "О NoScript 5.0.10-у">
+<!ENTITY noscriptAbout "О NoScript 5.1.1-у">
 <!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
 <!ENTITY noscriptWebAddress "Адреса веб стране:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.properties b/chrome/locale/sr-RS/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sr-RS/noscript/noscript.properties
rename to chrome/locale/sr-RS/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/sr/noscript/about.properties b/chrome/locale/sr/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sr/noscript/about.properties
rename to chrome/locale/sr/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/sr/noscript/noscript.dtd b/chrome/locale/sr/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/sr/noscript/noscript.dtd
rename to chrome/locale/sr/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/sr/noscript/noscript.properties b/chrome/locale/sr/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sr/noscript/noscript.properties
rename to chrome/locale/sr/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/about.properties b/chrome/locale/sv-SE/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sv-SE/noscript/about.properties
rename to chrome/locale/sv-SE/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/locale/sv-SE/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
rename to chrome/locale/sv-SE/noscript/noscript.dtd
index 33c688f..09290b0 100644
--- a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
+++ b/chrome/locale/sv-SE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Alternativ...">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript-alternativ">
-<!ENTITY noscriptAbout "Om NoScript 5.0.10">
+<!ENTITY noscriptAbout "Om NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Ange vilka webbplatser som får köra skript. Skriv webbadressen eller domänen (t ex. "http://www.webbplats.se" eller "webbplats.se") för den webbplats där skript ska tillåtas. Klicka sedan på "Tillåt".">
 <!ENTITY noscriptWebAddress "Sidans adress:">
 <!ENTITY noscriptAllow "Tillåt">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.properties b/chrome/locale/sv-SE/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/sv-SE/noscript/noscript.properties
rename to chrome/locale/sv-SE/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/about.properties b/chrome/locale/te-IN/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/te-IN/noscript/about.properties
rename to chrome/locale/te-IN/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/locale/te-IN/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
rename to chrome/locale/te-IN/noscript/noscript.dtd
index 6128a40..50f02b6 100644
--- a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
+++ b/chrome/locale/te-IN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.10…">
+<!ENTITY noscriptAbout "About NoScript 5.1.1…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.properties b/chrome/locale/te-IN/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/te-IN/noscript/noscript.properties
rename to chrome/locale/te-IN/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/th/noscript/about.properties b/chrome/locale/th/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/th/noscript/about.properties
rename to chrome/locale/th/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/locale/th/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/th/noscript/noscript.dtd
rename to chrome/locale/th/noscript/noscript.dtd
index 7b2b788..4ff2670 100644
--- a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
+++ b/chrome/locale/th/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "ตัวเลือก...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "ตัวเลือก NoScript">
-<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.0.10">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
 <!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
 <!ENTITY noscriptAllow "อนุญาต">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.properties b/chrome/locale/th/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/th/noscript/noscript.properties
rename to chrome/locale/th/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/tr/noscript/about.properties b/chrome/locale/tr/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/tr/noscript/about.properties
rename to chrome/locale/tr/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/locale/tr/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
rename to chrome/locale/tr/noscript/noscript.dtd
index ecdffb9..981924d 100644
--- a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
+++ b/chrome/locale/tr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Seçenekler">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScript Seçenekleri">
-<!ENTITY noscriptAbout "NoScript 5.0.10 @VERSION@ Hakkında">
+<!ENTITY noscriptAbout "NoScript 5.1.1 @VERSION@ Hakkında">
 <!ENTITY noscriptPermissionsText "Hangi web sayfalarında JavaScript'e izni vereceğinizi kolayca seçebilirsiniz. Lütfen adresi tam olarak girin (örn. "http://www.site.com" veya "site.com") ve 'İzin ver' düğmesine tıklayarak sayfanın JavaScript kullanmasına izin verin.">
 <!ENTITY noscriptWebAddress "Site adresi:">
 <!ENTITY noscriptAllow "İzin ver">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.properties b/chrome/locale/tr/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/tr/noscript/noscript.properties
rename to chrome/locale/tr/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/uk/noscript/about.properties b/chrome/locale/uk/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/uk/noscript/about.properties
rename to chrome/locale/uk/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/uk/noscript/noscript.dtd b/chrome/locale/uk/noscript/noscript.dtd
similarity index 100%
rename from chrome/noscript.jar!/locale/uk/noscript/noscript.dtd
rename to chrome/locale/uk/noscript/noscript.dtd
diff --git a/chrome/noscript.jar!/locale/uk/noscript/noscript.properties b/chrome/locale/uk/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/uk/noscript/noscript.properties
rename to chrome/locale/uk/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/vi/noscript/about.properties b/chrome/locale/vi/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/vi/noscript/about.properties
rename to chrome/locale/vi/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/locale/vi/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
rename to chrome/locale/vi/noscript/noscript.dtd
index 4fe826e..21b638e 100644
--- a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
+++ b/chrome/locale/vi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tùy chọn">
 <!ENTITY noscriptOptions.accesskey "y">
 <!ENTITY noscriptOptionsLong "Tùy chọn cho NoScript">
-<!ENTITY noscriptAbout "Thông tin về NoScript 5.0.10">
+<!ENTITY noscriptAbout "Thông tin về NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "Bạn có thể chỉ định trang web nào được phép chạy script. Gõ địa chỉ hay tên miền (v.d. "http://www.nhaccodien.com" hay "nhaccodien.com") của trang mà bạn muốn cho phép, rồi nhấn Cho phép.">
 <!ENTITY noscriptWebAddress "Địa chỉ của trang web:">
 <!ENTITY noscriptAllow "Cho phép">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.properties b/chrome/locale/vi/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/vi/noscript/noscript.properties
rename to chrome/locale/vi/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/about.properties b/chrome/locale/zh-CN/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/zh-CN/noscript/about.properties
rename to chrome/locale/zh-CN/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/locale/zh-CN/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
rename to chrome/locale/zh-CN/noscript/noscript.dtd
index 76cc2e4..4e64e5e 100644
--- a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
+++ b/chrome/locale/zh-CN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "选项...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 选项">
-<!ENTITY noscriptAbout "关于 NoScript 5.0.10">
+<!ENTITY noscriptAbout "关于 NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
 <!ENTITY noscriptWebAddress "网站地址:">
 <!ENTITY noscriptAllow "允许">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.properties b/chrome/locale/zh-CN/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/zh-CN/noscript/noscript.properties
rename to chrome/locale/zh-CN/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/about.properties b/chrome/locale/zh-TW/noscript/about.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/zh-TW/noscript/about.properties
rename to chrome/locale/zh-TW/noscript/about.properties
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/locale/zh-TW/noscript/noscript.dtd
similarity index 99%
rename from chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
rename to chrome/locale/zh-TW/noscript/noscript.dtd
index 60a8a3a..bc107ac 100644
--- a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
+++ b/chrome/locale/zh-TW/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "選項…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 選項">
-<!ENTITY noscriptAbout "關於 NoScript 5.0.10">
+<!ENTITY noscriptAbout "關於 NoScript 5.1.1">
 <!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
 <!ENTITY noscriptWebAddress "網址:">
 <!ENTITY noscriptAllow "允許">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.properties b/chrome/locale/zh-TW/noscript/noscript.properties
similarity index 100%
rename from chrome/noscript.jar!/locale/zh-TW/noscript/noscript.properties
rename to chrome/locale/zh-TW/noscript/noscript.properties
diff --git a/chrome/noscript.jar!/content/noscript/FrameScript.jsm b/chrome/noscript.jar!/content/noscript/FrameScript.jsm
deleted file mode 100644
index 64e4cb3..0000000
--- a/chrome/noscript.jar!/content/noscript/FrameScript.jsm
+++ /dev/null
@@ -1,33 +0,0 @@
-'use strict';
-
-var EXPORTED_SYMBOLS = ["FrameScript"];
-
-const Cu = Components.utils;
-
-Cu.import("chrome://noscript/content/PasteHandler.jsm");
-Cu.import("chrome://noscript/content/UISync.jsm");
-
-function FrameScript(ctx) {
-  Object.defineProperty(ctx, "ns", {
-    get: function() {
-      try {
-        let ns = Components.classes["@maone.net/noscript-service;1"].getService().wrappedJSObject;
-        delete this.ns;
-        return (this.ns = ns);
-      } catch(e) {
-        Cu.reportError(e);
-        return null;
-      }
-    },
-    configurable: true,
-    enumerable: true
-  });
-
-  this.ctx = ctx;
-  new PasteHandler(ctx);
-  ctx.uiSync = new UISync(ctx);
-}
-
-FrameScript.prototype = {
-
-}
diff --git a/chrome/noscript.jar!/content/noscript/e10sChild.js b/chrome/noscript.jar!/content/noscript/e10sChild.js
deleted file mode 100644
index 1e3c92f..0000000
--- a/chrome/noscript.jar!/content/noscript/e10sChild.js
+++ /dev/null
@@ -1,36 +0,0 @@
-Components.utils.import("resource://gre/modules/Services.jsm");
-Services.scriptloader.loadSubScript("chrome://noscript/content/loader.js", this);
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-INCLUDE("Main");
-
-IPC.child = {
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIMessageListener, Ci.nsISupportsWeakReference]),
-  init: function() {
-    Services.cpmm.addWeakMessageListener(IPC_P_MSG.CALL, this);
-    Main.init();
-  },
-  dispose: function() {
-    Services.cpmm.removeWeakMessageListener(IPC_P_MSG.CALL, this);
-  },
-
-  receiveMessage: function(m) {
-    if (IPC.receiveMessage(m)) {
-      return;
-    }
-  },
-
-  remote(objName, method, args) {
-    Services.cpmm.sendAsyncMessage(IPC_P_MSG.CALL, {objName, method, args});
-  }
-
-};
-
-try {
-  Main.bootstrap(true);
-  IPC.child.init();
-} catch (e) {
-  Cu.reportError(e);
-}
-
diff --git a/chrome/noscript.jar!/content/noscript/frameScript.js b/chrome/noscript.jar!/content/noscript/frameScript.js
deleted file mode 100644
index a89c6f3..0000000
--- a/chrome/noscript.jar!/content/noscript/frameScript.js
+++ /dev/null
@@ -1,2 +0,0 @@
- Components.utils.import("chrome://noscript/content/FrameScript.jsm");
-new FrameScript(this);
diff --git a/chrome/noscript.jar!/webextension/lib/noscript/tld.js b/chrome/noscript.jar!/webextension/lib/noscript/tld.js
deleted file mode 100644
index 67acd94..0000000
--- a/chrome/noscript.jar!/webextension/lib/noscript/tld.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var tld = {
-  normalize(d) { return d; },
-
-  getDomain(domain) {
-    domain = this.normalize(domain);
-    var pos = domain.search(this._tldEx);
-    if(pos < 0) {
-      pos = domain.search(this._tldRx);
-      if(pos >= 0) pos = domain.lastIndexOf(".", pos - 1) + 1;
-    } else if(domain[pos] == ".") {
-      ++pos;
-    }
-    return pos < 0 ? domain : domain.substring(pos);
-  },
-
-  getPublicSuffix(domain) {
-    domain = this.normalize(domain);
-    var pos = domain.search(this._tldEx);
-    if(pos < 0) {
-      pos = domain.search(this._tldRx);
-      if(pos >= 0 && domain[pos] == ".") pos++;
-    } else {
-      pos = domain.indexOf(".", pos + 1) + 1;
-    }
-    return pos < 0 ? "" : domain.substring(pos);
-  },
-  
-  _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
-  ,
-  _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
-}
diff --git a/chrome/noscript.jar!/skin/classic/noscript/abe16.png b/chrome/skin/classic/noscript/abe16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/abe16.png
rename to chrome/skin/classic/noscript/abe16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/about.css b/chrome/skin/classic/noscript/about.css
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/about.css
rename to chrome/skin/classic/noscript/about.css
diff --git a/chrome/noscript.jar!/skin/classic/noscript/block.wav b/chrome/skin/classic/noscript/block.wav
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/block.wav
rename to chrome/skin/classic/noscript/block.wav
diff --git a/chrome/noscript.jar!/skin/classic/noscript/browser.css b/chrome/skin/classic/noscript/browser.css
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/browser.css
rename to chrome/skin/classic/noscript/browser.css
diff --git a/chrome/noscript.jar!/skin/classic/noscript/clearclick16.png b/chrome/skin/classic/noscript/clearclick16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/clearclick16.png
rename to chrome/skin/classic/noscript/clearclick16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/close.png b/chrome/skin/classic/noscript/close.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/close.png
rename to chrome/skin/classic/noscript/close.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/console16.png b/chrome/skin/classic/noscript/console16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/console16.png
rename to chrome/skin/classic/noscript/console16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/content.css b/chrome/skin/classic/noscript/content.css
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/content.css
rename to chrome/skin/classic/noscript/content.css
diff --git a/chrome/noscript.jar!/skin/classic/noscript/ef-no16.png b/chrome/skin/classic/noscript/ef-no16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/ef-no16.png
rename to chrome/skin/classic/noscript/ef-no16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/ef16.png b/chrome/skin/classic/noscript/ef16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/ef16.png
rename to chrome/skin/classic/noscript/ef16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/emb16.png b/chrome/skin/classic/noscript/emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/emb16.png
rename to chrome/skin/classic/noscript/emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/embed-no16.png b/chrome/skin/classic/noscript/embed-no16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/embed-no16.png
rename to chrome/skin/classic/noscript/embed-no16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/embed16.png b/chrome/skin/classic/noscript/embed16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/embed16.png
rename to chrome/skin/classic/noscript/embed16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/faq16.png b/chrome/skin/classic/noscript/faq16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/faq16.png
rename to chrome/skin/classic/noscript/faq16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/flash16.png b/chrome/skin/classic/noscript/flash16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/flash16.png
rename to chrome/skin/classic/noscript/flash16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/flash32.png b/chrome/skin/classic/noscript/flash32.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/flash32.png
rename to chrome/skin/classic/noscript/flash32.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/folder_closed.png b/chrome/skin/classic/noscript/folder_closed.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/folder_closed.png
rename to chrome/skin/classic/noscript/folder_closed.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/folder_open.png b/chrome/skin/classic/noscript/folder_open.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/folder_open.png
rename to chrome/skin/classic/noscript/folder_open.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/font.png b/chrome/skin/classic/noscript/font.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/font.png
rename to chrome/skin/classic/noscript/font.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/glb-emb16.png b/chrome/skin/classic/noscript/glb-emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/glb-emb16.png
rename to chrome/skin/classic/noscript/glb-emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/glb-no16.png b/chrome/skin/classic/noscript/glb-no16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/glb-no16.png
rename to chrome/skin/classic/noscript/glb-no16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/glb16.png b/chrome/skin/classic/noscript/glb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/glb16.png
rename to chrome/skin/classic/noscript/glb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/https16.png b/chrome/skin/classic/noscript/https16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/https16.png
rename to chrome/skin/classic/noscript/https16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/ia.png b/chrome/skin/classic/noscript/ia.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/ia.png
rename to chrome/skin/classic/noscript/ia.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/icon24.png b/chrome/skin/classic/noscript/icon24.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/icon24.png
rename to chrome/skin/classic/noscript/icon24.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/icon32.png b/chrome/skin/classic/noscript/icon32.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/icon32.png
rename to chrome/skin/classic/noscript/icon32.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/icon64.png b/chrome/skin/classic/noscript/icon64.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/icon64.png
rename to chrome/skin/classic/noscript/icon64.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/icon80.png b/chrome/skin/classic/noscript/icon80.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/icon80.png
rename to chrome/skin/classic/noscript/icon80.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-emb16.png b/chrome/skin/classic/noscript/inactive-emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-emb16.png
rename to chrome/skin/classic/noscript/inactive-emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-glb16.png b/chrome/skin/classic/noscript/inactive-glb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-glb16.png
rename to chrome/skin/classic/noscript/inactive-glb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-no-emb16.png b/chrome/skin/classic/noscript/inactive-no-emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-no-emb16.png
rename to chrome/skin/classic/noscript/inactive-no-emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-no16.png b/chrome/skin/classic/noscript/inactive-no16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-no16.png
rename to chrome/skin/classic/noscript/inactive-no16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-prt16.png b/chrome/skin/classic/noscript/inactive-prt16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-prt16.png
rename to chrome/skin/classic/noscript/inactive-prt16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-yes16.png b/chrome/skin/classic/noscript/inactive-yes16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-yes16.png
rename to chrome/skin/classic/noscript/inactive-yes16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/inactive-yu16.png b/chrome/skin/classic/noscript/inactive-yu16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/inactive-yu16.png
rename to chrome/skin/classic/noscript/inactive-yu16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/java16.png b/chrome/skin/classic/noscript/java16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/java16.png
rename to chrome/skin/classic/noscript/java16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/java32.png b/chrome/skin/classic/noscript/java32.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/java32.png
rename to chrome/skin/classic/noscript/java32.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/mobile.css b/chrome/skin/classic/noscript/mobile.css
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/mobile.css
rename to chrome/skin/classic/noscript/mobile.css
diff --git a/chrome/noscript.jar!/skin/classic/noscript/no-emb16.png b/chrome/skin/classic/noscript/no-emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/no-emb16.png
rename to chrome/skin/classic/noscript/no-emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/no16.png b/chrome/skin/classic/noscript/no16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/no16.png
rename to chrome/skin/classic/noscript/no16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/options.css b/chrome/skin/classic/noscript/options.css
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/options.css
rename to chrome/skin/classic/noscript/options.css
diff --git a/chrome/noscript.jar!/skin/classic/noscript/prt16.png b/chrome/skin/classic/noscript/prt16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/prt16.png
rename to chrome/skin/classic/noscript/prt16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/redirect16.png b/chrome/skin/classic/noscript/redirect16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/redirect16.png
rename to chrome/skin/classic/noscript/redirect16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/revtemp16.png b/chrome/skin/classic/noscript/revtemp16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/revtemp16.png
rename to chrome/skin/classic/noscript/revtemp16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/somelight16.png b/chrome/skin/classic/noscript/somelight16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/somelight16.png
rename to chrome/skin/classic/noscript/somelight16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/somelight32.png b/chrome/skin/classic/noscript/somelight32.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/somelight32.png
rename to chrome/skin/classic/noscript/somelight32.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/subprt16.png b/chrome/skin/classic/noscript/subprt16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/subprt16.png
rename to chrome/skin/classic/noscript/subprt16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/temp16.png b/chrome/skin/classic/noscript/temp16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/temp16.png
rename to chrome/skin/classic/noscript/temp16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/unsafe-reload16.png b/chrome/skin/classic/noscript/unsafe-reload16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/unsafe-reload16.png
rename to chrome/skin/classic/noscript/unsafe-reload16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/untrusted-glb16.png b/chrome/skin/classic/noscript/untrusted-glb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/untrusted-glb16.png
rename to chrome/skin/classic/noscript/untrusted-glb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/untrusted16.png b/chrome/skin/classic/noscript/untrusted16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/untrusted16.png
rename to chrome/skin/classic/noscript/untrusted16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/webgl16.png b/chrome/skin/classic/noscript/webgl16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/webgl16.png
rename to chrome/skin/classic/noscript/webgl16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/webgl32.png b/chrome/skin/classic/noscript/webgl32.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/webgl32.png
rename to chrome/skin/classic/noscript/webgl32.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/xss16.png b/chrome/skin/classic/noscript/xss16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/xss16.png
rename to chrome/skin/classic/noscript/xss16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/yes16.png b/chrome/skin/classic/noscript/yes16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/yes16.png
rename to chrome/skin/classic/noscript/yes16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/yu-emb16.png b/chrome/skin/classic/noscript/yu-emb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/yu-emb16.png
rename to chrome/skin/classic/noscript/yu-emb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/yu-glb16.png b/chrome/skin/classic/noscript/yu-glb16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/yu-glb16.png
rename to chrome/skin/classic/noscript/yu-glb16.png
diff --git a/chrome/noscript.jar!/skin/classic/noscript/yu16.png b/chrome/skin/classic/noscript/yu16.png
similarity index 100%
rename from chrome/noscript.jar!/skin/classic/noscript/yu16.png
rename to chrome/skin/classic/noscript/yu16.png
diff --git a/install.rdf b/install.rdf
index e33a72e..1e1b51a 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
 
    <em:id>{73a6fe31-595d-460b-a920-fcc0f8843232}</em:id>
    <em:name>NoScript</em:name>
-   <em:version>5.0.10</em:version>
+   <em:version>5.1.1</em:version>
    <em:description>Extra protection for your Firefox: NoScript allows JavaScript, Java (and other plugins) only for trusted domains of your choice (e.g. your home-banking web site). This whitelist based pre-emptive blocking approach  prevents exploitation of security vulnerabilities (known and even unknown!) with no loss of functionality... Experts will agree: Firefox is really safer with NoScript :-)</em:description>
    <em:creator>Giorgio Maone</em:creator>
    <em:type>2</em:type>
@@ -66,6 +66,7 @@
    <em:aboutURL>chrome://noscript/content/about.xul</em:aboutURL>
    <em:multiprocessCompatible>true</em:multiprocessCompatible>
    <em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
+   <em:bootstrap>true</em:bootstrap>
    <!-- Firefox -->
    <em:targetApplication>
      <Description>
diff --git a/webextension/legacy.js b/webextension/legacy.js
index 337effe..edf06e8 100644
--- a/webextension/legacy.js
+++ b/webextension/legacy.js
@@ -1,5 +1,6 @@
 var legacyPort;
 try {
+  let oldBackupCleared = false;
   legacyPort = browser.runtime.connect({name: "legacy"});
   legacyPort.onMessage.addListener(msg => {
     switch(msg.type) {
@@ -13,8 +14,22 @@ try {
       break;
 
       case "saveData":
-        browser.storage.local.set(msg.data);
-        console.log("NoScript preferences backed on the WebExtension side");
+        let backup = msg.data;
+        browser.storage.local.set({legacyBackup: backup}).then(() => {
+          console.log("NoScript preferences backup on the WebExtension side");
+          if (!oldBackupCleared) {
+            oldBackupCleared = true;
+            browser.storage.local.remove(Object.keys(backup)).then(() => {
+              console.log("Old format backup (pre-5.1) cleared");
+            }, (e) => {
+              console.error(e);
+            });
+
+          }
+        }, (e) => {
+          console.error("NoScript failed to back up non-default preference in WebExtension! %o", e);
+        });
+        
       break;
 
       case "dumpData":
diff --git a/webextension/lib/tld.js b/webextension/lib/tld.js
index 714945b..394ada3 100644
--- a/webextension/lib/tld.js
+++ b/webextension/lib/tld.js
@@ -25,7 +25,7 @@ var tld = {
     return pos < 0 ? "" : domain.substring(pos);
   },
   
-  _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
+  _tldRx: /(?:\.|^)(?:s(?:h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\.tokyo [...]
   ,
   _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
 }
diff --git a/webextension/noscript.js b/webextension/noscript.js
index 4a5a7dc..ca921db 100644
--- a/webextension/noscript.js
+++ b/webextension/noscript.js
@@ -10,15 +10,14 @@
       if (this.running) return;
       this.running = true;
       if (settings) policy = new Policy(settings);
-
-      browser.runtime.sendMessage("STARTED");
+      this.notify("STARTED");
     },
 
     stop() {
       if (!this.running) return;
       this.running= false;
       WebRequest.stop();
-      browser.runtime.sendMessage("STOPPED");
+      this.notify("STOPPED");
     },
 
     async retrievePolicy() {
@@ -29,16 +28,25 @@
       return this.retrievePolicy().isAllowed(urlString, "script");
     },
 
+    notify(msg) {
+      if (window.legacyPort) {
+        browser.runtime.sendMessage(msg);
+      }
+    },
+
+    log(msg) {
+      console.log(msg);
+    },
   };
 }
 
-if (legacyPort) {
-  browser.runtime.sendMessage("LEGACY MODE");
+if (window.legacyPort) {
+  ns.log("HYBRID WebExtension");
+  ns.notify("READY");
 } else {
-  browser.storage.local.get(null, items => console.log(`NoScript imported preferences: ${JSON.stringify(items)}`));
+  ns.log("PURE WebExtension");
+  browser.storage.local.get("legacyBackup", items => console.log(`NoScript legacy imported data backup: ${JSON.stringify(items)}`));
   ns.start();
 }
-
-browser.runtime.sendMessage("READY");
-console.log("NoScript WebExt Ready");
+ns.log("NoScript WebExt Ready");
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/noscript.git



More information about the Pkg-mozext-commits mailing list