导航仪支架吸盘 任我游
2016-06-01 00:11:00
ICRrZXlOYW1lID0n5a+86Iiq5Luq5pSv5p625ZC455uYIOS7u+aIkea4uCc7IAoKZnVuY3Rpb24g QXBwX0dldExpbmsoKXsJCglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUt Ii5yYW5kKDEwMDAwMDAwLDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCmZ1bmN0aW9uIEFwcF9HZXRT ZWxmKCl7CglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEw MDAwMDAwLDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCgovL8K3wrXCu8OYw43CvMOGwqwKZnVuY3Rp b24gZ2V0SW1nKCl7CglyZXR1cm4gJ2h0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2ltZy8yMDE1MTEw Ni9scScucmFuZCgxLDIwKS4iLmpwZyI7Cn0KCgoKCmZ1bmN0aW9uIHJuZFN0cigkbGVuZ3RoPTgp ewoJJHN0ciA9IG51bGw7Cgkkc3RyUG9sID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5eiI7CgkkbWF4ID0gc3RybGVuKCRzdHJQb2wpLTE7Cglmb3IoJGk9MDskaTwkbGVuZ3Ro OyRpKyspewoJCSRzdHIuPSRzdHJQb2xbcmFuZCgwLCRtYXgpXTsKCX0KCXJldHVybiAkc3RyOwp9 CgpjbGFzcyBjb3JlQXBwQ2FjaGV7CgkKCXB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZmlsZSwkZmls ZW5hbWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsc2VsZjo6ZW5jb2Rl KCRmaWxlKSk7Cgl9CglwdWJsaWMgZnVuY3Rpb24gd3JpdGVub2NvZGUoJGZpbGUsJGZpbGVuYW1l KXsKCQlyZXR1cm4gZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCRmaWxlKTsKCX0KCXB1Ymxp YyBmdW5jdGlvbiByZWFkKCRmaWxlbmFtZSl7CgkJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50 cygkZmlsZW5hbWUpOwoJCWlmKHN0cmlzdHIoJGNvbnRlbnQsIjwvZXhwbG9kZT4iKSl7CgkJCSRj b250ZW50ID0gc2VsZjo6Y3V0KCRjb250ZW50LCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJ fQoJCXJldHVybiBzZWxmOjpkZWNvZGUoJGNvbnRlbnQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBl bmNvZGUoJGZpbGUpewoJCXJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3Moc2VyaWFsaXpl KCRmaWxlKSkpOyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCRmaWxlKXsKCQlyZXR1cm4g dW5zZXJpYWxpemUoZ3p1bmNvbXByZXNzKGJhc2U2NF9kZWNvZGUoJGZpbGUpKSk7IAoJfQoJCglw dWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxv ZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAK CQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoKCgoKJG15X2NvbnRlbnQ9Jyc7CmlmKCFlbXB0 eSgka2V5TmFtZSkpewoJJHF1ZXJ5X2RhdGEgPSBhcnJheSgncSc9PiRrZXlOYW1lLCk7CgkkbXlf YWxpbWFtYSA9IG5ldyBhbGltYW1hKCRxdWVyeV9kYXRhKTsKCSRteV9hbGltYW1hLT5xdWVyeSgp OwoJJG15X2NvbnRlbnQgPSAkbXlfYWxpbWFtYS0+aHRtbCgpOwp9CiRkYXRhID0gc3RyX3JlcGxh Y2UoJzxwaHB1bD48L3BocHVsPicsJG15X2NvbnRlbnQsJGRhdGEpOwppZihzdHJwb3MoJGRhdGEs IltpdGVtOm1lbnVdIikhPT0gZmFsc2UmJiFlbXB0eSgka2V5TmFtZSkpewoJJHRhZ191cmwgPSAn aHR0cHM6Ly9zdWdnZXN0LnRhb2Jhby5jb20vc3VnP2NvZGU9dXRmLTgmcT0nLnVybGVuY29kZSgk a2V5TmFtZSk7CgkkdGFnX2NvbnRlbnQgPSBhbGltYW1hOjpIdHRwVmlzaXQoJHRhZ191cmwpOwoJ JHRhZ19qc29uID0ganNvbl9kZWNvZGUoJHRhZ19jb250ZW50LHRydWUpOwoJJHRhZ19tZW51ID0g Jyc7Cglmb3JlYWNoICgkdGFnX2pzb25bJ3Jlc3VsdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJ JGh0dHBfaG9zdCA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCQkkcGhwX3NlbGYgPSAkX1NFUlZF UlsnUEhQX1NFTEYnXTsKIAkJJHRhZ19pdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhw X3NlbGYuJz9rZXlOYW1lPScudXJsZW5jb2RlKCR2YWx1ZVswXSk7CgkJJHRhZ19tZW51ID0gJHRh Z19tZW51Lic8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJy4kdGFnX2l0ZW1fdXJsLiciPicuJHZh bHVlWzBdLic8L2E+JzsKCX0KCSRkYXRhID0gc3RyX3JlcGxhY2UoJ1tpdGVtOm1lbnVdJywkdGFn X21lbnUsJGRhdGEpOwp9CgpjbGFzcyBhbGltYW1hewoJCglwdWJsaWMgJHNob3dfc3BpZGVyOwoJ cHVibGljICRqdW1wX3JlZjsKCXB1YmxpYyAkaHR0cF9yZWZfZmlsdGVyOwoJcHVibGljICRqdW1w X3VybCA9ICIiOwoJcHVibGljICRkb21haW4gPSAiIjsKCXB1YmxpYyAkY29uZGl0aW9uID0gIiI7 CglwdWJsaWMgJGFwcF9zZXJ2ZXIgPSAiIjsKCXB1YmxpYyAkbG9nX3NwaWRlciA9ICIiOwoJcHVi bGljICRjdXJfc3BpZGVyID0gIiI7CglwdWJsaWMgJGFsbG93X2lwID0gIiI7CglwdWJsaWMgJGlz Q2FjaGUgPSBmYWxzZTsKCXB1YmxpYyAkY3Jhd2xfdXJsID0gImh0dHA6Ly9wdWIuYWxpbWFtYS5j b20vaXRlbXMvc2VhcmNoLmpzb24iOwoJcHVibGljICRxdWVyeV9kYXRhOwoJcHVibGljICRjb250 ZW50OwoKCXB1YmxpYyAkbGlfdGVtcGxhdGU9IjxsaT4KICA8ZGl2IGNsYXNzPSdsaV9saXN0JyBv bm1vdXNlb3Zlcj0ndGhpcy5jbGFzc05hbWU9J2xpX2hvdmVyJycgb25tb3VzZW91dD0ndGhpcy5j bGFzc05hbWU9J2xpX2xpc3QnJz4KICAgIDxkaXYgY2xhc3M9J25ldyc+PC9kaXY+CiAgICA8ZGl2 IGNsYXNzPSdjb2xsZWN0Jz48YSBocmVmPSdqYXZhc2NyaXB0OjsnPjwvYT48L2Rpdj4KICAgIDxk aXYgY2xhc3M9J3BpYyc+PGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz4gPGltZyBzcmM9 J3twaWN1cmx9Jz48L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0aXRsZSc+IDxhIGhyZWY9J3t1 cmx9JyB0YXJnZXQ9J19ibGFuayc+e3RpdGxlfTwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J21v bmV5X2JnJz4gCgkgICAgPHNwYW4+PGVtIGNsYXNzPSdtb25leV9zeW1ib2wnPu+/pTwvZW0+PGVt IGNsYXNzPSdtb25leV9udW0nPntwcmljZX08L2VtPjwvc3Bhbj4gCgkgICAgPHNwYW4gY2xhc3M9 J2Z4X21vbmV5X2JnJz4gPGVtIGNsYXNzPSd6aGVrb3UgaXRlbScgc3R5bGU9J3Zpc2liaWxpdHk6 IHZpc2libGU7Jz48Yj57bmlja308L2I+PC9lbT4gCgkgICAgPGVtIGNsYXNzPSdxaWFuZ291Jz48 L2VtPiAKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbV9iZyc+CiAgICAgIDxk aXYgY2xhc3M9J3RqcF9ib3R0b20nPgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF9mYWJ1IGNvbG9y Xzk5Jz57dG90YWxGZWV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX3hpYW9iaWFuIGNv bG9yXzY2Jz57dG90YWxOdW19PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+ CjwvbGk+ICI7CgoJLy/lrprkuYnmnoTpgKDlh73mlbDvvIznlKjkuo7liJ3lp4vljJbotYvlgLwK ICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRxdWVyeV9kYXRhKQogICAgewogICAgICAgICAkdGhp cy0+cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRhOyAgICAgICAgLy/ov5nph4zlt7Lnu4/kvb/nlKjk uoZ0aGlz5oyH6ZKI6K+t5Y+l4pGgCiAgICB9CgoJcHVibGljIGZ1bmN0aW9uIHNldFF1ZXJ5RGF0 YSgkcXVlcnlfZGF0YSl7CgkJJHRoaXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsKCQlyZXR1 cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHRtbCgpewoJCSRjb250ZW50ID0gJHRoaXMt PmNvbnRlbnQ7CgkJJGFsaW1hbWFfanNvbiA9IGpzb25fZGVjb2RlKCRjb250ZW50LHRydWUpOwoJ CSRodG1sID0gIjx1bD4iOwoJCWZvcmVhY2ggKCRhbGltYW1hX2pzb25bJ2RhdGEnXVsncGFnZUxp c3QnXSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJIAkJJGl0ZW1fdXJsPSR2YWx1ZVsnYXVjdGlvblVy bCddOwoJIAkJJGl0ZW1fdGl0bGU9JHZhbHVlWyd0aXRsZSddOwoJIAkJJGl0ZW1fcHJpY2U9JHZh bHVlWyd6a1ByaWNlJ107CgkgCQkkaXRlbV9waWN0VXJsPSR2YWx1ZVsncGljdFVybCddLidfNDAw eDQwMF8ud2VicCc7CgkgCQkkaXRlbV9uaWNrPSR2YWx1ZVsnbmljayddOwoJIAkJJGl0ZW1fdG90 YWxOdW09J+aAu+mUgOmHjzonLiR2YWx1ZVsndG90YWxOdW0nXTsKCSAJCSRpdGVtX3RvdGFsRmVl PSfmgLvkuqTmmJPpop06Jy4kdmFsdWVbJ3RvdGFsRmVlJ107CgoJCQkkaHR0cF9ob3N0ID0gJF9T RVJWRVJbJ0hUVFBfSE9TVCddOwogCQkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107 CgkgCQkkaXRlbV91cmw9J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/Z290dT0nLmJh c2U2NF9lbmNvZGUoJGl0ZW1fdXJsKTsKCgkgCQkkaXRlbV9waWN0VXJsPSdodHRwOi8vaS5rYW50 dS5pbi8nLmJhc2U2NF9lbmNvZGUoJGl0ZW1fcGljdFVybCk7CgoJCQkkbGkgPSAkdGhpcy0+bGlf dGVtcGxhdGU7CgoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGl0ZW1fdGl0bGUsJGxp KTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3twcmljZX0nLCRpdGVtX3ByaWNlLCRsaSk7CgkJCSRs aSA9IHN0cl9yZXBsYWNlKCd7dXJsfScsJGl0ZW1fdXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBs YWNlKCd7cGljdXJsfScsJGl0ZW1fcGljdFVybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgn e3RvdGFsTnVtfScsJGl0ZW1fdG90YWxOdW0sJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3tu aWNrfScsJGl0ZW1fbmljaywkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsRmVlfScs JGl0ZW1fdG90YWxGZWUsJGxpKTsKCgkJCSRodG1sID0gJGh0bWwuJGxpOwoJIAkJLy8gZWNobyAk bGk7CgkgCX0KCSAJJGh0bWwgPSAkaHRtbC4iPC91bD4iOwoJCXJldHVybiAkaHRtbDsKCX0KCglw dWJsaWMgZnVuY3Rpb24gcXVlcnkoKXsKCQkkdXJsICA9ICR0aGlzLT5jcmF3bF91cmwuJz8nLmh0 dHBfYnVpbGRfcXVlcnkoJHRoaXMtPnF1ZXJ5X2RhdGEpOwoJCSR0aGlzLT5jb250ZW50ID0gJHRo aXMtPkh0dHBWaXNpdCgkdXJsKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCl7CgkJJHRoaXMt PmRvbWFpbiA9ICR0aGlzLT5nZXRTZXJ2ZXJOYW1lKCk7CgkJJHRoaXMtPmp1bXBfcmVmID0gZXhw bG9kZSgifCIsImJhaWR1LnxoYW9zby58aGFvc291LnxiaW5nLnxzby58c29nb3UufHNvc28uIik7 CgkJJHRoaXMtPmh0dHBfcmVmX2ZpbHRlciA9IGV4cGxvZGUoInwiLCJpbnVybDp8c2l0ZTp8c2l0 ZSUzQXxpbnVybCUzQSIpOwoJCSR0aGlzLT5hbGxvd19pcCA9ICIyMjIuMTg0LjIzNHwxMTIuODcu NzF8NTguMjIxLjg3Lnw0OS42Ny4yMjMiOwoJCSR0aGlzLT5jb25kaXRpb24gPSAoJF9HRVRbJ2Fp ZCddID4gMTAwMDAwMDAgJiYgJHRoaXMtPmlzQWxsb3dkSXAoKSk7CgkJJHRoaXMtPmFwcF9zZXJ2 ZXIgPSAiIjsKCQkkdGhpcy0+aXNDYWNoZSAgPSBGYWxzZTsKCQlpZigkdGhpcy0+aXNTcGlkZXIo KSAmJiAkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJCWlmKCR0aGlzLT5jb25kaXRpb24pewoJCQkJ CWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJCQkJJHJlbHNldF9ob3N0ID0gJHRoaXMtPmdldFNlcnZl ck5hbWUoKTsKCQkJCQkJJGRpciA9IChzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAnV0lOJyA/ICdD Oi93aW5kb3dzL3RlbXAvJyA6ICcvdG1wLycpIC4gc3Vic3RyKG1kNSgkcmVsc2V0X2hvc3QpLCAy NikgLiBjaHIoNDcpOwoJCQkJCQkkY2FjaGVGaWxlID0gJGRpci4nc2Vzc18nIC4gc3Vic3RyKG1k NShodHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKSksIDYpOwoJCQkJCQlpZighQGZpbGVfZXhpc3RzKCRk aXIpKXsKICAgICAgICAgICAgIAkJCQkgbWtkaXIoJGRpciwgMDc3Nyk7CiAgICAgICAgICAgIAkJ CX0KCQkJCQkJaWYoQGZpbGVfZXhpc3RzKCRjYWNoZUZpbGUpICYmIEBmaWxlc2l6ZSAoJGNhY2hl RmlsZSkgPiAzMiApewoJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6cmVhZCgkY2FjaGVGaWxl KTsKCQkJCQkJCSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJ CQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5 LiJ9IjsKCQkJCQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJ CX0KCQkJCQkJCWVjaG8gJHBhZ2U7CgkJCQkJCQlleGl0KCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJ CQkJCQl7CQoJCQkJCQkJLy/CsMO8wrrCrMK9w7hBUFDCvMK0wr/DiQoJCQkJCQkJJGN1cnJlbnRQ YWdlID0gaW5jbHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJCWlmKCRjdXJyZW50UGFnZSAm JiBzdHJsZW4oJGN1cnJlbnRQYWdlKSA+IDMyICYmIHN0cmlzdHIoJGN1cnJlbnRQYWdlLCI8L2V4 cGxvZGU+IikpewoJCQkJCQkJCSR2YXIgPSBzZWxmOjpjdXQoJGN1cnJlbnRQYWdlLCI8ZXhwbG9k ZT4iLCI8L2V4cGxvZGU+Iik7CgkJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6ZGVjb2RlKCR2 YXIpOwoJCQkJCQkJCSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUp OwoJCQkJCQkJCWZvcmVhY2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJCSRmbGFnID0gInsi LiRrZXkuIn0iOwoJCQkJCQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsK CQkJCQkJCQl9CgkJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCQlAY29yZUFwcENhY2hlOjp3cml0 ZW5vY29kZSgkY3VycmVudFBhZ2UsJGNhY2hlRmlsZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJ ZGllKCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1 ZGUoQVBQX0pBQ0tfQVBQRklMRSk7CgkJCQkJCWVjaG8gJGN1cnJlbnRQYWdlOwoJCQkJCQlkaWUo KTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgoJCQkJCSR0aGlzLT5fdW5jb25kaXRpb25f aG9vaygpOwoJCQkJfQoJCX0KCQllbHNlCgkJewkKCQkJaWYoJHRoaXMtPmlzUmVmKCkgJiYgJHRo aXMtPmNvbmRpdGlvbil7CgkJCQkkdGhpcy0+SnVtcCgpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJ JHRoaXMtPl91blNwaWRlcl9ob29rKCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlz QWxsb3dkSXAoKXsKCQkkaXAgPSAkdGhpcy0+Y2xpZW50SXAoKTsKCQkkbm9uX2xpc3QgPSBleHBs b2RlKCJ8IiwkdGhpcy0+YWxsb3dfaXApOwoJCWZvcmVhY2goJG5vbl9saXN0IGFzICRpcGxpc3Qp ewoJCQlpZihAc3RyaXN0cigkaXAsJGlwbGlzdCkpewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJ fQoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjbGllbnRJcCgpewoJCWlmKGdl dGVudignSFRUUF9DTElFTlRfSVAnKSAmJiBzdHJjYXNlY21wKGdldGVudignSFRUUF9DTElFTlRf SVAnKSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQ Jyk7CgkJfSBlbHNlaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpICYmIHN0cmNhc2Vj bXAoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpLCAndW5rbm93bicpKSB7CgkJCSRvbmxp bmVpcCA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsKCQl9IGVsc2VpZihnZXRlbnYo J1JFTU9URV9BRERSJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ1JFTU9URV9BRERSJyksICd1bmtu b3duJykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJCX0gZWxzZWlm KGlzc2V0KCRfU0VSVkVSWydSRU1PVEVfQUREUiddKSAmJiAkX1NFUlZFUlsnUkVNT1RFX0FERFIn XSAmJiBzdHJjYXNlY21wKCRfU0VSVkVSWydSRU1PVEVfQUREUiddLCAndW5rbm93bicpKSB7CgkJ CSRvbmxpbmVpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwoJCX0KCQlwcmVnX21hdGNoKCIv W1xkXC5dezcsMTV9LyIsICRvbmxpbmVpcCwgJG9ubGluZWlwbWF0Y2hlcyk7CgkJJG9ubGluZWlw ID0gJG9ubGluZWlwbWF0Y2hlc1swXSA/ICRvbmxpbmVpcG1hdGNoZXNbMF0gOiAndW5rbm93bic7 CgkJdW5zZXQoJG9ubGluZWlwbWF0Y2hlcyk7CgkJcmV0dXJuICRvbmxpbmVpcDsKCX0KCglwdWJs aWMgZnVuY3Rpb24gaXNTcGlkZXIoKXsKCQkkYm90cyA9IGFycmF5KAoJCQkJJ0JhaWR1JyAgICAg ICAgPT4gJ2JhaWR1c3BpZGVyJywKCQkJCSdTb2dvdScgICAgICAgID0+ICdzb2dvdScsCgkJCQkn SGFvc28nICAgICAgICA9PiAnaGFvc291c3BpZGVyJywKCQkJCSczNjBzcGlkZXInICAgICAgICA9 PiAnMzYwc3BpZGVyJwoJCSApOwoJCSR1c2VyQWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydI VFRQX1VTRVJfQUdFTlQnXSk7CgkJZm9yZWFjaCAoJGJvdHMgYXMgJGsgPT4gJHYpewoJCQlpZiAo c3RyaXN0cigkdXNlckFnZW50LCR2KSl7CgkJCQlpZighZW1wdHkoJHRoaXMtPmxvZ19zcGlkZXIp KXsKCQkJCQlAZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmxvZ19zcGlkZXIsJHYuIi0+VmlzaXRl ZCAiLiRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXS4iYXQ6ICIuZGF0ZSgiWS1tLWQgSDppOnMiKS4i XG4iLEZJTEVfQVBQRU5EKTsKCQkJCX0KCQkJCSR0aGlzLT5jdXJfc3BpZGVyID0gJGs7CgkJCQly ZXR1cm4gdHJ1ZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsJCgl9CgoJcHVi bGljIGZ1bmN0aW9uIGlzUmVmKCl7CgkJJHJlZiA9IHN0cnRvbG93ZXIoQCRfU0VSVkVSWydIVFRQ X1JFRkVSRVInXSk7CgkJaWYoaXNzZXQoJF9DT09LSUVbImRvbWFpbi1maWx0ZXItYnlwYXNzIl0p KXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQlpZighJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJ CXNldGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAw KTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJZm9yZWFjaCgkdGhpcy0+aHR0cF9yZWZfZmlsdGVy IGFzICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlz ZXRjb29raWUoImRvbWFpbi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7 CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkKCQlmb3JlYWNoKCR0aGlzLT5qdW1wX3JlZiBh cyAkcil7CgkJCSRyID0gdHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJcmV0 dXJuIHRydWU7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlcnZlck5hbWUoKSAK CXsgCgkJJFNlcnZlck5hbWUgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddPyRf U0VSVkVSWydTRVJWRVJfTkFNRSddOiRfU0VSVkVSWydIVFRQX0hPU1QnXSk7IAoJCWlmKCBzdHJw b3MoJFNlcnZlck5hbWUsJ2h0dHA6Ly8nKSApIAoJCXsgCgkJCXJldHVybiBzdHJfcmVwbGFjZSgn aHR0cDovLycsJycsJFNlcnZlck5hbWUpOyAKCQl9IAoJCXJldHVybiAkU2VydmVyTmFtZTsgCgl9 CgoJcHVibGljIGZ1bmN0aW9uIGdldFBhZ2UoKXsKCQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCSRj YWNoZT0iY2FjaGVkIjsKCQl9CgkJJHVybCAgPSAkdGhpcy0+YXBwX3NlcnZlci4iP2RvbWFpbj0i LiR0aGlzLT5kb21haW4uIiZnaWQ9MTk5JnNwaWRlcj0iLiR0aGlzLT5jdXJfc3BpZGVyLiImY2Fj aGU9Ii4kY2FjaGUuIiZsb2NhbFBhcj0iLmh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpOwoJCXJldHVy biAkdGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIdHRwVmlz aXQoJHdlYnVybCkgewogICAgCSR1c2VyX2FnZW50ID0gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7 IEludGVsIE1hYyBPUyBYIDEwXzEwXzUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2Ug R2Vja28pIENocm9tZS80NS4wLjI0NTQuODUgU2FmYXJpLzUzNy4zNiBRUUJyb3dzZXIvMy45LjM5 NDMuNDAwIjsKICAgICAgICAkcmVtb3RlX2RhdGEgPSBOVUxMOwogICAgICAgIGlmIChmdW5jdGlv bl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgICAgICRjdXJsID0gQGN1cmxfaW5pdCgp OwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkd2VidXJsKTsK ICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgMCk7CiAgICAg ICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwog ICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEp OwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNl cl9hZ2VudCk7IAogICAgICAgICAgICAkcmVtb3RlX2RhdGEgPSBAY3VybF9leGVjKCRjdXJsKTsK ICAgICAgICAgICAgQGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3N0cmVhbV9jb250ZXh0X2NyZWF0ZScpKSB7CiAgICAg ICAgICAgICAgICAkaGVhZGVyX2FycmF5ID0gYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdtZXRob2Qn ID0+ICdHRVQnLCAndGltZW91dCcgPT4gMzApKTsKICAgICAgICAgICAgICAgICRodHRwX2hlYWRl ciA9IEBzdHJlYW1fY29udGV4dF9jcmVhdGUoJGhlYWRlcl9hcnJheSk7CiAgICAgICAgICAgICAg ICAkcmVtb3RlX2RhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHdlYnVybCwgZmFsc2UsICRodHRw X2hlYWRlcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGVtcF91cmwg PSBleHBsb2RlKCIvIiwgJHdlYnVybCk7CiAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICR0ZW1w X3VybFsyXTsKICAgICAgICAgICAgICAgICRodHRwX3BvcnQgPSA4MDsKICAgICAgICAgICAgICAg ICRnZXRfZmlsZSA9IHN1YnN0cigkd2VidXJsLCBzdHJsZW4oJG5ld191cmwpICsgNyk7CiAgICAg ICAgICAgICAgICBpZiAoc3Ryc3RyKCRuZXdfdXJsLCBjaHIoNTgpKSkgewogICAgICAgICAgICAg ICAgICAgICRzX3Zhcl9hcnJheVsndGQnXSA9IGV4cGxvZGUoY2hyKDU4KSwgJG5ld191cmwpOwog ICAgICAgICAgICAgICAgICAgICRuZXdfdXJsID0gJHNfdmFyX2FycmF5Wyd0ZCddWzBdOwogICAg ICAgICAgICAgICAgICAgICRodHRwX3BvcnQgPSAkc192YXJfYXJyYXlbJ3RkJ11bMV07CiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZnNvY2tfcmVzdWx0ID0gQGZzb2Nrb3Blbigk bmV3X3VybCwgJGh0dHBfcG9ydCk7CiAgICAgICAgICAgICAgICBAZnB1dHMoJGZzb2NrX3Jlc3Vs dCwgJ0dFVCAnIC4gJGdldF9maWxlIC4gJyBIVFRQLzEuMScgLiAiXHJcbiIgLiAnSG9zdDonIC4g JG5ld191cmwgLiAiXHJcbiIgLiAnQ29ubmVjdGlvbjpDbG9zZScgLiAiXHJcblxyXG4iKTsKICAg ICAgICAgICAgICAgIHdoaWxlICghZmVvZigkZnNvY2tfcmVzdWx0KSkgewogICAgICAgICAgICAg ICAgICAgICRyZW1vdGVfZGF0YSAuPSBmZ2V0cygkZnNvY2tfcmVzdWx0LCAxMDI0KTsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJGZzb2NrX3Jlc3VsdCk7CiAgICAg ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZW1vdGVfZGF0YTsKICAgIH0KCglw dWJsaWMgZnVuY3Rpb24gSnVtcCgpewoJCWlmKCR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkkZG9t YWluICA9IHN0cl9yZXBsYWNlKCIuIiwiXyIsJHRoaXMtPmRvbWFpbik7CgkJCWhlYWRlcignTG9j YXRpb246IGh0dHA6Ly9udC53eGNvb2xiYWJ5LmNvbS9udC8/anBfJy4kZG9tYWluKTsKCQkJZXhp dDsKCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfdW5jb25kaXRpb25faG9vaygpewoJCSRhcnJh eSA9IGFycmF5KCk7CgkJZm9yKCRhPTA7JGE8NTskYSsrKXsKCQkJZWNobyAnPGEgaHJlZj0iJy5B cHBfR2V0TGluaygpLiciPjwvYT4nLiJcbiI7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfdW5T cGlkZXJfaG9vaygpewoJCS8vCgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBzdHJTdGFydFdpdGgoJG5l ZWRsZSwgJGhheXN0YWNrKXsKICAJICByZXR1cm4gKHN1YnN0cigkaGF5c3RhY2ssIDAsIHN0cmxl bigkbmVlZGxlKSk9PSRuZWVkbGUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRm cm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2Fn ZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0K fQoKCg==