LyogY29uZmlnLmgtdm1zLiBHZW5lcmF0ZWQgYnkgaGFuZCBieSBLbGF1cyBL5G1wZiA8a2thZW1wZkBybWkuZGU+ICovCi8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlLiAgKi8KLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIGNvbmZpZ3VyZS5pbiBieSBhdXRvaGVhZGVyLiAgKi8KCi8qIERlZmluZSBpZiBvbiBBSVggMy4KICAgU3lzdGVtIGhlYWRlcnMgc29tZXRpbWVzIGRlZmluZSB0aGlzLgogICBXZSBqdXN0IHdhbnQgdG8gYXZvaWQgYSByZWRlZmluaXRpb24gZXJyb3IgbWVzc2FnZS4gICovCiNpZm5kZWYgX0FMTF9TT1VSQ0UKLyogI3VuZGVmIF9BTExfU09VUkNFICovCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgTkxTIGlzIHJlcXVlc3RlZC4gICovCi8qICN1bmRlZiBFTkFCTEVfTkxTICovCgovKiBEZWZpbmUgYXMgMSBpZiB5b3UgaGF2ZSBkY2dldHRleHQuICAqLwovKiAjdW5kZWYgSEFWRV9EQ0dFVFRFWFQgKi8KCi8qIERlZmluZSBhcyAxIGlmIHlvdSBoYXZlIGdldHRleHQgYW5kIGRvbid0IHdhbnQgdG8gdXNlIEdOVSBnZXR0ZXh0LiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUVEVYVCAqLwoKLyogRGVmaW5lIGlmIHlvdXIgbG9jYWxlLmggZmlsZSBjb250YWlucyBMQ19NRVNTQUdFUy4gICovCi8qICN1bmRlZiBIQVZFX0xDX01FU1NBR0VTICovCgovKiBEZWZpbmUgdG8gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGxvY2FsZXMuICAqLwojZGVmaW5lIExPQ0FMRURJUiAiIgoKLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgdGhlIHN0cGNweSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUENQWSAqLwoKLyogRGVmaW5lIGlmIHRoZSBjbG9zZWRpciBmdW5jdGlvbiByZXR1cm5zIHZvaWQgaW5zdGVhZCBvZiBpbnQuICAqLwovKiAjdW5kZWYgQ0xPU0VESVJfVk9JRCAqLwoKLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLwovKiAjdW5kZWYgY29uc3QgKi8KCi8qIERlZmluZSB0byBvbmUgb2YgX2dldGI2NywgR0VUQjY3LCBnZXRiNjcgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAgc3lzdGVtcy4KICAgVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYWxsb2NhLmMgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLiAgKi8KLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCgovKiBEZWZpbmUgZm9yIERHVVggd2l0aCA8c3lzL2RnX3N5c19pbmZvLmg+LiAgKi8KLyogI3VuZGVmIERHVVggKi8KCi8qIERlZmluZSBpZiB0aGUgYGdldGxvYWRhdmcnIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJ1biBzZXR1aWQgb3Igc2V0Z2lkLiAgKi8KLyogI3VuZGVmIEdFVExPQURBVkdfUFJJVklMRUdFRCAqLwoKLyogRGVmaW5lIHRvIGB1bnNpZ25lZCBsb25nJyBvciBgdW5zaWduZWQgbG9uZyBsb25nJwogICBpZiA8aW50dHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwojZGVmaW5lIHVpbnRtYXhfdCB1bnNpZ25lZCBsb25nCgovKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCi8qICN1bmRlZiBnaWRfdCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIGFsbG9jYSwgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gICovCiNkZWZpbmUgSEFWRV9BTExPQ0EgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4gICovCi8qICN1bmRlZiBIQVZFX0FMTE9DQV9IICovCgovKiBEZWZpbmUgaWYgeW91IGRvbid0IGhhdmUgdnByaW50ZiBidXQgZG8gaGF2ZSBfZG9wcm50LiAgKi8KLyogI3VuZGVmIEhBVkVfRE9QUk5UICovCgovKiBEZWZpbmUgaWYgeW91ciBzeXN0ZW0gaGFzIGEgd29ya2luZyBmbm1hdGNoIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfRk5NQVRDSCAqLwoKLyogRGVmaW5lIGlmIHlvdXIgc3lzdGVtIGhhcyBpdHMgb3duIGBnZXRsb2FkYXZnJyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVExPQURBVkcgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0bW50ZW50IGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUTU5URU5UICovCgovKiBEZWZpbmUgaWYgdGhlIGBsb25nIGRvdWJsZScgdHlwZSB3b3Jrcy4gICovCi8qICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFICovCgovKiBEZWZpbmUgaWYgeW91IHN1cHBvcnQgZmlsZSBuYW1lcyBsb25nZXIgdGhhbiAxNCBjaGFyYWN0ZXJzLiAgKi8KI2RlZmluZSBIQVZFX0xPTkdfRklMRV9OQU1FUyAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgYSB3b3JraW5nIGBtbWFwJyBzeXN0ZW0gY2FsbC4gICovCi8qICN1bmRlZiBIQVZFX01NQVAgKi8KCi8qIERlZmluZSBpZiBzeXN0ZW0gY2FsbHMgYXV0b21hdGljYWxseSByZXN0YXJ0IGFmdGVyIGludGVycnVwdGlvbgogICBieSBhIHNpZ25hbC4gICovCi8qICN1bmRlZiBIQVZFX1JFU1RBUlRBQkxFX1NZU0NBTExTICovCgovKiBEZWZpbmUgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfYmxrc2l6ZS4gICovCi8qICN1bmRlZiBIQVZFX1NUX0JMS1NJWkUgKi8KCi8qIERlZmluZSBpZiB5b3VyIHN0cnVjdCBzdGF0IGhhcyBzdF9ibG9ja3MuICAqLwovKiAjdW5kZWYgSEFWRV9TVF9CTE9DS1MgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyY29sbCBmdW5jdGlvbiBhbmQgaXQgaXMgcHJvcGVybHkgZGVmaW5lZC4gICovCi8qICN1bmRlZiBIQVZFX1NUUkNPTEwgKi8KCi8qIERlZmluZSBpZiB5b3VyIHN0cnVjdCBzdGF0IGhhcyBzdF9yZGV2LiAgKi8KLyogI3VuZGVmIEhBVkVfU1RfUkRFViAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJmdGltZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUkZUSU1FICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgPHN5cy93YWl0Lmg+IHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSCAqLwoKLyogRGVmaW5lIGlmIHlvdXIgc3RydWN0IHRtIGhhcyB0bV96b25lLiAgKi8KLyogI3VuZGVmIEhBVkVfVE1fWk9ORSAqLwoKLyogRGVmaW5lIGlmIHlvdSBkb24ndCBoYXZlIHRtX3pvbmUgYnV0IGRvIGhhdmUgdGhlIGV4dGVybmFsIGFycmF5CiAgIHR6bmFtZS4gICovCi8qICN1bmRlZiBIQVZFX1RaTkFNRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIDx1bmlzdGQuaD4uICAqLwojaWZkZWYgX19ERUNDCiNkZWZpbmUgSEFWRV9VTklTVERfSCAxCiNlbmRpZgoKLyogRGVmaW5lIGlmIHV0aW1lKGZpbGUsIE5VTEwpIHNldHMgZmlsZSdzIHRpbWVzdGFtcCB0byB0aGUgcHJlc2VudC4gICovCi8qICN1bmRlZiBIQVZFX1VUSU1FX05VTEwgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSA8dmZvcmsuaD4uICAqLwovKiAjdW5kZWYgSEFWRV9WRk9SS19IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHZwcmludGYgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfVlBSSU5URiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdhaXQzIHN5c3RlbSBjYWxsLiAgKi8KLyogI3VuZGVmIEhBVkVfV0FJVDMgKi8KCi8qIERlZmluZSBpZiBvbiBNSU5JWC4gICovCi8qICN1bmRlZiBfTUlOSVggKi8KCi8qIERlZmluZSBpZiB5b3VyIHN0cnVjdCBubGlzdCBoYXMgYW4gbl91biBtZW1iZXIuICAqLwovKiAjdW5kZWYgTkxJU1RfTkFNRV9VTklPTiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIDxubGlzdC5oPi4gICovCi8qICN1bmRlZiBOTElTVF9TVFJVQ1QgKi8KCi8qIERlZmluZSBpZiB5b3VyIEMgY29tcGlsZXIgZG9lc24ndCBhY2NlcHQgLWMgYW5kIC1vIHRvZ2V0aGVyLiAgKi8KLyogI3VuZGVmIE5PX01JTlVTX0NfTUlOVVNfTyAqLwoKLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwovKiBJIGFzc3VtZSB0eXBlcy5oIGlzIGF2YWlsYWJsZSBmb3IgYWxsIDUuMCBjYy9jeHggY29tcGlsZXJzICovCiNpZiBfX0RFQ0NfVkVSIDwgNTAwOTAwMDAKI2RlZmluZSBwaWRfdCBpbnQKI2VuZGlmCgovKiBEZWZpbmUgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0CiAgIHdpdGggdGhpcyBkZWZpbmVkLiAgKi8KLyogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBuZWVkIHRvIGluIG9yZGVyIGZvciBzdGF0IGFuZCBvdGhlciB0aGluZ3MgdG8gd29yay4gICovCi8qICN1bmRlZiBfUE9TSVhfU09VUkNFICovCgovKiBEZWZpbmUgYXMgdGhlIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyAoaW50IG9yIHZvaWQpLiAgKi8KI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKCi8qIERlZmluZSBpZiB0aGUgc2V0dmJ1ZiBmdW5jdGlvbiB0YWtlcyB0aGUgYnVmZmVyaW5nIHR5cGUgYXMgaXRzIHNlY29uZAogICBhcmd1bWVudCBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGFzIHRoZSB0aGlyZCwgYXMgb24gU3lzdGVtIFYKICAgYmVmb3JlIHJlbGVhc2UgMy4gICovCi8qICN1bmRlZiBTRVRWQlVGX1JFVkVSU0VEICovCgovKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVyd2lzZSBpdCB3aWxsIGJlCiAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJkIGhpZ2hlciBhZGRyZXNzZXMKCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwoJU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24KICovCi8qICN1bmRlZiBTVEFDS19ESVJFQ1RJT04gKi8KCi8qIERlZmluZSBpZiB0aGUgYFNfSVMqJyBtYWNyb3MgaW4gPHN5cy9zdGF0Lmg+IGRvIG5vdCB3b3JrIHByb3Blcmx5LiAgKi8KLyogI3VuZGVmIFNUQVRfTUFDUk9TX0JST0tFTiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAgKi8KLyogI3VuZGVmIFNURENfSEVBREVSUyAqLwoKLyogRGVmaW5lIG9uIFN5c3RlbSBWIFJlbGVhc2UgNC4gICovCi8qICN1bmRlZiBTVlI0ICovCgovKiBEZWZpbmUgaWYgYHN5c19zaWdsaXN0JyBpcyBkZWNsYXJlZCBieSA8c2lnbmFsLmg+LiAgKi8KLyogI3VuZGVmIFNZU19TSUdMSVNUX0RFQ0xBUkVEICovCgovKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCiNpZiBfX0RFQ0NfVkVSIDwgNTAwOTAwMDAKI2RlZmluZSB1aWRfdCBpbnQKI2VuZGlmCgovKiBEZWZpbmUgZm9yIEVuY29yZSBVTUFYLiAgKi8KLyogI3VuZGVmIFVNQVggKi8KCi8qIERlZmluZSBmb3IgRW5jb3JlIFVNQVggNC4zIHRoYXQgaGFzIDxpbnFfc3RhdHVzL2NwdXN0YXRzLmg+CiAgIGluc3RlYWQgb2YgPHN5cy9jcHVzdGF0cy5oPi4gICovCi8qICN1bmRlZiBVTUFYNF8zICovCgovKiBEZWZpbmUgdmZvcmsgYXMgZm9yayBpZiB2Zm9yayBkb2VzIG5vdCB3b3JrLiAgKi8KLyogI3VuZGVmIHZmb3JrICovCgovKiBOYW1lIG9mIHRoaXMgcGFja2FnZSAobmVlZGVkIGJ5IGF1dG9tYWtlKSAqLwojZGVmaW5lIFBBQ0tBR0UgIiVQQUNLQUdFJSIKCi8qIFZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIChuZWVkZWQgYnkgYXV0b21ha2UpICovCiNkZWZpbmUgVkVSU0lPTiAiJVZFUlNJT04lIgoKLyogRGVmaW5lIHRvIHRoZSBuYW1lIG9mIHRoZSBTQ0NTIGBnZXQnIGNvbW1hbmQuICAqLwovKiAjdW5kZWYgU0NDU19HRVQgKi8KCi8qIERlZmluZSB0aGlzIGlmIHRoZSBTQ0NTIGBnZXQnIGNvbW1hbmQgdW5kZXJzdGFuZHMgdGhlIGAtRzxmaWxlPicgb3B0aW9uLiAgKi8KLyogI3VuZGVmIFNDQ1NfR0VUX01JTlVTX0cgKi8KCi8qIERlZmluZSB0aGlzIHRvIGVuYWJsZSBqb2Igc2VydmVyIHN1cHBvcnQgaW4gR05VIG1ha2UuICAqLwovKiAjdW5kZWYgTUFLRV9KT0JTRVJWRVIgKi8KCi8qIERlZmluZSB0byBiZSB0aGUgbmFub3NlY29uZHMgbWVtYmVyIG9mIHN0cnVjdCBzdGF0J3Mgc3RfbXRpbSwKICAgaWYgaXQgZXhpc3RzLiAgKi8KLyogI3VuZGVmIFNUX01USU1fTlNFQyAqLwoKLyogRGVmaW5lIHRoaXMgaWYgdGhlIEMgbGlicmFyeSBkZWZpbmVzIHRoZSB2YXJpYWJsZSBgc3lzX3NpZ2xpc3QnLiAgKi8KLyogI3VuZGVmaW5lIEhBVkVfU1lTX1NJR0xJU1QgKi8KCi8qIERlZmluZSB0aGlzIGlmIHRoZSBDIGxpYnJhcnkgZGVmaW5lcyB0aGUgdmFyaWFibGUgYF9zeXNfc2lnbGlzdCcuICAqLwovKiAjdW5kZWYgSEFWRV9fU1lTX1NJR0xJU1QgKi8KCi8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSBgdW5pb24gd2FpdCcgdHlwZSBpbiA8c3lzL3dhaXQuaD4uICAqLwovKiAjdW5kZWYgSEFWRV9VTklPTl9XQUlUICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGR1cDIgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfRFVQMiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldGN3ZCBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9HRVRDV0QgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRncm91cHMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRHUk9VUFMgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0aG9zdGJ5bmFtZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0aG9zdG5hbWUgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRIT1NUTkFNRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRsb2FkYXZnIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUTE9BREFWRyAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtZW1tb3ZlIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX01FTU1PVkUgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBta3RlbXAgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfTUtURU1QIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHNpZ25hbCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1BTSUdOQUwgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHN0YXRfZ2V0ZHluYW1pYyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1BTVEFUX0dFVERZTkFNSUMgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0ZWdpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVEVHSUQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0ZXVpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVEVVSUQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0bGluZWJ1ZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVExJTkVCVUYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0cmVnaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWZpbmUgSEFWRV9TRVRSRUdJRCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzZXRyZXVpZCBmdW5jdGlvbi4gICovCi8qICNkZWZpbmUgSEFWRV9TRVRSRVVJRCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaWdzZXRtYXNrIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NJR1NFVE1BU0sgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzb2NrZXQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TT0NLRVQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyY2FzZWNtcCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUkNBU0VDTVAgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyZXJyb3IgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfU1RSRVJST1IgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJzaWduYWwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJTSUdOQUwgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2FpdDMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUMyAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3YWl0cGlkIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfV0FJVFBJRCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX0RJUkVOVF9IIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAgKi8KI2lmZGVmIF9fREVDQwojZGVmaW5lIEhBVkVfRkNOVExfSCAxCiNlbmRpZgoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX0xJTUlUU19IIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG1hY2gvbWFjaC5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX01BQ0hfTUFDSF9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NRU1PUllfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bmRpci5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX05ESVJfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX1NURExJQl9IIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlyLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX0RJUl9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvbmRpci5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19ORElSX0ggKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19QQVJBTV9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZWIuaD4gaGVhZGVyIGZpbGUuICAqLwojaWZuZGVmIF9fR05VQ19fCiNkZWZpbmUgSEFWRV9TWVNfVElNRUJfSCAxCiNlbmRpZgoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3dhaXQuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfV0FJVF9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGRnYyBsaWJyYXJ5ICgtbGRnYykuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJER0MgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUga3N0YXQgbGlicmFyeSAoLWxrc3RhdCkuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJLU1RBVCAqCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN1biBsaWJyYXJ5ICgtbHN1bikuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJTVU4gKi8KCi8qIFVzZSBoaWdoIHJlc29sdXRpb24gZmlsZSB0aW1lc3RhbXBzIGlmIG5vbnplcm8uICovCiNkZWZpbmUgRklMRV9USU1FU1RBTVBfSElfUkVTIDAKCi8qIERlZmluZSBmb3IgY2FzZSBpbnNlbnNpdHZlIGZpbGVuYW1lcyAqLwojZGVmaW5lIEhBVkVfQ0FTRV9JTlNFTlNJVElWRV9GUyAxCgovKiBWTVMgc3BlY2lmaWMsIGRlZmluZSBpdCBpZiB5b3Ugd2FudCB0byB1c2UgY2FzZSBzZW5zaXR2ZSB0YXJnZXRzICovCi8qICN1bmRlZiBXQU5UX0NBU0VfU0VOU0lUSVZFX1RBUkdFVFMgKi8KCi8qIFZNUyBzcGVjaWZpYywgVjcuMCBoYXMgb3BlbmRpcigpIGFuZCBmcmllbmRzLCBzbyBpdCdzIHVuZGVmaW5lZCAqLwovKiBJZiB5b3Ugd2FudCB0byB1c2Ugbm9uLVZNUyBjb2RlIGZvciBvcGVuZGlyKCkgZXRjLiBvbiBWNy4wIGFuZCBncmVhdGVyCiAgIGRlZmluZSB0aGUgZmlyc3Qgb3IgYm90aCBtYWNyb3MgQU5EIGNoYW5nZSB0aGUgY29tcGlsZSBjb21tYW5kIHRvIGdldCB0aGUKICAgbm9uLVZNUyB2ZXJzaW9ucyBsaW5rZWQ6IChwcmVmaXg9KGFsbCxleGNlcHQ9KG9wZW5kaXIsLi4uICAqLwovKiAjdW5kZWYgSEFWRV9WTVNESVJfSCAqLwovKiAjdW5kZWYgX0RJUkVOVF9IQVZFX0RfTkFNTEVOICovCgovKiBPbiBvbGRlciBzeXN0ZW1zIHdpdGhvdXQgNy4wIGJhY2twb3J0IG9mIENSVEwgdGhlIGZpcnN0IG9uZSBpcyBkZWZpbmVkICovCiNpZmRlZiBfX0NSVExfVkVSCiMgaWYgX19DUlRMX1ZFUiA8IDcwMDAwMDAwCiMgIGRlZmluZSBIQVZFX1ZNU0RJUl9IIDEKIyBlbmRpZgojZWxzZQojIGlmIF9fVk1TX1ZFUiA8IDcwMDAwMDAwCiMgIGRlZmluZSBIQVZFX1ZNU0RJUl9IIDEKIyBlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkKEhBVkVfVk1TRElSX0gpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKI3VuZGVmIEhBVkVfRElSRU5UX0gKI2VuZGlmCgojZGVmaW5lIEhBVkVfU1RETElCX0ggMQojZGVmaW5lIElOQ0xVREVESVIgInN5cyRzeXNyb290OltzeXNsaWJdIgojZGVmaW5lIExJQkRJUiAic3lzJHN5c3Jvb3Q6W3N5c2xpYl0iCgovKiBEb24ndCB1c2UgUlRMIGZ1bmN0aW9ucyBvZiBPcGVuVk1TICovCiNpZmRlZiBfX0RFQ0MKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2RlZmluZSBnZXRvcHQgZ251X2dldG9wdAojZGVmaW5lIG9wdGFyZyBnbnVfb3B0YXJnCiNkZWZpbmUgb3B0b3B0IGdudV9vcHRvcHQKI2RlZmluZSBvcHRpbmQgZ251X29wdGluZAojZGVmaW5lIG9wdGVyciBnbnVfb3B0ZXJyCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9fY3BsdXNwbHVzKSB8fCAoZGVmaW5lZCAoX19TVERDX18pICYmIF9fU1REQ19fKQojdW5kZWYgIFBBUkFNUwojZGVmaW5lIFBBUkFNUyhwcm90b3MpICBwcm90b3MKI2Vsc2UgLyogTm90IEMrKyBvciBBTlNJIEMuICAqLwojdW5kZWYgIFBBUkFNUwojZGVmaW5lIFBBUkFNUyhwcm90b3MpICAoKQojZW5kaWYgLyogQysrIG9yIEFOU0kgQy4gICovCgovKiBEZWZpbmUgaWYgdXNpbmcgYWxsb2NhLmMuICAqLwovKiAjdW5kZWYgQ19BTExPQ0EgKi8KLyogbWF5YmUgdGhpcyBzaG91bGQgYmUgcGxhY2VkIGludG8gbWFrZS5oICovCiNpZglkZWZpbmVkKF9fVkFYKSAmJiBkZWZpbmVkKF9fREVDQykKI2RlZmluZSBhbGxvY2EobikJX19BTExPQ0EobikKI2VuZGlmCgovKiBCdWlsZCBob3N0IGluZm9ybWF0aW9uLiAqLwojZGVmaW5lIE1BS0VfSE9TVCAiVk1TIgo=