LyogY29uZmlnLmgtdm1zLiBHZW5lcmF0ZWQgYnkgaGFuZCBieSBLbGF1cyBL5G1wZiA8a2thZW1wZkBybWkuZGU+ICAgICAgLSotQy0qLQoKQ29weXJpZ2h0IChDKSAxOTk2LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBNYWtlLgoKR05VIE1ha2UgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgp2ZXJzaW9uLgoKR05VIE1ha2UgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCldBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAp0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwoKLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLwovKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwoKLyogUHVsbCBpbiB0eXBlcy5oIGhlcmUgdG8gZ2V0IF9fQ1JUTF9WRVIgZGVmaW5lZCBmb3Igb2xkIHZlcnNpb25zIG9mIHRoZQogICBjb21waWxlciB3aGljaCBkb24ndCBkZWZpbmUgaXQuICovCiNpZmRlZiBfX0RFQ0MKIyBpbmNsdWRlIDx0eXBlcy5oPgojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIG9uIEFJWCAzLgogICBTeXN0ZW0gaGVhZGVycyBzb21ldGltZXMgZGVmaW5lIHRoaXMuCiAgIFdlIGp1c3Qgd2FudCB0byBhdm9pZCBhIHJlZGVmaW5pdGlvbiBlcnJvciBtZXNzYWdlLiAgKi8KI2lmbmRlZiBfQUxMX1NPVVJDRQovKiAjdW5kZWYgX0FMTF9TT1VSQ0UgKi8KI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiBOTFMgaXMgcmVxdWVzdGVkLiAgKi8KLyogI3VuZGVmIEVOQUJMRV9OTFMgKi8KCi8qIERlZmluZSBhcyAxIGlmIHlvdSBoYXZlIGRjZ2V0dGV4dC4gICovCi8qICN1bmRlZiBIQVZFX0RDR0VUVEVYVCAqLwoKLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgZ2V0dGV4dCBhbmQgZG9uJ3Qgd2FudCB0byB1c2UgR05VIGdldHRleHQuICAqLwovKiAjdW5kZWYgSEFWRV9HRVRURVhUICovCgovKiBFbWJlZCBHTlUgR3VpbGUgc3VwcG9ydCAqLwovKiAjdW5kZWYgSEFWRV9HVUlMRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBsb2NhbGUuaCBmaWxlIGNvbnRhaW5zIExDX01FU1NBR0VTLiAgKi8KLyogI3VuZGVmIEhBVkVfTENfTUVTU0FHRVMgKi8KCi8qIERlZmluZSB0byB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBmb3IgbG9jYWxlcy4gICovCiNkZWZpbmUgTE9DQUxFRElSICIiCgovKiBEZWZpbmUgYXMgMSBpZiB5b3UgaGF2ZSB0aGUgc3RwY3B5IGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RQQ1BZICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgY2xvc2VkaXIgZnVuY3Rpb24gcmV0dXJucyB2b2lkIGluc3RlYWQgb2YgaW50LiAgKi8KLyogI3VuZGVmIENMT1NFRElSX1ZPSUQgKi8KCi8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAgKi8KLyogI3VuZGVmIGNvbnN0ICovCgovKiBEZWZpbmUgdG8gb25lIG9mIF9nZXRiNjcsIEdFVEI2NywgZ2V0YjY3IGZvciBDcmF5LTIgYW5kIENyYXktWU1QIHN5c3RlbXMuCiAgIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGFsbG9jYS5jIHN1cHBvcnQgb24gdGhvc2Ugc3lzdGVtcy4gICovCi8qICN1bmRlZiBDUkFZX1NUQUNLU0VHX0VORCAqLwoKLyogRGVmaW5lIGZvciBER1VYIHdpdGggPHN5cy9kZ19zeXNfaW5mby5oPi4gICovCi8qICN1bmRlZiBER1VYICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgJ2dldGxvYWRhdmcnIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJ1biBzZXR1aWQgb3Igc2V0Z2lkLiAgKi8KLyogI3VuZGVmIEdFVExPQURBVkdfUFJJVklMRUdFRCAqLwoKLyogRGVmaW5lIHRvICd1bnNpZ25lZCBsb25nJyBvciAndW5zaWduZWQgbG9uZyBsb25nJwogICBpZiA8aW50dHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwojZGVmaW5lIHVpbnRtYXhfdCB1bnNpZ25lZCBsb25nCgovKiBEZWZpbmUgdG8gJ2ludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCi8qICN1bmRlZiBnaWRfdCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYWxsb2NhLCBhcyBhIGZ1bmN0aW9uIG9yIG1hY3JvLiAgKi8KI2RlZmluZSBIQVZFX0FMTE9DQSAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBpdCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuICAqLwovKiAjdW5kZWYgSEFWRV9BTExPQ0FfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGZkb3BlbiBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9GRE9QRU4gMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0ZW0gaGFzIGEgd29ya2luZyBmbm1hdGNoIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfRk5NQVRDSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0ZW0gaGFzIGl0cyBvd24gJ2dldGxvYWRhdmcnIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUTE9BREFWRyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGdldG1udGVudCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVE1OVEVOVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgdGhlICdsb25nIGRvdWJsZScgdHlwZSB3b3Jrcy4gICovCi8qICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3Ugc3VwcG9ydCBmaWxlIG5hbWVzIGxvbmdlciB0aGFuIDE0IGNoYXJhY3RlcnMuICAqLwojZGVmaW5lIEhBVkVfTE9OR19GSUxFX05BTUVTIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyAnbW1hcCcgc3lzdGVtIGNhbGwuICAqLwovKiAjdW5kZWYgSEFWRV9NTUFQICovCgovKiBEZWZpbmUgdG8gMSBpZiBzeXN0ZW0gY2FsbHMgYXV0b21hdGljYWxseSByZXN0YXJ0IGFmdGVyIGludGVycnVwdGlvbgogICBieSBhIHNpZ25hbC4gICovCi8qICN1bmRlZiBIQVZFX1JFU1RBUlRBQkxFX1NZU0NBTExTICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCBzdGF0IGhhcyBzdF9ibGtzaXplLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RfQkxLU0laRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfYmxvY2tzLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RfQkxPQ0tTICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyY29sbCBmdW5jdGlvbiBhbmQgaXQgaXMgcHJvcGVybHkgZGVmaW5lZC4gICovCi8qICN1bmRlZiBIQVZFX1NUUkNPTEwgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJuY2FzZWNtcCcgZnVuY3Rpb24uICovCiNpZiBfX0NSVExfVkVSID49IDcwMDAwMDAwCiNkZWZpbmUgSEFWRV9TVFJOQ0FTRUNNUCAxCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfcmRldi4gICovCi8qICN1bmRlZiBIQVZFX1NUX1JERVYgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJmdGltZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUkZUSU1FICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8c3lzL3dhaXQuaD4gdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfV0FJVF9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCB0bSBoYXMgdG1fem9uZS4gICovCi8qICN1bmRlZiBIQVZFX1RNX1pPTkUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBkb24ndCBoYXZlIHRtX3pvbmUgYnV0IGRvIGhhdmUgdGhlIGV4dGVybmFsIGFycmF5CiAgIHR6bmFtZS4gICovCi8qICN1bmRlZiBIQVZFX1RaTkFNRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPHVuaXN0ZC5oPi4gICovCiNpZmRlZiBfX0RFQ0MKI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiB1dGltZShmaWxlLCBOVUxMKSBzZXRzIGZpbGUncyB0aW1lc3RhbXAgdG8gdGhlIHByZXNlbnQuICAqLwovKiAjdW5kZWYgSEFWRV9VVElNRV9OVUxMICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgd2FpdDMgc3lzdGVtIGNhbGwuICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUMyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgb24gTUlOSVguICAqLwovKiAjdW5kZWYgX01JTklYICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCBubGlzdCBoYXMgYW4gbl91biBtZW1iZXIuICAqLwovKiAjdW5kZWYgTkxJU1RfTkFNRV9VTklPTiAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPG5saXN0Lmg+LiAgKi8KLyogI3VuZGVmIE5MSVNUX1NUUlVDVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBDIGNvbXBpbGVyIGRvZXNuJ3QgYWNjZXB0IC1jIGFuZCAtbyB0b2dldGhlci4gICovCi8qICN1bmRlZiBOT19NSU5VU19DX01JTlVTX08gKi8KCi8qIERlZmluZSB0byAnaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KLyogSSBhc3N1bWUgdHlwZXMuaCBpcyBhdmFpbGFibGUgZm9yIGFsbCA1LjAgY2MvY3h4IGNvbXBpbGVycyAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgcGlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0CiAgIHdpdGggdGhpcyBkZWZpbmVkLiAgKi8KLyogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIHN0YXQgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAgKi8KLyogI3VuZGVmIF9QT1NJWF9TT1VSQ0UgKi8KCi8qIERlZmluZSBhcyB0aGUgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIChpbnQgb3Igdm9pZCkuICAqLwojZGVmaW5lIFJFVFNJR1RZUEUgdm9pZAoKLyogRGVmaW5lIHRvIDEgaWYgdGhlIHNldHZidWYgZnVuY3Rpb24gdGFrZXMgdGhlIGJ1ZmZlcmluZyB0eXBlIGFzIGl0cyBzZWNvbmQKICAgYXJndW1lbnQgYW5kIHRoZSBidWZmZXIgcG9pbnRlciBhcyB0aGUgdGhpcmQsIGFzIG9uIFN5c3RlbSBWCiAgIGJlZm9yZSByZWxlYXNlIDMuICAqLwovKiAjdW5kZWYgU0VUVkJVRl9SRVZFUlNFRCAqLwoKLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCiAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQogICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCiAgICAgICAgU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcwogICAgICAgIFNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwogICAgICAgIFNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duCiAqLwovKiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgJ1NfSVMqJyBtYWNyb3MgaW4gPHN5cy9zdGF0Lmg+IGRvIG5vdCB3b3JrIHByb3Blcmx5LiAgKi8KLyogI3VuZGVmIFNUQVRfTUFDUk9TX0JST0tFTiAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICAqLwovKiAjdW5kZWYgU1REQ19IRUFERVJTICovCgovKiBEZWZpbmUgb24gU3lzdGVtIFYgUmVsZWFzZSA0LiAgKi8KLyogI3VuZGVmIFNWUjQgKi8KCi8qIERlZmluZSB0byAxIGlmICdzeXNfc2lnbGlzdCcgaXMgZGVjbGFyZWQgYnkgPHNpZ25hbC5oPi4gICovCi8qICN1bmRlZiBTWVNfU0lHTElTVF9ERUNMQVJFRCAqLwoKLyogRGVmaW5lIHRvICdpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgdWlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIGZvciBFbmNvcmUgVU1BWC4gICovCi8qICN1bmRlZiBVTUFYICovCgovKiBEZWZpbmUgZm9yIEVuY29yZSBVTUFYIDQuMyB0aGF0IGhhcyA8aW5xX3N0YXR1cy9jcHVzdGF0cy5oPgogICBpbnN0ZWFkIG9mIDxzeXMvY3B1c3RhdHMuaD4uICAqLwovKiAjdW5kZWYgVU1BWDRfMyAqLwoKLyogTmFtZSBvZiB0aGlzIHBhY2thZ2UgKG5lZWRlZCBieSBhdXRvbWFrZSkgKi8KI2RlZmluZSBQQUNLQUdFICIlUEFDS0FHRSUiCgovKiBWZXJzaW9uIG9mIHRoaXMgcGFja2FnZSAobmVlZGVkIGJ5IGF1dG9tYWtlKSAqLwojZGVmaW5lIFZFUlNJT04gIiVWRVJTSU9OJSIKCi8qIERlZmluZSB0byB0aGUgbmFtZSBvZiB0aGUgU0NDUyAnZ2V0JyBjb21tYW5kLiAgKi8KLyogI3VuZGVmIFNDQ1NfR0VUICovCgovKiBEZWZpbmUgdGhpcyBpZiB0aGUgU0NDUyAnZ2V0JyBjb21tYW5kIHVuZGVyc3RhbmRzIHRoZSAnLUc8ZmlsZT4nIG9wdGlvbi4gICovCi8qICN1bmRlZiBTQ0NTX0dFVF9NSU5VU19HICovCgovKiBEZWZpbmUgdGhpcyB0byBlbmFibGUgam9iIHNlcnZlciBzdXBwb3J0IGluIEdOVSBtYWtlLiAgKi8KLyogI3VuZGVmIE1BS0VfSk9CU0VSVkVSICovCgovKiBEZWZpbmUgdG8gYmUgdGhlIG5hbm9zZWNvbmRzIG1lbWJlciBvZiBzdHJ1Y3Qgc3RhdCdzIHN0X210aW0sCiAgIGlmIGl0IGV4aXN0cy4gICovCi8qICN1bmRlZiBTVF9NVElNX05TRUMgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSBDIGxpYnJhcnkgZGVmaW5lcyB0aGUgdmFyaWFibGUgJ3N5c19zaWdsaXN0Jy4gICovCi8qICN1bmRlZmluZSBIQVZFX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMgdGhlIHZhcmlhYmxlICdfc3lzX3NpZ2xpc3QnLiAgKi8KLyogI3VuZGVmIEhBVkVfX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ3VuaW9uIHdhaXQnIHR5cGUgaW4gPHN5cy93YWl0Lmg+LiAgKi8KLyogI3VuZGVmIEhBVkVfVU5JT05fV0FJVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGR1cDIgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfRFVQMiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0Y3dkIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX0dFVENXRCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0Z3JvdXBzIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUR1JPVVBTICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0aG9zdGJ5bmFtZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRob3N0bmFtZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbWVtbW92ZSBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBta3RlbXAgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfTUtURU1QIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBwc2lnbmFsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfUFNJR05BTCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHBzdGF0X2dldGR5bmFtaWMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9QU1RBVF9HRVREWU5BTUlDICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0ZWdpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVEVHSUQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZXRldWlkIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU0VURVVJRCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldGxpbmVidWYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRMSU5FQlVGICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0cmVnaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWZpbmUgSEFWRV9TRVRSRUdJRCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldHJldWlkIGZ1bmN0aW9uLiAgKi8KLyogI2RlZmluZSBIQVZFX1NFVFJFVUlEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2lnc2V0bWFzayBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9TSUdTRVRNQVNLIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzb2NrZXQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TT0NLRVQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJjYXNlY21wIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmNtcGkgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJDTVBJICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyaWNtcCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUklDTVAgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJlcnJvciBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9TVFJFUlJPUiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3Ryc2lnbmFsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSU0lHTkFMICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgd2FpdDMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUMyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdhaXRwaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUUElEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9ESVJFTlRfSCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAgKi8KI2lmZGVmIF9fREVDQwojZGVmaW5lIEhBVkVfRkNOVExfSCAxCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIEhBVkVfTElNSVRTX0ggMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWNoL21hY2guaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NQUNIX01BQ0hfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NRU1PUllfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZGlyLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfTkRJUl9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXIuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfRElSX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL25kaXIuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfTkRJUl9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19QQVJBTV9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lYi5oPiBoZWFkZXIgZmlsZS4gICovCiNpZm5kZWYgX19HTlVDX18KI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDEKI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy93YWl0Lmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRnYyBsaWJyYXJ5ICgtbGRnYykuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJER0MgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBrc3RhdCBsaWJyYXJ5ICgtbGtzdGF0KS4gICovCi8qICN1bmRlZiBIQVZFX0xJQktTVEFUICoKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdW4gbGlicmFyeSAoLWxzdW4pLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCU1VOICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlzYXR0eScgZnVuY3Rpb24uICovCi8qICN1bmRlZiBIQVZFX0lTQVRUWSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0dHluYW1lJyBmdW5jdGlvbi4gKi8KLyogI3VuZGVmIEhBVkVfVFRZTkFNRSAqLwoKLyogVXNlIGhpZ2ggcmVzb2x1dGlvbiBmaWxlIHRpbWVzdGFtcHMgaWYgbm9uemVyby4gKi8KI2RlZmluZSBGSUxFX1RJTUVTVEFNUF9ISV9SRVMgMAoKLyogRGVmaW5lIGZvciBjYXNlIGluc2Vuc2l0dmUgZmlsZW5hbWVzICovCiNkZWZpbmUgSEFWRV9DQVNFX0lOU0VOU0lUSVZFX0ZTIDEKCi8qIFZNUyBzcGVjaWZpYywgZGVmaW5lIGl0IGlmIHlvdSB3YW50IHRvIHVzZSBjYXNlIHNlbnNpdGl2ZSB0YXJnZXRzICovCi8qICN1bmRlZiBXQU5UX0NBU0VfU0VOU0lUSVZFX1RBUkdFVFMgKi8KCi8qIFZNUyBzcGVjaWZpYywgVjcuMCBoYXMgb3BlbmRpcigpIGFuZCBmcmllbmRzLCBzbyBpdCdzIHVuZGVmaW5lZCAqLwovKiBJZiB5b3Ugd2FudCB0byB1c2Ugbm9uLVZNUyBjb2RlIGZvciBvcGVuZGlyKCkgZXRjLiBvbiBWNy4wIGFuZCBncmVhdGVyCiAgIGRlZmluZSB0aGUgZmlyc3Qgb3IgYm90aCBtYWNyb3MgQU5EIGNoYW5nZSB0aGUgY29tcGlsZSBjb21tYW5kIHRvIGdldCB0aGUKICAgbm9uLVZNUyB2ZXJzaW9ucyBsaW5rZWQ6IChwcmVmaXg9KGFsbCxleGNlcHQ9KG9wZW5kaXIsLi4uICAqLwovKiAjdW5kZWYgSEFWRV9WTVNESVJfSCAqLwovKiAjdW5kZWYgX0RJUkVOVF9IQVZFX0RfTkFNTEVOICovCgovKiBPbiBvbGRlciBzeXN0ZW1zIHdpdGhvdXQgNy4wIGJhY2twb3J0IG9mIENSVEwgdXNlIG5vbi1WTVMgY29kZSBmb3Igb3BlbmRpcigpIGV0Yy4gKi8KI2lmIF9fQ1JUTF9WRVIgPCA3MDAwMDAwMAojIGRlZmluZSBIQVZFX1ZNU0RJUl9IIDEKI2VuZGlmCgojaWYgZGVmaW5lZChIQVZFX1ZNU0RJUl9IKSAmJiBkZWZpbmVkKEhBVkVfRElSRU5UX0gpCiN1bmRlZiBIQVZFX0RJUkVOVF9ICiNlbmRpZgoKI2RlZmluZSBIQVZFX1NURExJQl9IIDEKI2RlZmluZSBJTkNMVURFRElSICJzeXMkc3lzcm9vdDpbc3lzbGliXSIKI2RlZmluZSBMSUJESVIgInN5cyRzeXNyb290OltzeXNsaWJdIgoKLyogRG9uJ3QgdXNlIFJUTCBmdW5jdGlvbnMgb2YgT3BlblZNUyAqLwojaWZkZWYgX19ERUNDCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNkZWZpbmUgZ2V0b3B0ICAgZ251X2dldG9wdAojZGVmaW5lIG9wdGFyZyAgIGdudV9vcHRhcmcKI2RlZmluZSBvcHRvcHQgICBnbnVfb3B0b3B0CiNkZWZpbmUgb3B0aW5kICAgZ251X29wdGluZAojZGVmaW5lIG9wdGVyciAgIGdudV9vcHRlcnIKI2RlZmluZSBnbG9iZnJlZSBnbnVfZ2xvYmZyZWUKI2RlZmluZSBnbG9iICAgICBnbnVfZ2xvYgojZW5kaWYKCi8qIERlZmluZSBpZiB1c2luZyBhbGxvY2EuYy4gICovCi8qICN1bmRlZiBDX0FMTE9DQSAqLwovKiBtYXliZSB0aGlzIHNob3VsZCBiZSBwbGFjZWQgaW50byBtYWtlaW50LmggKi8KI2lmICAgICBkZWZpbmVkKF9fVkFYKSAmJiBkZWZpbmVkKF9fREVDQykKI2RlZmluZSBhbGxvY2EobikgICAgICAgX19BTExPQ0EobikKI2VuZGlmCgovKiBPdXRwdXQgc3luYyBzeXBwb3J0ICovCiNkZWZpbmUgTk9fT1VUUFVUX1NZTkMKCi8qIERlZmluZSB0byAxIHRvIHdyaXRlIGV2ZW4gc2hvcnQgc2luZ2xlLWxpbmUgYWN0aW9ucyBpbnRvIGEgVk1TL0RDTCBjb21tYW5kCiAgIGZpbGU7IHRoaXMgYWxzbyBlbmFibGVzIGV4cG9ydGluZyBtYWtlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnRvIHRoZQogICAoc3ViLSlwcm9jZXNzLCB3aGljaCBleGVjdXRlcyB0aGUgYWN0aW9uLgogICBUaGUgdXN1YWwgbWFrZSBydWxlcyBhcHBseSB3aGV0aGVyIGEgc2hlbGwgdmFyaWFibGUgLSBoZXJlIGEgRENMIHN5bWJvbCBvcgogICBWTVMgbG9naWNhbCBbc2VlIENSVEwgZ2V0ZW52KCldIC0gaXMgYWRkZWQgdG8gdGhlIG1ha2UgZW52aXJvbm1lbnQgYW5kCiAgIGlzIGV4cG9ydGVkLiAqLwojZGVmaW5lIFVTRV9EQ0xfQ09NX0ZJTEUgMQoKLyogQnVpbGQgaG9zdCBpbmZvcm1hdGlvbi4gKi8KI2RlZmluZSBNQUtFX0hPU1QgIlZNUyIK