ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggMWQ0MDFmOC4uMjkwMGUyZCAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw0OSBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4xLjMxIiBkYXRlPSIxNi4wNS4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor0NLJIMnT0M/M2NrP18HOyckgU1NMIM/U18XUIM3PxyDQxdLFxMHXwdTY09EgzsUgxM8gy8/Ow8EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgcmVzcG9uc2UgZW5jcnlwdGVkIGJ5IFNTTCBtYXkgbm90IHRyYW5zZmVycmVkIGNvbXBsZXRlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8/bycLLySDQ0skgz8LSwcLP1MvFIFNTSSDXIM/U18XUxSwg0M/M1d7Fzs7Px88gz9QgRmFzdENHSS3TxdLXxdLBLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgRmFzdENHSSByZXNwb25zZSBieSBTU0kuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorz9vJwsvJINDSySDJ09DPzNjaz9fBzsnJIFNTSSDJINPWwdTJ0S4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK2Vycm9ycyB3aGlsZSB1c2luZyBTU0kgYW5kIGd6aXBwaW5nLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9LFxMnSxcvUINMgy8/Ez80gMzAxINDF0sXEwdfBzNPRIMLF2iDUxczBIM/U18XUwTsKK8/bycLLwSDQz9HXyczB09gg1yAwLjEuMzAuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgcmVkaXJlY3Qgd2l0aCB0aGUgMzAxIGNvZGUgd2FzIHRyYW5zZmVycmVkIHdpdGhvdXQgcmVzcG9uc2UgYm9keTsKK2J1ZyBhcHBlYXJlZCBpbiAwLjEuMzAuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4xLjMwIiBkYXRlPSIxNC4wNS4yMDA1Ij4KIAogPGNoYW5nZSB0eXBlPSJidWdmaXgiPgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggZGMxZTE0My4uNDRjODcwYiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4xLjMwIgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4zMSIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfTkVXUElEX0VYVCAgICAgIi5uZXdiaW4iCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCmluZGV4IDcwNTNmYTMuLjFjMGYxNDggMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCkBAIC0yODgsOCArMjg4LDkgQEAKICAgICAgICAgICAgIHJldHVybiBOR1hfQ0hBSU5fRVJST1I7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgIG4gPSAwOworICAgICAgICBpZiAobiA9PSBOR1hfQUdBSU4pIHsKKyAgICAgICAgICAgIGMtPmJ1ZmZlcmVkID0gMTsKKyAgICAgICAgICAgIHJldHVybiBpbjsKICAgICAgICAgfQogCiAgICAgICAgIGluLT5idWYtPnBvcyArPSBuOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nemlwX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZ3ppcF9maWx0ZXJfbW9kdWxlLmMKaW5kZXggMWY3YzIzMi4uZjdjYjkyYyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nemlwX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2d6aXBfZmlsdGVyX21vZHVsZS5jCkBAIC0zNjcsNyArMzY3LDcgQEAKICAgICAgICAgci0+aGVhZGVyc19vdXQuY29udGVudF9sZW5ndGggPSBOVUxMOwogICAgIH0KIAotICAgIHItPmZpbHRlcl9uZWVkX2luX21lbW9yeSA9IDE7CisgICAgci0+bWFpbl9maWx0ZXJfbmVlZF9pbl9tZW1vcnkgPSAxOwogCiAgICAgcmV0dXJuIG5neF9odHRwX25leHRfaGVhZGVyX2ZpbHRlcihyKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NpX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NpX2ZpbHRlcl9tb2R1bGUuYwppbmRleCBhY2FlZWVkLi4yOTkyZmY1IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5jCkBAIC0zMjEsNyArMzIxLDYgQEAKICAgICBjdHgtPnRpbWVmbXQuZGF0YSA9ICh1X2NoYXIgKikgIiVBLCAlZC0lYi0lWSAlSDolTTolUyAlWiI7CiAKICAgICByLT5maWx0ZXJfbmVlZF9pbl9tZW1vcnkgPSAxOwotICAgIHItPmZpbHRlcl9zc2lfbmVlZF9pbl9tZW1vcnkgPSAxOwogCiAgICAgaWYgKHItPm1haW4gPT0gTlVMTCkgewogICAgICAgICByLT5oZWFkZXJzX291dC5jb250ZW50X2xlbmd0aF9uID0gLTE7CkBAIC00NjQsMTAgKzQ2MywxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgIG5neF9tZW1jcHkoYiwgY3R4LT5idWYsIHNpemVvZihuZ3hfYnVmX3QpKTsKIAotICAgICAgICAgICAgICAgICAgICBiLT5sYXN0X2J1ZiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGItPnJlY3ljbGVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgYi0+cG9zID0gY3R4LT5jb3B5X3N0YXJ0OwogICAgICAgICAgICAgICAgICAgICBiLT5sYXN0ID0gY3R4LT5jb3B5X2VuZDsKKyAgICAgICAgICAgICAgICAgICAgYi0+c2hhZG93ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYi0+bGFzdF9idWYgPSAwOworICAgICAgICAgICAgICAgICAgICBiLT5yZWN5Y2xlZCA9IDA7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGItPmluX2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25mLT5taW5fZmlsZV9jaHVuayA8IChzaXplX3QpIChiLT5sYXN0IC0gYi0+cG9zKSkKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcHlfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggOTg1NzlhMi4uNTU2MTEzNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29weV9maWx0ZXJfbW9kdWxlLmMKQEAgLTg4LDcgKzg4LDggQEAKICAgICAgICAgbmd4X2h0dHBfc2V0X2N0eChyLCBjdHgsIG5neF9odHRwX2NvcHlfZmlsdGVyX21vZHVsZSk7CiAKICAgICAgICAgY3R4LT5zZW5kZmlsZSA9IHItPmNvbm5lY3Rpb24tPnNlbmRmaWxlOwotICAgICAgICBjdHgtPm5lZWRfaW5fbWVtb3J5ID0gci0+ZmlsdGVyX25lZWRfaW5fbWVtb3J5OworICAgICAgICBjdHgtPm5lZWRfaW5fbWVtb3J5ID0gci0+bWFpbl9maWx0ZXJfbmVlZF9pbl9tZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHItPmZpbHRlcl9uZWVkX2luX21lbW9yeTsKICAgICAgICAgY3R4LT5uZWVkX2luX3RlbXAgPSByLT5maWx0ZXJfbmVlZF90ZW1wb3Jhcnk7CiAKICAgICAgICAgY3R4LT5wb29sID0gci0+cG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCmluZGV4IDJhOWIzYjcuLjQyYzgyMTEgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwpAQCAtMTAyMyw2ICsxMDIzLDggQEAKIAogICAgIHNyLT5pbnRlcm5hbCA9IDE7CiAKKyAgICBzci0+bWFpbl9maWx0ZXJfbmVlZF9pbl9tZW1vcnkgPSByLT5tYWluX2ZpbHRlcl9uZWVkX2luX21lbW9yeTsKKwogICAgIG5neF9sb2dfZGVidWcxKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICJodHRwIHN1YnJlcXVlc3QgXCIlVlwiIiwgdXJpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcG9zdHBvbmVfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcG9zdHBvbmVfZmlsdGVyX21vZHVsZS5jCmluZGV4IDRmOTliYzQuLjVjM2UyYzkgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3Bvc3Rwb25lX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgb3V0ID0gaW47CiAgICAgfQogCi0gICAgaWYgKG91dCA9PSBOVUxMICYmIHItPm91dCA9PSBOVUxMKSB7CisgICAgaWYgKG91dCA9PSBOVUxMICYmIHItPm91dCA9PSBOVUxMICYmICFyLT5jb25uZWN0aW9uLT5idWZmZXJlZCkgewogICAgICAgICByZXR1cm4gTkdYX09LOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCmluZGV4IDRjYmY5MTUuLjM3YTE3NmEgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKQEAgLTM4NCw3ICszODQsNyBAQAogICAgICAgICAgICAgYy0+c3NsLT5ub19yY3Zfc2h1dCA9IDE7CiAgICAgICAgIH0KIAotICAgICAgICByLT5maWx0ZXJfbmVlZF9pbl9tZW1vcnkgPSAxOworICAgICAgICByLT5tYWluX2ZpbHRlcl9uZWVkX2luX21lbW9yeSA9IDE7CiAgICAgfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaCBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaAppbmRleCBmMDViYzFiLi5lMmYzMDMzIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCkBAIC0zNjYsOCArMzY2LDggQEAKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkOjE7CiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6MTsKIAorICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluX2ZpbHRlcl9uZWVkX2luX21lbW9yeToxOwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbmVlZF9pbl9tZW1vcnk6MTsKLSAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3NzaV9uZWVkX2luX21lbW9yeToxOwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbmVlZF90ZW1wb3Jhcnk6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2FsbG93X3JhbmdlczoxOwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMKaW5kZXggNTU5MWRiYy4uN2EzNDE1OSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfc3BlY2lhbF9yZXNwb25zZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3NwZWNpYWxfcmVzcG9uc2UuYwpAQCAtMzAwLDcgKzMwMCw3IEBACiAKICAgICB9IGVsc2UgaWYgKGVycm9yIDwgTkdYX0hUVFBfQkFEX1JFUVVFU1QpIHsKICAgICAgICAgLyogM1hYICovCi0gICAgICAgIGVyciA9IGVycm9yIC0gTkdYX0hUVFBfTU9WRURfUEVSTUFORU5UTFk7CisgICAgICAgIGVyciA9IGVycm9yIC0gTkdYX0hUVFBfTU9WRURfUEVSTUFORU5UTFkgKyBOR1hfSFRUUF9MRVZFTF8yMDA7CiAKICAgICB9IGVsc2UgaWYgKGVycm9yIDwgTkdYX0hUVFBfTkdYX0NPREVTKSB7CiAgICAgICAgIC8qIDRYWCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZS5jCmluZGV4IDJkOWRiOGIuLmI4NzJmM2QgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMKQEAgLTE2OCwxNyArMTY4LDYgQEAKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CiAKLSNpZiAwCi0gICAgLyoKLSAgICAgKiBhdm9pZCB0aGUgb3V0cHV0IGlmIHRoZXJlIGFyZSBubyBpbmNvbWluZyBidWZzIGJ1dCB0aGVyZSBhcmUKLSAgICAgKiB0aGUgcG9zdHBvbmVkIHJlcXVlc3RzIG9yIGRhdGEKLSAgICAgKi8KLQotICAgIGlmIChpbiA9PSBOVUxMICYmIHItPnBvc3Rwb25lZCkgewotICAgICAgICByZXR1cm4gTkdYX09LOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKGMtPndyaXRlLT5kZWxheWVkKSB7CiAgICAgICAgIHJldHVybiBOR1hfQUdBSU47CiAgICAgfQpAQCAtMjMyLDcgKzIyMSw3IEBACiAKICAgICByLT5vdXQgPSBjaGFpbjsKIAotICAgIGlmIChjaGFpbiB8fCAobGFzdCAmJiBjLT5idWZmZXJlZCkpIHsKKyAgICBpZiAoY2hhaW4gfHwgYy0+YnVmZmVyZWQpIHsKICAgICAgICAgcmV0dXJuIE5HWF9BR0FJTjsKICAgICB9CiAK