IyMKIyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGNvcmVib290IHByb2plY3QuCiMjCiMjIENvcHlyaWdodCAoQykgMjAwOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCiMjIENvcHlyaWdodCAoQykgMjAxMCBTaWVtZW5zIEFHLCBJbmMuCiMjIChXcml0dGVuIGJ5IEpvc2VmIEtlbGxlcm1hbm4gPGpvc2VwaC5rZWxsZXJtYW5uQGhlaXRlYy5kZT4gZm9yIFNpZW1lbnMgQUcsIEluYy4pCiMjCiMjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KIyMKIyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyMKIyMKIyMKCmVudHJpZXMKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQowICAgICAgICAgIDM4NCAgICAgICByICAgICAgIDAgICAgICAgIHJlc2VydmVkX21lbW9yeQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMzODQgICAgICAgICAgMSAgICAgICByICAgICAgIDAgICAgICAgIHVudXNlZAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUlRDX0JPT1RfQllURSAoY29yZWJvb3QgaGFyZGNvZGVkKQozODQgICAgICAgICAgMSAgICAgICBlICAgICAgIDQgICAgICAgIGJvb3Rfb3B0aW9uCiMzODYgICAgICAgICAgMiAgICAgICByICAgICAgIDEgICAgICAgIHVudXNlZAozODggICAgICAgICAgNCAgICAgICByICAgICAgIDAgICAgICAgIHJlYm9vdF9iaXRzCjM5MiAgICAgICAgICAzICAgICAgIGUgICAgICAgNSAgICAgICAgYmF1ZF9yYXRlCiMzOTUgICAgICAgICAgMSAgICAgICByICAgICAgIDEgICAgICAgIHVudXNlZAojMzk2ICAgICAgICAgIDEgICAgICAgciAgICAgICAxICAgICAgICB1bnVzZWQKIzM5NyAgICAgICAgICAyICAgICAgIHIgICAgICAgOCAgICAgICAgdW51c2VkCjM5OSAgICAgICAgICAxICAgICAgIGUgICAgICAgMiAgICAgICAgbXVsdGlfY29yZQojNDAwICAgICAgICAgIDggICAgICAgciAgICAgICAxOCAgICAgICByZXNlcnZlZAo0MDggICAgICAgICAgNCAgICAgICBlICAgICAgIDYgICAgICAgIGRlYnVnX2xldmVsCjQxMiAgICAgICAgICAxICAgICAgIGUgICAgICAgMSAgICAgICAgcG93ZXJfb25fYWZ0ZXJfZmFpbAojNDEzICAgICAgICAgIDEgICAgICAgciAgICAgICAxICAgICAgICB1bnVzZWQKNDE0ICAgICAgICAgIDEgICAgICAgZSAgICAgICAxNyAgICAgICBzYXRhX21vZGUKNDE1ICAgICAgICAgIDEgICAgICAgZSAgICAgICAxICAgICAgICBubWkKNDE2ICAgICAgICAgIDEgICAgICAgZSAgICAgICAxICAgICAgICBjcHVfZmFuX2NvbnRyb2wKNDE3ICAgICAgICAgIDEgICAgICAgZSAgICAgICAxICAgICAgICBjaGFzc2lzX2Zhbl9jb250cm9sCjQxOCAgICAgICAgICAxICAgICAgIGUgICAgICAgMTMgICAgICAgY3B1X2Zhbl9wb2xhcml0eQo0MTkgICAgICAgICAgMSAgICAgICBlICAgICAgIDEzICAgICAgIGNoYXNzaXNfZmFuX3BvbGFyaXR5CjQyMCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTQgICAgICAgY3B1X3RfbWluCjQyNCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTQgICAgICAgY3B1X3RfbWF4CjQyOCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTUgICAgICAgY3B1X2R1dHljeWNsZV9taW4KNDMyICAgICAgICAgIDQgICAgICAgZSAgICAgICAxNSAgICAgICBjcHVfZHV0eWN5Y2xlX21heAoKNDM2ICAgICAgICAgIDQgICAgICAgZSAgICAgICAxNCAgICAgICBjaGFzc2lzX3RfbWluCjQ0MCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTQgICAgICAgY2hhc3Npc190X21heAoKNDQ0ICAgICAgICAgIDQgICAgICAgZSAgICAgICAxNSAgICAgICBjaGFzc2lzX2R1dHljeWNsZV9taW4KCjQ0OCAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTUgICAgICAgY2hhc3Npc19kdXR5Y3ljbGVfbWF4CgojNDUyICAgICAgICAgIDQgICAgICAgciAgICAgICA5ICAgICAgICB1bnVzZWQKCjQ1NiAgICAgICAgICA0ICAgICAgIGUgICAgICAgMTAgICAgICAgYm9vdF9kZWxheQo0NjAJCSAgICAgNCAgICAgICBlICAgICAgIDExICAgICAgIGxjZF9wYW5lbF9pZAojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNDY0ICAgICAgICAgIDUxMiAgICAgcyAgICAgICAwICAgICAgICBib290X2RldmljZXMKOTc2ICAgICAgICAgIDggICAgICAgaCAgICAgICAwICAgICAgICBib290X2RlZmF1bHQKOTg0ICAgICAgICAgMTYgICAgICAgaCAgICAgICAwICAgICAgICBjaGVja19zdW0KIyBSZXNlcnZlIHRoZSBleHRlbmRlZCBBTUQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKMTAwMCAgICAgICAgMjQgICAgICAgciAgICAgICAwICAgICAgICBhbWRfcmVzZXJ2ZWQKCgoKZW51bWVyYXRpb25zCgojSUQgdmFsdWUgICB0ZXh0CjEgICAgIDAgICAgIERpc2FibGUKMSAgICAgMSAgICAgRW5hYmxlCjIgICAgIDAgICAgIEVuYWJsZQoyICAgICAxICAgICBEaXNhYmxlCjQgICAgIDAgICAgIEZhbGxiYWNrCjQgICAgIDEgICAgIE5vcm1hbAo1ICAgICAwICAgICAxMTUyMDAKNSAgICAgMSAgICAgNTc2MDAKNSAgICAgMiAgICAgMzg0MDAKNSAgICAgMyAgICAgMTkyMDAKNSAgICAgNCAgICAgOTYwMAo1ICAgICA1ICAgICA0ODAwCjUgICAgIDYgICAgIDI0MDAKNSAgICAgNyAgICAgMTIwMAo2ICAgICA0ICAgICBXYXJuaW5nCjYgICAgIDUgICAgIE5vdGljZQo2ICAgICA2ICAgICBJbmZvCjYgICAgIDcgICAgIERlYnVnCjYgICAgIDggICAgIFNwZXcKOCAgICAgMCAgICAgRERSNDAwCjggICAgIDEgICAgIEREUjMzMwo4ICAgICAyICAgICBERFIyNjYKOCAgICAgMyAgICAgRERSMjAwCiMgYm9vdCBkZWxheQoxMCAgICAwICAgICBvZmYKMTAgICAgMSAgICAgMXMKMTAgICAgMiAgICAgMnMKMTAgICAgMyAgICAgM3MKMTAgICAgNCAgICAgNHMKMTAgICAgNSAgICAgNXMKMTAgICAgNiAgICAgNnMKMTAgICAgNyAgICAgN3MKMTAgICAgOCAgICAgOHMKMTAgICAgOSAgICAgOXMKMTAgICAgMTAgICAgMTBzCiMgTENEIFBhbmVsIElECjExCTAJbm9fcGFuZWwKMTEJMQkxMDI0eDc2OF82NU1Iel9EdWFsCjExCTIJMTkyMHgxMjAwXzE2Mk1IegoxMQkzCTE2MDB4MTIwMF8xNjJNSHoKMTEJNAkxMDI0eDc2OF82NU1IegoxMQk1CTE0MDB4MTA1MF8xMDhNSHoKMTEJNgkxNjgweDEwNTBfMTE5TUh6CjExCTcJMjA0OHgxNTM2XzE2NE1IegoxMQk4CTEyODB4MTAyNF8xMDhNSHoKMTEJOQkxMzY2eDc2OF84Nk1Iel9jaGltZWlfVjMyQjFMMDEKIyBUViBTdGFuZGFyZAojMTIJMAlOVFNDCiMxMgkxCVBBTAojMTIJMglQQUxNCiMxMgkzCVBBTDYwCiMxMgk0CU5UU0NKCiMxMgk1CVBBTENOCiMxMgk2CVBBTE4KIzEyCTkJU0NBUlQtUkdCCiMxMgkxNQlub190dgojIENQVS9DaGFzc2lzIEZBTiBDb250cm9sOiBwb2xhcml0eQoxMyAgMCAgIEFjdGl2ZV9oaWdoCjEzICAxICAgQWN0aXZlX2xvdwojIFRlbXBlcmF0dXJlILBDCjE0ICAwICAgMzAKMTQgIDEgICAzNQoxNCAgMiAgIDQwCjE0ICAzICAgNDUKMTQgIDQgICA1MAoxNCAgNSAgIDU1CjE0ICA2ICAgNjAKMTQgIDcgICA2NQoxNCAgOCAgIDcwCjE0ICA5ICAgNzUKMTQgIDEwICA4MAoxNCAgMTEgIDg1CjE0ICAxMiAgOTAKMTQgIDEzICA5NQoxNCAgMTQgIDEwMAojIER1dHljeWNsZSAlCjE1ICAwICAgMjUlCjE1ICAxICAgMzAlCjE1ICAyICAgMzUlCjE1ICAzICAgNDAlCjE1ICA0ICAgNDUlCjE1ICA1ICAgNTAlCjE1ICA2ICAgNTUlCjE1ICA3ICAgNjAlCjE1ICA4ICAgNjUlCjE1ICA5ICAgNzAlCjE1ICAxMCAgNzUlCjE1ICAxMSAgODAlCjE1ICAxMiAgODUlCjE1ICAxMyAgOTAlCjE1ICAxNCAgOTUlCjE1ICAxNSAgMTAwJQojIHNhdGFfbW9kZQoxNyAgMCAgIEFIQ0kKMTcgIDEgICBJREUKIyByZXNlcnZlZAoxOCAgMzIgIDIwMDAKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KY2hlY2tzdW1zCgpjaGVja3N1bSAzOTIgOTgzIDk4NAo=