LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogQWRhcHRlZCBmb3IgdXNlIGFzIGxvZzIgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4uCiAqIFB1YmxpYyBkb21haW4uCiAqCiAqIENoYW5nZWQgdG8gdXNlIGZ5bDJ4cDEgZm9yIHZhbHVlcyBuZWFyIDEsIDxkcmVwcGVyQGN5Z251cy5jb20+LgogKi8KCiNpbmNsdWRlIDxtYWNoaW5lL2FzbS5oPgoKCS5zZWN0aW9uIC5yb2RhdGEuY3N0OCwiYU0iLEBwcm9nYml0cyw4CgoJLnAyYWxpZ24gMwoJLnR5cGUgb25lLEBvYmplY3QKb25lOgkuZG91YmxlIDEuMAoJQVNNX1NJWkVfRElSRUNUSVZFKG9uZSkKCS8qIEl0IGlzIG5vdCBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIHByZWNpc2UuICBJdCBpcyBvbmx5CgkgICBhIHZhbHVlIHdoaWNoIGlzIGtub3duIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgZm9yIHVzaW5nIHRoZQoJICAgZnlsMnhwMSBpbnN0cnVjdGlvbi4gICovCgkudHlwZSBsaW1pdCxAb2JqZWN0CmxpbWl0OgkuZG91YmxlIDAuMjkKCUFTTV9TSVpFX0RJUkVDVElWRShsaW1pdCkKCgojaWZkZWYgUElDCiMgZGVmaW5lIE1PKG9wKSBvcCMjQEdPVE9GRiglZWR4KQojZWxzZQojIGRlZmluZSBNTyhvcCkgb3AKI2VuZGlmCgoJLnRleHQKRU5UUlkoX19pZWVlNzU0X2xvZzJmKQojaWZkZWYgUElDCglMT0FEX1BJQ19SRUcgKGR4KQojZW5kaWYKCWZsZGwJTU8ob25lKQoJZmxkcwk0KCVlc3ApCQkvLyB4IDogMQoJZnhhbQoJZm5zdHN3CglmbGQJJXN0CQkvLyB4IDogeCA6IDEKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoJZnN1Ygklc3QoMiksICVzdAkvLyB4LTEgOiB4IDogMQoJZmxkCSVzdAkJLy8geC0xIDogeC0xIDogeCA6IDEKCWZhYnMJCQkvLyB8eC0xfCA6IHgtMSA6IHggOiAxCglmY29tcGwJTU8obGltaXQpCS8vIHgtMSA6IHggOiAxCglmbnN0c3cJCQkvLyB4LTEgOiB4IDogMQoJYW5kYgkkMHg0NSwgJWFoCglqegkyZgoJZnN0cAklc3QoMSkJCS8vIHgtMSA6IDEKCWZ5bDJ4cDEJCQkvLyBsb2coeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiAxCglmeWwyeAkJCS8vIGxvZyh4KQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CkVORCAoX19pZWVlNzU0X2xvZzJmKQpzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9sb2cyZiwgX19sb2cyZl9maW5pdGUpCg==