From 2c9f6465e378289232e7a2d9ee16de66e8fb62e0 Mon Sep 17 00:00:00 2001 From: tianya Date: Wed, 28 Oct 2020 17:39:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=B7=B2=E7=BB=8F=E5=86=85=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...cce60bc0238aa03804682c801584991-readme.php | 23 ----- .../0cce60bc0238aa03804682c801584991.xml | 50 ----------- ...f35620fb42d452fa2bdc1dee1690f92-readme.php | 23 ----- .../1f35620fb42d452fa2bdc1dee1690f92.xml | 70 --------------- .../533c5b843ded8752b9857cc7c8e5b455.xml | 54 ------------ ...72606600345b1a4bb8c810bbae434cc-readme.php | 23 ----- .../572606600345b1a4bb8c810bbae434cc.xml | 50 ----------- .../606c658db048ea7328ffe1c7ae2a732f.xml | 54 ------------ ...2ffa6fabe3c236f9238a2b281bc0f93-readme.php | 23 ----- .../72ffa6fabe3c236f9238a2b281bc0f93.xml | 74 ---------------- ...1323e93cd52ecce9f175b6aa46f5cfd-readme.php | 23 ----- .../81323e93cd52ecce9f175b6aa46f5cfd.xml | 66 -------------- ...cb8b88eb4a6d4bfc375c18534f9439e-readme.php | 23 ----- .../acb8b88eb4a6d4bfc375c18534f9439e.xml | 86 ------------------- ...437d85a7a7bc778c9c79b5ec36ab9aa-readme.php | 23 ----- .../b437d85a7a7bc778c9c79b5ec36ab9aa.xml | 86 ------------------- .../fcd00dbb5a51d65aff6c248d221d8bcd.xml | 58 ------------- src/dede/js/main.js | 2 +- src/dede/templets/article_add.htm | 10 +-- src/dede/templets/module_main.htm | 3 + src/include/common.inc.php | 4 +- 21 files changed, 11 insertions(+), 817 deletions(-) delete mode 100755 src/data/module/0cce60bc0238aa03804682c801584991-readme.php delete mode 100755 src/data/module/0cce60bc0238aa03804682c801584991.xml delete mode 100755 src/data/module/1f35620fb42d452fa2bdc1dee1690f92-readme.php delete mode 100755 src/data/module/1f35620fb42d452fa2bdc1dee1690f92.xml delete mode 100755 src/data/module/533c5b843ded8752b9857cc7c8e5b455.xml delete mode 100755 src/data/module/572606600345b1a4bb8c810bbae434cc-readme.php delete mode 100755 src/data/module/572606600345b1a4bb8c810bbae434cc.xml delete mode 100755 src/data/module/606c658db048ea7328ffe1c7ae2a732f.xml delete mode 100755 src/data/module/72ffa6fabe3c236f9238a2b281bc0f93-readme.php delete mode 100755 src/data/module/72ffa6fabe3c236f9238a2b281bc0f93.xml delete mode 100755 src/data/module/81323e93cd52ecce9f175b6aa46f5cfd-readme.php delete mode 100755 src/data/module/81323e93cd52ecce9f175b6aa46f5cfd.xml delete mode 100755 src/data/module/acb8b88eb4a6d4bfc375c18534f9439e-readme.php delete mode 100755 src/data/module/acb8b88eb4a6d4bfc375c18534f9439e.xml delete mode 100755 src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa-readme.php delete mode 100755 src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa.xml delete mode 100755 src/data/module/fcd00dbb5a51d65aff6c248d221d8bcd.xml diff --git a/src/data/module/0cce60bc0238aa03804682c801584991-readme.php b/src/data/module/0cce60bc0238aa03804682c801584991-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/0cce60bc0238aa03804682c801584991-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/0cce60bc0238aa03804682c801584991.xml b/src/data/module/0cce60bc0238aa03804682c801584991.xml deleted file mode 100755 index 96d5a81a..00000000 --- a/src/data/module/0cce60bc0238aa03804682c801584991.xml +++ /dev/null @@ -1,50 +0,0 @@ - - -name=百度新闻 -team=织梦官方 -time=2008-11-19 -email=admin@dedecms.com -url=www.dedecms.com -hash=0cce60bc0238aa03804682c801584991 -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgMjAwMy0yMDEx77yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPg0KPHA+PC9wPg== - - -RGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfnmb7luqbmlrDpl7snOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn55m+5bqm5paw6Ze7JywgJzxtOml0ZW0gbmFtZT0nJ+eZvuW6puaWsOmXuycnIGxpbms9JydiYWlkdW5ld3MucGhwJycgcmFuaz0nJ3BsdXNfc3RhcmdldD0nJ21haW4nJyAvPicsICcnLCAn57uH5qKm5Zui6ZifJywgMSwgJ2JhaWR1bmV3cy5waHAnKTs= - - -RGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfnmb7luqbmlrDpl7snOw== - - - - - - - - -../dede/baidunews.php -../dede/templets/baidunews.htm - - - - - -PD9waHANCi8qKg0KICog55m+5bqm5paw6Ze7DQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogYmFpZHVuZXdzLnBocCAxIDE0OjMxIDIwMTDlubQ35pyIMTLml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCg0KaWYoZW1wdHkoJGRvKSkNCnsNCiAgICBpbmNsdWRlIERFREVBRE1JTi4nL3RlbXBsZXRzL2JhaWR1bmV3cy5odG0nOw0KfSBlbHNlIHsNCiAgICAkYmFpZHVuZXdzID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIiIuJGNmZ19zb2Z0X2xhbmcuIlwiID8+XG4iOw0KICAgICRiYWlkdW5ld3MgLj0gIjxkb2N1bWVudD5cbiI7DQogICAgJGJhaWR1bmV3cyAuPSAiPHdlYlNpdGU+JGNmZ193ZWJuYW1lIDwvd2ViU2l0ZT5cbiI7DQogICAgJGJhaWR1bmV3cyAuPSAiPHdlYk1hc3Rlcj4kY2ZnX2FkbWluZW1haWwgPC93ZWJNYXN0ZXI+XG4iOw0KICAgICRiYWlkdW5ld3MgLj0gIjx1cGRhdGVQZXJpPiRjZmdfdXBkYXRlcGVyaSA8L3VwZGF0ZVBlcmk+XG4iOw0KDQogICAgJGxpbWl0ID0gJGNmZ19iYWlkdW5ld3NfbGltaXQ7DQogICAgaWYoJGxpbWl0ID4gMTAwIHx8ICRsaW1pdCA8IDEpDQogICAgew0KICAgICAgICAkbGltaXQgPSAxMDA7DQogICAgfQ0KDQogICAgJHF1ZXJ5ID0gIlNFTEVDVCBtYWludGFibGUuKiwgYWRkdGFibGUuYm9keSwgYXJjdHlwZS50eXBlbmFtZQ0KICAgIEZST00gI0BfX2FyY2hpdmVzIG1haW50YWJsZQ0KICAgIExFRlQgSk9JTiAjQF9fYWRkb25hcnRpY2xlIGFkZHRhYmxlIE9OIGFkZHRhYmxlLmFpZD1tYWludGFibGUuaWQNCiAgICBMRUZUIEpPSU4gI0BfX2FyY3R5cGUgYXJjdHlwZSBPTiBhcmN0eXBlLklEPW1haW50YWJsZS50eXBlaWQNCiAgICBXSEVSRSBtYWludGFibGUuY2hhbm5lbD0xIGFuZCBtYWludGFibGUuYXJjcmFuayE9LTEgT1JERVIgQlkgbWFpbnRhYmxlLnB1YmRhdGUgREVTQyBMSU1JVCAkbGltaXQNCiAgICAiOw0KICAgICRkc3FsLT5TZXRRdWVyeSgkcXVlcnkpOw0KICAgICRkc3FsLT5FeGVjdXRlKCk7DQogICAgd2hpbGUoJHJvdyA9ICRkc3FsLT5HZXRBcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkcm93Wyd0aXRsZSddKTsNCiAgICAgICAgJHJvdzEgPSBHZXRPbmVBcmNoaXZlKCRyb3dbJ2lkJ10pOw0KICAgICAgICBpZihzdHJwb3MoJHJvdzFbJ2FyY3VybCddLCdodHRwOi8vJykgPT09IGZhbHNlKQ0KICAgICAgICB7DQogICAgICAgICAgICAkbGluayA9ICgkY2ZnX2Jhc2Vob3N0PT0nJyA/ICdodHRwOi8vJy4kX1NFUlZFUlsiSFRUUF9IT1NUIl0uJGNmZ19jbXNwYXRoIDogJGNmZ19iYXNlaG9zdCkuJHJvdzFbJ2FyY3VybCddOw0KICAgICAgICB9ZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkbGluayA9ICRyb3cxWydhcmN1cmwnXTsNCiAgICAgICAgfQ0KICAgICAgICAkbGluayA9IGh0bWxzcGVjaWFsY2hhcnMoJGxpbmspOw0KICAgICAgICAkZGVzY3JpcHRpb24gPSBodG1sc3BlY2lhbGNoYXJzKHN0cmlwX3RhZ3MoJHJvd1snZGVzY3JpcHRpb24nXSkpOw0KICAgICAgICAkdGV4dCA9IGh0bWxzcGVjaWFsY2hhcnMoc3RyaXBfdGFncygkcm93Wydib2R5J10pKTsNCiAgICAgICAgJGltYWdlID0gJHJvd1snbGl0cGljJ10gPT0nJyA/ICcnIDokcm93WydsaXRwaWMnXTsNCiAgICAgICAgaWYoJGltYWdlICE9ICcnICYmIHN0cnBvcygkaW1hZ2UsICdodHRwOi8vJykgPT09IGZhbHNlKQ0KICAgICAgICB7DQogICAgICAgICAgICAkaW1hZ2UgPSAoJGNmZ19iYXNlaG9zdD09JycgPyAnaHR0cDovLycuJF9TRVJWRVJbIkhUVFBfSE9TVCJdLiRjZmdfY21zcGF0aCA6ICRjZmdfYmFzZWhvc3QpLiRpbWFnZTsNCg0KICAgICAgICB9DQogICAgICAgIC8vJGhlYWRsaW5laW1nID0gJyc7DQogICAgICAgICRrZXl3b3JkcyA9IGh0bWxzcGVjaWFsY2hhcnMoJHJvd1sna2V5d29yZHMnXSk7DQogICAgICAgICRjYXRlZ29yeSA9IGh0bWxzcGVjaWFsY2hhcnMoJHJvd1sndHlwZW5hbWUnXSk7DQogICAgICAgICRhdXRob3IgPSBodG1sc3BlY2lhbGNoYXJzKCRyb3dbJ3dyaXRlciddKTsNCiAgICAgICAgJHNvdXJjZSA9IGh0bWxzcGVjaWFsY2hhcnMoJHJvd1snc291cmNlJ10pOw0KICAgICAgICAkcHViZGF0ZSA9IGh0bWxzcGVjaWFsY2hhcnMoZ21kYXRlKCdZLW0tZCBIOmknLCRyb3dbJ3B1YmRhdGUnXSArICRjZmdfY2xpX3RpbWUgKiAzNjAwKSk7DQoNCiAgICAgICAgJGJhaWR1bmV3cyAuPSAiPGl0ZW0+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8dGl0bGU+JHRpdGxlIDwvdGl0bGU+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8bGluaz4kbGluayA8L2xpbms+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8ZGVzY3JpcHRpb24+JGRlc2NyaXB0aW9uIDwvZGVzY3JpcHRpb24+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8dGV4dD4kdGV4dCA8L3RleHQ+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8aW1hZ2U+JGltYWdlIDwvaW1hZ2U+XG4iOw0KICAgICAgICAvLyRiYWlkdW5ld3MgLj0gIjxoZWFkbGluZWltYWdlcy8+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8a2V5d29yZHM+JGtleXdvcmRzIDwva2V5d29yZHM+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8Y2F0ZWdvcnk+JGNhdGVnb3J5IDwvY2F0ZWdvcnk+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8YXV0aG9yPiRhdXRob3IgPC9hdXRob3I+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8c291cmNlPiRzb3VyY2UgPC9zb3VyY2U+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8cHViRGF0ZT4kcHViZGF0ZSA8L3B1YkRhdGU+XG4iOw0KICAgICAgICAkYmFpZHVuZXdzIC49ICI8L2l0ZW0+XG4iOw0KICAgIH0NCiAgICAkYmFpZHVuZXdzIC49ICI8L2RvY3VtZW50PlxuIjsNCg0KICAgICRmcCA9IGZvcGVuKGRpcm5hbWUoX19GSUxFX18pLicvJy4kZmlsZW5hbWUsJ3cnKTsNCiAgICBmd3JpdGUoJGZwLCRiYWlkdW5ld3MpOw0KICAgIGZjbG9zZSgkZnApOw0KICAgIHNob3dtc2coIjxhIGhyZWY9J3skZmlsZW5hbWV9JyB0YXJnZXQ9XCJfYmxhbmtcIj57JGZpbGVuYW1lfSBtYWtlIHN1Y2Nlc3M8L2E+IiwnamF2YXNjcmlwdDo7Jyk7DQp9 - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+55m+5bqm5paw6Ze75Zyw5Zu+PC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4NCjwvaGVhZD4NCjxib2R5IGJhY2tncm91bmQ9ImltYWdlcy9hbGxiZy5naWYiIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0iOCI+DQo8ZGl2IGNsYXNzPSJib2R5dGl0bGUiPg0KCTxkaXYgY2xhc3M9ImJvZHl0aXRsZWxlZnQiPjwvZGl2Pg0KCTxkaXYgY2xhc3M9ImJvZHl0aXRsZXR4dCIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+6L6F5Yqp5o+S5Lu2PC9kaXY+DQo8L2Rpdj48dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iNCIgY2VsbHNwYWNpbmc9IjEiIGNsYXNzPSJ0YnRpdGxlIiBzdHlsZT0iYmFja2dyb3VuZDojQ0ZDRkNGOyI+DQogIDx0cj4NCiAgICA8dGQgYmdjb2xvcj0iI0VERjlENSIgY29sc3Bhbj0iMiIgYmFja2dyb3VuZD0naW1hZ2VzL3RiZy5naWYnIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsiPg0KICAgIAk8c3Ryb25nPueZvuW6puaWsOmXu+WcsOWbvjwvc3Ryb25nPg0KICAgIDwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiIgY29sc3Bhbj0iMiI+DQogICAgCTxwPuOAiuS6kuiBlOe9keaWsOmXu+W8gOaUvuWNj+iuruOAi+aYr+eZvuW6puaWsOmXu+aQnOe0ouWItuWumueahOaQnOe0ouW8leaTjuaWsOmXu+a6kOaUtuW9leagh+WHhu+8jOe9keermeWPr+WwhuWPkeW4g+eahOaWsOmXu+WGheWuueWItuS9nOaIkOmBteW+quatpOW8gOaUvuWNj+iurueahFhNTOagvOW8j+eahOe9kemhte+8iOeLrOeri+S6juWOn+acieeahOaWsOmXu+WPkeW4g+W9ouW8j++8ieS+m+aQnOe0ouW8leaTjue0ouW8leOAgjwvcD4NCiAgICAJPHA+IDxhIGhyZWY9Imh0dHA6Ly9uZXdzLmJhaWR1LmNvbS9uZXdzb3AuaHRtbCNrZyIgdGFyZ2V0PSJfYmxhbmsiPuivpuaDheWPguingTwvYT48L3A+DQogICAgICA8cD7phY3nva7nmoTnm7jlhbPlj4LmlbDlnKgg44CQPGEgaHJlZj0ic3lzX2luZm8ucGhwIj7ns7vnu5/orr7nva48L2E+IC0mZ3Q7IOWFtuS7lumAiemhueOAkeS4reiwg+aVtDwvcD4NCiAgICAgIDxwPuWPqumAgueUqOS6juaWh+eroOmikemBk++8jOaVsOaNruihqOS4ukRlZGVDTVPpu5jorqTnmoQ8L3A+ICAgIDwvdGQ+DQogIDwvdHI+DQogIDxmb3JtIGlkPSJmb3JtMiIgbmFtZT0iZm9ybTEiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/ZG89eWVzIiB0YXJnZXQ9InN0YWZybSI+DQogIDx0cj4NCiAgICA8dGQgY29sc3Bhbj0iMiIgYmdjb2xvcj0iI0Y5RkNFRiI+Jm5ic3A7PGI+6K6+572u77yaPC9iPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+Jm5ic3A7PGI+5paH5Lu25ZCN77yaPC9iPjwvdGQ+DQogICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPiZuYnNwOw0KICAgICAgPGlucHV0IG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0idGV4dGZpZWxkIiB2YWx1ZT0iLi4vZGF0YS9iYWlkdW5ld3MueG1sIiBzaXplPSIzMCIgY2xhc3M9J2FsbHR4dCcgLz4NCiAgICAgPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIj4NCiAgICAJPGlucHV0IG5hbWU9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0ibnAgY29vbGJnIiBpZD0iYnV0dG9uIiB2YWx1ZT0i5byA5aeL55Sf5oiQIiAvPg0KICAgIDwvdGQ+DQogIDwvdHI+DQo8L2Zvcm0+DQogIDx0cj4NCiAgICA8dGQgYmdjb2xvcj0iI0Y5RkNFRiIgY29sc3Bhbj0iMiI+Jm5ic3A7PGI+54q25oCB77yaPC9iPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiIgY29sc3Bhbj0iMiI+DQogICAgCTxpZnJhbWUgbmFtZT0ic3RhZnJtIiBmcmFtZWJvcmRlcj0iMCIgaWQ9InN0YWZybSIgd2lkdGg9Ijk2JSIgaGVpZ2h0PSIzNTBweCIgLz4NCiAgICA8L3RkPg0KICA8L3RyPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4NCg== - - - diff --git a/src/data/module/1f35620fb42d452fa2bdc1dee1690f92-readme.php b/src/data/module/1f35620fb42d452fa2bdc1dee1690f92-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/1f35620fb42d452fa2bdc1dee1690f92-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/1f35620fb42d452fa2bdc1dee1690f92.xml b/src/data/module/1f35620fb42d452fa2bdc1dee1690f92.xml deleted file mode 100755 index 46aefde7..00000000 --- a/src/data/module/1f35620fb42d452fa2bdc1dee1690f92.xml +++ /dev/null @@ -1,70 +0,0 @@ - - -name=文件管理器 -team=织梦官方 -time=2008-11-13 -email=admin@dedecms.com -url=http://www.dedecms.com -hash=1f35620fb42d452fa2bdc1dee1690f92 -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgMjAwMy0yMDEx77yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPg0KPHA+PC9wPg== - - -SU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn5paH5Lu2566h55CG5ZmoJywgJzxtOml0ZW0gbmFtZT0nJ+aWh+S7tueuoeeQhuWZqCcnIGxpbms9JydmaWxlX21hbmFnZV9tYWluLnBocCcnIHJhbms9JydwbHVzX+aWh+S7tueuoeeQhuWZqCcnIHRhcmdldD0nJ21haW4nJyAvPicsICcnLCAn57uH5qKm5Zui6ZifJywgMSwgJycpOw== - - -RGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZT0n5paH5Lu2566h55CG5ZmoJzs= - - - - - - - - -file_manage_control.php -file_manage_main.php -file_manage_view.php -file_pic_view.php -templets/file_edit.htm -templets/file_manage_main.htm -templets/file_pic_view.htm - - - - - -PD9waHANCi8qKg0KICog5paH5Lu2566h55CG5o6n5Yi2DQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZmlsZV9tYW5hZ2VfY29udHJvbC5waHAgMSA4OjQ4IDIwMTDlubQ35pyIMTPml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmUoZGlybmFtZShfX0ZJTEVfXykuIi9jb25maWcucGhwIik7DQpDaGVja1B1cnZpZXcoJ3BsdXNf5paH5Lu2566h55CG5ZmoJyk7DQpyZXF1aXJlKERFREVJTkMuIi9veHdpbmRvdy5jbGFzcy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFQURNSU4uJy9maWxlX2NsYXNzLnBocCcpOw0KJGFjdGl2ZXBhdGggPSBzdHJfcmVwbGFjZSgiLi4iLCAiIiwgJGFjdGl2ZXBhdGgpOw0KJGFjdGl2ZXBhdGggPSBwcmVnX3JlcGxhY2UoIiNeXC97MSx9IyIsICIvIiwgJGFjdGl2ZXBhdGgpOw0KaWYoJGFjdGl2ZXBhdGggPT0gIi8iKSAkYWN0aXZlcGF0aCA9ICIiOw0KaWYoJGFjdGl2ZXBhdGggPT0gIiIpICRpbnBhdGggPSAkY2ZnX2Jhc2VkaXI7DQplbHNlICRpbnBhdGggPSAkY2ZnX2Jhc2VkaXIuJGFjdGl2ZXBhdGg7DQoNCi8v5paH5Lu2566h55CG5Zmo5Lqk5LqS5LiO6YC76L6R5o6n5Yi25paH5Lu2DQokZm1tID0gbmV3IEZpbGVNYW5hZ2VtZW50KCk7DQokZm1tLT5Jbml0KCk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX3JlbmFtZSgpOw0KLS0tLS0tLS0tLS0tLS0tLSovDQppZigkZm1kbz09InJlbmFtZSIpDQp7DQogICAgJGZtbS0+UmVuYW1lRmlsZSgkb2xkZmlsZW5hbWUsJG5ld2ZpbGVuYW1lKTsNCn0NCg0KLy/mlrDlu7rnm67lvZUNCg0KLyotLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9fbmV3ZGlyKCk7DQotLS0tLS0tLS0tLS0tLS0tKi8NCmVsc2UgaWYoJGZtZG89PSJuZXdkaXIiKQ0Kew0KICAgICRmbW0tPk5ld0RpcigkbmV3cGF0aCk7DQp9DQoNCi8v56e75Yqo5paH5Lu2DQoNCi8qLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX21vdmUoKTsNCi0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSBpZigkZm1kbz09Im1vdmUiKQ0Kew0KICAgICRmbW0tPk1vdmVGaWxlKCRmaWxlbmFtZSwkbmV3cGF0aCk7DQp9DQoNCi8v5Yig6Zmk5paH5Lu2DQoNCi8qLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2RlbGZpbGUoKTsNCi0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSBpZigkZm1kbz09ImRlbCIpDQp7DQogICAgJGZtbS0+RGVsZXRlRmlsZSgkZmlsZW5hbWUpOw0KfQ0KDQovL+aWh+S7tue8lui+kQ0KDQovKi0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX19zYXZlRWRpdCgpOw0KLS0tLS0tLS0tLS0tLS0tLSovDQplbHNlIGlmKCRmbWRvPT0iZWRpdCIpDQp7DQogICAgJGZpbGVuYW1lID0gc3RyX3JlcGxhY2UoIi4uIiwgIiIsICRmaWxlbmFtZSk7DQogICAgJGZpbGUgPSAiJGNmZ19iYXNlZGlyJGFjdGl2ZXBhdGgvJGZpbGVuYW1lIjsNCiAgICAkc3RyID0gc3RyaXBzbGFzaGVzKCRzdHIpOw0KICAgICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOw0KICAgIGZwdXRzKCRmcCwgJHN0cik7DQogICAgZmNsb3NlKCRmcCk7DQogICAgaWYoZW1wdHkoJGJhY2t1cmwpKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5oiQ5Yqf5L+d5a2Y5LiA5Liq5paH5Lu277yBIiwiZmlsZV9tYW5hZ2VfbWFpbi5waHA/YWN0aXZlcGF0aD0kYWN0aXZlcGF0aCIpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICBTaG93TXNnKCLmiJDlip/kv53lrZjmlofku7bvvIEiLCRiYWNrdXJsKTsNCiAgICB9DQogICAgZXhpdCgpOw0KfQ0KLyoNCuaWh+S7tue8lui+ke+8jOWPr+inhuWMluaooeW8jw0KZnVuY3Rpb24gX19zYXZlRWRpdFZpZXcoKTsNCmVsc2UgaWYoJGZtZG89PSJlZGl0dmlldyIpDQp7DQogICAgJGZpbGVuYW1lID0gc3RyX3JlcGxhY2UoIi4uIiwiIiwkZmlsZW5hbWUpOw0KICAgICRmaWxlID0gIiRjZmdfYmFzZWRpciRhY3RpdmVwYXRoLyRmaWxlbmFtZSI7DQogICAgJHN0ciA9IGVyZWdpX3JlcGxhY2UoJyZxdW90OycsJ1xcIicsJHN0cik7DQogICAgJHN0ciA9IHN0cmlwc2xhc2hlcygkc3RyKTsNCiAgICAkZnAgPSBmb3BlbigkZmlsZSwidyIpOw0KICAgIGZwdXRzKCRmcCwkc3RyKTsNCiAgICBmY2xvc2UoJGZwKTsNCiAgICBpZihlbXB0eSgkYmFja3VybCkpDQogICAgew0KICAgICAgICAkYmFja3VybCA9ICJmaWxlX21hbmFnZV9tYWluLnBocD9hY3RpdmVwYXRoPSRhY3RpdmVwYXRoIjsNCiAgICB9DQogICAgU2hvd01zZygi5oiQ5Yqf5L+d5a2Y5paH5Lu277yBIiwkYmFja3VybCk7DQogICAgZXhpdCgpOw0KfQ0KKi8NCi8v5paH5Lu25LiK5LygDQovKi0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX191cGxvYWQoKTsNCi0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSBpZigkZm1kbz09InVwbG9hZCIpDQp7DQogICAgJGo9MDsNCiAgICBmb3IoJGk9MTsgJGk8PTUwOyAkaSsrKQ0KICAgIHsNCiAgICAgICAgJHVwZmlsZSA9ICJ1cGZpbGUiLiRpOw0KICAgICAgICAkdXBmaWxlX25hbWUgPSAidXBmaWxlIi4kaS4iX25hbWUiOw0KICAgICAgICBpZighaXNzZXQoJHskdXBmaWxlfSkgfHwgIWlzc2V0KCR7JHVwZmlsZV9uYW1lfSkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICAgICR1cGZpbGUgPSAkeyR1cGZpbGV9Ow0KICAgICAgICAkdXBmaWxlX25hbWUgPSAkeyR1cGZpbGVfbmFtZX07DQogICAgICAgIGlmKGlzX3VwbG9hZGVkX2ZpbGUoJHVwZmlsZSkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmKCFmaWxlX2V4aXN0cygkY2ZnX2Jhc2VkaXIuJGFjdGl2ZXBhdGguIi8iLiR1cGZpbGVfbmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbW92ZV91cGxvYWRlZF9maWxlKCR1cGZpbGUsICRjZmdfYmFzZWRpci4kYWN0aXZlcGF0aC4iLyIuJHVwZmlsZV9uYW1lKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIEB1bmxpbmsoJHVwZmlsZSk7DQogICAgICAgICAgICAkaisrOw0KICAgICAgICB9DQogICAgfQ0KICAgIFNob3dNc2coIuaIkOWKn+S4iuS8oCAkaiDkuKrmlofku7bliLA6ICRhY3RpdmVwYXRoIiwiZmlsZV9tYW5hZ2VfbWFpbi5waHA/YWN0aXZlcGF0aD0kYWN0aXZlcGF0aCIpOw0KICAgIGV4aXQoKTsNCn0NCg0KLy/nqbrpl7Tmo4Dmn6UNCmVsc2UgaWYoJGZtZG89PSJzcGFjZSIpDQp7DQogICAgaWYoJGFjdGl2ZXBhdGg9PSIiKQ0KICAgIHsNCiAgICAgICAgJGVjcGF0aCA9ICLmiYDmnInnm67lvZUiOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICAkZWNwYXRoID0gJGFjdGl2ZXBhdGg7DQogICAgfQ0KICAgICR0aXRsZWluZm8gPSAi55uu5b2VIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX21haW4ucGhwP2FjdGl2ZXBhdGg9JGFjdGl2ZXBhdGgnPjxiPjx1PiRlY3BhdGg8L3U+PC9iPjwvYT4g56m66Ze05L2/55So54q25Ya177yaPGJyLz4iOw0KICAgICR3aW50aXRsZSA9ICLmlofku7bnrqHnkIYiOw0KICAgICR3ZWNvbWVfaW5mbyA9ICLmlofku7bnrqHnkIY6OuepuumXtOWkp+Wwj+ajgOafpSBbPGEgaHJlZj0nZmlsZV9tYW5hZ2VfbWFpbi5waHA/YWN0aXZlcGF0aD0kYWN0aXZlcGF0aCc+5paH5Lu25rWP6KeI5ZmoPC9hPl08L2E+IjsNCiAgICAkYWN0aXZlcGF0aD0kY2ZnX2Jhc2VkaXIuJGFjdGl2ZXBhdGg7DQogICAgJHNwYWNlID0gbmV3IFNwYWNlVXNlOw0KICAgICRzcGFjZS0+Y2hlY2tzaXplKCRhY3RpdmVwYXRoKTsNCiAgICAkdG90YWw9JHNwYWNlLT50b3RhbHNpemU7DQogICAgJHRvdGFsa2I9JHNwYWNlLT5zZXRrYigkdG90YWwpOw0KICAgICR0b3RhbG1iPSRzcGFjZS0+c2V0bWIoJHRvdGFsKTsNCiAgICAkd2luID0gbmV3IE94V2luZG93KCk7DQogICAgJHdpbi0+SW5pdCgiIiwianMvYmxhbmsuanMiLCJQT1NUIik7DQogICAgJHdpbi0+QWRkVGl0bGUoJHRpdGxlaW5mbyk7DQogICAgJHdpbi0+QWRkTXNnSXRlbSgi44CA44CAJHRvdGFsbWIgTTxici8+44CA44CAJHRvdGFsa2IgS0I8YnIvPuOAgOOAgCR0b3RhbCDlrZfoioIiKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygiIik7DQogICAgJHdpbi0+RGlzcGxheSgpOw0KfQ== - - -PD9waHANCi8qKg0KICog5paH5Lu2566h55CG5ZmoDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZmlsZV9tYW5hZ2VfbWFpbi5waHAgMSA4OjQ4IDIwMTDlubQ35pyIMTPml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmUoZGlybmFtZShfX0ZJTEVfXykuIi9jb25maWcucGhwIik7DQpDaGVja1B1cnZpZXcoJ3BsdXNf5paH5Lu2566h55CG5ZmoJyk7DQppZighaXNzZXQoJGFjdGl2ZXBhdGgpKSAkYWN0aXZlcGF0aD0kY2ZnX2Ntc3BhdGg7DQoNCiRpbnBhdGggPSAiIjsNCiRhY3RpdmVwYXRoID0gc3RyX3JlcGxhY2UoIi4uIiwgIiIsICRhY3RpdmVwYXRoKTsNCiRhY3RpdmVwYXRoID0gcHJlZ19yZXBsYWNlKCIjXlwvezEsfSMiLCAiLyIsICRhY3RpdmVwYXRoKTsNCmlmKCRhY3RpdmVwYXRoID09ICIvIikgJGFjdGl2ZXBhdGggPSAiIjsNCg0KaWYoJGFjdGl2ZXBhdGggPT0gIiIpICRpbnBhdGggPSAkY2ZnX2Jhc2VkaXI7DQplbHNlICRpbnBhdGggPSAkY2ZnX2Jhc2VkaXIuJGFjdGl2ZXBhdGg7DQoNCiRhY3RpdmV1cmwgPSAkYWN0aXZlcGF0aDsNCmlmKHByZWdfbWF0Y2goIiMiLiRjZmdfdGVtcGxldHNfZGlyLiIjaSIsICRhY3RpdmVwYXRoKSkNCnsNCiAgICAkaXN0ZW1wbGV0cyA9IFRSVUU7DQp9DQplbHNlDQp7DQogICAgJGlzdGVtcGxldHMgPSBGQUxTRTsNCn0NCmluY2x1ZGUgRGVkZUluY2x1ZGUoJ3RlbXBsZXRzL2ZpbGVfbWFuYWdlX21haW4uaHRtJyk7 - - -PD9waHANCi8qKg0KICog5paH5Lu25p+l55yLDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZmlsZV9tYW5hZ2Vfdmlldy5waHAgMSA4OjQ4IDIwMTDlubQ35pyIMTPml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCkNoZWNrUHVydmlldygncGx1c1/mlofku7bnrqHnkIblmagnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvb3h3aW5kb3cuY2xhc3MucGhwIik7DQokYWN0aXZlcGF0aCA9IHN0cl9yZXBsYWNlKCIuLiIsICIiLCAkYWN0aXZlcGF0aCk7DQokYWN0aXZlcGF0aCA9IHByZWdfcmVwbGFjZSgiI15cL3sxLH0jIiwgIi8iLCAkYWN0aXZlcGF0aCk7DQppZigkYWN0aXZlcGF0aCA9PSAiLyIpICRhY3RpdmVwYXRoID0gIiI7DQppZigkYWN0aXZlcGF0aCA9PSAiIikgJGlucGF0aCA9ICRjZmdfYmFzZWRpcjsNCmVsc2UgJGlucGF0aCA9ICRjZmdfYmFzZWRpci4kYWN0aXZlcGF0aDsNCg0KLy/mmL7npLrmjqfliLblsYINCi8v5pu05pS55paH5Lu25ZCNDQppZigkZm1kbz09InJlbmFtZSIpDQp7DQogICAgaWYoJGFjdGl2ZXBhdGg9PSIiKSAkbmRpcnN0cmluZyA9ICLmoLnnm67lvZUiOw0KICAgICRuZGlyc3RyaW5nID0gJGFjdGl2ZXBhdGg7DQogICAgJHdpbnRpdGxlID0gIiZuYnNwO+aWh+S7tueuoeeQhiI7DQogICAgJHdlY29tZV9pbmZvID0gIuaWh+S7tueuoeeQhjo65pu05pS55paH5Lu25ZCNIFs8YSBocmVmPSdmaWxlX21hbmFnZV9tYWluLnBocD9hY3RpdmVwYXRoPSRhY3RpdmVwYXRoJz7mlofku7bmtY/op4jlmag8L2E+XTwvYT4iOw0KICAgICR3aW4gPSBuZXcgT3hXaW5kb3coKTsNCiAgICAkd2luLT5Jbml0KCJmaWxlX21hbmFnZV9jb250cm9sLnBocCIsImpzL2JsYW5rLmpzIiwiUE9TVCIpOw0KICAgICR3aW4tPkFkZEhpZGRlbigiZm1kbyIsJGZtZG8pOw0KICAgICR3aW4tPkFkZEhpZGRlbigiYWN0aXZlcGF0aCIsJGFjdGl2ZXBhdGgpOw0KICAgICR3aW4tPkFkZEhpZGRlbigiZmlsZW5hbWUiLCRmaWxlbmFtZSk7DQogICAgJHdpbi0+QWRkVGl0bGUoIuabtOaUueaWh+S7tuWQje+8jOW9k+WJjei3r+W+hO+8miRuZGlyc3RyaW5nIik7DQogICAgJHdpbi0+QWRkSXRlbSgi5pen5ZCN56ew77yaIiwiPGlucHV0IG5hbWU9J29sZGZpbGVuYW1lJyB0eXBlPSdpbnB1dCcgY2xhc3M9J2FsbHR4dCcgaWQ9J29sZGZpbGVuYW1lJyBzaXplPSc0MCcgdmFsdWU9JyRmaWxlbmFtZSc+Iik7DQogICAgJHdpbi0+QWRkSXRlbSgi5paw5ZCN56ew77yaIiwiPGlucHV0IG5hbWU9J25ld2ZpbGVuYW1lJyB0eXBlPSdpbnB1dCcgY2xhc3M9J2FsbHR4dCcgc2l6ZT0nNDAnIGlkPSduZXdmaWxlbmFtZSc+Iik7DQogICAgJHdpbmZvcm0gPSAkd2luLT5HZXRXaW5kb3coIm9rIik7DQogICAgJHdpbi0+RGlzcGxheSgpOw0KfQ0KLy/mlrDlu7rnm67lvZUNCmVsc2UgaWYoJGZtZG89PSJuZXdkaXIiKQ0Kew0KICAgIGlmKCRhY3RpdmVwYXRoPT0iIikgJGFjdGl2ZXBhdGhuYW1lPSLmoLnnm67lvZUiOw0KICAgIGVsc2UgJGFjdGl2ZXBhdGhuYW1lPSRhY3RpdmVwYXRoOw0KDQogICAgJHdpbnRpdGxlID0gIiZuYnNwO+aWh+S7tueuoeeQhiI7DQogICAgJHdlY29tZV9pbmZvID0gIiZuYnNwO+aWh+S7tueuoeeQhjo65paw5bu655uu5b2VIFs8YSBocmVmPSdmaWxlX21hbmFnZV9tYWluLnBocD9hY3RpdmVwYXRoPSRhY3RpdmVwYXRoJz7mlofku7bmtY/op4jlmag8L2E+XTwvYT4iOw0KICAgICR3aW4gPSBuZXcgT3hXaW5kb3coKTsNCiAgICAkd2luLT5Jbml0KCJmaWxlX21hbmFnZV9jb250cm9sLnBocCIsImpzL2JsYW5rLmpzIiwiUE9TVCIpOw0KICAgICR3aW4tPkFkZEhpZGRlbigiZm1kbyIsJGZtZG8pOw0KICAgICR3aW4tPkFkZEhpZGRlbigiYWN0aXZlcGF0aCIsJGFjdGl2ZXBhdGgpOw0KICAgICR3aW4tPkFkZFRpdGxlKCLlvZPliY3nm67lvZUgJGFjdGl2ZXBhdGhuYW1lICIpOw0KICAgICR3aW4tPkFkZEl0ZW0oIuaWsOebruW9le+8miIsIjxpbnB1dCBuYW1lPSduZXdwYXRoJyB0eXBlPSdpbnB1dCcgY2xhc3M9J2FsbHR4dCcgaWQ9J25ld3BhdGgnPiIpOw0KICAgICR3aW5mb3JtID0gJHdpbi0+R2V0V2luZG93KCJvayIpOw0KICAgICR3aW4tPkRpc3BsYXkoKTsNCn0NCg0KLy/np7vliqjmlofku7YNCmVsc2UgaWYoJGZtZG89PSJtb3ZlIikNCnsNCiAgICAkd2ludGl0bGUgPSAiJm5ic3A75paH5Lu2566h55CGIjsNCiAgICAkd2Vjb21lX2luZm8gPSAiJm5ic3A75paH5Lu2566h55CGOjrnp7vliqjmlofku7YgWzxhIGhyZWY9J2ZpbGVfbWFuYWdlX21haW4ucGhwP2FjdGl2ZXBhdGg9JGFjdGl2ZXBhdGgnPuaWh+S7tua1j+iniOWZqDwvYT5dPC9hPiI7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkluaXQoImZpbGVfbWFuYWdlX2NvbnRyb2wucGhwIiwianMvYmxhbmsuanMiLCJQT1NUIik7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJmbWRvIiwkZm1kbyk7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJhY3RpdmVwYXRoIiwkYWN0aXZlcGF0aCk7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJmaWxlbmFtZSIsJGZpbGVuYW1lKTsNCiAgICAkd2luLT5BZGRUaXRsZSgi5paw5L2N572u5YmN6Z2i5LiN5YqgJy8n6KGo56S655u45a+55LqO5b2T5YmN5L2N572u77yM5YqgJy8n6KGo56S655u45a+55LqO5qC555uu5b2V44CCIik7DQogICAgJHdpbi0+QWRkSXRlbSgi6KKr56e75Yqo5paH5Lu277yaIiwkZmlsZW5hbWUpOw0KICAgICR3aW4tPkFkZEl0ZW0oIuW9k+WJjeS9jee9ru+8miIsJGFjdGl2ZXBhdGgpOw0KICAgICR3aW4tPkFkZEl0ZW0oIuaWsOS9jee9ru+8miIsIjxpbnB1dCBuYW1lPSduZXdwYXRoJyB0eXBlPSdpbnB1dCcgY2xhc3M9J2FsbHR4dCcgaWQ9J25ld3BhdGgnIHNpemU9JzQwJz4iKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygib2siKTsNCiAgICAkd2luLT5EaXNwbGF5KCk7DQp9DQoNCi8v5Yig6Zmk5paH5Lu2DQplbHNlIGlmKCRmbWRvPT0iZGVsIikNCnsNCiAgICAkd2ludGl0bGUgPSAiJm5ic3A75paH5Lu2566h55CGIjsNCiAgICAkd2Vjb21lX2luZm8gPSAiJm5ic3A75paH5Lu2566h55CGOjrliKDpmaTmlofku7YgWzxhIGhyZWY9J2ZpbGVfbWFuYWdlX21haW4ucGhwP2FjdGl2ZXBhdGg9JGFjdGl2ZXBhdGgnPuaWh+S7tua1j+iniOWZqDwvYT5dPC9hPiI7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkluaXQoImZpbGVfbWFuYWdlX2NvbnRyb2wucGhwIiwianMvYmxhbmsuanMiLCJQT1NUIik7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJmbWRvIiwkZm1kbyk7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJhY3RpdmVwYXRoIiwkYWN0aXZlcGF0aCk7DQogICAgJHdpbi0+QWRkSGlkZGVuKCJmaWxlbmFtZSIsJGZpbGVuYW1lKTsNCiAgICBpZihAaXNfZGlyKCRjZmdfYmFzZWRpci4kYWN0aXZlcGF0aC4iLyRmaWxlbmFtZSIpKQ0KICAgIHsNCiAgICAgICAgJHdtc2cgPSAi5L2g56Gu5L+h6KaB5Yig6Zmk55uu5b2V77yaJGZpbGVuYW1lIOWQl++8nyI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICR3bXNnID0gIuS9oOehruS/oeimgeWIoOmZpOaWh+S7tu+8miRmaWxlbmFtZSDlkJfvvJ8iOw0KICAgIH0NCiAgICAkd2luLT5BZGRUaXRsZSgi5Yig6Zmk5paH5Lu256Gu6K6kIik7DQogICAgJHdpbi0+QWRkTXNnSXRlbSgkd21zZywiNTAiKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygib2siKTsNCiAgICAkd2luLT5EaXNwbGF5KCk7DQp9DQoNCi8v57yW6L6R5paH5Lu2DQplbHNlIGlmKCRmbWRvPT0iZWRpdCIpDQp7DQogICAgaWYoIWlzc2V0KCRiYWNrdXJsKSkNCiAgICB7DQogICAgICAgICRiYWNrdXJsID0gIiI7DQogICAgfQ0KDQogICAgJGFjdGl2ZXBhdGggPSBzdHJfcmVwbGFjZSgiLi4iLCIiLCRhY3RpdmVwYXRoKTsNCiAgICAkZmlsZW5hbWUgPSBzdHJfcmVwbGFjZSgiLi4iLCIiLCRmaWxlbmFtZSk7DQogICAgJGZpbGUgPSAiJGNmZ19iYXNlZGlyJGFjdGl2ZXBhdGgvJGZpbGVuYW1lIjsNCiAgICAkY29udGVudCA9ICIiOw0KICAgIGlmKGlzX2ZpbGUoJGZpbGUpKQ0KICAgIHsNCiAgICAgICAgJGZwID0gZm9wZW4oJGZpbGUsInIiKTsNCiAgICAgICAgJGNvbnRlbnQgPSBmcmVhZCgkZnAsZmlsZXNpemUoJGZpbGUpKTsNCiAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICRjb250ZW50ID0gaHRtbHNwZWNpYWxjaGFycygkY29udGVudCk7DQogICAgfQ0KICAgICRjb250ZW50VmlldyA9ICI8dGV4dGFyZWEgbmFtZT0nc3RyJyBzdHlsZT0nd2lkdGg6OTklO2hlaWdodDo0NTBweDtiYWNrZ3JvdW5kOiNmZmZmZmY7Jz4kY29udGVudDwvdGV4dGFyZWE+XHJcbiI7DQogICAgJEdMT0JBTFNbJ2ZpbGVuYW1lJ10gPSAkZmlsZW5hbWU7DQogICAgJGN0cCA9IG5ldyBEZWRlVGFnUGFyc2UoKTsNCiAgICAkY3RwLT5Mb2FkVGVtcGxhdGUoREVERUFETUlOLiIvdGVtcGxldHMvZmlsZV9lZGl0Lmh0bSIpOw0KICAgICRjdHAtPmRpc3BsYXkoKTsNCn0NCi8q57yW6L6R5paH5Lu277yM5Y+v6KeG5YyW5qih5byPDQplbHNlIGlmKCRmbWRvPT0iZWRpdHZpZXciKQ0Kew0KICAgIGlmKCFpc3NldCgkYmFja3VybCkpDQogICAgew0KICAgICAgICAkYmFja3VybCA9ICIiOw0KICAgIH0NCiAgICBpZighaXNzZXQoJGlzaGVhZCkpDQogICAgew0KICAgICAgICAkaXNoZWFkID0gIiI7DQogICAgfQ0KICAgICRhY3RpdmVwYXRoID0gc3RyX3JlcGxhY2UoIi4uIiwiIiwkYWN0aXZlcGF0aCk7DQogICAgJGZpbGVuYW1lID0gc3RyX3JlcGxhY2UoIi4uIiwiIiwkZmlsZW5hbWUpOw0KICAgICRmaWxlID0gIiRjZmdfYmFzZWRpciRhY3RpdmVwYXRoLyRmaWxlbmFtZSI7DQogICAgJGZwID0gZm9wZW4oJGZpbGUsInIiKTsNCiAgICBAJGNvbnRlbnQgPSBmcmVhZCgkZnAsZmlsZXNpemUoJGZpbGUpKTsNCiAgICBmY2xvc2UoJGZwKTsNCiAgICBpZigoZXJlZ2koIjxodG1sIiwkY29udGVudCkgJiYgZXJlZ2koIjxib2R5IiwkY29udGVudCkpIHx8ICRpc2hlYWQgPT0gInllcyIpDQogICAgew0KICAgICAgICAkY29udGVudFZpZXcgPSBHZXRFZGl0b3IoInN0ciIsJGNvbnRlbnQsIjUwMCIsIkRlZmF1bHQiLCJzdHJpbmciLCJ0cnVlIik7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICRjb250ZW50VmlldyA9IEdldEVkaXRvcigic3RyIiwkY29udGVudCwiNTAwIiwiRGVmYXVsdCIsInN0cmluZyIsImZhbHNlIik7DQogICAgfQ0KICAgICRHTE9CQUxTWydmaWxlbmFtZSddID0gJGZpbGVuYW1lOw0KICAgICRjdHAgPSBuZXcgRGVkZVRhZ1BhcnNlKCk7DQogICAgJGN0cC0+TG9hZFRlbXBsYXRlKERFREVBRE1JTi4iL3RlbXBsZXRzL2ZpbGVfZWRpdF92aWV3Lmh0bSIpOw0KICAgICRjdHAtPmRpc3BsYXkoKTsNCn0NCiovDQovL+aWsOW7uuaWh+S7tg0KZWxzZSBpZigkZm1kbz09Im5ld2ZpbGUiKQ0Kew0KICAgICRjb250ZW50ID0gIiI7DQogICAgJEdMT0JBTFNbJ2ZpbGVuYW1lJ10gPSAibmV3ZmlsZS50eHQiOw0KICAgICRjb250ZW50VmlldyA9ICI8dGV4dGFyZWEgbmFtZT0nc3RyJyBzdHlsZT0nd2lkdGg6OTklO2hlaWdodDo0MDAnPjwvdGV4dGFyZWE+XHJcbiI7DQogICAgJGN0cCA9IG5ldyBEZWRlVGFnUGFyc2UoKTsNCiAgICAkY3RwLT5Mb2FkVGVtcGxhdGUoREVERUFETUlOLiIvdGVtcGxldHMvZmlsZV9lZGl0Lmh0bSIpOw0KICAgICRjdHAtPmRpc3BsYXkoKTsNCn0NCg0KLy/kuIrkvKDmlofku7YNCmVsc2UgaWYoJGZtZG89PSJ1cGxvYWQiKQ0Kew0KICAgICRjdHAgPSBuZXcgRGVkZVRhZ1BhcnNlKCk7DQogICAgJGN0cC0+TG9hZFRlbXBsYXRlKERFREVBRE1JTi4iL3RlbXBsZXRzL2ZpbGVfdXBsb2FkLmh0bSIpOw0KICAgICRjdHAtPmRpc3BsYXkoKTsNCn0= - - -PD9waHANCi8qKg0KICogzsS8/s28xqyy6b+0DQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZmlsZV9waWNfdmlldy5waHAgMSA4OjQ4IDIwMTDE6jfUwjEzyNVaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCkNoZWNrUHVydmlldygncGljX3ZpZXcnKTsNCmlmKGVtcHR5KCRhY3RpdmVwYXRoKSkgJGFjdGl2ZXBhdGg9JGNmZ19tZWRpYXNfZGlyOw0KDQokYWN0aXZlcGF0aCA9IHByZWdfcmVwbGFjZSgiI1wvezEsfSMiLCAiLyIsICRhY3RpdmVwYXRoKTsNCiR0cnVlUGF0aCA9ICRjZmdfYmFzZWRpci4kYWN0aXZlcGF0aDsNCiRsaXN0U2l6ZT01Ow0KaW5jbHVkZSBEZWRlSW5jbHVkZSgndGVtcGxldHMvZmlsZV9waWNfdmlldy5odG0nKTsNCg0KLyoqDQogKiAgu/HIocnP0ru8tsS/wrwNCiAqDQogKiBAYWNjZXNzICAgIHB1YmxpYw0KICogQHBhcmFtICAgICBzdHJpbmcgICRub3dQYXRoICC1scewxL/CvA0KICogQHJldHVybiAgICBzdHJpbmcNCiAqLw0KZnVuY3Rpb24gR2V0UHJlUGF0aCgkbm93UGF0aCkNCnsNCiAgICBpZigkbm93UGF0aD09IiIgfHwgJG5vd1BhdGg9PSIvIikNCiAgICB7DQogICAgICAgIGVjaG8oIrWxx7DOqrj5xL/CvFxuIik7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICRkaXJzID0gc3BsaXQoIi8iLCAkbm93UGF0aCk7DQogICAgICAgICRub3dQYXRoID0gIiI7DQogICAgICAgIGZvcigkaT0xOyRpIDwgY291bnQoJGRpcnMpLTE7ICRpKyspDQogICAgICAgIHsNCiAgICAgICAgICAgICRub3dQYXRoIC49ICIvIi4kZGlyc1skaV07DQogICAgICAgIH0NCiAgICAgICAgZWNobygiPGEgaHJlZj1cInBpY192aWV3LnBocD9hY3RpdmVwYXRoPSIuJG5vd1BhdGguIlwiPteqtb3Jz7y2xL/CvDwvYT5cbiIpOw0KICAgIH0NCn0NCg0KLyoqDQogKiAgwdCz9s28xqwNCiAqDQogKiBAYWNjZXNzICAgIHB1YmxpYw0KICogQHBhcmFtICAgICBzdHJpbmcgICR0cnVlUGF0aCAg1ebKtbXY1rcNCiAqIEBwYXJhbSAgICAgc3RyaW5nICAkbm93UGF0aCAgtbHHsLXY1rcNCiAqIEByZXR1cm4gICAgc3RyaW5nDQogKi8NCmZ1bmN0aW9uIExpc3RQaWMoJHRydWVQYXRoLCAkbm93UGF0aCkNCnsNCiAgICBnbG9iYWwgJGxpc3RTaXplOw0KICAgICRjb2w9MDsNCiAgICAkcm93ZGQ9MDsNCiAgICAkcm93ZGQrKzsNCiAgICAkaW1nZmlsZT0iIjsNCiAgICAkdHJ1ZVBhdGggPSBwcmVnX3JlcGxhY2UoIiNcLyQjIiwgIiIsIHByZWdfcmVwbGFjZSgiI1xcXFx7MSx9IyIsICIvIiwgdHJpbSgkdHJ1ZVBhdGgpKSk7DQogICAgJG5vd1BhdGggPSBwcmVnX3JlcGxhY2UoIiNcLyQjIiwgIiIsIHByZWdfcmVwbGFjZSgiI1wvezEsfSMiLCAiLyIsIHRyaW0oJG5vd1BhdGgpKSk7DQogICAgJGRoID0gZGlyKCR0cnVlUGF0aCk7DQogICAgZWNobygiPHRyIGFsaWduPSdjZW50ZXInPlxuIik7DQogICAgd2hpbGUoJGZpbGVuYW1lPSRkaC0+cmVhZCgpKQ0KICAgIHsNCiAgICAgICAgaWYoIXByZWdfbWF0Y2goIiNcLiQjIiwgJGZpbGVuYW1lKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGZ1bGxOYW1lID0gJHRydWVQYXRoLiIvIi4kZmlsZW5hbWU7DQogICAgICAgICAgICAkZmlsZVVybCA9ICAkbm93UGF0aC4iLyIuJGZpbGVuYW1lOw0KICAgICAgICAgICAgaWYoaXNfZGlyKCRmdWxsTmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYoJGNvbCAlICRsaXN0U2l6ZSA9PSAwICYmICRjb2wgIT0gMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8oIjwvdHI+XG48dHIgYWxpZ249J2NlbnRlcic+XG4iKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yKCRpPSRyb3dkZC0kbGlzdFNpemU7ICRpPCRyb3dkZDsgJGkrKykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobygiPHRkPiIuJGZpbGVsaXN0WyRpXS4iPC90ZD5cbiIpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVjaG8oIjwvdHI+XG48dHIgYWxpZ249J2NlbnRlcic+XG4iKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGxpbmUgPSAiDQogICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0nMTA2JyBoZWlnaHQ9JzEwNicgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzEnIGJnY29sb3I9JyNDQ0NDQ0MnPg0KICAgICAgICAgICAgICAgIDx0cj48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0ZGRkZGRic+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ncGljX3ZpZXcucGhwP2FjdGl2ZXBhdGg9Ii4kZmlsZVVybC4iJz4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0naW1hZ2VzL3BpY19kaXIuZ2lmJyB3aWR0aD0nNDQnIGhlaWdodD0nNDInIGJvcmRlcj0nMCc+DQogICAgICAgICAgICAgICAgPC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAkZmlsZWxpc3RbJHJvd2RkXSA9ICRmaWxlbmFtZTsNCiAgICAgICAgICAgICAgICAkY29sKys7DQogICAgICAgICAgICAgICAgJHJvd2RkKys7DQogICAgICAgICAgICAgICAgZWNobyAkbGluZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYoSXNJbWcoJGZpbGVuYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZigkY29sJSRsaXN0U2l6ZT09MCYmJGNvbCE9MCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8oIjwvdHI+XG48dHIgYWxpZ249J2NlbnRlcic+XG4iKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yKCRpPSRyb3dkZC0kbGlzdFNpemU7JGk8JHJvd2RkOyRpKyspDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8oIjx0ZD4iLiRmaWxlbGlzdFskaV0uIjwvdGQ+XG4iKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlY2hvKCI8L3RyPlxuPHRyIGFsaWduPSdjZW50ZXInPlxuIik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRsaW5lID0gIg0KICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9JzEwNicgaGVpZ2h0PScxMDYnIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjQ0NDQ0NDJz4NCiAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNGRkZGRkYnPg0KICAgICAgICAgICAgICAgICIuR2V0SW1nRmlsZSgkdHJ1ZVBhdGgsJG5vd1BhdGgsJGZpbGVuYW1lKS4iDQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPjwvdGFibGU+PC90ZD4iOw0KICAgICAgICAgICAgICAgICRmaWxlbGlzdFskcm93ZGRdID0gJGZpbGVuYW1lOw0KICAgICAgICAgICAgICAgICRjb2wrKzsNCiAgICAgICAgICAgICAgICAkcm93ZGQrKzsNCiAgICAgICAgICAgICAgICBlY2hvICRsaW5lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGVjaG8oIjwvdHI+XG4iKTsNCiAgICBpZighZW1wdHkoJGZpbGVsaXN0KSkNCiAgICB7DQogICAgICAgIGVjaG8oIjx0ciBhbGlnbj0nY2VudGVyJz5cbiIpOw0KICAgICAgICAkdCA9ICgkcm93ZGQtMSklJGxpc3RTaXplOw0KICAgICAgICBpZigkdD09MCkNCiAgICAgICAgew0KICAgICAgICAgICAgJHQ9JGxpc3RTaXplOw0KICAgICAgICB9DQogICAgICAgIGZvcigkaT0kcm93ZGQtJHQ7JGk8JHJvd2RkOyRpKyspDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8oIjx0ZD4iLiRmaWxlbGlzdFskaV0uIjwvdGQ+XG4iKTsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvKCI8L3RyPlxuIik7DQogICAgfQ0KfQ0KDQovKioNCiAqICC78cihzbzGrM7EvP4NCiAqDQogKiBAYWNjZXNzICAgIHB1YmxpYw0KICogQHBhcmFtICAgICBzdHJpbmcgICR0cnVlUGF0aCAg1ebKtbXY1rcNCiAqIEBwYXJhbSAgICAgc3RyaW5nICAkbm93UGF0aCAgtbHHsLXY1rcNCiAqIEBwYXJhbSAgICAgc3RyaW5nICAkZmlsZU5hbWUgIM7EvP7D+7PGDQogKiBAcmV0dXJuICAgIHN0cmluZw0KICovDQpmdW5jdGlvbiBHZXRJbWdGaWxlKCR0cnVlUGF0aCwgJG5vd1BhdGgsICRmaWxlTmFtZSkNCnsNCiAgICAkdG9XPTEwMjsNCiAgICAkdG9IPTEwMjsNCiAgICAkc3JjRmlsZSA9ICR0cnVlUGF0aC4iLyIuJGZpbGVOYW1lOw0KICAgICRpbmZvID0gIiI7DQogICAgJGRhdGEgPSBHZXRJbWFnZVNpemUoJHNyY0ZpbGUsICRpbmZvKTsNCiAgICAkc3JjVz0kZGF0YVswXTsNCiAgICAkc3JjSD0kZGF0YVsxXTsNCiAgICBpZigkdG9XPj0kc3JjVyYmJHRvSD49JHNyY0gpDQogICAgew0KICAgICAgICAkZnRvVz0kc3JjVzsNCiAgICAgICAgJGZ0b0g9JHNyY0g7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICR0b1dIPSR0b1cgLyAkdG9IOw0KICAgICAgICAkc3JjV0g9JHNyY1cgLyAkc3JjSDsNCiAgICAgICAgaWYoJHRvV0g8PSRzcmNXSCkNCiAgICAgICAgew0KICAgICAgICAgICAgJGZ0b1c9JHRvVzsNCiAgICAgICAgICAgICRmdG9IPSRmdG9XKigkc3JjSC8kc3JjVyk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkZnRvSD0kdG9IOw0KICAgICAgICAgICAgJGZ0b1c9JGZ0b0gqKCRzcmNXLyRzcmNIKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4oIjxhIGhyZWY9JyIuJG5vd1BhdGguIi8iLiRmaWxlTmFtZS4iJyB0YXJnZXQ9J19ibGFuayc+PGltZyBzcmM9JyIuJG5vd1BhdGguIi8iLiRmaWxlTmFtZS4iJyB3aWR0aD0nIi4kZnRvVy4iJyBoZWlnaHQ9JyIuJGZ0b0guIicgYm9yZGVyPScwJz48L2E+Iik7DQp9DQoNCmZ1bmN0aW9uIElzSW1nKCRmaWxlTmFtZSkNCnsNCiAgICBpZihwcmVnX21hdGNoKCIjXC4oanBnfGdpZnxwbmcpJCMiLCAkZmlsZU5hbWUpKSByZXR1cm4gMTsNCiAgICBlbHNlIHJldHVybiAwOw0KfQ== - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5paH5Lu2566h55CG5ZmoPC90aXRsZT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9iYXNlLmNzcyI+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIFBvc3QoKSANCnsNCglpZiAoZG9jdW1lbnQuZm9ybTEuZmlsZW5hbWUudmFsdWU9PSIiKQ0KCXsNCgkJYWxlcnQoIuaWh+S7tuWQjeS4jeiDveS4uuepuuOAgiIpOw0KCQlkb2N1bWVudC5mb3JtMS5maWxlbmFtZS5mb2N1cygpOw0KCQlyZXR1cm4gZmFsc2U7DQogIH0NCn0JDQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IGJhY2tncm91bmQ9J2ltYWdlcy9hbGxiZy5naWYnIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNFQ0ZBRDMiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweDsiPg0KICA8dHI+IA0KICAgIDx0ZCBoZWlnaHQ9IjI4IiBzdHlsZT0iYm9yZGVyOjFweCBkb3R0ZWQgI0JGRDY3QztwYWRkaW5nLWxlZnQ6MTBweDsiIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJz4NCgkJJm5ic3A74peHPGEgaHJlZj0nZmlsZV9tYW5hZ2VfbWFpbi5waHA/YWN0aXZlcGF0aD17ZGVkZTpnbG9iYWwgbmFtZT0nYWN0aXZlcGF0aCcvfSc+PGI+5paH5Lu2566h55CGPC9iPjwvYT4gJmd0OyZndDsgPGI+5L+u5pS5L+aWsOW7uuaWh+S7tjwvYj4NCgkgIDwvdGQ+DQogIDwvdHI+DQo8L3RhYmxlPg0KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249ImZpbGVfbWFuYWdlX2NvbnRyb2wucGhwIiBuYW1lPWZvcm0xIG9uU3VibWl0PSJyZXR1cm4gUG9zdCgpIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZtZG8iIHZhbHVlPSJlZGl0IiAvPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmFja3VybCIgdmFsdWU9IntkZWRlOmdsb2JhbCBuYW1lPSdiYWNrdXJsJyBmdW5jdGlvbj0ndXJsZW5jb2RlKEBtZSknL30iIC8+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNjZmNmY2YiPg0KCTx0cj4NCgkJPHRkIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPScjZmZmZmZmJz4NCgkJPHRhYmxlIHdpZHRoPScxMDAlJyAgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMycgY2VsbHNwYWNpbmc9JzEnIGJnY29sb3I9JyNjZmNmY2YnPg0KCQk8dHIgYmdjb2xvcj0nI0VFRjRFQSc+DQoJCQk8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0naW1hZ2VzL3diZy5naWYnIGhlaWdodD0nMjYnIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsiPg0KCQkJCQk8Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+5L+u5pS5L+aWsOW7uuaWh+S7tu+8mjwvYj48L2ZvbnQ+DQoJCQk8L3RkPg0KCQk8L3RyPg0KCQk8dHIgYmdjb2xvcj0nI0ZGRkZGRic+DQogIAkJPHRkPuW3peS9nOebruW9lTwvdGQ+DQoJCQk8dGQ+DQogIAkJCQk8aW5wdXQgbmFtZT0nYWN0aXZlcGF0aCcgc2l6ZT0nNDAnIGNsYXNzPSdhbGx0eHQnIHZhbHVlPSJ7ZGVkZTpnbG9iYWwgbmFtZT0nYWN0aXZlcGF0aCcvfSIgLz4NCiAgICAJCQnvvIjnqbrnmb3ooajnpLrmoLnnm67lvZUg77yM5LiN5YWB6K6455SoIOKAnC4u4oCdIOW9ouW8j+eahOi3r+W+hO+8iQ0KCQkJPC90ZD4NCgkJPC90cj4NCgkJPHRyIGJnY29sb3I9JyNGRkZGRkYnPg0KICAJCTx0ZD7mlofku7blkI3np7A8L3RkPg0KICAJCTx0ZD4NCiAgCQkJPGlucHV0IG5hbWU9ZmlsZW5hbWUgc2l6ZT00MCBjbGFzcz0nYWxsdHh0JyB2YWx1ZT0ie2RlZGU6Z2xvYmFsIG5hbWU9J2ZpbGVuYW1lJy99IiAvPg0KICAgIAkJ77yI5LiN5YWB6K6455SoIOKAnC4u4oCdIOW9ouW8j+eahOi3r+W+hO+8iQ0KICAJCTwvdGQ+DQoJCTwvdHI+DQoJCTx0ciBiZ2NvbG9yPScjRkZGRkZGJz4NCgkJCTx0ZCBjb2xzcGFuPScyJz4NCgkJCQkJe2RlZGU6Z2xvYmFsIG5hbWU9J2NvbnRlbnRWaWV3Jy99DQoJCQk8L3RkPg0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQgY29sc3Bhbj0nMicgaGVpZ2h0PSIzNiIgYmdjb2xvcj0nI0Y5RkNFRicgYWxpZ249J2NlbnRlcic+DQogICAJCQk8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IiAg5L+dIOWtmCAgIiBuYW1lPSdCMScgY2xhc3M9ImNvb2xiZyBucCIgLz4NCiAgIAkJCQkmbmJzcDsgDQogICAJCQk8aW5wdXQgdHlwZT1yZXNldCB2YWx1ZT0i5Y+W5raI5L+u5pS5IiBuYW1lPSdCMicgY2xhc3M9ImNvb2xiZyBucCIgLz4NCiAgCQkJCSZuYnNwOyANCiAgIAkJCTxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0i5LiN55CG6L+U5ZueIiBuYW1lPSdCNCcgY2xhc3M9ImNvb2xiZyBucCIgb25DbGljaz0iamF2YXNjcmlwdDpoaXN0b3J5LmdvKC0xKTsiIC8+DQoJCQk8L3RkPg0KCQkJPC90cj4NCgkJCTwvdGFibGU+DQoJCTwvdGQ+DQoJPC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8L2JvZHk+DQo8L2h0bWw+DQo= - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5paH5Lu2566h55CG5ZmoPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c3R5bGU+DQoubGluZXJvd3tib3JkZXItYm90dG9tOiAxcHggc29saWQgI0NCRDhBQztoZWlnaHQ6MjRweH0NCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSc5OCUnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5nPScyJyBhbGlnbj0nY2VudGVyJyBzdHlsZT0iYmFja2dyb3VuZDojY2ZjZmNmOyI+DQo8dHIgYmdjb2xvcj0iI2NmY2ZjZiIgaGVpZ2h0PSIyOCIgYWxpZ249ImNlbnRlciI+DQogIDx0ZCB3aWR0aD0iMjglIiBiYWNrZ3JvdW5kPSJpbWFnZXMvd2JnLmdpZiIgPjxzdHJvbmc+5paH5Lu25ZCNPC9zdHJvbmc+PC90ZD4NCiAgPHRkIHdpZHRoPSIxNiUiIGJhY2tncm91bmQ9ImltYWdlcy9uZXdsaW5lYmczLmdpZiI+PHN0cm9uZz7mlofku7blpKflsI88L3N0cm9uZz48L3RkPg0KICA8dGQgd2lkdGg9IjIyJSIgYmFja2dyb3VuZD0iaW1hZ2VzL3diZy5naWYiPjxzdHJvbmc+5pyA5ZCO5L+u5pS55pe26Ze0PC9zdHJvbmc+PC90ZD4NCiAgPHRkIHdpZHRoPSIzNCUiICBiYWNrZ3JvdW5kPSJpbWFnZXMvbmV3bGluZWJnMy5naWYiPjxzdHJvbmc+5pON5L2cPC9zdHJvbmc+PC90ZD4NCjwvdHI+DQo8P3BocA0KJGRoID0gZGlyKCRpbnBhdGgpOw0KJHR5MT0iIjsNCiR0eTI9IiI7DQokZmlsZXMgPSAkZGlycyA9IGFycmF5KCk7DQp3aGlsZSgoJGZpbGUgPSAkZGgtPnJlYWQoKSkgIT09IGZhbHNlKQ0Kew0KCWlmKCRmaWxlIT0iLiIgJiYgJGZpbGUhPSIuLiIgJiYgIWlzX2RpcigiJGlucGF0aC8kZmlsZSIpKQ0KCXsNCgkJQCRmaWxlc2l6ZSA9IGZpbGVzaXplKCIkaW5wYXRoLyRmaWxlIik7DQoJCUAkZmlsZXNpemU9JGZpbGVzaXplLzEwMjQ7DQoJCUAkZmlsZXRpbWUgPSBmaWxlbXRpbWUoIiRpbnBhdGgvJGZpbGUiKTsNCgkJQCRmaWxldGltZSA9IE15RGF0ZSgiWS1tLWQgSDppOnMiLCRmaWxldGltZSk7DQoJCWlmKCRmaWxlc2l6ZTwwLjEpDQoJCXsNCgkJCUBsaXN0KCR0eTEsJHR5Mik9ZXhwbG9kZSgiLiIsJGZpbGVzaXplKTsNCgkJCSRmaWxlc2l6ZT0kdHkxLiIuIi5zdWJzdHIoJHR5MiwwLDIpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJQGxpc3QoJHR5MSwkdHkyKT1leHBsb2RlKCIuIiwkZmlsZXNpemUpOw0KCQkJJGZpbGVzaXplPSR0eTEuIi4iLnN1YnN0cigkdHkyLDAsMSk7DQoJCX0NCgl9DQoJaWYoJGZpbGUgPT0gIi4iKQ0KCXsNCgkJY29udGludWU7DQoJfQ0KCWVsc2UgaWYoJGZpbGUgPT0gIi4uIikNCgl7DQoJCWlmKCRhY3RpdmVwYXRoID09ICIiKQ0KCQl7DQoJCQljb250aW51ZTsNCgkJfQ0KCQkkdG1wID0gcHJlZ19yZXBsYWNlKCIjW1wvXVteXC9dKiQjaSIsIiIsJGFjdGl2ZXBhdGgpOw0KCQkkbGluZSA9ICJcbjx0cj4NCiAgPHRkIGJnY29sb3I9JyNmZmZmZmYnIGhlaWdodD0nMjUnPg0KICA8YSBocmVmPWZpbGVfbWFuYWdlX21haW4ucGhwP2FjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJHRtcCkuIj48aW1nIHNyYz1pbWFnZXMvZGlyMi5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT7kuIrnuqfnm67lvZU8L2E+DQogIDwvdGQ+DQogIDx0ZCBjb2xzcGFuPSczJyBiZ2NvbG9yPScjZmZmZmZmJz4NCiAgIOW9k+WJjeebruW9lTokYWN0aXZlcGF0aCAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfcGljX3ZpZXcucGhwP2FjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInIHN0eWxlPSdjb2xvcjpyZWQnPlvlm77niYfmtY/op4jlmahdPC9hPg0KICAgPC90ZD4NCiAgPC90cj4iOw0KCQkkZGlyc1tdID0gJGxpbmU7DQoJfQ0KCWVsc2UgaWYoaXNfZGlyKCIkaW5wYXRoLyRmaWxlIikpDQoJew0KCQlpZihwcmVnX21hdGNoKCIjXl8oLiopJCNpIiwkZmlsZSkpIGNvbnRpbnVlOyAj5bGP6JS9RnJvbnRQYWdl5omp5bGV55uu5b2V5ZKMbGludXjpmpDolL3nm67lvZUNCgkJaWYocHJlZ19tYXRjaCgiI15cLiguKikkI2kiLCRmaWxlKSkgY29udGludWU7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnIGhlaWdodD0nMjYnIG9uTW91c2VNb3ZlPVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGQ0ZERUUnO1wiIG9uTW91c2VPdXQ9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7XCI+DQogICA8dGQ+DQogICAgPGEgaHJlZj1maWxlX21hbmFnZV9tYWluLnBocD9hY3RpdmVwYXRoPSIudXJsZW5jb2RlKCIkYWN0aXZlcGF0aC8kZmlsZSIpLiI+PGltZyBzcmM9aW1hZ2VzL2Rpci5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPuOAgDwvdGQ+DQogICA8dGQ+44CAPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9ZmlsZV9tYW5hZ2Vfdmlldy5waHA/ZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIiZmbWRvPXJlbmFtZT5b5pS55ZCNXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj1maWxlX21hbmFnZV92aWV3LnBocD9maWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJnR5cGU9ZGlyJmZtZG89ZGVsPlvliKDpmaRdPC9hPg0KICAgPC90ZD4NCiAgIDwvdGQ+DQogICA8L3RyPiI7DQoJCSRkaXJzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4oZ2lmfHBuZykjaSIsJGZpbGUpKQ0KCXsNCgkJJGxpbmUgPSAiXG48dHIgYmdjb2xvcj0nI0ZGRkZGRicgaGVpZ2h0PScyNicgb25Nb3VzZU1vdmU9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7XCIgb25Nb3VzZU91dD1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJztcIj4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JGFjdGl2ZXVybC8kZmlsZSB0YXJnZXQ9X2JsYW5rPjxpbWcgc3JjPWltYWdlcy9naWYuZ2lmIGJvcmRlcj0wIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+JGZpbGU8L2E+PC90ZD4NCiAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgPHRkIGFsaWduPSdjZW50ZXInPiRmaWxldGltZTwvdGQ+DQogICA8dGQ+DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPXJlbmFtZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5pS55ZCNXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1kZWwmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+WIoOmZpF08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89bW92ZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b56e75YqoXTwvYT4NCiAgIDwvdGQ+DQogICA8L3RyPiI7DQoJCSRmaWxlc1tdID0gJGxpbmU7DQoJfQ0KCWVsc2UgaWYocHJlZ19tYXRjaCgiI1wuKGpwZykjaSIsJGZpbGUpKQ0KCXsNCgkJJGxpbmUgPSAiXG48dHIgYmdjb2xvcj0nI0ZGRkZGRicgaGVpZ2h0PScyNicgb25Nb3VzZU1vdmU9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7XCIgb25Nb3VzZU91dD1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJztcIj4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JGFjdGl2ZXVybC8kZmlsZSB0YXJnZXQ9X2JsYW5rPjxpbWcgc3JjPWltYWdlcy9qcGcuZ2lmIGJvcmRlcj0wIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+JGZpbGU8L2E+PC90ZD4NCiAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgPHRkIGFsaWduPSdjZW50ZXInIGNsYXNzPSdsaW5lcm93Jz4kZmlsZXRpbWU8L3RkPg0KICAgPHRkID4NCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4oc3dmfGZsYXxmbHkpI2kiLCRmaWxlKSkNCgl7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnIGhlaWdodD0nMjYnIG9uTW91c2VNb3ZlPVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGQ0ZERUUnO1wiIG9uTW91c2VPdXQ9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7XCI+DQogICA8dGQ+DQogICA8YSBocmVmPSRhY3RpdmV1cmwvJGZpbGUgdGFyZ2V0PV9ibGFuaz48aW1nIHNyYz1pbWFnZXMvZmxhc2guZ2lmIGJvcmRlcj0wIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+JGZpbGU8L2E+PC90ZD4NCiAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgPHRkIGFsaWduPSdjZW50ZXInPiRmaWxldGltZTwvdGQ+DQogICA8dGQ+DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPXJlbmFtZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5pS55ZCNXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1kZWwmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+WIoOmZpF08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89bW92ZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b56e75YqoXTwvYT4NCiAgIDwvdGQ+DQogICA8L3RyPiI7DQoJCSRmaWxlc1tdID0gJGxpbmU7DQoJfQ0KCWVsc2UgaWYocHJlZ19tYXRjaCgiI1wuKHppcHxyYXJ8dGFyLmd6KSNpIiwkZmlsZSkpDQoJew0KCQkkbGluZSA9ICJcbjx0ciBiZ2NvbG9yPScjRkZGRkZGJyBoZWlnaHQ9JzI2JyBvbk1vdXNlTW92ZT1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJztcIiBvbk1vdXNlT3V0PVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnO1wiPg0KICAgPHRkPg0KICAgPGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+PGltZyBzcmM9aW1hZ2VzL3ppcC5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4oZXhlKSNpIiwkZmlsZSkpDQoJew0KCQkkbGluZSA9ICJcbjx0ciBiZ2NvbG9yPScjRkZGRkZGJyBoZWlnaHQ9JzI2JyBvbk1vdXNlTW92ZT1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJztcIiBvbk1vdXNlT3V0PVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnO1wiPg0KICAgPHRkPg0KICAgPGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+PGltZyBzcmM9aW1hZ2VzL2V4ZS5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZCA+DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPXJlbmFtZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5pS55ZCNXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1kZWwmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+WIoOmZpF08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89bW92ZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b56e75YqoXTwvYT4NCiAgIDwvdGQ+DQogICA8L3RyPiI7DQoJCSRmaWxlc1tdID0gJGxpbmU7DQoJfQ0KCWVsc2UgaWYocHJlZ19tYXRjaCgiI1wuKG1wM3x3bWEpI2kiLCRmaWxlKSkNCgl7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnICBoZWlnaHQ9JzI2JyBvbk1vdXNlTW92ZT1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJztcIiBvbk1vdXNlT3V0PVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnO1wiPg0KICAgPHRkPg0KICAgPGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+PGltZyBzcmM9aW1hZ2VzL21wMy5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4od212fGFwaSkjaSIsJGZpbGUpKQ0KCXsNCgkJJGxpbmUgPSAiXG48dHIgYmdjb2xvcj0nI0ZGRkZGRicgaGVpZ2h0PScyNicgb25Nb3VzZU1vdmU9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7XCIgb25Nb3VzZU91dD1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJztcIj4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JGFjdGl2ZXVybC8kZmlsZSB0YXJnZXQ9X2JsYW5rPjxpbWcgc3JjPWltYWdlcy93bXYuZ2lmIGJvcmRlcj0wIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+JGZpbGU8L2E+PC90ZD4NCiAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgPHRkIGFsaWduPSdjZW50ZXInPiRmaWxldGltZTwvdGQ+DQogICA8dGQ+DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPXJlbmFtZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5pS55ZCNXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1kZWwmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+WIoOmZpF08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89bW92ZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b56e75YqoXTwvYT4NCiAgIDwvdGQ+DQogICA8L3RyPiI7DQoJCSRmaWxlc1tdID0gJGxpbmU7DQoJfQ0KCWVsc2UgaWYocHJlZ19tYXRjaCgiI1wuKHJtfHJtdmIpI2kiLCRmaWxlKSkNCgl7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnIGhlaWdodD0nMjYnIG9uTW91c2VNb3ZlPVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGQ0ZERUUnO1wiIG9uTW91c2VPdXQ9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7XCI+DQogICA8dGQ+DQogICA8YSBocmVmPSRhY3RpdmV1cmwvJGZpbGUgdGFyZ2V0PV9ibGFuaz48aW1nIHNyYz1pbWFnZXMvcm0uZ2lmIGJvcmRlcj0wIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+JGZpbGU8L2E+PC90ZD4NCiAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgPHRkIGFsaWduPSdjZW50ZXInIGNsYXNzPSdsaW5lcm93Jz4kZmlsZXRpbWU8L3RkPg0KICAgPHRkPg0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1yZW5hbWUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+aUueWQjV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89ZGVsJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvliKDpmaRdPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPW1vdmUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+enu+WKqF08L2E+DQogICA8L3RkPg0KICAgPC90cj4iOw0KCQkkZmlsZXNbXSA9ICRsaW5lOw0KCX0NCgllbHNlIGlmKHByZWdfbWF0Y2goIiNcLih0eHR8aW5jfHBsfGNnaXxhc3B8eG1sfHhzbHxhc3B4fGNmbSkjIiwkZmlsZSkpDQoJew0KCQkkZWR1cmwgPSAiZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1lZGl0JmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpOw0KCQkkbGluZSA9ICJcbjx0ciBiZ2NvbG9yPScjRkZGRkZGJyBvbk1vdXNlTW92ZT1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJztcIiBvbk1vdXNlT3V0PVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnO1wiPg0KICAgPHRkPg0KICAgPGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+PGltZyBzcmM9aW1hZ2VzL3R4dC5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JyRlZHVybCc+W+e8lui+kV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4oaHRtfGh0bWwpI2kiLCRmaWxlKSkNCgl7DQoJCSRlZHVybCA9ICJmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWVkaXQmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCk7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnICBoZWlnaHQ9JzI2J29uTW91c2VNb3ZlPVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGOUZCRjAnO1wiIG9uTW91c2VPdXQ9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7XCI+DQogICA8dGQ+DQogICA8YSBocmVmPSRhY3RpdmV1cmwvJGZpbGUgdGFyZ2V0PV9ibGFuaz48aW1nIHNyYz1pbWFnZXMvaHRtLmdpZiBib3JkZXI9MCB3aWR0aD0xNiBoZWlnaHQ9MTYgYWxpZ249YWJzbWlkZGxlPiRmaWxlPC9hPjwvdGQ+DQogICA8dGQ+JGZpbGVzaXplIEtCPC90ZD4NCiAgIDx0ZCBhbGlnbj0nY2VudGVyJz4kZmlsZXRpbWU8L3RkPg0KICAgPHRkPg0KICAgPGEgaHJlZj0nJGVkdXJsJz5b57yW6L6RXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1yZW5hbWUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+aUueWQjV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89ZGVsJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvliKDpmaRdPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPW1vdmUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+enu+WKqF08L2E+DQogICA8L3RkPg0KICAgPC90cj4iOw0KCQkkZmlsZXNbXSA9ICRsaW5lOw0KCX0NCgllbHNlIGlmKHByZWdfbWF0Y2goIiNcLihwaHApI2kiLCRmaWxlKSkNCgl7DQoJCSRlZHVybCA9ICJmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWVkaXQmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCk7DQoJCSRsaW5lID0gIlxuPHRyIGJnY29sb3I9JyNGRkZGRkYnIGhlaWdodD0nMjYnIG9uTW91c2VNb3ZlPVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGQ0ZERUUnO1wiIG9uTW91c2VPdXQ9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7XCI+DQogICA8dGQ+DQogICA8YSBocmVmPSRhY3RpdmV1cmwvJGZpbGUgdGFyZ2V0PV9ibGFuaz48aW1nIHNyYz1pbWFnZXMvcGhwLmdpZiBib3JkZXI9MCB3aWR0aD0xNiBoZWlnaHQ9MTYgYWxpZ249YWJzbWlkZGxlPiRmaWxlPC9hPjwvdGQ+DQogICA8dGQ+JGZpbGVzaXplIEtCPC90ZD4NCiAgIDx0ZCBhbGlnbj0nY2VudGVyJz4kZmlsZXRpbWU8L3RkPg0KICAgPHRkPg0KICAgPGEgaHJlZj0nJGVkdXJsJz5b57yW6L6RXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1yZW5hbWUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+aUueWQjV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89ZGVsJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvliKDpmaRdPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPW1vdmUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+enu+WKqF08L2E+DQogICA8L3RkPg0KICAgPC90cj4iOw0KCQkkZmlsZXNbXSA9ICRsaW5lOw0KCX0NCgllbHNlIGlmKHByZWdfbWF0Y2goIiNcLihqcykjaSIsJGZpbGUpKQ0KCXsNCgkJJGVkdXJsID0gImZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89ZWRpdCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKTsNCgkJJGxpbmUgPSAiXG48dHIgYmdjb2xvcj0nI0ZGRkZGRicgaGVpZ2h0PScyNicgb25Nb3VzZU1vdmU9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7XCIgb25Nb3VzZU91dD1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJztcIj4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JGFjdGl2ZXVybC8kZmlsZSB0YXJnZXQ9X2JsYW5rPjxpbWcgc3JjPWltYWdlcy9qcy5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JyRlZHVybCc+W+e8lui+kV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZSBpZihwcmVnX21hdGNoKCIjXC4oY3NzKSNpIiwkZmlsZSkpDQoJew0KCQkkZWR1cmwgPSAiZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1lZGl0JmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpOw0KCQkkbGluZSA9ICJcbjx0ciBiZ2NvbG9yPScjRkZGRkZGJyBoZWlnaHQ9JzI2JyBvbk1vdXNlTW92ZT1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJztcIiBvbk1vdXNlT3V0PVwiamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnO1wiPg0KICAgPHRkPg0KICAgPGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+PGltZyBzcmM9aW1hZ2VzL2Nzcy5naWYgYm9yZGVyPTAgd2lkdGg9MTYgaGVpZ2h0PTE2IGFsaWduPWFic21pZGRsZT4kZmlsZTwvYT48L3RkPg0KICAgPHRkPiRmaWxlc2l6ZSBLQjwvdGQ+DQogICA8dGQgYWxpZ249J2NlbnRlcic+JGZpbGV0aW1lPC90ZD4NCiAgIDx0ZD4NCiAgIDxhIGhyZWY9JyRlZHVybCc+W+e8lui+kV08L2E+DQogICAmbmJzcDsNCiAgIDxhIGhyZWY9J2ZpbGVfbWFuYWdlX3ZpZXcucGhwP2ZtZG89cmVuYW1lJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvmlLnlkI1dPC9hPg0KICAgJm5ic3A7DQogICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICZuYnNwOw0KICAgPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1tb3ZlJmZpbGVuYW1lPSIudXJsZW5jb2RlKCRmaWxlKS4iJmFjdGl2ZXBhdGg9Ii51cmxlbmNvZGUoJGFjdGl2ZXBhdGgpLiInPlvnp7vliqhdPC9hPg0KICAgPC90ZD4NCiAgIDwvdHI+IjsNCgkJJGZpbGVzW10gPSAkbGluZTsNCgl9DQoJZWxzZQ0KCXsNCgkJJGxpbmUgPSAiXG48dHIgYmdjb2xvcj0nI0ZGRkZGRicgaGVpZ2h0PScyNicgb25Nb3VzZU1vdmU9XCJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7XCIgb25Nb3VzZU91dD1cImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJztcIj4NCiAgICA8dGQ+PGEgaHJlZj0kYWN0aXZldXJsLyRmaWxlIHRhcmdldD1fYmxhbms+JGZpbGU8L3RkPg0KICAgIDx0ZD4kZmlsZXNpemUgS0I8L3RkPg0KICAgIDx0ZCBhbGlnbj0nY2VudGVyJz4kZmlsZXRpbWU8L3RkPg0KICAgIDx0ZD4NCiAgICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPXJlbmFtZSZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5pS55ZCNXTwvYT4NCiAgICAmbmJzcDsNCiAgICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPWRlbCZmaWxlbmFtZT0iLnVybGVuY29kZSgkZmlsZSkuIiZhY3RpdmVwYXRoPSIudXJsZW5jb2RlKCRhY3RpdmVwYXRoKS4iJz5b5Yig6ZmkXTwvYT4NCiAgICAmbmJzcDsNCiAgICA8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPW1vdmUmZmlsZW5hbWU9Ii51cmxlbmNvZGUoJGZpbGUpLiImYWN0aXZlcGF0aD0iLnVybGVuY29kZSgkYWN0aXZlcGF0aCkuIic+W+enu+WKqF08L2E+DQogICAgPC90ZD4NCiAgICA8L3RyPiI7DQoJCSRmaWxlc1tdID0gJGxpbmU7DQoJfQ0KfQ0KJGRoLT5jbG9zZSgpOw0KZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikNCnsNCgllY2hvICRkaXI7DQp9DQpmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpDQp7DQoJZWNobyAkZmlsZTsNCn0NCj8+DQo8dHI+DQogIDx0ZCBjb2xzcGFuPSI0IiBoZWlnaHQ9JzI2JyBiZ2NvbG9yPScjRjlGQ0VGJz4NCiAgCTxhIGhyZWY9J2ZpbGVfbWFuYWdlX21haW4ucGhwJz5b5qC555uu5b2VXTwvYT4NCiAgCSZuYnNwOw0KICAJPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz1uZXdmaWxlJmFjdGl2ZXBhdGg9PD9waHAgZWNobyB1cmxlbmNvZGUoJGFjdGl2ZXBhdGgpPz4nPlvmlrDlu7rmlofku7ZdPC9hPg0KICAJJm5ic3A7DQogIAk8YSBocmVmPSdmaWxlX21hbmFnZV92aWV3LnBocD9mbWRvPW5ld2RpciZhY3RpdmVwYXRoPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRhY3RpdmVwYXRoKT8+Jz5b5paw5bu655uu5b2VXTwvYT4NCiAgCSZuYnNwOw0KICAJPGEgaHJlZj0nZmlsZV9tYW5hZ2Vfdmlldy5waHA/Zm1kbz11cGxvYWQmYWN0aXZlcGF0aD08P3BocCBlY2hvIHVybGVuY29kZSgkYWN0aXZlcGF0aCk/Pic+W+aWh+S7tuS4iuS8oF08L2E+DQogIAkmbmJzcDsNCiAgCTxhIGhyZWY9J2ZpbGVfbWFuYWdlX2NvbnRyb2wucGhwP2ZtZG89c3BhY2UmYWN0aXZlcGF0aD08P3BocCBlY2hvIHVybGVuY29kZSgkYWN0aXZlcGF0aCk/Pic+W+epuumXtOajgOafpV08L2E+DQogIAkmbmJzcDsmbmJzcDs8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjwvYm9keT4NCjwvaHRtbD4= - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5Zu+54mH5rWP6KeI5ZmoPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIGdldFBpYyhzdHIpDQp7DQoJdmFyIHNzID0gbmV3IEFycmF5KDMpOw0KCXNzID0gc3RyLnNwbGl0KCJAIik7DQoJd2luZG93Lm9wZW5lci5kb2N1bWVudC5mb3JtMS5pbWdzcmMudmFsdWU9c3NbMF07DQoJd2luZG93Lm9wZW5lci5kb2N1bWVudC5mb3JtMS5pbWd3aWR0aC52YWx1ZT1zc1sxXTsNCgl3aW5kb3cub3BlbmVyLmRvY3VtZW50LmZvcm0xLmltZ2hlaWdodC52YWx1ZT1zc1syXTsNCgl3aW5kb3cub3BlbmVyLmRvY3VtZW50LmZvcm0xLnBpY3ZpZXcuc3JjPXNzWzBdOw0KCXdpbmRvdy5vcGVuZXI9dHJ1ZTsNCiAgd2luZG93LmNsb3NlKCk7DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IGxlZnRtYXJnaW49IjAiIHRvcG1hcmdpbj0iMCI+DQo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCjxmb3JtIG5hbWU9ImZvcm0xIj4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjEwIiBjb2xzcGFuPSI8P3BocCBlY2hvICRsaXN0U2l6ZT8+Ij48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGNvbHNwYW49Ijw/cGhwIGVjaG8gJGxpc3RTaXplPz4iPg0KCTx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0NDQ0NDQyI+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGQgd2lkdGg9IjQlIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGOUY3IiBoZWlnaHQ9IjI0Ij48aW1nIHNyYz0iaW1hZ2VzL2ZpbGVfZGlyLmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij48L3RkPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iNTUlIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGOUY3Ij48aW5wdXQgbmFtZT0iYWN0aXZlcGF0aCIgdHlwZT0idGV4dCIgaWQ9InBhdGgiIHNpemU9IjMwIiAgc3R5bGU9ImhlaWdodDoxNXB0IiB2YWx1ZT0iPD9waHAgZWNobyAkYWN0aXZlcGF0aD8+Ij48L3RkPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiBiZ2NvbG9yPSIjRjlGOUY3Ij4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYlIj4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0NCUiPjxpbnB1dCBuYW1lPSJpbWFnZUZpZWxkIiB0eXBlPSJpbWFnZSIgc3JjPSJpbWFnZXMvbmV4dC5naWYiIHdpZHRoPSI1MiIgaGVpZ2h0PSIyMCIgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjA7aGVpZ2h0OjIwIj48L3RkPg0KDQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIj48YSBocmVmPSJmaWxlX21hbmFnZV9tYWluLnBocD9hY3RpdmVwYXRoPTw/cGhwIGVjaG8gJGFjdGl2ZXBhdGg/PiI+PGltZyBzcmM9ImltYWdlcy9maWxlX3ZpZXcuZ2lmIiB3aWR0aD0iNjAiIGhlaWdodD0iMjAiIGJvcmRlcj0iMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iMjIlIiBiZ2NvbG9yPSIjRjlGOUY3Ij4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTglIiBhbGlnbj0icmlnaHQiPjxpbWcgc3JjPSJpbWFnZXMvZmlsZV90b3BkaXIuZ2lmIiB3aWR0aD0iMTgiIGhlaWdodD0iMTciPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MiUiPjw/cGhwIEdldFByZVBhdGgoJGFjdGl2ZXBhdGgpOyA/PjwvdGQ+DQogICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8L3RhYmxlPjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICA8L3RhYmxlPjwvdGQ+DQogIDwvdHI+DQogIDx0cj48dGQgaGVpZ2h0PSI0IiBjb2xzcGFuPSI8P3BocCBlY2hvICRsaXN0U2l6ZT8+Ij48L3RkPjwvdHI+DQogIDw/cGhwIExpc3RQaWMoJHRydWVQYXRoLCRhY3RpdmVwYXRoKTsgPz4NCiAgPC9mb3JtPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4= - - - diff --git a/src/data/module/533c5b843ded8752b9857cc7c8e5b455.xml b/src/data/module/533c5b843ded8752b9857cc7c8e5b455.xml deleted file mode 100755 index 4c76705a..00000000 --- a/src/data/module/533c5b843ded8752b9857cc7c8e5b455.xml +++ /dev/null @@ -1,54 +0,0 @@ - - -name=德得广告模块 -team=织梦团队 -time=2017-03-07 -email=tianya@desdev.cn -url=http://ssp.desdev.cn -hash=533c5b843ded8752b9857cc7c8e5b455 -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=soft - - - -PG06dG9wIG5hbWU9J+W+t+W+l+W5v+WRiicgZGlzcGxheT0nYmxvY2snPg0KPG06aXRlbSBuYW1lPSflvrflvpfmqKHlnZcnIGxpbms9J21kYV9tYWluLnBocCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSflub/lkYrnrqHnkIYnIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9cGxhY2UnIHJhbms9J3BsdXNf5bm/5ZGK566h55CGJyB0YXJnZXQ9J21haW4nLz4NCjxtOml0ZW0gbmFtZT0n5p+l55yL5oql6KGoJyBsaW5rPSdtZGFfbWFpbi5waHA/ZG9wb3N0PXJlcG9ydCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSfnu5PnrpfkuK3lv4MnIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9YWNjb3VudCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSflvrflvpforr7nva4nIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9c2V0dGluZycgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPC9tOnRvcD4= - - -PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxwIHN0eWxlPSdsaW5lLWhlaWdodDoxNTAlJz48ZGl2IHN0eWxlPSdwYWRkaW5nLWxlZnQ6MjBweDtsaW5lLWhlaWdodDoxNTAlJz48YnIgLz48YnIgLz4NCjxwPueJiOadg+aJgOaciSAoYykyMDAzLTIwMTHvvIxEZWRlQ21zLmNvbSDkv53nlZnmiYDmnInmnYPliKnjgIIgPC9wPjxiciAvPjxiciAvPg0KPHA+5oSf6LCi5oKo6YCJ5oup57uH5qKm5YaF5a65566h55CG57O757uf77yI5Lul5LiL566A56ewRGVkZUNtc++8ie+8jERlZGVDbXPmmK/nm67liY3lm73lhoXmnIDlvLrlpKfjgIHmnIDnqLPlrprnmoTkuK3lsI/lnovpl6jmiLfnvZHnq5nlu7rorr7op6PlhrPmlrnmoYjkuYvkuIDvvIzlsYXkuo4gUEhQICsgTXlTUUwg55qE5oqA5pyv5byA5Y+R77yM5YWo6YOo5rqQ56CB5byA5pS+44CCRGVkZUNtcyDnmoTlrpjmlrnnvZHlnYDmmK/vvJogd3d3LmRlZGVjbXMuY29tICDkuqTmtYHorrrlnZvvvJogYmJzLmRlZGVjbXMuY29tPC9wPjxiciAvPjxiciAvPg0KPHA+5Li65LqG5L2/5L2g5q2j56Gu5bm25ZCI5rOV55qE5L2/55So5pys6L2v5Lu277yM6K+35L2g5Zyo5L2/55So5YmN5Yqh5b+F6ZiF6K+75riF5qWa5LiL6Z2i55qE5Y2P6K6u5p2h5qy+77yaPC9wPjxiciAvPjxiciAvPg0KPHA+PHN0cm9uZz7kuIDjgIHmnKzmjojmnYPljY/orq7pgILnlKjkuJTku4XpgILnlKjkuo4gRGVkZUNtcyA1LngueCDniYjmnKzvvIxEZWRlQ21z5a6Y5pa55a+55pys5o6I5p2D5Y2P6K6u55qE5pyA57uI6Kej6YeK5p2D44CCIDwvc3Ryb25nPjwvcD48YnIgLz48YnIgLz4NCjxwPjxzdHJvbmc+5LqM44CB5Y2P6K6u6K645Y+v55qE5p2D5YipIDwvc3Ryb25nPjxiciAvPjxiciAvPjxiciAvPg0KICAx44CB5oKo5Y+v5Lul5Zyo5a6M5YWo6YG15a6I5pys5pyA57uI55So5oi35o6I5p2D5Y2P6K6u55qE5Z+656GA5LiK77yM5bCG5pys6L2v5Lu25bqU55So5LqO6Z2e5ZWG5Lia55So6YCU77yM6ICM5LiN5b+F5pSv5LuY6L2v5Lu254mI5p2D5o6I5p2D6LS555So44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAy44CB5oKo5Y+v5Lul5Zyo5Y2P6K6u6KeE5a6a55qE57qm5p2f5ZKM6ZmQ5Yi26IyD5Zu05YaF5L+u5pS5IERlZGVDbXMg5rqQ5Luj56CB5oiW55WM6Z2i6aOO5qC85Lul6YCC5bqU5oKo55qE572R56uZ6KaB5rGC44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAz44CB5oKo5oul5pyJ5L2/55So5pys6L2v5Lu25p6E5bu655qE572R56uZ5YWo6YOo5YaF5a655omA5pyJ5p2D77yM5bm254us56uL5om/5ouF5LiO6L+Z5Lqb5YaF5a6555qE55u45YWz5rOV5b6L5LmJ5Yqh44CCIDxiciAvPjxiciAvPjxiciAvPg0KNOOAgeiOt+W+l+WVhuS4muaOiOadg+S5i+WQju+8jOaCqOWPr+S7peWwhuacrOi9r+S7tuW6lOeUqOS6juWVhuS4mueUqOmAlO+8jOWQjOaXtuS+neaNruaJgOi0reS5sOeahOaOiOadg+exu+Wei+S4reehruWumueahOaKgOacr+aUr+aMgeWGheWuue+8jOiHqui0reS5sOaXtuWIu+i1t++8jOWcqOaKgOacr+aUr+aMgeacn+mZkOWGheaLpeaciemAmui/h+aMh+WumueahOaWueW8j+iOt+W+l+aMh+WumuiMg+WbtOWGheeahOaKgOacr+aUr+aMgeacjeWKoeOAguWVhuS4muaOiOadg+eUqOaIt+S6q+acieWPjeaYoOWSjOaPkOWHuuaEj+ingeeahOadg+WKm++8jOebuOWFs+aEj+ingeWwhuiiq+S9nOS4uummluimgeiAg+iZke+8jOS9huayoeacieS4gOWumuiiq+mHh+e6s+eahOaJv+ivuuaIluS/neivgeOAgiA8L3A+PGJyIC8+PGJyIC8+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItiA8L3N0cm9uZz48YnIgLz48YnIgLz48YnIgLz4NCiAgMeOAgeacquiOt+WVhuS4muaOiOadg+S5i+WJje+8jOS4jeW+l+WwhuacrOi9r+S7tueUqOS6juWVhuS4mueUqOmAlO+8iOWMheaLrOS9huS4jemZkOS6juS8geS4mue9keermeOAgee7j+iQpeaAp+e9keermeOAgeS7peiQpeWIqeS4uuebrueahOaIluWunueOsOebiOWIqeeahOe9keerme+8ieOAgui0reS5sOWVhuS4muaOiOadg+ivt+eZu+mZhiBiYnMuZGVkZWNtcy5jb20g5LqG6Kej5pyA5paw6K+05piO44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAy44CB5pyq57uP5a6Y5pa56K645Y+v77yM5LiN5b6X5a+55pys6L2v5Lu25oiW5LiO5LmL5YWz6IGU55qE5ZWG5Lia5o6I5p2D6L+b6KGM5Ye656ef44CB5Ye65ZSu44CB5oq15oq85oiW5Y+R5pS+5a2Q6K645Y+v6K+B44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAz44CB5LiN566h5L2g55qE572R56uZ5piv5ZCm5pW05L2T5L2/55SoIERlZGVDbXMg77yM6L+Y5piv6YOo5Lu95qCP55uu5L2/55SoIERlZGVDbXPvvIzlnKjkvaDkvb/nlKjkuoYgRGVkZUNtcyDnmoTnvZHnq5nkuLvpobXkuIrlv4XpobvliqDkuIogRGVkZUNtcyDlrpjmlrnnvZHlnYAod3d3LmRlZGVjbXMuY29tKeeahOmTvuaOpeOAgiA8YnIgLz48YnIgLz48YnIgLz4NCiAgNOOAgeacque7j+WumOaWueiuuOWPr++8jOemgeatouWcqCBEZWRlQ21zIOeahOaVtOS9k+aIluS7u+S9lemDqOWIhuWfuuehgOS4iuS7peWPkeWxleS7u+S9lea0vueUn+eJiOacrOOAgeS/ruaUueeJiOacrOaIluesrOS4ieaWueeJiOacrOeUqOS6jumHjeaWsOWIhuWPkeOAgiA8YnIgLz48YnIgLz48YnIgLz4NCjXjgIHlpoLmnpzmgqjmnKrog73pgbXlrojmnKzljY/orq7nmoTmnaHmrL7vvIzmgqjnmoTmjojmnYPlsIbooqvnu4jmraLvvIzmiYDooqvorrjlj6/nmoTmnYPliKnlsIbooqvmlLblm57vvIzlubbmib/mi4Xnm7jlupTms5XlvovotKPku7vjgIIgPC9wPjxiciAvPjxiciAvPg0KPHA+PHN0cm9uZz7kuInjgIHmnInpmZDmi4Xkv53lkozlhY3otKPlo7DmmI4gPC9zdHJvbmc+PGJyIC8+PGJyIC8+PGJyIC8+DQogIDHjgIHmnKzova/ku7blj4rmiYDpmYTluKbnmoTmlofku7bmmK/kvZzkuLrkuI3mj5Dkvpvku7vkvZXmmI7noa7nmoTmiJbpmpDlkKvnmoTotZTlgb/miJbmi4Xkv53nmoTlvaLlvI/mj5DkvpvnmoTjgIIgPGJyIC8+PGJyIC8+PGJyIC8+DQogIDLjgIHnlKjmiLflh7rkuo7oh6rmhL/ogIzkvb/nlKjmnKzova/ku7bvvIzmgqjlv4Xpobvkuobop6Pkvb/nlKjmnKzova/ku7bnmoTpo47pmanvvIzlnKjlsJrmnKrotK3kubDkuqflk4HmioDmnK/mnI3liqHkuYvliY3vvIzmiJHku6zkuI3mib/or7rlr7nlhY3otLnnlKjmiLfmj5Dkvpvku7vkvZXlvaLlvI/nmoTmioDmnK/mlK/mjIHjgIHkvb/nlKjmi4Xkv53vvIzkuZ/kuI3mib/mi4Xku7vkvZXlm6Dkvb/nlKjmnKzova/ku7bogIzkuqfnlJ/pl67popjnmoTnm7jlhbPotKPku7vjgIIgPGJyIC8+PGJyIC8+PGJyIC8+DQogIDPjgIHnlLXlrZDmlofmnKzlvaLlvI/nmoTmjojmnYPljY/orq7lpoLlkIzlj4zmlrnkuabpnaLnrb7nvbLnmoTljY/orq7kuIDmoLfvvIzlhbfmnInlrozlhajnmoTlkoznrYnlkIznmoTms5XlvovmlYjlipvjgILmgqjkuIDml6blvIDlp4vnoa7orqTmnKzljY/orq7lubblronoo4UgRGVkZUNtc++8jOWNs+iiq+inhuS4uuWujOWFqOeQhuino+W5tuaOpeWPl+acrOWNj+iurueahOWQhOmhueadoeasvu+8jOWcqOS6q+acieS4iui/sOadoeasvuaOiOS6iOeahOadg+WKm+eahOWQjOaXtu+8jOWPl+WIsOebuOWFs+eahOe6puadn+WSjOmZkOWItuOAguWNj+iuruiuuOWPr+iMg+WbtOS7peWklueahOihjOS4uu+8jOWwhuebtOaOpei/neWPjeacrOaOiOadg+WNj+iuruW5tuaehOaIkOS+teadg++8jOaIkeS7rOacieadg+maj+aXtue7iOatouaOiOadg++8jOi0o+S7pOWBnOatouaNn+Wus++8jOW5tuS/neeVmei/veeptuebuOWFs+i0o+S7u+eahOadg+WKm+OAgiA8YnIgLz48YnIgLz48YnIgLz4NCjTjgIHlpoLmnpzmnKzova/ku7bluKbmnInlhbblroPova/ku7bnmoTmlbTlkIhBUEnnpLrojIPkvovlrZDljIXvvIzov5nkupvmlofku7bniYjmnYPkuI3lsZ7kuo7mnKzova/ku7blrpjmlrnvvIzlubbkuJTov5nkupvmlofku7bmmK/msqHnu4/ov4fmjojmnYPlj5HluIPnmoTvvIzor7flj4LogIPnm7jlhbPova/ku7bnmoTkvb/nlKjorrjlj6/lkIjms5XnmoTkvb/nlKjjgII8L3A+PGJyIC8+PGJyIC8+DQo8cD7ljY/orq7lj5HluIPml7bpl7TvvJogIDIwMDflubQxMuaciDHml6UgQnkgRGVkZUNtcy5jb208L3A+PGJyIC8+PGJyIC8+DQo8cD48L3A+PC9wPjwvcD4= - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX21kYV9zZXR0aW5nYDsNCkNSRUFURSBUQUJMRSBgI0BfX3BsdXNfbWRhX3NldHRpbmdgICgNCglgc2tleWAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMIERFRkFVTFQgJycsDQoJYHN2YWx1ZWAgVEVYVCBOT1QgTlVMTCwNCglgc3RpbWVgIElOVCgxMCkgTk9UIE5VTEwsDQoJUFJJTUFSWSBLRVkgKGBza2V5YCkNCilUWVBFPU15SVNBTTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ3ZlcnNpb24nLCAnMC4wLjEnLCAwKTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ2NoYW5uZWxfdXVpZCcsICcnLCAwKTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ2NoYW5uZWxfc2VjcmV0JywgJycsIDApOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzX21kYV9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTICgnZW1haWwnLCAnJywgMCk7 - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX21kYV9zZXR0aW5nYDs= - - - - - - - - -../include/helpers/mda.helper.php -../include/taglib/mda.lib.php -mda_main.php - - - - - -PD9waHAgaWYoIWRlZmluZWQoJ0RFREVJTkMnKSkgZXhpdCgnZGVkZWNtcycpOwoKZGVmaW5lKCdNREFfQVBJSE9TVCcsICdodHRwOi8vc3NwLmRlc2Rldi5jbicpOwoKZGVmaW5lKCdNREFfSlFVRVJZJywgTURBX0FQSUhPU1QuJy9hc3NldHMvanMvanF1ZXJ5Lm1pbi5qcycpOwpkZWZpbmUoJ01EQV9SRUdfVVJMJywgTURBX0FQSUhPU1QuJy9ob21lL3JlZ2lzdGVyJyk7CmRlZmluZSgnTURBX0ZPUkdPVF9QQVNTV09SRF9VUkwnLCBNREFfQVBJSE9TVC4nL2hvbWUvZm9yZ290X3Bhc3N3b3JkJyk7CmRlZmluZSgnTURBX1VQREFURV9VUkwnLCBNREFfQVBJSE9TVC4nL2hvbWUvdXBkYXRlJyk7CgpkZWZpbmUoJ01EQV9BUElfQklORF9VU0VSJywgTURBX0FQSUhPU1QuJy9hcGlfdjEvZGVkZWNtcy9iaW5kX3VzZXInKTsKZGVmaW5lKCdNREFfQVBJX0xPR0lOJywgTURBX0FQSUhPU1QuJy9hcGlfdjEvZGVkZWNtcy9sb2dpbicpOwpkZWZpbmUoJ01EQV9BUElfQ0hFQ0tfTE9HSU4nLCBNREFfQVBJSE9TVC4nL2FwaV92MS9kZWRlY21zL2NoZWNrX2xvZ2luJyk7CmRlZmluZSgnTURBX0FQSV9HRVRfUExBQ0UnLCBNREFfQVBJSE9TVC4nL2FwaV92MS9kZWRlY21zL2dldF9wbGFjZScpOwoKZGVmaW5lKCdNREFfVkVSJywgJzAuMC4xJyk7CgpmdW5jdGlvbiBtZGFfaHR0cF9zZW5kKCR1cmwsICRsaW1pdD0wLCAkcG9zdD0nJywgJGNvb2tpZT0nJywgJHRpbWVvdXQ9MTUpCnsKICAgICRyZXR1cm4gPSAnJzsKICAgICRtYXRjaGVzID0gcGFyc2VfdXJsKCR1cmwpOwogICAgJHNjaGVtZSA9ICRtYXRjaGVzWydzY2hlbWUnXTsKICAgICRob3N0ID0gJG1hdGNoZXNbJ2hvc3QnXTsKICAgICRwYXRoID0gJG1hdGNoZXNbJ3BhdGgnXSA/ICRtYXRjaGVzWydwYXRoJ10uKEAkbWF0Y2hlc1sncXVlcnknXSA/ICc/Jy4kbWF0Y2hlc1sncXVlcnknXSA6ICcnKSA6ICcvJzsKICAgICRwb3J0ID0gIWVtcHR5KCRtYXRjaGVzWydwb3J0J10pID8gJG1hdGNoZXNbJ3BvcnQnXSA6IDgwOwoKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkc2NoZW1lLic6Ly8nLiRob3N0Lic6Jy4kcG9ydC4kcGF0aCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwogICAgICAgIGlmICgkcG9zdCkgewogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7CiAgICAgICAgICAgICRjb250ZW50ID0gaXNfYXJyYXkoJHBvc3QpID8gaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkgOiAkcG9zdDsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIHVybGRlY29kZSgkY29udGVudCkpOwogICAgICAgIH0KICAgICAgICBpZiAoJGNvb2tpZSkgewogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFLCAkY29va2llKTsKICAgICAgICB9CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAkdGltZW91dCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDkwMCk7CiAgICAgICAgJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkc3RhdHVzID0gY3VybF9nZXRpbmZvKCRjaCk7CiAgICAgICAgJGVycm5vID0gY3VybF9lcnJubygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICAKICAgICAgICBpZiAoJGVycm5vICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICEkbGltaXQgPyAkZGF0YSA6IHN1YnN0cigkZGF0YSwgMCwgJGxpbWl0KTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRwb3N0KSB7CiAgICAgICAgJGNvbnRlbnQgPSBpc19hcnJheSgkcG9zdCkgPyB1cmxkZWNvZGUoaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkpIDogJHBvc3Q7CiAgICAgICAgJG91dCA9ICJQT1NUICRwYXRoIEhUVFAvMS4wXHJcbiI7CiAgICAgICAgJGhlYWRlciA9ICJBY2NlcHQ6ICovKlxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkFjY2VwdC1MYW5ndWFnZTogemgtY25cclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGNvbnRlbnQpLiJcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiQ29va2llOiAkY29va2llXHJcblxyXG4iOwogICAgICAgICRvdXQgLj0gJGhlYWRlci4kY29udGVudDsKICAgIH0gZWxzZSB7CiAgICAgICAgJG91dCA9ICJHRVQgJHBhdGggSFRUUC8xLjBcclxuIjsKICAgICAgICAkaGVhZGVyID0gIkFjY2VwdDogKi8qXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiQWNjZXB0LUxhbmd1YWdlOiB6aC1jblxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkNvb2tpZTogJGNvb2tpZVxyXG5cclxuIjsKICAgICAgICAkb3V0IC49ICRoZWFkZXI7CiAgICB9CgogICAgJGZwZmxhZyA9IDA7CiAgICAkZnAgPSBmYWxzZTsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2Zzb2NrZXRvcGVuJykpIHsKICAgICAgICAkZnAgPSBmc29ja2V0b3BlbigkaG9zdCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgJHRpbWVvdXQpOwogICAgfQogICAgaWYgKCEkZnApIHsKICAgICAgICAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJHBvc3QgPyAnUE9TVCcgOiAnR0VUJywKICAgICAgICAgICAgICAgICdoZWFkZXInID0+ICRoZWFkZXIsCiAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJGNvbnRlbnQsCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gJHRpbWVvdXQsCiAgICAgICAgICAgICksCiAgICAgICAgKSk7CiAgICAgICAgJGZwID0gQGZvcGVuKCRzY2hlbWUuJzovLycuJGhvc3QuJzonLiRwb3J0LiRwYXRoLCAnYicsIGZhbHNlLCAkY29udGV4dCk7CiAgICAgICAgJGZwZmxhZyA9IDE7CiAgICB9CgogICAgaWYgKCEkZnApIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9IGVsc2UgewogICAgICAgIHN0cmVhbV9zZXRfYmxvY2tpbmcoJGZwLCB0cnVlKTsKICAgICAgICBzdHJlYW1fc2V0X3RpbWVvdXQoJGZwLCAkdGltZW91dCk7CiAgICAgICAgQGZ3cml0ZSgkZnAsICRvdXQpOwogICAgICAgICRzdGF0dXMgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOwogICAgICAgIGlmICghJHN0YXR1c1sndGltZWRfb3V0J10pIHsKICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmcCkgJiYgISRmcGZsYWcpIHsKICAgICAgICAgICAgICAgIGlmICgoJGhlYWRlciA9IEBmZ2V0cygkZnApKSAmJiAoJGhlYWRlciA9PSAiXHJcbiIgfHwgICRoZWFkZXIgPT0gIlxuIikpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGxpbWl0KSB7CiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnAsICRsaW1pdCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBmY2xvc2UoJGZwKTsKICAgICAgICByZXR1cm4gJHJldHVybjsKICAgIH0KfQoKZnVuY3Rpb24gbWRhX2dldF9zZXR0aW5nKCRza2V5LCAkdGltZT1mYWxzZSwgJHJlYWw9ZmFsc2UpCnsKICAgIGdsb2JhbCAkZHNxbDsKICAgIHN0YXRpYyAkc2V0dGluZyA9IGFycmF5KCk7CiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsKICAgIGlmIChlbXB0eSgkc2V0dGluZ1skc2tleV0pIHx8ICRyZWFsKSB7CiAgICAgICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gYCNAX19wbHVzX21kYV9zZXR0aW5nYCBXSEVSRSBza2V5PSd7JHNrZXl9JyIpOwogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ109JHJvd1snc3ZhbHVlJ107CiAgICAgICAgJHNldHRpbmdbJHNrZXldWydzdGltZSddPSRyb3dbJ3N0aW1lJ107CiAgICB9CiAgICBpZiAoIWlzc2V0KCRzZXR0aW5nWyRza2V5XSkpIHJldHVybiAkdGltZSA/IGFycmF5KCkgOiBudWxsOwogICAgaWYgKCAkc2tleSA9PSAnY2hhbm5lbF91dWlkJyBBTkQgZW1wdHkoJHNldHRpbmdbJHNrZXldWydzdmFsdWUnXSkgKSByZXR1cm4gJzU4Yjc4MzE5YTBlZmUnOwogICAgaWYgKCAkc2tleSA9PSAnY2hhbm5lbF9zZWNyZXQnIEFORCBlbXB0eSgkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddKSApIHJldHVybiAnbERROTdMSWI0Tlh3Q1Yyeic7CiAgICByZXR1cm4gJHRpbWUgPyAkc2V0dGluZ1skc2tleV0gOiAkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddOwp9CgpmdW5jdGlvbiBtZGFfc2V0X3NldHRpbmcoJHNrZXksICRzdmFsdWUpCnsKICAgIGdsb2JhbCAkZHNxbDsKICAgICRzdGltZT10aW1lKCk7CiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsKICAgICRzdmFsdWU9YWRkc2xhc2hlcygkc3ZhbHVlKTsKICAgICRzcWw9IlVQREFURSBgI0BfX3BsdXNfbWRhX3NldHRpbmdgIFNFVCBzdmFsdWU9J3skc3ZhbHVlfScsc3RpbWU9J3skc3RpbWV9JyBXSEVSRSBza2V5PSd7JHNrZXl9JyAiOwogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHNxbCk7Cn0KCmZ1bmN0aW9uIG1kYV9jaGVja19pc2xvZ2luKCkKewogICAgZ2xvYmFsICRkb3Bvc3Q7CiAgICAkanF1ZXJ5X3VybCA9IE1EQV9KUVVFUlk7CiAgICAkbWRhX2xvZ2luPU1EQV9BUElfQ0hFQ0tfTE9HSU47CiAgICBlY2hvIDw8PEVPVAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JGpxdWVyeV91cmx9Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgooZnVuY3Rpb24oJCl7CiAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgIHVybDogInskbWRhX2xvZ2lufSIsCiAgICAgICAgZGF0YVR5cGUgOiAnanNvbnAnLAogICAgICAgIGpzb25wQ2FsbGJhY2s6ImNhbGxmdW5jIiwKICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihtc2cpewogICAgICAgICAgICBpZihtc2cuY29kZSAhPSAwKXsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PWxvZ2luJm5vbXNnPXllcyZmb3J3YXJkPXskZG9wb3N0fSc7CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCBtc2cgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwp9KShqUXVlcnkpCjwvc2NyaXB0PiAgICAKRU9UOwogICAgLy9leGl0Owp9CgpmdW5jdGlvbiBtZGFfaXNsb2dpbigpCnsKICAgIGlmKGVtcHR5KCRfU0VTU0lPTlsnbWRhX2VtYWlsJ10pKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgJGVtYWlsID0gbWRhX2dldF9zZXR0aW5nKCdlbWFpbCcpOwogICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7CiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7CiAgICBpZihlbXB0eSgkZW1haWwpIE9SIGVtcHR5KCRjaGFubmVsX3V1aWQpIE9SIGVtcHR5KCRjaGFubmVsX3V1aWQpKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgcmV0dXJuIFRSVUU7Cn0KPz4K - - -PD9waHAgICBpZighZGVmaW5lZCgnREVERUlOQycpKSBleGl0KCdSZXF1ZXN0IEVycm9yIScpOwoKaGVscGVyKCdtZGEnKTsKaGVscGVyKCdjYWNoZScpOwoKZnVuY3Rpb24gbGliX21kYSgmJGN0YWcsJiRyZWZPYmopCnsKICAgIGdsb2JhbCAkZHNxbCwgJGVudnMsICRjZmdfc29mdF9sYW5nOwogICAgLy/lsZ7mgKflpITnkIYKICAgICR0eXBlID0gZW1wdHkoJHR5cGUpPyAnY29kZScgOiAkdHlwZTsKICAgICRjbGFzcyA9IGVtcHR5KCRjbGFzcyk/ICdfREVERUNZJyA6ICRjbGFzczsKICAgICR2ZXJzaW9uID0gTURBX1ZFUjsKICAgICRhdHRsaXN0PSJ1dWlkfCxuYW1lfCI7CiAgICBGaWxsQXR0c0RlZmF1bHQoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCRhdHRsaXN0KTsKICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOwoKICAgIGlmICggZW1wdHkoJHV1aWQpIEFORCBlbXB0eSgkbmFtZSkgKSByZXR1cm4gJ+Whq+WGmeato+ehrueahHV1aWQg5oiWIG5hbWUnOwogICAgCiAgICAkcmV2YWw9IiI7CiAgICAKICAgIC8vaWYoICEkZHNxbC0+SXNUYWJsZSgiI0BfX3BsdXNfbWRhX3NldHRpbmciKSApIHJldHVybiAn5rKh5a6J6KOFPGEgaHJlZj0iJy5NREFfQVBJSE9TVC4nIiB0YXJnZXQ9Il9ibGFuayI+5b635b6X5bm/5ZGK5qih5Z2XPC9hPic7CiAgICAKICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsKICAgICRjaGFubmVsX3V1aWQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfdXVpZCcpOwogICAgCiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7CiAgICAgICAgCiAgICAvL2lmKGVtcHR5KCRjaGFubmVsX3V1aWQpKSByZXR1cm4gJ+Wwmuacque7keWumuW+t+W+l+W5v+WRiui0puWPt++8jOivtzxhIGhyZWY9IicuTURBX0FQSUhPU1QuJy9ob21lL3JlZ2lzdGVyIiB0YXJnZXQ9Il9ibGFuayI+5rOo5YaMPC9hPuW5tuWIsOezu+e7n+WQjuWPsOe7keWumic7CiAgICAKICAgICRwcmVmaXggPSAnbWRhJzsKICAgICRrZXkgPSAnY29kZScubWQ1KCR1dWlkLiRuYW1lKTsKICAgICRyb3cgPSBHZXRDYWNoZSgkcHJlZml4LCAka2V5KTsKCiAgICBpZighaXNfYXJyYXkoJHJvdykpCiAgICB7CiAgICAgICAgJHRzID0gdGltZSgpOwogICAgICAgICRwYXJhbXNBcnI9YXJyYXkoCiAgICAgICAgICAgICdjaGFubmVsX3V1aWQnPT4kY2hhbm5lbF91dWlkLCAKICAgICAgICAgICAgJ2NoYW5uZWxfc2VjcmV0Jz0+JGNoYW5uZWxfc2VjcmV0LAogICAgICAgICAgICAndHMnPT4kdHMsCiAgICAgICAgICAgICdjcmMnPT5tZDUoJGNoYW5uZWxfdXVpZC4kY2hhbm5lbF9zZWNyZXQuJHRzKSwKICAgICAgICApOwogICAgICAgIGlmICggIWVtcHR5KCR1dWlkKSApCiAgICAgICAgewogICAgICAgICAgICAkcGFyYW1zQXJyWydwbGFjZV91dWlkJ10gPSAkdXVpZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGFyYW1zQXJyWyd0YWdfbmFtZSddID0gdXJsZW5jb2RlKCRuYW1lKTsKICAgICAgICB9CgogICAgICAgICRwbGFjZSA9IGpzb25fZGVjb2RlKG1kYV9odHRwX3NlbmQoTURBX0FQSV9HRVRfUExBQ0UsMCwkcGFyYW1zQXJyKSxUUlVFKTsKICAgICAgICAKICAgICAgICBpZiAoIWlzc2V0KCRwbGFjZVsnZGF0YSddWydwbGFjZV9jb2RlJ10pICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAn5bm/5ZGK5L2NQVBJ5o6l5Y+j6YCa5L+h6ZSZ6K+v77yM5p+l55yLPGEgaHJlZj0iJy5NREFfQVBJSE9TVC4nL2hlbHAvYXBpY29kZS8nLiRwbGFjZVsnY29kZSddLiciIHRhcmdldD0iX2JsYW5rIj7lvrflvpflub/lkYo8L2E+6I635Y+W5biu5YqpJzsKICAgICAgICB9CiAgICAKICAgICAgICAkcm93WydyZXZhbCddID0gaHRtbHNwZWNpYWxjaGFycygkcGxhY2VbJ2RhdGEnXVsncGxhY2VfY29kZSddKTsKICAgICAgICBTZXRDYWNoZSgkcHJlZml4LCAka2V5LCAkcm93LCA2MCo2MCoxMik7CiAgICB9CgogICAgaWYoJGNmZ19zb2Z0X2xhbmcgIT0gJ3V0Zi04JykgJHJvdyA9IEF1dG9DaGFyc2V0KCRyb3csICd1dGYtOCcsICdnYjIzMTInKTsKICAgIAogICAgJHJldmFsIC49IGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCRyb3dbJ3JldmFsJ10pOwogICAgICAgIAogICAgcmV0dXJuICRyZXZhbDsKfQoK - - -PD9waHANCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2NvbmZpZy5waHAnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvb3h3aW5kb3cuY2xhc3MucGhwIik7DQoNCmhlbHBlcignbWRhJyk7DQoNCiRpbnN0YWxsX3NxbHMgPSBhcnJheSgNCiJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgI0BfX3BsdXNfbWRhX3NldHRpbmdgICgNCiAgYHNrZXlgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBERUZBVUxUICcnLA0KICBgc3ZhbHVlYCB0ZXh0IE5PVCBOVUxMLA0KICBgc3RpbWVgIGludCgxMCkgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgc2tleWApDQopIFRZUEU9TXlJU0FNOyIsDQoiSU5TRVJUIElOVE8gYCNAX19wbHVzX21kYV9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTDQooJ3ZlcnNpb24nLCAnMC4wLjEnLCAwKSwNCignY2hhbm5lbF91dWlkJywgJzAnLCAwKSwNCignY2hhbm5lbF9zZWNyZXQnLCAnMCcsIDApLA0KKCdlbWFpbCcsICcwJywgMCk7IiwNCik7DQoNCiR1cGRhdGVfc3FscyA9IGFycmF5KA0KKTsNCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2luc3RhbGwoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQppZiAoISAkZHNxbC0+SXNUYWJsZSgnI0BfX3BsdXNfbWRhX3NldHRpbmcnKSApDQp7DQogICAgJG15c3FsX3ZlcnNpb24gPSAkZHNxbC0+R2V0VmVyc2lvbihUUlVFKTsNCiAgICANCiAgICBmb3JlYWNoKCAkaW5zdGFsbF9zcWxzIGFzICRpbnN0YWxsX3NxbCApDQogICAgew0KICAgICAgICAkc3FsID0gcHJlZ19yZXBsYWNlKCIjRU5HSU5FPU15SVNBTSNpIiwgJ1RZUEU9TXlJU0FNJywgJGluc3RhbGxfc3FsKTsNCiAgICAgICAgJHNxbDQxdG1wID0gJ0VOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPScuJGNmZ19kYl9sYW5ndWFnZTsNCiAgICAgICAgDQogICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHNxbCA9IHByZWdfcmVwbGFjZSgiI1RZUEU9TXlJU0FNI2kiLCAkc3FsNDF0bXAsICRzcWwpOw0KICAgICAgICB9DQogICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRzcWwpOw0KICAgIH0NCg0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX3VwZGF0ZSgpeyAgfQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCiR2ZXJzaW9uPW1kYV9nZXRfc2V0dGluZygndmVyc2lvbicpOw0KaWYgKGVtcHR5KCR2ZXJzaW9uKSkgJHZlcnNpb24gPSAnMC4wLjEnOw0KaWYgKHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbiwgTURBX1ZFUiwgJzwnKSkgew0KICAgICRteXNxbF92ZXJzaW9uID0gJGRzcWwtPkdldFZlcnNpb24oVFJVRSk7DQoNCiAgICBmb3JlYWNoICgkdXBkYXRlX3NxbHMgYXMgJHZlciA9PiAkc3Fscykgew0KICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKCR2ZXIsICR2ZXJzaW9uLCc8JykpIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRzcWxzIGFzICRzcWwpIHsNCiAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIiNFTkdJTkU9TXlJU0FNI2kiLCAnVFlQRT1NeUlTQU0nLCAkc3FsKTsNCiAgICAgICAgICAgICRzcWw0MXRtcCA9ICdFTkdJTkU9TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD0nLiRjZmdfZGJfbGFuZ3VhZ2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc3FsID0gcHJlZ19yZXBsYWNlKCIjVFlQRT1NeUlTQU0jaSIsICRzcWw0MXRtcCwgJHNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkc3FsKTsNCiAgICAgICAgfQ0KICAgICAgICBtZGFfc2V0X3NldHRpbmcoJ3ZlcnNpb24nLCAkdmVyKTsNCiAgICAgICAgJHZlcnNpb249bWRhX2dldF9zZXR0aW5nKCd2ZXJzaW9uJyk7DQogICAgfQ0KfQ0KDQppZihlbXB0eSgkZG9wb3N0KSkgJGRvcG9zdCA9ICcnOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2xpbmsoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KaWYoJGRvcG9zdCA9PSAncGxhY2UnIE9SICRkb3Bvc3QgPT0gJ3JlcG9ydCcgT1IgJGRvcG9zdCA9PSAnYWNjb3VudCcgT1IgJGRvcG9zdCA9PSAnc2V0dGluZycpDQp7DQogICAgaWYgKCAhbWRhX2lzbG9naW4oKSApDQogICAgew0KICAgICAgICBTaG93TXNnKCLmgqjlsJrmnKrnmbvlvZXlvrflvpflub/lkYrvvIzor7flhYjnmbvlvZXlkI7nu6fnu63kvb/nlKjigKbigKbvvIEiLCc/ZG9wb3N0PWxvZ2luJyk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgbWRhX2NoZWNrX2lzbG9naW4oKTsNCg0KICAgIGlmKCRkb3Bvc3Q9PSdwbGFjZScpIA0KICAgIHsNCiAgICAgICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7DQogICAgICAgICRtYW5hZ2VfdXJsID0gTURBX0FQSUhPU1QuIi9wbGFjZT9mcm9tPWRlZGVjbXMmdXVpZD17JGNoYW5uZWxfdXVpZH0iOw0KICAgICAgICAkcHRpdGxlID0gJ+W5v+WRiueuoeeQhic7DQogICAgfSBlbHNlaWYgKCRkb3Bvc3Q9PSdyZXBvcnQnKQ0KICAgIHsNCiAgICAgICAgJG1hbmFnZV91cmwgPSBNREFfQVBJSE9TVC4iL3JlcG9ydCI7DQogICAgICAgICRwdGl0bGUgPSAn5oql6KGo566h55CGJzsNCiAgICB9IGVsc2VpZiAoJGRvcG9zdD09J2FjY291bnQnKQ0KICAgIHsNCiAgICAgICAgJG1hbmFnZV91cmwgPSBNREFfQVBJSE9TVC4iL2FjY291bnQiOw0KICAgICAgICAkcHRpdGxlID0gJ+e7k+eul+S4reW/gyc7DQogICAgfSBlbHNlaWYgKCRkb3Bvc3Q9PSdzZXR0aW5nJykNCiAgICB7DQogICAgICAgICRtYW5hZ2VfdXJsID0gTURBX0FQSUhPU1QuIi9zZXR0aW5nIjsNCiAgICAgICAgJHB0aXRsZSA9ICflvrflvpforr7nva4nOw0KICAgIH0NCg0KICAgIGVjaG8gPDw8RU9UDQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+DQo8dGl0bGU+eyRwdGl0bGV9PC90aXRsZT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9iYXNlLmNzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSI4IiB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIiBoZWlnaHQ9IjEwMCUiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJz4NCiAgICANCiAgICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0Ij4mbmJzcDs8Yj7il4c8YSBocmVmPSI/Ij7lvrflvpflub/lkYo8L2E+IOOAi3skcHRpdGxlfTwvYj48L2Rpdj4NCiAgICA8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6MjBweDsiPuaCqOWlve+8mnskX1NFU1NJT05bJ21kYV9lbWFpbCddfSB7JGFjY291bnRfc3RyfTwvZGl2Pg0KICAgIDwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmFsaWduPSJ0b3AiIGJnY29sb3I9JyNmZmZmZmYnIHN0eWxlPSJwYWRkaW5nLXRvcDo1cHgiPjx0YWJsZSB3aWR0aD0nMTAwJScgIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzMnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjREFEQURBJyBoZWlnaHQ9IjEwMCUiPg0KICAgICAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+DQogICAgICAgICAgPHRkIGNvbHNwYW49JzInIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+eyRwdGl0bGV9PC9iPjwvZm9udD48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICB7JGFkZHN0cn0NCiAgICAgICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPg0KICAgICAgICAgIDx0ZCBjb2xzcGFuPScyJyBoZWlnaHQ9JzEwMCUnPjxpZnJhbWUgc3JjPSJ7JG1hbmFnZV91cmx9IiB7JGFkZHN0eWxlfSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzdHlsZT0iYm9yZGVyOm5vbmUiIG9ubG9hZD0iaWYodGhpcy5wb3N0TWVzc2FnZSl7dGhpcy5wb3N0TWVzc2FnZSgnb2snKX0iPjwvaWZyYW1lPjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGQgYmdjb2xvcj0nI0Y1RjVGNSc+Jm5ic3A7PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGFibGU+PC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8cCBhbGlnbj0iY2VudGVyIj4gPGJyPg0KICA8YnI+DQo8L3A+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCkVPVDsNCn0NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9fY2xlYXJjYWNoZSgpeyAgfQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQplbHNlIGlmKCRkb3Bvc3QgPT0gJ2NsZWFyY2FjaGUnKXsNCiAgICBpZiAoIWlzX2RpcihERURFREFUQSAuICIvY2FjaGUvbWRhLyIpIE9SICBSbVJlY3Vyc2UoREVERURBVEEgLiAiL2NhY2hlL21kYS8iKSApDQogICAgew0KICAgICAgICBTaG93TXNnKCLmiJDlip/muIXpmaTnvJPlrZjkv6Hmga8iLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIFNob3dNc2coIua4hemZpOe8k+WtmOWksei0pe+8jOivt+WwneivleaJi+W3peWIoOmZpCIuREVERURBVEEuIi9jYWNoZS9tZGEvIiwgJ2phdmFzY3JpcHQ6OycpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KfQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX19iaW5kX3VzZXIoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSBpZigkZG9wb3N0ID09ICdiaW5kX3VzZXInKQ0Kew0KICAgICRlbWFpbCA9IGlzc2V0KCRlbWFpbCk/ICRlbWFpbCA6ICcnOw0KICAgICRwd2QgPSBpc3NldCgkcHdkKT8gJHB3ZCA6ICcnOw0KICAgICRkb21haW4gPSBpc3NldCgkZG9tYWluKT8gJGRvbWFpbiA6ICcnOw0KICAgICRjaGFubmVsX25hbWUgPSBpc3NldCgkY2hhbm5lbF9uYW1lKT8gJGNoYW5uZWxfbmFtZSA6ICcnOw0KICAgIGlmICggISRlbWFpbCBPUiAhJHB3ZCBPUiAhJGRvbWFpbiBPUiAhJGNoYW5uZWxfbmFtZSkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuWhq+WGmeato+ehrueahOi0puWPt+S/oeaBr++8gSIsLTEpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIGlmKCRjZmdfc29mdF9sYW5nPT0nZ2IyMzEyJykgJGNoYW5uZWxfbmFtZSA9IGdiMnV0ZjgoJGNoYW5uZWxfbmFtZSk7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2VtYWlsJz0+JGVtYWlsLCANCiAgICAgICAgJ3Bhc3N3b3JkJz0+JHB3ZCwNCiAgICAgICAgJ2RvbWFpbic9PiRkb21haW4sDQogICAgICAgICdjaGFubmVsX25hbWUnPT4kY2hhbm5lbF9uYW1lLA0KICAgICk7DQogICAgJHJzID0ganNvbl9kZWNvZGUobWRhX2h0dHBfc2VuZChNREFfQVBJX0JJTkRfVVNFUiwwLCRwYXJhbXNBcnIpLFRSVUUpOw0KICAgIGlmICggISRycyApDQogICAgew0KICAgICAgICBTaG93TXNnKCLor7fmsYJBUEnplJnor6/vvIzor7fph43or5XvvIEiLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBpZiAoICRyc1snY29kZSddICE9IDAgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi6K+35rGC5aSx6LSl77yM6ZSZ6K+v5Luj56CBW2NvZGU6eyRyc1snY29kZSddfV3vvIzmtojmga9beyRyc1snbXNnJ119XSIsLTEpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgICRjaGFubmVsX3V1aWQgPSAkcnNbJ2RhdGEnXVsnY2hhbm5lbF91dWlkJ107DQogICAgJGNoYW5uZWxfc2VjcmV0ID0gJHJzWydkYXRhJ11bJ2NoYW5uZWxfc2VjcmV0J107DQoNCiAgICBtZGFfc2V0X3NldHRpbmcoJ2VtYWlsJywgJGVtYWlsKTsNCiAgICBtZGFfc2V0X3NldHRpbmcoJ2NoYW5uZWxfdXVpZCcsICRjaGFubmVsX3V1aWQpOw0KICAgIG1kYV9zZXRfc2V0dGluZygnY2hhbm5lbF9zZWNyZXQnLCAkY2hhbm5lbF9zZWNyZXQpOw0KICAgICRsb2dpbl91cmwgPSAiP2RvcG9zdD1sb2dpbiI7DQogICAgZWNobyA8PDxFT1QNCjxpZnJhbWUgc3JjPSJ7JGxvZ2luX3VybH0iIHNjcm9sbGluZz0ibm8iIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHN0eWxlPSJib3JkZXI6bm9uZSI+PC9pZnJhbWU+DQpFT1Q7DQogICAgU2hvd01zZygi57uR5a6a5oiQ5Yqf77yM5LiL6Z2i6Ieq5Yqo55m75b2V5b635b6X5bm/5ZGK5bmz5Y+wIiwgIj9kb3Bvc3Q9bG9naW4iKTsNCiAgICBleGl0KCk7DQp9DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2xvZ2luKCl7ICB9DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmVsc2UgaWYoJGRvcG9zdCA9PSAnbG9naW4nKQ0Kew0KICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsNCiAgICAkY2hhbm5lbF91dWlkID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3V1aWQnKTsNCiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7DQogICAgJHRzID0gdGltZSgpOw0KICAgICRwYXJhbXNBcnI9YXJyYXkoDQogICAgICAgICdjaGFubmVsX3V1aWQnPT4kY2hhbm5lbF91dWlkLCANCiAgICAgICAgJ2NoYW5uZWxfc2VjcmV0Jz0+JGNoYW5uZWxfc2VjcmV0LA0KICAgICAgICAnZW1haWwnPT4kZW1haWwsDQogICAgICAgICd0cyc9PiR0cywNCiAgICAgICAgJ2NyYyc9Pm1kNSgkY2hhbm5lbF91dWlkLiRjaGFubmVsX3NlY3JldC4kdHMpLA0KICAgICk7DQogICAgJGpxdWVyeV9maWxlID0gTURBX0pRVUVSWTsNCiAgICAkYXBpX2xvZ2luID0gTURBX0FQSV9MT0dJTjsNCiAgICAkcGFyYW1zID0ganNvbl9lbmNvZGUoJHBhcmFtc0Fycik7DQogICAgJHJzID0ganNvbl9kZWNvZGUobWRhX2h0dHBfc2VuZChNREFfQVBJX0xPR0lOLDAsJHBhcmFtc0FyciksVFJVRSk7DQogICAgaWYgKCBpc3NldCgkcnNbJ2NvZGUnXSkgQU5EICRyc1snY29kZSddID09IDAgKSB7DQogICAgICAkX1NFU1NJT05bJ21kYV9lbWFpbCddPSRlbWFpbDsNCiAgICB9IGVsc2Ugew0KICAgICAgdW5zZXQoJF9TRVNTSU9OWydtZGFfZW1haWwnXSk7DQogICAgICBoZWFkZXIoJ0xvY2F0aW9uOj9sb2dvdXQ9MScpOw0KICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICANCiAgICBlY2hvIDw8PEVPVA0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyRqcXVlcnlfZmlsZX0iPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCShmdW5jdGlvbigkKXsNCiAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgIHVybDogInskYXBpX2xvZ2lufSIsDQogICAgICAgICAgICBkYXRhVHlwZSA6ICdqc29ucCcsDQogICAgICAgICAgICBqc29ucENhbGxiYWNrOiJjYWxsZnVuYyIsDQogICAgICAgICAgICBkYXRhOiAkcGFyYW1zLA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oIHJlc3BvbnNlICkgew0KICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmNvZGUgPT0gMCl7DQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PW1haW4mbm9tc2c9eWVzJmZvcndhcmQ9eyRkb3Bvc3R9JzsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQoJfSkoalF1ZXJ5KTsNCjwvc2NyaXB0Pg0KRU9UOw0KICAgIGV4aXQ7DQp9IA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX19tYWluKCl7ICB9DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmVsc2UgaWYoJGRvcG9zdCA9PSAnbWFpbicpew0KICAgICRtZGFfdmVyc2lvbiA9IE1EQV9WRVI7DQogICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7DQogICAgJGNoYW5uZWxfc2VjcmV0ID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3NlY3JldCcpOw0KICAgICRtc2cgPSA8PDxFT1QNCjxmb3JtIG5hbWU9J215Zm9ybScgbWV0aG9kPSdQT1NUJyBhY3Rpb249Jz8nPg0KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZG9wb3N0JyB2YWx1ZT0nc2V0X3NlY3JldCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPg0KICA8dGJvZHk+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPueZu+W9leeUqOaIt++8mjwvdGQ+DQogICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPnskX1NFU1NJT05bJ2VtYWlsJ119IHskYWNjb3VudF9zdHJ9IDwhLS08YSBocmVmPSc/ZG9wb3N0PWxvZ291dCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvpgIDlh7pdPC9hPi0tPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+5b635b6X5qih5Z2X54mI5pys77yaPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+dnskbWRhX3ZlcnNpb259IDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+Q2hhbm5lbCBVVUlE77yaPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IGNsYXNzPSJpbnB1dC14bGFyZ2UiIHR5cGU9InRleHQiIHZhbHVlPSJ7JGNoYW5uZWxfdXVpZH0iIGRpc2FibGVkPSJkaXNhYmxlZC8iIHN0eWxlPSJ3aWR0aDoyNjBweCI+IDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+Q2hhbm5lbCBTZWNyZXTvvJo8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgPGlucHV0IG5hbWU9ImNoYW5uZWxfc2VjcmV0IiBjbGFzcz0iaW5wdXQteGxhcmdlIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ieyRjaGFubmVsX3NlY3JldH0iIHN0eWxlPSJ3aWR0aDoyNjBweCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLkv67mlLkiPg0KICAgICAgPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIj7mgqjlt7LmiJDlip/nmbvlvZXlvrflvpflub/lkYrvvIHmgqjlj6/ku6Xov5vooYzku6XkuIvmk43kvZzvvJo8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiPg0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXBsYWNlJyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+W5v+WRiueuoeeQhl08L2E+IA0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXJlcG9ydCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvmn6XnnIvmiqXooahdPC9hPiANCiAgICAgICAgPGEgaHJlZj0nP2RvcG9zdD1hY2NvdW50JyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+e7k+eul+S4reW/g108L2E+IA0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXNldHRpbmcnIHN0eWxlPSdjb2xvcjpibHVlJz5b5b635b6X6K6+572uXTwvYT4gDQogICAgICAgIDxhIGhyZWY9Jz9kb3Bvc3Q9Y2xlYXJjYWNoZScgc3R5bGU9J2NvbG9yOmJsdWUnPlvmuIXnqbrnvJPlrZhdPC9hPiANCiAgICAgIDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiI+DQogICAgICAgIDxocj4NCiAgICAgICAg5L2/55So6K+05piO77yaPGJyPg0KICAgICAgICDlnKjlub/lkYrnrqHnkIbkuK3liJvlu7rlr7nlupTlub/lkYrkvY3vvIzojrflj5blub/lkYrkvY3moIfnrb7vvIznva7lhaXmqKHmnb/nm7jlupTkvY3nva7ljbPlj6/jgIINCiAgICAgICAgPGhyPg0KICAgICAgICDlip/og73or7TmmI7vvJo8YnI+DQogICAgICAgIDxiPlvlub/lkYrnrqHnkIZdPC9iPueuoeeQhuermeeCueebuOW6lOeahOW5v+WRiuS9je+8mzxicj4NCiAgICAgICAgPGI+W+afpeeci+aKpeihqF08L2I+6I635Y+W5bm/5ZGK5L2N55u45bqU55qE57uf6K6h5oOF5Ya177ybPGJyPg0KICAgICAgICA8Yj5b57uT566X5Lit5b+DXTwvYj7mn6XnnIvmlLbnm4rnu5/orqHvvJs8YnI+DQogICAgICAgIDxiPlvlvrflvpforr7nva5dPC9iPuW+t+W+l+W5v+WRiuW5s+WPsOi0puWPt+S/oeaBr+mFjee9ru+8mzxicj4NCiAgICAgICAgPGI+W+a4heepuue8k+WtmF08L2I+5riF56m65bm/5ZGK5qCH562+57yT5a2Y77yM5aaC5p6c5pu05pS555m75b2V6LSm5Y+35bu66K6u5riF56m657yT5a2Y5YaN55Sf5oiQ77ybPGJyPg0KICAgICAgICA8aHI+DQogICAgICA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojOTk5Ij48c3Ryb25nPuW+t+W+l+W5v+WRijwvc3Ryb25nPuaYr+S4gOS4queugOWNleWPi+WlveeahOW5v+WRiuW5s+WPsO+8jOa3seW6puiejeWQiOe7h+aipuezu+e7n++8jOW4ruWKqeaCqOiOt+WPluabtOWkmuaUtuebiuOAgjwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+DQo8L2Zvcm0+DQp7JGxvZ2luX3N0cn0NCnskY2hhbmdlX2lzdl9pZH0NCkVPVDsNCiAgICAgICAgJHdpbnRpdGxlID0gJ+W+t+W+l+W5v+WRiueuoeeQhic7DQogICAgICAgICR3ZWNvbWVfaW5mbyA9ICflvrflvpflub/lkYrmqKHlnZcg44CLJzsNCiAgICAgICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICAgICAkd2luLT5BZGRUaXRsZSgkd2ludGl0bGUpOw0KICAgICAgICAkd2luLT5BZGRNc2dJdGVtKCRtc2cpOw0KICAgICAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygnaGFuZCcsICcmbmJzcDsnLCBmYWxzZSk7DQogICAgICAgICR3aW4tPkRpc3BsYXkoKTsNCiAgICAgICAgZXhpdDsNCn0gZWxzZSBpZigkZG9wb3N0ID09ICdzZXRfc2VjcmV0Jykgew0KICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsNCiAgICAkY2hhbm5lbF91dWlkID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3V1aWQnKTsNCiAgICAkdHMgPSB0aW1lKCk7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2NoYW5uZWxfdXVpZCc9PiRjaGFubmVsX3V1aWQsIA0KICAgICAgICAnY2hhbm5lbF9zZWNyZXQnPT4kY2hhbm5lbF9zZWNyZXQsDQogICAgICAgICdlbWFpbCc9PiRlbWFpbCwNCiAgICAgICAgJ3RzJz0+JHRzLA0KICAgICAgICAnY3JjJz0+bWQ1KCRjaGFubmVsX3V1aWQuJGNoYW5uZWxfc2VjcmV0LiR0cyksDQogICAgKTsNCiAgICAkcnMgPSBqc29uX2RlY29kZShtZGFfaHR0cF9zZW5kKE1EQV9BUElfTE9HSU4sMCwkcGFyYW1zQXJyKSxUUlVFKTsNCiAgICBpZiAoICEkcnMgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi6K+35rGCQVBJ6ZSZ6K+v77yM6K+36YeN6K+V77yBIiwtMSk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgaWYgKCAkcnNbJ2NvZGUnXSAhPSAwICkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuivt+axguWksei0pe+8jOmUmeivr+S7o+eggVtjb2RlOnskcnNbJ2NvZGUnXX1d77yM5raI5oGvW3skcnNbJ21zZyddfV0iLCc/ZG9wb3N0PW1haW4nKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBpZiAoJHJzWydjb2RlJ10gPT0gMCl7DQogICAgICAgIFNob3dNc2coIkNoYW5uZWwgU2VjcmV0IOS/ruaUueaIkOWKn+KApuKApu+8gSIsJz9kb3Bvc3Q9bWFpbicpOw0KICAgICAgICBtZGFfc2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0JywgJGNoYW5uZWxfc2VjcmV0KTsNCiAgICB9DQp9DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9faW5kZXgoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSB7DQogICAgaWYgKCBtZGFfZ2V0X3NldHRpbmcoJ2VtYWlsJykgQU5EIG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJykgQU5EIG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF9zZWNyZXQnKSBBTkQgZW1wdHkoJGxvZ291dCkpDQogICAgew0KICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj9kb3Bvc3Q9bG9naW4nKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQogICAgDQogICAgJG1kYV9yZWdfdXJsID0gTURBX1JFR19VUkw7DQogICAgJG1kYV9mb3JnZXRfcHdkX3VybCA9IE1EQV9GT1JHT1RfUEFTU1dPUkRfVVJMOw0KICAgICRkb21haW4gPSAhZW1wdHkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKT8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107DQogICAgJG1kYV91cGRhdGVfdXJsID0gTURBX0FQSUhPU1QuIi9oZWxwL2RlZGVjbXNfbW9kdWxlX2Rvd25sb2FkIjsNCiAgICANCmVjaG8gPDw8RU9UDQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+DQo8dGl0bGU+5b635b6X5bm/5ZGKPC90aXRsZT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InskY2ZnX3BsdXNfZGlyfS9pbWcvYmFzZS5jc3MiPg0KPC9oZWFkPg0KPGJvZHkgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy9hbGxiZy5naWYnIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNERkY5QUEiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvd2JnLmdpZic+Jm5ic3A7PGI+PGEgaHJlZj0iPyI+5b635b6X5bm/5ZGKIDwvYT4gJmd0OyZndDsg6YWN572u5b635b6X5bm/5ZGKPC9iPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjgwIiBzdHlsZT0icGFkZGluZy10b3A6NXB4IiBiZ2NvbG9yPScjZmZmZmZmJz4NCiAgPGZvcm0gbmFtZT0nbXlmb3JtJyBtZXRob2Q9J1BPU1QnIGFjdGlvbj0nPyc+DQogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RvcG9zdCcgdmFsdWU9J2JpbmRfdXNlcic+DQogIDx0YWJsZSB3aWR0aD0nMTAwJScgIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzMnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjREFEQURBJz4NCiAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+DQogICAgICA8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+5b635b6X5bm/5ZGKPC9iPjwvZm9udD48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPg0KICAgICAgPHRkIGNvbHNwYW49JzInICBoZWlnaHQ9JzEwMCc+DQogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGlkPSJpc3ZzQ29udGVudCI+DQogICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxIj4NCiAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7pgq7nrrHvvJo8L3RkPg0KICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJlbWFpbCIgdHlwZT0iZW1haWwiIGlkPSJlbWFpbCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9IiIgLz4NCiAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJG1kYV9yZWdfdXJsIiBzdHlsZT0iY29sb3I6Ymx1ZSI+5YWN6LS55rOo5YaMPC9hPiDvvIzojrflj5bkuJPkuJrlub/lkYrmnI3liqE8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiPuWvhuegge+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9InB3ZCIgdHlwZT0icGFzc3dvcmQiIGlkPSJwd2QiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiPg0KICAgICAgICAgICAgICAgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IiRtZGFfZm9yZ2V0X3B3ZF91cmwiIHN0eWxlPSJjb2xvcjpibHVlIj7lv5jorrDlr4bnoIE8L2E+ICZuYnNwOyA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuermeeCueWfn+WQje+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9ImRvbWFpbiIgdHlwZT0idGV4dCIgaWQ9ImRvbWFpbiIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9InskZG9tYWlufSIgLz4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuWQjeensO+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9ImNoYW5uZWxfbmFtZSIgdHlwZT0idGV4dCIgaWQ9ImNoYW5uZWxfbmFtZSIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9InskY2ZnX3dlYm5hbWV9IiAvPg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCI+5qih5Z2X54mI5pys77yaPC90ZD4NCiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij57JHZlcnNpb259DQogICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJG1kYV91cGRhdGVfdXJsIiBzdHlsZT0iY29sb3I6Ymx1ZSI+5LiL6L295paw54mI5qih5Z2XPC9hPiAmbmJzcDsgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICAgIDwvdGFibGU+DQogICAgICA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGNvbHNwYW49JzInIGJnY29sb3I9JyNGOUZDRUYnPjx0YWJsZSB3aWR0aD0nMjcwJyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+DQogICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInIGhlaWdodD0nMjgnPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSc5MCc+PGlucHV0IG5hbWU9J2ltYWdlRmllbGQxJyB0eXBlPSdpbWFnZScgY2xhc3M9J25wJyBzcmM9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYnV0dG9uX29rLmdpZicgd2lkdGg9JzYwJyBoZWlnaHQ9JzIyJyBib3JkZXI9JzAnIC8+PC90ZD4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0nOTAnPjwvdGQ+DQogICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPjwvdGQ+DQogICAgPC90cj4NCiAgPC90YWJsZT4NCiAgPC9mb3JtPg0KICA8L3RkPg0KICA8L3RyPg0KPC90YWJsZT4NCjxwIGFsaWduPSJjZW50ZXIiPiA8YnI+DQogIDxicj4NCjwvcD4NCjwvYm9keT4NCjwvaHRtbD4NCkVPVDsNCiAgICANCn0= - - - diff --git a/src/data/module/572606600345b1a4bb8c810bbae434cc-readme.php b/src/data/module/572606600345b1a4bb8c810bbae434cc-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/572606600345b1a4bb8c810bbae434cc-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/572606600345b1a4bb8c810bbae434cc.xml b/src/data/module/572606600345b1a4bb8c810bbae434cc.xml deleted file mode 100755 index 55500f4a..00000000 --- a/src/data/module/572606600345b1a4bb8c810bbae434cc.xml +++ /dev/null @@ -1,50 +0,0 @@ - - -name=挑错管理 -team=织梦官方 -time=2008-11-19 -email=admin@dedecms.com -url=www.dedecms.com -hash=572606600345b1a4bb8c810bbae434cc -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgMjAwMy0yMDEx77yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPg0KPHA+PC9wPg== - - -RFJPUCBUQUxCRSBJRiBFWElTVFMgYCNAX19lcnJhZGRgOw0KQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNAX19lcnJhZGRgICgNCiAgYGlkYCBpbnQoMTApIHVuc2lnbmVkIE5PVCBOVUxMIGF1dG9faW5jcmVtZW50LA0KICBgYWlkYCBtZWRpdW1pbnQoOCkgdW5zaWduZWQgTk9UIE5VTEwsDQogIGBtaWRgIG1lZGl1bWludCg4KSB1bnNpZ25lZCBkZWZhdWx0IE5VTEwsDQogIGB0aXRsZWAgY2hhcig2MCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgYHR5cGVgIHNtYWxsaW50KDYpIE5PVCBOVUxMIGRlZmF1bHQgJzAnLA0KICBgZXJydHh0YCBtZWRpdW10ZXh0LA0KICBgb2t0eHRgIG1lZGl1bXRleHQsDQogIGBzZW5kdGltZWAgaW50KDEwKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgS0VZIGBpZGAgKGBpZGApDQopIFRZUEU9TXlJU0FNOw0KREVMRVRFIEZST00gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfmjJHplJnnrqHnkIYnOw0KSU5TRVJUIElOVE8gYGRlZGVfcGx1c2AgVkFMVUVTICgxMCwgJ+aMkemUmeeuoeeQhicsICc8bTppdGVtIG5hbWU9JyfmjJHplJnnrqHnkIYnJyBsaW5rPScnZXJyYWRkc2F2ZS5waHAnJyByYW5rPScncGx1c1/mjJHplJnnrqHnkIYnJyB0YXJnZXQ9JydtYWluJycgLz4nLCAnJywgJ+e7h+aipuWboumYnycsIDEsICc8bTppdGVtIG5hbWU9JyfmjJHplJnnrqHnkIYnJyBsaW5rPScnY2F0YWxvZ19kby5waHA/ZG9wb3N0PWVycmFkZHNhdmUucGhwJycgcmFuaz0nJ3BsdXNf5oyR6ZSZ566h55CGJycgdGFyZ2V0PScnbWFpbicnIC8+Jyk7 - - -REVMRVRFIEZST00gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfmjJHplJnnrqHnkIYnOw0KDQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX2VycmFkZGA7 - - - - - - - - -erraddsave.php -templets/erradd.htm - - - - - -PD9waHANCi8qKg0KICog57qg6ZSZ566h55CGDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZXJyYWRkc2F2ZS5waHAgMSAxOTowOSAyMDEw5bm0N+aciDEy5pelWiB0aWFueWEgJA0KICogQHBhY2thZ2UgICAgICAgIERlZGVDTVMuQWRtaW5pc3RyYXRvcg0KICogQGNvcHlyaWdodCAgICAgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTAsIERlc0RldiwgSW5jLg0KICogQGxpY2Vuc2UgICAgICAgIGh0dHA6Ly9oZWxwLmRlZGVjbXMuY29tL3VzZXJzZ3VpZGUvbGljZW5zZS5odG1sDQogKiBAbGluayAgICAgICAgICAgaHR0cDovL3d3dy5kZWRlY21zLmNvbQ0KICovDQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9jb25maWcucGhwJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4nL2RhdGFsaXN0Y3AuY2xhc3MucGhwJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4nL2NvbW1vbi5mdW5jLnBocCcpOw0KDQppZihlbXB0eSgkZG9wb3N0KSkgJGRvcG9zdCA9Jyc7DQppZihlbXB0eSgkZm1kbykpICRmbWRvID0gJyc7DQoNCmZ1bmN0aW9uIHVzZXJuYW1lKCRtaWQpDQp7DQogICAgZ2xvYmFsICRkc3FsOw0KICAgIGlmKCFpc3NldCgkbWlkKSB8fCBlbXB0eSgkbWlkKSkNCiAgICB7DQogICAgICAgIHJldHVybiAi5ri45a6iIjsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICAkc3FsID0gIlNFTEVDVCB1bmFtZSBGUk9NIGAjQF9fbWVtYmVyYCBXSEVSRSBgbWlkYCA9ICckbWlkJyI7DQogICAgICAgICRyb3cgPSAkZHNxbC0+R2V0T25lKCRzcWwpOw0KICAgICAgICByZXR1cm4gJHJvd1sndW5hbWUnXTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBleGl0KCk7DQp9DQoNCmZ1bmN0aW9uIHR5cGVuYW1lKCRtZSkNCnsNCiAgICBzd2l0Y2ggKCRtZSkNCiAgICB7DQogICAgICAgIGNhc2UgJG1lID09IDE6DQogICAgICAgICAgICByZXR1cm4gJG1lID0gIumUmeWIq+WtlyI7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAkbWUgPT0gMjoNCiAgICAgICAgICAgIHJldHVybiAkbWUgPSAi5oiQ6K+t6L+Q55So5LiN5b2TIjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICRtZSA9PSAzOg0KICAgICAgICAgICAgcmV0dXJuICRtZSA9ICLkuJPkuJrmnK/or63lhpnms5XkuI3op4TliJkiOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJG1lID09IDQ6DQogICAgICAgICAgICByZXR1cm4gJG1lID0gIuS6p+WTgeS4juWbvueJh+S4jeespiI7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAkbWUgPT0gNToNCiAgICAgICAgICAgIHJldHVybiAkbWUgPSAi5LqL5a6e5bm05Luj5Lul5Y+K5YaF5a656ZSZ6K+vIjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICRtZSA9PSA2Og0KICAgICAgICAgICAgcmV0dXJuICRtZSA9ICLkuovlrp7lubTku6Pku6Xlj4rlhoXlrrnplJnor68iOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJG1lID09IDc6DQogICAgICAgICAgICByZXR1cm4gJG1lID0gIuWFtuS7lumUmeivryI7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIHJldHVybiAkbWUgPSAi5pyq55+l6ZSZ6K+vIjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgIH0NCn0NCg0KaWYoJGRvcG9zdCA9PSAiZGVsZXRlIikNCnsNCiAgICBpZigkaWQ9PScnKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5Y+C5pWw5peg5pWI77yBIiwiLTEiKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICANCiAgICANCiAgICBpZigkZm1kbz09J3llcycpDQogICAgew0KICAgICAgICAkaWQgPSBleHBsb2RlKCJgIiwgJGlkKTsNCiAgICAgICAgZm9yZWFjaCAoJGlkIGFzICR2YXIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRxdWVyeSA9ICJERUxFVEUgRlJPTSBgI0BfX2VycmFkZGAgV0hFUkUgYGlkYCA9ICckdmFyJyI7DQogICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkcXVlcnkpOw0KICAgICAgICB9DQogICAgICAgIFNob3dNc2coIuaIkOWKn+WIoOmZpOaMh+WumueahOaWh+aho++8gSIsImVycmFkZHNhdmUucGhwIik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9ICANCiAgICBlbHNlDQogICAgew0KICAgICAgICByZXF1aXJlX29uY2UoREVERUlOQy4iL294d2luZG93LmNsYXNzLnBocCIpOw0KICAgICAgICAkd2ludGl0bGUgPSAi5Yig6ZmkIjsNCiAgICAgICAgJHdlY29tZV9pbmZvID0gIjxhIGhyZWY9J2VycmFkZHNhdmUucGhwJz7plJnor6/nrqHnkIY8L2E+OjrliKDpmaTplJnor68iOw0KICAgICAgICAkd2luID0gbmV3IE94V2luZG93KCk7DQogICAgICAgICR3aW4tPkluaXQoImVycmFkZHNhdmUucGhwIiwianMvYmxhbmsuanMiLCJQT1NUIik7DQogICAgICAgICR3aW4tPkFkZEhpZGRlbigiZm1kbyIsInllcyIpOw0KICAgICAgICAkd2luLT5BZGRIaWRkZW4oImRvcG9zdCIsJGRvcG9zdCk7DQogICAgICAgICR3aW4tPkFkZEhpZGRlbigiaWQiLCRpZCk7DQogICAgICAgICR3aW4tPkFkZFRpdGxlKCLkvaDnoa7lrp7opoHliKDpmaTigJwgJGlkIOKAnei/meS6m+mUmeivr+aPkOekuu+8nyIpOw0KICAgICAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygib2siKTsNCiAgICAgICAgJHdpbi0+RGlzcGxheSgpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIGV4aXQoKTsNCn0NCg0KJHNxbCA9ICJTRUxFQ1QgKiBGUk9NIGAjQF9fZXJyYWRkYCI7DQokZGxpc3QgPSBuZXcgRGF0YUxpc3RDUCgpOw0KJGRsaXN0LT5TZXRUZW1wbGV0KERFREVBRE1JTi4iL3RlbXBsZXRzL2VycmFkZC5odG0iKTsNCiRkbGlzdC0+U2V0U291cmNlKCRzcWwpOw0KJGRsaXN0LT5kaXNwbGF5KCk7 - - -e2RlZGU6Y29uZmlnLnBhZ2VzaXplIHZhbHVlPScyMCcvfQ0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5oyR6ZSZ566h55CGPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2Nzcyc+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gZ2V0T25lSXRlbSgpDQp7DQoJdmFyIGFsbFNlbD0iIjsNCglpZihkb2N1bWVudC5mb3JtMi5pZC52YWx1ZSkgcmV0dXJuIGRvY3VtZW50LmZvcm0yLmlkLnZhbHVlOw0KCWZvcihpPTA7aTxkb2N1bWVudC5mb3JtMi5pZC5sZW5ndGg7aSsrKQ0KCXsNCgkJaWYoZG9jdW1lbnQuZm9ybTIuaWRbaV0uY2hlY2tlZCkNCgkJew0KCQkJCWFsbFNlbCA9IGRvY3VtZW50LmZvcm0yLmlkW2ldLnZhbHVlOw0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCXJldHVybiBhbGxTZWw7DQp9DQpmdW5jdGlvbiBnZXRDaGVja2JveEl0ZW0oKQ0Kew0KCXZhciBhbGxTZWw9IiI7DQoJaWYoZG9jdW1lbnQuZm9ybTIuaWQudmFsdWUpIHJldHVybiBkb2N1bWVudC5mb3JtMi5pZC52YWx1ZTsNCglmb3IoaT0wO2k8ZG9jdW1lbnQuZm9ybTIuaWQubGVuZ3RoO2krKykNCgl7DQoJCWlmKGRvY3VtZW50LmZvcm0yLmlkW2ldLmNoZWNrZWQpDQoJCXsNCgkJCWlmKGFsbFNlbD09IiIpDQoJCQkJYWxsU2VsPWRvY3VtZW50LmZvcm0yLmlkW2ldLnZhbHVlOw0KCQkJZWxzZQ0KCQkJCWFsbFNlbD1hbGxTZWwrImAiK2RvY3VtZW50LmZvcm0yLmlkW2ldLnZhbHVlOw0KCQl9DQoJfQ0KCXJldHVybiBhbGxTZWw7DQp9DQpmdW5jdGlvbiBzZWxBbGwoKQ0Kew0KCWZvcihpPTA7aTxkb2N1bWVudC5mb3JtMi5pZC5sZW5ndGg7aSsrKQ0KCXsNCgkJaWYoIWRvY3VtZW50LmZvcm0yLmlkW2ldLmNoZWNrZWQpDQoJCXsNCgkJCWRvY3VtZW50LmZvcm0yLmlkW2ldLmNoZWNrZWQ9dHJ1ZTsNCgkJfQ0KCX0NCn0NCmZ1bmN0aW9uIG5vU2VsQWxsKCkNCnsNCglmb3IoaT0wO2k8ZG9jdW1lbnQuZm9ybTIuaWQubGVuZ3RoO2krKykNCgl7DQoJCWlmKGRvY3VtZW50LmZvcm0yLmlkW2ldLmNoZWNrZWQpDQoJCXsNCgkJCWRvY3VtZW50LmZvcm0yLmlkW2ldLmNoZWNrZWQ9ZmFsc2U7DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBkZWxBcmMoaWQpew0KCXZhciBxc3RyPWdldENoZWNrYm94SXRlbSgpOw0KCWxvY2F0aW9uPSJlcnJhZGRzYXZlLnBocD9pZD0iK3FzdHIrIiZkb3Bvc3Q9ZGVsZXRlIjsNCn0NCjwvc2NyaXB0Pg0KCTxmb3JtIG5hbWU9ImZvcm0yIj4NCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQogIDx0cj4NCiAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgY29sc3Bhbj0iOCIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+DQogICAgIDxiPuaWh+eroOmUmeivr+euoeeQhjwvYj4mbmJzcDs8L3RkPg0KPC90cj4NCiAgPHRyIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGQkZDRTIiIGhlaWdodD0iMjYiPg0KICAgICAgPHRkIHdpZHRoPSI1JSI+6YCJ5oupPC90ZD4gDQogICAgICA8dGQgd2lkdGg9IjclIj7nvJblj7c8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxMiUiPuaMkemUmeS6ujwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjIwJSI+5paH56ug5ZCN56ewPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTIlIj7lh7rplJnnsbvlnos8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxNCUiPuaMkemUmeaXtumXtDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE1JSI+6ZSZ6K+v5YaF5a65PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUlIj7kv67mlLnlu7rorq48L3RkPg0KICAgICAgPC90cj4NCiAgIHtkZWRlOmRhdGFsaXN0fQ0KICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIiBoZWlnaHQ9IjI2IiBhbGlnbj0iY2VudGVyIiBvbk1vdXNlTW92ZT0iamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGQ0ZERUUnOyIgDQoNCm9uTW91c2VPdXQ9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJzsiPg0KICAgICAgICA8dGQ+PGlucHV0IG5hbWU9ImlkIiB0eXBlPSJjaGVja2JveCIgaWQ9ImlkIiB2YWx1ZT0ie2RlZGU6ZmllbGQuaWQvfSIgY2xhc3M9Im5wIj48L3RkPiANCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLmlkIC99PC90ZD4NCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLm1pZCBmdW5jdGlvbj0ndXNlcm5hbWUoQG1lKScvfTwvdGQ+DQogICAgICAgIDx0ZD48YSBocmVmPSdhcmNoaXZlc19kby5waHA/ZG9wb3N0PWVkaXRBcmNoaXZlcyZhaWQ9e2RlZGU6ZmllbGQuYWlkL30nPjx1PntkZWRlOmZpZWxkLnRpdGxlIC99PC91PjwvYT48L3RkPg0KICAgICAgICA8dGQ+e2RlZGU6ZmllbGQudHlwZSBmdW5jdGlvbj0ndHlwZW5hbWUoQG1lKScvfTwvdGQ+DQogICAgICAgIDx0ZD57ZGVkZTpmaWVsZC5zZW5kdGltZSBmdW5jdGlvbj0nR2V0RGF0ZU1rKEBtZSknL308L3RkPg0KICAgICAgICA8dGQ+e2RlZGU6ZmllbGQuZXJydHh0IC99PC90ZD4NCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLm9rdHh0IC99PC90ZD4NCiAgICAgICAgPC90cj4NCgkJey9kZWRlOmRhdGFsaXN0fQ0KICAgICAgICA8dHIgYWxpZ249ImxlZnQiIGJnY29sb3I9IiNmZmZmZmYiIGhlaWdodD0iMjgiPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjgiPg0KICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpzZWxBbGwoKSIgY2xhc3M9ImNvb2xiZyI+5YWo6YCJPC9hPg0KICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDpub1NlbEFsbCgpIiBjbGFzcz0iY29vbGJnIj7lj5bmtog8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OmRlbEFyYygwKSIgY2xhc3M9ImNvb2xiZyI+Jm5ic3A75Yig6ZmkJm5ic3A7PC9hPg0KICAgICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICA8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0Y5RkNFRiIgaGVpZ2h0PSIyOCI+IA0KICAgICAgPHRkIGNvbHNwYW49IjgiPg0KICAgICAgCXtkZWRlOnBhZ2VsaXN0IGxpc3RzaXplPTUvfQ0KICAgICAgPC90ZD4NCiAgICAgPC90cj4NCiAgIDwvdGFibGU+DQogICA8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8L2JvZHk+DQo8L2h0bWw+ - - - diff --git a/src/data/module/606c658db048ea7328ffe1c7ae2a732f.xml b/src/data/module/606c658db048ea7328ffe1c7ae2a732f.xml deleted file mode 100755 index 90cec896..00000000 --- a/src/data/module/606c658db048ea7328ffe1c7ae2a732f.xml +++ /dev/null @@ -1,54 +0,0 @@ - - -name=畅言评论模块 -team=织梦团队 -time=2014-02-17 -email=tianya@desdev.cn -url=http://www.dedecms.com -hash=606c658db048ea7328ffe1c7ae2a732f -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=soft - - - -PG06dG9wIG5hbWU9J+eVheiogOivhOiuuicgZGlzcGxheT0nYmxvY2snPg0KPG06aXRlbSBuYW1lPSfnlYXoqIDmqKHlnZcnIGxpbms9J2NoYW5neWFuX21haW4ucGhwJyByYW5rPSdzeXNfRmVlZGJhY2snIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSfor4TorrrnrqHnkIYnIGxpbms9J2NoYW5neWFuX21haW4ucGhwP2RvcG9zdD1tYW5hZ2UnIHJhbms9J3N5c19GZWVkYmFjaycgdGFyZ2V0PSdtYWluJy8+DQo8bTppdGVtIG5hbWU9J+aVsOaNrue7n+iuoScgbGluaz0nY2hhbmd5YW5fbWFpbi5waHA/ZG9wb3N0PXN0YXQnIHJhbms9J3N5c19GZWVkYmFjaycgdGFyZ2V0PSdtYWluJy8+DQo8bTppdGVtIG5hbWU9J+WvvOWFpeWvvOWHuicgbGluaz0nY2hhbmd5YW5fbWFpbi5waHA/ZG9wb3N0PWltcG9ydCcgcmFuaz0nc3lzX0ZlZWRiYWNrJyB0YXJnZXQ9J21haW4nLz4NCjxtOml0ZW0gbmFtZT0n55WF6KiA6K6+572uJyBsaW5rPSdjaGFuZ3lhbl9tYWluLnBocD9kb3Bvc3Q9c2V0dGluZycgcmFuaz0nc3lzX0ZlZWRiYWNrJyB0YXJnZXQ9J21haW4nLz4NCjwvbTp0b3A+ - - -PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxkaXYgc3R5bGU9J3BhZGRpbmctbGVmdDoyMHB4O2xpbmUtaGVpZ2h0OjE1MCUnPjxiciAvPg0KPHA+54mI5p2D5omA5pyJIChjKTIwMDMtMjAxMe+8jERlZGVDbXMuY29tIOS/neeVmeaJgOacieadg+WIqeOAgiA8L3A+PGJyIC8+DQo8cD7mhJ/osKLmgqjpgInmi6nnu4fmoqblhoXlrrnnrqHnkIbns7vnu5/vvIjku6XkuIvnroDnp7BEZWRlQ21z77yJ77yMRGVkZUNtc+aYr+ebruWJjeWbveWGheacgOW8uuWkp+OAgeacgOeos+WumueahOS4reWwj+Wei+mXqOaIt+e9keermeW7uuiuvuino+WGs+aWueahiOS5i+S4gO+8jOWxheS6jiBQSFAgKyBNeVNRTCDnmoTmioDmnK/lvIDlj5HvvIzlhajpg6jmupDnoIHlvIDmlL7jgIJEZWRlQ21zIOeahOWumOaWuee9keWdgOaYr++8miB3d3cuZGVkZWNtcy5jb20gIOS6pOa1geiuuuWdm++8miBiYnMuZGVkZWNtcy5jb208L3A+PGJyIC8+DQo8cD7kuLrkuobkvb/kvaDmraPnoa7lubblkIjms5XnmoTkvb/nlKjmnKzova/ku7bvvIzor7fkvaDlnKjkvb/nlKjliY3liqHlv4XpmIXor7vmuIXmpZrkuIvpnaLnmoTljY/orq7mnaHmrL7vvJo8L3A+PGJyIC8+DQo8cD48c3Ryb25nPuS4gOOAgeacrOaOiOadg+WNj+iurumAgueUqOS4lOS7hemAgueUqOS6jiBEZWRlQ21zIDUueC54IOeJiOacrO+8jERlZGVDbXPlrpjmlrnlr7nmnKzmjojmnYPljY/orq7nmoTmnIDnu4jop6Pph4rmnYPjgIIgPC9zdHJvbmc+PC9wPjxiciAvPg0KPHA+PHN0cm9uZz7kuozjgIHljY/orq7orrjlj6/nmoTmnYPliKkgPC9zdHJvbmc+PGJyIC8+PGJyIC8+DQogIDHjgIHmgqjlj6/ku6XlnKjlrozlhajpgbXlrojmnKzmnIDnu4jnlKjmiLfmjojmnYPljY/orq7nmoTln7rnoYDkuIrvvIzlsIbmnKzova/ku7blupTnlKjkuo7pnZ7llYbkuJrnlKjpgJTvvIzogIzkuI3lv4XmlK/ku5jova/ku7bniYjmnYPmjojmnYPotLnnlKjjgIIgPGJyIC8+PGJyIC8+DQogIDLjgIHmgqjlj6/ku6XlnKjljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLbojIPlm7TlhoXkv67mlLkgRGVkZUNtcyDmupDku6PnoIHmiJbnlYzpnaLpo47moLzku6XpgILlupTmgqjnmoTnvZHnq5nopoHmsYLjgIIgPGJyIC8+PGJyIC8+DQogIDPjgIHmgqjmi6XmnInkvb/nlKjmnKzova/ku7bmnoTlu7rnmoTnvZHnq5nlhajpg6jlhoXlrrnmiYDmnInmnYPvvIzlubbni6znq4vmib/mi4XkuI7ov5nkupvlhoXlrrnnmoTnm7jlhbPms5XlvovkuYnliqHjgIIgPGJyIC8+PGJyIC8+DQo044CB6I635b6X5ZWG5Lia5o6I5p2D5LmL5ZCO77yM5oKo5Y+v5Lul5bCG5pys6L2v5Lu25bqU55So5LqO5ZWG5Lia55So6YCU77yM5ZCM5pe25L6d5o2u5omA6LSt5Lmw55qE5o6I5p2D57G75Z6L5Lit56Gu5a6a55qE5oqA5pyv5pSv5oyB5YaF5a6577yM6Ieq6LSt5Lmw5pe25Yi76LW377yM5Zyo5oqA5pyv5pSv5oyB5pyf6ZmQ5YaF5oul5pyJ6YCa6L+H5oyH5a6a55qE5pa55byP6I635b6X5oyH5a6a6IyD5Zu05YaF55qE5oqA5pyv5pSv5oyB5pyN5Yqh44CC5ZWG5Lia5o6I5p2D55So5oi35Lqr5pyJ5Y+N5pig5ZKM5o+Q5Ye65oSP6KeB55qE5p2D5Yqb77yM55u45YWz5oSP6KeB5bCG6KKr5L2c5Li66aaW6KaB6ICD6JmR77yM5L2G5rKh5pyJ5LiA5a6a6KKr6YeH57qz55qE5om/6K+65oiW5L+d6K+B44CCIDwvcD48YnIgLz4NCjxwPjxzdHJvbmc+5LqM44CB5Y2P6K6u6KeE5a6a55qE57qm5p2f5ZKM6ZmQ5Yi2IDwvc3Ryb25nPjxiciAvPjxiciAvPg0KICAx44CB5pyq6I635ZWG5Lia5o6I5p2D5LmL5YmN77yM5LiN5b6X5bCG5pys6L2v5Lu255So5LqO5ZWG5Lia55So6YCU77yI5YyF5ous5L2G5LiN6ZmQ5LqO5LyB5Lia572R56uZ44CB57uP6JCl5oCn572R56uZ44CB5Lul6JCl5Yip5Li655uu55qE5oiW5a6e546w55uI5Yip55qE572R56uZ77yJ44CC6LSt5Lmw5ZWG5Lia5o6I5p2D6K+355m76ZmGIGJicy5kZWRlY21zLmNvbSDkuobop6PmnIDmlrDor7TmmI7jgIIgPGJyIC8+PGJyIC8+DQogIDLjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIzkuI3lvpflr7nmnKzova/ku7bmiJbkuI7kuYvlhbPogZTnmoTllYbkuJrmjojmnYPov5vooYzlh7rnp5/jgIHlh7rllK7jgIHmirXmirzmiJblj5HmlL7lrZDorrjlj6/or4HjgIIgPGJyIC8+PGJyIC8+DQogIDPjgIHkuI3nrqHkvaDnmoTnvZHnq5nmmK/lkKbmlbTkvZPkvb/nlKggRGVkZUNtcyDvvIzov5jmmK/pg6jku73moI/nm67kvb/nlKggRGVkZUNtc++8jOWcqOS9oOS9v+eUqOS6hiBEZWRlQ21zIOeahOe9keermeS4u+mhteS4iuW/hemhu+WKoOS4iiBEZWRlQ21zIOWumOaWuee9keWdgCh3d3cuZGVkZWNtcy5jb20p55qE6ZO+5o6l44CCIDxiciAvPjxiciAvPg0KICA044CB5pyq57uP5a6Y5pa56K645Y+v77yM56aB5q2i5ZyoIERlZGVDbXMg55qE5pW05L2T5oiW5Lu75L2V6YOo5YiG5Z+656GA5LiK5Lul5Y+R5bGV5Lu75L2V5rS+55Sf54mI5pys44CB5L+u5pS554mI5pys5oiW56ys5LiJ5pa554mI5pys55So5LqO6YeN5paw5YiG5Y+R44CCIDxiciAvPjxiciAvPg0KNeOAgeWmguaenOaCqOacquiDvemBteWuiOacrOWNj+iurueahOadoeasvu+8jOaCqOeahOaOiOadg+Wwhuiiq+e7iOatou+8jOaJgOiiq+iuuOWPr+eahOadg+WIqeWwhuiiq+aUtuWbnu+8jOW5tuaJv+aLheebuOW6lOazleW+i+i0o+S7u+OAgiA8L3A+PGJyIC8+DQo8cD48c3Ryb25nPuS4ieOAgeaciemZkOaLheS/neWSjOWFjei0o+WjsOaYjiA8L3N0cm9uZz48YnIgLz48YnIgLz4NCiAgMeOAgeacrOi9r+S7tuWPiuaJgOmZhOW4pueahOaWh+S7tuaYr+S9nOS4uuS4jeaPkOS+m+S7u+S9leaYjuehrueahOaIlumakOWQq+eahOi1lOWBv+aIluaLheS/neeahOW9ouW8j+aPkOS+m+eahOOAgiA8YnIgLz48YnIgLz4NCiAgMuOAgeeUqOaIt+WHuuS6juiHquaEv+iAjOS9v+eUqOacrOi9r+S7tu+8jOaCqOW/hemhu+S6huino+S9v+eUqOacrOi9r+S7tueahOmjjumZqe+8jOWcqOWwmuacqui0reS5sOS6p+WTgeaKgOacr+acjeWKoeS5i+WJje+8jOaIkeS7rOS4jeaJv+ivuuWvueWFjei0ueeUqOaIt+aPkOS+m+S7u+S9leW9ouW8j+eahOaKgOacr+aUr+aMgeOAgeS9v+eUqOaLheS/ne+8jOS5n+S4jeaJv+aLheS7u+S9leWboOS9v+eUqOacrOi9r+S7tuiAjOS6p+eUn+mXrumimOeahOebuOWFs+i0o+S7u+OAgiA8YnIgLz48YnIgLz4NCiAgM+OAgeeUteWtkOaWh+acrOW9ouW8j+eahOaOiOadg+WNj+iuruWmguWQjOWPjOaWueS5pumdouetvue9sueahOWNj+iuruS4gOagt++8jOWFt+acieWujOWFqOeahOWSjOetieWQjOeahOazleW+i+aViOWKm+OAguaCqOS4gOaXpuW8gOWni+ehruiupOacrOWNj+iuruW5tuWuieijhSBEZWRlQ21z77yM5Y2z6KKr6KeG5Li65a6M5YWo55CG6Kej5bm25o6l5Y+X5pys5Y2P6K6u55qE5ZCE6aG55p2h5qy+77yM5Zyo5Lqr5pyJ5LiK6L+w5p2h5qy+5o6I5LqI55qE5p2D5Yqb55qE5ZCM5pe277yM5Y+X5Yiw55u45YWz55qE57qm5p2f5ZKM6ZmQ5Yi244CC5Y2P6K6u6K645Y+v6IyD5Zu05Lul5aSW55qE6KGM5Li677yM5bCG55u05o6l6L+d5Y+N5pys5o6I5p2D5Y2P6K6u5bm25p6E5oiQ5L615p2D77yM5oiR5Lus5pyJ5p2D6ZqP5pe257uI5q2i5o6I5p2D77yM6LSj5Luk5YGc5q2i5o2f5a6z77yM5bm25L+d55WZ6L+956m255u45YWz6LSj5Lu755qE5p2D5Yqb44CCIDxiciAvPjxiciAvPg0KNOOAgeWmguaenOacrOi9r+S7tuW4puacieWFtuWug+i9r+S7tueahOaVtOWQiEFQSeekuuiMg+S+i+WtkOWMhe+8jOi/meS6m+aWh+S7tueJiOadg+S4jeWxnuS6juacrOi9r+S7tuWumOaWue+8jOW5tuS4lOi/meS6m+aWh+S7tuaYr+ayoee7j+i/h+aOiOadg+WPkeW4g+eahO+8jOivt+WPguiAg+ebuOWFs+i9r+S7tueahOS9v+eUqOiuuOWPr+WQiOazleeahOS9v+eUqOOAgjwvcD48YnIgLz4NCjxwPuWNj+iuruWPkeW4g+aXtumXtO+8miAgMjAwN+W5tDEy5pyIMeaXpSBCeSBEZWRlQ21zLmNvbTwvcD48YnIgLz4NCjxwPjwvcD48L3A+ - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgOw0KQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgICgNCiAgYHNrZXlgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBERUZBVUxUICcnLA0KICBgc3ZhbHVlYCB0ZXh0IE5PVCBOVUxMLA0KICBgc3RpbWVgIGludCgxMCkgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgc2tleWApDQopIFRZUEU9TXlJU0FNOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIChgc2tleWAsIGBzdmFsdWVgLCBgc3RpbWVgKSBWQUxVRVMNCignYXBwaWQnLCAnMCcsIDApLA0KKCdpZCcsICcwJywgMCksDQooJ2lzdl9pZCcsICcwJywgMCksDQooJ3VzZXInLCAnMCcsIDApLA0KKCdwd2QnLCAnMCcsIDApOw== - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgOw0KRFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX2NoYW5neWFuX2ltcG9ydGlkc2A7DQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX3BsdXNfY2hhbmd5YW5faW5zZXJ0aWRzYDs= - - - - - - - - -../include/helpers/changyan.helper.php -../include/taglib/changyan.lib.php -changyan_main.php - - - - - -PD9waHAgaWYoIWRlZmluZWQoJ0RFREVJTkMnKSkgZXhpdCgnZGVkZWNtcycpOw0KDQpkZWZpbmUoJ0NIQU5HWUFOX0FQSV9BRVMnLCAnaHR0cDovL2NoYW5neWFuLmFwaS5kZWRlY21zLmNvbS8nKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX1JFRycsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9vcGVuL3JlZycpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfQVVUT1JFRycsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9vcGVuL2F1dG8tcmVnJyk7DQpkZWZpbmUoJ0NIQU5HWUFOX0FQSV9MT0dJTicsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9vcGVuL3ZhbGlkYXRlJyk7DQpkZWZpbmUoJ0NIQU5HWUFOX0FQSV9TRVRDT09LSUUnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9hZG1pbi9hcGkvb3Blbi9zZXQtY29va2llJyk7DQpkZWZpbmUoJ0NIQU5HWUFOX0FQSV9JU05FVycsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9yZWNlbnQtY29tbWVudC10b3BpY3MnKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0xBVEVTVFMnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9hcGkvMi9jb21tZW50L2xhdGVzdHMnKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX1JFQ0VOVCcsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9yZWNlbnQtY29tbWVudC10b3BpY3MnKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0NPREUnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9hZG1pbi9hcGkvb3Blbi9nZXQtY29kZScpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfQUREU0lURScsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9vcGVuL2FkZC1pc3YnKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0NIQU5HRV9JU1YnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9jaGFuZ2UtaXN2LycpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfQ0hFQ0tfTE9HSU4nLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9jaGVjay1sb2dpbicpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfR0VUQVBQS0VZJywgJ2h0dHA6Ly9jaGFuZ3lhbi5rdWFpemhhbi5jb20vIGFkbWluL2FwaS9vcGVuL2dldC1hcHBrZXknKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0NPTU1FTlRTJywgJ2h0dHA6Ly9jaGFuZ3lhbi5zb2h1LmNvbS9hcGkvMi90b3BpYy9jb21tZW50cycpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfVE9QSUNDT01NRU5UUycsICdodHRwOi8vY2hhbmd5YW4uc29odS5jb20vYXBpLzIvdG9waWMvbG9hZCcpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfSU1QT1JUJywgJ2h0dHA6Ly9jaGFuZ3lhbi5rdWFpemhhbi5jb20vYWRtaW4vYXBpL2ltcG9ydC9jb21tZW50Jyk7DQpkZWZpbmUoJ0NIQU5HWUFOX0FQSV9HRVRJU1ZTJywgJ2h0dHA6Ly9jaGFuZ3lhbi5rdWFpemhhbi5jb20vYWRtaW4vYXBpL29wZW4vZ2V0LWlzdnMnKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0dFVElTVlNfSlNPTlAnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9hZG1pbi9hcGkvb3Blbi9nZXQtaXN2cy1qc29ucCcpOw0KZGVmaW5lKCdDSEFOR1lBTl9BUElfQklOREFDQycsICdodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL2FkbWluL2FwaS9vcGVuL21vZC1vcGluZm8nKTsNCmRlZmluZSgnQ0hBTkdZQU5fQVBJX0ZPUkdFVF9QV0QnLCAnaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9wbGF0Zm9ybS9mb3JnZXQtcHdkJyk7DQoNCmRlZmluZSgnQ0hBTkdZQU5fQ0xJRU5UX0lEJywgJ2NhcVhZSWUzMicpOw0KZGVmaW5lKCdDSEFOR1lBTl9DTElFTlRfS0VZJywgJ2JjYjU4NTYyOGI1OTU4NDg5MWZmNTg5N2JlODg4YzQ1Jyk7DQoNCmRlZmluZSgnQ0hBTkdZQU5fSlFVRVJZX1NSQycsICc8c2NyaXB0PndpbmRvdy5qUXVlcnkgfHwgZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoXCclM0NzY3JpcHQgc3JjPSJodHRwOi8vY2hhbmd5YW4uYXBpLmRlZGVjbXMuY29tL2Fzc2V0cy9qcy9qcXVlcnkubWluLmpzIiUzRSUzQy9zY3JpcHQlM0VcJykpPC9zY3JpcHQ+Jyk7DQoNCmRlZmluZSgnQ0hBTkdZQU5fVkVSJywgJzAuMC4xMScpOw0KDQokR0xPQkFMU1sndXBkYXRlX3NxbHMnXT1hcnJheSgNCiAgICAnMC4wLjInPT5hcnJheSgNCiAgICAgICAgIklOU0VSVCBJTlRPIGAjQF9fcGx1c19jaGFuZ3lhbl9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTICgnbGFzdF9leHBvcnQnLCAnMCcsIDApOyIsDQogICAgICAgICJJTlNFUlQgSU5UTyBgI0BfX3BsdXNfY2hhbmd5YW5fc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ2xhc3RfaW1wb3J0JywgJzAnLCAwKTsiLA0KICAgICAgICAiSU5TRVJUIElOVE8gYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIChgc2tleWAsIGBzdmFsdWVgLCBgc3RpbWVgKSBWQUxVRVMgKCd2ZXJzaW9uJywgJzAuMC4yJywgMCk7IiwNCiAgICAgICAgIklOU0VSVCBJTlRPIGAjQF9fcGx1c19jaGFuZ3lhbl9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTICgnaXN2X2FwcF9rZXknLCAnMCcsIDApOyIsDQogICAgICAgICJDUkVBVEUgVEFCTEUgYCNAX19wbHVzX2NoYW5neWFuX2luc2VydGlkc2AgKGBpZGAgSU5UKDEwKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCiAgICAgICAgICAgIGBhaWRgIElOVCgxMCkgTlVMTCBERUZBVUxUICcwJywNCiAgICAgICAgICAgIGBjb21tZW50X2lkYCBJTlQoMTIpIE5VTEwgREVGQVVMVCAnMCcsDQogICAgICAgICAgICBQUklNQVJZIEtFWSAoYGlkYCksDQogICAgICAgICAgICBVTklRVUUgSU5ERVggYGNvbW1lbnRfaWRgIChgY29tbWVudF9pZGApDQogICAgICAgICkNCiAgICAgICAgVFlQRT1NeUlTQU07IiwNCiAgICAgICAgIkNSRUFURSBUQUJMRSBgI0BfX3BsdXNfY2hhbmd5YW5faW1wb3J0aWRzYCAoYGlkYCBJTlQoMTApIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KICAgICAgICAgICAgYGFpZGAgSU5UKDEwKSBOVUxMIERFRkFVTFQgJzAnLA0KICAgICAgICAgICAgYGZlZWRiYWNrX2lkYCBJTlQoMTIpIE5VTEwgREVGQVVMVCAnMCcsDQogICAgICAgICAgICBQUklNQVJZIEtFWSAoYGlkYCksDQogICAgICAgICAgICBVTklRVUUgSU5ERVggYGZlZWRiYWNrX2lkYCAoYGZlZWRiYWNrX2lkYCkNCiAgICAgICAgKQ0KICAgICAgICBUWVBFPU15SVNBTTsiLA0KICAgICksDQogICAgJzAuMC4zJz0+YXJyYXkoDQogICAgICAgICJVUERBVEUgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIFNFVCBgc3ZhbHVlYD0nMC4wLjMnIFdIRVJFIGBza2V5YD0ndmVyc2lvbic7IiwNCiAgICApLA0KICAgICcwLjAuNCc9PmFycmF5KA0KICAgICAgICAiVVBEQVRFIGAjQF9fcGx1c19jaGFuZ3lhbl9zZXR0aW5nYCBTRVQgYHN2YWx1ZWA9JzAuMC40JyBXSEVSRSBgc2tleWA9J3ZlcnNpb24nOyIsDQogICAgKSwNCiAgICAnMC4wLjUnPT5hcnJheSgNCiAgICAgICAgIlVQREFURSBgI0BfX3BsdXNfY2hhbmd5YW5fc2V0dGluZ2AgU0VUIGBzdmFsdWVgPScwLjAuNScgV0hFUkUgYHNrZXlgPSd2ZXJzaW9uJzsiLA0KICAgICksDQogICAgJzAuMC42Jz0+YXJyYXkoDQogICAgICAgICJVUERBVEUgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIFNFVCBgc3ZhbHVlYD0nMC4wLjYnIFdIRVJFIGBza2V5YD0ndmVyc2lvbic7IiwNCiAgICApLA0KICAgICcwLjAuNyc9PmFycmF5KA0KICAgICAgICAiVVBEQVRFIGAjQF9fcGx1c19jaGFuZ3lhbl9zZXR0aW5nYCBTRVQgYHN2YWx1ZWA9JzAuMC43JyBXSEVSRSBgc2tleWA9J3ZlcnNpb24nOyIsDQogICAgKSwNCiAgICAnMC4wLjgnPT5hcnJheSgNCiAgICAgICAgIlVQREFURSBgI0BfX3BsdXNfY2hhbmd5YW5fc2V0dGluZ2AgU0VUIGBzdmFsdWVgPScwLjAuOCcgV0hFUkUgYHNrZXlgPSd2ZXJzaW9uJzsiLA0KICAgICksDQogICAgJzAuMC45Jz0+YXJyYXkoDQogICAgICAgICJVUERBVEUgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIFNFVCBgc3ZhbHVlYD0nMC4wLjknIFdIRVJFIGBza2V5YD0ndmVyc2lvbic7IiwNCiAgICApLA0KICAgICcwLjAuMTAnPT5hcnJheSgNCiAgICAgICAgIlVQREFURSBgI0BfX3BsdXNfY2hhbmd5YW5fc2V0dGluZ2AgU0VUIGBzdmFsdWVgPScwLjAuMTAnIFdIRVJFIGBza2V5YD0ndmVyc2lvbic7IiwNCiAgICApLA0KICAgICcwLjAuMTEnPT5hcnJheSgNCiAgICAgICAgIlVQREFURSBgI0BfX3BsdXNfY2hhbmd5YW5fc2V0dGluZ2AgU0VUIGBzdmFsdWVgPScwLjAuMTEnIFdIRVJFIGBza2V5YD0ndmVyc2lvbic7IiwNCiAgICApLA0KKTsNCg0KaGVscGVyKCdjYWNoZScpOw0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9jbGVhcmNhY2hlKCkNCnsNCiAgICAkcHJlZml4ID0gJ2NoYW5neWFuJzsNCiAgICAka2V5ID0gJ2NvZGUnOw0KICAgIERlbENhY2hlKCRwcmVmaXgsICRrZXkpOw0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9tY2hTdHJDb2RlKCRzdHJpbmcsICRvcGVyYXRpb24gPSAnRU5DT0RFJykgDQp7DQogICAgJGtleV9sZW5ndGggPSA0Ow0KICAgICRleHBpcnkgPSAwOw0KICAgICRrZXkgPSBtZDUoJEdMT0JBTFNbJ2NmZ19jb29raWVfZW5jb2RlJ10pOw0KICAgICRmaXhlZGtleSA9IG1kNSgka2V5KTsNCiAgICAkZWdpc2tleXMgPSBtZDUoc3Vic3RyKCRmaXhlZGtleSwgMTYsIDE2KSk7DQogICAgJHJ1bnRva2V5ID0gJGtleV9sZW5ndGggPyAoJG9wZXJhdGlvbiA9PSAnRU5DT0RFJyA/IHN1YnN0cihtZDUobWljcm90aW1lKHRydWUpKSwgLSRrZXlfbGVuZ3RoKSA6IHN1YnN0cigkc3RyaW5nLCAwLCAka2V5X2xlbmd0aCkpIDogJyc7DQogICAgJGtleXMgPSBtZDUoc3Vic3RyKCRydW50b2tleSwgMCwgMTYpIC4gc3Vic3RyKCRmaXhlZGtleSwgMCwgMTYpIC4gc3Vic3RyKCRydW50b2tleSwgMTYpIC4gc3Vic3RyKCRmaXhlZGtleSwgMTYpKTsNCiAgICAkc3RyaW5nID0gJG9wZXJhdGlvbiA9PSAnRU5DT0RFJyA/IHNwcmludGYoJyUwMTBkJywgJGV4cGlyeSA/ICRleHBpcnkgKyB0aW1lKCkgOiAwKS5zdWJzdHIobWQ1KCRzdHJpbmcuJGVnaXNrZXlzKSwgMCwgMTYpIC4gJHN0cmluZyA6IGJhc2U2NF9kZWNvZGUoc3Vic3RyKCRzdHJpbmcsICRrZXlfbGVuZ3RoKSk7DQoNCiAgICAkaSA9IDA7ICRyZXN1bHQgPSAnJzsNCiAgICAkc3RyaW5nX2xlbmd0aCA9IHN0cmxlbigkc3RyaW5nKTsNCiAgICBmb3IgKCRpID0gMDsgJGkgPCAkc3RyaW5nX2xlbmd0aDsgJGkrKyl7DQogICAgICAgICRyZXN1bHQgLj0gY2hyKG9yZCgkc3RyaW5neyRpfSkgXiBvcmQoJGtleXN7JGkgJSAzMn0pKTsNCiAgICB9DQogICAgaWYoJG9wZXJhdGlvbiA9PSAnRU5DT0RFJykgew0KICAgICAgICByZXR1cm4gJHJ1bnRva2V5IC4gc3RyX3JlcGxhY2UoJz0nLCAnJywgYmFzZTY0X2VuY29kZSgkcmVzdWx0KSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgaWYoKHN1YnN0cigkcmVzdWx0LCAwLCAxMCkgPT0gMCB8fCBzdWJzdHIoJHJlc3VsdCwgMCwgMTApIC0gdGltZSgpID4gMCkgJiYgc3Vic3RyKCRyZXN1bHQsIDEwLCAxNikgPT0gc3Vic3RyKG1kNShzdWJzdHIoJHJlc3VsdCwgMjYpLiRlZ2lza2V5cyksIDAsIDE2KSkgew0KICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkcmVzdWx0LCAyNik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gJyc7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX1F1b3RlX3JlcGxhY2UoJHF1b3RlKQ0Kew0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCd7cXVvdGV9JywnJywkcXVvdGUpOw0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywnJywkcXVvdGUpOw0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCd7L3RpdGxlfScsJycsJHF1b3RlKTsNCiAgICAkcXVvdGUgPSBzdHJfcmVwbGFjZSgnJmx0O2JyLyZndDsnLCJcblxyIiwkcXVvdGUpOw0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCcmbHQ7JywgJycsICRxdW90ZSk7DQogICAgJHF1b3RlID0gc3RyX3JlcGxhY2UoJyZndDsnLCAnJywgJHF1b3RlKTsNCiAgICAkcXVvdGUgPSBzdHJfcmVwbGFjZSgne2NvbnRlbnR9JywnJywkcXVvdGUpOw0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCd7L2NvbnRlbnR9JywnJywkcXVvdGUpOw0KICAgICRxdW90ZSA9IHN0cl9yZXBsYWNlKCd7L3F1b3RlfScsJycsJHF1b3RlKTsNCiAgICByZXR1cm4gJHF1b3RlOw0KfQ0KDQoNCi8v5pu05paw6YWN572u5Ye95pWwDQpmdW5jdGlvbiBjaGFuZ3lhbl9SZVdyaXRlQ29uZmlnKCkNCnsNCiAgICBnbG9iYWwgJGRzcWw7DQogICAgJGNvbmZpZ2ZpbGUgPSBERURFREFUQS4nL2NvbmZpZy5jYWNoZS5pbmMucGhwJzsNCiAgICBpZighaXNfd3JpdGVhYmxlKCRjb25maWdmaWxlKSkNCiAgICB7DQogICAgICAgIGVjaG8gIumFjee9ruaWh+S7tid7JGNvbmZpZ2ZpbGV9J+S4jeaUr+aMgeWGmeWFpe+8jOaXoOazleS/ruaUueezu+e7n+mFjee9ruWPguaVsO+8gSI7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgJGZwID0gZm9wZW4oJGNvbmZpZ2ZpbGUsJ3cnKTsNCiAgICBmbG9jaygkZnAsMyk7DQogICAgZndyaXRlKCRmcCwiPCIuIj9waHBcclxuIik7DQogICAgJGRzcWwtPlNldFF1ZXJ5KCJTRUxFQ1QgYHZhcm5hbWVgLGB0eXBlYCxgdmFsdWVgLGBncm91cGlkYCBGUk9NIGAjQF9fc3lzY29uZmlnYCBPUkRFUiBCWSBhaWQgQVNDICIpOw0KICAgICRkc3FsLT5FeGVjdXRlKCk7DQogICAgd2hpbGUoJHJvdyA9ICRkc3FsLT5HZXRBcnJheSgpKQ0KICAgIHsNCiAgICAgICAgaWYoJHJvd1sndHlwZSddPT0nbnVtYmVyJykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYoJHJvd1sndmFsdWUnXT09JycpICRyb3dbJ3ZhbHVlJ10gPSAwOw0KICAgICAgICAgICAgZndyaXRlKCRmcCwiXCR7JHJvd1sndmFybmFtZSddfSA9ICIuJHJvd1sndmFsdWUnXS4iO1xyXG4iKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsIlwkeyRyb3dbJ3Zhcm5hbWUnXX0gPSAnIi5zdHJfcmVwbGFjZSgiJyIsJycsJHJvd1sndmFsdWUnXSkuIic7XHJcbiIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ3cml0ZSgkZnAsIj8iLiI+Iik7DQogICAgZmNsb3NlKCRmcCk7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2h0dHBfc2VuZCgkdXJsLCAkbGltaXQ9MCwgJHBvc3Q9JycsICRjb29raWU9JycsICR0aW1lb3V0PTE1KQ0Kew0KICAgICRyZXR1cm4gPSAnJzsNCiAgICAkbWF0Y2hlcyA9IHBhcnNlX3VybCgkdXJsKTsNCiAgICAkc2NoZW1lID0gJG1hdGNoZXNbJ3NjaGVtZSddOw0KICAgICRob3N0ID0gJG1hdGNoZXNbJ2hvc3QnXTsNCiAgICAkcGF0aCA9ICRtYXRjaGVzWydwYXRoJ10gPyAkbWF0Y2hlc1sncGF0aCddLihAJG1hdGNoZXNbJ3F1ZXJ5J10gPyAnPycuJG1hdGNoZXNbJ3F1ZXJ5J10gOiAnJykgOiAnLyc7DQogICAgJHBvcnQgPSAhZW1wdHkoJG1hdGNoZXNbJ3BvcnQnXSkgPyAkbWF0Y2hlc1sncG9ydCddIDogODA7DQoNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7DQogICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkc2NoZW1lLic6Ly8nLiRob3N0Lic6Jy4kcG9ydC4kcGF0aCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7DQogICAgICAgIGlmICgkcG9zdCkgew0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOw0KICAgICAgICAgICAgJGNvbnRlbnQgPSBpc19hcnJheSgkcG9zdCkgPyBodHRwX2J1aWxkX3F1ZXJ5KCRwb3N0KSA6ICRwb3N0Ow0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIHVybGRlY29kZSgkY29udGVudCkpOw0KICAgICAgICB9DQogICAgICAgIGlmICgkY29va2llKSB7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFLCAkY29va2llKTsNCiAgICAgICAgfQ0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDkwMCk7DQogICAgICAgICRkYXRhID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgICRzdGF0dXMgPSBjdXJsX2dldGluZm8oJGNoKTsNCiAgICAgICAgJGVycm5vID0gY3VybF9lcnJubygkY2gpOw0KICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7DQogICAgICAgIGlmICgkZXJybm8gfHwgJHN0YXR1c1snaHR0cF9jb2RlJ10gIT0gMjAwKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gISRsaW1pdCA/ICRkYXRhIDogc3Vic3RyKCRkYXRhLCAwLCAkbGltaXQpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgaWYgKCRwb3N0KSB7DQogICAgICAgICRjb250ZW50ID0gaXNfYXJyYXkoJHBvcnQpID8gdXJsZGVjb2RlKGh0dHBfYnVpbGRfcXVlcnkoJHBvc3QpKSA6ICRwb3N0Ow0KICAgICAgICAkb3V0ID0gIlBPU1QgJHBhdGggSFRUUC8xLjBcclxuIjsNCiAgICAgICAgJGhlYWRlciA9ICJBY2NlcHQ6ICovKlxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJBY2NlcHQtTGFuZ3VhZ2U6IHpoLWNuXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkhvc3Q6ICRob3N0OiRwb3J0XHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gJ0NvbnRlbnQtTGVuZ3RoOiAnLnN0cmxlbigkY29udGVudCkuIlxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDYWNoZS1Db250cm9sOiBuby1jYWNoZVxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDb29raWU6ICRjb29raWVcclxuXHJcbiI7DQogICAgICAgICRvdXQgLj0gJGhlYWRlci4kY29udGVudDsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkb3V0ID0gIkdFVCAkcGF0aCBIVFRQLzEuMFxyXG4iOw0KICAgICAgICAkaGVhZGVyID0gIkFjY2VwdDogKi8qXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkFjY2VwdC1MYW5ndWFnZTogemgtY25cclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiVXNlci1BZ2VudDogIi5AJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLiJcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ29ubmVjdGlvbjogQ2xvc2VcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ29va2llOiAkY29va2llXHJcblxyXG4iOw0KICAgICAgICAkb3V0IC49ICRoZWFkZXI7DQogICAgfQ0KDQogICAgJGZwZmxhZyA9IDA7DQogICAgJGZwID0gZmFsc2U7DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZnNvY2tldG9wZW4nKSkgew0KICAgICAgICAkZnAgPSBmc29ja2V0b3BlbigkaG9zdCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgJHRpbWVvdXQpOw0KICAgIH0NCiAgICBpZiAoISRmcCkgew0KICAgICAgICAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgNCiAgICAgICAgICAgICdodHRwJyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAnbWV0aG9kJyA9PiAkcG9zdCA/ICdQT1NUJyA6ICdHRVQnLA0KICAgICAgICAgICAgICAgICdoZWFkZXInID0+ICRoZWFkZXIsDQogICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICRjb250ZW50LA0KICAgICAgICAgICAgICAgICd0aW1lb3V0JyA9PiAkdGltZW91dCwNCiAgICAgICAgICAgICksDQogICAgICAgICkpOw0KICAgICAgICAkZnAgPSBAZm9wZW4oJHNjaGVtZS4nOi8vJy4kaG9zdC4nOicuJHBvcnQuJHBhdGgsICdiJywgZmFsc2UsICRjb250ZXh0KTsNCiAgICAgICAgJGZwZmxhZyA9IDE7DQogICAgfQ0KDQogICAgaWYgKCEkZnApIHsNCiAgICAgICAgcmV0dXJuICcnOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHN0cmVhbV9zZXRfYmxvY2tpbmcoJGZwLCB0cnVlKTsNCiAgICAgICAgc3RyZWFtX3NldF90aW1lb3V0KCRmcCwgJHRpbWVvdXQpOw0KICAgICAgICBAZndyaXRlKCRmcCwgJG91dCk7DQogICAgICAgICRzdGF0dXMgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOw0KICAgICAgICBpZiAoISRzdGF0dXNbJ3RpbWVkX291dCddKSB7DQogICAgICAgICAgICB3aGlsZSAoIWZlb2YoJGZwKSAmJiAhJGZwZmxhZykgew0KICAgICAgICAgICAgICAgIGlmICgoJGhlYWRlciA9IEBmZ2V0cygkZnApKSAmJiAoJGhlYWRlciA9PSAiXHJcbiIgfHwgICRoZWFkZXIgPT0gIlxuIikpIHsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRsaW1pdCkgew0KICAgICAgICAgICAgICAgICRyZXR1cm4gPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCwgJGxpbWl0KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHJldHVybiA9IHN0cmVhbV9nZXRfY29udGVudHMoJGZwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAZmNsb3NlKCRmcCk7DQogICAgICAgIHJldHVybiAkcmV0dXJuOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gY2hhbmd5YW5fYXV0b0NoYXJzZXQoJG1zZywkdHlwZT0nb3V0JykNCnsNCiAgICBnbG9iYWwgJGNmZ19zb2Z0X2xhbmc7DQogICAgaWYgKCRjZmdfc29mdF9sYW5nPT0nZ2IyMzEyJykgew0KICAgICAgICBpZigkdHlwZT09J291dCcpIHJldHVybiBnYjJ1dGY4KCRtc2cpOw0KICAgICAgICBlbHNlIHJldHVybiB1dGY4MmdiKCRtc2cpOw0KICAgIH0gDQogICAgcmV0dXJuICRtc2c7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2dlbl9zaWduKCR1c2VyKQ0Kew0KICAgIGdsb2JhbCAkY2ZnX3ZlcnNpb24sJGRzcWw7DQogICAgJHBocHYgPSBwaHB2ZXJzaW9uKCk7DQogICAgJHNwX29zID0gUEhQX09TOw0KICAgICRteXNxbF92ZXIgPSAkZHNxbC0+R2V0VmVyc2lvbigpOw0KICAgICRudXJsID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOw0KICAgIGlmKCBwcmVnX21hdGNoKCIjW2EtelwtXXsxLH1cLlthLXpdezIsfSNpIiwkbnVybCkgKSB7DQogICAgICAgICRudXJsID0gdXJsZW5jb2RlKCRudXJsKTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgICRudXJsID0gInRlc3QiOw0KICAgIH0NCiAgICAkYWVzX3VybD1DSEFOR1lBTl9BUElfQUVTLic/a2V5PScuQ0hBTkdZQU5fQ0xJRU5UX0tFWS4nJmlucHV0PScuJHVzZXIuIiZ2ZXJzaW9uPXskY2ZnX3ZlcnNpb259JmZvcm11cmw9eyRudXJsfSZwaHB2ZXI9eyRwaHB2fSZvcz17JHNwX29zfSZteXNxbHZlcj17JG15c3FsX3Zlcn0mY3l2ZXI9Ii5DSEFOR1lBTl9WRVI7DQogICAgcmV0dXJuIGNoYW5neWFuX2h0dHBfc2VuZCgkYWVzX3VybCk7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2JpbmRfYWNjb3VudCgkbmV3X3VzZXIsJG5ld19wd2QsICRlcnJvcmluZm89JycpDQp7DQogICAgJG9sZF91c2VyID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsNCiAgICAkb2xkX3Bhc3N3b3JkPWNoYW5neWFuX21jaFN0ckNvZGUoY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3B3ZCcpLCAnREVDT0RFJykgOw0KICAgICRzaWduPWNoYW5neWFuX2dlbl9zaWduKCRvbGRfdXNlcik7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2NsaWVudF9pZCc9PkNIQU5HWUFOX0NMSUVOVF9JRCwgDQogICAgICAgICdvbGRfdXNlcic9PiRvbGRfdXNlciwgDQogICAgICAgICdvbGRfcGFzc3dvcmQnPT4kb2xkX3Bhc3N3b3JkLCANCiAgICAgICAgJ25ld191c2VyJz0+JG5ld191c2VyLCANCiAgICAgICAgJ25ld19wYXNzd29yZCc9PiRuZXdfcHdkLCANCiAgICAgICAgJ3NpZ24nPT4kc2lnbik7DQogICAgJHJzPWpzb25fZGVjb2RlKGNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfQklOREFDQy4nPycuaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zQXJyKSksVFJVRSk7DQogICAgaWYoIWlzc2V0KCRyc1snc3RhdHVzJ10pKSByZXR1cm4gRkFMU0U7DQogICAgaWYoJHJzWydzdGF0dXMnXT09MCkNCiAgICB7DQogICAgICAgICRuZXdfcHdkID0gY2hhbmd5YW5fbWNoU3RyQ29kZSgkbmV3X3B3ZCwgJ0VOQ09ERScpOw0KICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygndXNlcicsICRuZXdfdXNlcik7DQogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdwd2QnLCAkbmV3X3B3ZCk7DQogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdpc3ZfYXBwX2tleScsICcnKTsNCiAgICAgICAgJGlzdl9hcHBfa2V5ID0gY2hhbmd5YW5fZ2V0X2lzdl9hcHBfa2V5KCk7DQogICAgICAgIGNoYW5neWFuX2NsZWFyY2FjaGUoKTsNCiAgICAgICAgcmV0dXJuIFRSVUU7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGVycm9yaW5mbyA9ICRyc1snbXNnJ107DQogICAgICAgIHJldHVybiBGQUxTRTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2htYWNzaGExKCRkYXRhLCAka2V5KSB7DQogICAgcmV0dXJuIGhhc2hfaG1hYygnc2hhMScsICRkYXRhLCAka2V5KTsNCn0NCg0KZnVuY3Rpb24gY2hhbmd5YW5fZ2V0X2lzdnMoKQ0Kew0KICAgICR1c2VyID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsNCiAgICAkc2lnbj1jaGFuZ3lhbl9nZW5fc2lnbigkdXNlcik7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2NsaWVudF9pZCc9PkNIQU5HWUFOX0NMSUVOVF9JRCwgDQogICAgICAgICd1c2VyJz0+JHVzZXIsIA0KICAgICAgICAnc2lnbic9PiRzaWduKTsNCiAgICAkcnM9anNvbl9kZWNvZGUoY2hhbmd5YW5faHR0cF9zZW5kKENIQU5HWUFOX0FQSV9HRVRJU1ZTLic/Jy5odHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXNBcnIpKSxUUlVFKTsNCiAgICBpZihpc3NldCgkcnNbJ2lzdnMnXSkpIHJldHVybiBqc29uX2RlY29kZSgkcnNbJ2lzdnMnXSxUUlVFKTsNCiAgICBlbHNlIHJldHVybiBGQUxTRTsNCn0NCg0KZnVuY3Rpb24gY2hhbmd5YW5fZ2V0X2lzdnNfanNvbnAoKQ0Kew0KICAgICRhcHBpZCA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCdhcHBpZCcpOw0KICAgICR1c2VyID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsNCiAgICAkc2lnbj1jaGFuZ3lhbl9nZW5fc2lnbigkdXNlcik7DQogICAgJGNsaWVudF9pZD1DSEFOR1lBTl9DTElFTlRfSUQ7DQogICAgJGpzb25wX3VybD1DSEFOR1lBTl9BUElfR0VUSVNWU19KU09OUDsNCiAgICByZXR1cm4gPDw8RU9UDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQokLmFqYXgoeyAgDQogICAgICAgIHR5cGU6ICJnZXQiLCAgDQogICAgICAgIHVybDogInskanNvbnBfdXJsfSIsICANCiAgICAgICAgZGF0YVR5cGU6ICJqc29ucCIsICANCiAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgY2xpZW50X2lkOiAneyRjbGllbnRfaWR9JywNCiAgICAgICAgICAgIHVzZXI6ICd7JHVzZXJ9JywNCiAgICAgICAgICAgIHNpZ246ICd7JHNpZ259Jw0KICAgICAgICB9LA0KICAgICAgICBqc29ucDogImNhbGxiYWNrIiwNCiAgICAgICAganNvbnBDYWxsYmFjazogInN1Y2Nlc3NfanNvbnBDYWxsYmFjayIsDQogICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpeyAgDQogICAgICAgICAgICBpc3ZzID0gZXZhbChldmFsKGRhdGEpWyJpc3ZzIl0pOw0KICAgICAgICAgICAgdmFyIGRiX2FwcGlkPSd7JGFwcGlkfSc7DQogICAgICAgICAgICB2YXIgaXN2c0NvbnRlbnQ9Jyc7DQogICAgICAgICAgICAkLmVhY2goaXN2cywgZnVuY3Rpb24oaSxpdGVtKXsNCiAgICAgICAgICAgICAgICB2YXIgYXBwSWQ9aXRlbS5hcHBJZDsNCiAgICAgICAgICAgICAgICB2YXIgYXBwS2V5PWl0ZW0uYXBwS2V5Ow0KICAgICAgICAgICAgICAgIHZhciBuYW1lPWl0ZW0ubmFtZTsNCiAgICAgICAgICAgICAgICB2YXIgaWQ9aXRlbS5pZDsNCiAgICAgICAgICAgICAgICB2YXIgdXJsPWl0ZW0udXJsOw0KICAgICAgICAgICAgICAgIHZhciBjaGVja2Vkc3RyPScnOw0KICAgICAgICAgICAgICAgIGlmKGRiX2FwcGlkPT1hcHBJZCkgY2hlY2tlZHN0cj0nIGNoZWNrZWQnOw0KICAgICAgICAgICAgICAgIG9wdGlvbl9odG1sID0gJzxwPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iYXBwSW5mbyIgaWQ9ImFwcEluZm8nK2lkKyciIHZhbHVlPSInK2FwcElkKyd8JythcHBLZXkrJyInK2NoZWNrZWRzdHIrJz4gPGxhYmVsIGZvcj0iYXBwSW5mbycraWQrJyI+JytuYW1lKycgWycrYXBwSWQrJyB8ICcrdXJsKyddPC9sYWJlbD48L3A+JzsNCiAgICAgICAgICAgICAgICBpc3ZzQ29udGVudCA9IGlzdnNDb250ZW50ICsgb3B0aW9uX2h0bWw7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICQoIiNpc3ZzQ29udGVudCIpLmh0bWwoaXN2c0NvbnRlbnQpOw0KICAgICAgICB9LA0KICAgICAgICBlcnJvcjogZnVuY3Rpb24oZGF0YSl7DQogICAgICAgICAgICBpc3ZzQ29udGVudCA9ICLmsqHmnInojrflj5bliLDlvZPliY3nmbvlvZXotKblj7fmiYDlr7nlupTnmoRBUFBJROS/oeaBr++8jOivt+ajgOafpeaYr+WQpuato+ehruWuieijheeVheiogOaooeWdl+OAgiI7DQogICAgICAgICAgICAkKCIjaXN2c0NvbnRlbnQiKS5odG1sKGlzdnNDb250ZW50KTsNCiAgICAgICAgfSwgICAgICAgIA0KICAgICAgICAgIA0KICAgIH0pOw0KPC9zY3JpcHQ+DQpFT1Q7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2dldF9pc3ZfYXBwX2tleSgpDQp7DQogICAgZ2xvYmFsICRjbGllbnRfaWQ7DQogICAgJGlzdl9hcHBfa2V5PWNoYW5neWFuX2dldF9zZXR0aW5nKCdpc3ZfYXBwX2tleScpOw0KICAgIGlmICghZW1wdHkoJGlzdl9hcHBfa2V5KSkgew0KICAgICAgICByZXR1cm4gJGlzdl9hcHBfa2V5Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiBGQUxTRTsNCiAgICB9IC8v5o6l5Y+j5LiL57q/77yM55u05o6l6YCa6L+H6K6+5a6aYXBwaW5mb+aOpeWPow0KICAgICR1c2VyID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsNCiAgICANCiAgICBpZiAoIWVtcHR5KCRpc3ZfYXBwX2tleSkpIHsNCiAgICAgICAgcmV0dXJuICRpc3ZfYXBwX2tleTsNCiAgICB9DQogICAgJGlzdl9hcHBfa2V5PScnOw0KICAgICRzaWduPWNoYW5neWFuX2dlbl9zaWduKCR1c2VyKTsNCiAgICAkcGFyYW1zQXJyPWFycmF5KA0KICAgICAgICAnY2xpZW50X2lkJz0+Q0hBTkdZQU5fQ0xJRU5UX0lELCANCiAgICAgICAgJ3VzZXInPT4kdXNlciwgDQogICAgICAgICd1c2VyX2FwcGlkJz0+JGNsaWVudF9pZCwNCiAgICAgICAgJ3NpZ24nPT4kc2lnbik7DQogICAgJHJzPWNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfR0VUQVBQS0VZLic/Jy5odHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXNBcnIpKTsNCiAgICAkcnMgPSBqc29uX2RlY29kZSgkcnMsVFJVRSk7DQogICAgaWYgKGlzc2V0KCRyc1snaXN2X2FwcF9rZXknXSkpIHsNCiAgICAgICAgJGlzdl9hcHBfa2V5PSRyc1snaXN2X2FwcF9rZXknXTsNCiAgICB9DQogICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2lzdl9hcHBfa2V5JywgJGlzdl9hcHBfa2V5KTsNCiAgICByZXR1cm4gJGlzdl9hcHBfa2V5Ow0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9nZXRfY29tbWVudHMoJGNsaWVudF9pZCwgJHRvcGljX2lkKQ0Kew0KICAgICRyZXN1bHQ9YXJyYXkoKTsNCiAgICAkcGFyYW1zQXJyPWFycmF5KA0KICAgICAgICAnY2xpZW50X2lkJz0+JGNsaWVudF9pZCwgDQogICAgICAgICdzdHlsZSc9PidmbG9vcicsIA0KICAgICAgICAnb3JkZXJfYnknPT4ndGltZV9hc2MnLCANCiAgICAgICAgJ3BhZ2Vfbm8nPT4xLCANCiAgICAgICAgJ3BhZ2Vfc2l6ZSc9PjEwMCwgDQogICAgICAgICd0b3BpY19pZCc9PiR0b3BpY19pZCk7DQogICAgJHJzPWNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfQ09NTUVOVFMuJz8nLmh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtc0FycikpOw0KICAgICRycyA9IGpzb25fZGVjb2RlKCRycyxUUlVFKTsNCiAgICByZXR1cm4gJHJzOw0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9saXN0X3NvcnRfYnkoJGxpc3QsICRmaWVsZCwgJHNvcnRieT0nYXNjJykgDQp7DQogICBpZihpc19hcnJheSgkbGlzdCkpew0KICAgICAgICRyZWZlciA9ICRyZXN1bHRTZXQgPSBhcnJheSgpOw0KICAgICAgIGZvcmVhY2ggKCRsaXN0IGFzICRpID0+ICRkYXRhKQ0KICAgICAgICAgICAkcmVmZXJbJGldID0gJiRkYXRhWyRmaWVsZF07DQogICAgICAgc3dpdGNoICgkc29ydGJ5KSB7DQogICAgICAgICAgIGNhc2UgJ2FzYyc6IC8vIOato+WQkeaOkuW6jw0KICAgICAgICAgICAgICAgIGFzb3J0KCRyZWZlcik7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgIGNhc2UgJ2Rlc2MnOi8vIOmAhuWQkeaOkuW6jw0KICAgICAgICAgICAgICAgIGFyc29ydCgkcmVmZXIpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICBjYXNlICduYXQnOiAvLyDoh6rnhLbmjpLluo8NCiAgICAgICAgICAgICAgICBuYXRjYXNlc29ydCgkcmVmZXIpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgIH0NCiAgICAgICBmb3JlYWNoICggJHJlZmVyIGFzICRrZXk9PiAkdmFsKQ0KICAgICAgICAgICAkcmVzdWx0U2V0W10gPSAmJGxpc3RbJGtleV07DQogICAgICAgcmV0dXJuICRyZXN1bHRTZXQ7DQogICB9DQogICByZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2luc2VydF9jb21tZW50cygkY29tbWVudCwkYWlkLCR0aXRsZSkNCnsNCiAgICBnbG9iYWwgJGRzcWw7DQogICAgaWYgKCFpc3NldCgkY29tbWVudFsnY29tbWVudHMnXSkpIHJldHVybiBGQUxTRTsNCiAgICAkZHNxbC0+U2V0UXVlcnkoIlNFTEVDVCBjb21tZW50X2lkIEZST00gYCNAX19wbHVzX2NoYW5neWFuX2luc2VydGlkc2AgV0hFUkUgYWlkPXskYWlkfSIpOw0KICAgICRkc3FsLT5FeGVjdXRlKCdkZCcpOw0KICAgICRjb21tZW50X2lkcz1hcnJheSgpOw0KICAgIHdoaWxlKCRhcnIgPSAkZHNxbC0+R2V0QXJyYXkoJ2RkJykpDQogICAgew0KICAgICAgICAkY29tbWVudF9pZHNbXSA9ICRhcnJbJ2NvbW1lbnRfaWQnXTsNCiAgICB9DQogICAgJGk9MDsNCiAgICBmb3JlYWNoICgkY29tbWVudFsnY29tbWVudHMnXSBhcyAkY29tbWVudCkgDQogICAgew0KICAgICAgICAkY29udGVudCA9ICcnOw0KICAgICAgICBpZiAoaW5fYXJyYXkoJGNvbW1lbnRbJ2NvbW1lbnRfaWQnXSwgJGNvbW1lbnRfaWRzKSkgY29udGludWU7DQogICAgICAgIGlmIChjb3VudCgkY29tbWVudFsnY29tbWVudHMnXSk+MCkgew0KICAgICAgICAgICAgJGNvbW1lbnRbJ2NvbW1lbnRzJ10gPSBjaGFuZ3lhbl9saXN0X3NvcnRfYnkoJGNvbW1lbnRbJ2NvbW1lbnRzJ10sICdjcmVhdGVfdGltZScsJ2Rlc2MnKTsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRjb21tZW50Wydjb21tZW50cyddIGFzICRjKSB7DQogICAgICAgICAgICAgICAgJGNbJ2NvbnRlbnQnXSA9IGNoYW5neWFuX2F1dG9DaGFyc2V0KCRjWydjb250ZW50J10sICdpbicpOw0KICAgICAgICAgICAgICAgICRjb250ZW50ID0gJ3txdW90ZX17Y29udGVudH0nLiRjb250ZW50LiRjWydjb250ZW50J10uJ3svY29udGVudH17dGl0bGV9Jy4NCiAgICAgICAgICAgICAgICAgICAgJGNbJ3Bhc3Nwb3J0J11bJ25pY2tuYW1lJ10uJyDnmoTljp/luJbvvJp7L3RpdGxlfXsvcXVvdGV9JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkYWlkPWludHZhbCgkYWlkKTsNCiAgICAgICAgJHR5cGVpZD0wOw0KICAgICAgICAkdXNlcm5hbWU9Y2hhbmd5YW5fYXV0b0NoYXJzZXQoJGNvbW1lbnRbJ3Bhc3Nwb3J0J11bJ25pY2tuYW1lJ10sICdpbicpOw0KICAgICAgICAkYXJjdGl0bGU9Y2hhbmd5YW5fYXV0b0NoYXJzZXQoJHRpdGxlLCAnaW4nKTsNCiAgICAgICAgJGlwPSRjb21tZW50WydpcCddOw0KICAgICAgICAkY29tbWVudF9pZD0kY29tbWVudFsnY29tbWVudF9pZCddOw0KICAgICAgICAkaXNjaGVjaz0xOw0KICAgICAgICAkZHRpbWU9IGludHZhbCgkY29tbWVudFsnY3JlYXRlX3RpbWUnXSAvIDEwMDAgKSA7DQogICAgICAgICRtc2cgPSAkY29udGVudC5jaGFuZ3lhbl9hdXRvQ2hhcnNldCgkY29tbWVudFsnY29udGVudCddLCAnaW4nKSA7DQogICAgICAgICRpbnF1ZXJ5ID0gIklOU0VSVCBJTlRPIGAjQF9fZmVlZGJhY2tgKGBhaWRgLGB0eXBlaWRgLGB1c2VybmFtZWAsYGFyY3RpdGxlYCxgaXBgLGBpc2NoZWNrYCxgZHRpbWVgLCBgbWlkYCxgYmFkYCxgZ29vZGAsYGZ0eXBlYCxgZmFjZWAsYG1zZ2ApDQogICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKCckYWlkJywnJHR5cGVpZCcsJyR1c2VybmFtZScsJyRhcmN0aXRsZScsJyRpcCcsJyRpc2NoZWNrJywnJGR0aW1lJywgJzAnLCcwJywnMCcsJ2ZlZWRiYWNrJywnJywnJG1zZycpOyAiOw0KICAgICAgICAkcnMgPSAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkaW5xdWVyeSk7DQogICAgICAgICRmZWVkYmFja19pZCA9ICRkc3FsLT5HZXRMYXN0SUQoKTsNCiAgICAgICAgJGlucXVlcnkgPSAiSU5TRVJUIElOVE8gYCNAX19wbHVzX2NoYW5neWFuX2ltcG9ydGlkc2AoYGFpZGAsYGZlZWRiYWNrX2lkYCkgVkFMVUVTICgneyRhaWR9JywneyRmZWVkYmFja19pZH0nKSI7DQogICAgICAgICRycyA9ICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRpbnF1ZXJ5KTsNCiAgICAgICAgJGlucXVlcnkgPSAiSU5TRVJUIElOVE8gYCNAX19wbHVzX2NoYW5neWFuX2luc2VydGlkc2AoYGFpZGAsYGNvbW1lbnRfaWRgKSBWQUxVRVMgKCckYWlkJywnJGNvbW1lbnRfaWQnKSI7DQogICAgICAgICRycyA9ICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRpbnF1ZXJ5KTsNCiAgICAgICAgJGkrKzsNCiAgICB9DQoNCiAgICByZXR1cm4gJGk7DQogICAvLyByZXR1cm4gJGNvbW1lbnQ7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2NoZWNrX2lzbG9naW4oKQ0Kew0KICAgIGdsb2JhbCAkZG9wb3N0Ow0KICAgICRqcXVlcnlfdXJsID0gQ0hBTkdZQU5fQVBJX0FFUy4iYXNzZXRzL2pzL2pxdWVyeS5taW4uanMiOw0KICAgICRjaGFuZ3lhbl9sb2dpbj1DSEFOR1lBTl9BUElfQ0hFQ0tfTE9HSU47DQogICAgZWNobyA8PDxFT1QNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InskanF1ZXJ5X3VybH0iPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KKGZ1bmN0aW9uKCQpew0KICAgICQuYWpheCh7DQogICAgICAgIHR5cGU6ICJHRVQiLA0KICAgICAgICB1cmw6ICJ7JGNoYW5neWFuX2xvZ2lufSIsDQogICAgICAgIGRhdGFUeXBlIDogJ2pzb25wJywNCiAgICAgICAganNvbnBDYWxsYmFjazoiY2FsbGZ1bmMiLA0KICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihtc2cpew0KICAgICAgICAgICAgaWYoIW1zZy5zdWNjZXNzKXsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj0nP2RvcG9zdD1sb2dvdXQmbm9tc2c9eWVzJmZvcndhcmQ9eyRkb3Bvc3R9JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0pOw0KfSkoalF1ZXJ5KQ0KPC9zY3JpcHQ+ICAgIA0KRU9UOw0KICAgIC8vZXhpdDsNCn0NCg0KZnVuY3Rpb24gY2hhbmd5YW5fZ2V0X3JlY2VudCgkYXBwaWQsJGRhdGUpDQp7DQogICAgJGRhdGUgPSB1cmxlbmNvZGUoJGRhdGUpOw0KICAgICRyZWNlbnRfdXJsPUNIQU5HWUFOX0FQSV9SRUNFTlQuIi8/YXBwSWQ9eyRhcHBpZH0mZGF0ZT17JGRhdGV9IjsNCiAgICByZXR1cm4ganNvbl9kZWNvZGUoY2hhbmd5YW5faHR0cF9zZW5kKCRyZWNlbnRfdXJsKSxUUlVFKTsNCn0NCg0KZnVuY3Rpb24gY2hhbmd5YW5fbGF0ZXN0cygkY2xpZW50X2lkLCRwYWdlc2l6ZT0yMCwkb3JkZXI9J2hvdCcpDQp7DQogICAgJGxhdGVzdHNfdXJsPUNIQU5HWUFOX0FQSV9MQVRFU1RTLiIvP2NsaWVudF9pZD17JGNsaWVudF9pZH0mc2l6ZT17JHBhZ2VzaXplfSZvcmRlcl9ieT17JG9yZGVyfSI7DQogICAgcmV0dXJuIGpzb25fZGVjb2RlKGNoYW5neWFuX2h0dHBfc2VuZCgkbGF0ZXN0c191cmwpLFRSVUUpOw0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9nZXRjb2RlKCRjbGllbnRfaWQsICR1c2VyLCAkaXNfbW9iaWxlLCAkc2lnbiwgJGFwcGlkPSIiKQ0Kew0KICAgICRnZXRjb2RlX3VybD1DSEFOR1lBTl9BUElfQ09ERS4iLz9jbGllbnRfaWQ9eyRjbGllbnRfaWR9JnVzZXI9eyR1c2VyfSZpc19tb2JpbGU9eyRpc19tb2JpbGV9JnNpZ249eyRzaWdufSZ1c2VyX2FwcGlkPXskYXBwaWR9IjsNCiAgICByZXR1cm4ganNvbl9kZWNvZGUoY2hhbmd5YW5faHR0cF9zZW5kKCRnZXRjb2RlX3VybCksVFJVRSk7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2dldF90b3BpY19jb21tZW50cygkY2xpZW50X2lkLCAkc2lkLCAkdXJsKQ0Kew0KICAgICRnZXRfdG9waWNfY29tbWVudHNfdXJsPUNIQU5HWUFOX0FQSV9UT1BJQ0NPTU1FTlRTLiIvP2NsaWVudF9pZD17JGNsaWVudF9pZH0mdG9waWNfc291cmNlX2lkPXskc2lkfSZ0b3BpY191cmw9eyR1cmx9IjsNCiAgICByZXR1cm4ganNvbl9kZWNvZGUoY2hhbmd5YW5faHR0cF9zZW5kKCRnZXRfdG9waWNfY29tbWVudHNfdXJsKSxUUlVFKTsNCn0NCmZ1bmN0aW9uIGNoYW5neWFuX2lzbG9naW4oKQ0Kew0KICAgIHJldHVybiBlbXB0eSgkX1NFU1NJT05bJ2NoYW5neWFuJ10pPyBGQUxTRSA6IFRSVUU7DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX2dldF9zZXR0aW5nKCRza2V5LCAkdGltZT1mYWxzZSwgJHJlYWw9ZmFsc2UpDQp7DQogICAgZ2xvYmFsICRkc3FsOw0KICAgIHN0YXRpYyAkc2V0dGluZyA9IGFycmF5KCk7DQogICAgJHNrZXk9YWRkc2xhc2hlcygkc2tleSk7DQogICAgaWYgKGVtcHR5KCRzZXR0aW5nWyRza2V5XSkgfHwgJHJlYWwpIHsNCiAgICAgICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIFdIRVJFIHNrZXk9J3skc2tleX0nIik7DQogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ109JHJvd1snc3ZhbHVlJ107DQogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3RpbWUnXT0kcm93WydzdGltZSddOw0KICAgIH0NCiAgICBpZiAoIWlzc2V0KCRzZXR0aW5nWyRza2V5XSkpIHJldHVybiAkdGltZSA/IGFycmF5KCkgOiBudWxsOw0KICAgIHJldHVybiAkdGltZSA/ICRzZXR0aW5nWyRza2V5XSA6ICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ107DQp9DQoNCmZ1bmN0aW9uIGNoYW5neWFuX3NldF9zZXR0aW5nKCRza2V5LCAkc3ZhbHVlKQ0Kew0KICAgIGdsb2JhbCAkZHNxbDsNCiAgICAkc3RpbWU9dGltZSgpOw0KICAgICRza2V5PWFkZHNsYXNoZXMoJHNrZXkpOw0KICAgICRzdmFsdWU9YWRkc2xhc2hlcygkc3ZhbHVlKTsNCiAgICAkc3FsPSJVUERBVEUgYCNAX19wbHVzX2NoYW5neWFuX3NldHRpbmdgIFNFVCBzdmFsdWU9J3skc3ZhbHVlfScsc3RpbWU9J3skc3RpbWV9JyBXSEVSRSBza2V5PSd7JHNrZXl9JyAiOw0KICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRzcWwpOw0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9hZGRzaXRlKCR1c2VyLCAkaXN2X25hbWUsICR1cmwpDQp7DQogICAgJHNpZ249Y2hhbmd5YW5fZ2VuX3NpZ24oJHVzZXIpOw0KICAgICRwYXJhbXNBcnI9YXJyYXkoDQogICAgICAgICdjbGllbnRfaWQnPT5DSEFOR1lBTl9DTElFTlRfSUQsIA0KICAgICAgICAndXNlcic9PiR1c2VyLCANCiAgICAgICAgJ2lzdl9uYW1lJz0+JGlzdl9uYW1lLA0KICAgICAgICAndXJsJz0+JHVybCwNCiAgICAgICAgJ3NpZ24nPT4kc2lnbik7DQogICAgJHJzPWNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfQUREU0lURSwwLCRwYXJhbXNBcnIpOw0KICAgIHJldHVybiBqc29uX2RlY29kZSgkcnMsIFRSVUUpOw0KfQ0KDQpmdW5jdGlvbiBjaGFuZ3lhbl9mb3JnZXRfcHdkKCRtYWlsLCYkZXJyb3JfbXNnPScnKQ0Kew0KICAgICRwYXJhbXNBcnI9YXJyYXkoDQogICAgICAgICdjbGllbnRfaWQnPT5DSEFOR1lBTl9DTElFTlRfSUQsIA0KICAgICAgICAnbWFpbCc9PiRtYWlsKTsNCiAgICAkcnM9anNvbl9kZWNvZGUoY2hhbmd5YW5faHR0cF9zZW5kKENIQU5HWUFOX0FQSV9GT1JHRVRfUFdELDAsJHBhcmFtc0FyciksIFRSVUUpOw0KICAgIGlmKCEkcnNbJ3N1Y2Nlc3MnXSkNCiAgICB7DQogICAgICAgICRlcnJvcl9tc2c9JHJzWydtc2cnXTsNCiAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgIH0NCiAgICByZXR1cm4gVFJVRTsNCn0NCg0KPz4NCg== - - -77u/PD9waHAgICBpZighZGVmaW5lZCgnREVERUlOQycpKSBleGl0KCdSZXF1ZXN0IEVycm9yIScpOw0KDQpoZWxwZXIoJ2NoYW5neWFuJyk7DQpoZWxwZXIoJ2NhY2hlJyk7DQokR0xPQkFMU1snY2hhbmd5YW5fY291bnRfanMnXSA9IGlzc2V0KCRHTE9CQUxTWydjaGFuZ3lhbl9jb3VudF9qcyddKT8gJEdMT0JBTFNbJ2NoYW5neWFuX2NvdW50X2pzJ10gOiBGQUxTRTsNCmZ1bmN0aW9uIGxpYl9jaGFuZ3lhbigmJGN0YWcsJiRyZWZPYmopDQp7DQogICAgZ2xvYmFsICRkc3FsLCAkZW52czsNCiAgICAvL+WxnuaAp+WkhOeQhg0KICAgICRhdHRsaXN0PSJ0eXBlfGNvZGUsY29uZmlnfCxjbGFzc3xfREVERUNZLHN0eWxlfCI7DQogICAgRmlsbEF0dHNEZWZhdWx0KCRjdGFnLT5DQXR0cmlidXRlLT5JdGVtcywkYXR0bGlzdCk7DQogICAgZXh0cmFjdCgkY3RhZy0+Q0F0dHJpYnV0ZS0+SXRlbXMsIEVYVFJfU0tJUCk7DQogICAgDQogICAgJHJldmFsPSIiOw0KICAgIA0KICAgIGlmKCAhJGRzcWwtPklzVGFibGUoIiNAX19wbHVzX2NoYW5neWFuX3NldHRpbmciKSApIHJldHVybiAn5rKh5a6J6KOF55WF6KiA5qih5Z2XJzsNCiAgICANCiAgICAkY2xpZW50X2lkPWNoYW5neWFuX2dldF9zZXR0aW5nKCdhcHBpZCcpOw0KICAgIGlmKGVtcHR5KCRjbGllbnRfaWQpKSByZXR1cm4gJ+WwmuacquazqOWGjOeVheiogOW4kOWPt++8jOivt+WIsOWQjuWPsOazqOWGjCc7DQogICAgDQogICAgaWYoJHR5cGU9PSdjb2RlJyBPUiAkdHlwZT09J2NvZGUyJykNCiAgICB7DQogICAgICAgICRyZXZhbC49IjxkaXYgY2xhc3M9J3skY2xhc3N9JyBzdHlsZT0neyRzdHlsZX0nPiI7DQogICAgICAgICRwcmVmaXggPSAnY2hhbmd5YW4nOw0KICAgICAgICAka2V5ID0gJ2NvZGUnOw0KICAgICAgICAkcm93ID0gR2V0Q2FjaGUoJHByZWZpeCwgJGtleSk7DQoNCiAgICAgICAgaWYoIWlzX2FycmF5KCRyb3cpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkYXBwaWQ9Y2hhbmd5YW5fZ2V0X3NldHRpbmcoJ2FwcGlkJyk7DQogICAgICAgICAgICAkdXNlcj1jaGFuZ3lhbl9nZXRfc2V0dGluZygndXNlcicpOw0KICAgICAgICAgICAgJHNpZ249Y2hhbmd5YW5fZ2VuX3NpZ24oJHVzZXIpOw0KICAgICAgICAgICAgJHJlc3VsdCA9IGNoYW5neWFuX2dldGNvZGUoQ0hBTkdZQU5fQ0xJRU5UX0lELCAkdXNlciwgZmFsc2UsICRzaWduLCAkYXBwaWQpOw0KICAgICAgICAgICAgaWYgKCAkcmVzdWx0WydzdGF0dXMnXSA9PSAxKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAn5pyq6I635Y+W55WF6KiA5Luj56CB77yM6ZSZ6K+v5raI5oGv77yaJy4kcmVzdWx0Wydtc2cnXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyb3dbJ3JldmFsJ10gPSBkZWRlX2h0bWxzcGVjaWFsY2hhcnMoJHJlc3VsdFsnY29kZSddKTsNCiAgICAgICAgICAgIFNldENhY2hlKCRwcmVmaXgsICRrZXksICRyb3csIDYwKjYwKjEpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZighZW1wdHkoJGNvbmZpZykpDQogICAgICAgIHsNCiAgICAgICAgICAgICRjb25maWdfYXJyID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRjb25maWdzID0gZXhwbG9kZSgnLCcsICRjb25maWcpOw0KICAgICAgICAgICAgaWYoY291bnQoJGNvbmZpZ3MpPjApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkY29uZmlncyBhcyAkYykgew0KICAgICAgICAgICAgICAgICAgICAkaXRlbSA9IGV4cGxvZGUoJzonLCAkYyk7DQogICAgICAgICAgICAgICAgICAgICRjb25maWdfYXJyWyRpdGVtWzBdXSA9ICRpdGVtWzFdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRjb25maWdfc3RyID0ganNvbl9lbmNvZGUoJGNvbmZpZ19hcnIpOw0KICAgICAgICAgICAgJHJldmFsIC49IDw8PEVPVA0KPHNjcmlwdD4NCiAgICB2YXJfY29uZmlnPXskY29uZmlnX3N0cn07DQo8L3NjcmlwdD4NCkVPVDsNCiAgICAgICAgfQ0KICAgICAgICAkcmV2YWwgLj0gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHJvd1sncmV2YWwnXSk7DQogICAgICAgICRyZXZhbD1zdHJfcmVwbGFjZSgiaWQ9J1NPSFVDUyciLCAiaWQ9J1NPSFVDUycgc2lkPSd7JHJlZk9iai0+QXJjSUR9JyIsICRyZXZhbCk7DQogICAgICAgIGlmKCR0eXBlPT0nY29kZTInKSAkcmV2YWw9cHJlZ19yZXBsYWNlKCIjd2luZG93LlNDU19OT19JRlJBTUVbIF0/PVsgXT90cnVlOyNpIiwgIiIsICRyZXZhbCk7DQogICAgICAgICRyZXZhbD1zdHJfcmVwbGFjZSgiPHNjcmlwdD4iLCAiPC9kaXY+PHNjcmlwdD4iLCAkcmV2YWwpOw0KICAgIH0gZWxzZWlmKCR0eXBlPT0nY291bnQnKSB7DQogICAgICAgIGlmKCEkR0xPQkFMU1snY2hhbmd5YW5fY291bnRfanMnXSkgJHJldmFsLj0iPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiaHR0cDovL2Fzc2V0cy5jaGFuZ3lhbi5zb2h1LmNvbS91cGxvYWQvcGx1Z2lucy9wbHVnaW5zLmNvdW50LmpzXCI+PC9zY3JpcHQ+IjsNCiAgICAgICAgJHJldmFsLj0iPGEgaHJlZj1cIiNTT0hVQ1NcIiBpZD1cImNoYW5neWFuX2NvdW50X3VuaXRcIj48L2E+IjsNCiAgICAgICAgJEdMT0JBTFNbJ2NoYW5neWFuX2NvdW50X2pzJ10gPSBUUlVFOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJldmFsOw0KfQ0K - - -PD9waHAKLy9Ac2Vzc2lvbl9zdGFydCgpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuIi9jb25maWcucGhwIik7CnJlcXVpcmVfb25jZShERURFSU5DLiIvb3h3aW5kb3cuY2xhc3MucGhwIik7CgpoZWxwZXIoJ2NoYW5neWFuJyk7CgppZihlbXB0eSgkZG9wb3N0KSkgJGRvcG9zdCA9ICcnOwppZihlbXB0eSgkYWN0aW9uKSkgJGFjdGlvbiA9ICcnOwppZihlbXB0eSgkbm9jaGVjaykpICRub2NoZWNrID0gJyc7CmlmKGVtcHR5KCRmb3J3YXJkKSkgJGZvcndhcmQgPSAnJzsKCiRfU0VTU0lPTlsnY2hhbmd5YW4nXSA9ICFlbXB0eSgkX1NFU1NJT05bJ2NoYW5neWFuJ10pPyAkX1NFU1NJT05bJ2NoYW5neWFuJ10gOiAwOwokX1NFU1NJT05bJ3VzZXInXSA9ICFlbXB0eSgkX1NFU1NJT05bJ3VzZXInXSk/ICRfU0VTU0lPTlsndXNlciddIDogJyc7CgokYXBwaWQ9JGNsaWVudF9pZD1jaGFuZ3lhbl9nZXRfc2V0dGluZygnYXBwaWQnKTsKCmlmICgkZG9wb3N0PT0nYmxhbmsnKSB7CiAgICBleGl0Owp9CgppZiAoJGNmZ19mZWVkYmFja19mb3JiaWQ9PSdOJyBBTkQgIWVtcHR5KCRjbGllbnRfaWQpKSB7CiAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgiVVBEQVRFIGAjQF9fc3lzY29uZmlnYCBTRVQgYHZhbHVlYD0nWScgV0hFUkUgYHZhcm5hbWVgPSdjZmdfZmVlZGJhY2tfZm9yYmlkJzsiKTsKICAgIGNoYW5neWFuX1JlV3JpdGVDb25maWcoKTsKICAgIFNob3dNc2coIuW3sue7j+emgeeUqERlZGVDTVPpu5jorqTor4TorrrvvIzlvIDlkK/nlYXoqIDor4TorrrvvIEiLCI/Iik7CiAgICBleGl0KCk7Cn0KCi8vYXV0byB1cGRhdGUKJHZlcnNpb249Y2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3ZlcnNpb24nKTsKCmlmKGVtcHR5KCRfU0VTU0lPTlsndXNlciddKSBBTkQgZW1wdHkoJG5vY2hlY2spKQp7CiAgICAkZGJfdXNlciA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCd1c2VyJyk7CiAgICAkZGJfcHdkPWNoYW5neWFuX21jaFN0ckNvZGUoY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3B3ZCcpLCAnREVDT0RFJyk7CgogICAgaWYoIWVtcHR5KCRkYl91c2VyKSBBTkQgIWVtcHR5KCRkYl9wd2QpKQogICAgewogICAgICAgIGhlYWRlcignTG9jYXRpb246P2RvcG9zdD1xdWlja19sb2dpbiZub2NoZWNrPXllcyZmb3J3YXJkPScuJGZvcndhcmQpOwogICAgICAgIGV4aXQoKTsKICAgIH0gZWxzZWlmIChlbXB0eSgkZGJfdXNlcikgQU5EIGVtcHR5KCRkYl9wd2QpKSB7CiAgICAgICAgU2hvd01zZygi57O757uf5pyq57uR5a6a55WF6KiA6LSm5Y+377yM5oiR5Lus5bCG6Ieq5Yqo5Li65oKo5YiG6YWN5LiA5Liq5Yid5aeL6LSm5Y+377yM6K+36ICQ5b+D562J5b6F4oCm4oCmIiwiP2RvcG9zdD1hdXRvcmVnJm5vY2hlY2s9eWVzIik7CiAgICAgICAgZXhpdCgpOwogICAgICAgIC8vaGVhZGVyKCdMb2NhdGlvbjo/ZG9wb3N0PWF1dG9yZWcmbm9jaGVjaz15ZXMnKTsKICAgICAgICAvL2V4aXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ3B3ZCcsICcnKTsKICAgIH0KfQoKaWYgKGVtcHR5KCR2ZXJzaW9uKSkgJHZlcnNpb24gPSAnMC4wLjEnOwppZiAodmVyc2lvbl9jb21wYXJlKCR2ZXJzaW9uLCBDSEFOR1lBTl9WRVIsICc8JykpIHsKICAgICRteXNxbF92ZXJzaW9uID0gJGRzcWwtPkdldFZlcnNpb24oVFJVRSk7CiAgICAKICAgIGZvcmVhY2ggKCR1cGRhdGVfc3FscyBhcyAkdmVyID0+ICRzcWxzKSB7CiAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZSgkdmVyLCAkdmVyc2lvbiwnPCcpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkc3FscyBhcyAkc3FsKSB7CiAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIiNFTkdJTkU9TXlJU0FNI2kiLCAnVFlQRT1NeUlTQU0nLCAkc3FsKTsKICAgICAgICAgICAgJHNxbDQxdG1wID0gJ0VOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPScuJGNmZ19kYl9sYW5ndWFnZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHNxbCA9IHByZWdfcmVwbGFjZSgiI1RZUEU9TXlJU0FNI2kiLCAkc3FsNDF0bXAsICRzcWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRzcWwpOwogICAgICAgIH0KICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygndmVyc2lvbicsICR2ZXIpOwogICAgICAgICR2ZXJzaW9uPWNoYW5neWFuX2dldF9zZXR0aW5nKCd2ZXJzaW9uJyk7CiAgICB9CiAgICAkaXN2X2FwcF9rZXkgPSBjaGFuZ3lhbl9nZXRfaXN2X2FwcF9rZXkoKTsKfQoKaWYoJGRvcG9zdD09J3JlZycpCnsKICAgICRtc2cgPSA8PDxFT1QKPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxIj4KICA8dGJvZHk+CiAgICA8dHI+CiAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izk5OSI+PHN0cm9uZz48YSBocmVmPSJodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tLz9mcm9tZGVkZWNtcyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpibHVlIj7nlYXoqIA8L2E+PC9zdHJvbmc+5piv5LiA5Liq566A5Y2V6ICM5by65aSn55qE56S+5Lya5YyW6K+E6K665Y+K6IGa5ZCI5bmz5Y+w44CC55So5oi35Y+v5Lul55u05o6l55So6Ieq5bex55qE56S+5Lya5YyW572R57uc6LSm5oi35Zyo56ys5LiJ5pa5572R56uZ5Y+R6KGo6K+E6K6677yM5bm25LiU5LiA6ZSu6K+E6K665ZCM5q2l6Iez56S+5Lqk572R57uc5bCG572R56uZ5YaF5a655ZKM6Ieq5bex55qE6K+E6K665YiG5Lqr57uZ5aW95Y+L44CC5aKe5Yqg56ys5LiJ5pa5572R56uZ55So5oi35rS76LeD5bqm77yM6LCD5Yqo5aW95Y+L5Y+C5LiO6K+E6K6677yM5biu5Yqp572R56uZ5a6e546w56S+5Lya5YyW572R57uc5LyY5YyW77yM5pyJ5pWI5o+Q5Y2H572R56uZ56S+5Lya5YyW5rWB6YeP77yBPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izk5OSI+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7pgq7nrrHvvJo8L3RkPgogICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJ1c2VyIiB0eXBlPSJ0ZXh0IiBpZD0idXNlciIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgLz48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGhlaWdodD0iMzAiPuWvhuegge+8mjwvdGQ+CiAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9InB3ZCIgdHlwZT0icGFzc3dvcmQiIGlkPSJwd2QiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjojOTk5Ij4mbmJzcDvor7fovpPlhaXmlbDlrZfjgIHlrZfmr43miJbluLjnlKjnrKblj7c8L3NwYW4+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBoZWlnaHQ9IjMwIj7noa7orqTlr4bnoIHvvJo8L3RkPgogICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJyZXB3ZCIgdHlwZT0icGFzc3dvcmQiIGlkPSJyZXB3ZCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CiAgICAgICAgJm5ic3A7PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7nvZHnq5nlkI3np7DvvJo8L3RkPgogICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJpc3ZfbmFtZSIgdHlwZT0idGV4dCIgaWQ9Imlzdl9uYW1lIiBzaXplPSIxNiIgc3R5bGU9IndpZHRoOjIwMHB4IiB2YWx1ZT0ieyRjZmdfd2VibmFtZX0iIC8+PHNwYW4gc3R5bGU9ImNvbG9yOiM5OTkiPiZuYnNwOyDkuLrmlrnkvr/mgqjnrqHnkIbnq5nngrnor4TorrrvvIzlu7rorq7mm7TmlLnnq5nngrnlkI3np7A8L3NwYW4+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7nvZHnq5nlnLDlnYDvvJo8L3RkPgogICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJ1cmwiIHR5cGU9InRleHQiIGlkPSJ1cmwiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiIHZhbHVlPSJ7JGNmZ19iYXNlaG9zdH0iIC8+PHNwYW4gc3R5bGU9ImNvbG9yOiM5OTkiPiZuYnNwOyDkvovlpoLvvJpodHRwOi8vd3d3LmRlZGVjbXMuY29tPC9zcGFuPjwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CkVPVDsKCiAgICAkd2ludGl0bGUgPSAn5rOo5YaM55WF6KiA5biQ5Y+377yaJzsKICAgICR3ZWNvbWVfaW5mbyA9ICc8YSBocmVmPSI/Ij7nlYXoqIDor4TorrrmqKHlnZc8L2E+IOOAi+azqOWGjOW4kOWPtyc7CiAgICAkd2luID0gbmV3IE94V2luZG93KCk7CiAgICAkd2luLT5Jbml0KCc/JywnanMvYmxhbmsuanMnLCdQT1NUJyk7CiAgICAkd2luLT5BZGRIaWRkZW4oJ2RvcG9zdCcsJ2RvcmVnJyk7CiAgICAkd2luLT5BZGRIaWRkZW4oJ25vY2hlY2snLCd5ZXMnKTsKICAgICR3aW4tPkFkZFRpdGxlKCR3aW50aXRsZSk7CiAgICAkd2luLT5BZGRNc2dJdGVtKCRtc2cpOwogICAgJHdpbmZvcm0gPSAkd2luLT5HZXRXaW5kb3coJ29rJywgJyZuYnNwOycsIGZhbHNlKTsKICAgICR3aW4tPkRpc3BsYXkoKTsKCn0gZWxzZWlmICgkZG9wb3N0PT0nZG9yZWcnKSB7CiAgICAkdXNlciA9IGVtcHR5KCR1c2VyKT8gJycgOiAkdXNlcjsKICAgICRwd2QgPSBlbXB0eSgkcHdkKT8gJycgOiAkcHdkOwogICAgJHJlcHdkID0gZW1wdHkoJHJlcHdkKT8gJycgOiAkcmVwd2Q7CiAgICAkaXN2X25hbWUgPSBlbXB0eSgkaXN2X25hbWUpPyAnJyA6ICRpc3ZfbmFtZTsKICAgICR1cmwgPSBlbXB0eSgkdXJsKT8gJycgOiAkdXJsOwogICAgCiAgICBpZighcHJlZ19tYXRjaCgiI15odHRwOlwvXC9bQS1aYS16MC05XStcLltBLVphLXowLTldK1tcLz1cPyVcLSZffmBAW1xdXCc6KyFdKihbXjw+XCJdKSokIyIsJHVybCkpCiAgICB7CiAgICAgICAgU2hvd01zZygi6K+35aGr5YaZ5q2j56Gu55qE572R5Z2A5qC85byPIiwtMSk7CiAgICAgICAgZXhpdCgpOwogICAgfQogICAgCiAgICBpZihlbXB0eSgkaXN2X25hbWUpIE9SIGVtcHR5KCR1cmwpKQogICAgewogICAgICAgIFNob3dNc2coIuaCqOmcgOimgeWhq+WGmeato+ehrueahOermeeCueS/oeaBr++8jOivt+mHjeaWsOWhq+WGmSIsLTEpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgIGlmKGVtcHR5KCR1c2VyKSBPUiBlbXB0eSgkcHdkKSBPUiBlbXB0eSgkcmVwd2QpKQogICAgewogICAgICAgIFNob3dNc2coIuaCqOmcgOimgeWhq+WGmUUtbWFpbOWSjOWvhuegge+8jOivt+mHjeaWsOWhq+WGmSIsLTEpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgIGlmKCFDaGVja0VtYWlsKCR1c2VyKSkKICAgIHsKICAgICAgICBTaG93TXNnKCLmgqjnmoRFLW1haWzmoLzlvI/plJnor6/vvIzor7fph43mlrDloavlhpkiLC0xKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICBpZigkcHdkICE9ICRyZXB3ZCkKICAgIHsKICAgICAgICBTaG93TXNnKCLloavlhpnkuKTmrKHlr4bnoIHkuI3lkIzvvIzor7fov5Tlm57ph43mlrDovpPlhaXvvIEiLC0xKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICAkc2lnbj1jaGFuZ3lhbl9nZW5fc2lnbigkdXNlcik7CiAgICAkcGFyYW1zQXJyPWFycmF5KAogICAgICAgICdjbGllbnRfaWQnPT5DSEFOR1lBTl9DTElFTlRfSUQsIAogICAgICAgICd1c2VyJz0+Y2hhbmd5YW5fYXV0b0NoYXJzZXQoJHVzZXIpLCAKICAgICAgICAncGFzc3dvcmQnPT4kcHdkLCAKICAgICAgICAnaXN2X25hbWUnPT5jaGFuZ3lhbl9hdXRvQ2hhcnNldCgkaXN2X25hbWUpLCAKICAgICAgICAndXJsJz0+JHVybCwgCiAgICAgICAgJ3NpZ24nPT4kc2lnbik7CiAgICAkcnM9Y2hhbmd5YW5faHR0cF9zZW5kKENIQU5HWUFOX0FQSV9SRUcsMCwkcGFyYW1zQXJyKTsKICAgICRyZXN1bHQ9anNvbl9kZWNvZGUoJHJzLFRSVUUpOwogICAgJGVycm9yaW5mb1snYXBwaWQgbm90IGV4aXN0J109J2NsaWVudF9pZOS4jeWtmOWcqCc7CiAgICAkZXJyb3JpbmZvWydzaWduIGVycm9yJ109J+etvuWQjemqjOivgeWksei0pSc7CiAgICAkZXJyb3JpbmZvWyd1c2VyIG5hbWUgZXhpc3QnXT0n5rOo5YaM55So5oi35bey57uP5a2Y5ZyoJzsKICAgIGlmKCRyZXN1bHRbJ3N0YXR1cyddPT0wKQogICAgewogICAgICAgIC8vIOS/neWtmGFwcGlkLGlk5L+h5oGvCiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ3VzZXInLCAkdXNlcik7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2FwcGlkJywgJHJlc3VsdFsnYXBwaWQnXSk7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2lkJywgJHJlc3VsdFsnaWQnXSk7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2lzdl9pZCcsICRyZXN1bHRbJ2lzdl9pZCddKTsKICAgICAgICBjaGFuZ3lhbl9jbGVhcmNhY2hlKCk7CiAgICAgICAgU2hvd01zZygi5oKo5bey57uP5oiQ5Yqf5rOo5YaM77yM546w5Zyo6L+b6KGM55m75b2V77yBIiwnPycpOwogICAgICAgIGV4aXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgU2hvd01zZygi5peg5rOV5q2j5bi45rOo5YaM77yM6ZSZ6K+v5L+h5oGv77yaIi4kZXJyb3JpbmZvWyRyZXN1bHRbJ21zZyddXSwgLTEpOwogICAgICAgIGV4aXQoKTsKICAgIH0KfSBlbHNlaWYgKCRkb3Bvc3Q9PSdhdXRvcmVnJykgewogICAgJHN0ZXAgPSBlbXB0eSgkc3RlcCk/IDAgOiAkc3RlcDsKICAgICRkYl91c2VyID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsKICAgIGlmKCFlbXB0eSgkZGJfdXNlcikpIGRpZSgnRXJyb3I6VXNlciBuYW1lIGlzIG5vdCBlbXB0eSEnKTsKICAgICRjaGFycz0nYWJjZGVmZ2hpZ2tsbW5vcHFyc3R1dnd4d3lBQkNERUZHSElHS0xNTk9QUVJTVFVWV1hXWTAxMjM0NTY3ODknOwogICAgJHNpZ249Y2hhbmd5YW5fZ2VuX3NpZ24oQ0hBTkdZQU5fQ0xJRU5UX0lEKTsKICAgICR1cmwgPSAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXTsKICAgICRpc3ZfbmFtZSA9IGNuX3N1YnN0cigkY2ZnX3dlYm5hbWUsMjApOwogICAgJHBhcmFtc0Fycj1hcnJheSgKICAgICAgICAnY2xpZW50X2lkJz0+Q0hBTkdZQU5fQ0xJRU5UX0lELCAKICAgICAgICAnaXN2X25hbWUnPT5jaGFuZ3lhbl9hdXRvQ2hhcnNldCgkaXN2X25hbWUpLCAKICAgICAgICAndXJsJz0+J2h0dHA6Ly8nLiR1cmwsIAogICAgICAgICdzaWduJz0+JHNpZ24pOwoKICAgICRycz1jaGFuZ3lhbl9odHRwX3NlbmQoQ0hBTkdZQU5fQVBJX0FVVE9SRUcsMCwkcGFyYW1zQXJyKTsKICAgIC8vdmFyX2R1bXAoJHJzKTtleGl0OwogICAgJHJlc3VsdD1qc29uX2RlY29kZSgkcnMsVFJVRSk7CiAgICBpZigkcmVzdWx0WydzdGF0dXMnXT09MCkKICAgIHsKICAgICAgICAvLyDkv53lrZhhcHBpZCxpZOS/oeaBrwogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCd1c2VyJywgJHJlc3VsdFsndXNlciddKTsKICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnYXBwaWQnLCAkcmVzdWx0WydhcHBpZCddKTsKICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaWQnLCAkcmVzdWx0WydpZCddKTsKICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2FwcF9rZXknLCAkcmVzdWx0Wydpc3ZfYXBwX2tleSddKTsKICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2lkJywgJHJlc3VsdFsnaXN2X2lkJ10pOwogICAgICAgIGNoYW5neWFuX2NsZWFyY2FjaGUoKTsKICAgICAgICAkcGFzc3dkID0gY2hhbmd5YW5fbWNoU3RyQ29kZSgkcmVzdWx0WydwYXNzd2QnXSwgJ0VOQ09ERScpOwogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdwd2QnLCAkcGFzc3dkKTsKICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj8nKTsKICAgICAgICBleGl0KCk7CiAgICB9IGVsc2UgewogICAgICAgIGlmKCRzdGVwID4gMTApCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCLml6Dms5Xoh6rliqjliIbphY3otKblj7fvvIzor7fmiYvliqjov5vooYzms6jlhozvvIEiLCc/ZG9wb3N0PXJlZyZub2NoZWNrPXllcycpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgICRzdGVwKys7CiAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjo/ZG9wb3N0PWF1dG9yZWcmbm9jaGVjaz15ZXMmaT0nLiRzdGVwKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICAKfSBlbHNlaWYgKCRkb3Bvc3Q9PSdiaW5kJykgewogICAgJHR5cGUgPSBlbXB0eSgkdHlwZSk/ICdyZWcnIDogJHR5cGU7CiAgICBpZigkYWN0aW9uPT0nZG8nKQogICAgewogICAgICAgIGlmKCR0eXBlIT0ncmVnJykgJHJlcHdkPSRwd2Q7CiAgICAgICAgaWYoZW1wdHkoJHVzZXIpIE9SIGVtcHR5KCRwd2QpIE9SIGVtcHR5KCRyZXB3ZCkpCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCLmgqjpnIDopoHloavlhplFLW1haWzlkozlr4bnoIHvvIzor7fph43mlrDloavlhpkiLC0xKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgICAgICBpZighQ2hlY2tFbWFpbCgkdXNlcikpCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCLmgqjnmoRFLW1haWzmoLzlvI/plJnor6/vvIzor7fph43mlrDloavlhpkiLC0xKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgICAgICBpZigkcHdkICE9ICRyZXB3ZCkKICAgICAgICB7CiAgICAgICAgICAgIFNob3dNc2coIuWhq+WGmeS4pOasoeWvhueggeS4jeWQjO+8jOivt+i/lOWbnumHjeaWsOi+k+WFpe+8gSIsLTEpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgIGlmKCR0eXBlPT0ncmVnJykKICAgICAgICB7CiAgICAgICAgICAgICRlcnJvckluZm89Jyc7CiAgICAgICAgICAgIGlmKGNoYW5neWFuX2JpbmRfYWNjb3VudCgkdXNlciwgJHB3ZCwgJGVycm9ySW5mbykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNob3dNc2coIue7keWumuaIkOWKn++8jOS4i+mdoui/m+ihjOi0puWPt+WIh+aNouKApuKApu+8gSIsIj9kb3Bvc3Q9cXVpY2tfbG9naW4mbm9jaGVjaz15ZXMiKTsKICAgICAgICAgICAgICAgIGV4aXQoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIFNob3dNc2coIui0puWPt+acque7keWumuaIkOWKn++8jOivt+ajgOafpeaCqOi+k+WFpeeahOS/oeaBr+aYr+WQpuacieivr++8mnskZXJyb3JJbmZvfe+8gSIsLTEpOwogICAgICAgICAgICAgICAgZXhpdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy92YXJfZHVtcCgiTG9jYXRpb246P2RvcG9zdD1sb2dpbiZ1c2VyPXskdXNlcn0mcHdkPXskcHdkfSIpO2V4aXQ7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246P2RvcG9zdD1sb2dpbiZ1c2VyPXskdXNlcn0mcHdkPXskcHdkfSZjbGVhcj15ZXMiKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgICAgICBleGl0KCk7CiAgICB9CiAgICBpZigkdHlwZT09J3JlZycpCiAgICB7CiAgICAgICAgJHRhYmxlID0gPDw8RU9UCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiPue7keWumuexu+Wei++8mjwvdGQ+CiAgICAgICAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9InJhZGlvIiB0eXBlPSJyYWRpbyIgaWQ9Im5ld3JlZyIgdmFsdWU9Im5ld3JlZyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLmhyZWY9Jz9kb3Bvc3Q9YmluZCZ0eXBlPXJlZyciIGNoZWNrZWQ+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5ld3JlZyI+5paw5Yib5bu66LSm5Y+3PC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyYWRpbyIgaWQ9ImxvZ2luIiB2YWx1ZT0ibG9naW4iIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PWJpbmQmdHlwZT1sb2dpbiciID4KICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImxvZ2luIj7lt7Lnu4/mnInnlYXoqIDotKblj7c8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0eXBlJyB2YWx1ZT0ncmVnJz48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7ns7vnu5/liIbphY3otKblj7fvvJo8L3RkPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+eyRfU0VTU0lPTlsndXNlciddfTwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+6YKu566x77yaPC90ZD4KICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJ1c2VyIiB0eXBlPSJ0ZXh0IiBpZD0idXNlciIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgLz48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiPuWvhuegge+8mjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgbmFtZT0icHdkIiB0eXBlPSJwYXNzd29yZCIgaWQ9InB3ZCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+Jm5ic3A76K+36L6T5YWl5pWw5a2X44CB5a2X5q+N5oiW5bi455So56ym5Y+3PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCI+56Gu6K6k5a+G56CB77yaPC90ZD4KICAgICAgICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJyZXB3ZCIgdHlwZT0icGFzc3dvcmQiIGlkPSJyZXB3ZCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CiAgICAgICAgICAgICAgICAmbmJzcDs8L3RkPgogICAgICAgICAgICA8L3RyPgpFT1Q7CiAgICB9IGVsc2UgewogICAgICAgICR0YWJsZSA9IDw8PEVPVAogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIj7nu5HlrprnsbvlnovvvJo8L3RkPgogICAgICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJyYWRpbyIgdHlwZT0icmFkaW8iIGlkPSJuZXdyZWciIHZhbHVlPSJuZXdyZWciIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PWJpbmQmdHlwZT1yZWcnIj4KICAgICAgICAgICAgPGxhYmVsIGZvcj0ibmV3cmVnIj7mlrDliJvlu7rotKblj7c8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJhZGlvIiBpZD0ibG9naW4iIHZhbHVlPSJsb2dpbiIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLmhyZWY9Jz9kb3Bvc3Q9YmluZCZ0eXBlPWxvZ2luJyIgY2hlY2tlZD4KICAgICAgICAgICAgPGxhYmVsIGZvcj0ibG9naW4iPuW3sue7j+acieeVheiogOi0puWPtzwvbGFiZWw+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndHlwZScgdmFsdWU9J2xvZ2luJz48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7ns7vnu5/liIbphY3otKblj7fvvJo8L3RkPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+eyRfU0VTU0lPTlsndXNlciddfTwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+6YKu566x77yaPC90ZD4KICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJ1c2VyIiB0eXBlPSJ0ZXh0IiBpZD0idXNlciIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgLz48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiPuWvhuegge+8mjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgbmFtZT0icHdkIiB0eXBlPSJwYXNzd29yZCIgaWQ9InB3ZCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+Jm5ic3A76K+36L6T5YWl5pWw5a2X44CB5a2X5q+N5oiW5bi455So56ym5Y+3PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CkVPVDsKICAgIH0KICAgICRtc2cgPSA8PDxFT1QKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD17JGNmZ19zb2Z0X2xhbmd9Ij4KPHRpdGxlPue7keWumueVheiogOW4kOWPt++8mjwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InskY2ZnX3BsdXNfZGlyfS9pbWcvYmFzZS5jc3MiPgo8L2hlYWQ+Cjxib2R5IGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSI4IiB0b3BtYXJnaW49JzgnPgo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNERkY5QUEiPgogIDx0cj4KICAgIDx0ZCBoZWlnaHQ9IjI4IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjREFEQURBIiBiYWNrZ3JvdW5kPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL3diZy5naWYnPiZuYnNwOzxiPuKXhzxhIGhyZWY9Ij8iPueVheiogOivhOiuuuaooeWdlzwvYT4g44CL57uR5a6a5biQ5Y+3PC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgCiAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjgwIiBzdHlsZT0icGFkZGluZy10b3A6NXB4IiBiZ2NvbG9yPScjZmZmZmZmJz4KICAKICA8c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4KZnVuY3Rpb24gQ2hlY2tTdWJtaXQoKXsKCXJldHVybiB0cnVlOyAKfQo8L3NjcmlwdD4KICA8Zm9ybSBuYW1lPSdteWZvcm0nIG1ldGhvZD0nUE9TVCcgb25TdWJtaXQ9J3JldHVybiBDaGVja1N1Ym1pdCgpOycgYWN0aW9uPSc/Jz4KICAKICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdiaW5kJz4KICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhY3Rpb24nIHZhbHVlPSdkbyc+CiAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nbm9jaGVjaycgdmFsdWU9J3llcyc+CiAgPHRhYmxlIHdpZHRoPScxMDAlJyAgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMycgY2VsbHNwYWNpbmc9JzEnIGJnY29sb3I9JyNEQURBREEnPgogICAgPHRyIGJnY29sb3I9JyNEQURBREEnPgogICAgICA8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+57uR5a6a55WF6KiA5biQ5Y+377yaPC9iPjwvZm9udD48L3RkPgogICAgPC90cj4KICAgIDx0ciBiZ2NvbG9yPScjRkZGRkZGJz4KICAgICAgPHRkIGNvbHNwYW49JzInICBoZWlnaHQ9JzEwMCc+PHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxIj4KICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izk5OSI+PHN0cm9uZz48YSBocmVmPSJodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tLz9mcm9tZGVkZWNtcyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjpibHVlIj7nlYXoqIA8L2E+PC9zdHJvbmc+5piv5LiA5Liq566A5Y2V6ICM5by65aSn55qE56S+5Lya5YyW6K+E6K665Y+K6IGa5ZCI5bmz5Y+w44CC55So5oi35Y+v5Lul55u05o6l55So6Ieq5bex55qE56S+5Lya5YyW572R57uc6LSm5oi35Zyo56ys5LiJ5pa5572R56uZ5Y+R6KGo6K+E6K6677yM5bm25LiU5LiA6ZSu6K+E6K665ZCM5q2l6Iez56S+5Lqk572R57uc5bCG572R56uZ5YaF5a655ZKM6Ieq5bex55qE6K+E6K665YiG5Lqr57uZ5aW95Y+L44CC5aKe5Yqg56ys5LiJ5pa5572R56uZ55So5oi35rS76LeD5bqm77yM6LCD5Yqo5aW95Y+L5Y+C5LiO6K+E6K6677yM5biu5Yqp572R56uZ5a6e546w56S+5Lya5YyW572R57uc5LyY5YyW77yM5pyJ5pWI5o+Q5Y2H572R56uZ56S+5Lya5YyW5rWB6YeP77yBPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izk5OSI+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICB7JHRhYmxlfQogICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgY29sc3Bhbj0nMicgYmdjb2xvcj0nI0Y5RkNFRic+PHRhYmxlIHdpZHRoPScyNzAnIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz4KICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJyBoZWlnaHQ9JzI4Jz4KICAgICAgICAgICAgPHRkIHdpZHRoPSc5MCc+PGlucHV0IG5hbWU9J2ltYWdlRmllbGQxJyB0eXBlPSdpbWFnZScgY2xhc3M9J25wJyBzcmM9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYnV0dG9uX29rLmdpZicgd2lkdGg9JzYwJyBoZWlnaHQ9JzIyJyBib3JkZXI9JzAnIC8+PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSc5MCc+PGEgaHJlZj0nPyc+PGltZyBzcmM9Jy9wbHVzL2ltZy9idXR0b25fYmFjay5naWYnIHdpZHRoPSc2MCcgaGVpZ2h0PScyMicgYm9yZGVyPScwJyAvPjwvYT48L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9JzkwJz48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICA8L3RyPgogIDwvdGFibGU+CiAgPC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8cCBhbGlnbj0iY2VudGVyIj4gPGJyPgogIDxicj4KPC9wPgo8L2JvZHk+CjwvaHRtbD4KRU9UOwogICAgZWNobyAkbXNnOwogICAgZXhpdCgpOwp9IGVsc2VpZiAoJGRvcG9zdD09J3F1aWNrX2xvZ2luJykKewogICAgJGNsZWFyID0gZW1wdHkoJGNsZWFyKT8gJycgOiAkY2xlYXI7CiAgICBpZihlbXB0eSgkZm9yd2FyZCkpICRmb3J3YXJkID0gJyc7CiAgICAkdXNlciA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCd1c2VyJyk7CiAgICAkcHdkPWNoYW5neWFuX21jaFN0ckNvZGUoY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3B3ZCcpLCAnREVDT0RFJykgOwogICAgJHNpZ249Y2hhbmd5YW5fZ2VuX3NpZ24oJHVzZXIpOwogICAgJHBhcmFtc0Fycj1hcnJheSgKICAgICAgICAnY2xpZW50X2lkJz0+Q0hBTkdZQU5fQ0xJRU5UX0lELCAKICAgICAgICAndXNlcic9PiR1c2VyLCAKICAgICAgICAncGFzc3dvcmQnPT4kcHdkLCAKICAgICAgICAnc2lnbic9PiRzaWduKTsKICAgICRycz1jaGFuZ3lhbl9odHRwX3NlbmQoQ0hBTkdZQU5fQVBJX0xPR0lOLDAsJHBhcmFtc0Fycik7CiAgICAkcmVzdWx0PWpzb25fZGVjb2RlKCRycyxUUlVFKTsKICAgIGlmKCRyZXN1bHRbJ3N0YXR1cyddPT0wKQogICAgewogICAgICAgIGlmKCFlbXB0eSgkY2xlYXIpKSBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2lkJywgJycpOwogICAgICAgIC8vJGFwcGlkID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ2FwcGlkJyk7CiAgICAgICAgJGlzdl9pZCA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCdpc3ZfaWQnKTsKICAgICAgICAkaXN2cyA9IGNoYW5neWFuX2dldF9pc3ZzKCk7CiAgICAgICAgJGlzdl9pbiA9IEZBTFNFOwogICAgICAgIGlmKCFlbXB0eSgkaXN2X2lkKSApIGZvcmVhY2goJGlzdnMgYXMgJGlzdil7IGlmKCRpc3ZbJ2lkJ109PSRpc3ZfaWQpICRpc3ZfaW49VFJVRTsgfQogICAgICAgICRfU0VTU0lPTlsnY2hhbmd5YW4nXT0kcmVzdWx0Wyd0b2tlbiddOwogICAgICAgICRfU0VTU0lPTlsndXNlciddPSR1c2VyOwogICAgICAgIGlmKCEkaXN2X2luKQogICAgICAgIHsKICAgICAgICAgICAgU2hvd01zZygi5bCa5pyq6K6+572u56uZ54K5QVBQ5L+h5oGv77yM6K+36L+b6KGM6YWN572u4oCm4oCmIiwnP2RvcG9zdD1jaGFuZ2VfYXBwaW5mbycpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjo/Zm9yd2FyZD0nLiRmb3J3YXJkKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ3B3ZCcsICcnKTsKICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj8nKTsKICAgICAgICBleGl0KCk7CiAgICB9Cn0gZWxzZWlmICgkZG9wb3N0PT0nbG9naW4nKSB7CiAgICAkdXNlciA9IGVtcHR5KCR1c2VyKT8gJycgOiAkdXNlcjsKICAgICRwd2QgPSBlbXB0eSgkcHdkKT8gJycgOiAkcHdkOwogICAgJGNsZWFyID0gZW1wdHkoJGNsZWFyKT8gJycgOiAkY2xlYXI7CiAgICAvLyRybXB3ZCA9IGVtcHR5KCRybXB3ZCk/ICcnIDogJHJtcHdkOwogICAgaWYoZW1wdHkoJHVzZXIpIE9SIGVtcHR5KCRwd2QpKQogICAgewogICAgICAgIFNob3dNc2coIuaCqOmcgOimgeWhq+WGmUUtbWFpbOWSjOWvhuegge+8jOivt+mHjeaWsOWhq+WGmSIsLTEpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgIGlmKCFDaGVja0VtYWlsKCR1c2VyKSkKICAgIHsKICAgICAgICBTaG93TXNnKCLmgqjnmoRFLW1haWzmoLzlvI/plJnor6/vvIzor7fph43mlrDloavlhpkiLC0xKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICAKICAgICRzaWduPWNoYW5neWFuX2dlbl9zaWduKCR1c2VyKTsKICAgICRwYXJhbXNBcnI9YXJyYXkoCiAgICAgICAgJ2NsaWVudF9pZCc9PkNIQU5HWUFOX0NMSUVOVF9JRCwgCiAgICAgICAgJ3VzZXInPT4kdXNlciwgCiAgICAgICAgJ3Bhc3N3b3JkJz0+JHB3ZCwgCiAgICAgICAgJ3NpZ24nPT4kc2lnbik7CiAgICAkcnM9Y2hhbmd5YW5faHR0cF9zZW5kKENIQU5HWUFOX0FQSV9MT0dJTiwwLCRwYXJhbXNBcnIpOwogICAgJHJlc3VsdD1qc29uX2RlY29kZSgkcnMsVFJVRSk7CiAgICBpZigkcmVzdWx0WydzdGF0dXMnXT09MSkKICAgIHsKICAgICAgICBTaG93TXNnKCLml6Dms5XnmbvlvZXvvIzor7fmo4Dmn6XmgqjnmoTluJDlj7fkv6Hmga/mmK/lkKbloavlhpnmraPnoa7vvIEiLC0xKTsKICAgICAgICBleGl0KCk7CiAgICB9IGVsc2VpZiAoJHJlc3VsdFsnc3RhdHVzJ109PTApCiAgICB7CiAgICAgICAgJGRiX3VzZXIgPSBjaGFuZ3lhbl9nZXRfc2V0dGluZygndXNlcicpOwoKICAgICAgICBpZigkZGJfdXNlciAhPSAkdXNlcikKICAgICAgICB7CiAgICAgICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCd1c2VyJywgJHVzZXIpOwogICAgICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2FwcF9rZXknLCAnJyk7CiAgICAgICAgICAgICRpc3ZfYXBwX2tleSA9IGNoYW5neWFuX2dldF9pc3ZfYXBwX2tleSgpOwogICAgICAgIH0KICAgICAgICBpZighZW1wdHkoJGNsZWFyKSkgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2lzdl9pZCcsICcnKTsKICAgICAgICAkaXN2X2lkID0gY2hhbmd5YW5fZ2V0X3NldHRpbmcoJ2lzdl9pZCcpOwogICAgICAgICRpc3ZzID0gY2hhbmd5YW5fZ2V0X2lzdnMoKTsKICAgICAgICAkaXN2X2luID0gRkFMU0U7CiAgICAgICAgaWYoIWVtcHR5KCRpc3ZfaWQpKSBmb3JlYWNoKCRpc3ZzIGFzICRpc3YpeyBpZigkaXN2WydpZCddPT0kaXN2X2lkKSAkaXN2X2luPVRSVUU7IH0KICAgICAgICAkX1NFU1NJT05bJ2NoYW5neWFuJ109JHJlc3VsdFsndG9rZW4nXTsKICAgICAgICAkX1NFU1NJT05bJ3VzZXInXT0kdXNlcjsKICAgICAgICAkbG9naW5fdXJsPUNIQU5HWUFOX0FQSV9TRVRDT09LSUUuJz9jbGllbnRfaWQ9Jy5DSEFOR1lBTl9DTElFTlRfSUQuJyZ0b2tlbj0nLiRyZXN1bHRbJ3Rva2VuJ107CiAgICAgICAgCiAgICAgICAgJHB3ZCA9IGNoYW5neWFuX21jaFN0ckNvZGUoJHB3ZCwgJ0VOQ09ERScpOwogICAgICAgIAogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdwd2QnLCAkcHdkKTsKICAgICAgICAKICAgICAgICBlY2hvIDw8PEVPVAo8aWZyYW1lIHNyYz0ieyRsb2dpbl91cmx9IiBzY3JvbGxpbmc9Im5vIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiBzdHlsZT0iYm9yZGVyOm5vbmUiPjwvaWZyYW1lPgpFT1Q7CiAgICAgICAgaWYoISRpc3ZfaW4pCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCLlsJrmnKrorr7nva7nq5nngrlBUFDkv6Hmga/vvIzor7fov5vooYzphY3nva7igKbigKYiLCc/ZG9wb3N0PWNoYW5nZV9hcHBpbmZvJyk7CiAgICAgICAgICAgIGV4aXQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj8nKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgU2hvd01zZygi5peg5rOV55m75b2V77yM5pyq55+l6ZSZ6K+v77yBIiwtMSk7CiAgICAgICAgZXhpdCgpOwogICAgfQp9IGVsc2VpZiAoJGRvcG9zdD09J2NoYW5nZWlzdicpIHsKICAgICRpc3ZfaWQgPSBpbnR2YWwoJGlzdl9pZCk7CiAgICAkY2hhbmdnZV9pc3ZfdXJsID0gQ0hBTkdZQU5fQVBJX0NIQU5HRV9JU1YuJGlzdl9pZDsKICAgICRpc3ZfYXBwX2tleSA9IGNoYW5neWFuX2dldF9pc3ZfYXBwX2tleSgpOwogICAgZWNobyA8PDxFT1QKPGlmcmFtZSBzcmM9InskY2hhbmdnZV9pc3ZfdXJsfSIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgc3R5bGU9ImJvcmRlcjpub25lIj48L2lmcmFtZT4KRU9UOwogICAgU2hvd01zZygi5oiQ5Yqf5YiH5o2i56uZ54K577yBIiwnPycpOwogICAgZXhpdCgpOwp9IGVsc2VpZiAoJGRvcG9zdD09J2lzbmV3JykgewogICAgJHJzPWNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfSVNORVcuJy8/YXBwSWQ9Jy4kY2xpZW50X2lkLicmZGF0ZT0nLnVybGVuY29kZSggZGF0ZSgnWS1tLWQgaDppOnMnKSkpOwogICAgJHJlc3VsdD1qc29uX2RlY29kZSgkcnMsVFJVRSk7CiAgICBpZihjb3VudCgkcmVzdWx0Wyd0b3BpY3MnXSk+MCkgZXhpdCgndHJ1ZScpOwogICAgZWxzZSBleGl0KCdmYWxzZScpOwp9IGVsc2VpZiAoJGRvcG9zdD09J2xhdGVzdHMnKSB7CiAgICAkbGF0ZXN0cyA9IGNoYW5neWFuX2xhdGVzdHMoJGNsaWVudF9pZCk7CiAgICAkZGF0YSA9IGFycmF5KCk7CiAgICBpZihjb3VudCgkbGF0ZXN0c1snY29tbWVudHMnXSkgPiAwKQogICAgewogICAgICAgIGZvcmVhY2goJGxhdGVzdHNbJ2NvbW1lbnRzJ10gYXMgJGsgPT4gJHYpCiAgICAgICAgewogICAgICAgICAgICAkZGF0YVtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbmlja25hbWUnPT4kdlsncGFzc3BvcnQnXVsnbmlja25hbWUnXSwKICAgICAgICAgICAgICAgICdjb250ZW50Jz0+JHZbJ2NvbnRlbnQnXSwKICAgICAgICAgICAgICAgICd0b3BpY190aXRsZSc9PiR2Wyd0b3BpY190aXRsZSddLAogICAgICAgICAgICAgICAgJ3RvcGljX3VybCc9PiR2Wyd0b3BpY191cmwnXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvIGpzb25fZW5jb2RlKCRsYXRlc3RzKTsKICAgIGV4aXQ7Cn0gZWxzZWlmICgkZG9wb3N0PT0nZ2V0Y29kZScpIHsKICAgIGlmKCFjaGFuZ3lhbl9pc2xvZ2luKCkpCiAgICB7CiAgICAgICAgU2hvd01zZygi5oKo5bCa5pyq55m75b2V55WF6KiA77yM6K+35YWI55m75b2V5ZCO57un57ut5L2/55So4oCm4oCm77yBIiwnPycpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgIGNoYW5neWFuX2NoZWNrX2lzbG9naW4oKTsKICAgICR1c2VyPWNoYW5neWFuX2dldF9zZXR0aW5nKCd1c2VyJyk7CiAgICAkc2lnbj1jaGFuZ3lhbl9nZW5fc2lnbigkdXNlcik7CiAgICAkcmVzdWx0ID0gY2hhbmd5YW5fZ2V0Y29kZShDSEFOR1lBTl9DTElFTlRfSUQsICR1c2VyLCBmYWxzZSwgJHNpZ24pOwogICAgJGNvZGUgPSBkZWRlX2h0bWxzcGVjaWFsY2hhcnMoJHJlc3VsdFsnY29kZSddKTsKICAgICRtc2cgPSA8PDxFT1QKPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KcHJlIHsKd2lkdGg6NTAlOwpkaXNwbGF5OiBibG9jazsKcGFkZGluZzogOS41cHg7Cm1hcmdpbjogMCAwIDEwcHg7CmZvbnQtc2l6ZTogMTNweDsKbGluZS1oZWlnaHQ6IDIwcHg7CndvcmQtYnJlYWs6IGJyZWFrLWFsbDsKd29yZC13cmFwOiBicmVhay13b3JkOwp3aGl0ZS1zcGFjZTogcHJlOwp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CmJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CmJvcmRlcjogMXB4IHNvbGlkICNjY2M7CmJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7Ci13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwotbW96LWJvcmRlci1yYWRpdXM6IDRweDsKYm9yZGVyLXJhZGl1czogNHB4Owp9Cjwvc3R5bGU+CjxwPkRlZGVDTVPmoIfnrb7ku6PnoIHvvIjlsIbku6PnoIHmj5LlhaXliLDmqKHmnb/pobXpnaLlr7nlupTkvY3nva7ljbPlj6/vvInvvJo8L3A+CjxwcmUgaWQ9ImlmcmFtZSIgc3R5bGU9ImhlaWdodDo1MHB4OyI+ICAgCntkZWRlOmNoYW5neWFuL30gICAgIAo8L3ByZT4KPHA+SmF2YXNjcmlwdOS7o+egge+8iOWwhuS7o+eggeaPkuWFpeWIsOaooeadv+mhtemdouWvueW6lOS9jee9ruWNs+WPr++8ie+8mjwvcD4KPHByZSBpZD0iaWZyYW1lIiBzdHlsZT0iaGVpZ2h0OjE1MHB4OyI+ICAgCnskY29kZX0gICAgICAgICAKPC9wcmU+CkVPVDsKCiAgICAkd2ludGl0bGUgPSAn55WF6KiA6K+E6K66566h55CGJzsKICAgICR3ZWNvbWVfaW5mbyA9ICc8YSBocmVmPSI/Ij7nlYXoqIDor4TorrrmqKHlnZc8L2E+IOOAi+iOt+WPluS7o+eggSc7CiAgICAkd2luID0gbmV3IE94V2luZG93KCk7CiAgICAkd2luLT5BZGRUaXRsZSgkd2ludGl0bGUpOwogICAgJHdpbi0+QWRkTXNnSXRlbSgkbXNnKTsKICAgICR3aW5mb3JtID0gJHdpbi0+R2V0V2luZG93KCdoYW5kJywgJyZuYnNwOycsIGZhbHNlKTsKICAgICR3aW4tPkRpc3BsYXkoKTsKICAgIAp9IGVsc2VpZiAoJGRvcG9zdD09J2FkZHNpdGUnKSB7CiAgICBpZigkYWN0aW9uPT0nZG8nKQogICAgewogICAgICAgICRpc3ZfbmFtZSA9IGVtcHR5KCRpc3ZfbmFtZSk/ICcnIDogJGlzdl9uYW1lOwogICAgICAgICR1cmwgPSBlbXB0eSgkdXJsKT8gJycgOiAkdXJsOwogICAgICAgIGlmKCFwcmVnX21hdGNoKCIjXmh0dHA6XC9cL1tBLVphLXowLTldK1wuW0EtWmEtejAtOV0rW1wvPVw/JVwtJl9+YEBbXF1cJzorIV0qKFtePD5cIl0pKiQjIiwkdXJsKSkKICAgICAgICB7CiAgICAgICAgICAgIFNob3dNc2coIuivt+Whq+WGmeato+ehrueahOe9keWdgOagvOW8jyIsLTEpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgIGlmKGVtcHR5KCRpc3ZfbmFtZSkgT1IgZW1wdHkoJHVybCkpCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCLmgqjpnIDopoHloavlhpnmraPnoa7nmoTnq5nngrnkv6Hmga/vvIzor7fph43mlrDloavlhpkiLC0xKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgICAgICAkdXNlcj1jaGFuZ3lhbl9nZXRfc2V0dGluZygndXNlcicpOwogICAgICAgICRzaWduPWNoYW5neWFuX2dlbl9zaWduKCR1c2VyKTsKICAgICAgICAkcGFyYW1zQXJyPWFycmF5KAogICAgICAgICAgICAndXNlcic9PiR1c2VyLCAKICAgICAgICAgICAgJ2NsaWVudF9pZCc9PkNIQU5HWUFOX0NMSUVOVF9JRCwgCiAgICAgICAgICAgICdpc3ZfbmFtZSc9PmNoYW5neWFuX2F1dG9DaGFyc2V0KCRpc3ZfbmFtZSksIAogICAgICAgICAgICAndXJsJz0+JHVybCwgCiAgICAgICAgICAgICdzaWduJz0+JHNpZ24pOwogICAgICAgICRycz1jaGFuZ3lhbl9odHRwX3NlbmQoQ0hBTkdZQU5fQVBJX0FERFNJVEUsMCwkcGFyYW1zQXJyKTsKICAgICAgICAkcmVzdWx0PWpzb25fZGVjb2RlKCRycyxUUlVFKTsKICAgICAgICBpZigkcmVzdWx0WydzdGF0dXMnXT09MSkKICAgICAgICB7CiAgICAgICAgICAgIFNob3dNc2coIuaXoOazlea3u+WKoOermeeCue+8jOivt+ajgOafpeaCqOeahOermeeCueS/oeaBr+aYr+WQpuWhq+WGmeato+ehru+8gSIsLTEpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2FwcGlkJywgJHJlc3VsdFsnYXBwaWQnXSk7CiAgICAgICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdpZCcsICRyZXN1bHRbJ2lkJ10pOwogICAgICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2lkJywgJHJlc3VsdFsnaXN2X2lkJ10pOwogICAgICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2FwcF9rZXknLCAkcmVzdWx0Wydpc3ZfYXBwX2tleSddKTsKICAgICAgICAgICAgJF9TRVNTSU9OWydjaGFuZ3lhbiddPSRyZXN1bHRbJ3Rva2VuJ107CiAgICAgICAgICAgIGNoYW5neWFuX2NsZWFyY2FjaGUoKTsKICAgICAgICAgICAgJGlzdl9pZCA9IGludHZhbCgkcmVzdWx0Wydpc3ZfaWQnXSk7CiAgICAgICAgICAgICRsb2dpbl91cmw9Q0hBTkdZQU5fQVBJX1NFVENPT0tJRS4nP2NsaWVudF9pZD0nLkNIQU5HWUFOX0NMSUVOVF9JRC4nJnRva2VuPScuJHJlc3VsdFsndG9rZW4nXTsKICAgICAgICAgICAgZWNobyA8PDxFT1QKPGlmcmFtZSBzcmM9InskbG9naW5fdXJsfSIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgc3R5bGU9ImJvcmRlcjpub25lIj48L2lmcmFtZT4KRU9UOwogICAgICAgICAgICBTaG93TXNnKCLmiJDlip/mt7vliqDnq5nngrnkv6Hmga/vvIzov5vooYznq5nngrnliIfmjaLigKbigKYiLCc/ZG9wb3N0PWNoYW5nZWlzdiZpc3ZfaWQ9Jy4kaXN2X2lkLDAsMzAwMCk7CiAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBlY2hvIDw8PEVPVAo8aHRtbD4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXskY2ZnX3NvZnRfbGFuZ30iPgo8dGl0bGU+5re75Yqg55WF6KiA56uZ54K577yaPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ieyRjZmdfcGx1c19kaXJ9L2ltZy9iYXNlLmNzcyI+CjwvaGVhZD4KPGJvZHkgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy9hbGxiZy5naWYnIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0nOCc+Cjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0RGRjlBQSI+CiAgPHRyPgogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvd2JnLmdpZic+Jm5ic3A7PGI+4peHPGEgaHJlZj0iPyI+55WF6KiA6K+E6K665qih5Z2XPC9hPiDjgIvmt7vliqDnlYXoqIDnq5nngrk8L2I+PC90ZD4KICA8L3RyPgogIDx0cj4KICAKICA8dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iODAiIHN0eWxlPSJwYWRkaW5nLXRvcDo1cHgiIGJnY29sb3I9JyNmZmZmZmYnPgogIAogIDxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPgpmdW5jdGlvbiBDaGVja1N1Ym1pdCgpewoJcmV0dXJuIHRydWU7IAp9Cjwvc2NyaXB0PgogIDxmb3JtIG5hbWU9J215Zm9ybScgbWV0aG9kPSdQT1NUJyBvblN1Ym1pdD0ncmV0dXJuIENoZWNrU3VibWl0KCk7JyBhY3Rpb249Jz8nPgogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RvcG9zdCcgdmFsdWU9J2FkZHNpdGUnPgogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2FjdGlvbicgdmFsdWU9J2RvJz4KICA8dGFibGUgd2lkdGg9JzEwMCUnICBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPSczJyBjZWxsc3BhY2luZz0nMScgYmdjb2xvcj0nI0RBREFEQSc+CiAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+CiAgICAgIDx0ZCBjb2xzcGFuPScyJyBiYWNrZ3JvdW5kPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL3diZy5naWYnIGhlaWdodD0nMjYnPjxmb250IGNvbG9yPScjNjY2NjAwJz48Yj7mt7vliqDnlYXoqIDnq5nngrnvvJo8L2I+PC9mb250PjwvdGQ+CiAgICA8L3RyPgogICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPgogICAgICA8dGQgY29sc3Bhbj0nMicgIGhlaWdodD0nMTAwJz48dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojOTk5Ij48c3Ryb25nPjxhIGhyZWY9Imh0dHA6Ly9jaGFuZ3lhbi5rdWFpemhhbi5jb20vP2Zyb21kZWRlY21zIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOmJsdWUiPueVheiogDwvYT48L3N0cm9uZz7mmK/kuIDkuKrnroDljZXogIzlvLrlpKfnmoTnpL7kvJrljJbor4Torrrlj4rogZrlkIjlubPlj7DjgILnlKjmiLflj6/ku6Xnm7TmjqXnlKjoh6rlt7HnmoTnpL7kvJrljJbnvZHnu5zotKbmiLflnKjnrKzkuInmlrnnvZHnq5nlj5Hooajor4TorrrvvIzlubbkuJTkuIDplK7or4TorrrlkIzmraXoh7PnpL7kuqTnvZHnu5zlsIbnvZHnq5nlhoXlrrnlkozoh6rlt7HnmoTor4TorrrliIbkuqvnu5nlpb3lj4vjgILlop7liqDnrKzkuInmlrnnvZHnq5nnlKjmiLfmtLvot4PluqbvvIzosIPliqjlpb3lj4vlj4LkuI7or4TorrrvvIzluK7liqnnvZHnq5nlrp7njrDnpL7kvJrljJbnvZHnu5zkvJjljJbvvIzmnInmlYjmj5DljYfnvZHnq5nnpL7kvJrljJbmtYHph4/vvIE8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojOTk5Ij48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPue9keermeWQjeensO+8mjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9Imlzdl9uYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iaXN2X25hbWUiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiIHZhbHVlPSJ7JGNmZ193ZWJuYW1lfSIgLz48c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+Jm5ic3A7IOS4uuaWueS+v+aCqOeuoeeQhuermeeCueivhOiuuu+8jOW7uuiuruabtOaUueermeeCueWQjeensDwvc3Bhbj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPue9keermeWcsOWdgO+8mjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9InVybCIgdHlwZT0idGV4dCIgaWQ9InVybCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9InskY2ZnX2Jhc2Vob3N0fSIgLz48c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+Jm5ic3A7IOS+i+Wmgu+8mmh0dHA6Ly93d3cuZGVkZWNtcy5jb208L3NwYW4+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGNvbHNwYW49JzInIGJnY29sb3I9JyNGOUZDRUYnPjx0YWJsZSB3aWR0aD0nMjcwJyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+CiAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcicgaGVpZ2h0PScyOCc+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0nOTAnPjxpbnB1dCBuYW1lPSdpbWFnZUZpZWxkMScgdHlwZT0naW1hZ2UnIGNsYXNzPSducCcgc3JjPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL2J1dHRvbl9vay5naWYnIHdpZHRoPSc2MCcgaGVpZ2h0PScyMicgYm9yZGVyPScwJyAvPjwvdGQ+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0nOTAnPjxhIGhyZWY9JyMnPjxpbWcgY2xhc3M9J25wJyBzcmM9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYnV0dG9uX3Jlc2V0LmdpZicgd2lkdGg9JzYwJyBoZWlnaHQ9JzIyJyBib3JkZXI9JzAnIG9uQ2xpY2s9J3RoaXMuZm9ybS5yZXNldCgpO3JldHVybiBmYWxzZTsnIC8+PC9hPjwvdGQ+CiAgICAgICAgICAgIDx0ZD48YSBocmVmPSc/ZG9wb3N0PWNoYW5nZV9hcHBpbmZvJz48aW1nIHNyYz0neyRjZmdfcGx1c19kaXJ9L2ltZy9idXR0b25fYmFjay5naWYnIHdpZHRoPSc2MCcgaGVpZ2h0PScyMicgYm9yZGVyPScwJy8+PC9hPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+PC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KICA8L3RkPgogIDwvdHI+CjwvdGFibGU+CjxwIGFsaWduPSJjZW50ZXIiPiA8YnI+CiAgPGJyPgo8L3A+CjwvYm9keT4KPC9odG1sPgpFT1Q7CiAgICB9Cn0gZWxzZWlmICgkZG9wb3N0PT0nbWFuYWdlJyBPUiAkZG9wb3N0PT0nc3RhdCcgT1IgJGRvcG9zdD09J3NldHRpbmcnCk9SICRkb3Bvc3Q9PSJpbXBvcnQiKQp7CiAgICBpZighY2hhbmd5YW5faXNsb2dpbigpKQogICAgewogICAgICAgIFNob3dNc2coIuaCqOWwmuacqueZu+W9leeVheiogO+8jOivt+WFiOeZu+W9leWQjue7p+e7reS9v+eUqOKApuKApu+8gSIsJz8nKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICBjaGFuZ3lhbl9jaGVja19pc2xvZ2luKCk7CiAgICAkYWRkc3R5bGU9J3Njcm9sbGluZz0ibm8iICc7CiAgICAkdHlwZT0nYXVkaXQnOwogICAgJGFwcGlkPWNoYW5neWFuX2dldF9zZXR0aW5nKCdhcHBpZCcpOwogICAgaWYoJGRvcG9zdD09J21hbmFnZScpICR0eXBlPSdhdWRpdCc7CiAgICBlbHNlaWYoJGRvcG9zdD09J3N0YXQnKSAkdHlwZT0nc3RhdCc7CiAgICAkcHRpdGxlID0gJ+eVheiogOivhOiuuueuoeeQhic7CgogICAgJG1hbmFnZV91cmw9Imh0dHA6Ly9jaGFuZ3lhbi5rdWFpemhhbi5jb20vYXVkaXQvY29tbWVudHMvVE9BVURJVC8xIjsKICAgICRhZGRzdHI9Jyc7CiAgICBpZigkZG9wb3N0PT0nc2V0dGluZycpIAogICAgewogICAgICAgICRwdGl0bGUgPSAi55WF6KiA6K6+572uIjsKICAgICAgICAkbWFuYWdlX3VybD0iaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9zZXR0aW5nL2Jhc2ljIjsKICAgICAgICAKICAgIH0gZWxzZWlmICgkZG9wb3N0PT0nc3RhdCcpCiAgICB7CiAgICAgICAgJHB0aXRsZSA9ICLmlbDmja7nu5/orqEiOwogICAgICAgICRtYW5hZ2VfdXJsPSJodHRwOi8vY2hhbmd5YW4ua3VhaXpoYW4uY29tL3N0YXQtZGF0YS9jb21tZW50IjsKICAgIH0gZWxzZWlmICgkZG9wb3N0PT0naW1wb3J0JykKICAgIHsKICAgICAgICAkcHRpdGxlID0gIueVheiogOW3peWFtyI7CiAgICAgICAgJGV4cG9ydF9zdHI9JGltcG9ydF9zdHI9Jyc7CiAgICAgICAgJG1hbmFnZV91cmw9Ij9kb3Bvc3Q9YmxhbmsiOwogICAgICAgICRsYXN0X2ltcG9ydD1jaGFuZ3lhbl9nZXRfc2V0dGluZygnbGFzdF9pbXBvcnQnKTsKICAgICAgICAkbGFzdF9leHBvcnQ9Y2hhbmd5YW5fZ2V0X3NldHRpbmcoJ2xhc3RfZXhwb3J0Jyk7CiAgICAgICAgaWYgKGVtcHR5KCRsYXN0X2V4cG9ydCkpIHsKICAgICAgICAgICAgJGV4cG9ydF9zdHIgPSAnPGZvbnQgY29sb3I9InJlZCI+5bCa5pyq5aSH5Lu977yM5bu66K6u5aSH5Lu977yBPC9mb250Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGV4cG9ydF90aW1lID0gZGF0ZSgnWS1tLWQgSDppOnMnLCAkbGFzdF9leHBvcnQpOwogICAgICAgICAgICAkZXhwb3J0X3N0ciA9ICc8Zm9udCBjb2xvcj0iIzY2NiI+5pyA5ZCO5aSH5Lu95pel5pyf77yaJy4kZXhwb3J0X3RpbWUuJzwvZm9udD4nOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJGxhc3RfaW1wb3J0KSkgewogICAgICAgICAgICAkaW1wb3J0X3N0ciA9ICc8Zm9udCBjb2xvcj0icmVkIj7lsJrmnKrlr7zlh7pEZWRlQ01T6K+E6K665Yiw55WF6KiA77yBPC9mb250Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGltcG9ydF90aW1lID0gZGF0ZSgnWS1tLWQgSDppOnMnLCAkbGFzdF9pbXBvcnQpOwogICAgICAgICAgICAkaW1wb3J0X3N0ciA9ICc8Zm9udCBjb2xvcj0iIzY2NiI+5pyA5ZCO5a+85Ye65pel5pyf77yaJy4kaW1wb3J0X3RpbWUuJzwvZm9udD4nOwogICAgICAgIH0KICAgICAgICAkYWRkc3RyPTw8PEVPVAogICAgICAgIDx0ciBiZ2NvbG9yPScjRkZGRkZGJz4KICAgICAgICAgIDx0ZCBjb2xzcGFuPScyJyBoZWlnaHQ9JzMwcHgnIHN0eWxlPSdwYWRkaW5nOjIwcHgnPgogICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgZnVuY3Rpb24gaXNnbyh1cmwsbXNnKSB7CiAgICAgICAgICAgICAgaWYoY29uZmlybShtc2cpKSB3aW5kb3cubG9jYXRpb24uaHJlZj11cmw7CiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHNpemU9IjE0IiBvbmNsaWNrPSJyZXR1cm4gaXNnbygnP2RvcG9zdD1jaGFuZ3lhbl90b19kZWRlY21zJywn5piv5ZCm5a+85Ye655WF6KiA5YiwRGVkZUNNU+ivhOiuuu+8nycpOyIgdmFsdWU9IuWvvOWHuueVheiogOWIsERlZGVDTVPor4TorroiPiAKICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+5bCG55WF6KiA5qih5Z2X5Lit55qE5pWw5o2u5a+85Ye65aSH5Lu95YiwRGVkZUNNU+aVsOaNruW6k+S4rTwvc3Bhbj4gIHskZXhwb3J0X3N0cn0KICAgICAgICAgIDxiciAvPjxiciAvPgogICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgc2l6ZT0iMTQiIG9uY2xpY2s9InJldHVybiBpc2dvKCc/ZG9wb3N0PWRlZGVjbXNfdG9fY2hhbmd5YW4nLCfmmK/lkKblr7zlhaVEZWRlQ01T6K+E6K665Yiw55WF6KiA77yfJyk7IiB2YWx1ZT0i5a+85YWlRGVkZUNNU+ivhOiuuuWIsOeVheiogCI+CiAgICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiM5OTkiPuWwhkRlZGVDTVPor4TorrrmlbDmja7lr7zlhaXliLDnlYXoqIDmqKHlnZfkuK08L3NwYW4+IHskaW1wb3J0X3N0cn0KICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KRU9UOwogICAgfQogICAgJGFkZHN0eWxlPSdzY3JvbGxpbmc9ImF1dG8iICc7CiAgICAkYWNjb3VudF9zdHIgPSBwcmVnX21hdGNoKCIjQGRlZGVjbXMkIyIsJF9TRVNTSU9OWyd1c2VyJ10pPyAiPGEgaHJlZj0nP2RvcG9zdD1iaW5kJyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+e7keWumui0puWPt108L2E+IiA6CiAgICAiPGEgaHJlZj0nP2RvcG9zdD1sb2dvdXQnIHN0eWxlPSdjb2xvcjpibHVlJz5b5YiH5o2i6LSm5Y+3XTwvYT4iOwogICAgZWNobyA8PDxFT1QKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD17JGNmZ19zb2Z0X2xhbmd9Ij4KPHRpdGxlPnskcHRpdGxlfTwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9iYXNlLmNzcyI+CjwvaGVhZD4KPGJvZHkgYmFja2dyb3VuZD0naW1hZ2VzL2FsbGJnLmdpZicgbGVmdG1hcmdpbj0iOCIgdG9wbWFyZ2luPSc4Jz4KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIiBoZWlnaHQ9IjEwMCUiPgogIDx0cj4KICAgIDx0ZCBoZWlnaHQ9IjI4IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjREFEQURBIiBiYWNrZ3JvdW5kPSdpbWFnZXMvd2JnLmdpZic+CiAgICAKICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQiPiZuYnNwOzxiPuKXhzxhIGhyZWY9Ij8iPueVheiogOivhOiuuuaooeWdlzwvYT4g44CLeyRwdGl0bGV9PC9iPjwvZGl2PgogICAgPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjIwcHg7Ij7mgqjlpb3vvJp7JF9TRVNTSU9OWyd1c2VyJ119IHskYWNjb3VudF9zdHJ9PC9kaXY+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIiBiZ2NvbG9yPScjZmZmZmZmJyBzdHlsZT0icGFkZGluZy10b3A6NXB4Ij48dGFibGUgd2lkdGg9JzEwMCUnICBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPSczJyBjZWxsc3BhY2luZz0nMScgYmdjb2xvcj0nI0RBREFEQScgaGVpZ2h0PSIxMDAlIj4KICAgICAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+CiAgICAgICAgICA8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0naW1hZ2VzL3diZy5naWYnIGhlaWdodD0nMjYnPjxmb250IGNvbG9yPScjNjY2NjAwJz48Yj57JHB0aXRsZX08L2I+PC9mb250PjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICB7JGFkZHN0cn0KICAgICAgICA8dHIgYmdjb2xvcj0nI0ZGRkZGRic+CiAgICAgICAgICA8dGQgY29sc3Bhbj0nMicgaGVpZ2h0PScxMDAlJyBzdHlsZT0ncGFkZGluZzoyMHB4Jz48YnIvPjxpZnJhbWUgc3JjPSJ7JG1hbmFnZV91cmx9IiB7JGFkZHN0eWxlfSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzdHlsZT0iYm9yZGVyOm5vbmUiPjwvaWZyYW1lPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAgICA8dGQgYmdjb2xvcj0nI0Y1RjVGNSc+Jm5ic3A7PC90ZD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHAgYWxpZ249ImNlbnRlciI+IDxicj4KICA8YnI+CjwvcD4KPC9ib2R5Pgo8L2h0bWw+CgpFT1Q7Cn0gZWxzZWlmICgkZG9wb3N0PT0nZGVkZWNtc190b19jaGFuZ3lhbicpIHsKICAgIGlmKCFjaGFuZ3lhbl9pc2xvZ2luKCkpCiAgICB7CiAgICAgICAgU2hvd01zZygi5oKo5bCa5pyq55m75b2V55WF6KiA77yM6K+35YWI55m75b2V5ZCO57un57ut5L2/55So4oCm4oCm77yBIiwnPycpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgICRpc3ZfYXBwX2tleSA9IGNoYW5neWFuX2dldF9pc3ZfYXBwX2tleSgpOwogICAgJHN0YXJ0ID0gaXNzZXQoJHN0YXJ0KT8gaW50dmFsKCRzdGFydCkgOiAwOwogICAgJHBhZ2VzaXplPTE7CiAgICAkc3FsID0gIlNFTEVDVCBjb3VudCgqKSBhcyBkZCBGUk9NIGAjQF9fZmVlZGJhY2tgIGdyb3VwIGJ5IGFpZCBvcmRlciBieSBhaWQgYXNjIGxpbWl0IHskc3RhcnR9LHskcGFnZXNpemV9IjsKICAgICRyciA9ICRkc3FsLT5HZXRPbmUoJHNxbCk7CiAgICBpZigkcnJbJ2RkJ109PTApCiAgICB7CiAgICAgICAgY2hhbmd5YW5fc2V0X3NldHRpbmcoJ2xhc3RfaW1wb3J0JywgdGltZSgpKTsKICAgICAgICBTaG93TXNnKCflhajpg6jlr7zlh7rlrozmiJDvvIEnLCdqYXZhc2NyaXB0OjsnKTsKICAgICAgICBleGl0OwogICAgfQogICAgJHNxbCA9ICJTRUxFQ1QgYWlkIEZST00gYCNAX19mZWVkYmFja2AgZ3JvdXAgYnkgYWlkIG9yZGVyIGJ5IGFpZCBhc2MgbGltaXQgeyRzdGFydH0seyRwYWdlc2l6ZX0iOwogICAgJGRzcWwtPlNldFF1ZXJ5KCRzcWwpOwogICAgJGRzcWwtPkV4ZWN1dGUoJ2RkJyk7CiAgICAkcmVzdWx0PWFycmF5KCk7CiAgICB3aGlsZSgkYXJyID0gJGRzcWwtPkdldEFycmF5KCdkZCcpKQogICAgewogICAgICAgICRmZWVkQXJyPWFycmF5KCk7CiAgICAgICAgJGFyY3RSb3cgPSAkZHNxbC0+R2V0T25lKCJTRUxFQ1QgKiBGUk9NIGAjQF9fYXJjdGlueWAgV0hFUkUgaWQ9eyRhcnJbJ2FpZCddfSIpOwogICAgICAgIGlmKCRhcmN0Um93WydjaGFubmVsJ109PTApICRhcmN0Um93WydjaGFubmVsJ109MTsKICAgICAgICAkY2lkID0gJGFyY3RSb3dbJ2NoYW5uZWwnXTsKICAgICAgICAkY2hSb3cgPSAkZHNxbC0+R2V0T25lKCJTRUxFQ1QgKiBGUk9NIGAjQF9fY2hhbm5lbHR5cGVgIFdIRVJFIGlkPSckY2lkJyAiKTsKICAgICAgICAkcm93PWFycmF5KCk7CiAgICAgICAgaWYgKCRjaFJvd1snaXNzeXN0ZW0nXSE9IC0xKSB7CiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIGFyYy4qLHRwLnJlaWQsdHAudHlwZWRpcix0cC50eXBlbmFtZSx0cC5pc2RlZmF1bHQsdHAuZGVmYXVsdG5hbWUsdHAubmFtZXJ1bGUsdHAubmFtZXJ1bGUyLHRwLmlzcGFydCwKICAgICAgICAgICAgdHAubW9yZXNpdGUsdHAuc2l0ZXVybCx0cC5zaXRlcGF0aCxjaC5hZGR0YWJsZQogICAgICAgICAgICBGUk9NIGAjQF9fYXJjaGl2ZXNgIGFyYwogICAgICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gYCNAX19hcmN0eXBlYCB0cCBvbiB0cC5pZD1hcmMudHlwZWlkCiAgICAgICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gYCNAX19jaGFubmVsdHlwZWAgYXMgY2ggb24gYXJjLmNoYW5uZWwgPSBjaC5pZAogICAgICAgICAgICAgICAgICAgICAgV0hFUkUgYXJjLmlkPSd7JGFyclsnYWlkJ119JyAiOwogICAgICAgICAgICAkcm93ID0gJGRzcWwtPkdldE9uZSgkc3FsKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZigkY2hSb3dbJ2FkZHRhYmxlJ10hPScnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBhcmMuKix0cC50eXBlZGlyLHRwLnR5cGVuYW1lLHRwLmlzZGVmYXVsdCx0cC5kZWZhdWx0bmFtZSx0cC5uYW1lcnVsZSx0cC5uYW1lcnVsZTIsdHAuaXNwYXJ0LAogICAgICAgICAgICB0cC5tb3Jlc2l0ZSx0cC5zaXRldXJsLHRwLnNpdGVwYXRoIEZST00gYHskY2hSb3dbJ2FkZHRhYmxlJ119YCBhcmMgIAogICAgICAgICAgICBMRUZUIEpPSU4gYCNAX19hcmN0eXBlYCB0cCBPTiBhcmMudHlwZWlkPXRwLmlkCiAgICAgICAgICAgICAgICBXSEVSRSBgYWlkYCA9ICd7JGFyclsnYWlkJ119JyI7CiAgICAgICAgICAgICAgICAkYWRkVGFibGVSb3cgPSAkZHNxbC0+R2V0T25lKCRzcWwpOwogICAgICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGFkZFRhYmxlUm93KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcm93WydpZCddPSRhZGRUYWJsZVJvd1snYWlkJ107CiAgICAgICAgICAgICAgICAgICAgJHJvd1sndGl0bGUnXT0kYWRkVGFibGVSb3dbJ3RpdGxlJ107CiAgICAgICAgICAgICAgICAgICAgJHJvd1sndHlwZWlkJ109JGFkZFRhYmxlUm93Wyd0eXBlaWQnXTsKICAgICAgICAgICAgICAgICAgICAkcm93WydtaWQnXT0kYWRkVGFibGVSb3dbJ21pZCddOwogICAgICAgICAgICAgICAgICAgICRyb3dbJ3NlbmRkYXRlJ109JGFkZFRhYmxlUm93WydzZW5kZGF0ZSddOwogICAgICAgICAgICAgICAgICAgICRyb3dbJ2NoYW5uZWwnXT0kYWRkVGFibGVSb3dbJ2NoYW5uZWwnXTsKICAgICAgICAgICAgICAgICAgICAkcm93WydhcmNyYW5rJ109JGFkZFRhYmxlUm93WydhcmNyYW5rJ107CiAgICAgICAgICAgICAgICAgICAgJHJvd1snc2VuZGRhdGUnXT0kYWRkVGFibGVSb3dbJ3NlbmRkYXRlJ107CiAgICAgICAgICAgICAgICAgICAgJHJvd1sndHlwZWRpciddPSRhZGRUYWJsZVJvd1sndHlwZWRpciddOwogICAgICAgICAgICAgICAgICAgICRyb3dbJ2lzZGVmYXVsdCddPSRhZGRUYWJsZVJvd1snaXNkZWZhdWx0J107CiAgICAgICAgICAgICAgICAgICAgJHJvd1snZGVmYXVsdG5hbWUnXT0kYWRkVGFibGVSb3dbJ2RlZmF1bHRuYW1lJ107CiAgICAgICAgICAgICAgICAgICAgJHJvd1snaXNwYXJ0J109JGFkZFRhYmxlUm93Wydpc3BhcnQnXTsKICAgICAgICAgICAgICAgICAgICAkcm93WyduYW1lcnVsZTInXT0kYWRkVGFibGVSb3dbJ25hbWVydWxlMiddOwogICAgICAgICAgICAgICAgICAgICRyb3dbJ21vcmVzaXRlJ109JGFkZFRhYmxlUm93Wydtb3Jlc2l0ZSddOwogICAgICAgICAgICAgICAgICAgICRyb3dbJ3NpdGV1cmwnXT0kYWRkVGFibGVSb3dbJ3NpdGV1cmwnXTsKICAgICAgICAgICAgICAgICAgICAkcm93WydzaXRlcGF0aCddPSRhZGRUYWJsZVJvd1snc2l0ZXBhdGgnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcm93WydmaWxlbmFtZSddID0gJHJvd1snYXJjdXJsJ10gPSBHZXRGaWxlVXJsKCRyb3dbJ2lkJ10sJHJvd1sndHlwZWlkJ10sJHJvd1snc2VuZGRhdGUnXSwkcm93Wyd0aXRsZSddLDEsCiAgICAgICAgMCwkcm93WyduYW1lcnVsZSddLCRyb3dbJ3R5cGVkaXInXSwwLCcnLCRyb3dbJ21vcmVzaXRlJ10sJHJvd1snc2l0ZXVybCddLCRyb3dbJ3NpdGVwYXRoJ10pOwogICAgICAgICRyb3dbJ3RpdGxlJ109Y2hhbmd5YW5fYXV0b0NoYXJzZXQoJHJvd1sndGl0bGUnXSk7CiAgICAgICAgCiAgICAgICAgJGZlZWRBcnJbJ3RpdGxlJ109JHJvd1sndGl0bGUnXTsKICAgICAgICAkZmVlZEFyclsndXJsJ109JGNmZ19iYXNlaG9zdC4kcm93WydhcmN1cmwnXTsKICAgICAgICAkZmVlZEFyclsndHRpbWUnXT0gZGF0ZSgnWS1tLWQgaDptOnMnLCAgJHJvd1snc2VuZGRhdGUnXSk7CiAgICAgICAgJGZlZWRBcnJbJ3NvdXJjZWlkJ109JGFyclsnYWlkJ107CiAgICAgICAgJGZlZWRBcnJbJ3BhcmVudGlkJ109MDsKICAgICAgICAkZmVlZEFyclsnY2F0ZWdvcnlpZCddPSRyb3dbJ3R5cGVpZCddOwogICAgICAgICRmZWVkQXJyWydvd25lcmlkJ109JHJvd1snbWlkJ107CiAgICAgICAgJGZlZWRBcnJbJ21ldGFkYXRhJ109Jyc7CgogICAgICAgICRkc3FsLT5TZXRRdWVyeSgiU0VMRUNUIGZlZWRiYWNrX2lkIEZST00gYCNAX19wbHVzX2NoYW5neWFuX2ltcG9ydGlkc2AgV0hFUkUgYWlkPXskYXJyWydhaWQnXX0iKTsKICAgICAgICAkZHNxbC0+RXhlY3V0ZSgnZGQnKTsKICAgICAgICAkZmVlZGJhY2tfaWRzPWFycmF5KCk7CiAgICAgICAgd2hpbGUoJGZhcnIgPSAkZHNxbC0+R2V0QXJyYXkoJ2RkJykpCiAgICAgICAgewogICAgICAgICAgICAkZmVlZGJhY2tfaWRzW10gPSAkZmFyclsnZmVlZGJhY2tfaWQnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHNxdWVyeT0iU0VMRUNUICogRlJPTSBgI0BfX2ZlZWRiYWNrYCBXSEVSRSBhaWQ9eyRhcnJbJ2FpZCddfSBvcmRlciBieSBkdGltZSBhc2M7IjsKICAgICAgICAkZHNxbC0+U2V0UXVlcnkoJHNxdWVyeSk7CiAgICAgICAgJGRzcWwtPkV4ZWN1dGUoJ3h4Jyk7CiAgICAgICAgd2hpbGUoJGZSb3cgPSAkZHNxbC0+R2V0QXJyYXkoJ3h4JykpCiAgICAgICAgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGZSb3dbJ2lkJ10sICRmZWVkYmFja19pZHMpKSBjb250aW51ZTsKICAgICAgICAgICAgJGZlZWRBcnJbJ2NvbW1lbnRzJ11bXT1hcnJheSgKICAgICAgICAgICAgICAgICdjbXRpZCc9PiRmUm93WydpZCddLAogICAgICAgICAgICAgICAgJ2N0aW1lJz0+ZGF0ZSgnWS1tLWQgaDptOnMnLCAgJGZSb3dbJ2R0aW1lJ10pLAogICAgICAgICAgICAgICAgJ2NvbnRlbnQnPT5jaGFuZ3lhbl9RdW90ZV9yZXBsYWNlKGNoYW5neWFuX2F1dG9DaGFyc2V0KCRmUm93Wydtc2cnXSkpLAogICAgICAgICAgICAgICAgJ3JlcGx5aWQnPT4wLAogICAgICAgICAgICAgICAgJ3NwY291bnQnPT4kZlJvd1snZ29vZCddLAogICAgICAgICAgICAgICAgJ29wY291bnQnPT4kZlJvd1snYmFkJ10sCiAgICAgICAgICAgICAgICAndXNlcic9PmFycmF5KAogICAgICAgICAgICAgICAgICAgICd1c2VyaWQnPT4kZlJvd1snbWlkJ10sCiAgICAgICAgICAgICAgICAgICAgJ25pY2tuYW1lJz0+Y2hhbmd5YW5fYXV0b0NoYXJzZXQoJGZSb3dbJ3VzZXJuYW1lJ10pLAogICAgICAgICAgICAgICAgICAgICd1c2VyaWNvbic9PicnLAogICAgICAgICAgICAgICAgICAgICd1c2VydXJsJz0+JycsCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRpbnF1ZXJ5ID0gIklOU0VSVCBJTlRPIGAjQF9fcGx1c19jaGFuZ3lhbl9pbXBvcnRpZHNgKGBhaWRgLGBmZWVkYmFja19pZGApIFZBTFVFUyAoJ3skYXJyWydhaWQnXX0nLCd7JGZSb3dbJ2lkJ119JykiOwogICAgICAgICAgICAkcnMgPSAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkaW5xdWVyeSk7CiAgICAgICAgfQogICAgICAgIGlmIChjb3VudCgkZmVlZEFyclsnY29tbWVudHMnXSk8MSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgICRjb250ZW50PWpzb25fZW5jb2RlKCRmZWVkQXJyKTsKICAgICAgICAkbWQ1ID0gY2hhbmd5YW5faG1hY3NoYTEoJGNvbnRlbnQsICRpc3ZfYXBwX2tleSk7CgogICAgICAgICRwYXJhbXNBcnI9YXJyYXkoCiAgICAgICAgICAgICdhcHBpZCc9PiRjbGllbnRfaWQsIAogICAgICAgICAgICAnbWQ1Jz0+JG1kNSwgCiAgICAgICAgICAgICdqc29uZGF0YSc9PiRjb250ZW50KTsKICAgICAgICAkcnM9Y2hhbmd5YW5faHR0cF9zZW5kKENIQU5HWUFOX0FQSV9JTVBPUlQsMCwkcGFyYW1zQXJyKTsKICAgIH0KICAgIAogICAgJHN0YXJ0ID0kc3RhcnQrJHBhZ2VzaXplOwogICAgJGVuZCA9JHN0YXJ0KyRwYWdlc2l6ZTsKICAgIFNob3dNc2coIuaIkOWKn+WvvOWHuuivhOiuuuaVsOaNru+8jOaOpeS4i+adpeWvvOWFpVt7JHN0YXJ0fS17JGVuZH1d55qE6K+E6K665pWw5o2uIiwiP2RvcG9zdD1kZWRlY21zX3RvX2NoYW5neWFuJnN0YXJ0PXskc3RhcnR9Iik7CiAgICAvL2VjaG8ganNvbl9lbmNvZGUoJHJlc3VsdCk7CiAgICBleGl0KCk7Cn0gZWxzZWlmICgkZG9wb3N0PT0nY2hhbmd5YW5fdG9fZGVkZWNtcycpIHsKICAgIGlmKCFjaGFuZ3lhbl9pc2xvZ2luKCkpCiAgICB7CiAgICAgICAgU2hvd01zZygi5oKo5bCa5pyq55m75b2V55WF6KiA77yM6K+35YWI55m75b2V5ZCO57un57ut5L2/55So4oCm4oCm77yBIiwnPycpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgICRsYXN0X2V4cG9ydD1jaGFuZ3lhbl9nZXRfc2V0dGluZygnbGFzdF9leHBvcnQnKTsKICAgIGlmIChlbXB0eSgkbGFzdF9leHBvcnQpKSB7CiAgICAgICAgJHN0YXJ0X2RhdGU9JzIwMTQtMDEtMDEgMDA6MDA6MDAnOwogICAgfSBlbHNlIHsKICAgICAgICAkc3RhcnRfZGF0ZT0gZGF0ZSgnWS1tLWQgSDppOnMnLCRsYXN0X2V4cG9ydCk7CiAgICB9CiAgICAvLyRzdGFydF9kYXRlPScyMDE0LTAxLTAxIDAwOjAwOjAwJzsKICAgICRyZWNlbnQgPSBjaGFuZ3lhbl9nZXRfcmVjZW50KCRjbGllbnRfaWQsICRzdGFydF9kYXRlKTsKICAgIC8vdmFyX2R1bXAoJHJlY2VudCk7ZXhpdDsKICAgIGlmIChjb3VudCgkcmVjZW50Wyd0b3BpY3MnXSk8PTApIHsKICAgICAgICBTaG93TXNnKCLmsqHmnInlj5HnjrDmlrDnmoTor4TorrrlhoXlrrnpnIDopoHlr7zlh7rvvIEiLC0xKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICAkZXhwb3J0cz1hcnJheSgpOwogICAgZm9yZWFjaCAoJHJlY2VudFsndG9waWNzJ10gYXMgJHRvcGljKSB7CiAgICAgICAgJGV4cG9ydHNbXT1hcnJheSgKICAgICAgICAgICAgJ3RvcGljX2lkJz0+JHRvcGljWyd0b3BpY19pZCddLAogICAgICAgICAgICAnYWlkJz0+JHRvcGljWyd0b3BpY19zb3VyY2VfaWQnXSwKICAgICAgICAgICAgJ3RpdGxlJz0+JHRvcGljWyd0b3BpY190aXRsZSddLAogICAgICAgICk7CiAgICB9CiAgICBmb3JlYWNoICgkZXhwb3J0cyBhcyAkZXhwb3J0KSB7CiAgICAgICAgY2hhbmd5YW5faW5zZXJ0X2NvbW1lbnRzKGNoYW5neWFuX2dldF9jb21tZW50cyhjaGFuZ3lhbl9nZXRfc2V0dGluZygnYXBwaWQnKSwkZXhwb3J0Wyd0b3BpY19pZCddKSwkZXhwb3J0WydhaWQnXSwkZXhwb3J0Wyd0aXRsZSddKTsKICAgIH0KICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdsYXN0X2V4cG9ydCcsIHRpbWUoKSk7CiAgICBTaG93TXNnKCLmiJDlip/lpIfku73nlYXoqIDor4TorrrliLBEZWRlQ01T57O757uf77yBIiwiP2RvcG9zdD1pbXBvcnQiKTsKICAgIGV4aXQoKTsKfSBlbHNlaWYgKCRkb3Bvc3Q9PSdjaGFuZ2VfYXBwaW5mbycpIHsKICAgIGlmICgkYWN0aW9uPT0nZG8nKSB7CiAgICAgICAgaWYgKGVtcHR5KCRhcHBJbmZvKSkgewogICAgICAgICAgICBTaG93TXNnKCLor7fpgInmi6nmraPnoa7nmoRBcHBJROS/oeaBr++8gSIsLTEpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgIGxpc3QoJGFwcGlkLCRpc3ZfYXBwX2tleSk9ZXhwbG9kZSgnfCcsJGFwcEluZm8pOwogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdhcHBpZCcsJGFwcGlkKTsKICAgICAgICBjaGFuZ3lhbl9zZXRfc2V0dGluZygnaXN2X2FwcF9rZXknLCRpc3ZfYXBwX2tleSk7CiAgICAgICAgJHVzZXI9Y2hhbmd5YW5fZ2V0X3NldHRpbmcoJ3VzZXInKTsKICAgICAgICAkc2lnbj1jaGFuZ3lhbl9nZW5fc2lnbigkdXNlcik7CiAgICAgICAgJHJlc3VsdCA9IGNoYW5neWFuX2dldGNvZGUoQ0hBTkdZQU5fQ0xJRU5UX0lELCAkdXNlciwgZmFsc2UsICRzaWduLCRhcHBpZCk7CiAgICAgICAgJGlzdl9pZCA9ICRyZXN1bHRbJ2lzdl9pZCddOwogICAgICAgIAogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdpc3ZfaWQnLCRpc3ZfaWQpOwogICAgICAgIGNoYW5neWFuX2NsZWFyY2FjaGUoKTsKICAgICAgICAkaXN2X2lkID0gaW50dmFsKCRpc3ZfaWQpOwogICAgICAgICRjaGFuZ2dlX2lzdl91cmwgPSBDSEFOR1lBTl9BUElfQ0hBTkdFX0lTVi4kaXN2X2lkOwogICAgICAgIGVjaG8gPDw8RU9UCjxpZnJhbWUgc3JjPSJ7JGNoYW5nZ2VfaXN2X3VybH0iIHNjcm9sbGluZz0ibm8iIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHN0eWxlPSJib3JkZXI6bm9uZSI+PC9pZnJhbWU+CkVPVDsKICAgICAgICBTaG93TXNnKCLmiJDlip/orr7nva7mlrDnmoRBcHBJROWPikFQUEtFWe+8gSIsJz8nLDAsMzAwMCk7CiAgICAgICAgZXhpdCgpOwogICAgfQogICAgJGlzdnN0cj0iPHA+IOmAieaLqeaCqOmcgOimgeiuvue9rueahEFQUElE77yaPC9wPiI7CiAgICAkbXNnID0gPDw8RU9UCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMSI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgY29sc3Bhbj0iMiIgaWQ9ImlzdnNDb250ZW50Ij4KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KRU9UOwogICAgJGpxdWVyeV9zcmMgPSAgQ0hBTkdZQU5fSlFVRVJZX1NSQzsKICAgICRpc3ZzX2pzb25wID0gY2hhbmd5YW5fZ2V0X2lzdnNfanNvbnAoKTsKICAgIGVjaG8gPDw8RU9UCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+Cjx0aXRsZT7nlYXoqIDor4TorrrnrqHnkIY8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJ7JGNmZ19wbHVzX2Rpcn0vaW1nL2Jhc2UuY3NzIj4KeyRqcXVlcnlfc3JjfQp7JGlzdnNfanNvbnB9CjwvaGVhZD4KPGJvZHkgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy9hbGxiZy5naWYnIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0nOCc+Cjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0RGRjlBQSI+CiAgPHRyPgogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvd2JnLmdpZic+Jm5ic3A7PGI+PGEgaHJlZj0iPyI+4peH55WF6KiA6K+E6K665qih5Z2XIDwvYT4g44CL6YWN572uQVBQ5L+h5oGvPC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjgwIiBzdHlsZT0icGFkZGluZy10b3A6NXB4IiBiZ2NvbG9yPScjZmZmZmZmJz4KICA8c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4KZnVuY3Rpb24gQ2hlY2tTdWJtaXQoKXsKCXJldHVybiB0cnVlOyAKfQo8L3NjcmlwdD4KICA8Zm9ybSBuYW1lPSdteWZvcm0nIG1ldGhvZD0nUE9TVCcgb25TdWJtaXQ9J3JldHVybiBDaGVja1N1Ym1pdCgpOycgYWN0aW9uPSc/Jz4KICAKICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdjaGFuZ2VfYXBwaW5mbyc+CiAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWN0aW9uJyB2YWx1ZT0nZG8nPgogIDx0YWJsZSB3aWR0aD0nMTAwJScgIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzMnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjREFEQURBJz4KICAgIDx0ciBiZ2NvbG9yPScjREFEQURBJz4KICAgICAgPHRkIGNvbHNwYW49JzInIGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvd2JnLmdpZicgaGVpZ2h0PScyNic+PGZvbnQgY29sb3I9JyM2NjY2MDAnPjxiPueVheiogOivhOiuuueuoeeQhjwvYj48L2ZvbnQ+PC90ZD4KICAgIDwvdHI+CiAgICA8dHIgYmdjb2xvcj0nI0ZGRkZGRic+CiAgICAgIDx0ZCBjb2xzcGFuPScyJyAgaGVpZ2h0PScxMDAnPgogICAgICB7JG1zZ30KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBjb2xzcGFuPScyJyBiZ2NvbG9yPScjRjlGQ0VGJz48dGFibGUgd2lkdGg9JzI3MCcgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPgogICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInIGhlaWdodD0nMjgnPgogICAgICAgICAgICA8dGQgd2lkdGg9JzkwJz48aW5wdXQgbmFtZT0naW1hZ2VGaWVsZDEnIHR5cGU9J2ltYWdlJyBjbGFzcz0nbnAnIHNyYz0neyRjZmdfcGx1c19kaXJ9L2ltZy9idXR0b25fb2suZ2lmJyB3aWR0aD0nNjAnIGhlaWdodD0nMjInIGJvcmRlcj0nMCcgLz48L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9JzkwJz48YSBocmVmPSc/ZG9wb3N0PWFkZHNpdGUnIHN0eWxlPSJjb2xvcjpibHVlIj7liJvlu7pBUFAgSUQ8L2E+PC90ZD4KICAgICAgICAgICAgPHRkPjxhIGhyZWY9Jz8nIHN0eWxlPSJjb2xvcjpibHVlIj7ov5Tlm57kuIrkuIDpobU8L2E+PC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgogIDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHAgYWxpZ249ImNlbnRlciI+IDxicj4KICA8YnI+CjwvcD4KPC9ib2R5Pgo8L2h0bWw+CkVPVDsKfSBlbHNlaWYgKCRkb3Bvc3Q9PSdjaGVja3VwZGF0ZScpCnsKICAgICRnZXRfbGF0ZXN0X3ZlciA9IGNoYW5neWFuX2h0dHBfc2VuZChDSEFOR1lBTl9BUElfQUVTLidpbmRleC5waHA/Yz13ZWxjb21lJm09Z2V0X2xhdGVzdF92ZXInKTsKICAgIGlmKHZlcnNpb25fY29tcGFyZSgkZ2V0X2xhdGVzdF92ZXIsIENIQU5HWUFOX1ZFUiwnPicpKQogICAgewogICAgICAgIFNob3dNc2coIuajgOafpeWIsOacieacgOaWsOeJiOacrO+8jOivt+WJjeWOu+S4i+i9ve+8gTxiciAvPjxhIGhyZWY9J2h0dHA6Ly9iYnMuZGVkZWNtcy5jb20vNjUwMjAzLmh0bWwnIHRhcmdldD0nX2JsYW5rJyBzdHlsZT0nY29sb3I6Ymx1ZSc+54K55Ye75YmN5Y675LiL6L29PC9hPiA8YSBocmVmPSc/JyA+6L+U5ZuePC9hPiIsImphdmFzY3JpcHQ6OyIpOwogICAgICAgIGV4aXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgU2hvd01zZygiPHA+5b2T5YmN5Li65pyA5paw54mI5pys77yM5peg6aG75LiL6L295pu05paw77yBPC9wPiA8cD48YSBocmVmPSc/JyA+6L+U5Zue5LiK5LiA6aG1PC9hPjwvcD4iLCJqYXZhc2NyaXB0OjsiKTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICBleGl0KCk7Cn0gZWxzZWlmICgkZG9wb3N0PT0nY2xlYXJjYWNoZScpCnsKICAgIGNoYW5neWFuX2NsZWFyY2FjaGUoKTsKICAgIFNob3dNc2coIuaIkOWKn+a4heepuuagh+etvue8k+WtmO+8gSIsIj8iKTsKICAgIGV4aXQoKTsKfSBlbHNlaWYgKCRkb3Bvc3Q9PSdsb2dvdXQnKQp7CiAgICBlY2hvIDw8PEVPVAo8aWZyYW1lIHNyYz0iaHR0cDovL2NoYW5neWFuLmt1YWl6aGFuLmNvbS9sb2dvdXQiIHNjcm9sbGluZz0ibm8iIHdpZHRoPSIwIiBoZWlnaHQ9IjAiPjwvaWZyYW1lPgpFT1Q7CiAgICAkX1NFU1NJT05bJ2NoYW5neWFuJ10gPSAwOwogICAgJF9TRVNTSU9OWyd1c2VyJ10gPSAnJzsKICAgIAogICAgdW5zZXQoJF9TRVNTSU9OWydjaGFuZ3lhbiddKTsKICAgIHVuc2V0KCRfU0VTU0lPTlsndXNlciddKTsKICAgIGlmKCRub21zZykKICAgIHsKICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj9mb3J3YXJkPScuJGZvcndhcmQpOwogICAgICAgIGV4aXQ7CiAgICB9IGVsc2UgewogICAgICAgIGNoYW5neWFuX3NldF9zZXR0aW5nKCdwd2QnLCAnJyk7CiAgICB9CiAgICBTaG93TXNnKCLmiJDlip/pgIDlh7rnlYXoqIDvvIEiLCc/Jyk7CiAgICBleGl0KCk7Cn0gZWxzZWlmKCRkb3Bvc3Q9PSdmb3JnZXQtcHdkJykKewogICAgaWYoJGFjdGlvbj09J2RvJykKICAgIHsKICAgICAgICAkdXNlciA9IGVtcHR5KCR1c2VyKT8gJycgOiAkdXNlcjsKICAgICAgICBpZihlbXB0eSgkdXNlcikgQU5EICFDaGVja0VtYWlsKCR1c2VyKSkKICAgICAgICB7CiAgICAgICAgICAgIFNob3dNc2coIuivt+Whq+WGmeato+ehruagvOW8j+eahEUtbWFpbO+8gSIsLTEpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgICRlcnJvcl9tc2c9Jyc7CiAgICAgICAgaWYoY2hhbmd5YW5fZm9yZ2V0X3B3ZCgkdXNlciwgJGVycm9yX21zZykpCiAgICAgICAgewogICAgICAgICAgICBTaG93TXNnKCI8cD7miJDlip/lj5HpgIHlr4bnoIHmib7lm57pgq7ku7bvvIzor7fnmbvlvZVbeyR1c2VyfV3mn6XmlLbvvIE8L3A+PHA+PGEgaHJlZj0nPycgPui/lOWbnuS4iuS4gOmhtTwvYT48L3A+IiwnamF2YXNjcmlwdDo7Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgU2hvd01zZygi5a+G56CB5om+5Zue6ZSZ6K+v77yaeyRlcnJvcl9tc2d977yBIiwtMSk7CiAgICAgICAgfQogICAgICAgIGV4aXQ7CiAgICB9CiAgICAkdXNlciA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCd1c2VyJyk7CiAgICAkbXNnID0gPDw8RU9UCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+Cjx0aXRsZT7nlYXoqIDor4TorrrnrqHnkIY8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJ7JGNmZ19wbHVzX2Rpcn0vaW1nL2Jhc2UuY3NzIj4KPC9oZWFkPgo8Ym9keSBiYWNrZ3JvdW5kPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL2FsbGJnLmdpZicgbGVmdG1hcmdpbj0iOCIgdG9wbWFyZ2luPSc4Jz4KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIj4KICA8dHI+CiAgICA8dGQgaGVpZ2h0PSIyOCIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI0RBREFEQSIgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJz4mbmJzcDs8Yj7il4c8YSBocmVmPSI/Ij7nlYXoqIDor4TorrrmqKHlnZcgPC9hPiDjgIvmib7lm57lr4bnoIE8L2I+PC90ZD4KICA8L3RyPgogIDx0cj4KICAKICA8dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iODAiIHN0eWxlPSJwYWRkaW5nLXRvcDo1cHgiIGJnY29sb3I9JyNmZmZmZmYnPgogIAogIDxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPgpmdW5jdGlvbiBDaGVja1N1Ym1pdCgpewogICAgcmV0dXJuIHRydWU7IAp9Cjwvc2NyaXB0PgogIDxmb3JtIG5hbWU9J215Zm9ybScgbWV0aG9kPSdQT1NUJyBvblN1Ym1pdD0ncmV0dXJuIENoZWNrU3VibWl0KCk7JyBhY3Rpb249Jz8nPgogIAogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RvcG9zdCcgdmFsdWU9J2ZvcmdldC1wd2QnPgogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2FjdGlvbicgdmFsdWU9J2RvJz4KICA8dGFibGUgd2lkdGg9JzEwMCUnICBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPSczJyBjZWxsc3BhY2luZz0nMScgYmdjb2xvcj0nI0RBREFEQSc+CiAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+CiAgICAgIDx0ZCBjb2xzcGFuPScyJyBiYWNrZ3JvdW5kPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL3diZy5naWYnIGhlaWdodD0nMjYnPjxmb250IGNvbG9yPScjNjY2NjAwJz48Yj7nlYXoqIDor4TorrrnrqHnkIY8L2I+PC9mb250PjwvdGQ+CiAgICA8L3RyPgogICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPgogICAgICA8dGQgY29sc3Bhbj0nMicgIGhlaWdodD0nMTAwJz48dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPgogICAgICAgICAgPHRib2R5PgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPumCrueuse+8mjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgaWQ9InVzZXIiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiIHZhbHVlPSJ7JHVzZXJ9IiAvPgogICAgICAgICAgICAgICAg6K+35aGr5YaZ5oKo55qE5rOo5YaM6YKu566xPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGNvbHNwYW49JzInIGJnY29sb3I9JyNGOUZDRUYnPjx0YWJsZSB3aWR0aD0nMTAwJScgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPgogICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInIGhlaWdodD0nMjgnPgogICAgICAgICAgICA8dGQgd2lkdGg9JzE2JSc+PC90ZD4KICAgICAgICAgICAgPHRkIHdpZHRoPSc4NCUnIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyI+PGlucHV0IG5hbWU9J2ltYWdlRmllbGQxJyB0eXBlPSdpbWFnZScgY2xhc3M9J25wJyBzcmM9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYnV0dG9uX29rLmdpZicgd2lkdGg9JzYwJyBoZWlnaHQ9JzIyJyBib3JkZXI9JzAnIC8+PC90ZD4KICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+PC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KICA8L3RkPgogIDwvdHI+CjwvdGFibGU+CjwvYm9keT4KPC9odG1sPgpFT1Q7CiAgICBlY2hvICRtc2c7CiAgICBleGl0Owp9IGVsc2UgewogICAgJHVzZXIgPSBjaGFuZ3lhbl9nZXRfc2V0dGluZygndXNlcicpOwogICAgJGNoYW5neWFuX3ZlciA9IENIQU5HWUFOX1ZFUjsKICAgIGlmKGVtcHR5KCR1c2VyKSkgJHVzZXI9Jyc7CiAgICAkbXNnID0gPDw8RU9UCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+Cjx0aXRsZT7nlYXoqIDor4TorrrnrqHnkIY8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJ7JGNmZ19wbHVzX2Rpcn0vaW1nL2Jhc2UuY3NzIj4KPC9oZWFkPgo8Ym9keSBiYWNrZ3JvdW5kPSd7JGNmZ19wbHVzX2Rpcn0vaW1nL2FsbGJnLmdpZicgbGVmdG1hcmdpbj0iOCIgdG9wbWFyZ2luPSc4Jz4KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIj4KICA8dHI+CiAgICA8dGQgaGVpZ2h0PSIyOCIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI0RBREFEQSIgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJz4mbmJzcDs8Yj7il4fnlYXoqIDor4TorrrmqKHlnZcg44CLPC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgCiAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjgwIiBzdHlsZT0icGFkZGluZy10b3A6NXB4IiBiZ2NvbG9yPScjZmZmZmZmJz4KICAKICA8c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4KZnVuY3Rpb24gQ2hlY2tTdWJtaXQoKXsKICAgIHJldHVybiB0cnVlOyAKfQo8L3NjcmlwdD4KICA8Zm9ybSBuYW1lPSdteWZvcm0nIG1ldGhvZD0nUE9TVCcgb25TdWJtaXQ9J3JldHVybiBDaGVja1N1Ym1pdCgpOycgYWN0aW9uPSc/Jz4KICAKICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdsb2dpbic+CiAgPHRhYmxlIHdpZHRoPScxMDAlJyAgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMycgY2VsbHNwYWNpbmc9JzEnIGJnY29sb3I9JyNEQURBREEnPgogICAgPHRyIGJnY29sb3I9JyNEQURBREEnPgogICAgICA8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+55WF6KiA6K+E6K66566h55CGPC9iPjwvZm9udD48L3RkPgogICAgPC90cj4KICAgIDx0ciBiZ2NvbG9yPScjRkZGRkZGJz4KICAgICAgPHRkIGNvbHNwYW49JzInICBoZWlnaHQ9JzEwMCc+PHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxIj4KICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7niYjmnKzvvJo8L3RkPgogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz48aWZyYW1lIG5hbWU9J3N0YWZybScgc3JjPSdodHRwOi8vY2hhbmd5YW4uYXBpLmRlZGVjbXMuY29tL2luZGV4LnBocD9jPXdlbGNvbWUmbT1uZXdfdmVyJnZlcj17JGNoYW5neWFuX3Zlcn0mc2l0ZXVybD17JHNpdGV1cmwyfSZmZWVkYmFja190b3RhbD17JGZlZWRiYWNrX3RvdGFsfScgZnJhbWVib3JkZXI9JzAnIGlkPSdzdGFmcm0nIHdpZHRoPSc5OCUnIGhlaWdodD0nMjInPjwvaWZyYW1lPjwvc3Bhbj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPumCrueuse+8mjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgaWQ9InVzZXIiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiIHZhbHVlPSJ7JHVzZXJ9IiAvPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iP2RvcG9zdD1yZWciIHN0eWxlPSJjb2xvcjpibHVlIj7lhY3otLnms6jlhow8L2E+IO+8jOiOt+WPluS4k+S4mueahOivhOiuuuacjeWKoTwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCI+5a+G56CB77yaPC90ZD4KICAgICAgICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJwd2QiIHR5cGU9InBhc3N3b3JkIiBpZD0icHdkIiBzaXplPSIxNiIgc3R5bGU9IndpZHRoOjIwMHB4Ij4KICAgICAgICAgICAgICAgPGEgaHJlZj0iP2RvcG9zdD1mb3JnZXQtcHdkIiBzdHlsZT0iY29sb3I6Ymx1ZSI+5b+Y6K6w5a+G56CBPC9hPiAmbmJzcDsgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPCEtLTx0cj4KICAgICAgPHRkIGhlaWdodD0iMzAiPuiusOS9j+Wvhuegge+8mjwvdGQ+CiAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJybXB3ZCIgaWQ9InJtcHdkIiAvPgogICAgICAgIDxsYWJlbCBmb3I9InJtcHdkIj7kuIvmrKHnmbvlvZXkuI3nlKjlho3ovpPlhaXvvIjkuI3mjqjojZDvvIk8L2xhYmVsPjwvdGQ+CiAgICA8L3RyPi0tPgogICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgY29sc3Bhbj0nMicgYmdjb2xvcj0nI0Y5RkNFRic+PHRhYmxlIHdpZHRoPScxMDAlJyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+CiAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcicgaGVpZ2h0PScyOCc+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0nMTYlJz48L3RkPgogICAgICAgICAgICA8dGQgd2lkdGg9Jzg0JScgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7Ij48aW5wdXQgbmFtZT0naW1hZ2VGaWVsZDEnIHR5cGU9J2ltYWdlJyBjbGFzcz0nbnAnIHNyYz0neyRjZmdfcGx1c19kaXJ9L2ltZy9idXR0b25fb2suZ2lmJyB3aWR0aD0nNjAnIGhlaWdodD0nMjInIGJvcmRlcj0nMCcgLz48L3RkPgogICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT48L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgogIDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPC9ib2R5Pgo8L2h0bWw+CkVPVDsKICAgIGlmKGNoYW5neWFuX2lzbG9naW4oKSkKICAgIHsKICAgICAgICAkY2hhbmd5YW5fdmVyID0gQ0hBTkdZQU5fVkVSOwogICAgICAgICRsb2dpbl91cmw9Q0hBTkdZQU5fQVBJX1NFVENPT0tJRS4nP2NsaWVudF9pZD0nLkNIQU5HWUFOX0NMSUVOVF9JRC4nJnRva2VuPScuJF9TRVNTSU9OWydjaGFuZ3lhbiddOwogICAgICAgICRsb2dpbl9zdHIgPSA8PDxFT1QKPGlmcmFtZSBzcmM9InskbG9naW5fdXJsfSIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgc3R5bGU9ImJvcmRlcjpub25lIj48L2lmcmFtZT4KRU9UOwogICAgICAgIAogICAgICAgICRpc3ZfYXBwX2tleSA9IGNoYW5neWFuX2dldF9zZXR0aW5nKCdpc3ZfYXBwX2tleScpOwogICAgICAgICRpc3ZfaWQgPSBjaGFuZ3lhbl9nZXRfc2V0dGluZygnaXN2X2lkJyk7CiAgICAgICAgJGlzdl9pZCA9IGludHZhbCgkaXN2X2lkKTsKICAgICAgICAkY2hhbmdnZV9pc3ZfdXJsID0gQ0hBTkdZQU5fQVBJX0NIQU5HRV9JU1YuJGlzdl9pZDsKICAgICAgICAkaXN2X2FwcF9rZXkgPSBjaGFuZ3lhbl9nZXRfaXN2X2FwcF9rZXkoKTsKICAgICAgICAkc2l0ZXVybDIgPSB1cmxlbmNvZGUoJGNmZ19iYXNlaG9zdCk7CiAgICAgICAgJHJvd2NvdW50ID0gJGRzcWwtPkdldE9uZSgiU0VMRUNUIENPVU5UKCopIEFTIGRkIEZST00gYCNAX19mZWVkYmFja2AiKTsKICAgICAgICAkZmVlZGJhY2tfdG90YWwgPSBpc3NldCgkcm93Y291bnRbJ2RkJ10pPyAkcm93Y291bnRbJ2RkJ10gOiAwOwogICAgICAgICRjaGFuZ2VfaXN2X2lkID0gPDw8RU9UCjxkaXYgaWQ9ImNoYW5nZV9pc3YiPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgY2hhbmdlX2lzdl9kaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hhbmdlX2lzdiIpO2NoYW5nZV9pc3ZfZGl2LmlubmVySFRNTD0nPGlmcmFtZSBzcmM9InskY2hhbmdnZV9pc3ZfdXJsfSIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgc3R5bGU9ImJvcmRlcjpub25lIj48L2lmcmFtZT4nO30sMTAwKTsKPC9zY3JpcHQ+CkVPVDsKICAgICAgICBpZighZW1wdHkoJGZvcndhcmQpKQogICAgICAgIHsKICAgICAgICAgICAgZWNobyA8PDxFT1QKICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMnB4O3BhZGRpbmc6IDIwcHg7Ym9yZGVyOiAxcHggc29saWQgI0RERDsiPueVheiogOaooeWdl+iHquWKqOeZu+W9leS4re+8jOivt+iAkOW/g+etieW+heKApuKApjwvZGl2Pgp7JGxvZ2luX3N0cn0KeyRjaGFuZ2VfaXN2X2lkfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj0nP2RvcG9zdD17JGZvcndhcmR9Jzt9LDUwMCk7Cjwvc2NyaXB0PgpFT1Q7CiAgICAgICAgICAgIGV4aXQoKTsKICAgICAgICB9CiAgICAgICAgJGFjY291bnRfc3RyID0gcHJlZ19tYXRjaCgiI0BkZWRlY21zJCMiLCRfU0VTU0lPTlsndXNlciddKT8gIjxhIGhyZWY9Jz9kb3Bvc3Q9YmluZCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvnu5HlrprotKblj7ddPC9hPiA8Zm9udCBjb2xvcj0ncmVkJz7kuLrkuobkv53or4HmgqjnmoTor4TorrrlronlhajvvIzlu7rorq7nu5HlrprotKblj7c8L2ZvbnQ+IiA6CiAgICAgICAgIjxhIGhyZWY9Jz9kb3Bvc3Q9bG9nb3V0JyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+WIh+aNoui0puWPt108L2E+IjsKICAgICAgICAkbXNnID0gPDw8RU9UCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMSI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+55m75b2V55So5oi377yaPC90ZD4KICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij57JF9TRVNTSU9OWyd1c2VyJ119IHskYWNjb3VudF9zdHJ9IDwhLS08YSBocmVmPSc/ZG9wb3N0PWxvZ291dCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvpgIDlh7pdPC9hPi0tPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+55WF6KiA5qih5Z2X54mI5pys77yaPC90ZD4KICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48c3BhbiBzdHlsZT0nY29sb3I6YmxhY2snPjxpZnJhbWUgbmFtZT0nc3RhZnJtJyBzcmM9J2h0dHA6Ly9jaGFuZ3lhbi5hcGkuZGVkZWNtcy5jb20vaW5kZXgucGhwP2M9d2VsY29tZSZtPW5ld192ZXImdmVyPXskY2hhbmd5YW5fdmVyfSZzaXRldXJsPXskc2l0ZXVybDJ9JmZlZWRiYWNrX3RvdGFsPXskZmVlZGJhY2tfdG90YWx9JyBmcmFtZWJvcmRlcj0nMCcgaWQ9J3N0YWZybScgd2lkdGg9Jzk4JScgaGVpZ2h0PScyMic+PC9pZnJhbWU+PC9zcGFuPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+QXBwIElE77yaPC90ZD4KICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48aW5wdXQgY2xhc3M9ImlucHV0LXhsYXJnZSIgdHlwZT0idGV4dCIgdmFsdWU9InskY2xpZW50X2lkfSIgZGlzYWJsZWQ9ImRpc2FibGVkLyIgc3R5bGU9IndpZHRoOjI2MHB4Ij4gPGEgaHJlZj0nP2RvcG9zdD1jaGFuZ2VfYXBwaW5mbycgc3R5bGU9J2NvbG9yOmJsdWUnPlvkv67mlLldPC9hPiA8c3BhbiBzdHlsZT0iY29sb3I6Izk5OSI+Jm5ic3A7QVBQIElE55So5LqO5YiH5o2i5LiN5ZCM55qE56uZ54K5PC9zcGFuPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+QVBQIEtlee+8mjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IGNsYXNzPSJpbnB1dC14bGFyZ2UiIHR5cGU9InRleHQiIHZhbHVlPSJ7JGlzdl9hcHBfa2V5fSIgZGlzYWJsZWQ9ImRpc2FibGVkLyIgc3R5bGU9IndpZHRoOjI2MHB4Ij4gIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiI+5oKo5bey5oiQ5Yqf55m75b2V55WF6KiA77yB5oKo5Y+v5Lul6L+b6KGM5Lul5LiL5pON5L2c77yaPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIj4KICAgICAgPGEgaHJlZj0nP2RvcG9zdD1tYW5hZ2UnIHN0eWxlPSdjb2xvcjpibHVlJz5b6K+E6K66566h55CGXTwvYT4gCiAgICAgIDxhIGhyZWY9Jz9kb3Bvc3Q9c3RhdCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvmlbDmja7nu5/orqFdPC9hPiAKICAgICAgPGEgaHJlZj0nP2RvcG9zdD1pbXBvcnQnIHN0eWxlPSdjb2xvcjpibHVlJz5b5a+85YWl5a+85Ye6XTwvYT4gCiAgICAgIDxhIGhyZWY9Jz9kb3Bvc3Q9Y2xlYXJjYWNoZScgc3R5bGU9J2NvbG9yOmJsdWUnPlvmuIXnqbrnvJPlrZhdPC9hPiAKICAgICAgPGEgaHJlZj0nP2RvcG9zdD1zZXR0aW5nJyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+eVheiogOiuvue9rl08L2E+IAogICAgICA8L3RkPgogICAgPC90cj4KPHRyPgogICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiI+CiAgIDxocj4KICAg5L2/55So6K+05piO77yaPGJyPgogICDlnKjlr7nlupTmqKHmnb/kuK3kvb/nlKjmoIfnrb7vvJo8Zm9udCBjb2xvcj0icmVkIj57ZGVkZTpjaGFuZ3lhbi99PC9mb250Pu+8jOebtOaOpei/m+ihjOiwg+eUqOWNs+WPr++8jOagt+W8j+iuvuWumuWPr+eCueWHuzxhIGhyZWY9Jz9kb3Bvc3Q9c2V0dGluZycgc3R5bGU9J2NvbG9yOmJsdWUnPlvnlYXoqIDorr7nva5dPC9hPiDov5vooYzorr7nva7jgIIKICA8aHI+CiAg5Yqf6IO96K+05piO77yaPGJyPgogIDxiPlvor4TorrrnrqHnkIZdPC9iPuWuoeaguOOAgeWIoOmZpOivhOiuuuS/oeaBr++8jOaVj+aEn+ivjeeuoeeQhu+8jOeUqOaIt+emgeiogOaTjeS9nO+8mzxicj4KIDxiPlvmlbDmja7nu5/orqFdPC9iPuermeeCueivhOiuuuS/oeaBr+aVsOaNruWFqOaWueS9jee7n+iuoe+8mzxicj4KIDxiPlvlr7zlhaXlr7zlh7pdPC9iPuivhOiuuuS/oeaBr+aVsOaNruWvvOWFpS/lr7zlh7rvvIzlu7rorq7nlKjmiLflrprmnJ/lr7zlh7rlpIfku73vvJs8YnI+CiA8Yj5b5riF56m657yT5a2YXTwvYj7muIXnqbrnlYXoqIDor4TorrrmoIfnrb7nvJPlrZjvvIzlpoLmnpzmm7TmlLnnmbvlvZXotKblj7flu7rorq7muIXnqbrnvJPlrZjlho3nlJ/miJDvvJs8YnI+CiA8Yj5b55WF6KiA6K6+572uXTwvYj7nlYXoqIDor4Torrrnm7jlhbPorr7lrprvvJs8YnI+PGJyPgo8aHI+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgc3R5bGU9ImNvbG9yOiM5OTkiPjxzdHJvbmc+55WF6KiAPC9zdHJvbmc+5piv5LiA5Liq566A5Y2V5Y+L5aW955qE56S+5Lya5YyW6K+E6K665Y+K6IGa5ZCI57O757uf44CC55WF6KiA6K+E6K6657O757uf5Y+v5Lul5L+d6K+B5oKo572R56uZ55qE6K+E6K665a6J5YWo77yM6K6p5oKo55qE572R56uZ6L+c56a75Z6D5Zy+6K+E6K6677yb55So5oi35Y+v5Lul5L2/55So6Ieq5bex55qE56S+5Lqk6LSm5oi35Zyo5oKo55qE572R56uZ5Y+R6KGo6K+E6K6677yM5bm25LiU5LiA6ZSu5ZCM5q2l6Iez56S+5Lqk572R57uc77yM5Li65oKo55qE572R56uZ5bim5p2l5pu05aSa5rWB6YeP44CCPC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KeyRsb2dpbl9zdHJ9CnskY2hhbmdlX2lzdl9pZH0KRU9UOwogICAgICAgICR3aW50aXRsZSA9ICfnlYXoqIDor4TorrrnrqHnkIYnOwogICAgICAgICR3ZWNvbWVfaW5mbyA9ICfnlYXoqIDor4TorrrmqKHlnZcg44CLJzsKICAgICAgICAkd2luID0gbmV3IE94V2luZG93KCk7CiAgICAgICAgJHdpbi0+QWRkVGl0bGUoJHdpbnRpdGxlKTsKICAgICAgICAkd2luLT5BZGRNc2dJdGVtKCRtc2cpOwogICAgICAgICR3aW5mb3JtID0gJHdpbi0+R2V0V2luZG93KCdoYW5kJywgJyZuYnNwOycsIGZhbHNlKTsKICAgICAgICAkd2luLT5EaXNwbGF5KCk7CiAgICAgICAgZXhpdDsKICAgIH0gZWxzZSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydjaGFuZ3lhbiddKTsKICAgICAgICB1bnNldCgkX1NFU1NJT05bJ3VzZXInXSk7CiAgICAgICAgZWNobyAkbXNnOwogICAgfQp9Cj8+Cg== - - - diff --git a/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93-readme.php b/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93.xml b/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93.xml deleted file mode 100755 index 9ae093b4..00000000 --- a/src/data/module/72ffa6fabe3c236f9238a2b281bc0f93.xml +++ /dev/null @@ -1,74 +0,0 @@ - - -name=广告管理 -team=织梦官方 -time=2008-11-19 -email=admin@dedecms.com -url=www.dedecms.com -hash=72ffa6fabe3c236f9238a2b281bc0f93 -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgMjAwMy0yMDA477yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPg0KPHA+PC9wPg== - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19teWFkYDsNCkNSRUFURSBUQUJMRSBgI0BfX215YWRgICgNCiAgYGFpZGAgbWVkaXVtaW50KDgpIHVuc2lnbmVkIE5PVCBOVUxMIGF1dG9faW5jcmVtZW50LA0KICBgY2xzaWRgIHNtYWxsaW50KDUpIE5PVCBOVUxMIGRlZmF1bHQgMCwNCiAgYHR5cGVpZGAgc21hbGxpbnQoNSkgdW5zaWduZWQgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGB0YWduYW1lYCB2YXJjaGFyKDMwKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KICBgYWRuYW1lYCB2YXJjaGFyKDYwKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KICBgdGltZXNldGAgc21hbGxpbnQoNikgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGBzdGFydHRpbWVgIGludCgxMCkgdW5zaWduZWQgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGBlbmR0aW1lYCBpbnQoMTApIHVuc2lnbmVkIE5PVCBOVUxMIGRlZmF1bHQgJzAnLA0KICBgbm9ybWJvZHlgIHRleHQsDQogIGBleHBib2R5YCB0ZXh0LA0KICBQUklNQVJZIEtFWSAgKGBhaWRgKSwNCiAgS0VZIGB0YWduYW1lYCAoYHRhZ25hbWVgLGB0eXBlaWRgLGB0aW1lc2V0YCxgZW5kdGltZWAsYHN0YXJ0dGltZWApDQopIFRZUEU9TXlJU0FNOw0KDQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX215YWR0eXBlYDsNCkNSRUFURSBUQUJMRSBgI0BfX215YWR0eXBlYCAoDQogIGBpZGAgbWVkaXVtaW50KDgpIHVuc2lnbmVkIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KICBgdHlwZW5hbWVgIHZhcmNoYXIoNTApIE5PVCBOVUxMIERFRkFVTFQgJycsDQogIFBSSU1BUlkgS0VZIChgaWRgKQ0KKSBUWVBFPU15SVNBTTsNCg0KRGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICflub/lkYrnrqHnkIYnOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn5bm/5ZGK566h55CGJywgJzxtOml0ZW0gbmFtZT0nJ+W5v+WRiueuoeeQhicnIGxpbms9JydhZF9tYWluLnBocCcnIHJhbms9JydwbHVzX+W5v+WRiueuoeeQhicnIHRhcmdldD0nJ21haW4nJyAvPicsICcnLCAn57uH5qKm5a6Y5pa5JywgMSwgJycpOw0KDQpJTlNFUlQgSU5UTyBgI0BfX215YWRgIFZBTFVFUygnMScsJzAnLCcwJywnaW5kZXhUb3BCYW5uZXIxJywn6aaW6aG16aG26YOo5a+86Iiq5aSn5Zu+LTUwMCo2MCcsJzAnLCcxMjk3OTMzMDI4JywnMTMwMDUyNTAyOCcsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1mcm9udHRvcGJhbm5lciZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzInLCcwJywnMCcsJ2luZGV4VG9wQmFubmVyMicsJ+mmlumhtemhtumDqOWvvOiIquWwj+Wbvi0yMDAqNjAnLCcwJywnMTI5NzkzMzYwNScsJzEzMDA1MjU2MDUnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9ZnJvbnR0b3BiYW5uZXIyJmNoYXJzZXQ9Z2JrIj48L3NjcmlwdD4nLCcnKSwNCignMycsJzAnLCcwJywnaW5uZXJUb3BCYW5uZXIxJywnKOmikemBky/liJfooagp6aG26YOo5a+86Iiq5aSn5Zu+LTUwMCo2MCcsJzAnLCcxMjk3OTM0MDUyJywnMTMwMDUyNjA1MicsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1pbm5lcnRvcGJhbm5lcjEmY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCc0JywnMCcsJzAnLCdpbm5lclRvcEJhbm5lcjInLCco6aKR6YGTL+WIl+ihqCnpobbpg6jlr7zoiKrlsI/lm74tMjAwKjYwJywnMCcsJzEyOTc5MzQxMDQnLCcxMzAwNTI2MTA0JywnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FkLmRlZGVjbXMuY29tL2Fkc3ZpZXcvP2FjdGlvbj1zaW5nbGUma2V5PWlubmVydG9wYmFubmVyMiZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzUnLCcwJywnMCcsJ2luZGV4TGVmdEJhbm5lcicsJ+mmlumhteW3puS+p+Wkp+WbvuW5v+WRii03MTIqNzUnLCcwJywnMTI5NzkzNDc5MScsJzEzMDA1MjY3OTEnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9aW5kZXhsZWZ0YmFubmVyJmNoYXJzZXQ9Z2JrIj48L3NjcmlwdD4nLCcnKSwNCignNicsJzAnLCcwJywnaW5kZXhSaWdodExpdHBpYzEnLCfpppbpobXlj7PkvqflsI/lnZflm74xLTI0MCo2NScsJzAnLCcxMjk3OTM2MTA2JywnMTMwMDUyODEwNicsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1pbmRleHJ0bGl0cGljMSZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzcnLCcwJywnMCcsJ2luZGV4UmlnaHRMaXRwaWMyJywn6aaW6aG15Y+z5L6n5bCP5Z2X5Zu+Mi0yNDAqNjUnLCcwJywnMTI5NzkzNjc2OCcsJzEzMDA1Mjg3NjgnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9aW5kZXhydGxpdHBpYzImY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCc4JywnMCcsJzAnLCdpbmRleGZvb3RlckFEJywn6aaW6aG15bqV6YOo5Zu+54mH5bm/5ZGKLTcyNio5MScsJzAnLCcxMjk3OTM3ODE0JywnMTMwMDUyOTgxNCcsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1pbmRleGZvb3RlcmFkJmNoYXJzZXQ9Z2JrIj48L3NjcmlwdD4nLCcnKSwNCignOScsJzAnLCcwJywnaW5uZXJmb290ZXJBRCcsJyjpopHpgZMv5YiX6KGoKeW6lemDqOWbvueJh+W5v+WRii03MjYqOTEnLCcwJywnMTI5Nzk5MTE4MycsJzEzMDA1ODMxODMnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9aW5uZXJmb290ZXJhZCZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzEwJywnMCcsJzAnLCdpbm5lcmZvb3RlckFEMicsJ+WGheWuueW6lemDqOWbvueJh+W5v+WRii03MjYqOTEnLCcwJywnMTI5Nzk5MTcwOScsJzEzMDA1ODM3MDknLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9aW5uZXJmb290ZXJhZDImY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCcxMScsJzAnLCcwJywnbGlzdFJ0UGljQUQnLCco6aKR6YGTL+WIl+ihqCnlj7Pkvqflm77niYflub/lkYotMjQwKjIwMCcsJzAnLCcxMjk3OTkyMjU0JywnMTMwMDU4NDI1NCcsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1saXN0cnRwaWNhZCZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzEyJywnMCcsJzAnLCdjb250ZW50UnRQaWNBRCcsJ+WGheWuueWPs+S+p+WbvueJh+W5v+WRii0yNDAqMjAwJywnMCcsJzEyOTc5OTUwODInLCcxMzAwNTg3MDgyJywnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FkLmRlZGVjbXMuY29tL2Fkc3ZpZXcvP2FjdGlvbj1zaW5nbGUma2V5PWNvbnRlbnRydHBpY2FkJmNoYXJzZXQ9Z2JrIj48L3NjcmlwdD4nLCcnKSwNCignMTMnLCcwJywnMCcsJ2xpc3RSdFBpY0FEMicsJyjpopHpgZMv5YiX6KGoKeWPs+S+p+WbvueJh+W5v+WRijItMjQwKjIwMCcsJzAnLCcxMjk3OTk2NTQzJywnMTMwMDU4ODU0MycsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1saXN0cnRwaWNhZDImY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCcxNCcsJzAnLCcwJywnY29udGVudFJ0UGljQUQyJywn5YaF5a655Y+z5L6n5Zu+54mH5bm/5ZGKMi0yNDAqMjAwJywnMCcsJzEyOTc5OTcxMDYnLCcxMzAwNTg5MTA2JywnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FkLmRlZGVjbXMuY29tL2Fkc3ZpZXcvP2FjdGlvbj1zaW5nbGUma2V5PWNvbnRlbnRydHBpY2FkMiZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzE1JywnMCcsJzAnLCdjb250ZW50TWlkUGljQUQnLCflhoXlrrnpobXlhoXlrrnkuK3lub/lkYotMzAwKjI1MCcsJzAnLCcxMjk3OTk3OTcxJywnMTMwMDU4OTk3MScsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1jb250ZW50bWlkcGljYWQmY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCcxNicsJzAnLCcwJywnc2VhcmNoUGljQUQnLCfmkJzntKLpobXlj7Pkvqflub/lkYotMzAwKjI2OCcsJzAnLCcxMjk3OTk5NzIwJywnMTMwMDU5MTcyMCcsJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hZC5kZWRlY21zLmNvbS9hZHN2aWV3Lz9hY3Rpb249c2luZ2xlJmtleT1zZWFyY2hwaWNhZCZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzE3JywnMCcsJzAnLCdpbmRleFJ0cGljQWQzJywn6aaW6aG15Y+z5L6n5Zu+54mH5bm/5ZGKLTI0MCoyMDAnLCcwJywnMTI5ODAwMDA3NycsJzEzMDA1OTIwNzcnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9aW5kZXhydHBpY2FkMyZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzE4JywnMCcsJzAnLCdzZWFyY2hUb3BCYW5uZXInLCfmkJzntKLpobXpnaLpobbpg6hiYW5uZXLlub/lkYotMzAwKjQwJywnMCcsJzEyOTgwMTI5NTQnLCcxMzAwNjA0OTU0JywnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FkLmRlZGVjbXMuY29tL2Fkc3ZpZXcvP2FjdGlvbj1zaW5nbGUma2V5PXNlYXJjaHRvcGJhbm5lciZjaGFyc2V0PWdiayI+PC9zY3JpcHQ+JywnJyksDQooJzE5JywnMCcsJzAnLCdjb250ZW50VG9wQmFubmVyMScsJ+WGheWuuemhtumDqOWvvOiIquWkp+Wbvi01MDAqNjAnLCcwJywnMTI5ODAxNzY1NScsJzEzMDA2MDk2NTUnLCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQuZGVkZWNtcy5jb20vYWRzdmlldy8/YWN0aW9uPXNpbmdsZSZrZXk9Y3RlbnR0cGJhbm5lcjEmY2hhcnNldD1nYmsiPjwvc2NyaXB0PicsJycpLA0KKCcyMCcsJzAnLCcwJywnY29udGVudFRvcEJhbm5lcjInLCflhoXlrrnpobbpg6jlr7zoiKrlsI/lm74tMjAwKjYwJywnMCcsJzEyOTgwMTc2ODgnLCcxMzAwNjA5Njg4JywnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FkLmRlZGVjbXMuY29tL2Fkc3ZpZXcvP2FjdGlvbj1zaW5nbGUma2V5PWN0ZW50dHBiYW5uZXIyJmNoYXJzZXQ9Z2JrIj48L3NjcmlwdD4nLCcnKTs= - - -RGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICflub/lkYrnrqHnkIYnOw0KRFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19teWFkYDsNCkRST1AgVEFCTEUgSUYgRVhJU1RTIGAjQF9fbXlhZHR5cGVgOw== - - - - - - - - -../dede/ad_add.php -../dede/ad_edit.php -../dede/ad_main.php -../dede/templets/ad_add.htm -../dede/templets/ad_edit.htm -../dede/templets/ad_main.htm -../plus/ad_js.php -../include/taglib/myad.lib.php - - - - - -PD9waHANCi8qKg0KICog5bm/5ZGK5re75YqgDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogYWRfYWRkLnBocCAxIDg6MjYgMjAxMOW5tDfmnIgxMuaXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLkFkbWluaXN0cmF0b3INCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KIA0KcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCkNoZWNrUHVydmlldygncGx1c1/lub/lkYrnrqHnkIYnKTsNCnJlcXVpcmVfb25jZSBERURFSU5DLiIvdHlwZWxpbmsuY2xhc3MucGhwIjsNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0ID0gIiI7DQoNCmlmKCRkb3Bvc3Q9PSJzYXZlIikNCnsNCiAgICAvL3RpbWVzZXQgdGFnbmFtZSB0eXBlaWQgbm9ybWJvZHkgZXhwYm9keQ0KICAgICR0YWduYW1lID0gdHJpbSgkdGFnbmFtZSk7DQogICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCB0eXBlaWQgRlJPTSAjQF9fbXlhZCBXSEVSRSB0eXBlaWQ9JyR0eXBlaWQnIEFORCB0YWduYW1lIExJS0UgJyR0YWduYW1lJyIpOw0KICAgIGlmKGlzX2FycmF5KCRyb3cpKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5Zyo55u45ZCM5qCP55uu5LiL5bey57uP5a2Y5Zyo5ZCM5ZCN55qE5qCH6K6w77yBIiwiLTEiKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICAkc3RhcnR0aW1lID0gR2V0TWtUaW1lKCRzdGFydHRpbWUpOw0KICAgICRlbmR0aW1lID0gR2V0TWtUaW1lKCRlbmR0aW1lKTsNCiAgICBpZigkbm9ybWJvZHlbJ3N0eWxlJ109PSdjb2RlJykNCiAgICB7DQogICAgICAgICRub3JtYm9keSA9ICRub3JtYm9keVsnaHRtbGNvZGUnXTsNCiAgICB9DQogICAgZWxzZSBpZigkbm9ybWJvZHlbJ3N0eWxlJ109PSd0eHQnKQ0KICAgIHsNCiAgICAgICAgJG5vcm1ib2R5ID0gIjxhIGhyZWY9XCJ7JG5vcm1ib2R5WydsaW5rJ119XCIgZm9udC1zaXplPVwieyRub3JtYm9keVsnc2l6ZSddfVwiIGNvbG9yPVwieyRub3JtYm9keVsnY29sb3InXX1cIj57JG5vcm1ib2R5Wyd0aXRsZSddfTwvYT4iOw0KICAgIH0NCiAgICBlbHNlIGlmKCRub3JtYm9keVsnc3R5bGUnXT09J2ltZycpDQogICAgew0KICAgICAgICBpZihlbXB0eSgkbm9ybWJvZHlbJ3dpZHRoJ10pKQ0KICAgICAgICB7DQogICAgICAgICAgICAkd2lkdGggPSAiIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICR3aWR0aCA9ICIgd2lkdGg9XCJ7JG5vcm1ib2R5Wyd3aWR0aCddfVwiIjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZW1wdHkoJG5vcm1ib2R5WydoZWlnaHQnXSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRoZWlnaHQgPSAiIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRoZWlnaHQgPSAiaGVpZ2h0PVwieyRub3JtYm9keVsnaGVpZ2h0J119XCIiOw0KICAgICAgICB9DQogICAgICAgICRub3JtYm9keSA9ICI8YSBocmVmPVwieyRub3JtYm9keVsnbGluayddfVwiPjxpbWcgc3JjPVwieyRub3JtYm9keVsndXJsJ119XCIkd2lkdGggJGhlaWdodCBib3JkZXI9XCIwXCIgLz48L2E+IjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgaWYoZW1wdHkoJG5vcm1ib2R5Wyd3aWR0aCddKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHdpZHRoID0gIiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkd2lkdGggPSAiIHdpZHRoPVwieyRub3JtYm9keVsnd2lkdGgnXX1cIiI7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5KCRub3JtYm9keVsnaGVpZ2h0J10pKQ0KICAgICAgICB7DQogICAgICAgICAgICAkaGVpZ2h0ID0gIiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkaGVpZ2h0ID0gImhlaWdodD1cInskbm9ybWJvZHlbJ2hlaWdodCddfVwiIjsNCiAgICAgICAgfQ0KICAgICAgICAkbm9ybWJvZHkgPSAiPG9iamVjdCBjbGFzc2lkPVwiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwXCIgY29kZWJhc2U9XCJodHRwOi8vZG93bmxvYWQuTWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249NywwLDE5LDBcIiR3aWR0aCAkaGVpZ2h0PjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1cInskbm9ybWJvZHlbJ2xpbmsnXX1cIi8+PHBhcmFtIG5hbWU9XCJxdWFsaXR5XCIgdmFsdWU9XCJoaWdoXCIvPjwvb2JqZWN0PiI7DQogICAgfQ0KICAgICRxdWVyeSA9ICINCiAgICAgSU5TRVJUIElOVE8gI0BfX215YWQodHlwZWlkLHRhZ25hbWUsYWRuYW1lLHRpbWVzZXQsc3RhcnR0aW1lLGVuZHRpbWUsbm9ybWJvZHksZXhwYm9keSkNCiAgICAgVkFMVUVTKCckdHlwZWlkJywnJHRhZ25hbWUnLCckYWRuYW1lJywnJHRpbWVzZXQnLCckc3RhcnR0aW1lJywnJGVuZHRpbWUnLCckbm9ybWJvZHknLCckZXhwYm9keScpOw0KICAgICI7DQogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHF1ZXJ5KTsNCiAgICBTaG93TXNnKCLmiJDlip/lop7liqDkuIDkuKrlub/lkYrvvIEiLCJhZF9tYWluLnBocCIpOw0KICAgIGV4aXQoKTsNCn0NCiRzdGFydERheSA9IHRpbWUoKTsNCiRlbmREYXkgPSBBZGREYXkoJHN0YXJ0RGF5LDMwKTsNCiRzdGFydERheSA9IEdldERhdGVUaW1lTWsoJHN0YXJ0RGF5KTsNCiRlbmREYXkgPSBHZXREYXRlVGltZU1rKCRlbmREYXkpOw0KaW5jbHVkZSBEZWRlSW5jbHVkZSgndGVtcGxldHMvYWRfYWRkLmh0bScpOw== - - -PD9waHANCi8qKg0KICog5bm/5ZGK57yW6L6RDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogYWRfZWRpdC5waHAgMSA4OjI2IDIwMTDlubQ35pyIMTLml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmUoZGlybmFtZShfX0ZJTEVfXykuIi9jb25maWcucGhwIik7DQpDaGVja1B1cnZpZXcoJ3BsdXNf5bm/5ZGK566h55CGJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4nL3R5cGVsaW5rLmNsYXNzLnBocCcpOw0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCiRhaWQgPSBwcmVnX3JlcGxhY2UoIiNbXjAtOV0jIiwgJycsICRhaWQpOw0KJEVOVl9HT0JBQ0tfVVJMID0gZW1wdHkoJF9DT09LSUVbJ0VOVl9HT0JBQ0tfVVJMJ10pID8gImFkX21haW4ucGhwIiA6ICRfQ09PS0lFWydFTlZfR09CQUNLX1VSTCddOw0KDQppZigkZG9wb3N0PT0nZGVsZXRlJykNCnsNCiAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgiREVMRVRFIEZST00gYCNAX19teWFkYCBXSEVSRSBhaWQ9JyRhaWQnICIpOw0KICAgIFNob3dNc2coIuaIkOWKn+WIoOmZpOS4gOWImeW5v+WRiuS7o+egge+8gSIsJEVOVl9HT0JBQ0tfVVJMKTsNCiAgICBleGl0KCk7DQp9DQplbHNlIGlmKCRkb3Bvc3Q9PSJnZXRqcyIpDQp7DQogICAgcmVxdWlyZV9vbmNlKERFREVJTkMuJy9veHdpbmRvdy5jbGFzcy5waHAnKTsNCiAgICAkanNjb2RlID0gIjxzY3JpcHQgc3JjPSd7JGNmZ19waHB1cmx9L2FkX2pzLnBocD9haWQ9JGFpZCcgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPjwvc2NyaXB0PiI7DQogICAgJHNob3dodG1sID0gIjx4bXAgc3R5bGU9J2NvbG9yOiMzMzMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmJz5cclxuXHJcbiRqc2NvZGVcclxuXHJcbjwveG1wPiI7DQogICAgJHNob3dodG1sIC49ICLpooTop4jvvJo8aWZyYW1lIG5hbWU9J3Rlc3Rmcm0nIGZyYW1lYm9yZGVyPScwJyBzcmM9J2FkX2VkaXQucGhwP2FpZD17JGFpZH0mZG9wb3N0PXRlc3RqcycgaWQ9J3Rlc3Rmcm0nIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzIwMCc+PC9pZnJhbWU+IjsNCiAgICAkd2ludGl0bGUgPSAi5bm/5ZGK566h55CGLeiOt+WPlkpTIjsNCiAgICAkd2Vjb21lX2luZm8gPSAiPGEgaHJlZj0nYWRfbWFpbi5waHAnPjx1PuW5v+WRiueuoeeQhjwvdT48L2E+Ojrojrflj5ZKUyI7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkluaXQoKTsNCiAgICAkd2luLT5BZGRUaXRsZSgi5Lul5LiL5Li66YCJ5a6a5bm/5ZGK55qESlPosIPnlKjku6PnoIHvvJoiKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygiaGFuZCIsJHNob3dodG1sKTsNCiAgICAkd2luLT5EaXNwbGF5KCk7DQogICAgZXhpdCgpOw0KfQ0KZWxzZSBpZigkZG9wb3N0PT0ndGVzdGpzJykNCnsNCiAgICBlY2hvICI8c2NyaXB0IHNyYz0neyRjZmdfcGhwdXJsfS9hZF9qcy5waHA/YWlkPSRhaWQmbm9jYWNoZT0xJyBsYW5ndWFnZT0namF2YXNjcmlwdCc+PC9zY3JpcHQ+IjsNCiAgICBleGl0KCk7DQp9DQplbHNlIGlmKCRkb3Bvc3Q9PSdzYXZlZWRpdCcpDQp7DQogICAgJHN0YXJ0dGltZSA9IEdldE1rVGltZSgkc3RhcnR0aW1lKTsNCiAgICAkZW5kdGltZSA9IEdldE1rVGltZSgkZW5kdGltZSk7DQogICAgJHF1ZXJ5ID0gIlVQREFURSBgI0BfX215YWRgDQogICAgIFNFVA0KICAgICB0eXBlaWQ9JyR0eXBlaWQnLA0KICAgICBhZG5hbWU9JyRhZG5hbWUnLA0KICAgICB0aW1lc2V0PSckdGltZXNldCcsDQogICAgIHN0YXJ0dGltZT0nJHN0YXJ0dGltZScsDQogICAgIGVuZHRpbWU9JyRlbmR0aW1lJywNCiAgICAgbm9ybWJvZHk9JyRub3JtYm9keScsDQogICAgIGV4cGJvZHk9JyRleHBib2R5Jw0KICAgICBXSEVSRSBhaWQ9JyRhaWQnDQogICAgICI7DQogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHF1ZXJ5KTsNCiAgICBTaG93TXNnKCLmiJDlip/mm7TmlLnkuIDliJnlub/lkYrku6PnoIHvvIEiLCRFTlZfR09CQUNLX1VSTCk7DQogICAgZXhpdCgpOw0KfQ0KJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gYCNAX19teWFkYCBXSEVSRSBhaWQ9JyRhaWQnIik7DQppbmNsdWRlIERlZGVJbmNsdWRlKCd0ZW1wbGV0cy9hZF9lZGl0Lmh0bScpOw== - - -PD9waHANCi8qKg0KICog5bm/5ZGK566h55CGDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogYWRfbWFpbi5waHAgMSA4OjI2IDIwMTDlubQ35pyIMTLml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2NvbmZpZy5waHAnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLicvZGF0YWxpc3RjcC5jbGFzcy5waHAnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLicvY29tbW9uLmZ1bmMucGhwJyk7DQpzZXRjb29raWUoJ0VOVl9HT0JBQ0tfVVJMJywkZGVkZU5vd3VybCx0aW1lKCkrMzYwMCwnLycpOw0KDQokc3FsID0gIlNFTEVDVCBhZC5haWQsYWQudGFnbmFtZSx0cC50eXBlbmFtZSxhZC5hZG5hbWUsYWQudGltZXNldCxhZC5lbmR0aW1lDQpGUk9NIGAjQF9fbXlhZGAgYWQgTEVGVCBKT0lOIGAjQF9fYXJjdHlwZWAgdHAgb24gdHAuaWQ9YWQudHlwZWlkDQpPUkRFUiBCWSBhZC5haWQgZGVzYyI7DQoNCiRkbGlzdCA9IG5ldyBEYXRhTGlzdENQKCk7DQokZGxpc3QtPlNldFRlbXBsZXQoREVERUFETUlOLiIvdGVtcGxldHMvYWRfbWFpbi5odG0iKTsNCiRkbGlzdC0+U2V0U291cmNlKCRzcWwpOw0KJGRsaXN0LT5kaXNwbGF5KCk7DQoNCmZ1bmN0aW9uIFRlc3RUeXBlKCR0bmFtZSkNCnsNCiAgICBpZigkdG5hbWU9PSIiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICLmiYDmnInmoI/nm64iOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICByZXR1cm4gJHRuYW1lOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gVGltZVNldFZhbHVlKCR0cykNCnsNCiAgICBpZigkdHM9PTApDQogICAgew0KICAgICAgICByZXR1cm4gIuS4jemZkOaXtumXtCI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHJldHVybiAi6ZmQ5pe25qCH6K6wIjsNCiAgICB9DQp9 - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5aKe5Yqg5bm/5ZGKPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jYWxlbmRhci9jYWxlbmRhci5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iLi4vaW5jbHVkZS9qcy9qcXVlcnkvanF1ZXJ5LmpzIiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KZnVuY3Rpb24gY2hlY2tTdWJtaXQoKQ0Kew0KCWlmKGRvY3VtZW50LmZvcm0xLnRhZ25hbWUudmFsdWU9PSIiKQ0KCXsNCgkJYWxlcnQoIuW5v+WRiuagh+ivhuS4jeiDveS4uuepuu+8gSIpOw0KCQlkb2N1bWVudC5mb3JtMS50YWduYW1lLmZvY3VzKCk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQp9DQoNCjwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHkgYmFja2dyb3VuZD0iaW1hZ2VzL2FsbGJnLmdpZiIgbGVmdG1hcmdpbj0nOCcgdG9wbWFyZ2luPSc4Jz4NCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQogIDx0cj4NCiAgICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iaW1hZ2VzL3RiZy5naWYiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsiPjxiPjxhIGhyZWY9ImFkX21haW4ucGhwIj48dT7lub/lkYrnrqHnkIY8L3U+PC9hPjwvYj4gJmd0OyZndDsg5aKe5Yqg5bm/5ZGK5L2N572uIDwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgaGVpZ2h0PSIyMDAiIGJnY29sb3I9IiNGRkZGRkYiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjQiIGNlbGxwYWRkaW5nPSI0Ij4NCiAgICAgICAgPGZvcm0gYWN0aW9uPSJhZF9hZGQucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9ImZvcm0xIiBvblN1Ym1pdD0icmV0dXJuIGNoZWNrU3VibWl0KCkiPg0KICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RvcG9zdCcgdmFsdWU9J3NhdmUnPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiBjb2xzcGFuPSIzIj7lub/lkYrku6PnoIHnmoTosIPnlKjmlrnms5XvvJp7ZGVkZTpteWFkIG5hbWU9J+W5v+WRiuS9jeagh+ivhicvfSA8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGFsaWduPSJjZW50ZXIiPuW5v+WRiuS9jeagh+ivhu+8mjwvdGQ+DQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PGlucHV0IG5hbWU9InRhZ25hbWUiIHR5cGU9InRleHQiIGlkPSJ0YWduYW1lIiBjbGFzcz0naXB0eHQnIC8+DQogICAgICAgICAgICAgIO+8iOS9v+eUqOiLseaWh+aIluaVsOWtl+ihqOekuueahOeugOa0geagh+ivhu+8iTwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjE1JSIgaGVpZ2h0PSIyNSIgYWxpZ249ImNlbnRlciI+5bm/5ZGK5oqV5pS+6IyD5Zu077yaPC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48P3BocA0KCQkJJHRsID0gbmV3IFR5cGVMaW5rKDApOw0KCQkJJHR5cGVPcHRpb25zID0gJHRsLT5HZXRPcHRpb25BcnJheSgwLDAsMCk7DQoJCQllY2hvICI8c2VsZWN0IG5hbWU9J3R5cGVpZCcgc3R5bGU9J3dpZHRoOjMwMHB4Jz5cclxuIjsNCgkJCWVjaG8gIjxvcHRpb24gdmFsdWU9JzAnIHNlbGVjdGVkPuaKleaUvuWcqOayoeacieWQjOWQjeagh+ivhueahOaJgOacieagj+ebrjwvb3B0aW9uPlxyXG4iOw0KCQkJZWNobyAkdHlwZU9wdGlvbnM7DQoJCQllY2hvICI8L3NlbGVjdD4iOw0KCQkJPz4NCiAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICDvvIjlpoLmnpzlnKjmiYDpgInmoI/nm67mib7kuI3liLDmjIflrprmoIfor4bnmoTlub/lkYrlhoXlrrnvvIzns7vnu5/kvJroh6rliqjmkJzntKLniLbmoI/nm67vvIk8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGFsaWduPSJjZW50ZXIiPuW5v+WRiuS9jeWQjeensO+8mjwvdGQ+DQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PGlucHV0IG5hbWU9ImFkbmFtZSIgdHlwZT0idGV4dCIgaWQ9ImFkbmFtZSIgc2l6ZT0iMzAiIGNsYXNzPSdpcHR4dCcgLz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGFsaWduPSJjZW50ZXIiPuaXtumXtOmZkOWItu+8mjwvdGQ+DQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PGlucHV0IG5hbWU9InRpbWVzZXQiIHR5cGU9InJhZGlvIiBjbGFzcz0ibnAiIHZhbHVlPSIwIiBjaGVja2VkPScxJyBpZD0ibm90aW1lbGltaXQiIC8+DQogICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5vdGltZWxpbWl0Ij7msLjkuI3ov4fmnJ88L2xhYmVsPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InRpbWVzZXQiIGNsYXNzPSJucCIgdmFsdWU9IjEiIGlkPSJ0aW1lbGltaXQiLz4NCiAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idGltZWxpbWl0Ij7lnKjorr7lhoXml7bpl7TlhoXmnInmlYg8L2xhYmVsPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgYWxpZ249ImNlbnRlciI+5byA5aeL5pe26Ze077yaPC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgbmFtZT0ic3RhcnR0aW1lIiB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnR0aW1lIiB2YWx1ZT0iPD9waHAgZWNobyAkc3RhcnREYXk/PiIgY2xhc3M9J2lwdHh0Jy8+DQogICAgICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJCQkJCQlDYWxlbmRhci5zZXR1cCh7DQoJCQkJCQkJaW5wdXRGaWVsZCAgICAgOiAgICAic3RhcnR0aW1lIiwNCgkJCQkJCQlpZkZvcm1hdCAgICAgICA6ICAgICIlWS0lbS0lZCAlSDolTSIsDQoJCQkJCQkJc2hvd3NUaW1lICAgICAgOiAgICB0cnVlLA0KCQkJCQkJCXRpbWVGb3JtYXQgICAgIDogICAgIjI0Ig0KCQkJCQkJfSk7DQoJCQkJIDwvc2NyaXB0PjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgYWxpZ249ImNlbnRlciI+57uT5p2f5pe26Ze077yaPC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgbmFtZT0iZW5kdGltZSIgdHlwZT0idGV4dCIgaWQ9ImVuZHRpbWUiIHZhbHVlPSI8P3BocCBlY2hvICRlbmREYXk/PiIgY2xhc3M9J2lwdHh0Jy8+DQogICAgICAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJCQkJCQlDYWxlbmRhci5zZXR1cCh7DQoJCQkJCQkJaW5wdXRGaWVsZCAgICAgOiAgICAiZW5kdGltZSIsDQoJCQkJCQkJaWZGb3JtYXQgICAgICAgOiAgICAiJVktJW0tJWQgJUg6JU0iLA0KCQkJCQkJCXNob3dzVGltZSAgICAgIDogICAgdHJ1ZSwNCgkJCQkJCQl0aW1lRm9ybWF0ICAgICA6ICAgICIyNCINCgkJCQkJCX0pOw0KCQkJCSA8L3NjcmlwdD48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGFsaWduPSJjZW50ZXIiPuWxleeOsOaWueW8j++8mjwvdGQ+DQogICAgICAgICAgICA8dGQgd2lkdGg9Ijc2JSI+PHNlbGVjdCBpZD0iYWRzdHlsZSIgbmFtZT0ibm9ybWJvZHlbc3R5bGVdIiBvbkNoYW5nZT0ic2hvd2NvZGUodGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjb2RlIiA+5Luj56CBPC9vcHRpb24+DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idHh0IiA+5paH5a2XPC9vcHRpb24+DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW1nIiA+5Zu+54mHPC9vcHRpb24+DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZmxhc2giID5GbGFzaDwvb3B0aW9uPg0KICAgICAgICAgICAgICA8L3NlbGVjdD48L3RkPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSI5JSI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBhbGlnbj0iY2VudGVyIj7lub/lkYrlhoXlrrnvvJo8L3RkPg0KICAgICAgICAgICAgPHRkPjxkaXYgaWQ9J2FkdmVydCc+DQogICAgICAgICAgICAgICA8ZGl2IGlkPSJjb2RlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+DQogICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGNsYXNzPSJpX3RhYmxlIj4NCiAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iYiI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzAlIj48Yj7lub/lkYrku6PnoIE6PC9iPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICDor7floavlhpnlub/lkYrku6PnoIHvvIzmlK/mjIFodG1s5Luj56CBPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBuYW1lPSJub3JtYm9keVtodG1sY29kZV0iIHJvd3M9IjUiIGNvbHM9IjUwIj48L3RleHRhcmVhPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8ZGl2IGlkPSJ0eHQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4NCiAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MSBjbGFzcz1pX3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiIHdpZHRoPSIzMCUiPjxiPuaWh+Wtl+WGheWuuSo8L2I+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNzAiIG5hbWU9Im5vcm1ib2R5W3RpdGxlXSIgdmFsdWU9IiIgY2xhc3M9J2lwdHh0Jy8+PC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiI+PGI+5paH5a2X6ZO+5o6lKjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3MCIgbmFtZT0ibm9ybWJvZHlbbGlua10iIHZhbHVlPSIiIGNsYXNzPSdpcHR4dCcvPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxiPuaWh+Wtl+minOiJsjwvYj4o5L6L5aaCOnJlZCwjRUY4Njg0KTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiI+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjEwIiBuYW1lPSJub3JtYm9keVtjb2xvcl0iIHZhbHVlPSIiIGNsYXNzPSdpcHR4dCcvPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxiPuaWh+Wtl+Wkp+WwjzwvYj4o5L6L5aaCOjRweCwxMnB4KTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiI+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjEwIiBuYW1lPSJub3JtYm9keVtzaXplXSIgdmFsdWU9IiIgY2xhc3M9J2lwdHh0Jy8+PC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgIDxkaXYgaWQ9ImltZyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0xIGNsYXNzPWlfdGFibGU+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiIgd2lkdGg9IjMwJSI+PGI+5Zu+54mH5Zyw5Z2AKjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0ibm9ybWJvZHlbdXJsXSIgdmFsdWU9IiIgY2xhc3M9J2lwdHh0Jy8+PC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiI+PGI+5Zu+54mH6ZO+5o6lKjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0ibm9ybWJvZHlbbGlua10iIHZhbHVlPSIiIGNsYXNzPSdpcHR4dCcvPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxiPuWbvueJh+WuveW6pjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxMCIgbmFtZT0ibm9ybWJvZHlbd2lkdGhdIiB2YWx1ZT0iIiBjbGFzcz0naXB0eHQnLz48L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48Yj7lm77niYfpq5jluqY8L2I+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTAiIG5hbWU9Im5vcm1ib2R5W2hlaWdodF0iIHZhbHVlPSIiIGNsYXNzPSdpcHR4dCcvPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxiPuWbvueJh+aPj+i/sDwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0ibm9ybWJvZHlbZGVzY3JpcF0iIHZhbHVlPSIiIGNsYXNzPSdpcHR4dCcvPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICA8ZGl2IGlkPSJmbGFzaCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0xIGNsYXNzPWlfdGFibGU+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYiIgd2lkdGg9IjMwJSI+PGI+Zmxhc2jpk77mjqU8L2I+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNDAiIG5hbWU9Im5vcm1ib2R5W2xpbmtdIiB2YWx1ZT0iIiBjbGFzcz0naXB0eHQnLz48L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48Yj5mbGFzaOWuveW6pjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0ibm9ybWJvZHlbd2lkdGhdIiB2YWx1ZT0iIiBjbGFzcz0naXB0eHQnLz48L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJiIj48Yj5mbGFzaOmrmOW6pjwvYj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0ibm9ybWJvZHlbaGVpZ2h0XSIgdmFsdWU9IiIgY2xhc3M9J2lwdHh0Jy8+PC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8L2Rpdj4NCjwvdGQ+DQogICAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjgwIiBhbGlnbj0iY2VudGVyIj7ov4fmnJ/mmL7npLrlhoXlrrnvvJo8L3RkPg0KICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBuYW1lPSJleHBib2R5IiByb3dzPSIxMCIgaWQ9ImV4cGJvZHkiIHN0eWxlPSJ3aWR0aDo2MCU7aGVpZ2h0OjEwMCI+PC90ZXh0YXJlYT48L3RkPg0KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MyIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgbmFtZT0iaW1hZ2VGaWVsZCIgdHlwZT0iaW1hZ2UiIHNyYz0iaW1hZ2VzL2J1dHRvbl9vay5naWYiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMiIgYm9yZGVyPSIwIiBjbGFzcz0ibnAiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L2Zvcm0+DQogICAgICA8L3RhYmxlPjwvdGQ+DQogIDwvdHI+DQo8L3RhYmxlPg0KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+DQpmdW5jdGlvbiBzaG93Y29kZShpZE5hbWUpew0KCWpRdWVyeSgiI2FkdmVydD5kaXYiKS5oaWRlKCk7DQoJalF1ZXJ5KCIjYWR2ZXJ0PiMiK2lkTmFtZSkuc2hvdygpDQp9DQpzaG93Y29kZSgnY29kZScpOw0KPC9zY3JpcHQ+DQo8L2JvZHk+DQo8L2h0bWw+ - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5pu05pS55bm/5ZGKPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jYWxlbmRhci9jYWxlbmRhci5qcyI+PC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSJpbWFnZXMvYWxsYmcuZ2lmIiBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjRDZENkQ2Ij4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+Jm5ic3A7PGI+PGEgaHJlZj0iYWRfbWFpbi5waHAiPjx1PuW5v+WRiueuoeeQhjwvdT48L2E+PC9iPiAmZ3Q7Jmd0OyDmm7TmlLnlub/lkYogPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjIwMCIgYmdjb2xvcj0iI0ZGRkZGRiIgdmFsaWduPSJ0b3AiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNCIgY2VsbHBhZGRpbmc9IjQiPg0KICAgICAgICA8Zm9ybSBhY3Rpb249ImFkX2VkaXQucGhwIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImZvcm0xIj4NCiAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhaWQnIHZhbHVlPSc8P3BocCBlY2hvICRhaWQ/Pic+DQogICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZG9wb3N0JyB2YWx1ZT0nc2F2ZWVkaXQnPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiBhbGlnbj0iY2VudGVyIj7lub/lkYrkvY3moIfor4bvvJo8L3RkPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjw/cGhwIGVjaG8gJHJvd1sndGFnbmFtZSddOyA/PjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgaGVpZ2h0PSIyNSIgYWxpZ249ImNlbnRlciI+5bm/5ZGK5YiG57G777yaPC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48c2VsZWN0IG5hbWU9J2Nsc2lkJyBzdHlsZT0nd2lkdGg6MTUwJyBpZD0iY2xzaWQiPg0KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9JzAnPum7mOiupOWIhuexuy4uLjwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgIAk8P3BocCBlY2hvICRvcHRpb247Pz4NCiAgICAgICAgICANCiAgICAgICAgICAgICAgPC9zZWxlY3Q+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUlIiBoZWlnaHQ9IjI1IiBhbGlnbj0iY2VudGVyIj7lub/lkYrmipXmlL7ojIPlm7TvvJo8L3RkPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjw/cGhwDQogICAgICAgICAgIAkkdGwgPSBuZXcgVHlwZUxpbmsoMCk7DQogICAgICAgICAgIAkkdHlwZU9wdGlvbnMgPSAkdGwtPkdldE9wdGlvbkFycmF5KCRyb3dbJ3R5cGVpZCddLDAsMCk7DQogICAgICAgICAgICBlY2hvICI8c2VsZWN0IG5hbWU9J3R5cGVpZCcgc3R5bGU9J3dpZHRoOjMwMHB4Jz5cclxuIjsNCiAgICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9JzAnIHNlbGVjdGVkPuaKleaUvuWcqOayoeacieWQjOWQjeagh+ivhueahOaJgOacieagj+ebrjwvb3B0aW9uPlxyXG4iOw0KICAgICAgICAgICAgZWNobyAkdHlwZU9wdGlvbnM7DQogICAgICAgICAgICBlY2hvICI8L3NlbGVjdD4iOw0KCQkJPz4NCiAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICDvvIjlpoLmnpzlnKjmiYDpgInmoI/nm67mib7kuI3liLDmjIflrprmoIfor4bnmoTlub/lkYrlhoXlrrnvvIzns7vnu5/kvJroh6rliqjmkJzntKLniLbmoI/nm67vvIkgPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiBhbGlnbj0iY2VudGVyIj7lub/lkYrkvY3lkI3np7DvvJo8L3RkPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxpbnB1dCBuYW1lPSJhZG5hbWUiIHR5cGU9InRleHQiIGlkPSJhZG5hbWUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAkcm93WydhZG5hbWUnXT8+IiBjbGFzcz0naXB0eHQnIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjI1IiBhbGlnbj0iY2VudGVyIj7ml7bpl7TpmZDliLbvvJo8L3RkPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjxpbnB1dCBjbGFzcz0ibnAiIG5hbWU9InRpbWVzZXQiIHR5cGU9InJhZGlvIiB2YWx1ZT0iMCI8P3BocCBpZigkcm93Wyd0aW1lc2V0J109PTApIGVjaG8gIiBjaGVja2VkPScxJyAiOyA/PiAvPg0KICAgICAgICAgICAgICDmsLjkuI3ov4fmnJ8NCiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJucCIgdHlwZT0icmFkaW8iIG5hbWU9InRpbWVzZXQiIHZhbHVlPSIxIiA8P3BocCBpZigkcm93Wyd0aW1lc2V0J109PTEpIGVjaG8gIiBjaGVja2VkPScxJyAiOyA/PiAvPg0KICAgICAgICAgICAgICDlnKjorr7lhoXml7bpl7TlhoXmnInmlYg8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iMjUiIGFsaWduPSJjZW50ZXIiPuaKleaUvuaXtumXtO+8mjwvdGQ+DQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+5LuODQogICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJzdGFydHRpbWUiIHR5cGU9InRleHQiIGlkPSJzdGFydHRpbWUiIHZhbHVlPSI8P3BocCBlY2hvIEdldERhdGVUaW1lTWsoJHJvd1snc3RhcnR0aW1lJ10pPz4iIGNsYXNzPSdpcHR4dCcgLz4NCiAgICAgICAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCgkJCQkJCUNhbGVuZGFyLnNldHVwKHsNCgkJCQkJCQlpbnB1dEZpZWxkICAgICA6ICAgICJzdGFydHRpbWUiLA0KCQkJCQkJCWlmRm9ybWF0ICAgICAgIDogICAgIiVZLSVtLSVkICVIOiVNIiwNCgkJCQkJCQlzaG93c1RpbWUgICAgICA6ICAgIHRydWUsDQoJCQkJCQkJdGltZUZvcm1hdCAgICAgOiAgICAiMjQiDQoJCQkJCQl9KTsNCgkJCQkgPC9zY3JpcHQ+IOWIsCANCgkJCSAgPGlucHV0IG5hbWU9ImVuZHRpbWUiIHR5cGU9InRleHQiIGlkPSJlbmR0aW1lIiB2YWx1ZT0iPD9waHAgZWNobyBHZXREYXRlVGltZU1rKCRyb3dbJ2VuZHRpbWUnXSk/PiIgY2xhc3M9J2lwdHh0JyAvPjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJCQkJCQlDYWxlbmRhci5zZXR1cCh7DQoJCQkJCQkJaW5wdXRGaWVsZCAgICAgOiAgICAiZW5kdGltZSIsDQoJCQkJCQkJaWZGb3JtYXQgICAgICAgOiAgICAiJVktJW0tJWQgJUg6JU0iLA0KCQkJCQkJCXNob3dzVGltZSAgICAgIDogICAgdHJ1ZSwNCgkJCQkJCQl0aW1lRm9ybWF0ICAgICA6ICAgICIyNCINCgkJCQkJCX0pOw0KCQkJCSA8L3NjcmlwdD48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGFsaWduPSJjZW50ZXIiPuato+W4uOaYvuekuuWGheWuue+8mjwvdGQ+DQogICAgICAgICAgICA8dGQgd2lkdGg9Ijc2JSI+PHRleHRhcmVhIG5hbWU9Im5vcm1ib2R5IiByb3dzPSIxMCIgaWQ9Im5vcm1ib2R5IiBzdHlsZT0id2lkdGg6ODAlO2hlaWdodDoxMDAiPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycyhzdHJpcHNsYXNoZXMoJHJvd1snbm9ybWJvZHknXSkpPz48L3RleHRhcmVhPjwvdGQ+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjklIj4mbmJzcDs8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGhlaWdodD0iODAiIGFsaWduPSJjZW50ZXIiPui/h+acn+aYvuekuuWGheWuue+8mjwvdGQ+DQogICAgICAgICAgICA8dGQ+PHRleHRhcmVhIG5hbWU9ImV4cGJvZHkiIHJvd3M9IjEwIiBpZD0iZXhwYm9keSIgc3R5bGU9IndpZHRoOjgwJTtoZWlnaHQ6MTAwIj48P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHJvd1snZXhwYm9keSddKT8+PC90ZXh0YXJlYT48L3RkPg0KICAgICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgaGVpZ2h0PSI1MyIgYWxpZ249ImNlbnRlciI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48aW5wdXQgbmFtZT0iaW1hZ2VGaWVsZCIgdHlwZT0iaW1hZ2UiIHNyYz0iaW1hZ2VzL2J1dHRvbl9vay5naWYiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyMiIgYm9yZGVyPSIwIj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvZm9ybT4NCiAgICAgIDwvdGFibGU+PC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+ - - -e2RlZGU6Y29uZmlnLnBhZ2VzaXplIHZhbHVlPScyMCcgL30NCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9PD9waHAgZWNobyAkY2ZnX3NvZnRfbGFuZzsgPz4iPg0KPHRpdGxlPuW5v+WRiueuoeeQhjwvdGl0bGU+DQo8bGluayBocmVmPSJjc3MvYmFzZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPg0KPC9oZWFkPg0KPGJvZHkgYmFja2dyb3VuZD0iaW1hZ2VzL2FsbGJnLmdpZiIgbGVmdG1hcmdpbj0iOCIgdG9wbWFyZ2luPSc4Jz4NCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQogIDx0cj4NCiAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgY29sc3Bhbj0iNyIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+DQogICAgIDxiPuW5v+WRiueuoeeQhjwvYj4mbmJzcDtbPGEgaHJlZj0iYWRfYWRkLnBocCI+PHU+5aKe5Yqg5LiA5Liq5paw5bm/5ZGKPC91PjwvYT5dDQoJPC90ZD4NCjwvdHI+DQogIDx0ciBhbGlnbj0iY2VudGVyIiAgYmdjb2xvcj0iI0ZCRkNFMiIiIGhlaWdodD0iMjQiPiANCiAgICAgIDx0ZCB3aWR0aD0iOCUiPue8luWPtzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjIwJSI+5bm/5ZGK5ZCN56ewPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTIlIj7mipXmlL7ojIPlm7Q8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxMSUiPuaYr+WQpumZkOaXtjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjExJSI+57uT5p2f5pe26Ze0PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjAlIj7lub/lkYrku6PnoIE8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOCUiPueuoeeQhjwvdGQ+DQogICA8L3RyPg0KICAge2RlZGU6ZGF0YWxpc3R9DQogICAgPHRyIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGRkZGRkYiIGhlaWdodD0iMjQiIG9uTW91c2VNb3ZlPSJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7IiBvbk1vdXNlT3V0PSJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZGRkZGRic7Ij4gDQogICAgICAgIDx0ZD57ZGVkZTpmaWVsZC5haWQgL308L3RkPg0KICAgICAgICA8dGQ+e2RlZGU6ZmllbGQuYWRuYW1lIC99PC90ZD4NCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLnR5cGVuYW1lIGZ1bmN0aW9uPSdUZXN0VHlwZShAbWUpJy99PC90ZD4NCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLnRpbWVzZXQgZnVuY3Rpb249J1RpbWVTZXRWYWx1ZShAbWUpJy99PC90ZD4NCiAgICAgICAgPHRkPntkZWRlOmZpZWxkLmVuZHRpbWUgZnVuY3Rpb249J0dldERhdGVNayhAbWUpJy99PC90ZD4NCiAgICAgICAgPHRkPjw/cGhwIGVjaG8gJ3snOyA/PmRlZGU6bXlhZCBuYW1lPSd7ZGVkZTpmaWVsZC50YWduYW1lIC99Jy88P3BocCBlY2hvICd9JzsgPz48L3RkPg0KICAgICAgICA8dGQ+DQogICAgICAgICA8YSBocmVmPSdhZF9lZGl0LnBocD9haWQ9e2RlZGU6ZmllbGQuYWlkIC99JmRvcG9zdD1nZXRqcyc+W0pTXTwvYT4NCiAgICAgICAgIDxhIGhyZWY9J2FkX2VkaXQucGhwP2FpZD17ZGVkZTpmaWVsZC5haWQgL30mZG9wb3N0PWVkaXQnPlvmm7TmlLldPC9hPg0KCQkgICAgIDxhIGhyZWY9J2FkX2VkaXQucGhwP2FpZD17ZGVkZTpmaWVsZC5haWQgL30mZG9wb3N0PWRlbGV0ZSc+W+WIoOmZpF08L2E+DQoJCSAgICA8L3RkPg0KICAgICA8L3RyPg0KCQl7L2RlZGU6ZGF0YWxpc3R9DQogICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGQ0VGIiBoZWlnaHQ9IjI0Ij4gDQogICAgICA8dGQgY29sc3Bhbj0iNyI+DQogICAgICAJe2RlZGU6cGFnZWxpc3QgbGlzdHNpemU9NS99DQogICAgICA8L3RkPg0KICAgICA8L3RyPg0KICAgPC90YWJsZT4NCiAgIDwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4= - - -PD9waHANCi8qKg0KICoNCiAqIOW5v+WRikpT6LCD55So5pa55byPDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogYWRfanMucGhwIDEgMjA6MzAgMjAxMOW5tDfmnIg45pelWiB0aWFueWEgJA0KICogQHBhY2thZ2UgICAgICAgIERlZGVDTVMuU2l0ZQ0KICogQGNvcHlyaWdodCAgICAgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTAsIERlc0RldiwgSW5jLg0KICogQGxpY2Vuc2UgICAgICAgIGh0dHA6Ly9oZWxwLmRlZGVjbXMuY29tL3VzZXJzZ3VpZGUvbGljZW5zZS5odG1sDQogKiBAbGluayAgICAgICAgICAgaHR0cDovL3d3dy5kZWRlY21zLmNvbQ0KICovDQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuIi8uLi9pbmNsdWRlL2NvbW1vbi5pbmMucGhwIik7DQoNCmlmKGlzc2V0KCRhcmNJRCkpICRhaWQgPSAkYXJjSUQ7DQokYXJjSUQgPSAkYWlkID0gKGlzc2V0KCRhaWQpICYmIGlzX251bWVyaWMoJGFpZCkpID8gJGFpZCA6IDA7DQppZigkYWlkPT0wKSBkaWUoJyBSZXF1ZXN0IEVycm9yISAnKTsNCg0KJGNhY2hlRmlsZSA9IERFREVEQVRBLicvY2FjaGUvbXlhZC0nLiRhaWQuJy5odG0nOw0KaWYoIGlzc2V0KCRub2NhY2hlKSB8fCAhZmlsZV9leGlzdHMoJGNhY2hlRmlsZSkgfHwgdGltZSgpIC0gZmlsZW10aW1lKCRjYWNoZUZpbGUpID4gJGNmZ19wdWNjYWNoZV90aW1lICkNCnsNCiAgICAkcm93ID0gJGRzcWwtPkdldE9uZSgiU0VMRUNUICogRlJPTSBgI0BfX215YWRgIFdIRVJFIGFpZD0nJGFpZCcgIik7DQogICAgJGFkYm9keSA9ICcnOw0KICAgIGlmKCRyb3dbJ3RpbWVzZXQnXT09MCkNCiAgICB7DQogICAgICAgICRhZGJvZHkgPSAkcm93Wydub3JtYm9keSddOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICAkbnRpbWUgPSB0aW1lKCk7DQogICAgICAgIGlmKCRudGltZSA+ICRyb3dbJ2VuZHRpbWUnXSB8fCAkbnRpbWUgPCAkcm93WydzdGFydHRpbWUnXSkgew0KICAgICAgICAgICAgJGFkYm9keSA9ICRyb3dbJ2V4cGJvZHknXTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRhZGJvZHkgPSAkcm93Wydub3JtYm9keSddOw0KICAgICAgICB9DQogICAgfQ0KICAgICRhZGJvZHkgPSBzdHJfcmVwbGFjZSgnIicsICdcIicsJGFkYm9keSk7DQogICAgJGFkYm9keSA9IHN0cl9yZXBsYWNlKCJcciIsICJcXHIiLCRhZGJvZHkpOw0KICAgICRhZGJvZHkgPSBzdHJfcmVwbGFjZSgiXG4iLCAiXFxuIiwkYWRib2R5KTsNCiAgICAkYWRib2R5ID0gIjwhLS1cclxuZG9jdW1lbnQud3JpdGUoXCJ7JGFkYm9keX1cIik7XHJcbi0tPlxyXG4iOw0KICAgICRmcCA9IGZvcGVuKCRjYWNoZUZpbGUsICd3Jyk7DQogICAgZndyaXRlKCRmcCwgJGFkYm9keSk7DQogICAgZmNsb3NlKCRmcCk7DQp9DQppbmNsdWRlICRjYWNoZUZpbGU7 - - -PD9waHAgICBpZighZGVmaW5lZCgnREVERUlOQycpKSBleGl0KCdSZXF1ZXN0IEVycm9yIScpOw0KLyoqDQogKiC547jmtffTww0KICoNCiAqIEB2ZXJzaW9uICAgICAgICAkSWQ6IG15YWQubGliLnBocCAxIDk6MjkgMjAxMMTqN9TCNsjVWiB0aWFueWEgJA0KICogQHBhY2thZ2UgICAgICAgIERlZGVDTVMuVGFnbGliDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCiANCi8qPj5kZWRlPj4NCjxuYW1lPrnjuOax6sepPC9uYW1lPg0KPHR5cGU+yKu+1rHqvMc8L3R5cGU+DQo8Zm9yPlY1NSxWNTYsVjU3PC9mb3I+DQo8ZGVzY3JpcHRpb24+u/HIobnjuOa0+sLrPC9kZXNjcmlwdGlvbj4NCjxkZW1vPg0Ke2RlZGU6bXlhZCBuYW1lPScnL30NCjwvZGVtbz4NCjxhdHRyaWJ1dGVzPg0KICAgIDxpdGVybT50eXBlaWQ6zba3xbe2zqcsMM6qyKvVvjwvaXRlcm0+IA0KICAgIDxpdGVybT5uYW1lOrnjuOax6sq2PC9pdGVybT4NCjwvYXR0cmlidXRlcz4gDQo+PmRlZGU+PiovDQogDQpyZXF1aXJlX29uY2UoREVERUlOQy4nL3RhZ2xpYi9teXRhZy5saWIucGhwJyk7DQoNCmZ1bmN0aW9uIGxpYl9teWFkKCYkY3RhZywgJiRyZWZPYmopDQp7DQogICAgJGF0dGxpc3QgPSAidHlwZWlkfDAsbmFtZXwiOw0KICAgIEZpbGxBdHRzRGVmYXVsdCgkY3RhZy0+Q0F0dHJpYnV0ZS0+SXRlbXMsJGF0dGxpc3QpOw0KICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOw0KDQogICAgJGJvZHkgPSBsaWJfR2V0TXlUYWdUKCRyZWZPYmosICR0eXBlaWQsICRuYW1lLCAnI0BfX215YWQnKTsNCiAgICANCiAgICByZXR1cm4gJGJvZHk7DQp9 - - - diff --git a/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd-readme.php b/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd-readme.php deleted file mode 100755 index 35e64b74..00000000 --- a/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -


-

版权所有 ©2003-2011,DedeCms.com 保留所有权利。


-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com


-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:


-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。


-

二、协议许可的权利

- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。

- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。

- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。

-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。


-

三、协议规定的约束和限制

- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。

- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。

- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。

- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。

-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。


-

四、有限担保和免责声明

- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。

- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。

- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。

-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。


-

协议发布时间: 2008年8月20日 By DedeCms.com


-

\ No newline at end of file diff --git a/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd.xml b/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd.xml deleted file mode 100755 index c2d52cc6..00000000 --- a/src/data/module/81323e93cd52ecce9f175b6aa46f5cfd.xml +++ /dev/null @@ -1,66 +0,0 @@ - - -name=百度站内搜索模块 -team=织梦官方 -time=2015-05-20 -email=tianya@desdev.cn -url=http://www.dedecms.com -hash=81323e93cd52ecce9f175b6aa46f5cfd -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=templets - - - -PG06dG9wIG5hbWU9J+eZvuW6puermeWGheaQnOe0oicgYz0nNiwnIGRpc3BsYXk9J2Jsb2NrJyByYW5rPScnPg0KICA8bTppdGVtIG5hbWU9J+ermeWGheaQnOe0oicgbGluaz0nYmFpZHVzaXRlbWFwX21haW4ucGhwJyByYW5rPScnIHRhcmdldD0nbWFpbicgLz4NCiAgPG06aXRlbSBuYW1lPSfmkJzntKLmoYbnrqHnkIYnIGxpbms9J2JhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9c2VhcmNoYm94MicgcmFuaz0nJyB0YXJnZXQ9J21haW4nIC8+DQogIDxtOml0ZW0gbmFtZT0n57uT5p6c6aG1566h55CGJyBsaW5rPSdiYWlkdXNpdGVtYXBfbWFpbi5waHA/ZG9wb3N0PXNlYXJjaHBhZ2UyJyByYW5rPScnIHRhcmdldD0nbWFpbicgLz4NCiAgPG06aXRlbSBuYW1lPSfojrflvpfmlLblhaUnIGxpbms9J2JhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9aW5jb21lMicgcmFuaz0nJyB0YXJnZXQ9J21haW4nIC8+ICANCiAgPG06aXRlbSBuYW1lPSfmlbDmja7miqXooagnIGxpbms9J2JhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9cmVwb3J0MicgcmFuaz0nJyB0YXJnZXQ9J21haW4nIC8+DQo8L206dG9wPg== - - -PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxkaXYgc3R5bGU9J3BhZGRpbmctbGVmdDoyMHB4O2xpbmUtaGVpZ2h0OjE1MCUnPjxiciAvPg0KPHA+54mI5p2D5omA5pyJIMKpMjAwMy0yMDEx77yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD48YnIgLz4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD48YnIgLz4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD48YnIgLz4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+PGJyIC8+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz48YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz48YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz48YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPjxiciAvPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz48YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz48YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+PGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+PGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD48YnIgLz4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPjxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPjxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+PGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPjxiciAvPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPjxiciAvPg0KPHA+IDwvcD48L3A+ - - - - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9saXN0YDsNCkRST1AgVEFCTEUgSUYgRVhJU1RTIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZ2A7 - - - - - - - - -./baidusitemap_main.php -../include/baidusitemap.func.php -../include/baiduxml.class.php -../include/taglib/baidusitemap.lib.php -../plus/baidusitemap.php -../plus/search.php - - - - - -PD9waHANCnNldF90aW1lX2xpbWl0KDApOw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvY29uZmlnLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9veHdpbmRvdy5jbGFzcy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvY2hhbm5lbHVuaXQuY2xhc3MucGhwIik7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2JhaWR1c2l0ZW1hcC5mdW5jLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9iYWlkdXhtbC5jbGFzcy5waHAiKTsNCg0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCmlmKGVtcHR5KCRhY3Rpb24pKSAkYWN0aW9uID0gJyc7DQppZihlbXB0eSgkc2lnbikpICRzaWduID0gJyc7DQppZihlbXB0eSgkdHlwZSkpICR0eXBlID0gMTsNCg0KY2hlY2tfaW5zdGFsbGVkKCk7DQoNCiR2ZXJzaW9uID0gYmFpZHVfZ2V0X3NldHRpbmcoJ3ZlcnNpb24nKTsNCmlmIChlbXB0eSgkdmVyc2lvbikpICR2ZXJzaW9uID0gJzAuMC4yJzsNCg0KaWYgKHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbiwgUExVU19CQUlEVVNJVEVNQVBfVkVSLCAnPCcpKSB7DQogICAgJG15c3FsX3ZlcnNpb24gPSAkZHNxbC0+R2V0VmVyc2lvbihUUlVFKTsNCiAgICANCiAgICBmb3JlYWNoICgkdXBkYXRlX3NxbHMgYXMgJHZlciA9PiAkc3Fscykgew0KICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKCR2ZXIsICR2ZXJzaW9uLCc8JykpIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRzcWxzIGFzICRzcWwpIHsNCiAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIiNFTkdJTkU9TXlJU0FNI2kiLCAnVFlQRT1NeUlTQU0nLCAkc3FsKTsNCiAgICAgICAgICAgICRzcWw0MXRtcCA9ICdFTkdJTkU9TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD0nLiRjZmdfZGJfbGFuZ3VhZ2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc3FsID0gcHJlZ19yZXBsYWNlKCIjVFlQRT1NeUlTQU0jaSIsICRzcWw0MXRtcCwgJHNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkc3FsKTsNCiAgICAgICAgfQ0KICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygndmVyc2lvbicsICR2ZXIpOw0KICAgICAgICAkdmVyc2lvbj1iYWlkdV9nZXRfc2V0dGluZygndmVyc2lvbicpOw0KICAgIH0NCn0NCg0KaWYoJGRvcG9zdD09J2F1dGgnKXsNCiAgICBpZiAoIGVtcHR5KCRzaWduKSApDQogICAgew0KCSAgICAkc2l0ZXVybD0kY2ZnX2Jhc2Vob3N0Ow0KICAgICAgICAkc2lndXJsPSJodHRwOi8vYmFpZHUuYXBpLmRlZGVjbXMuY29tL2luZGV4LnBocD9zaXRldXJsPSIudXJsZW5jb2RlKCRzaXRldXJsKTsNCiAgICAgICAgJHJlc3VsdCA9IGJhaWR1X2h0dHBfc2VuZCgkc2lndXJsKTsNCiAgICAJLy92YXJfZHVtcCgkcmVzdWx0KTtleGl0KCk7DQogICAgICAgICRkYXRhID0ganNvbl9kZWNvZGUoJHJlc3VsdCwgdHJ1ZSk7IA0KICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnc2l0ZXVybCcsICRkYXRhWydzaXRldXJsJ10pOw0KICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnY2hlY2tzaWduJywgJGRhdGFbJ2NoZWNrc2lnbiddKTsNCiAgICAgICAgaWYoJGRhdGFbJ3N0YXR1cyddPT0wKXsNCiAgICAgICAgICAgICRjaGVja3VybD0kc2l0ZXVybC4ieyRjZmdfcGx1c19kaXJ9L2JhaWR1c2l0ZW1hcC5waHA/ZG9wb3N0PWNoZWNrdXJsJmNoZWNrc2lnbj0iLiRkYXRhWydjaGVja3NpZ24nXTsNCg0KICAgICAgICAgICAgJGF1dGh1cmw9Imh0dHA6Ly96ei5iYWlkdS5jb20vYXBpL29wZW5zaXRlbWFwL2F1dGg/c2l0ZXVybD0iLiRkYXRhIFsnc2l0ZXVybCddLiImY2hlY2t1cmw9Ii51cmxlbmNvZGUoJGNoZWNrdXJsKS4iJmNoZWNrc2lnbj0iLiRkYXRhWydjaGVja3NpZ24nXTsNCiAgICAgICAgICAgICRhdXRoZGF0YSA9IGJhaWR1X2h0dHBfc2VuZCgkYXV0aHVybCk7DQogICAgICAgICAgICAkb3V0cHV0ID0ganNvbl9kZWNvZGUoJGF1dGhkYXRhLCB0cnVlKTsNCiAgICAgICAgICAgIGlmKCRvdXRwdXRbJ3N0YXR1cyddPT0wKXsNCiAgICAgICAgICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygncGluZ3Rva2VuJywgJG91dHB1dFsndG9rZW4nXSk7DQogICAgICAgICAgICAgICAgJHNpZ24gPSBtZDUoJGRhdGFbJ3NpdGV1cmwnXS4kb3V0cHV0Wyd0b2tlbiddKTsNCiAgICAgICAgICAgICAgICBTaG93TXNnKCfmiJDlip/lkIznmb7luqbnq5nngrlBUEnlrozmiJDpgJrkv6HvvIzkuIvpnaLov5vooYzntKLlvJXmj5DkuqTigKbigKYnLCc/ZG9wb3N0PWF1dGgmc2lnbj0nLiRzaWduLicmYWN0aW9uPScuJGFjdGlvbik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFNob3dNc2coIuaPkOS6pOeZvuW6pue0ouW8leWksei0pe+8jOaXoOazleagoemqjOacrOWcsOWvhumSpe+8gei/nOeoi+aOpeWPo+acjeWKoeWZqOaXoOazleato+W4uOiOt+WPluWIsOaCqOeahOermeeCueaWh+S7tu+8gSA8YSBocmVmPSdodHRwOi8vd3d3LmRlZGVjbXMuY29tL2FkZG9ucy9iYWlkdXNpdGVtYXAvI2hlbHAnIHRhcmdldD0nX2JsYW5rJz7ngrnlh7vojrflj5bmm7TlpJrluK7liqk8L2E+IiwiamF2YXNjcmlwdDo7Iik7DQogICAgICAgICAgICAgICAgZXhpdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgICAgICAkdHlwZT0xOw0KICAgICAgICAkb2xkX2JkcHdkID0gYmFpZHVfZ2V0X3NldHRpbmcoJ2JkcHdkJyk7DQogICAgICAgIGlmKCRhY3Rpb249PSdyZXN1Ym1pdCcpDQogICAgICAgIHsNCiAgICAgICAgICAgIGJhaWR1X2RlbHNpdGVtYXAoJHNpdGV1cmwsMSwkc2lnbik7DQogICAgICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnc2V0dXBtYXhhaWQnLDApOw0KICAgICAgICAgICAgYmFpZHVfc2V0X3NldHRpbmcoJ2JkcHdkJywnJyk7DQogICAgICAgICAgICAkb2xkX2JkcHdkPScnOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZihlbXB0eSgkb2xkX2JkcHdkKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGJkcHdkID0gYmFpZHVfZ2VuX3NpdGVtYXBfcGFzc3dkKCk7DQogICAgICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnYmRwd2QnLCAkYmRwd2QpOw0KICAgICAgICAgICAgJHNpZ24gPSBtZDUoJHNpdGV1cmwuJG91dHB1dFsndG9rZW4nXSk7DQogICAgICAgICAgICAvL+aPkOS6pOWFqOmHj+e0ouW8lQ0KICAgICAgICAgICAgJHR5cGU9MTsNCiAgICAgICAgICAgICRhbGxyZXR1cm5qc29uID0gYmFpZHVfc2F2ZXNpdGVtYXAoJ3NhdmUnLCRzaXRldXJsLCAxLCAkYmRwd2QsICRzaWduKTsNCiAgICAgICAgICAgICRhbGxyZXN1bHQgPSBqc29uX2RlY29kZSgkYWxscmV0dXJuanNvblsnanNvbiddLCB0cnVlKTsNCiAgICAgICAgICAgIGJhaWR1X3NldF9zZXR0aW5nKCdsYXN0dXB0aW1lX2FsbCcsIHRpbWUoKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvL+aPkOS6pOWinumHj+e0ouW8lQ0KICAgICAgICAgICAgJHR5cGU9MjsNCiAgICAgICAgICAgICRzaWduID0gbWQ1KCRzaXRldXJsLiRvdXRwdXRbJ3Rva2VuJ10pOw0KICAgICAgICAgICAgYmFpZHVfZGVsc2l0ZW1hcCgkc2l0ZXVybCwyLCRzaWduKTsNCiAgICAgICAgICAgICRyb3cgPSAkZHNxbC0+R2V0T25lKCJTRUxFQ1QgY291bnQoKikgYXMgZGQgRlJPTSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgIHdoZXJlIHR5cGU9MiIpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkYWxscmV0dXJuanNvbiA9IGJhaWR1X3NhdmVzaXRlbWFwKCdzYXZlJywkc2l0ZXVybCwgMiwgJG9sZF9iZHB3ZCwgJHNpZ24pOw0KICAgICAgICAgICAgJGFsbHJlc3VsdCA9IGpzb25fZGVjb2RlKCRhbGxyZXR1cm5qc29uWydqc29uJ10sIHRydWUpOw0KICAgICAgICAgICAgYmFpZHVfc2V0X3NldHRpbmcoJ2xhc3R1cHRpbWVfaW5jJywgdGltZSgpKTsNCiAgICAgICAgfQ0KICAgICAgICBpZigwPT0kYWxscmVzdWx0WydzdGF0dXMnXSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2hvd01zZygi55m+5bqm56uZ5YaF57Si5byV5YiG5p6Q5a6M5oiQ77yM6L+b5YWl5o+Q5Lqk6aG15a6M5oiQ57Si5byV5o+Q5Lqk4oCm4oCmIiwiP2RvcG9zdD1zdWJtaXQmdHlwZT0iLiR0eXBlKTsNCiAgICAgICAgICAgIGV4aXQoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIFNob3dNc2coIuaPkOS6pOeZvuW6pue0ouW8leWksei0pSIsIj8iKTsNCiAgICAgICAgICAgIGV4aXQoKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICB9DQp9IGVsc2VpZiAoICRkb3Bvc3Q9PSdzdWJtaXQnICkNCnsNCiAgICAkYmRwd2QgPSBiYWlkdV9nZXRfc2V0dGluZygnYmRwd2QnKTsNCiAgICBpZihlbXB0eSgkYmRwd2QpKQ0KICAgIHsNCiAgICAgICAgJGJkcHdkID0gYmFpZHVfZ2VuX3NpdGVtYXBfcGFzc3dkKCk7DQogICAgICAgIGJhaWR1X3NldF9zZXR0aW5nKCdiZHB3ZCcsICRiZHB3ZCk7DQogICAgfQ0KDQogICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgICR0b2tlbiA9IGJhaWR1X2dldF9zZXR0aW5nKCdwaW5ndG9rZW4nKTsNCiAgICAkc2lnbj1tZDUoJHNpdGV1cmwuJHRva2VuKTsNCiAgICAkYmRwd2Q9YWRkc2xhc2hlcygkYmRwd2QpOw0KICAgIGlmICgxID09ICR0eXBlKSB7DQogICAgICAgICRzY3JpcHQgPSAnaW5kZXhhbGwnOw0KICAgICAgICAkc3R5cGUgPSAnYWxsJzsNCiAgICB9IGVsc2UgaWYgKDIgPT0gJHR5cGUpIHsNCiAgICAgICAgJHNjcmlwdCA9ICdpbmRleGluYyc7DQogICAgICAgICRzdHlwZSA9ICdpbmMnOw0KICAgIH0NCiAgICAkaW5kZXh1cmwgPSAkc2l0ZXVybC4ieyRjZmdfcGx1c19kaXJ9L2JhaWR1c2l0ZW1hcC5waHA/ZG9wb3N0PXNpdGVtYXBfdXJscyZwd2Q9eyRiZHB3ZH0mdHlwZT17JHR5cGV9IjsNCiAgICAkc3VibWl0dXJsPSJodHRwOi8venouYmFpZHUuY29tL2FwaS9vcGVuc2l0ZW1hcC9zYXZlc2l0ZW1hcD9zaXRldXJsPSIudXJsZW5jb2RlKCRzaXRldXJsKS4iJmluZGV4dXJsPSIudXJsZW5jb2RlKCRpbmRleHVybCkuIiZ0b2tlbnNpZ249Ii51cmxlbmNvZGUoJHNpZ24pLiImdHlwZT17JHN0eXBlfSZyZXNvdXJjZV9uYW1lPUN1c3RvbVNlYXJjaF9Ob3JtYWwiOw0KICAgICRyYXQgPSBiYWlkdV9odHRwX3NlbmQoJHN1Ym1pdHVybCk7DQogICAgJHF1ZXJ5ID0gIlVQREFURSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgIFNFVCBgaXNva2AgPSAnMSciOw0KICAgICRycyA9ICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgU2hvd01zZygi5oiQ5Yqf5o+Q5Lqk5omA5pyJ57Si5byV77yBIiwiPyIpOw0KICAgIGV4aXQoKTsNCn0gZWxzZWlmICggJGRvcG9zdD09J3NlYXJjaGJveDInIHx8ICRkb3Bvc3Q9PSdzZWFyY2hwYWdlMicgfHwgJGRvcG9zdD09J2luY29tZTInIHx8ICRkb3Bvc3Q9PSdyZXBvcnQyJykNCnsNCiAgICAkc2l0ZV9pZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgaWYgKCBlbXB0eSgkc2l0ZV9pZCkgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5bCa5pyq57uR5a6a56uZ54K5SUTvvIzor7flhYjnu5Hlrprlho3ov5vooYzmk43kvZzigKbigKYiLCI/ZG9wb3N0PWJpbmRfc2l0ZV9pZCIpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgICRhcnJbJ3NlYXJjaGJveDInXVsndGl0bGUnXT0i5pCc57Si5qGG566h55CGIjsNCiAgICAkYXJyWydzZWFyY2hib3gyJ11bJ3VybCddPSJodHRwOi8vem4uYmFpZHUuY29tL2NzZS9zZWFyY2hib3gyL2luZGV4P3NpZD17JHNpdGVfaWR9IjsNCiAgICAkYXJyWydzZWFyY2hwYWdlMiddWyd0aXRsZSddPSLnu5PmnpzpobXnrqHnkIYiOw0KICAgICRhcnJbJ3NlYXJjaHBhZ2UyJ11bJ3VybCddPSJodHRwOi8vem4uYmFpZHUuY29tL2NzZS9zZWFyY2hwYWdlMi9pbmRleD9zaWQ9eyRzaXRlX2lkfSI7DQogICAgJGFyclsnaW5jb21lMiddWyd0aXRsZSddPSLojrflvpfmlLblhaUiOw0KICAgICRhcnJbJ2luY29tZTInXVsndXJsJ109Imh0dHA6Ly96bi5iYWlkdS5jb20vY3NlL2luY29tZTIvaW5kZXg/c2lkPXskc2l0ZV9pZH0iOw0KICAgICRhcnJbJ3JlcG9ydDInXVsndGl0bGUnXT0i5pWw5o2u5oql6KGoIjsNCiAgICAkYXJyWydyZXBvcnQyJ11bJ3VybCddPSJodHRwOi8vem4uYmFpZHUuY29tL2NzZS9yZXBvcnQyL2luZGV4P3NpZD17JHNpdGVfaWR9IjsNCiAgICBpZiAoICFpc3NldCgkYXJyWyRkb3Bvc3RdKSApDQogICAgew0KICAgICAgICBleGl0KCdlcnJvciEnKTsNCiAgICB9DQogICAgJHN0ciA9IDw8PEVPVA0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbS9hc3NldHMvanMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+DQo8aHRtbD4NCgk8aGVhZD4NCgkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KCQk8dGl0bGU+55m+5bqm56uZ5YaF5pCc57SiPC90aXRsZT4NCgkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2Jhc2UuY3NzIj4NCgk8L2hlYWQ+DQoJPGJvZHkgYmFja2dyb3VuZD0naW1hZ2VzL2FsbGJnLmdpZicgbGVmdG1hcmdpbj0iOCIgdG9wbWFyZ2luPSc4Jz4NCgkJPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIiBoZWlnaHQ9IjEwMCUiPg0KCQkJPHRyPg0KCQkJCTx0ZCBoZWlnaHQ9IjI4IiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjREFEQURBIiBiYWNrZ3JvdW5kPSdpbWFnZXMvd2JnLmdpZic+DQoJCQkJCTxkaXYgc3R5bGU9ImZsb2F0OmxlZnQiPiZuYnNwOzxiPuKXhzxhIGhyZWY9Ij8iPuKXh+eZvuW6puermeWGheaQnOe0oiDjgIvnu5PmnoTljJbmlbDmja7mj5DkuqQ6Oue0ouW8leeuoeeQhjwvYj4NCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbi1yaWdodDoyMHB4OyI+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvdGQ+DQoJCQk8L3RyPg0KCQkJPHRyPg0KCQkJCTx0ZCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCIgYmdjb2xvcj0nI2ZmZmZmZicgc3R5bGU9InBhZGRpbmctdG9wOjVweCI+DQoJCQkJCTx0YWJsZSB3aWR0aD0nMTAwJScgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMycgY2VsbHNwYWNpbmc9JzEnIGJnY29sb3I9JyNEQURBREEnIGhlaWdodD0iMTAwJSI+DQoJCQkJCQk8dHIgYmdjb2xvcj0nI0RBREFEQSc+DQoJCQkJCQkJPHRkIGNvbHNwYW49JzInIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+eyRhcnJbJGRvcG9zdF1bJ3RpdGxlJ119PC9iPjwvZm9udD4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJCTx0ciBiZ2NvbG9yPScjRkZGRkZGJz4NCgkJCQkJCQk8dGQgY29sc3Bhbj0nMicgaGVpZ2h0PScxMDAlJyBzdHlsZT0ncGFkZGluZzoyMHB4Jz4NCgkJCQkJCQkJPGJyLz4NCgkJCQkJCQkJPGlmcmFtZSBzcmM9InskYXJyWyRkb3Bvc3RdWyd1cmwnXX0iIHNjcm9sbGluZz0iYXV0byIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgc3R5bGU9ImJvcmRlcjpub25lIj48L2lmcmFtZT4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgYmdjb2xvcj0nI0Y1RjVGNSc+Jm5ic3A7PC90ZD4NCgkJCQkJCTwvdHI+DQoJCQkJCTwvdGFibGU+DQoJCQkJPC90ZD4NCgkJCTwvdHI+DQoJCTwvdGFibGU+DQoJCTxwIGFsaWduPSJjZW50ZXIiPg0KCQkJPGJyPg0KCQkJPGJyPg0KCQk8L3A+DQoJPC9ib2R5Pg0KDQo8L2h0bWw+DQpFT1Q7DQogICAgZWNobyAkc3RyO2V4aXQ7DQp9IGVsc2VpZigkZG9wb3N0PT0ndmlld3N1YicpDQp7DQogICAgJHF1ZXJ5PSJTRUxFQ1QgKiBGUk9NIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfbGlzdGAgT1JERVIgQlkgc2lkIERFU0MiOw0KICAgICRkc3FsLT5TZXRRdWVyeSgkcXVlcnkpOw0KICAgICRkc3FsLT5FeGVjdXRlKCdkZCcpOw0KICAgICRsaXN0c3RyPSIiOw0KICAgIHdoaWxlKCRhcnI9JGRzcWwtPkdldEFycmF5KCdkZCcpKQ0KICAgIHsNCiAgICAgICAgJHR5cGVzdHI9JGFyclsndHlwZSddPT0xPydb5YWo6YePXSc6J1vlop7ph49dJzsNCiAgICAgICAgJGFyclsnaXNvayddID0gJGFyclsnaXNvayddPT0wPyAnPGZvbnQgY29sb3I9InJlZCI+5pyq5o+Q5LqkPC9mb250PicgOiAnPGZvbnQgY29sb3I9ImdyZWVuIj7lt7Lmj5DkuqQ8L2ZvbnQ+JzsNCiAgICAgICAgJGFyclsnY3JlYXRlX3RpbWUnXSA9IE15ZGF0ZSgnWS1tLWQgSDptOmknLCRhcnJbJ2NyZWF0ZV90aW1lJ10pOw0KICAgICAgICAkbGlzdHN0ci49PDw8RU9UDQo8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiIgaGVpZ2h0PSIyNiIgb25tb3VzZW1vdmU9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJzsiIG9ubW91c2VvdXQ9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJzsiPg0KCQkJPHRkPnskdHlwZXN0cn0NCgkJCTwvdGQ+DQoJCQk8dGQ+PGEgaHJlZj0ieyRhcnJbJ3VybCddfSIgdGFyZ2V0PSJfYmxhbmsiPnskYXJyWyd1cmwnXX08L2E+DQoJCQk8L3RkPg0KCQkJPHRkPnskYXJyWydjcmVhdGVfdGltZSddfTwvdGQ+DQoJCQk8L3RkPg0KCQk8L3RyPg0KRU9UOw0KICAgIH0NCiAgICAvL+i/lOWbnuaIkOWKn+S/oeaBrw0KICAgICRtc2cgPSA8PDxFT1QNCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQoJPHRib2R5Pg0KCQk8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZCRkNFMiIgaGVpZ2h0PSIyNiI+DQoJCQk8dGQgd2lkdGg9IjglIj7nsbvlnos8L3RkPg0KCQkJPHRkIHdpZHRoPSIzMCUiPuWcsOWdgDwvdGQ+DQoJCQk8dGQgd2lkdGg9IjE1JSI+5o+Q5Lqk5pe26Ze0PC90ZD4NCgkJPC90cj4NCgkJIHskbGlzdHN0cn0NCgkJDQoJCTx0ciBiZ2NvbG9yPSIjZmZmZmZmIiBoZWlnaHQ9IjI4Ij4NCgkJCTx0ZCBjb2xzcGFuPSI1Ij7jgIAgDQoJCQk8L3RkPg0KCQk8L3RyPg0KDQoJPC90Ym9keT4NCjwvdGFibGU+DQogICANCkVPVDsNCiAgICAkbXNnID0gIjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDoyMHB4O1wiPiAgICB7JG1zZ308L2Rpdj48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4NCmZ1bmN0aW9uIGlzR29VcmwodXJsLG1zZykNCnsNCglpZihjb25maXJtKG1zZykpDQoJew0KCQl3aW5kb3cubG9jYXRpb24uaHJlZj11cmw7DQoJfSBlbHNlIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCn0NCjwvc2NyaXB0PiI7DQoNCiAgICAkd2ludGl0bGUgPSAn57Si5byV5YiX6KGo566h55CGJzsNCiAgICAkd2Vjb21lX2luZm8gPSAnPGEgaHJlZj1cJ2JhaWR1c2l0ZW1hcF9tYWluLnBocFwnPueZvuW6puermeWGheaQnOe0ojwvYT4g44CL57uT5p6E5YyW5pWw5o2u5o+Q5LqkOjrntKLlvJXnrqHnkIYnOw0KICAgICR3aW4gPSBuZXcgT3hXaW5kb3coKTsNCiAgICAkd2luLT5BZGRUaXRsZSgkd2ludGl0bGUpOw0KICAgICR3aW4tPkFkZE1zZ0l0ZW0oJG1zZyk7DQogICAgJHdpbmZvcm0gPSAkd2luLT5HZXRXaW5kb3coJ2hhbmQnLCAnJm5ic3A7JywgZmFsc2UpOw0KICAgICR3aW4tPkRpc3BsYXkoKTsNCn0gZWxzZWlmICggJGRvcG9zdD09J2JpbmRfc2l0ZV9pZCcgKQ0Kew0KCSRzaXRldXJsPSRjZmdfYmFzZWhvc3Q7DQogICAgJHNpZ3VybD0iaHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbS9pbmRleC5waHA/c2l0ZXVybD0iLnVybGVuY29kZSgkc2l0ZXVybCk7DQogICAgJHJlc3VsdCA9IGJhaWR1X2h0dHBfc2VuZCgkc2lndXJsKTsNCgkvL3Zhcl9kdW1wKCRyZXN1bHQpO2V4aXQoKTsNCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRyZXN1bHQsIHRydWUpOyANCiAgICBiYWlkdV9zZXRfc2V0dGluZygnc2l0ZXVybCcsICRkYXRhWydzaXRldXJsJ10pOw0KICAgIGJhaWR1X3NldF9zZXR0aW5nKCdjaGVja3NpZ24nLCAkZGF0YVsnY2hlY2tzaWduJ10pOw0KICAgIGlmKCRkYXRhWydzdGF0dXMnXT09MCl7DQogICAgICAgICRjaGVja3VybD0kc2l0ZXVybC4ieyRjZmdfcGx1c19kaXJ9L2JhaWR1c2l0ZW1hcC5waHA/ZG9wb3N0PWNoZWNrdXJsJmNoZWNrc2lnbj0iLiRkYXRhWydjaGVja3NpZ24nXTsNCg0KICAgICAgICAkYXV0aHVybD0iaHR0cDovL3p6LmJhaWR1LmNvbS9hcGkvb3BlbnNpdGVtYXAvYXV0aD9zaXRldXJsPSIuJGRhdGEgWydzaXRldXJsJ10uIiZjaGVja3VybD0iLnVybGVuY29kZSgkY2hlY2t1cmwpLiImY2hlY2tzaWduPSIuJGRhdGFbJ2NoZWNrc2lnbiddOw0KICAgICAgICAkYXV0aGRhdGEgPSBiYWlkdV9odHRwX3NlbmQoJGF1dGh1cmwpOw0KICAgICAgICAkb3V0cHV0ID0ganNvbl9kZWNvZGUoJGF1dGhkYXRhLCB0cnVlKTsNCiAgICAgICAgaWYoJG91dHB1dFsnc3RhdHVzJ109PTApew0KICAgICAgICAgICAgYmFpZHVfc2V0X3NldHRpbmcoJ3Bpbmd0b2tlbicsICRvdXRwdXRbJ3Rva2VuJ10pOw0KICAgICAgICAgICAgJHNpZ24gPSBtZDUoJGRhdGFbJ3NpdGV1cmwnXS4kb3V0cHV0Wyd0b2tlbiddKTsNCiAgICAgICAgICAgIC8vJHNpdGU9JHNpdGV1cmwuInskY2ZnX3BsdXNfZGlyfS9iYWlkdXNpdGVtYXAucGhwP2RvcG9zdD1zaXRlX2lkJmNoZWNrc2lnbj0iLiRkYXRhWydjaGVja3NpZ24nXTsNCiAgICAgICAgICAgICR1ID0gImh0dHA6Ly96aGFuemhhbmcuYmFpZHUuY29tL2FwaS9jb29wZXJhdGlvbi9jc2U/dG9rZW5zaWduPXskc2lnbn0mc2l0ZT17JGRhdGFbJ3NpdGV1cmwnXX0iOw0KICAgICAgICAgICAgJGxvZ2luX3VybD0naHR0cHM6Ly9wYXNzcG9ydC5iYWlkdS5jb20vdjIvP2xvZ2luJnRwbD16aGFuemhhbmcmdT0nLnVybGVuY29kZSgkdSk7DQogICAgICAgICAgICAvL2VjaG8gJGxvZ2luX3VybDtleGl0Ow0KICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjonLiRsb2dpbl91cmwpOw0KICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIFNob3dNc2coIuaXoOazleagoemqjOacrOWcsOWvhumSpe+8jOi/nOeoi+aOpeWPo+acjeWKoeWZqOaXoOazleato+W4uOiOt+WPluWIsOaCqOeahOermeeCueaWh+S7tu+8gSA8YSBocmVmPSdodHRwOi8vd3d3LmRlZGVjbXMuY29tL2FkZG9ucy9iYWlkdXNpdGVtYXAvI2hlbHAnIHRhcmdldD0nX2JsYW5rJz7ngrnlh7vojrflj5bmm7TlpJrluK7liqk8L2E+IiwiamF2YXNjcmlwdDo7Iik7DQogICAgICAgICAgICBleGl0KCk7DQogICAgICAgIH0NCiAgICB9DQp9IGVsc2VpZiAoICRkb3Bvc3Q9PSdwaW5nMScgKQ0Kew0KICAgICRzaWd1cmw9Imh0dHA6Ly9iYWlkdS5hcGkuZGVkZWNtcy5jb20vaW5kZXgucGhwIjsNCiAgICAkYXV0aGRhdGEgPSBiYWlkdV9odHRwX3NlbmQoJHNpZ3VybCk7DQogICAgJG91dHB1dCA9IGpzb25fZGVjb2RlKCRhdXRoZGF0YSwgdHJ1ZSk7DQogICAgaWYgKCAkb3V0cHV0WydzdGF0dXMnXT09MSApDQogICAgew0KICAgICAgICBTaG93TXNnKCLpgJrkv6HmraPluLjvvIEiLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIFNob3dNc2coIuaXoOazlei/nuaOpe+8muaCqOeahOacjeWKoeWZqOaXoOazleato+W4uOi/nuaOpSdodHRwOi8vYmFpZHUuYXBpLmRlZGVjbXMuY29tJ++8jOivt+ehruS/neacjeWKoeWZqOeOr+Wig+aUr+aMgei/nOeoi+iOt+WPluaWh+S7tuOAgjxhIGhyZWY9J2h0dHA6Ly93d3cuZGVkZWNtcy5jb20vYWRkb25zL2JhaWR1c2l0ZW1hcC8jaGVscCcgdGFyZ2V0PSdfYmxhbmsnPueCueWHu+iOt+WPluabtOWkmuW4ruWKqTwvYT4iLCdqYXZhc2NyaXB0OjsnKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCn0gZWxzZWlmICggJGRvcG9zdD09J3BpbmcyJyApDQp7DQogICAgJHNpZ3VybD0iaHR0cDovL3poYW56aGFuZy5iYWlkdS5jb20vYXBpL29wZW5zaXRlbWFwL2RlbGV0ZXNpdGVtYXAiOw0KICAgICRhdXRoZGF0YSA9IGJhaWR1X2h0dHBfc2VuZCgkc2lndXJsKTsNCiAgICAvLyRvdXRwdXQgPSBqc29uX2RlY29kZSgkYXV0aGRhdGEsIHRydWUpOw0KICAgIGlmICggJG91dHB1dFsnc3RhdHVzJ109PTEgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi6YCa5L+h5q2j5bi477yBIiwtMSk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBTaG93TXNnKCLml6Dms5Xov57mjqXvvJrmgqjnmoTmnI3liqHlmajml6Dms5XmraPluLjov57mjqUnaHR0cDovL3poYW56aGFuZy5iYWlkdS5jb20vYXBpJ++8jOivt+ehruS/neacjeWKoeWZqOeOr+Wig+aUr+aMgei/nOeoi+iOt+WPluaWh+S7tuOAgjxhIGhyZWY9J2h0dHA6Ly93d3cuZGVkZWNtcy5jb20vYWRkb25zL2JhaWR1c2l0ZW1hcC8jaGVscCcgdGFyZ2V0PSdfYmxhbmsnPueCueWHu+iOt+WPluabtOWkmuW4ruWKqTwvYT4iLCdqYXZhc2NyaXB0OjsnKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCn0gZWxzZWlmICggJGRvcG9zdD09J2JpbmQnICkNCnsNCiAgICAkc2l0ZV9pZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgaWYgKCAhZW1wdHkoJHNpdGVfaWQpICkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuW9k+WJjeermeeCueW3sue7j+e7keWumnNpdGVfaWTvvIzml6DpnIDph43lpI3nu5HlrpoiLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICAkc2l0ZV9pZF9tc2cgPSAnPGZvbnQgY29sb3I9InJlZCI+5bCa5pyq57uR5a6a56uZ54K5SUTvvIzor7fngrnlh7s8L2ZvbnQ+PGEgaHJlZj0iP2RvcG9zdD1iaW5kX3NpdGVfaWQiIHN0eWxlPSJjb2xvcjpibHVlIj5b57uR5a6a56uZ54K5SURdPC9hPjxmb250IGNvbG9yPSJyZWQiPuWujOaIkOe7keWumjwvZm9udD4nOw0KICAgICRzaXRldXJsID0gYmFpZHVfZ2V0X3NldHRpbmcoJ3NpdGV1cmwnKTsNCiAgICAkdmVyID0gUExVU19CQUlEVVNJVEVNQVBfVkVSOw0KICAgICRzaXRldXJsMiA9IHVybGVuY29kZSgkc2l0ZXVybCk7DQogICAgJG1zZyA9IDw8PEVPVA0KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0RBREFEQSI+DQoJPHRib2R5Pg0KCQk8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+DQoJCQk8dGQgY29sc3Bhbj0iMiIgaGVpZ2h0PSIxMDAiPg0KCQkJCTx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMSI+DQoJCQkJCTx0Ym9keT4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+5qih5Z2X54mI5pys77yaPC90ZD4NCgkJCQkJCQk8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxzcGFuIHN0eWxlPSdjb2xvcjpibGFjayc+PGlmcmFtZSBuYW1lPSdzdGFmcm0nIHNyYz0naHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbS9pbmRleC5waHA/Yz13ZWxjb21lJm09bmV3X3ZlciZ2ZXI9eyR2ZXJ9JnNpdGV1cmw9eyRzaXRldXJsMn0mc2V0dXBtYXhhaWQ9eyRzZXR1cG1heGFpZH0nIGZyYW1lYm9yZGVyPScwJyBpZD0nc3RhZnJtJyB3aWR0aD0nOTglJyBoZWlnaHQ9JzIyJz48L2lmcmFtZT48L3NwYW4+DQoJCQkJCQkJPC90ZD4NCgkJCQkJCTwvdHI+DQoJCQkJCQk8dHI+DQoJCQkJCQkJPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuermeeCueWcsOWdgO+8mjwvdGQ+DQoJCQkJCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48c3BhbiBzdHlsZT0nY29sb3I6YmxhY2snPnskc2l0ZXVybH17JHNpdGVfaWRfbXNnfTwvc3Bhbj4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+57uH5qKm5o6l5Y+j5Zyw5Z2A77yaPC90ZD4NCgkJCQkJCQk8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxzcGFuIHN0eWxlPSdjb2xvcjpibGFjayc+aHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbTwvc3Bhbj4gPGEgaHJlZj0nP2RvcG9zdD1waW5nMScgc3R5bGU9J2NvbG9yOmJsdWUnPjx1Plvmo4Dmn6XpgJrkv6FdPC91PjwvYT4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+55m+5bqm5o6l5Y+j5Zyw5Z2A77yaPC90ZD4NCgkJCQkJCQk8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxzcGFuIHN0eWxlPSdjb2xvcjpibGFjayc+aHR0cDovL3poYW56aGFuZy5iYWlkdS5jb20vYXBpLzwvc3Bhbj4gPGEgaHJlZj0nP2RvcG9zdD1waW5nMicgc3R5bGU9J2NvbG9yOmJsdWUnPjx1Plvmo4Dmn6XpgJrkv6FdPC91Pg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KDQoJCTwvdHI+DQoNCgkJPHRyPg0KCQkJPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojOTk5Ij48c3Ryb25nPueZvuW6puermeWGheaQnOe0ojwvc3Ryb25nPueZvuW6puermeWGheaQnOe0ouaXqOWcqOW4ruWKqeermemVv+S9juaIkOacrOWcsOS4uue9keermeeUqOaIt+aPkOS+m+mrmOi0qOmHj+eahOe9keermeWGheaQnOe0ouacjeWKoeOAguS9v+eUqOeZvuW6puermeWGheaQnOe0ouW3peWFt++8jOaCqOWPr+S7pei9u+advuaJk+mAoOe9keermeS4k+WxnueahOaQnOe0ouW8leaTju+8jOiHquWumuS5ieS4quaAp+WMlueahOWxleeOsOagt+W8j+OAgeWKn+iDveaooeWdl+etie+8jOW5tumAmui/h+aQnOe0ouW5v+WRiuiOt+W+l+aUtuWFpeOAgjwvdGQ+DQoJCTwvdHI+DQoJCTwvdGJvZHk+DQoJCTwvdGFibGU+DQoJCTwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCBiZ2NvbG9yPSIjRjVGNUY1Ij4mbmJzcDs8L3RkPg0KCQk8L3RyPg0KCTwvdGJvZHk+DQo8L3RhYmxlPg0KRU9UOw0KICAgICRtc2cgPSAiPGRpdiBzdHlsZT1cImxpbmUtaGVpZ2h0OjM2cHg7XCI+eyRtc2d9PC9kaXY+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+DQpmdW5jdGlvbiBpc0dvVXJsKHVybCxtc2cpDQp7DQoJaWYoY29uZmlybShtc2cpKQ0KCXsNCgkJd2luZG93LmxvY2F0aW9uLmhyZWY9dXJsOw0KCX0gZWxzZSB7DQoJCXJldHVybiBmYWxzZTsNCgl9DQp9DQo8L3NjcmlwdD4iOw0KDQogICAgJHdpbnRpdGxlID0gJ+eZvuW6puermeWGheaQnOe0oic7DQogICAgJHdlY29tZV9pbmZvID0gJ+eZvuW6puermeWGheaQnOe0oiDjgIsnOw0KICAgICR3aW4gPSBuZXcgT3hXaW5kb3coKTsNCiAgICAkd2luLT5BZGRUaXRsZSgkd2ludGl0bGUpOw0KICAgICR3aW4tPkFkZE1zZ0l0ZW0oJG1zZyk7DQogICAgJHdpbmZvcm0gPSAkd2luLT5HZXRXaW5kb3coJ2hhbmQnLCAnJm5ic3A7JywgZmFsc2UpOw0KICAgICR3aW4tPkRpc3BsYXkoKTsNCn0NCg0KIGVsc2Ugew0KICAgIC8v6L+U5Zue5oiQ5Yqf5L+h5oGvDQogICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgICRzZXR1cG1heGFpZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzZXR1cG1heGFpZCcpOw0KICAgICRsYXN0dXB0aW1lX2FsbCA9IGRhdGUoJ1ktbS1kJyxiYWlkdV9nZXRfc2V0dGluZygnbGFzdHVwdGltZV9hbGwnKSk7DQogICAgJGxhc3R1cHRpbWVfaW5jID0gZGF0ZSgnWS1tLWQnLGJhaWR1X2dldF9zZXR0aW5nKCdsYXN0dXB0aW1lX2luYycpKTsNCiAgICAkc2l0ZV9pZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgaWYgKCBlbXB0eSgkc2l0ZV9pZCkgKQ0KICAgIHsNCiAgICAgICAgaGVhZGVyKCdsb2NhdGlvbjo/ZG9wb3N0PWJpbmQnKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQogICAgJHNpdGVfaWRfbXNnPSRzdWJtaXRhbGxfbXNnPScnOw0KICAgIGlmICggZW1wdHkoJHNpdGVfaWQpICkNCiAgICB7DQogICAgICAgICRzaXRlX2lkX21zZyA9ICc8Zm9udCBjb2xvcj0icmVkIj7lsJrmnKrnu5Hlrprnq5nngrlJRO+8jOivt+eCueWHuzwvZm9udD48YSBocmVmPSI/ZG9wb3N0PWJpbmRfc2l0ZV9pZCIgc3R5bGU9ImNvbG9yOmJsdWUiPlvnu5Hlrprnq5nngrlJRF08L2E+PGZvbnQgY29sb3I9InJlZCI+5a6M5oiQ57uR5a6aPC9mb250Pic7DQogICAgfQ0KICAgIGlmICggIWVtcHR5KCRzaXRlX2lkKSBBTkQgZW1wdHkoJGxhc3R1cHRpbWVfYWxsKSApDQogICAgew0KICAgICAgICAvL2hlYWRlcignbG9jYXRpb246P2RvcG9zdD1hdXRoJmFjdGlvbj1yZXN1Ym1pdCcpOw0KICAgICAgICAvL2V4aXQ7DQogICAgICAgICRzdWJtaXRhbGxfbXNnID0gJzxmb250IGNvbG9yPSJyZWQiPuWwmuacquaPkOS6pOWFqOmHj+e0ouW8le+8jOeCueWHuzwvZm9udD48YSBocmVmPSI/ZG9wb3N0PWF1dGgmYWN0aW9uPXJlc3VibWl0IiBzdHlsZT0iY29sb3I6Ymx1ZSI+W+aPkOS6pOWFqOmHj+e0ouW8lV08L2E+PGZvbnQgY29sb3I9InJlZCI+6L+b6KGM5o+Q5Lqk77yM5o+Q5LqkNeS4quWwj+aXtuWQjuaJjeacieaQnOe0oue7k+aenDwvZm9udD4nOw0KICAgIH0NCiAgICANCiAgICAkYmRhcmNzID0gbmV3IEJhaWR1QXJ0aWNsZVhtbDsNCiAgICAkYmRhcmNzLT5zZXRTaXRlbWFwVHlwZSgxKTsNCiAgICAkbWF4YWlkID0gJGJkYXJjcy0+Z2V0TWF4QWlkKCk7DQogICAgJHZlciA9IFBMVVNfQkFJRFVTSVRFTUFQX1ZFUjsNCiAgICAkc2l0ZXVybDIgPSB1cmxlbmNvZGUoJHNpdGV1cmwpOw0KICAgICRtc2cgPSA8PDxFT1QNCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNEQURBREEiPg0KCTx0Ym9keT4NCgkJPHRyIGJnY29sb3I9IiNGRkZGRkYiPg0KCQkJPHRkIGNvbHNwYW49IjIiIGhlaWdodD0iMTAwIj4NCgkJCQk8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPg0KCQkJCQk8dGJvZHk+DQoJCQkJCQk8dHI+DQoJCQkJCQkJPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuaooeWdl+eJiOacrO+8mjwvdGQ+DQoJCQkJCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij48c3BhbiBzdHlsZT0nY29sb3I6YmxhY2snPjxpZnJhbWUgbmFtZT0nc3RhZnJtJyBzcmM9J2h0dHA6Ly9iYWlkdS5hcGkuZGVkZWNtcy5jb20vaW5kZXgucGhwP2M9d2VsY29tZSZtPW5ld192ZXImdmVyPXskdmVyfSZzaXRldXJsPXskc2l0ZXVybDJ9JnNldHVwbWF4YWlkPXskc2V0dXBtYXhhaWR9JyBmcmFtZWJvcmRlcj0nMCcgaWQ9J3N0YWZybScgd2lkdGg9Jzk4JScgaGVpZ2h0PScyMic+PC9pZnJhbWU+PC9zcGFuPg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KCQkJCQkJPHRyPg0KCQkJCQkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7nq5nngrnlnLDlnYDvvJo8L3RkPg0KCQkJCQkJCTx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JHNpdGV1cmx9PC9zcGFuPg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KCQkJCQkJPHRyPg0KCQkJCQkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7nu5Hlrprnq5nngrlJRO+8mjwvdGQ+DQoJCQkJCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4JPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JHNpdGVfaWR9PC9zcGFuPnskc2l0ZV9pZF9tc2d9DQoJCQkJCQkJCTxiciAvPg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KCQkJCQkJPHRyPg0KCQkJCQkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7mnIDlkI7mj5DkuqTmlofmoaNJRO+8mjwvdGQ+DQoJCQkJCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4JPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JHNldHVwbWF4YWlkfSB7JHN1Ym1pdGFsbF9tc2d9PC9zcGFuPg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KCQkJCQkJPHRyPg0KCQkJCQkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7lvZPliY3mlofmoaPmnIDmlrBJRO+8mjwvdGQ+DQoJCQkJCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4JPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JG1heGFpZH08L3NwYW4+DQoJCQkJCQkJPC90ZD4NCgkJCQkJCTwvdHI+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7lop7ph4/ntKLlvJXmnIDlkI7mj5DkuqTvvJo8L3RkPg0KCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4JPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JGxhc3R1cHRpbWVfaW5jfTwvc3Bhbj4NCgkJCTwvdGQ+DQoJCTwvdHI+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7lhajph4/ntKLlvJXmnIDlkI7mj5DkuqTvvJo8L3RkPg0KCQkJPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4JPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz57JGxhc3R1cHRpbWVfYWxsfTwvc3Bhbj4NCgkJCTwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIj48Yj7mgqjlj6/ku6Xov5vooYzku6XkuIvmk43kvZzvvJo8L2I+PC90ZD4NCgkJPC90cj4NCgkJPHRyPg0KCQkJPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiPiA8YSBocmVmPSdqYXZhc2NyaXB0OmlzR29VcmwoImJhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9YXV0aCIsIuaYr+WQpuehruWumuaPkOS6pOWinumHj+e0ouW8le+8nyIpOycgc3R5bGU9J2NvbG9yOmJsdWUnPjx1Plvmj5DkuqTlop7ph4/ntKLlvJVdPC91PjwvYT4NCiA8YSBocmVmPSdqYXZhc2NyaXB0OmlzR29VcmwoImJhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9YXV0aCZhY3Rpb249cmVzdWJtaXQiLCLmmK/lkKbnoa7lrprph43mlrDmj5DkuqTlhajph4/ntKLlvJXvvJ8iKTsnIHN0eWxlPSdjb2xvcjpibHVlJz48dT5b6YeN5paw5o+Q5Lqk5YWo6YeP57Si5byVXTwvdT48L2E+DQogPGEgaHJlZj0nYmFpZHVzaXRlbWFwX21haW4ucGhwP2RvcG9zdD1zZWFyY2hib3gyJyBzdHlsZT0nY29sb3I6Ymx1ZSc+PHU+W+aQnOe0ouahhueuoeeQhl08L3U+PC9hPg0KIDxhIGhyZWY9J2JhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9c2VhcmNocGFnZTInIHN0eWxlPSdjb2xvcjpibHVlJz48dT5b57uT5p6c6aG1566h55CGXTwvdT48L2E+DQogPGEgaHJlZj0nYmFpZHVzaXRlbWFwX21haW4ucGhwP2RvcG9zdD1pbmNvbWUyJyBzdHlsZT0nY29sb3I6Ymx1ZSc+PHU+W+iOt+W+l+aUtuWFpV08L3U+PC9hPg0KCQkJCQk8YQ0KCQkJCQlocmVmPSdiYWlkdXNpdGVtYXBfbWFpbi5waHA/ZG9wb3N0PXJlcG9ydDInIHN0eWxlPSdjb2xvcjpibHVlJz48dT5b5pWw5o2u5oql6KGoXTwvdT4NCgkJCQkJCTwvYT4NCgkJCTwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJCTx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIj4NCgkJCQk8aHI+5Yqf6IO96K+05piO77yaDQoJCQkJPGJyPuWcqOWvueW6lOaooeadv+S4reS9v+eUqOagh+etvu+8mjxmb250IGNvbG9yPSJyZWQiPntkZWRlOmJhaWR1c2l0ZW1hcC99PC9mb250Pu+8jOebtOaOpei/m+ihjOiwg+eUqOWNs+WPr++8jOagt+W8j+iuvuWumuWPr+eCueWHuzxhIGhyZWY9ImJhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9c2VhcmNoYm94MiIgc3R5bGU9ImNvbG9yOmJsdWUiPlvmkJzntKLmoYbnrqHnkIZdPC9hPiDov5vooYzorr7nva7jgIINCgkJCQk8aHI+5Yqf6IO96K+05piO77yaDQoJCQkJPGJyPiA8Yj5b5o+Q5Lqk5aKe6YeP57Si5byVXTwvYj7nlKjkuo7mj5DkuqTmm7TmlrDpopHnjofovoPpopHnuYHnmoTntKLlvJXvvIzkuIDoiKzmmK/lhajph4/ntKLlvJXmj5DkuqTlrozmiJDlkI7vvIzmr4/mrKHmm7TmlrDlsJHph4/lhoXlrrnlkI7ov5vooYzlop7ph4/ntKLlvJXmj5DkuqTvvJsNCgkJCQk8YnI+IDxiPlvph43mlrDmj5DkuqTlhajph4/ntKLlvJVdPC9iPumHjeaWsOWvueWFqOermeeahOeZvuW6pue0ouW8lei/m+ihjOaPkOS6pO+8mw0KCQkJCTxicj4gPGI+W+aQnOe0ouahhueuoeeQhl08L2I+566h55CG5pCc57Si5qGG55qE5qih5p2/5qC35byP77ybDQoJCQkJPGJyPiA8Yj5b57uT5p6c6aG1566h55CGXTwvYj7mgqjlj6/ku6XlnKjigJznu5PmnpzpobXnrqHnkIbigJ3pobXpnaLvvIzlr7nmkJzntKLnu5PmnpzpobXnmoTpobbpg6jjgIHpopHpgZPjgIHmoLflvI/mqKHmnb/jgIHnrZvpgInmjpLluo/nrYnlip/og73ov5vooYzorr7nva7vvJsNCgkJCQk8YnI+IDxiPlvojrflvpfmlLblhaVdPC9iPumAmui/h+WwhuermeWGheaQnOe0ouS4jueZvuW6puiBlOebn+i0puaIt+ebuOWFs+iBlO+8jOaCqOWwhuacieacuuS8muiOt+W+l+W5v+WRiuaUtuWFpe+8mw0KCQkJCTxicj4gPGI+W+aVsOaNruaKpeihqF08L2I+5p+l55yL56uZ5YaF5pCc57Si5pWw5o2u57uf6K6h5oql6KGo77ybDQoJCQkJPGJyPg0KCQkJCTxicj4NCgkJCQk8aHI+DQoJCQk8L3RkPg0KCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgc3R5bGU9ImNvbG9yOiM5OTkiPjxzdHJvbmc+55m+5bqm56uZ5YaF5pCc57SiPC9zdHJvbmc+55m+5bqm56uZ5YaF5pCc57Si5peo5Zyo5biu5Yqp56uZ6ZW/5L2O5oiQ5pys5Zyw5Li6572R56uZ55So5oi35o+Q5L6b6auY6LSo6YeP55qE572R56uZ5YaF5pCc57Si5pyN5Yqh44CC5L2/55So55m+5bqm56uZ5YaF5pCc57Si5bel5YW377yM5oKo5Y+v5Lul6L275p2+5omT6YCg572R56uZ5LiT5bGe55qE5pCc57Si5byV5pOO77yM6Ieq5a6a5LmJ5Liq5oCn5YyW55qE5bGV546w5qC35byP44CB5Yqf6IO95qih5Z2X562J77yM5bm26YCa6L+H5pCc57Si5bm/5ZGK6I635b6X5pS25YWl44CCPC90ZD4NCgkJPC90cj4NCgkJPC90Ym9keT4NCgkJPC90YWJsZT4NCgkJPC90ZD4NCgkJPC90cj4NCgkJPHRyPg0KCQkJPHRkIGJnY29sb3I9IiNGNUY1RjUiPiZuYnNwOzwvdGQ+DQoJCTwvdHI+DQoJPC90Ym9keT4NCjwvdGFibGU+DQpFT1Q7DQogICAgJG1zZyA9ICI8ZGl2IHN0eWxlPVwibGluZS1oZWlnaHQ6MzZweDtcIj57JG1zZ308L2Rpdj48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4NCmZ1bmN0aW9uIGlzR29VcmwodXJsLG1zZykNCnsNCglpZihjb25maXJtKG1zZykpDQoJew0KCQl3aW5kb3cubG9jYXRpb24uaHJlZj11cmw7DQoJfSBlbHNlIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCn0NCjwvc2NyaXB0PiI7DQoNCiAgICAkd2ludGl0bGUgPSAn55m+5bqm56uZ5YaF5pCc57SiJzsNCiAgICAkd2Vjb21lX2luZm8gPSAn55m+5bqm56uZ5YaF5pCc57SiIOOAiyc7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkFkZFRpdGxlKCR3aW50aXRsZSk7DQogICAgJHdpbi0+QWRkTXNnSXRlbSgkbXNnKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygnaGFuZCcsICcmbmJzcDsnLCBmYWxzZSk7DQogICAgJHdpbi0+RGlzcGxheSgpOw0KfQ0KDQo= - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpIGV4aXQoJ1JlcXVlc3QgRXJyb3IhJyk7DQpkZWZpbmUoJ1BMVVNfQkFJRFVTSVRFTUFQX1ZFUicsJzAuMC41Jyk7DQoNCiRub3cgPSB0aW1lKCk7DQoNCiRHTE9CQUxTWyd1cGRhdGVfc3FscyddPWFycmF5KA0KICAgICcwLjAuMyc9PmFycmF5KA0KICAgICAgICAiSU5TRVJUIElOVE8gYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTICgnc2l0ZV9pZCcsICcwJywgMCk7IiwNCiAgICAgICAgIklOU0VSVCBJTlRPIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ3ZlcnNpb24nLCAnMC4wLjMnLCB7JG5vd30pOyIsDQogICAgKSwNCik7DQoNCmZ1bmN0aW9uIGJhaWR1X2h0dHBfc2VuZCgkdXJsLCAkbGltaXQ9MCwgJHBvc3Q9JycsICRjb29raWU9JycsICR0aW1lb3V0PTE1KQ0Kew0KICAgICRyZXR1cm4gPSAnJzsNCiAgICAkbWF0Y2hlcyA9IHBhcnNlX3VybCgkdXJsKTsNCiAgICAkc2NoZW1lID0gJG1hdGNoZXNbJ3NjaGVtZSddOw0KICAgICRob3N0ID0gJG1hdGNoZXNbJ2hvc3QnXTsNCiAgICAkcGF0aCA9ICRtYXRjaGVzWydwYXRoJ10gPyAkbWF0Y2hlc1sncGF0aCddLihAJG1hdGNoZXNbJ3F1ZXJ5J10gPyAnPycuJG1hdGNoZXNbJ3F1ZXJ5J10gOiAnJykgOiAnLyc7DQogICAgJHBvcnQgPSAhZW1wdHkoJG1hdGNoZXNbJ3BvcnQnXSkgPyAkbWF0Y2hlc1sncG9ydCddIDogODA7DQoNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7DQogICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkc2NoZW1lLic6Ly8nLiRob3N0Lic6Jy4kcG9ydC4kcGF0aCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7DQogICAgICAgIGlmICgkcG9zdCkgew0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOw0KICAgICAgICAgICAgJGNvbnRlbnQgPSBpc19hcnJheSgkcG9ydCkgPyBodHRwX2J1aWxkX3F1ZXJ5KCRwb3N0KSA6ICRwb3N0Ow0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRjb250ZW50KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGNvb2tpZSkgew0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRSwgJGNvb2tpZSk7DQogICAgICAgIH0NCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAkdGltZW91dCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAkdGltZW91dCk7DQogICAgICAgICRkYXRhID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgICRzdGF0dXMgPSBjdXJsX2dldGluZm8oJGNoKTsNCiAgICAgICAgJGVycm5vID0gY3VybF9lcnJubygkY2gpOw0KICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7DQogICAgICAgIGlmICgkZXJybm8gfHwgJHN0YXR1c1snaHR0cF9jb2RlJ10gIT0gMjAwKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gISRsaW1pdCA/ICRkYXRhIDogc3Vic3RyKCRkYXRhLCAwLCAkbGltaXQpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgaWYgKCRwb3N0KSB7DQogICAgICAgICRjb250ZW50ID0gaXNfYXJyYXkoJHBvcnQpID8gaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkgOiAkcG9zdDsNCiAgICAgICAgJG91dCA9ICJQT1NUICRwYXRoIEhUVFAvMS4wXHJcbiI7DQogICAgICAgICRoZWFkZXIgPSAiQWNjZXB0OiAqLypcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQWNjZXB0LUxhbmd1YWdlOiB6aC1jblxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJVc2VyLUFnZW50OiAiLkAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10uIlxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJIb3N0OiAkaG9zdDokcG9ydFxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGNvbnRlbnQpLiJcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ29ubmVjdGlvbjogQ2xvc2VcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGVcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ29va2llOiAkY29va2llXHJcblxyXG4iOw0KICAgICAgICAkb3V0IC49ICRoZWFkZXIuJGNvbnRlbnQ7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG91dCA9ICJHRVQgJHBhdGggSFRUUC8xLjBcclxuIjsNCiAgICAgICAgJGhlYWRlciA9ICJBY2NlcHQ6ICovKlxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJBY2NlcHQtTGFuZ3VhZ2U6IHpoLWNuXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkhvc3Q6ICRob3N0OiRwb3J0XHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNvbm5lY3Rpb246IENsb3NlXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNvb2tpZTogJGNvb2tpZVxyXG5cclxuIjsNCiAgICAgICAgJG91dCAuPSAkaGVhZGVyOw0KICAgIH0NCg0KICAgICRmcGZsYWcgPSAwOw0KICAgICRmcCA9IGZhbHNlOw0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2Zzb2NrZXRvcGVuJykpIHsNCiAgICAgICAgJGZwID0gZnNvY2tldG9wZW4oJGhvc3QsICRwb3J0LCAkZXJybm8sICRlcnJzdHIsICR0aW1lb3V0KTsNCiAgICB9DQogICAgaWYgKCEkZnApIHsNCiAgICAgICAgJGNvbnRleHQgPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoYXJyYXkoDQogICAgICAgICAgICAnaHR0cCcgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJHBvc3QgPyAnUE9TVCcgOiAnR0VUJywNCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAkaGVhZGVyLA0KICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiAkY29udGVudCwNCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gJHRpbWVvdXQsDQogICAgICAgICAgICApLA0KICAgICAgICApKTsNCiAgICAgICAgJGZwID0gQGZvcGVuKCRzY2hlbWUuJzovLycuJGhvc3QuJzonLiRwb3J0LiRwYXRoLCAnYicsIGZhbHNlLCAkY29udGV4dCk7DQogICAgICAgICRmcGZsYWcgPSAxOw0KICAgIH0NCg0KICAgIGlmICghJGZwKSB7DQogICAgICAgIHJldHVybiAnJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICBzdHJlYW1fc2V0X2Jsb2NraW5nKCRmcCwgdHJ1ZSk7DQogICAgICAgIHN0cmVhbV9zZXRfdGltZW91dCgkZnAsICR0aW1lb3V0KTsNCiAgICAgICAgQGZ3cml0ZSgkZnAsICRvdXQpOw0KICAgICAgICAkc3RhdHVzID0gc3RyZWFtX2dldF9tZXRhX2RhdGEoJGZwKTsNCiAgICAgICAgaWYgKCEkc3RhdHVzWyd0aW1lZF9vdXQnXSkgew0KICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmcCkgJiYgISRmcGZsYWcpIHsNCiAgICAgICAgICAgICAgICBpZiAoKCRoZWFkZXIgPSBAZmdldHMoJGZwKSkgJiYgKCRoZWFkZXIgPT0gIlxyXG4iIHx8ICAkaGVhZGVyID09ICJcbiIpKSB7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkbGltaXQpIHsNCiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnAsICRsaW1pdCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRyZXR1cm4gPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgQGZjbG9zZSgkZnApOw0KICAgICAgICByZXR1cm4gJHJldHVybjsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGNoZWNrX2luc3RhbGxlZCgpDQp7DQogICAgZ2xvYmFsICRkc3FsLCRjZmdfZGJfbGFuZ3VhZ2U7DQogICAgJGlzX2luc3RhbGxlZCA9ICRkc3FsLT5Jc1RhYmxlKCIjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZyIpOw0KICAgIA0KICAgIGlmKCEkaXNfaW5zdGFsbGVkKQ0KICAgIHsNCiAgICAgICAgJGluc3RhbGxfc3FsPTw8PEVPVA0KQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9saXN0YCAoDQogIGBzaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQogIGB1cmxgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBERUZBVUxUICcnLA0KICBgdHlwZWAgdGlueWludCg0KSBOT1QgTlVMTCwNCiAgYGNyZWF0ZV90aW1lYCBpbnQoMTApIE5PVCBOVUxMIERFRkFVTFQgJzAnLA0KICBgcGFnZXNpemVgIGludCgxMSkgREVGQVVMVCAnMCcsDQogIFBSSU1BUlkgS0VZIChgc2lkYCksDQogIEtFWSBgcGFnZXNpemVgIChgcGFnZXNpemVgKQ0KKSBUWVBFPU15SVNBTTsNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZ2AgKA0KICBgc2tleWAgdmFyY2hhcigyNTUpIE5PVCBOVUxMIERFRkFVTFQgJycsDQogIGBzdmFsdWVgIHRleHQgTk9UIE5VTEwsDQogIGBzdGltZWAgaW50KDEwKSBOT1QgTlVMTCwNCiAgUFJJTUFSWSBLRVkgKGBza2V5YCkNCikgVFlQRT1NeUlTQU07DQpJTlNFUlQgSU5UTyBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX3NldHRpbmdgIChgc2tleWAsIGBzdmFsdWVgLCBgc3RpbWVgKSBWQUxVRVMNCgkoJ3NpdGV1cmwnLCAnJywgMCksDQoJKCdjaGVja3NpZ24nLCAnJywgMCksDQoJKCdwaW5ndG9rZW4nLCAnJywgMCksDQoJKCdiZHB3ZCcsICcnLCAwKSwNCgkoJ3NldHVwbWF4YWlkJywgJycsIDApLA0KCSgnbGFzdHVwdGltZV9hbGwnLCAnJywgMCksDQoJKCdsYXN0dXB0aW1lX2luYycsICcnLCAwKSwNCgkoJ3ZlcnNpb24nLCAnMC4wLjMnLCAwKSwNCgkoJ3NpdGVfaWQnLCAnJywgMCk7DQpFT1Q7DQogICAgICAgICRzcWxxdWVyeSA9IHN0cl9yZXBsYWNlKCJcciIsIiIsJGluc3RhbGxfc3FsKTsNCiAgICAgICAgJHNxbHMgPSBwcmVnX3NwbGl0KCIjO1sgXHRdezAsfVxuIyIsJHNxbHF1ZXJ5KTsNCiAgICAgICAgJG5lcnJDb2RlID0gIiI7ICRpPTA7DQogICAgICAgIGZvcmVhY2goJHNxbHMgYXMgJHEpDQogICAgICAgIHsNCiAgICAgICAgICAgICRxID0gdHJpbSgkcSk7DQogICAgICAgICAgICBpZigkcT09IiIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGRzcWwtPkdldFZlcnNpb24oKSA+PSA0LjEpIHsNCiAgICAgICAgICAgICAgICBpZihwcmVnX21hdGNoKCcjQ1JFQVRFI2knLCAkcSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcSA9IHByZWdfcmVwbGFjZSgiI1RZUEU9TXlJU0FNI2kiLCJFTkdJTkU9TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD0iLiRjZmdfZGJfbGFuZ3VhZ2UsJHEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxKTsNCiAgICAgICAgICAgICRlcnJDb2RlID0gdHJpbSgkZHNxbC0+R2V0RXJyb3IoKSk7DQogICAgICAgICAgICBpZigkZXJyQ29kZT09IiIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkbmVyckNvZGUgLj0gIuaJp+ihjO+8miA8Zm9udCBjb2xvcj0nYmx1ZSc+JHE8L2ZvbnQ+IOWHuumUme+8jOmUmeivr+aPkOekuu+8mjxmb250IGNvbG9yPSdyZWQnPiIuJGVyckNvZGUuIjwvZm9udD48YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBTaG93TXNnKCLmiJDlip/lronoo4XmlbDmja7lupPvvIHmgqjpnIDopoHnu5Hlrprnq5nngrlJROWujOaIkOermeeCuemqjOivgeWQjuaJjeiDvei/m+ihjOaVsOaNruaPkOS6pOKApuKApiIuJG5lcnJDb2RlLCI/Iik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gVHJ1ZTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGJhaWR1X2dldF9zZXR0aW5nKCRza2V5LCAkdGltZT1mYWxzZSwgJHJlYWw9ZmFsc2UpDQp7DQogICAgZ2xvYmFsICRkc3FsOw0KICAgIHN0YXRpYyAkc2V0dGluZyA9IGFycmF5KCk7DQogICAgJHNrZXk9YWRkc2xhc2hlcygkc2tleSk7DQogICAgaWYgKGVtcHR5KCRzZXR0aW5nWyRza2V5XSkgfHwgJHJlYWwpIHsNCiAgICAgICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9zZXR0aW5nYCBXSEVSRSBza2V5PSd7JHNrZXl9JyIpOw0KICAgICAgICAkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddPSRyb3dbJ3N2YWx1ZSddOw0KICAgICAgICAkc2V0dGluZ1skc2tleV1bJ3N0aW1lJ109JHJvd1snc3RpbWUnXTsNCiAgICB9DQogICAgaWYgKCFpc3NldCgkc2V0dGluZ1skc2tleV0pKSByZXR1cm4gJHRpbWUgPyBhcnJheSgpIDogbnVsbDsNCiAgICByZXR1cm4gJHRpbWUgPyAkc2V0dGluZ1skc2tleV0gOiAkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddOw0KfQ0KDQpmdW5jdGlvbiBiYWlkdV9zZXRfc2V0dGluZygkc2tleSwgJHN2YWx1ZSkNCnsNCiAgICBnbG9iYWwgJGRzcWw7DQogICAgJHN0aW1lPXRpbWUoKTsNCiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsNCiAgICAkc3ZhbHVlPWFkZHNsYXNoZXMoJHN2YWx1ZSk7DQogICAgJHNxbD0iVVBEQVRFIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZ2AgU0VUIHN2YWx1ZT0neyRzdmFsdWV9JyxzdGltZT0neyRzdGltZX0nIFdIRVJFIHNrZXk9J3skc2tleX0nICI7DQogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHNxbCk7DQp9DQpmdW5jdGlvbiBiYWlkdV9zdHJpcF9pbnZhbGlkX3htbCgkdmFsdWUpDQp7DQogICAgJHJldCA9ICcnOw0KICAgIGlmIChlbXB0eSgkdmFsdWUpKSB7DQogICAgICAgIHJldHVybiAkcmV0Ow0KICAgIH0NCg0KICAgICRsZW5ndGggPSBzdHJsZW4oJHZhbHVlKTsNCiAgICBmb3IgKCRpPTA7ICRpIDwgJGxlbmd0aDsgJGkrKykgew0KICAgICAgICAkY3VycmVudCA9IG9yZCgkdmFsdWVbJGldKTsNCiAgICAgICAgaWYgKCRjdXJyZW50ID09IDB4OSB8fCAkY3VycmVudCA9PSAweEEgfHwgJGN1cnJlbnQgPT0gMHhEIHx8DQogICAgICAgICgkY3VycmVudCA+PSAweDIwICYmICRjdXJyZW50IDw9IDB4RDdGRikgfHwNCiAgICAgICAgKCRjdXJyZW50ID49IDB4RTAwMCAmJiAkY3VycmVudCA8PSAweEZGRkQpIHx8DQogICAgICAgICgkY3VycmVudCA+PSAweDEwMDAwICYmICRjdXJyZW50IDw9IDB4MTBGRkZGKSkgew0KICAgICAgICAgICAgJHJldCAuPSBjaHIoJGN1cnJlbnQpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHJldCAuPSAnICc7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuICRyZXQ7DQp9DQoNCmZ1bmN0aW9uIGJhaWR1X3NhdmVzaXRlbWFwKCRhY3Rpb24sICRzaXRlLCAkdHlwZSwgJGJkcHdkLCAkc2lnbikNCnsNCiAgICBnbG9iYWwgJGRzcWwsJGNmZ19wbHVzX2RpciwkY2ZnX2Jhc2Vob3N0Ow0KICAgICRzaXRldXJsID0gYmFpZHVfZ2V0X3NldHRpbmcoJ3NpdGV1cmwnKTsNCiAgICAkdG9rZW4gPSBiYWlkdV9nZXRfc2V0dGluZygncGluZ3Rva2VuJyk7DQogICAgJHNpZ249bWQ1KCRzaXRldXJsLiR0b2tlbik7DQogICAgJHp6YWN0aW9uID0gJyc7DQogICAgJGJkcHdkPWFkZHNsYXNoZXMoJGJkcHdkKTsNCiAgICBpZiAoMCA9PSBzdHJuY2FzZWNtcCgnc2F2ZScsICRhY3Rpb24sIDMpKSB7DQogICAgICAgICR6emFjdGlvbiA9ICdzYXZlc2l0ZW1hcCc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICAkc2NyaXB0ID0gJyc7DQogICAgJHN0eXBlID0gJyc7DQogICAgJHBhZ2VzaXplPTA7DQogICAgaWYgKDEgPT0gJHR5cGUpIHsNCiAgICAgICAgJHNjcmlwdCA9ICdpbmRleGFsbCc7DQogICAgICAgICRzdHlwZSA9ICdhbGwnOw0KICAgIH0gZWxzZSBpZiAoMiA9PSAkdHlwZSkgew0KICAgICAgICAkc2NyaXB0ID0gJ2luZGV4aW5jJzsNCiAgICAgICAgJHN0eXBlID0gJ2luYyc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICAkcmVzb3VyY2VfbmFtZT0nQ3VzdG9tU2VhcmNoX05vcm1hbCc7DQogICAgJGJkYXJjcyA9IG5ldyBCYWlkdUFydGljbGVYbWw7DQogICAgJGJkYXJjcy0+c2V0U2l0ZW1hcFR5cGUoJHR5cGUpOw0KICAgICRhcmN0b3RhbCA9ICRiZGFyY3MtPmdldFRvdGFsKCk7DQogICAgaWYoJGFyY3RvdGFsPT0wKSByZXR1cm4gZmFsc2U7DQogICAgJHBhZ2VzaXplPWNlaWwoJGFyY3RvdGFsLyRiZGFyY3MtPlJvdyk7DQogICAgaWYoJHBhZ2VzaXplPjApDQogICAgew0KICAgICAgICBmb3IoJGk9MDskaTwkcGFnZXNpemU7JGkrKykNCiAgICAgICAgew0KICAgICAgICAgICAgLy8kY2ZnX3BsdXNfZGlyID0gc3RyX3JlcGxhY2UoIi8iLCAnJywgJGNmZ19wbHVzX2RpciApOw0KICAgICAgICAgICAgJGluZGV4dXJsID0gJHNpdGV1cmwuInskY2ZnX3BsdXNfZGlyfS9iYWlkdXNpdGVtYXAucGhwP2RvcG9zdD1zaXRlbWFwX2luZGV4JnR5cGU9eyRzY3JpcHR9JnB3ZD17JGJkcHdkfSZwYWdlc2l6ZT17JGl9IjsNCiAgICAgICAgICAgICR0aW1lPXRpbWUoKTsNCiAgICAgICAgICAgICRpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfbGlzdGAgKGB1cmxgLCBgdHlwZWAsIGBjcmVhdGVfdGltZWAsIGBwYWdlc2l6ZWApIFZBTFVFUyAoJ3skaW5kZXh1cmx9JywgeyR0eXBlfSwgeyR0aW1lfSwgeyRpfSk7IjsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJHJzID0gJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJGluUXVlcnkpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICggMSA9PSAkdHlwZSApDQogICAgew0KICAgICAgICAkYmRhcmNzLT5zZXRTZXR1cE1heEFpZCgpOw0KICAgIH0NCiAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICdqc29uJyA9PiAkcmV0LA0KICAgICAgICAndXJsJyAgPT4gJHN1Ym1pdHVybCwNCiAgICApOw0KfQ0KDQpmdW5jdGlvbiBiYWlkdV9kZWxzaXRlbWFwKCRzaXRlLCAkdHlwZT0wLCAkc2lnbikNCnsNCiAgICBnbG9iYWwgJGRzcWwsJGNmZ19wbHVzX2RpcjsNCiAgICAkc2l0ZXVybCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRldXJsJyk7DQogICAgJHRva2VuID0gYmFpZHVfZ2V0X3NldHRpbmcoJ3Bpbmd0b2tlbicpOw0KICAgICRiZHB3ZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdiZHB3ZCcpOw0KICAgICRzaWduPW1kNSgkc2l0ZXVybC4kdG9rZW4pOw0KICAgICR0eXBlPWludHZhbCgkdHlwZSk7DQogICAgJGFkZFdoZXJlPSIiOw0KICAgIGlmKCR0eXBlPjApew0KICAgICAgICAkaW5kZXh1cmwgPSAkc2l0ZXVybC4ieyRjZmdfcGx1c19kaXJ9L2JhaWR1c2l0ZW1hcC5waHA/ZG9wb3N0PXNpdGVtYXBfdXJscyZwd2Q9eyRiZHB3ZH0mdHlwZT17JHR5cGV9IjsNCiAgICAgICAgJHN1Ym1pdHVybD0iaHR0cDovL3p6LmJhaWR1LmNvbS9hcGkvb3BlbnNpdGVtYXAvZGVsZXRlc2l0ZW1hcD9zaXRldXJsPSIudXJsZW5jb2RlKCRzaXRldXJsKS4iJmluZGV4dXJsPSIudXJsZW5jb2RlKCRpbmRleHVybCkuIiZ0b2tlbnNpZ249Ii51cmxlbmNvZGUoJHNpZ24pOw0KICAgICAgICAkcmV0ID0gYmFpZHVfaHR0cF9zZW5kKCRzdWJtaXR1cmwpOw0KICAgICAgICAkZGVsUXVlcnk9IkRFTEVURSBGUk9NIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfbGlzdGAgV0hFUkUgYHR5cGVgPSd7JHR5cGV9JzsiOw0KICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkZGVsUXVlcnkpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBiYWlkdV9nZW5fc2l0ZW1hcF9wYXNzd2QoKQ0Kew0KICAgIHJldHVybiBzdWJzdHIobWQ1KG10X3JhbmQoMTAwMDAwMDAsIDk5OTk5OTk5KS5taWNyb3RpbWUoKSksIDAsIDE4KTsNCn0NCg0KZnVuY3Rpb24gYmFpZHVfaGVhZGVyX3N0YXR1cygkc3RhdHVzKQ0Kew0KICAgLy8gJ2NnaScsICdjZ2ktZmNnaScNCiAgIGhlYWRlcignU3RhdHVzOiAnLiRzdGF0dXMsIFRSVUUpOw0KICAgaGVhZGVyKCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXS4nICcuJHN0YXR1cyk7DQp9DQo/Pg== - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpIGV4aXQoJ1JlcXVlc3QgRXJyb3IhJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4nL2NoYW5uZWx1bml0LmNsYXNzLnBocCcpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuJy90eXBlbGluay5jbGFzcy5waHAnKTsNCg0KY2xhc3MgQmFpZHVBcnRpY2xlWG1sIHsNCgl2YXIgJENoYW5uZWxVbml0Ow0KCXZhciAkTWFpblRhYmxlOw0KCXZhciAkVHlwZWlkOw0KCXZhciAkQ2hhbm5lbElEPTE7DQogICAgdmFyICRTdGFydD0wOw0KCXZhciAkUm93PTUwMDsNCgl2YXIgJFR5cGVMaW5rOw0KICAgIHZhciAkU2l0ZW1hcFR5cGU9MjsNCg0KCWZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCgl7DQogICAgICAgIGhlbHBlcignc3RyaW5nJyk7DQoJCSR0aGlzLT5DaGFubmVsVW5pdCA9IG5ldyBDaGFubmVsVW5pdChpbnR2YWwoJHRoaXMtPkNoYW5uZWxJRCkpOw0KCQlpZigkdGhpcy0+Q2hhbm5lbFVuaXQtPkNoYW5uZWxJbmZvc1snaXNzeXN0ZW0nXSE9LTEpDQoJCXsNCgkJCSR0aGlzLT5NYWluVGFibGU9JyNAX19hcmNoaXZlcyc7DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+TWFpblRhYmxlPSR0aGlzLT5DaGFubmVsVW5pdC0+Q2hhbm5lbEluZm9zWydhZGR0YWJsZSddOw0KCQl9DQoJfQ0KCQ0KICAgIGZ1bmN0aW9uIEJhaWR1QXJ0aWNsZVhtbCgpDQogICAgew0KICAgICAgICAkdGhpcy0+X19jb25zdHJ1Y3QoKTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc2V0U2l0ZW1hcFR5cGUoJHNpdGVtYXBfdHlwZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5TaXRlbWFwVHlwZT0kc2l0ZW1hcF90eXBlOw0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBnZXRNYXhBaWQoKQ0KICAgIHsNCiAgICAgICAgZ2xvYmFsICRkc3FsOw0KICAgICAgICAkcm93PSRkc3FsLT5HZXRPbmUoIlNFTEVDVCBNQVgoYWlkKSBBUyBkZCBGUk9NIGAjQF9fYWRkb25hcnRpY2xlYCIpOw0KICAgICAgICAkc2V0dXBtYXhhaWQgPSBlbXB0eSgkcm93WydkZCddKT8gMCA6IGludHZhbCgkcm93WydkZCddKTsNCiAgICAgICAgcmV0dXJuICRzZXR1cG1heGFpZDsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc2V0U2V0dXBNYXhBaWQoKQ0KICAgIHsNCiAgICAgICAgJHNldHVwbWF4YWlkID0gJHRoaXMtPmdldE1heEFpZCgpOw0KICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnc2V0dXBtYXhhaWQnLCAkc2V0dXBtYXhhaWQpOw0KICAgIH0NCgkNCiAgICBmdW5jdGlvbiBnZXRUb3RhbCgpDQogICAgew0KICAgICAgICBnbG9iYWwgJGRzcWw7DQogICAgICAgICRhZGRvblF1ZXJ5PScnOw0KICAgICAgICBpZigkdGhpcy0+U2l0ZW1hcFR5cGU9PTIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZXR1cG1heGFpZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzZXR1cG1heGFpZCcpOw0KICAgICAgICAgICAgJGFkZG9uUXVlcnkgLj0gIkFORCBpZD4iLmludHZhbCgkc2V0dXBtYXhhaWQpOw0KICAgICAgICB9DQogICAgICAgICRzcWw9IlNFTEVDVCBDT1VOVCgqKSBBUyBkZCBGUk9NIGB7JHRoaXMtPk1haW5UYWJsZX1gIFdIRVJFIGNoYW5uZWw9MSB7JGFkZG9uUXVlcnl9IjsNCiAgICAgICAgJHJvdz0kZHNxbC0+R2V0T25lKCRzcWwpOw0KICAgICAgICByZXR1cm4gZW1wdHkoJHJvd1snZGQnXSk/IDAgOiBpbnR2YWwoJHJvd1snZGQnXSk7DQogICAgfQ0KICAgIA0KCWZ1bmN0aW9uIGdldFR5cGUoJHR5cGVpZCkNCgl7DQoJCSR0aGlzLT5UeXBlTGluayA9IG5ldyBUeXBlTGluaygkdHlwZWlkKTsNCgkJJHR5cGVpbmZvcyA9ICR0aGlzLT5UeXBlTGluay0+VHlwZUluZm9zOw0KICAgICAgICANCgkJJHR5cGVpbmZvc1sndHlwZWxpbmsnXSA9ICR0eXBlaW5mb3NbJ3R5cGV1cmwnXSA9IEdldE9uZVR5cGVVcmxBKCR0aGlzLT5UeXBlTGluay0+VHlwZUluZm9zKTsNCgkJJHR5cGVpbmZvc1sncG9zaXRpb24nXSA9IEh0bWwyVGV4dCgkdGhpcy0+VHlwZUxpbmstPkdldFBvc2l0aW9uTGluayhUUlVFKSk7DQoJCXJldHVybiAkdHlwZWluZm9zOw0KCX0NCgkNCglmdW5jdGlvbiB0b1htbCgpDQoJew0KCQlnbG9iYWwgJGRzcWwsJGNmZ193ZWJuYW1lLCRjZmdfYmFzZWhvc3QsJGNmZ19zb2Z0X2xhbmc7DQoJCSRhZGRvblF1ZXJ5PSRsaW1pdFF1ZXJ5PSIiOw0KCQlpZighZW1wdHkoJHRoaXMtPlR5cGVpZCkpDQoJCXsNCgkJCSRhZGRvblF1ZXJ5IC49ICJBTkQgYXJjLnR5cGVpZD0iLmludHZhbCgkdGhpcy0+VHlwZWlkKTsNCgkJCSR0eXBlaW5mb3MgPSAkdGhpcy0+Z2V0VHlwZSgkdGhpcy0+VHlwZWlkKTsNCgkJfQ0KICAgICAgICBpZigkdGhpcy0+U2l0ZW1hcFR5cGU9PTIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZXR1cG1heGFpZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzZXR1cG1heGFpZCcpOw0KICAgICAgICAgICAgJGFkZG9uUXVlcnkgLj0gIkFORCBhcmMuaWQ+Ii5pbnR2YWwoJHNldHVwbWF4YWlkKTsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+U3RhcnQgPSBpbnR2YWwoJHRoaXMtPlN0YXJ0KTsNCg0KCQlpZighZW1wdHkoJHRoaXMtPlJvdykpICRsaW1pdFF1ZXJ5ID0gIkxJTUlUICB7JHRoaXMtPlN0YXJ0fSwiLmludHZhbCgkdGhpcy0+Um93KTsNCgkJDQoJCSRxdWVyeSA9ICJTRUxFQ1QgYXJjLiosYXJjLnNlbmRkYXRlIEFTIHB1YmRhdGUsdHAudHlwZWRpcix0cC50eXBlbmFtZSx0cC5pc2RlZmF1bHQsdHAuZGVmYXVsdG5hbWUsdHAubmFtZXJ1bGUsDQoJCQl0cC5uYW1lcnVsZTIsdHAuaXNwYXJ0LHRwLm1vcmVzaXRlLHRwLnNpdGV1cmwsdHAuc2l0ZXBhdGgsYXQuYm9keQ0KCQkJRlJPTSBgeyR0aGlzLT5NYWluVGFibGV9YCBhcmMgTEVGVCBKT0lOIGAjQF9fYXJjdHlwZWAgdHAgT04gYXJjLnR5cGVpZD10cC5pZA0KICAgICAgICAgICAgTEVGVCBKT0lOIGAjQF9fYWRkb25hcnRpY2xlYCBhdCBPTiBhcmMuaWQ9YXQuYWlkDQoJCQlXSEVSRSBhcmMuYXJjcmFuaz0wIEFORCBhcmMuYXJjcmFuayA+IC0xIEFORCBhcmMuY2hhbm5lbD0xIHskYWRkb25RdWVyeX0gT1JERVIgQlkgYXJjLnNlbmRkYXRlIERFU0MgeyRsaW1pdFF1ZXJ5fSI7DQoNCgkJJGRzcWwtPlNldFF1ZXJ5KCRxdWVyeSk7DQoJCSRkc3FsLT5FeGVjdXRlKCdkZCcpOw0KICAgICAgICANCgkJJHhtbHN0ciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPHVybHNldD4nOw0KICAgICAgICAkc2V0dXBtYXhhaWQ9MDsNCgkJd2hpbGUgKCRyb3c9JGRzcWwtPkdldEFycmF5KCdkZCcpKSB7DQoJCQkkcm93WydpZCddID0gaXNzZXQoJHJvd1snYWlkJ10pPyAkcm93WydhaWQnXSA6ICRyb3dbJ2lkJ107DQoJCQkkcm93WydmaWxlbmFtZSddID0gJHJvd1snYXJjdXJsJ10gPSBHZXRGaWxlVXJsKCRyb3dbJ2lkJ10sJHJvd1sndHlwZWlkJ10sJHJvd1snc2VuZGRhdGUnXSwkcm93Wyd0aXRsZSddLDEsDQoJCQkJCQkwLCRyb3dbJ25hbWVydWxlJ10sJHJvd1sndHlwZWRpciddLDAsJycsJHJvd1snbW9yZXNpdGUnXSwkcm93WydzaXRldXJsJ10sJHJvd1snc2l0ZXBhdGgnXSk7DQoNCgkJCSRyb3dbJ3Nob3dkYXRlJ10gPSBNeWRhdGUoJ1ktbS1kJywgJHJvd1sncHViZGF0ZSddKTsNCgkJCSRyb3dbJ3B1YmRhdGUyJ10gPXN0cl9yZXBsYWNlKCcgJywnVCcsTXlkYXRlKCdZLW0tZCBIOmk6cycsICRyb3dbJ3B1YmRhdGUnXSkpOw0KCQkJJHJvd1sncHJpb3JpdHknXSA9IDA7DQogICAgICAgICAgICAkcm93Wydib2R5J109aXNzZXQoJHJvd1snYm9keSddKT8gSHRtbDJUZXh0KCRyb3dbJ2JvZHknXSkgOiAnJzsNCiAgICAgICAgICAgICRyb3dbJ2JvZHknXSA9IGVtcHR5KCRyb3dbJ2JvZHknXSk/ICRyb3dbJ2Rlc2NyaXB0aW9uJ10gOiAkcm93Wydib2R5J107DQogICAgICAgICAgICAkcm93Wydib2R5J109ICRyb3dbJ2JvZHknXS4nICc7DQoNCgkJCWlmIChwcmVnX21hdGNoKCIjYyMiLCAkcm93WydmbGFnJ10pKSB7DQoJCQkJJHJvd1sncHJpb3JpdHknXSA9ICcxLjAnOw0KCQkJfQ0KCQkJaWYoIWlzc2V0KCR0eXBlaW5mb3MpKSAkdHlwZWluZm9zID0gJHRoaXMtPmdldFR5cGUoJHJvd1sndHlwZWlkJ10pOw0KDQogICAgICAgICAgICAkcm93Wydzb3VyY2UnXSA9IHRyaW0oSHRtbDJUZXh0KCRyb3dbJ3NvdXJjZSddKSk7DQogICAgICAgICAgICAkcm93Wyd0aXRsZSddID0gYmFpZHVfc3RyaXBfaW52YWxpZF94bWwoc3RyX3JlcGxhY2UoYXJyYXkoJ1snLCddJyksJycsJHJvd1sndGl0bGUnXSkpOw0KICAgICAgICAgICAgJHJvd1snYm9keSddID0gYmFpZHVfc3RyaXBfaW52YWxpZF94bWwoc3RyX3JlcGxhY2UoYXJyYXkoJ1snLCddJyksJycsJHJvd1snYm9keSddKSk7DQoJCQkkYWRkc3RyPSRjb3B5cmlnaHRzdHI9JHllYXJzdHI9IiI7DQoJCQkkY29weXJpZ2h0c3RyID0gIWVtcHR5KCRyb3dbJ3NvdXJjZSddKT8gIlxyXG4JCQkJCTxjb3B5cmlnaHRIb2xkZXI+PG5hbWU+PCFbQ0RBVEFbeyRyb3dbJ3NvdXJjZSddfV1dPjwvbmFtZT48L2NvcHlyaWdodEhvbGRlcj4iIDogJyc7DQoJCQkkYWRkc3RyIC49IGVtcHR5KCRyb3dbJ2xpdHBpYyddKT8gIiIgOiAiXHJcbgkJCQkJPHRodW1ibmFpbD48IVtDREFUQVt7JGNmZ19iYXNlaG9zdH17JHJvd1snbGl0cGljJ119XV0+PC90aHVtYm5haWw+IjsNCgkJCSR5ZWFyc3RyID0gTXlkYXRlKCdZJywgJHJvd1sncHViZGF0ZSddKTsNCgkJCSRyb3d4bWxzdHIgPSA8PDxFT1QNClxyXG4JCTx1cmw+DQoJCQk8bG9jPjwhW0NEQVRBW3skY2ZnX2Jhc2Vob3N0fXskcm93WydmaWxlbmFtZSddfV1dPjwvbG9jPg0KCQkJPGxhc3Rtb2Q+eyRyb3dbJ3Nob3dkYXRlJ119PC9sYXN0bW9kPg0KCQkJPGNoYW5nZWZyZXE+YWx3YXlzPC9jaGFuZ2VmcmVxPg0KCQkJPHByaW9yaXR5Pnskcm93Wydwcmlvcml0eSddfTwvcHJpb3JpdHk+DQoJCQk8ZGF0YT4NCgkJCQk8ZGlzcGxheT4NCgkJCQkJPHRpdGxlPjwhW0NEQVRBW3skcm93Wyd0aXRsZSddfSBdXT48L3RpdGxlPg0KCQkJCQk8Y29udGVudD48IVtDREFUQVt7JHJvd1snYm9keSddfV1dPjwvY29udGVudD4NCgkJCQkJPHB1YlRpbWU+eyRyb3dbJ3B1YmRhdGUyJ119PC9wdWJUaW1lPg0KCQkJCQl7JGFkZHN0cn0NCgkJCQk8L2Rpc3BsYXk+DQoJCQk8L2RhdGE+DQoJCTwvdXJsPg0KRU9UOw0KICAgICAgICAgICAgaWYoJGNmZ19zb2Z0X2xhbmc9PSdnYjIzMTInKSAkcm93eG1sc3RyPWdiMnV0ZjgoJHJvd3htbHN0cik7DQogICAgICAgICAgICAkeG1sc3RyIC49ICRyb3d4bWxzdHI7DQoJCX0NCgkJJHhtbHN0ciAuPSAiXHJcbjwvdXJsc2V0PiI7DQoJCXJldHVybiAkeG1sc3RyOw0KCX0NCn0NCg0KPz4= - - -PD9waHAgICBpZighZGVmaW5lZCgnREVERUlOQycpKSBleGl0KCdSZXF1ZXN0IEVycm9yIScpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9iYWlkdXNpdGVtYXAuZnVuYy5waHAiKTsNCg0KZnVuY3Rpb24gbGliX2JhaWR1c2l0ZW1hcCgmJGN0YWcsJiRyZWZPYmopDQp7DQogICAgZ2xvYmFsICRkc3FsLCAkZW52czsNCiAgICAvL+WxnuaAp+WkhOeQhg0KICAgICRhdHRsaXN0PSJ0eXBlfGNvZGUiOw0KICAgIEZpbGxBdHRzRGVmYXVsdCgkY3RhZy0+Q0F0dHJpYnV0ZS0+SXRlbXMsJGF0dGxpc3QpOw0KICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOw0KICAgIA0KICAgICRyZXZhbD0iIjsNCiAgICANCiAgICBpZiggISRkc3FsLT5Jc1RhYmxlKCIjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZyIpICkgcmV0dXJuICfmsqHlronnmb7luqbnq5nlhoXmkJzntKLmqKHlnZcnOw0KICAgIA0KICAgICRzaXRlX2lkPWJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgaWYoZW1wdHkoJHNpdGVfaWQpKSByZXR1cm4gJ+Wwmuacque7keWumuermeeCuUlE77yM6K+355m75b2V57O757uf5ZCO5Y+w57uR5a6aJzsNCiAgICANCiAgICBpZigkdHlwZT09J2NvZGUnKQ0KICAgIHsNCiAgICAgICAgJHJldmFsIC49IDw8PEVPVA0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0NkaXYgaWQ9ImJkY3MiJTNFJTNDL2RpdiUzRSUzQ3NjcmlwdCBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJodHRwOi8vem5zdi5iYWlkdS5jb20vY3VzdG9tZXJfc2VhcmNoL2FwaS9qcz9zaWQ9eyRzaXRlX2lkfScpICsgJyZwbGF0ZV91cmw9JyArIChlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpKSArICcmdD0nICsgKE1hdGguY2VpbChuZXcgRGF0ZSgpLzM2MDAwMDApKSArIHVuZXNjYXBlKCciJTNFJTNDL3NjcmlwdCUzRScpKTs8L3NjcmlwdD4NCkVPVDsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRyZXZhbDsNCn0NCg== - - -PD9waHANCiRjZmdfTm90UHJpbnRIZWFkPSdZJzsNCnNldF90aW1lX2xpbWl0KDApOw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvLi4vaW5jbHVkZS9jb21tb24uaW5jLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9jaGFubmVsdW5pdC5jbGFzcy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvYmFpZHVzaXRlbWFwLmZ1bmMucGhwIik7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2JhaWR1eG1sLmNsYXNzLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9veHdpbmRvdy5jbGFzcy5waHAiKTsNCg0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCmlmKGVtcHR5KCRhY3Rpb24pKSAkYWN0aW9uID0gJyc7DQoNCmlmICgkZG9wb3N0PT0nY2hlY2t1cmwnKQ0Kew0KICAgICRjaGVja3NpZ24gPSAkX0dFVFsnY2hlY2tzaWduJ107DQogICAgaWYgKCEkY2hlY2tzaWduIHx8IHN0cmxlbigkY2hlY2tzaWduKSAhPT0gMzIgKXsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICAkZGF0YSA9IGJhaWR1X2dldF9zZXR0aW5nKCdjaGVja3NpZ24nLCB0cnVlKTsNCiAgICBpZiAoJGRhdGEgJiYgJGRhdGFbJ3N2YWx1ZSddID09ICRjaGVja3NpZ24gJiYgdGltZSgpLSRkYXRhWydzdGltZSddIDwgMzApIHsNCiAgICAgICAgZWNobyAkZGF0YVsnc3ZhbHVlJ107DQogICAgfQ0KfSBlbHNlaWYgKCRkb3Bvc3Q9PSdzaXRlbWFwX2luZGV4Jyl7DQogICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04Iik7DQogICAgaWYgKGVtcHR5KCRfR0VUWydwd2QnXSkgfHwgJF9HRVRbJ3B3ZCddICE9ICgkYmRwd2QgPSBiYWlkdV9nZXRfc2V0dGluZygnYmRwd2QnKSkpIHsNCiAgICAgICAgYmFpZHVfaGVhZGVyX3N0YXR1cyg0MDQpOw0KICAgICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgJHBhZ2VzaXplPWVtcHR5KCRwYWdlc2l6ZSk/IDAgOiBpbnR2YWwoJHBhZ2VzaXplKTsNCiAgICAkc2l0ZW1hcF90eXBlPTA7DQogICAgaWYoJHR5cGU9PSdpbmRleGFsbCcpICRzaXRlbWFwX3R5cGU9MTsNCiAgICBlbHNlaWYoJHR5cGU9PSdpbmRleGluYycpICRzaXRlbWFwX3R5cGU9MjsNCiAgICAkYmRhcmNzID0gbmV3IEJhaWR1QXJ0aWNsZVhtbDsNCiAgICAkc3RhcnQ9JHBhZ2VzaXplKiRiZGFyY3MtPlJvdzsNCiAgICAkYmRhcmNzLT5zZXRTaXRlbWFwVHlwZSgkc2l0ZW1hcF90eXBlKTsNCiAgICAkYmRhcmNzLT5TdGFydD0kc3RhcnQ7DQogICAgZWNobyAkYmRhcmNzLT50b1htbCgpOw0KfSBlbHNlaWYgKCAkZG9wb3N0PT0nc2l0ZW1hcF91cmxzJyApDQp7DQogICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04Iik7DQogICAgaWYgKGVtcHR5KCRfR0VUWydwd2QnXSkgfHwgJF9HRVRbJ3B3ZCddICE9ICgkYmRwd2QgPSBiYWlkdV9nZXRfc2V0dGluZygnYmRwd2QnKSkpIHsNCiAgICAgICAgYmFpZHVfaGVhZGVyX3N0YXR1cyg0MDQpOw0KICAgICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgJHR5cGUgPSBlbXB0eSgkX0dFVFsndHlwZSddKT8gMSA6IGludHZhbCgkX0dFVFsndHlwZSddKTsNCiAgICAkcXVlcnkgPSAiU0VMRUNUIGRpc3RpbmN0KHVybCksY3JlYXRlX3RpbWUgZnJvbSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgIFdIRVJFIGB0eXBlYD17JHR5cGV9IGdyb3VwIGJ5IHVybCI7DQogICAgJGRzcWwtPlNldFF1ZXJ5KCRxdWVyeSk7DQoJJGRzcWwtPkV4ZWN1dGUoJ2RkJyk7DQoJJHhtbHN0ciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPHNpdGVtYXBpbmRleD4nOw0KCXdoaWxlICgkcm93ID0gJGRzcWwtPkdldEFycmF5KCdkZCcpKSB7DQogICAgCSRyb3dbJ2NyZWF0ZV90aW1lJ10gPSBNeWRhdGUoJ1ktbS1kJywkcm93WydjcmVhdGVfdGltZSddKTsNCiAgICAgICAgJHhtbHN0ciAuPSAiXHJcbiAgICA8c2l0ZW1hcD4NCiAgICAgICAgICAgIDxsb2M+PCFbQ0RBVEFbeyRyb3dbJ3VybCddfV1dPjwvbG9jPg0KICAgICAgICAgICAgPGxhc3Rtb2Q+eyRyb3dbJ2NyZWF0ZV90aW1lJ119PC9sYXN0bW9kPg0KICAgIDwvc2l0ZW1hcD4iOw0KCX0NCiAgICAkeG1sc3RyIC49ICJcclxuPC9zaXRlbWFwaW5kZXg+IjsNCiAgICBlY2hvICR4bWxzdHI7DQp9IGVsc2VpZiAoICRkb3Bvc3Q9PSdzaXRlX2lkJyApDQp7DQogICAgJGNoZWNrc2lnbiA9ICRfR0VUWydjaGVja3NpZ24nXTsNCiAgICAkc2l0ZV9pZCA9ICRfR0VUWydzaXRlX2lkJ107DQogICAgaWYgKCEkY2hlY2tzaWduIHx8IHN0cmxlbigkY2hlY2tzaWduKSAhPT0gMzIgKXsNCiAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgnc3RhdHVzJz0+MCkpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIA0KICAgIGlmICggISRzaXRlX2lkICkNCiAgICB7DQogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3N0YXR1cyc9PjApKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQogICAgDQogICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgICR0b2tlbiA9IGJhaWR1X2dldF9zZXR0aW5nKCdwaW5ndG9rZW4nKTsNCiAgICAkc2lnbiA9IG1kNSgkc2l0ZXVybC4kdG9rZW4pOw0KICAgIGlmICgkY2hlY2tzaWduID09ICRzaWduKSB7DQogICAgICAgICRkYXRhID0gYmFpZHVfc2V0X3NldHRpbmcoJ3NpdGVfaWQnLCAkc2l0ZV9pZCk7DQogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3N0YXR1cyc9PjEpKTsNCiAgICB9DQogICAgLy9pZiAoISRjaGVja3NpZ24gfHwgc3RybGVuKCRjaGVja3NpZ24pICE9PSAzMiApew0KICAgIC8vICAgIGV4aXQoKTsNCiAgICAvL30NCiAgICANCn0gZWxzZWlmICggJGRvcG9zdD09J3N1Y2Nlc3MnICkNCnsNCiAgICAkc2l0ZV9pZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgIGlmICggZW1wdHkoJHNpdGVfaWQpICkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuW9k+WJjeezu+e7n+WwmuaXoOe7keWumuermeeCuUlE77yM6K+35Zyo57O757uf5ZCO5Y+w55m+5bqm56uZ5YaF5pCc57Si5qih5Z2X5Lit57uR5a6a77yBIiwiamF2YXNjcmlwdDo7Iik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgJG1zZyA9IDw8PEVPVA0KPGRpdiBzdHlsZT0icGFkZGluZzoyMHB4OyBjb2xvcjojMDAwO2xpbmUtaGVpZ2h0OjIycHgiPg0KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYmdjb2xvcj0iI0RBREFEQSI+DQoJPHRib2R5Pg0KCQk8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+DQoJCQk8dGQgY29sc3Bhbj0iMiIgaGVpZ2h0PSIxMDAiPg0KCQkJCTx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMSI+DQoJCQkJCTx0Ym9keT4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+56uZ54K55Zyw5Z2A77yaPC90ZD4NCgkJCQkJCQk8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+eyRzaXRldXJsfTwvc3Bhbj4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJCTx0cj4NCgkJCQkJCQk8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+56uZ54K5SUTvvJo8L3RkPg0KCQkJCQkJCTx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj57JHNpdGVfaWR9PC9zcGFuPg0KCQkJCQkJCTwvdGQ+DQoJCQkJCQk8L3RyPg0KCQk8dHI+DQoJCQk8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiIgc3R5bGU9ImNvbG9yOiM5OTkiPjxzdHJvbmc+55m+5bqm56uZ5YaF5pCc57SiPC9zdHJvbmc+55m+5bqm56uZ5YaF5pCc57Si5peo5Zyo5biu5Yqp56uZ6ZW/5L2O5oiQ5pys5Zyw5Li6572R56uZ55So5oi35o+Q5L6b6auY6LSo6YeP55qE572R56uZ5YaF5pCc57Si5pyN5Yqh44CC5L2/55So55m+5bqm56uZ5YaF5pCc57Si5bel5YW377yM5oKo5Y+v5Lul6L275p2+5omT6YCg572R56uZ5LiT5bGe55qE5pCc57Si5byV5pOO77yM6Ieq5a6a5LmJ5Liq5oCn5YyW55qE5bGV546w5qC35byP44CB5Yqf6IO95qih5Z2X562J77yM5bm26YCa6L+H5pCc57Si5bm/5ZGK6I635b6X5pS25YWl44CCPC90ZD4NCgkJPC90cj4NCgkJPC90Ym9keT4NCgkJPC90YWJsZT4NCgkJPC90ZD4NCgkJPC90cj4NCgk8L3Rib2R5Pg0KPC90YWJsZT4NCuW9k+aCqOeci+WIsOi/meS4qumhtemdoueahOaXtuWAme+8jOWImeivtOaYjuW3sue7j+WujOaIkERlZGVDTVPnmb7luqbnq5nlhoXmkJzntKLmqKHlnZfnmoTlronoo4Xlkoznq5nngrnnu5HlrprjgII8YnIgLz4NCuaCqOi/mOmcgOimgeWujOaIkOS7peS4i+atpemqpOaJjeiDveWujOaIkERlZGVDTVPnmb7luqbnq5nlhoXmkJzntKLlip/og73nmoTpg6jnvbLvvJo8YnIvPjxici8+DQoxLjxiPuaPkOS6pOe0ouW8lTwvYj7vvJrnmbvlvZXns7vnu5/lkI7lj7DvvIzlnKjjgJDmqKHlnZfjgJEt44CQ55m+5bqm56uZ5YaF5pCc57Si44CRLeOAkOermeWGheaQnOe0ouOAkeS4reaPkOS6pOermeeCuee0ouW8le+8jOWmguaenOaCqOaYr+esrOS4gOasoeS9v+eUqO+8jOmcgOimgemAieaLqeOAkOmHjeaWsOaPkOS6pOWFqOmHj+e0ouW8leOAke+8jOWmguaenOaCqOW3sue7j+aPkOS6pOi/h++8jOavj+asoea3u+WKoOWujOaWsOWGheWuueWQjuWImeebtOaOpeS9v+eUqOOAkOaPkOS6pOWinumHj+e0ouW8leOAkeWKn+iDve+8mzxici8+PGJyLz4NCjIuPGI+6YOo572y5Luj56CBPC9iPu+8muaCqOWcqOaooeadv+WvueW6lOS9jee9ruaPkuWFpeagh+etviA8Zm9udCBjb2xvcj0ncmVkJz57ZGVkZTpiYWlkdXNpdGVtYXAvfTwvZm9udD7vvIzmiJbogIXlj6/ku6Xnm7TmjqXlpI3liLbkuIvpnaLmlofmnKzmoYbkuK3nmoTku6PnoIHvvIznspjotLTliLDmqKHmnb/lr7nlupTkvY3nva7vvIzph43mlrDmm7TmlrBIVE1M77yM5Y2z5Y+v5p+l55yL55m+5bqm5pCc57Si5qGG44CCPGJyLz48YnIvPg0KPHRleHRhcmVhIG5hbWU9IiIgcm93cz0iNiIgY29scz0iODAiPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0NkaXYgaWQ9ImJkY3MiJTNFJTNDL2RpdiUzRSUzQ3NjcmlwdCBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJodHRwOi8vem5zdi5iYWlkdS5jb20vY3VzdG9tZXJfc2VhcmNoL2FwaS9qcz9zaWQ9eyRzaXRlX2lkfScpICsgJyZwbGF0ZV91cmw9JyArIChlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpKSArICcmdD0nICsgKE1hdGguY2VpbChuZXcgRGF0ZSgpLzM2MDAwMDApKSArIHVuZXNjYXBlKCciJTNFJTNDL3NjcmlwdCUzRScpKTs8L3NjcmlwdD4NCjwvdGV4dGFyZWE+PGJyLz48YnIvPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0NkaXYgaWQ9ImJkY3MiJTNFJTNDL2RpdiUzRSUzQ3NjcmlwdCBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJodHRwOi8vem5zdi5iYWlkdS5jb20vY3VzdG9tZXJfc2VhcmNoL2FwaS9qcz9zaWQ9eyRzaXRlX2lkfScpICsgJyZwbGF0ZV91cmw9JyArIChlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpKSArICcmdD0nICsgKE1hdGguY2VpbChuZXcgRGF0ZSgpLzM2MDAwMDApKSArIHVuZXNjYXBlKCciJTNFJTNDL3NjcmlwdCUzRScpKTs8L3NjcmlwdD4NCuS5n+WPr+S7peeZu+W9leWQjuWPsO+8jOWcqOOAkOaooeWdl+OAkS3jgJDnmb7luqbnq5nlhoXmkJzntKLjgJEt44CQ5pCc57Si5qGG566h55CG44CR5Lit5qC55o2u6Ieq5bex6ZyA5rGC5Yib5bu656ym5ZCI56uZ54K55qC35byP55qE5pCc57Si5qGG44CCPGJyLz48YnIvPg0KQ29weVJpZ2h0IDIwMTAgIERlc0RldiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQgUG93ZXJlZCBieSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5kZWRlY21zLmNvbS8iPkRlZGVDTVM8L2E+IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSLnmb7luqbnq5nlhoXmkJzntKLmqKHlnZciPueZvuW6puermeWGheaQnOe0ouaooeWdlzwvYT4NCjwvZGl2Pg0KRU9UOw0KICAgICRtc2cgPSAiPGRpdiBzdHlsZT1cImxpbmUtaGVpZ2h0OjM2cHg7XCI+eyRtc2d9PC9kaXY+IjsNCg0KICAgICR3aW50aXRsZSA9ICfnmb7luqbnq5nlhoXmkJzntKInOw0KICAgICR3ZWNvbWVfaW5mbyA9ICdEZWRlQ01T55m+5bqm56uZ5YaF5pCc57Si5qih5Z2XIOOAiyc7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkFkZFRpdGxlKCR3aW50aXRsZSk7DQogICAgJHdpbi0+QWRkTXNnSXRlbSgkbXNnKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygnaGFuZCcsICcmbmJzcDsnLCBmYWxzZSk7DQogICAgJHdpbi0+RGlzcGxheSgpOw0KfQ== - - -PD9waHANCi8qKg0KICoNCiAqIOaQnOe0oumhtQ0KICoNCiAqIEB2ZXJzaW9uICAgICAgICAkSWQ6IHNlYXJjaC5waHAgMSAxNTozOCAyMDEw5bm0N+aciDjml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5TaXRlDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iLy4uL2luY2x1ZGUvY29tbW9uLmluYy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvYXJjLnNlYXJjaHZpZXcuY2xhc3MucGhwIik7DQppZiAoIGZpbGVfZXhpc3RzKERFREVJTkMuIi9iYWlkdXNpdGVtYXAuZnVuYy5waHAiKSApIHJlcXVpcmVfb25jZShERURFSU5DLiIvYmFpZHVzaXRlbWFwLmZ1bmMucGhwIik7DQoNCiRwYWdlc2l6ZSA9IChpc3NldCgkcGFnZXNpemUpICYmIGlzX251bWVyaWMoJHBhZ2VzaXplKSkgPyAkcGFnZXNpemUgOiAxMDsNCiR0eXBlaWQgPSAoaXNzZXQoJHR5cGVpZCkgJiYgaXNfbnVtZXJpYygkdHlwZWlkKSkgPyAkdHlwZWlkIDogMDsNCiRjaGFubmVsdHlwZSA9IChpc3NldCgkY2hhbm5lbHR5cGUpICYmIGlzX251bWVyaWMoJGNoYW5uZWx0eXBlKSkgPyAkY2hhbm5lbHR5cGUgOiAwOw0KJGt3dHlwZSA9IChpc3NldCgka3d0eXBlKSAmJiBpc19udW1lcmljKCRrd3R5cGUpKSA/ICRrd3R5cGUgOiAwOw0KJG1pZCA9IChpc3NldCgkbWlkKSAmJiBpc19udW1lcmljKCRtaWQpKSA/ICRtaWQgOiAwOw0KJG1vYmlsZSA9IChpc3NldCgkbW9iaWxlKSAmJiBpc19udW1lcmljKCRtb2JpbGUpKSA/ICRtb2JpbGUgOiAwOw0KDQppZiAoICRtb2JpbGU9PTEgKQ0Kew0KICAgIGRlZmluZSgnREVERU1PQicsICdZJyk7DQp9DQoNCmlmKCFpc3NldCgkb3JkZXJieSkpICRvcmRlcmJ5PScnOw0KZWxzZSAkb3JkZXJieSA9IHByZWdfcmVwbGFjZSgiI1teYS16XSNpIiwgJycsICRvcmRlcmJ5KTsNCg0KaWYoIWlzc2V0KCRzZWFyY2h0eXBlKSkgJHNlYXJjaHR5cGUgPSAndGl0bGVrZXl3b3JkJzsNCmVsc2UgJHNlYXJjaHR5cGUgPSBwcmVnX3JlcGxhY2UoIiNbXmEtel0jaSIsICcnLCAkc2VhcmNodHlwZSk7DQoNCmlmKCFpc3NldCgka2V5d29yZCkpew0KICAgIGlmKCFpc3NldCgkcSkpICRxID0gJyc7DQogICAgJGtleXdvcmQ9JHE7DQp9DQoNCiRvbGRrZXl3b3JkID0gJGtleXdvcmQgPSBGaWx0ZXJTZWFyY2goc3RyaXBzbGFzaGVzKCRrZXl3b3JkKSk7DQoNCmlmICggZnVuY3Rpb25fZXhpc3RzKCdiYWlkdV9nZXRfc2V0dGluZycpICkNCnsNCiAgICAkc2l0ZV9pZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzaXRlX2lkJyk7DQogICAgJGxhc3R1cHRpbWVfYWxsID0gYmFpZHVfZ2V0X3NldHRpbmcoJ2xhc3R1cHRpbWVfYWxsJyk7DQogICAgDQogICAgJGFkZHF1ZXJ5PScnOw0KICAgIGlmICggJHNlYXJjaHR5cGUgPT0ndGl0bGUnICkNCiAgICB7DQogICAgICAgICRhZGRxdWVyeSA9JyZzdHA9MSc7DQogICAgfQ0KICAgIC8vIOmcgOimgeaPkOS6pOWFqOmHj+e0ouW8leWQjjXkuKrlsI/ml7blhoXmiY3og73lpJ/ov5vooYzot7PovawNCiAgICBpZiAoICFlbXB0eSgkc2l0ZV9pZCkgQU5EIHRpbWUoKS0kbGFzdHVwdGltZV9hbGw+NjAqNjAqNSkNCiAgICB7DQogICAgICAgICRyb3cgPSAkZHNxbC0+R2V0T25lKCJTRUxFQ1Qgc3B3b3JkcyBGUk9NIGAjQF9fc2VhcmNoX2tleXdvcmRzYCBXSEVSRSBrZXl3b3JkPSciLmFkZHNsYXNoZXMoJGtleXdvcmQpLiInOyAiKTsNCiAgICAgICAgaWYoIWlzX2FycmF5KCRyb3cpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkaW5xdWVyeSA9ICJJTlNFUlQgSU5UTyBgI0BfX3NlYXJjaF9rZXl3b3Jkc2AoYGtleXdvcmRgLGBzcHdvcmRzYCxgY291bnRgLGByZXN1bHRgLGBsYXN0dGltZWApDQogICAgICAgICAgVkFMVUVTICgnIi5hZGRzbGFzaGVzKCRrZXl3b3JkKS4iJywgJyIuYWRkc2xhc2hlcygka2V5d29yZCkuIicsICcxJywgJzAnLCAnIi50aW1lKCkuIicpOyAiOw0KICAgICAgICAgICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJGlucXVlcnkpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoIlVQREFURSBgI0BfX3NlYXJjaF9rZXl3b3Jkc2AgU0VUIGNvdW50PWNvdW50KzEsbGFzdHRpbWU9JyIudGltZSgpLiInIFdIRVJFIGtleXdvcmQ9JyIuYWRkc2xhc2hlcygka2V5d29yZCkuIic7ICIpOw0KICAgICAgICB9DQoNCiAgICAgICAgJGtleXdvcmQgPSB1cmxlbmNvZGUoJGtleXdvcmQpOw0KICAgICAgICAkYmFpZHVfc2VhcmNoX3VybCA9ICJodHRwOi8vemhhbm5laS5iYWlkdS5jb20vY3NlL3NlYXJjaD9zPXskc2l0ZV9pZH0mZW50cnk9MSZxPXska2V5d29yZH17JGFkZHF1ZXJ5fSI7DQogICAgICAgIGhlYWRlcigiTG9jYXRpb246eyRiYWlkdV9zZWFyY2hfdXJsfSIpOw0KICAgICAgICBleGl0Ow0KICAgIH0NCn0NCg0KLy/mn6Xmib7moI/nm67kv6Hmga8NCmlmKGVtcHR5KCR0eXBlaWQpKQ0Kew0KICAgICR0eXBlbmFtZUNhY2hlRmlsZSA9IERFREVEQVRBLicvY2FjaGUvdHlwZW5hbWUuaW5jJzsNCiAgICBpZighZmlsZV9leGlzdHMoJHR5cGVuYW1lQ2FjaGVGaWxlKSB8fCBmaWxlbXRpbWUoJHR5cGVuYW1lQ2FjaGVGaWxlKSA8IHRpbWUoKS0oMzYwMCoyNCkgKQ0KICAgIHsNCiAgICAgICAgJGZwID0gZm9wZW4oREVERURBVEEuJy9jYWNoZS90eXBlbmFtZS5pbmMnLCAndycpOw0KICAgICAgICBmd3JpdGUoJGZwLCAiPCIuIj9waHBcclxuIik7DQogICAgICAgICRkc3FsLT5TZXRRdWVyeSgiU2VsZWN0IGlkLHR5cGVuYW1lLGNoYW5uZWx0eXBlIEZyb20gYCNAX19hcmN0eXBlYCIpOw0KICAgICAgICAkZHNxbC0+RXhlY3V0ZSgpOw0KICAgICAgICB3aGlsZSgkcm93ID0gJGRzcWwtPkdldEFycmF5KCkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRyb3dbJ3R5cGVuYW1lJ10gPSBIdG1sUmVwbGFjZSgkcm93Wyd0eXBlbmFtZSddKTsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICJcJHR5cGVBcnJbeyRyb3dbJ2lkJ119XSA9ICd7JHJvd1sndHlwZW5hbWUnXX0nO1xyXG4iKTsNCiAgICAgICAgfQ0KICAgICAgICBmd3JpdGUoJGZwLCAnPycuJz4nKTsNCiAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgfQ0KICAgIC8v5byV5YWl5qCP55uu57yT5a2Y5bm255yL5YWz6ZSu5a2X5piv5ZCm5pyJ55u45YWz5qCP55uu5YaF5a65DQogICAgcmVxdWlyZV9vbmNlKCR0eXBlbmFtZUNhY2hlRmlsZSk7DQogICAgaWYoaXNzZXQoJHR5cGVBcnIpICYmIGlzX2FycmF5KCR0eXBlQXJyKSkNCiAgICB7DQogICAgICAgIGZvcmVhY2goJHR5cGVBcnIgYXMgJGlkPT4kdHlwZW5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vJGtleXdvcmRuID0gc3RyX3JlcGxhY2UoJHR5cGVuYW1lLCAnICcsICRrZXl3b3JkKTsNCiAgICAgICAgICAgICRrZXl3b3JkbiA9ICRrZXl3b3JkOw0KICAgICAgICAgICAgaWYoJGtleXdvcmQgIT0gJGtleXdvcmRuKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRrZXl3b3JkID0gSHRtbFJlcGxhY2UoJGtleXdvcmRuKTsNCiAgICAgICAgICAgICAgICAkdHlwZWlkID0gaW50dmFsKCRpZCk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCiRrZXl3b3JkID0gYWRkc2xhc2hlcyhjbl9zdWJzdHIoJGtleXdvcmQsMzApKTsNCg0KaWYoJGNmZ19ub3RhbGxvd3N0ciAhPScnICYmIHByZWdfbWF0Y2goIiMiLiRjZmdfbm90YWxsb3dzdHIuIiNpIiwgJGtleXdvcmQpKQ0Kew0KICAgIFNob3dNc2coIuS9oOeahOaQnOe0ouWFs+mUruWtl+S4reWtmOWcqOmdnuazleWGheWuue+8jOiiq+ezu+e7n+emgeatou+8gSIsIi0xIik7DQogICAgZXhpdCgpOw0KfQ0KDQppZigoJGtleXdvcmQ9PScnIHx8IHN0cmxlbigka2V5d29yZCk8MikgJiYgZW1wdHkoJHR5cGVpZCkpDQp7DQogICAgU2hvd01zZygn5YWz6ZSu5a2X5LiN6IO95bCP5LqOMuS4quWtl+iKgu+8gScsJy0xJyk7DQogICAgZXhpdCgpOw0KfQ0KDQovL+ajgOafpeaQnOe0oumXtOmalOaXtumXtA0KJGxvY2tmaWxlID0gREVERURBVEEuJy90aW1lLmxvY2suaW5jJzsNCiRsYXN0dGltZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRsb2NrZmlsZSk7DQppZighZW1wdHkoJGxhc3R0aW1lKSAmJiAoJGxhc3R0aW1lICsgJGNmZ19zZWFyY2hfdGltZSkgPiB0aW1lKCkpDQp7DQogICAgU2hvd01zZygn566h55CG5ZGY6K6+5a6a5pCc57Si5pe26Ze06Ze06ZqU5Li6Jy4kY2ZnX3NlYXJjaF90aW1lLifnp5LvvIzor7fnqI3lkI7lho3or5XvvIEnLCctMScpOw0KICAgIGV4aXQoKTsNCn0NCg0KLy/lvIDlp4vml7bpl7QNCmlmKGVtcHR5KCRzdGFydHRpbWUpKSAkc3RhcnR0aW1lID0gLTE7DQplbHNlDQp7DQogICAgJHN0YXJ0dGltZSA9IChpc19udW1lcmljKCRzdGFydHRpbWUpID8gJHN0YXJ0dGltZSA6IC0xKTsNCiAgICBpZigkc3RhcnR0aW1lPjApDQogICAgew0KICAgICAgICRkYXlzdCA9IEdldE1rVGltZSgiMjAwOC0xLTIgMDowOjAiKSAtIEdldE1rVGltZSgiMjAwOC0xLTEgMDowOjAiKTsNCiAgICAgICAkc3RhcnR0aW1lID0gdGltZSgpIC0gKCRzdGFydHRpbWUgKiAkZGF5c3QpOw0KICB9DQp9DQoNCiR0MSA9IEV4ZWNUaW1lKCk7DQoNCiRzcCA9IG5ldyBTZWFyY2hWaWV3KCR0eXBlaWQsJGtleXdvcmQsJG9yZGVyYnksJGNoYW5uZWx0eXBlLCRzZWFyY2h0eXBlLCRzdGFydHRpbWUsJHBhZ2VzaXplLCRrd3R5cGUsJG1pZCk7DQoka2V5d29yZCA9ICRvbGRrZXl3b3JkOw0KJHNwLT5EaXNwbGF5KCk7DQoNCg0KUHV0RmlsZSgkbG9ja2ZpbGUsIHRpbWUoKSk7DQoNCi8vZWNobyBFeGVjVGltZSgpIC0gJHQxOw== - - - diff --git a/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e-readme.php b/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e.xml b/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e.xml deleted file mode 100755 index cd87ff78..00000000 --- a/src/data/module/acb8b88eb4a6d4bfc375c18534f9439e.xml +++ /dev/null @@ -1,86 +0,0 @@ - - -name=投票模块 -team=织梦官方 -time=2009-07-01 -email=admin@dedecms.com -url=www.dedecms.com -hash=acb8b88eb4a6d4bfc375c18534f9439e -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgwqkyMDAzLTIwMDjvvIxEZWRlQ21zLmNvbSDkv53nlZnmiYDmnInmnYPliKnjgIIgPC9wPg0KPHA+5oSf6LCi5oKo6YCJ5oup57uH5qKm5YaF5a65566h55CG57O757uf77yI5Lul5LiL566A56ewRGVkZUNtc++8ie+8jERlZGVDbXPmmK/nm67liY3lm73lhoXmnIDlvLrlpKfjgIHmnIDnqLPlrprnmoTkuK3lsI/lnovpl6jmiLfnvZHnq5nlu7rorr7op6PlhrPmlrnmoYjkuYvkuIDvvIzlsYXkuo4gUEhQICsgTXlTUUwg55qE5oqA5pyv5byA5Y+R77yM5YWo6YOo5rqQ56CB5byA5pS+44CCRGVkZUNtcyDnmoTlrpjmlrnnvZHlnYDmmK/vvJogd3d3LmRlZGVjbXMuY29tICDkuqTmtYHorrrlnZvvvJogYmJzLmRlZGVjbXMuY29tPC9wPg0KPHA+5Li65LqG5L2/5L2g5q2j56Gu5bm25ZCI5rOV55qE5L2/55So5pys6L2v5Lu277yM6K+35L2g5Zyo5L2/55So5YmN5Yqh5b+F6ZiF6K+75riF5qWa5LiL6Z2i55qE5Y2P6K6u5p2h5qy+77yaPC9wPg0KPHA+PHN0cm9uZz7kuIDjgIHmnKzmjojmnYPljY/orq7pgILnlKjkuJTku4XpgILnlKjkuo4gRGVkZUNtcyA1LngueCDniYjmnKzvvIxEZWRlQ21z5a6Y5pa55a+55pys5o6I5p2D5Y2P6K6u55qE5pyA57uI6Kej6YeK5p2D44CCIDwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+5LqM44CB5Y2P6K6u6K645Y+v55qE5p2D5YipIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5oKo5Y+v5Lul5Zyo5a6M5YWo6YG15a6I5pys5pyA57uI55So5oi35o6I5p2D5Y2P6K6u55qE5Z+656GA5LiK77yM5bCG5pys6L2v5Lu25bqU55So5LqO6Z2e5ZWG5Lia55So6YCU77yM6ICM5LiN5b+F5pSv5LuY6L2v5Lu254mI5p2D5o6I5p2D6LS555So44CCIDxiciAvPg0KICAy44CB5oKo5Y+v5Lul5Zyo5Y2P6K6u6KeE5a6a55qE57qm5p2f5ZKM6ZmQ5Yi26IyD5Zu05YaF5L+u5pS5IERlZGVDbXMg5rqQ5Luj56CB5oiW55WM6Z2i6aOO5qC85Lul6YCC5bqU5oKo55qE572R56uZ6KaB5rGC44CCIDxiciAvPg0KICAz44CB5oKo5oul5pyJ5L2/55So5pys6L2v5Lu25p6E5bu655qE572R56uZ5YWo6YOo5YaF5a655omA5pyJ5p2D77yM5bm254us56uL5om/5ouF5LiO6L+Z5Lqb5YaF5a6555qE55u45YWz5rOV5b6L5LmJ5Yqh44CCIDxiciAvPg0KNOOAgeiOt+W+l+WVhuS4muaOiOadg+S5i+WQju+8jOaCqOWPr+S7peWwhuacrOi9r+S7tuW6lOeUqOS6juWVhuS4mueUqOmAlO+8jOWQjOaXtuS+neaNruaJgOi0reS5sOeahOaOiOadg+exu+Wei+S4reehruWumueahOaKgOacr+aUr+aMgeWGheWuue+8jOiHqui0reS5sOaXtuWIu+i1t++8jOWcqOaKgOacr+aUr+aMgeacn+mZkOWGheaLpeaciemAmui/h+aMh+WumueahOaWueW8j+iOt+W+l+aMh+WumuiMg+WbtOWGheeahOaKgOacr+aUr+aMgeacjeWKoeOAguWVhuS4muaOiOadg+eUqOaIt+S6q+acieWPjeaYoOWSjOaPkOWHuuaEj+ingeeahOadg+WKm++8jOebuOWFs+aEj+ingeWwhuiiq+S9nOS4uummluimgeiAg+iZke+8jOS9huayoeacieS4gOWumuiiq+mHh+e6s+eahOaJv+ivuuaIluS/neivgeOAgiA8L3A+DQo8cD48c3Ryb25nPuS4ieOAgeWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItiA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeacquiOt+WVhuS4muaOiOadg+S5i+WJje+8jOS4jeW+l+WwhuacrOi9r+S7tueUqOS6juWVhuS4mueUqOmAlO+8iOWMheaLrOS9huS4jemZkOS6juS8geS4mue9keermeOAgee7j+iQpeaAp+e9keermeOAgeS7peiQpeWIqeS4uuebrueahOaIluWunueOsOebiOWIqeeahOe9keerme+8ieOAgui0reS5sOWVhuS4muaOiOadg+ivt+eZu+mZhiBiYnMuZGVkZWNtcy5jb20g5LqG6Kej5pyA5paw6K+05piO44CCIDxiciAvPg0KICAy44CB5pyq57uP5a6Y5pa56K645Y+v77yM5LiN5b6X5a+55pys6L2v5Lu25oiW5LiO5LmL5YWz6IGU55qE5ZWG5Lia5o6I5p2D6L+b6KGM5Ye656ef44CB5Ye65ZSu44CB5oq15oq85oiW5Y+R5pS+5a2Q6K645Y+v6K+B44CCIDxiciAvPg0KICAz44CB5LiN566h5L2g55qE572R56uZ5piv5ZCm5pW05L2T5L2/55SoIERlZGVDbXMg77yM6L+Y5piv6YOo5Lu95qCP55uu5L2/55SoIERlZGVDbXPvvIzlnKjkvaDkvb/nlKjkuoYgRGVkZUNtcyDnmoTnvZHnq5nkuLvpobXkuIrlv4XpobvliqDkuIogRGVkZUNtcyDlrpjmlrnnvZHlnYAod3d3LmRlZGVjbXMuY29tKeeahOmTvuaOpeOAgiA8YnIgLz4NCiAgNOOAgeacque7j+WumOaWueiuuOWPr++8jOemgeatouWcqCBEZWRlQ21zIOeahOaVtOS9k+aIluS7u+S9lemDqOWIhuWfuuehgOS4iuS7peWPkeWxleS7u+S9lea0vueUn+eJiOacrOOAgeS/ruaUueeJiOacrOaIluesrOS4ieaWueeJiOacrOeUqOS6jumHjeaWsOWIhuWPkeOAgiA8YnIgLz4NCjXjgIHlpoLmnpzmgqjmnKrog73pgbXlrojmnKzljY/orq7nmoTmnaHmrL7vvIzmgqjnmoTmjojmnYPlsIbooqvnu4jmraLvvIzmiYDooqvorrjlj6/nmoTmnYPliKnlsIbooqvmlLblm57vvIzlubbmib/mi4Xnm7jlupTms5XlvovotKPku7vjgIIgPC9wPg0KPHA+PHN0cm9uZz7lm5vjgIHmnInpmZDmi4Xkv53lkozlhY3otKPlo7DmmI4gPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKzova/ku7blj4rmiYDpmYTluKbnmoTmlofku7bmmK/kvZzkuLrkuI3mj5Dkvpvku7vkvZXmmI7noa7nmoTmiJbpmpDlkKvnmoTotZTlgb/miJbmi4Xkv53nmoTlvaLlvI/mj5DkvpvnmoTjgIIgPGJyIC8+DQogIDLjgIHnlKjmiLflh7rkuo7oh6rmhL/ogIzkvb/nlKjmnKzova/ku7bvvIzmgqjlv4Xpobvkuobop6Pkvb/nlKjmnKzova/ku7bnmoTpo47pmanvvIzlnKjlsJrmnKrotK3kubDkuqflk4HmioDmnK/mnI3liqHkuYvliY3vvIzmiJHku6zkuI3mib/or7rlr7nlhY3otLnnlKjmiLfmj5Dkvpvku7vkvZXlvaLlvI/nmoTmioDmnK/mlK/mjIHjgIHkvb/nlKjmi4Xkv53vvIzkuZ/kuI3mib/mi4Xku7vkvZXlm6Dkvb/nlKjmnKzova/ku7bogIzkuqfnlJ/pl67popjnmoTnm7jlhbPotKPku7vjgIIgPGJyIC8+DQogIDPjgIHnlLXlrZDmlofmnKzlvaLlvI/nmoTmjojmnYPljY/orq7lpoLlkIzlj4zmlrnkuabpnaLnrb7nvbLnmoTljY/orq7kuIDmoLfvvIzlhbfmnInlrozlhajnmoTlkoznrYnlkIznmoTms5XlvovmlYjlipvjgILmgqjkuIDml6blvIDlp4vnoa7orqTmnKzljY/orq7lubblronoo4UgRGVkZUNtc++8jOWNs+iiq+inhuS4uuWujOWFqOeQhuino+W5tuaOpeWPl+acrOWNj+iurueahOWQhOmhueadoeasvu+8jOWcqOS6q+acieS4iui/sOadoeasvuaOiOS6iOeahOadg+WKm+eahOWQjOaXtu+8jOWPl+WIsOebuOWFs+eahOe6puadn+WSjOmZkOWItuOAguWNj+iuruiuuOWPr+iMg+WbtOS7peWklueahOihjOS4uu+8jOWwhuebtOaOpei/neWPjeacrOaOiOadg+WNj+iuruW5tuaehOaIkOS+teadg++8jOaIkeS7rOacieadg+maj+aXtue7iOatouaOiOadg++8jOi0o+S7pOWBnOatouaNn+Wus++8jOW5tuS/neeVmei/veeptuebuOWFs+i0o+S7u+eahOadg+WKm+OAgiA8YnIgLz4NCjTjgIHlpoLmnpzmnKzova/ku7bluKbmnInlhbblroPova/ku7bnmoTmlbTlkIhBUEnnpLrojIPkvovlrZDljIXvvIzov5nkupvmlofku7bniYjmnYPkuI3lsZ7kuo7mnKzova/ku7blrpjmlrnvvIzlubbkuJTov5nkupvmlofku7bmmK/msqHnu4/ov4fmjojmnYPlj5HluIPnmoTvvIzor7flj4LogIPnm7jlhbPova/ku7bnmoTkvb/nlKjorrjlj6/lkIjms5XnmoTkvb/nlKjjgII8L3A+DQo8cD7ljY/orq7lj5HluIPml7bpl7TvvJogIDIwMDjlubQ45pyIMjDml6UgQnkgRGVkZUNtcy5jb208L3A+DQo8cD7CoDwvcD4= - - -RFJPUCBUQUxCRSBJRiBFWElTVFMgYCNAX192b3RlYDsNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjQF9fdm90ZWAgKA0KICBgYWlkYCBtZWRpdW1pbnQoOCkgdW5zaWduZWQgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsDQogIGB2b3RlbmFtZWAgdmFyY2hhcig1MCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgYHN0YXJ0dGltZWAgaW50KDEwKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgYGVuZHRpbWVgIGludCgxMCkgdW5zaWduZWQgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGB0b3RhbGNvdW50YCBtZWRpdW1pbnQoOCkgdW5zaWduZWQgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGBpc21vcmVgIHRpbnlpbnQoNikgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGByYW5nZWAgdGlueWludCg2KSBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgYHZpZXdgIHRpbnlpbnQoNikgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGBzcGVjYCBpbnQoMjApIHVuc2lnbmVkIE5PVCBOVUxMIGRlZmF1bHQgJzAnLA0KICBgaXNlbmFibGVgIHRpbnlpbnQoNikgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGB2b3Rlbm90ZWAgdGV4dCwNCiAgUFJJTUFSWSBLRVkgIChgYWlkYCkNCikgIEVOR0lORT1NeUlTQU07DQoNCkRST1AgVEFMQkUgSUYgRVhJU1RTIGAjQF9fdm90ZV9tZW1iZXJgOw0KQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNAX192b3RlX21lbWJlcmAgKA0KICBgaWRgIG1lZGl1bWludCg4KSB1bnNpZ25lZCBOT1QgTlVMTCBhdXRvX2luY3JlbWVudCwNCiAgYHZvdGVpZGAgaW50KDEwKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgYHVzZXJpZGAgdmFyY2hhcig1MCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgYHVwdGltZWAgaW50KDEwKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgIFBSSU1BUlkgS0VZICAoYGlkYCkNCikgIEVOR0lORT1NeUlTQU07DQoNCg0KREVMRVRFIEZST00gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfmipXnpajmqKHlnZcnOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn5oqV56Wo5qih5Z2XJywgJzxtOml0ZW0gbmFtZT0nJ+aKleelqOaooeWdlycnIGxpbms9Jyd2b3RlX21haW4ucGhwJycgcmFuaz0nJ3BsdXNf5oqV56Wo5qih5Z2XJycgdGFyZ2V0PScnbWFpbicnIC8+JywgJycsICfnu4fmoqblm6LpmJ8nLCAxLCAnJyk7DQpJTlNFUlQgSU5UTyBgI0BfX3ZvdGVgIFZBTFVFUyAoMSwgJ+S9oOaYr+S7juWTquWEv+W+l+efpeacrOermeeahO+8nycsIDEyNjYzMzYwMDAsIDE1ODQ1NDcyMDAsIDAsIDAsIDEsIDEsIDAsIDAsICc8djpub3RlIGlkPScnMScnIGNvdW50PScnMScnPuaci+WPi+S7i+e7jTwvdjpub3RlPnJuPHY6bm90ZSBpZD0nJzInJyBjb3VudD0nJzAnJz7pl6jmiLfnvZHnq5nnmoTmkJzntKLlvJXmk448L3Y6bm90ZT5ybjx2Om5vdGUgaWQ9JyczJycgY291bnQ9JycyJyc+R29vZ2xl5oiW55m+5bqm5pCc57SiPC92Om5vdGU+cm48djpub3RlIGlkPScnNCcnIGNvdW50PScnMicnPuWIq+eahOe9keermeS4iueahOmTvuaOpTwvdjpub3RlPnJuPHY6bm90ZSBpZD0nJzUnJyBjb3VudD0nJzEnJz7lhbblroPpgJTlvoQ8L3Y6bm90ZT5ybicpOw== - - -REVMRVRFIEZST00gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICfmipXnpajmqKHlnZcnOw0KDQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX3ZvdGVgOw0KDQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX3ZvdGVfbWVtYmVyYDs= - - - - - - - - -../include/taglib/vote.lib.php -../dede/vote_add.php -../dede/vote_edit.php -../dede/vote_getcode.php -../dede/vote_main.php -../dede/templets/vote_add.htm -../dede/templets/vote_edit.htm -../dede/templets/vote_getcode.htm -../dede/templets/vote_main.htm -../plus/vote.php -../data/vote/vote_1.js - - - - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpDQp7DQogICAgZXhpdCgiUmVxdWVzdCBFcnJvciEiKTsNCn0NCi8qKg0KICogzbbGsbHqx6kNCiAqDQogKiBAdmVyc2lvbiAgICAgICAgJElkOiB2b3RlLmxpYi5waHAgMSA5OjI5IDIwMTDE6jfUwjbI1VogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLlRhZ2xpYg0KICogQGNvcHlyaWdodCAgICAgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTAsIERlc0RldiwgSW5jLg0KICogQGxpY2Vuc2UgICAgICAgIGh0dHA6Ly9oZWxwLmRlZGVjbXMuY29tL3VzZXJzZ3VpZGUvbGljZW5zZS5odG1sDQogKiBAbGluayAgICAgICAgICAgaHR0cDovL3d3dy5kZWRlY21zLmNvbQ0KICovDQogDQovKj4+ZGVkZT4+DQo8bmFtZT7NtsaxserHqTwvbmFtZT4NCjx0eXBlPsirvtax6rzHPC90eXBlPg0KPGZvcj5WNTUsVjU2LFY1NzwvZm9yPg0KPGRlc2NyaXB0aW9uPtPD09q78cih0rvX6c22xrGx7bWlPC9kZXNjcmlwdGlvbj4NCjxkZW1vPg0Ke2RlZGU6dm90ZSBpZD0nJyBsaW5laGVpZ2h0PScyMicgdGFibGV3aWR0aD0nMTAwJScgdGl0bGViZ2NvbG9yPScjRURFREUyJyB0aXRsZWJhY2tncm91bmQ9JycgdGFibGViZ2NvbG9yPScjRkZGRkZGJy99DQp7L2RlZGV9DQo8L2RlbW8+DQo8YXR0cmlidXRlcz4NCiAgICA8aXRlcm0+aWQ6yv3X1qOstbHHsM22xrFJRDwvaXRlcm0+DQogICAgPGl0ZXJtPmxpbmVoZWlnaHQ6se248bjftsg8L2l0ZXJtPg0KICAgIDxpdGVybT50YWJsZXdpZHRoOrHtuPG/7bbIPC9pdGVybT4NCiAgICA8aXRlcm0+dGl0bGViZ2NvbG9yOs22xrGx6szisbO+sMmrPC9pdGVybT4NCiAgICA8aXRlcm0+dGl0bGViYWNrZ3JvdW5kOrHqzOKxs76wzbw8L2l0ZXJtPg0KICAgIDxpdGVybT50YWJsZWJnOs22xrGx7bjxsbO+sMmrPC9pdGVybT4NCjwvYXR0cmlidXRlcz4NCj4+ZGVkZT4+Ki8NCiANCnJlcXVpcmVfb25jZShERURFSU5DLicvZGVkZXZvdGUuY2xhc3MucGhwJyk7DQpmdW5jdGlvbiBsaWJfdm90ZSgmJGN0YWcsJiRyZWZPYmopDQp7DQogICAgZ2xvYmFsICRkc3FsOw0KICAgICRhdHRsaXN0PSJpZHwwLGxpbmVoZWlnaHR8MjQsdGFibGV3aWR0aHwxMDAlLHRpdGxlYmdjb2xvcnwjRURFREUyLHRpdGxlYmFja2dyb3VwfCx0YWJsZWJnfCNGRkZGRkYiOw0KICAgIEZpbGxBdHRzRGVmYXVsdCgkY3RhZy0+Q0F0dHJpYnV0ZS0+SXRlbXMsJGF0dGxpc3QpOw0KICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOw0KDQogICAgaWYoZW1wdHkoJGlkKSkgJGlkPTA7DQogICAgaWYoJGlkPT0wKQ0KICAgIHsNCiAgICAgICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCBhaWQgRlJPTSBgI0BfX3ZvdGVgIE9SREVSIEJZIGFpZCBERVNDIExJTUlUIDAsMSIpOw0KICAgICAgICBpZighaXNzZXQoJHJvd1snYWlkJ10pKSByZXR1cm4gJyc7DQogICAgICAgIGVsc2UgJGlkPSRyb3dbJ2FpZCddOw0KICAgIH0NCiAgICAkdnQgPSBuZXcgRGVkZVZvdGUoJGlkKTsNCiAgICByZXR1cm4gJHZ0LT5HZXRWb3RlRm9ybSgkbGluZWhlaWdodCwkdGFibGV3aWR0aCwkdGl0bGViZ2NvbG9yLCR0aXRsZWJhY2tncm91cCwkdGFibGViZyk7DQp9 - - -PD9waHANCi8qKg0KICog5oqV56Wo5qih5Z2XDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogdm90ZV9hZGQucGhwIDEgMjM6NTQgMjAxMOW5tDfmnIgyMOaXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLkFkbWluaXN0cmF0b3INCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvZGVkZXZvdGUuY2xhc3MucGhwIik7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2hlbHBlcnMvZmlsdGVyLmhlbHBlci5waHAiKTsNCkNoZWNrUHVydmlldygncGx1c1/mipXnpajmqKHlnZcnKTsNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0ID0gIiI7DQppZihlbXB0eSgkaXNhcmMpKSAgJGlzYXJjID0gMDsgDQppZigkZG9wb3N0PT0ic2F2ZSIgJiYgJGlzYXJjID09IDApDQp7DQogICAgJHN0YXJ0dGltZSA9IEdldE1rVGltZSgkc3RhcnR0aW1lKTsNCiAgICAkZW5kdGltZSA9IEdldE1rVGltZSgkZW5kdGltZSk7DQogICAgJHZvdGVpdGVtcyA9ICIiOw0KICAgIA0KICAgICRqID0gMDsNCiAgICBmb3IoJGk9MTsgJGk8PTE1OyAkaSsrKQ0KICAgIHsNCiAgICAgICAgaWYoIWVtcHR5KCR7InZvdGVpdGVtIi4kaX0pKQ0KICAgICAgICB7DQogICAgICAgICAgICAkaisrOw0KICAgICAgICAgICAgJHZvdGVpdGVtcyAuPSAiPHY6bm90ZSBpZD1cXCckalxcJyBjb3VudD1cXCcwXFwnPiIuJHsidm90ZWl0ZW0iLiRpfS4iPC92Om5vdGU+XHJcbiI7DQogICAgICAgIH0NCiAgICB9DQogICAgJGluUXVlcnkgPSAiSU5TRVJUIElOVE8gI0BfX3ZvdGUodm90ZW5hbWUsc3RhcnR0aW1lLGVuZHRpbWUsdG90YWxjb3VudCxpc21vcmUsdm90ZW5vdGUsaXNhbGxvdyx2aWV3LHNwZWMsaXNlbmFibGUpDQogICAgVkFMVUVTKCckdm90ZW5hbWUnLCckc3RhcnR0aW1lJywnJGVuZHRpbWUnLCcwJywnJGlzbW9yZScsJyR2b3RlaXRlbXMnLCckaXNhbGxvdycsJyR2aWV3JywnJHNwZWMnLCckaXNlbmFibGUnKTsgIjsNCiAgICBpZighJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJGluUXVlcnkpKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5aKe5Yqg5oqV56Wo5aSx6LSl77yM6K+35qOA5p+l5pWw5o2u5piv5ZCm6Z2e5rOV77yBIiwiLTEiKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICAkYWlkID0gJGRzcWwtPkdldExhc3RJRCgpOw0KICAgICR2dCA9IG5ldyBEZWRlVm90ZSgkYWlkKTsNCiAgICAkdm90ZV9jb250ZW50ID0gJHZ0LT5HZXRWb3RlRm9ybSgpOw0KICAgICR2b3RlX2NvbnRlbnQgPSBwcmVnX3JlcGxhY2UoYXJyYXkoIiMvIyIsIiMoW1xyXG5dKVtcc10rIyIpLGFycmF5KCJcLyIsIiAiKSwkdm90ZV9jb250ZW50KTsvL+WPluWHuuWGheWuueS4reeahOepuueZveWtl+espuW5tui/m+ihjOi9rOS5iQ0KICAgICR2b3RlX2NvbnRlbnQgPSAnZG9jdW1lbnQud3JpdGUoIicuJHZvdGVfY29udGVudC4nIik7JzsNCiAgICANCiAgICAkdm90ZV9maWxlID0gREVERURBVEEuIi92b3RlL3ZvdGVfIi4kYWlkLiIuanMiOw0KICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR2b3RlX2ZpbGUsICR2b3RlX2NvbnRlbnQpOw0KICAgIFNob3dNc2coIuaIkOWKn+WinuWKoOS4gOe7hOaKleelqO+8gSIsInZvdGVfbWFpbi5waHAiKTsNCiAgICBleGl0KCk7DQp9DQplbHNlIGlmKCRkb3Bvc3Q9PSJzYXZlIiAmJiAkaXNhcmMgPT0gMSkNCnsNCiAgICAkc3RhcnR0aW1lID0gR2V0TWtUaW1lKCRzdGFydHRpbWUpOw0KICAgICRlbmR0aW1lID0gR2V0TWtUaW1lKCRlbmR0aW1lKTsNCiAgICAkdm90ZWl0ZW1zID0gIiI7DQogICAgDQogICAgJGogPSAwOw0KICAgIGZvcigkaT0xOyAkaTw9MTU7ICRpKyspDQogICAgew0KICAgICAgICBpZighZW1wdHkoJHsidm90ZWl0ZW0iLiRpfSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRqKys7DQogICAgICAgICAgICAkdm90ZWl0ZW1zIC49ICI8djpub3RlIGlkPVxcJyRqXFwnIGNvdW50PVxcJzBcXCc+Ii4keyJ2b3RlaXRlbSIuJGl9LiI8L3Y6bm90ZT5cclxuIjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkaW5RdWVyeSA9ICJJTlNFUlQgSU5UTyAjQF9fdm90ZSh2b3RlbmFtZSxzdGFydHRpbWUsZW5kdGltZSx0b3RhbGNvdW50LGlzbW9yZSx2b3Rlbm90ZSxpc2FsbG93LHZpZXcsc3BlYyxpc2VuYWJsZSkNCiAgICBWQUxVRVMoJyR2b3RlbmFtZScsJyRzdGFydHRpbWUnLCckZW5kdGltZScsJzAnLCckaXNtb3JlJywnJHZvdGVpdGVtcycsJyRpc2FsbG93JywnJHZpZXcnLCckc3BlYycsJyRpc2VuYWJsZScpOyAiOw0KICAgIGlmKCEkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkaW5RdWVyeSkpDQogICAgew0KICAgICAgICBTaG93TXNnKCLlop7liqDmipXnpajlpLHotKXvvIzor7fmo4Dmn6XmlbDmja7mmK/lkKbpnZ7ms5XvvIEiLCItMSIpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgICRhaWQgPSAkZHNxbC0+R2V0TGFzdElEKCk7DQogICAgJHZ0ID0gbmV3IERlZGVWb3RlKCRhaWQpOw0KICAgICR2b3RlX2NvbnRlbnQgPSAkdnQtPkdldFZvdGVGb3JtKCk7DQogICAgJHZvdGVfY29udGVudCA9IHByZWdfcmVwbGFjZShhcnJheSgiIy8jIiwiIyhbXHJcbl0pW1xzXSsjIiksYXJyYXkoIlwvIiwiICIpLCR2b3RlX2NvbnRlbnQpOy8v5Y+W5Ye65YaF5a655Lit55qE56m655m95a2X56ym5bm26L+b6KGM6L2s5LmJDQogICAgJHZvdGVfY29udGVudCA9ICdkb2N1bWVudC53cml0ZSgiJy4kdm90ZV9jb250ZW50LiciKTsnOw0KICAgIA0KICAgICR2b3RlX2ZpbGUgPSBERURFREFUQS4iL3ZvdGUvdm90ZV8iLiRhaWQuIi5qcyI7DQogICAgZmlsZV9wdXRfY29udGVudHMoJHZvdGVfZmlsZSwgJHZvdGVfY29udGVudCk7DQogICAgU2hvd01zZygi5oiQ5Yqf5aKe5Yqg5LiA57uE5oqV56Wo77yBIiwidm90ZV9tYWluLnBocD9pc3NlbD0xJmFpZD0iLiRhaWQpOw0KICAgIGV4aXQoKTsNCn0NCiRzdGFydERheSA9IHRpbWUoKTsNCiRlbmREYXkgPSBBZGREYXkoJHN0YXJ0RGF5LDMwKTsNCiRzdGFydERheSA9IEdldERhdGVUaW1lTWsoJHN0YXJ0RGF5KTsNCiRlbmREYXkgPSBHZXREYXRlVGltZU1rKCRlbmREYXkpOw0KaW5jbHVkZSBEZWRlSW5jbHVkZSgndGVtcGxldHMvdm90ZV9hZGQuaHRtJyk7 - - -PD9waHANCi8qKg0KICog5oqV56Wo5qih5Z2X57yW6L6RDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogdm90ZV9lZGl0LnBocCAxIDIzOjU0IDIwMTDlubQ35pyIMjDml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmUoZGlybmFtZShfX0ZJTEVfXykuIi9jb25maWcucGhwIik7DQpDaGVja1B1cnZpZXcoJ3BsdXNf5oqV56Wo5qih5Z2XJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2RlZGV0YWcuY2xhc3MucGhwIik7DQppZihlbXB0eSgkZG9wb3N0KSkgJGRvcG9zdD0iIjsNCg0KJGFpZCA9IGlzc2V0KCRhaWQpICYmIGlzX251bWVyaWMoJGFpZCkgPyAkYWlkIDogMDsNCiRFTlZfR09CQUNLX1VSTCA9IGVtcHR5KCRfQ09PS0lFWydFTlZfR09CQUNLX1VSTCddKSA/ICJ2b3RlX21haW4ucGhwIiA6ICRfQ09PS0lFWydFTlZfR09CQUNLX1VSTCddOw0KDQppZigkZG9wb3N0PT0iZGVsZXRlIikNCnsNCiAgICBpZigkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgiREVMRVRFIEZST00gI0BfX3ZvdGUgV0hFUkUgYWlkPSckYWlkJyIpKQ0KICAgIHsNCiAgICAgICAgaWYoJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoIkRFTEVURSBGUk9NICNAX192b3RlX21lbWJlciBXSEVSRSB2b3RlaWQ9JyRhaWQnIikpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNob3dNc2coJ+aIkOWKn+WIoOmZpOS4gOe7hOaKleelqCEnLCAkRU5WX0dPQkFDS19VUkwpOw0KICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICBTaG93TXNnKCfmjIflrprliKDpmaTmipXnpajkuI3lrZjlnKghJywgJEVOVl9HT0JBQ0tfVVJMKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQplbHNlIGlmKCRkb3Bvc3Q9PSJzYXZlZWRpdCIpDQp7DQogICAgJHN0YXJ0dGltZSA9IEdldE1rVGltZSgkc3RhcnR0aW1lKTsNCiAgICAkZW5kdGltZSA9IEdldE1rVGltZSgkZW5kdGltZSk7DQogICAgJHF1ZXJ5ID0gIlVQREFURSAjQF9fdm90ZSBTRVQgdm90ZW5hbWU9JyR2b3RlbmFtZScsDQogICAgICAgIHN0YXJ0dGltZT0nJHN0YXJ0dGltZScsDQogICAgICAgIGVuZHRpbWU9JyRlbmR0aW1lJywNCiAgICAgICAgdG90YWxjb3VudD0nJHRvdGFsY291bnQnLA0KICAgICAgICBpc21vcmU9JyRpc21vcmUnLA0KICAgICAgICB2b3Rlbm90ZT0nJHZvdGVub3RlJywNCiAgICAgICAgaXNhbGxvdz0nJGlzYWxsb3cnLA0KICAgICAgICB2aWV3PSckdmlldycsDQogICAgICAgIHNwZWM9JyRzcGVjJywNCiAgICAgICAgaXNlbmFibGU9JyRpc2VuYWJsZScNCiAgICAgICAgV0hFUkUgYWlkPSckYWlkJw0KICAgICAgICAiOw0KICAgIGlmKCRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSkpDQogICAgew0KICAgICAgICAkdnQgPSBuZXcgRGVkZVZvdGUoJGFpZCk7DQogICAgICAgICR2b3RlX2ZpbGUgPSBERURFREFUQS4iL3ZvdGUvdm90ZV8iLiRhaWQuIi5qcyI7DQogICAgICAgICR2b3RlX2NvbnRlbnQgPSAkdnQtPkdldFZvdGVGb3JtKCk7DQogICAgICAgICR2b3RlX2NvbnRlbnQgPSBwcmVnX3JlcGxhY2UoYXJyYXkoIiMvIyIsIiMoW1xyXG5dKVtcc10rIyIpLGFycmF5KCJcLyIsIiAiKSwkdm90ZV9jb250ZW50KTsgICAgICAgIC8v5Y+W5Ye65YaF5a655Lit55qE56m655m95a2X56ym5bm26L+b6KGM6L2s5LmJDQogICAgICAgICR2b3RlX2NvbnRlbnQgPSAnZG9jdW1lbnQud3JpdGUoIicuJHZvdGVfY29udGVudC4nIik7JzsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHZvdGVfZmlsZSwkdm90ZV9jb250ZW50KTsNCiAgICAgICAgU2hvd01zZygn5oiQ5Yqf5pu05pS55LiA57uE5oqV56WoIScsJEVOVl9HT0JBQ0tfVVJMKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygn5pu05pS55LiA57uE5oqV56Wo5aSx6LSlIScsJEVOVl9HT0JBQ0tfVVJMKTsNCiAgICB9DQp9DQplbHNlDQp7DQogICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gI0BfX3ZvdGUgV0hFUkUgYWlkPSckYWlkJyIpOw0KICAgIGlmKCFpc19hcnJheSgkcm93KSkNCiAgICB7DQogICAgICAgIFNob3dNc2coJ+aMh+WumuaKleelqOS4jeWtmOWcqO+8gScsICctMScpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIGluY2x1ZGUgRGVkZUluY2x1ZGUoJ3RlbXBsZXRzL3ZvdGVfZWRpdC5odG0nKTsNCn0= - - -PD9waHANCi8qKg0KICog6I635Y+W5oqV56Wo5Luj56CBDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogdm90ZV9nZXRjb2RlLnBocCAxIDIzOjU0IDIwMTDlubQ35pyIMjDml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvZGVkZXZvdGUuY2xhc3MucGhwIik7DQokYWlkID0gaXNzZXQoJGFpZCkgJiYgaXNfbnVtZXJpYygkYWlkKSA/ICRhaWQgOiAwOw0KaW5jbHVkZSBEZWRlSW5jbHVkZSgndGVtcGxldHMvdm90ZV9nZXRjb2RlLmh0bScpOw== - - -PD9waHANCi8qKg0KICog5oqV56Wo566h55CGDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogdm90ZV9tYWluLnBocCAxIDIzOjU0IDIwMTDlubQ35pyIMjDml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvZGF0YWxpc3RjcC5jbGFzcy5waHAiKTsNCnNldGNvb2tpZSgiRU5WX0dPQkFDS19VUkwiLCRkZWRlTm93dXJsLHRpbWUoKSszNjAwLCIvIik7DQokc3FsID0gIlNFTEVDVCBhaWQsdm90ZW5hbWUsc3RhcnR0aW1lLGVuZHRpbWUsdG90YWxjb3VudCxpc2VuYWJsZSBGUk9NICNAX192b3RlIE9SREVSIEJZIGFpZCBERVNDIjsNCiRkbGlzdCA9IG5ldyBEYXRhTGlzdENQKCk7DQokaXNzZWwgPSBpc3NldCgkaXNzZWwpID8gJGlzc2VsIDogMDsNCiRhaWQgPSBpc3NldCgkYWlkKSA/ICRhaWQgOiAwOw0KaWYoJGlzc2VsID09IDEpDQp7DQogICAgJGRsaXN0LT5TZXRQYXJhbWV0ZXIoJ2lzc2VsJywkaXNzZWwpOw0KICAgICRkbGlzdC0+U2V0VGVtcGxldChERURFQURNSU4uIi90ZW1wbGV0cy92b3RlX3NlbGVjdC5odG0iKTsNCn0gZWxzZSB7DQogICAgJGRsaXN0LT5TZXRUZW1wbGV0KERFREVBRE1JTi4iL3RlbXBsZXRzL3ZvdGVfbWFpbi5odG0iKTsNCn0NCiRkbGlzdC0+U2V0U291cmNlKCRzcWwpOw0KJGRsaXN0LT5kaXNwbGF5KCk7 - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5aKe5Yqg5oqV56WoPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9Ii4uL2luY2x1ZGUvanMvanF1ZXJ5L2pxdWVyeS5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iLi4vaW5jbHVkZS9qcy93ZWJjYWxlbmRhci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KdmFyIGk9MTsNCmZ1bmN0aW9uIEFkZEl0ZW0oKQ0KeyANCiAgaSsrOw0KICBpZihpPjE1KXsNCgkJYWxlcnQoIuacgOWkp+WPquWFgeiuuDE15Liq6YCJ6aG577yBIik7DQoJCXJldHVybjsNCiAgfQ0KICB2YXIgaHRtbGRhdGEgPSAiPGJyLz7pgInpobkiK2krIu+8miA8aW5wdXQgbmFtZT0ndm90ZWl0ZW0iK2krIicgdHlwZT0ndGV4dCcgc2l6ZT0nMzAnPiI7DQogIGpRdWVyeSgiI3ZvdGVpdGVtIikuYXBwZW5kKGh0bWxkYXRhKTsNCn0NCmZ1bmN0aW9uIFJlc2V0SXRlbSgpDQp7IA0KICBpID0gMTsNCgl2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZvdGVpdGVtIik7DQoJb2JqLmlubmVySFRNTD0i6YCJ6aG5Me+8miA8aW5wdXQgbmFtZT0ndm90ZWl0ZW0xJyB0eXBlPSd0ZXh0JyBzaXplPSczMCc+IjsNCn0NCmZ1bmN0aW9uIGNoZWNrU3VibWl0KCkNCnsNCglpZihkb2N1bWVudC5mb3JtMS52b3RlbmFtZS52YWx1ZT09IiIpDQoJew0KCQlhbGVydCgi5oqV56Wo5ZCN56ew5LiN6IO95Li656m677yBIik7DQoJCWRvY3VtZW50LmZvcm0xLnZvdGVuYW1lLmZvY3VzKCk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IGJhY2tncm91bmQ9ImltYWdlcy9hbGxiZy5naWYiIGxlZnRtYXJnaW49JzgnIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGJnY29sb3I9IiNENkQ2RDYiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9ImltYWdlcy90YmcuZ2lmIiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7Ij48Yj7mipXnpajnrqHnkIY8L2I+Jmd0OyZndDvlop7liqDmipXnpagmbmJzcDsmbmJzcDtbPGEgaHJlZj0idm90ZV9tYWluLnBocCI+PHU+566h55CG5Lul5b6A5oqV56Wo5YaF5a656K6w5b2VPC91PjwvYT5dPC90ZD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGhlaWdodD0iMjAwIiBiZ2NvbG9yPSIjRkZGRkZGIiB2YWxpZ249InRvcCI+DQoJPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI0IiBjZWxscGFkZGluZz0iNCI+DQogICAgICAgIDxmb3JtIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0idm90ZV9hZGQucGhwIiBvblN1Ym1pdD0icmV0dXJuIGNoZWNrU3VibWl0KCkiPg0KCQk8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdzYXZlJz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNhcmMiIHZhbHVlPSI8P3BocCBlY2hvICRpc2FyYzsgPz4iIC8+DQoJCTx0cj4gDQogICAgICAgICAgPHRkIHdpZHRoPSIxNSUiIGFsaWduPSJjZW50ZXIiPuaKleelqOWQjeensO+8mjwvdGQ+DQogICAgICAgICAgPHRkIHdpZHRoPSI4NSUiPiA8aW5wdXQgbmFtZT0idm90ZW5hbWUiIHR5cGU9InRleHQiIGlkPSJ2b3RlbmFtZSI+IDwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4gDQogICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuW8gOWni+aXtumXtO+8mjwvdGQ+DQogICAgICAgICAgPHRkPjxpbnB1dCBuYW1lPSJzdGFydHRpbWUiIHR5cGU9InRleHQiIGlkPSJzdGFydHRpbWUiIHZhbHVlPSI8P3BocCBlY2hvICRzdGFydERheT8+IiBjbGFzcz0iZGF0ZWljbyIgb25DbGljaz0iU2VsZWN0RGF0ZSh0aGlzLCd5eXl5LU1NLWRkIGhoOm1tOnNzJyw4MCwwKSI+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPiANCiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+57uT5p2f5pe26Ze077yaPC90ZD4NCiAgICAgICAgICA8dGQ+PGlucHV0IG5hbWU9ImVuZHRpbWUiIHR5cGU9InRleHQiIGlkPSJlbmR0aW1lIiB2YWx1ZT0iPD9waHAgZWNobyAkZW5kRGF5Pz4iIGNsYXNzPSJkYXRlaWNvIiBvbkNsaWNrPSJTZWxlY3REYXRlKHRoaXMsJ3l5eXktTU0tZGQgaGg6bW06c3MnLDgwLDApIj48L3RkPg0KICAgICAgICA8L3RyPg0KCQk8dHI+IA0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj7mmK/lkKblhYHorrjmuLjlrqLmipXnpajvvJo8L3RkPg0KICAgICAgICAgIDx0ZD4gPGlucHV0IG5hbWU9ImlzYWxsb3ciIHR5cGU9InJhZGlvIiBjbGFzcz0ibnAiIHZhbHVlPSIwIj4NCiAgICAgICAgICAgIOaYryDjgIAgDQogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iaXNhbGxvdyIgY2xhc3M9Im5wIiB2YWx1ZT0iMSIgY2hlY2tlZD4NCiAgICAgICAgICAgICAg5ZCmPC90ZD4NCiAgICAgICAgPC90cj4NCgkJPHRyPiANCiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+5piv5ZCm5YWB6K645p+l55yL5oqV56Wo77yaPC90ZD4NCiAgICAgICAgICA8dGQ+IDxpbnB1dCBuYW1lPSJ2aWV3IiB0eXBlPSJyYWRpbyIgY2xhc3M9Im5wIiB2YWx1ZT0iMCI+DQogICAgICAgICAgICDmmK8g44CAIA0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InZpZXciIGNsYXNzPSJucCIgdmFsdWU9IjEiIGNoZWNrZWQ+DQogICAgICAgICAgICAgIOWQpjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgIDx0cj4gDQogICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuaKleelqOaXtumXtOmXtOmalO+8mjwvdGQ+DQogICAgICAgICAgPHRkPjxpbnB1dCBuYW1lPSJzcGVjIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iIiBjbGFzcz0ic3BlYyI+DQogICAgICAgICAgICAoTuWkqeWQjuWPr+WGjeasoeaKleelqO+8jDAg6KGo56S65q2kSVDlnLDlnYDlj6rog73mipXkuIDmrKEpPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPiANCiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+5piv5ZCm5aSa6YCJ77yaPC90ZD4NCiAgICAgICAgICA8dGQ+IDxpbnB1dCBuYW1lPSJpc21vcmUiIHR5cGU9InJhZGlvIiBjbGFzcz0ibnAiIHZhbHVlPSIwIiBjaGVja2VkPg0KICAgICAgICAgICAg5Y2V6YCJIOOAgCANCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iaXNtb3JlIiBjbGFzcz0ibnAiIHZhbHVlPSIxIj4NCiAgICAgICAgICAgIOWkmumAiSA8L3RkPg0KICAgICAgICA8L3RyPg0KCQkNCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj7mipUg56WoIOmhue+8mjwvdGQ+DQogICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLlop7liqDmipXnpajpgInpobkiIG5hbWU9ImJiYiIgY2xhc3M9ImJ0MSIgb25DbGljaz0iQWRkSXRlbSgpOyI+DQogICAgICAgICAgICDjgIAgDQogICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i6YeN572u5oqV56Wo6YCJ6aG5IiBuYW1lPSJiYmIyIiBjbGFzcz0iYnQxIiBvbkNsaWNrPSJSZXNldEl0ZW0oKTsiPjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4gDQogICAgICAgICAgPHRkPjwvdGQ+DQogICAgICAgICAgPHRkPg0KCQkgIDxkaXYgaWQ9InZvdGVpdGVtIj4NCgkJCemAiemhuTHvvJogDQogICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9InZvdGVpdGVtMSIgdHlwZT0idGV4dCIgaWQ9InZvdGVpdGVtMSIgc2l6ZT0iMzAiPg0KCQkgIDwvZGl2Pg0KCQkgIDwvdGQ+DQogICAgICAgIDwvdHI+DQoJCTx0cj4gDQogICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuaYr+WQpuWQr+eUqO+8mjwvdGQ+DQogICAgICAgICAgPHRkPiA8aW5wdXQgbmFtZT0iaXNlbmFibGUiIHR5cGU9InJhZGlvIiBjbGFzcz0ibnAiIHZhbHVlPSIwIiBjaGVja2VkPg0KICAgICAgICAgICAg5pivIOOAgCANCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJpc2VuYWJsZSIgY2xhc3M9Im5wIiB2YWx1ZT0iMSI+DQogICAgICAgICAgICAgIOWQpjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4gDQogICAgICAgICAgPHRkIGhlaWdodD0iNDciPiZuYnNwOzwvdGQ+DQogICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlN1Ym1pdCIgdmFsdWU9IuS/neWtmOaKleelqOaVsOaNriI+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPiANCiAgICAgICAgICANCiAgICAgICAgPC90cj4NCgkJPC9mb3JtPg0KDQoJCTx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPg0KICAgICAgPC90YWJsZT4NCgkgPC90ZD4NCjwvdHI+DQoNCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+ - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5oqV56Wo566h55CGPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjRDZENkQ2Ij4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+PGI+5oqV56Wo566h55CGPC9iPiZndDsmZ3Q75aKe5Yqg5oqV56WoJm5ic3A7Jm5ic3A7WzxhIGhyZWY9InZvdGVfbWFpbi5waHAiPjx1PueuoeeQhuS7peW+gOaKleelqOWGheWuueiusOW9lTwvdT48L2E+XTwvdGQ+DQo8L3RyPg0KPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjIwMCIgYmdjb2xvcj0iI0ZGRkZGRiIgdmFsaWduPSJ0b3AiPg0KCTxmb3JtIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0idm90ZV9lZGl0LnBocCI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9wb3N0IiB2YWx1ZT0ic2F2ZWVkaXQiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFpZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGFpZD8+Ij4NCgkgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI0IiBjZWxscGFkZGluZz0iNCI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUlIiBhbGlnbj0iY2VudGVyIj7mipXnpajlkI3np7DvvJo8L3RkPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSI4NSUiPiA8aW5wdXQgbmFtZT0idm90ZW5hbWUiIHR5cGU9InRleHQiIGlkPSJ2b3RlbmFtZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJHJvd1sndm90ZW5hbWUnXT8+Ij4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuaKleelqOaAu+S6uuaVsO+8mjwvdGQ+DQogICAgICAgICAgICA8dGQ+PGlucHV0IG5hbWU9InRvdGFsY291bnQiIHR5cGU9InRleHQiIGlkPSJ0b3RhbGNvdW50IiB2YWx1ZT0iPD9waHAgZWNobyAkcm93Wyd0b3RhbGNvdW50J10/PiI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+5byA5aeL5pe26Ze077yaPC90ZD4NCiAgICAgICAgICAgIDx0ZD48aW5wdXQgbmFtZT0ic3RhcnR0aW1lIiB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnR0aW1lIiB2YWx1ZT0iPD9waHAgZWNobyBHZXREYXRlTWsoJHJvd1snc3RhcnR0aW1lJ10pPz4iPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPue7k+adn+aXtumXtO+8mjwvdGQ+DQogICAgICAgICAgICA8dGQ+PGlucHV0IG5hbWU9ImVuZHRpbWUiIHR5cGU9InRleHQiIGlkPSJlbmR0aW1lIiB2YWx1ZT0iPD9waHAgZWNobyBHZXREYXRlTWsoJHJvd1snZW5kdGltZSddKT8+Ij48L3RkPg0KICAgICAgICAgIDwvdHI+DQoJCTx0cj4gDQogICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuaYr+WQpuWFgeiuuOa4uOWuouaKleelqO+8mjwvdGQ+DQogICAgICAgICAgPHRkPiA8aW5wdXQgbmFtZT0iaXNhbGxvdyIgdHlwZT0icmFkaW8iIGNsYXNzPSJucCIgdmFsdWU9IjAiIDw/cGhwIGlmKCRyb3dbJ2lzYWxsb3cnXT09MCkgZWNobyAiIGNoZWNrZWQiOyA/Pj4NCiAgICAgICAgICAgIOaYryDjgIAgDQogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iaXNhbGxvdyIgY2xhc3M9Im5wIiB2YWx1ZT0iMSIgPD9waHAgaWYoJHJvd1snaXNhbGxvdyddPT0xKSBlY2hvICIgY2hlY2tlZCI7ID8+Pg0KICAgICAgICAgICAgICDlkKY8L3RkPg0KICAgICAgICA8L3RyPg0KCQk8dHI+IA0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj7mmK/lkKblhYHorrjmn6XnnIvmipXnpajvvJo8L3RkPg0KICAgICAgICAgIDx0ZD4gPGlucHV0IG5hbWU9InZpZXciIHR5cGU9InJhZGlvIiBjbGFzcz0ibnAiIHZhbHVlPSIwIiA8P3BocCBpZigkcm93Wyd2aWV3J109PTApIGVjaG8gIiBjaGVja2VkIjsgPz4+DQogICAgICAgICAgICDmmK8g44CAIA0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InZpZXciIGNsYXNzPSJucCIgdmFsdWU9IjEiIDw/cGhwIGlmKCRyb3dbJ3ZpZXcnXT09MSkgZWNobyAiIGNoZWNrZWQiOyA/Pj4NCiAgICAgICAgICAgICAg5ZCmPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgPHRyPiANCiAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+5oqV56Wo5pe26Ze06Ze06ZqU77yaPC90ZD4NCiAgICAgICAgICA8dGQ+PGlucHV0IG5hbWU9InNwZWMiIHR5cGU9InRleHQiIHZhbHVlPSI8P3BocCBlY2hvICRyb3dbJ3NwZWMnXSA/PiIgY2xhc3M9InNwZWMiID4NCiAgICAgICAgICAgIChO5aSp5ZCO5Y+v5YaN5qyh5oqV56Wo77yMMCDooajnpLrmraRJUOWcsOWdgOWPquiDveaKleS4gOasoSk8L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+5piv5ZCm5aSa6YCJ77yaPC90ZD4NCiAgICAgICAgICAgIDx0ZD4gPGlucHV0IG5hbWU9ImlzbW9yZSIgdHlwZT0icmFkaW8iIGNsYXNzPSJucCIgdmFsdWU9IjAiPD9waHAgaWYoJHJvd1snaXNtb3JlJ109PTApIGVjaG8gIiBjaGVja2VkIjs/Pj4NCiAgICAgICAgICAgICAg5Y2V6YCJIOOAgCANCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJpc21vcmUiIGNsYXNzPSJucCIgdmFsdWU9IjEiPD9waHAgaWYoJHJvd1snaXNtb3JlJ109PTEpIGVjaG8gIiBjaGVja2VkIjs/Pj4NCiAgICAgICAgICAgICAg5aSa6YCJIDwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+IA0KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPuaKlSDnpagg6aG577yaPGJyLz4NCiAgICAgICAgICAgICAgKOivt+aMieebuOWQjOeahOW9ouW8j+adpeWinuWKoOaIluS/ruaUueiKgueCue+8jOWFtuS4reWxnuaAp++8mmlk5LiN6IO96YeN5aSNKSA8L3RkPg0KICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBuYW1lPSJ2b3Rlbm90ZSIgcm93cz0iOCIgaWQ9InZvdGVub3RlIiBzdHlsZT0id2lkdGg6ODAlIj48P3BocCBlY2hvICRyb3dbJ3ZvdGVub3RlJ10/PjwvdGV4dGFyZWE+IA0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICA8L3RyPg0KCQk8dHI+IA0KICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj7mmK/lkKblkK/nlKjvvJo8L3RkPg0KICAgICAgICAgIDx0ZD4gPGlucHV0IG5hbWU9ImlzZW5hYmxlIiB0eXBlPSJyYWRpbyIgY2xhc3M9Im5wIiB2YWx1ZT0iMCIgPD9waHAgaWYoJHJvd1snaXNlbmFibGUnXT09MCkgZWNobyAiIGNoZWNrZWQiOyA/Pj4NCiAgICAgICAgICAgIOaYryDjgIAgDQogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iaXNlbmFibGUiIGNsYXNzPSJucCIgdmFsdWU9IjEiIDw/cGhwIGlmKCRyb3dbJ2lzZW5hYmxlJ109PTEpIGVjaG8gIiBjaGVja2VkIjsgPz4+DQogICAgICAgICAgICAgIOWQpjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPiANCiAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjQ3Ij4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlN1Ym1pdCIgdmFsdWU9IuS/neWtmOaKleelqOaVsOaNriI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KCSAgPC9mb3JtPg0KCSAgPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPC9ib2R5Pg0KPC9odG1sPg== - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+6I635Y+W5Luj56CBPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSJpbWFnZXMvYWxsYmcuZ2lmIiBsZWZ0bWFyZ2luPSI4IiB0b3BtYXJnaW49IjgiPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjRDZENkQ2Ij4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjE5IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiI+PHN0cm9uZz48YSBocmVmPSJ2b3RlX21haW4ucGhwIj48dT7mipXnpajnrqHnkIY8L3U+PC9hPiZndDsmZ3Q76I635Y+W5Luj56CBPC9zdHJvbmc+PC90ZD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGhlaWdodD0iMjAwIiBiZ2NvbG9yPSIjRkZGRkZGIiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSI4MCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIyIj4NCiAgICAgICAgPHRyIGJnY29sb3I9IiNFQkYyREIiPiANCiAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiNFQkYyREIiPuWcqOWwgemdouaIluS4u+mhteaooeadv+S4reS9v+eUqOeahOagh+iusO+8mjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4gDQogICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjYwMCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgPGZvcm0gbmFtZT0iZm9ybTEiIGFjdGlvbj0idGFnX3Rlc3RfYWN0aW9uLnBocCIgdGFyZ2V0PSJzdGFmcm0iIG1ldGhvZD0icG9zdCI+DQogICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzaG93c291cmNlIiB2YWx1ZT0ibm8iPg0KCQkJICA8dHI+IA0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNzAiIGhlaWdodD0iMTUzIiBhbGlnbj0iY2VudGVyIj4gDQogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJwYXJ0Y29kZSIgY29scz0iNDUiIHJvd3M9IjYiIGlkPSJwYXJ0Y29kZSI+e2RlZGU6dm90ZSBpZD0nPD9waHAgZWNobyAkYWlkPz4nIGxpbmVoZWlnaHQ9JzIyJw0KdGFibGV3aWR0aD0nMTAwJScgdGl0bGViZ2NvbG9yPScjRURFREUyJw0KdGl0bGViYWNrZ3JvdW5kPScnIHRhYmxlYmdjb2xvcj0nI0ZGRkZGRid9DQp7L2RlZGU6dm90ZX08L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIzMCIgcm93c3Bhbj0iMiI+DQogICAgICAgICAgICAgICAgIDxpZnJhbWUgbmFtZT0ic3RhZnJtIiBmcmFtZWJvcmRlcj0iMCIgaWQ9InN0YWZybSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+PC9pZnJhbWU+DQoJCQkJPC90ZD4NCiAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iNTMiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlN1Ym1pdCIgdmFsdWU9IuaPkOS6pOa1i+ivlSI+DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICA8L3RyPg0KCQkJICA8L2Zvcm0+DQogICAgICAgICAgICA8L3RhYmxlPiANCiAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KCQk8dHIgYmdjb2xvcj0iI0VCRjJEQiI+DQoJCTx0ZCBiZ2NvbG9yPSIjRUJGMkRCIj7lnKjlsIHpnaLmiJbkuLvpobXmqKHmnb/kuK3kvb/nlKjnmoRKU++8mjwvdGQ+DQoJCTwvdHI+DQoJCTx0cj4NCgkJPHRkIGhlaWdodD0iMjAwIiB2YWxpZ249InRvcCI+DQogICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iaHRtbGYiIGNvbHM9IjYwIiByb3dzPSI1IiBpZD0iaHRtbGYiPjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iPD9waHAgZWNobyAkY2ZnX2Jhc2Vob3N0LicvZGF0YS92b3RlL3ZvdGVfJy4kYWlkLicuanMnID8+Ij48L3NjcmlwdD48L3RleHRhcmVhPg0KCQk8L3RkPg0KCQk8L3RyPg0KICAgICAgICA8dHIgYmdjb2xvcj0iI0VCRjJEQiI+IA0KICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjRUJGMkRCIj7pu5jorqTnlJ/miJDnmoTooajljZVIVE1M77yaPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPiANCiAgICAgICAgICA8dGQgaGVpZ2h0PSIyMDAiIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iaHRtbGYiIGNvbHM9IjYwIiByb3dzPSIxMCIgaWQ9Imh0bWxmIj48P3BocA0KCQkJJHZ0ID0gbmV3IERlZGVWb3RlKCRhaWQpOw0KCQkJZWNobyAkdnQtPkdldFZvdGVGb3JtKCk7DQoJCQkkdnQtPkNsb3NlKCk7DQoJCQk/PjwvdGV4dGFyZWE+DQogICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGFibGU+IDwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4= - - -e2RlZGU6Y29uZmlnLnBhZ2VzaXplIHZhbHVlPScyMCcvfQ0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5oqV56Wo566h55CGPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjRDZENkQ2Ij4NCiAgPHRyPg0KICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9ImltYWdlcy90YmcuZ2lmIiBjb2xzcGFuPSI3IiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7Ij4NCiAgICAgPGI+5oqV56Wo566h55CGPC9iPiZuYnNwO1s8YSBocmVmPSJ2b3RlX2FkZC5waHAiPjx1PuWinuWKoOS4gOe7hOaKleelqDwvdT48L2E+XQ0KCTwvdGQ+DQo8L3RyPg0KICA8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZCRkNFMiIgaGVpZ2h0PSIyNCI+IA0KICAgICAgPHRkIHdpZHRoPSI4JSI+5oqV56WoSUQ8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIyMiUiPuaKleelqOWQjeensDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE1JSI+5byA5aeL5pe26Ze0PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUlIj7nu5PmnZ/ml7bpl7Q8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxMCUiPuaKleelqOaAu+aVsDwvdGQ+DQoJICA8dGQgd2lkdGg9IjEwJSI+54q25oCBPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjAlIj7nrqHnkIY8L3RkPg0KICAgPC90cj4NCiAgICAgICAge2RlZGU6ZGF0YWxpc3R9DQogICAgICAgICA8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiIgaGVpZ2h0PSIyNCIgDQogICAgICAgICAJb25Nb3VzZU1vdmU9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJzsiIG9uTW91c2VPdXQ9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJzsiPiANCiAgICAgICAgICA8dGQ+e2RlZGU6ZmllbGQuYWlkIC99PC90ZD4NCiAgICAgICAgICA8dGQ+DQogICAgICAgICAgCTxhIGhyZWY9J3tkZWRlOmdsb2JhbCBuYW1lPSJjZmdfcGhwdXJsIiAvfS92b3RlLnBocD9haWQ9e2RlZGU6ZmllbGQuYWlkL30mZG9wb3N0PXZpZXcnIHRhcmdldD0nX2JsYW5rJz4NCiAgICAgICAgICAJPHU+e2RlZGU6ZmllbGQudm90ZW5hbWUgL308L3U+DQogICAgICAgICAgCTwvYT4NCiAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDx0ZD57ZGVkZTpmaWVsZC5zdGFydHRpbWUgZnVuY3Rpb249IkdldERhdGVNayhAbWUpIiAvfTwvdGQ+DQogICAgICAgICAgPHRkPntkZWRlOmZpZWxkLmVuZHRpbWUgZnVuY3Rpb249IkdldERhdGVNayhAbWUpIiAvfTwvdGQ+DQogICAgICAgICAgPHRkPntkZWRlOmZpZWxkLnRvdGFsY291bnQgL308L3RkPg0KCQkgIDx0ZD48P3BocCBpZigkZmllbGRzWydpc2VuYWJsZSddID09IDEpe2VjaG8gIjxmb250IGNvbG9yPXJlZD7mnKrlkK/nlKg8L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj7lkK/nlKg8L2ZvbnQ+Ijt9ID8+PC90ZD4NCiAgICAgICAgICA8dGQ+DQogICAgICAgICAgCTxhIGhyZWY9J3ZvdGVfZ2V0Y29kZS5waHA/YWlkPXtkZWRlOmZpZWxkLmFpZCAvfSc+W+iOt+WPluS7o+eggV08L2E+DQogICAgICAgICAgCTxhIGhyZWY9J3ZvdGVfZWRpdC5waHA/YWlkPXtkZWRlOmZpZWxkLmFpZCAvfSZkb3Bvc3Q9ZWRpdCc+W+abtOaUuV08L2E+DQoJCSAgICAgICAgJm5ic3A7DQoJCSAgICAgICAgPGEgaHJlZj0ndm90ZV9lZGl0LnBocD9haWQ9e2RlZGU6ZmllbGQuYWlkIC99JmRvcG9zdD1kZWxldGUnPlvliKDpmaRdPC9hPg0KCQkgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KCQl7L2RlZGU6ZGF0YWxpc3R9DQogICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGQ0VGIiBoZWlnaHQ9IjI0Ij4gDQogICAgICA8dGQgY29sc3Bhbj0iNyI+e2RlZGU6cGFnZWxpc3QgbGlzdHNpemU9JzYnL308L3RkPg0KICAgICA8L3RyPg0KICAgPC90YWJsZT4NCiAgIDwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4= - - -PD9waHANCi8qKg0KICoNCiAqIOaKleelqA0KICoNCiAqIEB2ZXJzaW9uICAgICAgICAkSWQ6IHZvdGUucGhwIDEgMjA6NTQgMjAxMOW5tDfmnIg45pelWiB0aWFueWEgJA0KICogQHBhY2thZ2UgICAgICAgIERlZGVDTVMuU2l0ZQ0KICogQGNvcHlyaWdodCAgICAgIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTAsIERlc0RldiwgSW5jLg0KICogQGxpY2Vuc2UgICAgICAgIGh0dHA6Ly9oZWxwLmRlZGVjbXMuY29tL3VzZXJzZ3VpZGUvbGljZW5zZS5odG1sDQogKiBAbGluayAgICAgICAgICAgaHR0cDovL3d3dy5kZWRlY21zLmNvbQ0KICovDQpyZXF1aXJlKGRpcm5hbWUoX19GSUxFX18pLiIvLi4vaW5jbHVkZS9jb21tb24uaW5jLnBocCIpOw0KcmVxdWlyZShERURFSU5DLiIvZGVkZXZvdGUuY2xhc3MucGhwIik7DQpyZXF1aXJlKERFREVJTkMuIi9tZW1iZXJsb2dpbi5jbGFzcy5waHAiKTsNCnJlcXVpcmUoREVERUlOQy4iL3VzZXJsb2dpbi5jbGFzcy5waHAiKTsNCg0KJG1lbWJlciA9IG5ldyBNZW1iZXJMb2dpbjsNCiRtZW1iZXJJRCA9ICRtZW1iZXItPk1fTG9naW5JRDsNCiR0aW1lID0gdGltZSgpOw0KJGNvbnRlbnQgPSAkbWVtYmVySUQuJ3wnLiR0aW1lOw0KJGZpbGUgPSBERURFREFUQS4nL2NhY2hlL3ZvdGVfJy4kYWlkLidfJy4kbWVtYmVyLT5NX0lELicuaW5jJzsvL+WtmOaUvuS8muWRmOaKleelqOiusOW9leeahOe8k+WtmOaWh+S7tg0KDQokbG9naW51cmwgPSAkY2ZnX2Jhc2Vob3N0LiIvbWVtYmVyIjsNCiRFTlZfR09CQUNLX1VSTCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyAnJzokX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ107DQoNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0ID0gJyc7DQoNCiRhaWQgPSAoaXNzZXQoJGFpZCkgJiYgaXNfbnVtZXJpYygkYWlkKSkgPyAkYWlkIDogMDsNCmlmKCRhaWQ9PTApIGRpZSgiIFJlcXVlc3QgRXJyb3IhICIpOw0KDQppZigkYWlkPT0wKQ0Kew0KICAgIFNob3dNc2coIuayoeaMh+WumuaKleelqOmhueebrueahElE77yBIiwiLTEiKTsNCiAgICBleGl0KCk7DQp9DQokdm8gPSBuZXcgRGVkZVZvdGUoJGFpZCk7DQokcnNtc2cgPSAnJzsNCg0KDQokcm93ID0gJGRzcWwtPkdldE9uZSgiU0VMRUNUICogRlJPTSAjQF9fdm90ZSBXSEVSRSBhaWQ9JyRhaWQnIik7DQovL+WIpOaWreaYr+WQpuWFgeiuuOa4uOWuoui/m+ihjOaKleelqA0KaWYoJHJvd1sncmFuZ2UnXSA9PSAxKQ0Kew0KICAgIGlmKCEkbWVtYmVyLT5Jc0xvZ2luKCkpDQogICAgew0KICAgICAgICBTaG93TXNnKCfor7flhYjnmbvlvZXlho3ov5vooYzmipXnpagnLCRsb2dpbnVybCk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQp9DQoNCmlmKCRkb3Bvc3Q9PSdzZW5kJykNCnsNCiAgICANCiAgICBpZighZW1wdHkoJHZvdGVpdGVtKSkNCiAgICB7DQogICAgICAgICRyc21zZyA9ICI8YnIgLz4mbmJzcDvkvaDmlrnmiY3nmoTmipXnpajnirbmgIHvvJoiLiR2by0+U2F2ZVZvdGUoJHZvdGVpdGVtKS4iPGJyIC8+IjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJHJzbXNnID0gIjxiciAvPiZuYnNwO+S9oOWImuaJjeayoemAieaLqeS7u+S9leaKleelqOmhueebru+8gTxiciAvPiI7DQogICAgfQ0KICAgIA0KICAgIGlmKCRyb3dbJ2lzZW5hYmxlJ10gPT0gMSkNCiAgICB7DQogICAgICAgIFNob3dNc2coJ+atpOaKleelqOmhueacquWQr+eUqCzmmoLml7bkuI3og73ov5vooYzmipXnpagnLCRFTlZfR09CQUNLX1VSTCk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQp9DQoNCiR2b25hbWUgPSAkdm8tPlZvdGVJbmZvc1sndm90ZW5hbWUnXTsNCiR0b3RhbGNvdW50ID0gJHZvLT5Wb3RlSW5mb3NbJ3RvdGFsY291bnQnXTsNCiRzdGFydHRpbWUgPSBHZXREYXRlTWsoJHZvLT5Wb3RlSW5mb3NbJ3N0YXJ0dGltZSddKTsNCiRlbmR0aW1lID0gR2V0RGF0ZU1rKCR2by0+Vm90ZUluZm9zWydlbmR0aW1lJ10pOw0KJHZvdGVsaXN0ID0gJHZvLT5HZXRWb3RlUmVzdWx0KCI5OCUiLDMwLCIzMCUiKTsNCg0KDQoNCg0KDQovL+WIpOaWreaYr+WQpuWFgeiuuOiiq+afpeeciw0KJGFkbWluID0gbmV3IHVzZXJMb2dpbjsNCmlmKCRkb3Bvc3QgPT0gJ3ZpZXcnKQ0Kew0KICAgIGlmKCRyb3dbJ3ZpZXcnXSA9PSAxICYmIGVtcHR5KCRhZG1pbi0+dXNlck5hbWUpKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygn5q2k5oqV56Wo6aG55LiN5YWB6K645p+l55yL57uT5p6cJywkRU5WX0dPQkFDS19VUkwpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KfQ0KLy/mmL7npLrmqKHmnb8o566A5Y2VUEhQ5paH5Lu2KQ0KaW5jbHVkZShERURFVEVNUExBVEUuJy9wbHVzL3ZvdGUuaHRtJyk7 - - -ZG9jdW1lbnQud3JpdGUoIjx0YWJsZSB3aWR0aD0nMTAwJScgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzEnIGlkPSd2b3RlaXRlbSc+IDxmb3JtIG5hbWU9J3ZvdGVmb3JtJyBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0nXC9wbHVzXC92b3RlLnBocCcgdGFyZ2V0PSdfYmxhbmsnPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdzZW5kJyBcLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWlkJyB2YWx1ZT0nMScgXC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2lzbW9yZScgdmFsdWU9JzAnIFwvPiA8dHIgYWxpZ249J2NlbnRlcic+PHRkIGhlaWdodD0nMzAnIGlkPSd2b3RldGl0bGUnIHN0eWxlPSdib3JkZXItYm90dG9tOjFweCBkYXNoZWQgIzk5OTk5OTtjb2xvcjojM0Y3NjUyJyA+PHN0cm9uZz7kvaDmmK/ku47lk6rlhL/lvpfnn6XmnKznq5nnmoTvvJ88XC9zdHJvbmc+PFwvdGQ+PFwvdHI+IDx0cj48dGQgaGVpZ2h0PTMwIGJnY29sb3I9I0ZGRkZGRiBzdHlsZT0nY29sb3I6IzY2NjY2Nic+PGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd2b3RlaXRlbScgdmFsdWU9JzEnIFwvPuaci+WPi+S7i+e7jTxcL3RkPjxcL3RyPiA8dHI+PHRkIGhlaWdodD0zMCBiZ2NvbG9yPSNGRkZGRkYgc3R5bGU9J2NvbG9yOiM2NjY2NjYnPjxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndm90ZWl0ZW0nIHZhbHVlPScyJyBcLz7pl6jmiLfnvZHnq5nnmoTmkJzntKLlvJXmk448XC90ZD48XC90cj4gPHRyPjx0ZCBoZWlnaHQ9MzAgYmdjb2xvcj0jRkZGRkZGIHN0eWxlPSdjb2xvcjojNjY2NjY2Jz48aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3ZvdGVpdGVtJyB2YWx1ZT0nMycgXC8+R29vZ2xl5oiW55m+5bqm5pCc57SiPFwvdGQ+PFwvdHI+IDx0cj48dGQgaGVpZ2h0PTMwIGJnY29sb3I9I0ZGRkZGRiBzdHlsZT0nY29sb3I6IzY2NjY2Nic+PGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSd2b3RlaXRlbScgdmFsdWU9JzQnIFwvPuWIq+eahOe9keermeS4iueahOmTvuaOpTxcL3RkPjxcL3RyPiA8dHI+PHRkIGhlaWdodD0zMCBiZ2NvbG9yPSNGRkZGRkYgc3R5bGU9J2NvbG9yOiM2NjY2NjYnPjxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndm90ZWl0ZW0nIHZhbHVlPSc1JyBcLz7lhbblroPpgJTlvoQ8XC90ZD48XC90cj4gPHRyPjx0ZCBoZWlnaHQ9JzMwJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0bi0xJyBuYW1lPSd2YnQxJyB2YWx1ZT0n5oqV56WoJyBcLz4gPGlucHV0IHR5cGU9J2J1dHRvbicgY2xhc3M9J2J0bi0xJyBuYW1lPSd2YnQyJyB2YWx1ZT0n5p+l55yL57uT5p6cJyBvbkNsaWNrPXdpbmRvdy5vcGVuKCdcL3BsdXNcL3ZvdGUucGhwP2RvcG9zdD12aWV3JmFpZD0xJyk7IFwvPjxcL3RkPjxcL3RyPiA8XC9mb3JtPiA8XC90YWJsZT4gIik7 - - - diff --git a/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa-readme.php b/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa-readme.php deleted file mode 100755 index 7cd76f59..00000000 --- a/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa-readme.php +++ /dev/null @@ -1,23 +0,0 @@ -
-

版权所有 ©2003-2008,DedeCms.com 保留所有权利。

-

感谢您选择织梦内容管理系统(以下简称DedeCms),DedeCms是目前国内最强大、最稳定的中小型门户网站建设解决方案之一,居于 PHP + MySQL 的技术开发,全部源码开放。DedeCms 的官方网址是: www.dedecms.com 交流论坛: bbs.dedecms.com

-

为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:

-

一、本授权协议适用且仅适用于 DedeCms 5.x.x 版本,DedeCms官方对本授权协议的最终解释权。

-

二、协议许可的权利
- 1、您可以在完全遵守本最终用户授权协议的基础上,将本软件应用于非商业用途,而不必支付软件版权授权费用。
- 2、您可以在协议规定的约束和限制范围内修改 DedeCms 源代码或界面风格以适应您的网站要求。
- 3、您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。
-4、获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。

-

三、协议规定的约束和限制
- 1、未获商业授权之前,不得将本软件用于商业用途(包括但不限于企业网站、经营性网站、以营利为目的或实现盈利的网站)。购买商业授权请登陆 bbs.dedecms.com 了解最新说明。
- 2、未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。
- 3、不管你的网站是否整体使用 DedeCms ,还是部份栏目使用 DedeCms,在你使用了 DedeCms 的网站主页上必须加上 DedeCms 官方网址(www.dedecms.com)的链接。
- 4、未经官方许可,禁止在 DedeCms 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。
-5、如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。

-

四、有限担保和免责声明
- 1、本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
- 2、用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
- 3、电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装 DedeCms,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
-4、如果本软件带有其它软件的整合API示范例子包,这些文件版权不属于本软件官方,并且这些文件是没经过授权发布的,请参考相关软件的使用许可合法的使用。

-

协议发布时间: 2008年8月20日 By DedeCms.com

-

 

\ No newline at end of file diff --git a/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa.xml b/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa.xml deleted file mode 100755 index 73808f1b..00000000 --- a/src/data/module/b437d85a7a7bc778c9c79b5ec36ab9aa.xml +++ /dev/null @@ -1,86 +0,0 @@ - - -name=友情链接 -team=织梦官方 -time=2008-07-01 -email=admin@dedecms.com -url=www.dedecms.com -hash=b437d85a7a7bc778c9c79b5ec36ab9aa -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PGRpdiBzdHlsZT0ncGFkZGluZy1sZWZ0OjIwcHg7bGluZS1oZWlnaHQ6MTUwJSc+DQo8cD7niYjmnYPmiYDmnIkgwqkyMDAzLTIwMTHvvIxEZWRlQ21zLmNvbSDkv53nlZnmiYDmnInmnYPliKnjgIIgPC9wPg0KPHA+5oSf6LCi5oKo6YCJ5oup57uH5qKm5YaF5a65566h55CG57O757uf77yI5Lul5LiL566A56ewRGVkZUNtc++8ie+8jERlZGVDbXPmmK/nm67liY3lm73lhoXmnIDlvLrlpKfjgIHmnIDnqLPlrprnmoTkuK3lsI/lnovpl6jmiLfnvZHnq5nlu7rorr7op6PlhrPmlrnmoYjkuYvkuIDvvIzlsYXkuo4gUEhQICsgTXlTUUwg55qE5oqA5pyv5byA5Y+R77yM5YWo6YOo5rqQ56CB5byA5pS+44CCRGVkZUNtcyDnmoTlrpjmlrnnvZHlnYDmmK/vvJogd3d3LmRlZGVjbXMuY29tICDkuqTmtYHorrrlnZvvvJogYmJzLmRlZGVjbXMuY29tPC9wPg0KPHA+5Li65LqG5L2/5L2g5q2j56Gu5bm25ZCI5rOV55qE5L2/55So5pys6L2v5Lu277yM6K+35L2g5Zyo5L2/55So5YmN5Yqh5b+F6ZiF6K+75riF5qWa5LiL6Z2i55qE5Y2P6K6u5p2h5qy+77yaPC9wPg0KPHA+PHN0cm9uZz7kuIDjgIHmnKzmjojmnYPljY/orq7pgILnlKjkuJTku4XpgILnlKjkuo4gRGVkZUNtcyA1LngueCDniYjmnKzvvIxEZWRlQ21z5a6Y5pa55a+55pys5o6I5p2D5Y2P6K6u55qE5pyA57uI6Kej6YeK5p2D44CCIDwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+5LqM44CB5Y2P6K6u6K645Y+v55qE5p2D5YipIDwvc3Ryb25nPjxiciAvPg0KICAx44CB5oKo5Y+v5Lul5Zyo5a6M5YWo6YG15a6I5pys5pyA57uI55So5oi35o6I5p2D5Y2P6K6u55qE5Z+656GA5LiK77yM5bCG5pys6L2v5Lu25bqU55So5LqO6Z2e5ZWG5Lia55So6YCU77yM6ICM5LiN5b+F5pSv5LuY6L2v5Lu254mI5p2D5o6I5p2D6LS555So44CCIDxiciAvPg0KICAy44CB5oKo5Y+v5Lul5Zyo5Y2P6K6u6KeE5a6a55qE57qm5p2f5ZKM6ZmQ5Yi26IyD5Zu05YaF5L+u5pS5IERlZGVDbXMg5rqQ5Luj56CB5oiW55WM6Z2i6aOO5qC85Lul6YCC5bqU5oKo55qE572R56uZ6KaB5rGC44CCIDxiciAvPg0KICAz44CB5oKo5oul5pyJ5L2/55So5pys6L2v5Lu25p6E5bu655qE572R56uZ5YWo6YOo5YaF5a655omA5pyJ5p2D77yM5bm254us56uL5om/5ouF5LiO6L+Z5Lqb5YaF5a6555qE55u45YWz5rOV5b6L5LmJ5Yqh44CCIDxiciAvPg0KNOOAgeiOt+W+l+WVhuS4muaOiOadg+S5i+WQju+8jOaCqOWPr+S7peWwhuacrOi9r+S7tuW6lOeUqOS6juWVhuS4mueUqOmAlO+8jOWQjOaXtuS+neaNruaJgOi0reS5sOeahOaOiOadg+exu+Wei+S4reehruWumueahOaKgOacr+aUr+aMgeWGheWuue+8jOiHqui0reS5sOaXtuWIu+i1t++8jOWcqOaKgOacr+aUr+aMgeacn+mZkOWGheaLpeaciemAmui/h+aMh+WumueahOaWueW8j+iOt+W+l+aMh+WumuiMg+WbtOWGheeahOaKgOacr+aUr+aMgeacjeWKoeOAguWVhuS4muaOiOadg+eUqOaIt+S6q+acieWPjeaYoOWSjOaPkOWHuuaEj+ingeeahOadg+WKm++8jOebuOWFs+aEj+ingeWwhuiiq+S9nOS4uummluimgeiAg+iZke+8jOS9huayoeacieS4gOWumuiiq+mHh+e6s+eahOaJv+ivuuaIluS/neivgeOAgiA8L3A+DQo8cD48c3Ryb25nPuS4ieOAgeWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItiA8L3N0cm9uZz48YnIgLz4NCiAgMeOAgeacquiOt+WVhuS4muaOiOadg+S5i+WJje+8jOS4jeW+l+WwhuacrOi9r+S7tueUqOS6juWVhuS4mueUqOmAlO+8iOWMheaLrOS9huS4jemZkOS6juS8geS4mue9keermeOAgee7j+iQpeaAp+e9keermeOAgeS7peiQpeWIqeS4uuebrueahOaIluWunueOsOebiOWIqeeahOe9keerme+8ieOAgui0reS5sOWVhuS4muaOiOadg+ivt+eZu+mZhiBiYnMuZGVkZWNtcy5jb20g5LqG6Kej5pyA5paw6K+05piO44CCIDxiciAvPg0KICAy44CB5pyq57uP5a6Y5pa56K645Y+v77yM5LiN5b6X5a+55pys6L2v5Lu25oiW5LiO5LmL5YWz6IGU55qE5ZWG5Lia5o6I5p2D6L+b6KGM5Ye656ef44CB5Ye65ZSu44CB5oq15oq85oiW5Y+R5pS+5a2Q6K645Y+v6K+B44CCIDxiciAvPg0KICAz44CB5LiN566h5L2g55qE572R56uZ5piv5ZCm5pW05L2T5L2/55SoIERlZGVDbXMg77yM6L+Y5piv6YOo5Lu95qCP55uu5L2/55SoIERlZGVDbXPvvIzlnKjkvaDkvb/nlKjkuoYgRGVkZUNtcyDnmoTnvZHnq5nkuLvpobXkuIrlv4XpobvliqDkuIogRGVkZUNtcyDlrpjmlrnnvZHlnYAod3d3LmRlZGVjbXMuY29tKeeahOmTvuaOpeOAgiA8YnIgLz4NCiAgNOOAgeacque7j+WumOaWueiuuOWPr++8jOemgeatouWcqCBEZWRlQ21zIOeahOaVtOS9k+aIluS7u+S9lemDqOWIhuWfuuehgOS4iuS7peWPkeWxleS7u+S9lea0vueUn+eJiOacrOOAgeS/ruaUueeJiOacrOaIluesrOS4ieaWueeJiOacrOeUqOS6jumHjeaWsOWIhuWPkeOAgiA8YnIgLz4NCjXjgIHlpoLmnpzmgqjmnKrog73pgbXlrojmnKzljY/orq7nmoTmnaHmrL7vvIzmgqjnmoTmjojmnYPlsIbooqvnu4jmraLvvIzmiYDooqvorrjlj6/nmoTmnYPliKnlsIbooqvmlLblm57vvIzlubbmib/mi4Xnm7jlupTms5XlvovotKPku7vjgIIgPC9wPg0KPHA+PHN0cm9uZz7lm5vjgIHmnInpmZDmi4Xkv53lkozlhY3otKPlo7DmmI4gPC9zdHJvbmc+PGJyIC8+DQogIDHjgIHmnKzova/ku7blj4rmiYDpmYTluKbnmoTmlofku7bmmK/kvZzkuLrkuI3mj5Dkvpvku7vkvZXmmI7noa7nmoTmiJbpmpDlkKvnmoTotZTlgb/miJbmi4Xkv53nmoTlvaLlvI/mj5DkvpvnmoTjgIIgPGJyIC8+DQogIDLjgIHnlKjmiLflh7rkuo7oh6rmhL/ogIzkvb/nlKjmnKzova/ku7bvvIzmgqjlv4Xpobvkuobop6Pkvb/nlKjmnKzova/ku7bnmoTpo47pmanvvIzlnKjlsJrmnKrotK3kubDkuqflk4HmioDmnK/mnI3liqHkuYvliY3vvIzmiJHku6zkuI3mib/or7rlr7nlhY3otLnnlKjmiLfmj5Dkvpvku7vkvZXlvaLlvI/nmoTmioDmnK/mlK/mjIHjgIHkvb/nlKjmi4Xkv53vvIzkuZ/kuI3mib/mi4Xku7vkvZXlm6Dkvb/nlKjmnKzova/ku7bogIzkuqfnlJ/pl67popjnmoTnm7jlhbPotKPku7vjgIIgPGJyIC8+DQogIDPjgIHnlLXlrZDmlofmnKzlvaLlvI/nmoTmjojmnYPljY/orq7lpoLlkIzlj4zmlrnkuabpnaLnrb7nvbLnmoTljY/orq7kuIDmoLfvvIzlhbfmnInlrozlhajnmoTlkoznrYnlkIznmoTms5XlvovmlYjlipvjgILmgqjkuIDml6blvIDlp4vnoa7orqTmnKzljY/orq7lubblronoo4UgRGVkZUNtc++8jOWNs+iiq+inhuS4uuWujOWFqOeQhuino+W5tuaOpeWPl+acrOWNj+iurueahOWQhOmhueadoeasvu+8jOWcqOS6q+acieS4iui/sOadoeasvuaOiOS6iOeahOadg+WKm+eahOWQjOaXtu+8jOWPl+WIsOebuOWFs+eahOe6puadn+WSjOmZkOWItuOAguWNj+iuruiuuOWPr+iMg+WbtOS7peWklueahOihjOS4uu+8jOWwhuebtOaOpei/neWPjeacrOaOiOadg+WNj+iuruW5tuaehOaIkOS+teadg++8jOaIkeS7rOacieadg+maj+aXtue7iOatouaOiOadg++8jOi0o+S7pOWBnOatouaNn+Wus++8jOW5tuS/neeVmei/veeptuebuOWFs+i0o+S7u+eahOadg+WKm+OAgiA8YnIgLz4NCjTjgIHlpoLmnpzmnKzova/ku7bluKbmnInlhbblroPova/ku7bnmoTmlbTlkIhBUEnnpLrojIPkvovlrZDljIXvvIzov5nkupvmlofku7bniYjmnYPkuI3lsZ7kuo7mnKzova/ku7blrpjmlrnvvIzlubbkuJTov5nkupvmlofku7bmmK/msqHnu4/ov4fmjojmnYPlj5HluIPnmoTvvIzor7flj4LogIPnm7jlhbPova/ku7bnmoTkvb/nlKjorrjlj6/lkIjms5XnmoTkvb/nlKjjgII8L3A+DQo8cD7ljY/orq7lj5HluIPml7bpl7TvvJogIDIwMDjlubQ45pyIMjDml6UgQnkgRGVkZUNtcy5jb208L3A+DQo8cD7CoDwvcD4= - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19mbGlua2A7DQpDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgI0BfX2ZsaW5rYCAoDQogIGBpZGAgc21hbGxpbnQoNSkgdW5zaWduZWQgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsDQogIGBzb3J0cmFua2Agc21hbGxpbnQoNikgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQogIGB1cmxgIGNoYXIoNjApIE5PVCBOVUxMIGRlZmF1bHQgJycsDQogIGB3ZWJuYW1lYCBjaGFyKDMwKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KICBgbXNnYCBjaGFyKDIwMCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgYGVtYWlsYCBjaGFyKDUwKSBOT1QgTlVMTCBkZWZhdWx0ICcnLA0KICBgbG9nb2AgY2hhcig2MCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgYGR0aW1lYCBpbnQoMTApIHVuc2lnbmVkIE5PVCBOVUxMIGRlZmF1bHQgJzAnLA0KICBgdHlwZWlkYCBzbWFsbGludCg1KSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywNCiAgYGlzY2hlY2tgIHNtYWxsaW50KDYpIE5PVCBOVUxMIGRlZmF1bHQgJzEnLA0KICBQUklNQVJZIEtFWSAgKGBpZGApDQopIEVOR0lORT1NeUlTQU07DQoNCkRST1AgVEFCTEUgSUYgRVhJU1RTIGAjQF9fZmxpbmt0eXBlYDsNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjQF9fZmxpbmt0eXBlYCgNCiAgYGlkYCBtZWRpdW1pbnQoOCkgdW5zaWduZWQgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsDQogIGB0eXBlbmFtZWAgdmFyY2hhcig1MCkgTk9UIE5VTEwgZGVmYXVsdCAnJywNCiAgUFJJTUFSWSBLRVkgIChgaWRgKQ0KKSBFTkdJTkU9TXlJU0FNOw0KDQpEZWxldGUgRnJvbSBgI0BfX3BsdXNgIHdoZXJlIHBsdXNuYW1lIGxpa2UgJ+WPi+aDhemTvuaOpeaooeWdlyc7DQpJTlNFUlQgSU5UTyBgI0BfX2ZsaW5rYCBWQUxVRVMgKDEsIDEsICdodHRwOi8vd3d3LmRlZGVjbXMuY29tJywgJ+e7h+aipuWumOaWuee9keermScsICcnLCAnJywgJycsIDEyMjYzNzU0MDMsIDEsIDIpOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn5Y+L5oOF6ZO+5o6l5qih5Z2XJywgJzxtOml0ZW0gbmFtZT0nJ+WPi+aDhemTvuaOpScnIGxpbms9JydmcmllbmRsaW5rX21haW4ucGhwJycgcmFuaz0nJ3BsdXNf5Y+L5oOF6ZO+5o6lJycgdGFyZ2V0PScnbWFpbicnIC8+JywgJycsICfnu4fmoqblm6LpmJ8nLCAxLCAnJyk7DQpSRVBMQUNFIElOVE8gYCNAX19mbGlua3R5cGVgIChgaWRgICxgdHlwZW5hbWVgKSBWQUxVRVMgKDEsICfnu7zlkIjnvZHnq5knKSwoMiwgJ+WoseS5kOexuycpLCgzLCAn5pWZ6IKy57G7JyksKDQsICforqHnrpfmnLrnsbsnKSwoNSwgJ+eUteWtkOWVhuWKoScpLCg2LCAn572R5LiK5L+h5oGvJyksKDcsICforrrlnZvnsbsnKSwoOCwgJ+WFtuWug+exu+WeiycpOw== - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19mbGlua3R5cGVgOw0KDQpEUk9QIFRBQkxFIElGIEVYSVNUUyBgI0BfX2ZsaW5rYDsNCg0KRGVsZXRlIEZyb20gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICflj4vmg4Xpk77mjqXmqKHlnZcnOw== - - - - - - - - -../plus/flink.php -../plus/flink_add.php -../dede/friendlink_add.php -../dede/friendlink_edit.php -../dede/friendlink_main.php -../dede/friendlink_type.php -../dede/templets/friendlink_add.htm -../dede/templets/friendlink_edit.htm -../dede/templets/friendlink_main.htm -../dede/templets/friendlink_type.htm -../include/taglib/flink.lib.php - - - - - -PD9waHANCi8qKg0KICoNCiAqIOWPi+aDhemTvuaOpQ0KICoNCiAqIEB2ZXJzaW9uICAgICAgICAkSWQ6IGZsaW5rLnBocCAxIDE1OjM4IDIwMTDlubQ35pyIOOaXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLlNpdGUNCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvLi4vaW5jbHVkZS9jb21tb24uaW5jLnBocCIpOw0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCg0KDQppZigkZG9wb3N0PT0nc2F2ZScpDQp7DQogICAgJHZhbGlkYXRlID0gaXNzZXQoJHZhbGlkYXRlKSA/IHN0cnRvbG93ZXIodHJpbSgkdmFsaWRhdGUpKSA6ICcnOw0KICAgICRzdmFsaSA9IEdldENrVmRWYWx1ZSgpOw0KICAgIGlmKCR2YWxpZGF0ZT09JycgfHwgJHZhbGlkYXRlIT0kc3ZhbGkpDQogICAgew0KICAgICAgICBTaG93TXNnKCfpqozor4HnoIHkuI3mraPnoa4hJywnLTEnKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICAkbXNnID0gaHRtbHNwZWNpYWxjaGFycygkbXNnKTsNCiAgICAkZW1haWwgPSBodG1sc3BlY2lhbGNoYXJzKCRlbWFpbCk7DQogICAgJHdlYm5hbWUgPSBodG1sc3BlY2lhbGNoYXJzKCR3ZWJuYW1lKTsNCiAgICAkdXJsID0gaHRtbHNwZWNpYWxjaGFycygkdXJsKTsNCiAgICAkbG9nbyA9IGh0bWxzcGVjaWFsY2hhcnMoJGxvZ28pOw0KICAgICR0eXBlaWQgPSBpbnR2YWwoJHR5cGVpZCk7DQogICAgJGR0aW1lID0gdGltZSgpOw0KICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyBgI0BfX2ZsaW5rYChzb3J0cmFuayx1cmwsd2VibmFtZSxsb2dvLG1zZyxlbWFpbCx0eXBlaWQsZHRpbWUsaXNjaGVjaykNCiAgICAgICAgICAgICAgICAgICAgVkFMVUVTKCc1MCcsJyR1cmwnLCckd2VibmFtZScsJyRsb2dvJywnJG1zZycsJyRlbWFpbCcsJyR0eXBlaWQnLCckZHRpbWUnLCcwJykiOw0KICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgU2hvd01zZygn5oiQ5Yqf5aKe5Yqg5LiA5Liq6ZO+5o6l77yM5L2G6ZyA6KaB5a6h5qC45ZCO5omN6IO95pi+56S6IScsJy0xJywxKTsNCn0NCg0KLy/mmL7npLrmqKHmnb8o566A5Y2VUEhQ5paH5Lu2KQ0KaW5jbHVkZV9vbmNlKERFREVURU1QTEFURS4nL3BsdXMvZmxpbmstbGlzdC5odG0nKTs= - - -PD9waHANCi8qKg0KICoNCiAqIOWinuWKoOWPi+aDhemTvuaOpQ0KICoNCiAqIEB2ZXJzaW9uICAgICAgICAkSWQ6IGZsaW5rX2FkZC5waHAgMSAxNTozOCAyMDEw5bm0N+aciDjml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5TaXRlDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nLy4uL2luY2x1ZGUvY29tbW9uLmluYy5waHAnKTsNCi8v5pi+56S65qih5p2/KOeugOWNlVBIUOaWh+S7tikNCmluY2x1ZGVfb25jZShERURFVEVNUExBVEUuJy9wbHVzL2ZsaW5rLWFkZC5odG0nKTs= - - -PD9waHANCi8qKg0KICog5Y+L5oOF6ZO+5o6l5re75YqgDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZnJpZW5kbGlua19hZGQucGhwIDEgMTA6NTkgMjAxMOW5tDfmnIgxM+aXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLkFkbWluaXN0cmF0b3INCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KcmVxdWlyZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCkNoZWNrUHVydmlldygncGx1c1/lj4vmg4Xpk77mjqXmqKHlnZcnKTsNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0PSIiOw0KDQppZigkZG9wb3N0PT0iYWRkIikNCnsNCiAgICAkZHRpbWUgPSB0aW1lKCk7DQogICAgaWYoaXNfdXBsb2FkZWRfZmlsZSgkbG9nb2ltZykpDQogICAgew0KICAgICAgICAkbmFtZXMgPSBzcGxpdCgiXC4iLCAkbG9nb2ltZ19uYW1lKTsNCiAgICAgICAgJHNob3J0bmFtZSA9ICIuIi4kbmFtZXNbY291bnQoJG5hbWVzKS0xXTsNCiAgICAgICAgaWYoIXByZWdfbWF0Y2goIiMoanBnfGdpZnxwbmcpJCMiLCAkc2hvcnRuYW1lKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHNob3J0bmFtZSA9ICcuZ2lmJzsNCiAgICAgICAgfQ0KICAgICAgICAkZmlsZW5hbWUgPSBNeURhdGUoInltZEhpcyIsIHRpbWUoKSkubXRfcmFuZCgxMDAwLDk5OTkpLiRzaG9ydG5hbWU7DQogICAgICAgICRpbWd1cmwgPSAkY2ZnX21lZGlhc19kaXIuIi9mbGluayI7DQogICAgICAgIGlmKCFpc19kaXIoJGNmZ19iYXNlZGlyLiRpbWd1cmwpKQ0KICAgICAgICB7DQogICAgICAgICAgICBNa2RpckFsbCgkY2ZnX2Jhc2VkaXIuJGltZ3VybCwgJGNmZ19kaXJfcHVydmlldyk7DQogICAgICAgICAgICBDbG9zZUZ0cCgpOw0KICAgICAgICB9DQogICAgICAgICRpbWd1cmwgPSAkaW1ndXJsLiIvIi4kZmlsZW5hbWU7DQogICAgICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkbG9nb2ltZywkY2ZnX2Jhc2VkaXIuJGltZ3VybCkgb3IgZGllKCLlpI3liLbmlofku7bliLA6Ii4kY2ZnX2Jhc2VkaXIuJGltZ3VybC4i5aSx6LSlIik7DQogICAgICAgIEB1bmxpbmsoJGxvZ29pbWcpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICAkaW1ndXJsID0gJGxvZ287DQogICAgfQ0KICAgIA0KICAgIC8v5by65Yi25qOA5rWL55So5oi35Y+L5oOF6ZO+5o6l5YiG57G75piv5ZCm5pWw5o2u57uT5p6E5LiN56ymDQogICAgaWYoZW1wdHkoJHR5cGVpZCkgfHwgcHJlZ19tYXRjaCgiI1teMC05XSMiLCAkdHlwZWlkKSkNCiAgICB7DQogICAgICAgICR0eXBlaWQgPSAwOw0KICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgiQUxURVIgVEFCTEUgYCNAX19mbGlua3R5cGVgIENIQU5HRSBgSURgIGBpZGAgTUVESVVNSU5UKCA4ICkgVU5TSUdORUQgREVGQVVMVCBOVUxMIEFVVE9fSU5DUkVNRU5UOyAiKTsNCiAgICB9DQogICAgDQogICAgJHF1ZXJ5ID0gIklOU0VSVCBJTlRPIGAjQF9fZmxpbmtgKHNvcnRyYW5rLHVybCx3ZWJuYW1lLGxvZ28sbXNnLGVtYWlsLHR5cGVpZCxkdGltZSxpc2NoZWNrKQ0KICAgICAgICAgICAgVkFMVUVTKCckc29ydHJhbmsnLCckdXJsJywnJHdlYm5hbWUnLCckaW1ndXJsJywnJG1zZycsJyRlbWFpbCcsJyR0eXBlaWQnLCckZHRpbWUnLCckaXNjaGVjaycpOyAiOw0KICAgICRycyA9ICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgJGJ1cmwgPSBlbXB0eSgkX0NPT0tJRVsnRU5WX0dPQkFDS19VUkwnXSkgPyAiZnJpZW5kbGlua19tYWluLnBocCIgOiAkX0NPT0tJRVsnRU5WX0dPQkFDS19VUkwnXTsNCiAgICBpZigkcnMpDQogICAgew0KICAgICAgICBTaG93TXNnKCLmiJDlip/lop7liqDkuIDkuKrpk77mjqUhIiwkYnVybCwwLDUwMCk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5aKe5Yqg6ZO+5o6l5pe25Ye66ZSZ77yM6K+35ZCR5a6Y5pa55Y+N6aaI77yM5Y6f5Zug77yaIi4kZHNxbC0+R2V0RXJyb3IoKSwiamF2YXNjcmlwdDo7Iik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQp9DQppbmNsdWRlIERlZGVJbmNsdWRlKCd0ZW1wbGV0cy9mcmllbmRsaW5rX2FkZC5odG0nKTs= - - -PD9waHANCi8qKg0KICog5Y+L5oOF6ZO+5o6l57yW6L6RDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZnJpZW5kbGlua19lZGl0LnBocCAxIDEwOjU5IDIwMTDlubQ35pyIMTPml6VaIHRpYW55YSAkDQogKiBAcGFja2FnZSAgICAgICAgRGVkZUNNUy5BZG1pbmlzdHJhdG9yDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iL2NvbmZpZy5waHAiKTsNCkNoZWNrUHVydmlldygncGx1c1/lj4vmg4Xpk77mjqXmqKHlnZcnKTsNCiRFTlZfR09CQUNLX1VSTCA9IGVtcHR5KCRfQ09PS0lFWydFTlZfR09CQUNLX1VSTCddKSA/ICdmcmllbmRsaW5rX21haW4ucGhwJyA6ICRfQ09PS0lFWydFTlZfR09CQUNLX1VSTCddOw0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAiIjsNCg0KaWYoaXNzZXQoJGFsbGlkKSkNCnsNCiAgICAkYWlkcyA9IGV4cGxvZGUoJywnLCRhbGxpZCk7DQogICAgaWYoY291bnQoJGFpZHMpPT0xKQ0KICAgIHsNCiAgICAgICAgJGlkID0gJGFpZHNbMF07DQogICAgICAgICRkb3Bvc3QgPSAiZGVsZXRlIjsNCiAgICB9DQp9DQppZigkZG9wb3N0PT0iZGVsZXRlIikNCnsNCiAgICAkaWQgPSBwcmVnX3JlcGxhY2UoIiNbXjAtOV0jIiwgIiIsICRpZCk7DQogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoIkRFTEVURSBGUk9NIGAjQF9fZmxpbmtgIFdIRVJFIGlkPSckaWQnIik7DQogICAgU2hvd01zZygi5oiQ5Yqf5Yig6Zmk5LiA5Liq6ZO+5o6l77yBIiwkRU5WX0dPQkFDS19VUkwpOw0KICAgIGV4aXQoKTsNCn0NCmVsc2UgaWYoJGRvcG9zdD09ImRlbGFsbCIpDQp7DQogICAgJGFpZHMgPSBleHBsb2RlKCcsJywkYWlkcyk7DQogICAgaWYoaXNzZXQoJGFpZHMpICYmIGlzX2FycmF5KCRhaWRzKSkNCiAgICB7DQogICAgICAgIGZvcmVhY2goJGFpZHMgYXMgJGFpZCkNCiAgICAgICAgew0KICAgICAgICAgICAgJGFpZCA9IHByZWdfcmVwbGFjZSgiI1teMC05XSMiLCAiIiwgJGFpZCk7DQogICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgiREVMRVRFIEZST00gYCNAX19mbGlua2AgV0hFUkUgaWQ9JyRhaWQnIik7DQogICAgICAgIH0NCiAgICAgICAgU2hvd01zZygi5oiQ5Yqf5Yig6Zmk5oyH5a6a6ZO+5o6l77yBIiwkRU5WX0dPQkFDS19VUkwpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIFNob3dNc2coIuS9oOayoemAieWumuS7u+S9lemTvuaOpe+8gSIsJEVOVl9HT0JBQ0tfVVJMKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCn0NCmVsc2UgaWYoJGRvcG9zdD09InNhdmVlZGl0IikNCnsNCiAgICAkaWQgPSBwcmVnX3JlcGxhY2UoIiNbXjAtOV0jIiwgIiIsICRpZCk7DQogICAgJHF1ZXJ5ID0gIlVQREFURSBgI0BfX2ZsaW5rYCBTRVQgc29ydHJhbms9JyRzb3J0cmFuaycsdXJsPSckdXJsJyx3ZWJuYW1lPSckd2VibmFtZScsbG9nbz0nJGxvZ28nLG1zZz0nJG1zZycsDQogICAgICAgICAgICAgICAgICBlbWFpbD0nJGVtYWlsJyx0eXBlaWQ9JyR0eXBlaWQnLGlzY2hlY2s9JyRpc2NoZWNrJyBXSEVSRSBpZD0nJGlkJyAiOw0KICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgU2hvd01zZygi5oiQ5Yqf5pu05pS55LiA5Liq6ZO+5o6l77yBIiwkRU5WX0dPQkFDS19VUkwpOw0KICAgIGV4aXQoKTsNCn0NCiRteUxpbmsgPSAkZHNxbC0+R2V0T25lKCJTRUxFQ1QgI0BfX2ZsaW5rLiosI0BfX2ZsaW5rdHlwZS50eXBlbmFtZSBGUk9NICNAX19mbGluayBMRUZUIEpPSU4gI0BfX2ZsaW5rdHlwZSBPTiAjQF9fZmxpbmsudHlwZWlkPSNAX19mbGlua3R5cGUuaWQgV0hFUkUgI0BfX2ZsaW5rLmlkPSRpZCIpOw0KaW5jbHVkZSBEZWRlSW5jbHVkZSgndGVtcGxldHMvZnJpZW5kbGlua19lZGl0Lmh0bScpOw== - - -PD9waHANCi8qKg0KICog5Y+L5oOF6ZO+5o6l566h55CGDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZnJpZW5kbGlua19tYWluLnBocCAxIDg6NDggMjAxMOW5tDfmnIgxM+aXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLkFkbWluaXN0cmF0b3INCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvY29uZmlnLnBocCcpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuJy9kYXRhbGlzdGNwLmNsYXNzLnBocCcpOw0Kc2V0Y29va2llKCdFTlZfR09CQUNLX1VSTCcsICRkZWRlTm93dXJsLCB0aW1lKCkrMzYwMCwgJy8nKTsNCg0KaWYoZW1wdHkoJGtleXdvcmQpKSAka2V5d29yZCA9ICcnOw0KaWYoZW1wdHkoJGlzY2hlY2spKSB7DQogICAgJGlzY2hlY2sgPSAwOw0KICAgICRpc2NoZWNrU3FsID0gJyc7DQp9IGVsc2Ugew0KICAgIGlmKCRpc2NoZWNrPT0tMSkgJGlzY2hlY2tTcWwgPSAiIEFuZCBpc2NoZWNrIDwgMSAiOw0KICAgIGVsc2UgJGlzY2hlY2tTcWwgPSAiIEFuZCBpc2NoZWNrPSckaXNjaGVjaycgIjsNCn0NCg0KJHNlbENoZWNrQXJyID0gYXJyYXkoMD0+J+S4jemZkOexu+WeiycsIC0xPT4n5pyq5a6h5qC4JywgMT0+J+WGhemhtScsIDI9PifpppbpobUnKTsNCg0KJHNxbCA9ICJTRUxFQ1QgKiBGUk9NIGAjQF9fZmxpbmtgIFdIRVJFICBDT05DQVQoYHVybGAsYHdlYm5hbWVgLGBlbWFpbGApIExJS0UgJyUka2V5d29yZCUnICRpc2NoZWNrU3FsIE9SREVSIEJZIGR0aW1lIGRlc2MiOw0KDQokZGxpc3QgPSBuZXcgRGF0YUxpc3RDUCgpOw0KJGRsaXN0LT5TZXRQYXJhbWV0ZXIoJ2tleXdvcmQnLCAka2V5d29yZCk7DQokZGxpc3QtPlNldFBhcmFtZXRlcignaXNjaGVjaycsICRpc2NoZWNrKTsNCiRkbGlzdC0+U2V0VGVtcGxldChERURFQURNSU4uJy90ZW1wbGV0cy9mcmllbmRsaW5rX21haW4uaHRtJyk7DQokZGxpc3QtPlNldFNvdXJjZSgkc3FsKTsNCiRkbGlzdC0+ZGlzcGxheSgpOw0KDQpmdW5jdGlvbiBHZXRQaWMoJHBpYykNCnsNCiAgICBpZigkcGljPT0nJykgcmV0dXJuICfml6Dlm77moIcnOw0KICAgIGVsc2UgcmV0dXJuICI8aW1nIHNyYz0nJHBpYycgd2lkdGg9Jzg4JyBoZWlnaHQ9JzMxJyBib3JkZXI9JzAnIC8+IjsNCn0NCg0KZnVuY3Rpb24gR2V0U3RhKCRzdGEpDQp7DQogICAgaWYoJHN0YT09MSkgcmV0dXJuICflhoXpobUnOw0KICAgIGlmKCRzdGE9PTIpIHJldHVybiAn6aaW6aG1JzsNCiAgICBlbHNlIHJldHVybiAn5pyq5a6h5qC4JzsNCn0= - - -PD9waHANCi8qKg0KICog5Y+L5oOF6ZO+5o6l57G75Z6LDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZnJpZW5kbGlua190eXBlLnBocCAxIDg6NDggMjAxMOW5tDfmnIgxM+aXpVogdGlhbnlhICQNCiAqIEBwYWNrYWdlICAgICAgICBEZWRlQ01TLkFkbWluaXN0cmF0b3INCiAqIEBjb3B5cmlnaHQgICAgICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDEwLCBEZXNEZXYsIEluYy4NCiAqIEBsaWNlbnNlICAgICAgICBodHRwOi8vaGVscC5kZWRlY21zLmNvbS91c2Vyc2d1aWRlL2xpY2Vuc2UuaHRtbA0KICogQGxpbmsgICAgICAgICAgIGh0dHA6Ly93d3cuZGVkZWNtcy5jb20NCiAqLw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvY29uZmlnLnBocCIpOw0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCg0KLy/kv53lrZjmm7TmlLkNCmlmKCRkb3Bvc3Q9PSJzYXZlIikNCnsNCiAgICAkc3RhcnRJRCA9IDE7DQogICAgJGVuZElEID0gJGlkZW5kOw0KICAgIGZvcig7JHN0YXJ0SUQ8PSRlbmRJRDskc3RhcnRJRCsrKQ0KICAgIHsNCiAgICAgICAgJHF1ZXJ5ID0gJyc7DQogICAgICAgICR0aWQgPSAkeydJRF8nLiRzdGFydElEfTsNCiAgICAgICAgJHBuYW1lID0gICAkeydwbmFtZV8nLiRzdGFydElEfTsNCiAgICAgICAgaWYoaXNzZXQoJHsnY2hlY2tfJy4kc3RhcnRJRH0pKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZigkcG5hbWUhPScnKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRxdWVyeSA9ICJVUERBVEUgYCNAX19mbGlua3R5cGVgIFNFVCB0eXBlbmFtZT0nJHBuYW1lJyBXSEVSRSBpZD0nJHRpZCcgIjsNCiAgICAgICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkcXVlcnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NIGAjQF9fZmxpbmt0eXBlYCBXSEVSRSBpZD0nJHRpZCcgIjsNCiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgICAgIH0NCiAgICB9DQogICAgLy/lop7liqDmlrDorrDlvZUNCiAgICBpZihpc3NldCgkY2hlY2tfbmV3KSAmJiAkcG5hbWVfbmV3IT0nJykNCiAgICB7DQogICAgICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyBgI0BfX2ZsaW5rdHlwZWAodHlwZW5hbWUpIFZBTFVFUygneyRwbmFtZV9uZXd9Jyk7IjsNCiAgICAgICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHF1ZXJ5KTsNCiAgICB9DQogICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD17JGNmZ19zb2Z0X2xhbmd9Iik7DQogICAgZWNobyAiPHNjcmlwdD4gYWxlcnQoJ+aIkOWKn+abtOaWsOWPi+aDhemTvuaOpee9keermeWIhuexu+ihqO+8gScpOyA8L3NjcmlwdD4iOw0KfQ0KDQppbmNsdWRlIERlZGVJbmNsdWRlKCd0ZW1wbGV0cy9mcmllbmRsaW5rX3R5cGUuaHRtJyk7 - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5Y+L5oOF6ZO+5o6l566h55CGPC90aXRsZT4NCjxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPg0KZnVuY3Rpb24gQ2hlY2tTdWJtaXQoKQ0Kew0KCWlmKGRvY3VtZW50LmZvcm0xLnVybC52YWx1ZT09Imh0dHA6Ly8ifHxkb2N1bWVudC5mb3JtMS51cmwudmFsdWU9PSIiKQ0KCXsNCiAgIAkJZG9jdW1lbnQuZm9ybTEudXJsLmZvY3VzKCk7DQogICAJCWFsZXJ0KCLnvZHlnYDkuI3og73kuLrnqbrvvIEiKTsNCiAgIAkJcmV0dXJuIGZhbHNlOw0KCX0NCglpZihkb2N1bWVudC5mb3JtMS53ZWJuYW1lLnZhbHVlPT0iIikNCgl7DQogICAJCWRvY3VtZW50LmZvcm0xLndlYm5hbWUuZm9jdXMoKTsNCiAgIAkJYWxlcnQoIue9keermeWQjeensOS4jeiDveS4uuepuu+8gSIpOw0KICAgCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXJldHVybiB0cnVlOw0KfQ0KPC9zY3JpcHQ+DQo8bGluayBocmVmPSJjc3MvYmFzZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPg0KPC9oZWFkPg0KPGJvZHkgYmFja2dyb3VuZD0naW1hZ2VzL2FsbGJnLmdpZicgbGVmdG1hcmdpbj0nOCcgdG9wbWFyZ2luPSc4Jz4NCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQogIDx0cj4NCiAgICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iaW1hZ2VzL3RiZy5naWYiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsiPjxiPjxhIGhyZWY9ImZyaWVuZGxpbmtfbWFpbi5waHAiPjx1PuWPi+aDhemTvuaOpeeuoeeQhjwvdT48L2E+PC9iPiZndDsmZ3Q75aKe5Yqg6ZO+5o6lPC90ZD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGhlaWdodD0iMjAwIiBiZ2NvbG9yPSIjRkZGRkZGIiB2YWxpZ249InRvcCI+DQoJPGZvcm0gYWN0aW9uPSJmcmllbmRsaW5rX2FkZC5waHAiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iZm9ybTEiIG9uU3VibWl0PSJyZXR1cm4gQ2hlY2tTdWJtaXQoKTsiOz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb3Bvc3QiIHZhbHVlPSJhZGQiIC8+DQoJPHRhYmxlIHdpZHRoPSI4MCUiICBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMyI+DQoJICA8dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI1Ij7nvZHlnYDvvJo8L3RkPg0KICAgICAgICA8dGQgd2lkdGg9IjgxJSI+DQogICAgICAgIAk8aW5wdXQgbmFtZT0idXJsIiB0eXBlPSJ0ZXh0IiBpZD0idXJsIiB2YWx1ZT0iaHR0cDovLyIgc2l6ZT0iMzAiIGNsYXNzPSdwdWJpbnB1dHMnIC8+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+572R56uZ5ZCN56ew77yaPC90ZD4NCiAgICAgICAgPHRkPg0KICAgICAgICAJPGlucHV0IG5hbWU9IndlYm5hbWUiIHR5cGU9InRleHQiIGlkPSJ3ZWJuYW1lIiBzaXplPSIzMCIgY2xhc3M9J3B1YmlucHV0cycgLz4NCiAgICAgICAgPC90ZD4NCiAgICAgIDwvdHI+DQogICAgICA8dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI1Ij7mjpLliJfkvY3nva7vvJo8L3RkPg0KICAgICAgICA8dGQgd2lkdGg9IjgxJSI+DQogICAgICAgIDxpbnB1dCBuYW1lPSJzb3J0cmFuayIgdHlwZT0idGV4dCIgaWQ9InNvcnRyYW5rIiB2YWx1ZT0iMSIgc2l6ZT0iMTAiIGNsYXNzPSdwdWJpbnB1dHMnIHN0eWxlPSd3aWR0aDo2MHB4JyAvPg0KICAgICAgICAo55Sx5bCP5Yiw5aSn5o6S5YiXKQ0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPue9keermUxvZ2/vvJo8L3RkPg0KICAgICAgICA8dGQ+DQogICAgICAgIAk8aW5wdXQgbmFtZT0ibG9nbyIgdHlwZT0idGV4dCIgaWQ9ImxvZ28iIHNpemU9IjMwIiBjbGFzcz0ncHViaW5wdXRzJyAvPg0KICAgICAgICAgICg4OCozMSBnaWbmiJZqcGcpDQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+5LiK5LygTG9nb++8mjwvdGQ+DQogICAgICAgIDx0ZD4NCiAgICAgICAgCTxpbnB1dCBuYW1lPSJsb2dvaW1nIiB0eXBlPSJmaWxlIiBpZD0ibG9nb2ltZyIgc2l6ZT0iMzAiIGNsYXNzPSdwdWJpbnB1dHMnIC8+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+572R56uZ566A5Ya177yaPC90ZD4NCiAgICAgICAgPHRkPjx0ZXh0YXJlYSBuYW1lPSJtc2ciIGNvbHM9IjUwIiByb3dzPSI0IiBpZD0ibXNnIj48L3RleHRhcmVhPjwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+56uZ6ZW/RW1haWzvvJo8L3RkPg0KICAgICAgICA8dGQ+DQogICAgICAgIAk8aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9InRleHQiIGlkPSJlbWFpbCIgc2l6ZT0iMzAiIGNsYXNzPSdwdWJpbnB1dHMnIC8+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+572R56uZ57G75Z6L77yaPC90ZD4NCiAgICAgICAgPHRkPg0KICAgICAgICA8c2VsZWN0IG5hbWU9InR5cGVpZCIgaWQ9InR5cGVpZCI+DQogICAgICAgIDw/cGhwDQogICAgICAgICRkc3FsLT5TZXRRdWVyeSgic2VsZWN0ICogZnJvbSAjQF9fZmxpbmt0eXBlIik7DQogICAgICAgICRkc3FsLT5FeGVjdXRlKCk7DQogICAgICAgIHdoaWxlKCRyb3c9JGRzcWwtPkdldE9iamVjdCgpKQ0KICAgICAgICB7DQogICAgICAgIAllY2hvICIJPG9wdGlvbiB2YWx1ZT0nIi4kcm93LT5pZC4iJz4iLiRyb3ctPnR5cGVuYW1lLiI8L29wdGlvbj5cclxuIjsNCiAgICAgICAgfQ0KICAgICAgICA/Pg0KICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgPC90ZD4NCiAgICAgIDwvdHI+DQogICAgICA8dHI+DQogICAgICAgIDx0ZCBoZWlnaHQ9IjI1Ij7pk77mjqXkvY3nva7vvJo8L3RkPg0KICAgICAgICA8dGQ+DQogICAgICAgIDxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0naXNjaGVjaycgdmFsdWU9IjEiIGNoZWNrZWQ9JzEnIC8+IOWGhemhtQ0KICAgICAgICA8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J2lzY2hlY2snIHZhbHVlPSIyIi8+IOmmlumhtQ0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iNTEiPiZuYnNwOzwvdGQ+DQogICAgICAgIDx0ZD4NCiAgICAgICAgCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlN1Ym1pdCIgdmFsdWU9IiDmj5Ag5LqkICIgY2xhc3M9ImNvb2xiZyBucCIgLz7jgIAg44CADQogICAgICAgICAgPGlucHV0IHR5cGU9InJlc2V0IiBuYW1lPSJTdWJtaXQiIHZhbHVlPSIg6YeNIOe9riAiIGNsYXNzPSJjb29sYmcgbnAiIC8+DQogICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICA8L3RhYmxlPg0KCTwvZm9ybT4NCiA8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+ - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5Y+L5oOF6ZO+5o6l5pu05pS5PC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSc4JyB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiBiZ2NvbG9yPSIjRDZENkQ2Ij4NCiAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjI4IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+DQogICAgCTxiPjxhIGhyZWY9ImZyaWVuZGxpbmtfbWFpbi5waHAiPjx1PuWPi+aDhemTvuaOpeeuoeeQhjwvdT48L2E+PC9iPiAmZ3Q7Jmd0OyDpk77mjqXmm7TmlLk8L3RkPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgaGVpZ2h0PSIyMDAiIGJnY29sb3I9IiNGRkZGRkYiIHZhbGlnbj0idG9wIj4NCgk8Zm9ybSBhY3Rpb249ImZyaWVuZGxpbmtfZWRpdC5waHAiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iZm9ybTEiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlkIiB2YWx1ZT0iPD9waHAgZWNobyAkbXlMaW5rWydpZCddPz4iPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvcG9zdCIgdmFsdWU9InNhdmVlZGl0Ij4NCgk8dGFibGUgd2lkdGg9IjgwJSIgIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIzIj4NCgkgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMjUiPue9keWdgO+8mjwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0iODElIj4NCiAgICAgICAgPGlucHV0IG5hbWU9InVybCIgdHlwZT0idGV4dCIgaWQ9InVybCIgdmFsdWU9Ijw/cGhwIGVjaG8gJG15TGlua1sndXJsJ10/PiIgc2l6ZT0iMzAiIGNsYXNzPSdwdWJpbnB1dHMnIC8+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIyNSI+5o6S5YiX5L2N572u77yaPC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSI4MSUiPg0KICAgICAgICA8aW5wdXQgbmFtZT0ic29ydHJhbmsiIHR5cGU9InRleHQiIGlkPSJzb3J0cmFuayIgdmFsdWU9Ijw/cGhwIGVjaG8gJG15TGlua1snc29ydHJhbmsnXT8+IiBzaXplPSIxMCIgIGNsYXNzPSdwdWJpbnB1dHMnIHN0eWxlPSJ3aWR0aDo2MHB4IiAvPg0KICAgICAgICAo55Sx5bCP5Yiw5aSn5o6S5YiXKQ0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPue9keermeWQjeensO+8mjwvdGQ+DQogICAgICAgIDx0ZD48aW5wdXQgbmFtZT0id2VibmFtZSIgdHlwZT0idGV4dCIgaWQ9IndlYm5hbWUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAkbXlMaW5rWyd3ZWJuYW1lJ10/PiIgY2xhc3M9J3B1YmlucHV0cycgLz48L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPue9keermUxvZ2/vvJo8L3RkPg0KICAgICAgICA8dGQ+DQogICAgICAgIAk8aW5wdXQgbmFtZT0ibG9nbyIgdHlwZT0idGV4dCIgaWQ9ImxvZ28iIHNpemU9IjQwIiB2YWx1ZT0iPD9waHAgZWNobyAkbXlMaW5rWydsb2dvJ10/PiIgY2xhc3M9J3B1YmlucHV0cycvPg0KICAgICAgICAgICg4OCozMSBnaWbmiJZqcGcpDQogICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPuS4iuS8oExvZ2/vvJo8L3RkPg0KICAgICAgICA8dGQ+PGlucHV0IG5hbWU9ImxvZ29pbWciIHR5cGU9ImZpbGUiIGlkPSJsb2dvaW1nIiBzaXplPSIzMCIgY2xhc3M9J3B1YmlucHV0cycgLz48L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPue9keermeeugOWGte+8mjwvdGQ+DQogICAgICAgIDx0ZD48dGV4dGFyZWEgbmFtZT0ibXNnIiBjb2xzPSI1MCIgcm93cz0iNCIgaWQ9Im1zZyI+PD9waHAgZWNobyAkbXlMaW5rWydtc2cnXT8+PC90ZXh0YXJlYT48L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPuermemVv0VtYWls77yaPC90ZD4NCiAgICAgICAgPHRkPjxpbnB1dCBuYW1lPSJlbWFpbCIgdHlwZT0idGV4dCIgaWQ9ImVtYWlsIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gJG15TGlua1snZW1haWwnXT8+IiBjbGFzcz0ncHViaW5wdXRzJyAvPjwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSIyNSI+6ZO+5o6l5L2N572u77yaPC90ZD4NCiAgICAgICAgPHRkPg0KICAgICAgICAJPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSdpc2NoZWNrJyB2YWx1ZT0iMCIgPD9waHAgaWYoJG15TGlua1snaXNjaGVjayddPT0wKSBlY2hvICIgY2hlY2tlZD0nMScgIj8+Lz4g5pyq5a6h5qC4DQogICAgICAgIAk8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J2lzY2hlY2snIHZhbHVlPSIxIiA8P3BocCBpZigkbXlMaW5rWydpc2NoZWNrJ109PTEpIGVjaG8gIiBjaGVja2VkPScxJyAiPz4vPiDlhoXpobUNCiAgICAgICAgCTxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0naXNjaGVjaycgdmFsdWU9IjIiIDw/cGhwIGlmKCRteUxpbmtbJ2lzY2hlY2snXT09MikgZWNobyAiIGNoZWNrZWQ9JzEnICI/Pi8+IOmmlumhtQ0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIGhlaWdodD0iMjUiPue9keermeexu+Wei++8mjwvdGQ+DQogICAgICAgIDx0ZD4NCiAgICAgICAgPHNlbGVjdCBuYW1lPSJ0eXBlaWQiIGlkPSJ0eXBlaWQiPg0KICAgICAgICA8P3BocA0KICAgICAgICBlY2hvICIJPG9wdGlvbiB2YWx1ZT0nIi4kbXlMaW5rWyd0eXBlaWQnXS4iJz4iLiRteUxpbmtbJ3R5cGVuYW1lJ10uIjwvb3B0aW9uPlxyXG4iOw0KICAgICAgICAkZHNxbC0+U2V0UXVlcnkoInNlbGVjdCAqIGZyb20gI0BfX2ZsaW5rdHlwZSB3aGVyZSBpZDw+JyIuJG15TGlua1sndHlwZWlkJ10uIiciKTsNCiAgICAgICAgJGRzcWwtPkV4ZWN1dGUoKTsNCiAgICAgICAgd2hpbGUoJHJvdz0kZHNxbC0+R2V0T2JqZWN0KCkpew0KICAgICAgICAJZWNobyAiCTxvcHRpb24gdmFsdWU9JyIuJHJvdy0+aWQuIic+Ii4kcm93LT50eXBlbmFtZS4iPC9vcHRpb24+XHJcbiI7DQogICAgICAgIH0NCiAgICAgICAgPz4NCiAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgaGVpZ2h0PSI1MSI+Jm5ic3A7PC90ZD4NCiAgICAgICAgPHRkPg0KICAgICAgICAJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iU3VibWl0IiB2YWx1ZT0iIOaPkCDkuqQgIiBjbGFzcz0ibnAgY29vbGJnIiAvPuOAgCDjgIANCiAgICAgICAgICA8aW5wdXQgdHlwZT0icmVzZXQiIG5hbWU9IlN1Ym1pdCIgdmFsdWU9IiDov5Qg5ZueICIgb25DbGljaz0ibG9jYXRpb24uaHJlZj0nPD9waHAgZWNobyAkRU5WX0dPQkFDS19VUkw/Pic7IiBjbGFzcz0ibnAgY29vbGJnIiAvPg0KICAgICAgICAgPC90ZD4NCiAgICAgIDwvdHI+DQogICAgPC90YWJsZT4NCgk8L2Zvcm0+DQogPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPC9ib2R5Pg0KPC9odG1sPg== - - -e2RlZGU6Y29uZmlnLnBhZ2VzaXplIHZhbHVlPSIyMCIvfQ0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+5Y+L5oOF6ZO+5o6l566h55CGPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSd0ZXh0L2Nzcyc+DQo8c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0Jz4NCmZ1bmN0aW9uIFNlbChzdHlwZSkNCnsNCgkgIGZvcih2YXIgaT0wO2kgPCBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnYWlkcycpLmxlbmd0aDtpKyspDQoJICB7DQoJCSAgaWYoc3R5cGU9PSdhbGwnKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnYWlkcycpW2ldLmNoZWNrZWQ9dHJ1ZTsNCgkJICBlbHNlIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJylbaV0uY2hlY2tlZD1mYWxzZTsNCgkgIH0NCn0NCmZ1bmN0aW9uIGNoZWNrU3VibWl0KCkNCnsNCgl2YXIgc3RyID0gJyc7DQoJZm9yKHZhciBpPTA7aSA8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJykubGVuZ3RoO2krKykNCgl7DQoJCSAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2FpZHMnKVtpXS5jaGVja2VkKXsNCgkJICAJaWYoc3RyPT0nJykgc3RyICs9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJylbaV0udmFsdWU7DQoJCSAgCWVsc2Ugc3RyICs9ICcsJyArIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJylbaV0udmFsdWU7DQoJCSAgfQ0KCX0NCglpZihzdHI9PScnKQ0KCXsNCgkJYWxlcnQoJ+S9oOayoemAieaLqeS7u+S9leWGheWuue+8gScpOw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCWVsc2UNCgl7DQoJCWxvY2F0aW9uPSJmcmllbmRsaW5rX2VkaXQucGhwP2FpZHM9IitzdHIrIiZkb3Bvc3Q9ZGVsYWxsIjsNCgl9DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IGJhY2tncm91bmQ9J2ltYWdlcy9hbGxiZy5naWYnIGxlZnRtYXJnaW49JzgnIHRvcG1hcmdpbj0nOCc+DQoNCjx0YWJsZSB3aWR0aD0iOTglIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYmdjb2xvcj0iI0Q2RDZENiI+DQogIDx0cj4NCiAgICA8dGQgaGVpZ2h0PSIyOCIgYmFja2dyb3VuZD0iaW1hZ2VzL3RiZy5naWYiIGNvbHNwYW49IjgiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsiPg0KICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0Ij4NCiAgCTxiPuWPi+aDhemTvuaOpeeuoeeQhjwvYj4NCgk8L2Rpdj4NCgk8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDtwYWRkaW5nLXJpZ2h0OjZweDsiPg0KCQlbPGEgaHJlZj0iZnJpZW5kbGlua19hZGQucGhwIj48dT7lop7liqDpk77mjqU8L3U+PC9hPl0NCiAJIAlbPGEgaHJlZj0iZnJpZW5kbGlua190eXBlLnBocCI+PHU+572R56uZ57G75Z6L566h55CGPC91PjwvYT5dDQogIAlbPGEgaHJlZj0ne2RlZGU6Z2xvYmFsIG5hbWU9J2NmZ19waHB1cmwnIC99L2ZsaW5rLnBocCcgdGFyZ2V0PSdfYmxhbmsnPjx1PuWPi+aDhemTvuaOpemihOiniDwvdT48L2E+XQ0KICA8L2Rpdj4NCiAgPC90ZD4NCjwvdHI+DQo8dHI+DQogICA8dGQgaGVpZ2h0PSIzMCIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0Y5RkNFRiIgIGNvbHNwYW49IjgiPiANCiAgIDxmb3JtIGFjdGlvbj0iZnJpZW5kbGlua19tYWluLnBocCIgbmFtZT0iZm9ybTEiIG1ldGhvZD0iZ2V0Ij4NCgkgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyI+DQogICAgICA8dHI+DQogICAgICAgICAgPHRkPuWFs+mUruWtl++8mjwvdGQ+DQogICAgICAgICAgPHRkPjxpbnB1dCBuYW1lPSJrZXl3b3JkIiB0eXBlPSJ0ZXh0IiBpZD0ia2V5d29yZCIgc2l6ZT0iMTIiIHN0eWxlPSJ3aWR0aDoyNTBweCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGtleXdvcmQ7ID8+IiAvPjwvdGQ+DQogICAgICAgICAgPHRkPg0KICAgICAgICAgIAk8c2VsZWN0IG5hbWU9ImlzY2hlY2siIGlkPSJpc2NoZWNrIj4NCiAgICAgICAgCQkJPD9waHANCiAgICAgICAgCQkJZm9yZWFjaCgkc2VsQ2hlY2tBcnIgYXMgJGs9PiR2KQ0KICAgICAgICAJCQl7DQogICAgICAgIAkJCQlpZigkaz09JGlzY2hlY2spIGVjaG8gIjxvcHRpb24gdmFsdWU9JyRrJyBzZWxlY3RlZD4kdjwvb3B0aW9uPlxyXG4iOw0KICAgICAgICAJCQkJZWxzZSBlY2hvICI8b3B0aW9uIHZhbHVlPSckayc+JHY8L29wdGlvbj5cclxuIjsNCiAgICAgICAgCQkJfQ0KICAgICAgICAJCQk/Pg0KCQkJCQkJPC9zZWxlY3Q+DQogICAgICAgICAgPC90ZD4NCiAgICAgICAgICA8dGQ+DQogICAgICAgICAgIDxpbnB1dCBuYW1lPSJpbWFnZUZpZWxkIiBjbGFzcz0ibnAiIHR5cGU9ImltYWdlIiBzcmM9ImltYWdlcy9idXR0b25fc2VhcmNoLmdpZiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjIyIiBib3JkZXI9IjAiIC8+DQogICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGFibGU+DQoJICA8L2Zvcm0+DQogICAgPC90ZD4NCjwvdHI+DQo8Zm9ybSBuYW1lPSdmb3JtMScgbWV0aG9kPSdwb3N0JyBhY3Rpb249J2ZyaWVuZGxpbmtfZWRpdC5waHAnIG9uU3VibWl0PSdyZXR1cm4gY2hlY2tTdWJtaXQoKTsnPg0KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZG9wb3N0JyB2YWx1ZT0nZGVsYWxsJy8+DQo8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhbGxpZCcgdmFsdWU9JycvPg0KPHRyIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGQkZDRTIiIGhlaWdodD0iMjYiPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iNiUiPumAieaLqTwvdGQ+DQogICAgICAgICAgPHRkIHdpZHRoPSIyMyUiPue9keermeWQjeensDwvdGQ+DQogICAgICAgICAgPHRkIHdpZHRoPSIxMiUiPue9keermUxvZ288L3RkPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iMTUlIj7nq5nplb9FbWFpbDwvdGQ+DQogICAgICAgICAgPHRkIHdpZHRoPSIxNSUiPuaXtumXtDwvdGQ+DQogICAgICAgICAgPHRkIHdpZHRoPSI4JSI+54q25oCBPC90ZD4NCiAgICAgICAgICA8dGQgd2lkdGg9IjglIj7pobrluo88L3RkPg0KICAgICAgICAgIDx0ZCB3aWR0aD0iMTUlIj7nrqHnkIY8L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICB7ZGVkZTpkYXRhbGlzdH0NCiAgICAgICAgPHRyIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGRkZGRkYiIGhlaWdodD0iMjYiIG9uTW91c2VNb3ZlPSJqYXZhc2NyaXB0OnRoaXMuYmdDb2xvcj0nI0ZDRkRFRSc7Ig0KICAgICAgICAJIG9uTW91c2VPdXQ9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkZGRkZGJzsiPg0KICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT0nY2hlY2tib3gnIG5hbWU9J2FpZHMnIHZhbHVlPSd7ZGVkZTpmaWVsZC5pZC99JyBjbGFzcz0nbnAnPjwvdGQ+DQogICAgICAgICAgPHRkPjxhIGhyZWY9IntkZWRlOmZpZWxkLnVybC99IiB0YXJnZXQ9J19ibGFuayc+e2RlZGU6ZmllbGQud2VibmFtZS99PC9hPjwvdGQ+DQogICAgICAgICAgPHRkPjxhIGhyZWY9IntkZWRlOmZpZWxkLnVybC99IiB0YXJnZXQ9J19ibGFuayc+e2RlZGU6ZmllbGQubG9nbyBmdW5jdGlvbj0iR2V0UGljKEBtZSkiL308L2E+PC90ZD4NCiAgICAgICAgICA8dGQ+e2RlZGU6ZmllbGQuZW1haWwvfTwvdGQ+DQogICAgICAgICAgPHRkPntkZWRlOmZpZWxkLmR0aW1lIGZ1bmN0aW9uPSJNeURhdGUoJ1ktbS1kJyxAbWUpIi99PC90ZD4NCiAgICAgICAgICA8dGQ+e2RlZGU6ZmllbGQuaXNjaGVjayBmdW5jdGlvbj0iR2V0U3RhKEBtZSkiL308L3RkPg0KICAgICAgICAgIDx0ZD57ZGVkZTpmaWVsZC5zb3J0cmFuay99PC90ZD4NCiAgICAgICAgICA8dGQ+DQogICAgICAgICAgCTxhIGhyZWY9J2ZyaWVuZGxpbmtfZWRpdC5waHA/aWQ9e2RlZGU6ZmllbGQuaWQvfSZkb3Bvc3Q9Z2V0ZWRpdCc+W+abtOaUuV08L2E+DQoJCSAgICAgICAgPGEgaHJlZj0nZnJpZW5kbGlua19lZGl0LnBocD9pZD17ZGVkZTpmaWVsZC5pZC99JmRvcG9zdD1kZWxldGUnPlvliKDpmaRdPC9hPg0KCQkgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KCQl7L2RlZGU6ZGF0YWxpc3R9DQogICAgPC9mb3JtPg0KICAgICA8dHIgYmdjb2xvcj0iI2ZmZmZmZiIgaGVpZ2h0PSIyOCI+DQogICAgICA8dGQgY29sc3Bhbj0iOCI+DQogICAgICAJ44CADQogICAgICAgIDxhIGhyZWY9JyMnIG9uY2xpY2s9J1NlbCgiYWxsIiknIGNsYXNzPSducCBjb29sYmcnPlvlhajpgIldPC9hPg0KICAgICAgCTxhIGhyZWY9JyMnIG9uY2xpY2s9J1NlbCgibm9uZSIpJyBjbGFzcz0nbnAgY29vbGJnJz5b5Y+W5raIXTwvYT4NCiAgICAgIAk8YSBocmVmPScjJyBvbmNsaWNrPSdjaGVja1N1Ym1pdCgpJyBjbGFzcz0nbnAgY29vbGJnJz7mibnph4/liKDpmaQ8L2E+DQoNCiAgICAgIDwvdGQ+DQogICAgIDwvdHI+DQogICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGQ0VGIiBoZWlnaHQ9IjI4Ij4NCiAgICAgIDx0ZCBjb2xzcGFuPSI4Ij4NCiAgICAgIAl7ZGVkZTpwYWdlbGlzdCBsaXN0c2l6ZT02L30NCiAgICAgIDwvdGQ+DQogICAgIDwvdHI+DQogICA8L3RhYmxlPg0KICA8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+ - - -PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD08P3BocCBlY2hvICRjZmdfc29mdF9sYW5nOyA/PiI+DQo8dGl0bGU+572R56uZ57G75Z6L566h55CGPC90aXRsZT4NCjxsaW5rIGhyZWY9ImNzcy9iYXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4NCjwvaGVhZD4NCjxib2R5IGJhY2tncm91bmQ9ImltYWdlcy9hbGxiZy5naWYiIGxlZnRtYXJnaW49JzgnIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMSIgY2VsbHNwYWNpbmc9IjEiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJ0YnRpdGxlIiBzdHlsZT0iCWJhY2tncm91bmQ6I0NGQ0ZDRjsiPg0KICA8Zm9ybSBuYW1lPSJmb3JtMSIgYWN0aW9uPSJmcmllbmRsaW5rX3R5cGUucGhwIiBtZXRob2Q9InBvc3QiPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvcG9zdCIgdmFsdWU9InNhdmUiPg0KICAgPHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjE5IiBiYWNrZ3JvdW5kPSJpbWFnZXMvdGJnLmdpZiIgY29sc3Bhbj0iOSIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyI+DQogIDxiPjxhIGhyZWY9ImZyaWVuZGxpbmtfbWFpbi5waHAiPuWPi+aDhemTvuaOpeeuoeeQhjwvYT48L2I+Jm5ic3A7DQoJWzxhIGhyZWY9ImZyaWVuZGxpbmtfYWRkLnBocCI+PHU+5aKe5Yqg6ZO+5o6lPC91PjwvYT5dDQogICAgWzxhIGhyZWY9ImZyaWVuZGxpbmtfdHlwZS5waHAiPjx1Pue9keermeexu+Wei+euoeeQhjwvdT48L2E+XQ0KICBbPGEgaHJlZj0nLi4vcGx1cy9mbGlua19hZGQucGhwJyB0YXJnZXQ9J19ibGFuayc+PHU+5aSW6YOo55Sz6K+36KGo5Y2VPC91PjwvYT5dPC90ZD4NCjwvdHI+DQogICAgPHRyIGJnY29sb3I9IiNGQkZDRTIiPg0KICAgICAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyNCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPuexu+Wei0lEPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNjAlIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+572R56uZ5ZCN56ewPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMzYlIiBhbGlnbj0iY2VudGVyIj7nirbmgIE8L3RkPg0KICAgIDwvdHI+DQogICAgPD9waHANCgkkZHNxbC0+U2V0UXVlcnkoIlNlbGVjdCAqIEZyb20gI0BfX2ZsaW5rdHlwZSIpOw0KCSRkc3FsLT5FeGVjdXRlKCk7DQoJJGs9MDsNCgl3aGlsZSgkcm93ID0gJGRzcWwtPkdldE9iamVjdCgpKQ0KCXsNCiAgICAgICRrKys7DQoJPz4NCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJRF88P3BocCBlY2hvICRrPz4iIHZhbHVlPSI8P3BocCBlY2hvICRyb3ctPmlkPz4iPg0KICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIj4NCiAgICAgIDx0ZCBoZWlnaHQ9IjI0IiB2YWxpZ249InRvcCI+PD9waHAgZWNobyAkcm93LT5pZDsgPz4NCiAgICAgIAkgICAgIDwvdGQ+DQoNCiAgICAgIDx0ZCBoZWlnaHQ9IjI0IiB2YWxpZ249InRvcCI+PGlucHV0IG5hbWU9InBuYW1lXzw/cGhwIGVjaG8gJGs/PiIgdmFsdWU9Ijw/cGhwIGVjaG8gJHJvdy0+dHlwZW5hbWU/PiIgdHlwZT0idGV4dCIgaWQ9InBuYW1lXzw/cGhwIGVjaG8gJGs/PiIgY2xhc3M9J3B1YmlucHV0cycgc3R5bGU9IndpZHRoOjkwJSIgLz4gPC90ZD4NCiAgICAgIDx0ZD4NCgkgIDxpbnB1dCBuYW1lPSJjaGVja188P3BocCBlY2hvICRrPz4iIHR5cGU9ImNoZWNrYm94IiBpZD0iY2hlY2tfPD9waHAgZWNobyAkaz8+IiAgdmFsdWU9IjEiIGNoZWNrZWQ9JzEnIGNsYXNzPSducCcgLz4NCiAgICAgICAg5L+d55WZCSAgIDwvdGQ+DQogICAgPC90cj4NCiAgICA8P3BocA0KCX0NCgk/Pg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlkZW5kIiB2YWx1ZT0iPD9waHAgZWNobyAkaz8+Ij4NCiAgICA8dHIgYmdjb2xvcj0iI0Y4RkNGMSI+DQogICAgICA8dGQgaGVpZ2h0PSIyNCIgY29sc3Bhbj0iNSIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiNGOUZDRUYiPjxzdHJvbmc+5paw5aKe5LiA5Liq572R56uZ57G75Z6L77yaPC9zdHJvbmc+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0ciBoZWlnaHQ9IjI0IiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIj4NCiAgICAgIDx0ZCBjb2xzcGFuPSIyIiB2YWxpZ249InRvcCI+DQogICAgICAJPGlucHV0IG5hbWU9InBuYW1lX25ldyIgdHlwZT0idGV4dCIgaWQ9InBuYW1lX25ldyIgY2xhc3M9J3B1YmlucHV0cycgc3R5bGU9IndpZHRoOjkwJSIgLz4gICAgICA8L3RkPg0KDQogICAgICA8dGQgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiI+DQoJICA8aW5wdXQgbmFtZT0iY2hlY2tfbmV3IiB0eXBlPSJjaGVja2JveCIgIGlkPSJjaGVja19uZXciIHZhbHVlPSIxIiBjaGVja2VkPScxJyBjbGFzcz0nbnAnIC8+DQogICAgICAgIOaWsOWiniA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGhlaWdodD0iMzQiIGNvbHNwYW49IjUiIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGOUZDRUYiPg0KICAgICAgCTxpbnB1dCBuYW1lPSJpbWFnZUZpZWxkIiAgdHlwZT0ic3VibWl0IiBjbGFzcz0ibnAgY29vbGJnIiB2YWx1ZT0i56Gu5a6aIiAvPiAgICAgIDwvdGQ+DQogICAgPC90cj4NCiAgPC9mb3JtPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4= - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpDQp7DQogICAgZXhpdCgiUmVxdWVzdCBFcnJvciEiKTsNCn0NCi8qKg0KICog5Y+L5oOF6ZO+5o6lDQogKg0KICogQHZlcnNpb24gICAgICAgICRJZDogZmxpbmsubGliLnBocCAxIDk6MjkgMjAxMOW5tDfmnIg25pelWiB0aWFueWEgJA0KICogQHBhY2thZ2UgICAgICAgIERlZGVDTVMuVGFnbGliDQogKiBAY29weXJpZ2h0ICAgICAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxMCwgRGVzRGV2LCBJbmMuDQogKiBAbGljZW5zZSAgICAgICAgaHR0cDovL2hlbHAuZGVkZWNtcy5jb20vdXNlcnNndWlkZS9saWNlbnNlLmh0bWwNCiAqIEBsaW5rICAgICAgICAgICBodHRwOi8vd3d3LmRlZGVjbXMuY29tDQogKi8NCg0KLyo+PmRlZGU+Pg0KPG5hbWU+5Y+L5oOF6ZO+5o6lPC9uYW1lPg0KPHR5cGU+5YWo5bGA5qCH6K6wPC90eXBlPg0KPGZvcj5WNTUsVjU2LFY1NzwvZm9yPg0KPGRlc2NyaXB0aW9uPueUqOS6juiOt+WPluWPi+aDhemTvuaOpTwvZGVzY3JpcHRpb24+DQo8ZGVtbz4NCntkZWRlOmZsaW5rIHJvdz0nMjQnL30NCjwvZGVtbz4NCjxhdHRyaWJ1dGVzPg0KICAgIDxpdGVybT50eXBlOumTvuaOpeexu+WeizwvaXRlcm0+IA0KICAgIDxpdGVybT5yb3c66ZO+5o6l5pWw6YePPC9pdGVybT4NCiAgICA8aXRlcm0+dGl0bGVsZW4656uZ54K55paH5a2X55qE6ZW/5bqmPC9pdGVybT4NCiAgICA8aXRlcm0+bGlua3R5cGU66ZO+5o6l5L2N572u5YaF6aG1PC9pdGVybT4NCiAgICA8aXRlcm0+dHlwZWlkOuaJgOacieexu+Wei++8jOWPr+S7peWcqOezu+e7n+WQjuWPsFvmqKHlnZddLVvlj4vmg4Xpk77mjqVd5Lit55qE4oCc572R56uZ57G75Z6L566h55CG4oCd5Lit5p+l55yLPC9pdGVybT4NCjwvYXR0cmlidXRlcz4gDQo+PmRlZGU+PiovDQoNCmZ1bmN0aW9uIGxpYl9mbGluaygmJGN0YWcsJiRyZWZPYmopDQp7DQoJDQogICAgZ2xvYmFsICRkc3FsLCRjZmdfc29mdF9sYW5nOw0KICAgICRhdHRsaXN0PSJ0eXBlfHRleHRhbGwscm93fDI0LHRpdGxlbGVufDI0LGxpbmt0eXBlfDEsdHlwZWlkfDAiOw0KICAgIEZpbGxBdHRzRGVmYXVsdCgkY3RhZy0+Q0F0dHJpYnV0ZS0+SXRlbXMsJGF0dGxpc3QpOw0KICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOw0KICAgICR0b3RhbHJvdyA9ICRyb3c7DQogICAgJHJldmFsdWUgPSAnJzsNCiAgICBpZiAoaXNzZXQoJEdMT0JBTFNbJ2VudnMnXVsnZmxpbmtpZCddKSkNCiAgICB7DQogICAgICAgICR0eXBlaWQgPSAkR0xPQkFMU1snZW52cyddWydmbGlua2lkJ107DQogICAgfQ0KDQogICAgJHdzcWwgPSAiIHdoZXJlIGlzY2hlY2sgPj0gJyRsaW5rdHlwZScgIjsNCgkNCiAgICBpZigkdHlwZWlkID09IDApDQogICAgew0KICAgICAgICAkd3NxbCAuPSAnJzsNCiAgICB9DQogICAgZWxzZSBpZigkdHlwZWlkID09IDk5OSkNCgl7DQoJCXJlcXVpcmUgKERFREVEQVRBLicvYWRtaW4vY29uZmlnX3VwZGF0ZS5waHAnKTsNCgkJJHVwZGF0ZWluZm8gPSBAZmlsZV9nZXRfY29udGVudHMoJHVwZGF0ZUhvc3QuJ2RlZGVjbXMvZmxpbmsuJy4kY2ZnX3NvZnRfbGFuZy4nLnR4dCcpOw0KCQlpZighZW1wdHkoJHVwZGF0ZWluZm8pKXsNCgkJCSRkZWRlbGluayA9IGV4cGxvZGUoIlx0IiwgJHVwZGF0ZWluZm8pOw0KCQkJZm9yKCRpPTA7ICRpPGNvdW50KCRkZWRlbGluayk7ICRpKyspIHsNCgkJCQlpZigkaSU1PT0wICYmICRpIT1jb3VudCgkZGVkZWxpbmspKSB7DQoJCQkJCSRyZXZhbHVlIC49ICI8bGk+PGEgaHJlZj0naHR0cDovLyIuJGRlZGVsaW5rWyRpKzFdLiInIHRhcmdldD0nX2JsYW5rJyB0aXRsZT0nIi4kZGVkZWxpbmtbJGkrNF0uIic+PGltZyBzcmM9JyIuJGRlZGVsaW5rWyRpKzNdLiInIHdpZHRoPSc4OCcgaGVpZ2h0PSczMScgYm9yZGVyPScwJz48L2E+PC9saT4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJldmFsdWU7DQoJfQ0KCWVsc2UNCiAgICB7DQogICAgICAgICR3c3FsIC49ICJBbmQgdHlwZWlkID0gJyR0eXBlaWQnIjsNCiAgICB9DQogICAgaWYoJHR5cGU9PSdpbWFnZScpDQogICAgew0KICAgICAgICAkd3NxbCAuPSAiIEFuZCBsb2dvPD4nJyAiOw0KICAgIH0NCiAgICBlbHNlIGlmKCR0eXBlPT0ndGV4dCcpDQogICAgew0KICAgICAgICAkd3NxbCAuPSAiIEFuZCBsb2dvPScnICI7DQogICAgfQ0KDQogICAgJGVxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICNAX19mbGluayAkd3NxbCBvcmRlciBieSBzb3J0cmFuayBhc2MgbGltaXQgMCwkdG90YWxyb3ciOw0KDQogICAgaWYodHJpbSgkY3RhZy0+R2V0SW5uZXJUZXh0KCkpPT0nJykgJGlubmVydGV4dCA9ICI8bGk+W2ZpZWxkOmxpbmsgL108L2xpPiI7DQogICAgZWxzZSAkaW5uZXJ0ZXh0ID0gJGN0YWctPkdldElubmVyVGV4dCgpOw0KICAgIA0KICAgICRkc3FsLT5TZXRRdWVyeSgkZXF1ZXJ5KTsNCiAgICAkZHNxbC0+RXhlY3V0ZSgpOw0KICAgIA0KICAgIHdoaWxlKCRkYnJvdz0kZHNxbC0+R2V0T2JqZWN0KCkpDQogICAgew0KICAgICAgICBpZigkdHlwZT09J3RleHQnfHwkdHlwZT09J3RleHRhbGwnKQ0KICAgICAgICB7DQogICAgICAgICAgICAkbGluayA9ICI8YSBocmVmPSciLiRkYnJvdy0+dXJsLiInIHRhcmdldD0nX2JsYW5rJz4iLmNuX3N1YnN0cigkZGJyb3ctPndlYm5hbWUsJHRpdGxlbGVuKS4iPC9hPiAiOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYoJHR5cGU9PSdpbWFnZScpDQogICAgICAgIHsNCiAgICAgICAgICAgICRsaW5rID0gIjxhIGhyZWY9JyIuJGRicm93LT51cmwuIicgdGFyZ2V0PSdfYmxhbmsnPjxpbWcgc3JjPSciLiRkYnJvdy0+bG9nby4iJyB3aWR0aD0nODgnIGhlaWdodD0nMzEnIGJvcmRlcj0nMCc+PC9hPiAiOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgaWYoJGRicm93LT5sb2dvPT0nJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkbGluayA9ICI8YSBocmVmPSciLiRkYnJvdy0+dXJsLiInIHRhcmdldD0nX2JsYW5rJz4iLmNuX3N1YnN0cigkZGJyb3ctPndlYm5hbWUsJHRpdGxlbGVuKS4iPC9hPiAiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRsaW5rID0gIjxhIGhyZWY9JyIuJGRicm93LT51cmwuIicgdGFyZ2V0PSdfYmxhbmsnPjxpbWcgc3JjPSciLiRkYnJvdy0+bG9nby4iJyB3aWR0aD0nODgnIGhlaWdodD0nMzEnIGJvcmRlcj0nMCc+PC9hPiAiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRyYnRleHQgPSBwcmVnX3JlcGxhY2UoIi9cW2ZpZWxkOnVybChbXC9cc117MCx9KVxdL2lzVSIsICRyb3dbJ3VybCddLCAkaW5uZXJ0ZXh0KTsNCiAgICAgICAgICRyYnRleHQgPSBwcmVnX3JlcGxhY2UoIi9cW2ZpZWxkOndlYm5hbWUoW1wvXHNdezAsfSlcXS9pc1UiLCAkcm93Wyd3ZWJuYW1lJ10sICRyYnRleHQpOw0KICAgICAgICAgJHJidGV4dCA9IHByZWdfcmVwbGFjZSgiL1xbZmllbGQ6bG9nbyhbXC9cc117MCx9KVxdL2lzVSIsICRyb3dbJ2xvZ28nXSwgJHJidGV4dCk7DQogICAgICAgICAkcmJ0ZXh0ID0gcHJlZ19yZXBsYWNlKCIvXFtmaWVsZDpsaW5rKFtcL1xzXXswLH0pXF0vaXNVIiwgJGxpbmssICRyYnRleHQpOw0KICAgICAgICAgJHJldmFsdWUgLj0gJHJidGV4dDsNCiAgICB9DQogICAgcmV0dXJuICRyZXZhbHVlOw0KfQ== - - - diff --git a/src/data/module/fcd00dbb5a51d65aff6c248d221d8bcd.xml b/src/data/module/fcd00dbb5a51d65aff6c248d221d8bcd.xml deleted file mode 100755 index 48e2fb62..00000000 --- a/src/data/module/fcd00dbb5a51d65aff6c248d221d8bcd.xml +++ /dev/null @@ -1,58 +0,0 @@ - - -name=百度结构化数据提交插件 -team=织梦官方 -time=2014-01-08 -email=tianya@desdev.cn -url=http://www.dedecms.com -hash=fcd00dbb5a51d65aff6c248d221d8bcd -indexname= -indexurl= -ismember=0 -autosetup=1 -autodel=1 -lang=utf-8 -moduletype=plus - - - - - - -PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxkaXYgc3R5bGU9J3BhZGRpbmctbGVmdDoyMHB4O2xpbmUtaGVpZ2h0OjE1MCUnPjxiciAvPg0KPHA+54mI5p2D5omA5pyJIMKpMjAwMy0yMDEx77yMRGVkZUNtcy5jb20g5L+d55WZ5omA5pyJ5p2D5Yip44CCIDwvcD48YnIgLz4NCjxwPuaEn+iwouaCqOmAieaLqee7h+aipuWGheWuueeuoeeQhuezu+e7n++8iOS7peS4i+eugOensERlZGVDbXPvvInvvIxEZWRlQ21z5piv55uu5YmN5Zu95YaF5pyA5by65aSn44CB5pyA56iz5a6a55qE5Lit5bCP5Z6L6Zeo5oi3572R56uZ5bu66K6+6Kej5Yaz5pa55qGI5LmL5LiA77yM5bGF5LqOIFBIUCArIE15U1FMIOeahOaKgOacr+W8gOWPke+8jOWFqOmDqOa6kOeggeW8gOaUvuOAgkRlZGVDbXMg55qE5a6Y5pa5572R5Z2A5piv77yaIHd3dy5kZWRlY21zLmNvbSAg5Lqk5rWB6K665Z2b77yaIGJicy5kZWRlY21zLmNvbTwvcD48YnIgLz4NCjxwPuS4uuS6huS9v+S9oOato+ehruW5tuWQiOazleeahOS9v+eUqOacrOi9r+S7tu+8jOivt+S9oOWcqOS9v+eUqOWJjeWKoeW/hemYheivu+a4healmuS4i+mdoueahOWNj+iuruadoeasvu+8mjwvcD48YnIgLz4NCjxwPjxzdHJvbmc+5LiA44CB5pys5o6I5p2D5Y2P6K6u6YCC55So5LiU5LuF6YCC55So5LqOIERlZGVDbXMgNS54Lngg54mI5pys77yMRGVkZUNtc+WumOaWueWvueacrOaOiOadg+WNj+iurueahOacgOe7iOino+mHiuadg+OAgiA8L3N0cm9uZz48L3A+PGJyIC8+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruiuuOWPr+eahOadg+WIqSA8L3N0cm9uZz48YnIgLz48YnIgLz4NCiAgMeOAgeaCqOWPr+S7peWcqOWujOWFqOmBteWuiOacrOacgOe7iOeUqOaIt+aOiOadg+WNj+iurueahOWfuuehgOS4iu+8jOWwhuacrOi9r+S7tuW6lOeUqOS6jumdnuWVhuS4mueUqOmAlO+8jOiAjOS4jeW/heaUr+S7mOi9r+S7tueJiOadg+aOiOadg+i0ueeUqOOAgiA8YnIgLz48YnIgLz4NCiAgMuOAgeaCqOWPr+S7peWcqOWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItuiMg+WbtOWGheS/ruaUuSBEZWRlQ21zIOa6kOS7o+eggeaIlueVjOmdoumjjuagvOS7pemAguW6lOaCqOeahOe9keermeimgeaxguOAgiA8YnIgLz48YnIgLz4NCiAgM+OAgeaCqOaLpeacieS9v+eUqOacrOi9r+S7tuaehOW7uueahOe9keermeWFqOmDqOWGheWuueaJgOacieadg++8jOW5tueLrOeri+aJv+aLheS4jui/meS6m+WGheWuueeahOebuOWFs+azleW+i+S5ieWKoeOAgiA8YnIgLz48YnIgLz4NCjTjgIHojrflvpfllYbkuJrmjojmnYPkuYvlkI7vvIzmgqjlj6/ku6XlsIbmnKzova/ku7blupTnlKjkuo7llYbkuJrnlKjpgJTvvIzlkIzml7bkvp3mja7miYDotK3kubDnmoTmjojmnYPnsbvlnovkuK3noa7lrprnmoTmioDmnK/mlK/mjIHlhoXlrrnvvIzoh6rotK3kubDml7bliLvotbfvvIzlnKjmioDmnK/mlK/mjIHmnJ/pmZDlhoXmi6XmnInpgJrov4fmjIflrprnmoTmlrnlvI/ojrflvpfmjIflrprojIPlm7TlhoXnmoTmioDmnK/mlK/mjIHmnI3liqHjgILllYbkuJrmjojmnYPnlKjmiLfkuqvmnInlj43mmKDlkozmj5Dlh7rmhI/op4HnmoTmnYPlipvvvIznm7jlhbPmhI/op4HlsIbooqvkvZzkuLrpppbopoHogIPomZHvvIzkvYbmsqHmnInkuIDlrprooqvph4fnurPnmoTmib/or7rmiJbkv53or4HjgIIgPC9wPjxiciAvPg0KPHA+PHN0cm9uZz7kuInjgIHljY/orq7op4TlrprnmoTnuqbmnZ/lkozpmZDliLYgPC9zdHJvbmc+PGJyIC8+PGJyIC8+DQogIDHjgIHmnKrojrfllYbkuJrmjojmnYPkuYvliY3vvIzkuI3lvpflsIbmnKzova/ku7bnlKjkuo7llYbkuJrnlKjpgJTvvIjljIXmi6zkvYbkuI3pmZDkuo7kvIHkuJrnvZHnq5njgIHnu4/okKXmgKfnvZHnq5njgIHku6XokKXliKnkuLrnm67nmoTmiJblrp7njrDnm4jliKnnmoTnvZHnq5nvvInjgILotK3kubDllYbkuJrmjojmnYPor7fnmbvpmYYgYmJzLmRlZGVjbXMuY29tIOS6huino+acgOaWsOivtOaYjuOAgiA8YnIgLz48YnIgLz4NCiAgMuOAgeacque7j+WumOaWueiuuOWPr++8jOS4jeW+l+WvueacrOi9r+S7tuaIluS4juS5i+WFs+iBlOeahOWVhuS4muaOiOadg+i/m+ihjOWHuuenn+OAgeWHuuWUruOAgeaKteaKvOaIluWPkeaUvuWtkOiuuOWPr+ivgeOAgiA8YnIgLz48YnIgLz4NCiAgM+OAgeS4jeeuoeS9oOeahOe9keermeaYr+WQpuaVtOS9k+S9v+eUqCBEZWRlQ21zIO+8jOi/mOaYr+mDqOS7veagj+ebruS9v+eUqCBEZWRlQ21z77yM5Zyo5L2g5L2/55So5LqGIERlZGVDbXMg55qE572R56uZ5Li76aG15LiK5b+F6aG75Yqg5LiKIERlZGVDbXMg5a6Y5pa5572R5Z2AKHd3dy5kZWRlY21zLmNvbSnnmoTpk77mjqXjgIIgPGJyIC8+PGJyIC8+DQogIDTjgIHmnKrnu4/lrpjmlrnorrjlj6/vvIznpoHmraLlnKggRGVkZUNtcyDnmoTmlbTkvZPmiJbku7vkvZXpg6jliIbln7rnoYDkuIrku6Xlj5HlsZXku7vkvZXmtL7nlJ/niYjmnKzjgIHkv67mlLnniYjmnKzmiJbnrKzkuInmlrnniYjmnKznlKjkuo7ph43mlrDliIblj5HjgIIgPGJyIC8+PGJyIC8+DQo144CB5aaC5p6c5oKo5pyq6IO96YG15a6I5pys5Y2P6K6u55qE5p2h5qy+77yM5oKo55qE5o6I5p2D5bCG6KKr57uI5q2i77yM5omA6KKr6K645Y+v55qE5p2D5Yip5bCG6KKr5pS25Zue77yM5bm25om/5ouF55u45bqU5rOV5b6L6LSj5Lu744CCIDwvcD48YnIgLz4NCjxwPjxzdHJvbmc+5Zub44CB5pyJ6ZmQ5ouF5L+d5ZKM5YWN6LSj5aOw5piOIDwvc3Ryb25nPjxiciAvPjxiciAvPg0KICAx44CB5pys6L2v5Lu25Y+K5omA6ZmE5bim55qE5paH5Lu25piv5L2c5Li65LiN5o+Q5L6b5Lu75L2V5piO56Gu55qE5oiW6ZqQ5ZCr55qE6LWU5YG/5oiW5ouF5L+d55qE5b2i5byP5o+Q5L6b55qE44CCIDxiciAvPjxiciAvPg0KICAy44CB55So5oi35Ye65LqO6Ieq5oS/6ICM5L2/55So5pys6L2v5Lu277yM5oKo5b+F6aG75LqG6Kej5L2/55So5pys6L2v5Lu255qE6aOO6Zmp77yM5Zyo5bCa5pyq6LSt5Lmw5Lqn5ZOB5oqA5pyv5pyN5Yqh5LmL5YmN77yM5oiR5Lus5LiN5om/6K+65a+55YWN6LS555So5oi35o+Q5L6b5Lu75L2V5b2i5byP55qE5oqA5pyv5pSv5oyB44CB5L2/55So5ouF5L+d77yM5Lmf5LiN5om/5ouF5Lu75L2V5Zug5L2/55So5pys6L2v5Lu26ICM5Lqn55Sf6Zeu6aKY55qE55u45YWz6LSj5Lu744CCIDxiciAvPjxiciAvPg0KICAz44CB55S15a2Q5paH5pys5b2i5byP55qE5o6I5p2D5Y2P6K6u5aaC5ZCM5Y+M5pa55Lmm6Z2i562+572y55qE5Y2P6K6u5LiA5qC377yM5YW35pyJ5a6M5YWo55qE5ZKM562J5ZCM55qE5rOV5b6L5pWI5Yqb44CC5oKo5LiA5pem5byA5aeL56Gu6K6k5pys5Y2P6K6u5bm25a6J6KOFIERlZGVDbXPvvIzljbPooqvop4bkuLrlrozlhajnkIbop6PlubbmjqXlj5fmnKzljY/orq7nmoTlkITpobnmnaHmrL7vvIzlnKjkuqvmnInkuIrov7DmnaHmrL7mjojkuojnmoTmnYPlipvnmoTlkIzml7bvvIzlj5fliLDnm7jlhbPnmoTnuqbmnZ/lkozpmZDliLbjgILljY/orq7orrjlj6/ojIPlm7Tku6XlpJbnmoTooYzkuLrvvIzlsIbnm7TmjqXov53lj43mnKzmjojmnYPljY/orq7lubbmnoTmiJDkvrXmnYPvvIzmiJHku6zmnInmnYPpmo/ml7bnu4jmraLmjojmnYPvvIzotKPku6TlgZzmraLmjZ/lrrPvvIzlubbkv53nlZnov73nqbbnm7jlhbPotKPku7vnmoTmnYPlipvjgIIgPGJyIC8+PGJyIC8+DQo044CB5aaC5p6c5pys6L2v5Lu25bim5pyJ5YW25a6D6L2v5Lu255qE5pW05ZCIQVBJ56S66IyD5L6L5a2Q5YyF77yM6L+Z5Lqb5paH5Lu254mI5p2D5LiN5bGe5LqO5pys6L2v5Lu25a6Y5pa577yM5bm25LiU6L+Z5Lqb5paH5Lu25piv5rKh57uP6L+H5o6I5p2D5Y+R5biD55qE77yM6K+35Y+C6ICD55u45YWz6L2v5Lu255qE5L2/55So6K645Y+v5ZCI5rOV55qE5L2/55So44CCPC9wPjxiciAvPg0KPHA+5Y2P6K6u5Y+R5biD5pe26Ze077yaICAyMDA45bm0OOaciDIw5pelIEJ5IERlZGVDbXMuY29tPC9wPjxiciAvPg0KPHA+IDwvcD48L3A+ - - -SU5TRVJUIElOVE8gYCNAX19wbHVzYCAoYHBsdXNuYW1lYCwgYG1lbnVzdHJpbmdgLCBgbWFpbnVybGAsIGB3cml0ZXJgLCBgaXNzaG93YCwgYGZpbGVsaXN0YCkgVkFMVUVTICgn55m+5bqm57uT5p6E5YyW5pWw5o2uJywgJzxtOml0ZW0gbmFtZT0i55m+5bqm57uT5p6E5YyW5pWw5o2uIiBsaW5rPSJiYWlkdXNpdGVtYXBfbWFpbi5waHAiIHJhbms9InBsdXNf55m+5bqm57uT5p6E5YyW5pWw5o2uIiB0YXJnZXQ9Im1haW4iIC8+JywgJycsICfnu4fmoqblm6LpmJ8nLCAxLCBOVUxMKTs= - - -RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9saXN0YDsNCkRST1AgVEFCTEUgSUYgRVhJU1RTIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfc2V0dGluZ2A7DQpERUxFVEUgRlJPTSBgI0BfX3BsdXNgIFdIRVJFICBgcGx1c25hbWVgPSLnmb7luqbnu5PmnoTljJbmlbDmja4iOw== - - - - - - - - -./baidusitemap_main.php -../include/baidusitemap.func.php -../include/baiduxml.class.php -../plus/baidusitemap.php - - - - - -PD9waHANCnNldF90aW1lX2xpbWl0KDApOw0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvY29uZmlnLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9veHdpbmRvdy5jbGFzcy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvY2hhbm5lbHVuaXQuY2xhc3MucGhwIik7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2JhaWR1c2l0ZW1hcC5mdW5jLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9iYWlkdXhtbC5jbGFzcy5waHAiKTsNCg0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAnJzsNCmlmKGVtcHR5KCRhY3Rpb24pKSAkYWN0aW9uID0gJyc7DQoNCmNoZWNrX2luc3RhbGxlZCgpOw0KDQppZigkZG9wb3N0PT0nYXV0aCcpew0KCSRzaXRldXJsPSRjZmdfYmFzZWhvc3Q7DQogICAgJHNpZ3VybD0iaHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbS9pbmRleC5waHA/c2l0ZXVybD0iLnVybGVuY29kZSgkc2l0ZXVybCk7DQogICAgJHJlc3VsdCA9IGJhaWR1X2h0dHBfc2VuZCgkc2lndXJsKTsNCgkvL3Zhcl9kdW1wKCRyZXN1bHQpO2V4aXQoKTsNCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRyZXN1bHQsIHRydWUpOyANCiAgICBiYWlkdV9zZXRfc2V0dGluZygnc2l0ZXVybCcsICRkYXRhWydzaXRldXJsJ10pOw0KICAgIGJhaWR1X3NldF9zZXR0aW5nKCdjaGVja3NpZ24nLCAkZGF0YVsnY2hlY2tzaWduJ10pOw0KICAgIGlmKCRkYXRhWydzdGF0dXMnXT09MCl7DQogICAgICAgICRjaGVja3VybD0kc2l0ZXVybC4ieyRjZmdfcGx1c19kaXJ9L2JhaWR1c2l0ZW1hcC5waHA/ZG9wb3N0PWNoZWNrdXJsJmNoZWNrc2lnbj0iLiRkYXRhWydjaGVja3NpZ24nXTsNCg0KICAgICAgICAkYXV0aHVybD0iaHR0cDovL3p6LmJhaWR1LmNvbS9hcGkvb3BlbnNpdGVtYXAvYXV0aD9zaXRldXJsPSIuJGRhdGEgWydzaXRldXJsJ10uIiZjaGVja3VybD0iLnVybGVuY29kZSgkY2hlY2t1cmwpLiImY2hlY2tzaWduPSIuJGRhdGFbJ2NoZWNrc2lnbiddOw0KICAgICAgICAkYXV0aGRhdGEgPSBiYWlkdV9odHRwX3NlbmQoJGF1dGh1cmwpOw0KICAgICAgICAkb3V0cHV0ID0ganNvbl9kZWNvZGUoJGF1dGhkYXRhLCB0cnVlKTsNCiAgICAgICAgaWYoJG91dHB1dFsnc3RhdHVzJ109PTApew0KICAgICAgICAgICAgYmFpZHVfc2V0X3NldHRpbmcoJ3Bpbmd0b2tlbicsICRvdXRwdXRbJ3Rva2VuJ10pOw0KICAgICAgICAgICAgaWYoJGFjdGlvbj09J3Jlc3VibWl0JykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc2lnbiA9IG1kNSgkZGF0YVsnc2l0ZXVybCddLiRvdXRwdXRbJ3Rva2VuJ10pOw0KICAgICAgICAgICAgICAgIGJhaWR1X2RlbHNpdGVtYXAoJGRhdGFbJ3NpdGV1cmwnXSwxLCRzaWduKTsNCiAgICAgICAgICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnYmRwd2QnLCcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRvbGRfYmRwd2QgPSBiYWlkdV9nZXRfc2V0dGluZygnYmRwd2QnKTsNCiAgICAgICAgICAgIGlmKGVtcHR5KCRvbGRfYmRwd2QpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRiZHB3ZCA9IGJhaWR1X2dlbl9zaXRlbWFwX3Bhc3N3ZCgpOw0KICAgICAgICAgICAgICAgIGJhaWR1X3NldF9zZXR0aW5nKCdiZHB3ZCcsICRiZHB3ZCk7DQogICAgICAgICAgICAgICAgJHNpZ24gPSBtZDUoJGRhdGFbJ3NpdGV1cmwnXS4kb3V0cHV0Wyd0b2tlbiddKTsNCiAgICAgICAgICAgICAgICAvL+aPkOS6pOWFqOmHj+e0ouW8lQ0KICAgICAgICAgICAgICAgICRhbGxyZXR1cm5qc29uID0gYmFpZHVfc2F2ZXNpdGVtYXAoJ3NhdmUnLCRkYXRhIFsnc2l0ZXVybCddLCAxLCAkYmRwd2QsICRzaWduKTsNCiAgICAgICAgICAgICAgICAkYWxscmVzdWx0ID0ganNvbl9kZWNvZGUoJGFsbHJldHVybmpzb25bJ2pzb24nXSwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgYmFpZHVfc2V0X3NldHRpbmcoJ2xhc3R1cHRpbWVfYWxsJywgdGltZSgpKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy/mj5DkuqTlop7ph4/ntKLlvJUNCiAgICAgICAgICAgICAgICAkc2lnbiA9IG1kNSgkZGF0YVsnc2l0ZXVybCddLiRvdXRwdXRbJ3Rva2VuJ10pOw0KICAgICAgICAgICAgICAgIGJhaWR1X2RlbHNpdGVtYXAoJGRhdGFbJ3NpdGV1cmwnXSwyLCRzaWduKTsNCiAgICAgICAgICAgICAgICAkYWxscmV0dXJuanNvbiA9IGJhaWR1X3NhdmVzaXRlbWFwKCdzYXZlJywkZGF0YVsnc2l0ZXVybCddLCAyLCAkb2xkX2JkcHdkLCAkc2lnbik7DQogICAgICAgICAgICAgICAgJGFsbHJlc3VsdCA9IGpzb25fZGVjb2RlKCRhbGxyZXR1cm5qc29uWydqc29uJ10sIHRydWUpOw0KICAgICAgICAgICAgICAgIGJhaWR1X3NldF9zZXR0aW5nKCdsYXN0dXB0aW1lX2luYycsIHRpbWUoKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZigwPT0kYWxscmVzdWx0WydzdGF0dXMnXSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTaG93TXNnKCLmiJDlip/mj5DkuqTnmb7luqblnLDlm77ntKLlvJUiLCJiYWlkdXNpdGVtYXBfbWFpbi5waHAiLDAsNTAwMCk7DQogICAgICAgICAgICAgICAgZXhpdCgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBTaG93TXNnKCLmj5DkuqTnmb7luqblnLDlm77ntKLlvJXlpLHotKUiLCJiYWlkdXNpdGVtYXBfbWFpbi5waHAiLDAsNTAwMCk7DQogICAgICAgICAgICAgICAgZXhpdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgU2hvd01zZygi5o+Q5Lqk55m+5bqm5Zyw5Zu+57Si5byV5aSx6LSl77yM5peg5rOV5qCh6aqM5pys5Zyw5a+G6ZKl77yBIiwiYmFpZHVzaXRlbWFwX21haW4ucGhwIik7DQogICAgICAgICAgICBleGl0KCk7DQogICAgICAgIH0NCiAgICB9DQp9IGVsc2VpZigkZG9wb3N0PT0nY2hlY2t1cGRhdGUnKQ0Kew0KICAgICRnZXRfbGF0ZXN0X3ZlciA9IGJhaWR1X2h0dHBfc2VuZCgnaHR0cDovL2JhaWR1LmFwaS5kZWRlY21zLmNvbS9pbmRleC5waHA/Yz13ZWxjb21lJm09Z2V0X2xhdGVzdF92ZXInKTsNCiAgICBpZih2ZXJzaW9uX2NvbXBhcmUoJGdldF9sYXRlc3RfdmVyLCBQTFVTX0JBSURVU0lURU1BUF9WRVIsJz4nKSkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuajgOafpeWIsOacieaWsOeJiOacrO+8jOivt+WJjeWOu+S4i+i9ve+8gTxiciAvPjxhIGhyZWY9J2h0dHA6Ly9iYnMuZGVkZWNtcy5jb20vNjQ2MjcxLmh0bWwnIHRhcmdldD0nX2JsYW5rJyBzdHlsZT0nY29sb3I6Ymx1ZSc+54K55Ye75YmN5Y675LiL6L29PC9hPiA8YSBocmVmPSdiYWlkdXNpdGVtYXBfbWFpbi5waHAnID7ov5Tlm548L2E+IiwiamF2YXNjcmlwdDo7Iik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBTaG93TXNnKCLlvZPliY3kuLrmnIDmlrDniYjmnKzvvIzml6DpobvkuIvovb3mm7TmlrDvvIEiLCJqYXZhc2NyaXB0OjsiKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCn0gZWxzZWlmKCRkb3Bvc3Q9PSd2aWV3c3ViJykNCnsNCiAgICAkcXVlcnk9IlNFTEVDVCAqIEZST00gYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9saXN0YCBPUkRFUiBCWSBzaWQgREVTQyI7DQogICAgJGRzcWwtPlNldFF1ZXJ5KCRxdWVyeSk7DQogICAgJGRzcWwtPkV4ZWN1dGUoJ2RkJyk7DQogICAgJGxpc3RzdHI9IiI7DQogICAgd2hpbGUoJGFycj0kZHNxbC0+R2V0QXJyYXkoJ2RkJykpDQogICAgew0KICAgICAgICAkdHlwZXN0cj0kYXJyWyd0eXBlJ109PTE/J1vlhajph49dJzonW+WinumHj10nOw0KICAgICAgICAkbGlzdHN0ci49IiZuYnNwOyZuYnNwOyZuYnNwO3skdHlwZXN0cn0geyRhcnJbJ3VybCddfTxici8+XHJcbiI7DQogICAgfQ0KICAgIC8v6L+U5Zue5oiQ5Yqf5L+h5oGvDQogICAgJG1zZyA9ICINCiAgICB7JGxpc3RzdHJ9IjsNCiAgICAkbXNnID0gIjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDoyMHB4O1wiPiAgICB7JG1zZ308L2Rpdj4iOw0KDQogICAgJHdpbnRpdGxlID0gJ+aCqOW3sue7j+aPkOS6pOeahOe0ouW8leWIl+ihqO+8mic7DQogICAgJHdlY29tZV9pbmZvID0gJzxhIGhyZWY9XCdiYWlkdXNpdGVtYXBfbWFpbi5waHBcJz7ntKLlvJXmk43kvZw8L2E+IOOAi+eZvuW6pue7k+aehOWMluaVsOaNruWcsOWbvjo657Si5byV5pON5L2cJzsNCiAgICAkd2luID0gbmV3IE94V2luZG93KCk7DQogICAgJHdpbi0+QWRkVGl0bGUoJHdpbnRpdGxlKTsNCiAgICAkd2luLT5BZGRNc2dJdGVtKCRtc2cpOw0KICAgICR3aW5mb3JtID0gJHdpbi0+R2V0V2luZG93KCdoYW5kJywgJyZuYnNwOycsIGZhbHNlKTsNCiAgICAkd2luLT5EaXNwbGF5KCk7DQp9IGVsc2Ugew0KICAgIC8v6L+U5Zue5oiQ5Yqf5L+h5oGvDQogICAgJHNpdGV1cmwgPSBiYWlkdV9nZXRfc2V0dGluZygnc2l0ZXVybCcpOw0KICAgICRzZXR1cG1heGFpZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzZXR1cG1heGFpZCcpOw0KICAgICRsYXN0dXB0aW1lX2FsbCA9IGRhdGUoJ1ktbS1kJyxiYWlkdV9nZXRfc2V0dGluZygnbGFzdHVwdGltZV9hbGwnKSk7DQogICAgJGxhc3R1cHRpbWVfaW5jID0gZGF0ZSgnWS1tLWQnLGJhaWR1X2dldF9zZXR0aW5nKCdsYXN0dXB0aW1lX2luYycpKTsNCiAgICAkYmRhcmNzID0gbmV3IEJhaWR1QXJ0aWNsZVhtbDsNCiAgICAkYmRhcmNzLT5zZXRTaXRlbWFwVHlwZSgxKTsNCiAgICAkbWF4YWlkID0gJGJkYXJjcy0+Z2V0TWF4QWlkKCk7DQogICAgJG1zZyA9ICIgICAg44CA6K+36YCJ5oup5oKo6ZyA6KaB55qE5pON5L2c77yaDQogICAgPGEgaHJlZj0namF2YXNjcmlwdDppc0dvVXJsKFwiYmFpZHVzaXRlbWFwX21haW4ucGhwP2RvcG9zdD1hdXRoXCIsXCLmmK/lkKbnoa7lrprmj5DkuqTlop7ph4/ntKLlvJXvvJ9cIik7Jz48dT7mj5DkuqTlop7ph4/ntKLlvJU8L3U+PC9hPg0KICAgICZuYnNwOyZuYnNwOw0KICAgIDxhIGhyZWY9J2phdmFzY3JpcHQ6aXNHb1VybChcImJhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9YXV0aCZhY3Rpb249cmVzdWJtaXRcIixcIuaYr+WQpuehruWumumHjeaWsOaPkOS6pOWFqOmHj+e0ouW8le+8n1wiKTsnID48dT7ph43mlrDmj5DkuqTlhajph4/ntKLlvJU8L3U+PC9hPg0KICAgICZuYnNwOyZuYnNwOw0KICAgIDxhIGhyZWY9J2JhaWR1c2l0ZW1hcF9tYWluLnBocD9kb3Bvc3Q9dmlld3N1Yic+PHU+5p+l55yL5o+Q5Lqk57Si5byVPC91PjwvYT4NCiAgICAmbmJzcDsmbmJzcDsNCiAgICA8YSBocmVmPSdiYWlkdXNpdGVtYXBfbWFpbi5waHA/ZG9wb3N0PWNoZWNrdXBkYXRlJz48dT7mo4Dmn6Xmj5Lku7bmm7TmlrA8L3U+PC9hPg0KICAgICZuYnNwOyZuYnNwOw0KPGJyIC8+DQo8ZGl2IHN0eWxlPVwicGFkZGluZzoyMHB4OyBjb2xvcjojNjY2XCI+DQrmj5Lku7bkv6Hmga/vvJo8YnIgLz4NCuermeeCueWcsOWdgO+8mjxzcGFuIHN0eWxlPSdjb2xvcjpibGFjayc+PGI+eyRzaXRldXJsfTwvYj48L3NwYW4+PGJyIC8+DQrmnIDlkI7mj5DkuqTmlofmoaNJRO+8mjxzcGFuIHN0eWxlPSdjb2xvcjpibGFjayc+PGI+eyRzZXR1cG1heGFpZH08L2I+PC9zcGFuPu+8jOW9k+WJjeaWh+aho+acgOaWsElE77yaPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz48Yj57JG1heGFpZH08L2I+PC9zcGFuPjxiciAvPg0K5aKe6YeP57Si5byV5pyA5ZCO5o+Q5Lqk77yaPHNwYW4gc3R5bGU9J2NvbG9yOmJsYWNrJz48Yj57JGxhc3R1cHRpbWVfYWxsfTwvYj48L3NwYW4+PGJyIC8+DQrlhajph4/ntKLlvJXmnIDlkI7mj5DkuqTvvJo8c3BhbiBzdHlsZT0nY29sb3I6YmxhY2snPjxiPnskbGFzdHVwdGltZV9pbmN9PC9iPjwvc3Bhbj48YnIgLz4NCjxoci8+DQrlip/og73or7TmmI7vvJo8YnIgLz4NCuOAkOaPkOS6pOWinumHj+e0ouW8leOAkQ0K55So5LqO5o+Q5Lqk5pu05paw6aKR546H6L6D6aKR57mB55qE57Si5byV77yM5LiA6Iis5piv5YWo6YeP57Si5byV5o+Q5Lqk5a6M5oiQ5ZCO77yM5q+P5qyh5pu05paw5bCR6YeP5YaF5a655ZCO6L+b6KGM5aKe6YeP57Si5byV5o+Q5Lqk77ybPGJyIC8+DQrjgJDph43mlrDmj5DkuqTlhajph4/ntKLlvJXjgJENCumHjeaWsOWvueWFqOermeeahOeZvuW6puWcsOWbvue0ouW8lei/m+ihjOaPkOS6pO+8mzxiciAvPg0KPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj7ms6jvvJrngrnlh7vmj5DkuqTlkI7lj6/og73nrYnlvoXml7bpl7TovoPplb/vvIzor7fogJDlv4PnrYnlvoXjgII8L3NwYW4+PGJyIC8+DQo8L2Rpdj4NCiAgIjsNCiAgICAkbXNnID0gIjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDozNnB4O2hlaWdodDoyODBweFwiPnskbXNnfTwvZGl2PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KZnVuY3Rpb24gaXNHb1VybCh1cmwsbXNnKQ0Kew0KCWlmKGNvbmZpcm0obXNnKSkNCgl7DQoJCXdpbmRvdy5sb2NhdGlvbi5ocmVmPXVybDsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KfQ0KPC9zY3JpcHQ+IjsNCg0KICAgICR3aW50aXRsZSA9ICfmj5DkuqTnmb7luqbnu5PmnoTljJbmlbDmja7lnLDlm77ntKLlvJXvvIEnOw0KICAgICR3ZWNvbWVfaW5mbyA9ICfnmb7luqbnu5PmnoTljJbmlbDmja7lnLDlm746Oue0ouW8leaTjeS9nCc7DQogICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICR3aW4tPkFkZFRpdGxlKCR3aW50aXRsZSk7DQogICAgJHdpbi0+QWRkTXNnSXRlbSgkbXNnKTsNCiAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygnaGFuZCcsICcmbmJzcDsnLCBmYWxzZSk7DQogICAgJHdpbi0+RGlzcGxheSgpOw0KfQ0KDQo= - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpIGV4aXQoJ1JlcXVlc3QgRXJyb3IhJyk7DQpkZWZpbmUoJ1BMVVNfQkFJRFVTSVRFTUFQX1ZFUicsJzAuMC4yJyk7DQpmdW5jdGlvbiBiYWlkdV9odHRwX3NlbmQoJHVybCwgJGxpbWl0PTAsICRwb3N0PScnLCAkY29va2llPScnLCAkdGltZW91dD0xNSkNCnsNCiAgICAkcmV0dXJuID0gJyc7DQogICAgJG1hdGNoZXMgPSBwYXJzZV91cmwoJHVybCk7DQogICAgJHNjaGVtZSA9ICRtYXRjaGVzWydzY2hlbWUnXTsNCiAgICAkaG9zdCA9ICRtYXRjaGVzWydob3N0J107DQogICAgJHBhdGggPSAkbWF0Y2hlc1sncGF0aCddID8gJG1hdGNoZXNbJ3BhdGgnXS4oQCRtYXRjaGVzWydxdWVyeSddID8gJz8nLiRtYXRjaGVzWydxdWVyeSddIDogJycpIDogJy8nOw0KICAgICRwb3J0ID0gIWVtcHR5KCRtYXRjaGVzWydwb3J0J10pID8gJG1hdGNoZXNbJ3BvcnQnXSA6IDgwOw0KDQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgew0KICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHNjaGVtZS4nOi8vJy4kaG9zdC4nOicuJHBvcnQuJHBhdGgpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOw0KICAgICAgICBpZiAoJHBvc3QpIHsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsNCiAgICAgICAgICAgICRjb250ZW50ID0gaXNfYXJyYXkoJHBvcnQpID8gaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkgOiAkcG9zdDsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkY29udGVudCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRjb29raWUpIHsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUUsICRjb29raWUpOw0KICAgICAgICB9DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgJHRpbWVvdXQpOw0KICAgICAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICAgICAgICAkc3RhdHVzID0gY3VybF9nZXRpbmZvKCRjaCk7DQogICAgICAgICRlcnJubyA9IGN1cmxfZXJybm8oJGNoKTsNCiAgICAgICAgY3VybF9jbG9zZSgkY2gpOw0KICAgICAgICBpZiAoJGVycm5vIHx8ICRzdGF0dXNbJ2h0dHBfY29kZSddICE9IDIwMCkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuICEkbGltaXQgPyAkZGF0YSA6IHN1YnN0cigkZGF0YSwgMCwgJGxpbWl0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICgkcG9zdCkgew0KICAgICAgICAkY29udGVudCA9IGlzX2FycmF5KCRwb3J0KSA/IGh0dHBfYnVpbGRfcXVlcnkoJHBvc3QpIDogJHBvc3Q7DQogICAgICAgICRvdXQgPSAiUE9TVCAkcGF0aCBIVFRQLzEuMFxyXG4iOw0KICAgICAgICAkaGVhZGVyID0gIkFjY2VwdDogKi8qXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkFjY2VwdC1MYW5ndWFnZTogemgtY25cclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiVXNlci1BZ2VudDogIi5AJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLiJcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAnQ29udGVudC1MZW5ndGg6ICcuc3RybGVuKCRjb250ZW50KS4iXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNvbm5lY3Rpb246IENsb3NlXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXHJcbiI7DQogICAgICAgICRoZWFkZXIgLj0gIkNvb2tpZTogJGNvb2tpZVxyXG5cclxuIjsNCiAgICAgICAgJG91dCAuPSAkaGVhZGVyLiRjb250ZW50Ow0KICAgIH0gZWxzZSB7DQogICAgICAgICRvdXQgPSAiR0VUICRwYXRoIEhUVFAvMS4wXHJcbiI7DQogICAgICAgICRoZWFkZXIgPSAiQWNjZXB0OiAqLypcclxuIjsNCiAgICAgICAgJGhlYWRlciAuPSAiQWNjZXB0LUxhbmd1YWdlOiB6aC1jblxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJVc2VyLUFnZW50OiAiLkAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10uIlxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJIb3N0OiAkaG9zdDokcG9ydFxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOw0KICAgICAgICAkaGVhZGVyIC49ICJDb29raWU6ICRjb29raWVcclxuXHJcbiI7DQogICAgICAgICRvdXQgLj0gJGhlYWRlcjsNCiAgICB9DQoNCiAgICAkZnBmbGFnID0gMDsNCiAgICAkZnAgPSBmYWxzZTsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmc29ja2V0b3BlbicpKSB7DQogICAgICAgICRmcCA9IGZzb2NrZXRvcGVuKCRob3N0LCAkcG9ydCwgJGVycm5vLCAkZXJyc3RyLCAkdGltZW91dCk7DQogICAgfQ0KICAgIGlmICghJGZwKSB7DQogICAgICAgICRjb250ZXh0ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KA0KICAgICAgICAgICAgJ2h0dHAnID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICdtZXRob2QnID0+ICRwb3N0ID8gJ1BPU1QnIDogJ0dFVCcsDQogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlciwNCiAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJGNvbnRlbnQsDQogICAgICAgICAgICAgICAgJ3RpbWVvdXQnID0+ICR0aW1lb3V0LA0KICAgICAgICAgICAgKSwNCiAgICAgICAgKSk7DQogICAgICAgICRmcCA9IEBmb3Blbigkc2NoZW1lLic6Ly8nLiRob3N0Lic6Jy4kcG9ydC4kcGF0aCwgJ2InLCBmYWxzZSwgJGNvbnRleHQpOw0KICAgICAgICAkZnBmbGFnID0gMTsNCiAgICB9DQoNCiAgICBpZiAoISRmcCkgew0KICAgICAgICByZXR1cm4gJyc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgc3RyZWFtX3NldF9ibG9ja2luZygkZnAsIHRydWUpOw0KICAgICAgICBzdHJlYW1fc2V0X3RpbWVvdXQoJGZwLCAkdGltZW91dCk7DQogICAgICAgIEBmd3JpdGUoJGZwLCAkb3V0KTsNCiAgICAgICAgJHN0YXR1cyA9IHN0cmVhbV9nZXRfbWV0YV9kYXRhKCRmcCk7DQogICAgICAgIGlmICghJHN0YXR1c1sndGltZWRfb3V0J10pIHsNCiAgICAgICAgICAgIHdoaWxlICghZmVvZigkZnApICYmICEkZnBmbGFnKSB7DQogICAgICAgICAgICAgICAgaWYgKCgkaGVhZGVyID0gQGZnZXRzKCRmcCkpICYmICgkaGVhZGVyID09ICJcclxuIiB8fCAgJGhlYWRlciA9PSAiXG4iKSkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGxpbWl0KSB7DQogICAgICAgICAgICAgICAgJHJldHVybiA9IHN0cmVhbV9nZXRfY29udGVudHMoJGZwLCAkbGltaXQpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIEBmY2xvc2UoJGZwKTsNCiAgICAgICAgcmV0dXJuICRyZXR1cm47DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBjaGVja19pbnN0YWxsZWQoKQ0Kew0KICAgIGdsb2JhbCAkZHNxbCwkY2ZnX2RiX2xhbmd1YWdlOw0KICAgICRpc19pbnN0YWxsZWQgPSAkZHNxbC0+SXNUYWJsZSgiI0BfX3BsdXNfYmFpZHVzaXRlbWFwX3NldHRpbmciKTsNCiAgICANCiAgICBpZighJGlzX2luc3RhbGxlZCkNCiAgICB7DQogICAgICAgICRpbnN0YWxsX3NxbD08PDxFT1QNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfbGlzdGAgKA0KICBgc2lkYCBpbnQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KICBgdXJsYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwgREVGQVVMVCAnJywNCiAgYHR5cGVgIHRpbnlpbnQoNCkgTk9UIE5VTEwsDQogIGBjcmVhdGVfdGltZWAgaW50KDEwKSBOT1QgTlVMTCBERUZBVUxUICcwJywNCiAgYHBhZ2VzaXplYCBpbnQoMTEpIERFRkFVTFQgJzAnLA0KICBQUklNQVJZIEtFWSAoYHNpZGApLA0KICBLRVkgYHBhZ2VzaXplYCAoYHBhZ2VzaXplYCkNCikgVFlQRT1NeUlTQU07DQpDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX3NldHRpbmdgICgNCiAgYHNrZXlgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBERUZBVUxUICcnLA0KICBgc3ZhbHVlYCB0ZXh0IE5PVCBOVUxMLA0KICBgc3RpbWVgIGludCgxMCkgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgc2tleWApDQopIFRZUEU9TXlJU0FNOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTDQoJKCdzaXRldXJsJywgJycsIDApLA0KCSgnY2hlY2tzaWduJywgJycsIDApLA0KCSgncGluZ3Rva2VuJywgJycsIDApLA0KCSgnYmRwd2QnLCAnJywgMCksDQoJKCdzZXR1cG1heGFpZCcsICcnLCAwKSwNCgkoJ2xhc3R1cHRpbWVfYWxsJywgJycsIDApLA0KCSgnbGFzdHVwdGltZV9pbmMnLCAnJywgMCk7DQpFT1Q7DQogICAgICAgICRzcWxxdWVyeSA9IHN0cl9yZXBsYWNlKCJcciIsIiIsJGluc3RhbGxfc3FsKTsNCiAgICAgICAgJHNxbHMgPSBwcmVnX3NwbGl0KCIjO1sgXHRdezAsfVxuIyIsJHNxbHF1ZXJ5KTsNCiAgICAgICAgJG5lcnJDb2RlID0gIiI7ICRpPTA7DQogICAgICAgIGZvcmVhY2goJHNxbHMgYXMgJHEpDQogICAgICAgIHsNCiAgICAgICAgICAgICRxID0gdHJpbSgkcSk7DQogICAgICAgICAgICBpZigkcT09IiIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGRzcWwtPkdldFZlcnNpb24oKSA+PSA0LjEpIHsNCiAgICAgICAgICAgICAgICBpZihwcmVnX21hdGNoKCcjQ1JFQVRFI2knLCAkcSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcSA9IHByZWdfcmVwbGFjZSgiI1RZUEU9TXlJU0FNI2kiLCJFTkdJTkU9TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD0iLiRjZmdfZGJfbGFuZ3VhZ2UsJHEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxKTsNCiAgICAgICAgICAgICRlcnJDb2RlID0gdHJpbSgkZHNxbC0+R2V0RXJyb3IoKSk7DQogICAgICAgICAgICBpZigkZXJyQ29kZT09IiIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkbmVyckNvZGUgLj0gIuaJp+ihjO+8miA8Zm9udCBjb2xvcj0nYmx1ZSc+JHE8L2ZvbnQ+IOWHuumUme+8jOmUmeivr+aPkOekuu+8mjxmb250IGNvbG9yPSdyZWQnPiIuJGVyckNvZGUuIjwvZm9udD48YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBTaG93TXNnKCLmiJDlip/lronoo4XmlbDmja7lupPvvIHpppbmrKHlronoo4Xov5vooYzlhajph4/ntKLlvJXmj5DkuqTvvIzmraTov4fnqIvlj6/og73mr5TovoPplb/vvIzor7fogJDlv4PnrYnlvoXigKbigKYiLiRuZXJyQ29kZSwiYmFpZHVzaXRlbWFwX21haW4ucGhwP2RvcG9zdD1hdXRoJmFjdGlvbj1yZXN1Ym1pdCIsMCw1MDAwKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiBUcnVlOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gYmFpZHVfZ2V0X3NldHRpbmcoJHNrZXksICR0aW1lPWZhbHNlLCAkcmVhbD1mYWxzZSkNCnsNCiAgICBnbG9iYWwgJGRzcWw7DQogICAgc3RhdGljICRzZXR0aW5nID0gYXJyYXkoKTsNCiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsNCiAgICBpZiAoZW1wdHkoJHNldHRpbmdbJHNrZXldKSB8fCAkcmVhbCkgew0KICAgICAgICAkcm93ID0gJGRzcWwtPkdldE9uZSgiU0VMRUNUICogRlJPTSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX3NldHRpbmdgIFdIRVJFIHNrZXk9J3skc2tleX0nIik7DQogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ109JHJvd1snc3ZhbHVlJ107DQogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3RpbWUnXT0kcm93WydzdGltZSddOw0KICAgIH0NCiAgICBpZiAoIWlzc2V0KCRzZXR0aW5nWyRza2V5XSkpIHJldHVybiAkdGltZSA/IGFycmF5KCkgOiBudWxsOw0KICAgIHJldHVybiAkdGltZSA/ICRzZXR0aW5nWyRza2V5XSA6ICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ107DQp9DQoNCmZ1bmN0aW9uIGJhaWR1X3NldF9zZXR0aW5nKCRza2V5LCAkc3ZhbHVlKQ0Kew0KICAgIGdsb2JhbCAkZHNxbDsNCiAgICAkc3RpbWU9dGltZSgpOw0KICAgICRza2V5PWFkZHNsYXNoZXMoJHNrZXkpOw0KICAgICRzdmFsdWU9YWRkc2xhc2hlcygkc3ZhbHVlKTsNCiAgICAkc3FsPSJVUERBVEUgYCNAX19wbHVzX2JhaWR1c2l0ZW1hcF9zZXR0aW5nYCBTRVQgc3ZhbHVlPSd7JHN2YWx1ZX0nLHN0aW1lPSd7JHN0aW1lfScgV0hFUkUgc2tleT0neyRza2V5fScgIjsNCiAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkc3FsKTsNCn0NCmZ1bmN0aW9uIGJhaWR1X3N0cmlwX2ludmFsaWRfeG1sKCR2YWx1ZSkNCnsNCiAgICAkcmV0ID0gJyc7DQogICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgcmV0dXJuICRyZXQ7DQogICAgfQ0KDQogICAgJGxlbmd0aCA9IHN0cmxlbigkdmFsdWUpOw0KICAgIGZvciAoJGk9MDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7DQogICAgICAgICRjdXJyZW50ID0gb3JkKCR2YWx1ZVskaV0pOw0KICAgICAgICBpZiAoJGN1cnJlbnQgPT0gMHg5IHx8ICRjdXJyZW50ID09IDB4QSB8fCAkY3VycmVudCA9PSAweEQgfHwNCiAgICAgICAgKCRjdXJyZW50ID49IDB4MjAgJiYgJGN1cnJlbnQgPD0gMHhEN0ZGKSB8fA0KICAgICAgICAoJGN1cnJlbnQgPj0gMHhFMDAwICYmICRjdXJyZW50IDw9IDB4RkZGRCkgfHwNCiAgICAgICAgKCRjdXJyZW50ID49IDB4MTAwMDAgJiYgJGN1cnJlbnQgPD0gMHgxMEZGRkYpKSB7DQogICAgICAgICAgICAkcmV0IC49IGNocigkY3VycmVudCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcmV0IC49ICcgJzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJHJldDsNCn0NCg0KZnVuY3Rpb24gYmFpZHVfc2F2ZXNpdGVtYXAoJGFjdGlvbiwgJHNpdGUsICR0eXBlLCAkYmRwd2QsICRzaWduKQ0Kew0KICAgIGdsb2JhbCAkZHNxbCwkY2ZnX3BsdXNfZGlyLCRjZmdfYmFzZWhvc3Q7DQogICAgLy8kc2l0ZXVybCA9ICRjZmdfYmFzZWhvc3Q7DQogICAgJHNpdGV1cmwgPSAkc2l0ZTsNCiAgICAkenphY3Rpb24gPSAnJzsNCiAgICAkYmRwd2Q9YWRkc2xhc2hlcygkYmRwd2QpOw0KICAgIGlmICgwID09IHN0cm5jYXNlY21wKCdzYXZlJywgJGFjdGlvbiwgMykpIHsNCiAgICAgICAgJHp6YWN0aW9uID0gJ3NhdmVzaXRlbWFwJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgICRzY3JpcHQgPSAnJzsNCiAgICAkc3R5cGUgPSAnJzsNCiAgICAkcGFnZXNpemU9MDsNCiAgICBpZiAoMSA9PSAkdHlwZSkgew0KICAgICAgICAkc2NyaXB0ID0gJ2luZGV4YWxsJzsNCiAgICAgICAgJHN0eXBlID0gJ2FsbCc7DQogICAgfSBlbHNlIGlmICgyID09ICR0eXBlKSB7DQogICAgICAgICRzY3JpcHQgPSAnaW5kZXhpbmMnOw0KICAgICAgICAkc3R5cGUgPSAnaW5jJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgICRyZXNvdXJjZV9uYW1lPSdSREZfT3RoZXJfV2VicGFnZSc7DQogICAgJGJkYXJjcyA9IG5ldyBCYWlkdUFydGljbGVYbWw7DQogICAgJGJkYXJjcy0+c2V0U2l0ZW1hcFR5cGUoJHR5cGUpOw0KICAgICRhcmN0b3RhbCA9ICRiZGFyY3MtPmdldFRvdGFsKCk7DQogICAgaWYoJGFyY3RvdGFsPT0wKSByZXR1cm4gZmFsc2U7DQogICAgJHBhZ2VzaXplPWNlaWwoJGFyY3RvdGFsLyRiZGFyY3MtPlJvdyk7DQogICAgaWYoJHBhZ2VzaXplPjApDQogICAgew0KICAgICAgICBmb3IoJGk9MDskaTwkcGFnZXNpemU7JGkrKykNCiAgICAgICAgew0KICAgICAgICAgICAgJGNmZ19wbHVzX2RpciA9IHN0cl9yZXBsYWNlKCIvIiwgJycsICRjZmdfcGx1c19kaXIgKTsNCiAgICAgICAgICAgICRpbmRleHVybCA9ICRzaXRldXJsLiJ7JGNmZ19wbHVzX2Rpcn0vYmFpZHVzaXRlbWFwLnBocD9kb3Bvc3Q9c2l0ZW1hcF9pbmRleCZ0eXBlPXskc2NyaXB0fSZwd2Q9eyRiZHB3ZH0mcGFnZXNpemU9eyRpfSI7DQogICAgICAgICAgICAkdGltZT10aW1lKCk7DQogICAgICAgICAgICAkaW5RdWVyeSA9ICJJTlNFUlQgSU5UTyBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgIChgdXJsYCwgYHR5cGVgLCBgY3JlYXRlX3RpbWVgLCBgcGFnZXNpemVgKSBWQUxVRVMgKCd7JGluZGV4dXJsfScsIHskdHlwZX0sIHskdGltZX0sIHskaX0pOyI7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRycyA9ICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRpblF1ZXJ5KTsNCiAgICAgICAgICAgICRzdWJtaXR1cmw9Imh0dHA6Ly96ei5iYWlkdS5jb20vYXBpL29wZW5zaXRlbWFwL3skenphY3Rpb259P3NpdGV1cmw9Ii51cmxlbmNvZGUoJHNpdGV1cmwpLiImaW5kZXh1cmw9Ii51cmxlbmNvZGUoJGluZGV4dXJsKS4iJnRva2Vuc2lnbj0iLnVybGVuY29kZSgkc2lnbikuIiZ0eXBlPSIuJHN0eXBlLiImcmVzb3VyY2VfbmFtZT0iLiRyZXNvdXJjZV9uYW1lOw0KICAgICAgICAgICAgJHJldCA9IGJhaWR1X2h0dHBfc2VuZCgkc3VibWl0dXJsKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkYmRhcmNzLT5zZXRTZXR1cE1heEFpZCgpOw0KICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgJ2pzb24nID0+ICRyZXQsDQogICAgICAgICd1cmwnICA9PiAkc3VibWl0dXJsLA0KICAgICk7DQp9DQoNCmZ1bmN0aW9uIGJhaWR1X2RlbHNpdGVtYXAoJHNpdGUsICR0eXBlPTAsICRzaWduKQ0Kew0KICAgIGdsb2JhbCAkZHNxbDsNCiAgICAkc2l0ZXVybCA9ICRzaXRlOw0KICAgICR0eXBlPWludHZhbCgkdHlwZSk7DQogICAgJGFkZFdoZXJlPSIiOw0KICAgIGlmKCR0eXBlPjApICRhZGRXaGVyZSAuPSAiV0hFUkUgdHlwZT17JHR5cGV9IjsNCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgIHskYWRkV2hlcmV9IjsNCiAgICAkZHNxbC0+U2V0UXVlcnkoJHF1ZXJ5KTsNCiAgICAkZHNxbC0+RXhlY3V0ZSgnZGQnKTsNCiAgICB3aGlsZSAoJHJvdz0kZHNxbC0+R2V0QXJyYXkoJ2RkJykpIHsNCiAgICAgICAgJGluZGV4dXJsPSRyb3dbJ3VybCddOw0KICAgICAgICAkc3VibWl0dXJsPSJodHRwOi8venouYmFpZHUuY29tL2FwaS9vcGVuc2l0ZW1hcC9kZWxldGVzaXRlbWFwP3NpdGV1cmw9Ii51cmxlbmNvZGUoJHNpdGV1cmwpLiImaW5kZXh1cmw9Ii51cmxlbmNvZGUoJGluZGV4dXJsKS4iJnRva2Vuc2lnbj0iLnVybGVuY29kZSgkc2lnbik7DQogICAgICAgIC8vdmFyX2R1bXAoJHN1Ym1pdHVybCk7DQogICAgICAgICRyZXQgPSBiYWlkdV9odHRwX3NlbmQoJHN1Ym1pdHVybCk7DQogICAgICAgIA0KICAgICAgICAkZGVscmVzdWx0ID0ganNvbl9kZWNvZGUoJHJldCwgdHJ1ZSk7DQogICAgICAgIGlmKCRkZWxyZXN1bHRbJ3N0YXR1cyddPT0wKQ0KICAgICAgICB7DQogICAgICAgICAgICAkZGVsUXVlcnk9IkRFTEVURSBGUk9NIGAjQF9fcGx1c19iYWlkdXNpdGVtYXBfbGlzdGAgV0hFUkUgYHNpZGA9eyRyb3dbJ3NpZCddfTsiOw0KICAgICAgICAgICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJGRlbFF1ZXJ5KTsNCiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCJUUlVOQ0FURSBgI0BfX3BsdXNfYmFpZHVzaXRlbWFwX2xpc3RgOyIpOw0KICAgICAgICB9DQogICAgICAgIC8vdmFyX2R1bXAoJGRlbHJlc3VsdCk7DQogICAgfQ0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQpmdW5jdGlvbiBiYWlkdV9nZW5fc2l0ZW1hcF9wYXNzd2QoKQ0Kew0KICAgIHJldHVybiBzdWJzdHIobWQ1KG10X3JhbmQoMTAwMDAwMDAsIDk5OTk5OTk5KS5taWNyb3RpbWUoKSksIDAsIDE4KTsNCn0NCg0KZnVuY3Rpb24gYmFpZHVfaGVhZGVyX3N0YXR1cygkc3RhdHVzKQ0Kew0KICAgLy8gJ2NnaScsICdjZ2ktZmNnaScNCiAgIGhlYWRlcignU3RhdHVzOiAnLiRzdGF0dXMsIFRSVUUpOw0KICAgaGVhZGVyKCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXS4nICcuJHN0YXR1cyk7DQp9DQo/Pg== - - -PD9waHANCmlmKCFkZWZpbmVkKCdERURFSU5DJykpIGV4aXQoJ1JlcXVlc3QgRXJyb3IhJyk7DQpyZXF1aXJlX29uY2UoREVERUlOQy4nL2NoYW5uZWx1bml0LmNsYXNzLnBocCcpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuJy90eXBlbGluay5jbGFzcy5waHAnKTsNCg0KY2xhc3MgQmFpZHVBcnRpY2xlWG1sIHsNCgl2YXIgJENoYW5uZWxVbml0Ow0KCXZhciAkTWFpblRhYmxlOw0KCXZhciAkVHlwZWlkOw0KCXZhciAkQ2hhbm5lbElEPTE7DQogICAgdmFyICRTdGFydD0wOw0KCXZhciAkUm93PTEwMDA7DQoJdmFyICRUeXBlTGluazsNCiAgICB2YXIgJFNpdGVtYXBUeXBlPTI7DQoNCglmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQoJew0KICAgICAgICBoZWxwZXIoJ3N0cmluZycpOw0KCQkkdGhpcy0+Q2hhbm5lbFVuaXQgPSBuZXcgQ2hhbm5lbFVuaXQoaW50dmFsKCR0aGlzLT5DaGFubmVsSUQpKTsNCgkJaWYoJHRoaXMtPkNoYW5uZWxVbml0LT5DaGFubmVsSW5mb3NbJ2lzc3lzdGVtJ10hPS0xKQ0KCQl7DQoJCQkkdGhpcy0+TWFpblRhYmxlPScjQF9fYXJjaGl2ZXMnOw0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPk1haW5UYWJsZT0kdGhpcy0+Q2hhbm5lbFVuaXQtPkNoYW5uZWxJbmZvc1snYWRkdGFibGUnXTsNCgkJfQ0KCX0NCiAgICANCg0KCQ0KICAgIGZ1bmN0aW9uIEJhaWR1QXJ0aWNsZVhtbCgpDQogICAgew0KICAgICAgICAkdGhpcy0+X19jb25zdHJ1Y3QoKTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc2V0U2l0ZW1hcFR5cGUoJHNpdGVtYXBfdHlwZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5TaXRlbWFwVHlwZT0kc2l0ZW1hcF90eXBlOw0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBnZXRNYXhBaWQoKQ0KICAgIHsNCiAgICAgICAgZ2xvYmFsICRkc3FsOw0KICAgICAgICAkcm93PSRkc3FsLT5HZXRPbmUoIlNFTEVDVCBNQVgoYWlkKSBBUyBkZCBGUk9NIGAjQF9fYWRkb25hcnRpY2xlYCIpOw0KICAgICAgICAkc2V0dXBtYXhhaWQgPSBlbXB0eSgkcm93WydkZCddKT8gMCA6IGludHZhbCgkcm93WydkZCddKTsNCiAgICAgICAgcmV0dXJuICRzZXR1cG1heGFpZDsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc2V0U2V0dXBNYXhBaWQoKQ0KICAgIHsNCiAgICAgICAgJHNldHVwbWF4YWlkID0gJHRoaXMtPmdldE1heEFpZCgpOw0KICAgICAgICBiYWlkdV9zZXRfc2V0dGluZygnc2V0dXBtYXhhaWQnLCAkc2V0dXBtYXhhaWQpOw0KICAgIH0NCgkNCiAgICBmdW5jdGlvbiBnZXRUb3RhbCgpDQogICAgew0KICAgICAgICBnbG9iYWwgJGRzcWw7DQogICAgICAgICRhZGRvblF1ZXJ5PScnOw0KICAgICAgICBpZigkdGhpcy0+U2l0ZW1hcFR5cGU9PTIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZXR1cG1heGFpZCA9IGJhaWR1X2dldF9zZXR0aW5nKCdzZXR1cG1heGFpZCcpOw0KICAgICAgICAgICAgJGFkZG9uUXVlcnkgLj0gIkFORCBpZD4iLmludHZhbCgkc2V0dXBtYXhhaWQpOw0KICAgICAgICB9DQogICAgICAgICRzcWw9IlNFTEVDVCBDT1VOVCgqKSBBUyBkZCBGUk9NIGB7JHRoaXMtPk1haW5UYWJsZX1gIFdIRVJFIGNoYW5uZWw9MSB7JGFkZG9uUXVlcnl9IjsNCiAgICAgICAgLy92YXJfZHVtcCgkc2V0dXBtYXhhaWQpOw0KICAgICAgICAvL3Zhcl9kdW1wKCRzcWwpOw0KICAgICAgICAkcm93PSRkc3FsLT5HZXRPbmUoJHNxbCk7DQogICAgICAgIHJldHVybiBlbXB0eSgkcm93WydkZCddKT8gMCA6IGludHZhbCgkcm93WydkZCddKTsNCiAgICB9DQogICAgDQoJZnVuY3Rpb24gZ2V0VHlwZSgkdHlwZWlkKQ0KCXsNCgkJJHRoaXMtPlR5cGVMaW5rID0gbmV3IFR5cGVMaW5rKCR0eXBlaWQpOw0KCQkkdHlwZWluZm9zID0gJHRoaXMtPlR5cGVMaW5rLT5UeXBlSW5mb3M7DQogICAgICAgIA0KCQkkdHlwZWluZm9zWyd0eXBlbGluayddID0gJHR5cGVpbmZvc1sndHlwZXVybCddID0gR2V0T25lVHlwZVVybEEoJHRoaXMtPlR5cGVMaW5rLT5UeXBlSW5mb3MpOw0KCQkkdHlwZWluZm9zWydwb3NpdGlvbiddID0gSHRtbDJUZXh0KCR0aGlzLT5UeXBlTGluay0+R2V0UG9zaXRpb25MaW5rKFRSVUUpKTsNCgkJcmV0dXJuICR0eXBlaW5mb3M7DQoJfQ0KCQ0KCWZ1bmN0aW9uIHRvWG1sKCkNCgl7DQoJCWdsb2JhbCAkZHNxbCwkY2ZnX3dlYm5hbWUsJGNmZ19iYXNlaG9zdCwkY2ZnX3NvZnRfbGFuZzsNCgkJJGFkZG9uUXVlcnk9JGxpbWl0UXVlcnk9IiI7DQoJCWlmKCFlbXB0eSgkdGhpcy0+VHlwZWlkKSkNCgkJew0KCQkJJGFkZG9uUXVlcnkgLj0gIkFORCBhcmMudHlwZWlkPSIuaW50dmFsKCR0aGlzLT5UeXBlaWQpOw0KCQkJJHR5cGVpbmZvcyA9ICR0aGlzLT5nZXRUeXBlKCR0aGlzLT5UeXBlaWQpOw0KCQl9DQogICAgICAgIGlmKCR0aGlzLT5TaXRlbWFwVHlwZT09MikNCiAgICAgICAgew0KICAgICAgICAgICAgJHNldHVwbWF4YWlkID0gYmFpZHVfZ2V0X3NldHRpbmcoJ3NldHVwbWF4YWlkJyk7DQogICAgICAgICAgICAkYWRkb25RdWVyeSAuPSAiQU5EIGFyYy5pZD4iLmludHZhbCgkc2V0dXBtYXhhaWQpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5TdGFydCA9IGludHZhbCgkdGhpcy0+U3RhcnQpOw0KCQkvL3Zhcl9kdW1wKCR0eXBlaW5mb3MpO2V4aXQoKTsNCgkJaWYoIWVtcHR5KCR0aGlzLT5Sb3cpKSAkbGltaXRRdWVyeSA9ICJMSU1JVCAgeyR0aGlzLT5TdGFydH0sIi5pbnR2YWwoJHRoaXMtPlJvdyk7DQoJCQ0KCQkkcXVlcnkgPSAiU0VMRUNUIGFyYy4qLGFyYy5zZW5kZGF0ZSBBUyBwdWJkYXRlLHRwLnR5cGVkaXIsdHAudHlwZW5hbWUsdHAuaXNkZWZhdWx0LHRwLmRlZmF1bHRuYW1lLHRwLm5hbWVydWxlLA0KCQkJdHAubmFtZXJ1bGUyLHRwLmlzcGFydCx0cC5tb3Jlc2l0ZSx0cC5zaXRldXJsLHRwLnNpdGVwYXRoLGF0LmJvZHkNCgkJCUZST00gYHskdGhpcy0+TWFpblRhYmxlfWAgYXJjIExFRlQgSk9JTiBgI0BfX2FyY3R5cGVgIHRwIE9OIGFyYy50eXBlaWQ9dHAuaWQNCiAgICAgICAgICAgIExFRlQgSk9JTiBgI0BfX2FkZG9uYXJ0aWNsZWAgYXQgT04gYXJjLmlkPWF0LmFpZA0KCQkJV0hFUkUgYXJjLmFyY3Jhbms9MCBBTkQgYXJjLmFyY3JhbmsgPiAtMSBBTkQgYXJjLmNoYW5uZWw9MSB7JGFkZG9uUXVlcnl9IE9SREVSIEJZIGFyYy5zZW5kZGF0ZSBERVNDIHskbGltaXRRdWVyeX0iOw0KICAgICAgICAvL3Zhcl9kdW1wKCRxdWVyeSk7DQoJCSRkc3FsLT5TZXRRdWVyeSgkcXVlcnkpOw0KCQkkZHNxbC0+RXhlY3V0ZSgnZGQnKTsNCiAgICAgICAgDQoJCSR4bWxzdHIgPSAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjx1cmxzZXQ+JzsNCiAgICAgICAgJHNldHVwbWF4YWlkPTA7DQoJCXdoaWxlICgkcm93PSRkc3FsLT5HZXRBcnJheSgnZGQnKSkgew0KCQkJJHJvd1snaWQnXSA9IGlzc2V0KCRyb3dbJ2FpZCddKT8gJHJvd1snYWlkJ10gOiAkcm93WydpZCddOw0KCQkJJHJvd1snZmlsZW5hbWUnXSA9ICRyb3dbJ2FyY3VybCddID0gR2V0RmlsZVVybCgkcm93WydpZCddLCRyb3dbJ3R5cGVpZCddLCRyb3dbJ3NlbmRkYXRlJ10sJHJvd1sndGl0bGUnXSwxLA0KCQkJCQkJMCwkcm93WyduYW1lcnVsZSddLCRyb3dbJ3R5cGVkaXInXSwwLCcnLCRyb3dbJ21vcmVzaXRlJ10sJHJvd1snc2l0ZXVybCddLCRyb3dbJ3NpdGVwYXRoJ10pOw0KDQoJCQkkcm93WydzaG93ZGF0ZSddID0gTXlkYXRlKCdZLW0tZCcsICRyb3dbJ3B1YmRhdGUnXSk7DQoJCQkkcm93Wydwcmlvcml0eSddID0gMDsNCiAgICAgICAgICAgICRyb3dbJ2JvZHknXT1pc3NldCgkcm93Wydib2R5J10pPyBIdG1sMlRleHQoJHJvd1snYm9keSddKSA6ICcnOw0KICAgICAgICAgICAgJHJvd1snYm9keSddID0gZW1wdHkoJHJvd1snYm9keSddKT8gJHJvd1snZGVzY3JpcHRpb24nXSA6ICRyb3dbJ2JvZHknXTsNCiAgICAgICAgICAgIC8vdmFyX2R1bXAoJHJvdyk7ZXhpdDsNCgkJCWlmIChwcmVnX21hdGNoKCIjYyMiLCAkcm93WydmbGFnJ10pKSB7DQoJCQkJJHJvd1sncHJpb3JpdHknXSA9ICcxLjAnOw0KCQkJfQ0KCQkJaWYoIWlzc2V0KCR0eXBlaW5mb3MpKSAkdHlwZWluZm9zID0gJHRoaXMtPmdldFR5cGUoJHJvd1sndHlwZWlkJ10pOw0KCQkJLy92YXJfZHVtcCgkdHlwZWluZm8pO2V4aXQoKTsNCgkJCS8vdmFyX2R1bXAoJHJvdyk7DQogICAgICAgICAgICAkcm93Wydzb3VyY2UnXSA9IHRyaW0oSHRtbDJUZXh0KCRyb3dbJ3NvdXJjZSddKSk7DQogICAgICAgICAgICAkcm93Wyd0aXRsZSddID0gYmFpZHVfc3RyaXBfaW52YWxpZF94bWwoJHJvd1sndGl0bGUnXSk7DQogICAgICAgICAgICAkcm93Wydib2R5J10gPSBiYWlkdV9zdHJpcF9pbnZhbGlkX3htbCgkcm93Wydib2R5J10pOw0KCQkJJGFkZHN0cj0kY29weXJpZ2h0c3RyPSR5ZWFyc3RyPSIiOw0KCQkJJGNvcHlyaWdodHN0ciA9ICFlbXB0eSgkcm93Wydzb3VyY2UnXSk/ICJcclxuCQkJCQk8Y29weXJpZ2h0SG9sZGVyPjxuYW1lPjwhW0NEQVRBW3skcm93Wydzb3VyY2UnXX1dXT48L25hbWU+PC9jb3B5cmlnaHRIb2xkZXI+IiA6ICcnOw0KCQkJJGFkZHN0ciAuPSBlbXB0eSgkcm93WydsaXRwaWMnXSk/ICIiIDogIlxyXG4JCQkJCTxpbWFnZT48IVtDREFUQVt7JHJvd1snbGl0cGljJ119XV0+PC9pbWFnZT4iOw0KCQkJJHllYXJzdHIgPSBNeWRhdGUoJ1knLCAkcm93WydwdWJkYXRlJ10pOw0KCQkJJHJvd3htbHN0ciA9IDw8PEVPVA0KCVxyXG4JPHVybD4NCgkJCTxsb2M+PCFbQ0RBVEFbeyRjZmdfYmFzZWhvc3R9eyRyb3dbJ2ZpbGVuYW1lJ119XV0+PC9sb2M+DQoJCQk8bGFzdG1vZD57JHJvd1snc2hvd2RhdGUnXX08L2xhc3Rtb2Q+DQoJCQk8Y2hhbmdlZnJlcT5hbHdheXM8L2NoYW5nZWZyZXE+DQoJCQk8cHJpb3JpdHk+eyRyb3dbJ3ByaW9yaXR5J119PC9wcmlvcml0eT4NCgkJCTxkYXRhPg0KCQkJCTxXZWJwYWdlPg0KCQkJCQk8bmFtZT48IVtDREFUQVt7JHJvd1sndGl0bGUnXX1dXT48L25hbWU+DQoJCQkJCTx1cmw+PCFbQ0RBVEFbeyRjZmdfYmFzZWhvc3R9eyRyb3dbJ2ZpbGVuYW1lJ119XV0+PC91cmw+DQoJCQkJCTxwcm92aWRlcj4NCgkJCQkJCTxuYW1lPjwhW0NEQVRBW3skY2ZnX3dlYm5hbWV9XV0+PC9uYW1lPg0KCQkJCQkJPHVybD48IVtDREFUQVt7JGNmZ19iYXNlaG9zdH1dXT48L3VybD4NCgkJCQkJPC9wcm92aWRlcj4NCgkJCQkJPGRlc2NyaXB0aW9uPjwhW0NEQVRBW3skcm93WydkZXNjcmlwdGlvbiddfV1dPjwvZGVzY3JpcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDx0ZXh0PjwhW0NEQVRBW3skcm93Wydib2R5J119XV0+PC90ZXh0Pg0KICAgICAgICAgICAgICAgICAgICA8a2V5d29yZHM+PCFbQ0RBVEFbeyRyb3dbJ2tleXdvcmRzJ119XV0+PC9rZXl3b3Jkcz4NCgkJCQkJPGJyZWFkY3J1bWI+PCFbQ0RBVEFbeyR0eXBlaW5mb3NbJ3Bvc2l0aW9uJ119XV0+PC9icmVhZGNydW1iPg0KCQkJCQl7JGFkZHN0cn0NCiAgICAgICAgICAgICAgICAgICAgPGlzUGFydE9mPg0KCQkJCQkJPG5hbWU+PCFbQ0RBVEFbeyR0eXBlaW5mb3NbJ3R5cGVuYW1lJ119XV0+PC9uYW1lPg0KCQkJCQkJPHVybD48IVtDREFUQVt7JGNmZ19iYXNlaG9zdH17JHR5cGVpbmZvc1sndHlwZWxpbmsnXX1dXT48L3VybD4NCgkJCQkJPC9pc1BhcnRPZj4NCiAgICAgICAgICAgICAgICAgICAgeyRjb3B5cmlnaHRzdHJ9DQoJCQkJCTxjb3B5cmlnaHRZZWFyPnskeWVhcnN0cn08L2NvcHlyaWdodFllYXI+DQoJCQkJPC9XZWJwYWdlPg0KCQkJPC9kYXRhPg0KCQk8L3VybD4NCkVPVDsNCiAgICAgICAgICAgIGlmKCRjZmdfc29mdF9sYW5nPT0nZ2IyMzEyJykgJHJvd3htbHN0cj1nYjJ1dGY4KCRyb3d4bWxzdHIpOw0KICAgICAgICAgICAgLy92YXJfZHVtcCgkcm93eG1sc3RyKTtleGl0Ow0KICAgICAgICAgICAgJHhtbHN0ciAuPSAkcm93eG1sc3RyOw0KCQl9DQogICAgICAgIC8vZXhpdCgkeG1sc3RyKTsNCgkJJHhtbHN0ciAuPSAiXHJcbjwvdXJsc2V0PiI7DQoJCS8vJHhtbGRhdGFbJ2NvbnRlbnQnXSA9ICR4bWxzdHI7DQoJCXJldHVybiAkeG1sc3RyOw0KCX0NCn0NCg0KPz4= - - -PD9waHANCiRjZmdfTm90UHJpbnRIZWFkPSdZJzsNCnNldF90aW1lX2xpbWl0KDApOw0KaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04Iik7DQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuIi8uLi9pbmNsdWRlL2NvbW1vbi5pbmMucGhwIik7DQpyZXF1aXJlX29uY2UoREVERUlOQy4iL2NoYW5uZWx1bml0LmNsYXNzLnBocCIpOw0KcmVxdWlyZV9vbmNlKERFREVJTkMuIi9iYWlkdXNpdGVtYXAuZnVuYy5waHAiKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvYmFpZHV4bWwuY2xhc3MucGhwIik7DQoNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0ID0gJyc7DQppZihlbXB0eSgkYWN0aW9uKSkgJGFjdGlvbiA9ICcnOw0KDQppZiAoJGRvcG9zdD09J2NoZWNrdXJsJykNCnsNCiAgICAkY2hlY2tzaWduID0gJF9HRVRbJ2NoZWNrc2lnbiddOw0KICAgIGlmICghJGNoZWNrc2lnbiB8fCBzdHJsZW4oJGNoZWNrc2lnbikgIT09IDMyICl7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgJGRhdGEgPSBiYWlkdV9nZXRfc2V0dGluZygnY2hlY2tzaWduJywgdHJ1ZSk7DQogICAgaWYgKCRkYXRhICYmICRkYXRhWydzdmFsdWUnXSA9PSAkY2hlY2tzaWduICYmIHRpbWUoKS0kZGF0YVsnc3RpbWUnXSA8IDMwKSB7DQogICAgICAgIGVjaG8gJGRhdGFbJ3N2YWx1ZSddOw0KICAgIH0NCn0gZWxzZWlmICgkZG9wb3N0PT0nc2l0ZW1hcF9pbmRleCcpew0KICAgIGlmIChlbXB0eSgkX0dFVFsncHdkJ10pIHx8ICRfR0VUWydwd2QnXSAhPSAoJGJkcHdkID0gYmFpZHVfZ2V0X3NldHRpbmcoJ2JkcHdkJykpKSB7DQogICAgICAgIGJhaWR1X2hlYWRlcl9zdGF0dXMoNDA0KTsNCiAgICAgICAgcmV0dXJuIDE7DQogICAgfQ0KICAgICRwYWdlc2l6ZT1lbXB0eSgkcGFnZXNpemUpPyAwIDogaW50dmFsKCRwYWdlc2l6ZSk7DQogICAgJHNpdGVtYXBfdHlwZT0wOw0KICAgIGlmKCR0eXBlPT0naW5kZXhhbGwnKSAkc2l0ZW1hcF90eXBlPTE7DQogICAgZWxzZWlmKCR0eXBlPT0naW5kZXhpbmMnKSAkc2l0ZW1hcF90eXBlPTI7DQogICAgJGJkYXJjcyA9IG5ldyBCYWlkdUFydGljbGVYbWw7DQogICAgJHN0YXJ0PSRwYWdlc2l6ZSokYmRhcmNzLT5Sb3c7DQogICAgJGJkYXJjcy0+c2V0U2l0ZW1hcFR5cGUoJHNpdGVtYXBfdHlwZSk7DQogICAgJGJkYXJjcy0+U3RhcnQ9JHN0YXJ0Ow0KICAgIGVjaG8gJGJkYXJjcy0+dG9YbWwoKTsNCn0= - - - diff --git a/src/dede/js/main.js b/src/dede/js/main.js index 0bf4ae11..0eb307f3 100755 --- a/src/dede/js/main.js +++ b/src/dede/js/main.js @@ -199,7 +199,7 @@ function OpenMyWin(surl) { } function OpenMyWinCoOne(surl) { - window.open(surl, "popUpMyWin2", "scrollbars=yes,resizable=yes,statebar=no,width=700,height=450,left=100,top=50"); + window.open(surl, "popUpMyWin2", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=450,left=100,top=50"); } function PutSource(str) { diff --git a/src/dede/templets/article_add.htm b/src/dede/templets/article_add.htm index df78195b..f3a1d336 100755 --- a/src/dede/templets/article_add.htm +++ b/src/dede/templets/article_add.htm @@ -94,14 +94,14 @@ - - + +
 采集单个网页-URL: 采集单个网页-URL: - +   -
diff --git a/src/dede/templets/module_main.htm b/src/dede/templets/module_main.htm index c8950412..0d2cbef1 100755 --- a/src/dede/templets/module_main.htm +++ b/src/dede/templets/module_main.htm @@ -29,6 +29,9 @@
模块管理
+ diff --git a/src/include/common.inc.php b/src/include/common.inc.php index 592fd134..fc8cf006 100755 --- a/src/include/common.inc.php +++ b/src/include/common.inc.php @@ -261,13 +261,13 @@ $cfg_other_medias = $cfg_medias_dir.'/media'; //软件摘要信息,****请不要删除本项**** 否则系统无法正确接收系统漏洞或升级信息 $cfg_version = 'V6_UTF8'; -$cfg_version_detail = '6.0.1'; // 详细版本号 +$cfg_version_detail = '6.0.0'; // 详细版本号 $cfg_soft_lang = 'utf-8'; $cfg_soft_public = 'base'; $cfg_softname = '织梦内容管理系统'; $cfg_soft_enname = 'DedeCMS'; -$cfg_soft_devteam = 'DedeCMS官方团队'; +$cfg_soft_devteam = 'DedeBIZ'; //文档的默认命名规则 $art_shortname = $cfg_df_ext = '.html';