LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogICAgICAgICBTQU0gU29mdHdhcmUgUGFja2FnZSBMaWNlbnNlDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEF0bWVsIENvcnBvcmF0aW9uDQogKg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KICoNCiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLA0KICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBkaXNjbGFpbWVyIGJlbG93Lg0KICoNCiAqIEF0bWVsJ3MgbmFtZSBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAqDQogKiBESVNDTEFJTUVSOiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFUTUVMICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQogKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5UIEFSRQ0KICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVRNRUwgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCiAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLA0KICogT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRg0KICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwNCiAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKi8NCg0KLyoqDQogKiBccGFnZSBzYW1hNWQ0X2VrX2JvYXJkX2Rlc2Mgc2FtYTVkNC1FSyAtIEJvYXJkIERlc2NyaXB0aW9uDQogKg0KICogXHNlY3Rpb24gUHVycG9zZQ0KICoNCiAqIFRoaXMgZmlsZSBpcyBkZWRpY2F0ZWQgdG8gZGVzY3JpYmUgdGhlIHNhbWE1ZDQtRUsgYm9hcmQuDQogKg0KICogXHNlY3Rpb24gQ29udGVudHMNCiAqDQogKiAgLSBzYW1hNWQ0LUVLIA0KICogIC0gRm9yIHNhbWE1ZDQtRUsgaW5mb3JtYXRpb24sIHNlZSBcc3VicGFnZSBzYW1hNWQ0X2VrX2JvYXJkX2luZm8uDQogKiAgLSBGb3Igb3BlcmF0aW5nIGZyZXF1ZW5jeSBpbmZvcm1hdGlvbiwgc2VlIFxzdWJwYWdlIHNhbWE1ZDRfZWtfb3BmcmVxLg0KICogIC0gRm9yIHVzaW5nIHBvcnRhYmxlIFBJTyBkZWZpbml0aW9ucywgc2VlIFxzdWJwYWdlIHNhbWE1ZDRfZWtfcGlvZGVmLg0KICogIC0gRm9yIG9uLWJvYXJkIG1lbW9yaWVzLCBzZWUgXHN1YnBhZ2Ugc2FtYTVkNF9la19tZW0uDQogKiAgLSBTZXZlcmFsIFVTQiBkZWZpbml0aW9ucyBhcmUgaW5jbHVkZWQgaGVyZSwgc2VlIFxzdWJwYWdlIHNhbWE1ZDRfZWtfdXNiLg0KICogIC0gRm9yIEV4dGVybmFsIGNvbXBvbmVudHMsIHNlZSBcc3VicGFnZSBzYW1hNWQ0X2VrX2V4dGNvbXAuDQogKiAgLSBGb3IgSW5kaXZpZHVhbCBjaGlwIGRlZmluaXRpb24sIHNlZSBcc3VicGFnZSBzYW1hNWQ0X2VrX2NoaXBkZWYuDQogKg0KICogVG8gZ2V0IG1vcmUgc29mdHdhcmUgZGV0YWlscyBhbmQgdGhlIGZ1bGwgbGlzdCBvZiBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gdGhlDQogKiBzYW1hNWQ0LUVLIGJvYXJkIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgc291cmNlIGZpbGU6DQogKiBccmVmIGJvYXJkLmhcbg0KICoNCiAqIFxzZWN0aW9uIFVzYWdlDQogKg0KICogIC0gVGhlIGNvZGUgZm9yIGJvb3RpbmcgdGhlIGJvYXJkIGlzIHByb3ZpZGVkIGJ5IGJvYXJkX2NzdGFydHVwX3h4eC5jIGFuZA0KICogICAgYm9hcmRfbG93bGV2ZWwuYy4NCiAqICAtIEZvciB1c2luZyBib2FyZCBQSU9zLCBib2FyZCBjaGFyYWN0ZXJpc3RpY3MgKGNsb2NrLCBldGMuKSBhbmQgZXh0ZXJuYWwNCiAqICAgIGNvbXBvbmVudHMsIHNlZSBib2FyZC5oLg0KICogIC0gRm9yIG1hbmlwdWxhdGluZyBtZW1vcmllcywgc2VlIGJvYXJkX21lbW9yaWVzLmguDQogKg0KICogVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGFzIGEgdGVtcGxhdGUgYW5kIG1vZGlmaWVkIHRvIGZpdCBhIGN1c3RvbSBib2FyZCwgd2l0aA0KICogc3BlY2lmaWMgUElPcyB1c2FnZSBvciBtZW1vcnkgY29ubmVjdGlvbnMuDQogKi8NCg0KLyoqDQogKiAgXGZpbGUgYm9hcmQuaA0KICoNCiAqICBEZWZpbml0aW9uIG9mIHNhbWE1ZDQtRUsgDQogKiAgY2hhcmFjdGVyaXN0aWNzLCBzYW1hNWQ0LWRlcGVuZGFudCBQSU9zIGFuZCBleHRlcm5hbCBjb21wb25lbnRzIGludGVyZmFjaW5nLg0KICovDQoNCiNpZm5kZWYgX0JPQVJEXw0KI2RlZmluZSBfQk9BUkRfDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogICAgICAgIEhlYWRlcnMNCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojaW5jbHVkZSAiY2hpcC5oIg0KDQovKioNCiAqIExpYmMgcG9ydGluZyBsYXllcnMNCiAqLw0KI2lmIGRlZmluZWQgICAoIF9fQ0NfQVJNICAgKSAvKiBLZWlsIHV2aXNpb24gNCAqLw0KIyAgICBpbmNsdWRlICJpbmNsdWRlL3JhbmQuaCINCiNlbGlmIGRlZmluZWQgKCBfX0lDQ0FSTV9fICkgLyogSUFSIEV3YXJtIDUuNDErICovDQojICAgIGluY2x1ZGUgImluY2x1ZGUvcmFuZC5oIg0KI2VsaWYgZGVmaW5lZCAoICBfX0dOVUNfXyAgKSAvKiBHQ0MgQ1MzIDIwMDlxMy02OC8yMDEwcTEtMTg4ICovDQojICAgIGluY2x1ZGUgImluY2x1ZGUvcmFuZC5oIg0KIyAgICBpbmNsdWRlICJpbmNsdWRlL3N5c2NhbGxzLmgiIC8qKiBSZWRIYXQgTmV3bGliIG1pbmltYWwgc3R1YiAqLw0KI2VuZGlmDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogICAgICAgIERlZmluaXRpb25zDQogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiBccGFnZSBzYW1hNWQ0X2VrX2JvYXJkX2luZm8gInNhbWE1ZDQtRUsgLSBCb2FyZCBpbmZvcm1hdGlvbnMiDQogKiBUaGlzIHBhZ2UgbGlzdHMgc2V2ZXJhbCBkZWZpbml0aW9uIHJlbGF0ZWQgdG8gdGhlIGJvYXJkIGRlc2NyaXB0aW9uLg0KICoNCiAqIFxzZWN0aW9uIERlZmluaXRpb25zDQogKiAtIFxyZWYgQk9BUkRfTkFNRQ0KICovDQoNCi8qKiBOYW1lIG9mIHRoZSBib2FyZCAqLw0KI2RlZmluZSBCT0FSRF9OQU1FICJzYW1hNWQ0eC1FSyINCi8qKiBCb2FyZCBkZWZpbml0aW9uICovDQojZGVmaW5lIHNhbWE1ZDRlaw0KLyoqIEZhbWlseSBkZWZpbml0aW9uIChhbHJlYWR5IGRlZmluZWQpICovDQojaWYgIWRlZmluZWQgc2FtYTVkNA0KI2RlZmluZSBzYW1hNWQ0DQojZW5kaWYNCi8qKiBDb3JlIGRlZmluaXRpb24gKi8NCiNkZWZpbmUgY29ydGV4YTUNCg0KDQovLyNkZWZpbmUgQk9BUkRfUkVWX0FfVkINCi8vI2RlZmluZSBCT0FSRF9SRVZfQV9FSw0KI2RlZmluZSBCT0FSRF9SRVZfQl9FSw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiAgXHBhZ2Ugc2FtYTVkNF9la19vcGZyZXEgInNhbWE1ZDQtRUsgLSBPcGVyYXRpbmcgZnJlcXVlbmNpZXMiDQogKiAgVGhpcyBwYWdlIGxpc3RzIHNldmVyYWwgZGVmaW5pdGlvbiByZWxhdGVkIHRvIHRoZSBib2FyZCBvcGVyYXRpbmcgZnJlcXVlbmN5DQogKiAgKHdoZW4gdXNpbmcgdGhlIGluaXRpYWxpemF0aW9uIGRvbmUgYnkgYm9hcmRfbG93bGV2ZWwuYykuDQogKg0KICogIFxzZWN0aW9uIERlZmluaXRpb25zDQogKiAgLSBccmVmIEJPQVJEX01BSU5PU0MNCiAqICAtIFxyZWYgQk9BUkRfTUNLDQogKi8NCg0KLyoqIEZyZXF1ZW5jeSBvZiB0aGUgYm9hcmQgbWFpbiBvc2NpbGxhdG9yICovDQojZGVmaW5lIEJPQVJEX01BSU5PU0MgICAgICAgICAgIDEyMDAwMDAwDQoNCi8qKiBNYXN0ZXIgY2xvY2sgZnJlcXVlbmN5ICh3aGVuIHVzaW5nIGJvYXJkX2xvd2xldmVsLmMpICovDQojZGVmaW5lIEJPQVJEX01DSyAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykoKEJPQVJEX01BSU5PU0MgLyAzIC8gMikgKiA4OCApKQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiBccGFnZSBzYW1hNWQ0X2VrX3Bpb2RlZiAic2FtYTVkNC1FSyAtIFBJTyBkZWZpbml0aW9ucyINCiAqIFRoaXMgcGFnZXMgbGlzdHMgYWxsIHRoZSBwaW8gZGVmaW5pdGlvbnMgY29udGFpbmVkIGluIGJvYXJkLmguIFRoZSBjb25zdGFudHMNCiAqIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246IFBJTl8qIGZvciBhIGNvbnN0YW50IHdoaWNoIGRlZmluZXMNCiAqIGEgc2luZ2xlIFBpbiBpbnN0YW5jZSAoYnV0IG1heSBpbmNsdWRlIHNldmVyYWwgUElPcyBzaGFyaW5nIHRoZSBzYW1lDQogKiBjb250cm9sbGVyKSwgYW5kIFBJTlNfKiBmb3IgYSBsaXN0IG9mIFBpbiBpbnN0YW5jZXMuDQogKg0KICogREJHVQ0KICogLSBccmVmIFBJTlNfREJHVQ0KICoNCiAqIFVTQVJUMA0KICogLSBccmVmIFBJTl9VU0FSVDBfVFhEDQogKiAtIFxyZWYgUElOX1VTQVJUMF9SWEQNCiAqIC0gXHJlZiBQSU5fVVNBUlQwX1JUUw0KICogLSBccmVmIFBJTl9VU0FSVDBfQ1RTDQogKiAtIFxyZWYgUElOX1VTQVJUMF9TQ0sNCiAqIA0KICogVFdJMA0KICogLSBccmVmIFBJTl9UV0lfVFdEMA0KICogLSBccmVmIFBJTl9UV0lfVFdDSzANCiAqIC0gXHJlZiBQSU5TX1RXSTANCiAqDQogKiBTUEkwDQogKiAtIFxyZWYgUElOX1NQSTBfTUlTTw0KICogLSBccmVmIFBJTl9TUEkwX01PU0kNCiAqIC0gXHJlZiBQSU5fU1BJMF9TUENLDQogKiAtIFxyZWYgUElOX1NQSTBfTlBDUzANCiAqIC0gXHJlZiBQSU5TX1NQSTANCiAqDQogKiBTU0MNCiAqIC0gXHJlZiBQSU5fU1NDX1REDQogKiAtIFxyZWYgUElOX1NTQ19USw0KICogLSBccmVmIFBJTl9TU0NfVEYNCiAqIC0gXHJlZiBQSU5fU1NDX1JEDQogKiAtIFxyZWYgUElOX1NTQ19SSw0KICogLSBccmVmIFBJTl9TU0NfUkYNCiAqIC0gXHJlZiBQSU5TX1NTQ19DT0RFQw0KICoNCiAqIEVNQUMwDQogKiAtIFxyZWYgUElOX0VNQUMwX1RYQ0sNCiAqIC0gXHJlZiBQSU5fRU1BQzBfVFgwDQogKiAtIFxyZWYgUElOX0VNQUMwX1RYMQ0KICogLSBccmVmIFBJTl9FTUFDMF9UWDINCiAqIC0gXHJlZiBQSU5fRU1BQzBfVFgzDQogKiAtIFxyZWYgUElOX0VNQUMwX1RYRU4NCiAqIC0gXHJlZiBQSU5fRU1BQzBfUlhFUg0KICogLSBccmVmIFBJTl9FTUFDMF9SWERWDQogKiAtIFxyZWYgUElOX0VNQUMwX1JYMA0KICogLSBccmVmIFBJTl9FTUFDMF9SWDENCiAqIC0gXHJlZiBQSU5fRU1BQzBfUlgyDQogKiAtIFxyZWYgUElOX0VNQUMwX1JYMw0KICogLSBccmVmIFBJTl9FTUFDMF9NREMNCiAqIC0gXHJlZiBQSU5fRU1BQzBfTURJTw0KICogLSBccmVmIFBJTl9FTUFDMF9JTlRSDQogKiAtIFxyZWYgUElOU19FTUFDMF9NSUkNCiAqIC0gXHJlZiBQSU5TX0VNQUMwX1JNSUkNCiAqIExDRA0KICogLSBccmVmIFBJTlNfTENEDQogKg0KICogQURDDQogKiAtIFxyZWYgUElOX0FEVFJHDQogKg0KICogSVNJDQogKiAtIFxyZWYgUElOX0lTSV9NQ0sNCiAqIC0gXHJlZiBQSU5fSVNJX1ZTWU5DDQogKiAtIFxyZWYgUElOX0lTSV9IU1lOQw0KICogLSBccmVmIFBJTl9JU0lfUENLDQogKiAtIFxyZWYgUElOX0lTSV9QSU5TX0RBVEENCiAqIC0gXHJlZiBQSU5TX0lTSSANCiAqLw0KDQovKiogTGlzdCBvZiBhbGwgREJHVSBwaW4gZGVmaW5pdGlvbnMuICovDQoNCi8qKiBEQkdVIE1vbml0b3IgSU8gcGluIChkZXRlY3QgYW55IERCR1Ugb3BlcmF0aW9uKS4gKi8NCiNkZWZpbmUgUElOX0RCR1VfTU9OIHtQSU9fUEIyNEFfRFJYRCwgUElPQiwgSURfUElPQiwgUElPX0lOUFVULCBQSU9fSVRfUklTRV9FREdFfQ0KLyoqIERCR1UgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTlNfREJHVSAgIHtQSU9fUEIyNEFfRFJYRCB8IFBJT19QQjI1QV9EVFhELCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KDQovKiogTGlzdCBvZiBhbGwgVVNBUlQgcGluIGRlZmluaXRpb25zLiAqLw0KDQovKiogVVNBUlQwIFRYRCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9UWEQgIHtQSU9fUEQxM0FfVFhEMCwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDAgUlhEIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQwX1JYRCAge1BJT19QRDEyQV9SWEQwLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUMCBSVFMgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9VU0FSVDBfUlRTICB7UElPX1BEMTFBX1JUUzAsIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVVNBUlQwIENUUyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9DVFMgIHtQSU9fUEQxMEFfQ1RTMCwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDAgU0NLIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQwX1NDSyAge1BJT19QRDI4QV9TQ0swLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KDQovKiogVVNBUlQxIFRYRCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9UWEQgIHtQSU9fUEQxN0FfVFhEMSwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDEgUlhEIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQxX1JYRCAge1BJT19QRDE2QV9SWEQxLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUMSBSVFMgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9VU0FSVDFfUlRTICB7UElPX1BEMTVBX1JUUzEsIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVVNBUlQxIENUUyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9DVFMgIHtQSU9fUEQxNEFfQ1RTMSwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDEgU0NLIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQxX1NDSyAge1BJT19QRDI5QV9TQ0sxLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KDQovKiogVVNBUlQyIFRYRCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMl9UWEQgIHtQSU9fUEUyNkJfVFhEMiwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDIgUlhEIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQyX1JYRCAge1BJT19QRTI1Ql9SWEQyLCBQSU9FLCBJRF9QSU9FLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUMiBSVFMgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9VU0FSVDJfUlRTICB7UElPX1BFMjRCX1JUUzIsIFBJT0UsIElEX1BJT0UsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogVVNBUlQyIENUUyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUMl9DVFMgIHtQSU9fUEUyM0JfQ1RTMiwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDIgU0NLIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQyX1NDSyAge1BJT19QRTIwQl9TQ0syLCBQSU9FLCBJRF9QSU9FLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KDQovKiogVVNBUlQzIFRYRCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUM19UWEQgIHtQSU9fUEUxN0JfVFhEMywgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDMgUlhEIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVVNBUlQzX1JYRCAge1BJT19QRTE2Ql9SWEQzLCBQSU9FLCBJRF9QSU9FLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUMyBTQ0sgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9VU0FSVDNfU0NLICB7UElPX1BFMTVCX1NDSzMsIFBJT0UsIElEX1BJT0UsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQoNCg0KLyoqIFVTQVJUNCBUWEQgcGluIGRlZmluaXRpb24uICovDQovLyNkZWZpbmUgUElOX1VTQVJUNF9UWEQgIHtQSU9fUEUyN0JfVFhENCwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBVU0FSVDQgUlhEIHBpbiBkZWZpbml0aW9uLiAqLw0KLy8jZGVmaW5lIFBJTl9VU0FSVDRfUlhEICB7UElPX1BFMjZCX1JYRDQsIFBJT0UsIElEX1BJT0UsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogVVNBUlQ0IFJUUyBwaW4gZGVmaW5pdGlvbi4gKi8NCi8vI2RlZmluZSBQSU5fVVNBUlQ0X1JUUyAge1BJT19QRTI4Ql9SVFM0LCBQSU9FLCBJRF9QSU9FLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUNCBDVFMgcGluIGRlZmluaXRpb24uICovDQovLyNkZWZpbmUgUElOX1VTQVJUNF9DVFMgIHtQSU9fUEUwQ19DVFM0LCBQSU9FLCBJRF9QSU9FLCBQSU9fUEVSSVBIX0MsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQVJUNCBTQ0sgcGluIGRlZmluaXRpb24uICovDQovLyNkZWZpbmUgUElOX1VTQVJUNF9TQ0sgIHtQSU9fUEUyNUJfU0NLNCwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCg0KLyoqIFBJTiB1c2VkIGZvciByZXNldCB0aGUgc21hcnRjYXJkICovDQojZGVmaW5lIFBJTl9JU083ODE2X1JTVE1DICAgICAgIHsxIDw8IDEwLCBQSU9ELCBJRF9QSU9ELCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KLyoqIFBpbnMgdXNlZCBmb3IgY29ubmVjdCB0aGUgc21hcnRjYXJkICovDQojZGVmaW5lIFBJTlNfSVNPNzgxNiAgICAgICAgICAgIFBJTl9VU0FSVDFfVFhELCBQSU5fVVNBUlQxX1NDSyxQSU5fSVNPNzgxNl9SU1RNQw0KDQovKiogTGlzdCBvZiBhbGwgVFdJIHBpbiBkZWZpbml0aW9ucy4gKi8NCg0KLyoqIFRXSTAgZGF0YSBwaW4gKi8NCiNkZWZpbmUgUElOX1RXSV9UV0QwICAge1BJT19QQTMwQV9UV0QwLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFRXSTAgY2xvY2sgcGluICovDQojZGVmaW5lIFBJTl9UV0lfVFdDSzAgIHtQSU9fUEEzMUFfVFdDSzAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVFdJMCBwaW5zICovDQojZGVmaW5lIFBJTlNfVFdJMCAgICAgIFBJTl9UV0lfVFdEMCwgUElOX1RXSV9UV0NLMA0KDQovKiogVFdJMSBkYXRhIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXRDEgICB7UElPX1BFMjlDX1RXRDEsIFBJT0UsIElEX1BJT0UsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQovKiogVFdJMSBjbG9jayBwaW4gKi8NCiNkZWZpbmUgUElOX1RXSV9UV0NLMSAge1BJT19QRTMwQ19UV0NLMSwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCi8qKiBUV0kxIHBpbnMgKi8NCiNkZWZpbmUgUElOU19UV0kxICAgICAgUElOX1RXSV9UV0QxLCBQSU5fVFdJX1RXQ0sxDQoNCi8qKiBUV0kyIGRhdGEgcGluICovDQojZGVmaW5lIFBJTl9UV0lfVFdEMiAgIHtQSU9fUEIyOUFfVFdEMiwgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBUV0kyIGNsb2NrIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXQ0syICB7UElPX1BCMzBBX1RXQ0syLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFRXSTIgcGlucyAqLw0KI2RlZmluZSBQSU5TX1RXSTIgICAgICBQSU5fVFdJX1RXRDIsIFBJTl9UV0lfVFdDSzINCg0KLyoqIFRXSTMgZGF0YSBwaW4gKi8NCiNkZWZpbmUgUElOX1RXSV9UV0QzICAge1BJT19QQzI1Ql9UV0QzLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfSANCi8qKiBUV0kzIGNsb2NrIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXQ0szICB7UElPX1BDMjZCX1RXQ0szLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFRXSTMgcGlucyAqLw0KI2RlZmluZSBQSU5TX1RXSTMgICAgICBQSU5fVFdJX1RXRDMsIFBJTl9UV0lfVFdDSzMgIA0KDQovKiogTGlzdCBvZiBhbGwgQ0FOIHBpbiBkZWluaXRpb25zLiAqLw0KLyoqIENBTjAgcGluIFRYICovDQojZGVmaW5lIFBJTl9DQU4wX1RYICAgICB7UElPX1BEMTVDX0NBTlRYMCwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCi8qKiBDQU4wIHBpbiBSWCAqLw0KI2RlZmluZSBQSU5fQ0FOMF9SWCAgICAge1BJT19QRDE0Q19DQU5SWDAsIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQovKiogQ0FOMCBwaW5zICovDQojZGVmaW5lIFBJTlNfQ0FOMCAgICAgICBQSU5fQ0FOMF9UWCwgUElOX0NBTjBfUlgNCi8qKiBDQU4xIHBpbiBUWCAqLw0KI2RlZmluZSBQSU5fQ0FOMV9UWCAgICAge1BJT19QQjE1Ql9DQU5UWDEsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogQ0FOMSBwaW4gUlggKi8NCiNkZWZpbmUgUElOX0NBTjFfUlggICAgIHtQSU9fUEIxNEJfQ0FOUlgxLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIENBTjAgcGlucyAqLw0KI2RlZmluZSBQSU5TX0NBTjEgICAgICAgUElOX0NBTjFfVFgsIFBJTl9DQU4xX1JYDQoNCg0KLyoqIExpc3Qgb2YgYWxsIFNQSSBwaW4gZGVmaW5pdGlvbnMuICovDQoNCi8qKiBTUEkwIE1JU08gcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9TUEkwX01JU08gICAgIHtQSU9fUEMwQV9TUEkwX01JU08sIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogU1BJMCBNT1NJIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJMF9NT1NJICAgICB7UElPX1BDMUFfU1BJMF9NT1NJLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSTAgU1BDSyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSTBfU1BDSyAgICAge1BJT19QQzJBX1NQSTBfU1BDSywgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkwIGNoaXAgc2VsZWN0IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJMF9OUENTMCAgICB7UElPX1BDM0FfU1BJMF9OUENTMCwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBMaXN0IG9mIFNQSTAgcGluIGRlZmluaXRpb25zIChNSVNPLCBNT1NJICYgU1BDSykuICovDQojZGVmaW5lIFBJTlNfU1BJMCAgICAgICAgIFBJTl9TUEkwX01JU08sIFBJTl9TUEkwX01PU0ksIFBJTl9TUEkwX1NQQ0sNCg0KLyoqIFNQSTEgTUlTTyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSTFfTUlTTyAgICAge1BJT19QQjE4QV9TUEkxX01JU08sIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogU1BJMSBNT1NJIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJMV9NT1NJICAgICB7UElPX1BCMTlBX1NQSTFfTU9TSSwgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkxIFNQQ0sgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9TUEkxX1NQQ0sgICAgIHtQSU9fUEIyMEFfU1BJMV9TUENLLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSTEgY2hpcCBzZWxlY3QgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9TUEkxX05QQ1MwICAgIHtQSU9fUEIyMUFfU1BJMV9OUENTMCwgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkxIGNoaXAgc2VsZWN0IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJMV9OUENTMiAgICB7UElPX1BCMjNBX1NQSTFfTlBDUzIsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogTGlzdCBvZiBTUEkxIHBpbiBkZWZpbml0aW9ucyAoTUlTTywgTU9TSSAmIFNQQ0spLiAqLw0KI2RlZmluZSBQSU5TX1NQSTEgICAgICAgICBQSU5fU1BJMV9NSVNPLCBQSU5fU1BJMV9NT1NJLCBQSU5fU1BJMV9TUENLDQoNCg0KLyoqIFNQSTIgTUlTTyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSTJfTUlTTyAgICAge1BJT19QRDExQl9TUEkyX01JU08sIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1BJMiBNT1NJIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJMl9NT1NJICAgICB7UElPX1BEMTNCX1NQSTJfTU9TSSwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkyIFNQQ0sgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9TUEkyX1NQQ0sgICAgIHtQSU9fUEQxNUJfU1BJMl9TUENLLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSTIgY2hpcCBzZWxlY3QgMCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSTJfTlBDUzAgICAge1BJT19QRDE3Ql9TUEkyX05QQ1MwLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSTIgY2hpcCBzZWxlY3QgMSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSTJfTlBDUzEgICAge1BJT19QQjE0Ql9TUEkyX05QQ1MxLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIExpc3Qgb2YgU1BJMSBwaW4gZGVmaW5pdGlvbnMgKE1JU08sIE1PU0kgJiBTUENLKS4gKi8NCiNkZWZpbmUgUElOU19TUEkyICAgICAgICAgUElOX1NQSTJfTUlTTywgUElOX1NQSTJfTU9TSSwgUElOX1NQSTJfU1BDSw0KDQovKiogTGlzdCBvZiBhbGwgU1NDIHBpbiBkZWZpbml0aW9ucy4gKi8NCg0KLyoqIFNTQyBwaW4gVHJhbnNtaXR0ZXIgRGF0YSAoVEQpICovDQojZGVmaW5lIFBJTl9TU0NfVEQwICAgICAge1BJT19QQjI4Ql9URDAsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBUcmFuc21pdHRlciBDbG9jayAoVEspICovDQojZGVmaW5lIFBJTl9TU0NfVEswICAgICAge1BJT19QQjI3Ql9USzAsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBUcmFuc21pdHRlciBGcmFtZVN5bmMgKFRGKSAqLw0KI2RlZmluZSBQSU5fU1NDX1RGMCAgICAgIHtQSU9fUEIzMUJfVEYwLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFNTQyBwaW4gUkQgKi8NCiNkZWZpbmUgUElOX1NTQ19SRDAgICAgICB7UElPX1BCMjlCX1JEMCwgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBTU0MgcGluIFJLICovDQojZGVmaW5lIFBJTl9TU0NfUkswICAgICAge1BJT19QQjI2Ql9SSzAsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBSRiAqLw0KI2RlZmluZSBQSU5fU1NDX1JGMCAgICAgIHtQSU9fUEIzMEJfUkYwLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KDQovKiogU1NDIHBpbiBUcmFuc21pdHRlciBEYXRhIChURCkgKi8NCiNkZWZpbmUgUElOX1NTQ19URDEgICAgICB7MHgxIDw8IDIxLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFNTQyBwaW4gVHJhbnNtaXR0ZXIgQ2xvY2sgKFRLKSAqLw0KI2RlZmluZSBQSU5fU1NDX1RLMSAgICAgIHsweDEgPDwgMTksIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBUcmFuc21pdHRlciBGcmFtZVN5bmMgKFRGKSAqLw0KI2RlZmluZSBQSU5fU1NDX1RGMSAgICAgIHsweDEgPDwgMjAsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBSRCAqLw0KI2RlZmluZSBQSU5fU1NDX1JEMSAgICAgIHsweDEgPDwgMjMsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBSSyAqLw0KI2RlZmluZSBQSU5fU1NDX1JLMSAgICAgIHsweDEgPDwgMjQsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBSRiAqLw0KI2RlZmluZSBQSU5fU1NDX1JGMSAgICAgIHsweDEgPDwgMjIsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQoNCg0KLyoqIFNTQyBwaW5zIGRlZmluaXRpb24gZm9yIGNvZGVjLiAqLw0KI2RlZmluZSBQSU5TX1NTQ19DT0RFQyAgIFBJTl9TU0NfVEQwLCAgUElOX1NTQ19USzAsIFBJTl9TU0NfVEYwLCBQSU5fU1NDX1JEMCwgIFBJTl9TU0NfUkswLCBQSU5fU1NDX1JGMA0KDQoNCi8qKiBMQ0QgcGluIGxpc3QuICovDQojZGVmaW5lIFBJTlNfTENEX1BJT0EgICB7MHgzRkZFRkVGRSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOU19MQ0QgICAgICAgIFBJTlNfTENEX1BJT0ENCi8qKiBBREMgQURUUkcgcGluIChQRDE5KS4gKi8NCiNkZWZpbmUgUElOX0FEVFJHICAgICAgIHtQSU9fUEUzMUFfQURUUkcsIFBJT0UsIElEX1BJT0UsIFBJT19QRVJJUEhfQSwgUElPX1BVTExVUH0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtYTVkNF9la191c2IgInNhbWE1ZDQtRUsgLSBVU0IgZGV2aWNlIg0KICoNCiAqIFxzZWN0aW9uIERlZmluaXRpb25zDQogKiAtIFxyZWYgQk9BUkRfVVNCX0JNQVRUUklCVVRFUw0KICogLSBccmVmIENISVBfVVNCX1VEUA0KICogLSBccmVmIENISVBfVVNCX1BVTExVUF9JTlRFUk5BTA0KICogLSBccmVmIENISVBfVVNCX05VTUVORFBPSU5UUw0KICogLSBccmVmIENISVBfVVNCX0VORFBPSU5UU19NQVhQQUNLRVRTSVpFDQogKiAtIFxyZWYgQ0hJUF9VU0JfRU5EUE9JTlRTX0JBTktTDQogKi8NCg0KLyoqIFVTQiBWQnVzIHBpbiAqLw0KI2RlZmluZSBQSU5fVVNCX1ZCVVMgICAgICB7UElPX1BFMzEsIFBJT0UsIElEX1BJT0UsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogVVNCIE92ZXJDdXJyZW50IGRldGVjdGlvbiovDQojZGVmaW5lIFBJTl9VU0JfT1ZDVVIgICAgIHtQSU9fUEQ5LCBQSU9ELCBJRF9QSU9ELCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQovKiogVVNCIFBvd2VyIEVuYWJsZSBBOk1pY3JvQUI6QWN0aXZlIGxvdyAqLw0KI2RlZmluZSBQSU5fVVNCX1BPV0VSX0VOQSB7UElPX1BFMTAsIFBJT0UsIElEX1BJT0UsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQovKiogVVNCIFBvd2VyIEVuYWJsZSBCOkE6QWN0aXZlIGxvdyAgKi8NCiNkZWZpbmUgUElOX1VTQl9QT1dFUl9FTkIge1BJT19QRTExLCBQSU9FLCBJRF9QSU9FLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KLyoqIFVTQiBQb3dlciBFbmFibGUgQzpBOkFjdGl2ZSBsb3cgICovDQojZGVmaW5lIFBJTl9VU0JfUE9XRVJfRU5DIHtQSU9fUEUxMiwgUElPRSwgSURfUElPRSwgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCg0KLyoqIFVTQiBhdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvciAoYnVzIG9yIHNlbGYgcG93ZXJlZCwgcmVtb3RlIHdha2V1cCkgKi8NCiNkZWZpbmUgQk9BUkRfVVNCX0JNQVRUUklCVVRFUyAgIFVTQkNvbmZpZ3VyYXRpb25EZXNjcmlwdG9yX1NFTEZQT1dFUkVEX05PUldBS0VVUA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiBccGFnZSBzYW1hNWQ0X2VrX21lbSAic2FtYTVkNC1FSyAtIE1lbW9yaWVzIg0KICogVGhpcyBwYWdlIGxpc3RzIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gaW50ZXJuYWwgJiBleHRlcm5hbCBvbi1ib2FyZCBtZW1vcmllcy4NCiAqDQogKiBcc2VjdGlvbiBTZHJhbQ0KICoNCiAqIC0gXHJlZiBFQklfU0RSQU1fUElOUw0KICoNCiAqIFxzZWN0aW9uIE5hbmRmbGFzaA0KICogLSBccmVmIFBJTlNfTkFOREZMQVNIDQogKiAtIFxyZWYgQk9BUkRfTkZfSU9fUElOUw0KICogLSBccmVmIEJPQVJEX05GX0NFX1BJTg0KICogLSBccmVmIEJPQVJEX05GX1JCX1BJTg0KICovDQoNCg0KLyoqIE5hbmRmbGFzaCBJTyBwaW4gZGVmaW5pdGlvbi4qLw0KI2RlZmluZSBCT0FSRF9ORl9JT19QSU5TICAgICAgICB7MHgwMDA3RkZFMCwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBCT0FSRF9ORl9DRV9QSU4gICAgICAgICB7MCwgMCwgMCwgMCwgMH0NCi8qKiBOYW5kZmxhc2ggY29udHJvbGxlciBwZXJpcGhlcmFsIHBpbnMgZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOU19OQU5ERkxBU0ggICAgICAgICAgQk9BUkRfTkZfSU9fUElOUw0KDQovKiogQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGNvbW1hbmQgYnl0ZXMgdG8gdGhlIG5hbmRmbGFzaCwgQ0xFIEEyMiovDQojZGVmaW5lIEJPQVJEX05GX0NPTU1BTkRfQUREUiAgIDB4ODA0MDAwMDANCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgYWRkcmVzcyBieXRlcyB0byB0aGUgbmFuZGZsYXNoLCBBTEUgQTIxKi8NCiNkZWZpbmUgQk9BUkRfTkZfQUREUkVTU19BRERSICAgMHg4MDIwMDAwMCANCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBieXRlcyB0byB0aGUgbmFuZGZsYXNoLiovIA0KI2RlZmluZSBCT0FSRF9ORl9EQVRBX0FERFIgICAgICAweDgwMDAwMDAwDQoNCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgY29tbWFuZCBieXRlcyB0byB0aGUgbm9yZmxhc2guICovDQojZGVmaW5lIEJPQVJEX05PUkZMQVNIX0FERFIgICAgIDB4MTAwMDAwMDANCi8qKiBEZWZhdWx0IE5PUiBidXMgc2l6ZSBhZnRlciBwb3dlciB1cCByZXNldCAqLw0KI2RlZmluZSBCT0FSRF9OT1JGTEFTSF9ERlRfQlVTX1NJWkUgMTYNCg0KLyoqIERkcmFtIHR5cGUgKi8NCiNkZWZpbmUgRERSQU1fTVQ0N0g2NE0xNkhSICAgIDANCiNkZWZpbmUgRERSQU1fTVQ0N0gxMjhNMTZSVCAgIDENCiNkZWZpbmUgQk9BUkRfRERSQU1fVFlQRSAgICAgIEREUkFNX01UNDdIMTI4TTE2UlQNCg0KLyoqIFBIWSBhZGRyZXNzICovDQojZGVmaW5lIEJPQVJEX0VNQUNfUEhZX0FERFIgICAgICAgICAxDQovKiogUEhZIENvbXBvbmVudCAqLw0KI2RlZmluZSBCT0FSRF9FTUFDX1BIWV9DT01QX0tTWjgwNTFSTkwgMQ0KLyoqIEJvYXJkIEVNQUMgcG93ZXIgY29udHJvbCAtIEFMV0FZUyBPTiAqLw0KI2RlZmluZSBCT0FSRF9FTUFDX1BPV0VSX0FMV0FZU19PTg0KLyoqIEJvYXJkIEVNQUMgd29yayBtb2RlIC0gUk1JSS9NSUkgKCAxIC8gMCApICovDQojZGVmaW5lIEJPQVJEX0VNQUNfTU9ERV9STUlJICAgICAgICAxDQoNCi8qKiBUaGUgUElOIGxpc3Qgb2YgUElPIGZvciBFTUFDICovDQojZGVmaW5lIEJPQVJEX0VNQUNfUElOUyAgICAgICAgICB7MHgzRkYsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9LFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoMTw8MzApLFBJT0UsIElEX1BJT0UsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCg0KLyoqIFRoZSBydW50aW1lIHBpbiBjb25maWd1cmUgbGlzdCBmb3IgRU1BQyAqLw0KI2RlZmluZSBCT0FSRF9FTUFDX1JVTl9QSU5TIEJPQVJEX0VNQUNfUElOUw0KDQovKiogUEhZIGFkZHJlc3MgKi8NCiNkZWZpbmUgQk9BUkRfR01BQ19QSFlfQUREUiAgICAgICAgIDANCiNkZWZpbmUgQk9BUkRfR01BQ19QSFlfQ09NUF9LU1o5MDIxUk5MIDENCiNkZWZpbmUgQk9BUkRfR01BQ19QSFlfQ09NUF9LU1o4MDgxUk5MIDENCiNkZWZpbmUgQk9BUkRfR01BQ19QT1dFUl9BTFdBWVNfT04NCiNkZWZpbmUgQk9BUkRfR01BQ19NT0RFX1JHTUlJICAgICAgICAxDQoNCi8vLyBUaGUgUElOIGxpc3Qgb2YgUElPIGZvciBFTUFDDQojZGVmaW5lIEJPQVJEX0dNQUNfUElOUzAgICAgICAgICAgezB4MzMzQzUsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9LFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KDE8PDYpLFBJT0UsIElEX1BJT0UsIFBJT19JTlBVVCwgICAgUElPX1BVTExVUH0NCi8vLyBUaGUgcnVudGltZSBwaW4gY29uZmlndXJlIGxpc3QgZm9yIEVNQUMNCiNkZWZpbmUgQk9BUkRfR01BQ19SVU5fUElOUzAgQk9BUkRfR01BQ19QSU5TMA0KDQovLy8gVGhlIFBJTiBsaXN0IG9mIFBJTyBmb3IgRU1BQw0KI2RlZmluZSBCT0FSRF9HTUFDX1BJTlMxICAgICAgICAgIHsweEMwRkMxNCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0sXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoMTw8NyksUElPRSwgSURfUElPRSwgUElPX0lOUFVULCAgICBQSU9fUFVMTFVQfQ0KLy8vIFRoZSBydW50aW1lIHBpbiBjb25maWd1cmUgbGlzdCBmb3IgRU1BQw0KI2RlZmluZSBCT0FSRF9HTUFDX1JVTl9QSU5TMSBCT0FSRF9HTUFDX1BJTlMxDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqIFxwYWdlIHNhbWE1ZDRfZWtfZXh0Y29tcCAic2FtYTVkNC1FSyAtIEV4dGVybmFsIGNvbXBvbmVudHMiDQogKiBUaGlzIHBhZ2UgbGlzdHMgdGhlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZXh0ZXJuYWwgb24tYm9hcmQgY29tcG9uZW50cw0KICogbG9jYXRlZCBpbiB0aGUgYm9hcmQuaCBmaWxlIGZvciB0aGUgc2FtYTVkNC1FSy4NCiAqDQogKiBcc2VjdGlvbiBib2FyZF9zZG1tYyBTRC9NTUMNCiAqIC0gXHJlZiBCT0FSRF9NQ0kwX1BJTlMNCiAqIC0gXHJlZiBCT0FSRF9NQ0kwX1BJTl9DRA0KICogLSBccmVmIEJPQVJEX01DSTFfUElOUw0KICogLSBccmVmIEJPQVJEX01DSTFfUElOX0NEDQogKiAtIFxyZWYgQk9BUkRfTlVNX01DSQ0KICoNCiAqIFxzZWN0aW9uIGJvYXJkX2VtYWMgRU1BQw0KICogLSBccmVmIEJPQVJEX0VNQUNfUlNUX1BJTlMNCiAqIC0gXHJlZiBCT0FSRF9FTUFDX1BIWV9BRERSDQogKiAtIFxyZWYgQk9BUkRfRU1BQ19SVU5fUElOUw0KICogDQogKiBcc2VjdGlvbiBib2FyZF9sY2QgTENEIFByb3BlcnRpZXMNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfV0lEVEgNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfSEVJR0hUDQogKiAtIFxyZWYgQk9BUkRfTENEX0lGV0lEVEgNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfRlJBTUVTSVpFDQogKiAtIFxyZWYgQk9BUkRfTENEX1RJTUlOR19WRlANCiAqIC0gXHJlZiBCT0FSRF9MQ0RfVElNSU5HX1ZCUA0KICogLSBccmVmIEJPQVJEX0xDRF9USU1JTkdfVlBXDQogKiAtIFxyZWYgQk9BUkRfTENEX1RJTUlOR19IRlANCiAqIC0gXHJlZiBCT0FSRF9MQ0RfVElNSU5HX0hCUA0KICogLSBccmVmIEJPQVJEX0xDRF9USU1JTkdfSFBXDQogKiAtIFxyZWYgQk9BUkRfTENEX0ZSQU1FUkFURQ0KICogLSBccmVmIEJPQVJEX0xDRF9QSVhFTENMT0NLDQogKg0KICogXHNlY3Rpb24gYm9hcmRfdHMgVG91Y2hzY3JlZW4gQURDIFByb3BlcnRpZXMNCiAqIC0gXHJlZiBCT0FSRF9UT1VDSFNDUkVFTl9BRENDTEsNCiAqIC0gXHJlZiBCT0FSRF9UT1VDSFNDUkVFTl9TVEFSVFVQDQogKiAtIFxyZWYgQk9BUkRfVE9VQ0hTQ1JFRU5fU0hUSU0NCiAqIC0gXHJlZiBCT0FSRF9UT1VDSFNDUkVFTl9ERUJPVU5DRQ0KICovDQoNCg0KLyoqIE1DSTAgQ2FyZCBkZXRlY3QgcGluIGRlZmluaXRpb24uIChQRTUpICovDQojZGVmaW5lIEJPQVJEX01DSTBfUElOX0NEICAgICAgIHtQSU9fUEU1LCBQSU9FLCBJRF9QSU9FLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQovKiogTUNJMCBwb3dlciBjb250cm9sLiAqLw0KLy8jZGVmaW5lIEJPQVJEX01DSTBfUElOX1BPV0VSICAgIHtQSU9fUEUxNSwgUElPRSwgSURfUElPRSwgUElPX09VVFBVVF8wLCBQSU9fUFVMTFVQfQ0KLyoqIE1DSTAgQ2xvY2sgLiAqLw0KI2RlZmluZSBCT0FSRF9NQ0kwX1BJTl9DSyAgICAgICB7UElPX1BDNCwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCg0KLyoqIE1DSTAgU29sdCBBIElPIHBpbnMgZGVmaW5pdGlvbi4gKFBDNC1QQzEzKSAqLw0KI2RlZmluZSBCT0FSRF9NQ0kwX1BJTlNfU0xPVEEgICB7MHgzRkYwLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLy9NQ0kwX0NEQiBQRTAsIE1DSTBfREIwLCBNQ0kwX0RCMSxNQ0kwX0RCMiwgTUNJMF9EQjMNCg0KLyoqIE1DSTEgQ2FyZCBkZXRlY3QgcGluIGRlZmluaXRpb24uIChQRTE0KSAqLw0KI2RlZmluZSBCT0FSRF9NQ0kxX1BJTl9DRCAgICAgICB7UElPX1BFNiwgUElPRSwgSURfUElPRSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KLyoqIE1DSTEgcG93ZXIgY29udHJvbCAqLw0KI2RlZmluZSBCT0FSRF9NQ0kxX1BJTl9QT1dFUiAgICB7UElPX1BFMTUsIFBJT0UsIElEX1BJT0UsIFBJT19PVVRQVVRfMCwgUElPX1BVTExVUH0NCg0KI2RlZmluZSBCT0FSRF9NQ0kwX1BJTlMgICAgICAgIEJPQVJEX01DSTBfUElOU19TTE9UQQ0KLyoqIE1DSTEgSU8gcGlucyBkZWZpbml0aW9uLiAoUEUxOC1QRTIzKSAqLw0KI2RlZmluZSBCT0FSRF9NQ0kxX1BJTlMgICAgICAgIHsweEZDMDAwMCwgUElPRSwgSURfUElPRSwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCg0KLyoqIFRvdGFsIG51bWJlciBvZiBNQ0kgaW50ZXJmYWNlICovDQojZGVmaW5lIEJPQVJEX05VTV9NQ0kgICAgICAgICAgIDINCg0KLyoqIERpc3BsYXkgd2lkdGggaW4gcGl4ZWxzLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfV0lEVEggICAgICAgICAgICAgODAwDQovKiogRGlzcGxheSBoZWlnaHQgaW4gcGl4ZWxzLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfSEVJR0hUICAgICAgICAgICAgNDgwDQoNCi8qKiBEaXNwbGF5IGludGVyZmFjZSB3aWR0aCBpbiBiaXRzLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfSUZXSURUSCAgICAgICAgICAgMjQNCi8qKiBGcmFtZSBzaXplIGluIHdvcmRzIChoZWlnaHQgKiB3aWR0aCAqIGJwcCAvIDMyKSAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfRlJBTUVTSVpFICAgICAgICAgKEJPQVJEX0xDRF9XSURUSCAqIEJPQVJEX0xDRF9IRUlHSFQgKiBCT0FSRF9MQ0RfSUZXSURUSCAvIDMyKQ0KDQovKiogVmVydGljYWwgZnJvbnQgcG9yY2ggaW4gbnVtYmVyIG9mIGxpbmVzLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfVElNSU5HX1ZGUCAgICAgICAgMjINCi8qKiBWZXJ0aWNhbCBiYWNrIHBvcmNoIGluIG51bWJlciBvZiBsaW5lcy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX1RJTUlOR19WQlAgICAgICAgIDIxDQovKiogVmVydGljYWwgcHVsc2Ugd2lkdGggaW4gbnVtYmVyIG9mIGxpbmVzLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfVElNSU5HX1ZQVyAgICAgICAgMg0KLyoqIEhvcml6b250YWwgZnJvbnQgcG9yY2ggaW4gTENERE9UQ0xLIGN5Y2xlcy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX1RJTUlOR19IRlAgICAgICAgIDY0DQovKiogSG9yaXpvbnRhbCBiYWNrIHBvcmNoIGluIExDRERPVENMSyBjeWNsZXMuICovDQojZGVmaW5lIEJPQVJEX0xDRF9USU1JTkdfSEJQICAgICAgICA2NA0KLyoqIEhvcml6b250YWwgcHVsc2Ugd2lkdGggaW4gTENERE9UQ0xLIGN5Y2xlcy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX1RJTUlOR19IUFcgICAgICAgIDEyOA0KDQovKiogRnJhbWUgcmF0ZSBpbiBIei4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0ZSQU1FUkFURSAgICAgICAgIDQwDQoNCi8qKiBQaXhlbCBjbG9jayByYXRlIGluIEh6IChIUyBwZXJpb2QgKiBWUyBwZXJpb2QgKiBCT0FSRF9MQ0RfRlJBTUVSQVRFKS4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX1BJWEVMQ0xPQ0sgICAgICAgICgoQk9BUkRfTENEX1RJTUlOR19IUFcrQk9BUkRfTENEX1RJTUlOR19IQlArQk9BUkRfTENEX1dJRFRIK0JPQVJEX0xDRF9USU1JTkdfSEZQKVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooQk9BUkRfTENEX1RJTUlOR19WUFcrQk9BUkRfTENEX1RJTUlOR19WQlArQk9BUkRfTENEX0hFSUdIVCtCT0FSRF9MQ0RfVElNSU5HX1ZGUClcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQk9BUkRfTENEX0ZSQU1FUkFURSkNCg0KI2RlZmluZSBCT0FSRF9JU0lfVlNZTkMgICAgIHtQSU9fUEIzQ19JU0lfVlNZTkMsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQojZGVmaW5lIEJPQVJEX0lTSV9IU1lOQyAgICAge1BJT19QQjRDX0lTSV9IU1lOQywgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgQk9BUkRfSVNJX1BDSyAgICAgICB7UElPX1BCMUNfSVNJX1BDSywgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgQk9BUkRfSVNJX1BJTlNfREFUQSB7MHgwN0Y4MDAwMCwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0gLy9wYzE5LTI2DQovLyNkZWZpbmUgQk9BUkRfSVNJX1BJTlNfREFUQTIgezB4MDAwMDAwMDMsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQoNCiNkZWZpbmUgUElOX0lTSV9SU1QgICAgICAgezEgPDwgMTEsIFBJT0IsIElEX1BJT0IsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9JU0lfUlNUTiAgICAgIHsxIDw8IDUsIFBJT0IsIElEX1BJT0IsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQoNCiNkZWZpbmUgUElOU19JU0kgICAgICAgICAgQk9BUkRfSVNJX1ZTWU5DLCBCT0FSRF9JU0lfSFNZTkMsIEJPQVJEX0lTSV9QQ0sgLCBCT0FSRF9JU0lfUElOU19EQVRBDQoNCi8qKiBUb3VjaHNjcmVlbiBBREMgY2xvY2sgZnJlcXVlbmN5IHRvIHVzZS4gKi8NCiNkZWZpbmUgQk9BUkRfVE9VQ0hTQ1JFRU5fQURDQ0xLICAgIDMwMDAwMCAvKiA4TUh6IG1heCAqLw0KLyoqIFRvdWNoc2NyZWVuIEFEQyBzdGFydHVwIHRpbWUgaW4gtXNlY29uZHMuICovDQojZGVmaW5lIEJPQVJEX1RPVUNIU0NSRUVOX1NUQVJUVVAgICA0MA0KLyoqIFRvdWNoc2NyZWVuIEFEQyB0cmFjayBhbmQgaG9sZCB0aW1lIGluIG5hbm9zZWNvbmRzLiAqLw0KI2RlZmluZSBCT0FSRF9UT1VDSFNDUkVFTl9TSFRJTSAgICAgMjAwMCAgICAvKiBtaW4gMbVzIGF0IDhNSHogKi8NCi8qKiBUb3VjaHNjcmVlbiBwZW4gZGVib3VuY2UgdGltZSBpbiBuYW5vc2Vjb25kcy4gKi8NCiNkZWZpbmUgQk9BUkRfVE9VQ0hTQ1JFRU5fREVCT1VOQ0UgIDEwMDAwMDAwDQoNCiNkZWZpbmUgUElOX0FEMCAgICAgIHtQSU9fUEMyN0FfQUQwLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fQUQxICAgICAge1BJT19QQzI4QV9BRDEsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9BRDIgICAgICB7UElPX1BDMjlBX0FEMiwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX0FEMyAgICAgIHtQSU9fUEMzMEFfQUQzLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fQUQ0ICAgICAge1BJT19QQzMxQV9BRDQsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQoNCi8vI2RlZmluZSBQSU5TX1RPVUNIX1NDUkVFTiAgIFBJTl9BRDBfWFAsIFBJTl9BRDFfWE0sIFBJTl9BRDJfWVAsIFBJTl9BRDNfWU0sIFBJTl9BRDRfTFINCg0KLyoqIEhETUkgcmVzZXQgcGlucy4gKi8NCiNkZWZpbmUgUElOX0hETUlfUkVTRVRfTCAge1BJT19QQzMxLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fSERNSV9SRVNFVF9IICB7UElPX1BDMzEsIFBJT0MsIElEX1BJT0MsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqIFxwYWdlIHNhbWE1ZDRfZWtfY2hpcGRlZiAic2FtYTVkNC1FSyAtIEluZGl2aWR1YWwgY2hpcCBkZWZpbml0aW9uIg0KICogVGhpcyBwYWdlIGxpc3RzIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGRpZmZlcmVudCBjaGlwJ3MgZGVmaW5pdGlvbg0KICogbG9jYXRlZCBpbiB0aGUgYm9hcmQuaCBmaWxlIGZvciB0aGUgc2FtYTVkNC1FSy4NCiAqDQogKiBMRURzDQogKiAtIFxyZWYgUElOX0xFRF8wDQogKiAtIFxyZWYgUElOX0xFRF8xDQogKiAtIFxyZWYgUElOX0xFRF8yDQogKiAtIFxyZWYgUElOU19MRURTDQogKg0KICogUHVzaCBidXR0b25zDQogKiAtIFxyZWYgUElOX1BVU0hCVVRUT05fMQ0KICAqIC0gXHJlZiBQSU5TX1BVU0hCVVRUT05TDQogDQogKg0KICogUENLMCANCiAqIC0gXHJlZiBQSU5fUENLMA0KICoNCiAqIFBDSzEgDQogKiAtIFxyZWYgIFBJTl9QQ0sxDQogKi8NCg0KI2lmIGRlZmluZWQoQk9BUkRfUkVWX0FfRUspfHxkZWZpbmVkKEJPQVJEX1JFVl9CX0VLKQ0KI2RlZmluZSBMRURfQkxVRSAgICAgIDANCiNkZWZpbmUgTEVEX1JFRCAgICAgICAxDQoNCi8qKiBMRUQgIzAgcGluIGRlZmluaXRpb24gKExFRF9CTFVFKS4gKi8NCiNkZWZpbmUgUElOX0xFRF8wICAgeyhQSU9fUEU4KSwgUElPRSwgSURfUElPRSwgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCi8qKiBMRUQgIzEgcGluIGRlZmluaXRpb24gKExFRF9SRUQpLiAqLw0KI2RlZmluZSBQSU5fTEVEXzEgICB7KFBJT19QRTkpLCBQSU9FLCBJRF9QSU9FLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KLyoqIExFRCAjMiBwaW4gZGVmaW5pdGlvbiAoTEVEX0dSRUVOKS4gKi8NCiNkZWZpbmUgUElOX0xFRF8yICAgeyhQSU9fUEUyOCksIFBJT0UsIElEX1BJT0UsIFBJT19PVVRQVVRfMCwgUElPX0RFRkFVTFR9DQoNCi8qKiBMaXN0IG9mIGFsbCBMRURzIGRlZmluaXRpb25zLiAqLw0KI2RlZmluZSBQSU5TX0xFRFMgICBQSU5fTEVEXzAsIFBJTl9MRURfMSxQSU5fTEVEXzINCiNlbmRpZg0KDQovKiogUHVzaCBidXR0b24gIzEgZGVmaW5pdGlvbi4gQXR0cmlidXRlcyA9IHB1bGwtdXAgKyBkZWJvdW5jZSArIGludGVycnVwdCBvbiByaXNpbmcgZWRnZS4gKi8NCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMSAgICB7UElPX1BFMTMsIFBJT0UsIElEX1BJT0UsIFBJT19JTlBVVCwgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9GQUxMX0VER0V9DQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzIgICAge1BJT19QRTEzLCBQSU9FLCBJRF9QSU9FLCBQSU9fSU5QVVQsIFBJT19QVUxMVVAgfCBQSU9fREVCT1VOQ0UgfCBQSU9fSVRfRkFMTF9FREdFfQ0KLyoqIExpc3Qgb2YgYWxsIHB1c2ggYnV0dG9uIGRlZmluaXRpb25zLiAqLw0KI2RlZmluZSBQSU5TX1BVU0hCVVRUT05TICAgIFBJTl9QVVNIQlVUVE9OXzEgDQoNCi8qKiBQdXNoIGJ1dHRvbiAjMSBpbmRleC4gKi8NCiNkZWZpbmUgUFVTSEJVVFRPTl9CUDEgICAwDQovKiogUHVzaCBidXR0b24gIzIgaW5kZXguICovDQojZGVmaW5lIFBVU0hCVVRUT05fQlAyICAgMQ0KDQovKiogY2F0YiBidXR0b24gKi8NCiNkZWZpbmUgUElOX1NCVVRUT04wICAgIHsxIDw8IDE4LCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fU0JVVFRPTjEgICAgezEgPDwgMTksIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9TQlVUVE9OMiAgICB7MSA8PCAyMCwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1NCVVRUT04zICAgIHsxIDw8IDIxLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fU0JVVFRPTjQgICAgezEgPDwgMjIsIFBJT0QsIElEX1BJT0QsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9TQlVUVE9OX0RJUyB7MSA8PCAyOSwgUElPRCwgSURfUElPRCwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCg0KI2RlZmluZSBQSU5TX1NCVVRUT04gUElOX1NCVVRUT04wLCBQSU5fU0JVVFRPTjEsIFBJTl9TQlVUVE9OMiwgUElOX1NCVVRUT04zLCBQSU5fU0JVVFRPTjQsIFBJTl9TQlVUVE9OX0RJUw0KDQoNCi8qKiBQQ0swICovDQojZGVmaW5lIFBJTl9QQ0swICAgICAgICB7UElPX1BCMjZBX1BDSzAsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogUENLMSAqLw0KI2RlZmluZSBQSU5fUENLMSAgICAgICAge1BJT19QRDMxQl9QQ0sxLCBQSU9ELCBJRF9QSU9ELCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLy8jZGVmaW5lIFBJTl9QQ0sxICAgICAgICB7UElPX1BDNENfUENLMSwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCi8qKiBQQ0syICovDQojZGVmaW5lIFBJTl9QQ0syICAgICAgICB7UElPX1BCMTBCX1BDSzIsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQoNCg0KLyoqIFBXTTAgKi8NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqICAgICAgICBIZWFkZXJzIGZvciBib2FyZA0KICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiNpbmNsdWRlICJpbmNsdWRlL2JvYXJkX2xvd2xldmVsLmgiDQojaW5jbHVkZSAiaW5jbHVkZS9ibXAuaCINCiNpbmNsdWRlICJpbmNsdWRlL2RiZ3VfY29uc29sZS5oIg0KI2luY2x1ZGUgImluY2x1ZGUvZGJnX3V0aWwuaCINCiNpbmNsdWRlICJpbmNsdWRlL2hhbW1pbmcuaCINCiNpbmNsdWRlICJpbmNsdWRlL2xlZC5oIg0KI2luY2x1ZGUgImluY2x1ZGUvbWF0aC5oIg0KI2luY2x1ZGUgImluY2x1ZGUvdGltZXRpY2suaCINCiNpbmNsdWRlICJpbmNsdWRlL3dhdi5oIg0KI2luY2x1ZGUgImluY2x1ZGUvdHdpZC5oIg0KI2luY2x1ZGUgImluY2x1ZGUveGRtYV9oYXJkd2FyZV9pbnRlcmZhY2UuaCINCiNpbmNsdWRlICJpbmNsdWRlL3hkbWFkLmgiDQojaW5jbHVkZSAiaW5jbHVkZS9ib2FyZF9tZW1vcmllcy5oIg0KI2luY2x1ZGUgImluY2x1ZGUvaXNvNzgxNl80LmgiDQojaW5jbHVkZSAiaW5jbHVkZS9sY2RkLmgiDQojaW5jbHVkZSAiaW5jbHVkZS9sY2RfZHJhdy5oIg0KI2luY2x1ZGUgImluY2x1ZGUvbGNkX2ZvbnQxMHgxNC5oIg0KI2luY2x1ZGUgImluY2x1ZGUvbGNkX2ZvbnQuaCINCiNpbmNsdWRlICJpbmNsdWRlL2xjZF9jb2xvci5oIg0KI2luY2x1ZGUgImluY2x1ZGUvbWNpZC5oIg0KI2luY2x1ZGUgImluY2x1ZGUvZ21paS5oIg0KI2luY2x1ZGUgImluY2x1ZGUvZ21hY2QuaCINCiNpbmNsdWRlICJpbmNsdWRlL2dtYWNiLmgiDQojaW5jbHVkZSAiaW5jbHVkZS9vdi5oIg0KI2luY2x1ZGUgImluY2x1ZGUvb21uaXZpc2lvbi5oIg0KI2luY2x1ZGUgImluY2x1ZGUvb3Z5dXYuaCINCiNpbmNsdWRlICJpbmNsdWRlL3RzZC5oIg0KI2luY2x1ZGUgImluY2x1ZGUvdHNkX2NvbS5oIg0KI2luY2x1ZGUgImluY2x1ZGUvd204OTA0LmgiDQojaW5jbHVkZSAiaW5jbHVkZS9ydGNfY2FsaWIuaCINCg0KI2VuZGlmIC8qICNpZm5kZWYgX0JPQVJEXyAqLw0KDQo=