LyogbGludXgvYW5kcm9pZF9hbGFybS5oCioqIAoqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAoqKiBBdXRob3I6IEFydmUgSGr4bm5lduVnCioqCioqIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkLiAgSXQgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgYW5kL29yIG1vZGlmaWVkCioqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBMaWNlbnNlIE9SIHZlcnNpb24gMiBvZiB0aGUgR05VCioqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCiovCgojaWZuZGVmIF9MSU5VWF9BTkRST0lEX0FMQVJNX0gKI2RlZmluZSBfTElOVVhfQU5EUk9JRF9BTEFSTV9ICgojaW5jbHVkZSA8YXNtL2lvY3RsLmg+CiNpbmNsdWRlIDxsaW51eC90aW1lLmg+Cgp0eXBlZGVmIGVudW0gewoJLy8gcmV0dXJuIGNvZGUgYml0IG51bWJlcnMgb3Igc2V0IGFsYXJtIGFyZwoJQU5EUk9JRF9BTEFSTV9SVENfV0FLRVVQLAoJQU5EUk9JRF9BTEFSTV9SVEMsCglBTkRST0lEX0FMQVJNX0VMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAoJQU5EUk9JRF9BTEFSTV9FTEFQU0VEX1JFQUxUSU1FLAoJQU5EUk9JRF9BTEFSTV9TWVNURU1USU1FLAoJLy8KCUFORFJPSURfQUxBUk1fVFlQRV9DT1VOVCwKCQoJLy8gcmV0dXJuIGNvZGUgYml0IG51bWJlcnMKLy8JQU5EUk9JRF9BTEFSTV9USU1FX0NIQU5HRSA9IDE2Cn0gYW5kcm9pZF9hbGFybV90eXBlX3Q7Cgp0eXBlZGVmIGVudW0gewoJQU5EUk9JRF9BTEFSTV9SVENfV0FLRVVQX01BU0sgPSAxVSA8PCBBTkRST0lEX0FMQVJNX1JUQ19XQUtFVVAsCglBTkRST0lEX0FMQVJNX1JUQ19NQVNLID0gMVUgPDwgQU5EUk9JRF9BTEFSTV9SVEMsCglBTkRST0lEX0FMQVJNX0VMQVBTRURfUkVBTFRJTUVfV0FLRVVQX01BU0sgPSAxVSA8PCBBTkRST0lEX0FMQVJNX0VMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAoJQU5EUk9JRF9BTEFSTV9FTEFQU0VEX1JFQUxUSU1FX01BU0sgPSAxVSA8PCBBTkRST0lEX0FMQVJNX0VMQVBTRURfUkVBTFRJTUUsCglBTkRST0lEX0FMQVJNX1NZU1RFTVRJTUVfTUFTSyA9IDFVIDw8IEFORFJPSURfQUxBUk1fU1lTVEVNVElNRSwKCUFORFJPSURfQUxBUk1fVElNRV9DSEFOR0VfTUFTSyA9IDFVIDw8IDE2Cn0gYW5kcm9pZF9hbGFybV9yZXR1cm5fZmxhZ3NfdDsKCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9DTEVBUih0eXBlKSAgICAgICAgICAgX0lPKCdhJywgMCB8ICgodHlwZSkgPDwgNCkpIC8vIGRpYXNhYmxlIGFsYXJtCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9XQUlUICAgICAgICAgICAgICAgICAgX0lPKCdhJywgMSkgLy8gYWNrIGxhc3QgYWxhcm0gYW5kIHdhaXQgZm9yIG5leHQKI2RlZmluZSBBTkRST0lEX0FMQVJNX1NFVCh0eXBlKSAgICAgICAgICAgICBfSU9XKCdhJywgMiB8ICgodHlwZSkgPDwgNCksIHN0cnVjdCB0aW1lc3BlYykgLy8gc2V0IGFsYXJtCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9TRVRfQU5EX1dBSVQodHlwZSkgICAgX0lPVygnYScsIDMgfCAoKHR5cGUpIDw8IDQpLCBzdHJ1Y3QgdGltZXNwZWMpCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9HRVRfVElNRSh0eXBlKSAgICAgICAgX0lPVygnYScsIDQgfCAoKHR5cGUpIDw8IDQpLCBzdHJ1Y3QgdGltZXNwZWMpCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9TRVRfUlRDICAgICAgICAgICAgICAgX0lPVygnYScsIDUsIHN0cnVjdCB0aW1lc3BlYykKI2RlZmluZSBBTkRST0lEX0FMQVJNX1NFVF9USU1FWk9ORSAgICAgICAgICBfSU9XKCdhJywgNiwgc3RydWN0IHRpbWV6b25lKQoKI2RlZmluZSBBTkRST0lEX0FMQVJNX0JBU0VfQ01EKGNtZCkgKGNtZCAmIH4oX0lPQygwLCAwLCAweGYwLCAwKSkpCiNkZWZpbmUgQU5EUk9JRF9BTEFSTV9JT0NUTF9UT19UWVBFKGNtZCkgKF9JT0NfTlIoY21kKSA+PiA0KQoKI2VuZGlmCg==