LyoqCiAqIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4uCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB3NjQgbWluZ3ctcnVudGltZSBwYWNrYWdlLgogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUiB3aXRoaW4gdGhpcyBwYWNrYWdlLgogKi8KI2lmZGVmIF9XSU42NAoJLmZpbGUJImxvZzFwLlMiCgkudGV4dAoJLmFsaWduIDQKCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbgoJICAgLTEgKyBzcXJ0KDIpIC8gMiA8PSB4IDw9IDEgLSBzcXJ0KDIpIC8gMgoJICAgMC4yOSBpcyBhIHNhZmUgdmFsdWUuCgkgKi8KbGltaXQ6CS5kb3VibGUgMC4yOQpvbmU6CS5kb3VibGUgMS4wCi8qCiAqIFVzZSB0aGUgZnlsMnhwMSBmdW5jdGlvbiB3aGVuIHRoZSBhcmd1bWVudCBpcyBpbiB0aGUgcmFuZ2UgLTAuMjkgdG8gMC4yOSwKICogb3RoZXJ3aXNlIGZ5bDJ4IHdpdGggdGhlIG5lZWRlZCBleHRyYSBjb21wdXRhdGlvbi4KICovCi5nbG9ibCBfbG9nMXA7IAoJLmRlZglfbG9nMXA7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgpfbG9nMXA6Cgltb3ZzZAkleG1tMCwtMTYoJXJzcCkKCWZsZGxuMgoJZmxkbAktMTYoJXJzcCkKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAoJc2FoZgoJamMJM2YJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCgo0OglmYWJzCglmY29tcGwJbGltaXQKCWZuc3RzdwoJc2FoZgoJamMJMmYKCWZhZGRsCW9uZQoJZnlsMngKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKCjI6CWZ5bDJ4cDEKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKCjM6CWpwCTRiCS8vIGluIGNhc2UgeCBpcyCxSW5mCglmc3RwCSVzdCgxKQoJZnN0cAklc3QoMSkKCWZzdHBsCS0xNiglcnNwKQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wCglyZXQKI2Vsc2UKCS5maWxlCSJsb2cxcC5TIgoJLnRleHQKCS5hbGlnbiA0CgkvKiBUaGUgZnlsMnhwMSBjYW4gb25seSBiZSB1c2VkIGZvciB2YWx1ZXMgaW4KCSAgIC0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDIKCSAgIDAuMjkgaXMgYSBzYWZlIHZhbHVlLgoJICovCmxpbWl0OgkuZG91YmxlIDAuMjkKb25lOgkuZG91YmxlIDEuMAovKgogKiBVc2UgdGhlIGZ5bDJ4cDEgZnVuY3Rpb24gd2hlbiB0aGUgYXJndW1lbnQgaXMgaW4gdGhlIHJhbmdlIC0wLjI5IHRvIDAuMjksCiAqIG90aGVyd2lzZSBmeWwyeCB3aXRoIHRoZSBuZWVkZWQgZXh0cmEgY29tcHV0YXRpb24uCiAqLwouZ2xvYmwgX2xvZzFwOyAKCS5kZWYJX2xvZzFwOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKX2xvZzFwOgoJZmxkbG4yCglmbGRsCTQoJWVzcCkKCWZ4YW0KCWZuc3RzdwoJZmxkCSVzdAoJc2FoZgoJamMJM2YJLy8gaW4gY2FzZSB4IGlzIE5hTiBvciCxSW5mCgo0OglmYWJzCglmY29tcGwJbGltaXQKCWZuc3RzdwoJc2FoZgoJamMJMmYKCWZhZGRsCW9uZQoJZnlsMngKCXJldAoKMjoJZnlsMnhwMQoJcmV0CgozOglqcAk0YgkvLyBpbiBjYXNlIHggaXMgsUluZgoJZnN0cAklc3QoMSkKCWZzdHAJJXN0KDEpCglyZXQKI2VuZGlmCg==