[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 09/12: Imported Upstream version 1.3.6

David Prévot taffit at moszumanska.debian.org
Fri Jan 22 00:35:51 UTC 2016


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

taffit pushed a commit to branch master
in repository adblock-plus-element-hiding-helper.

commit e4ac5fb57f1ee552c13fd85f4d6fecc16b6b2bf4
Merge: 702f976 adb2d28
Author: David Prévot <david at tilapin.org>
Date:   Thu Jan 21 19:11:57 2016 -0400

    Imported Upstream version 1.3.6

 META-INF/manifest.mf                           |  59 ++++++++---------
 META-INF/mozilla.rsa                           | Bin 4188 -> 4188 bytes
 META-INF/mozilla.sf                            |   4 +-
 bootstrap.js                                   |   9 ++-
 chrome/content/common.js                       |   5 +-
 chrome/content/composer.js                     |   4 +-
 chrome/content/frameScript.js                  |  41 ------------
 chrome/content/{actor.jsm => processScript.js} |  56 ++++++++++------
 chrome/locale/ar/global.properties             |   2 +-
 chrome/locale/id/composer.dtd                  |   4 +-
 chrome/locale/ru/composer.dtd                  |   2 +-
 install.rdf                                    |  16 ++---
 lib/aardvark.js                                |  14 ++--
 lib/keySelector.js                             |  25 ++++---
 lib/main.js                                    |  10 +--
 lib/prefs.js                                   |  87 +++++++++++++------------
 16 files changed, 155 insertions(+), 183 deletions(-)

diff --cc META-INF/manifest.mf
index e3e8343,0000000..9f132c7
mode 100644,000000..100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@@ -1,822 -1,0 +1,817 @@@
 +Manifest-Version: 1.0
 +
 +Name: install.rdf
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: bt5ojgpGXMrdGaY4Gg1WOw==
- SHA1-Digest: mAAl3uHXWreUJEyJybja/byJcN8=
++MD5-Digest: 6dgZiJL5QFDYzzEPtRez2A==
++SHA1-Digest: nxKNUrSEcnUjBcL14znnTmxbMDo=
 +
 +Name: chrome.manifest
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: EPU0vOQIwCJGZ5+xD/7X7A==
 +SHA1-Digest: Mrgum9j8mHuRkT62wzPo/5/LMdk=
 +
 +Name: icon.png
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Iln/zMQmv7KpNNioVpLKTA==
 +SHA1-Digest: jdoeca+fP6BM1oglZRmFTddO4QE=
 +
 +Name: icon64.png
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9pBntckC4Nv7YLwp+wjKPA==
 +SHA1-Digest: EIJYR66/4BO8L+zQoMPvnaaykhE=
 +
 +Name: bootstrap.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: VvLNVVlY3lB6N5hJxjVRDA==
- SHA1-Digest: Bwe4+BFIypll9pNd1W2LppHdNcg=
- 
- Name: chrome/content/actor.jsm
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: wGlhTelAdQfoqSGZayBJgA==
- SHA1-Digest: num1dzaXxhJkbszUwgvyeSjjgis=
++MD5-Digest: neHEWxEmHLbJU+sCnJ88jg==
++SHA1-Digest: fbtSsblGsbp9eam+yChF+HibsKM=
 +
 +Name: chrome/content/common.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: DpHtZjUKzJijozFf439kpQ==
- SHA1-Digest: iN94irsmUv0FtJ4wis2R3UdVYgU=
++MD5-Digest: YOLC/SFhAaLq1vPyGKdvrA==
++SHA1-Digest: p0lYqUdZE8OjDBvJVXQ2LpW+d5E=
 +
 +Name: chrome/content/composer.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: 1VvLOiatgVk2Pnrtj1OKCg==
- SHA1-Digest: xMpnSSGs/ZsrEVkIH18PjfFCnV4=
++MD5-Digest: yeM2lHwwJZPH2iLI7LFoMg==
++SHA1-Digest: GkFwQlAld6rvbmUDBIuath1JkDw=
 +
 +Name: chrome/content/composer.xul
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 4jFGOxTNdUZqAnPs261Z8Q==
 +SHA1-Digest: RDGfRzzg6fJa3iwvAPc+IeHI4Qc=
 +
 +Name: chrome/content/elementmarker.css
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: s6zUwn7yn4JyhVc0cIoq3A==
 +SHA1-Digest: YToMcLSmzPiXrcbm1SKXg5KcZqE=
 +
- Name: chrome/content/frameScript.js
- Digest-Algorithms: MD5 SHA1
- MD5-Digest: j/qQbuqNAYmHca6R9bWoVg==
- SHA1-Digest: Tg9Pm9T04LEHCHbbfoHRdYB7yJY=
- 
 +Name: chrome/content/overlay.xul
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: /ShsUDsSl26Ae9jkCvWdGg==
 +SHA1-Digest: NMkTdXDt1sLSzHqAvmu6m7RIkl0=
 +
++Name: chrome/content/processScript.js
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: A5fALq6HqiU4iLNtpd1umQ==
++SHA1-Digest: GCsC20/Wj8aRi0ZGdS2BPkjibh4=
++
 +Name: chrome/locale/ar/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: h3atzZHmRAeHay6zZ5l8UQ==
 +SHA1-Digest: KBWS7rWBVvrj4P0dNkrzpa/tXxA=
 +
 +Name: chrome/locale/ar/global.properties
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: J8ICUHHBn9/odEyl/z0UOg==
- SHA1-Digest: l1U8U2Uk+yH5+d/ZAh9fu4dLNjc=
++MD5-Digest: htzsAIZdFhTIPOqifWGOvg==
++SHA1-Digest: j2CJBSQTO3VWYugZHJOB0/luwCs=
 +
 +Name: chrome/locale/ar/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: vkxK/8eFboH2U4EUl2V1NA==
 +SHA1-Digest: 9N9Ld7ua5U6uRfyyMfavawwiErI=
 +
 +Name: chrome/locale/bg/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: DORJL/n851fD/gwxJb/hzw==
 +SHA1-Digest: o02u2efdFd1F1MyU1soNcdg9Ptg=
 +
 +Name: chrome/locale/bg/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: /ddgyAYnaAzgC/6yzQ91Wg==
 +SHA1-Digest: QgHH/T47CWEIedRz3Idr81pbYWU=
 +
 +Name: chrome/locale/bg/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: zQGFnryY+WwlDkAENnRzPg==
 +SHA1-Digest: hKe7Db1Rr3F/2UcalanbNS4f+ww=
 +
 +Name: chrome/locale/ca/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: GUMWAQS6V/Hf6BrYfpba8Q==
 +SHA1-Digest: 691dTWjQ978mnJhu0gs0VZBRla4=
 +
 +Name: chrome/locale/ca/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: pcL62WkM7wZlt2gd04fTxw==
 +SHA1-Digest: N6bU+F8qMCfKBSekuZSC/QO1V8s=
 +
 +Name: chrome/locale/ca/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: +TKRWefV6rwIbkRkbNkkxw==
 +SHA1-Digest: CmKrgeR79QDtmGMZOrUDN45em98=
 +
 +Name: chrome/locale/cs/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: nL8P8I3XCCuFxxcHK4Tg2A==
 +SHA1-Digest: oYuLKH9aDdzvc3IzoivFny6poHA=
 +
 +Name: chrome/locale/cs/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: JD2OKvc3IB/C5pzbs3iC9Q==
 +SHA1-Digest: amXJk0DKOhqNKE1j3pdUfeb5lgo=
 +
 +Name: chrome/locale/cs/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: tJAuABaYDVUaEJlpC4GB1Q==
 +SHA1-Digest: hcLA8j1ixIitEjXkXKL5L2RzBjM=
 +
 +Name: chrome/locale/de/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: YUkOKUNoxRaK15MkwIKVAg==
 +SHA1-Digest: +UHVS4tx9WPpJoTyQWIyuzQb9qQ=
 +
 +Name: chrome/locale/de/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: noypR+HzmHO7xUtxcFkpXw==
 +SHA1-Digest: WN9ZSA9FSk/EDFQXIYp45DNfSdQ=
 +
 +Name: chrome/locale/de/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9ZwsbboPqz405oOsxZxxSA==
 +SHA1-Digest: LHZrqH+lYbQfPwKK5jdSyxIl7PM=
 +
 +Name: chrome/locale/dsb/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: OIYlUhQ2XeZBR2QHnHGXQA==
 +SHA1-Digest: KC1wnaO9uGaD4gNQTRltFlA9MBk=
 +
 +Name: chrome/locale/dsb/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: DCxTwft/2chRykBHFxcwSw==
 +SHA1-Digest: wLwvZKDroVhyxp3CRO3B18oHemI=
 +
 +Name: chrome/locale/dsb/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: BHpKogsznqyYLgDUbjWcOg==
 +SHA1-Digest: /A9rNtyofZ+jSCe8dk1lT38Gg8Y=
 +
 +Name: chrome/locale/el/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: jp3HpK1kc9ClPYydiJ+uLQ==
 +SHA1-Digest: uyB+sTGlUln05SKjvH7LRMHHYWg=
 +
 +Name: chrome/locale/el/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: DGFGkZa3XKY6PzlrTAhP6Q==
 +SHA1-Digest: 6M7J9w3BFmaDWyyJuvsNJXFVYVg=
 +
 +Name: chrome/locale/el/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9eGw1HI2ixAXo4Vwdj6kdw==
 +SHA1-Digest: vlPTGRWZ1aBSfG8vzK16fjWPYyU=
 +
 +Name: chrome/locale/en-GB/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: gbGNJZxJABMQlMJ8ka0LfQ==
 +SHA1-Digest: HlDaJzawDXr0FEadVlF+D7S8Mwc=
 +
 +Name: chrome/locale/en-GB/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: EKuoSE2T999A8NgZSDGJ8A==
 +SHA1-Digest: 5ZSTtsU7L4HQ2iCSJy75gP51gHo=
 +
 +Name: chrome/locale/en-GB/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: +Oo7Xf+P1u32H3usNALqgw==
 +SHA1-Digest: 27JvQ0igJbIzb+Leq9Wlca2FMnI=
 +
 +Name: chrome/locale/en-US/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 3K5bYixHxj0n0zpBgM7v8w==
 +SHA1-Digest: 7secxgcPQyhScoG9ijAkIzinrTY=
 +
 +Name: chrome/locale/en-US/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: ftLlMz8/Gt16XpoD7Tnn2g==
 +SHA1-Digest: lZgXHNIybFeh8iTRJCu12zc2Bfo=
 +
 +Name: chrome/locale/en-US/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 0SqZOFcrI3K0ShY3adRBRg==
 +SHA1-Digest: 1W6UVWZJmUtfWrSgNDoK6rNU7+4=
 +
 +Name: chrome/locale/es-AR/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: NWl2f8R9+25e3jEqMXWkWQ==
 +SHA1-Digest: Y7Fx6nW3HUfdiL8nw3KoqH94I0A=
 +
 +Name: chrome/locale/es-AR/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: FidP2CwMJ44XDTnly3A0Sw==
 +SHA1-Digest: NR01HBR8+UcJ/Asy+kSDA474ylA=
 +
 +Name: chrome/locale/es-AR/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 47SOJvH8FlIzhmTZzvIJBA==
 +SHA1-Digest: NphaHQEBu2GVTchgqBwnVv6ye9Y=
 +
 +Name: chrome/locale/es-ES/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: J/uzEG2zVDKSRj7hLxgHMQ==
 +SHA1-Digest: ndktNiemtVgvV2mhe/few545MNc=
 +
 +Name: chrome/locale/es-ES/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 3xoZz+IcYiPU+vEe/rtR/g==
 +SHA1-Digest: ip65OuyArJhZ85LQnAa291XhfZM=
 +
 +Name: chrome/locale/es-ES/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: +XZagB+01FArHJxIRnta0g==
 +SHA1-Digest: StIAf2wFCKHFsAAwJWwD2o+bZlY=
 +
 +Name: chrome/locale/es-MX/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 7j2iCRHO5ZaEAvnpDQjp6Q==
 +SHA1-Digest: wFuxpAMx3EndNJpg8Aeu6Cs9jcg=
 +
 +Name: chrome/locale/es-MX/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: kJ+rSLJfN7RQwJEQf/Q7cg==
 +SHA1-Digest: LeAgh62MEGtGxqAMyq9RT0UqQUg=
 +
 +Name: chrome/locale/es-MX/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: cP6nNyumc6yV9L4orSLybg==
 +SHA1-Digest: ZtoAAFOTgHV6nDbVrqioLY7qS2Q=
 +
 +Name: chrome/locale/et/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: uchO8OtAqsjouzpQVw2NuQ==
 +SHA1-Digest: gNVSa8YQEpOXXUla9/YyKtU2j80=
 +
 +Name: chrome/locale/et/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: J+X017nBV7e24SWgwKzSlA==
 +SHA1-Digest: qKxQZdIWereihVQL+hn6cunij6c=
 +
 +Name: chrome/locale/et/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 2QuXnmuwUUSbXSOtfay8rw==
 +SHA1-Digest: g/zHGFOBAIHu3x+9pNjB0IWHlSg=
 +
 +Name: chrome/locale/eu/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: ouIwVFQqD48EDDo8rQ49lQ==
 +SHA1-Digest: SPckcK3l8/zkY8ZcXpht9tYvVl4=
 +
 +Name: chrome/locale/eu/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: YnVfcABCY0AFoiKkkMgCwg==
 +SHA1-Digest: jAobDDAl8PQAEFQ23aBUCyg4dfk=
 +
 +Name: chrome/locale/eu/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9KaMeWLH909ODyt5kWh+fw==
 +SHA1-Digest: t6/97EFSmDjHBj8jwYTuETL06uI=
 +
 +Name: chrome/locale/fa/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: IdKQquqiDOw5xFqqZL21AA==
 +SHA1-Digest: 1p63xTGc7DhFYgby8PyEvVlfweA=
 +
 +Name: chrome/locale/fa/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Xve+P3bGQ5TSpk0F2CN/Cg==
 +SHA1-Digest: /oautSIP0gCohoJOEzNTgD43fNY=
 +
 +Name: chrome/locale/fa/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: +s7By+JUeDxu0iaFVP889A==
 +SHA1-Digest: +4pKeMeKC57cY+elC53ELAlPLYc=
 +
 +Name: chrome/locale/fi/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 2JXrFISeVaf0jfKLbjH//w==
 +SHA1-Digest: CWoXQ7mtVcy8GV1zXEeaPtmSgb0=
 +
 +Name: chrome/locale/fi/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: hRBvQP+/62QTIs8CwrWesQ==
 +SHA1-Digest: I5HKEAurDeNvyYyUBhl3FVzZjss=
 +
 +Name: chrome/locale/fi/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: xRDCzjwyNelVZDR/kIojTQ==
 +SHA1-Digest: YSPW9ojrStnbZIrec29eYuAst8c=
 +
 +Name: chrome/locale/fr/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: xbvgYhSBeyjQdHwitm8KGA==
 +SHA1-Digest: LazI8qQZECfRF4d0wYeSSnj0/oc=
 +
 +Name: chrome/locale/fr/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: x+IaxP4Tx7Gjtw38mOlDUA==
 +SHA1-Digest: hSIJh/FnFadHFiPCS+ZKKlOUohk=
 +
 +Name: chrome/locale/fr/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: JhJcS/qG70UAglBT+EvFzw==
 +SHA1-Digest: 3EJJjEs0M1ax2Q8NtbcQ48r0MQo=
 +
 +Name: chrome/locale/gl/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: CNUn+cPvFDLJYSSzGI3b1A==
 +SHA1-Digest: zDqSq9G99wBW0m5RqYf7Pr/S2qw=
 +
 +Name: chrome/locale/gl/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: +v1hJzaBpP25nhvrVhyJkQ==
 +SHA1-Digest: ziSH53aY2WZd7fb0D8NtkH8bLpc=
 +
 +Name: chrome/locale/gl/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: GHnkUDPJvlwZUIk3DSNP0Q==
 +SHA1-Digest: ey8+rv3bOKqhZsoQGtcSlKdbpdg=
 +
 +Name: chrome/locale/he/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: aOoe365477yG1XYtnz6lCA==
 +SHA1-Digest: 5DUidtkxUT3DK9V93fG/F6YKU60=
 +
 +Name: chrome/locale/he/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: sJaeovx9v57k5hpKAiGrmw==
 +SHA1-Digest: zoplCU+3bw73+W6uIKQDAUmV0gc=
 +
 +Name: chrome/locale/he/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: U/QFZvGa8Pw3E9HpoXLEmw==
 +SHA1-Digest: kcxklqAJpgoqd4q617N1BjT0SFg=
 +
 +Name: chrome/locale/hr/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: jPucgKFmCligiNpIDuwO4g==
 +SHA1-Digest: ZGHg1NFD39A5Yr6OXH70cHIz2g8=
 +
 +Name: chrome/locale/hr/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: ou6qcwJfitpfrF6pjwBdcw==
 +SHA1-Digest: 9uMw0bK2gBd4QMfaZ+yZVwpjx6I=
 +
 +Name: chrome/locale/hr/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: R2N9t44S+lzfkUYC/vOUFw==
 +SHA1-Digest: XHE37n+3Yh5nEecnkovQDiprkGQ=
 +
 +Name: chrome/locale/hsb/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: qz3M3VHrYxaaRIgsvr/AoA==
 +SHA1-Digest: /Wce3ahB/BoUJ8i6Zk05QqaLSBg=
 +
 +Name: chrome/locale/hsb/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: q//8R7vnkRUqT+3+6l1fcA==
 +SHA1-Digest: 0jj7q7m8rU6/spvTl9C0LnVBVp4=
 +
 +Name: chrome/locale/hsb/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 1x4sXnqdtWTw2o3x3z3n5A==
 +SHA1-Digest: bWHHbvO4lJotEuzT8L2jj5jVavQ=
 +
 +Name: chrome/locale/hu/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: b04ubcg2xlbRGONJc9YN3A==
 +SHA1-Digest: 0UKfGdJAAGxvjchGKEFvOBrPtWk=
 +
 +Name: chrome/locale/hu/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 90sdadtnGUcvrG9U1hg5WQ==
 +SHA1-Digest: OvO+Jzu7CmFD/oeCcvzIzvCYWfU=
 +
 +Name: chrome/locale/hu/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: nSyznhq/Nsg8fkiYF/pPMw==
 +SHA1-Digest: A5XQ8Mnjly8WrY/5gM0FJEGod0E=
 +
 +Name: chrome/locale/hy-AM/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: k1tTb9UdEd0VKUhErRSJvQ==
 +SHA1-Digest: choIg8LMVlZY6IGL5Ef1WcinLqM=
 +
 +Name: chrome/locale/hy-AM/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: oGgeYLKwg8npghM6MvntuA==
 +SHA1-Digest: n76bc3BZr0Z1TRJs1fu7gNXQS4c=
 +
 +Name: chrome/locale/hy-AM/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Ontn/Gxr6Jj6AUy6FSbqvA==
 +SHA1-Digest: vwh59Usfz5ZJhig9O6vvdMHFGck=
 +
 +Name: chrome/locale/id/composer.dtd
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: rIOi5RDox0lcslumjGFaJg==
- SHA1-Digest: Jf3+zM/6fbQfmkNYqxIAxQdmB7E=
++MD5-Digest: tOVM0mqxxmwJYSZ7pm3RNw==
++SHA1-Digest: EXAY/DW4UNj5HlwbVHn6I3H0EF0=
 +
 +Name: chrome/locale/id/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: oV3kKYd3wn35Mj0kcXeilQ==
 +SHA1-Digest: VyoBc9/8IauKDVHnd9xbHWXOgik=
 +
 +Name: chrome/locale/id/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: uAwfm/ZZ60a0U3WD5VSt/w==
 +SHA1-Digest: MJaqgGlEjAh8gccJmulv42u7P4I=
 +
 +Name: chrome/locale/it/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 1MBCGG9qrWNg6UHpIhbQzg==
 +SHA1-Digest: rH3aLyfiPDVjKV2+Te4i/sLPZsc=
 +
 +Name: chrome/locale/it/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9iPadW/nmjsZrUDescViow==
 +SHA1-Digest: MLoS0qdulqSwZEwzoVhkMsxWIzc=
 +
 +Name: chrome/locale/it/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: LIptS6/9ydL6q4S+qoTFqQ==
 +SHA1-Digest: EtfZteXBdSIw1Ne6sNfMiUTzLgQ=
 +
 +Name: chrome/locale/ja/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: qYlJltt54vrvXva34u7K+g==
 +SHA1-Digest: DJtmtIfD5zUeVfeBLsGLSaReKRI=
 +
 +Name: chrome/locale/ja/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: p8uR1pfGaevi9hsy+cK79w==
 +SHA1-Digest: XkfZTtTono3vGncuihpsBU68DZ4=
 +
 +Name: chrome/locale/ja/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: u7wI7OPG8BMwoICFuv34DQ==
 +SHA1-Digest: UZw+4GmJ9PaKFZdETz3H/8PT/MM=
 +
 +Name: chrome/locale/kk/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: jPhJwB5z17PI/lNXxHGO9w==
 +SHA1-Digest: YftU+OHjJ1M+roKlJEqF0FEg9yg=
 +
 +Name: chrome/locale/kk/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: vySdn3BqGhbhMXWbzW5Hkw==
 +SHA1-Digest: nTyGEjo4meT4Xhq/zyh/spd4mKs=
 +
 +Name: chrome/locale/kk/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Sa+R9nbE3BGtYNjFmtcMxg==
 +SHA1-Digest: 7liyLG/bwRE46l8ybLuK4DugkLE=
 +
 +Name: chrome/locale/ko/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Qso0JbpH+Xn0Hd5xpdJAlA==
 +SHA1-Digest: tdXHQ2tZjgfbey8Lh/TsRbNcE2k=
 +
 +Name: chrome/locale/ko/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Xa07iLG9s2YkCtbCA4oIMQ==
 +SHA1-Digest: lEN3y0P7vL2EyD1aCLmm7ChDM9g=
 +
 +Name: chrome/locale/ko/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: rJaxexzaa3TqCuk0htBnIg==
 +SHA1-Digest: YnEJaubFsYZIAwqICoW9nG+pFec=
 +
 +Name: chrome/locale/lt/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: G3p5uR9mXSTqBxSdyc6BYg==
 +SHA1-Digest: NKT9BDRA8yvvmSU8NtHJCvcuw5c=
 +
 +Name: chrome/locale/lt/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: niyz66f0/LFPG4k8ZkvK1g==
 +SHA1-Digest: dwVgJg4Jja5p7qz9tUbi8Xl3lj8=
 +
 +Name: chrome/locale/lt/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: t5T3VEPQsLvrkIFnzfD1TA==
 +SHA1-Digest: cVS1Hnn/hHnhlEtY/6VcOC9JY/Y=
 +
 +Name: chrome/locale/nb-NO/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: G51ReQkZ7hd55J7LTZR0Dg==
 +SHA1-Digest: BNOTwjSPDp5Temd/TFhQqyF9r5c=
 +
 +Name: chrome/locale/nb-NO/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: g6NjPPp2LvTqF5w65gaYOQ==
 +SHA1-Digest: xxyEVypFArqfhwpNHrX0QWobuLc=
 +
 +Name: chrome/locale/nb-NO/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: TE23dw+kPSVtdZ/563UvNQ==
 +SHA1-Digest: OnrLkSagkvyVDAVDhDvav0ZjyoE=
 +
 +Name: chrome/locale/nl/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: qb5K96izVb+t2bVTflWxFg==
 +SHA1-Digest: TNO6tbNDgei61iTSLC1ofwpwkDs=
 +
 +Name: chrome/locale/nl/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: let5cfMgZ+KB8ZOnJLLVLg==
 +SHA1-Digest: eaJXffrY2+e8O+TSDba/EfpUITs=
 +
 +Name: chrome/locale/nl/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: kO/CH17SOws0QSGW3xVm0A==
 +SHA1-Digest: vIsrUK1GAjTh+GGwsx4oP8lFesw=
 +
 +Name: chrome/locale/pl/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 8/LIJd6LiuB1sXvV03talQ==
 +SHA1-Digest: KJP4/+C2oFTZm7UEocOdGEGQg5M=
 +
 +Name: chrome/locale/pl/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 0VP7oUPhuow/urdmnO9kww==
 +SHA1-Digest: SKIYNHj9Ary8DrDqjJmY4m/OF6s=
 +
 +Name: chrome/locale/pl/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: ck5mZdW06azuEKqKoFOh9A==
 +SHA1-Digest: o4uUUke85zE+G5EEINpJV9zLLkc=
 +
 +Name: chrome/locale/pt-BR/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9mjf56Ynw8sd1kGKt5Yglg==
 +SHA1-Digest: AxQYMI3XbOZn7UD22Y4yJv7giSY=
 +
 +Name: chrome/locale/pt-BR/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 2Py68kUYAjGvbXfxWUqwng==
 +SHA1-Digest: 8a835BJ/DAH56IQ6hHVMxkMGJ4s=
 +
 +Name: chrome/locale/pt-BR/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: GZKOyLERU5EyTzclxWiesQ==
 +SHA1-Digest: 7neSwhbpNzTiriGfpU1AdwE4oug=
 +
 +Name: chrome/locale/pt-PT/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: vYBqXOh+fJhfYPJr1/aEtg==
 +SHA1-Digest: fjP++SCTejuQpzB9M4bAcNN6Zjg=
 +
 +Name: chrome/locale/pt-PT/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: EN7aKyigvFcfG7sadTBg5w==
 +SHA1-Digest: x8VanBhHwOUIMZRQRx8wA4AVK/o=
 +
 +Name: chrome/locale/pt-PT/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 3asUZ3j/uVYcMEksfpOv+g==
 +SHA1-Digest: 2rN9M5Dbslz7sAb72wN5Xb+R0DU=
 +
 +Name: chrome/locale/ro/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Cjp3zoxYe+S0TJs2da6cjg==
 +SHA1-Digest: EJKAHUgk7YmWQj/Rs0qapn2y9wQ=
 +
 +Name: chrome/locale/ro/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 8SHqynwaIPXLBSdDiFI4pw==
 +SHA1-Digest: oE3B6OECCAkUTOhnBJUMxzmAe0s=
 +
 +Name: chrome/locale/ro/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: EkIJppFNILiv7DfuAHZPKg==
 +SHA1-Digest: ldlN+/PUPC3sMQcFfgJNTN3NBOM=
 +
 +Name: chrome/locale/ru/composer.dtd
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: u1Xfx3mg+eiinEW6ddVeGg==
- SHA1-Digest: XG5bYspRqLsmGRxDrOX3e7SJ30c=
++MD5-Digest: Vq88dVDpdlnaF003X3GNaA==
++SHA1-Digest: /3tcIaHZni2BKvRtDbLlsf8ta1w=
 +
 +Name: chrome/locale/ru/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: abZI2uCJi60evO3tO0x3qw==
 +SHA1-Digest: zxpeVtYfP8K61eULPxdMNntQX9o=
 +
 +Name: chrome/locale/ru/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: r7XqxRfrS000EFs+9NChqA==
 +SHA1-Digest: tiOd3CTXun8J6iJifeBsItWr6UQ=
 +
 +Name: chrome/locale/sk/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: RRu6JpFQFB48gggW0+/3Bg==
 +SHA1-Digest: BxIwMNhmnaJYScm5yMFHtGPMFS4=
 +
 +Name: chrome/locale/sk/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: tx8F7BkYqlYqEoU6eGsTFw==
 +SHA1-Digest: ztwAJiV5Bs2Dx+v3LjSjuCGm/1E=
 +
 +Name: chrome/locale/sk/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: FohfTD8MBb0Hwa6SDa6DSw==
 +SHA1-Digest: KhoiASDlcn33vszpUsd0H0/Julo=
 +
 +Name: chrome/locale/sl/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: AVNoE+4Os2t5FtkBH4HQXg==
 +SHA1-Digest: +Q8YtX1AISZPwXBirQRkGyWNtTs=
 +
 +Name: chrome/locale/sl/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 0TaDWraRgknn4/OWzrOe2A==
 +SHA1-Digest: Y5U22DJVrjhe8E31CaTaR+yJNr0=
 +
 +Name: chrome/locale/sl/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: batsvHsFr6tn5fMj49paBA==
 +SHA1-Digest: +z/ILbJ/RwiP9WgnYOtDf80tuw0=
 +
 +Name: chrome/locale/sq/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: LbbJLWSQdz7HuE6MBiO9NQ==
 +SHA1-Digest: CYWtnALqUf3YRSzq8XDxSJAPiRI=
 +
 +Name: chrome/locale/sq/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: NjoX+qjm9i3VhJHuzxQq0w==
 +SHA1-Digest: fovjD3r0DxUi2msFkJvrbm6RrEM=
 +
 +Name: chrome/locale/sq/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 3ytAWAJd5kkdIMOrPgSoGA==
 +SHA1-Digest: XwgAy9RUmKBfVUSrru9vg3ln0ro=
 +
 +Name: chrome/locale/sr/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: rMjpAlu05yEF7amdCka7Yg==
 +SHA1-Digest: ESLvg2omICQkxK0ezsX5Mt5AlfM=
 +
 +Name: chrome/locale/sr/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: AD+g3u7LYlXvf+/8gftZjQ==
 +SHA1-Digest: PUBHE+J5Q+hkfW/76UFelHxP4Zo=
 +
 +Name: chrome/locale/sr/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: MTI8kAlgwT046x0H/OKJ2A==
 +SHA1-Digest: cZefpDwj8KEdPW6yX9d/TTzTgcs=
 +
 +Name: chrome/locale/sv-SE/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: zFEQCOFi71TG5bMrZjCXZw==
 +SHA1-Digest: R8CN0ON80qsMKG7Ks2FF6ylwY18=
 +
 +Name: chrome/locale/sv-SE/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: KZ6dHUuuGgTyqC0Sv+xUSg==
 +SHA1-Digest: wK5me6QzKpDGjJk0UWmDT8CTmRs=
 +
 +Name: chrome/locale/sv-SE/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: DHqbweA/hstl3J1uVpvhdw==
 +SHA1-Digest: nVAtW8LPgoOheQb8QS+bMpl7NKg=
 +
 +Name: chrome/locale/th/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: pkey28r+YKbkNZMAWDn+0A==
 +SHA1-Digest: yZwUSI8yIAC85c2AolBs/iWuV6A=
 +
 +Name: chrome/locale/th/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: t7VihnloLOoIReQSQIDBfw==
 +SHA1-Digest: Yxtx0meIqZNzgeree3p2xIadPBA=
 +
 +Name: chrome/locale/th/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 836EBDQXpF8jDE6fAEPo2g==
 +SHA1-Digest: DKLyxMEbsuTrF8KxGx/kvTenZt4=
 +
 +Name: chrome/locale/tr/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 15vq03xIJiJvvr4Oeof+TQ==
 +SHA1-Digest: gjK6XKLFhENh0uERnMvPl0pkSUQ=
 +
 +Name: chrome/locale/tr/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: yvYzKGUMmFbXxoCWewLVog==
 +SHA1-Digest: qj3d+CoTMGKQ15LBDwvxjqF7GKU=
 +
 +Name: chrome/locale/tr/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 4EmiMLcfAjlBAMIOdVprHA==
 +SHA1-Digest: TtZihrMbqnlksAXIzLqAfheo3Ss=
 +
 +Name: chrome/locale/uk/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: wU/XvS86xh431CB6ZJAE0A==
 +SHA1-Digest: Biem5ViQj10UAz1hYSCXiB4d754=
 +
 +Name: chrome/locale/uk/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 7GnKtBisbUy7hrk69ndxEw==
 +SHA1-Digest: hNepjrMXoEBLl0IWnhNF6QNPH2g=
 +
 +Name: chrome/locale/uk/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: /wlvoePaXrCsU6HBgP+8GQ==
 +SHA1-Digest: aSh4KDl5OF4LTs8yr09RQFPdW+Q=
 +
 +Name: chrome/locale/vi/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Dh+ztaLQ1czNCOEXuvvjsQ==
 +SHA1-Digest: 6kiT6PEhdBoQMpkMmZSrJywafVk=
 +
 +Name: chrome/locale/vi/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: FefjCOVQ2XqpPQGjQuj6pQ==
 +SHA1-Digest: BlEKvIZjLy3gpUfzaU3zP8WfrlQ=
 +
 +Name: chrome/locale/vi/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: Hkodk4EvdhshzHu4CT/jtA==
 +SHA1-Digest: KqQEFI7aUqCnib3p01g3sgUXaNs=
 +
 +Name: chrome/locale/zh-CN/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: ZV58fdVosAiy4FX1FcI06Q==
 +SHA1-Digest: g+hD4tP+L2Tr9u+SuDBxTuZUsx8=
 +
 +Name: chrome/locale/zh-CN/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: HpG2q4vWb6i000x8Ggv9DA==
 +SHA1-Digest: 6de2BYwxf9loDtVZlKs5lWBmhIw=
 +
 +Name: chrome/locale/zh-CN/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 04BsLY9BArYtIkY0d7VoSw==
 +SHA1-Digest: VSbSzh1+x7KM9M5XL55nuzF2jmk=
 +
 +Name: chrome/locale/zh-TW/composer.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: 9ww55Vb7EgbH50CNxxA8bg==
 +SHA1-Digest: WDBDRNzPy4kdIhHbLQgCBBYkS9s=
 +
 +Name: chrome/locale/zh-TW/global.properties
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: yGMOPu7kKgZwrQMZ13/PKQ==
 +SHA1-Digest: Ka2yfoKMOqstH4MnPjuKYOzewHM=
 +
 +Name: chrome/locale/zh-TW/overlay.dtd
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: X+mdTHTFed4Qtg2uLN3F0Q==
 +SHA1-Digest: WVIH6Caxg1lzL9rcDlwbY2arqBE=
 +
 +Name: chrome/skin/composer.css
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: fS3NQNPUr5tGrvprbaRBzQ==
 +SHA1-Digest: 6bb5txOFUGnAqzHsfpOuiGhdSW4=
 +
 +Name: chrome/skin/devToolsOverlay.css
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: qiZ0AlPsI9KTrxhzygBB9Q==
 +SHA1-Digest: BQJRv0kUXNescqLzGEi8/PkIDWU=
 +
 +Name: chrome/skin/overlay.css
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: C9gSDJWj/1abZdPUdPfOvA==
 +SHA1-Digest: XIstnyq45lplqE5/o4L8FVWlo8E=
 +
 +Name: defaults/prefs.json
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: uTEmqrCcrDTzKiQcxy3bhA==
 +SHA1-Digest: iMPCWcArAtw2yWO7i1uOnjHXN7E=
 +
 +Name: lib/aardvark.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: kbbYCKCelGF9V28SF5HCFg==
- SHA1-Digest: 1mHUhNnP2IWZz9xMlpvDvdzWOzI=
++MD5-Digest: nXcitZg9Qwp9jCEetSq1gQ==
++SHA1-Digest: TvXgGWEd0gOUQTfUwdho4OxM+00=
 +
 +Name: lib/inspectorObserver.js
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: hcUvr8f3efmkNVW7XkC5RQ==
 +SHA1-Digest: V04muwfvp1ndCQ63Ba2XuIFX4TU=
 +
 +Name: lib/keySelector.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: xAW7dA1Lp2x0gGZin/VC4g==
- SHA1-Digest: HiddULeqwF2kcUpi2s4uM9dalNc=
++MD5-Digest: nK/El/kCTOzeUMJRbpSUXA==
++SHA1-Digest: xmVw9vFX/Hj/GYjCyzy1oKzQjW4=
 +
 +Name: lib/main.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: 5FMQok/qy08gDz+79Elz+A==
- SHA1-Digest: T+ER5ABnLkaawmONgah+DzZu+lY=
++MD5-Digest: fEhJcfJgwe3wFneOH+yyrQ==
++SHA1-Digest: MejeQrbFhyJ+R6SwablyiqJ/iik=
 +
 +Name: lib/prefs.js
 +Digest-Algorithms: MD5 SHA1
- MD5-Digest: ghFfNRUxf3carriDpRB3Vg==
- SHA1-Digest: iB38kIOg8b6HtVN8X6W3jCn7LYA=
++MD5-Digest: OXuFy7xFJt+RtrUBYVFSXw==
++SHA1-Digest: oSAt/oLd1+2Fs9cyj0uIYkc5IEo=
 +
 +Name: lib/windowObserver.js
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: yVQpxZDfBt7oc57SHqZ9Gw==
 +SHA1-Digest: Z5Frw/lWvH1beSZGs6u8t9NZ72s=
 +
 +Name: lib/windowWrapper.js
 +Digest-Algorithms: MD5 SHA1
 +MD5-Digest: iCRhFMIiYBCb3bcIK3ZAjg==
 +SHA1-Digest: 0TquEKCzHa/xENOjgxXVmBpvauc=
 +
diff --cc META-INF/mozilla.rsa
index 0a01edd,0000000..a078868
mode 100644,000000..100644
Binary files differ
diff --cc META-INF/mozilla.sf
index b9260df,0000000..967e7bd
mode 100644,000000..100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@@ -1,4 -1,0 +1,4 @@@
 +Signature-Version: 1.0
- MD5-Digest-Manifest: Jqhz4xz0XEOTThKPaYrvAw==
- SHA1-Digest-Manifest: ac3X7p375u5JhC+gPyil2GBAQXg=
++MD5-Digest-Manifest: 9FjPglDFq41HJLvxz+svWQ==
++SHA1-Digest-Manifest: gPITRcASYwYfmgqmj9kSOX2nRt4=
 +
diff --cc bootstrap.js
index edec9f4,0000000..559867a
mode 100644,000000..100644
--- a/bootstrap.js
+++ b/bootstrap.js
@@@ -1,149 -1,0 +1,152 @@@
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 +
 +const Cc = Components.classes;
 +const Ci = Components.interfaces;
 +const Cr = Components.results;
 +const Cu = Components.utils;
 +
 +let {Services, atob, btoa, File, TextDecoder, TextEncoder} = Cu.import("resource://gre/modules/Services.jsm", null);
 +let XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest");
 +
 +let addonData = null;
 +
 +function startup(params, reason)
 +{
 +  addonData = params;
 +  Services.obs.addObserver(RequireObserver, "elemhidehelper-require", true);
-   onShutdown.add(function() Services.obs.removeObserver(RequireObserver, "elemhidehelper-require"));
++  onShutdown.add(function()
++  {
++    Services.obs.removeObserver(RequireObserver, "elemhidehelper-require");
++  });
 +
 +  require("main");
 +}
 +
 +function shutdown(params, reason)
 +{
 +  let windowNames = ["ehh:composer"];
 +  for (let i = 0; i < windowNames.length; i++)
 +  {
 +    let enumerator = Services.wm.getEnumerator(windowNames[i]);
 +    while (enumerator.hasMoreElements())
 +    {
 +      let window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow);
 +      window.setTimeout("window.close()", 0); // Closing immediately might not work due to modal windows
 +      try
 +      {
 +        window.close();
 +      } catch(e) {}
 +    }
 +  }
 +  onShutdown.done = true;
 +  for (let i = shutdownHandlers.length - 1; i >= 0; i --)
 +  {
 +    try
 +    {
 +      shutdownHandlers[i]();
 +    }
 +    catch (e)
 +    {
 +      Cu.reportError(e);
 +    }
 +  }
 +  shutdownHandlers = null;
 +
 +  // Make sure to release our ties to the modules even if the sandbox cannot be
 +  // released for some reason.
 +  for (let key in require.scopes)
 +  {
 +    let scope = require.scopes[key];
 +    let list = Object.keys(scope);
 +    for (let i = 0; i < list.length; i++)
 +      scope[list[i]] = null;
 +  }
 +  require.scopes = null;
 +  addonData = null;
 +}
 +
 +function install(params, reason) {}
 +
 +function uninstall(params, reason)
 +{
 +}
 +let shutdownHandlers = [];
 +let onShutdown =
 +{
 +  done: false,
 +  add: function(handler)
 +  {
 +    if (shutdownHandlers.indexOf(handler) < 0)
 +      shutdownHandlers.push(handler);
 +  },
 +  remove: function(handler)
 +  {
 +    let index = shutdownHandlers.indexOf(handler);
 +    if (index >= 0)
 +      shutdownHandlers.splice(index, 1);
 +  }
 +};
 +
 +function require(module)
 +{
 +  let scopes = require.scopes;
 +  if (!(module in scopes))
 +  {
 +    if (module == "info")
 +    {
-       let applications = {"{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "fennec", "toolkit at mozilla.org": "toolkit", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "firefox", "dlm at emusic.com": "emusic", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "fennec2", "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}": "conkeror", "{aa5ca914-c309-495d-91cf-3141bbb04115}": "midbrowser", "songbird at songbirdnest.com": "songbird", "prism at developer.mozilla.org": "prism", [...]
++      let applications = {"{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "fennec", "toolkit at mozilla.org": "toolkit", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "firefox", "dlm at emusic.com": "emusic", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "fennec2", "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}": "conkeror", "{aa5ca914-c309-495d-91cf-3141bbb04115}": "midbrowser", "songbird at songbirdnest.com": "songbird", "{55aba3ac-94d3-41a8-9e25-5c21fe874539} [...]
 +      let appInfo = Services.appinfo;
 +
 +      scopes[module] = {};
 +      scopes[module].exports =
 +      {
 +        addonID: addonData.id,
 +        addonVersion: addonData.version,
 +        addonRoot: addonData.resourceURI.spec,
 +        addonName: "elemhidehelper",
 +        application: (appInfo.ID in applications ? applications[appInfo.ID] : "other"),
 +        applicationVersion: appInfo.version,
 +        platform: "gecko",
 +        platformVersion: appInfo.platformVersion
 +      };
 +    }
 +    else
 +    {
 +      let url = addonData.resourceURI.spec + "lib/" + module + ".js";
 +      scopes[module] = {
 +        Cc: Cc,
 +        Ci: Ci,
 +        Cr: Cr,
 +        Cu: Cu,
 +        atob: atob,
 +        btoa: btoa,
 +        File: File,
 +        require: require,
 +        
 +        onShutdown: onShutdown,
 +        
 +        XMLHttpRequest: XMLHttpRequest,
 +        
 +        exports: {}};
 +      Services.scriptloader.loadSubScript(url, scopes[module]);
 +    }
 +  }
 +  return scopes[module].exports;
 +}
- require.scopes = {__proto__: null};
++require.scopes = Object.create(null);
 +Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 +
 +let RequireObserver =
 +{
 +  observe: function(subject, topic, data)
 +  {
 +    if (topic == "elemhidehelper-require")
 +    {
 +      subject.wrappedJSObject.exports = require(data);
 +    }
 +  },
 +
 +  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
 +};
diff --cc install.rdf
index 644ded8,0000000..a18f27b
mode 100644,000000..100644
--- a/install.rdf
+++ b/install.rdf
@@@ -1,529 -1,0 +1,529 @@@
 +<?xml version="1.0"?>
 +
 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
 +   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 +
 +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 +    xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 +
 +  <Description about="urn:mozilla:install-manifest">
 +    <em:id>elemhidehelper at adblockplus.org</em:id>
-     <em:version>1.3.5</em:version>
++    <em:version>1.3.6</em:version>
 +    <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +    <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
 +    <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +    <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +    <em:type>2</em:type>
 +    <em:bootstrap>true</em:bootstrap>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ar</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>العنصر إخفاء مساعد لزائد</em:name>
 +        <em:description>يساعدك في إنشاء عنصر القواعد الاختباء لزائد لمكافحة الإعلانات النصية.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>مؤيد مارديني</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>bg</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper за Adblock Plus</em:name>
 +        <em:description>Помага в създаването на правила за скриване на елементи за Adblock Plus за борба с текстовите реклами.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Ивайло Йовчев (s0urce)</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ca</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper per Adblock Plus</em:name>
 +        <em:description>T'ajuda a crear normes d'omissió d'elements per l'AdBlock Plus per combatre els ads de text.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>CatTranslations (with other non specified contributions)</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>cs</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Pomocník skrývání prvků pro Adblock Plus</em:name>
 +        <em:description>Pomáhá vám v boji proti textovým reklamám zjednodušením tvorby pravidel na skrývání prkvů pro Adblock Plus.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Jakub Tománek</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>de</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper für Adblock Plus</em:name>
 +        <em:description>Hilft beim Erstellen von Regeln zum Verstecken von Elementen, um mit Adblock Plus Textwerbung zu bekämpfen.</em:description>
 +        <em:homepageURL>https://adblockplus.org/de/elemhidehelper</em:homepageURL>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>dsb</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Pomaga wam, pšawidła za chowanje elementow za Adblock Plus napóraś, aby pśeśiwo tekstowemu wabjenjeju wójował.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Michael Wolf</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>el</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Βοηθός Απόκρυψης Στοιχείων για το Adblock Plus</em:name>
 +        <em:description>Βοηθά στην δημιουργία κανόνων απόκρυψης στοιχείων για το Adblock Plus για να αντιμετωπίσετε τις διαφημίσεις κειμένου.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>rookie</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>en-GB</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
 +        <em:homepageURL>https://adblockplus.org/en/elemhidehelper</em:homepageURL>
 +        <em:translator>Mark Tyndall</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>en-US</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
 +        <em:homepageURL>https://adblockplus.org/en/elemhidehelper</em:homepageURL>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>es-AR</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Asistente ocultador de elementos para Adblock Plus</em:name>
 +        <em:description>Te ayuda a crear reglas para ocultar elementos, conjuntamente con Adblock Plus, para combatir las publicidades de texto.</em:description>
 +        <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
 +        <em:translator>KNTRO</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>es-ES</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper para Adblock Plus</em:name>
 +        <em:description>Le ayuda a crear reglas de ocultación de elementos para Adblock Plus contra la publicidad en forma de textos.</em:description>
 +        <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
 +        <em:translator>Urko</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>es-MX</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper para Adblock Plus</em:name>
 +        <em:description>Le ayuda a crear reglas para ocultar elementos no deseados para Adblock Plus para eliminar la publicidad en forma de textos.</em:description>
 +        <em:homepageURL>https://adblockplus.org/es/elemhidehelper</em:homepageURL>
 +        <em:translator>Ninnetyer</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>et</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Helps you create element hiding rules for Adblock Plus to fight the text ads.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>eu</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Elementuak Ezkutatzeko Adblock Plus Lagungarria</em:name>
 +        <em:description>Adblock Plus erabilita elementuak ezkutatzeko arauak sortzen laguntzen dizu, testu iragarkiak borrokatzeko.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Librezale.org</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>fa</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>نرم افزار کمکی حذف تبلیغات برای Adblock Plus</em:name>
 +        <em:description>شما را کمک میکند با قوانین ادبلاک برای پنهان کردن آگهی‌های متنی</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>GµårÐïåñ aka Major Mike</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>fi</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Elementin piilottaja</em:name>
 +        <em:description>Auttaa sinua tekemään asetukset puolustautuakseen teksti mainoksilta.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>epe07</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>fr</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper pour Adblock Plus</em:name>
 +        <em:description>Vous aide à créer des règles de masquage d'éléments pour Adblock Plus, afin de lutter contre les textes publicitaires.</em:description>
 +        <em:homepageURL>https://adblockplus.org/fr/elemhidehelper</em:homepageURL>
 +        <em:translator>Dagobert_78</em:translator>
 +        <em:translator>Jim Courbron</em:translator>
 +        <em:translator>jojaba</em:translator>
 +        <em:translator>pirlouy</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>gl</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper para Adblock Plus</em:name>
 +        <em:description>Axúdate a crear regras de ocultación para que Adblock Plus oculte os anuncios de texto.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Isaac Álvarez Veiga</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>he</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper עבור Adblock Plus</em:name>
-         <em:description>מסייע ליצירת חוקי הסתרת אלמנטים ל-Adblock Plus כדי להילחם במודעות הטקסט.</em:description>
++        <em:description>מסייע ליצירת חוקי הסתרת אלמנטים ל Adblock Plus כדי להילחם בפרסומות הטקסט.</em:description>
 +        <em:homepageURL>https://adblockplus.org/he/elemhidehelper</em:homepageURL>
 +        <em:translator>SiiiE</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>hr</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Pomoćnik sakrivanja elemenata za Adblock Plus</em:name>
 +        <em:description>Pomaže vam u stvaranju pravila sakrivanja elemenata za Adblock Plus u svrhu borbe protiv tekstualnih reklama.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>gogo gogić</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>hsb</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Pomha wam, prawidła za chowanje elementow za Adblock Plus wutworić, zo by přećiwo tekstowemu wabjenju wojował.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Michael Wolf</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>hu</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper az Adblock Plushoz</em:name>
 +        <em:description>Elemek elrejtése szabályok alapján (Adblock Plus bővítmény).</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Mikes Kaszmán István</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>hy-AM</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Օգնում է ստեղծելու տարրերի էթաքցման կանոններ Adblock Plus-ի համար տեքստային գովազդների հետ պայքարելու համար:</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>iAbaS</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>id</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Bantuan Penyembunyian Elemen untuk Adblock Plus</em:name>
 +        <em:description>Membantu Anda membuat aturan penyembunyian elemen untuk Adblock Plus untuk melawan iklan teks.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>it</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper per Adblock Plus</em:name>
 +        <em:description>Permette di creare regole per nascondere gli elementi per Adblock Plus</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Luana Di Muzio</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ja</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>テキスト広告に対抗する、Adblock Plus の要素非表示ルール作成を支援します。</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>k2jp</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>kk</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Adblock Plus үшін Element Hiding Helper</em:name>
 +        <em:description>Мәтіндік жарнамалардан құтылу үшін Adblock Plus ережелерін жасауға көмектеседі</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Бауржан Муфтахидинов</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ko</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>텍스트 광고 제거! 요소 숨김 도우미로 애드블록 플러스의 요소 숨김 필터를 작성할 수 있습니다.</em:description>
 +        <em:homepageURL>https://adblockplus.org/ko/elemhidehelper</em:homepageURL>
 +        <em:translator>Maybee</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>lt</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper skirtas Adblock Plus</em:name>
 +        <em:description>Padeda sukurti elementų slėpimo taisykles, skirtas Adblock Plus, kovai su tekstiniais skelbimais.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Algimantas Margevičius</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>nb-NO</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Hjelpeverktøy for å skjule elementer for Adblock Plus</em:name>
 +        <em:description>Hjelper deg med å lage elementskjulingsregler med Adblock Plus for å bekjempe tekstreklame.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Roy Skoglund</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>nl</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper voor Adblock Plus</em:name>
 +        <em:description>Helpt u regels voor verbergen van elementen te maken voor Adblock Plus om tekstadvertenties te bestrijden.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>markh van BabelZilla.org</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>pl</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Pomocnik ukrywania elementu dla Adblocka Plus</em:name>
 +        <em:description>Pomaga w tworzeniu reguł ukrywania elementu dla Adblocka Plus.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Leszek Życzkowski (teo)</em:translator>
 +        <em:translator>Piotr Żółtowski (Piter432)</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>pt-BR</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>Ajuda a criar regras de ocultamento de elementos para o Adblock Plus para combater propagandas de texto.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Humberto Sartini</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>pt-PT</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper para o Adblock Plus</em:name>
 +        <em:description>Ajuda-o a criar as regras de ocultação do elemento para o Adblock Plus, para ocultar os anúncios de texto.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Manuela Silva</em:translator>
 +        <em:translator>Pimentel</em:translator>
 +        <em:translator>Sérgio Marques</em:translator>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ro</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper pentru Adblock Plus</em:name>
 +        <em:description>Vă ajută să creați reguli de ascundere a elementelor pentru Adblock Plus cu scopul de a bloca reclamele de tip text.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>ultravioletu</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>ru</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper для Adblock Plus</em:name>
 +        <em:description>Помогает при создании правил скрытия для Adblock Plus, эффективное средство борьбы с текстовой рекламой.</em:description>
 +        <em:homepageURL>https://adblockplus.org/ru/elemhidehelper</em:homepageURL>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>sk</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper pre Adblock Plus</em:name>
 +        <em:description>Pomôže vám s vytváraním pravidiel na skrývanie prvkov pre Adblock Plus a bojovať s textovými reklamami.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Wladimir Palant</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>sl</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper za Adblock Plus</em:name>
 +        <em:description>Vam pomaga ustvariti pravila za skrivanje tekstovnih oglasnih blokov z Adblock Plus vtičnikom.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Tomaž Mačus</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>sq</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Ndihmues për Element i Fshehur për Adblock Plus</em:name>
 +        <em:description>Ju ndihmon të krijoni rregulla Elementa i Fshehur për Adblock Plus për të luftuar reklamat teksti.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Kristi Papa</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>sr</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper за Adblock Plus</em:name>
 +        <em:description>Помаже да направите правила за сакривање елемената за Adblock Plus, како бисте уклонили текстуалне рекламе.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Ђорђе Васиљевић</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>sv-SE</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper för Adblock Plus</em:name>
 +        <em:description>Hjälper dig att skapa regler i Adblock Plus för att dölja element. Användbart mot bl.a. textreklam.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Kim Johansson</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>th</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper สำหรับ Adblock Plus</em:name>
 +        <em:description>ช่วยคุณสร้างกฎการซ่อนวัตถุของ Adblock Plus เพื่อสู้กับข้อความโฆษณา</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Ken</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>tr</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Adblock Plus için Element Hiding Helper</em:name>
 +        <em:description>Metin reklamlarıyla savaşta Adblock Plus için bileşen gizleme kuralları oluşturmanıza yardım eder.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Ahmet Serkan Tıratacı</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>uk</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper для Adblock Plus</em:name>
 +        <em:description>Допомогає вам створювати правила приховування для Adblock Plus і боротись з рекламою.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>Тимофій Бабич</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>vi</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Trình trợ giúp Ẩn Phần tử cho Adblock Plus</em:name>
 +        <em:description>Giúp bạn tạo quy tắc ẩn phần tử cho Adblock Plus để chống lại quảng cáo dạng văn bản.</em:description>
 +        <em:homepageURL>https://adblockplus.org/elemhidehelper</em:homepageURL>
 +        <em:translator>SITUVN</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>zh-CN</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Adblock Plus 元素隐藏辅助工具</em:name>
 +        <em:description>方便的为 Adblock Plus 创建页面元素隐藏规则以去除文本广告。</em:description>
 +        <em:homepageURL>https://adblockplus.org/zh_CN/elemhidehelper</em:homepageURL>
 +        <em:translator>WangKing</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:localized>
 +      <Description>
 +        <em:locale>zh-TW</em:locale>
 +        <em:creator>Wladimir Palant</em:creator><em:contributor>Rob Brown</em:contributor>
 +        <em:name>Element Hiding Helper for Adblock Plus</em:name>
 +        <em:description>協助您建立對抗文字廣告用的 Adblock Plus 元素隱藏規則。</em:description>
 +        <em:homepageURL>https://adblockplus.org/zh_TW/elemhidehelper</em:homepageURL>
 +        <em:translator>Chris Hsu</em:translator>
 +        <em:translator>knight00931</em:translator>
 +      </Description>
 +    </em:localized>
 +    <em:targetApplication>
 +      <Description>
 +        <!-- conkeror -->
 +        <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
 +        <em:minVersion>0.1</em:minVersion>
 +        <em:maxVersion>100.0</em:maxVersion>
 +      </Description>
 +    </em:targetApplication>
 +    <em:targetApplication>
 +      <Description>
 +        <!-- firefox -->
 +        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-         <em:minVersion>29.0</em:minVersion>
-         <em:maxVersion>45.0</em:maxVersion>
++        <em:minVersion>38.0</em:minVersion>
++        <em:maxVersion>46.0</em:maxVersion>
 +      </Description>
 +    </em:targetApplication>
 +    <em:targetApplication>
 +      <Description>
 +        <!-- seamonkey -->
 +        <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-         <em:minVersion>2.26</em:minVersion>
-         <em:maxVersion>2.41</em:maxVersion>
++        <em:minVersion>2.35</em:minVersion>
++        <em:maxVersion>2.42</em:maxVersion>
 +      </Description>
 +    </em:targetApplication>
 +    <em:targetApplication>
 +      <Description>
 +        <!-- thunderbird -->
 +        <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
-         <em:minVersion>29.0</em:minVersion>
-         <em:maxVersion>45.0</em:maxVersion>
++        <em:minVersion>38.0</em:minVersion>
++        <em:maxVersion>46.0</em:maxVersion>
 +      </Description>
 +    </em:targetApplication>
 +  </Description>
 +</RDF>
diff --cc lib/keySelector.js
index 01d9cd0,0000000..22212f5
mode 100644,000000..100644
--- a/lib/keySelector.js
+++ b/lib/keySelector.js
@@@ -1,215 -1,0 +1,212 @@@
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 +
 +Cu.import("resource://gre/modules/Services.jsm");
 +
- let validModifiers =
- {
-   ACCEL: null,
-   CTRL: "control",
-   CONTROL: "control",
-   SHIFT: "shift",
-   ALT: "alt",
-   META: "meta",
-   __proto__: null
- };
++let validModifiers = Object.create(null);
++validModifiers.ACCEL = null;
++validModifiers.CTRL = "control";
++validModifiers.CONTROL = "control";
++validModifiers.SHIFT = "shift";
++validModifiers.ALT = "alt";
++validModifiers.META = "meta";
 +
 +/**
 + * Sets the correct value of validModifiers.ACCEL.
 + */
 +function initAccelKey()
 +{
 +  validModifiers.ACCEL = "control";
 +  try
 +  {
 +    let accelKey = Services.prefs.getIntPref("ui.key.accelKey");
 +    if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_CONTROL)
 +      validModifiers.ACCEL = "control";
 +    else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT)
 +      validModifiers.ACCEL = "alt";
 +    else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META)
 +      validModifiers.ACCEL = "meta";
 +  }
 +  catch(e)
 +  {
 +    Cu.reportError(e);
 +  }
 +}
 +
 +exports.KeySelector = KeySelector;
 +
 +/**
 + * This class provides capabilities to find and use available keyboard shortcut
 + * keys.
 + * @param {ChromeWindow} window   the window where to look up existing shortcut
 + *                                keys
 + * @constructor
 + */
 +function KeySelector(window)
 +{
 +  this._initExistingShortcuts(window);
 +}
 +KeySelector.prototype =
 +{
 +  /**
 +   * Map listing existing shortcut keys as its keys.
 +   * @type Object
 +   */
 +  _existingShortcuts: null,
 +
 +  /**
 +   * Sets up _existingShortcuts property for a window.
 +   */
 +  _initExistingShortcuts: function(/**ChromeWindow*/ window)
 +  {
 +    if (!validModifiers.ACCEL)
 +      initAccelKey();
 +
-     this._existingShortcuts = {__proto__: null};
++    this._existingShortcuts = Object.create(null);
 +
 +    let keys = window.document.getElementsByTagName("key");
 +    for (let i = 0; i < keys.length; i++)
 +    {
 +      let key = keys[i];
 +      let keyData =
 +      {
 +        shift: false,
 +        meta: false,
 +        alt: false,
 +        control: false,
 +        char: null,
 +        code: null
 +      };
 +
 +      let keyChar = key.getAttribute("key");
 +      if (keyChar && keyChar.length == 1)
 +        keyData.char = keyChar.toUpperCase();
 +
 +      let keyCode = key.getAttribute("keycode");
 +      if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent)
 +        keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()];
 +
 +      if (!keyData.char && !keyData.code)
 +        continue;
 +
 +      let keyModifiers = key.getAttribute("modifiers");
 +      if (keyModifiers)
-         for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g))
++        for (let modifier of keyModifiers.toUpperCase().match(/\w+/g))
 +          if (modifier in validModifiers)
 +            keyData[validModifiers[modifier]] = true;
 +
 +      let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" ");
 +      this._existingShortcuts[canonical] = true;
 +    }
 +  },
 +
 +  /**
 +   * Selects a keyboard shortcut variant that isn't already taken,
 +   * parses it into an object.
 +   */
 +  selectKey: function(/**String*/ variants) /**Object*/
 +  {
-     for each (let variant in variants.split(/\s*,\s*/))
++    for (let variant of variants.split(/\s*,\s*/))
 +    {
 +      if (!variant)
 +        continue;
 +
 +      let keyData =
 +      {
 +        shift: false,
 +        meta: false,
 +        alt: false,
 +        control: false,
 +        char: null,
 +        code: null,
 +        codeName: null
 +      };
-       for each (let part in variant.toUpperCase().split(/\s+/))
++      for (let part of variant.toUpperCase().split(/\s+/))
 +      {
 +        if (part in validModifiers)
 +          keyData[validModifiers[part]] = true;
 +        else if (part.length == 1)
 +          keyData.char = part;
 +        else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent)
 +        {
 +          keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part];
 +          keyData.codeName = "VK_" + part;
 +        }
 +      }
 +
 +      if (!keyData.char && !keyData.code)
 +        continue;
 +
 +      let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" ");
 +      if (canonical in this._existingShortcuts)
 +        continue;
 +
 +      return keyData;
 +    }
 +
 +    return null;
 +  }
 +};
 +
 +/**
 + * Creates the text representation for a key.
 + * @static
 + */
 +KeySelector.getTextForKey = function (/**Object*/ key) /**String*/
 +{
 +  if (!key)
 +    return null;
 +
 +  if (!("text" in key))
 +  {
 +    key.text = null;
 +    try
 +    {
 +      let stringBundle = Services.strings.createBundle("chrome://global-platform/locale/platformKeys.properties");
 +      let parts = [];
 +      if (key.control)
 +        parts.push(stringBundle.GetStringFromName("VK_CONTROL"));
 +      if (key.alt)
 +        parts.push(stringBundle.GetStringFromName("VK_ALT"));
 +      if (key.meta)
 +        parts.push(stringBundle.GetStringFromName("VK_META"));
 +      if (key.shift)
 +        parts.push(stringBundle.GetStringFromName("VK_SHIFT"));
 +      if (key.char)
 +        parts.push(key.char.toUpperCase());
 +      else
 +      {
 +        let stringBundle2 = Services.strings.createBundle("chrome://global/locale/keys.properties");
 +        parts.push(stringBundle2.GetStringFromName(key.codeName));
 +      }
 +      key.text = parts.join(stringBundle.GetStringFromName("MODIFIER_SEPARATOR"));
 +    }
 +    catch (e)
 +    {
 +      Cu.reportError(e);
 +      return null;
 +    }
 +  }
 +  return key.text;
 +};
 +
 +/**
 + * Tests whether a keypress event matches the given key.
 + * @static
 + */
 +KeySelector.matchesKey = function(/**Event*/ event, /**Object*/ key) /**Boolean*/
 +{
 +  if (event.defaultPrevented || !key)
 +    return false;
 +  if (key.shift != event.shiftKey || key.alt != event.altKey)
 +    return false;
 +  if (key.meta != event.metaKey || key.control != event.ctrlKey)
 +    return false;
 +
 +  if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperCase() == key.char)
 +    return true;
 +  if (key.code && event.keyCode && event.keyCode == key.code)
 +    return true;
 +  return false;
 +};
diff --cc lib/prefs.js
index ff5e181,0000000..eb670a7
mode 100644,000000..100644
--- a/lib/prefs.js
+++ b/lib/prefs.js
@@@ -1,198 -1,0 +1,201 @@@
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 +
- Cu.import("resource://gre/modules/Services.jsm");
- Cu.import("resource://gre/modules/XPCOMUtils.jsm");
++let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
++let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
 +
 +let {addonRoot, addonName} = require("info");
 +let branchName = "extensions." + addonName + ".";
 +let branch = Services.prefs.getBranch(branchName);
 +let preconfiguredBranch =
 +    Services.prefs.getBranch(branchName + "preconfigured.");
 +let ignorePrefChanges = false;
 +
 +function init()
 +{
 +  // Load default preferences and set up properties for them
 +  let defaultBranch = Services.prefs.getDefaultBranch(branchName);
 +
 +  let request = new XMLHttpRequest();
 +  request.open("GET", addonRoot + "defaults/prefs.json", false);
 +  request.responseType = "json";
 +  request.send();
 +
 +  let defaults = request.response.defaults;
 +  let preconfigurable = new Set(request.response.preconfigurable);
 +  for (let pref in defaults)
 +  {
 +    let value = defaults[pref];
 +    let [getter, setter] = typeMap[typeof value];
 +    if (preconfigurable.has(pref))
 +    {
 +      try
 +      {
 +        value = getter(preconfiguredBranch, pref);
 +      }
 +      catch (e) {}
 +    }
 +    setter(defaultBranch, pref, value);
 +    defineProperty(pref, false, getter, setter);
 +  }
 +
 +  // Add preference change observer
 +  try
 +  {
 +    branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true);
-     onShutdown.add(function() branch.removeObserver("", Prefs));
++    onShutdown.add(() => branch.removeObserver("", Prefs));
 +  }
 +  catch (e)
 +  {
 +    Cu.reportError(e);
 +  }
 +}
 +
 +/**
 + * Sets up getter/setter on Prefs object for preference.
 + */
 +function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, /**Function*/ writeFunc)
 +{
 +  let value = defaultValue;
-   Prefs["_update_" + name] = function()
++  Prefs["_update_" + name] = () =>
 +  {
 +    try
 +    {
 +      value = readFunc(branch, name);
 +      triggerListeners(name);
 +    }
 +    catch(e)
 +    {
 +      Cu.reportError(e);
 +    }
 +  };
-   Prefs.__defineGetter__(name, function() value);
-   Prefs.__defineSetter__(name, function(newValue)
-   {
-     if (value == newValue)
-       return value;
- 
-     try
-     {
-       ignorePrefChanges = true;
-       writeFunc(branch, name, newValue);
-       value = newValue;
-       Services.prefs.savePrefFile(null);
-       triggerListeners(name);
-     }
-     catch(e)
++  Object.defineProperty(Prefs, name, {
++    enumerable: true,
++    get: () => value,
++    set: (newValue) =>
 +    {
-       Cu.reportError(e);
-     }
-     finally
-     {
-       ignorePrefChanges = false;
++      if (value == newValue)
++        return value;
++
++      try
++      {
++        ignorePrefChanges = true;
++        writeFunc(branch, name, newValue);
++        value = newValue;
++        Services.prefs.savePrefFile(null);
++        triggerListeners(name);
++      }
++      catch(e)
++      {
++        Cu.reportError(e);
++      }
++      finally
++      {
++        ignorePrefChanges = false;
++      }
++      return value;
 +    }
-     return value;
 +  });
 +  Prefs["_update_" + name]();
 +}
 +
 +let listeners = [];
 +function triggerListeners(/**String*/ name)
 +{
 +  for (let i = 0; i < listeners.length; i++)
 +  {
 +    try
 +    {
 +      listeners[i](name);
 +    }
 +    catch(e)
 +    {
 +      Cu.reportError(e);
 +    }
 +  }
 +}
 +
 +/**
 + * Manages the preferences for an extension, object properties corresponding
 + * to extension's preferences are added automatically. Setting the property
 + * will automatically change the preference, external preference changes are
 + * also recognized automatically.
 + */
 +let Prefs = exports.Prefs =
 +{
 +  /**
 +   * Migrates an old preference to a new name.
 +   */
 +  migrate: function(/**String*/ oldName, /**String*/ newName)
 +  {
 +    if (newName in this && Services.prefs.prefHasUserValue(oldName))
 +    {
 +      let [getter, setter] = typeMap[typeof this[newName]];
 +      try
 +      {
 +        this[newName] = getter(Services.prefs, oldName);
 +      } catch(e) {}
 +      Services.prefs.clearUserPref(oldName);
 +    }
 +  },
 +
 +  /**
 +   * Adds a preferences listener that will be fired whenever a preference
 +   * changes.
 +   */
 +  addListener: function(/**Function*/ listener)
 +  {
 +    if (listeners.indexOf(listener) < 0)
 +      listeners.push(listener);
 +  },
 +
 +  /**
 +   * Removes a preferences listener.
 +   */
 +  removeListener: function(/**Function*/ listener)
 +  {
 +    let index = listeners.indexOf(listener);
 +    if (index >= 0)
 +      listeners.splice(index, 1);
 +  },
 +
 +  observe: function(subject, topic, data)
 +  {
 +    if (ignorePrefChanges || topic != "nsPref:changed")
 +      return;
 +
 +    if ("_update_" + data in this)
 +      this["_update_" + data]();
 +  },
 +
 +  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
 +};
 +
++let getIntPref = (branch, pref) => branch.getIntPref(pref);
++let setIntPref = (branch, pref, newValue) => branch.setIntPref(pref, newValue);
++
++let getBoolPref = (branch, pref) => branch.getBoolPref(pref);
++let setBoolPref = (branch, pref, newValue) => branch.setBoolPref(pref, newValue);
++
++let getCharPref = (branch, pref) => branch.getComplexValue(pref, Ci.nsISupportsString).data;
++let setCharPref = (branch, pref, newValue) =>
++{
++  let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
++  str.data = newValue;
++  branch.setComplexValue(pref, Ci.nsISupportsString, str);
++};
++
++let getJSONPref = (branch, pref) => JSON.parse(getCharPref(branch, pref));
++let setJSONPref = (branch, pref, newValue) => setCharPref(branch, pref, JSON.stringify(newValue));
++
 +// Getter/setter functions for difference preference types
 +let typeMap =
 +{
 +  boolean: [getBoolPref, setBoolPref],
 +  number: [getIntPref, setIntPref],
 +  string: [getCharPref, setCharPref],
 +  object: [getJSONPref, setJSONPref]
 +};
 +
- function getIntPref(branch, pref) branch.getIntPref(pref)
- function setIntPref(branch, pref, newValue) branch.setIntPref(pref, newValue)
- 
- function getBoolPref(branch, pref) branch.getBoolPref(pref)
- function setBoolPref(branch, pref, newValue) branch.setBoolPref(pref, newValue)
- 
- function getCharPref(branch, pref) branch.getComplexValue(pref, Ci.nsISupportsString).data
- function setCharPref(branch, pref, newValue)
- {
-   let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
-   str.data = newValue;
-   branch.setComplexValue(pref, Ci.nsISupportsString, str);
- }
- 
- function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref))
- function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stringify(newValue))
- 
 +init();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus-element-hiding-helper.git



More information about the Pkg-mozext-commits mailing list