LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk5IFBhYmxvIFNhcmF0eGFnYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICogU2kgdm9zIHZvbG96IGFpZGVyIGF2b3UgbGkgcmF0b/tybmFlZGplIGRlcyBsaWJlcyBwcm9ncmFtZXMg6CB3YWxvbiwKICogdm9zIHBvbG96IHNjcu5yZSBhIGwnIGFkcmVzc2UgZW1pbGUgPGxpbnV4LXdhQGNoYW5hZS5hbHBoYW5ldC5jaD4KICovCgojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgV2EKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgIDkwCiNkZWZpbmUgTEFOR1VBR0VfTUVOVV9JVEVNICAgICAgICAgICAiJldhbG9uIgoKLyogTWVudSAqLwoKI2RlZmluZSBNRU5VX0ZJTEUgICAgICAgICAgICAgICAgICAgICImRml0Y2juIgojZGVmaW5lIE1FTlVfRklMRV9ORVcgICAgICAgICAgICAgICAgIiZOb3ZlYS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICImRHJvdu5cdEVudGVyIgojZGVmaW5lIE1FTlVfRklMRV9NT1ZFICAgICAgICAgICAgICAgIiZCb2Rq7i4uLlx0RjciCiNkZWZpbmUgTUVOVV9GSUxFX0NPUFkgICAgICAgICAgICAgICAiJkNvcHnuLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICImUmFmYWNlclx0RGVsIgojZGVmaW5lIE1FTlVfRklMRV9BVFRSSUJVVEVTICAgICAgICAgIiZBdHJpYnV0cy4uLlx0QWx0K0VudGVyIgojZGVmaW5lIE1FTlVfRklMRV9FWEVDVVRFICAgICAgICAgICAgIiZFbm9uZGVyLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIk1vdXNz7iAmRm/7IGRpIFdpbmRvd3MuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIiZUY2j7emVzIgojZGVmaW5lIE1FTlVfT1BUSU9OU19BVVRPX0FSUkFOR0UgICAgIiZBcmluZGppIHRvdCBzZXUiCiNkZWZpbmUgTUVOVV9PUFRJT05TX01JTl9PTl9SVU4gICAgICAiJk1pbmltaXplIG9uIHJ1biIKI2RlZmluZSBNRU5VX09QVElPTlNfU0FWRV9TRVRUSU5HUyAgICImU2NoYXBlciBsZXMgdGNo+3plcyBjd2FuZCBlc3QgY2xveXUiCgojZGVmaW5lIE1FTlVfV0lORE9XUyAgICAgICAgICAgICAgICAgIiZQdXJuZWFzIgojZGVmaW5lIE1FTlVfV0lORE9XU19PVkVSTEFQICAgICAgICAgIiZTbyBvbmsgbCcg9HRlXHRTaGlmdCtGNSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfU0lERV9CWV9TSURFICAgICJBICZDb3N06SBPbmsgbCcg9HRlXHRTaGlmdCtGNCIKI2RlZmluZSBNRU5VX1dJTkRPV1NfQVJSQU5HRSAgICAgICAgICImQXJyYW5nZSBTeW1ib2xzIgoKI2RlZmluZSBNRU5VX0xBTkdVQUdFICAgICAgICAgICAgICAgICImTGluZ2FlZGplIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImQWlkZSIKI2RlZmluZSBNRU5VX0hFTFBfQ09OVEVOVFMgICAgICAgICAgICLFJmR2aW5zIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgIkMmd2Vy7i4uLiIKI2RlZmluZSBNRU5VX0hFTFBfSEVMUF9PTl9IRUxQICAgICAgICImQWlkZSBzbyBsJyBBaWRlIgojZGVmaW5lIE1FTlVfSEVMUF9UVVRPUklBTCAgICAgICAgICAgIiZUdXRvcmnlIgoKI2RlZmluZSBNRU5VX0lORk8gICAgICAgICAgICAgICAgICAgICImSW5mb3Jt5WNpb24uLi4iCiNkZWZpbmUgTUVOVV9JTkZPX0xJQ0VOU0UgICAgICAgICAgICAiJkxpY2luc2UiCiNkZWZpbmUgTUVOVV9JTkZPX05PX1dBUlJBTlRZICAgICAgICAiJk5PTEUgV0FSQU5URVlFIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgIsUgJmRmYWl0IGRpIFdJTkUiCgovKiBEaWFsb2dzICovCgojZGVmaW5lIERJQUxPR19PSyAgICAgICAgICAgICAgICAgICAgIkkgVmEiCiNkZWZpbmUgRElBTE9HX0NBTkNFTCAgICAgICAgICAgICAgICAiUmlub25j7iIKI2RlZmluZSBESUFMT0dfQlJPV1NFICAgICAgICAgICAgICAgICImRm95dGVyIgojZGVmaW5lIERJQUxPR19IRUxQICAgICAgICAgICAgICAgICAgIiZBaWRlIgoKI2RlZmluZSBESUFMT0dfTkVXX0NBUFRJT04gICAgICAgICAgICJOb3ZlYSBQcm9ncmFtZSIKI2RlZmluZSBESUFMT0dfTkVXX05FVyAgICAgICAgICAgICAgICJOb3ZlYSIKI2RlZmluZSBESUFMT0dfTkVXX0dST1VQICAgICAgICAgICAgICImR3JvdXBlIGRpIHByb2dyYW1lcyIKI2RlZmluZSBESUFMT0dfTkVXX1BST0dSQU0gICAgICAgICAgICImUHJvZ3JhbWUiCgojZGVmaW5lIERJQUxPR19NT1ZFX0NBUFRJT04gICAgICAgICAgIkJvZGruIFByb2dyYW1lIgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIkJvZGruIGwnICZwcm9ncmFtZToiCiNkZWZpbmUgRElBTE9HX01PVkVfRlJPTV9HUk9VUCAgICAgICAiJkRvIGdyb3VwZToiCiNkZWZpbmUgRElBTE9HX01PVkVfVE9fR1JPVVAgICAgICAgICAiJsUgZ3JvdXBlOiIKCiNkZWZpbmUgRElBTE9HX0NPUFlfQ0FQVElPTiAgICAgICAgICAiQ29wee4gUHJvZ3JhbWUiCiNkZWZpbmUgRElBTE9HX0NPUFlfUFJPR1JBTSAgICAgICAgICAiQ29wee4gbCcgJnByb2dyYW1lOiIKI2RlZmluZSBESUFMT0dfQ09QWV9GUk9NX0dST1VQICAgICAgIERJQUxPR19NT1ZFX0ZST01fR1JPVVAKI2RlZmluZSBESUFMT0dfQ09QWV9UT19HUk9VUCAgICAgICAgIERJQUxPR19NT1ZFX1RPX0dST1VQCgojZGVmaW5lIERJQUxPR19HUk9VUF9DQVBUSU9OICAgICAgICAgIkF0cmlidXRzIGRvIEdyb3VwZSBkaSBQcm9ncmFtZXMiCiNkZWZpbmUgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OICAgICAiJkRlc2NyaXBjaW9uOiIKI2RlZmluZSBESUFMT0dfR1JPVVBfRklMRSAgICAgICAgICAgICImRml0Y2juIEdyb3VwZToiCgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0NBUFRJT04gICAgICAgIkF0cmlidXRzIGRvIFByb2dyYW1lIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJkNvbWFuZGU6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIiZSaWRhbnQgd2lzaycgb24gbCcgZW5vbmRlOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9IT1RfS0VZICAgICAgICImTG95YWVkamUgZGkgdGFwZXM6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX1NZTUJPTCAgICAgICAgIkNvbWUgJklt5WRqZXRlIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX09USEVSX1NZTUJPTCAgIibUdGVzIGlt5WRqZXRlcy4uLiIKCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9DQVBUSU9OICAgICAgICAiVGNod2V6aXhob3ogZW5lIElt5WRqZXRlIgojZGVmaW5lIERJQUxPR19TWU1CT0xfRklMRSAgICAgICAgICAgIiZObyBkbyBmaXRjaO46IgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ1VSUkVOVCAgICAgICAgIiZJbeVkamV0ZSBkbyBtb3VtaW50OiIKCiNkZWZpbmUgRElBTE9HX0VYRUNVVEVfQ0FQVElPTiAgICAgICAiRW5vbmRlciBQcm9ncmFtZSIKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DT01NQU5EX0xJTkUgIERJQUxPR19QUk9HUkFNX0NPTU1BTkRfTElORQojZGVmaW5lIERJQUxPR19FWEVDVVRFX1NZTUJPTCAgICAgICAgRElBTE9HX1BST0dSQU1fU1lNQk9MCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QUk9HUkFNX01BTkFHRVIgICAgICAgICAgICAiTWFuYWVkamV1IGRpIFByb2dyYW1lcyIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIkFST0tFIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgICAiQURWRVJUSVhITUlOVCIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgIkluZm9ybeVjaW9uIgojZGVmaW5lIFNUUklOR19ERUxFVEUgICAgICAgICAgICAgICAgICAgICAiRGlzZmFjZXIiCiNkZWZpbmUgU1RSSU5HX0RFTEVURV9HUk9VUF9zICAgICAgICAgICAgICJEaXNmYWNlciBsaSBncm91cGUgYCVzJyA/IgojZGVmaW5lIFNUUklOR19ERUxFVEVfUFJPR1JBTV9zICAgICAgICAgICAiRGlzZmFjZXIgbGkgcHJvZ3JhbWUgYCVzJyA/IgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgICAgICAiTuluIGNvIHBvc3NpYmUiCiNkZWZpbmUgU1RSSU5HX0ZJTEVfUkVBRF9FUlJPUl9zICAgICAgICAgICJZ5WsgbicgYSBu6W4gc3TuIOUgbW91bWludCBkaSBsZXJlIGAlcyciCiNkZWZpbmUgU1RSSU5HX0ZJTEVfV1JJVEVfRVJST1JfcyAgICAgICAgICJZ5WsgbicgYSBu6W4gc3TuIOUgbW91bWludCBkaSBzY2hhcGVyIGAlcyciCgojZGVmaW5lIFNUUklOR19HUlBGSUxFX1JFQURfRVJST1JfcyAgICAgICAiXApMaSBmaXRjaO4gZGkgZ3JvdXBlIGAlcycgbicgcG91dCBu6W4gZXNzZSBkcm92aS5cblwKVm9sb3ogc2F5aSBwdXMgdOVyZCA/IgoKI2RlZmluZSBTVFJJTkdfT1VUX09GX01FTU9SWSAgICAgICAgICAgICAgIk1lbXdlcmUgcGxpbm5lIgojZGVmaW5lIFNUUklOR19XSU5IRUxQX0VSUk9SICAgICAgICAgICAgICAiSSBnbiBhIHBvbnQgZCcgYWlkZSIKI2RlZmluZSBTVFJJTkdfVU5LTk9XTl9GRUFUVVJFX3MgICAgICAgICAgIk9zdGkgbuluIGNub3hodSBkaW5zICVzIgojZGVmaW5lIFNUUklOR19GSUxFX05PVF9PVkVSV1JJVFRFTl9zICAgICAiTGkgZml0Y2juIGAlcycgZWd6aXN0ZXllIGRkamEuIE7pbiBzcG90Y2juLiIKI2RlZmluZSBTVFJJTkdfU0FWRV9HUk9VUF9BU19zICAgICAgICAgICAgIkdyb3VwZSBzY2hhcOkg6HQgcmxvbekgY29tZSBgJXMnIHBvIG7pbiBzcG90Y2juIGxlcyBmaXRjaO4gZGkgZHZhbnQiCgojZGVmaW5lIFNUUklOR19OT19IT1RfS0VZICAgICAgICAgICAgICAgICAiTm9sZSIKCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAgICAgICJUb3MgbGVzIGZpdGNo7nMgKCouKikiCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1TICAgICAgICAgICAgICAgICAgICJQcm9ncmFtZXMiCiNkZWZpbmUgU1RSSU5HX0xJQlJBUklFU19ETEwgICAgICAgICAgICAgICJM7nZyZXllcyAoKi5kbGwpIgojZGVmaW5lIFNUUklOR19TWU1CT0xfRklMRVMgICAgICAgICAgICAgICAiRml0Y2jucyBkaSBzaW1i9GxlcyIKI2RlZmluZSBTVFJJTkdfU1lNQk9MU19JQ08gICAgICAgICAgICAgICAgIklt5WRqZXRlcyAoKi5pY28pIgoKI2luY2x1ZGUgIlh4LnJjIgo=