Ly9NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgovLwojaW5jbHVkZSAicmVzb3VyY2UuaCIKCiNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLwovLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KLy8KI2luY2x1ZGUgImFmeHJlcy5oIgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIENoaW5lc2UgKFRhaXdhbikgcmVzb3VyY2VzCgojaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19DSFQpCiNpZmRlZiBfV0lOMzIKTEFOR1VBR0UgTEFOR19DSElORVNFLCBTVUJMQU5HX0NISU5FU0VfVFJBRElUSU9OQUwKI3ByYWdtYSBjb2RlX3BhZ2UoOTUwKQojZW5kaWYgLy9fV0lOMzIKCiNpZmRlZiBBUFNUVURJT19JTlZPS0VECi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vIFRFWFRJTkNMVURFCi8vCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIApCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoyIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIApCRUdJTgogICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgiIlxyXG4iCiAgICAiXDAiCkVORAoKMyBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKQkVHSU4KICAgICIjZGVmaW5lIF9BRlhfTk9fU1BMSVRURVJfUkVTT1VSQ0VTXHJcbiIKICAgICIjZGVmaW5lIF9BRlhfTk9fT0xFX1JFU09VUkNFU1xyXG4iCiAgICAiI2RlZmluZSBfQUZYX05PX1RSQUNLRVJfUkVTT1VSQ0VTXHJcbiIKICAgICIjZGVmaW5lIF9BRlhfTk9fUFJPUEVSVFlfUkVTT1VSQ0VTXHJcbiIKICAgICJcclxuIgogICAgIiNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0NIVClcclxuIgogICAgIiNpZmRlZiBfV0lOMzJcclxuIgogICAgIkxBTkdVQUdFIDQsIDFcclxuIgogICAgIiNwcmFnbWEgY29kZV9wYWdlKDk1MClcclxuIgogICAgIiNlbmRpZiAvL19XSU4zMlxyXG4iCiAgICAiI2luY2x1ZGUgIiJyZXNcXERpYWdyYW1QcmludC5yYzIiIiAgLy8gbm9uLU1pY3Jvc29mdCBWaXN1YWwgQysrIGVkaXRlZCByZXNvdXJjZXNcclxuIgogICAgIiNpbmNsdWRlICIiYWZ4cmVzLnJjIiIgICAgICAgICAvLyBTdGFuZGFyZCBjb21wb25lbnRzXHJcbiIKICAgICIjZW5kaWZcclxuIgogICAgIlwwIgpFTkQKCiNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECgoKI2lmbmRlZiBfTUFDCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vIFZlcnNpb24KLy8KClZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTwogRklMRVZFUlNJT04gMSwwLDAsMQogUFJPRFVDVFZFUlNJT04gMSwwLDAsMQogRklMRUZMQUdTTUFTSyAweDNmTAojaWZkZWYgX0RFQlVHCiBGSUxFRkxBR1MgMHgxTAojZWxzZQogRklMRUZMQUdTIDB4MEwKI2VuZGlmCiBGSUxFT1MgMHg0TAogRklMRVRZUEUgMHgyTAogRklMRVNVQlRZUEUgMHgwTApCRUdJTgogICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgogICAgQkVHSU4KICAgICAgICBCTE9DSyAiMDQwOTA0YjAiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgVkFMVUUgIkNvbW1lbnRzIiwgIlwwIgogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiSUJNIENvcnBvcmF0aW9uXDAiCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiRGlhZ3JhbVByaW50IERMTFwwIgogICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAiMSwgMCwgMCwgMVwwIgogICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIkRpYWdyYW1QcmludFwwIgogICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiTGljZW5zZWQgTWF0ZXJpYWxzIC0tIFByb3BlcnR5IG9mIElCTSAtIChDKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uLCAyMDAzLDIwMDggLSBVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiBvciBkaXNjbG9zdXJlIHJlc3RyaWN0ZWQgYnkgR1NBIEFEUCBTY2hlZHVsZSBDb250cmFjdCB3aXRoIElCTSBDb3JwLlwwIgogICAgICAgICAgICBWQUxVRSAiTGVnYWxUcmFkZW1hcmtzIiwgIihSKSBJQk0gaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uLiAgV2luZG93cyhUTSkgaXMgYSB0cmFkZW1hcmsgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlwwIgogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJEaWFncmFtUHJpbnQuRExMXDAiCiAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCAiXDAiCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJEaWFncmFtUHJpbnQgRHluYW1pYyBMaW5rIExpYnJhcnlcMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgIjIsIDEsIDAsIDBcMCIKICAgICAgICAgICAgVkFMVUUgIlNwZWNpYWxCdWlsZCIsICJcMCIKICAgICAgICBFTkQKICAgIEVORAogICAgQkxPQ0sgIlZhckZpbGVJbmZvIgogICAgQkVHSU4KICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAogICAgRU5ECkVORAoKI2VuZGlmICAgIC8vICFfTUFDCgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8KLy8gRGlhbG9nCi8vCgoxNTM4IERJQUxPRyBESVNDQVJEQUJMRSAgMzIsIDMyLCAyODksIDM1NApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfM0RMT09LIHwgRFNfQ09OVEVYVEhFTFAgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCAKICAgIFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIqZDpkwiCkZPTlQgOSwgIrdzstOp+sXpIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICKmTKrtvvciLDEwNzUsOCw0LDI3Miw4NCxXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKmV7rZKCZOKaFHIiwxMDkzLDE2LDIxLDM2LDgKICAgIENPTUJPQk9YICAgICAgICAxMTM5LDUyLDE4LDE1MiwxNTIsQ0JTX0RST1BET1dOTElTVCB8IENCU19TT1JUIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVlNDUk9MTCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICKkuq5lKCZQKS4uLiIsMTAyNSwyMTIsMTcsNjAsMTQsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAiqqy6QaFHIiwxMDk1LDE2LDM2LDI2LDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTA5OSwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTQsMzYsMjE3LDEwCiAgICBMVEVYVCAgICAgICAgICAgIsP+q6yhRyIsMTA5NCwxNiw0OCwzMSwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDEwOTgsIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDU0LDQ4LDIxOCwxMAogICAgTFRFWFQgICAgICAgICAgICKm7LhtoUciLDEwOTcsMTYsNjAsMjgsMTAsU1NfTk9QUkVGSVgKICAgIENPTlRST0wgICAgICAgICAiIiwxMTAxLCJTdGF0aWMiLFNTX0xFRlROT1dPUkRXUkFQIHwgU1NfTk9QUkVGSVggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCw1NCw2MCwyMTcsMTAKICAgIExURVhUICAgICAgICAgICAitfm40aFHIiwxMDk2LDE2LDcyLDI5LDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTEwMCwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTQsNzIsMTUyLDEwCiAgICBDT05UUk9MICAgICAgICAgIqZDpkyo7MDJrtcoJkwpIiwxMDQwLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQIHwgV1NfVEFCU1RPUCwyMjksNzAsNDEsMTIKICAgIEdST1VQQk9YICAgICAgICAiuc+rrKZDpky9ZLPyIiwxMDcyLDgsOTMsMjcyLDEwNixXU19HUk9VUAogICAgQ09OVFJPTCAgICAgICAgICKye6bmuc+rrCgmVSkiLElEQ19DVVJSRU5UX0RJQUdSQU0sIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLDE2LDEwNywyNTMsMTIKICAgIENPTlRST0wgICAgICAgICAitn2x0rzSq6ykpKq6qdKms7nPq6woJkQpIixJRENfQUxMX0RJQUdSQU1TLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwxMjEsMjUzLDEyCiAgICBDT05UUk9MICAgICAgICAgIr/vqPqqurnPq6woJkUpoUciLElEQ19TRUxFQ1RFRF9ESUFHUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTYsMTM1LDI1MywxMgogICAgTElTVEJPWCAgICAgICAgIElEQ19ESUFHUkFNUywyOCwxNDksMjQzLDQzLExCU19NVUxUSVBMRVNFTCB8IAogICAgICAgICAgICAgICAgICAgIExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX0hTQ1JPTEwgfCAKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIr3VvuOkaqRwIixJRENfU1RBVElDLDgsMjAyLDI3Miw1MQogICAgQ09OVFJPTCAgICAgICAgICK91b7jrLClv7FgpGqkcKq6ICUoJkopoUciLElEQ19TQ0FMRV9QRVJDRU5ULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCwxNiwyMTgsMTA0LDEyCiAgICBDT05UUk9MICAgICAgICAgIr3VvuOssCgmSSmhRyIsSURDX1NDQUxFX0ZJVCwiQnV0dG9uIixCU19BVVRPUkFESU9CVVRUT04gfCAKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDE2LDIzMyw1NiwxMgogICAgTFRFWFQgICAgICAgICAgICK91b7jrLClv7FgpGqkcKq6ICUoJkopoUciLDExMDIsMjgsMjE5LDkxLDEwLE5PVCAKICAgICAgICAgICAgICAgICAgICBXU19WSVNJQkxFCiAgICBFRElUVEVYVCAgICAgICAgSURDX1BFUkNFTlQsMTIyLDIxNywzMiwxMixFU19OVU1CRVIKICAgIExURVhUICAgICAgICAgICAirba8ZSgmVymhRyIsMTEwNSw3NSwyMzUsNDMsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19QQUdFU00sMTIyLDIzMywzMiwxMixFU19OVU1CRVIKICAgIFJURVhUICAgICAgICAgICAirbawqigmVCmhRyIsSURDX1NUQVRJQywxNzcsMjM1LDU0LDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX1BBR0VTTiwyMzUsMjMzLDMyLDEyLEVTX05VTUJFUgogICAgTFRFWFQgICAgICAgICAgICIiLElEQ19TVEFUSUMsMjYwLDIzNSw4LDgsTk9UIFdTX1ZJU0lCTEUKICAgIEdST1VQQk9YICAgICAgICAipkOmTL1ks/IiLDEwNzQsOCwyNTcsMTMyLDY0LFdTX0dST1VQCiAgICBDT05UUk9MICAgICAgICAgIqX+s6EoJkEpIiwxMDU2LCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxNiwyNzIsNDcsMTIKICAgIENPTlRST0wgICAgICAgICAirba8xigmRykiLDEwNTgsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI4Niw0NiwxMgogICAgUlRFWFQgICAgICAgICAgICKxcSgmRik6IiwxMDg5LDEzLDMwMiwzMiw4CiAgICBFRElUVEVYVCAgICAgICAgMTE1Miw0OCwzMDAsMjYsMTIsRVNfTlVNQkVSIHwgV1NfR1JPVVAKICAgIFJURVhUICAgICAgICAgICAiqOwoJlQpoUciLDEwOTAsNzYsMzAyLDI3LDgKICAgIEVESVRURVhUICAgICAgICAxMTUzLDEwNywzMDAsMjcsMTIsRVNfTlVNQkVSIHwgV1NfR1JPVVAKICAgIEdST1VQQk9YICAgICAgICAipfe8xiIsMTA3MywxNDcsMjU3LDEzMiw2NCxXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKl97zGKCZDKaFHIiwxMDkyLDE2MywyNzMsNjgsOAogICAgRURJVFRFWFQgICAgICAgIDExNTQsMjM1LDI3MSwzMiwxMixFU19OVU1CRVIgfCBXU19HUk9VUAogICAgQ09OVFJPTCAgICAgICAgICKkwK22KCZPKSIsMTA0MSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMjI3LDMwMCw0OCwxMgogICAgREVGUFVTSEJVVFRPTiAgICK9VKl3IixJRE9LLDE4MCwzMjgsNDgsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiqPqu+CIsSURDQU5DRUwsMjMyLDMyOCw0OCwxNAogICAgSUNPTiAgICAgICAgICAgICIiLDEwODYsMTU2LDI5NSw3MCwyNSxXU19HUk9VUApFTkQKCjE1MzkgRElBTE9HIERJU0NBUkRBQkxFICAzMiwgMzIsIDI4OCwgMTgzClNUWUxFIERTX01PREFMRlJBTUUgfCBEU18zRExPT0sgfCBEU19DT05URVhUSEVMUCB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IAogICAgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAipkOmTLNdqXciCkZPTlQgOSwgIrdzstOp+sXpIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICKmTKrtvvciLDEwNzUsOCw0LDI3Miw4NCxXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKmV7rZKCZOKaFHIiwxMDkzLDE2LDIwLDM1LDgKICAgIENPTUJPQk9YICAgICAgICAxMTM2LDUyLDE4LDE1MiwxNTIsQ0JTX0RST1BET1dOTElTVCB8IENCU19TT1JUIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVlNDUk9MTCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICKkuq5lKCZQKSIsMTAyNSwyMTIsMTcsNjAsMTQsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAiqqy6QaFHIiwxMDk1LDE2LDM0LDMzLDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTA5OSwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTIsMzMsMjI0LDEwCiAgICBMVEVYVCAgICAgICAgICAgIsP+q6yhRyIsMTA5NCwxNiw0OCwzNiwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDEwOTgsIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDUyLDQ4LDIyNCwxMAogICAgTFRFWFQgICAgICAgICAgICKm7LhtoUciLDEwOTcsMTYsNjAsMzYsMTAsU1NfTk9QUkVGSVgKICAgIENPTlRST0wgICAgICAgICAiIiwxMTAxLCJTdGF0aWMiLFNTX0xFRlROT1dPUkRXUkFQIHwgU1NfTk9QUkVGSVggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCw1Miw2MCwyMjQsMTAKICAgIExURVhUICAgICAgICAgICAitfm40aFHIiwxMDk2LDE2LDcyLDM2LDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTEwMCwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTIsNzIsMjI0LDEwCiAgICBHUk9VUEJPWCAgICAgICAgIq/IsWkiLDEwNzMsNyw5MywxNjcsNTYsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAipGqkcCgmWimhRyIsMTA4OSw5LDEwOSwzNiw4CiAgICBDT01CT0JPWCAgICAgICAgMTEzNyw1NywxMDUsMTEyLDExMixDQlNfRFJPUERPV05MSVNUIHwgQ0JTX1NPUlQgfCAKICAgICAgICAgICAgICAgICAgICBXU19WU0NST0xMIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIq3sqWzAySgmUymhRyIsMTA5MCwxMCwxMjksNDUsOAogICAgQ09NQk9CT1ggICAgICAgIDExMzgsNTcsMTI2LDExMiwxMTIsQ0JTX0RST1BET1dOTElTVCB8IENCU19TT1JUIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVlNDUk9MTCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICKk6KZWIiwxMDcyLDE4MCw5MiwxMDAsNTYsV1NfR1JPVVAKICAgIElDT04gICAgICAgICAgICAiIiwxMDg0LDE5NSwxMTIsMTgsMjAsV1NfR1JPVVAKICAgIENPTlRST0wgICAgICAgICAiqr2mTCgmTykiLDEwNTYsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAgfCAKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDIyNCwxMDYsNTIsMTIKICAgIENPTlRST0wgICAgICAgICAivu6mTCgmQSkiLDEwNTcsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OLDIyNCwxMjYsNTIsCiAgICAgICAgICAgICAgICAgICAgMTIKICAgIERFRlBVU0hCVVRUT04gICAivVSpdyIsSURPSywxODAsMTU2LDQ4LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIqj6rvgiLElEQ0FOQ0VMLDIzMiwxNTYsNDgsMTQKRU5ECgoxNTQ2IERJQUxPRyBESVNDQVJEQUJMRSAgMzIsIDMyLCAyNDAsIDI0MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfM0RMT09LIHwgRFNfQ09OVEVYVEhFTFAgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCAKICAgIFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIq22rbGzXal3IgpGT05UIDksICK3c7LTqfrF6SIKQkVHSU4KICAgIENPTlRST0wgICAgICAgICAiIiwxMDgwLCJTdGF0aWMiLFNTX1dISVRFUkVDVCB8IFdTX0dST1VQLDgwLDgsODAsODAKICAgIENPTlRST0wgICAgICAgICAiIiwxMDgxLCJTdGF0aWMiLFNTX0dSQVlSRUNUIHwgV1NfR1JPVVAsMTYwLDEyLDQsODAKICAgIENPTlRST0wgICAgICAgICAiIiwxMDgyLCJTdGF0aWMiLFNTX0dSQVlSRUNUIHwgV1NfR1JPVVAsODQsODgsODAsNAogICAgR1JPVVBCT1ggICAgICAgICKvyLFpIiwxMDczLDgsOTYsMjI0LDU2LFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIqRqpHAoJlopoUciLDEwODksMTYsMTEyLDM2LDgKICAgIENPTUJPQk9YICAgICAgICAxMTM3LDY0LDExMCwxNjAsMTYwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAireypbMDJKCZTKaFHIiwxMDkwLDE2LDEzMiw0NSw4CiAgICBDT01CT0JPWCAgICAgICAgMTEzOCw2NCwxMzAsMTYwLDE2MCxDQlNfRFJPUERPV05MSVNUIHwgQ0JTX1NPUlQgfCAKICAgICAgICAgICAgICAgICAgICBXU19WU0NST0xMIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIqToplYiLDEwNzIsOCwxNTYsNjQsNTYsV1NfR1JPVVAKICAgIENPTlRST0wgICAgICAgICAiqr2mTCgmTykiLDEwNTYsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAgfCAKICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDE2LDE3MCw1MiwxMgogICAgQ09OVFJPTCAgICAgICAgICK+7qZMKCZBKSIsMTA1NywiQnV0dG9uIixCU19BVVRPUkFESU9CVVRUT04sMTYsMTkwLDUyLDEyCiAgICBHUk9VUEJPWCAgICAgICAgIsPktloiLDEwNzUsODAsMTU2LDE1Miw1NixXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKlqigmTCmhRyIsMTEwMiw4OCwxNzIsMzIsOAogICAgRURJVFRFWFQgICAgICAgIDExNTUsMTIwLDE3MCwyOCwxMixXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKlaygmUimhRyIsMTEwMywxNjQsMTcyLDMyLDgKICAgIEVESVRURVhUICAgICAgICAxMTU3LDE5NiwxNzAsMjgsMTIsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAipFcoJlQpoUciLDExMDQsODgsMTkyLDMyLDgKICAgIEVESVRURVhUICAgICAgICAxMTU2LDEyMCwxOTAsMjgsMTIsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAipFUoJkIpoUciLDExMDUsMTY0LDE5MiwzMiw4CiAgICBFRElUVEVYVCAgICAgICAgMTE1OCwxOTYsMTkwLDI4LDEyLFdTX0dST1VQCiAgICBERUZQVVNIQlVUVE9OICAgIr1UqXciLElET0ssODAsMjIwLDQ4LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIqj6rvgiLElEQ0FOQ0VMLDEzMiwyMjAsNDgsMTQKICAgIFBVU0hCVVRUT04gICAgICAipkyq7b73KCZQKS4uLiIsMTAyNiwxODQsMjIwLDQ4LDE0CkVORAoKMTIzNCBESUFMT0cgRElTQ0FSREFCTEUgIDMyLCAzMiwgMzA3LCAyMDMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTXzNETE9PSyB8IERTX0NPTlRFWFRIRUxQIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgCiAgICBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICKmQ6ZMIgpGT05UIDksICK3c7LTqfrF6SIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAipkyq7b73IiwxMDc1LDgsNCwyOTEsODQsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAiple62SgmTimhRyIsMTA5MywxNiwyMCwzNiw4CiAgICBDT01CT0JPWCAgICAgICAgMTEzOSw1MiwxOCwxNTIsMTUyLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAipLquZSgmUCkiLDEwMjUsMjEyLDE3LDYwLDE0LFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIqqsukGhRyIsMTA5NSwxNiwzNiwzNiwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDEwOTksIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDUyLDM2LDIzNSwxMAogICAgTFRFWFQgICAgICAgICAgICLD/qusoUciLDEwOTQsMTYsNDgsMzYsMTAsU1NfTk9QUkVGSVgKICAgIENPTlRST0wgICAgICAgICAiIiwxMDk4LCJTdGF0aWMiLFNTX0xFRlROT1dPUkRXUkFQIHwgU1NfTk9QUkVGSVggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCw1Miw0OCwyMzUsMTAKICAgIExURVhUICAgICAgICAgICAipuy4baFHIiwxMDk3LDE2LDYwLDM2LDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTEwMSwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTIsNjAsMjM1LDEwCiAgICBMVEVYVCAgICAgICAgICAgIrX5uNGhRyIsMTA5NiwxNiw3MiwzNiwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDExMDAsIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDUyLDcyLDE1MiwxMAogICAgQ09OVFJPTCAgICAgICAgICKmQ6ZMqOzAya7XKCZMKSIsMTA0MCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMjEyLDcwLDc1LDEyCiAgICBHUk9VUEJPWCAgICAgICAgIqZDpky9ZLPyIiwxMDcyLDgsOTMsMTU1LDc3LFdTX0dST1VQCiAgICBDT05UUk9MICAgICAgICAgIqnSprMoJkEpIiwxMDU2LCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwxNiwxMDYsNjQsMTIKICAgIENPTlRST0wgICAgICAgICAirbYoJkcpIiwxMDU4LCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwxNiwxMjIsMzYsMTIKICAgIENPTlRST0wgICAgICAgICAiv++2tSgmUykiLDEwNTcsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OLDE2LDE1MCw2NCwxMgogICAgUlRFWFQgICAgICAgICAgICKxcSgmRimhRyIsMTA4OSwyOSwxMzcsMzEsOAogICAgRURJVFRFWFQgICAgICAgIDExNTIsNjUsMTM0LDI2LDEyLEVTX05VTUJFUiB8IFdTX0dST1VQCiAgICBSVEVYVCAgICAgICAgICAgIqjsKCZUKaFHIiwxMDkwLDkzLDEzNywzNSw4CiAgICBFRElUVEVYVCAgICAgICAgMTE1MywxMzEsMTM1LDI2LDEyLEVTX05VTUJFUiB8IFdTX0dST1VQCiAgICBHUk9VUEJPWCAgICAgICAgIqX3vMYiLDEwNzMsMTY4LDkyLDEzMSw3OCxXU19HUk9VUAogICAgTFRFWFQgICAgICAgICAgICKl97zGKCZDKaFHIiwxMDkyLDE4MCwxMDgsNjgsOAogICAgRURJVFRFWFQgICAgICAgIDExNTQsMjUyLDEwNiwzMiwxMixFU19OVU1CRVIgfCBXU19HUk9VUAogICAgSUNPTiAgICAgICAgICAgICIiLDEwODYsMTczLDEyNCw3NiwyNCxTU19DRU5URVJJTUFHRSB8IFdTX0dST1VQCiAgICBDT05UUk9MICAgICAgICAgIqTArbYoJk8pIiwxMDQxLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwyNTIsMTMwLDQzLDEyCiAgICBERUZQVVNIQlVUVE9OICAgIr1UqXciLElET0ssMTk3LDE3OSw0OCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICKo+q74IixJRENBTkNFTCwyNDksMTc5LDQ4LDE0CkVORAoKMTU0NyBESUFMT0dFWCAzMiwgMzIsIDI4OSwgMzU0ClNUWUxFIERTX01PREFMRlJBTUUgfCBEU18zRExPT0sgfCBEU19DT05URVhUSEVMUCB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IAogICAgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAipkOmTCIKRk9OVCA5LCAit3Oy06n6xekiLCAwLCAwLCAweDEKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAipkyq7b73IiwxMDc1LDgsNCwyNzIsODQsV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAiple62SgmTimhRyIsMTA5MywxNiwyMSwzNiw4CiAgICBDT01CT0JPWCAgICAgICAgMTEzOSw1MiwxOCwxNTIsMTUyLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAipLquZSgmUCkuLi4iLDEwMjUsMjEyLDE3LDYwLDE0LFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIqqsukGhRyIsMTA5NSwxNiwzNiwzNiwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDEwOTksIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDUyLDM2LDIyNCwxMAogICAgTFRFWFQgICAgICAgICAgICLD/qusoUciLDEwOTQsMTYsNDgsMzYsMTAsU1NfTk9QUkVGSVgKICAgIENPTlRST0wgICAgICAgICAiIiwxMDk4LCJTdGF0aWMiLFNTX0xFRlROT1dPUkRXUkFQIHwgU1NfTk9QUkVGSVggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCw1Miw0OCwyMjQsMTAKICAgIExURVhUICAgICAgICAgICAipuy4baFHIiwxMDk3LDE2LDYwLDM2LDEwLFNTX05PUFJFRklYCiAgICBDT05UUk9MICAgICAgICAgIiIsMTEwMSwiU3RhdGljIixTU19MRUZUTk9XT1JEV1JBUCB8IFNTX05PUFJFRklYIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsNTIsNjAsMjI0LDEwCiAgICBMVEVYVCAgICAgICAgICAgIrX5uNGhRyIsMTA5NiwxNiw3MiwzNiwxMCxTU19OT1BSRUZJWAogICAgQ09OVFJPTCAgICAgICAgICIiLDExMDAsIlN0YXRpYyIsU1NfTEVGVE5PV09SRFdSQVAgfCBTU19OT1BSRUZJWCB8IAogICAgICAgICAgICAgICAgICAgIFdTX0dST1VQLDUyLDcyLDE1MiwxMAogICAgQ09OVFJPTCAgICAgICAgICKmQ6ZMqOzAya7XKCZMKSIsMTA0MCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCAKICAgICAgICAgICAgICAgICAgICBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMjEyLDcwLDY0LDEyCiAgICBHUk9VUEJPWCAgICAgICAgIrnPq6ymQ6ZMvWSz8iIsMTA3Miw4LDkzLDI3MiwxMDYsV1NfR1JPVVAKICAgIENPTlRST0wgICAgICAgICAisnum5rnPq6woJlUpIixJRENfQ1VSUkVOVF9ESUFHUkFNLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCwxNiwxMDcsMjUzLDEyCiAgICBDT05UUk9MICAgICAgICAgIrZ9sdK80quspKSquqnSprO5z6usKCZEKSIsSURDX0FMTF9ESUFHUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTYsMTIxLDI1MywxMgogICAgQ09OVFJPTCAgICAgICAgICK/76j6qrq5z6usKCZFKaFHIixJRENfU0VMRUNURURfRElBR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDEzNSwyNTMsMTIKICAgIExJU1RCT1ggICAgICAgICBJRENfRElBR1JBTVMsMjgsMTQ5LDI0Myw0MyxMQlNfTVVMVElQTEVTRUwgfCAKICAgICAgICAgICAgICAgICAgICBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwgfCBXU19IU0NST0xMIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICK91b7jpGqkcCIsSURDX1NUQVRJQyw4LDIwMiwyNzIsNTEKICAgIENPTlRST0wgICAgICAgICAivdW+46ywpb+xYKRqpHCquiAlKCZKKaFHIixJRENfU0NBTEVfUEVSQ0VOVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMTYsMjE4LDEwNCwxMgogICAgQ09OVFJPTCAgICAgICAgICKyxaZYKCZJKaFHIixJRENfU0NBTEVfRklULCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTYsMjMzLDUzLDEyCiAgICBMVEVYVCAgICAgICAgICAgIr3VvuOssKW/sWCkaqRwqrogJSgmSimhRyIsMTEwMiwzMCwyMTksODgsOCxOT1QgCiAgICAgICAgICAgICAgICAgICAgV1NfVklTSUJMRQogICAgRURJVFRFWFQgICAgICAgIElEQ19QRVJDRU5ULDEyMiwyMTcsMzIsMTIsRVNfTlVNQkVSCiAgICBMVEVYVCAgICAgICAgICAgIq22vGUoJlcpoUciLDExMDUsNzEsMjM1LDQzLDgKICAgIEVESVRURVhUICAgICAgICBJRENfUEFHRVNNLDEyMiwyMzMsMzIsMTIsRVNfTlVNQkVSCiAgICBSVEVYVCAgICAgICAgICAgIq22sKooJlQpoUciLElEQ19TVEFUSUMsMTc3LDIzNSw1NCwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19QQUdFU04sMjM1LDIzMywzMiwxMixFU19OVU1CRVIKICAgIExURVhUICAgICAgICAgICAiIixJRENfU1RBVElDLDI2MCwyMzUsNyw4LE5PVCBXU19WSVNJQkxFCiAgICBHUk9VUEJPWCAgICAgICAgIqZDpky9ZLPyIiwxMDc0LDgsMjU3LDEzMiw2NCxXU19HUk9VUAogICAgQ09OVFJPTCAgICAgICAgICKl/rOhKCZBKSIsMTA1NiwiQnV0dG9uIixCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IAogICAgICAgICAgICAgICAgICAgIFdTX1RBQlNUT1AsMTYsMjcyLDQ3LDEyCiAgICBDT05UUk9MICAgICAgICAgIq22vMYoJkcpIiwxMDU4LCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyODYsNDYsMTIKICAgIFJURVhUICAgICAgICAgICAisXEoJkYpoUciLDEwODksMTYsMzAyLDI5LDgKICAgIEVESVRURVhUICAgICAgICAxMTUyLDQ4LDMwMCwyNiwxMixFU19OVU1CRVIgfCBXU19HUk9VUAogICAgUlRFWFQgICAgICAgICAgICKo7CgmVCmhRyIsMTA5MCw3NiwzMDIsMjksOAogICAgRURJVFRFWFQgICAgICAgIDExNTMsMTA3LDMwMCwyNywxMixFU19OVU1CRVIgfCBXU19HUk9VUAogICAgR1JPVVBCT1ggICAgICAgICKl97zGIiwxMDczLDE0NywyNTcsMTMyLDY0LFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIqX3vMYoJkMpoUciLDEwOTIsMTYzLDI3Myw2OCw4CiAgICBFRElUVEVYVCAgICAgICAgMTE1NCwyMzUsMjcxLDMyLDEyLEVTX05VTUJFUiB8IFdTX0dST1VQCiAgICBDT05UUk9MICAgICAgICAgIqTArbYoJk8pIiwxMDQxLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCwyMjksMjk1LDQ2LDEyCiAgICBERUZQVVNIQlVUVE9OICAgIr1UqXciLElET0ssMTgwLDMyOCw0OCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICKo+q74IixJRENBTkNFTCwyMzIsMzI4LDQ4LDE0CiAgICBJQ09OICAgICAgICAgICAgIiIsMTA4NiwxNTYsMjkwLDcwLDI1LFdTX0dST1VQCkVORAoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vIERFU0lHTklORk8KLy8KCiNpZmRlZiBBUFNUVURJT19JTlZPS0VECkdVSURFTElORVMgREVTSUdOSU5GTyBESVNDQVJEQUJMRSAKQkVHSU4KICAgIDE1MzgsIERJQUxPRwogICAgQkVHSU4KICAgICAgICBSSUdIVE1BUkdJTiwgMjg3CiAgICAgICAgQk9UVE9NTUFSR0lOLCAzNDUKICAgIEVORAoKICAgIDE1NDcsIERJQUxPRwogICAgQkVHSU4KICAgICAgICBSSUdIVE1BUkdJTiwgMjg3CiAgICAgICAgQk9UVE9NTUFSR0lOLCAzMDAKICAgIEVORApFTkQKI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKCiNlbmRpZiAgICAvLyBDaGluZXNlIChUYWl3YW4pIHJlc291cmNlcwovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCgojaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8KLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCi8vCiNkZWZpbmUgX0FGWF9OT19TUExJVFRFUl9SRVNPVVJDRVMKI2RlZmluZSBfQUZYX05PX09MRV9SRVNPVVJDRVMKI2RlZmluZSBfQUZYX05PX1RSQUNLRVJfUkVTT1VSQ0VTCiNkZWZpbmUgX0FGWF9OT19QUk9QRVJUWV9SRVNPVVJDRVMKCiNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0NIVCkKI2lmZGVmIF9XSU4zMgpMQU5HVUFHRSA0LCAxCiNwcmFnbWEgY29kZV9wYWdlKDk1MCkKI2VuZGlmIC8vX1dJTjMyCiNpbmNsdWRlICJyZXNcRGlhZ3JhbVByaW50LnJjMiIgIC8vIG5vbi1NaWNyb3NvZnQgVmlzdWFsIEMrKyBlZGl0ZWQgcmVzb3VyY2VzCiNpbmNsdWRlICJhZnhyZXMucmMiICAgICAgICAgLy8gU3RhbmRhcmQgY29tcG9uZW50cwojZW5kaWYKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRAoK