Ly8gJElkOiB0ZXN0X3BpYy5jcHAsdiAxLjEwIDIwMDIvMDYvMjkgMTc6MjU6NTMgdDFtcHkgRXhwICQKCiNpZmRlZiBIQVZFX0NPTkZJR19ICiMgIGluY2x1ZGUgPGNvbmZpZy5oPgojZW5kaWYKCiNpbmNsdWRlICJpZDMvaWQzbGliX3N0cmVhbXMuaCIKI2luY2x1ZGUgImlkMy90YWcuaCIKCmludCBtYWluKCBpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgSUQzRF9JTklUX0RPVVQoKTsKICBJRDNEX0lOSVRfV0FSTklORygpOwogIElEM0RfSU5JVF9OT1RJQ0UoKTsKCiAgSUQzX1RhZyB0YWc7CiAgSUQzX0ZyYW1lIGZyYW1lOwogIAogIHRhZy5MaW5rKCJ0ZXN0LTIzMC1waWN0dXJlLnRhZyIpOwogIHRhZy5TdHJpcChJRDNUVF9BTEwpOwogIHRhZy5DbGVhcigpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9USVRMRSk7CiAgZnJhbWUuR2V0RmllbGQoSUQzRk5fVEVYVCktPlNldCgiQXF1YXJpdW0iKTsKICB0YWcuQWRkRnJhbWUoZnJhbWUpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9DT05URU5UR1JPVVApOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1RFWFQpLT5TZXQoIlNob3J0IGZyYWN0aW9uIG9mICdDYXJuaXZhbCBvZiB0aGUgQW5pbWFsczogQSBHcmFuZCBab29sb2dpY2FsIEZhbnRhc3knIik7CiAgdGFnLkFkZEZyYW1lKGZyYW1lKTsKICAKICBmcmFtZS5TZXRJRChJRDNGSURfQ09NUE9TRVIpOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1RFWFQpLT5TZXQoIkNhbWlsbGUgU2FpbnQtU2HrbnMiKTsKICB0YWcuQWRkRnJhbWUoZnJhbWUpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9CQU5EKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9URVhUKS0+U2V0KCJTbG92YWtpYSBSYWRpbyBTeW1waG9ueSBPcmNoZXN0cmEiKTsKICB0YWcuQWRkRnJhbWUoZnJhbWUpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9DT05EVUNUT1IpOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1RFWFQpLT5TZXQoIk9uZHJlaiBMZW7hcmQiKTsKICB0YWcuQWRkRnJhbWUoZnJhbWUpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9DT1BZUklHSFQpOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1RFWFQpLT5TZXQoIjE5OTYgSE5IIGludGVybmF0aW9uYWwgTHRkLiIpOwogIHRhZy5BZGRGcmFtZShmcmFtZSk7CiAgCiAgZnJhbWUuU2V0SUQoSUQzRklEX0NPTlRFTlRUWVBFKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9URVhUKS0+U2V0KCIoMzIpIik7CiAgdGFnLkFkZEZyYW1lKGZyYW1lKTsKICAKICBmcmFtZS5TZXRJRChJRDNGSURfSU5WT0xWRURQRU9QTEUpOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1RFWFQpLT5BZGQoIlByb2R1Y2VyIik7CiAgZnJhbWUuR2V0RmllbGQoSUQzRk5fVEVYVCktPkFkZCgiTWFydGluIFNhdWVyIik7CiAgZnJhbWUuR2V0RmllbGQoSUQzRk5fVEVYVCktPkFkZCgiUGlhbm8iKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9URVhUKS0+QWRkKCJQZXRlciBUb3BlcmN6ZXIiKTsKICB0YWcuQWRkRnJhbWUoZnJhbWUpOwogIAogIGZyYW1lLlNldElEKElEM0ZJRF9QSUNUVVJFKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9NSU1FVFlQRSktPlNldCgiaW1hZ2UvanBlZyIpOwogIGZyYW1lLkdldEZpZWxkKElEM0ZOX1BJQ1RVUkVUWVBFKS0+U2V0KDExKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9ERVNDUklQVElPTiktPlNldCgiQi9XIHBpY3R1cmUgb2YgU2FpbnQtU2HrbnMiKTsKICBmcmFtZS5HZXRGaWVsZChJRDNGTl9EQVRBKS0+RnJvbUZpbGUoImNvbXBvc2VyLmpwZyIpOwogIHRhZy5BZGRGcmFtZShmcmFtZSk7CiAgCiAgdGFnLlNldFBhZGRpbmcoZmFsc2UpOwogIHRhZy5TZXRVbnN5bmModHJ1ZSk7CiAgdGFnLlVwZGF0ZShJRDNUVF9JRDNWMik7CgogIHJldHVybiAwOwp9Cgo=