ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggZWIwMzRiZS4uYTExMGIzNyAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSwzMyBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4zLjM1IiBkYXRlPSIyMi4wMy4yMDA2Ij4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorYWNjZXB0LcbJzNjU0iDJIFRDUF9ERUZFUl9BQ0NFUFQg1dPUwc7B18zJ18HMydPYINTPzNjLzyDEzNEg0MXS18/KCivEydLFy9TJ19kgbGlzdGVuOworz9vJwsvBINDP0dfJzMHT2CDXIDAuMy4zMS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBhY2NlcHQtZmlsdGVyIGFuZCB0aGUgVENQX0RFRkVSX0FDQ0VQVCBvcHRpb24gd2VyZSBzZXQgZm9yIGZpcnN0ICJsaXN0ZW4iCitkaXJlY3RpdmUgb25seTsKK2J1ZyBhcHBlYXJlZCBpbiAwLjMuMzEuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor1yDEydLFy9TJ18UgcHJveHlfcGFzcyDCxdogVVJJINDSySDJ09DPzNjaz9fBzsnJINcg0M/E2sHQ0s/TxS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK2luIHRoZSAicHJveHlfcGFzcyIgZGlyZWN0aXZlIHdpdGhvdXQgdGhlIFVSSSBwYXJ0IGluIGEgc3VicmVxdWVzdC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8L2NoYW5nZXM+CisKKwogPGNoYW5nZXMgdmVyPSIwLjMuMzQiIGRhdGU9IjIxLjAzLjIwMDYiPgogCiA8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggZWJkOTU5ZC4uNDZkMGEzZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjM0IgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMy4zNSIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfT0xEUElEX0VYVCAgICAgIi5vbGRiaW4iCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5jIGIvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uYwppbmRleCBhYmMwMDZmLi44ZGJhYmMyIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5jCisrKyBiL3NyYy9jb3JlL25neF9jb25uZWN0aW9uLmMKQEAgLTQwNCw3NCArNDA0LDc1IEBACiAKICNpZmRlZiBTT19BQ0NFUFRGSUxURVIKIAotICAgICAgICBpZiAobHMtPmRlbGV0ZV9kZWZlcnJlZCkgewotICAgICAgICAgICAgaWYgKHNldHNvY2tvcHQobHMtPmZkLCBTT0xfU09DS0VULCBTT19BQ0NFUFRGSUxURVIsIE5VTEwsIDApID09IC0xKQorICAgICAgICBpZiAobHNbaV0uZGVsZXRlX2RlZmVycmVkKSB7CisgICAgICAgICAgICBpZiAoc2V0c29ja29wdChsc1tpXS5mZCwgU09MX1NPQ0tFVCwgU09fQUNDRVBURklMVEVSLCBOVUxMLCAwKQorICAgICAgICAgICAgICAgID09IC0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgY3ljbGUtPmxvZywgbmd4X2Vycm5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldHNvY2tvcHQoU09fQUNDRVBURklMVEVSLCBOVUxMKSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yICVWIGZhaWxlZCwgaWdub3JlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHMtPmFkZHJfdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHNbaV0uYWRkcl90ZXh0KTsKIAotICAgICAgICAgICAgICAgIGlmIChscy0+YWNjZXB0X2ZpbHRlcikgeworICAgICAgICAgICAgICAgIGlmIChsc1tpXS5hY2NlcHRfZmlsdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgY3ljbGUtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNoYW5nZSB0aGUgYWNjZXB0IGZpbHRlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIFwiJXNcIiBmb3IgJVYsIGlnbm9yZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzLT5hY2NlcHRfZmlsdGVyLCAmbHMtPmFkZHJfdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHNbaV0uYWNjZXB0X2ZpbHRlciwgJmxzW2ldLmFkZHJfdGV4dCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGxzLT5kZWZlcnJlZF9hY2NlcHQgPSAwOworICAgICAgICAgICAgbHNbaV0uZGVmZXJyZWRfYWNjZXB0ID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChscy0+YWRkX2RlZmVycmVkKSB7CisgICAgICAgIGlmIChsc1tpXS5hZGRfZGVmZXJyZWQpIHsKICAgICAgICAgICAgIG5neF9tZW16ZXJvKCZhZiwgc2l6ZW9mKHN0cnVjdCBhY2NlcHRfZmlsdGVyX2FyZykpOwogICAgICAgICAgICAgKHZvaWQpIG5neF9jcHlzdHJuKCh1X2NoYXIgKikgYWYuYWZfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGxzLT5hY2NlcHRfZmlsdGVyLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBsc1tpXS5hY2NlcHRfZmlsdGVyLCAxNik7CiAKLSAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KGxzLT5mZCwgU09MX1NPQ0tFVCwgU09fQUNDRVBURklMVEVSLAorICAgICAgICAgICAgaWYgKHNldHNvY2tvcHQobHNbaV0uZmQsIFNPTF9TT0NLRVQsIFNPX0FDQ0VQVEZJTFRFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZiwgc2l6ZW9mKHN0cnVjdCBhY2NlcHRfZmlsdGVyX2FyZykpCiAgICAgICAgICAgICAgICAgPT0gLTEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjeWNsZS0+bG9nLCBuZ3hfZXJybm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0c29ja29wdChTT19BQ0NFUFRGSUxURVIsIFwiJXNcIikgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3IgJVYgZmFpbGVkLCBpZ25vcmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzLT5hY2NlcHRfZmlsdGVyLCAmbHMtPmFkZHJfdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc1tpXS5hY2NlcHRfZmlsdGVyLCAmbHNbaV0uYWRkcl90ZXh0KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbHMtPmRlZmVycmVkX2FjY2VwdCA9IDE7CisgICAgICAgICAgICBsc1tpXS5kZWZlcnJlZF9hY2NlcHQgPSAxOwogICAgICAgICB9CiAKICNlbmRpZgogCiAjaWZkZWYgVENQX0RFRkVSX0FDQ0VQVAogCi0gICAgICAgIGlmIChscy0+YWRkX2RlZmVycmVkIHx8IGxzLT5kZWxldGVfZGVmZXJyZWQpIHsKKyAgICAgICAgaWYgKGxzW2ldLmFkZF9kZWZlcnJlZCB8fCBsc1tpXS5kZWxldGVfZGVmZXJyZWQpIHsKIAotICAgICAgICAgICAgaWYgKGxzLT5hZGRfZGVmZXJyZWQpIHsKLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gKGludCkgKGxzLT5wb3N0X2FjY2VwdF90aW1lb3V0IC8gMTAwMCk7CisgICAgICAgICAgICBpZiAobHNbaV0uYWRkX2RlZmVycmVkKSB7CisgICAgICAgICAgICAgICAgdGltZW91dCA9IChpbnQpIChsc1tpXS5wb3N0X2FjY2VwdF90aW1lb3V0IC8gMTAwMCk7CiAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdGltZW91dCA9IDA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KGxzLT5mZCwgSVBQUk9UT19UQ1AsIFRDUF9ERUZFUl9BQ0NFUFQsCisgICAgICAgICAgICBpZiAoc2V0c29ja29wdChsc1tpXS5mZCwgSVBQUk9UT19UQ1AsIFRDUF9ERUZFUl9BQ0NFUFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZW91dCwgc2l6ZW9mKGludCkpCiAgICAgICAgICAgICAgICAgPT0gLTEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjeWNsZS0+bG9nLCBuZ3hfZXJybm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0c29ja29wdChUQ1BfREVGRVJfQUNDRVBULCAlZCkgZm9yICVWIGZhaWxlZCwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwgJmxzLT5hZGRyX3RleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwgJmxzW2ldLmFkZHJfdGV4dCk7CiAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChscy0+YWRkX2RlZmVycmVkKSB7Ci0gICAgICAgICAgICBscy0+ZGVmZXJyZWRfYWNjZXB0ID0gMTsKKyAgICAgICAgaWYgKGxzW2ldLmFkZF9kZWZlcnJlZCkgeworICAgICAgICAgICAgbHNbaV0uZGVmZXJyZWRfYWNjZXB0ID0gMTsKICAgICAgICAgfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCmluZGV4IGU4ZDMxMDcuLmY4ZGZkYzQgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYwpAQCAtNDg3LDcgKzQ4Nyw4IEBACiAKICAgICBlc2NhcGUgPSAwOwogCi0gICAgbG9jX2xlbiA9IHItPnZhbGlkX2xvY2F0aW9uID8gdS0+Y29uZi0+bG9jYXRpb24ubGVuIDogMDsKKyAgICBsb2NfbGVuID0gKHItPnZhbGlkX2xvY2F0aW9uICYmIHUtPmNvbmYtPnVyaS5sZW4pID8gdS0+Y29uZi0+bG9jYXRpb24ubGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOwogCiAgICAgaWYgKHUtPmNvbmYtPnVyaS5sZW4gPT0gMCAmJiByLT52YWxpZF91bnBhcnNlZF91cmkgJiYgciA9PSByLT5tYWluKSB7CiAgICAgICAgIHVucGFyc2VkX3VyaSA9IDE7CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfcmVhZHZfY2hhaW4uYyBiL3NyYy9vcy91bml4L25neF9yZWFkdl9jaGFpbi5jCmluZGV4IDJlNjIxZDguLmYyZGQ4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9yZWFkdl9jaGFpbi5jCisrKyBiL3NyYy9vcy91bml4L25neF9yZWFkdl9jaGFpbi5jCkBAIC0xMTgsOSArMTE4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAqIGV2ZW4gaWYga3F1ZXVlIHJlcG9ydGVkIGFib3V0IGF2YWlsYWJsZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAqLwogCisjaWYgMAogICAgICAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIGMtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZHYoKSByZXR1cm5lZCAwIHdoaWxlIGtldmVudCgpIHJlcG9ydGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQgYXZhaWxhYmxlIGJ5dGVzIiwgcmV2LT5hdmFpbGFibGUpOworI2VuZGlmCiAKICAgICAgICAgICAgICAgICAgICAgcmV2LT5lb2YgPSAxOwogICAgICAgICAgICAgICAgICAgICByZXYtPmF2YWlsYWJsZSA9IDA7CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfcmVjdi5jIGIvc3JjL29zL3VuaXgvbmd4X3JlY3YuYwppbmRleCBmMzg3MzBlLi5kYjlhODM0IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfcmVjdi5jCisrKyBiL3NyYy9vcy91bml4L25neF9yZWN2LmMKQEAgLTc3LDkgKzc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAqIGV2ZW4gaWYga3F1ZXVlIHJlcG9ydGVkIGFib3V0IGF2YWlsYWJsZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAqLwogCisjaWYgMAogICAgICAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIGMtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjdigpIHJldHVybmVkIDAgd2hpbGUga2V2ZW50KCkgcmVwb3J0ZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlZCBhdmFpbGFibGUgYnl0ZXMiLCByZXYtPmF2YWlsYWJsZSk7CisjZW5kaWYKIAogICAgICAgICAgICAgICAgICAgICByZXYtPmVvZiA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHJldi0+YXZhaWxhYmxlID0gMDsK