LyogY29uZmlnLmgtdm1zLiBHZW5lcmF0ZWQgYnkgaGFuZCBieSBLbGF1cyBL5G1wZiA8a2thZW1wZkBybWkuZGU+ICovCi8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlLiAgKi8KLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIGNvbmZpZ3VyZS5pbiBieSBhdXRvaGVhZGVyLiAgKi8KCi8qIERlZmluZSBpZiBvbiBBSVggMy4KICAgU3lzdGVtIGhlYWRlcnMgc29tZXRpbWVzIGRlZmluZSB0aGlzLgogICBXZSBqdXN0IHdhbnQgdG8gYXZvaWQgYSByZWRlZmluaXRpb24gZXJyb3IgbWVzc2FnZS4gICovCiNpZm5kZWYgX0FMTF9TT1VSQ0UKLyogI3VuZGVmIF9BTExfU09VUkNFICovCiNlbmRpZgoKLyogRGVmaW5lIGlmIHVzaW5nIGFsbG9jYS5jLiAgKi8KLyogI3VuZGVmIENfQUxMT0NBICovCi8qIG1heWJlIHRoaXMgc2hvdWxkIGJlIHBsYWNlZCBpbnRvIG1ha2UuaCAqLwojaWYJZGVmaW5lZChfX1ZBWCkgJiYgZGVmaW5lZChfX0RFQ0MpCiNkZWZpbmUgYWxsb2NhKG4pCV9fQUxMT0NBKG4pCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgTkxTIGlzIHJlcXVlc3RlZC4gICovCi8qICN1bmRlZiBFTkFCTEVfTkxTICovCgovKiBEZWZpbmUgYXMgMSBpZiB5b3UgaGF2ZSBkY2dldHRleHQuICAqLwovKiAjdW5kZWYgSEFWRV9EQ0dFVFRFWFQgKi8KCi8qIERlZmluZSBhcyAxIGlmIHlvdSBoYXZlIGdldHRleHQgYW5kIGRvbid0IHdhbnQgdG8gdXNlIEdOVSBnZXR0ZXh0LiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUVEVYVCAqLwoKLyogRGVmaW5lIGlmIHlvdXIgbG9jYWxlLmggZmlsZSBjb250YWlucyBMQ19NRVNTQUdFUy4gICovCi8qICN1bmRlZiBIQVZFX0xDX01FU1NBR0VTICovCgovKiBEZWZpbmUgdG8gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGxvY2FsZXMuICAqLwojZGVmaW5lIExPQ0FMRURJUiAiIgoKLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgdGhlIHN0cGNweSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUENQWSAqLwoKLyogRGVmaW5lIGlmIHRoZSBjbG9zZWRpciBmdW5jdGlvbiByZXR1cm5zIHZvaWQgaW5zdGVhZCBvZiBpbnQuICAqLwovKiAjdW5kZWYgQ0xPU0VESVJfVk9JRCAqLwoKLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLwovKiAjdW5kZWYgY29uc3QgKi8KCi8qIERlZmluZSB0byBvbmUgb2YgX2dldGI2NywgR0VUQjY3LCBnZXRiNjcgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAgc3lzdGVtcy4KICAgVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYWxsb2NhLmMgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLiAgKi8KLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCgovKiBEZWZpbmUgZm9yIERHVVggd2l0aCA8c3lzL2RnX3N5c19pbmZvLmg+LiAgKi8KLyogI3VuZGVmIERHVVggKi8KCi8qIERlZmluZSBpZiB0aGUgYGdldGxvYWRhdmcnIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJ1biBzZXR1aWQgb3Igc2V0Z2lkLiAgKi8KLyogI3VuZGVmIEdFVExPQURBVkdfUFJJVklMRUdFRCAqLwoKLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwovKiAjdW5kZWYgZ2lkX3QgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSBhbGxvY2EsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICAqLwojZGVmaW5lIEhBVkVfQUxMT0NBIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBpdCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuICAqLwovKiAjdW5kZWYgSEFWRV9BTExPQ0FfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBkb24ndCBoYXZlIHZwcmludGYgYnV0IGRvIGhhdmUgX2RvcHJudC4gICovCi8qICN1bmRlZiBIQVZFX0RPUFJOVCAqLwoKLyogRGVmaW5lIGlmIHlvdXIgc3lzdGVtIGhhcyBhIHdvcmtpbmcgZm5tYXRjaCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0ZOTUFUQ0ggKi8KCi8qIERlZmluZSBpZiB5b3VyIHN5c3RlbSBoYXMgaXRzIG93biBgZ2V0bG9hZGF2ZycgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRMT0FEQVZHICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldG1udGVudCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVE1OVEVOVCAqLwoKLyogRGVmaW5lIGlmIHRoZSBgbG9uZyBkb3VibGUnIHR5cGUgd29ya3MuICAqLwovKiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBzdXBwb3J0IGZpbGUgbmFtZXMgbG9uZ2VyIHRoYW4gMTQgY2hhcmFjdGVycy4gICovCiNkZWZpbmUgSEFWRV9MT05HX0ZJTEVfTkFNRVMgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICAqLwovKiAjdW5kZWYgSEFWRV9NTUFQICovCgovKiBEZWZpbmUgaWYgc3lzdGVtIGNhbGxzIGF1dG9tYXRpY2FsbHkgcmVzdGFydCBhZnRlciBpbnRlcnJ1cHRpb24KICAgYnkgYSBzaWduYWwuICAqLwovKiAjdW5kZWYgSEFWRV9SRVNUQVJUQUJMRV9TWVNDQUxMUyAqLwoKLyogRGVmaW5lIGlmIHlvdXIgc3RydWN0IHN0YXQgaGFzIHN0X2Jsa3NpemUuICAqLwovKiAjdW5kZWYgSEFWRV9TVF9CTEtTSVpFICovCgovKiBEZWZpbmUgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfYmxvY2tzLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RfQkxPQ0tTICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cmNvbGwgZnVuY3Rpb24gYW5kIGl0IGlzIHByb3Blcmx5IGRlZmluZWQuICAqLwovKiAjdW5kZWYgSEFWRV9TVFJDT0xMICovCgovKiBEZWZpbmUgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfcmRldi4gICovCi8qICN1bmRlZiBIQVZFX1NUX1JERVYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyZnRpbWUgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJGVElNRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIDxzeXMvd2FpdC5oPiB0aGF0IGlzIFBPU0lYLjEgY29tcGF0aWJsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19XQUlUX0ggKi8KCi8qIERlZmluZSBpZiB5b3VyIHN0cnVjdCB0bSBoYXMgdG1fem9uZS4gICovCi8qICN1bmRlZiBIQVZFX1RNX1pPTkUgKi8KCi8qIERlZmluZSBpZiB5b3UgZG9uJ3QgaGF2ZSB0bV96b25lIGJ1dCBkbyBoYXZlIHRoZSBleHRlcm5hbCBhcnJheQogICB0em5hbWUuICAqLwovKiAjdW5kZWYgSEFWRV9UWk5BTUUgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSA8dW5pc3RkLmg+LiAgKi8KI2lmZGVmIF9fREVDQwojZGVmaW5lIEhBVkVfVU5JU1REX0ggMQojZW5kaWYKCi8qIERlZmluZSBpZiB1dGltZShmaWxlLCBOVUxMKSBzZXRzIGZpbGUncyB0aW1lc3RhbXAgdG8gdGhlIHByZXNlbnQuICAqLwovKiAjdW5kZWYgSEFWRV9VVElNRV9OVUxMICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgPHZmb3JrLmg+LiAgKi8KLyogI3VuZGVmIEhBVkVfVkZPUktfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB2cHJpbnRmIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1ZQUklOVEYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3YWl0MyBzeXN0ZW0gY2FsbC4gICovCi8qICN1bmRlZiBIQVZFX1dBSVQzICovCgovKiBEZWZpbmUgaWYgb24gTUlOSVguICAqLwovKiAjdW5kZWYgX01JTklYICovCgovKiBEZWZpbmUgaWYgeW91ciBzdHJ1Y3Qgbmxpc3QgaGFzIGFuIG5fdW4gbWVtYmVyLiAgKi8KLyogI3VuZGVmIE5MSVNUX05BTUVfVU5JT04gKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSA8bmxpc3QuaD4uICAqLwovKiAjdW5kZWYgTkxJU1RfU1RSVUNUICovCgovKiBEZWZpbmUgaWYgeW91ciBDIGNvbXBpbGVyIGRvZXNuJ3QgYWNjZXB0IC1jIGFuZCAtbyB0b2dldGhlci4gICovCi8qICN1bmRlZiBOT19NSU5VU19DX01JTlVTX08gKi8KCi8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KLyogSSBhc3N1bWUgdHlwZXMuaCBpcyBhdmFpbGFibGUgZm9yIGFsbCA1LjAgY2MvY3h4IGNvbXBpbGVycyAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgcGlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdAogICB3aXRoIHRoaXMgZGVmaW5lZC4gICovCi8qICN1bmRlZiBfUE9TSVhfMV9TT1VSQ0UgKi8KCi8qIERlZmluZSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3Igc3RhdCBhbmQgb3RoZXIgdGhpbmdzIHRvIHdvcmsuICAqLwovKiAjdW5kZWYgX1BPU0lYX1NPVVJDRSAqLwoKLyogRGVmaW5lIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMgKGludCBvciB2b2lkKS4gICovCiNkZWZpbmUgUkVUU0lHVFlQRSB2b2lkCgovKiBEZWZpbmUgaWYgdGhlIHNldHZidWYgZnVuY3Rpb24gdGFrZXMgdGhlIGJ1ZmZlcmluZyB0eXBlIGFzIGl0cyBzZWNvbmQKICAgYXJndW1lbnQgYW5kIHRoZSBidWZmZXIgcG9pbnRlciBhcyB0aGUgdGhpcmQsIGFzIG9uIFN5c3RlbSBWCiAgIGJlZm9yZSByZWxlYXNlIDMuICAqLwovKiAjdW5kZWYgU0VUVkJVRl9SRVZFUlNFRCAqLwoKLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCiAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQogICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCglTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCglTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duCiAqLwovKiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OICovCgovKiBEZWZpbmUgaWYgdGhlIGBTX0lTKicgbWFjcm9zIGluIDxzeXMvc3RhdC5oPiBkbyBub3Qgd29yayBwcm9wZXJseS4gICovCi8qICN1bmRlZiBTVEFUX01BQ1JPU19CUk9LRU4gKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gICovCi8qICN1bmRlZiBTVERDX0hFQURFUlMgKi8KCi8qIERlZmluZSBvbiBTeXN0ZW0gViBSZWxlYXNlIDQuICAqLwovKiAjdW5kZWYgU1ZSNCAqLwoKLyogRGVmaW5lIGlmIGBzeXNfc2lnbGlzdCcgaXMgZGVjbGFyZWQgYnkgPHNpZ25hbC5oPi4gICovCi8qICN1bmRlZiBTWVNfU0lHTElTVF9ERUNMQVJFRCAqLwoKLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgdWlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIGZvciBFbmNvcmUgVU1BWC4gICovCi8qICN1bmRlZiBVTUFYICovCgovKiBEZWZpbmUgZm9yIEVuY29yZSBVTUFYIDQuMyB0aGF0IGhhcyA8aW5xX3N0YXR1cy9jcHVzdGF0cy5oPgogICBpbnN0ZWFkIG9mIDxzeXMvY3B1c3RhdHMuaD4uICAqLwovKiAjdW5kZWYgVU1BWDRfMyAqLwoKLyogRGVmaW5lIHZmb3JrIGFzIGZvcmsgaWYgdmZvcmsgZG9lcyBub3Qgd29yay4gICovCi8qICN1bmRlZiB2Zm9yayAqLwoKLyogTmFtZSBvZiB0aGlzIHBhY2thZ2UgKG5lZWRlZCBieSBhdXRvbWFrZSkgKi8KI2RlZmluZSBQQUNLQUdFICIlUEFDS0FHRSUiCgovKiBWZXJzaW9uIG9mIHRoaXMgcGFja2FnZSAobmVlZGVkIGJ5IGF1dG9tYWtlKSAqLwojZGVmaW5lIFZFUlNJT04gIiVWRVJTSU9OJSIKCi8qIERlZmluZSB0byB0aGUgbmFtZSBvZiB0aGUgU0NDUyBgZ2V0JyBjb21tYW5kLiAgKi8KLyogI3VuZGVmIFNDQ1NfR0VUICovCgovKiBEZWZpbmUgdGhpcyBpZiB0aGUgU0NDUyBgZ2V0JyBjb21tYW5kIHVuZGVyc3RhbmRzIHRoZSBgLUc8ZmlsZT4nIG9wdGlvbi4gICovCi8qICN1bmRlZiBTQ0NTX0dFVF9NSU5VU19HICovCgovKiBEZWZpbmUgdGhpcyB0byBlbmFibGUgam9iIHNlcnZlciBzdXBwb3J0IGluIEdOVSBtYWtlLiAgKi8KLyogI3VuZGVmIE1BS0VfSk9CU0VSVkVSICovCgovKiBEZWZpbmUgdG8gYmUgdGhlIG5hbm9zZWNvbmRzIG1lbWJlciBvZiBzdHJ1Y3Qgc3RhdCdzIHN0X210aW0sCiAgIGlmIGl0IGV4aXN0cy4gICovCi8qICN1bmRlZiBTVF9NVElNX05TRUMgKi8KCi8qIERlZmluZSB0aGlzIGlmIHRoZSBDIGxpYnJhcnkgZGVmaW5lcyB0aGUgdmFyaWFibGUgYHN5c19zaWdsaXN0Jy4gICovCi8qICN1bmRlZmluZSBIQVZFX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdGhpcyBpZiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMgdGhlIHZhcmlhYmxlIGBfc3lzX3NpZ2xpc3QnLiAgKi8KLyogI3VuZGVmIEhBVkVfX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgYHVuaW9uIHdhaXQnIHR5cGUgaW4gPHN5cy93YWl0Lmg+LiAgKi8KLyogI3VuZGVmIEhBVkVfVU5JT05fV0FJVCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBkdXAyIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX0RVUDIgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRjd2QgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfR0VUQ1dEIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0Z3JvdXBzIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUR1JPVVBTICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RieW5hbWUgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RuYW1lIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUSE9TVE5BTUUgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0bG9hZGF2ZyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVExPQURBVkcgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbWVtbW92ZSBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbWt0ZW1wIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX01LVEVNUCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBzaWduYWwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9QU0lHTkFMICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBzdGF0X2dldGR5bmFtaWMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9QU1RBVF9HRVREWU5BTUlDICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNldGVnaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRFR0lEICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNldGV1aWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRFVUlEICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNldGxpbmVidWYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRMSU5FQlVGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNldHJlZ2lkIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmaW5lIEhBVkVfU0VUUkVHSUQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0cmV1aWQgZnVuY3Rpb24uICAqLwovKiAjZGVmaW5lIEhBVkVfU0VUUkVVSUQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2lnc2V0bWFzayBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9TSUdTRVRNQVNLIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc29ja2V0IGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU09DS0VUICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cmNhc2VjbXAgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJDQVNFQ01QICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cmVycm9yIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NUUkVSUk9SIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3Ryc2lnbmFsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSU0lHTkFMICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdhaXQzIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfV0FJVDMgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2FpdHBpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1dBSVRQSUQgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9ESVJFTlRfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gICovCiNpZmRlZiBfX0RFQ0MKI2RlZmluZSBIQVZFX0ZDTlRMX0ggMQojZW5kaWYKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxtYWNoL21hY2guaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NQUNIX01BQ0hfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfTUVNT1JZX0ggKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5kaXIuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9ORElSX0ggKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpci5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19ESVJfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL25kaXIuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfTkRJUl9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWViLmg+IGhlYWRlciBmaWxlLiAgKi8KI2lmbmRlZiBfX0dOVUNfXwojZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQojZW5kaWYKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy93YWl0Lmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBkZ2MgbGlicmFyeSAoLWxkZ2MpLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCREdDICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGtzdGF0IGxpYnJhcnkgKC1sa3N0YXQpLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCS1NUQVQgKgoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdW4gbGlicmFyeSAoLWxzdW4pLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCU1VOICovCgovKiBEZWZpbmUgZm9yIGNhc2UgaW5zZW5zaXR2ZSBmaWxlbmFtZXMgKi8KI2RlZmluZSBIQVZFX0NBU0VfSU5TRU5TSVRJVkVfRlMgMQoKLyogVk1TIHNwZWNpZmljLCBkZWZpbmUgaXQgaWYgeW91IHdhbnQgdG8gdXNlIGNhc2Ugc2Vuc2l0dmUgdGFyZ2V0cyAqLwovKiAjdW5kZWYgV0FOVF9DQVNFX1NFTlNJVElWRV9UQVJHRVRTICovCgovKiBWTVMgc3BlY2lmaWMsIFY3LjAgaGFzIG9wZW5kaXIoKSBhbmQgZnJpZW5kcywgc28gaXQncyB1bmRlZmluZWQgKi8KLyogSWYgeW91IHdhbnQgdG8gdXNlIG5vbi1WTVMgY29kZSBmb3Igb3BlbmRpcigpIGV0Yy4gb24gVjcuMCBhbmQgZ3JlYXRlcgogICBkZWZpbmUgdGhlIGZpcnN0IG9yIGJvdGggbWFjcm9zIEFORCBjaGFuZ2UgdGhlIGNvbXBpbGUgY29tbWFuZCB0byBnZXQgdGhlCiAgIG5vbi1WTVMgdmVyc2lvbnMgbGlua2VkOiAocHJlZml4PShhbGwsZXhjZXB0PShvcGVuZGlyLC4uLiAgKi8KLyogI3VuZGVmIEhBVkVfVk1TRElSX0ggKi8KLyogI3VuZGVmIF9ESVJFTlRfSEFWRV9EX05BTUxFTiAqLwoKLyogT24gb2xkZXIgc3lzdGVtcyB3aXRob3V0IDcuMCBiYWNrcG9ydCBvZiBDUlRMIHRoZSBmaXJzdCBvbmUgaXMgZGVmaW5lZCAqLwojaWZkZWYgX19DUlRMX1ZFUgojIGlmIF9fQ1JUTF9WRVIgPCA3MDAwMDAwMAojICBkZWZpbmUgSEFWRV9WTVNESVJfSCAxCiMgZW5kaWYKI2Vsc2UKIyBpZiBfX1ZNU19WRVIgPCA3MDAwMDAwMAojICBkZWZpbmUgSEFWRV9WTVNESVJfSCAxCiMgZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChIQVZFX1ZNU0RJUl9IKSAmJiBkZWZpbmVkKEhBVkVfRElSRU5UX0gpCiN1bmRlZiBIQVZFX0RJUkVOVF9ICiNlbmRpZgoKI2RlZmluZSBIQVZFX1NURExJQl9IIDEKI2RlZmluZSBJTkNMVURFRElSICJzeXMkc3lzcm9vdDpbc3lzbGliXSIKI2RlZmluZSBMSUJESVIgInN5cyRzeXNyb290OltzeXNsaWJdIgoKLyogRG9uJ3QgdXNlIFJUTCBmdW5jdGlvbnMgb2YgT3BlblZNUyAqLwojaWZkZWYgX19ERUNDCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNkZWZpbmUgZ2V0b3B0IGdudV9nZXRvcHQKI2RlZmluZSBvcHRhcmcgZ251X29wdGFyZwojZGVmaW5lIG9wdG9wdCBnbnVfb3B0b3B0CiNkZWZpbmUgb3B0aW5kIGdudV9vcHRpbmQKI2RlZmluZSBvcHRlcnIgZ251X29wdGVycgojZW5kaWYKCiNpZiBkZWZpbmVkIChfX2NwbHVzcGx1cykgfHwgKGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXykKI3VuZGVmICBQQVJBTVMKI2RlZmluZSBQQVJBTVMocHJvdG9zKSAgcHJvdG9zCiNlbHNlIC8qIE5vdCBDKysgb3IgQU5TSSBDLiAgKi8KI3VuZGVmICBQQVJBTVMKI2RlZmluZSBQQVJBTVMocHJvdG9zKSAgKCkKI2VuZGlmIC8qIEMrKyBvciBBTlNJIEMuICAqLwoKLyogQnVpbGQgaG9zdCBpbmZvcm1hdGlvbi4gKi8KI2RlZmluZSBNQUtFX0hPU1QgIlZNUyIK