LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBtaW5ndy13NjQgcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2luY2x1ZGUgPF9taW5nd19tYWMuaD4KCgkuZmlsZQkibG9nMXAuUyIKCS50ZXh0CiNpZmRlZiBfX3g4Nl82NF9fCgkuYWxpZ24gOAojZWxzZQoJLmFsaWduIDQKI2VuZGlmCgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCSAgIC0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJICovCmxpbWl0OgkuZG91YmxlIDAuMjkKb25lOgkuZG91YmxlIDEuMAovKgogKiBVc2UgdGhlIGZ5bDJ4cDEgZnVuY3Rpb24gd2hlbiB0aGUgYXJndW1lbnQgaXMgaW4gdGhlIHJhbmdlIC0wLjI5IHRvIDAuMjksCiAqIG90aGVyd2lzZSBmeWwyeCB3aXRoIHRoZSBuZWVkZWQgZXh0cmEgY29tcHV0YXRpb24uCiAqLwouZ2xvYmwgX19NSU5HV19VU1lNQk9MKGxvZzFwKSAKCS5kZWYJX19NSU5HV19VU1lNQk9MKGxvZzFwKTsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCl9fTUlOR1dfVVNZTUJPTChsb2cxcCk6CiNpZmRlZiBfX3g4Nl82NF9fCgltb3ZzZAkleG1tMCwtMTYoJXJzcCkKCWZsZGxuMgoJZmxkbAktMTYoJXJzcCkKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAoJc2FoZgoJamMJM2YJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCgo0OglmYWJzCglmY29tcGwJbGltaXQoJXJpcCkKCWZuc3RzdwoJc2FoZgoJamMJMmYKCWZhZGRsCW9uZSglcmlwKQoJZnlsMngKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKCjI6CWZ5bDJ4cDEKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKCjM6CWpwCTRiCS8vIGluIGNhc2UgeCBpcyCxSW5mCglmc3RwCSVzdCgxKQoJZnN0cAklc3QoMSkKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKI2Vsc2UKCWZsZGxuMgoJZmxkbAk0KCVlc3ApCglmeGFtCglmbnN0c3cKCWZsZAklc3QKCXNhaGYKCWpjCTNmCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgoKNDoJZmFicwoJZmNvbXBsCWxpbWl0CglmbnN0c3cKCXNhaGYKCWpjCTJmCglmYWRkbAlvbmUKCWZ5bDJ4CglyZXQKCjI6CWZ5bDJ4cDEKCXJldAoKMzoJanAJNGIJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CiNlbmRpZgo=