ZGlmZiAtLWdpdCBhL2F1dG8vY2MvaWNjIGIvYXV0by9jYy9pY2MKaW5kZXggODFiMDQyNy4uYWZjYWJlNiAxMDA2NDQKLS0tIGEvYXV0by9jYy9pY2MKKysrIGIvYXV0by9jYy9pY2MKQEAgLTIwLDkgKzIwLDYgQEAKICMgaW5saW5lIGFueSBmdW5jdGlvbiwgYXQgdGhlIGNvbXBpbGVyJ3MgZGlzY3JldGlvbgogQ0ZMQUdTPSIkQ0ZMQUdTIC1PYjIiCiAKLSMgc2luZ2xlLWZpbGUgSVAgb3B0aW1pemF0aW9ucwotI0lQTz0iLWlwIgotCiAjIG11bHRpLWZpbGUgSVAgb3B0aW1pemF0aW9ucwogY2FzZSAiJE5HWF9JQ0NfVkVSIiBpbgogICAgIDkuKikKQEAgLTM0LDYgKzMxLDkgQEAKICAgICA7OwogZXNhYwogCisjIHNpbmdsZS1maWxlIElQIG9wdGltaXphdGlvbnMKKyNJUE89Ii1pcCIKKwogQ0ZMQUdTPSIkQ0ZMQUdTICRJUE8iCiBDT1JFX0xJTks9IiRDT1JFX0xJTksgJElQTyIKIENPUkVfTElOSz0iJENPUkVfTElOSyAtb3B0X3JlcG9ydF9maWxlPSROR1hfT0JKUy9vcHRfcmVwb3J0X2ZpbGUiCmRpZmYgLS1naXQgYS9hdXRvL2xpYi9wZXJsL21ha2UgYi9hdXRvL2xpYi9wZXJsL21ha2UKaW5kZXggMzY1NDQyMi4uYjdjOGNiMyAxMDA2NDQKLS0tIGEvYXV0by9saWIvcGVybC9tYWtlCisrKyBiL2F1dG8vbGliL3BlcmwvbWFrZQpAQCAtMTUsMTQgKzE1LDE2IEBACiAJY2QgJE5HWF9PQkpTL3NyYy9odHRwL21vZHVsZXMvcGVybCAmJiBtYWtlCiAKIAotJE5HWF9PQkpTL3NyYy9odHRwL21vZHVsZXMvcGVybC9NYWtlZmlsZTogc3JjL2h0dHAvbW9kdWxlcy9wZXJsL01ha2VmaWxlLlBMCiskTkdYX09CSlMvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL01ha2VmaWxlOgkJCQlcCisJCXNyYy9odHRwL21vZHVsZXMvcGVybC9NYWtlZmlsZS5QTAkJCVwKKwkJc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnBtCiAKIAljcCAtcCBzcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbnguKiAkTkdYX09CSlMvc3JjL2h0dHAvbW9kdWxlcy9wZXJsLwogCWNwIC1wIHNyYy9odHRwL21vZHVsZXMvcGVybC90eXBlbWFwICROR1hfT0JKUy9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvCiAJY3AgLXAgc3JjL2h0dHAvbW9kdWxlcy9wZXJsL01ha2VmaWxlLlBMICROR1hfT0JKUy9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvCiAKIAljZCAkTkdYX09CSlMvc3JjL2h0dHAvbW9kdWxlcy9wZXJsCQkJCVwKLQkJJiYgTkdYX1BFUkxfQ0ZMQUdTPSIkTkdYX1BFUkxfQ0ZMQUdTIgkJCVwKKwkJJiYgTkdYX1BFUkxfQ0ZMQUdTPSIkTkdYX1BFUkxfQ0ZMQUdTICROR1hfQ0NfT1BUIglcCiAJCQlOR1hfUENSRT0kUENSRQkJCQkJXAogCQkJTkdYX1pMSUI9JFpMSUIJCQkJCVwKIAkJCU5HWF9PQkpTPSROR1hfT0JKUwkJCQlcCmRpZmYgLS1naXQgYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbCBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCmluZGV4IGU0ODQ1ZjYuLjhlZjY0YzkgMTAwNjQ0Ci0tLSBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCisrKyBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCkBAIC05LDYgKzksNDIgQEAKIDx0aXRsZSBsYW5nPSJlbiI+bmdpbnggY2hhbmdlbG9nPC90aXRsZT4KIAogCis8Y2hhbmdlcyB2ZXI9IjAuMy4yMiIgZGF0ZT0iMTcuMDEuMjAwNiI+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivNz8TVzNggbmd4X2h0dHBfcGVybF9tb2R1bGUg0M/ExMXS1snXwcXUIM3F1M/E2SAkci0+YXJncyDJICRyLT51bmVzY2FwZS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBuZ3hfaHR0cF9wZXJsX21vZHVsZSBzdXBwb3J0cyB0aGUgJHItPmFyZ3MgYW5kICRyLT51bmVzY2FwZSBtZXRob2RzLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivNxdTPxCAkci0+cXVlcnlfc3RyaW5nINcgzc/E1czFIG5neF9odHRwX3BlcmxfbW9kdWxlINXQ0sHaxM6jzi4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBtZXRob2QgJHItPnF1ZXJ5X3N0cmluZyBvZiBuZ3hfaHR0cF9wZXJsX21vZHVsZSBpcyBjYW5jZWxlZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivF08zJINcgxMnSxcvUydfFIHZhbGlkX3JlZmVyZXJzINXLwdrBztkg1M/M2MvPIG5vbmUgyczJIGJsb2NrZWQsINTPCivQ0s/J08jPxMnMIHNlZ21lbnRhdGlvbiBmYXVsdDsKK8/bycLLwSDQz9HXyczB09gg1yAwLjMuMTguCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+CitzZWdtZW50YXRpb24gZmF1bHQgd2FzIG9jY3VycmVkIGlmIHRoZSAibm9uZSIgb3IgImJsb2NrZWQiIHZhbHVlcyB3YXMKK3NwZWNpZmllZCBpbiB0aGUgInZhbGlkX3JlZmVyZXJzIiBkaXJlY3RpdmU7CitidWcgYXBwZWFyZWQgaW4gMC4zLjE4LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMy4yMSIgZGF0ZT0iMTYuMDEuMjAwNiI+CiAKIDxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5jIGIvc3JjL2NvcmUvbmdpbnguYwppbmRleCBkMzBlMTI3Li5hOWEwZGQ5IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5jCisrKyBiL3NyYy9jb3JlL25naW54LmMKQEAgLTE2OCw2ICsxNjgsOCBAQAogCiBuZ3hfdWludF90ICBuZ3hfbWF4X21vZHVsZTsKIAorc3RhdGljIGNoYXIgKm5neF9udWxsX2Vudmlyb24gPSBOVUxMOworCiAKIGludCBuZ3hfY2RlY2wKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2KQpAQCAtMjMyLDYgKzIzNCw4IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAorICAgIGVudmlyb24gPSAmbmd4X251bGxfZW52aXJvbjsKKwogICAgIG5neF9tYXhfbW9kdWxlID0gMDsKICAgICBmb3IgKGkgPSAwOyBuZ3hfbW9kdWxlc1tpXTsgaSsrKSB7CiAgICAgICAgIG5neF9tb2R1bGVzW2ldLT5pbmRleCA9IG5neF9tYXhfbW9kdWxlKys7CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCBlYzEyNWQ2Li5hMmM2OTZmIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuMjEiCisjZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjIyIgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9PTERQSURfRVhUICAgICAiLm9sZGJpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9zdHJpbmcuYyBiL3NyYy9jb3JlL25neF9zdHJpbmcuYwppbmRleCAyYmIzMzVhLi5jOTk3NzhkIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfc3RyaW5nLmMKKysrIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5jCkBAIC05MzEsNyArOTMxLDcgQEAKIAogCiB2b2lkCi1uZ3hfdW5lc2NhcGVfdXJpKHVfY2hhciAqKmRzdCwgdV9jaGFyICoqc3JjLCBzaXplX3Qgc2l6ZSkKK25neF91bmVzY2FwZV91cmkodV9jaGFyICoqZHN0LCB1X2NoYXIgKipzcmMsIHNpemVfdCBzaXplLCBuZ3hfdWludF90IHR5cGUpCiB7CiAgICAgdV9jaGFyICAqZCwgKnMsIGNoLCBjLCBkZWNvZGVkOwogICAgIGVudW0gewpAQCAtOTUyLDcgKzk1Miw3IEBACiAKICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIHN3X3VzdWFsOgotICAgICAgICAgICAgaWYgKGNoID09ICc/JykgeworICAgICAgICAgICAgaWYgKGNoID09ICc/JyAmJiB0eXBlID09IE5HWF9VTkVTQ0FQRV9VUkkpIHsKICAgICAgICAgICAgICAgICAqZCsrID0gY2g7CiAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfQpAQCAtOTk1LDEyICs5OTUsMTggQEAKICAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7CiAgICAgICAgICAgICAgICAgY2ggPSAodV9jaGFyKSAoKGRlY29kZWQgPDwgNCkgKyBjaCAtICcwJyk7CiAKLSAgICAgICAgICAgICAgICBpZiAoY2ggPiAnJScgJiYgY2ggPCAweDdmKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkKysgPSBjaDsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBOR1hfVU5FU0NBUEVfVVJJKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+ICclJyAmJiBjaCA8IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkKysgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKmQrKyA9ICclJzsgKmQrKyA9ICoocyAtIDIpOyAqZCsrID0gKihzIC0gMSk7CisKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgKmQrKyA9ICclJzsgKmQrKyA9ICoocyAtIDIpOyAqZCsrID0gKihzIC0gMSk7CisgICAgICAgICAgICAgICAgKmQrKyA9IGNoOwogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMDA5LDE3ICsxMDE1LDIyIEBACiAgICAgICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKICAgICAgICAgICAgICAgICBjaCA9ICh1X2NoYXIpICgoZGVjb2RlZCA8PCA0KSArIGMgLSAnYScgKyAxMCk7CiAKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICpkKysgPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBOR1hfVU5FU0NBUEVfVVJJKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkKysgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGNoID4gJyUnICYmIGNoIDwgMHg3ZikgewotICAgICAgICAgICAgICAgICAgICAqZCsrID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+ICclJyAmJiBjaCA8IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkKysgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKmQrKyA9ICclJzsgKmQrKyA9ICoocyAtIDIpOyAqZCsrID0gKihzIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICpkKysgPSAnJSc7ICpkKysgPSAqKHMgLSAyKTsgKmQrKyA9ICoocyAtIDEpOworICAgICAgICAgICAgICAgICpkKysgPSBjaDsKIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X3N0cmluZy5oIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5oCmluZGV4IDAxOTJhMzAuLmQ3NmEwZjUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9zdHJpbmcuaAorKysgYi9zcmMvY29yZS9uZ3hfc3RyaW5nLmgKQEAgLTE0NCwxMyArMTQ0LDE1IEBACiB1X2NoYXIgKiBuZ3hfdXRmX2NweXN0cm4odV9jaGFyICpkc3QsIHVfY2hhciAqc3JjLCBzaXplX3Qgbik7CiAKIAotI2RlZmluZSBOR1hfRVNDQVBFX1VSSSAgIDAKLSNkZWZpbmUgTkdYX0VTQ0FQRV9BUkdTICAxCi0jZGVmaW5lIE5HWF9FU0NBUEVfSFRNTCAgMgorI2RlZmluZSBOR1hfRVNDQVBFX1VSSSAgICAgMAorI2RlZmluZSBOR1hfRVNDQVBFX0FSR1MgICAgMQorI2RlZmluZSBOR1hfRVNDQVBFX0hUTUwgICAgMgorCisjZGVmaW5lIE5HWF9VTkVTQ0FQRV9VUkkgICAxCiAKIHVpbnRwdHJfdCBuZ3hfZXNjYXBlX3VyaSh1X2NoYXIgKmRzdCwgdV9jaGFyICpzcmMsIHNpemVfdCBzaXplLAogICAgIG5neF91aW50X3QgdHlwZSk7Ci12b2lkIG5neF91bmVzY2FwZV91cmkodV9jaGFyICoqZHN0LCB1X2NoYXIgKipzcmMsIHNpemVfdCBzaXplKTsKK3ZvaWQgbmd4X3VuZXNjYXBlX3VyaSh1X2NoYXIgKipkc3QsIHVfY2hhciAqKnNyYywgc2l6ZV90IHNpemUsIG5neF91aW50X3QgdHlwZSk7CiAKIAogI2RlZmluZSAgbmd4X3Fzb3J0ICAgICAgICAgICAgICAgIHFzb3J0CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3JlZmVyZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3JlZmVyZXJfbW9kdWxlLmMKaW5kZXggMGQzZWU2Zi4uNDU5OTg0ZSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZWZlcmVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmVmZXJlcl9tb2R1bGUuYwpAQCAtOTAsMTAgKzkwLDcgQEAKIAogICAgIHJsY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2xvY19jb25mKHIsIG5neF9odHRwX3JlZmVyZXJfbW9kdWxlKTsKIAotICAgIGlmIChybGNmLT5oYXNoLmJ1Y2tldHMgPT0gTlVMTAotICAgICAgICAmJiBybGNmLT5kbnNfd2lsZGNhcmRzID09IE5VTEwKLSAgICAgICAgJiYgcmxjZi0+ZG5zX3dpbGRjYXJkcy0+aGFzaC5idWNrZXRzID09IE5VTEwpCi0gICAgeworICAgIGlmIChybGNmLT5oYXNoLmJ1Y2tldHMgPT0gTlVMTCAmJiBybGNmLT5kbnNfd2lsZGNhcmRzID09IE5VTEwpIHsKICAgICAgICAgZ290byB2YWxpZDsKICAgICB9CiAKQEAgLTE0NSw3ICsxNDIsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHJsY2YtPmRuc193aWxkY2FyZHMgJiYgcmxjZi0+ZG5zX3dpbGRjYXJkcy0+aGFzaC5idWNrZXRzKSB7CisgICAgaWYgKHJsY2YtPmRuc193aWxkY2FyZHMpIHsKICAgICAgICAgdXJpID0gbmd4X2hhc2hfZmluZF93aWxkY2FyZChybGNmLT5kbnNfd2lsZGNhcmRzLCBidWYsIGxlbik7CiAgICAgICAgIGlmICh1cmkpIHsKICAgICAgICAgICAgIGdvdG8gdXJpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnBtIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnBtCmluZGV4IDY2ZmY2NGYuLmMwZjNmMjcgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC5wbQorKysgYi9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngucG0KQEAgLTE3LDcgKzE3LDcgQEAKICAgICBIVFRQX1NFUlZFUl9FUlJPUgogKTsKIAotb3VyICRWRVJTSU9OID0gJzAuMy4yMSc7CitvdXIgJFZFUlNJT04gPSAnMC4zLjIyJzsKIAogcmVxdWlyZSBYU0xvYWRlcjsKIFhTTG9hZGVyOjpsb2FkKCduZ2lueCcsICRWRVJTSU9OKTsKQEAgLTQ4LDExICs0OCw2IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgUGVybCBpbnRlcmZhY2UgdG8gdGhlIG5naW54IEhUVFAgc2VydmVyIEFQSS4KIAotPWhlYWQyIEVYUE9SVAotCi1Ob25lIGJ5IGRlZmF1bHQuCi0KLQogCiA9aGVhZDEgU0VFIEFMU08KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnhzIGIvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnhzCmluZGV4IDIxZDJkZWIuLmQ0MWJmNjggMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cworKysgYi9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngueHMKQEAgLTE1NiwxMyArMTU2LDEzIEBACiAKIAogY2hhciAqCi1xdWVyeV9zdHJpbmcociwgLi4uKQorYXJncyhyLCAuLi4pCiAgICAgbmdpbnggIHIKIAogICAgIENPREU6CiAKICAgICBpZiAoaXRlbXMgIT0gMSkgewotICAgICAgICBjcm9haygiJHItPnF1ZXJ5X3N0cmluZyh0ZXh0KSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgY3JvYWsoIiRyLT5hcmdzKHRleHQpIGlzIG5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0KIAogICAgIFJFVFZBTCA9IG5neF9wYWxsb2Moci0+cG9vbCwgci0+YXJncy5sZW4gKyAxKTsKQEAgLTM2MCw2ICszNjAsOSBAQAogICAgICAgICAgICAgYi0+c3RhcnQgPSBwOwogICAgICAgICAgICAgYi0+ZW5kID0gYi0+bGFzdDsKIAorICAgICAgICAgICAgbmd4X2xvZ19kZWJ1ZzEoTkdYX0xPR19ERUJVR19IVFRQLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHItPnByaW50OiByZWFkLW9ubHkgU1Y6ICV6IiwgbGVuKTsKKwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNzQsMTIgKzM3NywxMSBAQAogICAgICAgICAgICAgc3YgPSBTdlJWKHN2KTsKICAgICAgICAgfQogCi0gICAgICAgIG5neF9sb2dfZGVidWczKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAiU1Y6ICVwICVkICVYZCIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN2LCBTdlJFRkNOVChzdiksIFN2UkVBRE9OTFkoc3YpKTsKLQogICAgICAgICAodm9pZCkgU3ZQVihzdiwgbGVuKTsKIAorICAgICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIiRyLT5wcmludDogY29weSBTVjogJXoiLCBsZW4pOworCiAgICAgICAgIHNpemUgKz0gbGVuOwogICAgIH0KIApAQCAtNTEzLDYgKzUxNSw4IEBACiAKICAgICBiLT5mbHVzaCA9IDE7CiAKKyAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwgIiRyLT5yZmx1c2giKTsKKwogICAgIFJFVFZBTCA9IG5neF9odHRwX3Blcmxfb3V0cHV0KHIsIGIpOwogCiAgICAgZG9uZToKQEAgLTU0OSwzICs1NTMsMzQgQEAKICAgICAgICAgICAgIFhTUkVUVVJOX0VNUFRZOwogICAgICAgICB9CiAgICAgfQorCisKK2NoYXIgKgordW5lc2NhcGUociwgdGV4dCwgdHlwZSA9IDApCisgICAgbmdpbnggICAgcgorICAgIFNWICAgICAgKnRleHQKKyAgICBpbnQgICAgICB0eXBlCisKKyAgICBQUkVJTklUOgorCisgICAgdV9jaGFyICAqcCwgKmRzdCwgKnNyYzsKKyAgICBTVFJMRU4gICBuOworCisgICAgQ09ERToKKworICAgIHNyYyA9ICh1X2NoYXIgKikgU3ZQVih0ZXh0LCBuKTsKKworICAgIHAgPSBuZ3hfcGFsbG9jKHItPnBvb2wsIG4gKyAxKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFhTUkVUVVJOX1VOREVGOworICAgIH0KKworICAgIGRzdCA9IHA7CisKKyAgICBuZ3hfdW5lc2NhcGVfdXJpKCZkc3QsICZzcmMsIG4sIChuZ3hfdWludF90KSB0eXBlKTsKKyAgICAqZHN0ID0gJ1wwJzsKKworICAgIFJFVFZBTCA9IChjaGFyICopIHA7CisKKyAgICBPVVRQVVQ6CisgICAgUkVUVkFMCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuYyBiL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5jCmluZGV4IDQ5ODY2NzUuLmI0NmM5YmIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5jCkBAIC02ODIsNyArNjgyLDcgQEAKICAgICAgICAgZHN0ID0gZS0+YnVmLmRhdGE7CiAgICAgICAgIHNyYyA9IGUtPmJ1Zi5kYXRhOwogCi0gICAgICAgIG5neF91bmVzY2FwZV91cmkoJmRzdCwgJnNyYywgZS0+cG9zIC0gZS0+YnVmLmRhdGEpOworICAgICAgICBuZ3hfdW5lc2NhcGVfdXJpKCZkc3QsICZzcmMsIGUtPnBvcyAtIGUtPmJ1Zi5kYXRhLCBOR1hfVU5FU0NBUEVfVVJJKTsKIAogICAgICAgICBpZiAoc3JjIDwgZS0+cG9zKSB7CiAgICAgICAgICAgICBkc3QgPSBuZ3hfY29weShkc3QsIHNyYywgZS0+cG9zIC0gc3JjKTsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9mcmVlYnNkX2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfY29uZmlnLmgKaW5kZXggNzNkZWI5Yy4uYzE4NzE5MSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfY29uZmlnLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfY29uZmlnLmgKQEAgLTk3LDkgKzk3LDExIEBACiAjZW5kaWYKIAogCi1leHRlcm4gY2hhciAqbWFsbG9jX29wdGlvbnM7Ci0KICNkZWZpbmUgTkdYX0hBVkVfT1NfU1BFQ0lGSUNfSU5JVCAgICAxCiAKIAorZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworZXh0ZXJuIGNoYXIgKm1hbGxvY19vcHRpb25zOworCisKICNlbmRpZiAvKiBfTkdYX0ZSRUVCU0RfQ09ORklHX0hfSU5DTFVERURfICovCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfbGludXhfY29uZmlnLmggYi9zcmMvb3MvdW5peC9uZ3hfbGludXhfY29uZmlnLmgKaW5kZXggYWM3ZDdhOC4uNzRiYmZiMSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2NvbmZpZy5oCisrKyBiL3NyYy9vcy91bml4L25neF9saW51eF9jb25maWcuaApAQCAtMTAxLDQgKzEwMSw3IEBACiAjZGVmaW5lIE5HWF9IQVZFX09TX1NQRUNJRklDX0lOSVQgICAgMQogCiAKK2V4dGVybiBjaGFyICoqZW52aXJvbjsKKworCiAjZW5kaWYgLyogX05HWF9MSU5VWF9DT05GSUdfSF9JTkNMVURFRF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9wb3NpeF9jb25maWcuaCBiL3NyYy9vcy91bml4L25neF9wb3NpeF9jb25maWcuaAppbmRleCBkYzQzNDFhLi45ODRkYjk2IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfcG9zaXhfY29uZmlnLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2NvbmZpZy5oCkBAIC0xMDIsNCArMTAyLDcgQEAKICNlbmRpZgogCiAKK2V4dGVybiBjaGFyICoqZW52aXJvbjsKKworCiAjZW5kaWYgLyogX05HWF9QT1NJWF9DT05GSUdfSF9JTkNMVURFRF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9zb2xhcmlzX2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKaW5kZXggYTY2OGI5NS4uYmExZDM1MSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKQEAgLTg4LDQgKzg4LDcgQEAKICNkZWZpbmUgTkdYX0hBVkVfT1NfU1BFQ0lGSUNfSU5JVCAgICAxCiAKIAorZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworCisKICNlbmRpZiAvKiBfTkdYX1NPTEFSSVNfQ09ORklHX0hfSU5DTFVERURfICovCg==