LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIFNrCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICAxMAoKLyogTWVudSAqLwoKI2RlZmluZSBNRU5VX0ZJTEUgICAgICAgICAgICAgICAgICAgICImU/pib3IiCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAiJk90dm9yaZ0uLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UICAgICAgICAgICAgICAiJlRsYehpnSIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRFUl9TRVRVUCAgICAgICImTmFzdGF2ZW5pZSB0bGHoZS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfRVhJVCAgICAgICAgICAgICAgICJVJmtvbuhpnSIKCiNkZWZpbmUgTUVOVV9FRElUICAgICAgICAgICAgICAgICAgICAiJlVwcmF2aZ0iCiNkZWZpbmUgTUVOVV9FRElUX0NPUFlfRElBTE9HICAgICAgICAiS29w7SZyb3ZhnS4uLiIKI2RlZmluZSBNRU5VX0VESVRfQU5OT1RBVEUgICAgICAgICAgICImU2tvbWVudG92YZ0uLi4iCgojZGVmaW5lIE1FTlVfQk9PS01BUksgICAgICAgICAgICAgICAgIiZa4WxvnmthIgojZGVmaW5lIE1FTlVfQk9PS01BUktfREVGSU5FICAgICAgICAgIiZEZWZpbm92YZ0uLi4iCgojZGVmaW5lIE1FTlVfSEVMUCAgICAgICAgICAgICAgICAgICAgIiZQb21vYyIKI2RlZmluZSBNRU5VX0hFTFBfT05fSEVMUCAgICAgICAgICAgICJQb21vYyAmbmEgcG9tb2NpIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9UT1AgICAgICAgICAgICAgIlaeZHkgbmEgJnZyY2h1IgojZGVmaW5lIE1FTlVfSEVMUF9JTkZPICAgICAgICAgICAgICAgIiZJbmZvLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9BQk9VVF9XSU5FICAgICAgICAgIk8mIFdJTkUiCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19XSU5FX0hFTFAgICAgICAgICAgICAgIldJTkUgUG9tb2MiCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAiQ0hZQkEiCiNkZWZpbmUgU1RSSU5HX1dBUk5JTkcgICAgICAgICAgICAgICAiVkFST1ZBTklFIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgIkluZm9ybeFjaWUiCiNkZWZpbmUgU1RSSU5HX05PVF9JTVBMRU1FTlRFRCAgICAgICAiTmVpbXBsZW1lbnRvdmFu6SIKI2RlZmluZSBTVFJJTkdfSExQRklMRV9FUlJPUl9zICAgICAgICJDaHliYSBwb+hhcyDo7XRhbmlhIHP6Ym9ydSBgJXMnIgojZGVmaW5lIFNUUklOR19DT05URU5UUyAgICAgICAgICAgICAgIiZPYnNhaCIKI2RlZmluZSBTVFJJTkdfU0VBUkNIICAgICAgICAgICAgICAgICImSL5hZGGdIgojZGVmaW5lIFNUUklOR19CQUNLICAgICAgICAgICAgICAgICAgIiZTcOSdIgojZGVmaW5lIFNUUklOR19ISVNUT1JZICAgICAgICAgICAgICAgIiZIaXN083JpYSIKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICJWmmV0a3kgc/pib3J5ICgqLiopIgojZGVmaW5lIFNUUklOR19IRUxQX0ZJTEVTX0hMUCAgICAgICAgIlP6Ym9yeSBwb21vY2kgKCouaGxwKSIKCiNpbmNsdWRlICJYeC5yYyIK