LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogICAgICAgICBBVE1FTCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgU3VwcG9ydA0KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogQ29weXJpZ2h0IChjKSAyMDA4LCBBdG1lbCBDb3Jwb3JhdGlvbg0KICoNCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAqDQogKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZGlzY2xhaW1lciBiZWxvdy4NCiAqDQogKiBBdG1lbCdzIG5hbWUgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogRElTQ0xBSU1FUjogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBVE1FTCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUg0KICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVCBBUkUNCiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFUTUVMIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQogKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQogKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwNCiAqIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YNCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQogKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsDQogKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICovDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLy8gXGRpcg0KLy8vICFQdXJwb3NlDQovLy8NCi8vLyBEZWZpbml0aW9uIGFuZCBmdW5jdGlvbnMgZm9yIHVzaW5nIEFUOTFTQU0zVUUtcmVsYXRlZCBmZWF0dXJlcywgc3VjaA0KLy8vIGhhcyBQSU8gcGlucywgbWVtb3JpZXMsIGV0Yy4NCi8vLw0KLy8vICFVc2FnZQ0KLy8vIC0jIFRoZSBjb2RlIGZvciBib290aW5nIHRoZSBib2FyZCBpcyBwcm92aWRlZCBieSBib2FyZF9jc3RhcnR1cC5TIGFuZA0KLy8vICAgIGJvYXJkX2xvd2xldmVsLmMuDQovLy8gLSMgRm9yIHVzaW5nIGJvYXJkIFBJT3MsIGJvYXJkIGNoYXJhY3RlcmlzdGljcyAoY2xvY2ssIGV0Yy4pIGFuZCBleHRlcm5hbA0KLy8vICAgIGNvbXBvbmVudHMsIHNlZSBib2FyZC5oLg0KLy8vIC0jIEZvciBtYW5pcHVsYXRpbmcgbWVtb3JpZXMgKHJlbWFwcGluZywgU0RSQU0sIGV0Yy4pLCBzZWUgYm9hcmRfbWVtb3JpZXMuaC4NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLy8gXHVuaXQNCi8vLyAhUHVycG9zZQ0KLy8vDQovLy8gRGVmaW5pdGlvbiBvZiBBVDkxU0FNM1VFLUVLIGNoYXJhY3RlcmlzdGljcywgQVQ5MVNBTTNVRS1kZXBlbmRhbnQgUElPcyBhbmQNCi8vLyBleHRlcm5hbCBjb21wb25lbnRzIGludGVyZmFjaW5nLg0KLy8vDQovLy8gIVVzYWdlDQovLy8gLSMgRm9yIG9wZXJhdGluZyBmcmVxdWVuY3kgaW5mb3JtYXRpb24sIHNlZSAiU0FNM1VFLUVLIC0gT3BlcmF0aW5nIGZyZXF1ZW5jaWVzIi4NCi8vLyAtIyBGb3IgdXNpbmcgcG9ydGFibGUgUElPIGRlZmluaXRpb25zLCBzZWUgIlNBTTNVRS1FSyAtIFBJTyBkZWZpbml0aW9ucyIuDQovLy8gLSMgU2V2ZXJhbCBVU0IgZGVmaW5pdGlvbnMgYXJlIGluY2x1ZGVkIGhlcmUgKHNlZSAiU0FNM1VFLUVLIC0gVVNCIGRldmljZSIpLg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KI2lmbmRlZiBCT0FSRF9IDQojZGVmaW5lIEJPQVJEX0gNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vICAgICAgICAgSGVhZGVycw0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KI2lmIGRlZmluZWQoYXQ5MXNhbTN1NCkNCiAgICAjaW5jbHVkZSAiYXQ5MXNhbTN1NC9jaGlwLmgiDQogICAgI2luY2x1ZGUgImF0OTFzYW0zdTQvQVQ5MVNBTTNVNC5oIg0KI2Vsc2UNCiAgICAjZXJyb3IgQm9hcmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc3BlY2lmaWVkIGNoaXAuDQojZW5kaWYNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vICAgICAgICAgRGVmaW5pdGlvbnMNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLy8gXHBhZ2UgIlNBTTNVRS1FSyAtIEJvYXJkIERlc2NyaXB0aW9uIg0KLy8vIFRoaXMgcGFnZSBsaXN0cyBzZXZlcmFsIGRlZmluaXRpb24gcmVsYXRlZCB0byB0aGUgYm9hcmQgZGVzY3JpcHRpb24uDQovLy8NCi8vLyAhRGVmaW5pdGlvbnMNCi8vLyAtIEJPQVJEX05BTUUNCg0KLy8vIE5hbWUgb2YgdGhlIGJvYXJkLg0KI2RlZmluZSBCT0FSRF9OQU1FICJBVDkxU0FNM1UtRUsiDQovLy8gQm9hcmQgZGVmaW5pdGlvbi4NCiNkZWZpbmUgYXQ5MXNhbTN1ZWsNCi8vLyBGYW1pbHkgZGVmaW5pdGlvbiAoYWxyZWFkeSBkZWZpbmVkKS4NCiNkZWZpbmUgYXQ5MXNhbTN1DQovLy8gQ29yZSBkZWZpbml0aW9uDQojZGVmaW5lIGNvcnRleG0zDQovLyBDaGlwIHR5cGUNCi8vI2RlZmluZSBmcGdhc2ltdWxhdGlvbg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KI2lmIGRlZmluZWQoZnBnYXNpbXVsYXRpb24pDQojZGVmaW5lIFBNQ19CWV9IQVJEDQojZW5kaWYNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vLyBccGFnZSAiU0FNM1VFLUVLIC0gT3BlcmF0aW5nIGZyZXF1ZW5jaWVzIg0KLy8vIFRoaXMgcGFnZSBsaXN0cyBzZXZlcmFsIGRlZmluaXRpb24gcmVsYXRlZCB0byB0aGUgYm9hcmQgb3BlcmF0aW5nIGZyZXF1ZW5jeQ0KLy8vICh3aGVuIHVzaW5nIHRoZSBpbml0aWFsaXphdGlvbiBkb25lIGJ5IGJvYXJkX2xvd2xldmVsLmMpLg0KLy8vDQovLy8gIURlZmluaXRpb25zDQovLy8gLSBCT0FSRF9NQUlOT1NDDQovLy8gLSBCT0FSRF9NQ0sNCg0KLy8vIEZyZXF1ZW5jeSBvZiB0aGUgYm9hcmQgbWFpbiBvc2NpbGxhdG9yLg0KI2RlZmluZSBCT0FSRF9NQUlOT1NDICAgICAgICAgICAxMjAwMDAwMA0KDQovLy8gTWFzdGVyIGNsb2NrIGZyZXF1ZW5jeSAod2hlbiB1c2luZyBib2FyZF9sb3dsZXZlbC5jKS4NCiNpZiAhZGVmaW5lZChmcGdhc2ltdWxhdGlvbikNCiNkZWZpbmUgQk9BUkRfTUNLICAgICAgICAgICAgICAgNDgwMDAwMDANCiNlbHNlDQojZGVmaW5lIEJPQVJEX01DSyAgICAgICAgICAgICAgIDIyNTc5MjAwDQojZW5kaWYNCg0KI2lmIGRlZmluZWQgKGZwZ2FzaW11bGF0aW9uKQ0KLy8jZGVmaW5lIEJPQVJEX0NvbmZpZ3VyZVNkcmFtKC4uLikgeyB9DQojZW5kaWYgLy8gZnBnYXNpbXVsYXRpb24NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFEQw0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vLyBBREMgY2xvY2sgZnJlcXVlbmN5LCBhdCAxMC1iaXQgcmVzb2x1dGlvbiAoaW4gSHopDQojZGVmaW5lIEFEQ19NQVhfQ0tfMTBCSVQgICAgICAgICA1MDAwMDAwDQovLy8gU3RhcnR1cCB0aW1lIG1heCwgcmV0dXJuIGZyb20gSWRsZSBtb2RlIChpbiC1cykNCiNkZWZpbmUgQURDX1NUQVJUVVBfVElNRV9NQVggICAgICAgMTUNCi8vLyBUcmFjayBhbmQgaG9sZCBBY3F1aXNpdGlvbiBUaW1lIG1pbiAoaW4gbnMpDQojZGVmaW5lIEFEQ19UUkFDS19IT0xEX1RJTUVfTUlOICAxMjAwDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLy8gXHBhZ2UgIlNBTTNVRS1FSyAtIFVTQiBkZXZpY2UiDQovLy8gVGhpcyBwYWdlIGxpc3RzIGNvbnN0YW50cyBkZXNjcmliaW5nIHNldmVyYWwgY2hhcmFjdGVyaXN0aWNzIChjb250cm9sbGVyDQovLy8gdHlwZSwgRCsgcHVsbC11cCB0eXBlLCBldGMuKSBvZiB0aGUgVVNCIGRldmljZSBjb250cm9sbGVyIG9mIHRoZSBjaGlwL2JvYXJkLg0KLy8vDQovLy8gIUNvbnN0YW50cw0KLy8vIC0gQk9BUkRfVVNCX1VEUA0KLy8vIC0gQk9BUkRfVVNCX1BVTExVUF9FWFRFUk5BTA0KLy8vIC0gQk9BUkRfVVNCX05VTUVORFBPSU5UUw0KLy8vIC0gQk9BUkRfVVNCX0VORFBPSU5UU19NQVhQQUNLRVRTSVpFDQovLy8gLSBCT0FSRF9VU0JfRU5EUE9JTlRTX0JBTktTDQoNCi8vLyBDaGlwIGhhcyBhIFVEUCBjb250cm9sbGVyLg0KI2RlZmluZSBCT0FSRF9VU0JfVURQSFMNCg0KLy8vIEluZGljYXRlcyB0aGUgRCsgcHVsbC11cCBpcyBleHRlcm5hbC4NCiNkZWZpbmUgQk9BUkRfVVNCX1BVTExVUF9JTlRFUk5BTA0KDQovLy8gTnVtYmVyIG9mIGVuZHBvaW50cyBpbiB0aGUgVVNCIGNvbnRyb2xsZXIuDQojZGVmaW5lIEJPQVJEX1VTQl9OVU1FTkRQT0lOVFMgICAgICAgICAgICAgIDcNCg0KLy8vIFJldHVybnMgdGhlIG1heGltdW0gcGFja2V0IHNpemUgb2YgdGhlIGdpdmVuIGVuZHBvaW50Lg0KI2RlZmluZSBCT0FSRF9VU0JfRU5EUE9JTlRTX01BWFBBQ0tFVFNJWkUoaSkgKCgoaSA9PSAwKXx8KGkgPT0gMyl8fChpID09IDQpKSA/IDY0IDpcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChpID09IDEpIHx8IChpID09IDIpKSA/IDUxMiA6IDEwMjQpKQ0KDQovLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIEZJRk8gYmFua3MgZm9yIHRoZSBnaXZlbiBlbmRwb2ludC4NCiNkZWZpbmUgQk9BUkRfVVNCX0VORFBPSU5UU19CQU5LUyhpKSAgICAgICAgKChpID09IDApID8gMSA6ICgoaSA9PSAxKSB8fCAoaSA9PSAyKSkgPyAyIDogMykNCg0KLy8vIFVTQiBhdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvciAoYnVzIG9yIHNlbGYgcG93ZXJlZCwgcmVtb3RlIHdha2V1cCkNCiNkZWZpbmUgQk9BUkRfVVNCX0JNQVRUUklCVVRFUyAgICAgICAgICAgICAgVVNCQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JfU0VMRlBPV0VSRURfUldBS0VVUA0KLy8jZGVmaW5lIEJPQVJEX1VTQl9CTUFUVFJJQlVURVMgICAgICAgICAgICBVU0JDb25maWd1cmF0aW9uRGVzY3JpcHRvcl9TRUxGUE9XRVJFRF9OT1JXQUtFVVANCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLy8gXHBhZ2UgIlNBTTNVRS1FSyAtIFBJTyBkZWZpbml0aW9ucyINCi8vLyBUaGlzIHBhZ2VzIGxpc3RzIGFsbCB0aGUgcGlvIGRlZmluaXRpb25zIGNvbnRhaW5lZCBpbiBib2FyZC5oLiBUaGUgY29uc3RhbnRzDQovLy8gYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjogUElOXyogZm9yIGEgY29uc3RhbnQgd2hpY2ggZGVmaW5lcw0KLy8vIGEgc2luZ2xlIFBpbiBpbnN0YW5jZSAoYnV0IG1heSBpbmNsdWRlIHNldmVyYWwgUElPcyBzaGFyaW5nIHRoZSBzYW1lDQovLy8gY29udHJvbGxlciksIGFuZCBQSU5TXyogZm9yIGEgbGlzdCBvZiBQaW4gaW5zdGFuY2VzLg0KLy8vDQovLy8gIUFEQw0KLy8vIC0gUElOX0FEQzBfQUQwDQovLy8gLSBQSU5fQURDMF9BRDENCi8vLyAtIFBJTl9BREMwX0FEMg0KLy8vIC0gUElOX0FEQzBfQUQzDQovLy8gLSBQSU5fQURDMF9BRDQNCi8vLyAtIFBJTl9BREMwX0FENQ0KLy8vIC0gUElOX0FEQzBfQUQ2DQovLy8gLSBQSU5fQURDMF9BRDcNCi8vLyAtIFBJTlNfQURDMA0KLy8vDQovLy8gIUNBTg0KLy8vIC0gUElOX0NBTl9UUkFOU0NFSVZFUl9SUw0KLy8vIC0gUElOX0NBTjFfVFJBTlNDRUlWRVJfVFhEDQovLy8gLSBQSU5fQ0FOMV9UUkFOU0NFSVZFUl9SWEQNCi8vLyAtIFBJTl9DQU4yX1RSQU5TQ0VJVkVSX1RYRA0KLy8vIC0gUElOX0NBTjJfVFJBTlNDRUlWRVJfUlhEDQovLy8gLSBQSU5TX0NBTl9UUkFOU0NFSVZFUl9UWEQNCi8vLyAtIFBJTlNfQ0FOX1RSQU5TQ0VJVkVSX1JYRA0KLy8vDQovLy8gIURCR1UNCi8vLyAtIFBJTlNfREJHVQ0KLy8vDQovLy8gIUpveXN0aWNrIGJ1dHRvbnMNCi8vLyAtIFBJTl9KT1lTVElDS19VUA0KLy8vIC0gUElOX0pPWVNUSUNLX0RPV04NCi8vLyAtIFBJTl9KT1lTVElDS19MRUZUDQovLy8gLSBQSU5fSk9ZU1RJQ0tfUklHSFQNCi8vLyAtIFBJTl9KT1lTVElDS19MQ0xJQywgUElOX0pPWVNUSUNLX1BVU0gNCi8vLyAtIFBJTlNfSk9ZU1RJQ0tfTU9WRSwgUElOU19KT1lTVElDS19DTElDLCBQSU5TX0pPWVNUSUNLDQovLy8gLSBKT1lTVElDS19VUA0KLy8vIC0gSk9ZU1RJQ0tfRE9XTg0KLy8vIC0gSk9ZU1RJQ0tfTEVGVA0KLy8vIC0gSk9ZU1RJQ0tfUklHSFQNCi8vLyAtIEpPWVNUSUNLX0xDTElDLCBKT1lTVElDS19QVVNIDQovLy8NCi8vLyAhRUJJDQovLy8gLSBQSU5fRUJJX0RBVEFfQlVTDQovLy8gLSBQSU5fRUJJX05DUzANCi8vLyAtIFBJTl9FQklfTlJEDQovLy8gLSBQSU5fRUJJX05XRQ0KLy8vIC0gUElOX0VCSV9BRERSX0JVUw0KLy8vIC0gUElOX0VCSV9QU1JBTV9OQlMNCi8vLyAtIFBJTl9FQklfQTENCi8vLyAtIFBJTl9FQklfTENEX1JTDQovLy8NCi8vLyAhTEVEcw0KLy8vIC0gUElOX0xFRF9EUzENCi8vLyAtIFBJTl9MRURfRFMyDQovLy8gLSBQSU5fTEVEX0RTMw0KLy8vIC0gUElOX0xFRF9EUzQNCi8vLyAtIFBJTlNfTEVEUw0KLy8vIC0gTEVEX0RTMQ0KLy8vIC0gTEVEX0RTMg0KLy8vIC0gTEVEX0RTMw0KLy8vIC0gTEVEX0RTNA0KLy8vDQovLy8gIU1DSQ0KLy8vIC0gUElOU19NQ0kNCi8vLw0KLy8vICFQdXNoIGJ1dHRvbnMNCi8vLyAtIFBJTl9QVVNIQlVUVE9OXzENCi8vLyAtIFBJTl9QVVNIQlVUVE9OXzINCi8vLyAtIFBJTl9QVVNIQlVUVE9OXzMNCi8vLyAtIFBJTl9QVVNIQlVUVE9OXzQNCi8vLyAtIFBJTlNfUFVTSEJVVFRPTlMNCi8vLyAtIFBVU0hCVVRUT05fQlAxDQovLy8gLSBQVVNIQlVUVE9OX0JQMg0KLy8vIC0gUFVTSEJVVFRPTl9CUDMNCi8vLyAtIFBVU0hCVVRUT05fQlA0DQovLy8NCi8vLyAhUFdNQw0KLy8vIC0gUElOX1BXTUNfUFdNMA0KLy8vIC0gUElOX1BXTUNfUFdNMQ0KLy8vIC0gUElOX1BXTUNfUFdNMg0KLy8vIC0gUElOX1BXTUNfUFdNMw0KLy8vIC0gUElOX1BXTUNfUFdNNA0KLy8vIC0gUElOX1BXTUNfUFdNNQ0KLy8vIC0gUElOX1BXTUNfUFdNNg0KLy8vIC0gUElOX1BXTUNfUFdNNw0KLy8vIC0gUElOX1BXTV9MRUQwDQovLy8gLSBQSU5fUFdNX0xFRDENCi8vLyAtIENIQU5ORUxfUFdNX0xFRDANCi8vLyAtIENIQU5ORUxfUFdNX0xFRDENCi8vLw0KLy8vICFTUEkwDQovLy8gLSBQSU5fU1BJMF9NSVNPDQovLy8gLSBQSU5fU1BJMF9NT1NJDQovLy8gLSBQSU5fU1BJMF9TUENLDQovLy8gLSBQSU5TX1NQSTANCi8vLyAtIFBJTl9TUEkwX05QQ1MzDQovLy8NCi8vLyAhU1BJMQ0KLy8vIC0gUElOX1NQSTFfTUlTTw0KLy8vIC0gUElOX1NQSTFfTU9TSQ0KLy8vIC0gUElOX1NQSTFfU1BDSw0KLy8vIC0gUElOU19TUEkxDQovLy8gLSBQSU5fU1BJMV9OUENTMw0KLy8vDQovLy8gISBTU0MNCi8vLyAtIFBJTl9TU0NfVEQNCi8vLyAtIFBJTl9TU0NfVEsNCi8vLyAtIFBJTl9TU0NfVEYNCi8vLyAtIFBJTlNfU1NDX0NPREVDDQovLy8NCi8vLyAhIFBDSzANCi8vLyAtIFBJTl9QQ0swDQovLy8NCi8vLyAhVFdJDQovLy8gLSBQSU5fVFdJX1RXRDANCi8vLyAtIFBJTl9UV0lfVFdDSzANCi8vLyAtIFBJTlNfVFdJDQovLy8NCi8vLyAhVVNBUlQwDQovLy8gLSBQSU5fVVNBUlQwX1JYRA0KLy8vIC0gUElOX1VTQVJUMF9UWEQNCi8vLyAtIFBJTl9VU0FSVDBfQ1RTDQovLy8gLSBQSU5fVVNBUlQwX1JUUw0KLy8vIC0gUElOX1VTQVJUMF9TQ0sNCi8vLw0KLy8vICFVU0INCi8vLyAtIFBJTl9VU0JfUFVMTFVQDQovLy8NCg0KLy8vIEFEQ19BRDAgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9BREMwX0FEMCB7MSA8PCAyMSwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLy8vIEFEQ19BRDEgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9BREMwX0FEMSB7MSA8PCAzMCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLy8vIEFEQ19BRDIgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9BREMwX0FEMiB7MSA8PCAzLCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovLy8gQURDX0FEMyBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX0FEQzBfQUQzIHsxIDw8IDQsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8vLyBBRENfQUQ0IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fQURDMF9BRDQgezEgPDwgMTUsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8vLyBBRENfQUQ1IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fQURDMF9BRDUgezEgPDwgMTYsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8vLyBBRENfQUQ2IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fQURDMF9BRDYgezEgPDwgMTcsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8vLyBBRENfQUQ3IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fQURDMF9BRDcgezEgPDwgMTgsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCg0KLy8vIFBpbnMgQURDDQojZGVmaW5lIFBJTlNfQURDIFBJTl9BREMwX0FEMCwgUElOX0FEQzBfQUQxLCBQSU5fQURDMF9BRDIsIFBJTl9BREMwX0FEMywgUElOX0FEQzBfQUQ0LCBQSU5fQURDMF9BRDUsIFBJTl9BREMwX0FENiwgUElOX0FEQzBfQUQ3DQoNCi8vLyBDQU4gRGVmaW5pdGlvbg0KLy8vIFJTOiBTZWxlY3QgaW5wdXQgZm9yIGhpZ2ggc3BlZWQgbW9kZSBvciBzaWxlbnQgbW9kZQ0KLy8jZGVmaW5lIFBJTl9DQU5fVFJBTlNDRUlWRVJfUlMgIHsxPDwyMywgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KLy8NCi8vLy8vIFRYRDogVHJhbnNtaXQgZGF0YSBpbnB1dA0KLy8jZGVmaW5lIFBJTl9DQU4xX1RSQU5TQ0VJVkVSX1RYRCAgezE8PDI3LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovLy8vLyBSWEQ6IFJlY2VpdmUgZGF0YSBvdXRwdXQNCi8vI2RlZmluZSBQSU5fQ0FOMV9UUkFOU0NFSVZFUl9SWEQgIHsxPDwyNiwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLy8vIFRYRDogVHJhbnNtaXQgZGF0YSBpbnB1dA0KLy8jZGVmaW5lIFBJTl9DQU4yX1RSQU5TQ0VJVkVSX1RYRCAgezE8PDI5LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovLy8vLyBSWEQ6IFJlY2VpdmUgZGF0YSBvdXRwdXQNCi8vI2RlZmluZSBQSU5fQ0FOMl9UUkFOU0NFSVZFUl9SWEQgIHsxPDwyOCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLy8vLy8gVFhEIHBpbnMNCi8vI2RlZmluZSBQSU5TX0NBTl9UUkFOU0NFSVZFUl9UWEQgIFBJTl9DQU4xX1RSQU5TQ0VJVkVSX1RYRCwgUElOX0NBTjJfVFJBTlNDRUlWRVJfVFhEDQovLy8vLyBSWEQgcGlucw0KLy8jZGVmaW5lIFBJTlNfQ0FOX1RSQU5TQ0VJVkVSX1JYRCAgUElOX0NBTjFfVFJBTlNDRUlWRVJfUlhELCBQSU5fQ0FOMl9UUkFOU0NFSVZFUl9SWEQNCg0KLy8vIERCR1UgcGlucyAoRFRYRCBhbmQgRFJYRCkgZGVmaW5pdGlvbnMsIFBBMTEsMTIuDQojZGVmaW5lIFBJTlNfREJHVSAgezB4MDAwMDE4MDAsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCg0KLy8vIEVCSQ0KI2RlZmluZSBQSU5fRUJJX0RBVEFfQlVTICAgICAgICAgICAgezB4ZmUwMWZlMDAsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfSwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsxIDw8IDYsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9CLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX05DUzAgICAgICAgICAgICAgICAgezEgPDwgMjAsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX05SRCAgICAgICAgICAgICAgICAgezEgPDwgMTksIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX05XRSAgICAgICAgICAgICAgICAgezEgPDwgMjMsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX1BTUkFNX0FERFJfQlVTICAgICAgezB4M2YwMGZmZiwgQVQ5MUNfQkFTRV9QSU9DLCBBVDkxQ19JRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQojZGVmaW5lIFBJTl9FQklfUFNSQU1fTkJTICAgICAgICAgICB7MSA8PCA3LCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX1BVTExVUH0sIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MSA8PCAxNSwgQVQ5MUNfQkFTRV9QSU9DLCBBVDkxQ19JRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQojZGVmaW5lIFBJTl9FQklfQTEgICAgICAgICAgICAgICAgICB7MSA8PCA4LCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX1BVTExVUH0NCg0KI2RlZmluZSBQSU5fRUJJX05DUzIgICAgICAgICAgICAgICAgezEgPDwgMTYsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX0xDRF9SUyAgICAgICAgICAgICAgezEgPDwgOCwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fUEVSSVBIX0IsIFBJT19QVUxMVVB9DQoNCg0KLy8vIExFRCAjMCBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX0xFRF8wICAgezEgPDwgMCwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KLy8vIExFRCAjMSBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX0xFRF8xICAgezEgPDwgMiwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KLy8vIExFRCAjMiBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX0xFRF8yICAgezEgPDwgMSwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KLy8vIExpc3Qgb2YgYWxsIExFRHMgZGVmaW5pdGlvbnMuDQojZGVmaW5lIFBJTlNfTEVEUyAgIFBJTl9MRURfMCwgUElOX0xFRF8xLCBQSU5fTEVEXzINCg0KLy8vLy8gTUNJIHBpbnMgZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOU19NQ0kgIHsweDFmOCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9LCBcDQogICAgICAgICAgICAgICAgICAgICAgezEgPDwgMywgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KDQovLy8gTUNJIHBpbiBDYXJkIERldGVjdA0KI2RlZmluZSBQSU5fTUNJX0NEIFwNCiAgICB7QVQ5MUNfUElPX1BBMjUsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KDQovLy8gUHVzaCBidXR0b24gIzAgZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMSAgICB7MSA8PCAxOCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUdMSVRDSCB8IFBJT19QVUxMVVB9DQovLy8gUHVzaCBidXR0b24gIzEgZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMiAgICB7MSA8PCAxOSwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUdMSVRDSCB8IFBJT19QVUxMVVB9DQovLy8gUHVzaCBidXR0b24gIzIgZGVmaW5pdGlvbg0KLy8vIExpc3Qgb2YgYWxsIHB1c2ggYnV0dG9uIGRlZmluaXRpb25zLg0KI2RlZmluZSBQSU5TX1BVU0hCVVRUT05TICAgIFBJTl9QVVNIQlVUVE9OXzEsIFBJTl9QVVNIQlVUVE9OXzINCg0KLy8vIFB1c2ggYnV0dG9uICMxIGluZGV4Lg0KI2RlZmluZSBQVVNIQlVUVE9OX0JQMSAgIDANCi8vLyBQdXNoIGJ1dHRvbiAjMiBpbmRleC4NCiNkZWZpbmUgUFVTSEJVVFRPTl9CUDIgICAxDQoNCi8vLyBTaW11bGF0ZWQgam95c3RpY2sgTEVGVCBpbmRleC4NCiNkZWZpbmUgSk9ZU1RJQ0tfTEVGVCAgICAgICAwDQovLy8gU2ltdWxhdGVkIGpveXN0aWNrIFJJR0hUIGluZGV4Lg0KI2RlZmluZSBKT1lTVElDS19SSUdIVCAgICAgIDENCg0KLy8vIFNQSTAgTUlTTyBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOX1NQSTBfTUlTTyAgezEgPDwgMTMsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8vLyBTUEkwIE1PU0kgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9TUEkwX01PU0kgIHsxIDw8IDE0LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovLy8gU1BJMCBTUENLIHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fU1BJMF9TUENLICB7MSA8PCAxNSwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLy8vIFNQSTAgY2hpcCBzZWxlY3QgMiBwaW4gZGVmaW5pdGlvbi4NCi8vI2RlZmluZSBQSU5fU1BJMF9OUENTMl9QQzE0ICB7MSA8PCAgMTQsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1NQSTBfTlBDUzJfUEMxNCAgezEgPDwgIDE0LCBBVDkxQ19CQVNFX1BJT0MsIEFUOTFDX0lEX1BJT0MsIFBJT19PVVRQVVRfMCwgUElPX1BVTExVUH0NCi8vLyBMaXN0IG9mIFNQSTAgcGluIGRlZmluaXRpb25zIChNSVNPLCBNT1NJICYgU1BDSykuDQojZGVmaW5lIFBJTlNfU1BJMCAgICAgIFBJTl9TUEkwX01JU08sIFBJTl9TUEkwX01PU0ksIFBJTl9TUEkwX1NQQ0sNCg0KLy8vIFNTQyBwaW5zIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9TU0NfVEQgICAgICB7MHgxIDw8IDI2LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9TU0NfVEsgICAgICB7MHgxIDw8IDI4LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9TU0NfVEYgICAgICB7MHgxIDw8IDMwLCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTlNfU1NDX0NPREVDICAgICAgIFBJTl9TU0NfVEQsICBQSU5fU1NDX1RLLCBQSU5fU1NDX1RGDQoNCi8vLyBQQ0swDQojZGVmaW5lIFBJTl9QQ0swICAgICAgICB7MHgxIDw8IDIxLCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQoNCi8vLyBUV0kgcGlucyBkZWZpbml0aW9uLg0KI2RlZmluZSBUV0lfVjNYWA0KI2RlZmluZSBQSU5fVFdJX1RXRDAgICAgezB4MSA8PCA5LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9UV0lfVFdDSzAgICAgezB4MSA8PCAxMCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5TX1RXSTAgICAgIFBJTl9UV0lfVFdEMCwgUElOX1RXSV9UV0NLMA0KI2RlZmluZSBQSU5fVFdJX1RXRDEgICAgezB4MSA8PCAyNCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVFdJX1RXQ0sxICAgIHsweDEgPDwgMjUsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOU19UV0kxICAgICBQSU5fVFdJX1RXRDEsIFBJTl9UV0lfVFdDSzENCg0KLy8vIFVTQVJUMA0KI2RlZmluZSBQSU5fVVNBUlQwX1JYRCAgICB7MHgxIDw8IDE5LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfVFhEICAgIHsweDEgPDwgMTgsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMF9DVFMgICAgezB4MSA8PCA4LCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfUlRTICAgIHsweDEgPDwgNywgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQwX1NDSyAgICB7MHgxIDw8IDE3LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQoNCi8vLyBVU0FSVDENCiNkZWZpbmUgUElOX1VTQVJUMV9SWEQgICAgezB4MSA8PCAyMSwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX1RYRCAgICB7MHgxIDw8IDIwLCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDFfQ1RTICAgIHsweDEgPDwgMjMsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9SVFMgICAgezB4MSA8PCAyMiwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX1NDSyAgICB7MHgxIDw8IDI0LCBBVDkxQ19CQVNFX1BJT0EsIEFUOTFDX0lEX1BJT0EsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQoNCi8vLyBVU0IgVkJ1cyBtb25pdG9yaW5nIHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fVVNCX1ZCVVMgICAgezEgPDwgMzEsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8vIFxwYWdlICJTQU0zVUUtRUsgLSBFeHRlcm5hbCBjb21wb25lbnRzIg0KLy8vIFRoaXMgcGFnZSBsaXN0cyB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCBvbi1ib2FyZCBjb21wb25lbnRzDQovLy8gbG9jYXRlZCBpbiB0aGUgYm9hcmQuaCBmaWxlIGZvciB0aGUgQVQ5MVNBTTNVRS1FSy4NCi8vLw0KLy8vICFBVDQ1IERhdGFmbGFzaCBDYXJkDQovLy8gLSBCT0FSRF9BVDQ1X0FfU1BJX0JBU0UNCi8vLyAtIEJPQVJEX0FUNDVfQV9TUElfSUQNCi8vLyAtIEJPQVJEX0FUNDVfQV9TUElfUElOUw0KLy8vIC0gQk9BUkRfQVQ0NV9BX1NQSQ0KLy8vIC0gQk9BUkRfQVQ0NV9BX05QQ1MNCi8vLyAtIEJPQVJEX0FUNDVfQV9OUENTX1BJTg0KLy8vDQovLy8gIUFUNDUgRGF0YWZsYXNoIChzZXJpYWwgb25ib2FyZCBEYXRhRmxhc2gpDQovLy8gLSBCT0FSRF9BVDQ1X0JfU1BJX0JBU0UNCi8vLyAtIEJPQVJEX0FUNDVfQl9TUElfSUQNCi8vLyAtIEJPQVJEX0FUNDVfQl9TUElfUElOUw0KLy8vIC0gQk9BUkRfQVQ0NV9CX1NQSQ0KLy8vIC0gQk9BUkRfQVQ0NV9CX05QQ1MNCi8vLyAtIEJPQVJEX0FUNDVfQl9OUENTX1BJTg0KLy8vDQovLy8gIUFUMjYgU2VyaWFsIEZsYXNoDQovLy8gLSBCT0FSRF9BVDI2X0FfU1BJX0JBU0UNCi8vLyAtIEJPQVJEX0FUMjZfQV9TUElfSUQNCi8vLyAtIEJPQVJEX0FUMjZfQV9TUElfUElOUw0KLy8vIC0gQk9BUkRfQVQyNl9BX1NQSQ0KLy8vIC0gQk9BUkRfQVQyNl9BX05QQ1MNCi8vLyAtIEJPQVJEX0FUMjZfQV9OUENTX1BJTg0KLy8vDQovLy8gIVNEIENhcmQNCi8vLyAtIE1DSTJfSU5URVJGQUNFDQovLy8gLSBCT0FSRF9TRF9NQ0lfQkFTRQ0KLy8vIC0gQk9BUkRfU0RfTUNJX0lEDQovLy8gLSBCT0FSRF9TRF9QSU5TDQovLy8gLSBCT0FSRF9TRF9TTE9UDQovLy8NCi8vLyAhUFNSQU0NCi8vLyAtIEJPQVJEX1BTUkFNX1BJTlMNCi8vLyAtIEJPQVJEX0xDRF9QSU5TDQoNCi8vLyBCYXNlIGFkZHJlc3Mgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSBkYXRhZmxhc2guDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9BX1NQSV9CQVNFICAgICAgICAgQVQ5MUNfQkFTRV9TUEkwDQovLy8vLyBJZGVudGlmaWVyIG9mIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQV9TUElfSUQgICAgICAgICAgIEFUOTFDX0lEX1NQSTANCi8vLy8vIFBpbnMgb2YgdGhlIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQV9TUElfUElOUyAgICAgICAgIFBJTlNfU1BJMA0KLy8vLy8gRGF0YWZsYWhzIFNQSSBudW1iZXIuDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9BX1NQSSAgICAgICAgICAgICAgMA0KLy8vLy8gQ2hpcCBzZWxlY3QgY29ubmVjdGVkIHRvIHRoZSBkYXRhZmxhc2guDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9BX05QQ1MgICAgICAgICAgICAgMw0KLy8vLy8gQ2hpcCBzZWxlY3QgcGluIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQV9OUENTX1BJTiAgICAgICAgIFBJTl9TUEkwX05QQ1MzDQoNCi8vLyBCYXNlIGFkZHJlc3Mgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSBkYXRhZmxhc2guDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9CX1NQSV9CQVNFICAgICAgICAgQVQ5MUNfQkFTRV9TUEkxDQovLy8vLyBJZGVudGlmaWVyIG9mIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQl9TUElfSUQgICAgICAgICAgIEFUOTFDX0lEX1NQSTENCi8vLy8vIFBpbnMgb2YgdGhlIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQl9TUElfUElOUyAgICAgICAgIFBJTlNfU1BJMQ0KLy8vLy8gRGF0YWZsYWhzIFNQSSBudW1iZXIuDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9CX1NQSSAgICAgICAgICAgICAgMQ0KLy8vLy8gQ2hpcCBzZWxlY3QgY29ubmVjdGVkIHRvIHRoZSBkYXRhZmxhc2guDQovLyNkZWZpbmUgQk9BUkRfQVQ0NV9CX05QQ1MgICAgICAgICAgICAgMw0KLy8vLy8gQ2hpcCBzZWxlY3QgcGluIGNvbm5lY3RlZCB0byB0aGUgZGF0YWZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUNDVfQl9OUENTX1BJTiAgICAgICAgIFBJTl9TUEkxX05QQ1MzDQoNCi8vLyBCYXNlIGFkZHJlc3Mgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSBzZXJpYWxmbGFzaC4NCi8vI2RlZmluZSBCT0FSRF9BVDI2X0FfU1BJX0JBU0UgICAgICAgICBBVDkxQ19CQVNFX1NQSTANCi8vLy8vIElkZW50aWZpZXIgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSBzZXJpYWxmbGFzaC4NCi8vI2RlZmluZSBCT0FSRF9BVDI2X0FfU1BJX0lEICAgICAgICAgICBBVDkxQ19JRF9TUEkwDQovLy8vLyBQaW5zIG9mIHRoZSBTUEkgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIHNlcmlhbGZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUMjZfQV9TUElfUElOUyAgICAgICAgIFBJTlNfU1BJMA0KLy8vLy8gU2VyaWFsZmxhc2ggU1BJIG51bWJlci4NCi8vI2RlZmluZSBCT0FSRF9BVDI2X0FfU1BJICAgICAgICAgICAgICAwDQovLy8vLyBDaGlwIHNlbGVjdCBjb25uZWN0ZWQgdG8gdGhlIHNlcmlhbGZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUMjZfQV9OUENTICAgICAgICAgICAgIDMNCi8vLy8vIENoaXAgc2VsZWN0IHBpbiBjb25uZWN0ZWQgdG8gdGhlIHNlcmlhbGZsYXNoLg0KLy8jZGVmaW5lIEJPQVJEX0FUMjZfQV9OUENTX1BJTiAgICAgICAgIFBJTl9TUEkwX05QQ1MzDQoNCi8vLyBIUyBNQ0kgaW50ZXJmYWNlDQojZGVmaW5lIE1DSTJfSU5URVJGQUNFDQovLy8gQmFzZSBhZGRyZXNzIG9mIHRoZSBNQ0kgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIFNEIGNhcmQuDQojZGVmaW5lIEJPQVJEX1NEX01DSV9CQVNFICAgICAgICAgICBBVDkxQ19CQVNFX01DSTAvL0FUOTFDX0JBU0VfTUNJDQovLy8vLyBQZXJpcGhlcmFsIGlkZW50aWZpZXIgb2YgdGhlIE1DSSBjb25uZWN0ZWQgdG8gdGhlIFNEIGNhcmQuDQojZGVmaW5lIEJPQVJEX1NEX01DSV9JRCAgICAgICAgICAgICBBVDkxQ19JRF9NQ0kwIC8vQVQ5MUNfSURfTUNJDQovLy8vLyBNQ0kgcGlucyB0aGF0IHNoYWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWNjZXNzIHRoZSBTRCBjYXJkLg0KI2RlZmluZSBCT0FSRF9TRF9QSU5TICAgICAgICAgICAgICAgUElOU19NQ0kNCi8vLy8vIE1DSSBzbG90IHRvIHdoaWNoIHRoZSBTRCBjYXJkIGlzIGNvbm5lY3RlZCB0by4NCiNkZWZpbmUgQk9BUkRfU0RfU0xPVCAgICAgICAgICAgICAgIE1DSV9TRF9TTE9UQQ0KLy8vLy8gTUNJIENhcmQgRGV0ZWN0IHBpbi4NCiNkZWZpbmUgQk9BUkRfU0RfUElOX0NEICAgICAgICAgICAgIFBJTl9NQ0lfQ0QNCg0KI2RlZmluZSBCT0FSRF9QU1JBTV9QSU5TICAgICAgICAgICAgUElOX0VCSV9EQVRBX0JVUywgUElOX0VCSV9OQ1MwLCBQSU5fRUJJX05SRCwgUElOX0VCSV9OV0UsIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSU5fRUJJX1BTUkFNX0FERFJfQlVTLCBQSU5fRUJJX1BTUkFNX05CUywgUElOX0VCSV9BMQ0KDQovLy8gSW5kaWNhdGVzIGJvYXJkIGhhcyBhbiBIWDgzNDcgZXh0ZXJuYWwgY29tcG9uZW50IHRvIG1hbmFnZSBMQ0QuDQojZGVmaW5lIEJPQVJEX0xDRF9IWDgzNDcNCg0KLy8vIExDRCBwaW5zIGRlZmluaXRpb24uDQojZGVmaW5lIEJPQVJEX0xDRF9QSU5TICAgICAgICAgICAgICBQSU5fRUJJX0RBVEFfQlVTLCBQSU5fRUJJX0xDRF9SUywgUElOX0VCSV9OUkQsIFBJTl9FQklfTldFLCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElOX0VCSV9OQ1MyDQovLy8gQmFja2xpZ2h0IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBCT0FSRF9CQUNLTElHSFRfUElOICAgICAgIHsxIDw8IDE5LCBBVDkxQ19CQVNFX1BJT0MsIEFUOTFDX0lEX1BJT0MsIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElPX09VVFBVVF8wLCBQSU9fREVGQVVMVH0NCi8vLyBEZWZpbmUgSFg4MzQ3IGJhc2UgYWRkcmVzcy4NCiNkZWZpbmUgQk9BUkRfTENEX0JBU0UgICAgICAgICAgICAweDYyMDAwMDAwDQovLy8gRGVmaW5lIEhYODM0NyByZWdpc3RlciBzZWxlY3Qgc2lnbmFsLg0KI2RlZmluZSBCT0FSRF9MQ0RfUlMgICAgICAgICAgICAgICgxIDw8IDEpDQovLy8gRGlzcGxheSB3aWR0aCBpbiBwaXhlbHMuDQojZGVmaW5lIEJPQVJEX0xDRF9XSURUSCAgICAgICAgICAgICAyNDANCi8vLyBEaXNwbGF5IGhlaWdodCBpbiBwaXhlbHMuDQojZGVmaW5lIEJPQVJEX0xDRF9IRUlHSFQgICAgICAgICAgICAzMjANCg0KLy8vIEluZGljYXRlcyBib2FyZCBoYXMgYW4gQURTNzg0MyBleHRlcm5hbCBjb21wb25lbnQgdG8gbWFuYWdlIFRvdWNoIFNjcmVlbg0KI2RlZmluZSBCT0FSRF9UU0NfQURTNzg0Mw0KDQovLy8gVG91Y2hzY3JlZW4gY29udHJvbGxlciBJUlEgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIFBJTl9UQ1NfSVJRIHtBVDkxQ19QSU9fUEEyNCwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQovLy8gVG91Y2hzY3JlZW4gY29udHJvbGxlciBCdXN5IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5fVENTX0JVU1kge0FUOTFDX1BJT19QQTIsIEFUOTFDX0JBU0VfUElPQSwgQVQ5MUNfSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KDQovLy8gQmFzZSBhZGRyZXNzIG9mIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgdG91Y2hzY3JlZW4gY29udHJvbGxlci4NCiNkZWZpbmUgQk9BUkRfVFNDX1NQSV9CQVNFICAgICAgICAgQVQ5MUNfQkFTRV9TUEkwDQovLy8gSWRlbnRpZmllciBvZiBTUEkgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuDQojZGVmaW5lIEJPQVJEX1RTQ19TUElfSUQgICAgICAgICAgIEFUOTFDX0lEX1NQSTANCi8vLyBQaW5zIG9mIHRoZSBTUEkgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuDQojZGVmaW5lIEJPQVJEX1RTQ19TUElfUElOUyAgICAgICAgIFBJTlNfU1BJMA0KLy8vIENoaXAgc2VsZWN0IGNvbm5lY3RlZCB0byB0aGUgdG91Y2hzY3JlZW4gY29udHJvbGxlci4NCiNkZWZpbmUgQk9BUkRfVFNDX05QQ1MgICAgICAgICAgICAgMi8vMg0KLy8vIENoaXAgc2VsZWN0IHBpbiBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuDQojZGVmaW5lIEJPQVJEX1RTQ19OUENTX1BJTiAgICAgICAgIFBJTl9TUEkwX05QQ1MyX1BDMTQNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vLyBccGFnZSAiU0FNM1VFLUVLIC0gTWVtb3JpZXMiDQovLy8gVGhpcyBwYWdlIGxpc3RzIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gaW50ZXJuYWwgJiBleHRlcm5hbCBvbi1ib2FyZCBtZW1vcmllcy4NCi8vLw0KLy8vICFFbWJlZGRlZCBGbGFzaA0KLy8vIC0gQk9BUkRfRkxBU0hfRUZDDQoNCi8vLyBJbnRlcm5hbCBTUkFNIGFkZHJlc3MNCiNkZWZpbmUgQVQ5MUNfSVNSQU0gICAgICAgICAgICAgICAgICAgQVQ5MUNfSVJBTQ0KI2RlZmluZSBBVDkxQ19JU1JBTV9TSVpFICAgICAgICAgQVQ5MUNfSVJBTV9TSVpFDQoNCiNkZWZpbmUgQVQ5MUNfSUZMQVNIICAgICAgICAgICAgICAgICAgICgweDgwMDAwKQ0KI2RlZmluZSBBVDkxQ19JRkxBU0hfU0laRSAgICAgICAgICAgICAgKDB4MjAwMDApDQojZGVmaW5lIEFUOTFDX0lGTEFTSF9QQUdFX1NJWkUgICAgICAgICAgICAgKDI1NikgLy8gSW50ZXJuYWwgRkxBU0ggMCBQYWdlIFNpemU6IDI1NiBieXRlcw0KI2RlZmluZSBBVDkxQ19JRkxBU0hfTkJfT0ZfUEFHRVMgICAgICAgICAgICg1MTIpIC8vIEludGVybmFsIEZMQVNIIDAgTnVtYmVyIG9mIFBhZ2VzOiA1MTINCiNkZWZpbmUgQVQ5MUNfSUZMQVNIX0xPQ0tfUkVHSU9OX1NJWkUgICAgICg4MTkyKSAvLyBJbnRlcm5hbCBGTEFTSCAwIExvY2sgUmVnaW9uIFNpemU6IDggS2J5dGVzDQojZGVmaW5lIEFUOTFDX0lGTEFTSF9OQl9PRl9MT0NLX0JJVFMgICAgICAgICgxNikgLy8gSW50ZXJuYWwgRkxBU0ggMCBOdW1iZXIgb2YgTG9jayBCaXRzOiAzMg0KI2lmIDANCiNkZWZpbmUgQVQ5MUNfSUZMQVNIMSAgICAgICAgICAgICAgICAgKDB4MTAwMDAwKQ0KI2RlZmluZSBBVDkxQ19JRkxBU0gxX1NJWkUgICAgICAgICAgICAgKDB4MjAwMDApDQojZGVmaW5lIEFUOTFDX0lGTEFTSDFfUEFHRV9TSVpFICAgICAgICAgICAgKDI1NikgLy8gSW50ZXJuYWwgRkxBU0ggMSBQYWdlIFNpemU6IDI1NiBieXRlcw0KI2RlZmluZSBBVDkxQ19JRkxBU0gxX05CX09GX1BBR0VTICAgICAgICAgICg1MTIpIC8vIEludGVybmFsIEZMQVNIIDEgTnVtYmVyIG9mIFBhZ2VzOiA1MTINCiNkZWZpbmUgQVQ5MUNfSUZMQVNIMV9MT0NLX1JFR0lPTl9TSVpFICAgKDgxOTIpIC8vIEludGVybmFsIEZMQVNIIDEgTG9jayBSZWdpb24gU2l6ZTogOCBLYnl0ZXMNCiNkZWZpbmUgQVQ5MUNfSUZMQVNIMV9OQl9PRl9MT0NLX0JJVFMgICAgICAgKDE2KSAvLyBJbnRlcm5hbCBGTEFTSCAxIE51bWJlciBvZiBMb2NrIEJpdHM6IDMyDQojZW5kaWYNCi8vLyBJbmRpY2F0ZXMgY2hpcCBoYXMgYW4gRUZDLg0KI2RlZmluZSBBVDkxQ19CQVNFX0VGQyAgICBBVDkxQ19CQVNFX0VGQzANCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vLyBccGFnZSAiU0FNM1VFLUVLIC0gRXh0ZXJuYWwgY29tcG9uZW50cyINCi8vLyBUaGlzIHBhZ2UgbGlzdHMgdGhlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZXh0ZXJuYWwgb24tYm9hcmQgY29tcG9uZW50cw0KLy8vIGxvY2F0ZWQgaW4gdGhlIGJvYXJkLmggZmlsZSBmb3IgdGhlIFNBTTNVRS1FSy4NCi8vLw0KLy8vICFJU083ODE2DQovLy8gLSBQSU5fU01BUlRDQVJEX0NPTk5FQ1QNCi8vLyAtIFBJTl9JU083ODE2X1JTVE1DDQovLy8gLSBQSU5TX0lTTzc4MTYNCg0KLy8vIFNtYXJ0Y2FyZCBkZXRlY3Rpb24gcGluDQovLyNkZWZpbmUgUElOX1NNQVJUQ0FSRF9DT05ORUNUICAgezEgPDwgNSwgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLy8vIFBJTiB1c2VkIGZvciByZXNldCB0aGUgc21hcnRjYXJkDQovLyNkZWZpbmUgUElOX0lTTzc4MTZfUlNUTUMgICAgICAgezEgPDwgNywgQVQ5MUNfQkFTRV9QSU9BLCBBVDkxQ19JRF9QSU9BLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KLy8vIFBpbnMgdXNlZCBmb3IgY29ubmVjdCB0aGUgc21hcnRjYXJkDQovLyNkZWZpbmUgUElOU19JU083ODE2ICAgICAgICAgICAgUElOX1VTQVJUMF9UWEQsIFBJTl9VU0FSVDBfU0NLLCBQSU5fSVNPNzgxNl9SU1RNQw0KDQovLy8gRG1hIGNoYW5uZWwgbnVtYmVyDQojZGVmaW5lIEJPQVJEX01DSV9ETUFfQ0hBTk5FTCAgICAgICAgICAgICAgICAgICAgICAgICAwDQovLy8gTUNJMCBETUEgaGFyZHdhcmUgaGFuZHNoYWtpbmcgSUQNCiNkZWZpbmUgRE1BX0hXX1NSQ19SRVFfSURfTUNJMCAgICAgIEFUOTFDX0hETUFfU1JDX1BFUl8wDQojZGVmaW5lIERNQV9IV19ERVNUX1JFUV9JRF9NQ0kwICAgICBBVDkxQ19IRE1BX0RTVF9QRVJfMA0KLy8vIE1DSTEgRE1BIGhhcmR3YXJlIGhhbmRzaGFraW5nIElEDQojZGVmaW5lIERNQV9IV19TUkNfUkVRX0lEX01DSTEgICAgICBBVDkxQ19IRE1BX1NSQ19QRVJfMTMNCiNkZWZpbmUgRE1BX0hXX0RFU1RfUkVRX0lEX01DSTEgICAgIEFUOTFDX0hETUFfRFNUX1BFUl8xMw0KLy8vIFNEIERNQSBoYXJkd2FyZSBoYW5kc2hha2luZyBJRA0KI2RlZmluZSBCT0FSRF9TRF9ETUFfSFdfU1JDX1JFUV9JRCAgICAgIERNQV9IV19TUkNfUkVRX0lEX01DSTANCiNkZWZpbmUgQk9BUkRfU0RfRE1BX0hXX0RFU1RfUkVRX0lEICAgICBETUFfSFdfREVTVF9SRVFfSURfTUNJMA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vLyBccGFnZSAiU0FNM1VFLUVLIC0gSW5kaXZpZHVhbCBjaGlwIGRlZmluaXRpb24iDQovLy8gVGhpcyBwYWdlIGxpc3RzIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGRpZmZlcmVudCBjaGlwJ3MgZGVmaW5pdGlvbg0KLy8vIGxvY2F0ZWQgaW4gdGhlIGJvYXJkLmggZmlsZSBmb3IgdGhlIFNBTTNVRS1FSy4NCg0KLy8vIERCR1UNCiNkZWZpbmUgQk9BUkRfREJHVV9JRCAgICAgICAgICAgICAgIEFUOTFDX0lEX0RCR1UNCg0KLy8vIFJ0Yw0KI2RlZmluZSBCT0FSRF9SVENfSUQgICAgICAgICAgICAgICAgQVQ5MUNfSURfUlRDDQoNCi8vLyBUd2kgZWVwcm9tDQojZGVmaW5lIEJPQVJEX0lEX1RXSV9FRVBST00gICAgICAgICBBVDkxQ19JRF9UV0kxDQojZGVmaW5lIEJPQVJEX0JBU0VfVFdJX0VFUFJPTSAgICAgICBBVDkxQ19CQVNFX1RXSTENCiNkZWZpbmUgQk9BUkRfUElOU19UV0lfRUVQUk9NICAgICAgIFBJTlNfVFdJMQ0KDQovLy8gVVNBUlQNCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX1JYRCAgICAgICAgUElOX1VTQVJUMV9SWEQNCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX1RYRCAgICAgICAgUElOX1VTQVJUMV9UWEQNCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX0NUUyAgICAgICAgUElOX1VTQVJUMV9DVFMNCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX1JUUyAgICAgICAgUElOX1VTQVJUMV9SVFMNCiNkZWZpbmUgQk9BUkRfVVNBUlRfQkFTRSAgICAgICAgICAgQVQ5MUNfQkFTRV9VUzENCiNkZWZpbmUgQk9BUkRfSURfVVNBUlQgICAgICAgICAgICAgQVQ5MUNfSURfVVMxDQoNCi8vLyBJbnRlcnJ1cHQgc291cmNlDQp0eXBlZGVmIGVudW0gSVJRbg0Kew0KLyoqKioqKiAgQ29ydGV4LU0zIFByb2Nlc3NvciBFeGNlcHRpb25zIE51bWJlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KICBOb25NYXNrYWJsZUludF9JUlFuICAgICAgICAgPSAtMTQsICAgIC8qITwgMiBOb24gTWFza2FibGUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KICBNZW1vcnlNYW5hZ2VtZW50X0lSUW4gICAgICAgPSAtMTIsICAgIC8qITwgNCBDb3J0ZXgtTTMgTWVtb3J5IE1hbmFnZW1lbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAqLw0KICBCdXNGYXVsdF9JUlFuICAgICAgICAgICAgICAgPSAtMTEsICAgIC8qITwgNSBDb3J0ZXgtTTMgQnVzIEZhdWx0IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLw0KICBVc2FnZUZhdWx0X0lSUW4gICAgICAgICAgICAgPSAtMTAsICAgIC8qITwgNiBDb3J0ZXgtTTMgVXNhZ2UgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAqLw0KICBTVkNhbGxfSVJRbiAgICAgICAgICAgICAgICAgPSAtNSwgICAgIC8qITwgMTEgQ29ydGV4LU0zIFNWIENhbGwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KICBEZWJ1Z01vbml0b3JfSVJRbiAgICAgICAgICAgPSAtNCwgICAgIC8qITwgMTIgQ29ydGV4LU0zIERlYnVnIE1vbml0b3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAqLw0KICBQZW5kU1ZfSVJRbiAgICAgICAgICAgICAgICAgPSAtMiwgICAgIC8qITwgMTQgQ29ydGV4LU0zIFBlbmQgU1YgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KICBTeXNUaWNrX0lSUW4gICAgICAgICAgICAgICAgPSAtMSwgICAgIC8qITwgMTUgQ29ydGV4LU0zIFN5c3RlbSBUaWNrIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAqLw0KDQovKioqKioqICBBVDkxU0FNM1U0IHNwZWNpZmljIEludGVycnVwdCBOdW1iZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiBJUk9uX1NVUEMgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9TVVBDICwgLy8gU1VQUExZIENPTlRST0xMRVINCiBJUk9uX1JTVEMgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9SU1RDICwgLy8gUkVTRVQgQ09OVFJPTExFUg0KIElST25fUlRDICAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1JUQyAgLCAvLyBSRUFMIFRJTUUgQ0xPQ0sNCiBJUk9uX1JUVCAgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9SVFQgICwgLy8gUkVBTCBUSU1FIFRJTUVSDQogSVJPbl9XREcgICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfV0RHICAsIC8vIFdBVENIRE9HIFRJTUVSDQogSVJPbl9QTUMgICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfUE1DICAsIC8vIFBNQw0KIElST25fRUZDMCAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX0VGQzAgLCAvLyBFRkMwDQogSVJPbl9FRkMxICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfRUZDMSAsIC8vIEVGQzENCiBJUk9uX0RCR1UgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9EQkdVICwgLy8gREJHVQ0KIElST25fSFNNQzQgICAgICAgICAgICAgICA9IEFUOTFDX0lEX0hTTUM0LCAvLyBIU01DNA0KIElST25fUElPQSAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1BJT0EgLCAvLyBQYXJhbGxlbCBJTyBDb250cm9sbGVyIEENCiBJUk9uX1BJT0IgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9QSU9CICwgLy8gUGFyYWxsZWwgSU8gQ29udHJvbGxlciBCDQogSVJPbl9QSU9DICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfUElPQyAsIC8vIFBhcmFsbGVsIElPIENvbnRyb2xsZXIgQw0KIElST25fVVMwICAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1VTMCAgLCAvLyBVU0FSVCAwDQogSVJPbl9VUzEgICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfVVMxICAsIC8vIFVTQVJUIDENCiBJUk9uX1VTMiAgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9VUzIgICwgLy8gVVNBUlQgMg0KIElST25fVVMzICAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1VTMyAgLCAvLyBVU0FSVCAzDQogSVJPbl9NQ0kwICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfTUNJMCAsIC8vIE11bHRpbWVkaWEgQ2FyZCBJbnRlcmZhY2UNCiBJUk9uX1RXSTAgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9UV0kwICwgLy8gVFdJIDANCiBJUk9uX1RXSTEgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9UV0kxICwgLy8gVFdJIDENCiBJUk9uX1NQSTAgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9TUEkwICwgLy8gU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlDQogSVJPbl9TU0MwICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfU1NDMCAsIC8vIFNlcmlhbCBTeW5jaHJvbm91cyBDb250cm9sbGVyIDANCiBJUk9uX1RDMCAgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9UQzAgICwgLy8gVGltZXIgQ291bnRlciAwDQogSVJPbl9UQzEgICAgICAgICAgICAgICAgID0gQVQ5MUNfSURfVEMxICAsIC8vIFRpbWVyIENvdW50ZXIgMQ0KIElST25fVEMyICAgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1RDMiAgLCAvLyBUaW1lciBDb3VudGVyIDINCiBJUk9uX1BXTUMgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9QV01DICwgLy8gUHVsc2UgV2lkdGggTW9kdWxhdGlvbiBDb250cm9sbGVyDQogSVJPbl9BRENDMCAgICAgICAgICAgICAgID0gQVQ5MUNfSURfQURDQzAsIC8vIEFEQyBjb250cm9sbGVyMA0KIElST25fQURDQzEgICAgICAgICAgICAgICA9IEFUOTFDX0lEX0FEQ0MxLCAvLyBBREMgY29udHJvbGxlcjENCiBJUk9uX0hETUEgICAgICAgICAgICAgICAgPSBBVDkxQ19JRF9IRE1BICwgLy8gSERNQQ0KIElST25fVURQSFMgICAgICAgICAgICAgICA9IEFUOTFDX0lEX1VEUEhTIC8vIFVTQiBEZXZpY2UgSGlnaCBTcGVlZA0KfSBJUlFuX1R5cGU7ICANCg0KLy8vIER1bW15IGRlZmluZSBTRFJBTSBidXMgd2lkdGggDQojZGVmaW5lIEJPQVJEX1NEUkFNX0JVU1dJRFRIICAgIDMyDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KI2RlZmluZSBQSU5fRUJJX05BTkRPRSAgICAgICAgICB7MSA8PCAxNywgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQojZGVmaW5lIFBJTl9FQklfTkFORFdFICAgICAgICAgIHsxIDw8IDE4LCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX1BVTExVUH0NCiNkZWZpbmUgUElOX0VCSV9OQU5EQ0xFICAgICAgICAgezEgPDwgMjIsIEFUOTFDX0JBU0VfUElPQiwgQVQ5MUNfSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fRUJJX05BTkRBTEUgICAgICAgICB7MSA8PCAyMSwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQoNCiNpZmRlZiBDSElQX05BTkRfQ1RSTA0KLy8vIE5hbmRmbGFzaCBjaGlwIGVuYWJsZSBwaW4gZGVmaW5pdGlvbi4NCiNkZWZpbmUgQk9BUkRfTkZfQ0VfUElOICAgICAgICAgezEgPDwgMTIsIEFUOTFDX0JBU0VfUElPQywgQVQ5MUNfSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KLy8vIE5hbmRmbGFzaCByZWFkeS9idXN5IHBpbiBkZWZpbml0aW9uLg0KI2RlZmluZSBCT0FSRF9ORl9SQl9QSU4gICAgICAgICB7MSA8PCAyNCwgQVQ5MUNfQkFTRV9QSU9CLCBBVDkxQ19JRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQoNCi8vLyBOYW5kZmxhc2ggY29udHJvbGxlciBwZXJpcGhlcmFsIHBpbnMgZGVmaW5pdGlvbi4NCiNkZWZpbmUgUElOU19OQU5ERkxBU0ggICAgICAgICAgQk9BUkRfTkZfQ0VfUElOLCBCT0FSRF9ORl9SQl9QSU4sIFBJTl9FQklfTkFORE9FLCBQSU5fRUJJX05BTkRXRSxcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJTl9FQklfTkFORENMRSwgUElOX0VCSV9OQU5EQUxFLCBQSU5fRUJJX0RBVEFfQlVTDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLy8vIEFkZHJlc3MgZm9yIHRyYW5zZmVycmluZyBjb21tYW5kIGJ5dGVzIHRvIHRoZSBuYW5kZmxhc2guDQojZGVmaW5lIEJPQVJEX05GX0NPTU1BTkRfQUREUiAgIDB4NjAwMDAwMDANCi8vLyBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgYWRkcmVzcyBieXRlcyB0byB0aGUgbmFuZGZsYXNoLg0KI2RlZmluZSBCT0FSRF9ORl9BRERSRVNTX0FERFIgICAweDYxMjAwMDAwDQovLy8gQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgYnl0ZXMgdG8gdGhlIG5hbmRmbGFzaC4NCiNkZWZpbmUgQk9BUkRfTkZfREFUQV9BRERSICAgICAgMHg2MTAwMDAwMA0KDQojZWxzZQ0KLy8vIE5hbmRmbGFzaCBjb250cm9sbGVyIHBlcmlwaGVyYWwgcGlucyBkZWZpbml0aW9uLg0KI2RlZmluZSBQSU5TX05BTkRGTEFTSCAgICAgICAgICBCT0FSRF9ORl9DRV9QSU4sIEJPQVJEX05GX1JCX1BJTiwgUElOX0VCSV9OQU5ET0UsIFBJTl9FQklfTkFORFdFLFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElOX0VCSV9OQU5EQ0xFLCBQSU5fRUJJX05BTkRBTEUNCi8vLyBOYW5kZmxhc2ggY2hpcCBlbmFibGUgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIEJPQVJEX05GX0NFX1BJTiAgICAgICAgIHsxIDw8IDEyLCBBVDkxQ19CQVNFX1BJT0MsIEFUOTFDX0lEX1BJT0MsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQovLy8gTmFuZGZsYXNoIHJlYWR5L2J1c3kgcGluIGRlZmluaXRpb24uDQojZGVmaW5lIEJPQVJEX05GX1JCX1BJTiAgICAgICAgIHsxIDw8IDI0LCBBVDkxQ19CQVNFX1BJT0IsIEFUOTFDX0lEX1BJT0IsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCi8vLyBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgY29tbWFuZCBieXRlcyB0byB0aGUgbmFuZGZsYXNoLg0KI2RlZmluZSBCT0FSRF9ORl9DT01NQU5EX0FERFIgICAweDYxNDAwMDAwDQovLy8gQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGFkZHJlc3MgYnl0ZXMgdG8gdGhlIG5hbmRmbGFzaC4NCiNkZWZpbmUgQk9BUkRfTkZfQUREUkVTU19BRERSICAgMHg2MTIwMDAwMA0KLy8vIEFkZHJlc3MgZm9yIHRyYW5zZmVycmluZyBkYXRhIGJ5dGVzIHRvIHRoZSBuYW5kZmxhc2guDQojZGVmaW5lIEJPQVJEX05GX0RBVEFfQUREUiAgICAgIDB4NjEwMDAwMDANCg0KI2VuZGlmDQoNCiNlbmRpZiAvLyNpZm5kZWYgQk9BUkRfSA0KDQo=