From c50bfa5f85df730a977813ac5bd4dc0007a1fe5d Mon Sep 17 00:00:00 2001 From: nullius Date: Sun, 7 Jan 2018 04:42:39 +0000 Subject: [PATCH] Pull v1.0.10.1 from a.m.o.; change to MIT license - Pull v1.0.10.1 from a.m.o. Source files here included as-is. - Change to MIT license. Closes #6. --- LICENSE.md | 24 +++++--- src/LICENSE.txt | 21 +++++++ src/META-INF/manifest.mf | 52 ++++++++++++++++++ src/META-INF/mozilla.rsa | Bin 0 -> 4196 bytes src/META-INF/mozilla.sf | 4 ++ src/manifest.json | 6 +- src/setwhitelist.html | 16 ++++-- src/setwhitelist.js | 9 ++- src/stop_cf_mitm.js | 115 +++++++++++++++++++++++++++------------ src/style.css | 2 +- 10 files changed, 193 insertions(+), 56 deletions(-) create mode 100644 src/LICENSE.txt create mode 100644 src/META-INF/manifest.mf create mode 100644 src/META-INF/mozilla.rsa create mode 100644 src/META-INF/mozilla.sf diff --git a/LICENSE.md b/LICENSE.md index 418134fb..78663a99 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,11 +1,21 @@ -[Original license](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/license/1.0.0): +# MIT License -# Block Cloudflare MiTM Attack 1.0.0 -# Source Code License -# WTFPL +Copyright (c) 2017–2018 cypherpunk, nullius. All rights reserved. -WTFPL +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: ---- +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -Any modifications by nullius are released to the public domain. Copyright is irrevocably disclaimed on behalf of self, heirs, assigns, etc., etc. In other words, NO LICENSE! The public domain is not a license. I politely request that derivative works either stay in the public domain, or keep a liberal license. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/LICENSE.txt b/src/LICENSE.txt new file mode 100644 index 00000000..f1684134 --- /dev/null +++ b/src/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 cypherpunk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf new file mode 100644 index 00000000..c307b274 --- /dev/null +++ b/src/META-INF/manifest.mf @@ -0,0 +1,52 @@ +Manifest-Version: 1.0 + +Name: LICENSE.txt +Digest-Algorithms: MD5 SHA1 +MD5-Digest: qXb1tNEEzwKzeshtJ1M/kQ== +SHA1-Digest: 03detz1pRNQMPN5Zzrp9QUFgEzI= + +Name: manifest.json +Digest-Algorithms: MD5 SHA1 +MD5-Digest: QnJYk5CRbNCObYHSeZVH6g== +SHA1-Digest: jHusL8aDzwijyyieVxDd93fXaPA= + +Name: setwhitelist.html +Digest-Algorithms: MD5 SHA1 +MD5-Digest: fm+fbvhq6VT6zFDMVOqj0g== +SHA1-Digest: xO/+NXtU9pseGAziYa0dpLb2nKc= + +Name: setwhitelist.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: 5SSypsVZZWyJmmISP3hQIQ== +SHA1-Digest: 3r0rOXaShtVuuvJktGoEIEcj584= + +Name: stop_cf_mitm.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: Aou+XD559L8hukeSmmQ+Zw== +SHA1-Digest: hP9OxIjetlG8v+eU1467GVlY1UI= + +Name: style.css +Digest-Algorithms: MD5 SHA1 +MD5-Digest: qVs2pHeT+noWZ7sQttO/2Q== +SHA1-Digest: TgXktEJyUNImPTbaPF/viYfWcQo= + +Name: icons/icon-16.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: BMpS9q28ylgmlebPGO0HBw== +SHA1-Digest: ejT7934OdR+CRbKWJFoXPSvAo7M= + +Name: icons/icon-32.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: DPnYcEZnUZa6voVAI6nm0w== +SHA1-Digest: CqFkcPOpoKmq7Ly82vbmq/Ouhzs= + +Name: icons/icon-48.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: PVwvbCCjWU+2fJeaUrrwVA== +SHA1-Digest: upats+fdmYeFmAtgvIVwaW8mszA= + +Name: icons/icon-64.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: YVzojmSoYwjhM0m20OOk5A== +SHA1-Digest: sa4ES4gA5mSb0cu9UgGpp/2eh84= + diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa new file mode 100644 index 0000000000000000000000000000000000000000..409df64b00a7f0dc9af0e35c93f51f04165b0973 GIT binary patch literal 4196 zcmds4c|4SD+ct|KCWOX5MibE(?iq}Im+U(!#55QRBYT#Zp+O5-vSd#lOHm>uk}V#D zgpjRxvb0zdvh`9=PrdK=$M@Iw`+mRozx%k)wf!I_ za4wC*9H4O+gFzr1E3gm7h+%_(`574i)?Xx0E)D(ypfPp>G)Pr01PlU$VIZe&UCB^j z|354c>uwUY_4^*|@s|;@Edr z?fas@G{4vTGmDuEtgZQTQ6Su6A$93Cs{idVoA&)`T{7orTFK#-MH z1c;d-GC*ixc81;eEMOWK#Beu;^MMpODc^5{t$&{A{HV0yAip zu7hF|(>S3bV$AU|vMvkpF3qRfS>!}5@Awcj)2>-sBhKV9;o!lHrM#3Iobpb&%kLV4 z*&pl8cHztLJ&&hNFz?>INI3G_&WmQb31?`n+Ec8m{W=p=hy3$#R)hT0KKxmb3`30=h6W_jIP) ziX3J*t0(p=wsYW#(RzlT6}GTKEwx+W{;8d8d+|SE*+ky9kJRbBO0kgHX#G0!moE{u zPA3xwTBG$hEe}7HV2%-Et}HeatUVsqcA%ueORBV0Ut5=Z#bA1oZf+fLRQ2}OeKLn6 zn3u2n9JzgJRr4;S(%i_+p5s{#o1r>F?QvUOm4RL*&+{4WCE9Nk*E9VYL+*NN>|yl0e`oMkh4#i9&LY^2Z8N0@#U|)m9#^+D z&)_JwZxvV$&_(K!Kdm2J;_=mGk;F*HjB+|#)!bn4P?ov0s?p2P3z`%sUFa*Q^`hAD&HtOyU0Wk#Le&Jhp9BnJr?#Jq;Zm@`< zT0P;xt6y4Dc_4{T7_j3#?kRpfv*pW`YWv*oIMpue!Y@>)M#9Yi0<AJ>Y7((6p}kQPrGPM8Xuo6Tm{=op)V_1XV1Dt< z;07Q`etQ0_OU9BzN}oGIq`dP=fncv3Q?Ji4G=q>@xs6?|x_yDJY#IA#tFs(=A^Yp` ztn!gbYyDb7R%loyoppql zj#dv{*7w%Iiw2{}NXV0(@xFl;RN!-S_ctdmUKI>(DZP|@Pb5BSObr?E*vWgT$S8)0 zo+i6vpJLd#H143`_s0`C8;_;2#OoAJJ{`<5u2E2$^B7z7r(Cy= z)!O+hmtSd8+x4#WsxBuEM+?k@%yo{exvshfb|~6dR4GR-WpC@=eWd|yx@S(f+*)<& zqG7XEN_XK$_L<}(k0^ij%9R{Hg|w@|mp`(st4RlFuuXslo%*5Z5Do_L@4E!PE9YT9 zrRo1f&4mG>A8L;9p-}vG^&9(}suMja-&I%+kip60W#sU(_&pWggR+0a|C-b0e^coT;gO> zA2^d?e6I=feDKf}`0Mypt?ZdC;!TxQFe_bN%%JH3gUTjj0Iu9c0<%-pMnP{vN4bXJ zPxGxliy+UiJLC@rUW>~O)>{&K#%E}qCDfMjr1%`=-kb_5s6B2u_Q@?!*+t2FvzA8W zBrlRpm|KNT{VW+Go8#Y)Pn53ZP7OJ&$LFy#N3kgQEQY!wB@x4O=g5nd)v57IYb~St zE@Mw6H0pQy^hV4tN_w|{l4Iz?C?vS*q7FmUir8%+iR6X*=-^7wNv5daZByF-k=}^E zsL~@ZYC6(wpSw_N-A9JDk>O2(gS=)jT-L%-Uu#ug`psm|*Ez~BViUMSm@#s}5=<*T zTh)5jHw?|r8_EYZD?5dblla@zuA!uG5?ni0GJ~M`t z8;B)U=Uxq%vuqvq7xiO*Io%$v^5)8Ai|Xp(`r?|Fb|rr<7LZ9~!gf9;z}L23w78G` znP696Xxfw`>S$>S;qu@gTQrB|hGTggGQpoeev^F#)mcN09Ad^L2p@ajs*43fVAk^a zG>{@d1IYpK-KG)Zf-(XS5a=7gwujhvpP|xP83;#7qvtmu*uL5D{;2A~%0<)NX}T!5Mt!Cg@|Z|isGjaSgo2X`{j z$Rd(tYIPo!dOQ68SrTX<5Fi8F=S0^7(bu&=P^cK8pmYq1PXAvOyQyE+|M^q;T1ZUpXFYtdXIMM3R6x>;wmqj^)TU?0rfubPz z(t)p&*!f#UHwv;VqR)vkf963w7EE8Y`J>>rq(De-7JwYry*sX+S9bOKna`$^Z3Y@0 zt=O7d#lngEPCk69)HP8?SlgF35=Pg~fy^qdZ@!IT>{bp4&qg=-s~u2({pb4dha67H zurIS%YvkirhnCOntwHX5URLWpk)!?sIU)dk{E-^05Xvpr7gp1NeV?)72&$_7Lpd(l zX1}alt^>gP%L74hzdJiX@K=Np$NnF-2SERd zLUFs=al4c;%@2WC#``trhJ*?sUQQ{x{oY%<<^xItGjL?|*Cx!z1yUnqkTu*c{QHh% zD2lDv^34;6Ge$XutaTYW*&Op#O@$utfOIXc8mo+B_$N07?nZ7!;m zD>-`d`U|*vpq*d5pL5%?F!q(F>2-3{cC2alhgryXbZ% zSA;K|wuG;>Mfsz*k|()NF}N7LY(EfCjh)~{hJW3}z$cRO&iQajgsYBj^)UdpriDQQ zS07eA+5IH(&;H!wfuzqg_+fqt9yEwd~VwKXdEO7Uu$?XU~$rEa3i9t4l-+JJ0 z{MQ`&p2Y-3pA4Dkem!ciEXWECrD(HsrJJR#{+@{Kn)lRv@@8$b)7 ejvn$|Gi|JJ6=qwB","storage","activeTab"], +"permissions": ["webRequest","webRequestBlocking","","storage","activeTab","tabs"], "options_ui": { "page": "setwhitelist.html", "browser_style": false @@ -28,4 +28,4 @@ "strict_min_version": "52.0" } } -} +} \ No newline at end of file diff --git a/src/setwhitelist.html b/src/setwhitelist.html index 241e909c..6df15485 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -2,21 +2,25 @@ [Whitelist]
1. Add FQDN or .FQDN you want to ignore. Click "Save".
2. Open new tab and visit whitelisted website.
-(.mozilla.org will allow mozilla.org and *.mozilla.org) +(.mozilla.org will allow mozilla.org and *.mozilla.org)

+
(Add-on will notify you)

[Advanced]
-
-
-

+


+Also detect:
+
+
+
+
When MiTM attempt is detected:

-
+


- + \ No newline at end of file diff --git a/src/setwhitelist.js b/src/setwhitelist.js index f3e46b3a..33df3078 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -17,10 +17,12 @@ browser.storage.local.set({myset_cfwhite: cf_tmpdata});document.querySelector("# //workaround - simplewarn didn't work as expected if ign3p is active if (document.querySelector("#myset_xsimplewarn_1").checked){document.querySelector("#myset_xign3p").checked=false;} //ADVANCED +if (document.querySelector("#myset_xautoclean").checked){browser.storage.local.set({myset_xautoclean: "y"});}else{browser.storage.local.set({myset_xautoclean: "n"});} if (document.querySelector("#myset_xincapsula").checked){browser.storage.local.set({myset_xincapsula: "y"});}else{browser.storage.local.set({myset_xincapsula: "n"});} if (document.querySelector("#myset_xgshield").checked){browser.storage.local.set({myset_xgshield: "y"});}else{browser.storage.local.set({myset_xgshield: "n"});} if (document.querySelector("#myset_xsucuri").checked){browser.storage.local.set({myset_xsucuri: "y"});}else{browser.storage.local.set({myset_xsucuri: "n"});} if (document.querySelector("#myset_xign3p").checked){browser.storage.local.set({myset_xign3p: "y"});}else{browser.storage.local.set({myset_xign3p: "n"});} +if (document.querySelector("#myset_xwhitemark").checked){browser.storage.local.set({myset_xwhitemark: "y"});}else{browser.storage.local.set({myset_xwhitemark: "n"});} //ACTION if (document.querySelector("#myset_xsimplewarn_0").checked){browser.storage.local.set({myset_xsimplewarn:0});} if (document.querySelector("#myset_xsimplewarn_1").checked){browser.storage.local.set({myset_xsimplewarn:1});} @@ -32,18 +34,19 @@ function setCurrentChoice(r){ //WHITELIST document.querySelector("#myset_cfwhite").value = r.myset_cfwhite||""; //ADVANCED +if (r.myset_xautoclean=='y'){document.querySelector("#myset_xautoclean").checked=true;}else{document.querySelector("#myset_xautoclean").checked=false;} if (r.myset_xincapsula=='y'){document.querySelector("#myset_xincapsula").checked=true;}else{document.querySelector("#myset_xincapsula").checked=false;} if (r.myset_xgshield=='y'){document.querySelector("#myset_xgshield").checked=true;}else{document.querySelector("#myset_xgshield").checked=false;} if (r.myset_xsucuri=='y'){document.querySelector("#myset_xsucuri").checked=true;}else{document.querySelector("#myset_xsucuri").checked=false;} if (r.myset_xign3p=='y'){document.querySelector("#myset_xign3p").checked=true;}else{document.querySelector("#myset_xign3p").checked=false;} +if (r.myset_xwhitemark=='y'){document.querySelector("#myset_xwhitemark").checked=true;}else{document.querySelector("#myset_xwhitemark").checked=false;} if (r.myset_xsimplewarn){switch(r.myset_xsimplewarn){ case 1:document.querySelector("#myset_xsimplewarn_1").checked=true;break; case 2:document.querySelector("#myset_xsimplewarn_2").checked=true;break; default:document.querySelector("#myset_xsimplewarn_0").checked=true;break; }}else{document.querySelector("#myset_xsimplewarn_0").checked=true;} } -var getting=browser.storage.local.get(); -getting.then(setCurrentChoice, onError); +var getting=browser.storage.local.get();getting.then(setCurrentChoice,onError); } document.addEventListener("DOMContentLoaded", loadWhitelist); -document.querySelector("form").addEventListener("submit", saveWhitelist); +document.querySelector("form").addEventListener("submit", saveWhitelist); \ No newline at end of file diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index 6aff8ced..2b16e034 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -8,14 +8,19 @@ var cfaddon_isdone=0; var cf_ignore=[]; -var cf_history=[];//used by whitelist-from-warnpage +var cf_history=[]; +var cf_dstarray={}; +var wl_autoclean=0; var stop_incapsula=0; var stop_gshield=0; var stop_sucuri=0; var ign_thirdparty=0; +var do_markwhitelistsite=0; var do_reaction=0; var cfblockscreen=''; var cf_blocked_img='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgAAACwAAAAAAQABAAACAkQBADs='; +var cf_template_blocked='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQo8bGluayBpZD0iZmF2aWNvbiIgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFFQUVCQUFBQUVBSUFCb0JBQUFGZ0FBQUNnQUFBQVFBQUFBSUFBQUFBRUFJQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3prNE9LcE1Ta3E2VUU5UHVsUlRVN3BYVjFlNlcxdGJ1bDFkWGJwYlcxdTZXRmhZdWxWVlZicFRVMU82VUZCUXVreE1UTG90TFMyYkFBQUFPelkwTko3WTNOei92OXpoLzhIZTQvL0Q0ZWIveHVUcC84am02Ly9JNU9uL3grUG8vOGJqNmYvRTRlZi93dC9sLzhIZDQvKy8yZC8vM04vZi94a1pHWVUyTlRXZDJON2UveGVreGY4V3VlRC9GcnJoL3hhNzRmOFVyOVAvSWl3dS95SXNMdjhXczkvL0Y3RGUveGVyM1A4WHB0ci9JSlM2Lzk3ZzRmOFpHUm1DQUFBQVY5SFEwTzkxczd6L0Y4SGoveGJDNC84V3crVC9GTGJWL3lBckxmOGdLeTMvRnJyaC94YTEzLzhYc043L0ZxYlYvNUczdmYreHNiSFVBQUFBUlFBQUFDNW9aMmVWMk43Zi95V3R2LzhYeXViL0Zzcm0veGJKNXY4WnE4Zi9HYXZIL3hiQTQvOFd1K0gvRnJYZi96V2d1Zi9aMmRuL0x5OHZlQUFBQUJ3QUFBQUFBQUFBU3NiRnhkMmd5ODcvS3RUbS94blU2djhXME9qL0ZFSkkveFJDU1A4V3hlWC9Gci9qL3hXdzAvK3N3c1AvazVPVHRnQUFBRG9BQUFBQUFBQUFBQUFBQUNGRlJVVis2ZXZyL3pxMXZ2OHc1UEgvSjkvdi95SWlJdjhpSWlML0Zzcm0veGJFNVA5WHE3bi8xOWZYK0JrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFQcmUydHNuQTN1RC9MTnJqL3kvbzh2OHJLeXYvS3lzci95dmI3djhtdmREL3hNL1AvM2QzZDZBQUFBQTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlViR3h0dDhQRHcrRnJBdy84dTdQUC9ORFEwL3pRME5QOHczZS8vZ0x1Ly84akl5T2dBQUFCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5KMmRuYlRTNCtUL0tkRFYvelE4UFA4MFFFSC9OTDNKLzlYWjJmOVdWbGFMQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0FBQUJYMzkvZjczM0V4djh0NXZIL0xkcnAvNXJCdy8rMnRyYlVBQUFBUlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTG0xdGJaWGY1dWIvTExuRC8wUzd4UC9kM2QzL01URXhlQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkt4OGZIM2JIUDBmKzh6TTMvbDVlWHRnQUFBRG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVEl5TW5hK3ZyN1RycTZ1eVJrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFBQUFSQUFBQUQ0QUFBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOEFBSUFCQUFBQUFBQUFBQUFBQUlBQkFBQ0FBd0FBd0FNQUFPQUhBQURnQndBQThBOEFBUEFQQUFENEh3QUErRDhBQVB3L0FBRCtmd0FBLy84QUFBPT0iPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IS0tQG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX1hLGE6YWN0aXZlLGE6Zm9jdXN7b3V0bGluZTpub25lO2N1cnNvcjpkZWZhdWx0fXVse21hcmdpbjowLjFlbSAwO3BhZGRpbmc6MCAxZW07bGlzdC1zdHlsZTpub25lO31saTpiZWZvcmV7Y29udGVudDoiIjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzExMTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAuMzVlbSAwIDAuMzVlbSAwLjQ1ZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6LTFlbTt0b3A6MWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS8vLS0+PC9zdHlsZT4NCjwvaGVhZD48Ym9keT48ZGl2IGlkPSJlcnJvclBhZ2VDb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPg0KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPg0KPGRpdiBpZD0iZXJyb3JTaG9ydERlc2MiPjxwIGlkPSJlcnJvclNob3J0RGVzY1RleHQiPg0KVGhlIG93bmVyIG9mIHRoaXMgd2Vic2l0ZSBoYXMgY29uZmlndXJlZCB0aGVpciB3ZWJzaXRlIGltcHJvcGVybHkuDQpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQgPGI+JSVDRl9IT1NUTkFNRSUlPC9iPiBpcyBiZWluZyBNSVRNZWQgYnkgPGI+JSVDRl9QUk9ETkFNRSUlPC9iPi4NClRvIHByb3RlY3QgeW91ciBpbmZvcm1hdGlvbiBmcm9tIGJlaW5nIHN0b2xlbiwgdGhlIGFkZC1vbiBzdG9wcGVkIGZ1cnRoZXIgY29ubmVjdGlvbiB0byB0aGlzIHdlYnNpdGUuDQo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPg0KPHVsPg0KPGxpPjxhIGhyZWY9IiUlQ0ZfVVJMX0xBU1RPSyUlIj48Yj5HbyBCYWNrPC9iPjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8lJUNGX1VSTF9JVFNNRSUlIj48Yj5UcnkgV2F5YmFjayBNYWNoaW5lPC9iPjwvYT48L2xpPg0KPC91bD4NCjxkaXYgY2xhc3M9ImJ1dHRvbi1zcGFjZXIiPjwvZGl2Pg0KPHVsPg0KPGxpPjxhIGhyZWY9Imh0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vYWxsb3cvJSVDRl9XSElURVBBSVIlJSI+PGI+QWRkIEV4Y2VwdGlvbjwvYj48L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwczovLzAuMC4wLjAvY2ZtaXRtX2FkZG9uL2FsbG93L3ZpZXdleGNlcHRpb25zP25vdyI+PGI+VmlldyBFeGNlcHRpb25zPC9iPjwvYT48L2xpPg0KPC91bD4NCjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+'; +var cf_template_wlnotify='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5Hb29kIENvbm5lY3Rpb248L3RpdGxlPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCEtLUBuYW1lc3BhY2UgaHRtbCAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7QG5hbWVzcGFjZSB4dWwgImh0dHA6Ly93d3cubW96aWxsYS5vcmcva2V5bWFzdGVyL2dhdGVrZWVwZXIvdGhlcmUuaXMub25seS54dWwiOyp8Kjpyb290ey0taW4tY29udGVudC1wYWdlLWNvbG9yOiM0MjRlNWE7LS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZDojZmJmYmZiOy0taW4tY29udGVudC10ZXh0LWNvbG9yOiMzMzM7LS1pbi1jb250ZW50LXNlbGVjdGVkLXRleHQ6I2ZmZjstLWluLWNvbnRlbnQtaGVhZGVyLWJvcmRlci1jb2xvcjojYzhjOGM4Oy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZDojZmZmOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1vZGQ6I2YzZjZmYTstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXI6I2ViZWJlYjstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlOiNkYWRhZGE7LS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtaXRlbS1ob3ZlcjpyZ2JhKDAsMTQ5LDIyMSwwLjI1KTstLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZDojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0OiNmZjk1MDA7LS1pbi1jb250ZW50LWJvcmRlci1mb2N1czojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dDojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXM6MXB4IGRvdHRlZCAjZmZmOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0LXNlbGVjdGVkOiNmMmYyZjI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQ6IzQyNGY1YTstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1ob3ZlcjojNWU2OTcyOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWFjdGl2ZTojMzQzZjQ4Oy0taW4tY29udGVudC10YWItY29sb3I6IzQyNGY1YTstLWluLWNvbnRlbnQtbGluay1jb2xvcjojMDA5NWRkOy0taW4tY29udGVudC1saW5rLWNvbG9yLWhvdmVyOiMxNzhjZTU7LS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlOiNmZjk1MDA7LS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZDojNTUxYThiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kOiMwMDk1ZGQ7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IzAwOGFjYjstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1hY3RpdmU6IzAwNmI5ZDstLWluLWNvbnRlbnQtdGFibGUtYm9yZGVyLWRhcmstY29sb3I6I2QxZDFkMTstLWluLWNvbnRlbnQtdGFibGUtaGVhZGVyLWJhY2tncm91bmQ6IzAwOTVkZH1odG1sfGh0bWwseHVsfHBhZ2UseHVsfHdpbmRvd3tmb250Om1lc3NhZ2UtYm94Oy1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1jb2xvcil9aHRtbHxib2R5e2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46MH1odG1sfGgxe2ZvbnQtc2l6ZToyLjVlbTtmb250LXdlaWdodDpsaWdodGVyO2xpbmUtaGVpZ2h0OjEuMjtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO21hcmdpbjowO21hcmdpbi1ib3R0b206LjVlbX1odG1sfGhye2JvcmRlci1zdHlsZTpzb2xpZCBub25lIG5vbmUgbm9uZTtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItY29sb3IpfXh1bHxjYXB0aW9uey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjowfXh1bHxjYXB0aW9uPnh1bHxjaGVja2JveCx4dWx8Y2FwdGlvbj54dWx8bGFiZWx7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjIycHh9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHttYXJnaW46MCFpbXBvcnRhbnR9KnwqLm1haW4tY29udGVudHtwYWRkaW5nLXRvcDo0MHB4O3BhZGRpbmctaW5saW5lLWVuZDo0NHB4O3BhZGRpbmctYm90dG9tOjQ4cHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6NDhweDtvdmVyZmxvdzphdXRvfXh1bHxwcmVmcGFuZT54dWx8Ki5jb250ZW50LWJveHtvdmVyZmxvdzp2aXNpYmxlfXh1bHxncm91cGJveHstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDttYXJnaW46MTVweCAwIDA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MDtwYWRkaW5nLWlubGluZS1lbmQ6MDtmb250LXNpemU6MS4yNXJlbX14dWx8Z3JvdXBib3ggeHVsfGxhYmVsOm5vdCgubWVudS1hY2NlbCk6bm90KC5tZW51LXRleHQpOm5vdCguaW5kZW50KSx4dWx8Z3JvdXBib3ggeHVsfGRlc2NyaXB0aW9ue21hcmdpbi1pbmxpbmUtc3RhcnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWlubGluZS1lbmQ6MCFpbXBvcnRhbnR9eHVsfHRhYnBhbmVsc3stbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoyMnB4O2JvcmRlcjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXR9eHVsfHRhYnN7bWFyZ2luLWJvdHRvbToxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kKX14dWx8Ki50YWJzLWxlZnQseHVsfCoudGFicy1yaWdodHtib3JkZXItYm90dG9tOjB9eHVsfHRhYnstbW96LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOjA7cGFkZGluZzo0cHggMjBweDttaW4taGVpZ2h0OjQ0cHg7Y29sb3I6dmFyKC0taW4tY29udGVudC10YWItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpO2JvcmRlci13aWR0aDowO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDUwbXMgZWFzZSAwc314dWx8dGFiOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3Zlcil9eHVsfHRhYltzZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKTtwYWRkaW5nLWJvdHRvbTowO2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWhpZ2hsaWdodCl9eHVsfCoudGFiLXRleHR7Zm9udC1zaXplOjEuM3JlbTtsaW5lLWhlaWdodDoyMnB4fWh0bWx8YnV0dG9ue3BhZGRpbmc6M3B4O2ZvbnQ6aW5oZXJpdH0qfGJ1dHRvbixodG1sfHNlbGVjdCx4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl0seHVsfG1lbnVsaXN0ey1tb3otYXBwZWFyYW5jZTpub25lO21pbi1oZWlnaHQ6MzBweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTstbW96LWJvcmRlci10b3AtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLXJpZ2h0LWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1ib3R0b20tY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWxlZnQtY29sb3JzOm5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXIsaHRtbHxzZWxlY3Q6ZW5hYmxlZDpob3Zlcix4dWx8YnV0dG9uOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXIseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXIseHVsfG1lbnVsaXN0Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX1odG1sfGJ1dHRvbjplbmFibGVkOmhvdmVyOmFjdGl2ZSxodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyOmFjdGl2ZSx4dWx8YnV0dG9uOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyOmFjdGl2ZSx4dWx8bWVudWxpc3Rbb3Blbj0idHJ1ZSJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSl9aHRtbHxidXR0b246ZGlzYWJsZWQsaHRtbHxzZWxlY3Q6ZGlzYWJsZWQseHVsfGJ1dHRvbltkaXNhYmxlZD0idHJ1ZSJdLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdFtkaXNhYmxlZD0idHJ1ZSJde29wYWNpdHk6LjV9KnxidXR0b24ucHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9aHRtbHxidXR0b24ucHJpbWFyeTplbmFibGVkOmhvdmVyLHh1bHxidXR0b24ucHJpbWFyeTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyKX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b24ucHJpbWFyeTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1hY3RpdmUpfXh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXXtwYWRkaW5nOjZweDt3aWR0aDo1MHB4fXh1bHxidXR0b24+eHVsfCouYnV0dG9uLWJveHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50O3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudH14dWx8bWVudWxpc3Q+eHVsfCoubWVudWxpc3QtbGFiZWwtYm94Pnh1bHwqLm1lbnVsaXN0LWljb25bc3JjXXttYXJnaW4taW5saW5lLWVuZDo1cHh9eHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfCouYnV0dG9uLWJveD54dWx8Ki5idXR0b24tbWVudS1kcm9wbWFya2Vyey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjoxcHggMDttYXJnaW4taW5saW5lLXN0YXJ0OjEwcHg7cGFkZGluZzowO3dpZHRoOjEwcHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51LHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51aXRlbSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwIHh1bHxtZW51LHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxZW07Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtwYWRkaW5nLXRvcDouMmVtO3BhZGRpbmctYm90dG9tOi4yZW07cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nLWlubGluZS1lbmQ6MzBweH14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtfbW96LW1lbnVhY3RpdmU9InRydWUiXSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0taG92ZXIpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbc2VsZWN0ZWQ9InRydWUiXSx4dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbc2VsZWN0ZWQ9InRydWUiXXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXNlbGVjdGVkLXRleHQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkKX14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVbZGlzYWJsZWQ9InRydWUiXSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbVtkaXNhYmxlZD0idHJ1ZSJde2NvbG9yOiM5OTk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cCB4dWx8bWVudXNlcGFyYXRvcix4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b206MH1odG1sfGlucHV0W3R5cGU9InRleHQiXSxodG1sfHRleHRhcmVhLHh1bHx0ZXh0Ym94ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kKX14dWx8dGV4dGJveHttaW4taGVpZ2h0OjMwcHg7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctbGVmdDoxMHB4fXh1bHx0ZXh0Ym94LnRyZWUtaW5wdXR7bWluLWhlaWdodDp1bnNldDtwYWRkaW5nLXJpZ2h0OnVuc2V0O3BhZGRpbmctbGVmdDp1bnNldH1odG1sfGlucHV0W3R5cGU9InRleHQiXSxodG1sfHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZzo1cHggMTBweH1odG1sfGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyxodG1sfHRleHRhcmVhOmZvY3VzLHh1bHx0ZXh0Ym94W2ZvY3VzZWRde2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9aHRtbHxpbnB1dFt0eXBlPSJ0ZXh0Il06ZGlzYWJsZWQsaHRtbHx0ZXh0YXJlYTpkaXNhYmxlZCx4dWx8dGV4dGJveFtkaXNhYmxlZD0idHJ1ZSJde29wYWNpdHk6LjV9aHRtbHxhLC50ZXh0LWxpbmt7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGE6aG92ZXIsLnRleHQtbGluazpob3Zlcntjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9aHRtbHxhOnZpc2l0ZWR7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yLXZpc2l0ZWQpfWh0bWx8YTpob3ZlcjphY3RpdmUsLnRleHQtbGluazpob3ZlcjphY3RpdmV7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yLWFjdGl2ZSk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJde29wYWNpdHk6MDt3aWR0aDowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWw6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7dmVydGljYWwtYWxpZ246bWlkZGxlfWh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVse2xpbmUtaGVpZ2h0OjB9eHVsfGNoZWNrYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7LW1vei1hcHBlYXJhbmNlOm5vbmU7d2lkdGg6MjNweDtoZWlnaHQ6MjNweDtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoI2ZmZixyZ2JhKDI1NSwyNTUsMjU1LDAuOCkpIWltcG9ydGFudDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8Y2hlY2tib3g6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il06bm90KDpkaXNhYmxlZCkraHRtbHxsYWJlbDpob3ZlcjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX14dWx8Y2hlY2tib3hbZGlzYWJsZWQ9InRydWUiXT54dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il06ZGlzYWJsZWQraHRtbHxsYWJlbHtvcGFjaXR5Oi41fXh1bHwqLmNoZWNrYm94LWxhYmVsLWJveHttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MH14dWx8cmljaGxpc3RpdGVtPnh1bHwqLmNoZWNrYm94LWNoZWNre21hcmdpbjozcHggNnB4fXh1bHxyYWRpb3ttYXJnaW4taW5saW5lLXN0YXJ0OjB9eHVsfCoucmFkaW8tY2hlY2t7LW1vei1hcHBlYXJhbmNlOm5vbmU7d2lkdGg6MjNweDtoZWlnaHQ6MjNweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoI2ZmZixyZ2JhKDI1NSwyNTUsMjU1LDAuODApKTtib3gtc2hhZG93OjAgMXB4IDFweCAwICNmZmYsaW5zZXQgMCAycHggMCAwIHJnYmEoMCwwLDAsMC4wMyl9eHVsfHJhZGlvOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI+eHVsfCoucmFkaW8tY2hlY2t7Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX14dWx8cmFkaW9bZGlzYWJsZWQ9InRydWUiXT54dWx8Ki5yYWRpby1jaGVja3tvcGFjaXR5Oi41fXh1bHwqLnJhZGlvLWxhYmVsLWJveHttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtwYWRkaW5nLWlubGluZS1zdGFydDowfSp8KiNjYXRlZ29yaWVzey1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kKTtwYWRkaW5nLXRvcDozOXB4O21hcmdpbjowO2JvcmRlci13aWR0aDowfSp8Ki5jYXRlZ29yeXstbW96LWFwcGVhcmFuY2U6bm9uZTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQpO2JvcmRlci1pbmxpbmUtZW5kLXdpZHRoOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTVweDtwYWRkaW5nLWlubGluZS1lbmQ6MjFweDttaW4taGVpZ2h0OjQwcHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDE1MG1zfSp8Ki5jYXRlZ29yeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1ob3Zlcil9KnwqLmNhdGVnb3J5W3NlbGVjdGVkXSwqfCouY2F0ZWdvcnkuc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlKTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQpO3BhZGRpbmctaW5saW5lLXN0YXJ0OjExcHg7Ym9yZGVyLWlubGluZS1zdGFydDpzb2xpZCA0cHggdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX0qfCojY2F0ZWdvcmllc1trZXlib2FyZC1uYXZpZ2F0aW9uPSJ0cnVlIl06LW1vei1mb2N1c3Jpbmc+KnwqLmNhdGVnb3J5W2N1cnJlbnRde2JvcmRlci10b3A6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXMpO2JvcmRlci1ib3R0b206dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXMpfSp8Ki5jYXRlZ29yeS1uYW1le2xpbmUtaGVpZ2h0OjIycHg7Zm9udC1zaXplOjEuMjVyZW07cGFkZGluZy1ib3R0b206MnB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjlweDttYXJnaW46MDstbW96LXVzZXItc2VsZWN0Om5vbmV9KnwqLmNhdGVnb3J5LWljb257d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0qfCouaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtaGVhZGVyLWJvcmRlci1jb2xvcik7bWFyZ2luLWlubGluZS1lbmQ6NHB4O21hcmdpbi1ib3R0b206MTVweDtwYWRkaW5nLWJvdHRvbToxNXB4Oy1tb3otYm94LWFsaWduOmJhc2VsaW5lfSp8Ki5oZWFkZXItbmFtZXtmb250LXNpemU6Mi41cmVtO2ZvbnQtd2VpZ2h0Om5vcm1hbDtsaW5lLWhlaWdodDo0MHB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX14dWx8ZmlsZWZpZWxkey1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7cGFkZGluZzowfXh1bHwqLmZpbGVGaWVsZENvbnRlbnRCb3h7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8Ki5maWxlRmllbGRJY29ue21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDttYXJnaW4taW5saW5lLWVuZDowfXh1bHwqLmZpbGVGaWVsZExhYmVse21hcmdpbi1pbmxpbmUtc3RhcnQ6LTI2cHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MzZweH14dWx8dGV4dGJveCt4dWx8YnV0dG9uLHh1bHxmaWxlZmllbGQreHVsfGJ1dHRvbntib3JkZXItaW5saW5lLXN0YXJ0Om5vbmV9eHVsfHJpY2hsaXN0Ym94LHh1bHxsaXN0Ym94ey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi1pbmxpbmUtc3RhcnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3cseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVte3BhZGRpbmc6LjNlbTttYXJnaW46MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZC1pbWFnZTpub25lfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3coaG92ZXIpLHh1bHxsaXN0Ym94IHh1bHxsaXN0aXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhzZWxlY3RlZCkseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtW3NlbGVjdGVkPSJ0cnVlIl17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9eHVsfHRyZWV7LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kKTttYXJnaW46MH14dWx8dHJlZTotbW96LWZvY3VzcmluZyx4dWx8cmljaGxpc3Rib3g6LW1vei1mb2N1c3Jpbmd7Ym9yZGVyOjFweCBkb3R0ZWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxsaXN0aGVhZGVyLHh1bHx0cmVlY29sc3stbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcik7cGFkZGluZzowfS5hdXRvY29tcGxldGUtdHJlZT54dWx8dHJlZWNvbHN7Ym9yZGVyLWJvdHRvbTpub25lIWltcG9ydGFudH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSkseHVsfHRyZWVjb2xwaWNrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKTtjb2xvcjojODA4MDgwO3BhZGRpbmc6NXB4IDEwcHh9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pOm5vdChbc29ydGFibGU9ImZhbHNlIl0pOmhvdmVyLHh1bHx0cmVlY29scGlja2VyOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pOm5vdCg6Zmlyc3QtY2hpbGQpLHh1bHx0cmVlY29scGlja2Vye2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MXB4O2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGU6c29saWQ7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDIwJSwjYzFjMWMxIDIwJSwjYzFjMWMxIDgwJSx0cmFuc3BhcmVudCA4MCUsdHJhbnNwYXJlbnQgMTAwJSkgMSAxfXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbl17d2lkdGg6MThweDtoZWlnaHQ6MThweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk+eHVsfCoudHJlZWNvbC1zb3J0ZGlyZWN0aW9uW3NvcnREaXJlY3Rpb249ImFzY2VuZGluZyJde3RyYW5zZm9ybTpzY2FsZVkoLTEpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3d7bWluLWhlaWdodDoyZW19eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1jZWxsLXRleHQoc2VsZWN0ZWQpe2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9eHVsfGNhcHRpb257YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8YnV0dG9uLGh0bWx8YnV0dG9uLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7bWFyZ2luOjJweCA0cHh9eHVsfG1lbnVsaXN0Om5vdChbZWRpdGFibGU9InRydWUiXSk+eHVsfCoubWVudWxpc3QtZHJvcG1hcmtlcnttYXJnaW4tdG9wOjFweDttYXJnaW4tYm90dG9tOjFweH14dWx8Y2hlY2tib3h7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5idXR0b24tYm94LHh1bHwqLm1lbnVsaXN0LWxhYmVsLWJveCx4dWx8Ki5yYWRpby1sYWJlbC1ib3gseHVsfCouY2hlY2tib3gtbGFiZWwtYm94e2JvcmRlci1zdHlsZTpub25lfXh1bHxidXR0b246LW1vei1mb2N1c3Jpbmc+eHVsfCouYnV0dG9uLWJveCx4dWx8bWVudWxpc3Q6LW1vei1mb2N1c3Jpbmc+eHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHxyYWRpb1tmb2N1c2VkPSJ0cnVlIl0+eHVsfCoucmFkaW8tbGFiZWwtYm94LGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTotbW96LWZvY3VzcmluZytodG1sfGxhYmVsOmJlZm9yZSx4dWx8Y2hlY2tib3g6LW1vei1mb2N1c3Jpbmc+eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e291dGxpbmU6MXB4IGRvdHRlZH1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94O21pbi1oZWlnaHQ6MTAwdmg7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGMoNDhweCs0LjZlbSk7cGFkZGluZy1pbmxpbmUtZW5kOjQ4cHg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNvbnRhaW5lcnttaW4td2lkdGg6MTNlbTttYXgtd2lkdGg6NTJlbX0uY29udGFpbmVyLnJlc3RvcmUtY2hvc2Vue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1ncm93OjE7bWFyZ2luOjEwdmggMH0udGl0bGV7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxLjZlbTttYXJnaW4taW5saW5lLXN0YXJ0Oi0yLjNlbTtwYWRkaW5nLWlubGluZS1zdGFydDoyLjNlbTtmb250LXNpemU6Mi41ZW19LnRpdGxlOmRpcihydGwpe2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMH0udGl0bGUtdGV4dHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYzFjMWMxO2ZvbnQtc2l6ZTppbmhlcml0O3BhZGRpbmctYm90dG9tOi40ZW19LmJ1dHRvbi1jb250YWluZXJ7bWFyZ2luLXRvcDoxLjJlbX0uYnV0dG9uLWNvbnRhaW5lcj5idXR0b257bWluLXdpZHRoOjE1MHB4fS5idXR0b24tY29udGFpbmVyPmJ1dHRvbjpmaXJzdC1jaGlsZHttYXJnaW4taW5saW5lLXN0YXJ0OjB9Ym9keXtiYWNrZ3JvdW5kLXNpemU6NjRweCAzMnB4O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O3BhZGRpbmc6NzVweCAwO21pbi13aWR0aDoxM2VtfS5idXR0b24tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXB9LmJ1dHRvbi1zcGFjZXJ7ZmxleDoxfWJvZHl7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCNmMGQwMDAsI2YwZDAwMCAzMyUsI2ZlZGMwMCAzMyUsI2ZlZGMwMCA2NiUsI2YwZDAwMCA2NiUsI2YwZDAwMCl9YSxhOmFjdGl2ZSxhOmZvY3Vze291dGxpbmU6bm9uZTtjdXJzb3I6ZGVmYXVsdH11bHttYXJnaW46MC4xZW0gMDtwYWRkaW5nOjAgMWVtO2xpc3Qtc3R5bGU6bm9uZTt9bGk6YmVmb3Jle2NvbnRlbnQ6IiI7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICMxMTE7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowLjM1ZW0gMCAwLjM1ZW0gMC40NWVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0Oi0xZW07dG9wOjFlbTtwb3NpdGlvbjpyZWxhdGl2ZX0vLy0tPjwvc3R5bGU+DQo8L2hlYWQ+PGJvZHk+PGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4NCjxkaXYgY2xhc3M9InRpdGxlIj48aDEgY2xhc3M9InRpdGxlLXRleHQiPkdvb2QgbmV3cyBmb3IgeW91PC9oMT48L2Rpdj48ZGl2IGlkPSJlcnJvckxvbmdDb250ZW50Ij4NCjxkaXYgaWQ9ImVycm9yU2hvcnREZXNjIj48cCBpZD0iZXJyb3JTaG9ydERlc2NUZXh0Ij4NClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgZGVjaWRlZCB0byBjb25maWd1cmUgdGhlaXIgd2Vic2l0ZSBwcm9wZXJseS4NClRoZSBjb25uZWN0aW9uIGJldHdlZW4geW91IGFuZCA8Yj4lJUNGX0hPU1ROQU1FJSU8L2I+IGlzIG5vIGxvbmdlciBNSVRNZWQgYnkgdGhlIGNvcnBvcmF0ZSBjZW5zb3JzaGlwIHNlcnZpY2VzLg0KVGhlIGFkZC1vbiByZW1vdmVkIDxiPiUlQ0ZfSE9TVE5BTUUlJTwvYj4gZnJvbSB5b3VyIHdoaXRlbGlzdC4gSWYgdGhpcyBoYXBwZW5lZCBhZ2FpbiwgcGxlYXNlIGNoZWNrIHlvdXIgd2hpdGVsaXN0Lg0KPC9wPjwvZGl2PjxkaXYgaWQ9ImNlcnRFcnJvckFuZENhcHRpdmVQb3J0YWxCdXR0b25Db250YWluZXIiIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj4NCjx1bD4NCjxsaT48YSBocmVmPSJodHRwczovLzAuMC4wLjAvY2ZtaXRtX2FkZG9uL2FsbG93L3JlbG9hZD9ub3ciPjxiPkdvdCBpdCE8L2I+PC9hPjwvbGk+DQo8L3VsPg0KPC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4='; function onError(e){console.log(`CFMITM Error:${e}`);} function whitelist_reload(){browser.storage.local.get().then(function(w){ @@ -25,10 +30,12 @@ var tmp_whitelist=w.myset_cfwhite;tmp_whitelist=tmp_whitelist.split("\n").filter cf_ignore=tmp_whitelist; }else{cf_ignore=[];} //ADVANCED +if (w.myset_xautoclean=='y'){wl_autoclean=1;}else{wl_autoclean=0;} if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;} if (w.myset_xgshield=='y'){stop_gshield=1;}else{stop_gshield=0;} if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;} if (w.myset_xign3p=='y'){ign_thirdparty=1;}else{ign_thirdparty=0;} +if (w.myset_xwhitemark=='y'){do_markwhitelistsite=1;}else{do_markwhitelistsite=0;} //ACTION if (w.myset_xsimplewarn){switch(w.myset_xsimplewarn){ case 1:do_reaction=1;break; @@ -48,97 +55,133 @@ return false; } function analyzemydata(res){ -if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();} if (ign_thirdparty==1){if (res.type!='main_frame'){return;}} -//console.log("CFMITM: scanning: "+res.url); - var cflink = document.createElement('a'); - cflink.setAttribute('href',res.url); - var cf_hostname = cflink.hostname; - var cf_protocol = cflink.protocol; - var cf_gothead = res.responseHeaders; - cflink = null; +var cflink=document.createElement('a');cflink.setAttribute('href',res.url); +var cf_hostname=cflink.hostname; +var cf_protocol=cflink.protocol; +var cf_gothead=res.responseHeaders; +var cf_tab_id=res.tabId; +cflink=null; //whitelisted if (cf_hostname.endsWith('.cloudflare.com')||cf_hostname=='cloudflare.com'){return;} if (stop_incapsula==1){if (cf_hostname.endsWith('.incapsula.com')||cf_hostname=='incapsula.com'){return;}} if (stop_gshield==1){if (cf_hostname.endsWith('.withgoogle.com')||cf_hostname.endsWith('.google.com')){return;}} if (stop_sucuri==1){if (cf_hostname.endsWith('.sucuri.net')||cf_hostname=='sucuri.net'){return;}} -if (is_domain_ignored(cf_hostname)){return;} +if (cf_protocol!='http:' && cf_protocol!='https:'){return;} - if ((cf_protocol == 'http:' || cf_protocol == 'https:') && cf_hostname.length >= 4) { +//init array +if (cf_dstarray[cf_tab_id]==undefined){ +cf_dstarray[cf_tab_id]=[]; +cf_dstarray[cf_tab_id]['cf']=''; +cf_dstarray[cf_tab_id]['ok']=''; +} -//console.log("CFMITM: testing...: "+res.url); - -var mitm_isdetected=0;var mitm_cdnname='Cloudflare'; +if (cf_hostname.length>=4){ +var mitm_is=0;var mitm_cdnname='Cloudflare'; for(var i=0;i -if (mitm_isdetected>=1){break;} } -if (mitm_isdetected>=1){ +if (mitm_is==1){ +if (is_domain_ignored(cf_hostname)){ +if (do_markwhitelistsite==1){do_reaction=1;}else{return;} +} //add to history (used in gotwhitelistrequest()) if (cf_history.length>=10){cf_history=[];} if (!cf_history.includes(cf_hostname)){cf_history.push(cf_hostname);} console.log('SECURITY_WARN: '+mitm_cdnname+' MiTM Detected: '+res.url); if (do_reaction==0){ -cfblockscreen='document.documentElement.innerHTML=atob(\'PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT4KPCEtLQpUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UsIHYuIDIuMC4KSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHBzOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi8vLS0+CjxsaW5rIGlkPSJmYXZpY29uIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS94LWljb247YmFzZTY0LEFBQUJBQUVBRUJBQUFBRUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPems0T0twTVNrcTZVRTlQdWxSVFU3cFhWMWU2VzF0YnVsMWRYYnBiVzF1NldGaFl1bFZWVmJwVFUxTzZVRkJRdWt4TVRMb3RMUzJiQUFBQU96WTBOSjdZM056L3Y5emgvOEhlNC8vRDRlYi94dVRwLzhqbTYvL0k1T24veCtQby84Ymo2Zi9FNGVmL3d0L2wvOEhkNC8rLzJkLy8zTi9mL3hrWkdZVTJOVFdkMk43ZS94ZWt4ZjhXdWVEL0ZycmgveGE3NGY4VXI5UC9JaXd1L3lJc0x2OFdzOS8vRjdEZS94ZXIzUDhYcHRyL0lKUzYvOTdnNGY4WkdSbUNBQUFBVjlIUTBPOTFzN3ovRjhIai94YkM0LzhXdytUL0ZMYlYveUFyTGY4Z0t5My9GcnJoL3hhMTMvOFhzTjcvRnFiVi81RzN2Zit4c2JIVUFBQUFSUUFBQUM1b1oyZVYyTjdmL3lXdHYvOFh5dWIvRnNybS94Yko1djhacThmL0dhdkgveGJBNC84V3UrSC9GclhmL3pXZ3VmL1oyZG4vTHk4dmVBQUFBQndBQUFBQUFBQUFTc2JGeGQyZ3k4Ny9LdFRtL3huVTZ2OFcwT2ovRkVKSS94UkNTUDhXeGVYL0ZyL2oveFd3MC8rc3dzUC9rNU9UdGdBQUFEb0FBQUFBQUFBQUFBQUFBQ0ZGUlVWKzZldnIvenExdnY4dzVQSC9KOS92L3lJaUl2OGlJaUwvRnNybS94YkU1UDlYcTduLzE5ZlgrQmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQVByZTJ0c25BM3VEL0xOcmoveS9vOHY4ckt5di9LeXNyL3l2Yjd2OG12ZEQveE0vUC8zZDNkNkFBQUFBMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVWJHeHR0OFBEdytGckF3Lzh1N1BQL05EUTAvelEwTlA4dzNlLy9nTHUvLzhqSXlPZ0FBQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkoyZG5iVFM0K1QvS2REVi96UThQUDgwUUVIL05MM0ovOVhaMmY5V1ZsYUxBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQlgzOS9mNzMzRXh2OHQ1dkgvTGRycC81ckJ3LysydHJiVUFBQUFSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMbTF0YlpYZjV1Yi9MTG5ELzBTN3hQL2QzZDMvTVRFeGVBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCS3g4ZkgzYkhQMGYrOHpNMy9sNWVYdGdBQUFEb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlUSXlNbmErdnI3VHJxNnV5UmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQVJBQUFBRDRBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy84QUFJQUJBQUFBQUFBQUFBQUFBSUFCQUFDQUF3QUF3QU1BQU9BSEFBRGdCd0FBOEE4QUFQQVBBQUQ0SHdBQStEOEFBUHcvQUFEK2Z3QUEvLzhBQUE9PSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX0jcmV0dXJuQnV0dG9ue21pbi13aWR0aDoyNTBweH0uY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfTwvc3R5bGU+CjwvaGVhZD48Ym9keT4KPGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPgo8ZGl2IGlkPSJlcnJvclNob3J0RGVzYyI+PHAgaWQ9ImVycm9yU2hvcnREZXNjVGV4dCI+ClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgaGFzIGNvbmZpZ3VyZWQgdGhlaXIgd2Vic2l0ZSBpbXByb3Blcmx5LgpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQg\')+\''+cf_hostname+' is being MITMed by '+mitm_cdnname+'\'+atob(\'LgpUbyBwcm90ZWN0IHlvdXIgaW5mb3JtYXRpb24gZnJvbSBiZWluZyBzdG9sZW4sIHRoZSBhZGQtb24gc3RvcHBlZCBmdXJ0aGVyIGNvbm5lY3Rpb24gdG8gdGhpcyB3ZWJzaXRlLgo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPgo8YnV0dG9uIGlkPSJyZXR1cm5CdXR0b24iIGNsYXNzPSJwcmltYXJ5IiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkdvIEJhY2s8L2J1dHRvbj4KPGRpdiBjbGFzcz0iYnV0dG9uLXNwYWNlciI+PC9kaXY+CjxidXR0b24gaWQ9ImFkdmFuY2VkQnV0dG9uIiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaWYgKGNvbmZpcm0oJ0RvIHlvdSByZWFsbHkgd2FudCB0byBhZGQg\')+\''+cf_hostname+'\'+atob(\'IHRvIHdoaXRlbGlzdD8nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjbGluaycpLnNyYz0naHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi9hbGxvdy8=\')+\''+cf_hostname+'?'+btoa(cf_hostname)+'\'+atob(\'Jzt9Ij5BZGQgRXhjZXB0aW9uPC9idXR0b24+DQo8YnV0dG9uIGlkPSJhZHZhbmNlZEJ1dHRvbiIgYXV0b2NvbXBsZXRlPSJvZmYiIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2xpbmsnKS5zcmM9J2h0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vYWxsb3cvdmlld2V4Y2VwdGlvbnM/bm93JzsiPlZpZXcgRXhjZXB0aW9uczwvYnV0dG9uPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj48aWZyYW1lIGlkPSJhY2xpbmsiIHNyYz0iaHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi8iPjwvaWZyYW1lPjwvZGl2Pg0KPC9ib2R5PjwvaHRtbD4=\');window.stop();'; + +if (res.type=='main_frame'){cf_dstarray[cf_tab_id]['cf']=res.url.split('?',2)[0];} +if (cf_dstarray[cf_tab_id]['cf'].length<12){cf_dstarray[cf_tab_id]['cf']='';}//something wrong +if (cf_dstarray[cf_tab_id]['ok'].length<12){cf_dstarray[cf_tab_id]['ok']='https://searxes.danwin1210.me/';}//better than google + +cfblockscreen=atob(cf_template_blocked); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen=cfblockscreen.replace('%%CF_PRODNAME%%',mitm_cdnname); +cfblockscreen=cfblockscreen.replace('%%CF_WHITEPAIR%%',cf_hostname+'?'+btoa(cf_hostname)); +cfblockscreen=cfblockscreen.replace('%%CF_URL_LASTOK%%',cf_dstarray[cf_tab_id]['ok']); +cfblockscreen=cfblockscreen.replace('%%CF_URL_ITSME%%',cf_dstarray[cf_tab_id]['cf']); + +cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();'; var blockingCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});blockingCFnow.then(()=>{return {cancel: true};},onError); } if (do_reaction==1){ -cfblockscreen='var orig_dt=document.title;setInterval(function(){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}},2500);'; +cfblockscreen='if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){var orig_dt=document.title;var orig_lh=\''+cf_hostname+'\';setInterval(function(){if (orig_lh==location.hostname){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);document.body.style="border: 4px dashed #f0d000";if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}}},2500);}'; var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});warningCFnow.then(function(){},onError); } if (do_reaction==2){ if (res.type=='image'){return {redirectUrl: cf_blocked_img};}else{if (res.type=='main_frame'){return {redirectUrl: 'https://0.0.0.0/'};}else{return {cancel: true};}} } +}else{// not mitm +if (res.type=='main_frame'){ +if (do_reaction==0){cf_dstarray[cf_tab_id]['ok']=res.url;}//used by warning page +if (cf_ignore.includes(cf_hostname) && cf_gothead.length>3){if (wl_autoclean==1){ +cfblockscreen=atob(cf_template_wlnotify); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();'; +var nomoreCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});nomoreCFnow.then(()=>{ +console.log('SECURITY_INFO: Removing from whitelist: '+cf_hostname); +var _wi=cf_ignore.indexOf(cf_hostname);if (_wi>-1){cf_ignore.splice(_wi,1);} +browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}); +return {cancel: true}; +},onError); +}} +} +} } - } - return; +return; } function gotwhitelistrequest(r){ -if (r.url=='https://0.0.0.0/cfmitm_addon/allow/viewexceptions?now'){browser.runtime.openOptionsPage().then(function(){},onError);}else{ -var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash +var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){ +if (v_whitelist[0]=='viewexceptions' && v_whitelist[1]=='now'){browser.runtime.openOptionsPage().then(function(){},onError);} +if (v_whitelist[0]=='reload' && v_whitelist[1]=='now'){browser.tabs.reload({bypassCache:true});} +if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash if (cf_history.includes(v_whitelist[0])){if (!cf_ignore.includes(v_whitelist[0])){// found in history and rule not found console.log('CFMITM: Adding to whitelist: '+v_whitelist[0]); cf_ignore.push(v_whitelist[0]); browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}).then(function(){browser.tabs.executeScript({code: 'location.reload();'});},onError); }} -}} +} } return {cancel: true}; } +if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();} browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls:["http://*/*","https://*/*"]},["blocking","responseHeaders"]); browser.webRequest.onBeforeRequest.addListener(gotwhitelistrequest,{urls:["https://0.0.0.0/cfmitm_addon/*"]},["blocking"]); browser.runtime.onMessage.addListener(function(r,s,sr){if (r.relnow!=undefined){whitelist_reload();sr({response: 'ok'});};return true;}); browser.browserAction.onClicked.addListener(function(t){browser.runtime.openOptionsPage().then(function(){},onError);}); +browser.tabs.onRemoved.addListener(function(t,r){cf_dstarray[t]=[];delete cf_dstarray[t];}); diff --git a/src/style.css b/src/style.css index 594891ef..207f5e51 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,3 @@ body{font:13px Verdana} label{-webkit-user-select:none;-moz-user-select:none} -textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} \ No newline at end of file