ZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kcml2ZXJzL21pc2MvYm9vdF9tb2RlLmMgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9taXNjL2Jvb3RfbW9kZS5jCmluZGV4IGZhZmUzYzcuLjI0MDhiYmMgMTAwNzU1Ci0tLSBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kcml2ZXJzL21pc2MvYm9vdF9tb2RlLmMKKysrIGIvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvbWlzYy9ib290X21vZGUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjZGVmaW5lIE5WUldBTExfUEFUSCAiL252cndhbGwuYmluIgogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogZXh0ZXJuIGludCBpbWFnZWZzX2ZsYWc7CiAjZW5kaWYKIApAQCAtNDcsNyArNDcsNyBAQAogCWNoYXIgY21kWzY0XSA9IHswfTsKIAogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogICAgIGlmKGltYWdlZnNfZmxhZyA9PSAxKQogCSAgICBzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggJXMiLCAodWxvbmcpQ09ORklHX1NZU19TRFJBTV9URU1QX0JBU0UsIE5WUldBTExfUEFUSCk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvbWlzYy9sb2FkLmMgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9taXNjL2xvYWQuYwppbmRleCBjNDRkYzliLi5iYmI2YzI3IDEwMDc1NQotLS0gYS9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9taXNjL2xvYWQuYworKysgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9taXNjL2xvYWQuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL2NwdS5oPgogI2luY2x1ZGUgPHNlY3VyZV92ZXJpZnkuaD4KICNpbmNsdWRlIDxsaW51eC9tdGQvbm9yX3NwaWZjLmg+CisjaW5jbHVkZSAicHViX2ZsYWdzLmgiCiAKICNpZglMT0FEX0lNQUdFX0RFQlVHCiAjZGVmaW5lIGxvYWRfZGVidWdfcHJpbnRmKGZtdCxhcmdzLi4uKQlwcmludGYgKGZtdCAsIyNhcmdzKQpAQCAtNjYsNyArNjcsNyBAQAogI2VuZGlmCiAKIC8vI2lmZGVmIENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIKLSNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpCisjaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikKIGV4dGVybiBpbnQgaW1hZ2Vmc19mbGFnOwogc3RhdGljIHVpbnQzMl90IGZsYWdzOwogI2VuZGlmCkBAIC0zMDUsMTIgKzMwNiwxMiBAQAogCXJldHVybiAwOwogfQogCi0jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikKIGludCBmc19sb2FkX2R0Yl9pbWFnZSh2b2lkKQogewogICAgIGNoYXIgICAgY21kWzY0XSA9IHswfTsKICAgICAvKjGhor2rZHRizsS8/mxvYWS1vcHZyrG12Na3Ki8KLSNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQworI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogICAgIGlmKGltYWdlZnNfZmxhZyA9PSAxKQogCQlzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggJXMiLCAodWxvbmcpQ09ORklHX1NZU19TRFJBTV9URU1QX0JBU0UsIERUQl9JTUFHRV9QQVRIKTsKIAllbHNlCkBAIC0zNDIsNyArMzQzLDcgQEAKIAogCS8qMaGivattMCBpbWfOxLz+bG9hZLW9wdnKsbXY1rcqLwogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogICAgIGlmKGltYWdlZnNfZmxhZyA9PSAxKQogCQlzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggJXMiLCAodWxvbmcpQ09ORklHX1NZU19TRFJBTV9URU1QX0JBU0UsIE0wX0lNQUdFX1BBVEgpOwogCWVsc2UKQEAgLTQyNyw3ICs0MjgsNyBAQAogCXsKIAkJLyogvat6c3AgaW1nzsS8/mxvYWS1vcHZyrG12Na3Ki8KIC8vI2lmZGVmIENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIKLSNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpCisjaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKSAgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiAgICAgICAgIGlmKGltYWdlZnNfZmxhZyA9PSAxKQogCQkgICAgc3ByaW50ZihjbWQsICJmc2xvYWQgaW1hZ2VmcyAweCV4IGNwdXBoeV8lMDJkLmx6bWEiLCAKIAkJCQkodWxvbmcpQ09ORklHX1NZU19TRFJBTV9URU1QX0JBU0UsIApAQCAtNTI5LDcgKzUzMCw3IEBACiAJewogCQkvKjGhor2rYXAgaW1nzsS8/mxvYWS1vcHZyrG12Na3Ki8KIC8vI2lmZGVmIENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIKLSNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpCisjaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikKICAgICAgICAgaWYoaW1hZ2Vmc19mbGFnID09IDEpCiAJCQlzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggLyVzXyUwMmQubHptYSIsIAogCQkJCSh1bG9uZylDT05GSUdfU1lTX1NEUkFNX1RFTVBfQkFTRSwgaW1hZ2VfbmFtZSwgYXBpbWFnZW51bSk7CkBAIC02ODMsNyArNjg0LDcgQEAKIAlCT09UX1BSSU5URihVQk9PVF9OT1RJQ0UsICJ6c3AgaW1hZ2UgbG9hZCBiZWdpbi4uLlxuIik7CiAJaW1hZ2VfdG1wX2J1ZiA9IENPTkZJR19TWVNfU0RSQU1fVEVNUF9CQVNFOwogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogCWlmKGltYWdlZnNfZmxhZyA9PSAxKQogICAgICAgICBzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggJXMiLCAodWxvbmcpaW1hZ2VfdG1wX2J1ZiwgWlNQX0lNQUdFX1BBVEgpOwogCWVsc2UKQEAgLTcyMSw3ICs3MjIsNyBAQAogCiAJLyoxoaK9q2FwIGltZ87EvP5sb2Fktb3B2cqxtdjWtyovCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiAJaWYoaW1hZ2Vmc19mbGFnID09IDEpCiAJCXNwcmludGYoY21kLCAiZnNsb2FkIGltYWdlZnMgMHgleCAvYXBfJXMuYmluIiwgCiAJCQkJKHVsb25nKUNPTkZJR19TWVNfU0RSQU1fVEVNUF9CQVNFLCBpbWFnZV9uYW1lKTsKQEAgLTg5MCw4ICs4OTEsOCBAQAogfQogCiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQotaW50IGxvYWRfZmxhZ3MoVF9GT1RBX0ZMQUdfSU5GTyAqZm90YUZsYWdJbmZvKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCitpbnQgbG9hZF9mbGFncyhUX0ZMQUdTX0lORk8gKmZvdGFGbGFnSW5mbykKIHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgdHlwZSA9IDA7CkBAIC05MDcsNyArOTA4LDcgQEAKIAl1aW50MzJfdCB3b3JrX2FyZWFfb2Zmc2V0ID0gMDsKIAl1aW50MzJfdCBiYWNrdXBfYXJlYV9vZmZzZXQgPSAwOwogCXVpbnQzMl90IGZsYWdfb25lID0gMDsKLQl1aW50MzJfdCAgZm90YV9zaXplID0gc2l6ZW9mKFRfRk9UQV9GTEFHX0lORk8pOworCXVpbnQzMl90ICBmb3RhX3NpemUgPSBzaXplb2YoVF9GTEFHU19JTkZPKTsKIAluYW5kX2luZm9fdCAqbmFuZCA9ICZuYW5kX2luZm9bbmFuZF9jdXJyX2RldmljZV07CiAJc3RydWN0IGZzbF9xc3BpICpub3IgPSAmc3BpX25vcl9mbGFzaDsKIApAQCAtOTY2LDcgKzk2Nyw3IEBACiAJCQlyZXR1cm4gMTsKIAkJfQogCQkKLQkJaWYoZm90YUZsYWdJbmZvLT5ib290X2ZsYWcubWFnaWMgIT0gRkxBR1NfTUFHSUMpCisJCWlmKGZvdGFGbGFnSW5mby0+bWFnaWNfc3RhcnQgIT0gRkxBR1NfTUFHSUMpCiAJCXsJCiAJCQlmbHVzaF9kY2FjaGVfYWxsKCk7CiAJCQlyZXQgPSBmbGFzaC0+cmVhZChuYW5kLChsb2ZmX3QpYmFja3VwX2FyZWFfb2Zmc2V0LApAQCAtOTc4LDcgKzk3OSw3IEBACiAJCQkJcmV0dXJuIC0xOwogCQkJfQogCQkJCi0JCQlpZihmb3RhRmxhZ0luZm8tPmJvb3RfZmxhZy5tYWdpYyAhPSBGTEFHU19NQUdJQykKKwkJCWlmKGZvdGFGbGFnSW5mby0+bWFnaWNfc3RhcnQgIT0gRkxBR1NfTUFHSUMpCiAJCQl7CiAJICAgICAgICAgICAgcHJpbnRmKCJmbGFncyBtYWdpYyBlcnIuXG4iKTsKIAkJCSAgICByZXR1cm4gLTE7CkBAIC05OTYsNyArOTk3LDcgQEAKIAkJCUJPT1RfUFJJTlRGKFVCT09UX0VSUiwgIlslc106IHJlYWQgdGhlIGZsYWdzIGVycm9yIVxuIiwgcGFydF9uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQlpZihmb3RhRmxhZ0luZm8tPmJvb3RfZmxhZy5tYWdpYyAhPSBGTEFHU19NQUdJQykKKwkJaWYoZm90YUZsYWdJbmZvLT5tYWdpY19zdGFydCAhPSBGTEFHU19NQUdJQykKIAkJewogICAgICAgICAgICAgZmx1c2hfZGNhY2hlX2FsbCgpOwogCQkJcmV0ID0gbmFuZF9yZWFkKCYobm9yLT5ub3JbMF0ubXRkKSwgKGxvZmZfdCliYWNrdXBfYXJlYV9vZmZzZXQsIApAQCAtMTAwOCw3ICsxMDA5LDcgQEAKIAkJCQlyZXR1cm4gLTE7CiAJCQl9CiAJCQkKLQkJCWlmKGZvdGFGbGFnSW5mby0+Ym9vdF9mbGFnLm1hZ2ljICE9IEZMQUdTX01BR0lDKQorCQkJaWYoZm90YUZsYWdJbmZvLT5tYWdpY19zdGFydCAhPSBGTEFHU19NQUdJQykKIAkJCXsKIAkgICAgICAgICAgICBwcmludGYoImZsYWdzIG1hZ2ljIGVyci5cbiIpOwogCQkJICAgIHJldHVybiAtMTsKQEAgLTEwMzMsNyArMTAzNCw3IEBACiB7CiAJY2hhciBjbWRbNjRdID0gezB9OwogLy8jaWZkZWYgQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQgotI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykKKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogCWlmKGltYWdlZnNfZmxhZyA9PSAxKQogCSAgICBzcHJpbnRmKGNtZCwgImZzbG9hZCBpbWFnZWZzIDB4JXggJXMiLCAodWxvbmcpQ09ORklHX1NZU19TRFJBTV9URU1QX0JBU0UsIEZPVEFGTEFHX1BBVEgpOwogCWVsc2UKZGlmZiAtLWdpdCBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kcml2ZXJzL210ZC9wYXJ0aXRpb24vcGFydGl0aW9uLmMgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9tdGQvcGFydGl0aW9uL3BhcnRpdGlvbi5jCmluZGV4IDgwYjAzNjIuLjBkYTI3ZWEgMTAwNzU1Ci0tLSBhL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kcml2ZXJzL210ZC9wYXJ0aXRpb24vcGFydGl0aW9uLmMKKysrIGIvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvbXRkL3BhcnRpdGlvbi9wYXJ0aXRpb24uYwpAQCAtNTIsNyArNTIsNyBAQAogZXh0ZXJuIHBhcnRpdGlvbl90YWJsZV90ICogZ19wYXJ0aXRpb25fdGFibGVfZGw7CiBleHRlcm4gc3RydWN0IGZzbF9xc3BpIHNwaV9ub3JfZmxhc2g7CiAvLyNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCCi0jaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorI2lmIGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX01ETF9BQikgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykgfHwgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQ19SRUYpCiBleHRlcm4gaW50IGltYWdlZnNfZmxhZzsKICNlbmRpZgogCkBAIC02MCw3ICs2MCw3IEBACiAgKiAgYWRkX3BhcnRpdGlvbl90b19ib290YXJncyAgOiAg1Pa807fWx/jQxc+itb0gYm9vdGFyZ3MKICAqLwogLy8gI2lmZGVmIENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIKLSAjaWYgZGVmaW5lZChDT05GSUdfWlgyOTc1MjBWM0VfTURMX0FCKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKQorICNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfREMpIHx8IGRlZmluZWQoQ09ORklHX1pYMjk3NTIwVjNFX1ZFSElDTEVfRENfUkVGKQogIHZvaWQgYWRkX3BhcnRpdGlvbl90b19ib290YXJncyggdm9pZCApCiB7CiAJaW50IHJldCA9IDA7CkBAIC0xOTIsMjAgKzE5MiwzMCBAQAogCiAJaWYoaW1hZ2Vmc19mbGFnID09IDEpICAgIAogICAgCXsKKyNpZmRlZiBETV9WRVJJVFkKKyAgICAgICAgc3ByaW50ZigoY2hhciAqKWJvb3RhcmdzX2NtZCArIHN0cmxlbihib290YXJnc19jbWQpLCAiIHN5c3RlbT1zeXN0ZW1fYSIpOworCQlzcHJpbnRmKChjaGFyICopYm9vdGFyZ3NfY21kX2NhcCArIHN0cmxlbihib290YXJnc19jbWRfY2FwKSwgIiBzeXN0ZW09c3lzdGVtX2EiKTsKKyNlbHNlCiAJCXNwcmludGYoKGNoYXIgKilib290YXJnc19jbWQgKyBzdHJsZW4oYm9vdGFyZ3NfY21kKSwgIiBzeXN0ZW09c3lzdGVtX2EiKTsKIAkJc3ByaW50ZigoY2hhciAqKWJvb3RhcmdzX2NtZF9jYXAgKyBzdHJsZW4oYm9vdGFyZ3NfY21kX2NhcCksICIgc3lzdGVtPXN5c3RlbV9hIHViaS5tdGQ9Y2Fwcm9vdGZzIik7CisjZW5kaWYKIAl9CiAJZWxzZSBpZihpbWFnZWZzX2ZsYWcgPT0gMikgICAKIAl7CisjaWZkZWYgRE1fVkVSSVRZCisJCXNwcmludGYoKGNoYXIgKilib290YXJnc19jbWQgKyBzdHJsZW4oYm9vdGFyZ3NfY21kKSwgIiBzeXN0ZW09c3lzdGVtX2IiKTsKKwkJc3ByaW50ZigoY2hhciAqKWJvb3RhcmdzX2NtZF9jYXAgKyBzdHJsZW4oYm9vdGFyZ3NfY21kX2NhcCksICIgc3lzdGVtPXN5c3RlbV9iIik7CisjZWxzZQogCQlzcHJpbnRmKChjaGFyICopYm9vdGFyZ3NfY21kICsgc3RybGVuKGJvb3RhcmdzX2NtZCksICIgc3lzdGVtPXN5c3RlbV9iIik7CiAJCXNwcmludGYoKGNoYXIgKilib290YXJnc19jbWRfY2FwICsgc3RybGVuKGJvb3RhcmdzX2NtZF9jYXApLCAiIHN5c3RlbT1zeXN0ZW1fYiB1YmkubXRkPWNhcHJvb3RmczIiKTsKKyNlbmRpZgogCX0JCiAKIAkvKiBzYXZlICovCiAJc2V0ZW52KCJib290YXJncyIsIChjaGFyICopYm9vdGFyZ3NfY21kKTsKIAlzZXRlbnYoImJvb3RhcmdzX2NhcCIsIChjaGFyICopYm9vdGFyZ3NfY21kX2NhcCk7CiB9Ci0gI2Vsc2UKKyNlbHNlCiB2b2lkIGFkZF9wYXJ0aXRpb25fdG9fYm9vdGFyZ3MoIHZvaWQgKQogewogCWludCByZXQgPSAwOwpkaWZmIC0tZ2l0IGEvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvcGVyaXBoZXJhbC9NYWtlZmlsZSBiL2Jvb3QvY29tbW9uL3NyYy91Ym9vdC9kcml2ZXJzL3BlcmlwaGVyYWwvTWFrZWZpbGUKaW5kZXggOGVjZDU2Ni4uMTAzYjM3MyAxMDA3NTUKLS0tIGEvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvcGVyaXBoZXJhbC9NYWtlZmlsZQorKysgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9wZXJpcGhlcmFsL01ha2VmaWxlCkBAIC00MSw2ICs0MSw3IEBACiBDT0JKUy0kKENPTkZJR19aWDI5NzUyMFYzRV9VRklfTUlOSSkJKz0gcGVyaXBoZXJhbC5vCiBDT0JKUy0kKENPTkZJR19aWDI5NzUyMFYzRV9NRExfQUIpCSs9IHBlcmlwaGVyYWwubwogQ09CSlMtJChDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQykJKz0gcGVyaXBoZXJhbC5vCitDT0JKUy0kKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikJKz0gcGVyaXBoZXJhbC5vCiAKIENPQkpTCTo9ICQoc29ydCAkKENPQkpTLXkpKQogU1JDUwk6PSAkKENPQkpTOi5vPS5jKQpkaWZmIC0tZ2l0IGEvYm9vdC9jb21tb24vc3JjL3Vib290L2RyaXZlcnMvcGVyaXBoZXJhbC9wZXJpcGhlcmFsLmMgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9wZXJpcGhlcmFsL3BlcmlwaGVyYWwuYwppbmRleCA0Mzk0YzdiLi4zNjQ2MTMwIDEwMDc1NQotLS0gYS9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9wZXJpcGhlcmFsL3BlcmlwaGVyYWwuYworKysgYi9ib290L2NvbW1vbi9zcmMvdWJvb3QvZHJpdmVycy9wZXJpcGhlcmFsL3BlcmlwaGVyYWwuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQogI2luY2x1ZGUgPHp4MjM0MjkwLmg+DQogI2luY2x1ZGUgPGxlZC5oPg0KKyNpbmNsdWRlIDxkcnZzX2dwaW8uaD4NCiAjaW5jbHVkZSAiY29tbW9uLmgiDQogLy8jaW5jbHVkZSA8Z3Bpby5oPg0KIA0KQEAgLTY4LDM0ICs2OSwzMiBAQAogDQogLypsY2QqLw0KIA0KLQkvKiBqdGFntffK1CAqLw0KKwkvKiBqdGFn6LCD6K+VICovDQogI2lmIDANCiAJanRhZ19pbml0KCk7DQogI2VuZGlmDQogDQogLy8jaWYgMC8vcmVmIG5lZWQgbGRvOCAyLjg1Vg0KLSNpZmRlZiBDT05GSUdfWlgyOTc1MjBWM0VfVkVISUNMRV9EQw0KKyNpZiBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDKSB8fCBkZWZpbmVkKENPTkZJR19aWDI5NzUyMFYzRV9WRUhJQ0xFX0RDX1JFRikNCiAvKnNldCBtbWMgaW8gYW5kIHZjY1EqLwkNCiAJengyMzQyOTBfc2V0X2xkbzhfdm9sdGFnZShWTERPRF8xXzgwMCk7DQogCXp4MjM0MjkwX3NldF9sZG84X3NsZWVwX3ZvbHRhZ2UoVkxET0RfMV84MDApOw0KIAl6eDIzNDI5MF9sZG84X2VuYWJsZSgxKTsNCiAJDQogCVJFRzMyKFNEMV9JT18xVjhfRU4pIHw9KDE8PDEpOw0KLSNlbmRpZg0KIC8veGYubGlAMjAyMzA0MTIgYWRkIGZvciBlbmFibGUgR05TUyBzdGFydA0KLSNpZiAxIC8vZW5hYmxlIEdOU1MNCiAJUkVHMzIoWlhfVE9QX0NSTV9CQVNFICsgMHgzNCkgfD0gKDB4MTw8NSk7DQogCXpEcnZHcGlvX1NldEZ1bmMoR1BJTzE1LEdQSU8xNV9DTEtfT1VUMCk7DQotDQotCXpEcnZHcGlvX1NldEZ1bmMoR1BJTzg2LEdQSU84Nl9HUElPODYpOw0KLQl6RHJ2R3Bpb19TZXREaXJlY3Rpb24oR1BJTzg2LEdQSU9fT1VUKTsNCi0JekRydkdwaW9fU2V0T3V0cHV0VmFsdWUoR1BJTzg2LEdQSU9fSElHSCk7DQorCS8q5YWz6ZetZ3Bz55S15rqQKi8NCisJekRydkdwaW9fU2V0RnVuYyhHUElPODYsIEdQSU84Nl9HUElPODYpOw0KKwl6RHJ2R3Bpb19TZXREaXJlY3Rpb24oR1BJTzg2LCBHUElPX09VVCk7DQorCXpEcnZHcGlvX1NldE91dHB1dFZhbHVlKEdQSU84NiwgR1BJT19MT1cpOw0KIA0KIAl6RHJ2R3Bpb19TZXRGdW5jKEdQSU8xMjYsR1BJTzEyNl9HUElPMTI2KTsNCiAJekRydkdwaW9fU2V0RGlyZWN0aW9uKEdQSU8xMjYsR1BJT19PVVQpOw0KIAl6RHJ2R3Bpb19TZXRPdXRwdXRWYWx1ZShHUElPMTI2LEdQSU9fTE9XKTsNCi0jZW5kaWYNCiAvL3hmLmxpQDIwMjMwNDEyIGFkZCBmb3IgZW5hYmxlIEdOU1MgZW5kDQorI2VuZGlmDQogCXp4MjM0NTAyX2NoYXJnZXJfZW5hYmxlKCk7DQogDQogCXJldHVybiByZXQgOw0K