LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk5IEd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIFB0CiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICAxNgojZGVmaW5lIExBTkdVQUdFX01FTlVfSVRFTSAgICAgICAgICAgIiZQb3J0dWd16nMiCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZBcnF1aXZvIgojZGVmaW5lIE1FTlVfRklMRV9ORVcgICAgICAgICAgICAgICAgIiZOb3ZvLi4uIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIkEmYnJpclx0RW50ZXIiCiNkZWZpbmUgTUVOVV9GSUxFX01PVkUgICAgICAgICAgICAgICAiJk1vdmVyLi4uXHRGNyIKI2RlZmluZSBNRU5VX0ZJTEVfQ09QWSAgICAgICAgICAgICAgICImQ29waWFyLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICImRGVsZXRhclx0RW50ZiIKI2RlZmluZSBNRU5VX0ZJTEVfQVRUUklCVVRFUyAgICAgICAgICJBJnRyaWJ1dG9zLi4uXHRBbHQrRW50ZXIiCiNkZWZpbmUgTUVOVV9GSUxFX0VYRUNVVEUgICAgICAgICAgICAiJkV4ZWN1dGFyLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIiZTYWlyIGRvIFdpbmRvd3MuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIiZPcOf1ZXMiCiNkZWZpbmUgTUVOVV9PUFRJT05TX0FVVE9fQVJSQU5HRSAgICAiJk9yZ2FuaXphciBBdXRvbWF0aWNhbWVudGUiCiNkZWZpbmUgTUVOVV9PUFRJT05TX01JTl9PTl9SVU4gICAgICAiJk1pbmltaXphciBuYSBFeGVjdefjbyIKI2RlZmluZSBNRU5VX09QVElPTlNfU0FWRV9TRVRUSU5HUyAgICImU2FsdmFyIGFsdGVyYef1ZXMgYW8gc2FpciIKCiNkZWZpbmUgTUVOVV9XSU5ET1dTICAgICAgICAgICAgICAgICAiJkphbmVsYXMiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX09WRVJMQVAgICAgICAgICAiJkNhc2NhdGFcdFNoaWZ0K0Y1IgojZGVmaW5lIE1FTlVfV0lORE9XU19TSURFX0JZX1NJREUgICAgIiZMYWRvIGEgbGFkb1x0U2hpZnQrRjQiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX0FSUkFOR0UgICAgICAgICAiJk9yZ2FuaXphciBzaW1ib2xvcyIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAiJkxpbmd1YWdlbSIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAiJkFqdWRhIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgIiZDb250ZXVkbyIKI2RlZmluZSBNRU5VX0hFTFBfU0VBUkNIICAgICAgICAgICAgICImUHJvY3VyYXMuLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAiJkFqdWRhIG5hIGFqdWRhIgojZGVmaW5lIE1FTlVfSEVMUF9UVVRPUklBTCAgICAgICAgICAgIiZUdXRvcmlhbCIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAiJkluZm9ybWHn9WVzLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgIiZMaWNlbudhIgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgIiZTRU0gR0FSQU5USUEiCiNkZWZpbmUgTUVOVV9JTkZPX0FCT1VUX1dJTkUgICAgICAgICAiJlNvYnJlIFdJTkUiCgovKiBEaWFsb2dzICovCgojZGVmaW5lIERJQUxPR19PSyAgICAgICAgICAgICAgICAgICAgIk9LIgojZGVmaW5lIERJQUxPR19DQU5DRUwgICAgICAgICAgICAgICAgIkNhbmNlbGFyIgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgIiZQcm9jdXJhciIKI2RlZmluZSBESUFMT0dfSEVMUCAgICAgICAgICAgICAgICAgICImQWp1ZGEiCgojZGVmaW5lIERJQUxPR19ORVdfQ0FQVElPTiAgICAgICAgICAgIk5vdm8gb2JqZXRvIGRlIHByb2dyYW1hIgojZGVmaW5lIERJQUxPR19ORVdfTkVXICAgICAgICAgICAgICAgIk5vdm8iCiNkZWZpbmUgRElBTE9HX05FV19HUk9VUCAgICAgICAgICAgICAiJkdydXBvIGRlIHByb2dyYW1hIgojZGVmaW5lIERJQUxPR19ORVdfUFJPR1JBTSAgICAgICAgICAgIiZQcm9ncmFtYSIKCiNkZWZpbmUgRElBTE9HX01PVkVfQ0FQVElPTiAgICAgICAgICAiTW92ZXIgUHJvZ3JhbWEiCiNkZWZpbmUgRElBTE9HX01PVkVfUFJPR1JBTSAgICAgICAgICAiTW92ZXIgcHJvZ3JhbWE6IgojZGVmaW5lIERJQUxPR19NT1ZFX0ZST01fR1JPVVAgICAgICAgIkRvIGdydXBvOiIKI2RlZmluZSBESUFMT0dfTU9WRV9UT19HUk9VUCAgICAgICAgICImUGFyYSBncnVwbzoiCgojZGVmaW5lIERJQUxPR19DT1BZX0NBUFRJT04gICAgICAgICAgIkNvcGlhciBQcm9ncmFtYSIKI2RlZmluZSBESUFMT0dfQ09QWV9QUk9HUkFNICAgICAgICAgICJDb3BpYXIgcHJvZ3JhbWE6IgojZGVmaW5lIERJQUxPR19DT1BZX0ZST01fR1JPVVAgICAgICAgRElBTE9HX01PVkVfRlJPTV9HUk9VUAojZGVmaW5lIERJQUxPR19DT1BZX1RPX0dST1VQICAgICAgICAgRElBTE9HX01PVkVfVE9fR1JPVVAKCiNkZWZpbmUgRElBTE9HX0dST1VQX0NBUFRJT04gICAgICAgICAiQXRyaWJ1dG9zIGRvIGdydXBvIGRlIHByb2dyYW1hIgojZGVmaW5lIERJQUxPR19HUk9VUF9ERVNDUklQVElPTiAgICAgIiZEZXNjcmnn4286IgojZGVmaW5lIERJQUxPR19HUk9VUF9GSUxFICAgICAgICAgICAgIiZBcnF1aXZvIGRlIGdydXBvOiIKCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ0FQVElPTiAgICAgICAiQXRyaWJ1dG9zIGRlIHByb2dyYW1hIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJkxpbmhhIGRlIGNvbWFuZG86IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIiZEaXJldPNyaW8gZGUgdHJhYmFsaG86IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0hPVF9LRVkgICAgICAgIiZDb21iaW5h5+NvIGRlIGNoYXZlczoiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fU1lNQk9MICAgICAgICAiQ29tbyAmU2ltYm9sbyIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9PVEhFUl9TWU1CT0wgICImT3V0cm9zIHNpbWJvbG9zLi4uIgoKI2RlZmluZSBESUFMT0dfU1lNQk9MX0NBUFRJT04gICAgICAgICJTZWxlY2lvbmFyIHNpbWJvbG8iCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9GSUxFICAgICAgICAgICAiJk5vbWUgZG8gYXJxdWl2bzoiCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9DVVJSRU5UICAgICAgICAiJlNpbWJvbG8gY29ycmVudGU6IgoKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DQVBUSU9OICAgICAgICJFeGVjdXRhciBwcm9ncmFtYSIKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DT01NQU5EX0xJTkUgIERJQUxPR19QUk9HUkFNX0NPTU1BTkRfTElORQojZGVmaW5lIERJQUxPR19FWEVDVVRFX1NZTUJPTCAgICAgICAgRElBTE9HX1BST0dSQU1fU1lNQk9MCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QUk9HUkFNX01BTkFHRVIgICAgICAgICAgICAiR2VyZW5jaWFkb3IgZGUgcHJvZ3JhbWFzIgojZGVmaW5lIFNUUklOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAiRVJSTyIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICAgICAgIkFWSVNPIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mb3JtYefjbyIKI2RlZmluZSBTVFJJTkdfREVMRVRFICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1aXIiCiNkZWZpbmUgU1RSSU5HX0RFTEVURV9HUk9VUF9zICAgICAgICAgICAgICJFeGNsdWlyIGdydXBvIGAlcycgPyIKI2RlZmluZSBTVFJJTkdfREVMRVRFX1BST0dSQU1fcyAgICAgICAgICAgIkV4Y2x1aXIgcHJvZ3JhbWEgYCVzJyA/IgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgICAgICAiTuNvIGltcGxlbWVudGFkbyIKI2RlZmluZSBTVFJJTkdfRklMRV9SRUFEX0VSUk9SX3MgICAgICAgICAgIkVycm8gbGVuZG8gYCVzJyIKI2RlZmluZSBTVFJJTkdfRklMRV9XUklURV9FUlJPUl9zICAgICAgICAgIkVycm8gZXNjcmV2ZW5kbyBgJXMnIgoKI2RlZmluZSBTVFJJTkdfR1JQRklMRV9SRUFEX0VSUk9SX3MgICAgICAgIlwKTyBhcnF1aXZvIGRlIGdydXBvIGAlcycgbuNvIHBvZGUgc2VyIGFiZXJ0by5cblwKRGV2ZXLhIHNlciB0ZW50YWRvIG91dHJhcyB2ZXplcz8iCgojZGVmaW5lIFNUUklOR19PVVRfT0ZfTUVNT1JZICAgICAgICAgICAgICAiU2VtIG1lbfNyaWEiCiNkZWZpbmUgU1RSSU5HX1dJTkhFTFBfRVJST1IgICAgICAgICAgICAgICJBanVkYSBu428gZGlzcG9u7XZlbCIKI2RlZmluZSBTVFJJTkdfVU5LTk9XTl9GRUFUVVJFX3MgICAgICAgICAgIlJlY3Vyc28gZGVzY29uaGVjaWRvIGVtICVzIgojZGVmaW5lIFNUUklOR19GSUxFX05PVF9PVkVSV1JJVFRFTl9zICAgICAiQXJxdWl2byBgJXMnIGV4aXN0ZS4gTuNvIHNvYnJlZXNjcmV2ZW5kby4iCiNkZWZpbmUgU1RSSU5HX1NBVkVfR1JPVVBfQVNfcyAgICAgICAgICAgICJTYWx2YXIgZ3J1cG8gY29tbyBgJXMnIHBhcmEgcHJldmluaXIgYSBzb2JyZWVzY3JpdGEgZG9zIGFycXVpdm9zIG9yaWdpbmFpcyIKCiNkZWZpbmUgU1RSSU5HX05PX0hPVF9LRVkgICAgICAgICAgICAgICAgICJOZW5odW1hIgoKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICAgICAgIlRvZG9zIG9zIGFycXVpdm9zICgqLiopIgojZGVmaW5lIFNUUklOR19QUk9HUkFNUyAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbWFzIgojZGVmaW5lIFNUUklOR19MSUJSQVJJRVNfRExMICAgICAgICAgICAgICAiQmlibGlvdGVjYXMgKCouZGxsKSIKI2RlZmluZSBTVFJJTkdfU1lNQk9MX0ZJTEVTICAgICAgICAgICAgICAgIkFycXVpdm8gZGUgc2ltYm9sb3MiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTFNfSUNPICAgICAgICAgICAgICAgICJTaW1ib2xvcyAoKi5pY28pIgoKI2luY2x1ZGUgIlh4LnJjIgo=