I2luY2x1ZGUgPGljb252Lmg+CiNpbmNsdWRlIDxsb2NhbGUuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludAptYWluICh2b2lkKQp7CiAgaWNvbnZfdCBjZDsKICBjb25zdCBjaGFyIHN0cltdID0gIsTk1vbc/N8iOwogIGNvbnN0IGNoYXIgZXhwZWN0ZWRbXSA9ICJBRWFlT0VvZVVFdWVzcyI7CiAgY2hhciAqaW5wdHIgPSAoY2hhciAqKSBzdHI7CiAgc2l6ZV90IGlubGVuID0gc3RybGVuIChzdHIpICsgMTsKICBjaGFyIG91dGJ1Zls1MDBdOwogIGNoYXIgKm91dHB0ciA9IG91dGJ1ZjsKICBzaXplX3Qgb3V0bGVuID0gc2l6ZW9mIChvdXRidWYpOwogIGludCByZXN1bHQgPSAwOwogIHNpemVfdCBuOwoKICBpZiAoc2V0bG9jYWxlIChMQ19BTEwsICJkZV9ERS5VVEYtOCIpID09IE5VTEwpCiAgICB7CiAgICAgIHB1dHMgKCJzZXRsb2NhbGUgZmFpbGVkIik7CiAgICAgIHJldHVybiAxOwogICAgfQoKICBjZCA9IGljb252X29wZW4gKCJBTlNJX1gzLjQtMTk2OC8vVFJBTlNMSVQiLCAiSVNPLTg4NTktMSIpOwogIGlmIChjZCA9PSAoaWNvbnZfdCkgLTEpCiAgICB7CiAgICAgIHB1dHMgKCJpY29udl9vcGVuIGZhaWxlZCIpOwogICAgICByZXR1cm4gMTsKICAgIH0KCiAgbiA9IGljb252IChjZCwgJmlucHRyLCAmaW5sZW4sICZvdXRwdHIsICZvdXRsZW4pOwogIGlmIChuICE9IDcpCiAgICB7CiAgICAgIGlmIChuID09IChzaXplX3QpIC0xKQoJcHJpbnRmICgiaWNvbnYoKSByZXR1cm5lZCBlcnJvcjogJW1cbiIpOwogICAgICBlbHNlCglwcmludGYgKCJpY29udigpIHJldHVybmVkICVaZCwgZXhwZWN0ZWQgN1xuIiwgbik7CiAgICAgIHJlc3VsdCA9IDE7CiAgICB9CiAgaWYgKGlubGVuICE9IDApCiAgICB7CiAgICAgIHB1dHMgKCJub3QgYWxsIGlucHV0IGNvbnN1bWVkIik7CiAgICAgIHJlc3VsdCA9IDE7CiAgICB9CiAgZWxzZSBpZiAoaW5wdHIgLSBzdHIgIT0gc3RybGVuIChzdHIpICsgMSkKICAgIHsKICAgICAgcHJpbnRmICgiaW5wdHIgd3JvbmcsIGFkdmFuY2VkIGJ5ICV0ZFxuIiwgaW5wdHIgLSBzdHIpOwogICAgICByZXN1bHQgPSAxOwogICAgfQogIGlmIChtZW1jbXAgKG91dGJ1ZiwgZXhwZWN0ZWQsIHNpemVvZiAoZXhwZWN0ZWQpKSAhPSAwKQogICAgewogICAgICBwcmludGYgKCJyZXN1bHQgd3Jvbmc6IFwiJS4qc1wiLCBleHBlY3RlZDogXCIlc1wiXG4iLAoJICAgICAgKGludCkgKHNpemVvZiAob3V0YnVmKSAtIG91dGxlbiksIG91dGJ1ZiwgZXhwZWN0ZWQpOwogICAgICByZXN1bHQgPSAxOwogICAgfQogIGVsc2UgaWYgKG91dGxlbiAhPSBzaXplb2YgKG91dGJ1ZikgLSBzaXplb2YgKGV4cGVjdGVkKSkKICAgIHsKICAgICAgcHJpbnRmICgib3V0bGVuIHdyb25nOiAlWmQsIGV4cGVjdGVkICVaZFxuIiwgb3V0bGVuLAoJICAgICAgc2l6ZW9mIChvdXRidWYpIC0gMTUpOwogICAgICByZXN1bHQgPSAxOwogICAgfQogIGVsc2UKICAgIHByaW50ZiAoIm91dHB1dCBpcyBcIiVzXCIgd2hpY2ggaXMgT0tcbiIsIG91dGJ1Zik7CgogIHJldHVybiByZXN1bHQ7Cn0K