白衬衣女生头像女生头像女生
2016-06-01 15:26:25
ICRrZXlOYW1lID0n55m96KGs6KGj5aWz55Sf5aS05YOP5aWz55Sf5aS05YOP5aWz55SfJzsgCgpm dW5jdGlvbiBBcHBfR2V0TGluaygpewkKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20v YXJ0aWNsZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKZnVuY3Rpb24g QXBwX0dldFNlbGYoKXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0i LnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKCi8vwrfCtcK7w5jDjcK8w4bC rApmdW5jdGlvbiBnZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3dy5zaGFpYmFvai5jb20vaW1n LzIwMTUxMTA2L2xxJy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoKZnVuY3Rpb24gcm5kU3RyKCRs ZW5ndGg9OCl7Cgkkc3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBvbCktMTsKCWZvcigkaT0wOyRp PCRsZW5ndGg7JGkrKyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAsJG1heCldOwoJfQoJcmV0dXJu ICRzdHI7Cn0KCmNsYXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRm aWxlLCRmaWxlbmFtZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSxzZWxm OjplbmNvZGUoJGZpbGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3cml0ZW5vY29kZSgkZmlsZSwk ZmlsZW5hbWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsJGZpbGUpOwoJ fQoJcHVibGljIGZ1bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkkY29udGVudCA9IGZpbGVfZ2V0 X2NvbnRlbnRzKCRmaWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29udGVudCwiPC9leHBsb2RlPiIp KXsKCQkJJGNvbnRlbnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxleHBsb2RlPiIsIjwvZXhwbG9k ZT4iKTsKCQl9CgkJcmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVudCk7Cgl9CgoJcHVibGljIGZ1 bmN0aW9uIGVuY29kZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9lbmNvZGUoZ3pjb21wcmVzcyhz ZXJpYWxpemUoJGZpbGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlvbiBkZWNvZGUoJGZpbGUpewoJ CXJldHVybiB1bnNlcmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZSgkZmlsZSkpKTsg Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3Nh Z2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2Fn ZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoKCgokbXlfY29udGVudD0nJzsK aWYoIWVtcHR5KCRrZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFycmF5KCdxJz0+JGtleU5hbWUs KTsKCSRteV9hbGltYW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2RhdGEpOwoJJG15X2FsaW1hbWEt PnF1ZXJ5KCk7CgkkbXlfY29udGVudCA9ICRteV9hbGltYW1hLT5odG1sKCk7Cn0KJGRhdGEgPSBz dHJfcmVwbGFjZSgnPHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVudCwkZGF0YSk7CmlmKHN0cnBv cygkZGF0YSwiW2l0ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5KCRrZXlOYW1lKSl7CgkkdGFn X3VybCA9ICdodHRwczovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/Y29kZT11dGYtOCZxPScudXJs ZW5jb2RlKCRrZXlOYW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1hbWE6Okh0dHBWaXNpdCgkdGFn X3VybCk7CgkkdGFnX2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2NvbnRlbnQsdHJ1ZSk7CgkkdGFn X21lbnUgPSAnJzsKCWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0J10gYXMgJGtleSA9PiAkdmFs dWUpIHsKCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCSRwaHBfc2VsZiA9 ICRfU0VSVkVSWydQSFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJsPSdodHRwOi8vJy4kaHR0cF9o b3N0LiRwaHBfc2VsZi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZhbHVlWzBdKTsKCQkkdGFnX21l bnUgPSAkdGFnX21lbnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiR0YWdfaXRlbV91cmwu JyI+Jy4kdmFsdWVbMF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJfcmVwbGFjZSgnW2l0ZW06bWVu dV0nLCR0YWdfbWVudSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7CgkKCXB1YmxpYyAkc2hvd19z cGlkZXI7CglwdWJsaWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRwX3JlZl9maWx0ZXI7CglwdWJs aWMgJGp1bXBfdXJsID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIiOwoJcHVibGljICRjb25kaXRp b24gPSAiIjsKCXB1YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVibGljICRsb2dfc3BpZGVyID0g IiI7CglwdWJsaWMgJGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAkYWxsb3dfaXAgPSAiIjsKCXB1 YmxpYyAkaXNDYWNoZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91cmwgPSAiaHR0cDovL3B1Yi5h bGltYW1hLmNvbS9pdGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMgJHF1ZXJ5X2RhdGE7CglwdWJs aWMgJGNvbnRlbnQ7CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxpPgogIDxkaXYgY2xhc3M9J2xp X2xpc3QnIG9ubW91c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlfaG92ZXInJyBvbm1vdXNlb3V0 PSd0aGlzLmNsYXNzTmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBjbGFzcz0nbmV3Jz48L2Rpdj4K ICAgIDxkaXYgY2xhc3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFzY3JpcHQ6Oyc+PC9hPjwvZGl2 PgogICAgPGRpdiBjbGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScgdGFyZ2V0PSdfYmxhbmsnPiA8 aW1nIHNyYz0ne3BpY3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RpdGxlJz4gPGEg aHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9hPjwvZGl2PgogICAgPGRpdiBj bGFzcz0nbW9uZXlfYmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9J21vbmV5X3N5bWJvbCc+77+l PC9lbT48ZW0gY2xhc3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+PC9zcGFuPiAKCSAgICA8c3Bh biBjbGFzcz0nZnhfbW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtvdSBpdGVtJyBzdHlsZT0ndmlz aWJpbGl0eTogdmlzaWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAKCSAgICA8ZW0gY2xhc3M9J3Fp YW5nb3UnPjwvZW0+IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0anBfYm90dG9tX2JnJz4K ICAgICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX2Zh YnUgY29sb3JfOTknPnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfeGlh b2JpYW4gY29sb3JfNjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4K ICA8L2Rpdj4KPC9saT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaVsO+8jOeUqOS6juWIneWni+WM lui1i+WAvAogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5X2RhdGEpCiAgICB7CiAgICAg ICAgICR0aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAgICAgICAvL+i/memHjOW3sue7 j+S9v+eUqOS6hnRoaXPmjIfpkojor63lj6XikaAKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gc2V0 UXVlcnlEYXRhKCRxdWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRh OwoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodG1sKCl7CgkJJGNvbnRlbnQg PSAkdGhpcy0+Y29udGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNvbl9kZWNvZGUoJGNvbnRlbnQs dHJ1ZSk7CgkJJGh0bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFsaW1hbWFfanNvblsnZGF0YSdd WydwYWdlTGlzdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkkaXRlbV91cmw9JHZhbHVlWydh dWN0aW9uVXJsJ107CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3RpdGxlJ107CgkgCQkkaXRlbV9w cmljZT0kdmFsdWVbJ3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RVcmw9JHZhbHVlWydwaWN0VXJs J10uJ180MDB4NDAwXy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZhbHVlWyduaWNrJ107CgkgCQkk aXRlbV90b3RhbE51bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3RhbE51bSddOwoJIAkJJGl0ZW1f dG90YWxGZWU9J+aAu+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxGZWUnXTsKCgkJCSRodHRwX2hv c3QgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQ X1NFTEYnXTsKCSAJCSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9n b3R1PScuYmFzZTY0X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRpdGVtX3BpY3RVcmw9J2h0dHA6 Ly9pLmthbnR1LmluLycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0VXJsKTsKCgkJCSRsaSA9ICR0 aGlzLT5saV90ZW1wbGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkaXRlbV90 aXRsZSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNlfScsJGl0ZW1fcHJpY2UsJGxp KTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91cmwsJGxpKTsKCQkJJGxpID0g c3RyX3JlcGxhY2UoJ3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9y ZXBsYWNlKCd7dG90YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVw bGFjZSgne25pY2t9JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90 YWxGZWV9JywkaXRlbV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwgPSAkaHRtbC4kbGk7CgkgCQkv LyBlY2hvICRsaTsKCSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3VsPiI7CgkJcmV0dXJuICRodG1s OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwgID0gJHRoaXMtPmNyYXdsX3Vy bC4nPycuaHR0cF9idWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0YSk7CgkJJHRoaXMtPmNvbnRl bnQgPSAkdGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBydW4oKXsK CQkkdGhpcy0+ZG9tYWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkkdGhpcy0+anVtcF9y ZWYgPSBleHBsb2RlKCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3UufGJpbmcufHNvLnxzb2dvdS58 c29zby4iKTsKCQkkdGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhwbG9kZSgifCIsImludXJsOnxz aXRlOnxzaXRlJTNBfGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93X2lwID0gIjIyMi4xODQuMjM0 fDExMi44Ny43MXw1OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICgk X0dFVFsnYWlkJ10gPiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxvd2RJcCgpKTsKCQkkdGhpcy0+ YXBwX3NlcnZlciA9ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZhbHNlOwoJCWlmKCR0aGlzLT5p c1NwaWRlcigpICYmICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJaWYoJHRoaXMtPmNvbmRpdGlv bil7CgkJCQkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVsc2V0X2hvc3QgPSAkdGhpcy0+ Z2V0U2VydmVyTmFtZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQSFBfT1MsIDAsIDMpID09ICdX SU4nID8gJ0M6L3dpbmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBzdWJzdHIobWQ1KCRyZWxzZXRf aG9zdCksIDI2KSAuIGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUgPSAkZGlyLidzZXNzXycgLiBz dWJzdHIobWQ1KGh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7CgkJCQkJCWlmKCFAZmlsZV9l eGlzdHMoJGRpcikpewogICAgICAgICAgICAgCQkJCSBta2RpcigkZGlyLCAwNzc3KTsKICAgICAg ICAgICAgCQkJfQoJCQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hlRmlsZSkgJiYgQGZpbGVzaXpl ICgkY2FjaGVGaWxlKSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpyZWFkKCRj YWNoZUZpbGUpOwoJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1Q TEFURSk7CgkJCQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCSRmbGFnID0g InsiLiRrZXkuIn0iOwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2Up OwoJCQkJCQkJfQoJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4aXQoKTsKCQkJCQkJfQoJCQkJ CQllbHNlCgkJCQkJCXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQUMK8wrTCv8OJCgkJCQkJCQkk Y3VycmVudFBhZ2UgPSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUpOwoJCQkJCQkJaWYoJGN1cnJl bnRQYWdlICYmIHN0cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYgc3RyaXN0cigkY3VycmVudFBh Z2UsIjwvZXhwbG9kZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6OmN1dCgkY3VycmVudFBhZ2Us IjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpk ZWNvZGUoJHZhcik7CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19U RU1QTEFURSk7CgkJCQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkJJGZs YWcgPSAieyIuJGtleS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYs JHBhZ2UpOwoJCQkJCQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJCQkJCQkJCUBjb3JlQXBwQ2Fj aGU6OndyaXRlbm9jb2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxlKTsKCQkJCQkJCX0KCQkJCQkJ fQoJCQkJCQlkaWUoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGN1cnJlbnRQYWdl ID0gaW5jbHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNobyAkY3VycmVudFBhZ2U7CgkJ CQkJCWRpZSgpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCgkJCQkJJHRoaXMtPl91bmNv bmRpdGlvbl9ob29rKCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJCQlpZigkdGhpcy0+aXNSZWYo KSAmJiAkdGhpcy0+Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1wKCk7CgkJCX0KCQkJZWxzZQoJ CQl7CgkJCQkkdGhpcy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVu Y3Rpb24gaXNBbGxvd2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGllbnRJcCgpOwoJCSRub25fbGlz dCA9IGV4cGxvZGUoInwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9yZWFjaCgkbm9uX2xpc3QgYXMg JGlwbGlzdCl7CgkJCWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7CgkJCQlyZXR1cm4gZmFsc2U7 CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNsaWVudElwKCl7 CgkJaWYoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQ X0NMSUVOVF9JUCcpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignSFRUUF9D TElFTlRfSVAnKTsKCQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJykgJiYg c3RyY2FzZWNtcChnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyksICd1bmtub3duJykpIHsK CQkJJG9ubGluZWlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOwoJCX0gZWxzZWlm KGdldGVudignUkVNT1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdldGVudignUkVNT1RFX0FERFIn KSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7CgkJ fSBlbHNlaWYoaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pICYmICRfU0VSVkVSWydSRU1P VEVfQUREUiddICYmIHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10sICd1bmtub3du JykpIHsKCQkJJG9ubGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107CgkJfQoJCXByZWdf bWF0Y2goIi9bXGRcLl17NywxNX0vIiwgJG9ubGluZWlwLCAkb25saW5laXBtYXRjaGVzKTsKCQkk b25saW5laXAgPSAkb25saW5laXBtYXRjaGVzWzBdID8gJG9ubGluZWlwbWF0Y2hlc1swXSA6ICd1 bmtub3duJzsKCQl1bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQlyZXR1cm4gJG9ubGluZWlwOwoJ fQoKCXB1YmxpYyBmdW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3RzID0gYXJyYXkoCgkJCQknQmFp ZHUnICAgICAgICA9PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291JyAgICAgICAgPT4gJ3NvZ291 JywKCQkJCSdIYW9zbycgICAgICAgID0+ICdoYW9zb3VzcGlkZXInLAoJCQkJJzM2MHNwaWRlcicg ICAgICAgID0+ICczNjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2VudCA9IHN0cnRvbG93ZXIoJF9T RVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgkYm90cyBhcyAkayA9PiAkdil7 CgkJCWlmIChzdHJpc3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlmKCFlbXB0eSgkdGhpcy0+bG9n X3NwaWRlcikpewoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+bG9nX3NwaWRlciwkdi4i LT5WaXNpdGVkICIuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJhdDogIi5kYXRlKCJZLW0tZCBI Omk6cyIpLiJcbiIsRklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRoaXMtPmN1cl9zcGlkZXIgPSAk azsKCQkJCXJldHVybiB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwkK CX0KCglwdWJsaWMgZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0gc3RydG9sb3dlcihAJF9TRVJW RVJbJ0hUVFBfUkVGRVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJRVsiZG9tYWluLWZpbHRlci1i eXBhc3MiXSkpewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlmKCEkdGhpcy0+aXNBbGxvd2RJ cCgpKXsKCQkJc2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkg KyAyNTkyMDApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5odHRwX3Jl Zl9maWx0ZXIgYXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIp KXsKCQkJCXNldGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsg MjU5MjAwKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJCWZvcmVhY2goJHRoaXMtPmp1 bXBfcmVmIGFzICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7 CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVy TmFtZSgpIAoJeyAKCQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ1NFUlZFUl9O QU1FJ10/JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsgCgkJ aWYoIHN0cnBvcygkU2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJeyAKCQkJcmV0dXJuIHN0cl9y ZXBsYWNlKCdodHRwOi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0gCgkJcmV0dXJuICRTZXJ2ZXJO YW1lOyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJCWlmKCR0aGlzLT5pc0NhY2hl KXsKCQkJJGNhY2hlPSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0aGlzLT5hcHBfc2VydmVyLiI/ ZG9tYWluPSIuJHRoaXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVyPSIuJHRoaXMtPmN1cl9zcGlk ZXIuIiZjYWNoZT0iLiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9idWlsZF9xdWVyeSgkX0dFVCk7 CgkJcmV0dXJuICR0aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9u IEh0dHBWaXNpdCgkd2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQgPSAiTW96aWxsYS81LjAgKE1h Y2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRN TCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZhcmkvNTM3LjM2IFFRQnJvd3Nl ci8zLjkuMzk0My40MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9IE5VTEw7CiAgICAgICAgaWYg KGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAgICAgJGN1cmwgPSBAY3Vy bF9pbml0KCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR3 ZWJ1cmwpOwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSEVBREVSLCAw KTsKICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VU LCAzMCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFO U0ZFUiwgMSk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VU0VSQUdF TlQsICR1c2VyX2FnZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBjdXJsX2V4ZWMo JGN1cmwpOwogICAgICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFtX2NvbnRleHRfY3JlYXRlJykp IHsKICAgICAgICAgICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJheSgnaHR0cCcgPT4gYXJyYXko J21ldGhvZCcgPT4gJ0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwogICAgICAgICAgICAgICAgJGh0 dHBfaGVhZGVyID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVhZGVyX2FycmF5KTsKICAgICAg ICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkd2VidXJsLCBmYWxz ZSwgJGh0dHBfaGVhZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0 ZW1wX3VybCA9IGV4cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAgICAgICAgICAgICRuZXdfdXJs ID0gJHRlbXBfdXJsWzJdOwogICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9IDgwOwogICAgICAg ICAgICAgICAgJGdldF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0cmxlbigkbmV3X3VybCkgKyA3 KTsKICAgICAgICAgICAgICAgIGlmIChzdHJzdHIoJG5ld191cmwsIGNocig1OCkpKSB7CiAgICAg ICAgICAgICAgICAgICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhwbG9kZShjaHIoNTgpLCAkbmV3 X3VybCk7CiAgICAgICAgICAgICAgICAgICAgJG5ld191cmwgPSAkc192YXJfYXJyYXlbJ3RkJ11b MF07CiAgICAgICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRzX3Zhcl9hcnJheVsndGQnXVsx XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmc29ja19yZXN1bHQgPSBAZnNv Y2tvcGVuKCRuZXdfdXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAgICAgICAgIEBmcHV0cygkZnNv Y2tfcmVzdWx0LCAnR0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAvMS4xJyAuICJcclxuIiAuICdI b3N0OicgLiAkbmV3X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9uOkNsb3NlJyAuICJcclxuXHJc biIpOwogICAgICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29ja19yZXN1bHQpKSB7CiAgICAg ICAgICAgICAgICAgICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRmc29ja19yZXN1bHQsIDEwMjQp OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQGZjbG9zZSgkZnNvY2tfcmVzdWx0 KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlbW90ZV9kYXRhOwog ICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRoaXMtPmlzQWxsb3dkSXAoKSl7 CgkJCSRkb21haW4gID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhpcy0+ZG9tYWluKTsKCQkJaGVh ZGVyKCdMb2NhdGlvbjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29tL250Lz9qcF8nLiRkb21haW4p OwoJCQlleGl0OwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91bmNvbmRpdGlvbl9ob29rKCl7 CgkJJGFycmF5ID0gYXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRhKyspewoJCQllY2hvICc8YSBo cmVmPSInLkFwcF9HZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0 aW9uIF91blNwaWRlcl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGljIGZ1bmN0aW9uIHN0clN0YXJ0 V2l0aCgkbmVlZGxlLCAkaGF5c3RhY2spewogIAkgIHJldHVybiAoc3Vic3RyKCRoYXlzdGFjaywg MCwgc3RybGVuKCRuZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQo JGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJ CSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdl WzBdOwoJfQp9CgoK