IwojIERPIE5PVCBBTFRFUiBPUiBSRU1PVkUgQ09QWVJJR0hUIE5PVElDRVMgT1IgVEhJUyBGSUxFIEhFQURFUi4KIyAgCiMgVGhpcyBjb2RlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LCBhcwojIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgT3JhY2xlIGRlc2lnbmF0ZXMgdGhpcwojIHBhcnRpY3VsYXIgZmlsZSBhcyBzdWJqZWN0IHRvIHRoZSAiQ2xhc3NwYXRoIiBleGNlcHRpb24gYXMgcHJvdmlkZWQKIyBieSBPcmFjbGUgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0IGFjY29tcGFuaWVkIHRoaXMgY29kZS4KIyAgCiMgVGhpcyBjb2RlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCiMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgdmVyc2lvbiAyIGZvciBtb3JlIGRldGFpbHMgKGEgY29weSBpcyBpbmNsdWRlZCBpbiB0aGUgTElDRU5TRSBmaWxlIHRoYXQKIyBhY2NvbXBhbmllZCB0aGlzIGNvZGUpLgojICAKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uCiMgMiBhbG9uZyB3aXRoIHRoaXMgd29yazsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAojIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIyAgCiMgUGxlYXNlIGNvbnRhY3QgT3JhY2xlLCA1MDAgT3JhY2xlIFBhcmt3YXksIFJlZHdvb2QgU2hvcmVzLCBDQSA5NDA2NSBVU0EKIyBvciB2aXNpdCB3d3cub3JhY2xlLmNvbSBpZiB5b3UgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIGhhdmUgYW55CiMgcXVlc3Rpb25zLgojCiMgPHByZT4KIyBUaGlzIGZpbGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4sIHNvIGNsYXJpZmllZCBhcyBvZgojIDIwMDktMDUtMTcgYnkgQXJ0aHVyIERhdmlkIE9sc29uLgoKIyBUaGlzIGRhdGEgaXMgYnkgbm8gbWVhbnMgYXV0aG9yaXRhdGl2ZTsgaWYgeW91IHRoaW5rIHlvdSBrbm93IGJldHRlciwKIyBnbyBhaGVhZCBhbmQgZWRpdCB0aGUgZmlsZSAoYW5kIHBsZWFzZSBzZW5kIGFueSBjaGFuZ2VzIHRvCiMgdHpAZWxzaWUubmNpLm5paC5nb3YgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBmdXR1cmUpLgoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBBIGdvb2Qgc291cmNlIGZvciB0aW1lIHpvbmUgaGlzdG9yaWNhbCBkYXRhIG91dHNpZGUgdGhlIFUuUy4gaXMKIyBUaG9tYXMgRy4gU2hhbmtzIGFuZCBSaXF1ZSBQb3R0ZW5nZXIsIFRoZSBJbnRlcm5hdGlvbmFsIEF0bGFzICg2dGggZWRpdGlvbiksCiMgU2FuIERpZWdvOiBBQ1MgUHVibGljYXRpb25zLCBJbmMuICgyMDAzKS4KIwojIEd3aWxsaW0gTGF3IHdyaXRlcyB0aGF0IGEgZ29vZCBzb3VyY2UKIyBmb3IgcmVjZW50IHRpbWUgem9uZSBkYXRhIGlzIHRoZSBJbnRlcm5hdGlvbmFsIEFpciBUcmFuc3BvcnQKIyBBc3NvY2lhdGlvbidzIFN0YW5kYXJkIFNjaGVkdWxlcyBJbmZvcm1hdGlvbiBNYW51YWwgKElBVEEgU1NJTSksCiMgcHVibGlzaGVkIHNlbWlhbm51YWxseS4gIExhdyBzZW50IGluIHNldmVyYWwgaGVscGZ1bCBzdW1tYXJpZXMKIyBvZiB0aGUgSUFUQSdzIGRhdGEgYWZ0ZXIgMTk5MC4KIwojIEV4Y2VwdCB3aGVyZSBvdGhlcndpc2Ugbm90ZWQsIFNoYW5rcyAmIFBvdHRlbmdlciBpcyB0aGUgc291cmNlIGZvcgojIGVudHJpZXMgdGhyb3VnaCAxOTkwLCBhbmQgSUFUQSBTU0lNIGlzIHRoZSBzb3VyY2UgZm9yIGVudHJpZXMgYWZ0ZXJ3YXJkcy4KIwojIEVhcmxpZXIgZWRpdGlvbnMgb2YgdGhlc2UgdGFibGVzIHVzZWQgdGhlIE5vcnRoIEFtZXJpY2FuIHN0eWxlIChlLmcuIEFSU1QgYW5kCiMgQVJEVCBmb3IgQXJnZW50aW5lIFN0YW5kYXJkIGFuZCBEYXlsaWdodCBUaW1lKSwgYnV0IHRoZSBmb2xsb3dpbmcgcXVvdGUKIyBzdWdnZXN0cyB0aGF0IGl0J3MgYmV0dGVyIHRvIHVzZSBFdXJvcGVhbiBzdHlsZSAoZS5nLiBBUlQgYW5kIEFSU1QpLgojCUkgc3VnZ2VzdCB0aGUgdXNlIG9mIF9TdW1tZXIgdGltZV8gaW5zdGVhZCBvZiB0aGUgbW9yZSBjdW1iZXJzb21lCiMJX2RheWxpZ2h0LXNhdmluZyB0aW1lXy4gIF9TdW1tZXIgdGltZV8gc2VlbXMgdG8gYmUgaW4gZ2VuZXJhbCB1c2UKIwlpbiBFdXJvcGUgYW5kIFNvdXRoIEFtZXJpY2EuCiMJLS0gRSBPIEN1dGxlciwgX05ldyBZb3JrIFRpbWVzXyAoMTkzNy0wMi0xNCksIHF1b3RlZCBpbgojCUggTCBNZW5ja2VuLCBfVGhlIEFtZXJpY2FuIExhbmd1YWdlOiBTdXBwbGVtZW50IElfICgxOTYwKSwgcCA0NjYKIwojIEVhcmxpZXIgZWRpdGlvbnMgb2YgdGhlc2UgdGFibGVzIGFsc28gdXNlZCB0aGUgTm9ydGggQW1lcmljYW4gc3R5bGUKIyBmb3IgdGltZSB6b25lcyBpbiBCcmF6aWwsIGJ1dCB0aGlzIHdhcyBpbmNvcnJlY3QsIGFzIEJyYXppbGlhbnMgc2F5CiMgInN1bW1lciB0aW1lIi4gIFJlaW5hbGRvIEdvdWxhcnQsIGEgU2FvIFBhdWxvIGJ1c2luZXNzbWFuIGFjdGl2ZSBpbgojIHRoZSByYWlscm9hZCBzZWN0b3IsIHdyaXRlcyAoMTk5OS0wNy0wNik6CiMJVGhlIHN1YmplY3Qgb2YgdGltZSB6b25lcyBpcyBjdXJyZW50bHkgYSBtYXR0ZXIgb2YgZGlzY3Vzc2lvbi9kZWJhdGUgaW4KIwlCcmF6aWwuICBMZXQncyBzYXkgdGhhdCAidGhlIEJyYXNpbGlhIHRpbWUiIGlzIGNvbnNpZGVyZWQgdGhlCiMJIm9mZmljaWFsIHRpbWUiIGJlY2F1c2UgQnJhc2lsaWEgaXMgdGhlIGNhcGl0YWwgY2l0eS4KIwlUaGUgb3RoZXIgdGhyZWUgdGltZSB6b25lcyBhcmUgY2FsbGVkICJCcmFzaWxpYSB0aW1lICJtaW51cyBvbmUiIG9yCiMJInBsdXMgb25lIiBvciAicGx1cyB0d28iLiAgQXMgZmFyIGFzIEkga25vdyB0aGVyZSBpcyBubyBzdWNoCiMJbmFtZS9kZXNpZ25hdGlvbiBhcyAiRWFzdGVybiBUaW1lIiBvciAiQ2VudHJhbCBUaW1lIi4KIyBTbyBJIGludmVudGVkIHRoZSBmb2xsb3dpbmcgKEVuZ2xpc2gtbGFuZ3VhZ2UpIGFiYnJldmlhdGlvbnMgZm9yIG5vdy4KIyBDb3JyZWN0aW9ucyBhcmUgd2VsY29tZSEKIwkJc3RkCWRzdAojCS0yOjAwCUZOVAlGTlNUCUZlcm5hbmRvIGRlIE5vcm9uaGEKIwktMzowMAlCUlQJQlJTVAlCcmFzaWxpYQojCS00OjAwCUFNVAlBTVNUCUFtYXpvbgojCS01OjAwCUFDVAlBQ1NUCUFjcmUKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQXJnZW50aW5hCgojIEZyb20gQm9iIERldmluZSAoMTk4OC0wMS0yOCk6CiMgQXJnZW50aW5hOiBmaXJzdCBTdW5kYXkgaW4gT2N0b2JlciB0byBmaXJzdCBTdW5kYXkgaW4gQXByaWwgc2luY2UgMTk3Ni4KIyBEb3VibGUgU3VtbWVyIHRpbWUgZnJvbSAxOTY5IHRvIDE5NzQuICBTd2l0Y2hlcyBhdCBtaWRuaWdodC4KCiMgRnJvbSBVLiBTLiBOYXZhbCBPYnNlcnZhdG9yeSAoMTk4OC0wMS0xOTkpOgojIEFSR0VOVElOQSAgICAgICAgICAgMyBIIEJFSElORCAgIFVUQwoKIyBGcm9tIEhlcm5hbiBHLiBPdGVybyAoMTk5NS0wNi0yNik6CiMgSSBhbSBzZW5kaW5nIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEFyZ2VudGluZSB0aW1lIHpvbmUgdGFibGUuLi4KIyBBUiB3YXMgY2hvc2VuIGJlY2F1c2UgdGhleSBhcmUgdGhlIElTTyBsZXR0ZXJzIHRoYXQgcmVwcmVzZW50IEFyZ2VudGluYS4KCiMgUnVsZQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TClJ1bGUJQXJnCTE5MzAJb25seQktCURlYwkgMQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTMxCW9ubHkJLQlBcHIJIDEJMDowMAkwCS0KUnVsZQlBcmcJMTkzMQlvbmx5CS0JT2N0CTE1CTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5MzIJMTk0MAktCU1hcgkgMQkwOjAwCTAJLQpSdWxlCUFyZwkxOTMyCTE5MzkJLQlOb3YJIDEJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTk0MAlvbmx5CS0JSnVsCSAxCTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NDEJb25seQktCUp1bgkxNQkwOjAwCTAJLQpSdWxlCUFyZwkxOTQxCW9ubHkJLQlPY3QJMTUJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTk0Mwlvbmx5CS0JQXVnCSAxCTA6MDAJMAktClJ1bGUJQXJnCTE5NDMJb25seQktCU9jdAkxNQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTQ2CW9ubHkJLQlNYXIJIDEJMDowMAkwCS0KUnVsZQlBcmcJMTk0Nglvbmx5CS0JT2N0CSAxCTA6MDAJMTowMAlTClJ1bGUJQXJnCTE5NjMJb25seQktCU9jdAkgMQkwOjAwCTAJLQpSdWxlCUFyZwkxOTYzCW9ubHkJLQlEZWMJMTUJMDowMAkxOjAwCVMKUnVsZQlBcmcJMTk2NAkxOTY2CS0JTWFyCSAxCTA6MDAJMAktClJ1bGUJQXJnCTE5NjQJMTk2NgktCU9jdAkxNQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTY3CW9ubHkJLQlBcHIJIDIJMDowMAkwCS0KUnVsZQlBcmcJMTk2NwkxOTY4CS0JT2N0CVN1bj49MQkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTY4CTE5NjkJLQlBcHIJU3VuPj0xCTA6MDAJMAktClJ1bGUJQXJnCTE5NzQJb25seQktCUphbgkyMwkwOjAwCTE6MDAJUwpSdWxlCUFyZwkxOTc0CW9ubHkJLQlNYXkJIDEJMDowMAkwCS0KUnVsZQlBcmcJMTk4OAlvbmx5CS0JRGVjCSAxCTA6MDAJMTowMAlTCiMKIyBGcm9tIEhlcm5hbiBHLiBPdGVybyAoMTk5NS0wNi0yNik6CiMgVGhlc2UgY29ycmVjdGlvbnMgd2VyZSBjb250cmlidXRlZCBieSBJbnRlclNvZnQgQXJnZW50aW5hIFMuQS4sCiMgb2J0YWluaW5nIHRoZSBkYXRhIGZyb20gdGhlOgojIFRhbGxlcmVzIGRlIEhpZHJvZ3JhZmlhIE5hdmFsIEFyZ2VudGluYQojIChBcmdlbnRpbmUgTmF2YWwgSHlkcm9ncmFwaHkgSW5zdGl0dXRlKQpSdWxlCUFyZwkxOTg5CTE5OTMJLQlNYXIJU3VuPj0xCTA6MDAJMAktClJ1bGUJQXJnCTE5ODkJMTk5MgktCU9jdAlTdW4+PTE1CTA6MDAJMTowMAlTCiMKIyBGcm9tIEhlcm5hbiBHLiBPdGVybyAoMTk5NS0wNi0yNik6CiMgRnJvbSB0aGlzIG1vbWVudCBvbiwgdGhlIGxhdyB0aGF0IG1hbmRhdGVkIHRoZSBkYXlsaWdodCBzYXZpbmcKIyB0aW1lIGNvcnJlY3Rpb25zIHdhcyBkZXJvZ2F0ZWQgYW5kIG5vIG1vcmUgbW9kaWZpY2F0aW9ucwojIHRvIHRoZSB0aW1lIHpvbmVzIChmb3IgZGF5bGlnaHQgc2F2aW5nKSBhcmUgbm93IG1hZGUuCiMKIyBGcm9tIFJpdmVzIE1jRG93ICgyMDAwLTAxLTEwKToKIyBPbiBPY3RvYmVyIDMsIDE5OTksIDA6MDAgbG9jYWwsIEFyZ2VudGluYSBpbXBsZW1lbnRlZCBkYXlsaWdodCBzYXZpbmdzIHRpbWUsCiMgd2hpY2ggZGlkIG5vdCByZXN1bHQgaW4gdGhlIHN3aXRjaCBvZiBhIHRpbWUgem9uZSwgYXMgdGhleSBzdGF5ZWQgOSBob3VycwojIGZyb20gdGhlIEludGVybmF0aW9uYWwgRGF0ZSBMaW5lLgpSdWxlCUFyZwkxOTk5CW9ubHkJLQlPY3QJU3VuPj0xCTA6MDAJMTowMAlTCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNy0xMi0yOCk6CiMgRFNUIHdhcyBzZXQgdG8gZXhwaXJlIG9uIE1hcmNoIDUsIG5vdCBNYXJjaCAzLCBidXQgc2luY2UgaXQgd2FzIGNvbnZlcnRlZAojIHRvIHN0YW5kYXJkIHRpbWUgb24gTWFyY2ggMyBpdCdzIG1vcmUgY29udmVuaWVudCBmb3IgdXMgdG8gcHJldGVuZCB0aGF0CiMgaXQgZW5kZWQgb24gTWFyY2ggMy4KUnVsZQlBcmcJMjAwMAlvbmx5CS0JTWFyCTMJMDowMAkwCS0KIwojIEZyb20gUGV0ZXIgR3JhZGVsc2tpIHZpYSBTdGVmZmVuIFRob3JzZW4gKDIwMDAtMDMtMDEpOgojIFdlIGp1c3QgY2hlY2tlZCB3aXRoIG91ciBTYW8gUGF1bG8gb2ZmaWNlIGFuZCB0aGV5IHNheSB0aGUgZ292ZXJubWVudCBvZgojIEFyZ2VudGluYSBkZWNpZGVkIG5vdCB0byBiZWNvbWUgb25lIG9mIHRoZSBjb3VudHJpZXMgdGhhdCBnbyBvbiBvciBvZmYgRFNULgojIFNvIEJ1ZW5vcyBBaXJlcyBzaG91bGQgYmUgLTMgaG91cnMgZnJvbSBHTVQgYXQgYWxsIHRpbWVzLgojCiMgRnJvbSBGYWJpYW4gTC4gQXJjZSBKb2ZyZSAoMjAwMC0wNC0wNCk6CiMgVGhlIGxhdyB0aGF0IGNsYWltZWQgRFNUIGZvciBBcmdlbnRpbmEgd2FzIGRlcm9nYXRlZCBieSBQcmVzaWRlbnQgRmVybmFuZG8KIyBkZSBsYSBSdWEgb24gTWFyY2ggMiwgMjAwMCwgYmVjYXVzZSBpdCB3b3VsZCBtYWtlIHBlb3BsZSBzcGVuZCBtb3JlIGVuZXJneQojIGluIHRoZSB3aW50ZXIgdGltZSwgcmF0aGVyIHRoYW4gbGVzcy4gIFRoZSBjaGFuZ2UgdG9vayBlZmZlY3Qgb24gTWFyY2ggMy4KIwojIEZyb20gTWFyaWFubyBBYnNhdHogKDIwMDEtMDYtMDYpOgojIG9uZSBvZiB0aGUgbWFqb3IgbmV3c3BhcGVycyBoZXJlIGluIEFyZ2VudGluYSBzYWlkIHRoYXQgdGhlIDE5OTkKIyBUaW1lem9uZSBMYXcgKHdoaWNoIG5ldmVyIHdhcyBlZmZlY3RpdmVseSBhcHBsaWVkKSB3aWxsICh3b3VsZD8pIGJlCiMgaW4gZWZmZWN0Li4uLiBUaGUgYXJ0aWNsZSBpcyBhdAojIGh0dHA6Ly9hci5jbGFyaW4uY29tL2RpYXJpby8yMDAxLTA2LTA2L2UtMDE3MDEuaHRtCiMgLi4uIFRoZSBMYXcgaXRzZWxmIGlzICJMZXkgTm8gMjUxNTUiLCBzYW5jdGlvbmVkIG9uIDE5OTktMDgtMjUsIGVuYWN0ZWQKIyAxOTk5LTA5LTE3LCBhbmQgcHVibGlzaGVkIDE5OTktMDktMjEuICBUaGUgb2ZmaWNpYWwgcHVibGljYXRpb24gaXMgYXQ6CiMgaHR0cDovL3d3dy5ib2xldGluLmp1cy5nb3YuYXIvQk9OL1ByaW1lcmEvMTk5OS8wOS1TZXB0aWVtYnJlLzIxL1BERi9CTzIxLTA5LTk5TEVHLlBERgojIFJlZ3JldGZ1bGx5LCB5b3UgaGF2ZSB0byBzdWJzY3JpYmUgKGFuZCBwYXkpIGZvciB0aGUgb24tbGluZSB2ZXJzaW9uLi4uLgojCiMgKDIwMDEtMDYtMTIpOgojIHRoZSB0aW1lem9uZSBmb3IgQXJnZW50aW5hIHdpbGwgbm90IGNoYW5nZSBuZXh0IFN1bmRheS4KIyBBcHBhcmVudGx5IGl0IHdpbGwgZG8gc28gb24gU3VuZGF5IDI0dGguLi4uCiMgaHR0cDovL2FyLmNsYXJpbi5jb20vZGlhcmlvLzIwMDEtMDYtMTIvcy0wMzUwMS5odG0KIwojICgyMDAxLTA2LTI1KToKIyBMYXN0IEZyaWRheSAoeWVzLCB0aGUgbGFzdCB3b3JraW5nIGRheSBiZWZvcmUgdGhlIGRhdGUgb2YgdGhlIGNoYW5nZSksIHRoZQojIFNlbmF0ZSBhbm51bGxlZCB0aGUgMTk5OSBsYXcgdGhhdCBpbnRyb2R1Y2VkIHRoZSBjaGFuZ2VzIGxhdGVyIHBvc3Rwb25lZC4KIyBodHRwOi8vd3d3LmNsYXJpbi5jb20uYXIvZGlhcmlvLzIwMDEtMDYtMjIvcy0wMzYwMS5odG0KIyBJdCByZW1haW5zIHRoZSB2b3RlIG9mIHRoZSBEZXB1dGllcy4uLiwgYnV0IGl0IHdpbGwgYmUgdGhlIHNhbWUuLi4uCiMgVGhpcyBraW5kIG9mIHRoaW5ncyBoYWQgYWx3YXlzIGJlZW4gZG9uZSB0aGlzIHdheSBpbiBBcmdlbnRpbmEuCiMgV2UgYXJlIHN0aWxsIC0wMzowMCBhbGwgeWVhciByb3VuZCBpbiBhbGwgb2YgdGhlIGNvdW50cnkuCiMKIyBGcm9tIFN0ZWZmZW4gVGhvcnNlbiAoMjAwNy0xMi0yMSk6CiMgQSB1c2VyIChMZW9uYXJkbyBDaGFpbSkgcmVwb3J0ZWQgdGhhdCBBcmdlbnRpbmEgd2lsbCBhZG9wdCBEU1QuLi4uCiMgYWxsIG9mIHRoZSBjb3VudHJ5IChhbGwgWm9uZS1lbnRyaWVzKSBhcmUgYWZmZWN0ZWQuICBOZXdzIHJlcG9ydHMgbGlrZQojIGh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyL29waW5pb24vbm90YS5hc3A/bm90YV9pZD05NzMwMzcgaW5kaWNhdGUKIyB0aGF0IEFyZ2VudGluYSB3aWxsIHVzZSBEU1QgbmV4dCB5ZWFyIGFzIHdlbGwsIGZyb20gT2N0b2JlciB0bwojIE1hcmNoLCBhbHRob3VnaCBleGFjdCBydWxlcyBhcmUgbm90IGdpdmVuLgojCiMgRnJvbSBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4gKDIwMDctMTItMjYpCiMgVGhlIGxhc3QgaHVyZGxlIG9mIEFyZ2VudGluYSBEU1QgaXMgb3ZlciwgdGhlIHByb3Bvc2FsIHdhcyBhcHByb3ZlZCBpbgojIHRoZSBsb3dlciBjaGFtYmVyIHRvbyAoRGVwdXRhZG9zKSB3aXRoIGEgdm90ZSAxOTIgZm9yIGFuZCAyIGFnYWluc3QuCiMgQnkgdGhlIHdheSB0aGFua3MgdG8gTWFyaWFubyBBYnNhdHogYW5kIERhbmllbCBNYXJpbyBWZWdhIGZvciB0aGUgbGluayB0bwojIHRoZSBvcmlnaW5hbCBzY2FubmVkIHByb3Bvc2FsLCB3aGVyZSB0aGUgZGF0ZXMgYW5kIHRoZSB6ZXJvIGhvdXJzIGFyZQojIGNsZWFyIGFuZCB1bmFtYmlndW91cy4uLlRoaXMgaXMgdGhlIGFydGljbGUgYWJvdXQgZmluYWwgYXBwcm92YWw6CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvcG9saXRpY2Evbm90YS5hc3A/bm90YV9pZD05NzM5OTYiPgojIGh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyL3BvbGl0aWNhL25vdGEuYXNwP25vdGFfaWQ9OTczOTk2CiMgPC9hPgojCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNy0xMi0yMik6CiMgRm9yIGRhdGVzIGFmdGVyIG1pZC0yMDA4LCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFyZSBteSBndWVzc2VzIGFuZAojIGFyZSBxdWl0ZSBwb3NzaWJseSB3cm9uZywgYnV0IGFyZSBtb3JlIGxpa2VseSB0aGFuIG5vIERTVCBhdCBhbGwuCgojIEZyb20gQWxleGFuZGVyIEtyaXZlbnlzaGV2ICgyMDA4LTA5LTA1KToKIyBBcyBwZXIgbWVzc2FnZSBmcm9tIENhcmxvcyBBbGJlcnRvIEZvbnNlY2EgQXJhdXogKE5pY2FyYWd1YSksCiMgQXJnZW50aW5hIHdpbGwgc3RhcnQgRFNUIG9uIFN1bmRheSBPY3RvYmVyIDE5LCAyMDA4LgojCiMgPGEgaHJlZj0iaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9kc3RfbmV3cy9kc3RfbmV3c19hcmdlbnRpbmEwMy5odG1sIj4KIyBodHRwOi8vd3d3LndvcmxkdGltZXpvbmUuY29tL2RzdF9uZXdzL2RzdF9uZXdzX2FyZ2VudGluYTAzLmh0bWwKIyA8L2E+CiMgT1IKIyA8YSBocmVmPSJodHRwOi8vd3d3LmltcHVsc29iYWlyZXMuY29tLmFyL25vdGEucGhwP2lkPTU3ODMyIChpbiBzcGFuaXNoKSI+CiMgaHR0cDovL3d3dy5pbXB1bHNvYmFpcmVzLmNvbS5hci9ub3RhLnBocD9pZD01NzgzMiAoaW4gc3BhbmlzaCkKIyA8L2E+CgojIEZyb20gUm9kcmlnbyBTZXZlcm8gKDIwMDgtMTAtMDYpOgojIEhlcmUgaXMgc29tZSBpbmZvIGF2YWlsYWJsZSBhdCBhIEdlbnRvbyBidWcgcmVsYXRlZCB0byBUWiBvbiBBcmdlbnRpbmEncyBEU1Q6CiMgLi4uCiMgLS0tLS0tLSBDb21tZW50ICMxIGZyb20gW2ptZG9jaWxlXSAgMjAwOC0xMC0wNiAxNjoyOCAwMDAwIC0tLS0tLS0KIyBIaSwgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGltZXpvbmUtZGF0YS0yMDA4ZSBhbmQgbWF5YmUgd2l0aAojIHRpbWV6b25lLWRhdGEtMjAwOGYKIyBBcmdlbnRpbmlhbiBsYXcgW051bWJlcl0gMjUuMTU1IGlzIG5vIGxvbmdlciB2YWxpZC4KIyA8YSBocmVmPSJodHRwOi8vd3d3LmluZm9sZWcuZ292LmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvNjAwMDAtNjQ5OTkvNjAwMzYvbm9ybWEuaHRtIj4KIyBodHRwOi8vd3d3LmluZm9sZWcuZ292LmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvNjAwMDAtNjQ5OTkvNjAwMzYvbm9ybWEuaHRtCiMgPC9hPgojIFRoZSBuZXcgb25lIGlzIGxhdyBbTnVtYmVyXSAyNi4zNTAKIyA8YSBocmVmPSJodHRwOi8vd3d3LmluZm9sZWcuZ292LmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvMTM1MDAwLTEzOTk5OS8xMzYxOTEvbm9ybWEuaHRtIj4KIyBodHRwOi8vd3d3LmluZm9sZWcuZ292LmFyL2luZm9sZWdJbnRlcm5ldC9hbmV4b3MvMTM1MDAwLTEzOTk5OS8xMzYxOTEvbm9ybWEuaHRtCiMgPC9hPgojIFNvIHRoZXJlIGlzIG5vIHN1bW1lciB0aW1lIGluIEFyZ2VudGluYSBmb3Igbm93LgoKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA4LTEwLTIwKToKIyBEZWNyZWUgMTY5My8yMDA4IGFwcGxpZXMgTGF3IDI2LjM1MCBmb3IgdGhlIHN1bW1lciAyMDA4LzIwMDkgZXN0YWJsaXNoaW5nIERTVCBpbiBBcmdlbnRpbmEKIyBGcm9tIDIwMDgtMTAtMTkgdW50aWwgMjAwOS0wMy0xNQojIDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9sZXRpbm9maWNpYWwuZ292LmFyL0JvcmEuUG9ydGFsL0N1c3RvbUNvbnRyb2xzL1BkZkNvbnRlbnQuYXNweD9mcD0xNjEwMjAwOCZwaT0zJnBmPTQmcz0wJnNlYz0wMSI+CiMgaHR0cDovL3d3dy5ib2xldGlub2ZpY2lhbC5nb3YuYXIvQm9yYS5Qb3J0YWwvQ3VzdG9tQ29udHJvbHMvUGRmQ29udGVudC5hc3B4P2ZwPTE2MTAyMDA4JnBpPTMmcGY9NCZzPTAmc2VjPTAxCiMgPC9hPgojCiMgRGVjcmVlIDE3MDUvMjAwOCBleGNlcHRpbmcgMTIgUHJvdmluY2VzIGZyb20gYXBwbHlpbmcgRFNUIGluIHRoZSBzdW1tZXIgMjAwOC8yMDA5OgojIENhdGFtYXJjYSwgTGEgUmlvamEsIE1lbmRvemEsIFNhbHRhLCBTYW4gSnVhbiwgU2FuIEx1aXMsIExhIFBhbXBhLCBOZXVxdWVuLCBSaW8gTmVncm8sIENodWJ1dCwgU2FudGEgQ3J1egojIGFuZCBUaWVycmEgZGVsIEZ1ZWdvCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5ib2xldGlub2ZpY2lhbC5nb3YuYXIvQm9yYS5Qb3J0YWwvQ3VzdG9tQ29udHJvbHMvUGRmQ29udGVudC5hc3B4P2ZwPTE3MTAyMDA4JnBpPTEmcGY9MSZzPTAmc2VjPTAxIj4KIyBodHRwOi8vd3d3LmJvbGV0aW5vZmljaWFsLmdvdi5hci9Cb3JhLlBvcnRhbC9DdXN0b21Db250cm9scy9QZGZDb250ZW50LmFzcHg/ZnA9MTcxMDIwMDgmcGk9MSZwZj0xJnM9MCZzZWM9MDEKIyA8L2E+CiMKIyBQcmVzcyByZWxlYXNlIDIzNSBkYXRlZCBTYXR1cmRheSBPY3RvYmVyIDE4dGgsIGZyb20gdGhlIEdvdmVybm1lbnQgb2YgdGhlIFByb3ZpbmNlIG9mIEp1anV5IHNheWluZwojIGl0IHdpbGwgbm90IGFwcGx5IERTVCBlaXRoZXIgKGV2ZW4gd2hlbiBpdCB3YXMgbm90IGluY2x1ZGVkIGluIERlY3JlZSAxNzA1LzIwMDgpCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5qdWp1eS5nb3YuYXIvaW5kZXgyL3BhcnRlc19wcmVuc2EvMThfMTBfMDgvMjM1LTE4MTAwOC5kb2MiPgojIGh0dHA6Ly93d3cuanVqdXkuZ292LmFyL2luZGV4Mi9wYXJ0ZXNfcHJlbnNhLzE4XzEwXzA4LzIzNS0xODEwMDguZG9jCiMgPC9hPgoKIyBGcm9tIGZ1bGxpbmV0ICgyMDA5LTEwLTE4KToKIyBBcyBhbm5vdW5jZWQgaW4KIyA8YSBoZWY9Imh0dHA6Ly93d3cuYXJnZW50aW5hLmdvYi5hci9hcmdlbnRpbmEvcG9ydGFsL3BhZ2luYXMuZGh0bWw/cGFnaW5hPTM1NiI+CiMgaHR0cDovL3d3dy5hcmdlbnRpbmEuZ29iLmFyL2FyZ2VudGluYS9wb3J0YWwvcGFnaW5hcy5kaHRtbD9wYWdpbmE9MzU2CiMgPC9hPgojIChhbiBvZmZpY2lhbCAuZ29iLmFyKSB1bmRlciB0aXRsZTogIlNpbiBDYW1iaW8gZGUgSG9yYSIgKGVuZ2xpc2g6ICJObyBob3VyIGNoYW5nZSIpCiMKIyAiUG9yIGVsIG1vbWVudG8sIGVsIEdvYmllcm5vIE5hY2lvbmFsIHJlc29sdmlvIG5vIG1vZGlmaWNhciBsYSBob3JhCiMgb2ZpY2lhbCwgZGVjaXNpb24gcXVlIGVzdGFiYSBlbiBlc3R1ZGlvIHBhcmEgc3UgaW1wbGVtZW50YWNpb24gZWwKIyBkb21pbmdvIDE4IGRlIG9jdHVicmUuIERlc2RlIGVsIE1pbmlzdGVyaW8gZGUgUGxhbmlmaWNhY2lvbiBzZSBhbnVuY2lvCiMgcXVlIGxhIEFyZ2VudGluYSBob3ksIGVuIGVzdGFzIGNvbmRpY2lvbmVzIG1ldGVvcm9sb2dpY2FzLCBubyBuZWNlc2l0YQojIGxhIG1vZGlmaWNhY2lvbiBkZWwgaHVzbyBob3JhcmlvLCB5YSBxdWUgMjAwOSBub3MgZW5jdWVudHJhIGNvbgojIGNyZWNpbWllbnRvIGVuIGxhIHByb2R1Y2Npb24geSBkaXN0cmlidWNpb24gZW5lcmdldGljYS4iCgpSdWxlCUFyZwkyMDA3CW9ubHkJLQlEZWMJMzAJMDowMAkxOjAwCVMKUnVsZQlBcmcJMjAwOAkyMDA5CS0JTWFyCVN1bj49MTUJMDowMAkwCS0KUnVsZQlBcmcJMjAwOAlvbmx5CS0JT2N0CVN1bj49MTUJMDowMAkxOjAwCVMKIAojIEZyb20gTWFyaWFubyBBYnNhdHogKDIwMDQtMDUtMjEpOgojIFRvZGF5IGl0IHdhcyBvZmZpY2lhbGx5IHB1Ymxpc2hlZCB0aGF0IHRoZSBQcm92aW5jZSBvZiBNZW5kb3phIGlzIGNoYW5naW5nCiMgaXRzIHRpbWV6b25lIHRoaXMgd2ludGVyLi4uIHN0YXJ0aW5nIHRvbW9ycm93IG5pZ2h0Li4uLgojIGh0dHA6Ly93d3cuZ29iZXJuYWMubWVuZG96YS5nb3YuYXIvYm9sZXRpbi9wZGYvMjAwNDA1MjEtMjcxNTgtbm9ybWFzLnBkZgojIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDQtMDUtMjQpOgojIEl0J3MgTGF3IE5vLiA3LDIxMC4gIFRoaXMgY2hhbmdlIGlzIGR1ZSB0byBhIHB1YmxpYyBwb3dlciBlbWVyZ2VuY3ksIHNvIGZvcgojIG5vdyB3ZSdsbCBhc3N1bWUgaXQncyBmb3IgdGhpcyB5ZWFyIG9ubHkuCiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNwaWNhc2MubmV0L2hvcnZlcmEuaHRtbCI+CiMgSG9yYSBkZSB2ZXJhbm8gcGFyYSBsYSBSZXB1YmxpY2EgQXJnZW50aW5hICgyMDAzLTA2LTA4KQojIDwvYT4gc2F5cyB0aGF0IHN0YW5kYXJkIHRpbWUgaW4gQXJnZW50aW5hIGZyb20gMTg5NC0xMC0zMQojIHRvIDE5MjAtMDUtMDEgd2FzIC00OjE2OjQ4LjI1LiAgR28gd2l0aCB0aGlzIG1vcmUtcHJlY2lzZSB2YWx1ZQojIG92ZXIgU2hhbmtzICYgUG90dGVuZ2VyLgojCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwNC0wNi0wNSk6CiMgVGhlc2UgbWVkaWEgYXJ0aWNsZXMgZnJvbSBhIG1ham9yIG5ld3NwYXBlciBtb3N0bHkgY292ZXIgdGhlIGN1cnJlbnQgc3RhdGU6CiMgaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvMDQvMDUvMjcvZGVfNjA0ODI1LmFzcAojIGh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyLzA0LzA1LzI4L2RlXzYwNTIwMy5hc3AKIwojIFRoZSBmb2xsb3dpbmcgZWlnaHQgKDgpIHByb3ZpbmNlcyBwdWxsZWQgY2xvY2tzIGJhY2sgdG8gVVRDLTA0OjAwIGF0CiMgbWlkbmlnaHQgTW9uZGF5IE1heSAzMXN0LiAodGhhdCBpcywgdGhlIG5pZ2h0IGJldHdlZW4gMDUvMzEgYW5kIDA2LzAxKS4KIyBBcHBhcmVudGx5LCBhbGwgbmluZSBwcm92aW5jZXMgd291bGQgZ28gYmFjayB0byBVVEMtMDM6MDAgYXQgdGhlIHNhbWUKIyB0aW1lIGluIE9jdG9iZXIgMTd0aC4KIwojIENhdGFtYXJjYSwgQ2h1YnV0LCBMYSBSaW9qYSwgU2FuIEp1YW4sIFNhbiBMdWlzLCBTYW50YSBDcnV6LAojIFRpZXJyYSBkZWwgRnVlZ28sIFR1Y3VtYW4uCiMKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA0LTA2LTE0KToKIyAuLi4gdGhpcyB3ZWVrZW5kLCB0aGUgUHJvdmluY2Ugb2YgVHVjdW1hbiBkZWNpZGVkIGl0J2QgZ28gYmFjayB0byBVVEMtMDM6MDAKIyB5ZXN0ZXJkYXkgbWlkbmlnaHQgKHRoYXQgaXMsIGF0IDI0OjAwIFNhdHVyZGF5IDEydGgpLCBzaW5jZSB0aGUgcGVvcGxlJ3MKIyBhbm5veWFuY2Ugd2l0aCB0aGUgY2hhbmdlIGlzIG11Y2ggaGlnaGVyIHRoYW4gdGhlIHBvd2VyIHNhdmluZ3Mgb2J0YWluZWQuLi4uCiMKIyBGcm9tIEd3aWxsaW0gTGF3ICgyMDA0LTA2LTE0KToKIyBodHRwOi8vd3d3LmxhbmFjaW9uLmNvbS5hci8wNC8wNi8xMC9kZV82MDkwNzguYXNwIC4uLgojICAgICAiVGhlIHRpbWUgY2hhbmdlIGluIFRpZXJyYSBkZWwgRnVlZ28gd2FzIGEgY29uZmxpY3RlZCBkZWNpc2lvbiBmcm9tCiMgICB0aGUgc3RhcnQuICBUaGUgZ292ZXJubWVudCBoYWQgZGVjcmVlZCB0aGF0IHRoZSBtZWFzdXJlIHdvdWxkIHRha2UKIyAgIGVmZmVjdCBvbiBKdW5lIDEsIGJ1dCBhIG5vcm1hdGl2ZSBlcnJvciBmb3JjZWQgdGhlIG5ldyB0aW1lIHRvIGJlZ2luCiMgICB0aHJlZSBkYXlzIGVhcmxpZXIsIGZyb20gYSBTYXR1cmRheSB0byBhIFN1bmRheS4uLi4KIyBPdXIgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCB0aGUgY2hhbmdlIHdhcyBvcmlnaW5hbGx5IHNjaGVkdWxlZCB0byB0YWtlIHBsYWNlCiMgb24gSnVuZSAxIGF0IDAwOjAwIGluIENodWJ1dCwgU2FudGEgQ3J1eiwgVGllcnJhIGRlbCBGdWVnbyAoYW5kIHNvbWUgb3RoZXIKIyBwcm92aW5jZXMpLiAgU3VuZGF5IHdhcyBNYXkgMzAsIG9ubHkgdHdvIGRheXMgZWFybGllci4gIFNvIHRoZSBhcnRpY2xlCiMgY29udGFpbnMgYSBjb250cmFkaWN0aW9uLiAgSSB3b3VsZCBnaXZlIG1vcmUgY3JlZGVuY2UgdG8gdGhlIFNhdHVyZGF5L1N1bmRheQojIGRhdGUgdGhhbiB0aGUgInRocmVlIGRheXMgZWFybGllciIgcGhyYXNlLCBhbmQgY29uY2x1ZGUgdGhhdCBUaWVycmEgZGVsCiMgRnVlZ28gc2V0IGl0cyBjbG9ja3MgYmFjayBhdCAyMDA0LTA1LTMwIDAwOjAwLgojCiMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMDQtMTAtMDUpOgojIFRoZSBwcmV2aW91cyBsYXcgNzIxMCB3aGljaCBjaGFuZ2VkIHRoZSBwcm92aW5jZSBvZiBNZW5kb3phJ3MgdGltZSB6b25lCiMgYmFjayBpbiBNYXkgaGF2ZSBiZWVuIG1vZGlmaWVkIHNsaWdodGx5IGluIGEgbmV3IGxhdyA3Mjc3LCB3aGljaCBzZXQgdGhlCiMgbmV3IGVuZCBkYXRlIHRvIDIwMDQtMDktMjYgKG9yaWdpbmFsIGRhdGUgd2FzIDIwMDQtMTAtMTcpLgojIGh0dHA6Ly93d3cuZ29iZXJuYWMubWVuZG96YS5nb3YuYXIvYm9sZXRpbi9wZGYvMjAwNDA5MjQtMjcyNDQtbm9ybWFzLnBkZgojCiMgRnJvbSBNYXJpYW5vIEFic2F0eiAoMjAwNC0xMC0wNSk6CiMgU2FuIEp1YW4gY2hhbmdlZCBmcm9tIFVUQy0wMzowMCB0byBVVEMtMDQ6MDAgYXQgbWlkbmlnaHQgYmV0d2VlbgojIFN1bmRheSwgTWF5IDMwdGggYW5kIE1vbmRheSwgTWF5IDMxc3QuICBJdCBjaGFuZ2VkIGJhY2sgdG8gVVRDLTAzOjAwCiMgYXQgbWlkbmlnaHQgYmV0d2VlbiBTYXR1cmRheSwgSnVseSAyNHRoIGFuZCBTdW5kYXksIEp1bHkgMjV0aC4uLi4KIyBodHRwOi8vd3d3LnNhbmp1YW4uZ292LmFyL3ByZW5zYS9hcmNoaXZvLzAwMDMyOS5odG1sCiMgaHR0cDovL3d3dy5zYW5qdWFuLmdvdi5hci9wcmVuc2EvYXJjaGl2by8wMDA0MjYuaHRtbAojIGh0dHA6Ly93d3cuc2FuanVhbi5nb3YuYXIvcHJlbnNhL2FyY2hpdm8vMDAwNDQxLmh0bWwKCiMgRnJvbSBBbGV4IEtyaXZlbnlzaGV2ICgyMDA4LTAxLTE3KToKIyBIZXJlIGFyZSBhcnRpY2xlcyB0aGF0IEFyZ2VudGluYSBQcm92aW5jZSBTYW4gTHVpcyBpcyBwbGFubmluZyB0byBlbmQgRFNUCiMgYXMgZWFybGllciBhcyB1cGNvbWluZyBNb25kYXkgSmFudWFyeSAyMSwgMjAwOCBvciBGZWJydWFyeSAyMDA4OgojCiMgUHJvdmluY2lhIGFyZ2VudGluYSByZXRyYXNhIHJlbG9qIHkgbWFyY2EgZGlmZXJlbmNpYSBjb24gcmVzdG8gZGVsIHBhaXMKIyAoQXJnZW50aW5lIFByb3ZpbmNlIGRlbGF5ZWQgY2xvY2sgYW5kIG1hcmsgZGlmZmVyZW5jZSB3aXRoIHRoZSByZXN0IG9mIHRoZQojIGNvdW50cnkpCiMgPGEgaHJlZj0iaHR0cDovL2NsLmludmVydGlhLmNvbS9ub3RpY2lhcy9ub3RpY2lhLmFzcHg/aWROb3RpY2lhPTIwMDgwMTE3MTg0OV9FRkVfRVQ0MzczJmlkdGVsIj4KIyBodHRwOi8vY2wuaW52ZXJ0aWEuY29tL25vdGljaWFzL25vdGljaWEuYXNweD9pZE5vdGljaWE9MjAwODAxMTcxODQ5X0VGRV9FVDQzNzMmaWR0ZWwKIyA8L2E+CiMKIyBFcyBpbm1pbmVudGUgcXVlIGVuIFNhbiBMdWlzIGF0cmFzZW4gdW5hIGhvcmEgbG9zIHJlbG9qZXMKIyAoSXQgaXMgaW1taW5lbnQgaW4gU2FuIEx1aXMgY2xvY2tzIG9uZSBob3VyIGRlbGF5KQojIDxhIGhyZWY9Imh0dHA6Ly93d3cubGFnYWNldGEuY29tLmFyL3Zlcm5vdGFlLmFzcD9pZF9ub3RhPTI1MzQxNCI+CiMgaHR0cDovL3d3dy5sYWdhY2V0YS5jb20uYXIvdmVybm90YWUuYXNwP2lkX25vdGE9MjUzNDE0CiMgPC9hPgojCiMgPGEgaHJlZj0iaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLm5ldC9kc3RfbmV3cy9kc3RfbmV3c19hcmdlbnRpbmEwMi5odG1sIj4KIyBodHRwOi8vd3d3LndvcmxkdGltZXpvbmUubmV0L2RzdF9uZXdzL2RzdF9uZXdzX2FyZ2VudGluYTAyLmh0bWwKIyA8L2E+CgojIEZyb20gSmVzcGVyIE5vcmdhYXJkIFdlbGVuICgyMDA4LTAxLTE4KToKIyBUaGUgcGFnZSBvZiB0aGUgU2FuIEx1aXMgcHJvdmluY2lhbCBnb3Zlcm5tZW50CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9ub3Rhcy5hc3A/aWRDYW5hbD0wJmlkPTIyODEyIj4KIyBodHRwOi8vd3d3LnNhbmx1aXMuZ292LmFyL25vdGFzLmFzcD9pZENhbmFsPTAmaWQ9MjI4MTIKIyA8L2E+CiMgY29uZmlybXMgd2hhdCBBbGV4IEtyaXZlbnlzaGV2IGhhcyBlYXJsaWVyIHNlbnQgdG8gdGhlIHR6CiMgZW1haWxpbmcgbGlzdCBhYm91dCB0aGF0IFNhbiBMdWlzIHBsYW5zIHRvIHJldHVybiB0byBzdGFuZGFyZAojIHRpbWUgbXVjaCBlYXJsaWVyIHRoYW4gdGhlIHJlc3Qgb2YgdGhlIGNvdW50cnkuIEl0IGFsc28KIyBjb25maXJtcyB0aGF0IHVwb24gcmVxdWVzdCB0aGUgcHJvdmluY2VzIFNhbiBKdWFuIGFuZCBNZW5kb3phIAojIHJlZnVzZWQgdG8gZm9sbG93IFNhbiBMdWlzIGluIHRoaXMgY2hhbmdlLiAKIyAKIyBUaGUgY2hhbmdlIGlzIHN1cHBvc2VkIHRvIHRha2UgcGxhY2UgTW9uZGF5IHRoZSAyMS5zdCBhdCAwOjAwCiMgaG91cnMuIEFzIGZhciBhcyBJIHVuZGVyc3RhbmQgaXQgaWYgdGhpcyBnb2VzIGFoZWFkLCB3ZSBuZWVkCiMgYSBuZXcgdGltZXpvbmUgZm9yIFNhbiBMdWlzIChhbHRob3VnaCB0aGVyZSBhcmUgYWxzbyBkb2N1bWVudGVkCiMgaW5kZXBlbmRlbnQgY2hhbmdlcyBpbiB0aGUgc291dGhhbWVyaWNhIGZpbGUgb2YgU2FuIEx1aXMgaW4KIyAxOTkwIGFuZCAxOTkxIHdoaWNoIGhhcyBub3QgYmVlbiBjb25maXJtZWQpLgoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwOC0wMS0yNSk6CiMgVW5mb3J0dW5hdGVseSB0aGUgYmVsb3cgcGFnZSBoYXMgYmVjb21lIGRlZnVuY3QsIGFib3V0IHRoZSBTYW4gTHVpcwojIHRpbWUgY2hhbmdlLiBQZXJoYXBzIGJlY2F1c2UgaXQgbm93IGlzIHBhcnQgb2YgYSBncm91cCBvZiBwYWdlcyAiTW9zdAojIGltcG9ydGFudCBwYWdlcyBvZiAyMDA4LiIKIwojIFlvdSBjYW4gdXNlCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hci9ub3Rhcy5hc3A/aWRDYW5hbD04MTQxJmlkPTIyODM0Ij4KIyBodHRwOi8vd3d3LnNhbmx1aXMuZ292LmFyL25vdGFzLmFzcD9pZENhbmFsPTgxNDEmaWQ9MjI4MzQKIyA8L2E+CiMgaW5zdGVhZCBpdCBzZWVtcy4gT3IgdXNlICJCdXNjYWRvciIgZnJvbSB0aGUgbWFpbiBwYWdlIG9mIHRoZSBTYW4gTHVpcwojIGdvdmVybm1lbnQsIGFuZCBmaWxsIGluICJodXNvIiBhbmQgY2xpY2sgT0ssIGFuZCB5b3Ugd2lsbCBnZXQgMyBwYWdlcwojIGZyb20gd2hpY2ggdGhlIGZpcnN0IG9uZSBpcyBpZGVudGljYWwgdG8gdGhlIGFib3ZlLgoKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA4LTAxLTI4KToKIyBJIGNhbiBjb25maXJtIHRoYXQgdGhlIFByb3ZpbmNlIG9mIFNhbiBMdWlzIChhbmQgc28gZmFyIG9ubHkgdGhhdAojIHByb3ZpbmNlKSBkZWNpZGVkIHRvIGdvIGJhY2sgdG8gVVRDLTMgZWZmZWN0aXZlIG1pZG5pZ2h0IEphbiAyMHRoIDIwMDgKIyAodGhhdCBpcywgTW9uZGF5IDIxc3QgYXQgMDowMCBpcyB0aGUgdGltZSB0aGUgY2xvY2tzIHdlcmUgZGVsYXllZCBiYWNrCiMgMSBob3VyKSwgYW5kIHRoZXkgaW50ZW5kIHRvIGtlZXAgVVRDLTMgYXMgdGhlaXIgdGltZXpvbmUgYWxsIHllYXIgcm91bmQKIyAodGhhdCBpcywgdW5sZXNzIHRoZXkgY2hhbmdlIHRoZWlyIG1pbmQgYW55IG1pbnV0ZSBub3cpLgojCiMgU28gd2UnbGwgaGF2ZSB0byBhZGQgeWV0IGFub3RoZXIgY2l0eSB0byAnc291dGhhbWVyaWNhJyAoSSB0aGluayBTYW4KIyBMdWlzIGNpdHkgaXMgdGhlIG1vcyBwb3B1bGF0ZWQgY2l0eSBpbiB0aGUgUHJvdmluY2UsIHNvIGl0J2QgYmUKIyBBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpcy4uLiBvZiBjb3Vyc2UgSSBjYW4ndCByZW1lbWJlciBpZiBTYW4gTHVpcydzCiMgaGlzdG9yeSBvZiBwYXJ0aWN1bGFyIGNoYW5nZXMgZ29lcyBhbG9uZyB3aXRoIE1lbmRvemEgb3IgU2FuIEp1YW4gOi0oCiMgKEkgb25seSByZW1lbWJlciBub3QgYmVpbmcgYWJsZSB0byBjb2xsZWN0IGhhcmQgZmFjdHMgYWJvdXQgU2FuIEx1aXMKIyBiYWNrIGluIDIwMDQsIHdoZW4gdGhlc2UgcHJvdmluY2VzIGNoYW5nZWQgdG8gVVRDLTQgZm9yIGEgZmV3IGRheXMsIEkKIyBtYWlsZWQgdGhlbSBwZXJzb25hbGx5IGFuZCBuZXZlciBnb3QgYW4gYW5zd2VyKS4KCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwOC0wNi0zMCk6CiMgVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIGRhdGEgYXJlIGZyb20gU2hhbmtzICYgUG90dGVuZ2VyIHRocm91Z2ggMTk5MiwKIyBmcm9tIHRoZSBJQVRBIG90aGVyd2lzZS4gIEFzIG5vdGVkIGJlbG93LCBTaGFua3MgJiBQb3R0ZW5nZXIgc2F5IHRoYXQKIyBBbWVyaWNhL0NvcmRvYmEgc3BsaXQgaW50byA2IHN1YnJlZ2lvbnMgZHVyaW5nIDE5OTEvMTk5Miwgb25lIG9mIHdoaWNoCiMgd2FzIEFtZXJpY2EvU2FuX0x1aXMsIGJ1dCB3ZSBoYXZlbid0IHZlcmlmaWVkIHRoaXMgeWV0IHNvIGZvciBub3cgd2UnbGwKIyBrZWVwIEFtZXJpY2EvQ29yZG9iYSBhIHNpbmdsZSByZWdpb24gcmF0aGVyIHRoYW4gc3BsaXR0aW5nIGl0IGludG8gdGhlCiMgb3RoZXIgNSBzdWJyZWdpb25zLgoKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA5LTAzLTEzKToKIyBZZXN0ZXJkYXkgKHdpdGggb3VyIHVzdWFsIDItZGF5IG5vdGljZSkgdGhlIFByb3ZpbmNlIG9mIFNhbiBMdWlzCiMgZGVjaWRlZCB0aGF0IG5leHQgU3VuZGF5IGluc3RlYWQgb2YgInN0YXlpbmciIEB1dGMtMDM6MDAgdGhleSB3aWxsIGdvCiMgdG8gdXRjLTA0OjAwIHVudGlsIHRoZSBzZWNvbmQgU2F0dXJkYXkgaW4gT2N0b2Jlci4uLgojCiMgVGhlIHByZXNzIHJlbGVhc2UgaXMgYXQKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNhbmx1aXMuZ292LmFyL1NML1BhZ2luYXMvTm90aWNpYURldGFsbGUuYXNwP1RlbWFJZD0xJkluZm9QcmVuc2FJZD0zMTAyIj4KIyBodHRwOi8vd3d3LnNhbmx1aXMuZ292LmFyL1NML1BhZ2luYXMvTm90aWNpYURldGFsbGUuYXNwP1RlbWFJZD0xJkluZm9QcmVuc2FJZD0zMTAyCiMgPC9hPgojIChJIGNvdWxkbid0IGZpbmQgdGhlIGRlY3JlZSwgYnV0CiMgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW5sdWlzLmdvdi5hciI+CiMgd3d3LnNhbmx1aXMuZ292LmFyCiMgPGEvPgojIGlzIHRoZSBvZmZpY2lhbCBwYWdlIGZvciB0aGUgUHJvdmluY2UgR292ZXJubWVudCkuCiMKIyBUaGVyZSdzIGFsc28gYSBub3RlIGluIG9ubHkgb25lIG9mIHRoZSBtYWpvciBuYXRpb25hbCBwYXBlcnMgKExhIE5hY2nzbikgYXQKIyA8YSBocmVmPSJodHRwOi8vd3d3LmxhbmFjaW9uLmNvbS5hci9ub3RhLmFzcD9ub3RhX2lkPTExMDc5MTIiPgojIGh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyL25vdGEuYXNwP25vdGFfaWQ9MTEwNzkxMgojIDwvYT4KIyAKIyBUaGUgcHJlc3MgcmVsZWFzZSBzYXlzOgojICAoLi4uKSBhbnVuY2nzIHF1ZSBlbCBwcvN4aW1vIGRvbWluZ28gYSBsYXMgMDA6MDAgbG9zIHB1bnRhbm9zIGRlYmVy4W4KIyBhdHJhc2FyIHVuYSBob3JhIHN1cyByZWxvamVzLgojCiMgQSBwYXJ0aXIgZGUgZW50b25jZXMsIFNhbiBMdWlzIGVzdGFibGVjZXLhIGVsIGh1c28gaG9yYXJpbyBwcm9waW8gZGUKIyBsYSBQcm92aW5jaWEuIERlIGVzdGEgbWFuZXJhLCBkdXJhbnRlIGVsIHBlcmlvZG8gZGVsIGNhbGVuZGFyaW8gYW51YWwKIyAyMDA5LCBlbCBjYW1iaW8gaG9yYXJpbyBxdWVkYXLhIGNvbXByZW5kaWRvIGVudHJlIGxhcyAwMDowMCBkZWwgdGVyY2VyCiMgZG9taW5nbyBkZSBtYXJ6byB5IGxhcyAyNDowMCBkZWwgc2VndW5kbyBz4WJhZG8gZGUgb2N0dWJyZS4KIyBRdWljayZkaXJ0eSB0cmFuc2xhdGlvbgojICguLi4pIGFubm91bmNlZCB0aGF0IG5leHQgU3VuZGF5LCBhdCAwMDowMCwgUHVudGFub3MgKHRoZSBTYW4gTHVpcwojIGluaGFiaXRhbnRzKSB3aWxsIGhhdmUgdG8gdHVybiBiYWNrIG9uZSBob3VyIHRoZWlyIGNsb2NrcwojCiMgU2luY2UgdGhlbiwgU2FuIEx1aXMgd2lsbCBlc3RhYmxpc2ggaXRzIG93biBQcm92aW5jZSB0aW1lem9uZS4gVGh1cywKIyBkdXJpbmcgMjAwOSwgdGhpcyB0aW1lem9uZSBjaGFuZ2Ugd2lsbCBydW4gZnJvbSAwMDowMCB0aGUgdGhpcmQgU3VuZGF5CiMgaW4gTWFyY2ggdW50aWwgMjQ6MDAgb2YgdGhlIHNlY29uZCBTYXR1cmRheSBpbiBPY3RvYmVyLgoKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDA5LTEwLTE2KToKIyAuLi50aGUgUHJvdmluY2Ugb2YgU2FuIEx1aXMgaXMgYSBjYXNlIGluIGl0c2VsZi4KIwojIFRoZSBMYXcgYXQKIyA8YSBocmVmPSJodHRwOi8vd3d3LmRpcHV0YWRvc3Nhbmx1aXMuZ292LmFyL2RpcHV0YWRvc2FzcC9wYWdpbmFzL3Zlck5vcm1hLmFzcD9Ob3JtYUlEPTI3Nj4iCiMgaHR0cDovL3d3dy5kaXB1dGFkb3NzYW5sdWlzLmdvdi5hci9kaXB1dGFkb3Nhc3AvcGFnaW5hcy92ZXJOb3JtYS5hc3A/Tm9ybWFJRD0yNzYKIyA8L2E+CiMgaXMgYW1iaWd1b3VzIGJlY2F1c2UgZXN0YWJsaXNoZXMgYSBjYWxlbmRhciBmcm9tIHRoZSAybmQgU3VuZGF5IGluCiMgT2N0b2JlciBhdCAwOjAwIHRocnUgdGhlIDJuZCBTYXR1cmRheSBpbiBNYXJjaCBhdCAyNDowMCBhbmQgdGhlCiMgY29tcGxlbWVudCBvZiB0aGF0IHN0YXJ0aW5nIG9uIHRoZSAybmQgU3VuZGF5IG9mIE1hcmNoIGF0IDA6MDAgYW5kCiMgZW5kaW5nIG9uIHRoZSAybmQgU2F0dXJkYXkgb2YgTWFyY2ggYXQgMjQ6MDAuCiMKIyBUaGlzIGNsZWFybHkgYnJlYWtzIGV2ZXJ5IHRpbWUgdGhlIDFzdCBvZiBNYXJjaCBvciBPY3RvYmVyIGlzIGEgU3VuZGF5LgojCiMgSU1ITywgdGhlICJzcGlyaXQgb2YgdGhlIExhdyIgaXMgdG8gbWFrZSB0aGUgY2hhbmdlcyBhdCAwOjAwIG9uIHRoZSAybmQKIyBTdW5kYXkgb2YgT2N0b2JlciBhbmQgTWFyY2guCiMKIyBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjaGFuZ2VzIGluIHRoZSByZXN0IG9mIHRoZSBQcm92aW5jZXMgdGhhdCBkaWQKIyBjaGFuZ2UgaW4gMjAwNy8yMDA4LCB3ZXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZSBGZWRlcmFsIExhdyBhbmQgRGVjcmVlcwojIHRoYXQgZGlkIHNvIG9uIHRoZSAzcmQgU3VuZGF5IG9mIE9jdG9iZXIgYW5kIE1hcmNoLgojCiMgSW4gZmFjdCwgU2FuIEx1aXMgYWN0dWFsbHkgc3dpdGNoZWQgZnJvbSBVVEMtNCB0byBVVEMtMyBsYXN0IFN1bmRheQojIChPY3RvYmVyIDExdGgpIGF0IDA6MDAuCiMKIyBTbyBJIGd1ZXNzIGEgbmV3IHNldCBvZiBydWxlcywgYmVzaWRlcyAiQXJnIiwgbXVzdCBiZSBtYWRlIGFuZCB0aGUgbGFzdAojIEFtZXJpY2EvQXJnZW50aW5hL1Nhbl9MdWlzIGVudHJpZXMgc2hvdWxkIGNoYW5nZSB0byB1c2UgdGhlc2UuLi4KIwojIEknbSBlbmNsb3NpbmcgYSBwYXRjaCB0aGF0IGRvZXMgd2hhdCBJIHNheS4uLiByZWdyZXRmdWxseSwgdGhlIFNhbiBMdWlzCiMgdGltZXpvbmUgbXVzdCBiZSBjYWxsZWQgIldBUlQvV0FSU1QiIGV2ZW4gd2hlbiBtb3N0IG9mIHRoZSB0aW1lIChsaWtlLAojIHJpZ2h0IG5vdykgV0FSU1QgPT0gQVJULi4uIHRoYXQgaXMsIHNpbmNlIGxhc3QgU3VuZGF5LCBhbGwgdGhlIGNvdW50cnkKIyBpcyB1c2luZyBVVEMtMywgYnV0IGluIG15IHBhdGNoLCBTYW4gTHVpcyBjYWxscyBpdCAiV0FSU1QiIGFuZCB0aGUgcmVzdAojIG9mIHRoZSBjb3VudHJ5IGNhbGxzIGl0ICJBUlQiLgojIC4uLgoKIyBGcm9tIEFsZXhhbmRlciBLcml2ZW55c2hldiAoMjAxMC0wNC0wOSk6CiMgQWNjb3JkaW5nIHRvIG5ld3MgcmVwb3J0cyBmcm9tIEVsIERpYXJpbyBkZSBsYSBSZXB1YmxpY2EgUHJvdmluY2UgU2FuCiMgTHVpcywgQXJnZW50aW5hIChzdGFuZGFyZCB0aW1lIFVUQy0wNCkgd2lsbCBrZWVwIERheWxpZ2h0IFNhdmluZyBUaW1lCiMgYWZ0ZXIgQXByaWwgMTEsIDIwMTAtLXdpbGwgY29udGludWUgdG8gaGF2ZSBzYW1lIHRpbWUgYXMgcmVzdCBvZgojIEFyZ2VudGluYSAoVVRDLTMpIChubyBEU1QpLgojCiMgQ29uZmlybWFyb24gbGEgcHImb2FjdXRlO3Jyb2dhIGRlbCBodXNvIGhvcmFyaW8gZGUgdmVyYW5vIChTcGFuaXNoKQojIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWxkaWFyaW9kZWxhcmVwdWJsaWNhLmNvbS9pbmRleC5waHA/b3B0aW9uPWNvbV9jb250ZW50JnRhc2s9dmlldyZpZD0yOTM4MyZJdGVtaWQ9OSI+CiMgaHR0cDovL3d3dy5lbGRpYXJpb2RlbGFyZXB1YmxpY2EuY29tL2luZGV4LnBocD9vcHRpb249Y29tX2NvbnRlbnQmdGFzaz12aWV3JmlkPTI5MzgzJkl0ZW1pZD05CiMgPC9hPgojIG9yIChzb21lIEVuZ2xpc2ggdHJhbnNsYXRpb24pOgojIDxhIGhyZWY9Imh0dHA6Ly93d3cud29ybGR0aW1lem9uZS5jb20vZHN0X25ld3MvZHN0X25ld3NfYXJnZW50aW5hMDguaHRtbCI+CiMgaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9kc3RfbmV3cy9kc3RfbmV3c19hcmdlbnRpbmEwOC5odG1sCiMgPC9hPgoKIyBGcm9tIE1hcmlhbm8gQWJzYXR6ICgyMDEwLTA0LTEyKToKIyB5ZXMuLi5JIGNhbiBjb25maXJtIHRoaXMuLi5hbmQgZ2l2ZW4gdGhhdCBTYW4gTHVpcyBrZWVwcyBjYWxsaW5nCiMgVVRDLTAzOjAwICJzdW1tZXIgdGltZSIsIHdlIHNob3VsZCd0IGp1c3QgbGV0IFNhbiBMdWlzIGdvIGJhY2sgdG8gIkFyZyIKIyBydWxlcy4uLlNhbiBMdWlzIGlzIHN0aWxsIHVzaW5nICJXZXN0ZXJuIEFSZ2VudGluYSBUaW1lIiBhbmQgaXQgZ290CiMgc3R1Y2sgb24gU3VtbWVyIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBldmVuIHRob3VnaCB0aGUgc3VtbWVyIGlzIG92ZXIuCgojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiMKIyBCdWVub3MgQWlyZXMgKEJBKSwgQ2FwaXRhbCBGZWRlcmFsIChDRiksClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzIC0zOjUzOjQ4IC0gTE1UIDE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5ICMgQ29yZG9iYSBNZWFuIFRpbWUKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBDb3Jkb2JhIChDQiksIFNhbnRhIEZlIChTRiksIEVudHJlIFJpb3MgKEVSKSwgQ29ycmllbnRlcyAoQ04pLCBNaXNpb25lcyAoTU4pLAojIENoYWNvIChDQyksIEZvcm1vc2EgKEZNKSwgU2FudGlhZ28gZGVsIEVzdGVybyAoU0UpCiMKIyBTaGFua3MgJiBQb3R0ZW5nZXIgYWxzbyBtYWtlIHRoZSBmb2xsb3dpbmcgY2xhaW1zLCB3aGljaCB3ZSBoYXZlbid0IHZlcmlmaWVkOgojIC0gRm9ybW9zYSBzd2l0Y2hlZCB0byAtMzowMCBvbiAxOTkxLTAxLTA3LgojIC0gTWlzaW9uZXMgc3dpdGNoZWQgdG8gLTM6MDAgb24gMTk5MC0xMi0yOS4KIyAtIENoYWNvIHN3aXRjaGVkIHRvIC0zOjAwIG9uIDE5OTEtMDEtMDQuCiMgLSBTYW50aWFnbyBkZWwgRXN0ZXJvIHN3aXRjaGVkIHRvIC00OjAwIG9uIDE5OTEtMDQtMDEsCiMgICB0aGVuIHRvIC0zOjAwIG9uIDE5OTEtMDQtMjYuCiMKWm9uZSBBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhIC00OjE2OjQ4IC0gTE1UCTE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5CgkJCS00OjAwCS0JQVJUCTE5MzAgRGVjCgkJCS00OjAwCUFyZwlBUiVzVAkxOTY5IE9jdCAgNQoJCQktMzowMAlBcmcJQVIlc1QJMTk5MSBNYXIgIDMKCQkJLTQ6MDAJLQlXQVJUCTE5OTEgT2N0IDIwCgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBTYWx0YSAoU0EpLCBMYSBQYW1wYSAoTFApLCBOZXVxdWVuIChOUSksIFJpbyBOZWdybyAoUk4pClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvU2FsdGEgLTQ6MjE6NDAgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIFR1Y3VtYW4gKFRNKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW4gLTQ6MjA6NTIgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IEp1biAgMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdW4gMTMKCQkJLTM6MDAJQXJnCUFSJXNUCiMKIyBMYSBSaW9qYSAoTFIpClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvTGFfUmlvamEgLTQ6Mjc6MjQgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBNYXkgIDcKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IEp1biAgMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdW4gMjAKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBTYW4gSnVhbiAoU0opClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvU2FuX0p1YW4gLTQ6MzQ6MDQgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBNYXkgIDcKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IE1heSAzMQoJCQktNDowMAktCVdBUlQJMjAwNCBKdWwgMjUKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBKdWp1eSAoSlkpClpvbmUgQW1lcmljYS9BcmdlbnRpbmEvSnVqdXkgLTQ6MjE6MTIgLQlMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkwIE1hciAgNAoJCQktNDowMAktCVdBUlQJMTk5MCBPY3QgMjgKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkxIE1hciAxNwoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgIDYKCQkJLTM6MDAJMTowMAlBUlNUCTE5OTIKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIENhdGFtYXJjYSAoQ1QpLCBDaHVidXQgKENIKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYSAtNDoyMzowOCAtIExNVAkxODk0IE9jdCAzMQoJCQktNDoxNjo0OCAtCUNNVAkxOTIwIE1heQoJCQktNDowMAktCUFSVAkxOTMwIERlYwoJCQktNDowMAlBcmcJQVIlc1QJMTk2OSBPY3QgIDUKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTEgTWFyICAzCgkJCS00OjAwCS0JV0FSVAkxOTkxIE9jdCAyMAoJCQktMzowMAlBcmcJQVIlc1QJMTk5OSBPY3QgIDMKCQkJLTQ6MDAJQXJnCUFSJXNUCTIwMDAgTWFyICAzCgkJCS0zOjAwCS0JQVJUCTIwMDQgSnVuICAxCgkJCS00OjAwCS0JV0FSVAkyMDA0IEp1biAyMAoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIE1lbmRvemEgKE1aKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL01lbmRvemEgLTQ6MzU6MTYgLSBMTVQJMTg5NCBPY3QgMzEKCQkJLTQ6MTY6NDggLQlDTVQJMTkyMCBNYXkKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTkwIE1hciAgNAoJCQktNDowMAktCVdBUlQJMTk5MCBPY3QgMTUKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkxIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MSBPY3QgMTUKCQkJLTQ6MDAJMTowMAlXQVJTVAkxOTkyIE1hciAgMQoJCQktNDowMAktCVdBUlQJMTk5MiBPY3QgMTgKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTkgT2N0ICAzCgkJCS00OjAwCUFyZwlBUiVzVAkyMDAwIE1hciAgMwoJCQktMzowMAktCUFSVAkyMDA0IE1heSAyMwoJCQktNDowMAktCVdBUlQJMjAwNCBTZXAgMjYKCQkJLTM6MDAJQXJnCUFSJXNUCTIwMDggT2N0IDE4CgkJCS0zOjAwCS0JQVJUCiMKIyBTYW4gTHVpcyAoU0wpCgpSdWxlCVNhbkx1aXMJMjAwOAkyMDA5CS0JTWFyCVN1bj49OAkwOjAwCTAJLQpSdWxlCVNhbkx1aXMJMjAwNwkyMDA5CS0JT2N0CVN1bj49OAkwOjAwCTE6MDAJUwoKWm9uZSBBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpcyAtNDoyNToyNCAtIExNVAkxODk0IE9jdCAzMQoJCQktNDoxNjo0OCAtCUNNVAkxOTIwIE1heQoJCQktNDowMAktCUFSVAkxOTMwIERlYwoJCQktNDowMAlBcmcJQVIlc1QJMTk2OSBPY3QgIDUKCQkJLTM6MDAJQXJnCUFSJXNUCTE5OTAKCQkJLTM6MDAJMTowMAlBUlNUCTE5OTAgTWFyIDE0CgkJCS00OjAwCS0JV0FSVAkxOTkwIE9jdCAxNQoJCQktNDowMAkxOjAwCVdBUlNUCTE5OTEgTWFyICAxCgkJCS00OjAwCS0JV0FSVAkxOTkxIEp1biAgMQoJCQktMzowMAktCUFSVAkxOTk5IE9jdCAgMwoJCQktNDowMAkxOjAwCVdBUlNUCTIwMDAgTWFyICAzCgkJCS0zOjAwCS0JQVJUCTIwMDQgTWF5IDMxCgkJCS00OjAwCS0JV0FSVAkyMDA0IEp1bCAyNQoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBKYW4gMjEKCQkJLTQ6MDAJU2FuTHVpcwlXQVIlc1QKIwojIFNhbnRhIENydXogKFNDKQpab25lIEFtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvcyAtNDozNjo1MiAtIExNVCAxODk0IE9jdCAzMQoJCQktNDoxNjo0OCAtCUNNVAkxOTIwIE1heSAjIENvcmRvYmEgTWVhbiBUaW1lCgkJCS00OjAwCS0JQVJUCTE5MzAgRGVjCgkJCS00OjAwCUFyZwlBUiVzVAkxOTY5IE9jdCAgNQoJCQktMzowMAlBcmcJQVIlc1QJMTk5OSBPY3QgIDMKCQkJLTQ6MDAJQXJnCUFSJXNUCTIwMDAgTWFyICAzCgkJCS0zOjAwCS0JQVJUCTIwMDQgSnVuICAxCgkJCS00OjAwCS0JV0FSVAkyMDA0IEp1biAyMAoJCQktMzowMAlBcmcJQVIlc1QJMjAwOCBPY3QgMTgKCQkJLTM6MDAJLQlBUlQKIwojIFRpZXJyYSBkZWwgRnVlZ28sIEFudGFydGlkYSBlIElzbGFzIGRlbCBBdGxhbnRpY28gU3VyIChURikKWm9uZSBBbWVyaWNhL0FyZ2VudGluYS9Vc2h1YWlhIC00OjMzOjEyIC0gTE1UIDE4OTQgT2N0IDMxCgkJCS00OjE2OjQ4IC0JQ01UCTE5MjAgTWF5ICMgQ29yZG9iYSBNZWFuIFRpbWUKCQkJLTQ6MDAJLQlBUlQJMTkzMCBEZWMKCQkJLTQ6MDAJQXJnCUFSJXNUCTE5NjkgT2N0ICA1CgkJCS0zOjAwCUFyZwlBUiVzVAkxOTk5IE9jdCAgMwoJCQktNDowMAlBcmcJQVIlc1QJMjAwMCBNYXIgIDMKCQkJLTM6MDAJLQlBUlQJMjAwNCBNYXkgMzAKCQkJLTQ6MDAJLQlXQVJUCTIwMDQgSnVuIDIwCgkJCS0zOjAwCUFyZwlBUiVzVAkyMDA4IE9jdCAxOAoJCQktMzowMAktCUFSVAoKIyBBcnViYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9BcnViYQktNDo0MDoyNCAtCUxNVAkxOTEyIEZlYiAxMgkjIE9yYW5qZXN0YWQKCQkJLTQ6MzAJLQlBTlQJMTk2NSAjIE5ldGhlcmxhbmRzIEFudGlsbGVzIFRpbWUKCQkJLTQ6MDAJLQlBU1QKCiMgQm9saXZpYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9MYV9QYXoJLTQ6MzI6MzYgLQlMTVQJMTg5MAoJCQktNDozMjozNiAtCUNNVAkxOTMxIE9jdCAxNSAjIENhbGFtYXJjYSBNVAoJCQktNDozMjozNiAxOjAwCUJPU1QJMTkzMiBNYXIgMjEgIyBCb2xpdmlhIFNUCgkJCS00OjAwCS0JQk9UCSMgQm9saXZpYSBUaW1lCgojIEJyYXppbAoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgxOTkzLTExLTE4KToKIyBUaGUgbWF5b3Igb2YgUmlvIHJlY2VudGx5IGF0dGVtcHRlZCB0byBjaGFuZ2UgdGhlIHRpbWUgem9uZSBydWxlcwojIGp1c3QgaW4gaGlzIGNpdHksIGluIG9yZGVyIHRvIGxlYXZlIG1vcmUgc3VtbWVyIHRpbWUgZm9yIHRoZSB0b3VyaXN0IHRyYWRlLgojIFRoZSBydWxlIGNoYW5nZSBsYXN0ZWQgb25seSBwYXJ0IG9mIHRoZSBkYXk7CiMgdGhlIGZlZGVyYWwgZ292ZXJubWVudCByZWZ1c2VkIHRvIGZvbGxvdyB0aGUgY2l0eSdzIHJ1bGVzLCBhbmQgYnVzaW5lc3MKIyB3YXMgaW4gYSBjaGFvcywgc28gdGhlIG1heW9yIGJhY2tlZCBkb3duIHRoYXQgYWZ0ZXJub29uLgoKIyBGcm9tIElBVEEgU1NJTSAoMTk5Ni0wMik6CiMgX09ubHlfIHRoZSBmb2xsb3dpbmcgc3RhdGVzIGluIEJSMSBvYnNlcnZlIERTVDogUmlvIEdyYW5kZSBkbyBTdWwgKFJTKSwKIyBTYW50YSBDYXRhcmluYSAoU0MpLCBQYXJhbmEgKFBSKSwgU2FvIFBhdWxvIChTUCksIFJpbyBkZSBKYW5laXJvIChSSiksCiMgRXNwaXJpdG8gU2FudG8gKEVTKSwgTWluYXMgR2VyYWlzIChNRyksIEJhaGlhIChCQSksIEdvaWFzIChHTyksCiMgRGlzdHJpdG8gRmVkZXJhbCAoREYpLCBUb2NhbnRpbnMgKFRPKSwgU2VyZ2lwZSBbU0VdIGFuZCBBbGFnb2FzIFtBTF0uCiMgW1RoZSBsYXN0IHRocmVlIHN0YXRlcyBhcmUgbmV3IHRvIHRoaXMgaXNzdWUgb2YgdGhlIElBVEEgU1NJTS5dCgojIEZyb20gR3dpbGxpbSBMYXcgKDE5OTYtMTAtMDcpOgojIEdlb2dyYXBoeSwgaGlzdG9yeSAoVG9jYW50aW5zIHdhcyBwYXJ0IG9mIEdvaWFzIHVudGlsIDE5ODkpLCBhbmQgb3RoZXIKIyBzb3VyY2VzIG9mIHRpbWUgem9uZSBpbmZvcm1hdGlvbiBsZWFkIG1lIHRvIGJlbGlldmUgdGhhdCBBTCwgU0UsIGFuZCBUTyB3ZXJlCiMgYWx3YXlzIGluIEJSMSwgYW5kIHNvIHRoZSBvbmx5IGNoYW5nZSB3YXMgd2hldGhlciBvciBub3QgdGhleSBvYnNlcnZlZCBEU1QuLi4uCiMgVGhlIGVhcmxpZXN0IGlzc3VlIG9mIHRoZSBTU0lNIEkgaGF2ZSBpcyAyLzkxLiAgRWFjaCBpc3N1ZSBmcm9tIHRoZW4gdW50aWwKIyA5Lzk1IHNheXMgdGhhdCBEU1QgaXMgb2JzZXJ2ZWQgb25seSBpbiB0aGUgdGVuIHN0YXRlcyBJIHF1b3RlZCBmcm9tIDkvOTUsCiMgYWxvbmcgd2l0aCBNYXRvIEdyb3NzbyAoTVQpIGFuZCBNYXRvIEdyb3NzbyBkbyBTdWwgKE1TKSwgd2hpY2ggYXJlIGluIEJSMgojIChVVEMtNCkuLi4uICBUaGUgb3RoZXIgdHdvIHRpbWUgem9uZXMgZ2l2ZW4gZm9yIEJyYXppbCBhcmUgQlIzLCB3aGljaCBpcwojIFVUQy01LCBubyBEU1QsIGFuZCBhcHBsaWVzIG9ubHkgaW4gdGhlIHN0YXRlIG9mIEFjcmUgKEFDKTsgYW5kIEJSNCwgd2hpY2ggaXMKIyBVVEMtMiwgYW5kIGFwcGxpZXMgdG8gRmVybmFuZG8gZGUgTm9yb25oYSAoZm9ybWVybHkgRk4sIGJ1dCBJIGJlbGlldmUgaXQncwojIGJlY29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSBvZiBQZXJuYW1idWNvKS4gIFRoZSBib3VuZGFyeSBiZXR3ZWVuIEJSMSBhbmQgQlIyCiMgaGFzIG5ldmVyIGJlZW4gY2xlYXJseSBzdGF0ZWQuICBUaGV5J3ZlIHNpbXBseSBiZWVuIGNhbGxlZCBFYXN0IGFuZCBXZXN0LgojIEhvd2V2ZXIsIHNvbWUgY29uY2x1c2lvbnMgY2FuIGJlIGRyYXduIGZyb20gYW5vdGhlciBJQVRBIG1hbnVhbDogdGhlIEFpcmxpbmUKIyBDb2RpbmcgRGlyZWN0b3J5LCB3aGljaCBsaXN0cyBjbG9zZSB0byA0MDAgYWlycG9ydHMgaW4gQnJhemlsLiAgRm9yIGVhY2gKIyBhaXJwb3J0IGl0IGdpdmVzIGEgdGltZSB6b25lIHdoaWNoIGlzIGNvZGVkIHRvIHRoZSBTU0lNLiAgRnJvbSB0aGF0CiMgaW5mb3JtYXRpb24sIEknbSBsZWQgdG8gY29uY2x1ZGUgdGhhdCB0aGUgc3RhdGVzIG9mIEFtYXBhIChBUCksIENlYXJhIChDRSksCiMgTWFyYW5oYW8gKE1BKSwgUGFyYWliYSAoUFIpLCBQZXJuYW1idWNvIChQRSksIFBpYXVpIChQSSksIGFuZCBSaW8gR3JhbmRlIGRvCiMgTm9ydGUgKFJOKSwgYW5kIHRoZSBlYXN0ZXJuIHBhcnQgb2YgUGFyYSAoUEEpIGFyZSBhbGwgaW4gQlIxIHdpdGhvdXQgRFNULgoKIyBGcm9tIE1hcmNvcyBUYWRldSAoMTk5OC0wOS0yNyk6CiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvdmVyYW8xLmh0bWwiPgojIEJyYXppbGlhbiBvZmZpY2lhbCBwYWdlCiMgPC9hPgoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCAoMjAwMC0xMS0wMyk6CiMgW0ZvciBhbiBvZmZpY2lhbCBsaXN0IG9mIHdoaWNoIHJlZ2lvbnMgaW4gQnJhemlsIHVzZSB3aGljaCB0aW1lIHpvbmVzLCBzZWU6XQojIGh0dHA6Ly9wY2RzaDAxLm9uLmJyL0Z1c2JyLmh0bQojIGh0dHA6Ly9wY2RzaDAxLm9uLmJyL0Z1c2JyaHYuaHRtCgojIEZyb20gQ2Vsc28gRG9yaWEgdmlhIERhdmlkIE1hZGVvICgyMDAyLTEwLTA5KToKIyBUaGUgcmVhc29uIGZvciB0aGUgZGVsYXkgdGhpcyB5ZWFyIGhhcyB0byBkbyB3aXRoIGVsZWN0aW9ucyBpbiBCcmF6aWwuCiMKIyBVbmxpa2UgaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIGVsZWN0aW9ucyBpbiBCcmF6aWwgYXJlIDEwMCUgY29tcHV0ZXJpemVkIGFuZAojIHRoZSByZXN1bHRzIGFyZSBrbm93biBhbG1vc3QgaW1tZWRpYXRlbHkuICBZZXN0ZXJkYXksIGl0IHdhcyB0aGUgZmlyc3QKIyByb3VuZCBvZiB0aGUgZWxlY3Rpb25zIHdoZW4gMTE1IG1pbGxpb24gQnJhemlsaWFucyB2b3RlZCBmb3IgUHJlc2lkZW50LAojIEdvdmVybm9yLCBTZW5hdG9ycywgRmVkZXJhbCBEZXB1dGllcywgYW5kIFN0YXRlIERlcHV0aWVzLiAgTm9ib2R5IGlzCiMgY291bnRpbmcgKG9yIHJlLWNvdW50aW5nKSB2b3RlcyBhbnltb3JlIGFuZCB3ZSBrbm93IHRoZXJlIHdpbGwgYmUgYSBzZWNvbmQKIyByb3VuZCBmb3IgdGhlIFByZXNpZGVuY3kgYW5kIGFsc28gZm9yIHNvbWUgR292ZXJub3JzLiAgVGhlIDJuZCByb3VuZCB3aWxsCiMgdGFrZSBwbGFjZSBvbiBPY3RvYmVyIDI3dGguCiMKIyBUaGUgcmVhc29uIHdoeSB0aGUgRFNUIHdpbGwgb25seSBiZWdpbiBOb3ZlbWJlciAzcmQgaXMgdGhhdCB0aGUgdGhvdXNhbmRzCiMgb2YgZWxlY3RvcmFsIG1hY2hpbmVzIHVzZWQgY2Fubm90IGhhdmUgdGhlaXIgdGltZSBjaGFuZ2VkLCBhbmQgc2luY2UgdGhlCiMgQ29uc3RpdHV0aW9uIHNheXMgdGhlIGVsZWN0aW9ucyBtdXN0IGJlZ2luIGF0IDg6MDAgQU0gYW5kIGVuZCBhdCA1OjAwIFBNLAojIHRoZSBHb3Zlcm5tZW50IGRlY2lkZWQgdG8gcG9zdHBvbmUgRFNULCBpbnN0ZWFkIG9mIGNoYW5naW5nIHRoZSBDb25zdGl0dXRpb24KIyAobWF5YmUsIGZvciB0aGUgbmV4dCBlbGVjdGlvbnMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBjbG9jaykuLi4KCiMgRnJvbSBSb2RyaWdvIFNldmVybyAoMjAwNC0xMC0wNCk6CiMgSXQncyBqdXN0IHRoZSBiaWFubnVhbCBjaGFuZ2UgbWFkZSBuZWNlc3NhcnkgYnkgdGhlIG11Y2ggaHlwZWQsIHN1cHBvc2VkbHkKIyBtb2Rlcm4gQnJhemlsaWFuIGVsZXRyb25pYyB2b3RpbmcgbWFjaGluZXMgd2hpY2gsIGFwcGFyZW50bHksIGNhbid0IGRlYWwKIyB3aXRoIGEgdGltZSBjaGFuZ2UgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgcm91bmRzIG9mIHRoZSBlbGVjdGlvbnMuCgojIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDA3LTA5LTIwKToKIyBCcmF6aWwgd2lsbCBzdGFydCBEU1Qgb24gMjAwNy0xMC0xNCAwMDowMCBhbmQgZW5kIG9uIDIwMDgtMDItMTcgMDA6MDA6CiMgaHR0cDovL3d3dy5tbWUuZ292LmJyL3NpdGUvbmV3cy9kZXRhaWwuZG87anNlc3Npb25pZD1CQkEwNjgxMUFGQ0FBQzI4RjAyODUyMTA5MTM1MTNEQT9uZXdzSWQ9MTM5NzUKCiMgRnJvbSBQYXVsIFNjaHVsemUgKDIwMDgtMDYtMjQpOgojIC4uLmJ5IGxhdyBudW1iZXIgMTEuNjYyIG9mIEFwcmlsIDI0LCAyMDA4IChwdWJsaXNoZWQgaW4gdGhlICJEaWFyaW8KIyBPZmljaWFsIGRhIFVuaWFvIi4uLikgaW4gQnJhemlsIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSB0aW1lem9uZXMsCiMgZWZmZWN0aXZlIHRvZGF5ICgwMDowMGFtIGF0IEp1bmUgMjQsIDIwMDgpIGFzIGZvbGxvd3M6CiMKIyBhKSBUaGUgdGltZXpvbmUgVVRDKzUgaXMgZVt4XXRpbmd1aXNoZWQsIHdpdGggYWxsIHRoZSBBY3JlIHN0YXRlIGFuZCB0aGUKIyBwYXJ0IG9mIHRoZSBBbWF6b25hcyBzdGF0ZSB0aGF0IGhhZCB0aGlzIHRpbWV6b25lIG5vdyBiZWluZyBwdXQgdG8gdGhlCiMgdGltZXpvbmUgVVRDKzQKIyBiKSBUaGUgd2hvbGUgUGFyYSBzdGF0ZSBub3cgaXMgcHV0IGF0IHRpbWV6b25lIFVUQyszLCBpbnN0ZWFkIG9mIGp1c3QKIyBwYXJ0IG9mIGl0LCBhcyB3YXMgYmVmb3JlLgojCiMgVGhpcyBjaGFuZ2UgZm9sbG93cyBhIHByb3Bvc2FsIG9mIHNlbmF0b3IgVGlhbyBWaWFuYSBvZiBBY3JlIHN0YXRlLCB0aGF0CiMgcHJvcG9zZWQgaXQgZHVlIHRvIGNvbmNlcm5zIGFib3V0IG9wZW4gdGVsZXZpc2lvbiBjaGFubmVscyBkaXNwbGF5aW5nCiMgcHJvZ3JhbXMgaW5hcHByb3ByaWF0ZSB0byB5b3V0aHMgaW4gdGhlIHN0YXRlcyB0aGF0IGhhZCB0aGUgdGltZXpvbmUKIyBVVEMrNSB0b28gZWFybHkgaW4gdGhlIG5pZ2h0LiBJbiB0aGUgb2NjYXNpb24sIHNvbWUgbW9yZSBjb3JyZWN0aW9ucwojIHdlcmUgcHJvcG9zZWQsIHRyeWluZyB0byB1bmlmeSB0aGUgdGltZXpvbmVzIG9mIGFueSBnaXZlbiBzdGF0ZS4gVGhpcwojIGNoYW5nZSBtb2RpZmllcyB0aW1lem9uZSBydWxlcyBkZWZpbmVkIGluIGRlY3JlZSAyLjc4NCBvZiAxOCBKdW5lLAojIDE5MTMuCgojIEZyb20gUm9kcmlnbyBTZXZlcm8gKDIwMDgtMDYtMjQpOgojIEp1c3QgY29ycmVjdGluZyB0aGUgVVJMOgojIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmluLmdvdi5ici9pbXByZW5zYS92aXN1YWxpemEvaW5kZXguanNwP2pvcm5hbD1kbyZzZWNhbz0xJnBhZ2luYT0xJmRhdGE9MjUvMDQvMjAwOCI+CiMgaHR0cHM6Ly93d3cuaW4uZ292LmJyL2ltcHJlbnNhL3Zpc3VhbGl6YS9pbmRleC5qc3A/am9ybmFsPWRvJnNlY2FvPTEmcGFnaW5hPTEmZGF0YT0yNS8wNC8yMDA4CiMgPC9hPgojCiMgQXMgYSByZXN1bHQgb2YgdGhlIGFib3ZlIERlY3JlZSBJIGJlbGlldmUgdGhlIEFtZXJpY2EvUmlvX0JyYW5jbwojIHRpbWV6b25lIHNoYWxsIGJlIG1vZGlmaWVkIGZyb20gVVRDLTUgdG8gVVRDLTQgYW5kIGEgbmV3IHRpbWV6b25lIHNoYWxsCiMgYmUgY3JlYXRlZCB0byByZXByZXNlbnQgdGhlIHRoZSB3ZXN0IHNpZGUgb2YgdGhlIFBhcmEgU3RhdGUuIEkKIyBzdWdnZXN0IHRoaXMgbmV3IHRpbWV6b25lIGJlIGNhbGxlZCBTYW50YXJlbSBhcyB0aGUgbW9zdAojIGltcG9ydGFudC9wb3B1bGF0ZWQgY2l0eSBpbiB0aGUgYWZmZWN0ZWQgYXJlYS4KIwojIFRoaXMgbmV3IHRpbWV6b25lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSaW9fQnJhbmNvIHRpbWV6b25lIHVwIHRvCiMgdGhlIDIwMDgvMDYvMjQgY2hhbmdlIHdoaWNoIHdvdWxkIGJlIHRvIFVUQy0zIGluc3RlYWQgb2YgVVRDLTQuCgojIEZyb20gQWxleCBLcml2ZW55c2hldiAoMjAwOC0wNi0yNCk6CiMgVGhpcyBpcyBhIHF1aWNrIHJlZmVyZW5jZSBwYWdlIGZvciBOZXcgYW5kIE9sZCBCcmF6aWwgVGltZSBab25lcyBtYXAuCiMgPGEgaHJlZj0iaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9icmF6aWwtdGltZS1uZXctb2xkLnBocCI+CiMgaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9icmF6aWwtdGltZS1uZXctb2xkLnBocAojIDwvYT4KIwojIC0gNCB0aW1lIHpvbmVzIHJlcGxhY2VkIGJ5IDMgdGltZSB6b25lcy1lbGltaW5hdGluZyB0aW1lIHpvbmUgVVRDLSAwNQojIChzdGF0ZSBBY3JlIGFuZCB0aGUgcGFydCBvZiB0aGUgQW1hem9uYXMgd2lsbCBiZSBVVEMvR01ULSAwNCkgLSB3ZXN0ZXJuCiMgcGFydCBvZiBQYXIgc3RhdGUgaXMgbW92aW5nIHRvIG9uZSB0aW1lem9uZSBVVEMtIDAzIChmcm9tIFVUQyAtMDQpLgoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDAyLTEwLTEwKToKIyBUaGUgb2ZmaWNpYWwgZGVjcmVlcyByZWZlcmVuY2VkIGJlbG93IGFyZSBtb3N0bHkgdGFrZW4gZnJvbQojIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWLmh0bWwiPgojIERlY3JldG9zIHNvYnJlIG8gSG9yYXJpbyBkZSBWZXJhbyBubyBCcmFzaWwKIyA8L2E+LgoKIyBGcm9tIFN0ZWZmZW4gVGhvcnNlbiAoMjAwOC0wOC0yOSk6CiMgQXMgYW5ub3VuY2VkIGJ5IHRoZSBnb3Zlcm5tZW50IGFuZCBtYW55IG5ld3NwYXBlcnMgaW4gQnJhemlsIGxhdGUKIyB5ZXN0ZXJkYXksIEJyYXppbCB3aWxsIHN0YXJ0IERTVCBvbiAyMDA4LTEwLTE5IChuZWVkIHRvIGNoYW5nZSBydWxlKSBhbmQKIyBpdCB3aWxsIGVuZCBvbiAyMDA5LTAyLTE1IChjdXJyZW50IHJ1bGUgZm9yIEJyYXppbCBpcyBmaW5lKS4gQmFzZWQgb24KIyBwYXN0IHllYXJzIGV4cGVyaWVuY2Ugd2l0aCB0aGUgZWxlY3Rpb25zLCB0aGVyZSB3YXMgYSBnb29kIGNoYW5jZSB0aGF0CiMgdGhlIHN0YXJ0IHdhcyBwb3N0cG9uZWQgdG8gTm92ZW1iZXIsIGJ1dCBpdCBkaWQgbm90IGhhcHBlbiB0aGlzIHllYXIuCiMKIyBJdCBoYXMgbm90IHlldCBiZWVuIHBvc3RlZCB0byBodHRwOi8vcGNkc2gwMS5vbi5ici9EZWNIVi5odG1sCiMKIyBBbiBvZmZpY2lhbCBwYWdlIGFib3V0IGl0OgojIDxhIGhyZWY9Imh0dHA6Ly93d3cubW1lLmdvdi5ici9zaXRlL25ld3MvZGV0YWlsLmRvP25ld3NJZD0xNjcyMiI+CiMgaHR0cDovL3d3dy5tbWUuZ292LmJyL3NpdGUvbmV3cy9kZXRhaWwuZG8/bmV3c0lkPTE2NzIyCiMgPC9hPgojIE5vdGUgdGhhdCB0aGlzIGxpbmsgZG9lcyBub3QgYWx3YXlzIHdvcmsgZGlyZWN0bHksIGJ1dCBtdXN0IGJlIGFjY2Vzc2VkCiMgYnkgZ29pbmcgdG8KIyA8YSBocmVmPSJodHRwOi8vd3d3Lm1tZS5nb3YuYnIvZmlyc3QiPgojIGh0dHA6Ly93d3cubW1lLmdvdi5ici9maXJzdAojIDwvYT4KIwojIE9uZSBleGFtcGxlIGxpbmsgdGhhdCB3b3JrcyBkaXJlY3RseToKIyA8YSBocmVmPSJodHRwOi8vam9ybmFsZS5jb20uYnIvaW5kZXgucGhwP29wdGlvbj1jb21fY29udGVudCZ0YXNrPXZpZXcmaWQ9MTM1MzAmSXRlbWlkPTU0Ij4KIyBodHRwOi8vam9ybmFsZS5jb20uYnIvaW5kZXgucGhwP29wdGlvbj1jb21fY29udGVudCZ0YXNrPXZpZXcmaWQ9MTM1MzAmSXRlbWlkPTU0CiMgKFBvcnR1Z3Vlc2UpCiMgPC9hPgojCiMgV2UgaGF2ZSBhIHdyaXR0ZW4gYSBzaG9ydCBhcnRpY2xlIGFib3V0IGl0IGFzIHdlbGw6CiMgPGEgaHJlZj0iaHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vbmV3cy90aW1lL2JyYXppbC1kc3QtMjAwOC0yMDA5Lmh0bWwiPgojIGh0dHA6Ly93d3cudGltZWFuZGRhdGUuY29tL25ld3MvdGltZS9icmF6aWwtZHN0LTIwMDgtMjAwOS5odG1sCiMgPC9hPgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYyMDQ2Ni5odG0iPjIwLDQ2NjwvYT4gKDE5MzEtMTAtMDEpCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWMjE4OTYuaHRtIj4yMSw4OTY8L2E+ICgxOTMyLTAxLTEwKQpSdWxlCUJyYXppbAkxOTMxCW9ubHkJLQlPY3QJIDMJMTE6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5MzIJMTkzMwktCUFwcgkgMQkgMDowMAkwCS0KUnVsZQlCcmF6aWwJMTkzMglvbmx5CS0JT2N0CSAzCSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjIzMTk1Lmh0bSI+MjMsMTk1PC9hPiAoMTkzMy0xMC0xMCkKIyByZXZva2VkIERTVC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYyNzQ5Ni5odG0iPjI3LDQ5NjwvYT4gKDE5NDktMTEtMjQpCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWMjc5OTguaHRtIj4yNyw5OTg8L2E+ICgxOTUwLTA0LTEzKQpSdWxlCUJyYXppbAkxOTQ5CTE5NTIJLQlEZWMJIDEJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5NTAJb25seQktCUFwcgkxNgkgMTowMAkwCS0KUnVsZQlCcmF6aWwJMTk1MQkxOTUyCS0JQXByCSAxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjMyMzA4Lmh0bSI+MzIsMzA4PC9hPiAoMTk1My0wMi0yNCkKUnVsZQlCcmF6aWwJMTk1Mwlvbmx5CS0JTWFyCSAxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjM0NzI0Lmh0bSI+MzQsNzI0PC9hPiAoMTk1My0xMS0zMCkKIyByZXZva2VkIERTVC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1MjcwMC5odG0iPjUyLDcwMDwvYT4gKDE5NjMtMTAtMTgpCiMgZXN0YWJsaXNoZWQgRFNUIGZyb20gMTk2My0xMC0yMyAwMDowMCB0byAxOTY0LTAyLTI5IDAwOjAwCiMgaW4gU1AsIFJKLCBHQiwgTUcsIEVTLCBkdWUgdG8gdGhlIHByb2xvbmdhdGlvbiBvZiB0aGUgZHJvdWdodC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1MzA3MS5odG0iPjUzLDA3MTwvYT4gKDE5NjMtMTItMDMpCiMgZXh0ZW5kZWQgdGhlIGFib3ZlIGRlY3JlZSB0byBhbGwgb2YgdGhlIG5hdGlvbmFsIHRlcnJpdG9yeSBvbiAxMi0wOS4KUnVsZQlCcmF6aWwJMTk2Mwlvbmx5CS0JRGVjCSA5CSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjUzNjA0Lmh0bSI+NTMsNjA0PC9hPiAoMTk2NC0wMi0yNSkKIyBleHRlbmRlZCBzdW1tZXIgdGltZSBieSBvbmUgZGF5IHRvIDE5NjQtMDMtMDEgMDA6MDAgKHN0YXJ0IG9mIHNjaG9vbCkuClJ1bGUJQnJhemlsCTE5NjQJb25seQktCU1hcgkgMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY1NTYzOS5odG0iPjU1LDYzOTwvYT4gKDE5NjUtMDEtMjcpClJ1bGUJQnJhemlsCTE5NjUJb25seQktCUphbgkzMQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk2NQlvbmx5CS0JTWFyCTMxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjU3MzAzLmh0bSI+NTcsMzAzPC9hPiAoMTk2NS0xMS0yMikKUnVsZQlCcmF6aWwJMTk2NQlvbmx5CS0JRGVjCSAxCSAwOjAwCTE6MDAJUwojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjU3ODQzLmh0bSI+NTcsODQzPC9hPiAoMTk2Ni0wMi0xOCkKUnVsZQlCcmF6aWwJMTk2NgkxOTY4CS0JTWFyCSAxCSAwOjAwCTAJLQpSdWxlCUJyYXppbAkxOTY2CTE5NjcJLQlOb3YJIDEJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWNjM0MjkuaHRtIj42Myw0Mjk8L2E+ICgxOTY4LTEwLTE1KQojIHJldm9rZWQgRFNULgojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjkxNjk4Lmh0bSI+OTEsNjk4PC9hPiAoMTk4NS0wOS0yNykKUnVsZQlCcmF6aWwJMTk4NQlvbmx5CS0JTm92CSAyCSAwOjAwCTE6MDAJUwojIERlY3JlZSA5MiwzMTAgKDE5ODYtMDEtMjEpCiMgRGVjcmVlIDkyLDQ2MyAoMTk4Ni0wMy0xMykKUnVsZQlCcmF6aWwJMTk4Nglvbmx5CS0JTWFyCTE1CSAwOjAwCTAJLQojIERlY3JlZSA5MywzMTYgKDE5ODYtMTAtMDEpClJ1bGUJQnJhemlsCTE5ODYJb25seQktCU9jdAkyNQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk4Nwlvbmx5CS0JRmViCTE0CSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjk0OTIyLmh0bSI+OTQsOTIyPC9hPiAoMTk4Ny0wOS0yMikKUnVsZQlCcmF6aWwJMTk4Nwlvbmx5CS0JT2N0CTI1CSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTg4CW9ubHkJLQlGZWIJIDcJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWOTY2NzYuaHRtIj45Niw2NzY8L2E+ICgxOTg4LTA5LTEyKQojIGV4Y2VwdCBmb3IgdGhlIHN0YXRlcyBvZiBBQywgQU0sIFBBLCBSUiwgUk8sIGFuZCBBUCAodGhlbiBhIHRlcnJpdG9yeSkKUnVsZQlCcmF6aWwJMTk4OAlvbmx5CS0JT2N0CTE2CSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTg5CW9ubHkJLQlKYW4JMjkJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0hWOTgwNzcuaHRtIj45OCwwNzc8L2E+ICgxOTg5LTA4LTIxKQojIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9ucwpSdWxlCUJyYXppbAkxOTg5CW9ubHkJLQlPY3QJMTUJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5OTAJb25seQktCUZlYgkxMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFY5OTUzMC5odG0iPjk5LDUzMDwvYT4gKDE5OTAtMDktMTcpCiMgYWRvcHRlZCBieSBSUywgU0MsIFBSLCBTUCwgUkosIEVTLCBNRywgR08sIE1TLCBERi4KIyBEZWNyZWUgOTksNjI5ICgxOTkwLTEwLTE5KSBhZGRzIEJBLCBNVC4KUnVsZQlCcmF6aWwJMTk5MAlvbmx5CS0JT2N0CTIxCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTkxCW9ubHkJLQlGZWIJMTcJIDA6MDAJMAktCiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxOTkxLmh0bSI+VW5udW1iZXJlZCBkZWNyZWU8L2E+ICgxOTkxLTA5LTI1KQojIGFkb3B0ZWQgYnkgUlMsIFNDLCBQUiwgU1AsIFJKLCBFUywgTUcsIEJBLCBHTywgTVQsIE1TLCBERi4KUnVsZQlCcmF6aWwJMTk5MQlvbmx5CS0JT2N0CTIwCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTkyCW9ubHkJLQlGZWIJIDkJIDA6MDAJMAktCiMgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxOTkyLmh0bSI+VW5udW1iZXJlZCBkZWNyZWU8L2E+ICgxOTkyLTEwLTE2KQojIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMuClJ1bGUJQnJhemlsCTE5OTIJb25seQktCU9jdAkyNQkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMTk5Mwlvbmx5CS0JSmFuCTMxCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjk0Mi5odG0iPjk0MjwvYT4gKDE5OTMtMDktMjgpCiMgYWRvcHRlZCBieSBzYW1lIHN0YXRlcywgcGx1cyBBTS4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxMjUyLmh0bSI+MSwyNTI8L2E+ICgxOTk0LTA5LTIyOwojIHdlYiBwYWdlIGNvcnJlY3RlZCAyMDA0LTAxLTA3KSBhZG9wdGVkIGJ5IHNhbWUgc3RhdGVzLCBtaW51cyBBTS4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvSFYxNjM2Lmh0bSI+MSw2MzY8L2E+ICgxOTk1LTA5LTE0KQojIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMsIHBsdXMgTVQgYW5kIFRPLgojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjE2NzQuaHRtIj4xLDY3NDwvYT4gKDE5OTUtMTAtMTMpCiMgYWRkcyBBTCwgU0UuClJ1bGUJQnJhemlsCTE5OTMJMTk5NQktCU9jdAlTdW4+PTExCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTk0CTE5OTUJLQlGZWIJU3VuPj0xNQkgMDowMAkwCS0KUnVsZQlCcmF6aWwJMTk5Nglvbmx5CS0JRmViCTExCSAwOjAwCTAJLQojIERlY3JlZSA8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9IVjIwMDAuaHRtIj4yLDAwMDwvYT4gKDE5OTYtMDktMDQpCiMgYWRvcHRlZCBieSBzYW1lIHN0YXRlcywgbWludXMgQUwsIFNFLgpSdWxlCUJyYXppbAkxOTk2CW9ubHkJLQlPY3QJIDYJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTE5OTcJb25seQktCUZlYgkxNgkgMDowMAkwCS0KIyBGcm9tIERhbmllbCBDLiBTb2JyYWwgKDE5OTgtMDItMTIpOgojIEluIDE5OTcsIHRoZSBEUyBiZWdhbiBvbiBPY3RvYmVyIDYuIFRoZSBzdGF0ZWQgcmVhc29uIHdhcyB0aGF0CiMgYmVjYXVzZSBpbnRlcm5hdGlvbmFsIHRlbGV2aXNpb24gbmV0d29ya3MgaWdub3JlZCBCcmF6aWwncyBwb2xpY3kgb24gRFMsCiMgdGhleSBib3VnaHQgdGhlIHdyb25nIHRpbWVzIG9uIHNhdGVsbGl0ZSBmb3IgY292ZXJhZ2Ugb2YgUG9wZSdzIHZpc2l0LgojIFRoaXMgeWVhciwgdGhlIGVuZGluZyBkYXRlIG9mIERTIHdhcyBwb3N0cG9uZWQgdG8gTWFyY2ggMQojIHRvIGhlbHAgZGVhbGluZyB3aXRoIHRoZSBzaG9ydGFnZXMgb2YgZWxlY3RyaWMgcG93ZXIuCiMKIyBEZWNyZWUgMiwzMTcgKDE5OTctMDktMDQpLCBhZG9wdGVkIGJ5IHNhbWUgc3RhdGVzLgpSdWxlCUJyYXppbAkxOTk3CW9ubHkJLQlPY3QJIDYJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYyNDk1LkpQRyI+Miw0OTU8L2E+CiMgKDE5OTgtMDItMTApClJ1bGUJQnJhemlsCTE5OTgJb25seQktCU1hcgkgMQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvZmlndXJhcy9Idjk4LmpwZyI+Miw3ODA8L2E+ICgxOTk4LTA5LTExKQojIGFkb3B0ZWQgYnkgdGhlIHNhbWUgc3RhdGVzIGFzIGJlZm9yZS4KUnVsZQlCcmF6aWwJMTk5OAlvbmx5CS0JT2N0CTExCSAwOjAwCTE6MDAJUwpSdWxlCUJyYXppbAkxOTk5CW9ubHkJLQlGZWIJMjEJIDA6MDAJMAktCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYzMTUwLmdpZiI+MywxNTA8L2E+CiMgKDE5OTktMDgtMjMpIGFkb3B0ZWQgYnkgc2FtZSBzdGF0ZXMuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWOTkuZ2lmIj4zLDE4ODwvYT4gKDE5OTktMDktMzApCiMgYWRkcyBTRSwgQUwsIFBCLCBQRSwgUk4sIENFLCBQSSwgTUEgYW5kIFJSLgpSdWxlCUJyYXppbAkxOTk5CW9ubHkJLQlPY3QJIDMJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTIwMDAJb25seQktCUZlYgkyNwkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvREVDMzU5Mi5odG0iPjMsNTkyPC9hPiAoMjAwMC0wOS0wNikKIyBhZG9wdGVkIGJ5IHRoZSBzYW1lIHN0YXRlcyBhcyBiZWZvcmUuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlYzM2MzAuanBnIj4zLDYzMDwvYT4gKDIwMDAtMTAtMTMpCiMgcmVwZWFscyBEU1QgaW4gUEUgYW5kIFJSLCBlZmZlY3RpdmUgMjAwMC0xMC0xNSAwMDowMC4KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvRGVjMzYzMi5qcGciPjMsNjMyPC9hPiAoMjAwMC0xMC0xNykKIyByZXBlYWxzIERTVCBpbiBTRSwgQUwsIFBCLCBSTiwgQ0UsIFBJIGFuZCBNQSwgZWZmZWN0aXZlIDIwMDAtMTAtMjIgMDA6MDAuCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL2ZpZ3VyYXMvSFYzOTE2LmdpZiI+Myw5MTY8L2E+CiMgKDIwMDEtMDktMTMpIHJlZXN0YWJsaXNoZXMgRFNUIGluIEFMLCBDRSwgTUEsIFBCLCBQRSwgUEksIFJOLCBTRS4KUnVsZQlCcmF6aWwJMjAwMAkyMDAxCS0JT2N0CVN1bj49OAkgMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMjAwMQkyMDA2CS0JRmViCVN1bj49MTUJIDA6MDAJMAktCiMgRGVjcmVlIDQsMzk5ICgyMDAyLTEwLTAxKSByZXBlYWxzIERTVCBpbiBBTCwgQ0UsIE1BLCBQQiwgUEUsIFBJLCBSTiwgU0UuCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5wcmVzaWRlbmNpYS5nb3YuYnIvQ0NJVklML2RlY3JldG8vMjAwMi9ENDM5OS5odG0iPjQsMzk5PC9hPgpSdWxlCUJyYXppbAkyMDAyCW9ubHkJLQlOb3YJIDMJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDQsODQ0ICgyMDAzLTA5LTI0OyBjb3JyZWN0ZWQgMjAwMy0wOS0yNikgcmVwZWFscyBEU1QgaW4gQkEsIE1ULCBUTy4KIyA8YSBocmVmPSJodHRwOi8vd3d3LnByZXNpZGVuY2lhLmdvdi5ici9DQ0lWSUwvZGVjcmV0by8yMDAzL0Q0ODQ0Lmh0bSI+NCw4NDQ8L2E+ClJ1bGUJQnJhemlsCTIwMDMJb25seQktCU9jdAkxOQkgMDowMAkxOjAwCVMKIyBEZWNyZWUgNSwyMjMgKDIwMDQtMTAtMDEpIHJlZXN0YWJsaXNoZXMgRFNUIGluIE1ULgojIDxhIGhyZWY9Imh0dHA6Ly93d3cucGxhbmFsdG8uZ292LmJyL2NjaXZpbF8wMy9fQXRvMjAwNC0yMDA2LzIwMDQvRGVjcmV0by9ENTIyMy5odG0iPjUsMjIzPC9hPgpSdWxlCUJyYXppbAkyMDA0CW9ubHkJLQlOb3YJIDIJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWNTUzOS5naWYiPjUsNTM5PC9hPiAoMjAwNS0wOS0xOSksCiMgYWRvcHRlZCBieSB0aGUgc2FtZSBzdGF0ZXMgYXMgYmVmb3JlLgpSdWxlCUJyYXppbAkyMDA1CW9ubHkJLQlPY3QJMTYJIDA6MDAJMTowMAlTCiMgRGVjcmVlIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyL0RlY0hWNTkyMC5naWYiPjUsOTIwPC9hPiAoMjAwNi0xMC0wMyksCiMgYWRvcHRlZCBieSB0aGUgc2FtZSBzdGF0ZXMgYXMgYmVmb3JlLgpSdWxlCUJyYXppbAkyMDA2CW9ubHkJLQlOb3YJIDUJIDA6MDAJMTowMAlTClJ1bGUJQnJhemlsCTIwMDcJb25seQktCUZlYgkyNQkgMDowMAkwCS0KIyBEZWNyZWUgPGEgaHJlZj0iaHR0cDovL3BjZHNoMDEub24uYnIvRGVjSFY2MjEyLmdpZiI+NiwyMTI8L2E+ICgyMDA3LTA5LTI2KSwKIyBhZG9wdGVkIGJ5IHRoZSBzYW1lIHN0YXRlcyBhcyBiZWZvcmUuClJ1bGUJQnJhemlsCTIwMDcJb25seQktCU9jdAlTdW4+PTgJIDA6MDAJMTowMAlTCiMgRnJvbSBGcmVkZXJpY28gQS4gQy4gTmV2ZXMgKDIwMDgtMDktMTApOgojIEFjb3JkaW5nIHRvIHRoaXMgZGVjcmVlCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5wbGFuYWx0by5nb3YuYnIvY2NpdmlsXzAzL19BdG8yMDA3LTIwMTAvMjAwOC9EZWNyZXRvL0Q2NTU4Lmh0bSI+CiMgaHR0cDovL3d3dy5wbGFuYWx0by5nb3YuYnIvY2NpdmlsXzAzL19BdG8yMDA3LTIwMTAvMjAwOC9EZWNyZXRvL0Q2NTU4Lmh0bQojIDwvYT4KIyBbdF1oZSBEU1QgcGVyaW9kIGluIEJyYXppbCBub3cgb24gd2lsbCBiZSBmcm9tIHRoZSAzcmQgT2N0IFN1bmRheSB0byB0aGUKIyAzcmQgRmViIFN1bmRheS4gVGhlcmUgaXMgYW4gZXhjZXB0aW9uIG9uIHRoZSByZXR1cm4gZGF0ZSB3aGVuIHRoaXMgaXMKIyB0aGUgQ2Fybml2YWwgU3VuZGF5IHRoZW4gdGhlIHJldHVybiBkYXRlIHdpbGwgYmUgdGhlIG5leHQgU3VuZGF5Li4uClJ1bGUJQnJhemlsCTIwMDgJbWF4CS0JT2N0CVN1bj49MTUJMDowMAkxOjAwCVMKUnVsZQlCcmF6aWwJMjAwOAkyMDExCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxMglvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxMwkyMDE0CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxNQlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAxNgkyMDIyCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyMwlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNAkyMDI1CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNglvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAyNwkyMDMzCS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNAlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNQkyMDM2CS0JRmViCVN1bj49MTUJMDowMAkwCS0KUnVsZQlCcmF6aWwJMjAzNwlvbmx5CS0JRmViCVN1bj49MjIJMDowMAkwCS0KIyBGcm9tIEFydGh1ciBEYXZpZCBPbHNvbiAoMjAwOC0wOS0yOSk6CiMgVGhlIG5leHQgaXMgd3JvbmcgaW4gc29tZSB5ZWFycyBidXQgaXMgYmV0dGVyIHRoYW4gbm90aGluZy4KUnVsZQlCcmF6aWwJMjAzOAltYXgJLQlGZWIJU3VuPj0xNQkwOjAwCTAJLQoKIyBUaGUgbGF0ZXN0IHJ1bGVzZXQgbGlzdGVkIGFib3ZlIHNheXMgdGhhdCB0aGUgZm9sbG93aW5nIHN0YXRlcyBvYnNlcnZlIERTVDoKIyBERiwgRVMsIEdPLCBNRywgTVMsIE1ULCBQUiwgUkosIFJTLCBTQywgU1AuCgojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiMKIyBGZXJuYW5kbyBkZSBOb3JvbmhhIChhZG1pbmlzdHJhdGl2ZWx5IHBhcnQgb2YgUEUpClpvbmUgQW1lcmljYS9Ob3JvbmhhCS0yOjA5OjQwIC0JTE1UCTE5MTQKCQkJLTI6MDAJQnJhemlsCUZOJXNUCTE5OTAgU2VwIDE3CgkJCS0yOjAwCS0JRk5UCTE5OTkgU2VwIDMwCgkJCS0yOjAwCUJyYXppbAlGTiVzVAkyMDAwIE9jdCAxNQoJCQktMjowMAktCUZOVAkyMDAxIFNlcCAxMwoJCQktMjowMAlCcmF6aWwJRk4lc1QJMjAwMiBPY3QgIDEKCQkJLTI6MDAJLQlGTlQKIyBPdGhlciBBdGxhbnRpYyBpc2xhbmRzIGhhdmUgbm8gcGVybWFuZW50IHNldHRsZW1lbnQuCiMgVGhlc2UgaW5jbHVkZSBUcmluZGFkZSBhbmQgTWFydGluIFZheiAoYWRtaW5pc3RyYXRpdmVseSBwYXJ0IG9mIEVTKSwKIyBBdG9sIGRhcyBSb2NhcyAoUk4pLCBhbmQgUGVuZWRvcyBkZSBTYW8gUGVkcm8gZSBTYW8gUGF1bG8gKFBFKS4KIyBGZXJuYW5kbyBkZSBOb3JvbmhhIHdhcyBhIHNlcGFyYXRlIHRlcnJpdG9yeSBmcm9tIDE5NDItMDktMDIgdG8gMTk4OS0wMS0wMTsKIyBpdCBhbHNvIGluY2x1ZGVkIHRoZSBQZW5lZG9zLgojCiMgQW1hcGEgKEFQKSwgZWFzdCBQYXJhIChQQSkKIyBFYXN0IFBhcmEgaW5jbHVkZXMgQmVsZW0sIE1hcmFiYSwgU2VycmEgTm9ydGUsIGFuZCBTYW8gRmVsaXggZG8gWGluZ3UuCiMgVGhlIGRpdmlzaW9uIGJldHdlZW4gZWFzdCBhbmQgd2VzdCBQYXJhIGlzIHRoZSByaXZlciBYaW5ndS4KIyBJbiB0aGUgbm9ydGggYSB2ZXJ5IHNtYWxsIHBhcnQgZnJvbSB0aGUgcml2ZXIgSmF2YXJ5IChub3cgSmFyaSBJIGd1ZXNzLAojIHRoZSBib3JkZXIgd2l0aCBBbWFwYSkgdG8gdGhlIEFtYXpvbiwgdGhlbiB0byB0aGUgWGluZ3UuClpvbmUgQW1lcmljYS9CZWxlbQktMzoxMzo1NiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTg4IFNlcCAxMgoJCQktMzowMAktCUJSVAojCiMgd2VzdCBQYXJhIChQQSkKIyBXZXN0IFBhcmEgaW5jbHVkZXMgQWx0YW1pcmEsIE9yaWJpZG9zLCBQcmFpbmhhLCBPcml4aW1pbmEsIGFuZCBTYW50YXJlbS4KWm9uZSBBbWVyaWNhL1NhbnRhcmVtCS0zOjM4OjQ4IC0JTE1UCTE5MTQKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCTE5ODggU2VwIDEyCgkJCS00OjAwCS0JQU1UCTIwMDggSnVuIDI0IDAwOjAwCgkJCS0zOjAwCS0JQlJUCiMKIyBNYXJhbmhhbyAoTUEpLCBQaWF1aSAoUEkpLCBDZWFyYSAoQ0UpLCBSaW8gR3JhbmRlIGRvIE5vcnRlIChSTiksCiMgUGFyYWliYSAoUEIpClpvbmUgQW1lcmljYS9Gb3J0YWxlemEJLTI6MzQ6MDAgLQlMTVQJMTkxNAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk5MCBTZXAgMTcKCQkJLTM6MDAJLQlCUlQJMTk5OSBTZXAgMzAKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDAgT2N0IDIyCgkJCS0zOjAwCS0JQlJUCTIwMDEgU2VwIDEzCgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAyIE9jdCAgMQoJCQktMzowMAktCUJSVAojCiMgUGVybmFtYnVjbyAoUEUpIChleGNlcHQgQXRsYW50aWMgaXNsYW5kcykKWm9uZSBBbWVyaWNhL1JlY2lmZQktMjoxOTozNiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTkwIFNlcCAxNwoJCQktMzowMAktCUJSVAkxOTk5IFNlcCAzMAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMjAwMCBPY3QgMTUKCQkJLTM6MDAJLQlCUlQJMjAwMSBTZXAgMTMKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDIgT2N0ICAxCgkJCS0zOjAwCS0JQlJUCiMKIyBUb2NhbnRpbnMgKFRPKQpab25lIEFtZXJpY2EvQXJhZ3VhaW5hCS0zOjEyOjQ4IC0JTE1UCTE5MTQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTE5OTAgU2VwIDE3CgkJCS0zOjAwCS0JQlJUCTE5OTUgU2VwIDE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAzIFNlcCAyNAoJCQktMzowMAktCUJSVAojCiMgQWxhZ29hcyAoQUwpLCBTZXJnaXBlIChTRSkKWm9uZSBBbWVyaWNhL01hY2VpbwktMjoyMjo1MiAtCUxNVAkxOTE0CgkJCS0zOjAwCUJyYXppbAlCUiVzVAkxOTkwIFNlcCAxNwoJCQktMzowMAktCUJSVAkxOTk1IE9jdCAxMwoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk5NiBTZXAgIDQKCQkJLTM6MDAJLQlCUlQJMTk5OSBTZXAgMzAKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDAgT2N0IDIyCgkJCS0zOjAwCS0JQlJUCTIwMDEgU2VwIDEzCgkJCS0zOjAwCUJyYXppbAlCUiVzVAkyMDAyIE9jdCAgMQoJCQktMzowMAktCUJSVAojCiMgQmFoaWEgKEJBKQojIFRoZXJlIGFyZSB0b28gbWFueSBTYWx2YWRvcnMgZWxzZXdoZXJlLCBzbyB1c2UgQW1lcmljYS9CYWhpYSBpbnN0ZWFkCiMgb2YgQW1lcmljYS9TYWx2YWRvci4KWm9uZSBBbWVyaWNhL0JhaGlhCS0yOjM0OjA0IC0JTE1UCTE5MTQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCTIwMDMgU2VwIDI0CgkJCS0zOjAwCS0JQlJUCiMKIyBHb2lhcyAoR08pLCBEaXN0cml0byBGZWRlcmFsIChERiksIE1pbmFzIEdlcmFpcyAoTUcpLAojIEVzcGlyaXRvIFNhbnRvIChFUyksIFJpbyBkZSBKYW5laXJvIChSSiksIFNhbyBQYXVsbyAoU1ApLCBQYXJhbmEgKFBSKSwKIyBTYW50YSBDYXRhcmluYSAoU0MpLCBSaW8gR3JhbmRlIGRvIFN1bCAoUlMpClpvbmUgQW1lcmljYS9TYW9fUGF1bG8JLTM6MDY6MjggLQlMTVQJMTkxNAoJCQktMzowMAlCcmF6aWwJQlIlc1QJMTk2MyBPY3QgMjMgMDA6MDAKCQkJLTM6MDAJMTowMAlCUlNUCTE5NjQKCQkJLTM6MDAJQnJhemlsCUJSJXNUCiMKIyBNYXRvIEdyb3NzbyBkbyBTdWwgKE1TKQpab25lIEFtZXJpY2EvQ2FtcG9fR3JhbmRlIC0zOjM4OjI4IC0JTE1UCTE5MTQKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCiMKIyBNYXRvIEdyb3NzbyAoTVQpClpvbmUgQW1lcmljYS9DdWlhYmEJLTM6NDQ6MjAgLQlMTVQJMTkxNAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMjAwMyBTZXAgMjQKCQkJLTQ6MDAJLQlBTVQJMjAwNCBPY3QgIDEKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCiMKIyBSb25kb25pYSAoUk8pClpvbmUgQW1lcmljYS9Qb3J0b19WZWxobyAtNDoxNTozNiAtCUxNVAkxOTE0CgkJCS00OjAwCUJyYXppbAlBTSVzVAkxOTg4IFNlcCAxMgoJCQktNDowMAktCUFNVAojCiMgUm9yYWltYSAoUlIpClpvbmUgQW1lcmljYS9Cb2FfVmlzdGEJLTQ6MDI6NDAgLQlMTVQJMTkxNAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMTk4OCBTZXAgMTIKCQkJLTQ6MDAJLQlBTVQJMTk5OSBTZXAgMzAKCQkJLTQ6MDAJQnJhemlsCUFNJXNUCTIwMDAgT2N0IDE1CgkJCS00OjAwCS0JQU1UCiMKIyBlYXN0IEFtYXpvbmFzIChBTSk6IEJvY2EgZG8gQWNyZSwgSnV0YWksIE1hbmF1cywgRmxvcmlhbm8gUGVpeG90bwojIFRoZSBncmVhdCBjaXJjbGUgbGluZSBmcm9tIFRhYmF0aW5nYSB0byBQb3J0byBBY3JlIGRpdmlkZXMKIyBlYXN0IGZyb20gd2VzdCBBbWF6b25hcy4KWm9uZSBBbWVyaWNhL01hbmF1cwktNDowMDowNCAtCUxNVAkxOTE0CgkJCS00OjAwCUJyYXppbAlBTSVzVAkxOTg4IFNlcCAxMgoJCQktNDowMAktCUFNVAkxOTkzIFNlcCAyOAoJCQktNDowMAlCcmF6aWwJQU0lc1QJMTk5NCBTZXAgMjIKCQkJLTQ6MDAJLQlBTVQKIwojIHdlc3QgQW1hem9uYXMgKEFNKTogQXRhbGFpYSBkbyBOb3J0ZSwgQm9jYSBkbyBNYW9jbywgQmVuamFtaW4gQ29uc3RhbnQsCiMJRWlydW5lcGUsIEVudmlyYSwgSXBpeHVuYQpab25lIEFtZXJpY2EvRWlydW5lcGUJLTQ6Mzk6MjggLQlMTVQJMTkxNAoJCQktNTowMAlCcmF6aWwJQUMlc1QJMTk4OCBTZXAgMTIKCQkJLTU6MDAJLQlBQ1QJMTk5MyBTZXAgMjgKCQkJLTU6MDAJQnJhemlsCUFDJXNUCTE5OTQgU2VwIDIyCgkJCS01OjAwCS0JQUNUCTIwMDggSnVuIDI0IDAwOjAwCgkJCS00OjAwCS0JQU1UCiMKIyBBY3JlIChBQykKWm9uZSBBbWVyaWNhL1Jpb19CcmFuY28JLTQ6MzE6MTIgLQlMTVQJMTkxNAoJCQktNTowMAlCcmF6aWwJQUMlc1QJMTk4OCBTZXAgMTIKCQkJLTU6MDAJLQlBQ1QJMjAwOCBKdW4gMjQgMDA6MDAKCQkJLTQ6MDAJLQlBTVQKCiMgQ2hpbGUKCiMgRnJvbSBFZHVhcmRvIEtyZWxsICgxOTk1LTEwLTE5KToKIyBUaGUgbGF3IHNheXMgdG8gc3dpdGNoIHRvIERTVCBhdCBtaWRuaWdodCBbMjQ6MDBdIG9uIHRoZSBzZWNvbmQgU0FUVVJEQVkKIyBvZiBPY3RvYmVyLi4uLiAgVGhlIGxhdyBpcyB0aGUgc2FtZSBmb3IgTWFyY2ggYW5kIE9jdG9iZXIuCiMgKDE5OTgtMDktMjkpOgojIEJlY2F1c2Ugb2YgdGhlIGRyb3VnaHQgdGhpcyB5ZWFyLCB0aGUgZ292ZXJubWVudCBkZWNpZGVkIHRvIGdvIGludG8KIyBEU1QgZWFybGllciAoc2F0dXJkYXkgOS8yNiBhdCAyNDowMCkuIFRoaXMgaXMgYSBvbmUtdGltZSBjaGFuZ2Ugb25seSAuLi4KIyAodW5sZXNzIHRoZXJlJ3MgYW5vdGhlciBkcnkgc2Vhc29uIG5leHQgeWVhciwgSSBndWVzcykuCgojIEZyb20gSnVsaW8gSS4gUGFjaGVjbyBUcm9uY29zbyAoMTk5OS0wMy0xOCk6CiMgQmVjYXVzZSBvZiB0aGUgc2FtZSBkcm91Z2h0LCB0aGUgZ292ZXJubWVudCBkZWNpZGVkIHRvIGVuZCBEU1QgbGF0ZXIsCiMgb24gQXByaWwgMywgKG9uZS10aW1lIGNoYW5nZSkuCgojIEZyb20gT3NjYXIgdmFuIFZsaWptZW4gKDIwMDYtMTAtMDgpOgojIGh0dHA6Ly93d3cuaG9yYW9maWNpYWwuY2wvY2FtYmlvLmh0bQoKIyBGcm9tIEplc3BlciBOb3JnYWFyZCBXZWxlbiAoMjAwNi0xMC0wOCk6CiMgSSB0aGluayB0aGF0IHRoZXJlIGFyZSBzb21lIG9idmlvdXMgbWlzdGFrZXMgaW4gdGhlIHN1Z2dlc3RlZCBsaW5rCiMgZnJvbSBPc2NhciB2YW4gVmxpam1lbiwuLi4gZm9yIGluc3RhbmNlIGVudHJ5IDY2IHNheXMgdGhhdCBHTVQtNAojIGVuZGVkIDE5OTAtMDktMTIgd2hpbGUgZW50cnkgNjcgb25seSBiZWdpbnMgR01ULTMgYXQgMTk5MC0wOS0xNQojICh0aGV5IHNob3VsZCBoYXZlIGJlZW4gMTk5MC0wOS0xNSBhbmQgMTk5MC0wOS0xNiByZXNwZWN0aXZlbHkpLCBidXQKIyBhbnlob3cgaXQgY2xlYXJzIHVwIHNvbWUgZG91YnRzIHRvby4KCiMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0xMi0yNyk6CiMgVGhlIGZvbGxvd2luZyBkYXRhIGZvciBDaGlsZSBhbmQgQW1lcmljYS9TYW50aWFnbyBhcmUgZnJvbQojIDxodHRwOi8vd3d3LmhvcmFvZmljaWFsLmNsL2hvcmFvZi5odG0+ICgyMDA2LTA5LTIwKSwgdHJhbnNjcmliZWQgYnkKIyBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4uICBUaGUgZGF0YSBmb3IgUGFjaWZpYy9FYXN0ZXIgYXJlIGZyb20gU2hhbmtzCiMgJiBQb3R0ZW5nZXIsIGV4Y2VwdCB3aXRoIERTVCB0cmFuc2l0aW9ucyBhZnRlciAxOTMyIGNsb25lZCBmcm9tCiMgQW1lcmljYS9TYW50aWFnby4gIFRoZSBwcmUtMTk4MCBQYWNpZmljL0Vhc3RlciBkYXRhIGFyZSBkdWJpb3VzLAojIGJ1dCB3ZSBoYXZlIG5vIG90aGVyIHNvdXJjZS4KCiMgRnJvbSBHZXJtYW4gUG9vLUNhYW1hbn5vICgyMDA4LTAzLTAzKToKIyBEdWUgdG8gZHJvdWdodCwgQ2hpbGUgZXh0ZW5kcyBEYXlsaWdodCBUaW1lIGluIHRocmVlIHdlZWtzLiAgVGhpcwojIGlzIG9uZS10aW1lIGNoYW5nZSAoU2F0dXJkYXkgMy8yOSBhdCAyNDowMCBmb3IgQW1lcmljYS9TYW50aWFnbwojIGFuZCBTYXR1cmRheSAzLzI5IGF0IDIyOjAwIGZvciBQYWNpZmljL0Vhc3RlcikKIyBUaGUgU3VwcmVtZSBEZWNyZWUgaXMgbG9jYXRlZCBhdCAKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNob2EuY2wvc2VydmljaW9zL3N1cHJlbW8zMTYucGRmIj4KIyBodHRwOi8vd3d3LnNob2EuY2wvc2VydmljaW9zL3N1cHJlbW8zMTYucGRmCiMgPC9hPgojIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZvciAyMDA4IGFyZSBsb2NhdGVkIGluOgojIDxhIGhyZWY9Imh0dHA6Ly93d3cuaG9yYW9maWNpYWwuY2wvY2FtYmlvLmh0bSI+CiMgaHR0cDovL3d3dy5ob3Jhb2ZpY2lhbC5jbC9jYW1iaW8uaHRtCiMgPC9hPi4KCiMgRnJvbSBKb3NlIE1pZ3VlbCBHYXJyaWRvICgyMDA4LTAzLTA1KToKIyAuLi4KIyBZb3UgY291bGQgc2VlIHRoZSBhbm5vdW5jZXMgb2YgdGhlIGNoYW5nZSBvbiAKIyA8YSBocmVmPSJodHRwOi8vd3d3LnNob2EuY2wvbm90aWNpYXMvMjAwOC8wNGhvcmEvaG9yYS5odG0iPgojIGh0dHA6Ly93d3cuc2hvYS5jbC9ub3RpY2lhcy8yMDA4LzA0aG9yYS9ob3JhLmh0bQojIDwvYT4uCgojIEZyb20gQW5nZWwgQ2hpYW5nICgyMDEwLTAzLTA0KToKIyBTdWJqZWN0OiBEU1QgaW4gQ2hpbGUgZXhjZXB0aW9uYWxseSBleHRlbmRlZCB0byAzIEFwcmlsIGR1ZSB0byBlYXJ0aHF1YWtlCiMgPGEgaHJlZj0iaHR0cDovL3d3dy5nb2JpZXJub2RlY2hpbGUuY2wvdmlld05vdGljaWEuYXNweD9pZEFydGljdWxvPTMwMDk4Ij4KIyBodHRwOi8vd3d3LmdvYmllcm5vZGVjaGlsZS5jbC92aWV3Tm90aWNpYS5hc3B4P2lkQXJ0aWN1bG89MzAwOTgKIyA8L2E+CiMgKGluIFNwYW5pc2gsIGxhc3QgcGFyYWdyYXBoKS4KIwojIFRoaXMgaXMgYnJlYWtpbmcgbmV3cy4gVGhlcmUgc2hvdWxkIGJlIG1vcmUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGxhdGVyLgoKIyBGcm9tIEFydGh1ciBEYWl2ZCBPbHNvbiAoMjAxMC0wMy0wNik6CiMgQW5nZWwgQ2hpYW5nJ3MgbWVzc2FnZSBjb25maXJtZWQgYnkgSnVsaW8gUGFjaGVjbzsgSnVsaW8gcHJvdmlkZWQgYSBwYXRjaC4KCiMgUnVsZQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TClJ1bGUJQ2hpbGUJMTkyNwkxOTMyCS0JU2VwCSAxCTA6MDAJMTowMAlTClJ1bGUJQ2hpbGUJMTkyOAkxOTMyCS0JQXByCSAxCTA6MDAJMAktClJ1bGUJQ2hpbGUJMTk0Mglvbmx5CS0JSnVuCSAxCTQ6MDB1CTAJLQpSdWxlCUNoaWxlCTE5NDIJb25seQktCUF1ZwkgMQk1OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTQ2CW9ubHkJLQlKdWwJMTUJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk0Nglvbmx5CS0JU2VwCSAxCTM6MDB1CTA6MDAJLQpSdWxlCUNoaWxlCTE5NDcJb25seQktCUFwcgkgMQk0OjAwdQkwCS0KUnVsZQlDaGlsZQkxOTY4CW9ubHkJLQlOb3YJIDMJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk2OQlvbmx5CS0JTWFyCTMwCTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5NjkJb25seQktCU5vdgkyMwk0OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTcwCW9ubHkJLQlNYXIJMjkJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk3MQlvbmx5CS0JTWFyCTE0CTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5NzAJMTk3MgktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk3MgkxOTg2CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTczCW9ubHkJLQlTZXAJMzAJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk3NAkxOTg3CS0JT2N0CVN1bj49OQk0OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTg3CW9ubHkJLQlBcHIJMTIJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk4OAkxOTg5CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTg4CW9ubHkJLQlPY3QJU3VuPj0xCTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5ODkJb25seQktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk5MAlvbmx5CS0JTWFyCTE4CTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5OTAJb25seQktCVNlcAkxNgk0OjAwdQkxOjAwCVMKUnVsZQlDaGlsZQkxOTkxCTE5OTYJLQlNYXIJU3VuPj05CTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5OTEJMTk5NwktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMTk5Nwlvbmx5CS0JTWFyCTMwCTM6MDB1CTAJLQpSdWxlCUNoaWxlCTE5OTgJb25seQktCU1hcglTdW4+PTkJMzowMHUJMAktClJ1bGUJQ2hpbGUJMTk5OAlvbmx5CS0JU2VwCTI3CTQ6MDB1CTE6MDAJUwpSdWxlCUNoaWxlCTE5OTkJb25seQktCUFwcgkgNAkzOjAwdQkwCS0KUnVsZQlDaGlsZQkxOTk5CW1heAktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTClJ1bGUJQ2hpbGUJMjAwMAkyMDA3CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KIyBOLkIuOiB0aGUgZW5kIG9mIE1hcmNoIDI5IGluIENoaWxlIGlzIE1hcmNoIDMwIGluIFVuaXZlcnNhbCB0aW1lLAojIHdoaWNoIGlzIHVzZWQgYmVsb3cgaW4gc3BlY2lmeWluZyB0aGUgdHJhbnNpdGlvbi4KUnVsZQlDaGlsZQkyMDA4CW9ubHkJLQlNYXIJMzAJMzowMHUJMAktClJ1bGUJQ2hpbGUJMjAwOQlvbmx5CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KUnVsZQlDaGlsZQkyMDEwCW9ubHkJLQlBcHIJIDQJMzowMHUJMAktClJ1bGUJQ2hpbGUJMjAxMQltYXgJLQlNYXIJU3VuPj05CTM6MDB1CTAJLQojIElBVEEgU1NJTSBhbm9tYWxpZXM6ICgxOTkyLTAyKSBzYXlzIDE5OTItMDMtMTQ7CiMgKDE5OTYtMDkpIHNheXMgMTk5OC0wMy0wOC4gIElnbm9yZSB0aGVzZS4KIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lIEFtZXJpY2EvU2FudGlhZ28JLTQ6NDI6NDYgLQlMTVQJMTg5MAoJCQktNDo0Mjo0NiAtCVNNVAkxOTEwIAkgICAgIyBTYW50aWFnbyBNZWFuIFRpbWUKCQkJLTU6MDAJLQlDTFQJMTkxNiBKdWwgIDEgIyBDaGlsZSBUaW1lCgkJCS00OjQyOjQ2IC0JU01UCTE5MTggU2VwICAxICMgU2FudGlhZ28gTWVhbiBUaW1lCgkJCS00OjAwCS0JQ0xUCTE5MTkgSnVsICAxICMgQ2hpbGUgVGltZQoJCQktNDo0Mjo0NiAtCVNNVAkxOTI3IFNlcCAgMSAjIFNhbnRpYWdvIE1lYW4gVGltZQoJCQktNTowMAlDaGlsZQlDTCVzVAkxOTQ3IE1heSAyMiAjIENoaWxlIFRpbWUKCQkJLTQ6MDAJQ2hpbGUJQ0wlc1QKWm9uZSBQYWNpZmljL0Vhc3RlcgktNzoxNzo0NCAtCUxNVAkxODkwCgkJCS03OjE3OjI4IC0JRU1UCTE5MzIgU2VwICAgICMgRWFzdGVyIE1lYW4gVGltZQoJCQktNzowMAlDaGlsZQlFQVMlc1QJMTk4MiBNYXIgMTMgMjE6MDAgIyBFYXN0ZXIgSSBUaW1lCgkJCS02OjAwCUNoaWxlCUVBUyVzVAojCiMgU2FsYSB5IEdvbWV6IElzbGFuZCBpcyBsaWtlIFBhY2lmaWMvRWFzdGVyLgojIE90aGVyIENoaWxlYW4gbG9jYXRpb25zLCBpbmNsdWRpbmcgSnVhbiBGZXJuYW5kZXogSXMsIFNhbiBBbWJyb3NpbywKIyBTYW4gRmVsaXgsIGFuZCBBbnRhcmN0aWMgYmFzZXMsIGFyZSBsaWtlIEFtZXJpY2EvU2FudGlhZ28uCgojIENvbG9tYmlhCiMgUnVsZQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TClJ1bGUJQ08JMTk5Mglvbmx5CS0JTWF5CSAzCTA6MDAJMTowMAlTClJ1bGUJQ08JMTk5Mwlvbmx5CS0JQXByCSA0CTA6MDAJMAktCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZQlBbWVyaWNhL0JvZ290YQktNDo1NjoyMCAtCUxNVAkxODg0IE1hciAxMwoJCQktNDo1NjoyMCAtCUJNVAkxOTE0IE5vdiAyMyAjIEJvZ290YSBNZWFuIFRpbWUKCQkJLTU6MDAJQ08JQ08lc1QJIyBDb2xvbWJpYSBUaW1lCiMgTWFscGVsbywgUHJvdmlkZW5jaWEsIFNhbiBBbmRyZXMKIyBubyBpbmZvcm1hdGlvbjsgcHJvYmFibHkgbGlrZSBBbWVyaWNhL0JvZ290YQoKIyBDdXJhY2FvCiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBTaGFua3MgJiBQb3R0ZW5nZXIgc2F5IHRoYXQgVGhlIEJvdHRvbSBhbmQgUGhpbGlwc2J1cmcgaGF2ZSBiZWVuIGF0CiMgLTQ6MDAgc2luY2Ugc3RhbmRhcmQgdGltZSB3YXMgaW50cm9kdWNlZCBvbiAxOTEyLTAzLTAyOyBhbmQgdGhhdAojIEtyYWxlbmRpamsgYW5kIFJpbmNvbiB1c2VkIEtyYWxlbmRpamsgTWVhbiBUaW1lICgtNDozMzowOCkgZnJvbQojIDE5MTItMDItMDIgdG8gMTk2NS0wMS0wMS4gIFRoZSBmb3JtZXIgaXMgZHViaW91cywgc2luY2UgUyZQIGFsc28gc2F5CiMgU2FiYSBJc2xhbmQgaGFzIGJlZW4gbGlrZSBDdXJhY2FvLgojIFRoaXMgYWxsIHByZWRhdGVzIG91ciAxOTcwIGN1dG9mZiwgdGhvdWdoLgojCiMgQnkgSnVseSAyMDA3IEN1cmFjYW8gYW5kIFN0IE1hYXJ0ZW4gYXJlIHBsYW5uZWQgdG8gYmVjb21lCiMgYXNzb2NpYXRlZCBzdGF0ZXMgd2l0aGluIHRoZSBOZXRoZXJsYW5kcywgbXVjaCBsaWtlIEFydWJhOwojIEJvbmFpcmUsIFNhYmEgYW5kIFN0IEV1c3RhdGl1cyB3b3VsZCBiZWNvbWUgZGlyZWN0bHkgcGFydCBvZiB0aGUKIyBOZXRoZXJsYW5kcyBhcyBLaW5nZG9tIElzbGFuZHMuICBUaGlzIHdvbid0IGFmZmVjdCB0aGVpciB0aW1lIHpvbmVzCiMgdGhvdWdoLCBhcyBmYXIgYXMgd2Uga25vdy4KIwojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9DdXJhY2FvCS00OjM1OjQ0IC0JTE1UCTE5MTIgRmViIDEyCSMgV2lsbGVtc3RhZAoJCQktNDozMAktCUFOVAkxOTY1ICMgTmV0aGVybGFuZHMgQW50aWxsZXMgVGltZQoJCQktNDowMAktCUFTVAoKIyBFY3VhZG9yCiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA3LTAzLTA0KToKIyBBcHBhcmVudGx5IEVjdWFkb3IgaGFkIGEgZmFpbGVkIGV4cGVyaW1lbnQgd2l0aCBEU1QgaW4gMTk5Mi4KIyA8aHR0cDovL21pZGVuYS5nb3YuZWMvY29udGVudC92aWV3LzEyNjEvMjA4Lz4gKDIwMDctMDItMjcpIGFuZAojIDxodHRwOi8vd3d3LmhveS5jb20uZWMvTm90aWNpYU51ZS5hc3A/cm93X2lkPTI0OTg1Nj4gKDIwMDYtMTEtMDYpIGJvdGgKIyB0YWxrIGFib3V0ICJob3JhIFNpeHRvIi4gIExlYXZlIHRoaXMgYWxvbmUgZm9yIG5vdywgYXMgd2UgaGF2ZSBubyBkYXRhLgojCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL0d1YXlhcXVpbAktNToxOToyMCAtCUxNVAkxODkwCgkJCS01OjE0OjAwIC0JUU1UCTE5MzEgIyBRdWl0byBNZWFuIFRpbWUKCQkJLTU6MDAJLQlFQ1QJICAgICAjIEVjdWFkb3IgVGltZQpab25lIFBhY2lmaWMvR2FsYXBhZ29zCS01OjU4OjI0IC0JTE1UCTE5MzEgIyBQdWVydG8gQmFxdWVyaXpvIE1vcmVubwoJCQktNTowMAktCUVDVAkxOTg2CgkJCS02OjAwCS0JR0FMVAkgICAgICMgR2FsYXBhZ29zIFRpbWUKCiMgRmFsa2xhbmRzCgojIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgojIEJldHdlZW4gMTk5MCBhbmQgMjAwMCBpbmNsdXNpdmUsIFNoYW5rcyAmIFBvdHRlbmdlciBhbmQgdGhlIElBVEEgYWdyZWUgZXhjZXB0CiMgdGhlIElBVEEgZ2l2ZXMgMTk5Ni0wOS0wOC4gIEdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgoKIyBGcm9tIEZhbGtsYW5kIElzbGFuZHMgR292ZXJubWVudCBPZmZpY2UsIExvbmRvbiAoMjAwMS0wMS0yMikKIyB2aWEgSmVzcGVyIE5vcmdhYXJkOgojIC4uLiB0aGUgY2xvY2tzIHJldmVydCBiYWNrIHRvIExvY2FsIE1lYW4gVGltZSBhdCAyIGFtIG9uIFN1bmRheSAxNQojIEFwcmlsIDIwMDEgYW5kIGFkdmFuY2Ugb25lIGhvdXIgdG8gc3VtbWVyIHRpbWUgYXQgMiBhbSBvbiBTdW5kYXkgMgojIFNlcHRlbWJlci4gIEl0IGlzIGFudGljaXBhdGVkIHRoYXQgdGhlIGNsb2NrcyB3aWxsIHJldmVydCBiYWNrIGF0IDIKIyBhbSBvbiBTdW5kYXkgMjEgQXByaWwgMjAwMiBhbmQgYWR2YW5jZSB0byBzdW1tZXIgdGltZSBhdCAyIGFtIG9uCiMgU3VuZGF5IDEgU2VwdGVtYmVyLgoKIyBGcm9tIFJpdmVzIE1jRG93ICgyMDAxLTAyLTEzKToKIwojIEkgaGF2ZSBjb21tdW5pY2F0ZWQgc2V2ZXJhbCB0aW1lcyB3aXRoIHBlb3BsZSB0aGVyZSwgYW5kIHRoZSBsYXN0CiMgdGltZSBJIGhhZCBjb21tdW5pY2F0aW9ucyB0aGF0IHdhcyBoZWxwZnVsIHdhcyBpbiAxOTk4LiAgSGVyZSBpcwojIHdoYXQgd2FzIHNhaWQgdGhlbjoKIwojICJUaGUgZ2VuZXJhbCBydWxlIHdhcyB0aGF0IFN0YW5sZXkgdXNlZCBkYXlsaWdodCBzYXZpbmcgYW5kIHRoZSBDYW1wCiMgZGlkIG5vdC4gSG93ZXZlciBmb3IgdmFyaW91cyByZWFzb25zIG1hbnkgcGVvcGxlIGluIHRoZSBDYW1wIGhhdmUKIyBzdGFydGVkIHRvIHVzZSBkYXlsaWdodCBzYXZpbmcgKGtub3duIGxvY2FsbHkgYXMgJ1N0YW5sZXkgVGltZScpCiMgVGhlcmUgaXMgbm8gcnVsZSBhcyB0byB3aG8gdXNlcyBkYXlsaWdodCBzYXZpbmcgLSBpdCBpcyBhIG1hdHRlciBvZgojIHBlcnNvbmFsIGNob2ljZSBhbmQgc28gaXQgaXMgaW1wb3NzaWJsZSB0byBkcmF3IGEgbWFwIHNob3dpbmcgd2hvCiMgdXNlcyBpdCBhbmQgd2hvIGRvZXMgbm90LiBBbnkgbGlzdCB3b3VsZCBiZSBvdXQgb2YgZGF0ZSBhcyBzb29uIGFzCiMgaXQgd2FzIHByb2R1Y2VkLiBUaGlzIHllYXIgZGF5bGlnaHQgc2F2aW5nIGVuZGVkIG9uIEFwcmlsIDE4LzE5dGgKIyBhbmQgc3RhcnRlZCBhZ2FpbiBvbiBTZXB0ZW1iZXIgMTIvMTN0aC4gIEkgZG8gbm90IGtub3cgd2hhdCB0aGUgcnVsZQojIGlzLCBidXQgY2FuIGZpbmQgb3V0IGlmIHlvdSBsaWtlLiAgV2UgZG8gbm90IGNoYW5nZSBhdCB0aGUgc2FtZSB0aW1lCiMgYXMgVUsgb3IgQ2hpbGUuIgojCiMgSSBkaWQgaGF2ZSBpbiBteSBub3RlcyB0aGF0IHRoZSBydWxlIHdhcyAiU2Vjb25kIFNhdHVyZGF5IGluIFNlcCBhdAojIDA6MDAgdW50aWwgdGhpcmQgU2F0dXJkYXkgaW4gQXByIGF0IDA6MDAiLiAgSSB0aGluayB0aGF0IHRoaXMgZG9lcwojIG5vdCBhZ3JlZSBpbiBzb21lIGNhc2VzIHdpdGggU2hhbmtzOyBpcyB0aGlzIHRydWU/CiMKIyBBbHNvLCB0aGVyZSBpcyBubyBtZW50aW9uIGluIHRoZSBsaXN0IHRoYXQgc29tZSBhcmVhcyBpbiB0aGUKIyBGYWxrbGFuZHMgZG8gbm90IHVzZSBEU1QuICBJIGhhdmUgZm91bmQgaW4gbXkgY29tbXVuaWNhdGlvbnMgdGhlcmUKIyB0aGF0IHRoZXNlIGFyZWFzIGFyZSBvbiB0aGUgd2VzdGVybiBoYWxmIG9mIEVhc3QgRmFsa2xhbmQgYW5kIGFsbCBvZgojIFdlc3QgRmFsa2xhbmQuICBTdGFubGV5IGlzIHRoZSBvbmx5IHBsYWNlIHRoYXQgY29uc2lzdGVudGx5IG9ic2VydmVzCiMgRFNULiAgQWdhaW4sIGFzIGluIG90aGVyIHBsYWNlcyBpbiB0aGUgd29ybGQsIHRoZSBmYXJtZXJzIGRvbid0IGxpa2UKIyBpdC4gIFdlc3QgRmFsa2xhbmQgaXMgYWxtb3N0IGVudGlyZWx5IHNoZWVwIGZhcm1lcnMuCiMKIyBJIGtub3cgb25lIGxhZHkgdGhlcmUgdGhhdCBrZWVwcyBhIGxpc3Qgb2Ygd2hpY2ggZmFybSBrZWVwcyBEU1QgYW5kCiMgd2hpY2ggZG9lc24ndCBlYWNoIHllYXIuICBTaGUgcnVucyBhIHNob3AgaW4gU3RhbmxleSwgYW5kIHNheXMgdGhhdAojIHRoZSBsaXN0IGNoYW5nZXMgZWFjaCB5ZWFyLiAgU2hlIHVzZXMgaXQgdG8gY29tbXVuaWNhdGUgdG8gaGVyCiMgY3VzdG9tZXJzLCBjYXRjaGluZyB0aGVtIHdoZW4gdGhleSBhcmUgaG9tZSBmb3IgbHVuY2ggb3IgZGlubmVyLgoKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDAxLTAzLTA1KToKIyBGb3Igbm93LCB3ZSdsbCBqdXN0IHJlY29yZCB0aGUgdGltZSBpbiBTdGFubGV5LCBzaW5jZSB3ZSBoYXZlIG5vCiMgYmV0dGVyIGluZm8uCgojIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwpSdWxlCUZhbGsJMTkzNwkxOTM4CS0JU2VwCWxhc3RTdW4JMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5MzgJMTk0MgktCU1hcglTdW4+PTE5CTA6MDAJMAktClJ1bGUJRmFsawkxOTM5CW9ubHkJLQlPY3QJMQkwOjAwCTE6MDAJUwpSdWxlCUZhbGsJMTk0MAkxOTQyCS0JU2VwCWxhc3RTdW4JMDowMAkxOjAwCVMKUnVsZQlGYWxrCTE5NDMJb25seQktCUphbgkxCTA6MDAJMAktClJ1bGUJRmFsawkxOTgzCW9ubHkJLQlTZXAJbGFzdFN1bgkwOjAwCTE6MDAJUwpSdWxlCUZhbGsJMTk4NAkxOTg1CS0JQXByCWxhc3RTdW4JMDowMAkwCS0KUnVsZQlGYWxrCTE5ODQJb25seQktCVNlcAkxNgkwOjAwCTE6MDAJUwpSdWxlCUZhbGsJMTk4NQkyMDAwCS0JU2VwCVN1bj49OQkwOjAwCTE6MDAJUwpSdWxlCUZhbGsJMTk4NgkyMDAwCS0JQXByCVN1bj49MTYJMDowMAkwCS0KUnVsZQlGYWxrCTIwMDEJbWF4CS0JQXByCVN1bj49MTUJMjowMAkwCS0KUnVsZQlGYWxrCTIwMDEJbWF4CS0JU2VwCVN1bj49MQkyOjAwCTE6MDAJUwojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQXRsYW50aWMvU3RhbmxleQktMzo1MToyNCAtCUxNVAkxODkwCgkJCS0zOjUxOjI0IC0JU01UCTE5MTIgTWFyIDEyICAjIFN0YW5sZXkgTWVhbiBUaW1lCgkJCS00OjAwCUZhbGsJRkslc1QJMTk4MyBNYXkgICAgICMgRmFsa2xhbmQgSXMgVGltZQoJCQktMzowMAlGYWxrCUZLJXNUCTE5ODUgU2VwIDE1CgkJCS00OjAwCUZhbGsJRkslc1QKCiMgRnJlbmNoIEd1aWFuYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQW1lcmljYS9DYXllbm5lCS0zOjI5OjIwIC0JTE1UCTE5MTEgSnVsCgkJCS00OjAwCS0JR0ZUCTE5NjcgT2N0ICMgRnJlbmNoIEd1aWFuYSBUaW1lCgkJCS0zOjAwCS0JR0ZUCgojIEd1eWFuYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUJQW1lcmljYS9HdXlhbmEJLTM6NTI6NDAgLQlMTVQJMTkxNSBNYXIJIyBHZW9yZ2V0b3duCgkJCS0zOjQ1CS0JR0JHVAkxOTY2IE1heSAyNiAjIEJyIEd1aWFuYSBUaW1lCgkJCS0zOjQ1CS0JR1lUCTE5NzUgSnVsIDMxICMgR3V5YW5hIFRpbWUKCQkJLTM6MDAJLQlHWVQJMTk5MQojIElBVEEgU1NJTSAoMTk5Ni0wNikgc2F5cyAtNDowMC4gIEFzc3VtZSBhIDE5OTEgc3dpdGNoLgoJCQktNDowMAktCUdZVAoKIyBQYXJhZ3VheQojIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgojIFNoYW5rcyAmIFBvdHRlbmdlciBzYXkgdGhhdCBzcHJpbmcgdHJhbnNpdGlvbnMgYXJlIGZyb20gMDE6MDAgLT4gMDI6MDAsCiMgYW5kIGF1dHVtbiB0cmFuc2l0aW9ucyBhcmUgZnJvbSAwMDowMCAtPiAyMzowMC4gIEdvIHdpdGggcHJlLTE5OTkKIyBlZGl0aW9ucyBvZiBTaGFua3MsIGFuZCB3aXRoIHRoZSBJQVRBLCB3aG8gc2F5IHRyYW5zaXRpb25zIG9jY3VyIGF0IDAwOjAwLgojIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwpSdWxlCVBhcmEJMTk3NQkxOTg4CS0JT2N0CSAxCTA6MDAJMTowMAlTClJ1bGUJUGFyYQkxOTc1CTE5NzgJLQlNYXIJIDEJMDowMAkwCS0KUnVsZQlQYXJhCTE5NzkJMTk5MQktCUFwcgkgMQkwOjAwCTAJLQpSdWxlCVBhcmEJMTk4OQlvbmx5CS0JT2N0CTIyCTA6MDAJMTowMAlTClJ1bGUJUGFyYQkxOTkwCW9ubHkJLQlPY3QJIDEJMDowMAkxOjAwCVMKUnVsZQlQYXJhCTE5OTEJb25seQktCU9jdAkgNgkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMTk5Mglvbmx5CS0JTWFyCSAxCTA6MDAJMAktClJ1bGUJUGFyYQkxOTkyCW9ubHkJLQlPY3QJIDUJMDowMAkxOjAwCVMKUnVsZQlQYXJhCTE5OTMJb25seQktCU1hcgkzMQkwOjAwCTAJLQpSdWxlCVBhcmEJMTk5MwkxOTk1CS0JT2N0CSAxCTA6MDAJMTowMAlTClJ1bGUJUGFyYQkxOTk0CTE5OTUJLQlGZWIJbGFzdFN1bgkwOjAwCTAJLQpSdWxlCVBhcmEJMTk5Nglvbmx5CS0JTWFyCSAxCTA6MDAJMAktCiMgSUFUQSBTU0lNICgyMDAwLTAyKSBzYXlzIDE5OTktMTAtMTA7IGlnbm9yZSB0aGlzIGZvciBub3cuCiMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMDAtMTAtMDIpOgojIEkgaGF2ZSB0aHJlZSBpbmRlcGVuZGVudCByZXBvcnRzIHRoYXQgUGFyYWd1YXkgY2hhbmdlZCB0byBEU1QgdGhpcyBTdW5kYXkKIyAoMTAtMDEpLgojCiMgVHJhbnNsYXRlZCBieSBHd2lsbGltIExhdyAoMjAwMS0wMi0yNykgZnJvbQojIDxhIGhyZWY9Imh0dHA6Ly93d3cuZGlhcmlvbm90aWNpYXMuY29tLnB5LzAxMTAwMC9uYWNpb25hbC9uYWNpb25hMS5odG0iPgojIE5vdGljaWFzLCBhIGRhaWx5IHBhcGVyIGluIEFzdW5jaW9uLCBQYXJhZ3VheSAoMjAwMC0xMC0wMSkKIyA8L2E+OgojIFN0YXJ0aW5nIGF0IDA6MDAgdG9kYXksIHRoZSBjbG9jayB3aWxsIGJlIHNldCBmb3J3YXJkIDYwIG1pbnV0ZXMsIGluCiMgZnVsZmlsbG1lbnQgb2YgRGVjcmVlIE5vLiA3LDI3MyBvZiB0aGUgRXhlY3V0aXZlIFBvd2VyLi4uLiAgVGhlIHRpbWUgY2hhbmdlCiMgc3lzdGVtIGhhcyBiZWVuIG9wZXJhdGluZyBmb3Igc2V2ZXJhbCB5ZWFycy4gIEZvcm1lcmx5IHRoZXJlIHdhcyBhIHNlcGFyYXRlCiMgZGVjcmVlIGVhY2ggeWVhcjsgdGhlIG5ldyBsYXcgaGFzIHRoZSBzYW1lIGVmZmVjdCwgYnV0IHBlcm1hbmVudGx5LiAgRXZlcnkKIyB5ZWFyLCB0aGUgdGltZSB3aWxsIGNoYW5nZSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE9jdG9iZXI7IGxpa2V3aXNlLCB0aGUKIyBjbG9jayB3aWxsIGJlIHNldCBiYWNrIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTWFyY2guCiMKUnVsZQlQYXJhCTE5OTYJMjAwMQktCU9jdAlTdW4+PTEJMDowMAkxOjAwCVMKIyBJQVRBIFNTSU0gKDE5OTctMDkpIHNheXMgTWFyIDE7IGdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgpSdWxlCVBhcmEJMTk5Nwlvbmx5CS0JRmViCWxhc3RTdW4JMDowMAkwCS0KIyBTaGFua3MgJiBQb3R0ZW5nZXIgc2F5IDE5OTktMDItMjg7IElBVEEgU1NJTSAoMTk5OS0wMikgc2F5cyAxOTk5LTAyLTI3LCBidXQKIyAoMTk5OS0wOSkgcmVwb3J0cyBubyBkYXRlOyBnbyB3aXRoIGFib3ZlIHNvdXJjZXMgYW5kIEdlcmQgS25vcHMgKDIwMDEtMDItMjcpLgpSdWxlCVBhcmEJMTk5OAkyMDAxCS0JTWFyCVN1bj49MQkwOjAwCTAJLQojIEZyb20gUml2ZXMgTWNEb3cgKDIwMDItMDItMjgpOgojIEEgZGVjcmVlIHdhcyBpc3N1ZWQgaW4gUGFyYWd1YXkgKG5vLiAxNjM1MCkgb24gMjAwMi0wMi0yNiB0aGF0IGNoYW5nZWQgdGhlCiMgZHN0IG1ldGhvZCB0byBiZSBmcm9tIHRoZSBmaXJzdCBTdW5kYXkgaW4gU2VwdGVtYmVyIHRvIHRoZSBmaXJzdCBTdW5kYXkgaW4KIyBBcHJpbC4KUnVsZQlQYXJhCTIwMDIJMjAwNAktCUFwcglTdW4+PTEJMDowMAkwCS0KUnVsZQlQYXJhCTIwMDIJMjAwMwktCVNlcAlTdW4+PTEJMDowMAkxOjAwCVMKIwojIEZyb20gSmVzcGVyIE5vcmdhYXJkIFdlbGVuICgyMDA1LTAxLTAyKToKIyBUaGVyZSBhcmUgc2V2ZXJhbCBzb3VyY2VzIHRoYXQgY2xhaW0gdGhhdCBQYXJhZ3VheSBtYWRlCiMgYSB0aW1lem9uZSBydWxlIGNoYW5nZSBpbiBhdXR1bW4gMjAwNC4KIyBGcm9tIFN0ZWZmZW4gVGhvcnNlbiAoMjAwNS0wMS0wNSk6CiMgRGVjcmVlIDEsODY3ICgyMDA0LTAzLTA1KQojIEZyb20gQ2FybG9zIFJhdWwgUGVyYXNzbyB2aWEgSmVzcGVyIE5vcmdhYXJkIFdlbGVuICgyMDA2LTEwLTEzKQojIDxodHRwOi8vd3d3LnByZXNpZGVuY2lhLmdvdi5weS9kZWNyZXRvcy9EMTg2Ny5wZGY+ClJ1bGUJUGFyYQkyMDA0CTIwMDkJLQlPY3QJU3VuPj0xNQkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMjAwNQkyMDA5CS0JTWFyCVN1bj49OAkwOjAwCTAJLQojIEZyb20gQ2FybG9zIFJhdWwgUGVyYXNzbyAoMjAxMC0wMi0xOCk6CiMgQnkgZGVjcmVlIG51bWJlciAzOTU4IGlzc3VlZCB5ZXN0ZXJkYXkgKAojIDxhIGhyZWY9Imh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ292LnB5L3YxL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDEwLzAyL2RlY3JldG8zOTU4LnBkZiI+CiMgaHR0cDovL3d3dy5wcmVzaWRlbmNpYS5nb3YucHkvdjEvd3AtY29udGVudC91cGxvYWRzLzIwMTAvMDIvZGVjcmV0bzM5NTgucGRmCiMgPC9hPgojICkKIyBQYXJhZ3VheSBjaGFuZ2VzIGl0cyBEU1Qgc2NoZWR1bGUsIHBvc3Rwb25pbmcgdGhlIE1hcmNoIHJ1bGUgdG8gQXByaWwgYW5kCiMgbW9kaWZ5aW5nIHRoZSBPY3RvYmVyIGRhdGUuIFRoZSBkZWNyZWUgcmVhZHM6CiMgLi4uCiMgQXJ0LiAxLiBJdCBpcyBoZXJlYnkgZXN0YWJsaXNoZWQgdGhhdCBmcm9tIHRoZSBzZWNvbmQgU3VuZGF5IG9mIHRoZSBtb250aCBvZgojIEFwcmlsIG9mIHRoaXMgeWVhciAoMjAxMCksIHRoZSBvZmZpY2lhbCB0aW1lIGlzIHRvIGJlIHNldCBiYWNrIDYwIG1pbnV0ZXMsCiMgYW5kIHRoYXQgb24gdGhlIGZpcnN0IFN1bmRheSBvZiB0aGUgbW9udGggb2YgT2N0b2JlciwgaXQgaXMgdG8gYmUgc2V0CiMgZm9yd2FyZCA2MCBtaW51dGVzLCBpbiBhbGwgdGhlIHRlcnJpdG9yeSBvZiB0aGUgUGFyYWd1YXlhbiBSZXB1YmxpYy4KIyAuLi4KUnVsZQlQYXJhCTIwMTAJbWF4CS0JT2N0CVN1bj49MQkwOjAwCTE6MDAJUwpSdWxlCVBhcmEJMjAxMAltYXgJLQlBcHIJU3VuPj04CTA6MDAJMAktCgojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQW1lcmljYS9Bc3VuY2lvbgktMzo1MDo0MCAtCUxNVAkxODkwCgkJCS0zOjUwOjQwIC0JQU1UCTE5MzEgT2N0IDEwICMgQXN1bmNpb24gTWVhbiBUaW1lCgkJCS00OjAwCS0JUFlUCTE5NzIgT2N0ICMgUGFyYWd1YXkgVGltZQoJCQktMzowMAktCVBZVAkxOTc0IEFwcgoJCQktNDowMAlQYXJhCVBZJXNUCgojIFBlcnUKIwojIDxhIGhyZWY9Im5ld3M6eHJHbWIuMzk5MzUkZ0ExLjEzODk2MTEzQG5ld3M0LnNydi5oY3ZsbnkuY3YubmV0Ij4KIyBGcm9tIEV2ZWx5biBDLiBMZWVwZXIgdmlhIE1hcmsgQnJhZGVyICgyMDAzLTEwLTI2KTo8L2E+CiMgV2hlbiB3ZSB3ZXJlIGluIFBlcnUgaW4gMTk4NS0xOTg2LCB0aGV5IGFwcGFyZW50bHkgc3dpdGNoZWQgb3ZlcgojIHNvbWV0aW1lIGJldHdlZW4gRGVjZW1iZXIgMjkgYW5kIEphbnVhcnkgMyB3aGlsZSB3ZSB3ZXJlIG9uIHRoZSBBbWF6b24uCiMKIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKIyBTaGFua3MgJiBQb3R0ZW5nZXIgZG9uJ3QgaGF2ZSB0aGlzIHRyYW5zaXRpb24uICBBc3N1bWUgMTk4NiB3YXMgbGlrZSAxOTg3LgoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKUnVsZQlQZXJ1CTE5MzgJb25seQktCUphbgkgMQkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTkzOAlvbmx5CS0JQXByCSAxCTA6MDAJMAktClJ1bGUJUGVydQkxOTM4CTE5MzkJLQlTZXAJbGFzdFN1bgkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTkzOQkxOTQwCS0JTWFyCVN1bj49MjQJMDowMAkwCS0KUnVsZQlQZXJ1CTE5ODYJMTk4NwktCUphbgkgMQkwOjAwCTE6MDAJUwpSdWxlCVBlcnUJMTk4NgkxOTg3CS0JQXByCSAxCTA6MDAJMAktClJ1bGUJUGVydQkxOTkwCW9ubHkJLQlKYW4JIDEJMDowMAkxOjAwCVMKUnVsZQlQZXJ1CTE5OTAJb25seQktCUFwcgkgMQkwOjAwCTAJLQojIElBVEEgaXMgYW1iaWd1b3VzIGZvciAxOTkzLzE5OTU7IGdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgpSdWxlCVBlcnUJMTk5NAlvbmx5CS0JSmFuCSAxCTA6MDAJMTowMAlTClJ1bGUJUGVydQkxOTk0CW9ubHkJLQlBcHIJIDEJMDowMAkwCS0KIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvTGltYQktNTowODoxMiAtCUxNVAkxODkwCgkJCS01OjA4OjM2IC0JTE1UCTE5MDggSnVsIDI4ICMgTGltYSBNZWFuIFRpbWU/CgkJCS01OjAwCVBlcnUJUEUlc1QJIyBQZXJ1IFRpbWUKCiMgU291dGggR2VvcmdpYQojIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdClpvbmUgQXRsYW50aWMvU291dGhfR2VvcmdpYSAtMjoyNjowOCAtCUxNVAkxODkwCQkjIEdyeXR2aWtlbgoJCQktMjowMAktCUdTVAkjIFNvdXRoIEdlb3JnaWEgVGltZQoKIyBTb3V0aCBTYW5kd2ljaCBJcwojIHVuaW5oYWJpdGVkOyBzY2llbnRpZmljIHBlcnNvbm5lbCBoYXZlIHdpbnRlcmVkCgojIFN1cmluYW1lCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL1BhcmFtYXJpYm8JLTM6NDA6NDAgLQlMTVQJMTkxMQoJCQktMzo0MDo1MiAtCVBNVAkxOTM1ICAgICAjIFBhcmFtYXJpYm8gTWVhbiBUaW1lCgkJCS0zOjQwOjM2IC0JUE1UCTE5NDUgT2N0ICMgVGhlIGNhcGl0YWwgbW92ZWQ/CgkJCS0zOjMwCS0JTkVHVAkxOTc1IE5vdiAyMCAjIER1dGNoIEd1aWFuYSBUaW1lCgkJCS0zOjMwCS0JU1JUCTE5ODQgT2N0ICMgU3VyaW5hbWUgVGltZQoJCQktMzowMAktCVNSVAoKIyBUcmluaWRhZCBhbmQgVG9iYWdvCiMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KWm9uZSBBbWVyaWNhL1BvcnRfb2ZfU3BhaW4gLTQ6MDY6MDQgLQlMTVQJMTkxMiBNYXIgMgoJCQktNDowMAktCUFTVAoKIyBVcnVndWF5CiMgRnJvbSBQYXVsIEVnZ2VydCAoMTk5My0xMS0xOCk6CiMgVXJ1Z3VheSB3aW5zIHRoZSBwcml6ZSBmb3IgdGhlIHN0cmFuZ2VzdCBwZWFjZXRpbWUgbWFuaXB1bGF0aW9uIG9mIHRoZSBydWxlcy4KIyBGcm9tIFNoYW5rcyAmIFBvdHRlbmdlcjoKIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIyBXaGl0bWFuIGdpdmVzIDE5MjMgT2N0IDE7IGdvIHdpdGggU2hhbmtzICYgUG90dGVuZ2VyLgpSdWxlCVVydWd1YXkJMTkyMwlvbmx5CS0JT2N0CSAyCSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5MjQJMTkyNgktCUFwcgkgMQkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5MjQJMTkyNQktCU9jdAkgMQkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTMzCTE5MzUJLQlPY3QJbGFzdFN1bgkgMDowMAkwOjMwCUhTCiMgU2hhbmtzICYgUG90dGVuZ2VyIGdpdmUgMTkzNSBBcHIgMSAwOjAwICYgMTkzNiBNYXIgMzAgMDowMDsgZ28gd2l0aCBXaGl0bWFuLgpSdWxlCVVydWd1YXkJMTkzNAkxOTM2CS0JTWFyCVNhdD49MjUJMjM6MzBzCTAJLQpSdWxlCVVydWd1YXkJMTkzNglvbmx5CS0JTm92CSAxCSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5MzcJMTk0MQktCU1hcglsYXN0U3VuCSAwOjAwCTAJLQojIFdoaXRtYW4gZ2l2ZXMgMTkzNyBPY3QgMzsgZ28gd2l0aCBTaGFua3MgJiBQb3R0ZW5nZXIuClJ1bGUJVXJ1Z3VheQkxOTM3CTE5NDAJLQlPY3QJbGFzdFN1bgkgMDowMAkwOjMwCUhTCiMgV2hpdG1hbiBnaXZlcyAxOTQxIE9jdCAyNCAtIDE5NDIgTWFyIDI3LCAxOTQyIERlYyAxNCAtIDE5NDMgQXByIDEzLAojIGFuZCAxOTQzIEFwciAxMyBgYHRvIHByZXNlbnQgdGltZScnOyBnbyB3aXRoIFNoYW5rcyAmIFBvdHRlbmdlci4KUnVsZQlVcnVndWF5CTE5NDEJb25seQktCUF1ZwkgMQkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTQyCW9ubHkJLQlKYW4JIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTQyCW9ubHkJLQlEZWMJMTQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTQzCW9ubHkJLQlNYXIJMTQJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTU5CW9ubHkJLQlNYXkJMjQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTU5CW9ubHkJLQlOb3YJMTUJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTYwCW9ubHkJLQlKYW4JMTcJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTYwCW9ubHkJLQlNYXIJIDYJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTY1CTE5NjcJLQlBcHIJU3VuPj0xCSAwOjAwCTE6MDAJUwpSdWxlCVVydWd1YXkJMTk2NQlvbmx5CS0JU2VwCTI2CSAwOjAwCTAJLQpSdWxlCVVydWd1YXkJMTk2NgkxOTY3CS0JT2N0CTMxCSAwOjAwCTAJLQpSdWxlCVVydWd1YXkJMTk2OAkxOTcwCS0JTWF5CTI3CSAwOjAwCTA6MzAJSFMKUnVsZQlVcnVndWF5CTE5NjgJMTk3MAktCURlYwkgMgkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5NzIJb25seQktCUFwcgkyNAkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5NzIJb25seQktCUF1ZwkxNQkgMDowMAkwCS0KUnVsZQlVcnVndWF5CTE5NzQJb25seQktCU1hcgkxMAkgMDowMAkwOjMwCUhTClJ1bGUJVXJ1Z3VheQkxOTc0CW9ubHkJLQlEZWMJMjIJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTc2CW9ubHkJLQlPY3QJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTc3CW9ubHkJLQlEZWMJIDQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTc4CW9ubHkJLQlBcHIJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTc5CW9ubHkJLQlPY3QJIDEJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTgwCW9ubHkJLQlNYXkJIDEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg3CW9ubHkJLQlEZWMJMTQJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTg4CW9ubHkJLQlNYXIJMTQJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg4CW9ubHkJLQlEZWMJMTEJIDA6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkxOTg5CW9ubHkJLQlNYXIJMTIJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTg5CW9ubHkJLQlPY3QJMjkJIDA6MDAJMTowMAlTCiMgU2hhbmtzICYgUG90dGVuZ2VyIHNheSBubyBEU1Qgd2FzIG9ic2VydmVkIGluIDE5OTAvMSBhbmQgMTk5MS8yLAojIGFuZCB0aGF0IDE5OTIvMydzIERTVCB3YXMgZnJvbSAxMC0yNSB0byAwMy0wMS4gIEdvIHdpdGggSUFUQS4KUnVsZQlVcnVndWF5CTE5OTAJMTk5MgktCU1hcglTdW4+PTEJIDA6MDAJMAktClJ1bGUJVXJ1Z3VheQkxOTkwCTE5OTEJLQlPY3QJU3VuPj0yMQkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5OTIJb25seQktCU9jdAkxOAkgMDowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTE5OTMJb25seQktCUZlYgkyOAkgMDowMAkwCS0KIyBGcm9tIEVkdWFyZG8gQ290YSAoMjAwNC0wOS0yMCk6CiMgVGhlIHVydWd1YXlhbiBnb3Zlcm5tZW50IGhhcyBkZWNyZWVkIGEgY2hhbmdlIGluIHRoZSBsb2NhbCB0aW1lLi4uLgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L2RlY3JldG9zLzIwMDQwOTE1MDIuaHRtClJ1bGUJVXJ1Z3VheQkyMDA0CW9ubHkJLQlTZXAJMTkJIDA6MDAJMTowMAlTCiMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMDUtMDMtMTEpOgojIFVydWd1YXkncyBEU1Qgd2FzIHNjaGVkdWxlZCB0byBlbmQgb24gU3VuZGF5LCAyMDA1LTAzLTEzLCBidXQgaW4gb3JkZXIgdG8KIyBzYXZlIGVuZXJneSAuLi4gaXQgd2FzIHBvc3Rwb25lZCB0d28gd2Vla3MuLi4uCiMgaHR0cDovL3d3dy5wcmVzaWRlbmNpYS5ndWIudXkvX1dlYi9ub3RpY2lhcy8yMDA1LzAzLzIwMDUwMzEwMDUuaHRtClJ1bGUJVXJ1Z3VheQkyMDA1CW9ubHkJLQlNYXIJMjcJIDI6MDAJMAktCiMgRnJvbSBFZHVhcmRvIENvdGEgKDIwMDUtMDktMjcpOgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L19XZWIvZGVjcmV0b3MvMjAwNS8wOS9DTSUyMDExOV8wOSUyMDA5JTIwMjAwNV8wMDAwMS5QREYKIyBUaGlzIG1lYW5zIHRoYXQgZnJvbSAyMDA1LTEwLTA5IGF0IDAyOjAwIGxvY2FsIHRpbWUsIHVudGlsIDIwMDYtMDMtMTIgYXQKIyAwMjowMCBsb2NhbCB0aW1lLCBvZmZpY2lhbCB0aW1lIGluIFVydWd1YXkgd2lsbCBiZSBhdCBHTVQgLTIuClJ1bGUJVXJ1Z3VheQkyMDA1CW9ubHkJLQlPY3QJIDkJIDI6MDAJMTowMAlTClJ1bGUJVXJ1Z3VheQkyMDA2CW9ubHkJLQlNYXIJMTIJIDI6MDAJMAktCiMgRnJvbSBKZXNwZXIgTm9yZ2FhcmQgV2VsZW4gKDIwMDYtMDktMDYpOgojIGh0dHA6Ly93d3cucHJlc2lkZW5jaWEuZ3ViLnV5L193ZWIvZGVjcmV0b3MvMjAwNi8wOS9DTSUyMDIxMF8wOCUyMDA2JTIwMjAwNl8wMDAwMS5QREYKUnVsZQlVcnVndWF5CTIwMDYJbWF4CS0JT2N0CVN1bj49MQkgMjowMAkxOjAwCVMKUnVsZQlVcnVndWF5CTIwMDcJbWF4CS0JTWFyCVN1bj49OAkgMjowMAkwCS0KIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lIEFtZXJpY2EvTW9udGV2aWRlbwktMzo0NDo0NCAtCUxNVAkxODk4IEp1biAyOAoJCQktMzo0NDo0NCAtCU1NVAkxOTIwIE1heSAgMQkjIE1vbnRldmlkZW8gTVQKCQkJLTM6MzAJVXJ1Z3VheQlVWSVzVAkxOTQyIERlYyAxNAkjIFVydWd1YXkgVGltZQoJCQktMzowMAlVcnVndWF5CVVZJXNUCgojIFZlbmV6dWVsYQojCiMgRnJvbSBKb2huIFN0YWluZm9ydGggKDIwMDctMTEtMjgpOgojIC4uLiB0aGUgY2hhbmdlIGZvciBWZW5lenVlbGEgb3JpZ2luYWxseSBleHBlY3RlZCBmb3IgMjAwNy0xMi0zMSBoYXMKIyBiZWVuIGJyb3VnaHQgZm9yd2FyZCB0byAyMDA3LTEyLTA5LiAgVGhlIG9mZmljaWFsIGFubm91bmNlbWVudCB3YXMKIyBwdWJsaXNoZWQgdG9kYXkgaW4gdGhlICJHYWNldGEgT2ZpY2lhbCBkZSBsYSBSZXB1YmxpY2EgQm9saXZhcmlhbmEKIyBkZSBWZW5lenVlbGEsIG51bWVybyAzOC44MTkiIChvZmZpY2lhbCBkb2N1bWVudCBmb3IgYWxsIGxhd3Mgb3IKIyByZXNvbHV0aW9uIHB1YmxpY2F0aW9uKQojIGh0dHA6Ly93d3cuZ2xvYm92aXNpb24uY29tL25ld3MucGhwP25pZD03MjIwOAoKIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQpab25lCUFtZXJpY2EvQ2FyYWNhcwktNDoyNzo0NCAtCUxNVAkxODkwCgkJCS00OjI3OjQwIC0JQ01UCTE5MTIgRmViIDEyICMgQ2FyYWNhcyBNZWFuIFRpbWU/CgkJCS00OjMwCS0JVkVUCTE5NjUJICAgICAjIFZlbmV6dWVsYSBUaW1lCgkJCS00OjAwCS0JVkVUCTIwMDcgRGVjICA5IDAzOjAwCgkJCS00OjMwCS0JVkVUCg==