LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICovCgojaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KClJDU0lEKCIkTmV0QlNEOiBzX2xvZzFwLlMsdiAxLjcgMTk5NS8wNS8wOSAwMDoxMDo1OCBqdGMgRXhwICQiKQoKI2lmZGVmIF9fRUxGX18KCS5zZWN0aW9uIC5yb2RhdGEKI2Vsc2UKCS50ZXh0CiNlbmRpZgoJLmFsaWduIEFMSUdOQVJHKDQpCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCQktMSArIHNxcnQoMikgLyAyIDw9IHggPD0gMSAtIHNxcnQoMikgLyAyCgkgICAwLjI5IGlzIGEgc2FmZSB2YWx1ZS4KCSovCmxpbWl0OgkuZG91YmxlIDAuMjkKb25lOgkuZG91YmxlIDEuMAoKLyoKICogVXNlIHRoZSBmeWwyeHAxIGZ1bmN0aW9uIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGluIHRoZSByYW5nZSAtMC4yOSB0byAwLjI5LAogKiBvdGhlcndpc2UgZnlsMnggd2l0aCB0aGUgbmVlZGVkIGV4dHJhIGNvbXB1dGF0aW9uLgogKi8KCS50ZXh0CkVOVFJZKF9fbG9nMXApCglmbGRsbjIKCglmbGRsCTQoJWVzcCkKCiNpZmRlZglQSUMKCUxPQURfUElDX1JFRyAoZHgpCiNlbmRpZgoKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAoJc2FoZgoJamMJM2YJCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgo0OglmYWJzCiNpZmRlZiBQSUMKCWZjb21wbAlsaW1pdEBHT1RPRkYoJWVkeCkKI2Vsc2UKCWZjb21wbAlsaW1pdAojZW5kaWYKCWZuc3RzdwoJc2FoZgoJamMJMmYKCiNpZmRlZiBQSUMKCWZhZGRsCW9uZUBHT1RPRkYoJWVkeCkKI2Vsc2UKCWZhZGRsCW9uZQojZW5kaWYKCWZ5bDJ4CglyZXQKCjI6CWZ5bDJ4cDEKCXJldAoKMzoJanAJNGIJCS8vIGluIGNhc2UgeCBpcyCxSW5mCglmc3RwCSVzdCgxKQoJZnN0cAklc3QoMSkKCXJldAoKRU5EIChfX2xvZzFwKQp3ZWFrX2FsaWFzIChfX2xvZzFwLCBsb2cxcCkK