custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EDrag%20and%20go%20Modoki%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiivX/bJjz/2yX8/9sl/P/bJfz/2yX8/9kjfbnVn35RPyLo0T8oLHn/au6//6puf/+qbn//qm5//6quv/8ma3/bpj0/4e57P+Cte3/grXt/4K17P+Etu3/c6Hz51R9+0T/jKRE/7TC5//O1P//ztT//87U///O1P//0db//qq6/2yW9v9/sPH/d6vw/3ir8P94q/H/e63x/3Ke9udUfftE/4ujRP6wwOf/xc///8PN///Dzf//w83//8fQ//6ouP9tlPj/ear1/22i9P9uovP/bqLz/3Om9P9znfjnVH37RP+Lo0T/rr7n/7zK//+5x///ucf//7nH///AzP/+pbf/bZT5/3Sk9/9kmvf/ZZr2/2Wa9v9rn/f/c5z551R9+0T/i6NE/6u+5/+0xf//sML//7DC//+xwv//ucj//qO3/3CV+v94pfr/Z5n6/2eZ+v9nmfr/b5/7/3ed++dWfvtE/oykRP6sv+f+scX//63B//+twf//rcH//7bJ//6kuP9zlfrnfaH753ie++d4nvvneJ7753uf++d4mvrRaYz4PfuYrT38p7rR/q2/5/+svuf+rL7n/qu+5/+uwef9orbnZ4j4RFZ9+URVfflEVX35RFV9+URYfvlEaoz4PX+c9hL5p7cS+5itPf6MpET/i6RE/4ukRP+LpET/i6RE/JWrRAeqiUQHqohEB6qIRAeqiEQHqYhEB6mJRAiqiz0JqosS1qx5Etypaz3gpWBE4aVfROGlX0ThpV9E4aVfRNynaEQqt53nVcez51LHsudSx7LnUsay51PGs+c1u6TRCKqMPdypaz3nuHzR8MKE5/HCg+fxwoPn8cKD5/HDhefltHbnQL6p/4TYzv991sr/fdbK/33Wyv9/1sz/U8Wz5wepi0TgpWBE8MOG5/3Vmv/+1Jj//tSY//7UmP/+1p3/7bt8/z69qP9608f/btDC/27Qwv9u0ML/c9HE/1DEsOcHqItE4KVfRPDChef+0ZT//9CR///Qkf//0JH//9SY/+27fP89vKf/cc/B/2LKu/9jyrv/Y8q7/2nMvv9Pwq/nB6iKROClX0TwwYbn/s6P///Miv//zIv//8yK///Rlf/tunz/Pbyl/2fKu/9Uw7L/VMOz/1TDs/9dxrb/TsGt5wioikTgpF9E8MGG5/7Kif//yIP//8iD///Hg///zpH/7bp9/0K9pv93zsD/Zci4/2XIuP9lyLj/bcq8/1XDr+cIqItE4KVfRPDEjOf+0Jb//86Q//7OkP/+zZD//9Oc/+28gf83uaL/Rb6o/0G8pv9BvKb/Qbym/0K8pv87uqPnHrCVROKtb0TouH/n7byB/+27gP/tu4D/7buA/+29g//nt37/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//CB%20Drag%20and%20go%20Modoki...................................................................%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%20%u0441%u0432%u043E%u0438%20%u0436%u0435%u0441%u0442%u0438%20%u043C%u044B%u0448%u0438......................................%0Avar%20DragNGo%20%3D%20%7B%0A%20%20%0A%20%20GESTURES%3A%20%5B%0A%20%20//%u0424%u0430%u0439%u043B%u044B......................................%0A%20%20%20%20%7Bdir%3A%27%27%2C%20modifier%3A%27%27%2Cname%3A%27Fire%20Fill%20Path%27%2Cobj%3A%27file%27%7D%2C%0A%20%20%20%20%7Bdir%3A%27%27%2C%20modifier%3A%27UL%27%2Cname%3A%27Xpi.%20instal%27%2Cobj%3A%27file%27%7D%2C%0A%20%20%20%20%7Bdir%3A%27%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27file%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tab%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0438%2C%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20textlink%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tab%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0442%u0435%u043A%u0441%u0442%u0430%28Google%29%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.searchWithEngine%28info.texts%2C%20%5B%27Google%27%5D%2C%20%27tab%27%29%3B%7D%7D%2C%0A%0A%20%20%0A%20%20//%u0421%u0441%u044B%u043B%u043A%u0438......................................%0A%20%20%20%20%7Bdir%3A%27%27%2C%20%20modifier%3A%27%27%2Cname%3A%27%u0423%u0441%u0442%u0430%u043D%u0430%u0432%u0438%u0442%u044C%20xpi/jar%27%2Cobj%3A%27xpi%2Cjar%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.installXpi%28info.urls%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27U%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20textlink%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tab%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27D%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0444%u043E%u043D%u043E%u0432%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20textlink%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tabshifted%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27L%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20textlink%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27current%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%0A%20%20%20%0A%20%20%20//%u0418%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F................................%0A%20%20%20%20%7Bdir%3A%27U%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27image%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tab%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27D%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0444%u043E%u043D%u043E%u0432%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27image%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27tabshifted%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%20%20%7Bdir%3A%27L%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27image%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openUrls%28info.urls%2C%20%27current%27%2C%20null%29%3B%7D%7D%2C%0A%20%20%0A%20%20%20%20%20%20%20%20%0A%0A%20%20%20//%u0421%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C................................%0A%20%20%20//%7Bdir%3A%27UD%27%2C%20modifier%3A%27%27%2Cname%3A%27%u0421%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2Cobj%3A%27text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7BCc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.getService%28Ci.nsIClipboardHelper%29.copyString%28info.texts%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20//%7Bdir%3A%27DR%27%2C%20modifier%3A%27%27%2Cname%3A%27%u0421%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%27%2Cobj%3A%27link%2C%20text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.copyToSearchBar%28info.texts%5B0%5D.replace%28/%5Cn/mg%2C%27%20%27%29%29%3B%7D%7D%2C%0A%20%20%20//%7Bdir%3A%27DR%27%2C%20modifier%3A%27ctrl%27%2Cname%3A%27%u0421%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%27%2Cobj%3A%27link%2C%20text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.appendToSearchBar%28info.texts%5B0%5D.replace%28/%5Cn/mg%2C%27%20%27%29%29%3B%7D%7D%2C%0A%20%20%20//%7Bdir%3A%27URL%27%2Cmodifier%3A%27%27%2Cname%3A%27%u0421%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u043A%u0430%u043A%20%u0442%u0435%u043A%u0441%u0442%27%2Cobj%3A%27link%2C%20text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7BCc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.getService%28Ci.nsIClipboardHelper%29.copyString%28info.texts%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27UR%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%27%2Cobj%3A%27link%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7BCc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.getService%28Ci.nsIClipboardHelper%29.copyString%28info.urls%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20%0A%0A%20%20%20//%u0421%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435...................................%0A%20%20%20%20%20%7Bdir%3A%27UL%27%2C%20modifier%3A%27%27%2Cname%3A%27%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%27%2Cobj%3A%27image%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.saveAs%28info.urls%5B0%5D%2C%20info.fname%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27UL%27%2C%20modifier%3A%27%27%2Cname%3A%27%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%27%2Cobj%3A%27link%27%20%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.saveAs%28info.urls%5B0%5D%2C%20info.fname%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27UL%27%2C%20modifier%3A%27%27%2Cname%3A%27%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%27%2Cobj%3A%27text%27%2C%20cmd%3Afunction%28self%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20saveURL%28%22data%3Atext/plain%2C%22%20+%20encodeURIComponent%28getBrowser%28%29.currentURI.spec%20+%20%28%22%5Cr%5Cn%5Cr%5Cn%22%20+%20document.commandDispatcher.focusedWindow.getSelection%28%29%29%29%2C%20getBrowser%28%29.selectedTab.label%20+%20%22.txt%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%u041F%u043E%u0438%u0441%u043A........................................%0A%20%20%20%20%20%7Bdir%3A%27R%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20ConQuery%27%2Cobj%3A%27text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.openConQueryPopup%28event%29%3B%7D%7D%2C%0A%20%20%20//%7Bdir%3A%27UL%27%2Cmodifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0432%20google%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.searchWithEngine%28info.texts%2C%20%5B%27Google%27%5D%2C%20%27current%27%29%3B%7D%7D%2C%0A%20%20%20//%7Bdir%3A%27DL%27%2Cmodifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0432%20google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.searchWithEngine%28info.texts%2C%20%5B%27Google%27%5D%2C%20%27tab%27%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27U%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.searchWithEngine%28info.texts%2C%20%5B%27CURRENT%27%5D%2C%20%27tab%27%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27D%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0444%u043E%u043D%u043E%u0432%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.searchWithEngine%28info.texts%2C%20%5B%27CURRENT%27%5D%2C%20%27tabshifted%27%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27L%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%2Cobj%3A%27link%2C%20text%27%2Ccmd%3Afunction%28self%2Cevent%2Cinfo%29%7Bself.findWord%28info.texts%5B0%5D%29%3B%7D%7D%2C%0A%20%20%20%20%20%7Bdir%3A%27R%27%2C%20modifier%3A%27%27%2Cname%3A%27%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%20%u0432%20google%27%2Cobj%3A%27link%2C%20text%27%2C%20cmd%3Afunction%28self%2Cevent%2Cinfo%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20text%20%3D%20content.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20var%20url%20%3D%20doc.%20location.%20hostname%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20var%20url%20%3D%20%22%22%3B%20%7D%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com/search%3Fas_q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20url%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28searchUrl%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%0A%20%20%5D%2C%20%0A%0A%0A%20%20%20RESET_GESTURE%3A%20%22RDLU%22%2C%0A%0A%0A%20%20dataRegExp%20%20%20%20%20%3A%20/%5E%5Cs*%28.*%29%5Cs*%24/m%2C%0A%20%20mdataRegExp%20%20%20%20%3A%20/%28%5E%5Cs*%28.*%29%5Cs*%5Cn%3F%29*%24/m%2C%0A%20%20linkRegExp%20%20%20%20%20%3A%20/%28%28%28h%3Ft%29%3Ftps%3F%7Ch..ps%3F%7Cftp%7C%28%28%5Cuff48%29%3F%5Cuff54%29%3F%5Cuff54%5Cuff50%28%5Cuff53%29%3F%7C%5Cuff48..%5Cuff50%28%5Cuff53%29%3F%7C%5Cuff46%5Cuff54%5Cuff50%29%28%3A%5C/%5C/%7C%5Cuff1a%5C/%5C/%7C%3A%5Cuff0f%5Cuff0f%7C%5Cuff1a%5Cuff0f%5Cuff0f%29%5B-_.%21%7E*%27%28%29%7Ca-zA-Z0-9%3B%3A%5C/%3F%2C@%26%3D+%24%25%23%5C%5B%5C%5D%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff08%5Cuff09%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff1a%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5Cuff3b%5Cuff3d%5D*%5B-_.%21%7E*%29%7Ca-zA-Z0-9%3B%3A%5C/%3F@%26%3D+%24%25%23%5C%5B%5C%5D%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5Cuff3b%5Cuff3d%5D+%29/i%2C%0A%20%20localLinkRegExp%3A%20/%28file%7Clocalhost%29%3A%5C/%5C/.+/i%2C%0A%20%20currentRegExp%20%20%3A%20/%5E%5Cs*%28data%3A%7C%5C%28%3Fjavascript%3A%29/i%2C%0A%20%20xpiLinkRegExp%20%20%3A%20/%28.+%29%5C.%28xpi%7Cjar%29%24/i%2C%0A%20%20imageLinkRegExp%3A%20/%28.+%29%5C.%28png%7Cjpg%7Cjpeg%7Cgif%7Cbmp%29%24/i%2C%0A%0A%20%20get%20ioService%28%29%20%7B%0A%20%20%20%20delete%20this.ioService%3B%0A%20%20%20%20return%20this.ioService%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIIOService%29%3B%0A%20%20%7D%2C%0A%0A%20%20get%20fileHandler%28%29%20%7B%0A%20%20%20%20delete%20this.fileHandler%3B%0A%20%20%20%20return%20this.fileHandler%20%3D%20this.ioService.getProtocolHandler%28%22file%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.QueryInterface%28Ci.nsIFileProtocolHandler%29%3B%0A%20%20%7D%2C%0A%0A%20%20//appPath%u3092params%u3067%u958B%u304F%2C%20params%u306Ftxt%u3067%u7F6E%u304D%u63DB%u3048charset%u306B%u5909%u63DB%u3055%u308C%u308B%0A%20%20launch%3A%20function%20launch%28txt%2C%20appPath%2C%20params%2C%20charset%29%7B%0A%20%20%20%20var%20UI%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%0A%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20UI.charset%20%3D%20charset%3B%0A%0A%20%20%20%20var%20appfile%20%3D%20Cc%5B%27@mozilla.org/file/local%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Ci.nsILocalFile%29%3B%0A%20%20%20%20appfile.initWithPath%28decodeURIComponent%28escape%28appPath%29%29%29%3B%0A%20%20%20%20if%20%28%21appfile.exists%28%29%29%7B%0A%20%20%20%20%20%20alert%28%22Executable%20does%20not%20exist.%22%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20process%20%3D%20Cc%5B%27@mozilla.org/process/util%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Ci.nsIProcess%29%3B%0A%0A%20%20%20%20var%20args%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20for%28var%20i%3D0%2Clen%3Dparams.length%3Bi%3Clen%3Bi++%29%7B%0A%20%20%20%20%20%20if%28params%5Bi%5D%29%7B%0A%20%20%20%20%20%20%20%20args.push%28UI.ConvertFromUnicode%28params%5Bi%5D.replace%28/%25%25URL%25%25/i%2Ctxt%29.replace%28/%25%25SEL%25%25/i%2Ctxt%29%29%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20process.init%28appfile%29%3B%0A%20%20%20%20process.run%28false%2C%20args%2C%20args.length%2C%20%7B%7D%29%3B%0A%20%20%7D%2C%0A%0A%20%20//%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%0A%20%20get%20selection%28%29%20%7B%0A%20%20%20%20var%20targetWindow%20%3D%20this.focusedWindow%3B%0A%20%20%20%20var%20sel%20%3D%20Components.lookupMethod%28targetWindow%2C%20%27getSelection%27%29.call%28targetWindow%29%3B%0A%20%20%20%20if%20%28sel%20%26%26%20%21sel.toString%28%29%29%20%7B%0A%20%20%20%20%20%20var%20node%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20if%20%28node%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28%28typeof%20node.mozIsTextField%20%3D%3D%20%27function%27%20%26%26%20node.mozIsTextField%28true%29%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20node.type%20%3D%3D%20%22search%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20node.type%20%3D%3D%20%22text%22%20%7C%7C%20node.type%20%3D%3D%20%22textarea%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%27selectionStart%27%20in%20node%20%26%26%0A%20%20%20%20%20%20%20%20%20%20node.selectionStart%20%21%3D%20node.selectionEnd%29%20%7B%0A%20%20%20%20%20%20%20%20var%20offsetStart%20%3D%20Math.min%28node.selectionStart%2C%20node.selectionEnd%29%3B%0A%20%20%20%20%20%20%20%20var%20offsetEnd%20%20%3D%20Math.max%28node.selectionStart%2C%20node.selectionEnd%29%3B%0A%20%20%20%20%20%20%20%20return%20node.value.substr%28offsetStart%2C%20offsetEnd-offsetStart%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20sel%20%3F%0A%20%20%20%20%20%20sel.toString%28%29%20%3A%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20//%u0443%u0437%u043D%u0430%u0442%u044C%20%u043A%u0442%u043E%20%u043F%u043E%u043B%u0443%u0447%u0438%u043B%20%u0444%u043E%u043A%u0443%u0441%0A%20%20get%20focusedWindow%28%29%20%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20if%20%28%21win%20%7C%7C%20win%20%3D%3D%20window%29%0A%20%20%20%20%20%20win%20%3D%20window.content%3B%0A%20%20%20%20return%20win%3B%0A%20%20%7D%2C%0A%0A%0A%20%20//%u0443%u0437%u043D%u0430%u0442%u044C%20%u0433%u0434%u0435%20searchbar%0A%20%20get%20searchbar%28%29%20%7B%0A%20%20%20%20return%20document.getElementById%28%27searchbar%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20//%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u043F%u043E%u0438%u0441%u043A%u043E%u0432%u0438%u043A%0A%20%20getEngineByName%3A%20function%20getEngineByName%28aEngineName%29%7B%0A%20%20%20%20const%20UI%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%0A%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20UI.charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20const%20nsIBSS%20%3D%20Ci.nsIBrowserSearchService%3B%0A%20%20%20%20const%20searchService%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28nsIBSS%29%3B%0A%20%20%20%20if%20%28aEngineName.toUpperCase%28%29%20%3D%3D%20%22CURRENT%22%29%7B%0A%20%20%20%20%20%20var%20searchbar%20%3D%20this.searchbar%3B%0A%20%20%20%20%20%20if%20%28searchbar%29%20return%20searchbar.currentEngine%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20try%20%7BaEngineName%20%3D%20UI.ConvertToUnicode%28aEngineName%29%7Dcatch%28e%29%7B%7D%0A%20%20%20%20%20%20var%20engine%20%3D%20searchService.getEngineByName%28aEngineName%29%3B%0A%20%20%20%20%20%20if%20%28engine%29%20return%20engine%3B%0A%20%20%20%20%7D%0A%20%20%20%20//Default%0A%20%20%20%20return%20searchService.defaultEngine%3B%0A%20%20%7D%2C%0A%0A%20%20searchWithEngine%3A%20function%20searchWithEngine%28texts%2C%20engines%2C%20where%2C%20addHistoryEntry%29%7B%0A%20%20%20%20var%20text%20%3D%20texts%5B0%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20engines.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20engine%20%3D%20this.getEngineByName%28engines%5Bi%5D%29%3B%0A%20%20%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28text%2C%20null%29%3B%0A%20%20%20%20%20%20if%20%28%21submission%29%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20var%20url%20%3D%20submission.uri.spec%3B%0A%20%20%20%20%20%20if%20%28/tab%7Cwindow/.test%28where%29%20%26%26%20%28%0A%20%20%20%20%20%20%20%20%20%20isTabEmpty%28gBrowser.selectedTab%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20this.currentRegExp.test%28url%29%29%29%0A%20%20%20%20%20%20%20%20where%20%3D%20%27current%27%3B%0A%20%20%20%20%20%20switch%20%28where%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27tab%27%3A%0A%20%20%20%20%20%20%20%20case%20%27tabshifted%27%3A%0A%20%20%20%20%20%20%20%20%20%20var%20loadInBackground%20%3D%20getBoolPref%28%22browser.tabs.loadInBackground%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28loadInBackground%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28where%20%3D%3D%20%27tabshifted%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%20%3D%20%27tab%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28where%20%3D%3D%20%27tab%27%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%20%3D%20%27tabshifted%27%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22TreeStyleTabService%22%20in%20window%29%0A%20%20%20%20%20%20%20%20%20%20%20%20TreeStyleTabService.readyToOpenChildTab%28gBrowser.selectedTab%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20case%20%27current%27%3A%0A%20%20%20%20%20%20%20%20case%20%27window%27%3A%0A%20%20%20%20%20%20%20%20%20%20openLinkIn%28submission.uri.spec%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fromChrome%3Afalse%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20allowThirdPartyFixup%3Afalse%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20postData%3Asubmission.postData%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20charset%3Anull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrerURI%3Anull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20relatedToCurrent%3Atrue%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20where%20%3D%20%27tabshifted%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20//%u043E%u0441%u0442%u0430%u0432%u044C%u0442%u0435%20%u0438%u0441%u0442%u043E%u0440%u0438%u044E%20%u043F%u043E%u0438%u0441%u043A%u0430%0A%20%20%20%20if%20%28addHistoryEntry%29%0A%20%20%20%20%20%20this.searchbardispatchEvent%28text%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20//%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%0A%20%20copyToSearchBar%3A%20function%20copyToSearchBar%28searchText%29%7B%0A%20%20%20%20var%20searchbar%20%3D%20this.searchbar%3B%0A%20%20%20%20if%20%28%21searchbar%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20searchbar.value%20%3D%20searchText%3B%0A%20%20%7D%2C%0A%0A%20%20//%u0434%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u043A%u043E%u043F%u0438%u0438%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u043F%u043E%u0438%u0441%u043A%u0430%0A%20%20appendToSearchBar%3A%20function%20appendToSearchBar%28searchText%29%7B%0A%20%20%20%20var%20searchbar%20%3D%20this.searchbar%3B%0A%20%20%20%20if%20%28%21searchbar%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20searchbar.value%20+%3D%20%28searchbar.value%20%3F%20%22%20%22%20%3A%20%22%22%29%20+%20searchText%3B%0A%20%20%7D%2C%0A%0A%20%20//%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%20+%20%u043F%u043E%u0438%u0441%u043A%28%u0438%u043C%u0438%u0442%u0430%u0446%u0438%u044F%20%u0441%u043E%u0431%u044B%u0442%u0438%u044F%20%22input%22%29%0A%20%20searchBardispatchEvent%3A%20function%20searchBardispatchEvent%28searchText%29%7B%0A%20%20%20%20this.copyToSearchBar%28searchText%29%3B%0A%0A%20%20%20%20var%20event%20%3D%20document.createEvent%28%22UIEvents%22%29%3B%0A%20%20%20%20event.initUIEvent%28%22input%22%2C%20true%2C%20true%2C%20window%2C%200%29%3B%0A%20%20%20%20searchbar.dispatchEvent%28event%29%3B%0A%20%20%20%20if%20%28searchText%29%20%7B%0A%20%20%20%20%20%20searchbar._textbox._formHistSvc%0A%20%20%20%20%20%20%20%20.addEntry%28searchbar._textbox.getAttribute%28%22autocompletesearchparam%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20searchText%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%0A%20%20//%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20Url%0A%20%20openUrls%3A%20function%20openUrls%28urls%2C%20where%2C%20referrer%29%20%7B%0A%20%20%20%20var%20self%20%3D%20this%3B%0A%20%20%20%20var%20doc%20%3D%20null%3B%0A%20%20%20%20if%20%28referrer%29%0A%20%20%20%20%20%20doc%20%3D%20content.document%3B%0A%20%20%20%20urls.forEach%28function%28url%29%7B%0A%20%20%20%20%20%20if%20%28/tab%7Cwindow/.test%28where%29%20%26%26%20%28%0A%20%20%20%20%20%20%20%20%20%20isTabEmpty%28gBrowser.selectedTab%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20self.currentRegExp.test%28url%29%29%29%0A%20%20%20%20%20%20%20%20where%20%3D%20%27current%27%3B%0A%20%20%20%20%20%20switch%20%28where%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27tab%27%3A%0A%20%20%20%20%20%20%20%20case%20%27tabshifted%27%3A%0A%20%20%20%20%20%20%20%20%20%20var%20loadInBackground%20%3D%20getBoolPref%28%22browser.tabs.loadInBackground%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28loadInBackground%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28where%20%3D%3D%20%27tabshifted%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%20%3D%20%27tab%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28where%20%3D%3D%20%27tab%27%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%20%3D%20%27tabshifted%27%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22TreeStyleTabService%22%20in%20window%29%0A%20%20%20%20%20%20%20%20%20%20%20%20TreeStyleTabService.readyToOpenChildTab%28gBrowser.selectedTab%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20case%20%27current%27%3A%0A%20%20%20%20%20%20%20%20case%20%27window%27%3A%0A%20%20%20%20%20%20%20%20%20%20openLinkIn%28url%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20where%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fromChrome%3Afalse%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20allowThirdPartyFixup%3Afalse%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20postData%3Anull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20charset%3Anull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrerURI%3Areferrer%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20relatedToCurrent%3Atrue%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20where%20%3D%20%27tabshifted%27%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20openSaveFileModokiPopup%20%3A%20function%20openSaveFileModokiPopup%28event%29%20%7B%0A%20%20%20%20if%20%28typeof%20saveFolderModoki%20%21%3D%27undefined%27%29%0A%20%20%20%20%20%20saveFolderModoki.showHotMenu%28event.screenX%2C%20event.screenY%29%3B%0A%20%20%7D%2C%0A%0A%20%20openConQueryPopup%3A%20function%20openConQueryPopup%28event%29%20%7B%0A%20%20%20%20if%20%28typeof%20cqrShowHotmenu%20%21%3D%27undefined%27%29%0A%20%20%20%20%20%20cqrShowHotmenu%28null%2C%20event.screenX%2C%20event.screenY%29%3B%0A%20%20%7D%2C%0A%0A%20%20//%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20+%20%u043F%u043E%u0438%u0441%u043A%28%u0438%u043C%u0438%u0442%u0430%u0446%u0438%u044F%20%u0441%u043E%u0431%u044B%u0442%u0438%u044F%20%22input%22%29%0A%20%20findWord%3A%20function%20findWords%28word%29%7B%0A%20%20%20%20var%20findbar%20%3D%20%28typeof%20gFindBar%20%21%3D%20%27undefied%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20gFindBar%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Adocument.getElementById%28%27FindToolbar%27%29%0A%20%20%20%20if%20%28%27onFindAgainCommand%27%20in%20findbar%29%7B%20//fx3%0A%20%20%20%20%20%20if%28findbar.hidden%29%0A%20%20%20%20%20%20%20%20findbar.onFindCommand%28%29%3B%0A%20%20%20%20%20%20findbar._findField.value%20%3D%20word%3B%0A%20%20%20%20%20%20var%20event%20%3D%20document.createEvent%28%22UIEvents%22%29%3B%0A%20%20%20%20%20%20event.initUIEvent%28%22input%22%2C%20true%2C%20false%2C%20window%2C%200%29%3B%0A%20%20%20%20%20%20findbar._findField.dispatchEvent%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20browser_download_useDownloadDir%20%3A%20true%2C%0A%20%20browser_download_folderList%20%3A%200%2C%0A%20%20browser_download_dir%20%3A%20%22%22%2C%0A%0A%20%20setDownloadFolderPath%3A%20function%28path%2C%20skipPrompt%29%20%7B%0A%20%20%20%20this.browser_download_useDownloadDir%20%3D%20this.getPref%28%27browser.download.useDownloadDir%27%2C%20%27bool%27%2C%20true%29%3B%0A%20%20%20%20this.browser_download_folderList%20%3D%20this.getPref%28%27browser.download.folderList%27%2C%20%27int%27%2C%200%29%3B%0A%20%20%20%20this.browser_download_dir%20%3D%20this.getPref%28%27browser.download.dir%27%2C%20%27str%27%2C%20%27%27%29%3B%0A%0A%20%20%20%20this.setPref%28%27browser.download.useDownloadDir%27%2C%20%27bool%27%2C%20%21skipPrompt%29%3B%0A%20%20%20%20this.setPref%28%27browser.download.folderList%27%2C%20%27int%27%2C%202%29%3B%0A%20%20%20%20if%28window.navigator.platform.toLowerCase%28%29.indexOf%28%27win%27%29%3E-1%29%0A%20%20%20%20%20%20path%20%3D%20path.replace%28/%5C//g%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20this.setPref%28%27browser.download.dir%27%2C%20%27str%27%2C%20path%29%3B%0A%20%20%7D%2C%0A%0A%20%20restoreDownloadFolderPath%3A%20function%28%29%20%7B%0A%20%20%20%20this.setPref%28%27browser.download.useDownloadDir%27%2C%20%27bool%27%2C%20this.browser_download_useDownloadDir%29%3B%0A%20%20%20%20this.setPref%28%27browser.download.folderList%27%2C%20%27int%27%2C%20this.browser_download_folderList%29%3B%0A%20%20%20%20this.setPref%28%27browser.download.dir%27%2C%20%27str%27%2C%20this.browser_download_dir%29%3B%0A%20%20%7D%2C%0A%0A%20%20saveLinkToLocal%3A%20function%20saveLinkToLocal%28url%2C%20fname%2C%20fpath%2C%20skipPrompt%29%20%7B%0A%20%20%20%20var%20%20dir%20%3D%20null%3B%0A%20%20%20%20if%20%28%21%21fpath%29%20%7B%0A%20%20%20%20%20%20this.setDownloadFolderPath%28fpath%2C%20skipPrompt%29%3B%0A%20%20%20%20%20%20var%20dnldMgr%20%3D%20Cc%5B%22@mozilla.org/download-manager%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIDownloadManager%29%3B%0A%20%20%20%20%20%20dir%20%3D%20dnldMgr.userDownloadsDirectory%3B%0A%20%20%20%20%20%20this.restoreDownloadFolderPath%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20file%20%3D%20null%3B%0A%20%20%20%20if%20%28%21skipPrompt%29%20%7B%0A%20%20%20%20%20%20var%20nsIFilePicker%20%3D%20Ci.nsIFilePicker%3B%0A%20%20%20%20%20%20var%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20%20%20fp.init%28this.focusedWindow%2C%20%22Select%20a%20File%22%2C%20nsIFilePicker.modeSave%29%3B%0A%20%20%20%20%20%20fp.appendFilters%28nsIFilePicker.filterAll%20%7C%20nsIFilePicker.filterImages%29%3B%0A%20%20%20%20%20%20fp.appendFilters%28nsIFilePicker.filterText%20%7C%20nsIFilePicker.filterHTML%29%3B%0A%20%20%20%20%20%20if%20%28dir%29%0A%20%20%20%20%20%20%20%20fp.displayDirectory%20%3D%20dir%3B%0A%20%20%20%20%20%20fp.defaultString%20%3D%20fname%3B%0A%20%20%20%20%20%20switch%20%28fp.show%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnOK%29%3A%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnReplace%29%3A%0A%20%20%20%20%20%20%20%20%20%20file%20%3D%20fp.file%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnCancel%29%3A%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsILocalFile%29%3B%0A%20%20%20%20%20%20fpath%20%3D%20%28/%5C/%24/.test%28fpath%29%29%20%3F%20fpath+fname%20%3Afpath+%27/%27+fname%3B%0A%20%20%20%20%20%20if%28window.navigator.platform.toLowerCase%28%29.indexOf%28%27win%27%29%3E-1%29%0A%20%20%20%20%20%20%20%20fpath%20%3D%20fpath.replace%28/%5C//g%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20%20%20file.initWithPath%28fpath%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20persist%20%3D%20Cc%5B%22@mozilla.org/embedding/browser/nsWebBrowserPersist%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Ci.nsIWebBrowserPersist%29%3B%0A%20%20%20%20var%20nsIWBPersist%20%3D%20Ci.nsIWebBrowserPersist%3B%0A%20%20%20%20persist.persistFlags%20%3D%20nsIWBPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20nsIWBPersist.PERSIST_FLAGS_FROM_CACHE%3B%0A%0A%20%20%20%20var%20uri%20%3D%20Cc%5B%27@mozilla.org/network/io-service%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIIOService%29.newURI%28url%2C%20null%2C%20null%29%3B%0A%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20//saveURL%28url%2C%20fpath%2C%20null%2C%20false%2C%20skipPrompt%2C%20null%29%3B%0A%20%20%20%20%20%20persist.saveURI%28%20uri%2C%20null%2C%20null%2C%20null%2C%20%22%22%2C%20file%29%3B%0A%20%20%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%20%20%20%20alert%28%27failed%3A%5Cn%27%20+%20ex%29%3B%0A%20%20%20%20%20%20file%20%3D%20null%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20file%3B%20//%20nsILocalFileObject%20or%20null%0A%20%20%7D%2C%0A%0A%20%20saveTextToLocal%3A%20function%20saveTextToLocal%28text%2C%20fpath%2C%20skipPrompt%29%20%7B%0A%20%20%20%20var%20%20dir%20%3D%20null%3B%0A%20%20%20%20if%20%28%21%21fpath%29%20%7B%0A%20%20%20%20%20%20this.setDownloadFolderPath%28fpath%2C%20skipPrompt%29%3B%0A%20%20%20%20%20%20var%20dnldMgr%20%3D%20Cc%5B%22@mozilla.org/download-manager%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIDownloadManager%29%3B%0A%20%20%20%20%20%20dir%20%3D%20dnldMgr.userDownloadsDirectory%3B%0A%20%20%20%20%20%20this.restoreDownloadFolderPath%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20file%20%3D%20null%3B%0A%20%20%20%20if%20%28%21skipPrompt%29%20%7B%0A%20%20%20%20%20%20var%20nsIFilePicker%20%3D%20Ci.nsIFilePicker%3B%0A%20%20%20%20%20%20var%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20%20%20fp.init%28this.focusedWindow%2C%20%22Select%20a%20File%22%2C%20nsIFilePicker.modeSave%29%3B%0A%20%20%20%20%20%20fp.appendFilters%28nsIFilePicker.filterText%20%7C%20nsIFilePicker.filterImages%29%3B%0A%20%20%20%20%20%20fp.appendFilters%28nsIFilePicker.filterHTML%20%7C%20nsIFilePicker.filterAll%29%3B%0A%20%20%20%20%20%20if%20%28dir%29%0A%20%20%20%20%20%20%20%20fp.displayDirectory%20%3D%20dir%3B%0A%20%20%20%20%20%20fp.defaultString%20%3D%20fpath%3B%0A%20%20%20%20%20%20switch%20%28fp.show%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnOK%29%3A%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnReplace%29%3A%0A%20%20%20%20%20%20%20%20%20%20file%20%3D%20fp.file%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%28nsIFilePicker.returnCancel%29%3A%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsILocalFile%29%3B%0A%20%20%20%20%20%20fpath%20%3D%20%28/%5C/%24/.test%28fpath%29%29%20%3F%20fpath+fname%20%3Afpath+%27/%27+fname%3B%0A%20%20%20%20%20%20if%28window.navigator.platform.toLowerCase%28%29.indexOf%28%27win%27%29%3E-1%29%0A%20%20%20%20%20%20%20%20fpath%20%3D%20fpath.replace%28/%5C//g%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20%20%20file.initWithPath%28fpath%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20strm%20%3D%20Cc%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Ci.nsIFileOutputStream%29%3B%0A%20%20%20%20var%20convert%20%3D%20Cc%5B%27@mozilla.org/intl/scriptableunicodeconverter%27%5D%0A%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20convert.charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20text%20%3D%20convert.ConvertFromUnicode%28text%29%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20strm.init%28file%2C%200x02%20%7C%200x08%20%7C%200x20%2C%20parseInt%28664%2C%208%29%2C%200%29%3B%20//%20write%2C%20create%2C%20truncate%0A%20%20%20%20%20%20strm.write%28text%2C%20text.length%29%3B%0A%20%20%20%20%20%20strm.flush%28%29%3B%0A%20%20%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%20%20%20%20alert%28%27failed%3A%5Cn%27%20+%20ex%29%3B%0A%20%20%20%20%20%20file%20%3D%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20strm.close%28%29%3B%0A%0A%20%20%20%20return%20file%3B%20//%20nsILocalFileObject%20or%20null%0A%20%20%7D%2C%0A%0A%20%20saveAs%3A%20function%28aURL%2C%20aFileName%2C%20aReferrer%29%7B%0A%20%20%20%20var%20contentType%20%3D%20this.getContentType%28aURL%29%3B%0A%20%20%20%20if%20%28this.imageLinkRegExp.test%28aURL%29%20%7C%7C%20/%5Eimage%5C//i.test%28contentType%29%29%7B%0A%20%20%20%20%20%20if%20%28/%5Edata%3A/.test%28aURL%29%29%0A%20%20%20%20%20%20%20%20saveImageURL%28aURL%2C%20%22index.png%22%2C%20null%2C%20true%2C%20false%2C%20aReferrer%20%29%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20saveImageURL%28aURL%2C%20null%2C%20null%2C%20false%2C%20false%2C%20aReferrer%20%29%3B%0A%20%20%20%20%7Delse%7B%0A%20%20%20%20%20%20this.saveURL%28aURL%2C%20aFileName%2C%20null%2C%20true%2C%20false%2C%20aReferrer%20%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20//c%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20url%0A%20%20saveURL%3A%20function%20saveURL%28aURL%2C%20aFileName%2C%20aFilePickerTitleKey%2C%20aShouldBypassCache%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aSkipPrompt%2C%20aReferrer%29%7B%0A%20%20%20%20window.saveURL%28aURL%2C%20aFileName%2C%20aFilePickerTitleKey%2C%20aShouldBypassCache%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aSkipPrompt%2C%20aReferrer%29%0A%20%20%7D%2C%0A%0A%20%20//aURL%u306EcontentType%20-%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%u0437%20%u043A%u044D%u0448%u0430%0A%20%20getContentType%3A%20function%28aURL%29%7B%0A%20%20%20%20var%20contentType%20%3D%20null%3B%0A%20%20%20%20//var%20contentDisposition%20%3D%20null%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20var%20imageCache%20%3D%20Cc%5B%22@mozilla.org/image/cache%3B1%22%5D.getService%28imgICache%29%3B%0A%20%20%20%20%20%20var%20props%20%3D%0A%20%20%20%20%20%20%20%20imageCache.findEntryProperties%28makeURI%28aURL%2C%20getCharsetforSave%28null%29%29%29%3B%0A%20%20%20%20%20%20if%20%28props%29%20%7B%0A%20%20%20%20%20%20%20%20contentType%20%3D%20props.get%28%22type%22%2C%20nsISupportsCString%29%3B%0A%20%20%20%20%20%20%20%20//contentDisposition%20%3D%20props.get%28%22content-disposition%22%2C%20nsISupportsCString%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20//%20Failure%20to%20get%20type%20and%20content-disposition%20off%20the%20image%20is%20non-fatal%0A%20%20%20%20%7D%0A%20%20%20%20return%20contentType%3B%0A%20%20%7D%2C%0A%0A%20%20//appPath%u3092params%u3067%u958B%u304F%2C%20params%u306Ftxt%u3067%u7F6E%u304D%u63DB%u3048charset%u306B%u5909%u63DB%u3055%u308C%u308B%0A%20%20launch%3A%20function%20launch%28txt%2C%20appPath%2Cparams%2Ccharset%29%7B%0A%20%20%20%20var%20UI%20%3D%20Components.classes%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%0A%20%20%20%20%20%20%20%20%20%20createInstance%28Components.interfaces.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20UI.charset%20%3D%20charset%3B%0A%0A%20%20%20%20var%20appfile%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20appfile.initWithPath%28decodeURIComponent%28escape%28appPath%29%29%29%3B%0A%20%20%20%20if%20%28%21appfile.exists%28%29%29%7B%0A%20%20%20%20%20%20alert%28%22Executable%20does%20not%20exist.%22%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20process%20%3D%20Components.classes%5B%27@mozilla.org/process/util%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%0A%20%20%20%20var%20args%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20for%28var%20i%3D0%2Clen%3Dparams.length%3Bi%3Clen%3Bi++%29%7B%0A%20%20%20%20%20%20if%28params%5Bi%5D%29%7B%0A%20%20%20%20%20%20%20%20args.push%28UI.ConvertFromUnicode%28params%5Bi%5D.replace%28/%25%25URL%25%25/i%2Ctxt%29.replace%28/%25%25SEL%25%25/i%2Ctxt%29%29%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20process.init%28appfile%29%3B%0A%20%20%20%20process.run%28false%2C%20args%2C%20args.length%2C%20%7B%7D%29%3B%0A%20%20%7D%2C%0A%0A%20%20//%u30D5%u30A1%u30A4%u30EB%u306E%u30D1%u30B9%u3092%u30A4%u30F3%u30D7%u30C3%u30C8%u30D5%u30A3%u30FC%u30EB%u30C9%u306B%u8A18%u5165%0A%20%20putMultipleFilePath%3A%20function%20putMultipleFilePath%28inputElement%2C%20URLs%29%20%7B%0A%20%20%20%20var%20self%20%3D%20this%3B%0A%20%20%20%20var%20multiFile%20%3D%20%5B%5D%3B%0A%20%20%20%20URLs.forEach%28function%28url%29%20%7B%0A%20%20%20%20%20%20var%20path%20%3D%20self.fileHandler.getFileFromURLSpec%28url%29.path%3B%0A%20%20%20%20%20%20//%20%u91CD%u8907%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20var%20flg%20%3D%20false%3B%0A%20%20%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20multiFile.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28multiFile%5Bj%5D%20%3D%3D%20path%29%0A%20%20%20%20%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28%21flg%29%0A%20%20%20%20%20%20%20%20multiFile.push%28path%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20inputElement.mozSetFileNameArray%28multiFile%2C%20multiFile.length%29%3B%0A%20%20%7D%2C%0A%0A%20%20putFilePath%3A%20function%20putFilePath%28inputElement%2C%20url%29%7B%0A%20%20%20%20var%20aFile%20%3D%20this.fileHandler.getFileFromURLSpec%28url%29%3B%0A%20%20%20%20if%20%28%22mozSetFileNameArray%22%20in%20inputElement%29%0A%20%20%20%20%20%20inputElement.mozSetFileNameArray%28%5BaFile.path%5D%2C%201%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20inputElement.value%20%3D%20aFile.path%3B%0A%20%20%7D%2C%0A%0A%20%20//Xpi%u306E%u30A4%u30F3%u30B9%u30C8%u30FC%u30EB%0A%20%20installXpi%3A%20function%20installXpi%28URLs%29%7B%0A%20%20%20%20var%20self%20%3D%20this%3B%0A%20%20%20%20if%20%28typeof%20InstallTrigger%20%21%3D%20%27undefined%27%29%20%7B%0A%20%20%20%20%20%20var%20xpinstallObj%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20URLs.forEach%28function%28url%29%7B%0A%20%20%20%20%20%20%20%20url%20%3D%20self.getDroppedURL_Fixup%28url%29%3B%0A%20%20%20%20%20%20%20%20if%20%28url%20%26%26%20self.xpiLinkRegExp.test%28url%29%29%7B%0A%20%20%20%20%20%20%20%20%20%20var%20name%20%3Durl.match%28self.xpiLinkRegExp%29%5B1%5D%20%7C%7C%20url%3B%0A%20%20%20%20%20%20%20%20%20%20xpinstallObj%5Bname%5D%20%3D%20url%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20InstallTrigger.install%28xpinstallObj%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20xxx%20Firefox4.0b5pre%0A%20%20%20%20%20%20var%20pos%20%3D%200%3B%0A%20%20%20%20%20%20var%20installs%20%3D%20%5B%5D%3B%0A%0A%20%20%20%20%20%20function%20buildNextInstall%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28pos%20%3D%3D%20URLs.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28installs.length%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20AddonManager.installAddonsFromWebpage%28%22application/x-xpinstall%22%2C%20this%2C%20null%2C%20installs%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20AddonManager.getInstallForURL%28URLs%5Bpos++%5D%2C%20function%20%28aInstall%29%20%7Binstalls.push%28aInstall%29%3BbuildNextInstall%28%29%3B%7D%2C%20%22application/x-xpinstall%22%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20buildNextInstall%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20//URL%u306EfixUP%0A%20%20getDroppedURL_Fixup%3A%20function%20getDroppedURL_Fixup%28url%29%20%7B%0A%20%20%20%20if%28%21url%29%20return%20null%3B%0A%20%20%20%20if%20%28/%5Eh%3F.%3F.p%28s%3F%29%3A%28.+%29%24/i.test%28url%29%29%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%22%20+%20RegExp.%241%20+%20%27%3A%27%20+%20RegExp.%242%3B%0A%20%20%20%20%20%20if%28%21RegExp.%242%29%20return%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20URIFixup%20%3D%20Components.classes%5B%27@mozilla.org/docshell/urifixup%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIURIFixup%29%3B%0A%20%20%20%20try%7B%0A%20%20%20%20%20%20url%20%3D%20URIFixup.createFixupURI%28url%2C%20URIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP%20%29.spec%3B%0A%20%20%20%20%20%20//%20valid%20urls%20don%27t%20contain%20spaces%20%27%20%27%3B%20if%20we%20have%20a%20space%20it%0A%20%20%20%20%20%20//%20isn%27t%20a%20valid%20url%2C%20or%20if%20it%27s%20a%20javascript%3A%20or%20data%3A%20url%2C%0A%20%20%20%20%20%20//%20bail%20out%0A%20%20%20%20%20%20if%20%28%21url%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%21url.length%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20url.indexOf%28%22%20%22%2C%200%29%20%21%3D%20-1%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20/%5E%5Cs*javascript%3A/.test%28url%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20/%5E%5Cs*data%3A/.test%28url%29%20%26%26%20%21/%5E%5Cs*data%3Aimage%5C//.test%28url%29%29%0A%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20return%20url%3B%0A%20%20%20%20%7Dcatch%28e%29%7B%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%0A%20%20setStatusMessage%3A%20function%20setStatusMessage%28msg%20%29%20%7B%0A%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20if%20%28%20msg%21%3D%27%27%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20//XULBrowserWindow.setOverLink%28%20msg%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20msg%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%27%27%20%7D%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20catch%28e%29%20%7B%20%20XULBrowserWindow.statusTextField.label%20%3D%20%27%27%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20this._timer%20%29%20clearTimeout%28%20this._timer%20%29%3B%0A%20%20%20%20%20this._timer%20%3D%20setTimeout%28function%28%29%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%27%27%20%7D%2C%20150%20%29%3B%0A%20%20%7D%2C%0A%0A%20%20//pref%u3092%u8AAD%u307F%u8FBC%u307F%0A%20%20getPref%3A%20function%28aPrefString%2C%20aPrefType%2C%20aDefault%29%7B%0A%20%20%20%20var%20xpPref%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefBranch2%29%3B%0A%20%20%20%20try%7B%0A%20%20%20%20%20%20switch%20%28aPrefType%29%7B%0A%20%20%20%20%20%20%20%20case%20%27complex%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getComplexValue%28aPrefString%2C%20Components.interfaces.nsILocalFile%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27str%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getCharPref%28aPrefString%29.toString%28%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27int%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getIntPref%28aPrefString%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27bool%27%3A%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getBoolPref%28aPrefString%29%3B%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7Dcatch%28e%29%7B%0A%20%20%20%20%7D%0A%20%20%20%20return%20aDefault%3B%0A%20%20%7D%2C%0A%20%20//pref%u3092%u66F8%u304D%u8FBC%u307F%0A%20%20setPref%3A%20function%28aPrefString%2C%20aPrefType%2C%20aValue%29%7B%0A%20%20%20%20var%20xpPref%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefBranch2%29%3B%0A%20%20%20%20try%7B%0A%20%20%20%20%20%20switch%20%28aPrefType%29%7B%0A%20%20%20%20%20%20%20%20case%20%27complex%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.setComplexValue%28aPrefString%2C%20Components.interfaces.nsILocalFile%2C%20aValue%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27str%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.setCharPref%28aPrefString%2C%20aValue%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27int%27%3A%0A%20%20%20%20%20%20%20%20%20%20aValue%20%3D%20parseInt%28aValue%29%3B%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.setIntPref%28aPrefString%2C%20aValue%29%3B%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27bool%27%3A%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.setBoolPref%28aPrefString%2C%20aValue%29%3B%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7Dcatch%28e%29%7B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20//%20Gather%20all%20descendent%20text%20under%20given%20document%20node.%0A%20%20gatherTextUnderButNotAlt%3A%20function%28%20root%20%29%20%7B%0A%20%20%20%20var%20text%20%3D%20%22%22%3B%0A%20%20%20%20var%20node%20%3D%20root.firstChild%3B%0A%20%20%20%20var%20depth%20%3D%201%3B%0A%20%20%20%20while%20%28%20node%20%26%26%20depth%20%3E%200%20%29%20%7B%0A%20%20%20%20%20%20//%20See%20if%20this%20node%20is%20text.%0A%20%20%20%20%20%20if%20%28%20node.nodeType%20%3D%3D%20Node.TEXT_NODE%20%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Add%20this%20text%20to%20our%20collection.%0A%20%20%20%20%20%20%20%20text%20+%3D%20%22%20%22%20+%20node.data%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20//%20Find%20next%20node%20to%20test.%0A%20%20%20%20%20%20//%20First%2C%20see%20if%20this%20node%20has%20children.%0A%20%20%20%20%20%20if%20%28%20node.hasChildNodes%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Go%20to%20first%20child.%0A%20%20%20%20%20%20%20%20node%20%3D%20node.firstChild%3B%0A%20%20%20%20%20%20%20%20depth++%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20//%20No%20children%2C%20try%20next%20sibling.%0A%20%20%20%20%20%20%20%20if%20%28%20node.nextSibling%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20node%20%3D%20node.nextSibling%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20//%20Last%20resort%20is%20our%20next%20oldest%20uncle/aunt.%0A%20%20%20%20%20%20%20%20%20%20node%20%3D%20node.parentNode.nextSibling%3B%0A%20%20%20%20%20%20%20%20%20%20depth--%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Strip%20leading%20whitespace.%0A%20%20%20%20text%20%3D%20text.replace%28%20/%5E%5Cs+/%2C%20%22%22%20%29%3B%0A%20%20%20%20//%20Strip%20trailing%20whitespace.%0A%20%20%20%20text%20%3D%20text.replace%28%20/%5Cs+%24/%2C%20%22%22%20%29%3B%0A%20%20%20%20//%20Compress%20remaining%20whitespace.%0A%20%20%20%20text%20%3D%20text.replace%28%20/%5Cs+/g%2C%20%22%20%22%20%29%3B%0A%20%20%20%20return%20text%3B%0A%20%20%7D%2C%0A%0A%20%20getVer%3A%20function%28%29%7B%0A%20%20%20%20var%20info%20%3D%20Cc%5B%22@mozilla.org/xre/app-info%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIXULAppInfo%29%3B%0A%20%20%20%20var%20ver%20%3D%20parseInt%28info.version.substr%280%2C3%29%20*%2010%2C10%29%20/%2010%3B%0A%20%20%20%20return%20ver%3B%0A%20%20%7D%2C%0A%0A%20%20getElementsByXPath%3A%20function%20getNodesFromXPath%28aXPath%2C%20aContextNode%29%20%7B%0A%20%20%20%20const%20XULNS%20%3D%20%27http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%27%3B%0A%20%20%20%20const%20XHTMLNS%20%3D%20%27http%3A//www.w3.org/1999/xhtml%27%3B%0A%20%20%20%20const%20XLinkNS%20%3D%20%27http%3A//www.w3.org/1999/xlink%27%3B%0A%0A%20%20%20%20//%20%u5F15%u6570%u306E%u578B%u30C1%u30A7%u30C3%u30AF%u3002%0A%20%20%20%20if%20%28aXPath%29%20%7B%0A%20%20%20%20%20%20aXPath%20%3D%20String%28aXPath%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20%7B%0A%20%20%20%20%20%20throw%20%27ERROR%3A%20blank%20XPath%20expression%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28aContextNode%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21%28aContextNode%20instanceof%20Node%29%29%0A%20%20%20%20%20%20%20%20%20%20throw%20%27%27%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20throw%20%27ERROR%3A%20invalid%20context%20node%27%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20const%20xmlDoc%20%20%3D%20aContextNode%20%3F%20aContextNode.ownerDocument%20%3A%20document%20%3B%0A%20%20%20%20const%20context%20%3D%20aContextNode%20%7C%7C%20xmlDoc.documentElement%3B%0A%20%20%20%20const%20type%20%20%20%20%3D%20XPathResult.ORDERED_NODE_SNAPSHOT_TYPE%3B%0A%20%20%20%20const%20resolver%20%3D%20%7B%0A%20%20%20%20%20%20lookupNamespaceURI%20%3A%20function%28aPrefix%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20switch%20%28aPrefix%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%27xul%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20XULNS%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%27html%27%3A%0A%20%20%20%20%20%20%20%20%20%20case%20%27xhtml%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20XHTMLNS%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%27xlink%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20XLinkNS%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%27%27%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20var%20expression%20%3D%20xmlDoc.createExpression%28aXPath%2C%20resolver%29%3B%0A%20%20%20%20%20%20var%20result%20%3D%20expression.evaluate%28context%2C%20type%2C%20null%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20snapshotLength%20%3A%200%2C%0A%20%20%20%20%20%20%20%20snapshotItem%20%3A%20function%28%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20arr%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28let%20i%20%3D%200%3B%20i%20%3C%20result.snapshotLength%3B%20i++%29%20%7B%0A%20%20%20%20%20%20arr.push%28result.snapshotItem%28i%29%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20arr%3B%0A%20%20%7D%2C%0A%0A%20%20isParentEditableNode%3A%20function%20isParentEditableNode%28node%29%7B%0A%20%20%20%20//if%20%28Components.lookupMethod%28node.ownerDocument%2C%20%27designMode%27%29.call%28node.ownerDocument%29%20%3D%3D%20%27on%27%29%0A%20%20%20%20//%20%20return%20node%3B%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21node.hasOwnProperty%28%22type%22%29%20%7C%7C%20node.type%20%21%3D%20%22file%22%29%0A%20%20%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28/input%7Ctextarea/.test%28node.localName%29%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20if%20%28node.isContentEditable%20%7C%7C%20node.contentEditable%3D%3D%27true%27%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20//%20%u30D5%u30A1%u30A4%u30EB%u306E%u30C9%u30ED%u30C3%u30D7%u51E6%u7406%0A%20%20//%20%u51E6%u7406%u3059%u308B%u306A%u3089true%2C%20%u3057%u306A%u3044%u306A%u3089false%u3092%u8FD4%u3059%0A%20%20cmdFiles%3A%20function%20cmdFiles%28event%29%20%7B%0A%20%20%20%20var%20dragService%20%3D%20Cc%5B%22@mozilla.org/widget/dragservice%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIDragService%29%3B%0A%20%20%20%20var%20dragSession%20%3D%20dragService.getCurrentSession%28%29%3B%0A%20%20%20%20var%20sourceNode%20%3D%20dragSession.sourceNode%3B%0A%20%20%20%20var%20target%20%3D%20event.target%3B%0A%0A%20%20%20%20var%20urls%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20flavours%20%3D%20%5B%22application/x-moz-file%22%5D%3B%0A%20%20%20%20//%20file%u304B%3F%0A%20%20%20%20if%20%28flavours.some%28function%28type%29%7Breturn%20event.dataTransfer.types.contains%28type%29%3B%7D%29%29%20%7B%0A%20%20%20%20%20%20//%20Setup%20a%20transfer%20item%20to%20retrieve%20the%20file%20data%0A%20%20%20%20%20%20var%20trans%20%3D%20Cc%5B%22@mozilla.org/widget/transferable%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Ci.nsITransferable%29%3B%0A%20%20%20%20%20%20flavours.forEach%28function%20%28flavour%29%20%7B%0A%20%20%20%20%20%20%20%20trans.addDataFlavor%28flavour%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20dragSession.numDropItems%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20var%20uri%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20dragSession.getData%28trans%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20var%20flavor%20%3D%20%7B%7D%2C%20data%20%3D%20%7B%7D%2C%20length%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20trans.getAnyTransferData%28flavor%2C%20data%2C%20length%29%3B%0A%20%20%20%20%20%20%20%20if%20%28data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20file%20%3D%20data.value.QueryInterface%28Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28file%29%0A%20%20%20%20%20%20%20%20%20%20%20%20uri%20%3D%20this.ioService.newFileURI%28file%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20//if%20%28uri%20%26%26%20this.dragDropSecurityCheck%28event%2C%20dragSession%2C%20uri.spec%29%29%0A%20%20%20%20%20%20%20%20%20%20urls.push%28uri.spec%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28urls.length%20%3C%200%29%0A%20%20%20%20%20%20return%20false%3B%3B%0A%0A%20%20%20%20var%20inputElement%20%3D%20null%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20inputElement%20%3D%20target.ownerDocument.elementFromPoint%28event.clientX%2C%20event.clientY%29%3B%0A%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20inputElement%20%3D%20target%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28inputElement%20instanceof%20HTMLInputElement%20%26%26%20inputElement.type%20%3D%3D%20%27file%27%29%20%7B%0A%20%20%20%20%20%20if%20%28/drop/.test%28event.type%29%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.getVer%20%3E%3D%207%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28inputElement.hasAttribute%28%22multiple%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20typeof%20inputElement.mozSetFileNameArray%20%3D%3D%22function%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.putMultipleFilePath%28inputElement%2C%20urls%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.putFilePath%28inputElement%2C%20urls%5B0%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.setStatusMessage%28%27%u30D1%u30B9%u3092%u8A18%u5165%27%2C%200%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20if%20%28this.xpiLinkRegExp.test%28urls%5B0%5D%29%29%20%7B%0A%20%20%20%20%20%20if%20%28/drop/.test%28event.type%29%29%20%7B%0A%20%20%20%20%20%20%20%20this.installXpi%28urls%29%3B%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.setStatusMessage%28%27xpi%u3084jar%u306E%u30A4%u30F3%u30B9%u30C8%u30FC%u30EB%27%2C%200%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20//%20%u30EA%u30F3%u30AF%u3084%u753B%u50CF%u306E%u30EA%u30F3%u30AF%u304B%u3089%u30D5%u30A1%u30A4%u30EB%u540D%u306B%u3059%u308B%u6587%u5B57%u5217%u3092%u5F97%u308B%0A%20%20//%20href%u307E%u305F%u306Fsrc%u5C5E%u6027%u306E%u30D1%u30B9%u3092%u8FD4%u3059%0A%20%20//%20%u4E0A%u8A18%u4EE5%u5916%u306E%u3068%u304D%2C%20%u30EA%u30F3%u30AF%u30C6%u30AD%u30B9%u30C8%u307E%u305F%u306Ftitle%2Calt%u5C5E%u6027%u306E%u6587%u5B57%u5217%u3092%u8FD4%u3059%0A%20%20//%0A%20%20candidateFname%20%3A%20function%28target%2C%20url%29%20%7B%0A%20%20%20%20if%20%28%21target%29%7B%0A%20%20%20%20%20%20var%20text%20%3D%20url%3B%0A%20%20%20%20%20%20if%20%28%21text%20%7C%7C%20text%20%26%26%20%21%28text.match%28/%5CS/%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20if%28text.match%28/.*%5C/%28.+%29%24/%29%29%20text%20%3D%20RegExp.%241%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20text.replace%28/%5B%5C%5C%5C/%3A%5C*%5C%3F%22%3C%3E%5C%7C%5D/g%2C%27%20%27%29%3B%20//%22%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20text%20%3D%20gatherTextUnder%28%20target%20%29%3B%0A%20%20%20%20if%20%28%21text%20%7C%7C%20text%20%26%26%20%21text.match%28/%5CS/%29%29%20%7B%0A%20%20%20%20%20%20text%20%3D%20target.getAttribute%28%22title%22%29%3B%0A%20%20%20%20%20%20if%20%28%21text%20%7C%7C%20%21text.match%28/%5CS/%29%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28target.hasAttribute%28%22alt%22%29%29%7B%0A%20%20%20%20%20%20%20%20%20%20text%20%3D%20target.getAttribute%28%22alt%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20//fx3%0A%20%20%20%20%20%20%20%20%20%20if%28%21%21text%20%26%26%20text.match%28/.*%5C/%28.+%29%24/%29%29%20text%20%3D%20RegExp.%241%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28%21text%20%7C%7C%20%21text.match%28/%5CS/%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%28target.hasAttribute%28%22href%22%29%29%20text%20%3D%20target.href%3B%0A%20%20%20%20%20%20%20%20%20%20if%28target.hasAttribute%28%22src%22%29%29%20text%20%3D%20target.src%3B%0A%20%20%20%20%20%20%20%20%20%20if%28text.match%28/.*%5C/%28.+%29%24/%29%29%20text%20%3D%20RegExp.%241%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20text.replace%28/%5B%5C%5C%5C/%3A%5C*%5C%3F%22%3C%3E%5C%7C%5D/g%2C%27%20%27%29%3B%20//%22%0A%20%20%7D%2C%0A%0A%0A%20%20lastX%20%3A%20-1%2C%0A%20%20lastY%20%3A%20-1%2C%0A%20%20directionChain%20%3A%20%22%22%2C%0A%0A%20%20//%20D%26D%u306E%u65B9%u5411%u3092%u5F97%u308B%0A%20%20getDirection%3A%20function%20getDirection%28event%29%7B%0A%20%20%20%20//%20%u8A8D%u8B58%u3059%u308B%u6700%u5C0F%u306E%u30DE%u30A6%u30B9%u306E%u52D5%u304D%0A%20%20%20%20const%20tolerance%20%3D%2010%3B%0A%20%20%20%20var%20x%20%3D%20event.screenX%3B%0A%20%20%20%20var%20y%20%3D%20event.screenY%3B%0A%0A%20%20%20%20if%20%28this.lastX%20%3C%200%29%20%7B%0A%20%20%20%20%20%20%20%20this.lastX%20%3D%20x%3B%0A%20%20%20%20%20%20%20%20this.lastY%20%3D%20y%3B%0A%20%20%20%20%20%20%20%20return%20this.directionChain%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u76F4%u524D%u306E%u5EA7%u6A19%u3068%u6BD4%u8F03%2C%20%u79FB%u52D5%u8DDD%u96E2%u304C%u6975%u5C0F%u306E%u3068%u304D%u306F%u7121%u8996%u3059%u308B%0A%20%20%20%20var%20distanceX%20%3D%20Math.abs%28x%20-%20this.lastX%29%3B%0A%20%20%20%20var%20distanceY%20%3D%20Math.abs%28y%20-%20this.lastY%29%3B%0A%20%20%20%20if%20%28distanceX%20%3C%20tolerance%20%26%26%20distanceY%20%3C%20tolerance%29%0A%20%20%20%20%20%20return%20this.directionChain%3B%0A%0A%20%20%20%20//%20%u65B9%u5411%u306E%u6C7A%u5B9A%0A%20%20%20%20var%20direction%3B%0A%20%20%20%20if%20%28distanceX%20%3E%20distanceY*2%29%0A%20%20%20%20%20%20%20%20direction%20%3D%20x%20%3C%20this.lastX%20%3F%20%22L%22%20%3A%20%22R%22%3B%0A%20%20%20%20else%20if%20%28distanceX*2%20%3C%20distanceY%29%0A%20%20%20%20%20%20%20%20direction%20%3D%20y%20%3C%20this.lastY%20%3F%20%22U%22%20%3A%20%22D%22%3B%0A%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20this.lastX%20%3D%20x%3B%0A%20%20%20%20%20%20%20%20this.lastY%20%3D%20y%3B%0A%20%20%20%20%20%20%20%20return%20this.directionChain%3B%0A%20%20%20%20%7D%0A%20%20%20%20//%20%u524D%u56DE%u306E%u65B9%u5411%u3068%u6BD4%u8F03%u3057%u3066%u7570%u306A%u308B%u5834%u5408%u306FdirectionChain%u306B%u65B9%u5411%u3092%u8FFD%u52A0%0A%20%20%20%20var%20lastDirection%20%3D%20this.directionChain.charAt%28this.directionChain.length%20-%201%29%3B%0A%20%20%20%20if%20%28direction%20%21%3D%20lastDirection%29%20%7B%0A%20%20%20%20%20%20this.directionChain%20+%3D%20direction%3B%0A%20%20%20%20%7D%0A%20%20%20%20//%20%u4ECA%u56DE%u306E%u4F4D%u7F6E%u3092%u4FDD%u5B58%0A%20%20%20%20this.lastX%20%3D%20x%3B%0A%20%20%20%20this.lastY%20%3D%20y%3B%0A%0A%20%20%20%20//directionChain%u306E%u6700%u5F8C%u304C%20RDLU%20%u306A%u3089directionChain%u3092%u30EA%u30BB%u30C3%u30C8%u3059%u308B%0A%20%20%20%20if%28new%20RegExp%28%27.+%27%20+%20this.RESET_GESTURE%2C%27%27%29.test%28this.directionChain%29%29%20%7B%0A%20%20%20%20%20%20this.directionChain%20%3D%27%27%3B%0A%20%20%20%20%20%20this.setStatusMessage%28%27%27%2C%200%29%3B%0A%20%20%20%20%20%20return%20this.directionChain%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20this.directionChain%3B%0A%20%20%7D%2C%0A%0A%20%20dragstart%3A%20function%20dragstart%28event%29%7B%0A%20%20%20%20//%20%u5EA7%u6A19%u3092%u521D%u671F%u5316%0A%20%20%20%20this.lastX%20%3D%20event.screenX%3B%0A%20%20%20%20this.lastY%20%3D%20event.screenY%3B%0A%20%20%20%20//%20%u30C9%u30E9%u30C3%u30B0%u65B9%u5411%u3092%u521D%u671F%u5316%0A%20%20%20%20this.directionChain%20%3D%20%22%22%3B%0A%0A%20%20%20%20//%20%u8EE2%u9001%u30C7%u30FC%u30BF%u3092%u30BB%u30C3%u30C8%u3059%u308B%0A%20%20%20%20if%20%28event.originalTarget%20instanceof%20HTMLImageElement%29%20%7B%0A%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22application/x-moz-node%22%2C%20event.originalTarget%20%2C%200%29%3B%0A%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22text/x-moz-url%22%2C%20event.originalTarget.src+%22%5Cn%22+event.originalTarget.src%20%2C0%29%3B%0A%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22text/uri-list%22%2C%20event.originalTarget.src%20%2C0%29%3B%0A%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22text/plain%22%2C%20event.originalTarget.src%20%2C0%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20//%20xxx%20Bug%20475045%20Can%27t%20drag%20unlinkified%20URL%20to%20bookmarks%20toolbar%20%28regression%20from%20Firefox%203%29%0A%20%20%20%20if%20%28event.originalTarget%20instanceof%20Text%29%20%7B%0A%20%20%20%20%20%20var%20targetWindow%20%3D%20event.originalTarget.ownerDocument.defaultView%3B%0A%20%20%20%20%20%20var%20str%20%3D%20targetWindow.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20%20str%20%3D%20str.match%28new%20RegExp%28this.linkRegExp.source%2C%20%22ig%22%29%29%3B%0A%20%20%20%20%20%20if%20%28str%29%20%7B%0A%20%20%20%20%20%20%20%20arr%20%3D%20str.toString%28%29.split%28%22%2C%22%29%3B%0A%20%20%20%20%20%20%20%20var%20j%20%3D%200%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20arr.length%3B%20i++%29%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21arr%5Bi%5D%29%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28arr%5Bi%5D.match%28this.linkRegExp%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20uri%20%3D%20makeURI%28RegExp.%241%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22text/x-moz-url%22%2C%20uri.spec%20+%20%22%5Cn%22%20+%20uri.spec%2C%20j%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20j++%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28ex%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20xxx%20Bug%20703514%20-%20can%27t%20drag%20bookmarklet%20to%20toolbar%20%20%28regression%20from%20Firefox%204%29%0A%20%20%20%20if%20%28event.originalTarget%20instanceof%20HTMLAnchorElement%29%20%7B%0A%20%20%20%20%20%20var%20href%20%3D%20event.originalTarget.href%3B%0A%20%20%20%20%20%20if%20%28/%5Ejavascript%3A/.test%28href%29%29%20%7B%0A%20%20%20%20%20%20%20%20var%20str%20%3D%20gatherTextUnder%28event.originalTarget%29%3B%0A%20%20%20%20%20%20%20%20event.dataTransfer.mozSetDataAt%28%22text/x-moz-url%22%2C%20href%20+%20%22%5Cn%22%20+%20str%2C%200%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20getSupportedFlavoursForNode%3A%20function%20%28node%29%7B%0A%20%20%20%20if%20%28node%20instanceof%20HTMLInputElement%20%26%26%20node.type%20%3D%3D%20%22file%22%29%20%7B%0A%20%20%20%20%20%20return%20%5B%22application/x-moz-file%22%5D%3B%0A%20%20%20%20%7D%20else%20if%20%28node%20instanceof%20HTMLInputElement%20%26%26%20node.type%20%3D%3D%20%22text%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node%20instanceof%20HTMLTextAreaElement%29%20%7B%0A%20%20%20%20%20%20return%20%5B%22text/uri-list%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/html%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/plain%22%5D%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20%5B%22application/x-moz-node%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/x-moz-url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/uri-list%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/html%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text/plain%22%5D%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20//%20%u30AD%u30FC%u30C1%u30A7%u30C3%u30AF%0A%20%20keyCheck%3A%20function%20keyCheck%28event%2C%20GESTURES%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20GESTURES.modifier.replace%28/%5Cs+/g%2C%27%27%29.toLowerCase%28%29.split%28%27%2C%27%29%3B%0A%20%20%20%20var%20flg%20%3D%200%0A%20%20%20%20if%20%28event.altKey%29%0A%20%20%20%20%20%20flg%20+%3D%201%3B%0A%20%20%20%20if%20%28event.shiftKey%29%0A%20%20%20%20%20%20flg%20+%3D%202%3B%0A%20%20%20%20if%20%28event.ctrlKey%20%7C%7C%20event.metaKey%29%0A%20%20%20%20%20%20flg%20+%3D%204%3B%0A%20%20%20%20var%20flg1%20%3D%200%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20keys.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20switch%28keys%5Bi%5D%29%20%7B%0A%20%20%20%20%20%20case%20%27alt%27%3A%0A%20%20%20%20%20%20%20flg1%20+%3D%201%3B%0A%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27shift%27%3A%0A%20%20%20%20%20%20%20flg1%20+%3D%202%3B%0A%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27ctrl%27%3A%0A%20%20%20%20%20%20%20flg1%20+%3D%204%3B%0A%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20%28flg%20%3D%3D%20flg1%29%3B%0A%20%20%7D%2C%0A%0A%20%20dragover%3A%20function%20dragover%28event%29%20%7B%0A%20%20%20%20var%20self%20%3D%20this%3B%0A%20%20%20%20var%20dragService%20%3D%20Cc%5B%22@mozilla.org/widget/dragservice%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIDragService%29%3B%0A%20%20%20%20var%20dragSession%20%3D%20dragService.getCurrentSession%28%29%3B%0A%20%20%20%20var%20sourceNode%20%3D%20dragSession.sourceNode%3B%0A%20%20%20%20var%20target%20%3D%20event.target%3B%0A%20%20%20%20var%20info%3B%0A%20%20%20%20//%204.0%0A%20%20%20%20if%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Aaddons%22%29%7B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u30BF%u30D6%0A%20%20%20%20if%20%28sourceNode%20instanceof%20XULElement%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20//%20D%26D%u306E%u65B9%u5411%0A%20%20%20%20var%20direction%20%3D%20this.getDirection%28event%29%3B%0A%0A%20%20%20%20//%20%u5BFE%u8C61flavour%u304B%3F%0A%20%20%20%20var%20flavours%20%3D%20this.getSupportedFlavoursForNode%28target%29%3B%0A%20%20%20%20var%20supported%20%3D%20flavours.some%28function%28type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20dragSession.isDataFlavorSupported%28type%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20if%20%28%21supported%29%20%7B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//designMode%u306A%u3089%u4F55%u3082%u3057%u306A%u3044%0A%20%20%20%20if%20%28Components.lookupMethod%28target.ownerDocument%2C%20%27designMode%27%29.call%28target.ownerDocument%29%20%3D%3D%20%27on%27%29%20%7B%0A%20%20%20%20%20%20self.setStatusMessage%28%27%27%2C%200%2C%20false%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20//%20input/textarea%u4F55%u3082%u3057%u306A%u3044%u3067%u7F6E%u304F%0A%20%20%20%20if%20%28self.isParentEditableNode%28target%29%29%20%7B%0A%20%20%20%20%20%20self.setStatusMessage%28%27%27%2C%200%2C%20false%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20do%20nothing%20if%20event.defaultPrevented%20%28maybe%20hosted%20d%26d%20by%20web%20page%29%0A%20%20%20%20if%20%28event.defaultPrevented%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20/*%0A%20%20%20%20if%20%28sourceNode%29%20%7B%0A%20%20%20%20%20%20var%20xpath%20%3D%20%27ancestor-or-self%3A%3A*%5B@draggable%3D%22true%22%5D%27%3B%0A%20%20%20%20%20%20var%20elm%20%3D%20this.getElementsByXPath%28xpath%2C%20sourceNode%29%3B%0A%20%20%20%20%20%20if%20%28elm.length%20%3E%200%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20*/%0A%0A%20%20%20%20var%20isSameBrowser%20%3D%20%21%28sourceNode%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28gBrowser%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.getBrowserForDocument%28sourceNode.ownerDocument%29%20%21%3D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.getBrowserForDocument%28event.target.ownerDocument%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%21gBrowser%20%26%26%20sourceNode.ownerDocument%20%21%3D%20event.target.ownerDocument%29%29%3B%0A%0A%20%20%20%20if%20%28%21sourceNode%29%20%7B//%20%u5916%u304B%u3089%0A%20%20%20%20%20%20//%20file%u306E%u30C9%u30ED%u30C3%u30D7%0A%20%20%20%20%20%20if%20%28this.cmdFiles%28event%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20//%20file%u4EE5%u5916%u306E%u30C9%u30ED%u30C3%u30D7%0A%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20self.GESTURES.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20var%20GESTURES%20%3D%20self.GESTURES%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20//%20%u65B9%u5411%u306F%u306A%u3044%u3053%u3068%0A%20%20%20%20%20%20%20%20if%28GESTURES.dir%20%7C%7C%20GESTURES.dir%20%21%3D%20%27%27%20%7C%7C%20%20typeof%20GESTURES.cmd%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20//%20%u30AD%u30FC%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20%20%20if%20%28%21self.keyCheck%28event%2C%20GESTURES%29%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20%20%20//%20cmd%20%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20%20%20var%20obj%20%3D%20GESTURES.obj.replace%28/%5Cs+/g%2C%27%27%29.toLowerCase%28%29.split%28%27%2C%27%29%3B%0A%20%20%20%20%20%20%20%20info%20%3D%20self.getDragObject%28event%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20if%20%28info%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/drop/.test%28event.type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GESTURES.cmd%28self%2C%20event%2C%20info%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20self.setStatusMessage%28GESTURES.name%2C%200%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%20else%20if%20%28sourceNode%20%26%26%20%21isSameBrowser%29%20%7B%20//%u5225%u30D6%u30E9%u30A6%u30B6%u304B%u3089%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20self.GESTURES.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20var%20GESTURES%20%3D%20self.GESTURES%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20//%20%u65B9%u5411%u306F%u306A%u3044%u3053%u3068%0A%20%20%20%20%20%20%20%20if%28GESTURES.dir%20%7C%7C%20GESTURES.dir%20%21%3D%20%27%27%20%7C%7C%20typeof%20GESTURES.cmd%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20//%20%u30AD%u30FC%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20%20%20if%20%28%21self.keyCheck%28event%2C%20GESTURES%29%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20%20%20//%20cmd%20%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20%20%20var%20obj%20%3D%20GESTURES.obj.replace%28/%5Cs+/g%2C%27%27%29.toLowerCase%28%29.split%28%27%2C%27%29%3B%0A%20%20%20%20%20%20%20%20info%20%3D%20self.getDragObject%28event%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20if%20%28info%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/drop/.test%28event.type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GESTURES.cmd%28self%2C%20event%2C%20info%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20self.setStatusMessage%28GESTURES.name%2C%200%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u540C%u3058%u30D6%u30E9%u30A6%u30B6%u5185%u304B%u3089%0A%20%20%20%20//%20input/textarea%u4F55%u3082%u3057%u306A%u3044%u3067%u7F6E%u304F%0A%20%20%20%20if%20%28target%20instanceof%20HTMLInputElement%20%7C%7C%20target%20instanceof%20HTMLTextAreaElement%29%20%7B%0A%20%20%20%20%20%20self.setStatusMessage%28%27%27%2C%200%2C%20false%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20self.GESTURES.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20GESTURES%20%3D%20self.GESTURES%5Bi%5D%3B%0A%20%20%20%20%20%20//%20%u65B9%u5411%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20if%28%21GESTURES.dir%20%7C%7C%20GESTURES.dir%20%3D%3D%20%27%27%20%7C%7C%20direction%20%21%3D%20GESTURES.dir%20%7C%7C%0A%20%20%20%20%20%20%20%20%20typeof%20GESTURES.cmd%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20%u30AD%u30FC%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20if%20%28%21self.keyCheck%28event%2C%20GESTURES%29%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20//%20cmd%20%u30C1%u30A7%u30C3%u30AF%0A%20%20%20%20%20%20var%20obj%20%3D%20GESTURES.obj.replace%28/%5Cs+/g%2C%27%27%29.toLowerCase%28%29.split%28%27%2C%27%29%3B%0A%20%20%20%20%20%20info%20%3D%20self.getDragObject%28event%2C%20obj%29%3B%0A%20%20%20%20%20%20if%20%28info%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28/drop/.test%28event.type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20GESTURES.cmd%28self%2C%20event%2C%20info%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20self.setStatusMessage%28GESTURES.name%2C%200%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20dragSession.canDrop%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%20//%20GESTURES%0A%20%20%20%20if%20%28%21dragSession.canDrop%29%20%7B%0A%20%20%20%20%20%20self.setStatusMessage%28%27%u041D%u0435%u0438%u0437%u0432%u0435%u0441%u0442%u043D%u044B%u0439%20%u0436%u0435%u0441%u0442%27%2C%200%2C%20false%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20getDragObject%3A%20function%20getDragObject%28event%2C%20objcets%29%20%7B%0A%20%20%20%20var%20dragService%20%3D%20Cc%5B%22@mozilla.org/widget/dragservice%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIDragService%29%3B%0A%20%20%20%20var%20dragSession%20%3D%20dragService.getCurrentSession%28%29%3B%0A%20%20%20%20var%20sourceNode%20%3D%20dragSession.sourceNode%3B%0A%20%20%20%20var%20info%20%3D%20%7Burls%3A%5B%5D%2C%20texts%3A%5B%5D%2C%20nodes%3A%5B%5D%2C%20files%3A%5B%5D%2C%20fname%3A%5B%5D%7D%3B%0A%0A%20%20%20%20var%20self%20%3D%20this%3B%0A%20%20%20%20var%20data%20%3D%20null%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20objcets.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20%20obj%20%3D%20objcets%5Bi%5D%0A%20%20self.debug%28obj%29%3B%0A%20%20%20%20%20%20switch%20%28obj%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27xpi%27%3A%0A%20%20%20%20%20%20%20%20case%20%27jar%27%3A%0A%20%20%20%20%20%20%20%20%20%20data%20%3D%20sourceNode%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28data%20instanceof%20HTMLAnchorElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20data.href%3B//%20self.getDroppedURL_Fixup%28data.href%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20baseURI%20%3D%20self.ioService.newURI%28data.ownerDocument.documentURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20self.ioService.newURI%28url%2C%20null%2C%20baseURI%29.spec%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21self.xpiLinkRegExp.test%28url%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url%20%26%26%20self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28gatherTextUnder%28data%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28data%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28data%2C%20url%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.sourcenode%20%3D%20data%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%27file%27%3A%0A%20%20%20%20%20%20%20%20%20%20var%20supportedTypes%20%3D%20%5B%22application/x-moz-file%22%5D%3B%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20dragSession.numDropItems%3B%20j++%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28event.dataTransfer.types.contains%28supportedTypes%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20event.dataTransfer.mozGetDataAt%28supportedTypes%2C%20j%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28data%20instanceof%20Components.interfaces.nsIFile%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20file%20%3D%20data%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28file%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20uri%20%3D%20self.ioService.newFileURI%28file%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20uri.spec%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28uri.spec%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28uri.spec%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28file%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20uri.spec%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%27link%27%3A%0A%20%20%20%20%20%20%20%20%20%20data%20%3D%20sourceNode%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28data%20instanceof%20HTMLAnchorElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20data.href%3B//%20self.getDroppedURL_Fixup%28data.href%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20baseURI%20%3D%20self.ioService.newURI%28data.ownerDocument.documentURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20self.ioService.newURI%28url%2C%20null%2C%20baseURI%29.spec%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url%20%26%26%20self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28gatherTextUnder%28data%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28data%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28data%2C%20url%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.sourcenode%20%3D%20data%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%27image%27%3A%0A%20%20%20%20%20%20%20%20%20%20data%20%3D%20self.getElementsByXPath%28%27descendant-or-self%3A%3Aimg%27%2C%20sourceNode%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28data.length%20%3C%201%29%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20data%5Bdata.length%20-%201%5D%3B%20%20//%0A%20%20%20%20%20%20%20%20%20%20if%20%28node%20instanceof%20HTMLImageElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20node.getAttribute%28%27src%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20baseURI%20%3D%20self.ioService.newURI%28node.ownerDocument.documentURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20self.ioService.newURI%28url%2C%20null%2C%20baseURI%29.spec%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url%20%26%26%20self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20title%20%3D%20url%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28node.hasAttribute%28%27title%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%20%3D%20node.getAttribute%28%27title%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20%28node.hasAttribute%28%27alt%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%20%3D%20node.getAttribute%28%27alt%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28title%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28node%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28node%2C%20url%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.sourcenode%20%3D%20node%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%27textlink%27%3A%0A%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20sourceNode%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28node%20%26%26%20%21%28node%20instanceof%20Text%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28node%20%26%26%20%28node%20instanceof%20Text%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20anc%20%3D%20node.ownerDocument.evaluate%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27ancestor-or-self%3A%3A*%5Blocal-name%28%29%3D%22a%22%5D%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20XPathResult.FIRST_ORDERED_NODE_TYPE%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20null%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29.singleNodeValue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28anc%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20supportedTypes%20%3D%20%5B%22text/x-moz-url%22%2C%20%22text/plain%22%5D%3B%0A%20%20%20%20%20%20%20%20%20%20for%20each%20%28var%20type%20in%20supportedTypes%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28event.dataTransfer.types.contains%28type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%20%3D%20event.dataTransfer.getData%28type%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28/%5Efile%3A/.test%28data%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28self.linkRegExp.test%28data%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20data.match%28self.linkRegExp%29%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20self.getDroppedURL_Fixup%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url.trim%28%29%20%26%26%20self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20url%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20%28self.localLinkRegExp.test%28data%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20data.match%28self.localLinkRegExp%29%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20self.getDroppedURL_Fixup%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url.trim%28%29%20%26%26%20self.dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20url%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%27text%27%3A%0A%20%20%20%20%20%20%20%20%20%20if%20%28self.RESTRICT_SELECTED_TEXT%20%26%26%20sourceNode%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20sourceNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20//if%20%28%21%28node%20instanceof%20Text%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20//%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20targetWindow%20%3D%20node.ownerDocument.defaultView%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20targetWindow.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28data.trim%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28data%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20data%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20supportedTypes%20%3D%20%5B%22text/plain%22%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20each%20%28var%20type%20in%20supportedTypes%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28event.dataTransfer.types.contains%28type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%20%3D%20event.dataTransfer.getData%28type%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21data.trim%28%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28data%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20data%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20%28%21self.RESTRICT_SELECTED_TEXT%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%21sourceNode%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20supportedTypes%20%3D%20%5B%22text/plain%22%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20each%20%28var%20type%20in%20supportedTypes%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28event.dataTransfer.types.contains%28type%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%20%3D%20event.dataTransfer.getData%28type%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21data.trim%28%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.urls.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.texts.push%28data%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.nodes.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.files.push%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20info.fname.push%28self.candidateFname%28null%2C%20data%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28info.urls.length%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20return%20info%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20dragDropSecurityCheck%3A%20function%20dragDropSecurityCheck%28event%2C%20dragSession%2C%20url%29%20%7B%0A%20%20%20%20if%20%28%21url%29%0A%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20//%20need%20to%20do%20a%20security%20check%20to%20make%0A%20%20%20%20//%20sure%20the%20source%20document%20can%20load%20the%20dropped%20URI.%0A%20%20%20%20url%20%3D%20url.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29%3B%0A%0A%20%20%20%20if%20%28url.indexOf%28%27chrome%3A//%27%29%20%3D%3D%200%20%7C%7C%20url.indexOf%28%27file%3A//%27%29%20%3D%3D%200%29%0A%20%20%20%20%20%20return%20url%3B%0A%0A%20%20%20%20//%20urlSecurityCheck%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20urlSecurityCheck%28url%2C%20gBrowser.contentPrincipal%2C%20Ci.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20//throw%20%27Drop%20of%20%27%20+%20url%20+%20%27%20denied.%27%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20url%3B%0A%20%20%7D%2C%0A%0A%20%20dragend%3A%20function%20dragend%28event%29%20%7B%0A%20%20%20%20this.lastX%20%3D%20-1%3B%0A%20%20%20%20this.lastY%20%3D%20-1%3B%0A%20%20%20%20this.directionChain%20%3D%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%20handleEvent%28event%29%7B%0A%20%20%20%20switch%20%28event.type%29%20%7B%0A%20%20%20%20%20%20case%20%27dragenter%27%3A%0A%20%20%20%20%20%20case%20%27dragover%27%3A%0A%20%20%20%20%20%20case%20%27drop%27%3A%0A%20%20%20%20%20%20%20%20this.dragover%28event%29%3B%0A%20%20%20%20%20%20%20%20if%20%28event.type%20%3D%3D%20%27%20drop%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.dragend%28event%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27dragend%27%3A%0A%20%20%20%20%20%20%20%20this.dragend%28event%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27dragstart%27%3A%0A%20%20%20%20%20%20%20%20this.dragstart%28event%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27pagehide%27%3A%0A%20%20%20%20%20%20%20%20this.sourcenode%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%27unload%27%3A%0A%20%20%20%20%20%20%20%20this.uninit%28%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20init%3A%20function%28%29%20%7B%0A%20%20%20%20gBrowser.addEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.addEventListener%28%27dragend%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.addEventListener%28%27drop%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.addEventListener%28%27dragover%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.addEventListener%28%27dragenter%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.addEventListener%28%27dragstart%27%2C%20this%2C%20false%29%3B%0A%0A%20%20%20%20//%20xxx%20Bug%20580710%20-%20Drag%26Drop%20onto%20sidebar%20loads%20page%20into%20sidebar%0A%20%20%20%20var%20sidebar%20%3D%20document.getElementById%28%27sidebar%27%29%3B%0A%20%20%20%20if%20%28sidebar%29%0A%20%20%20%20%20%20sidebar.setAttribute%28%27ondrop%27%2C%20%27return%20false%27%29%3B%0A%0A%20%20%20%20//%20xxx%20Bug%20574688%20adon%20bar%0A%20%20%20%20var%20statusbar%20%3D%20document.getElementById%28%22status4evar-status-text%22%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22statusbar-display%22%29%3B%0A%20%20%20%20if%20%28%21statusbar%29%20%7B%0A%20%20%20%20%20%20var%20addonbar%20%3D%20document.getElementById%28%22addon-bar%22%29%3B%0A%20%20%20%20%20%20if%20%28%21addonbar%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20var%20statusbarpanel%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20%20%20%20statusbarpanel.setAttribute%28%22id%22%2C%20%22statusbar-display%22%29%3B%0A%20%20%20%20%20%20statusbarpanel.setAttribute%28%22label%22%2C%20%22%22%29%3B%0A%20%20%20%20%20%20statusbarpanel.setAttribute%28%22flex%22%2C%20%221%22%29%3B%0A%20%20%20%20%20%20statusbar%20%3D%20document.getElementById%28%22status-bar%22%29%0A%20%20%20%20%20%20statusbar%20%3D%20addonbar.insertBefore%28statusbarpanel%2C%20addonbar.firstChild%29%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20closebtn%20%3D%20document.getElementById%28%22addonbar-closebutton%22%29%3B%0A%20%20%20%20var%20spling%20%3D%20%20document.getElementById%28%22addonbar-spring%22%29%3B%0A%20%20%20%20if%20%28closebtn%29%0A%20%20%20%20%20%20closebtn.setAttribute%28%22collapsed%22%2C%20true%29%3B%0A%20%20%20%20if%20%28spling%29%0A%20%20%20%20%20%20spling.setAttribute%28%22collapsed%22%2C%20true%29%3B%0A%20%20%7D%2C%0A%0A%20%20uninit%3A%20function%28%29%20%7B%0A%20%20%20%20gBrowser.removeEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.removeEventListener%28%27dragend%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.removeEventListener%28%27drop%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.removeEventListener%28%27dragover%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.removeEventListener%28%27dragenter%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.removeEventListener%28%27dragstart%27%2C%20this%2C%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20debug%3A%20function%28aMsg%29%7B%0A%20%20%20%20return%3B%0A%0A%20%20%20%20const%20UI%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%0A%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20UI.charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20if%20%28%21aMsg%29%0A%20%20%20%20%20%20aMsg%20%3D%20%27%20%20%27%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20var%20text%20%3D%20UI.ConvertToUnicode%28aMsg%29%0A%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20text%20%3D%20aMsg%3B%0A%20%20%20%20%7D%0A%20%20%20%20Cc%5B%22@mozilla.org/consoleservice%3B1%22%5D%0A%20%20%20%20%20%20.getService%28Ci.nsIConsoleService%29%0A%20%20%20%20%20%20.logStringMessage%28text%29%3B%0A%20%20%7D%0A%7D%3B%0ADragNGo.init%28%29%3B%0AaddDestructor%28function%28%29%20%7B%20DragNGo.uninit%28%29%20%7D%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0Acustombuttons.editButton%28%20document.getElementById%28%20this.id%20%29%20%20%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E