I2lmbmRlZiBHSU1fR0VPTUVUUllfSF9JTkNMVURFRAojZGVmaW5lIEdJTV9HRU9NRVRSWV9IX0lOQ0xVREVECgovKiEgXGZpbGUgZ2ltX2dlb21ldHJ5LmgKXGF1dGhvciBGcmFuY2lzY28gTGV/biBO32plcmEKKi8KLyoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVGhpcyBzb3VyY2UgZmlsZSBpcyBwYXJ0IG9mIEdJTVBBQ1QgTGlicmFyeS4KCkZvciB0aGUgbGF0ZXN0IGluZm8sIHNlZSBodHRwOi8vZ2ltcGFjdC5zb3VyY2Vmb3JnZS5uZXQvCgpDb3B5cmlnaHQgKGMpIDIwMDYgRnJhbmNpc2NvIExlb24gTmFqZXJhLiBDLkMuIDgwMDg3MzcxLgplbWFpbDogcHJvamVjdGlsZW1hbkB5YWhvby5jb20KCiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIEVJVEhFUjoKICAgKDEpIFRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCiAgICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAogICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUgR05VIExlc3NlcgogICAgICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbmNsdWRlZCB3aXRoIHRoaXMgbGlicmFyeSBpbiB0aGUKICAgICAgIGZpbGUgR0lNUEFDVC1MSUNFTlNFLUxHUEwuVFhULgogICAoMikgVGhlIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkgaW4KICAgICAgIHRoZSBmaWxlIEdJTVBBQ1QtTElDRU5TRS1CU0QuVFhULgogICAoMykgVGhlIHpsaWIvbGlicG5nIGxpY2Vuc2UgdGhhdCBpcyBpbmNsdWRlZCB3aXRoIHRoaXMgbGlicmFyeSBpbgogICAgICAgdGhlIGZpbGUgR0lNUEFDVC1MSUNFTlNFLVpMSUIuVFhULgoKIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBmaWxlcwogR0lNUEFDVC1MSUNFTlNFLUxHUEwuVFhULCBHSU1QQUNULUxJQ0VOU0UtWkxJQi5UWFQgYW5kIEdJTVBBQ1QtTElDRU5TRS1CU0QuVFhUIGZvciBtb3JlIGRldGFpbHMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqLwoKLy8vQWRkaXRpb25hbCBIZWFkZXJzIGZvciBDb2xsaXNpb24KI2luY2x1ZGUgImdpbV9iYXNpY19nZW9tZXRyeV9vcGVyYXRpb25zLmgiCiNpbmNsdWRlICJnaW1fY2xpcF9wb2x5Z29uLmgiCiNpbmNsdWRlICJnaW1fYm94X2NvbGxpc2lvbi5oIgojaW5jbHVkZSAiZ2ltX3RyaV9jb2xsaXNpb24uaCIKCiNlbmRpZiAvLyBHSU1fVkVDVE9SX0hfSU5DTFVERUQK