LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIEh1CiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICA3CgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZGaWxlIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIiZNZWdueWl04XMuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UICAgICAgICAgICAgICAiJk55b210YXThcyIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRFUl9TRVRVUCAgICAgICJOeW9tdGF08yAmYmXhbGztdOFzLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIiZLaWzpcOlzIgoKI2RlZmluZSBNRU5VX0VESVQgICAgICAgICAgICAgICAgICAgICImU3plcmtlc3p06XMiCiNkZWZpbmUgTUVOVV9FRElUX0NPUFlfRElBTE9HICAgICAgICAiJk3hc29s4XMuLi4iCiNkZWZpbmUgTUVOVV9FRElUX0FOTk9UQVRFICAgICAgICAgICAiJkFubm90YXRlLi4uIgoKI2RlZmluZSBNRU5VX0JPT0tNQVJLICAgICAgICAgICAgICAgICImS/ZueXZqZWx69SIKI2RlZmluZSBNRU5VX0JPT0tNQVJLX0RFRklORSAgICAgICAgICImRGVmaW5p4Wzhcy4uLiIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAiJlNlZ+10c+lnIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9IRUxQICAgICAgICAgICAgIlNlZ+10c+lnICZhIHNlZ+10c+lncvVsIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9UT1AgICAgICAgICAgICAgIk1pbmRpZyAmbGVnZmVs/GwiCiNkZWZpbmUgTUVOVV9IRUxQX0lORk8gICAgICAgICAgICAgICAiJkluZm9ybeFjafMuLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0FCT1VUX1dJTkUgICAgICAgICAiJkEgV0lORS1y82wiCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19XSU5FX0hFTFAgICAgICAgICAgICAgIldJTkUgc2Vn7XRz6WciCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAiSElCQSIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICJGSUdZRUxNRVpURVTJUyIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICJJbmZvcm3hY2nzIgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgIk5pbmNzIGltcGxlbWVudOFsdmEiCiNkZWZpbmUgU1RSSU5HX0hMUEZJTEVfRVJST1JfcyAgICAgICAiSGliYSBhIGAlcycgZmlsZSBvbHZhc+FzYWtvciIKI2RlZmluZSBTVFJJTkdfQ09OVEVOVFMgICAgICAgICAgICAgICImVGFydGFsb20iCiNkZWZpbmUgU1RSSU5HX1NFQVJDSCAgICAgICAgICAgICAgICAiJktlcmVz6XMiCiNkZWZpbmUgU1RSSU5HX0JBQ0sgICAgICAgICAgICAgICAgICAiJlZpc3N6YSIKI2RlZmluZSBTVFJJTkdfSElTVE9SWSAgICAgICAgICAgICAgICImSGlzdG9yeSIKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICJNaW5kZW4gZmlsZSAoKi4qKSIKI2RlZmluZSBTVFJJTkdfSEVMUF9GSUxFU19ITFAgICAgICAgICJTZWftdHPpZyBmaWxlLW9rICgqLmhscCkiCgojaW5jbHVkZSAiWHgucmMiCg==