LyoKICogIE5vdGVwYWQgKEZyZW5jaCByZXNvdXJjZXMpCiAqCiAqICBDb3B5cmlnaHQgMTk5Nyw5OCBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAqICBUcmFuc2xhdGlvbiBieSBMYXVyZW50IEJ1ZmZsZXIgPGxhdXJlbnRAYmx1ZXdpbi5jaD4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgICAgIEZyCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICAgICAzCiNkZWZpbmUgTEFOR1VBR0VfTUVOVV9JVEVNICAgICAgICAgICAgICAiJkZyYW7nYWlzIgoKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAgICAiJkZpY2hpZXIiCiNkZWZpbmUgTUVOVV9GSUxFX05FVyAgICAgICAgICAgICAgICAgICAiJk5vdXZlYXUuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAgICAiJk91dnJpciIKI2RlZmluZSBNRU5VX0ZJTEVfU0FWRSAgICAgICAgICAgICAgICAgICImU2F1dmVyIgojZGVmaW5lIE1FTlVfRklMRV9TQVZFQVMgICAgICAgICAgICAgICAgIlMmYXV2ZXIgc291cy4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlQgICAgICAgICAgICAgICAgICJJbSZwcmltZXIiCiNkZWZpbmUgTUVOVV9GSUxFX1BBR0VTRVRVUCAgICAgICAgICAgICAiJk1pc2UgZW4gcGFnZS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRTRVRVUCAgICAgICAgICAgICJJbXAmcmltYW50ZS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfRVhJVCAgICAgICAgICAgICAgICAgICImUXVpdHRlciIKCiNkZWZpbmUgTUVOVV9FRElUICAgICAgICAgICAgICAgICAgICAgICAiJkVkaXRpb24iCiNkZWZpbmUgTUVOVV9FRElUX1VORE8gICAgICAgICAgICAgICAgICAiJkFubnVsZXJcdEN0cmwrWiIKI2RlZmluZSBNRU5VX0VESVRfQ1VUICAgICAgICAgICAgICAgICAgICJDb3VwZSZyXHRDdHJsK1giCiNkZWZpbmUgTUVOVV9FRElUX0NPUFkgICAgICAgICAgICAgICAgICAiJkNvcGllclx0Q3RybCtDIgojZGVmaW5lIE1FTlVfRURJVF9QQVNURSAgICAgICAgICAgICAgICAgIkMmb2xsZXJcdEN0cmwrViIKI2RlZmluZSBNRU5VX0VESVRfREVMRVRFICAgICAgICAgICAgICAgICJFJmZmYWNlclx0RGVsIgojZGVmaW5lIE1FTlVfRURJVF9TRUxFQ1RBTEwgICAgICAgICAgICAgIlRvdXQgJnNlbGVjdGlvbm5lciIKI2RlZmluZSBNRU5VX0VESVRfVElNRURBVEUgICAgICAgICAgICAgICImSGV1cmUvRGF0ZVx0RjUiCiNkZWZpbmUgTUVOVV9FRElUX1dSQVAgICAgICAgICAgICAgICAgICAiJlJldG91ciDgIGxhIGxpZ25lIgoKI2RlZmluZSBNRU5VX1NFQVJDSCAgICAgICAgICAgICAgICAgICAgICImUmVjaGVyY2hlIgojZGVmaW5lIE1FTlVfU0VBUkNIX1NFQVJDSCAgICAgICAgICAgICAgIiZDaGVyY2hlci4uLiIKI2RlZmluZSBNRU5VX1NFQVJDSF9ORVhUICAgICAgICAgICAgICAgICImU3VpdmFudFx0RjMiCgojZGVmaW5lIE1FTlVfTEFOR1VBR0UgICAgICAgICAgICAgICAgICAgIiZMYW5ndWUiCgojZGVmaW5lIE1FTlVfSEVMUCAgICAgICAgICAgICAgICAgICAgICAgIiZBaWRlIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgICAgIiZTb21tYWlyZSIKI2RlZmluZSBNRU5VX0hFTFBfU0VBUkNIICAgICAgICAgICAgICAgICImQ2hlcmNoZXIuLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAgICAiJkFpZGUgc3VyIGwnYWlkZSIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mJm8uLi4iCiNkZWZpbmUgTUVOVV9JTkZPX0xJQ0VOU0UgICAgICAgICAgICAgICAiJkxpY2Vuc2UiCiNkZWZpbmUgTUVOVV9JTkZPX05PX1dBUlJBTlRZICAgICAgICAgICAiJlNBTlMgR0FSQU5USUUiCiNkZWZpbmUgTUVOVV9JTkZPX0FCT1VUX1dJTkUgICAgICAgICAgICAiJkEgcHJvcG9zIGRlIFdpbmUiCgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICAgICJBbm51bGVyIgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgICAgIiZQYXJjb3VyaXIuLi4iCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAgICAiJkFpZGUiCgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfQ0FQVElPTiAgICAgICAgIk1pc2UgZW4gcGFnZSIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0hFQUQgICAgICAgICAgICImRW4tdOp0ZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9UQUlMICAgICAgICAgICAiJlBpZWQgZGUgcGFnZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9NQVJHSU4gICAgICAgICAiJk1hcmdlczoiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9MRUZUICAgICAgICAgICAiJkdhdWNoZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9SSUdIVCAgICAgICAgICAiJkRyb2l0ZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9UT1AgICAgICAgICAgICAiJkhhdXQ6IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfQk9UVE9NICAgICAgICAgIiZCYXM6IgoKCi8qIFN0cmluZ3MgKi8KCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9IRUFERVJWQUxVRSAgICAiJm4iICAgICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfRk9PVEVSVkFMVUUgICAgIlBhZ2UgJnMiICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX0xFRlRWQUxVRSAgICAgICIyMCBtbSIgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9SSUdIVFZBTFVFICAgICAiMjAgbW0iICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfVE9QVkFMVUUgICAgICAgIjI1IG1tIiAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX0JPVFRPTVZBTFVFICAgICIyNSBtbSIgICAgIC8qIEZJWE1FICovCgojZGVmaW5lIFNUUklOR19OT1RFUEFEICAgICAgICAgICAgICAgICAgIk5vdGVwYWQiCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAiRVJSRVVSIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgIkFWRVJUSVNTRU1FTlQiCiNkZWZpbmUgU1RSSU5HX0lORk8gICAgICAgICAgICAgICAgICAgICAiSW5mb3JtYXRpb24iCgojZGVmaW5lIFNUUklOR19VTlRJVExFRCAgICAgICAgICAgICAgICAgIihzYW5zIHRpdHJlKSIKCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAgICAiVG91cyAoKi4qKSIKI2RlZmluZSBTVFJJTkdfVEVYVF9GSUxFU19UWFQgICAgICAgICAgICJGaWNoaWVycyB0ZXh0ZSAoKi50eHQpIgoKI2RlZmluZSBTVFJJTkdfVE9PTEFSR0UgICAgICAgICAiTGUgZmljaGllciAnJXMnIGVzdCB0cm9wIGdyYW5kIHBvdXIgbGUgYmxvYyBub3RlLlxuIFwKVmV1aWxsZXogdXRpbGlzZXIgdW4gYXV0cmUg6WRpdGV1ci4iCgojZGVmaW5lIFNUUklOR19OT1RFWFQgICAgICAgICAgICJWb3VzIG4nYXZleiBwYXMgZW50cukgZGUgdGV4dGUuIFwKXG5WZXVpbGxleiB0YXBlciBxdWVscXVlIGNob3NlIGV0IHJlY29tbWVuY2VyIgoKLyogRklYTUUgKi8KCiNkZWZpbmUgU1RSSU5HX0RPRVNOT1RFWElTVCAgICAgIkZpbGUgJyVzJ1xuZG9lcyBub3QgZXhpc3RcblxuIFwKRG8geW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGZpbGUgPyIKCiNkZWZpbmUgU1RSSU5HX05PVFNBVkVEICAgICAgICAgIkxlIGZpY2hpZXIgJyVzJ1xuXG4gYSBjaGFuZ2VcbiBcCldvdWxkIHlvdSBsaWtlIHRvIHNhdmUgeW91ciBjaGFuZ2VzID8iCgojZGVmaW5lIFNUUklOR19OT1RGT1VORCAgICAgICAgICInJXMnIGludHJvdXZhYmxlLiIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgIlBhcyBhc3NleiBkZSBt6W1vaXJlIHBvdXIgZmluaXIgY2V0dGUgdOJjaGUuIFwKXG5GZXJtZXogdW5lIG91IHBsdXNpZXIgYXBwbGljYXRpb25zIHBvdXIgbGli6XJlciBcbiBcCmRlIGxhIG3pbW9pcmUuIgoKI2luY2x1ZGUgIm5vdGVwYWQucmMiCgovKiBTdHJpbmdzICovCgo=