From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,WEIRD_QUOTING autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 582 invoked from network); 15 May 2020 16:37:08 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 15 May 2020 16:37:08 -0000 Content-Type: multipart/mixed; boundary="===============3999447755081128265==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_mpick_craziness?= To: ml@inbox.vuxu.org From: Duncaen Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 15 May 2020 18:37:06 +0200 List-Id: Message-ID: <20200515163706.Lf062eVhWu-ps-o2s5GaXFiV95hTovTIyh1gE37H_ik@z> GitHub notification mails are now in MIME to allow UTF8. --===============3999447755081128265== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgRHVuY2FlbiBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgbWJsYXplIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9EdW5jYWVuL21i bGF6ZSBtcGljay1jcmF6aW5lc3MKaHR0cHM6Ly9naXRodWIuY29tL2xlYWhuZXVraXJjaGVuL21i bGF6ZS9wdWxsLzE1MAoKbXBpY2sgY3JhemluZXNzCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6 Ly9naXRodWIuY29tL2xlYWhuZXVraXJjaGVuL21ibGF6ZS9wdWxsLzE1MC5wYXRjaCBpcyBhdHRh Y2hlZA== --===============3999447755081128265== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-mpick-craziness-150.patch" RnJvbSBkNjJlZTMzYWVlZTQ3ZjczODhmMmM4NjM2Yzc0MTRlZjQxNDMwNmZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxtYWlsQGR1bmNhbm8uZGU+CkRhdGU6IFN1biwg MjcgSmFuIDIwMTkgMjI6MTg6MjIgKzAxMDAKU3ViamVjdDogW1BBVENIIDAxLzIwXSBtZGVsaXZl ci4xOiBhZGQgbXJlZmlsZSB0byBTRUUgQUxTTwoKLS0tCiBtYW4vbWRlbGl2ZXIuMSB8IDEgKwog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvbWFuL21kZWxpdmVy LjEgYi9tYW4vbWRlbGl2ZXIuMQppbmRleCAwN2JjNDc2Li4zNmE4OTBmIDEwMDY0NAotLS0gYS9t YW4vbWRlbGl2ZXIuMQorKysgYi9tYW4vbWRlbGl2ZXIuMQpAQCAtNjksNiArNjksNyBAQCBPdmVy cmlkZSB0aGUgZmxhZ3Mgb2YgdGhlIG5ldyBtZXNzYWdlIGZpbGUgdG8gYmUKIC5FeCAtc3RkCiAu U2ggU0VFIEFMU08KIC5YciBtZXhwb3J0IDEgLAorLlhyIG1yZWZpbGUgMSAsCiAuWHIgbWFpbGRp ciA1ICwKIC5YciBtYm94IDUKIC5QcAoKRnJvbSA2OTRiNzk2NWMwNDczNzMyNzA1MjI2NWQ4ZTZl ZmYxNmI5ZGM4ODQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxtYWls QGR1bmNhbm8uZGU+CkRhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTA6NTM6MDUgKzAxMDAKU3ViamVj dDogW1BBVENIIDAyLzIwXSBtcGljazogYWRkIHBpcGVzIGFuZCBmaWxlIHJlZGlyZWN0aW9uCgot LS0KIG1hbi9tcGljay4xIHwgICAzICsrCiBtcGljay5jICAgICB8IDExNCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQs IDExMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21hbi9tcGlj ay4xIGIvbWFuL21waWNrLjEKaW5kZXggODliZjYxOS4uMmFkOTQyZSAxMDA2NDQKLS0tIGEvbWFu L21waWNrLjEKKysrIGIvbWFuL21waWNrLjEKQEAgLTk2LDYgKzk2LDkgQEAgdGVzdHMgYXJlIGdp dmVuIGJ5IHRoZSBmb2xsb3dpbmcgRUJORjoKICAgICAgICAgICAgICB8IDxleHByPiAmJiA8ZXhw cj4gIC0tIGNvbmp1bmN0aW9uCiAgICAgICAgICAgICAgfCAhIDxleHByPiAgICAgICAgICAtLSBu ZWdhdGlvbgogICAgICAgICAgICAgIHwgKCA8ZXhwcj4gKQorICAgICAgICAgICAgIHwgPGV4cHI+ ICJ8IiAgPHN0cj4gLS0gcGlwZSBjdXJyZW50IG1haWwgdG8gY29tbWFuZAorICAgICAgICAgICAg IHwgPGV4cHI+ICI+PiIgPHN0cj4gLS0gYXBwZW5kIGN1cnJlbnQgbWFpbCB0byBmaWxlCisgICAg ICAgICAgICAgfCA8ZXhwcj4gIj4iICA8c3RyPiAtLSB3cml0ZSBjdXJyZW50IG1haWwgdG8gZmls ZQogICAgICAgICAgICAgIHwgPGZsYWdwcm9wPgogICAgICAgICAgICAgIHwgPHRpbWVwcm9wPiA8 bnVtb3A+IDxkdXI+CiAgICAgICAgICAgICAgfCA8bnVtcHJvcD4gPG51bW9wPiA8bnVtPgpkaWZm IC0tZ2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5kZXggMTcwNDA0NC4uMDQyNzUxOSAxMDA2NDQK LS0tIGEvbXBpY2suYworKysgYi9tcGljay5jCkBAIC02MSw2ICs2MSw4IEBAIGVudW0gb3Agewog CUVYUFJfUkVHRVhJLAogCUVYUFJfUFJVTkUsCiAJRVhQUl9QUklOVCwKKwlFWFBSX1JFRElSX0ZJ TEUsCisJRVhQUl9SRURJUl9QSVBFLAogCUVYUFJfVFlQRSwKIAlFWFBSX0FMTFNFVCwKIAlFWFBS X0FOWVNFVCwKQEAgLTE0Myw2ICsxNDUsMTQgQEAgc3RydWN0IHRocmVhZCB7CiAJc3RydWN0IG1s aXN0ICpjdXI7CiB9OwogCitzdHJ1Y3QgZmlsZSB7CisJZW51bSBvcCBvcDsKKwljb25zdCBjaGFy ICpuYW1lOworCWNvbnN0IGNoYXIgKm1vZGU7CisJRklMRSAqZnA7CisJc3RydWN0IGZpbGUgKm5l eHQ7Cit9OworCiBzdGF0aWMgc3RydWN0IHRocmVhZCAqdGhyOwogCiBzdGF0aWMgY2hhciAqYXJn djA7CkBAIC0xNjAsNiArMTcwLDggQEAgc3RhdGljIGNoYXIgKnBvczsKIHN0YXRpYyB0aW1lX3Qg bm93Owogc3RhdGljIGludCBwcnVuZTsKIAorc3RhdGljIHN0cnVjdCBmaWxlICpmaWxlcywgKmZp bGVxID0gTlVMTDsKKwogc3RhdGljIHZvaWQKIHdzKCkKIHsKQEAgLTE3OSw2ICsxOTEsMTIgQEAg dG9rZW4oY2hhciAqdG9rZW4pCiAJfQogfQogCitzdGF0aWMgaW50CitwZWVrKGNoYXIgKnRva2Vu KQoreworCXJldHVybiBzdHJuY21wKHBvcywgdG9rZW4sIHN0cmxlbih0b2tlbikpID09IDA7Cit9 CisKIG5vcmV0dXJuIHN0YXRpYyB2b2lkCiBwYXJzZV9lcnJvcihjaGFyICptc2csIC4uLikKIHsK QEAgLTY0MiwxNCArNjYwLDQzIEBAIHBhcnNlX3RpbWVjbXAoKQogCXJldHVybiAwOwogfQogCitz dGF0aWMgc3RydWN0IGV4cHIgKgorcGFyc2VfcmVkaXIoc3RydWN0IGV4cHIgKmUpCit7CisJY2hh ciAqczsKKwljb25zdCBjaGFyICptOworCisJaWYgKHBlZWsoInx8IikpCisJCXJldHVybiBlOwor CisJaWYgKHRva2VuKCJ8IikpIHsKKwkJaWYgKCFwYXJzZV9zdHJpbmcoJnMpKQorCQkJcGFyc2Vf ZXJyb3IoImV4cGVjdGVkIGNvbW1hbmQiKTsKKwkJc3RydWN0IGV4cHIgKnIgPSBta2V4cHIoRVhQ Ul9SRURJUl9QSVBFKTsKKwkJci0+YS5zdHJpbmcgPSBzOworCQlyLT5iLnN0cmluZyA9ICJ3IjsK KwkJcmV0dXJuIGNoYWluKGUsIEVYUFJfQU5ELCByKTsKKwl9CisJZWxzZSBpZiAodG9rZW4oIj4+ IikpIG0gPSAiYSsiOworCWVsc2UgaWYgKHRva2VuKCI+IikpIG0gPSAidysiOworCWVsc2UgcmV0 dXJuIGU7CisKKwlpZiAoIXBhcnNlX3N0cmluZygmcykpCisJCXBhcnNlX2Vycm9yKCJleHBlY3Rl ZCBmaWxlIG5hbWUiKTsKKwlzdHJ1Y3QgZXhwciAqciA9IG1rZXhwcihFWFBSX1JFRElSX0ZJTEUp OworCXItPmEuc3RyaW5nID0gczsKKwlyLT5iLnN0cmluZyA9IG07CisJcmV0dXJuIGNoYWluKGUs IEVYUFJfQU5ELCByKTsKK30KKwogc3RhdGljIHN0cnVjdCBleHByICoKIHBhcnNlX2FuZCgpCiB7 Ci0Jc3RydWN0IGV4cHIgKmUxID0gcGFyc2VfdGltZWNtcCgpOworCXN0cnVjdCBleHByICplMSA9 IHBhcnNlX3JlZGlyKHBhcnNlX3RpbWVjbXAoKSk7CiAJc3RydWN0IGV4cHIgKnIgPSBlMTsKIAog CXdoaWxlICh0b2tlbigiJiYiKSkgewotCQlzdHJ1Y3QgZXhwciAqZTIgPSBwYXJzZV90aW1lY21w KCk7CisJCXN0cnVjdCBleHByICplMiA9IHBhcnNlX3JlZGlyKHBhcnNlX3RpbWVjbXAoKSk7CiAJ CXIgPSBjaGFpbihyLCBFWFBSX0FORCwgZTIpOwogCX0KIApAQCAtODQzLDkgKzg5MCw0OCBAQCBt c2dfYWRkcihzdHJ1Y3QgbWFpbGluZm8gKm0sIGNoYXIgKmgsIGludCB0KQogCX0KIH0KIAorRklM RSAqCityZWRpcihzdHJ1Y3QgZXhwciAqZSkKK3sKKwlzdHJ1Y3QgZmlsZSAqZmlsZTsKKwlGSUxF ICpmcDsKKworCWZvciAoZmlsZSA9IGZpbGVzOyBmaWxlOyBmaWxlID0gZmlsZS0+bmV4dCkgewor CQlpZiAoZS0+b3AgPT0gZmlsZS0+b3AgJiYKKwkJICAgIHN0cmNtcChlLT5hLnN0cmluZywgZmls ZS0+bmFtZSkgPT0gMCAmJgorCQkJc3RyY21wKGUtPmIuc3RyaW5nLCBmaWxlLT5tb2RlKSA9PSAw KQorCQkJcmV0dXJuIGZpbGUtPmZwOworCX0KKworCWZmbHVzaChzdGRvdXQpOworCWZwID0gTlVM TDsKKwlzd2l0Y2ggKGUtPm9wKSB7CisJY2FzZSBFWFBSX1JFRElSX0ZJTEU6IGZwID0gZm9wZW4o ZS0+YS5zdHJpbmcsIGUtPmIuc3RyaW5nKTsgYnJlYWs7CisJY2FzZSBFWFBSX1JFRElSX1BJUEU6 IGZwID0gcG9wZW4oZS0+YS5zdHJpbmcsIGUtPmIuc3RyaW5nKTsgYnJlYWs7CisJfQorCWlmICgh ZnApIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogJXM6ICVzXG4iLCBhcmd2MCwgZS0+YS5zdHJp bmcsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoMyk7CisJfQorCWZpbGUgPSBjYWxsb2MoMSwg c2l6ZW9mIChzdHJ1Y3QgZmlsZSkpOworCWlmICghZmlsZSkgeworCQlwZXJyb3IoImNhbGxvYyIp OworCQlleGl0KDIpOworCX0KKwlmaWxlLT5vcCA9IGUtPm9wOworCWZpbGUtPm5hbWUgPSBlLT5h LnN0cmluZzsKKwlmaWxlLT5tb2RlID0gZS0+Yi5zdHJpbmc7CisJZmlsZS0+ZnAgPSBmcDsKKwlp ZiAoIWZpbGVzKSBmaWxlcyA9IGZpbGU7CisJaWYgKGZpbGVxKSBmaWxlcS0+bmV4dCA9IGZpbGU7 CisJZmlsZXEgPSBmaWxlOworCXJldHVybiBmcDsKK30KKwogaW50CiBldmFsKHN0cnVjdCBleHBy ICplLCBzdHJ1Y3QgbWFpbGluZm8gKm0pCiB7CisJRklMRSAqZnA7CiAJc3dpdGNoIChlLT5vcCkg ewogCWNhc2UgRVhQUl9PUjoKIAkJcmV0dXJuIGV2YWwoZS0+YS5leHByLCBtKSB8fCBldmFsKGUt PmIuZXhwciwgbSk7CkBAIC04NTksNiArOTQ1LDEzIEBAIGV2YWwoc3RydWN0IGV4cHIgKmUsIHN0 cnVjdCBtYWlsaW5mbyAqbSkKIAkJcmV0dXJuIDE7CiAJY2FzZSBFWFBSX1BSSU5UOgogCQlyZXR1 cm4gMTsKKwljYXNlIEVYUFJfUkVESVJfRklMRToKKwljYXNlIEVYUFJfUkVESVJfUElQRToKKwkJ ZnAgPSByZWRpcihlKTsKKwkJZnB1dHMobS0+ZnBhdGgsIGZwKTsKKwkJcHV0YygnXG4nLCBmcCk7 CisJCWZmbHVzaChmcCk7CisJCXJldHVybiAxOwogCWNhc2UgRVhQUl9MVDoKIAljYXNlIEVYUFJf TEU6CiAJY2FzZSBFWFBSX0VROgpAQCAtMTA0MCwxMCArMTEzMywxMCBAQCBkb190aHIoKQogCQlp ZiAoKChUZmxhZyAmJiB0aHItPm1hdGNoZWQpIHx8IG1sLT5tLT5tYXRjaGVkKSAmJiAhbWwtPm0t PnBydW5lKSB7CiAJCQlpbnQgaTsKIAkJCWZvciAoaSA9IDA7IGkgPCBtbC0+bS0+ZGVwdGg7IGkr KykKLQkJCQlwdXRjaGFyKCcgJyk7CisJCQkJcHV0YygnICcsIHN0ZG91dCk7CiAKIAkJCWZwdXRz KG1sLT5tLT5mcGF0aCwgc3Rkb3V0KTsKLQkJCXB1dGNoYXIoJ1xuJyk7CisJCQlwdXRjKCdcbics IHN0ZG91dCk7CiAKIAkJCWtlcHQrKzsKIAkJfQpAQCAtMTEyNiw3ICsxMjE5LDggQEAgb25lbGlu ZShjaGFyICpmaWxlKQogCQlnb3RvIG91dDsKIAogCWZwdXRzKGZpbGUsIHN0ZG91dCk7Ci0JcHV0 Y2hhcignXG4nKTsKKwlwdXRjKCdcbicsIHN0ZG91dCk7CisJZmZsdXNoKHN0ZG91dCk7CiAJa2Vw dCsrOwogCiBvdXQ6CkBAIC0xMTc0LDUgKzEyNjgsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCiAJaWYgKHZmbGFnKQogCQlmcHJpbnRmKHN0ZGVyciwgIiVsZCBtYWlscyB0ZXN0 ZWQsICVsZCBwaWNrZWQuXG4iLCBpLCBrZXB0KTsKKworCWZvciAoOyBmaWxlczsgZmlsZXMgPSBm aWxlcSkgeworCQlmaWxlcSA9IGZpbGVzLT5uZXh0OworCQlpZiAoZmlsZXMtPm9wID09IEVYUFJf UkVESVJfUElQRSkKKwkJCXBjbG9zZShmaWxlcy0+ZnApOworCQllbHNlCisJCQlmY2xvc2UoZmls ZXMtPmZwKTsKKwkJZnJlZShmaWxlcyk7CisJfQorCiAJcmV0dXJuIDA7CiB9CgpGcm9tIGMxZmVl NzQ5NjZjOGVjNzA4NzEzNjRmMjA1ZmQzOTYwNGU2OTZiYzggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAx OSAxMDo1ODoyNyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMjBdIG1waWNrOiBhZGQgc2tpcCBl eHByZXNzaW9uCgotLS0KIG1hbi9tcGljay4xIHwgMSArCiBtcGljay5jICAgICB8IDUgKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbWFuL21waWNr LjEgYi9tYW4vbXBpY2suMQppbmRleCAyYWQ5NDJlLi42NGE2M2QxIDEwMDY0NAotLS0gYS9tYW4v bXBpY2suMQorKysgYi9tYW4vbXBpY2suMQpAQCAtMTA1LDYgKzEwNSw3IEBAIHRlc3RzIGFyZSBn aXZlbiBieSB0aGUgZm9sbG93aW5nIEVCTkY6CiAgICAgICAgICAgICAgfCA8c3RycHJvcD4gPHN0 cm9wPiA8c3RyPgogICAgICAgICAgICAgIHwgcHJ1bmUgICAgICAgICAgICAgLS0gZG8gbm90IG1h dGNoIGZ1cnRoZXIgbWVzc2FnZXMgaW4gdGhyZWFkCiAgICAgICAgICAgICAgfCBwcmludCAgICAg ICAgICAgICAtLSBhbHdheXMgdHJ1ZSB2YWx1ZQorICAgICAgICAgICAgIHwgc2tpcCAgICAgICAg ICAgICAgLS0gYWx3YXlzIGZhbHNlIHZhbHVlCiAKIDxmbGFncHJvcD4gOjo9IGNoaWxkIHwgZHJh ZnQgfCBmbGFnZ2VkIHwgaW5mbyB8IG5ldyB8IHBhcmVudCB8IHBhc3NlZAogICAgICAgICAgICAg IHwgcmVwbGllZCAgfCBzZWVuIHwgc2VsZWN0ZWQgfCB0cmFzaGVkCmRpZmYgLS1naXQgYS9tcGlj ay5jIGIvbXBpY2suYwppbmRleCAwNDI3NTE5Li5jNGE0MjA3IDEwMDY0NAotLS0gYS9tcGljay5j CisrKyBiL21waWNrLmMKQEAgLTI3NCw2ICsyNzQsMTEgQEAgcGFyc2VfaW5uZXIoKQogCX0gZWxz ZSBpZiAodG9rZW4oInByaW50IikpIHsKIAkJc3RydWN0IGV4cHIgKmUgPSBta2V4cHIoRVhQUl9Q UklOVCk7CiAJCXJldHVybiBlOworCX0gZWxzZSBpZiAodG9rZW4oInNraXAiKSkgeworCQlzdHJ1 Y3QgZXhwciAqZSA9IG1rZXhwcihFWFBSX1BSSU5UKTsKKwkJc3RydWN0IGV4cHIgKm5vdCA9IG1r ZXhwcihFWFBSX05PVCk7CisJCW5vdC0+YS5leHByID0gZTsKKwkJcmV0dXJuIG5vdDsKIAl9IGVs c2UgaWYgKHRva2VuKCIhIikpIHsKIAkJc3RydWN0IGV4cHIgKmUgPSBwYXJzZV9jbXAoKTsKIAkJ c3RydWN0IGV4cHIgKm5vdCA9IG1rZXhwcihFWFBSX05PVCk7CgpGcm9tIDhlMjlkZDIyOTE3YjRk YmRlZmYyZGE5ZjQ4ZThmNzA1NjUxZDI3OGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxOSAxMToxMjox OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMjBdIG1waWNrOiBhZGQgdGVybmFyeSAoY29uZGl0 aW9uYWwpIG9wZXJhdG9yCgotLS0KIG1hbi9tcGljay4xIHwgIDMgKystCiBtcGljay5jICAgICB8 IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5n ZWQsIDM1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbWFuL21w aWNrLjEgYi9tYW4vbXBpY2suMQppbmRleCA2NGE2M2QxLi43NDRmYTI0IDEwMDY0NAotLS0gYS9t YW4vbXBpY2suMQorKysgYi9tYW4vbXBpY2suMQpAQCAtOTIsNyArOTIsOCBAQCBVbnJlYWQgbWVz c2FnZXMuCiAuTm0KIHRlc3RzIGFyZSBnaXZlbiBieSB0aGUgZm9sbG93aW5nIEVCTkY6CiAuQmQg LWxpdGVyYWwKLTxleHByPiAgICAgOjo9IDxleHByPiB8fCA8ZXhwcj4gIC0tIGRpc2p1bmN0aW9u Cis8ZXhwcj4gICAgIDo6PSA8ZXhwcj4gPyA8ZXhwcj4gOiA8ZXhwcj4gIC0tIHRlcm5hcnkgb3Bl cmF0b3IKKyAgICAgICAgICAgICB8IDxleHByPiB8fCA8ZXhwcj4gIC0tIGRpc2p1bmN0aW9uCiAg ICAgICAgICAgICAgfCA8ZXhwcj4gJiYgPGV4cHI+ICAtLSBjb25qdW5jdGlvbgogICAgICAgICAg ICAgIHwgISA8ZXhwcj4gICAgICAgICAgLS0gbmVnYXRpb24KICAgICAgICAgICAgICB8ICggPGV4 cHI+ICkKZGlmZiAtLWdpdCBhL21waWNrLmMgYi9tcGljay5jCmluZGV4IGM0YTQyMDcuLmY5ZGE3 OWQgMTAwNjQ0Ci0tLSBhL21waWNrLmMKKysrIGIvbXBpY2suYwpAQCAtNDYsNiArNDYsNyBAQAog ZW51bSBvcCB7CiAJRVhQUl9PUiA9IDEsCiAJRVhQUl9BTkQsCisJRVhQUl9DT05ELAogCUVYUFJf Tk9ULAogCUVYUFJfTFQsCiAJRVhQUl9MRSwKQEAgLTExNSw3ICsxMTYsNyBAQCBzdHJ1Y3QgZXhw ciB7CiAJCWludDY0X3QgbnVtOwogCQlyZWdleF90ICpyZWdleDsKIAkJZW51bSB2YXIgdmFyOwot CX0gYSwgYjsKKwl9IGEsIGIsIGM7CiAJaW50IGV4dHJhOwogfTsKIApAQCAtMjYzLDcgKzI2NCw3 IEBAIHBhcnNlX29wKCkKIH0KIAogc3RhdGljIHN0cnVjdCBleHByICpwYXJzZV9jbXAoKTsKLXN0 YXRpYyBzdHJ1Y3QgZXhwciAqcGFyc2Vfb3IoKTsKK3N0YXRpYyBzdHJ1Y3QgZXhwciAqcGFyc2Vf Y29uZCgpOwogCiBzdGF0aWMgc3RydWN0IGV4cHIgKgogcGFyc2VfaW5uZXIoKQpAQCAtMjg1LDcg KzI4Niw3IEBAIHBhcnNlX2lubmVyKCkKIAkJbm90LT5hLmV4cHIgPSBlOwogCQlyZXR1cm4gbm90 OwogCX0gZWxzZSBpZiAodG9rZW4oIigiKSkgewotCQlzdHJ1Y3QgZXhwciAqZSA9IHBhcnNlX29y KCk7CisJCXN0cnVjdCBleHByICplID0gcGFyc2VfY29uZCgpOwogCQlpZiAodG9rZW4oIikiKSkK IAkJCXJldHVybiBlOwogCQlwYXJzZV9lcnJvcigibWlzc2luZyApIGF0ICclLjE1cyciLCBwb3Mp OwpAQCAtNzIzLDEwICs3MjQsMzMgQEAgcGFyc2Vfb3IoKQogfQogCiBzdGF0aWMgc3RydWN0IGV4 cHIgKgotcGFyc2VfZXhwcihjaGFyICpzKQorcGFyc2VfY29uZCgpCit7CisJc3RydWN0IGV4cHIg KmUxID0gcGFyc2Vfb3IoKTsKKworCWlmICh0b2tlbigiPyIpKSB7CisJCXN0cnVjdCBleHByICpl MiA9IHBhcnNlX29yKCk7CisJCWlmICh0b2tlbigiOiIpKSB7CisJCQlzdHJ1Y3QgZXhwciAqZTMg PSBwYXJzZV9jb25kKCk7CisJCQlzdHJ1Y3QgZXhwciAqciA9IG1rZXhwcihFWFBSX0NPTkQpOwor CQkJci0+YS5leHByID0gZTE7CisJCQlyLT5iLmV4cHIgPSBlMjsKKwkJCXItPmMuZXhwciA9IGUz OworCisJCQlyZXR1cm4gcjsKKwkJfSBlbHNlIHsKKwkJCXBhcnNlX2Vycm9yKCJleHBlY3RlZCA6 IGF0ICclLjE1cyciLCBwb3MpOworCQl9CisJfQorCisJcmV0dXJuIGUxOworfQorCitzdGF0aWMg c3RydWN0IGV4cHIgKgorcGFyc2VfZXhwcigpCiB7CiAJcG9zID0gczsKLQlzdHJ1Y3QgZXhwciAq ZSA9IHBhcnNlX29yKCk7CisJc3RydWN0IGV4cHIgKmUgPSBwYXJzZV9jb25kKCk7CiAJaWYgKCpw b3MpCiAJCXBhcnNlX2Vycm9yKCJ0cmFpbGluZyBnYXJiYWdlIGF0ICclLjE1cyciLCBwb3MpOwog CXJldHVybiBlOwpAQCAtOTQyLDYgKzk2NiwxMCBAQCBldmFsKHN0cnVjdCBleHByICplLCBzdHJ1 Y3QgbWFpbGluZm8gKm0pCiAJCXJldHVybiBldmFsKGUtPmEuZXhwciwgbSkgfHwgZXZhbChlLT5i LmV4cHIsIG0pOwogCWNhc2UgRVhQUl9BTkQ6CiAJCXJldHVybiBldmFsKGUtPmEuZXhwciwgbSkg JiYgZXZhbChlLT5iLmV4cHIsIG0pOworCWNhc2UgRVhQUl9DT05EOgorCQlyZXR1cm4gZXZhbChl LT5hLmV4cHIsIG0pCisJCSAgICA/IGV2YWwoZS0+Yi5leHByLCBtKQorCQkJOiBldmFsKGUtPmMu ZXhwciwgbSk7CiAJY2FzZSBFWFBSX05PVDoKIAkJcmV0dXJuICFldmFsKGUtPmEuZXhwciwgbSk7 CiAJCXJldHVybiAxOwoKRnJvbSA4NmYyNGVkMDk0YTgxZjk3NjNiMGVhMDQ4ZDM2NTE3NGE3OWEw ZDkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxtYWlsQGR1bmNhbm8u ZGU+CkRhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTQ6Mzg6MDUgKzAxMDAKU3ViamVjdDogW1BBVENI IDA1LzIwXSBtcGljazogYWRkIGZyZWVleHByCgotLS0KIG1waWNrLmMgfCA0NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNDYg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL21waWNrLmMgYi9tcGljay5jCmluZGV4IGY5ZGE3 OWQuLmUxZjk0NzggMTAwNjQ0Ci0tLSBhL21waWNrLmMKKysrIGIvbXBpY2suYwpAQCAtMjIwLDYg KzIyMCw1MCBAQCBta2V4cHIoZW51bSBvcCBvcCkKIAlyZXR1cm4gZTsKIH0KIAorc3RhdGljIHZv aWQKK2ZyZWVleHByKHN0cnVjdCBleHByICplKQoreworCWlmICghZSkgcmV0dXJuOworCXN3aXRj aCAoZS0+b3ApIHsKKwljYXNlIEVYUFJfT1I6CisJY2FzZSBFWFBSX0FORDoKKwkJZnJlZWV4cHIo ZS0+YS5leHByKTsKKwkJZnJlZWV4cHIoZS0+Yi5leHByKTsKKwkJYnJlYWs7CisJY2FzZSBFWFBS X0NPTkQ6CisJCWZyZWVleHByKGUtPmEuZXhwcik7CisJCWZyZWVleHByKGUtPmIuZXhwcik7CisJ CWZyZWVleHByKGUtPmMuZXhwcik7CisJCWJyZWFrOworCWNhc2UgRVhQUl9OT1Q6CisJCWZyZWVl eHByKGUtPmEuZXhwcik7CisJCWJyZWFrOworCWNhc2UgRVhQUl9SRURJUl9GSUxFOgorCWNhc2Ug RVhQUl9SRURJUl9QSVBFOgorCQlmcmVlKGUtPmEuc3RyaW5nKTsKKwkJZnJlZShlLT5iLnN0cmlu Zyk7CisJCWJyZWFrOworCWNhc2UgRVhQUl9TVFJFUToKKwljYXNlIEVYUFJfU1RSRVFJOgorCWNh c2UgRVhQUl9HTE9COgorCWNhc2UgRVhQUl9HTE9CSToKKwljYXNlIEVYUFJfUkVHRVg6CisJY2Fz ZSBFWFBSX1JFR0VYSToKKwkJc3dpdGNoIChlLT5hLnByb3ApIHsKKwkJY2FzZSBQUk9QX1BBVEg6 CisJCWNhc2UgUFJPUF9GUk9NOgorCQljYXNlIFBST1BfVE86CisJCQlicmVhazsKKwkJZGVmYXVs dDogZnJlZShlLT5hLnN0cmluZyk7CisJCX0KKwkJaWYgKGUtPm9wID09IEVYUFJfUkVHRVggfHwg ZS0+b3AgPT0gRVhQUl9SRUdFWEkpCisJCQlyZWdmcmVlKGUtPmIucmVnZXgpOworCQllbHNlCisJ CQlmcmVlKGUtPmIuc3RyaW5nKTsKKwl9CisJZnJlZShlKTsKK30KKwogc3RhdGljIHN0cnVjdCBl eHByICoKIGNoYWluKHN0cnVjdCBleHByICplMSwgZW51bSBvcCBvcCwgc3RydWN0IGV4cHIgKmUy KQogewpAQCAtMTI5OSw2ICsxMzQzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CWlmIChUZmxhZyAmJiB0aHIpCiAJCWRvX3RocigpOwogCisJZnJlZWV4cHIoZXhwcik7CisKIAlp ZiAodmZsYWcpCiAJCWZwcmludGYoc3RkZXJyLCAiJWxkIG1haWxzIHRlc3RlZCwgJWxkIHBpY2tl ZC5cbiIsIGksIGtlcHQpOwogCgpGcm9tIGNlNWJhYjNmNWZiMGMxN2IxMWRlNTc5ZWNmN2M5MDU0 MWYyNjViMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IER1bmNhZW4gPG1haWxAZHVu Y2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxOSAxNDo0NTo0MCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMDYvMjBdIG1waWNrOiBhZGQgeGNhbGxvYyBhbmQgeHN0cmR1cAoKLS0tCiBtcGljay5j IHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5kZXggZTFmOTQ3OC4uNzg1MDlkNCAx MDA2NDQKLS0tIGEvbXBpY2suYworKysgYi9tcGljay5jCkBAIC0xNzMsNiArMTczLDI2IEBAIHN0 YXRpYyBpbnQgcHJ1bmU7CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqZmlsZXMsICpmaWxlcSA9IE5V TEw7CiAKK3N0YXRpYyB2b2lkICoKK3hjYWxsb2Moc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkK K3sKKwl2b2lkICpyOworCWlmICgociA9IGNhbGxvYyhubWVtYiwgc2l6ZSkpKQorCQlyZXR1cm4g cjsKKwlwZXJyb3IoImNhbGxvYyIpOworCWV4aXQoMik7Cit9CisKK3N0YXRpYyBjaGFyICoKK3hz dHJkdXAoY29uc3QgY2hhciAqcykKK3sKKwljaGFyICpyOworCWlmICgociA9IHN0cmR1cChzKSkp CisJCXJldHVybiByOworCXBlcnJvcigic3RyZHVwIik7CisJZXhpdCgyKTsKK30KKwogc3RhdGlj IHZvaWQKIHdzKCkKIHsKQEAgLTQ2MCwyOCArNDgwLDI3IEBAIHBhcnNlX3N0cmNtcCgpCiAJCWNo YXIgKmRpc3AsICphZGRyOwogCQlibGF6ZTgyMl9hZGRyKHMsICZkaXNwLCAmYWRkcik7CiAJCWlm ICghZGlzcCAmJiAhYWRkcikKLQkJCXBhcnNlX2Vycm9yKCJpbnZhbGlkIGFkZHJlc3MgYXQgJyUu MTVzJyIsIHBvcyk7Ci0JCXMgPSBzdHJkdXAoKGRpc3ApID8gZGlzcCA6IGFkZHIpOworCQkJcGFy c2VfZXJyb3JfYXQoTlVMTCwgImludmFsaWQgYWRkcmVzcyIpOworCQlmcmVlKHMpOworCQlzID0g eHN0cmR1cCgoZGlzcCkgPyBkaXNwIDogYWRkcik7CiAJCWUtPmV4dHJhID0gKGRpc3ApID8gMCA6 IDE7CiAJfQogCi0JaWYgKG9wID09IEVYUFJfUkVHRVgpIHsKLQkJZS0+Yi5yZWdleCA9IG1hbGxv YyhzaXplb2YgKHJlZ2V4X3QpKTsKLQkJciA9IHJlZ2NvbXAoZS0+Yi5yZWdleCwgcywgUkVHX0VY VEVOREVEIHwgUkVHX05PU1VCKTsKLQl9IGVsc2UgaWYgKG9wID09IEVYUFJfUkVHRVhJKSB7CisJ aWYgKG9wID09IEVYUFJfUkVHRVggfHwgb3AgPT0gRVhQUl9SRUdFWEkpIHsKIAkJZS0+Yi5yZWdl eCA9IG1hbGxvYyhzaXplb2YgKHJlZ2V4X3QpKTsKLQkJciA9IHJlZ2NvbXAoZS0+Yi5yZWdleCwg cywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwgUkVHX0lDQVNFKTsKKwkJciA9IHJlZ2NvbXAo ZS0+Yi5yZWdleCwgcywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwKKwkJICAgIChvcCA9PSBF WFBSX1JFR0VYSSA/IFJFR19JQ0FTRSA6IDApKTsKKwkJaWYgKHIgIT0gMCkgeworCQkJY2hhciBt c2dbMjU2XTsKKwkJCXJlZ2Vycm9yKHIsIGUtPmIucmVnZXgsIG1zZywgc2l6ZW9mIG1zZyk7CisJ CQlwYXJzZV9lcnJvcigiaW52YWxpZCByZWdleCAnJXMnOiAlcyIsIHMsIG1zZyk7CisJCQlleGl0 KDIpOworCQl9CisJCWZyZWUocyk7CiAJfSBlbHNlIHsKIAkJZS0+Yi5zdHJpbmcgPSBzOwogCX0K IAotCWlmIChyICE9IDApIHsKLQkJY2hhciBtc2dbMjU2XTsKLQkJcmVnZXJyb3IociwgZS0+Yi5y ZWdleCwgbXNnLCBzaXplb2YgbXNnKTsKLQkJcGFyc2VfZXJyb3IoImludmFsaWQgcmVnZXggJyVz JzogJXMiLCBzLCBtc2cpOwotCQlleGl0KDIpOwotCX0KLQogCWlmIChuZWdhdGUpIHsKIAkJc3Ry dWN0IGV4cHIgKm5vdCA9IG1rZXhwcihFWFBSX05PVCk7CiAJCW5vdC0+YS5leHByID0gZTsKQEAg LTcyNCw3ICs3NDMsNyBAQCBwYXJzZV9yZWRpcihzdHJ1Y3QgZXhwciAqZSkKIAkJCXBhcnNlX2Vy cm9yKCJleHBlY3RlZCBjb21tYW5kIik7CiAJCXN0cnVjdCBleHByICpyID0gbWtleHByKEVYUFJf UkVESVJfUElQRSk7CiAJCXItPmEuc3RyaW5nID0gczsKLQkJci0+Yi5zdHJpbmcgPSAidyI7CisJ CXItPmIuc3RyaW5nID0geHN0cmR1cCgidyIpOwogCQlyZXR1cm4gY2hhaW4oZSwgRVhQUl9BTkQs IHIpOwogCX0KIAllbHNlIGlmICh0b2tlbigiPj4iKSkgbSA9ICJhKyI7CkBAIC03MzUsNyArNzU0 LDcgQEAgcGFyc2VfcmVkaXIoc3RydWN0IGV4cHIgKmUpCiAJCXBhcnNlX2Vycm9yKCJleHBlY3Rl ZCBmaWxlIG5hbWUiKTsKIAlzdHJ1Y3QgZXhwciAqciA9IG1rZXhwcihFWFBSX1JFRElSX0ZJTEUp OwogCXItPmEuc3RyaW5nID0gczsKLQlyLT5iLnN0cmluZyA9IG07CisJci0+Yi5zdHJpbmcgPSB4 c3RyZHVwKG0pOwogCXJldHVybiBjaGFpbihlLCBFWFBSX0FORCwgcik7CiB9CiAKQEAgLTg4Myw3 ICs5MDIsNyBAQCBwYXJzZV9tc2dsaXN0KGNoYXIgKnMpCiAJCQlpZiAoIWRpc3AgJiYgIWFkZHIp CiAJCQkJcGFyc2VfZXJyb3IoImludmFsaWQgYWRkcmVzcyBhdCAnJS4xNXMnIiwgcG9zKTsKIAot CQkJZCA9IHN0cmR1cCgoZGlzcCkgPyBkaXNwIDogYWRkcik7CisJCQlkID0geHN0cmR1cCgoZGlz cCkgPyBkaXNwIDogYWRkcik7CiAKIAkJCWUxID0gbWtleHByKEVYUFJfUkVHRVhJKTsKIAkJCWUx LT5hLnByb3AgPSBQUk9QX0ZST007CkBAIC05ODYsMTEgKzEwMDUsNyBAQCByZWRpcihzdHJ1Y3Qg ZXhwciAqZSkKIAkJZnByaW50ZihzdGRlcnIsICIlczogJXM6ICVzXG4iLCBhcmd2MCwgZS0+YS5z dHJpbmcsIHN0cmVycm9yKGVycm5vKSk7CiAJCWV4aXQoMyk7CiAJfQotCWZpbGUgPSBjYWxsb2Mo MSwgc2l6ZW9mIChzdHJ1Y3QgZmlsZSkpOwotCWlmICghZmlsZSkgewotCQlwZXJyb3IoImNhbGxv YyIpOwotCQlleGl0KDIpOwotCX0KKwlmaWxlID0geGNhbGxvYygxLCBzaXplb2YgKHN0cnVjdCBm aWxlKSk7CiAJZmlsZS0+b3AgPSBlLT5vcDsKIAlmaWxlLT5uYW1lID0gZS0+YS5zdHJpbmc7CiAJ ZmlsZS0+bW9kZSA9IGUtPmIuc3RyaW5nOwpAQCAtMTI0NywxMiArMTI2Miw3IEBAIGNvbGxlY3Qo Y2hhciAqZmlsZSkKIAkJCWRvX3RocigpOwogCiAJCS8qIG5ldyB0aHJlYWQgKi8KLQkJdGhyID0g Y2FsbG9jKDEsIHNpemVvZiAqdGhyKTsKLQkJaWYgKCF0aHIpIHsKLQkJCWZwcmludGYoc3RkZXJy LCAiY2FsbG9jIik7Ci0JCQlleGl0KDIpOwotCQl9Ci0KKwkJdGhyID0geGNhbGxvYygxLCBzaXpl b2YgKnRocik7CiAJCXRoci0+bWF0Y2hlZCA9IDA7CiAJCW1sID0gdGhyLT5jdXIgPSB0aHItPmNo aWxkczsKIAkJdGhyLT5jdXItPm0gPSBtOwoKRnJvbSAwNjdmODFlMzYzZDI0NWFiYjExZDE2NzBi ZWQ1Y2VmMGIwYzZmY2FkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxt YWlsQGR1bmNhbm8uZGU+CkRhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTU6MDA6NTYgKzAxMDAKU3Vi amVjdDogW1BBVENIIDA3LzIwXSBtcGljazogYWRkIHN1cHBvcnQgZm9yIG11bHRpbGluZSBleHBy ZXNzaW9ucyBhbmQKIGNvbW1lbnRzCgotLS0KIG1waWNrLmMgfCA2OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA1NyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tcGljay5j IGIvbXBpY2suYwppbmRleCA3ODUwOWQ0Li5lYjZhZmM5IDEwMDY0NAotLS0gYS9tcGljay5jCisr KyBiL21waWNrLmMKQEAgLTE1NCw2ICsxNTQsMTIgQEAgc3RydWN0IGZpbGUgewogCXN0cnVjdCBm aWxlICpuZXh0OwogfTsKIAorc3RydWN0IHBvcyB7CisJY2hhciAqcG9zOworCWNoYXIgKmxpbmU7 CisJc2l6ZV90IGxpbmVucjsKK307CisKIHN0YXRpYyBzdHJ1Y3QgdGhyZWFkICp0aHI7CiAKIHN0 YXRpYyBjaGFyICphcmd2MDsKQEAgLTE2NywxMCArMTczLDE0IEBAIHN0YXRpYyBsb25nIG51bTsK IHN0YXRpYyBzdHJ1Y3QgZXhwciAqZXhwcjsKIHN0YXRpYyBsb25nIGN1cl9pZHg7CiBzdGF0aWMg Y2hhciAqY3VyOwotc3RhdGljIGNoYXIgKnBvczsKIHN0YXRpYyB0aW1lX3Qgbm93Owogc3RhdGlj IGludCBwcnVuZTsKIAorc3RhdGljIGNoYXIgKnBvczsKK3N0YXRpYyBjb25zdCBjaGFyICpmbmFt ZTsKK3N0YXRpYyBjaGFyICpsaW5lID0gTlVMTDsKK3N0YXRpYyBpbnQgbGluZW5yID0gMDsKKwog c3RhdGljIHN0cnVjdCBmaWxlICpmaWxlcywgKmZpbGVxID0gTlVMTDsKIAogc3RhdGljIHZvaWQg KgpAQCAtMTk2LDggKzIwNiwyMSBAQCB4c3RyZHVwKGNvbnN0IGNoYXIgKnMpCiBzdGF0aWMgdm9p ZAogd3MoKQogewotCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwb3MpKQotCQlwb3Mr KzsKKwlmb3IgKDsgKnBvczspIHsKKwkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnBv cykpIHsKKwkJCWlmICgqcG9zID09ICdcbicpIHsKKwkJCQlsaW5lID0gcG9zKzE7CisJCQkJbGlu ZW5yKys7CisJCQl9CisJCQlwb3MrKzsKKwkJfQorCQlpZiAoKnBvcyAhPSAnIycpCisJCQlicmVh azsKKworCQlwb3MgKz0gc3RyY3Nwbihwb3MsICJcblwwIik7CisJCWlmICgqcG9zICE9ICdcbicp CisJCQlicmVhazsKKwl9CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTIyMywxMiArMjQ2LDM0IEBAIHBh cnNlX2Vycm9yKGNoYXIgKm1zZywgLi4uKQogewogCXZhX2xpc3QgYXA7CiAJdmFfc3RhcnQoYXAs IG1zZyk7Ci0JZnByaW50ZihzdGRlcnIsICIlczogcGFyc2UgZXJyb3I6ICIsIGFyZ3YwKTsKKwlm cHJpbnRmKHN0ZGVyciwgIiVzOiBwYXJzZSBlcnJvcjogJXM6JWQ6JWxkOiAiLCBhcmd2MCwgZm5h bWUsIGxpbmVuciwgcG9zLWxpbmUrMSk7CiAJdmZwcmludGYoc3RkZXJyLCBtc2csIGFwKTsKIAlm cHJpbnRmKHN0ZGVyciwgIlxuIik7CiAJZXhpdCgyKTsKIH0KIAorbm9yZXR1cm4gc3RhdGljIHZv aWQKK3BhcnNlX2Vycm9yX2F0KHN0cnVjdCBwb3MgKnNhdmVwb3MsIGNoYXIgKm1zZywgLi4uKQor eworCWNoYXIgKmU7CisKKwlpZiAoc2F2ZXBvcykgeworCQlwb3MgPSBzYXZlcG9zLT5wb3M7CisJ CWxpbmUgPSBzYXZlcG9zLT5saW5lOworCQlsaW5lbnIgPSBzYXZlcG9zLT5saW5lbnI7CisJfQor CisJdmFfbGlzdCBhcDsKKwl2YV9zdGFydChhcCwgbXNnKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiVz OiBwYXJzZSBlcnJvcjogJXM6JWQ6JWxkOiAiLCBhcmd2MCwgZm5hbWUsIGxpbmVuciwgcG9zLWxp bmUrMSk7CisJdmZwcmludGYoc3RkZXJyLCBtc2csIGFwKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiBh dCAnIik7CisJZm9yIChlID0gcG9zKzE1OyAqcG9zICYmICpwb3MgIT0gJ1xuJyAmJiBwb3MgPD0g ZTsgcG9zKyspCisJCXB1dGMoKnBvcywgc3RkZXJyKTsKKwlmcHJpbnRmKHN0ZGVyciwgIidcbiIp OworCWV4aXQoMik7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZXhwciAqCiBta2V4cHIoZW51bSBvcCBv cCkKIHsKQEAgLTQ2MCwxMSArNTA1LDExIEBAIHBhcnNlX3N0cmNtcCgpCiAJZWxzZSBpZiAodG9r ZW4oIiE9PSIpIHx8IHRva2VuKCIhPSIpKQogCQluZWdhdGUgPSAxLCBvcCA9IEVYUFJfU1RSRVE7 CiAJZWxzZQotCQlwYXJzZV9lcnJvcigiaW52YWxpZCBzdHJpbmcgb3BlcmF0b3IgYXQgJyUuMTVz JyIsIHBvcyk7CisJCXBhcnNlX2Vycm9yX2F0KE5VTEwsICJpbnZhbGlkIHN0cmluZyBvcGVyYXRv ciIpOwogCiAJY2hhciAqczsKIAlpZiAoIXBhcnNlX3N0cmluZygmcykpIHsKLQkJcGFyc2VfZXJy b3IoImludmFsaWQgc3RyaW5nIGF0ICclLjE1cyciLCBwb3MpOworCQlwYXJzZV9lcnJvcl9hdChO VUxMLCAiaW52YWxpZCBzdHJpbmciKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC01OTgsNyArNjQz LDcgQEAgcGFyc2VfY21wKCkKIAkJcmV0dXJuIHBhcnNlX2ZsYWcoKTsKIAogCWlmICghKG9wID0g cGFyc2Vfb3AoKSkpCi0JCXBhcnNlX2Vycm9yKCJpbnZhbGlkIGNvbXBhcmlzb24gYXQgJyUuMTVz JyIsIHBvcyk7CisJCXBhcnNlX2Vycm9yX2F0KE5VTEwsICJpbnZhbGlkIGNvbXBhcmlzb24iKTsK IAogCWludDY0X3QgbjsKIAlpZiAocGFyc2VfbnVtKCZuKSkgewpAQCAtNzE2LDcgKzc2MSw3IEBA IHBhcnNlX3RpbWVjbXAoKQogCiAJb3AgPSBwYXJzZV9vcCgpOwogCWlmICghb3ApCi0JCXBhcnNl X2Vycm9yKCJpbnZhbGlkIGNvbXBhcmlzb24gYXQgJyUuMTVzJyIsIHBvcyk7CisJCXBhcnNlX2Vy cm9yX2F0KE5VTEwsICJpbnZhbGlkIGNvbXBhcmlzb24iKTsKIAogCWludDY0X3QgbjsKIAlpZiAo cGFyc2VfbnVtKCZuKSB8fCBwYXJzZV9kdXIoJm4pKSB7CkBAIC03NDAsNyArNzg1LDcgQEAgcGFy c2VfcmVkaXIoc3RydWN0IGV4cHIgKmUpCiAKIAlpZiAodG9rZW4oInwiKSkgewogCQlpZiAoIXBh cnNlX3N0cmluZygmcykpCi0JCQlwYXJzZV9lcnJvcigiZXhwZWN0ZWQgY29tbWFuZCIpOworCQkJ cGFyc2VfZXJyb3JfYXQoTlVMTCwgImV4cGVjdGVkIGNvbW1hbmQiKTsKIAkJc3RydWN0IGV4cHIg KnIgPSBta2V4cHIoRVhQUl9SRURJUl9QSVBFKTsKIAkJci0+YS5zdHJpbmcgPSBzOwogCQlyLT5i LnN0cmluZyA9IHhzdHJkdXAoInciKTsKQEAgLTc1MSw3ICs3OTYsNyBAQCBwYXJzZV9yZWRpcihz dHJ1Y3QgZXhwciAqZSkKIAllbHNlIHJldHVybiBlOwogCiAJaWYgKCFwYXJzZV9zdHJpbmcoJnMp KQotCQlwYXJzZV9lcnJvcigiZXhwZWN0ZWQgZmlsZSBuYW1lIik7CisJCXBhcnNlX2Vycm9yX2F0 KE5VTEwsICJleHBlY3RlZCBmaWxlIG5hbWUiKTsKIAlzdHJ1Y3QgZXhwciAqciA9IG1rZXhwcihF WFBSX1JFRElSX0ZJTEUpOwogCXItPmEuc3RyaW5nID0gczsKIAlyLT5iLnN0cmluZyA9IHhzdHJk dXAobSk7CkBAIC04MDIsNyArODQ3LDcgQEAgcGFyc2VfY29uZCgpCiAKIAkJCXJldHVybiByOwog CQl9IGVsc2UgewotCQkJcGFyc2VfZXJyb3IoImV4cGVjdGVkIDogYXQgJyUuMTVzJyIsIHBvcyk7 CisJCQlwYXJzZV9lcnJvcl9hdChOVUxMLCAiZXhwZWN0ZWQgOiIsIHBvcyk7CiAJCX0KIAl9CiAK QEAgLTgxNSw3ICs4NjAsNyBAQCBwYXJzZV9leHByKCkKIAlwb3MgPSBzOwogCXN0cnVjdCBleHBy ICplID0gcGFyc2VfY29uZCgpOwogCWlmICgqcG9zKQotCQlwYXJzZV9lcnJvcigidHJhaWxpbmcg Z2FyYmFnZSBhdCAnJS4xNXMnIiwgcG9zKTsKKwkJcGFyc2VfZXJyb3JfYXQoTlVMTCwgInRyYWls aW5nIGdhcmJhZ2UiKTsKIAlyZXR1cm4gZTsKIH0KIAoKRnJvbSAzNWY0NzNhZmM2MTM4YTdiNWQw MDYwNDcxYjYxYmFjODIxYTY0MDEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5j YWVuIDxtYWlsQGR1bmNhbm8uZGU+CkRhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTU6MTA6MjQgKzAx MDAKU3ViamVjdDogW1BBVENIIDA4LzIwXSBtcGljazogcmVmYWN0b3IgbWFpbGZpbGUgaGFuZGxp bmcKCi0gZml4IHNvbWUgbWVtb3J5IGxlYWtzCi0gZml4IGhhbmRsaW5nIG9mIHVuZXhpc3Rpbmcg ZmlsZXMvbXRocmVhZCBjb250YWluZXJzCi0gaW4gb25lbGluZSBtb2RlIHVzZSBvbmUgbWFpbGlu Zm8gc3RydWN0IGZvciBlYWNoIGxpbmUKLS0tCiBtcGljay5jIHwgMTMxICsrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNjYgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbXBpY2su YyBiL21waWNrLmMKaW5kZXggZWI2YWZjOS4uMjdlZTgzMSAxMDA2NDQKLS0tIGEvbXBpY2suYwor KysgYi9tcGljay5jCkBAIC0xMjEsNiArMTIxLDcgQEAgc3RydWN0IGV4cHIgewogfTsKIAogc3Ry dWN0IG1haWxpbmZvIHsKKwljaGFyICpmaWxlOwogCWNoYXIgKmZwYXRoOwogCXN0cnVjdCBzdGF0 ICpzYjsKIAlzdHJ1Y3QgbWVzc2FnZSAqbXNnOwpAQCAtOTczLDggKzk3NCwxMyBAQCBtc2dfZGF0 ZShzdHJ1Y3QgbWFpbGluZm8gKm0pCiAJaWYgKG0tPmRhdGUpCiAJCXJldHVybiBtLT5kYXRlOwog Ci0JaWYgKCFtLT5tc2cpCi0JCW0tPm1zZyA9IGJsYXplODIyKG0tPmZwYXRoKTsKKwkvLyBYWFg6 IGRhdGUgY29tcGFyaXNhdGlvbiBzaG91bGQgaGFuZGxlIHplcm8gZGF0ZXMKKwlpZiAoIW0tPm1z ZyAmJiBtLT5mcGF0aCkgeworCQlpZiAoIShtLT5tc2cgPSBibGF6ZTgyMihtLT5mcGF0aCkpKSB7 CisJCQltLT5mcGF0aCA9IE5VTEw7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CiAKIAljaGFyICpi OwogCWlmIChtLT5tc2cgJiYgKGIgPSBibGF6ZTgyMl9oZHIobS0+bXNnLCAiZGF0ZSIpKSkKQEAg LTk4NiwyOCArOTkyLDM1IEBAIG1zZ19kYXRlKHN0cnVjdCBtYWlsaW5mbyAqbSkKIGNoYXIgKgog bXNnX2hkcihzdHJ1Y3QgbWFpbGluZm8gKm0sIGNvbnN0IGNoYXIgKmgpCiB7Ci0JaWYgKCFtLT5t c2cpCi0JCW0tPm1zZyA9IGJsYXplODIyKG0tPmZwYXRoKTsKKwlzdGF0aWMgY2hhciBoZHJidWZb NDA5Nl07CiAKLQljaGFyICpiOwotCWlmICghbS0+bXNnIHx8ICEoYiA9IGJsYXplODIyX2NoZHIo bS0+bXNnLCBoKSkpCi0JCWdvdG8gZXJyOworCWlmICghbS0+bXNnICYmIG0tPmZwYXRoKSB7CisJ CWlmICghKG0tPm1zZyA9IGJsYXplODIyKG0tPmZwYXRoKSkpIHsKKwkJCW0tPmZwYXRoID0gTlVM TDsKKwkJCSpoZHJidWYgPSAwOworCQkJcmV0dXJuIGhkcmJ1ZjsKKwkJfQorCX0KIAotCWNoYXIg YnVmWzQwOTZdOwotCWJsYXplODIyX2RlY29kZV9yZmMyMDQ3KGJ1ZiwgYiwgc2l6ZW9mIGJ1ZiAt IDEsICJVVEYtOCIpOwotCWlmICghKmJ1ZikKLQkJZ290byBlcnI7CisJY2hhciAqYjsKKwlpZiAo IW0tPm1zZyB8fCAhKGIgPSBibGF6ZTgyMl9jaGRyKG0tPm1zZywgaCkpKSB7CisJCSpoZHJidWYg PSAwOworCQlyZXR1cm4gaGRyYnVmOworCX0KIAotCXJldHVybiBzdHJkdXAoYnVmKTsKLWVycjoK LQlyZXR1cm4gIiI7CisJYmxhemU4MjJfZGVjb2RlX3JmYzIwNDcoaGRyYnVmLCBiLCBzaXplb2Yg aGRyYnVmIC0gMSwgIlVURi04Iik7CisJcmV0dXJuIGhkcmJ1ZjsKIH0KIAogY2hhciAqCiBtc2df YWRkcihzdHJ1Y3QgbWFpbGluZm8gKm0sIGNoYXIgKmgsIGludCB0KQogewotCWlmICghbS0+bXNn KQotCQltLT5tc2cgPSBibGF6ZTgyMihtLT5mcGF0aCk7CisJaWYgKCFtLT5tc2cgJiYgbS0+ZnBh dGgpIHsKKwkJaWYgKCEobS0+bXNnID0gYmxhemU4MjIobS0+ZnBhdGgpKSkgeworCQkJbS0+ZnBh dGggPSBOVUxMOworCQkJcmV0dXJuICIiOworCQl9CisJfQogCiAJY2hhciAqYjsKIAlpZiAobS0+ bXNnID09IDAgfHwgKGIgPSBibGF6ZTgyMl9jaGRyKG0tPm1zZywgaCkpID09IDApCkBAIC0xMDg1 LDcgKzEwOTgsNyBAQCBldmFsKHN0cnVjdCBleHByICplLCBzdHJ1Y3QgbWFpbGluZm8gKm0pCiAJ Y2FzZSBFWFBSX1JFRElSX0ZJTEU6CiAJY2FzZSBFWFBSX1JFRElSX1BJUEU6CiAJCWZwID0gcmVk aXIoZSk7Ci0JCWZwdXRzKG0tPmZwYXRoLCBmcCk7CisJCWZwdXRzKG0tPmZpbGUsIGZwKTsKIAkJ cHV0YygnXG4nLCBmcCk7CiAJCWZmbHVzaChmcCk7CiAJCXJldHVybiAxOwpAQCAtMTA5OSwxNSAr MTExMiwxNSBAQCBldmFsKHN0cnVjdCBleHByICplLCBzdHJ1Y3QgbWFpbGluZm8gKm0pCiAJY2Fz ZSBFWFBSX0FOWVNFVDogewogCQlsb25nIHYgPSAwLCBuOwogCi0JCWlmICghbS0+c2IgJiYgKAor CQlpZiAoIW0tPnNiICYmIG0tPmZwYXRoICYmICgKIAkJICAgIGUtPmEucHJvcCA9PSBQUk9QX0FU SU1FIHx8CiAJCSAgICBlLT5hLnByb3AgPT0gUFJPUF9DVElNRSB8fAogCQkgICAgZS0+YS5wcm9w ID09IFBST1BfTVRJTUUgfHwKLQkJICAgIGUtPmEucHJvcCA9PSBQUk9QX1NJWkUpICYmCi0JCSAg ICAobS0+c2IgPSBjYWxsb2MoMSwgc2l6ZW9mICptLT5zYikpICYmCi0JCSAgICBzdGF0KG0tPmZw YXRoLCBtLT5zYikgIT0gMCkgewotCQkJZnByaW50ZihzdGRlcnIsICJzdGF0Iik7Ci0JCQlleGl0 KDIpOworCQkgICAgZS0+YS5wcm9wID09IFBST1BfU0laRSkpIHsKKwkJCW0tPnNiID0geGNhbGxv YygxLCBzaXplb2YgKm0tPnNiKTsKKwkJCWlmIChzdGF0KG0tPmZwYXRoLCBtLT5zYikgPT0gLTEp CisJCQkJbS0+ZnBhdGggPSBOVUxMOworCQkJLy8gWFhYOiBzdGF0IGJhc2VkIGV4cHJlc3Npb25z IHNob3VsZCBoYW5kbGUgMAogCQl9CiAKIAkJbiA9IGUtPmIubnVtOwpAQCAtMTE1NCw5ICsxMTY3 LDkgQEAgZXZhbChzdHJ1Y3QgZXhwciAqZSwgc3RydWN0IG1haWxpbmZvICptKQogCWNhc2UgRVhQ Ul9HTE9CSToKIAljYXNlIEVYUFJfUkVHRVg6CiAJY2FzZSBFWFBSX1JFR0VYSTogewotCQljb25z dCBjaGFyICpzID0gIiI7CisJCWNvbnN0IGNoYXIgKnM7CiAJCXN3aXRjaCAoZS0+YS5wcm9wKSB7 Ci0JCWNhc2UgUFJPUF9QQVRIOiBzID0gbS0+ZnBhdGg7IGJyZWFrOworCQljYXNlIFBST1BfUEFU SDogcyA9IG0tPmZwYXRoID8gbS0+ZnBhdGggOiAiIjsgYnJlYWs7CiAJCWNhc2UgUFJPUF9GUk9N OiBzID0gbXNnX2FkZHIobSwgImZyb20iLCBlLT5leHRyYSk7IGJyZWFrOwogCQljYXNlIFBST1Bf VE86IHMgPSBtc2dfYWRkcihtLCAidG8iLCBlLT5leHRyYSk7IGJyZWFrOwogCQlkZWZhdWx0OiBz ID0gbXNnX2hkcihtLCBlLT5hLnN0cmluZyk7IGJyZWFrOwpAQCAtMTE3NSw3ICsxMTg4LDcgQEAg ZXZhbChzdHJ1Y3QgZXhwciAqZSwgc3RydWN0IG1haWxpbmZvICptKQogfQogCiBzdHJ1Y3QgbWFp bGluZm8gKgotbWFpbGZpbGUoY2hhciAqZmlsZSkKK21haWxmaWxlKHN0cnVjdCBtYWlsaW5mbyAq bSwgY2hhciAqZmlsZSkKIHsKIAlzdGF0aWMgaW50IGluaXQ7CiAJaWYgKCFpbml0KSB7CkBAIC0x MTg2LDQ1ICsxMTk5LDM2IEBAIG1haWxmaWxlKGNoYXIgKmZpbGUpCiAJCWN1ciA9IGJsYXplODIy X3NlcV9jdXIoKTsKIAkJaW5pdCA9IDE7CiAJfQorCWNoYXIgKmZwYXRoID0gZmlsZTsKIAotCXN0 cnVjdCBtYWlsaW5mbyAqbTsKLQltID0gY2FsbG9jKDEsIHNpemVvZiAqbSk7Ci0JaWYgKCFtKSB7 Ci0JCWZwcmludGYoc3RkZXJyLCAiY2FsbG9jIik7Ci0JCWV4aXQoMik7Ci0JfQotCW0tPmZwYXRo ID0gZmlsZTsKIAltLT5pbmRleCA9IG51bSsrOwotCW0tPmZsYWdzID0gMDsKLQltLT5yZXBsaWVz ID0gMDsKLQltLT5kZXB0aCA9IDA7Ci0JbS0+c2IgPSAwOwotCW0tPm1zZyA9IDA7CisJbS0+Zmls ZSA9IGZpbGU7CiAKLQl3aGlsZSAoKm0tPmZwYXRoID09ICcgJyB8fCAqbS0+ZnBhdGggPT0gJ1x0 JykgeworCXdoaWxlICgqZnBhdGggPT0gJyAnIHx8ICpmcGF0aCA9PSAnXHQnKSB7CiAJCW0tPmRl cHRoKys7Ci0JCW0tPmZwYXRoKys7CisJCWZwYXRoKys7CiAJfQogCi0JY2hhciAqZSA9IG0tPmZw YXRoICsgc3RybGVuKG0tPmZwYXRoKSAtIDE7Ci0Jd2hpbGUgKG0tPmZwYXRoIDwgZSAmJiAoKmUg PT0gJyAnIHx8ICplID09ICdcdCcpKQorCWNoYXIgKmUgPSBmcGF0aCArIHN0cmxlbihmcGF0aCkg LSAxOworCXdoaWxlIChmcGF0aCA8IGUgJiYgKCplID09ICcgJyB8fCAqZSA9PSAnXHQnKSkKIAkJ KmUtLSA9IDA7CiAKLQlpZiAobS0+ZnBhdGhbMF0gPT0gJzwnKSB7CisJaWYgKGZwYXRoWzBdID09 ICc8JykgewogCQltLT5mbGFncyB8PSBGTEFHX1NFRU4gfCBGTEFHX0lORk87CisJCW0tPmZwYXRo ID0gTlVMTDsKIAkJcmV0dXJuIG07CiAJfQogCi0JaWYgKChlID0gc3RycmNocihtLT5mcGF0aCwg Jy8nKSAtIDEpICYmIChlIC0gbS0+ZnBhdGgpID49IDIgJiYKKwlpZiAoKGUgPSBzdHJyY2hyKGZw YXRoLCAnLycpIC0gMSkgJiYgKGUgLSBmcGF0aCkgPj0gMiAmJgogCSAgICAqZS0tID09ICd3JyAm JiAqZS0tID09ICdlJyAmJiAqZS0tID09ICduJykKIAkJbS0+ZmxhZ3MgfD0gRkxBR19ORVc7CiAK LQlpZiAoY3VyICYmIHN0cmNtcChjdXIsIG0tPmZwYXRoKSA9PSAwKSB7CisJaWYgKGN1ciAmJiBz dHJjbXAoY3VyLCBmcGF0aCkgPT0gMCkgewogCQltLT5mbGFncyB8PSBGTEFHX0NVUjsKIAkJY3Vy X2lkeCA9IG0tPmluZGV4OwogCX0KIAotCWNoYXIgKmYgPSBzdHJzdHIobS0+ZnBhdGgsICI6Miwi KTsKKwljaGFyICpmID0gc3Ryc3RyKGZwYXRoLCAiOjIsIik7CiAJaWYgKGYpIHsKIAkJaWYgKHN0 cmNocihmLCAnUCcpKQogCQkJbS0+ZmxhZ3MgfD0gRkxBR19QQVNTRUQ7CkBAIC0xMjQwLDYgKzEy NDQsNyBAQCBtYWlsZmlsZShjaGFyICpmaWxlKQogCQkJbS0+ZmxhZ3MgfD0gRkxBR19GTEFHR0VE OwogCX0KIAorCW0tPmZwYXRoID0gZnBhdGg7CiAJcmV0dXJuIG07CiB9CiAKQEAgLTEyNjgsMTEg KzEyNzMsNyBAQCBkb190aHIoKQogCQkJYnJlYWs7CiAKIAkJaWYgKCgoVGZsYWcgJiYgdGhyLT5t YXRjaGVkKSB8fCBtbC0+bS0+bWF0Y2hlZCkgJiYgIW1sLT5tLT5wcnVuZSkgewotCQkJaW50IGk7 Ci0JCQlmb3IgKGkgPSAwOyBpIDwgbWwtPm0tPmRlcHRoOyBpKyspCi0JCQkJcHV0YygnICcsIHN0 ZG91dCk7Ci0KLQkJCWZwdXRzKG1sLT5tLT5mcGF0aCwgc3Rkb3V0KTsKKwkJCWZwdXRzKG1sLT5t LT5maWxlLCBzdGRvdXQpOwogCQkJcHV0YygnXG4nLCBzdGRvdXQpOwogCiAJCQlrZXB0Kys7CkBA IC0xMjg1LDcgKzEyODYsNyBAQCBkb190aHIoKQogCQlpZiAobWwtPm0tPnNiKQogCQkJZnJlZSht bC0+bS0+c2IpOwogCi0JCWZyZWUobWwtPm0tPmZwYXRoKTsKKwkJZnJlZShtbC0+bS0+ZmlsZSk7 CiAJCWZyZWUobWwtPm0pOwogCX0KIApAQCAtMTI5OCwxMSArMTI5OSwxNCBAQCBjb2xsZWN0KGNo YXIgKmZpbGUpCiB7CiAJc3RydWN0IG1haWxpbmZvICptOwogCXN0cnVjdCBtbGlzdCAqbWw7CisJ Y2hhciAqZjsKIAotCWlmICgobSA9IG1haWxmaWxlKGZpbGUpKSA9PSAwKQotCQlyZXR1cm47CisJ ZiA9IHhzdHJkdXAoZmlsZSk7CisJbSA9IHhjYWxsb2MoMSwgc2l6ZW9mICptKTsKKwltID0gbWFp bGZpbGUobSwgZik7CiAKIAlpZiAobS0+ZGVwdGggPT0gMCkgeworCQkvKiBwcm9jZXNzIHByZXZp b3VzIHRocmVhZCAqLwogCQlpZiAodGhyKQogCQkJZG9fdGhyKCk7CiAKQEAgLTEzMzcsMTcgKzEz NDEsMTUgQEAgY29sbGVjdChjaGFyICpmaWxlKQogCiAJZm9yIChtbCA9IG1sLT5wYXJlbnQ7IG1s OyBtbCA9IG1sLT5wYXJlbnQpCiAJCW1sLT5tLT5yZXBsaWVzKys7Ci0KLQltLT5mcGF0aCA9IHN0 cmR1cChtLT5mcGF0aCk7CiB9CiAKIHZvaWQKIG9uZWxpbmUoY2hhciAqZmlsZSkKIHsKLQlzdHJ1 Y3QgbWFpbGluZm8gKm07Ci0KLQltID0gbWFpbGZpbGUoZmlsZSk7Ci0JaWYgKGV4cHIgJiYgIWV2 YWwoZXhwciwgbSkpCisJc3RydWN0IG1haWxpbmZvIG0gPSB7IDAgfTsKKwltLmluZGV4ID0gbnVt Kys7CisJKHZvaWQpIG1haWxmaWxlKCZtLCBmaWxlKTsKKwlpZiAoZXhwciAmJiAhZXZhbChleHBy LCAmbSkpCiAJCWdvdG8gb3V0OwogCiAJZnB1dHMoZmlsZSwgc3Rkb3V0KTsKQEAgLTEzNTYsMTEg KzEzNTgsMTAgQEAgb25lbGluZShjaGFyICpmaWxlKQogCWtlcHQrKzsKIAogb3V0OgotCWlmICht LT5tc2cpCi0JCWJsYXplODIyX2ZyZWUobS0+bXNnKTsKLQlpZiAobS0+c2IpCi0JCWZyZWUobS0+ c2IpOwotCWZyZWUobSk7CisJaWYgKG0ubXNnKQorCQlibGF6ZTgyMl9mcmVlKG0ubXNnKTsKKwlp ZiAobS5zYikKKwkJZnJlZShtLnNiKTsKIH0KIAogaW50CgpGcm9tIDY2OTU4ZTQ0ZjBkNWVhZmFk YzdiZDkwOTA3OTU5N2JjODVhNDA3NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IER1 bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxOSAxNToyMzoyNyAr MDEwMApTdWJqZWN0OiBbUEFUQ0ggMDkvMjBdIG1waWNrOiBtaW5vciBjbGVhbnVwcy9tZW1sZWFr IGZpeGVzIGZvciBwYXJzZV9tc2dsaXN0CgotLS0KIG1waWNrLmMgfCAxNCArKysrKystLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9tcGljay5jIGIvbXBpY2suYwppbmRleCAyN2VlODMxLi4xNjAyOGE3IDEwMDY0NAot LS0gYS9tcGljay5jCisrKyBiL21waWNrLmMKQEAgLTg3MiwxMiArODcyLDEzIEBAIHBhcnNlX21z Z2xpc3QoY2hhciAqcykKIAlpbnQgcjsKIAlzdHJ1Y3QgZXhwciAqZTEsICplMjsKIAljaGFyICpk OworCWVudW0gZmxhZ3MgZmxhZzsKIAogCXN3aXRjaCAoKnMpIHsKIAljYXNlICcvJzoKIAkJcysr OwogCQllMSA9IG1rZXhwcihFWFBSX1JFR0VYSSk7Ci0JCWUxLT5hLnN0cmluZyA9ICJzdWJqZWN0 IjsKKwkJZTEtPmEuc3RyaW5nID0geHN0cmR1cCgic3ViamVjdCIpOwogCQllMS0+Yi5yZWdleCA9 IG1hbGxvYyhzaXplb2YgKHJlZ2V4X3QpKTsKIAkJciA9IHJlZ2NvbXAoZTEtPmIucmVnZXgsIHMs IFJFR19FWFRFTkRFRCB8IFJFR19OT1NVQiB8IFJFR19JQ0FTRSk7CiAJCWlmIChyICE9IDApIHsK QEAgLTg4NywxMyArODg4LDEwIEBAIHBhcnNlX21zZ2xpc3QoY2hhciAqcykKIAkJfQogCQlyZXR1 cm4gZTE7CiAJY2FzZSAnOic6Ci0JCWlmIChzdHJsZW4ocykgPD0gMSkKLQkJCXBhcnNlX2Vycm9y KCJtaXNzaW5nIHR5cGUgYXQgJyUuMTVzJyIsIHMpOwotCi0JCWVudW0gZmxhZ3MgZmxhZzsKIAkJ biA9IDA7CiAKIAkJc3dpdGNoICgqKytzKSB7CisJCWNhc2UgJ1wwJzogcGFyc2VfZXJyb3IoIm1p c3NpbmcgZmxhZyBhdCAnJXMnIiwgcy0xKTsKIAkJY2FzZSAnUCc6IGZsYWcgPSBGTEFHX1BBU1NF RDsgYnJlYWs7CiAJCWNhc2UgJ0YnOiBmbGFnID0gRkxBR19GTEFHR0VEOyBicmVhazsKIAkJY2Fz ZSAnRCc6IGZsYWcgPSBGTEFHX0RSQUZUOyBicmVhazsKQEAgLTkwNSw3ICs5MDMsNyBAQCBwYXJz ZV9tc2dsaXN0KGNoYXIgKnMpCiAJCWNhc2UgJ28nOiBuID0gMTsgLyogRkFMTCBUSFJPVUdIICov CiAJCWNhc2UgJ24nOiBmbGFnID0gRkxBR19ORVc7IGJyZWFrOwogCQljYXNlICdSJzogZmxhZyA9 IEZMQUdfUkVQTElFRDsgYnJlYWs7Ci0JCWRlZmF1bHQ6IHBhcnNlX2Vycm9yKCJ1bmtub3duIHR5 cGUgYXQgJyUuMTVzJyIsIHMpOworCQlkZWZhdWx0OiBwYXJzZV9lcnJvcigidW5rbm93biBmbGFn IGF0ICclcyciLCBzKTsKIAkJfQogCiAJCWUxID0gbWtleHByKEVYUFJfQU5ZU0VUKTsKQEAgLTk0 Niw5ICs5NDQsOSBAQCBwYXJzZV9tc2dsaXN0KGNoYXIgKnMpCiAKIAkJCWJsYXplODIyX2FkZHIo cywgJmRpc3AsICZhZGRyKTsKIAkJCWlmICghZGlzcCAmJiAhYWRkcikKLQkJCQlwYXJzZV9lcnJv cigiaW52YWxpZCBhZGRyZXNzIGF0ICclLjE1cyciLCBwb3MpOworCQkJCXBhcnNlX2Vycm9yKCJp bnZhbGlkIGFkZHJlc3MgJyVzJyIsIHMpOwogCi0JCQlkID0geHN0cmR1cCgoZGlzcCkgPyBkaXNw IDogYWRkcik7CisJCQlkID0gKGRpc3ApID8gZGlzcCA6IGFkZHI7CiAKIAkJCWUxID0gbWtleHBy KEVYUFJfUkVHRVhJKTsKIAkJCWUxLT5hLnByb3AgPSBQUk9QX0ZST007CgpGcm9tIDBlYzRlMzMz MmU1M2U0NGM1NmNjY2NkYTUzOTY3NWFmYmI1MWZiNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxOSAx NTozMDoxOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMjBdIG1waWNrOiBhbGxvdyByZWFkaW5n IGV4cHJlc3Npb25zIGZyb20gZmlsZXMgaS5lLiB1c2luZwogIyEvYmluL21waWNrCgotLS0KIG1w aWNrLmMgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL21waWNrLmMgYi9tcGljay5jCmluZGV4IDE2MDI4YTcuLjFhNmM4MTAgMTAwNjQ0Ci0t LSBhL21waWNrLmMKKysrIGIvbXBpY2suYwpAQCAtMjMsNiArMjMsNyBAQAogI2VuZGlmCiAKICNp bmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKQEAgLTg1OCw4ICs4NTksMTggQEAg cGFyc2VfY29uZCgpCiBzdGF0aWMgc3RydWN0IGV4cHIgKgogcGFyc2VfZXhwcigpCiB7Ci0JcG9z ID0gczsKLQlzdHJ1Y3QgZXhwciAqZSA9IHBhcnNlX2NvbmQoKTsKKwl3cygpOworCXJldHVybiBw YXJzZV9jb25kKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZXhwciAqCitwYXJzZV9idWYoY29uc3Qg Y2hhciAqZiwgY2hhciAqcykKK3sKKwlzdHJ1Y3QgZXhwciAqZTsKKwlmbmFtZSA9IGY7CisJbGlu ZSA9IHBvcyA9IHM7CisJbGluZW5yID0gMTsKKwllID0gcGFyc2VfZXhwcigpOwogCWlmICgqcG9z KQogCQlwYXJzZV9lcnJvcl9hdChOVUxMLCAidHJhaWxpbmcgZ2FyYmFnZSIpOwogCXJldHVybiBl OwpAQCAtMTM3NywxNiArMTM4OCw0MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ d2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJUdDp2IikpICE9IC0xKQogCQlzd2l0Y2gg KGMpIHsKIAkJY2FzZSAnVCc6IFRmbGFnID0gbmVlZF90aHIgPSAxOyBicmVhazsKLQkJY2FzZSAn dCc6IGV4cHIgPSBjaGFpbihleHByLCBFWFBSX0FORCwgcGFyc2VfZXhwcihvcHRhcmcpKTsgYnJl YWs7CisJCWNhc2UgJ3QnOiBleHByID0gY2hhaW4oZXhwciwgRVhQUl9BTkQsIHBhcnNlX2J1Zigi YXJndiIsIG9wdGFyZykpOyBicmVhazsKIAkJY2FzZSAndic6IHZmbGFnID0gMTsgYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbLVR2XSBbLXQgdGVzdF0g W21zZ2xpc3QgLi4uXVxuIiwgYXJndjApOwogCQkJZXhpdCgxKTsKIAkJfQogCi0JaWYgKG9wdGlu ZCAhPSBhcmdjKQotCQlmb3IgKGMgPSBvcHRpbmQ7IGMgPCBhcmdjOyBjKyspCisJaWYgKG9wdGlu ZCAhPSBhcmdjKSB7CisJCWZvciAoYyA9IG9wdGluZDsgYyA8IGFyZ2M7IGMrKykgeworCQkJaWYg KHN0cmNocihhcmd2W2NdLCAnLycpICYmIGFjY2Vzcyhhcmd2W2NdLCBSX09LKSA9PSAwKQorCQkJ CWJyZWFrOwogCQkJZXhwciA9IGNoYWluKGV4cHIsIEVYUFJfQU5ELCBwYXJzZV9tc2dsaXN0KGFy Z3ZbY10pKTsKKwkJfQorCisJCXN0cnVjdCBzdGF0IHN0OworCQlpbnQgZmQ7CisJCXNpemVfdCBs ZW47CisJCWZvciAoOyBjIDwgYXJnYzsgYysrKSB7CisJCQlpZiAoKGZkID0gb3Blbihhcmd2W2Nd LCBPX1JET05MWSkpID09IC0xKQorCQkJCWV4aXQoMSk7CisJCQlpZiAoZnN0YXQoZmQsICZzdCkg PT0gLTEpCisJCQkJZXhpdCgxKTsKKwkJCWxlbiA9IHN0LnN0X3NpemU7CisJCQljaGFyICpzID0g bW1hcCgwLCBsZW4rMSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7 CisJCQlpZiAocyA9PSBNQVBfRkFJTEVEKSB7CisJCQkJcGVycm9yKCJtbWFwIik7CisJCQkJZXhp dCgxKTsKKwkJCX0KKwkJCXNbbGVuKzFdID0gJ1wwJzsKKwkJCWNsb3NlKGZkKTsKKwkJCWV4cHIg PSBjaGFpbihleHByLCBFWFBSX0FORCwgcGFyc2VfYnVmKGFyZ3ZbY10sIHMpKTsKKwkJCW11bm1h cChzLCBsZW4rMSk7CisJCX0KKwl9CiAKIAlpZiAoaXNhdHR5KDApKQogCQlpID0gYmxhemU4MjJf bG9vcDEoIjoiLCBuZWVkX3RociA/IGNvbGxlY3QgOiBvbmVsaW5lKTsKCkZyb20gOWU4OTg5YzFl NjM4YTdmYzJjODM1OWRmYTc2ZmU2MWY0ZTg4NTk2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogRHVuY2FlbiA8bWFpbEBkdW5jYW5vLmRlPgpEYXRlOiBNb24sIDI4IEphbiAyMDE5IDE1 OjQxOjI5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMS8yMF0gbXBpY2s6IGJldHRlciBlcnJvciBm b3IgbWlzc2luZyApIG92ZXIgbXVsdGlwbGUgbGluZXMKCi0tLQogbXBpY2suYyB8IDEzICsrKysr KystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5kZXggMWE2YzgxMC4uNzFlMjdlZSAx MDA2NDQKLS0tIGEvbXBpY2suYworKysgYi9tcGljay5jCkBAIC0zODEsMTEgKzM4MSw5IEBAIHN0 YXRpYyBzdHJ1Y3QgZXhwciAqCiBwYXJzZV9pbm5lcigpCiB7CiAJaWYgKHRva2VuKCJwcnVuZSIp KSB7Ci0JCXN0cnVjdCBleHByICplID0gbWtleHByKEVYUFJfUFJVTkUpOwotCQlyZXR1cm4gZTsK KwkJcmV0dXJuIG1rZXhwcihFWFBSX1BSVU5FKTsKIAl9IGVsc2UgaWYgKHRva2VuKCJwcmludCIp KSB7Ci0JCXN0cnVjdCBleHByICplID0gbWtleHByKEVYUFJfUFJJTlQpOwotCQlyZXR1cm4gZTsK KwkJcmV0dXJuIG1rZXhwcihFWFBSX1BSSU5UKTsKIAl9IGVsc2UgaWYgKHRva2VuKCJza2lwIikp IHsKIAkJc3RydWN0IGV4cHIgKmUgPSBta2V4cHIoRVhQUl9QUklOVCk7CiAJCXN0cnVjdCBleHBy ICpub3QgPSBta2V4cHIoRVhQUl9OT1QpOwpAQCAtMzk2LDExICszOTQsMTQgQEAgcGFyc2VfaW5u ZXIoKQogCQlzdHJ1Y3QgZXhwciAqbm90ID0gbWtleHByKEVYUFJfTk9UKTsKIAkJbm90LT5hLmV4 cHIgPSBlOwogCQlyZXR1cm4gbm90OwotCX0gZWxzZSBpZiAodG9rZW4oIigiKSkgeworCX0KKwlp ZiAocGVlaygiKCIpKSB7CisJCXN0cnVjdCBwb3Mgc2F2ZXBvcyA9IHsgcG9zLCBsaW5lLCBsaW5l bnIgfTsKKwkJKHZvaWQpIHRva2VuKCIoIik7CiAJCXN0cnVjdCBleHByICplID0gcGFyc2VfY29u ZCgpOwogCQlpZiAodG9rZW4oIikiKSkKIAkJCXJldHVybiBlOwotCQlwYXJzZV9lcnJvcigibWlz c2luZyApIGF0ICclLjE1cyciLCBwb3MpOworCQlwYXJzZV9lcnJvcl9hdCgmc2F2ZXBvcywgInVu dGVybWluYXRlZCAoIik7CiAJCXJldHVybiAwOwogCX0gZWxzZSB7CiAJCXBhcnNlX2Vycm9yKCJ1 bmtub3duIGV4cHJlc3Npb24gYXQgJyUuMTVzJyIsIHBvcyk7CgpGcm9tIDk0NTY0MDJkNjk3ODVh ZDZhMmU0ZTVkMDhkYjA3OTVmMGM2ZTEyZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxOSAxNjoyMjoy OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTIvMjBdIG1waWNrOiBhZGQgbGV0IGV4cHJlc3Npb25z CgotLS0KIG1hbi9tcGljay4xIHwgIDExICsrKysrCiBtcGljay5jICAgICB8IDExNCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21h bi9tcGljay4xIGIvbWFuL21waWNrLjEKaW5kZXggNzQ0ZmEyNC4uNTNkNTEyMCAxMDA2NDQKLS0t IGEvbWFuL21waWNrLjEKKysrIGIvbWFuL21waWNrLjEKQEAgLTEwNyw2ICsxMDcsOCBAQCB0ZXN0 cyBhcmUgZ2l2ZW4gYnkgdGhlIGZvbGxvd2luZyBFQk5GOgogICAgICAgICAgICAgIHwgcHJ1bmUg ICAgICAgICAgICAgLS0gZG8gbm90IG1hdGNoIGZ1cnRoZXIgbWVzc2FnZXMgaW4gdGhyZWFkCiAg ICAgICAgICAgICAgfCBwcmludCAgICAgICAgICAgICAtLSBhbHdheXMgdHJ1ZSB2YWx1ZQogICAg ICAgICAgICAgIHwgc2tpcCAgICAgICAgICAgICAgLS0gYWx3YXlzIGZhbHNlIHZhbHVlCisgICAg ICAgICAgICAgfCA8bGV0PgorICAgICAgICAgICAgIHwgPGlkZW50PgogCiA8ZmxhZ3Byb3A+IDo6 PSBjaGlsZCB8IGRyYWZ0IHwgZmxhZ2dlZCB8IGluZm8gfCBuZXcgfCBwYXJlbnQgfCBwYXNzZWQK ICAgICAgICAgICAgICB8IHJlcGxpZWQgIHwgc2VlbiB8IHNlbGVjdGVkIHwgdHJhc2hlZApAQCAt MTQ5LDYgKzE1MSwxNSBAQCB0ZXN0cyBhcmUgZ2l2ZW4gYnkgdGhlIGZvbGxvd2luZyBFQk5GOgog CiA8c3RyPiAgICAgIDo6PSAiIChbXiJdIHwgIiIpKyAiICAtLSB1c2UgIiIgZm9yIGEgc2luZ2xl ICIgaW5zaWRlICIKICAgICAgICAgICAgICB8ICRbQS1aYS16MC05X10rICAgIC0tIGVudmlyb25t ZW50IHZhcmlhYmxlCisKKy0tIGxldCBleHByZXNzaW9ucyBldmFsdWF0ZSB0aGUgZXhwcmVzc2lv biBmb2xsb3dpbmcgdGhlIGBpbmAga2V5d29yZCwKKy0tIHRoZSBiaW5kaW5ncyBhcmUgbGF6aWx5 IGV2YWx1YXRlZC4KKzxsZXQ+ICAgICAgOjo9IHsgbGV0IDxpZGVudD4gPSA8c2NvcGU+IH0gaW4g PHNjb3BlPgorCistLSBJbnNpZGUgdGhlIHNjb3BlIHByZXZpb3VzbHkgZGVmaW5lZCBpZGVudHMg YXJlIHJlcGxhY2VkIHdpdGggZXhwcmVzc2lvbnMKKzxzY29wZT4gICAgOjo9IDxleHByPgorCis8 aWRlbnQ+ICAgIDo6PSBbQS1aYS16X11bQS1aYS16MC05X10rCiAuRWQKIC5TaCBFWElUIFNUQVRV UwogLkV4IC1zdGQKZGlmZiAtLWdpdCBhL21waWNrLmMgYi9tcGljay5jCmluZGV4IDcxZTI3ZWUu LjNkYzY2NjAgMTAwNjQ0Ci0tLSBhL21waWNrLmMKKysrIGIvbXBpY2suYwpAQCAtMTYyLDYgKzE2 MiwyMSBAQCBzdHJ1Y3QgcG9zIHsKIAlzaXplX3QgbGluZW5yOwogfTsKIAorc3RydWN0IGJpbmRp bmcgeworCWNoYXIgKm5hbWU7CisJc2l6ZV90IG5sZW47CisJc2l6ZV90IHJlZmNvdW50OworCXN0 cnVjdCBleHByICpleHByOworCXN0cnVjdCBiaW5kaW5nICpuZXh0OworfTsKKworc3RydWN0IHNj b3BlIHsKKwlzdHJ1Y3QgYmluZGluZyAqYmluZGluZ3M7CisJc3RydWN0IHNjb3BlICpwcmV2Owor fTsKKworc3RydWN0IHNjb3BlICpzY29wZXEgPSBOVUxMOworCiBzdGF0aWMgc3RydWN0IHRocmVh ZCAqdGhyOwogCiBzdGF0aWMgY2hhciAqYXJndjA7CkBAIC0zNzQsOSArMzg5LDEwMiBAQCBwYXJz ZV9vcCgpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZXhwciAqcGFyc2VfY21wKCk7 CitzdGF0aWMgaW50CitwYXJzZV9pZGVudChjaGFyICoqc3AsIHNpemVfdCAqbHApCit7CisJY2hh ciAqcCA9IHBvczsKKwlpZiAoIWlzYWxwaGEoKnBvcykgJiYgKnBvcyAhPSAnXycpCisJCXJldHVy biAwOworCXArKzsKKwl3aGlsZSAoKnAgJiYgKGlzYWxudW0oKnApIHx8ICpwID09ICdfJykpCisJ CXArKzsKKwkqc3AgPSBwb3M7CisJKmxwID0gcC1wb3M7CisJcG9zID0gcDsKKwl3cygpOworCXJl dHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IGV4cHIgKgorcGFyc2VfYmluZGluZygpCit7CisJ c3RydWN0IHNjb3BlICpzYzsKKwlzdHJ1Y3QgYmluZGluZyAqYjsKKwljaGFyICpzOworCXNpemVf dCBsID0gMDsKKworCWlmIChwYXJzZV9pZGVudCgmcywgJmwpKSB7CisJCWZvciAoc2MgPSBzY29w ZXE7IHNjOyBzYyA9IHNjLT5wcmV2KSB7CisJCQlmb3IgKGIgPSBzYy0+YmluZGluZ3M7IGI7IGIg PSBiLT5uZXh0KSB7CisJCQkJaWYgKGItPm5sZW4gPT0gbCAmJiBzdHJuY21wKGItPm5hbWUsIHMs IGwpID09IDApIHsKKwkJCQkJYi0+cmVmY291bnQrKzsKKwkJCQkJcmV0dXJuIGItPmV4cHI7CisJ CQkJfQorCQkJfQorCQl9CisJfQorCS8vIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBpZGVudCBp ZiB0aGVyZSB3YXMgb25lCisJcG9zID0gcG9zLWw7CisJcGFyc2VfZXJyb3JfYXQoTlVMTCwgInVu a25vd24gZXhwcmVzc2lvbiIpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IGV4cHIg KnBhcnNlX2NvbmQoKTsKIAorc3RhdGljIHN0cnVjdCBleHByICoKK3BhcnNlX2xldCgpCit7CisJ aWYgKCF0b2tlbigibGV0IikpCisJCXJldHVybiBwYXJzZV9iaW5kaW5nKCk7CisKKwlzdHJ1Y3Qg c2NvcGUgKnNjOworCWNoYXIgKnM7CisJc2l6ZV90IGw7CisKKwlzYyA9IHhjYWxsb2MoMSwgc2l6 ZW9mIChzdHJ1Y3Qgc2NvcGUpKTsKKwlzYy0+cHJldiA9IHNjb3BlcTsKKwlzY29wZXEgPSBzYzsK KworCXN0cnVjdCBiaW5kaW5nICpiLCAqYnE7CisJc3RydWN0IGV4cHIgKmU7CisJYnEgPSBOVUxM OworCWZvciAoOzspIHsKKwkJaWYgKCFwYXJzZV9pZGVudCgmcywgJmwpKQorCQkJcGFyc2VfZXJy b3JfYXQoTlVMTCwgIm1pc3NpbmcgaWRlbnQiKTsKKwkJaWYgKCF0b2tlbigiPSIpKQorCQkJcGFy c2VfZXJyb3JfYXQoTlVMTCwgIm1pc3NpbmcgPSIpOworCQllID0gcGFyc2VfY29uZCgpOworCQli ID0geGNhbGxvYygxLCBzaXplb2YgKHN0cnVjdCBiaW5kaW5nKSk7CisJCWItPm5hbWUgPSBzOwor CQliLT5ubGVuID0gbDsKKwkJYi0+ZXhwciA9IGU7CisJCWlmICghc2MtPmJpbmRpbmdzKSBzYy0+ YmluZGluZ3MgPSBiOworCQlpZiAoYnEpIGJxLT5uZXh0ID0gYjsKKwkJYnEgPSBiOworCQlpZiAo IXRva2VuKCJsZXQiKSkKKwkJCWJyZWFrOworCX0KKwlpZiAoIXRva2VuKCJpbiIpKQorCQlwYXJz ZV9lcnJvcl9hdChOVUxMLCAibWlzc2luZyBgaW5gIik7CisKKwllID0gcGFyc2VfY29uZCgpOwor CisJc3RydWN0IGJpbmRpbmcgKmJzOworCWZvciAoYiA9IHNjLT5iaW5kaW5nczsgYjsgYiA9IGJz KSB7CisJCWJzID0gYi0+bmV4dDsKKwkJaWYgKGItPnJlZmNvdW50ID09IDApCisJCQlmcmVlZXhw cihiLT5leHByKTsKKwkJZnJlZShiKTsKKwl9CisKKwlzY29wZXEgPSBzYy0+cHJldjsKKwlmcmVl KHNjKTsKKworCXJldHVybiBlOworfQorCitzdGF0aWMgc3RydWN0IGV4cHIgKnBhcnNlX2NtcCgp OworCiBzdGF0aWMgc3RydWN0IGV4cHIgKgogcGFyc2VfaW5uZXIoKQogewpAQCAtNDAzLDEwICs1 MTEsOCBAQCBwYXJzZV9pbm5lcigpCiAJCQlyZXR1cm4gZTsKIAkJcGFyc2VfZXJyb3JfYXQoJnNh dmVwb3MsICJ1bnRlcm1pbmF0ZWQgKCIpOwogCQlyZXR1cm4gMDsKLQl9IGVsc2UgewotCQlwYXJz ZV9lcnJvcigidW5rbm93biBleHByZXNzaW9uIGF0ICclLjE1cyciLCBwb3MpOwotCQlyZXR1cm4g MDsKIAl9CisJcmV0dXJuIHBhcnNlX2xldCgpOwogfQogCiBzdGF0aWMgaW50CgpGcm9tIDIwOTVh MTZiY2VlYjRhZWM3MTY1YjE2MDhiYTczZDAyZDI5NzVhNmEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogVHVlLCAyOSBKYW4gMjAx OSAxNDowNzo1NSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMjBdIG1waWNrOiBhZGQgaGVhZGVy IGRlY29kZW9wIGZvciBiZXR0ZXIgYWRkcmVzcyBtYXRjaGluZwoKLS0tCiBtYW4vbXBpY2suMSAg ICB8ICAxMCArKy0KIG1waWNrLmMgICAgICAgIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHQvMjAwMC1tcGljay50IHwgICA0ICstCiAzIGZp bGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9tYW4vbXBpY2suMSBiL21hbi9tcGljay4xCmluZGV4IDUzZDUxMjAuLmJiN2QzMjQgMTAw NjQ0Ci0tLSBhL21hbi9tcGljay4xCisrKyBiL21hbi9tcGljay4xCkBAIC0xMDMsNiArMTAzLDcg QEAgdGVzdHMgYXJlIGdpdmVuIGJ5IHRoZSBmb2xsb3dpbmcgRUJORjoKICAgICAgICAgICAgICB8 IDxmbGFncHJvcD4KICAgICAgICAgICAgICB8IDx0aW1lcHJvcD4gPG51bW9wPiA8ZHVyPgogICAg ICAgICAgICAgIHwgPG51bXByb3A+IDxudW1vcD4gPG51bT4KKyAgICAgICAgICAgICB8IDxoZHJw cm9wPiA8ZGVjb2Rlb3A+IDxzdHJvcD4gPHN0cj4KICAgICAgICAgICAgICB8IDxzdHJwcm9wPiA8 c3Ryb3A+IDxzdHI+CiAgICAgICAgICAgICAgfCBwcnVuZSAgICAgICAgICAgICAtLSBkbyBub3Qg bWF0Y2ggZnVydGhlciBtZXNzYWdlcyBpbiB0aHJlYWQKICAgICAgICAgICAgICB8IHByaW50ICAg ICAgICAgICAgIC0tIGFsd2F5cyB0cnVlIHZhbHVlCkBAIC0xMzksOCArMTQwLDEzIEBAIHRlc3Rz IGFyZSBnaXZlbiBieSB0aGUgZm9sbG93aW5nIEVCTkY6CiAgICAgICAgICAgICAgICAgICAgICAg fCBUICk/ICAgICAtLSAqMTAyNCoxMDI0KjEwMjQqMTAyNAogICAgICAgICAgICAgIHwgY3VyICAg ICAgICAgICAgICAgLS0gaW5kZXggb2YgY3VyIG1lc3NhZ2UKIAotPHN0cnByb3A+ICA6Oj0gZnJv bSB8IHN1YmplY3QgfCB0bwotICAgICAgICAgICAgIHwgPHN0cj4gICAgICAgICAgICAgLS0gaGVh ZGVyIG5hbWUKKzxoZHJwcm9wPiAgOjo9IGZyb20gfCB0byB8IHN1YmplY3QgfCA8c3RyPgorCis8 ZGVjb2Rlb3A+IDo6PSAuIGFkZHIgICAgICAgICAgLS0gbWF0Y2ggYWRkcmVzcyBwYXJ0cworICAg ICAgICAgICAgIHwgLiBkaXNwICAgICAgICAgIC0tIG1hdGNoIGFkZHJlc3MgZGlzcGxheSBwYXJ0 cworICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIC0tIGVtcHR5IG1hdGNoZXMgcmF3IGhl YWRlcnMKKworPHN0cnByb3A+ICA6Oj0gcGF0aAogCiA8c3Ryb3A+ICAgIDo6PSA9PSB8ID0gfCAh PSAgICAgICAtLSBzdHJpbmcgKGluKWVxdWFsaXR5CiAgICAgICAgICAgICAgfCA9PT0gICAgfCAh PT09ICAgICAtLSBjYXNlIGluc2Vuc2l0aXZlIHN0cmluZyAoaW4pZXF1YWxpdHkKZGlmZiAtLWdp dCBhL21waWNrLmMgYi9tcGljay5jCmluZGV4IDNkYzY2NjAuLmJmZjkwYjggMTAwNjQ0Ci0tLSBh L21waWNrLmMKKysrIGIvbXBpY2suYwpAQCAtODAsMTEgKzgwLDEyIEBAIGVudW0gcHJvcCB7CiAJ UFJPUF9SRVBMSUVTLAogCVBST1BfU0laRSwKIAlQUk9QX1RPVEFMLAotCVBST1BfRlJPTSwKLQlQ Uk9QX1RPLAogCVBST1BfSU5ERVgsCiAJUFJPUF9EQVRFLAogCVBST1BfRkxBRywKKwlQUk9QX0hE UiwKKwlQUk9QX0hEUl9BRERSLAorCVBST1BfSERSX0RJU1AsCiB9OwogCiBlbnVtIGZsYWdzIHsK QEAgLTMzMiwxNiArMzMzLDE3IEBAIGZyZWVleHByKHN0cnVjdCBleHByICplKQogCWNhc2UgRVhQ Ul9SRUdFWDoKIAljYXNlIEVYUFJfUkVHRVhJOgogCQlzd2l0Y2ggKGUtPmEucHJvcCkgewotCQlj YXNlIFBST1BfUEFUSDoKLQkJY2FzZSBQUk9QX0ZST006Ci0JCWNhc2UgUFJPUF9UTzoKLQkJCWJy ZWFrOwotCQlkZWZhdWx0OiBmcmVlKGUtPmEuc3RyaW5nKTsKKwkJY2FzZSBQUk9QX1BBVEg6IGJy ZWFrOworCQljYXNlIFBST1BfSERSOgorCQljYXNlIFBST1BfSERSX0FERFI6CisJCWNhc2UgUFJP UF9IRFJfRElTUDoKKwkJCWZyZWUoZS0+Yi5zdHJpbmcpOworCQlkZWZhdWx0OiByZXR1cm47CiAJ CX0KIAkJaWYgKGUtPm9wID09IEVYUFJfUkVHRVggfHwgZS0+b3AgPT0gRVhQUl9SRUdFWEkpCi0J CQlyZWdmcmVlKGUtPmIucmVnZXgpOworCQkJcmVnZnJlZShlLT5jLnJlZ2V4KTsKIAkJZWxzZQot CQkJZnJlZShlLT5iLnN0cmluZyk7CisJCQlmcmVlKGUtPmMuc3RyaW5nKTsKIAl9CiAJZnJlZShl KTsKIH0KQEAgLTU3OSwxNCArNTgxLDI1IEBAIHBhcnNlX3N0cmNtcCgpCiAJbmVnYXRlID0gMDsK IAogCWlmICh0b2tlbigiZnJvbSIpKQotCQlwcm9wID0gUFJPUF9GUk9NOworCQloID0geHN0cmR1 cCgiZnJvbSIpOwogCWVsc2UgaWYgKHRva2VuKCJ0byIpKQotCQlwcm9wID0gUFJPUF9UTzsKKwkJ aCA9IHhzdHJkdXAoInRvIik7CiAJZWxzZSBpZiAodG9rZW4oInN1YmplY3QiKSkKLQkJaCA9ICJz dWJqZWN0IjsKKwkJaCA9IHhzdHJkdXAoInN1YmplY3QiKTsKKwllbHNlIGlmICh0b2tlbigicGF0 aCIpKQorCQlwcm9wID0gUFJPUF9QQVRIOwogCWVsc2UgaWYgKCFwYXJzZV9zdHJpbmcoJmgpKQog CQlyZXR1cm4gcGFyc2VfaW5uZXIoKTsKIAorCWlmICghcHJvcCkgeworCQlpZiAodG9rZW4oIi4i KSkgeworCQkJaWYgKHRva2VuKCJhZGRyIikpICAgICAgcHJvcCA9IFBST1BfSERSX0FERFI7CisJ CQllbHNlIGlmICh0b2tlbigiZGlzcCIpKSBwcm9wID0gUFJPUF9IRFJfRElTUDsKKwkJCWVsc2Ug cGFyc2VfZXJyb3JfYXQoTlVMTCwgInVua25vd24gZGVjb2RlIHBhcmFtZXRlciIpOworCQl9IGVs c2UKKwkJCXByb3AgPSBQUk9QX0hEUjsKKwl9CisKIAlpZiAodG9rZW4oIn5+fiIpKQogCQlvcCA9 IEVYUFJfR0xPQkk7CiAJZWxzZSBpZiAodG9rZW4oIn5+IikpCkBAIC02MjQsMzUgKzYzNywyOSBA QCBwYXJzZV9zdHJjbXAoKQogCiAJaW50IHIgPSAwOwogCXN0cnVjdCBleHByICplID0gbWtleHBy KG9wKTsKLQotCWlmIChwcm9wKQotCQllLT5hLnByb3AgPSBwcm9wOwotCWVsc2UKLQkJZS0+YS5z dHJpbmcgPSBoOwotCi0JaWYgKHByb3AgPT0gUFJPUF9GUk9NIHx8IHByb3AgPT0gUFJPUF9UTykg ewotCQljaGFyICpkaXNwLCAqYWRkcjsKLQkJYmxhemU4MjJfYWRkcihzLCAmZGlzcCwgJmFkZHIp OwotCQlpZiAoIWRpc3AgJiYgIWFkZHIpCi0JCQlwYXJzZV9lcnJvcl9hdChOVUxMLCAiaW52YWxp ZCBhZGRyZXNzIik7Ci0JCWZyZWUocyk7Ci0JCXMgPSB4c3RyZHVwKChkaXNwKSA/IGRpc3AgOiBh ZGRyKTsKLQkJZS0+ZXh0cmEgPSAoZGlzcCkgPyAwIDogMTsKKwllLT5hLnByb3AgPSBwcm9wOwor CXN3aXRjaCAocHJvcCkgeworCWNhc2UgUFJPUF9IRFI6CisJY2FzZSBQUk9QX0hEUl9BRERSOgor CWNhc2UgUFJPUF9IRFJfRElTUDoKKwkJZS0+Yi5zdHJpbmcgPSBoOworCQlicmVhazsKKwljYXNl IFBST1BfUEFUSDogYnJlYWs7CiAJfQogCiAJaWYgKG9wID09IEVYUFJfUkVHRVggfHwgb3AgPT0g RVhQUl9SRUdFWEkpIHsKLQkJZS0+Yi5yZWdleCA9IG1hbGxvYyhzaXplb2YgKHJlZ2V4X3QpKTsK LQkJciA9IHJlZ2NvbXAoZS0+Yi5yZWdleCwgcywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwK KwkJZS0+Yy5yZWdleCA9IG1hbGxvYyhzaXplb2YgKHJlZ2V4X3QpKTsKKwkJciA9IHJlZ2NvbXAo ZS0+Yy5yZWdleCwgcywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwKIAkJICAgIChvcCA9PSBF WFBSX1JFR0VYSSA/IFJFR19JQ0FTRSA6IDApKTsKIAkJaWYgKHIgIT0gMCkgewogCQkJY2hhciBt c2dbMjU2XTsKLQkJCXJlZ2Vycm9yKHIsIGUtPmIucmVnZXgsIG1zZywgc2l6ZW9mIG1zZyk7CisJ CQlyZWdlcnJvcihyLCBlLT5jLnJlZ2V4LCBtc2csIHNpemVvZiBtc2cpOwogCQkJcGFyc2VfZXJy b3IoImludmFsaWQgcmVnZXggJyVzJzogJXMiLCBzLCBtc2cpOwogCQkJZXhpdCgyKTsKIAkJfQog CQlmcmVlKHMpOwogCX0gZWxzZSB7Ci0JCWUtPmIuc3RyaW5nID0gczsKKwkJZS0+Yy5zdHJpbmcg PSBzOwogCX0KIAogCWlmIChuZWdhdGUpIHsKQEAgLTk5NiwxMiArMTAwMywxMyBAQCBwYXJzZV9t c2dsaXN0KGNoYXIgKnMpCiAJY2FzZSAnLyc6CiAJCXMrKzsKIAkJZTEgPSBta2V4cHIoRVhQUl9S RUdFWEkpOwotCQllMS0+YS5zdHJpbmcgPSB4c3RyZHVwKCJzdWJqZWN0Iik7Ci0JCWUxLT5iLnJl Z2V4ID0gbWFsbG9jKHNpemVvZiAocmVnZXhfdCkpOwotCQlyID0gcmVnY29tcChlMS0+Yi5yZWdl eCwgcywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwgUkVHX0lDQVNFKTsKKwkJZTEtPmEucHJv cCA9IFBST1BfSERSOworCQllMS0+Yi5zdHJpbmcgPSB4c3RyZHVwKCJzdWJqZWN0Iik7CisJCWUx LT5jLnJlZ2V4ID0gbWFsbG9jKHNpemVvZiAocmVnZXhfdCkpOworCQlyID0gcmVnY29tcChlMS0+ Yy5yZWdleCwgcywgUkVHX0VYVEVOREVEIHwgUkVHX05PU1VCIHwgUkVHX0lDQVNFKTsKIAkJaWYg KHIgIT0gMCkgewogCQkJY2hhciBtc2dbMjU2XTsKLQkJCXJlZ2Vycm9yKHIsIGUxLT5iLnJlZ2V4 LCBtc2csIHNpemVvZiBtc2cpOworCQkJcmVnZXJyb3IociwgZTEtPmMucmVnZXgsIG1zZywgc2l6 ZW9mIG1zZyk7CiAJCQlwYXJzZV9lcnJvcigiaW52YWxpZCByZWdleCAnJXMnOiAlcyIsIHMsIG1z Zyk7CiAJCX0KIAkJcmV0dXJuIGUxOwpAQCAtMTA2NywxNCArMTA3NSwxNCBAQCBwYXJzZV9tc2ds aXN0KGNoYXIgKnMpCiAJCQlkID0gKGRpc3ApID8gZGlzcCA6IGFkZHI7CiAKIAkJCWUxID0gbWtl eHByKEVYUFJfUkVHRVhJKTsKLQkJCWUxLT5hLnByb3AgPSBQUk9QX0ZST007Ci0JCQllMS0+Yi5y ZWdleCA9IG1hbGxvYyhzaXplb2YgKHJlZ2V4X3QpKTsKLQkJCWUxLT5leHRyYSA9IChkaXNwKSA/ IDAgOiAxOworCQkJZTEtPmEucHJvcCA9IChkaXNwKSA/IFBST1BfSERSX0RJU1AgOiBQUk9QX0hE Ul9BRERSOworCQkJZTEtPmIuc3RyaW5nID0geHN0cmR1cCgiZnJvbSIpOworCQkJZTEtPmMucmVn ZXggPSBtYWxsb2Moc2l6ZW9mIChyZWdleF90KSk7CiAKLQkJCXIgPSByZWdjb21wKGUxLT5iLnJl Z2V4LCBkLCBSRUdfRVhURU5ERUQgfCBSRUdfTk9TVUIgfCBSRUdfSUNBU0UpOworCQkJciA9IHJl Z2NvbXAoZTEtPmMucmVnZXgsIGQsIFJFR19FWFRFTkRFRCB8IFJFR19OT1NVQiB8IFJFR19JQ0FT RSk7CiAJCQlpZiAociAhPSAwKSB7CiAJCQkJY2hhciBtc2dbMjU2XTsKLQkJCQlyZWdlcnJvcihy LCBlMS0+Yi5yZWdleCwgbXNnLCBzaXplb2YgbXNnKTsKKwkJCQlyZWdlcnJvcihyLCBlMS0+Yy5y ZWdleCwgbXNnLCBzaXplb2YgbXNnKTsKIAkJCQlwYXJzZV9lcnJvcigiaW52YWxpZCByZWdleCAn JXMnOiAlcyIsIGQsIG1zZyk7CiAJCQl9CiAKQEAgLTExMDYsNTQgKzExMTQsNjQgQEAgbXNnX2Rh dGUoc3RydWN0IG1haWxpbmZvICptKQogfQogCiBjaGFyICoKLW1zZ19oZHIoc3RydWN0IG1haWxp bmZvICptLCBjb25zdCBjaGFyICpoKQorbXNnX2hkcihjaGFyICoqcywgY29uc3QgY2hhciAqaCwg c3RydWN0IG1haWxpbmZvICptKQogewogCXN0YXRpYyBjaGFyIGhkcmJ1Zls0MDk2XTsKIAogCWlm ICghbS0+bXNnICYmIG0tPmZwYXRoKSB7CiAJCWlmICghKG0tPm1zZyA9IGJsYXplODIyKG0tPmZw YXRoKSkpIHsKIAkJCW0tPmZwYXRoID0gTlVMTDsKLQkJCSpoZHJidWYgPSAwOwotCQkJcmV0dXJu IGhkcmJ1ZjsKKwkJCXJldHVybiBOVUxMOwogCQl9CiAJfQogCisJLy8gWFhYOiBvbmx5IHJldHVy biBvbmUgaGVhZGVyIGZvciBub3cKKwlpZiAoKnMpCisJCXJldHVybiBOVUxMOworCiAJY2hhciAq YjsKLQlpZiAoIW0tPm1zZyB8fCAhKGIgPSBibGF6ZTgyMl9jaGRyKG0tPm1zZywgaCkpKSB7Ci0J CSpoZHJidWYgPSAwOwotCQlyZXR1cm4gaGRyYnVmOwotCX0KKwlpZiAoIW0tPm1zZyB8fCAhKGIg PSBibGF6ZTgyMl9jaGRyKG0tPm1zZywgaCkpKQorCQlyZXR1cm4gTlVMTDsKKwkqcyA9IGI7CiAK IAlibGF6ZTgyMl9kZWNvZGVfcmZjMjA0NyhoZHJidWYsIGIsIHNpemVvZiBoZHJidWYgLSAxLCAi VVRGLTgiKTsKIAlyZXR1cm4gaGRyYnVmOwogfQogCiBjaGFyICoKLW1zZ19hZGRyKHN0cnVjdCBt YWlsaW5mbyAqbSwgY2hhciAqaCwgaW50IHQpCittc2dfaGRyX2FkZHIoY2hhciAqKnMsIGNvbnN0 IGNoYXIgKmgsIHN0cnVjdCBtYWlsaW5mbyAqbSwgaW50IHJkaXNwKQogewogCWlmICghbS0+bXNn ICYmIG0tPmZwYXRoKSB7CiAJCWlmICghKG0tPm1zZyA9IGJsYXplODIyKG0tPmZwYXRoKSkpIHsK IAkJCW0tPmZwYXRoID0gTlVMTDsKLQkJCXJldHVybiAiIjsKKwkJCXJldHVybiBOVUxMOwogCQl9 CiAJfQogCi0JY2hhciAqYjsKLQlpZiAobS0+bXNnID09IDAgfHwgKGIgPSBibGF6ZTgyMl9jaGRy KG0tPm1zZywgaCkpID09IDApCi0JCXJldHVybiAiIjsKKwljaGFyICpiID0gKnM7CisJaWYgKCFi KSB7CisJCWlmICghbS0+bXNnIHx8ICEoYiA9IGJsYXplODIyX2NoZHIobS0+bXNnLCBoKSkpCisJ CQlyZXR1cm4gTlVMTDsKKwl9CiAKIAljaGFyICpkaXNwLCAqYWRkcjsKLQlibGF6ZTgyMl9hZGRy KGIsICZkaXNwLCAmYWRkcik7CisJKnMgPSBibGF6ZTgyMl9hZGRyKGIsICZkaXNwLCAmYWRkcik7 CiAKLQlpZiAodCkgewotCQlpZiAoIWFkZHIpCi0JCQlyZXR1cm4gIiI7Ci0JCXJldHVybiBhZGRy OwotCX0gZWxzZSB7Ci0JCWlmICghZGlzcCkKLQkJCXJldHVybiAiIjsKKwlpZiAocmRpc3ApCiAJ CXJldHVybiBkaXNwOwotCX0KKwlyZXR1cm4gYWRkcjsKK30KKworY2hhciAqCittc2dfaGRyX2Fk ZHJlc3MoY2hhciAqKnMsIGNvbnN0IGNoYXIgKmgsIHN0cnVjdCBtYWlsaW5mbyAqbSkKK3sKKwly ZXR1cm4gbXNnX2hkcl9hZGRyKHMsIGgsIG0sIDApOworfQorCitjaGFyICoKK21zZ19oZHJfZGlz cGxheShjaGFyICoqcywgY29uc3QgY2hhciAqaCwgc3RydWN0IG1haWxpbmZvICptKQoreworCXJl dHVybiBtc2dfaGRyX2FkZHIocywgaCwgbSwgMSk7CiB9CiAKIEZJTEUgKgpAQCAtMTI4MywyMSAr MTMwMSwzNCBAQCBldmFsKHN0cnVjdCBleHByICplLCBzdHJ1Y3QgbWFpbGluZm8gKm0pCiAJY2Fz ZSBFWFBSX0dMT0JJOgogCWNhc2UgRVhQUl9SRUdFWDoKIAljYXNlIEVYUFJfUkVHRVhJOiB7Ci0J CWNvbnN0IGNoYXIgKnM7CisJCWNvbnN0IGNoYXIgKnMgPSBOVUxMOworCQljaGFyICpwID0gTlVM TDsKKwkJY2hhciAqKCpmbikoY2hhciAqKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgbWFpbGluZm8g KikgPSAwOworCQlpbnQgcnYgPSAwOwogCQlzd2l0Y2ggKGUtPmEucHJvcCkgeworCQljYXNlIFBS T1BfSERSOiBmbiA9IG1zZ19oZHI7IGJyZWFrOworCQljYXNlIFBST1BfSERSX0FERFI6IGZuID0g bXNnX2hkcl9hZGRyZXNzOyBicmVhazsKKwkJY2FzZSBQUk9QX0hEUl9ESVNQOiBmbiA9IG1zZ19o ZHJfZGlzcGxheTsgYnJlYWs7CiAJCWNhc2UgUFJPUF9QQVRIOiBzID0gbS0+ZnBhdGggPyBtLT5m cGF0aCA6ICIiOyBicmVhazsKLQkJY2FzZSBQUk9QX0ZST006IHMgPSBtc2dfYWRkcihtLCAiZnJv bSIsIGUtPmV4dHJhKTsgYnJlYWs7Ci0JCWNhc2UgUFJPUF9UTzogcyA9IG1zZ19hZGRyKG0sICJ0 byIsIGUtPmV4dHJhKTsgYnJlYWs7Ci0JCWRlZmF1bHQ6IHMgPSBtc2dfaGRyKG0sIGUtPmEuc3Ry aW5nKTsgYnJlYWs7CisJCWRlZmF1bHQ6IHJldHVybiAwOwogCQl9Ci0JCXN3aXRjaCAoZS0+b3Ap IHsKLQkJY2FzZSBFWFBSX1NUUkVROiByZXR1cm4gc3RyY21wKGUtPmIuc3RyaW5nLCBzKSA9PSAw OwotCQljYXNlIEVYUFJfU1RSRVFJOiByZXR1cm4gc3RyY2FzZWNtcChlLT5iLnN0cmluZywgcykg PT0gMDsKLQkJY2FzZSBFWFBSX0dMT0I6IHJldHVybiBmbm1hdGNoKGUtPmIuc3RyaW5nLCBzLCAw KSA9PSAwOwotCQljYXNlIEVYUFJfR0xPQkk6IHJldHVybiBmbm1hdGNoKGUtPmIuc3RyaW5nLCBz LCBGTk1fQ0FTRUZPTEQpID09IDA7Ci0JCWNhc2UgRVhQUl9SRUdFWDoKLQkJY2FzZSBFWFBSX1JF R0VYSTogcmV0dXJuIHJlZ2V4ZWMoZS0+Yi5yZWdleCwgcywgMCwgMCwgMCkgPT0gMDsKKwkJZm9y ICg7OykgeworCQkJaWYgKGZuICYmICEocyA9IGZuKCZwLCBlLT5iLnN0cmluZywgbSkpKQorCQkJ CWJyZWFrOworCQkJc3dpdGNoIChlLT5vcCkgeworCQkJY2FzZSBFWFBSX1NUUkVROiBydiA9IHN0 cmNtcChlLT5jLnN0cmluZywgcykgPT0gMDsgYnJlYWs7CisJCQljYXNlIEVYUFJfU1RSRVFJOiBy diA9IHN0cmNhc2VjbXAoZS0+Yy5zdHJpbmcsIHMpID09IDA7IGJyZWFrOworCQkJY2FzZSBFWFBS X0dMT0I6IHJ2ID0gZm5tYXRjaChlLT5jLnN0cmluZywgcywgMCkgPT0gMDsgYnJlYWs7CisJCQlj YXNlIEVYUFJfR0xPQkk6CisJCQkJcnYgPSBmbm1hdGNoKGUtPmMuc3RyaW5nLCBzLCBGTk1fQ0FT RUZPTEQpID09IDA7IGJyZWFrOworCQkJY2FzZSBFWFBSX1JFR0VYOgorCQkJY2FzZSBFWFBSX1JF R0VYSToKKwkJCQlydiA9IHJlZ2V4ZWMoZS0+Yy5yZWdleCwgcywgMCwgMCwgMCkgPT0gMDsKKwkJ CQlicmVhazsKKwkJCX0KKwkJCWlmICghZm4gfHwgcnYpIHJldHVybiBydjsKIAkJfQorCQlyZXR1 cm4gMDsKIAl9CiAJfQogCXJldHVybiAwOwpAQCAtMTUwNCw4ICsxNTM1LDkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKG9wdGluZCAhPSBhcmdjKSB7CiAJCWZvciAoYyA9 IG9wdGluZDsgYyA8IGFyZ2M7IGMrKykgewotCQkJaWYgKHN0cmNocihhcmd2W2NdLCAnLycpICYm IGFjY2Vzcyhhcmd2W2NdLCBSX09LKSA9PSAwKQorCQkJaWYgKHN0cmNocihhcmd2W2NdLCAnLycp ICYmIGFjY2Vzcyhhcmd2W2NdLCBSX09LKSA9PSAwKSB7CiAJCQkJYnJlYWs7CisJCQl9CiAJCQll eHByID0gY2hhaW4oZXhwciwgRVhQUl9BTkQsIHBhcnNlX21zZ2xpc3QoYXJndltjXSkpOwogCQl9 CiAKZGlmZiAtLWdpdCBhL3QvMjAwMC1tcGljay50IGIvdC8yMDAwLW1waWNrLnQKaW5kZXggOGUz MmFlYy4uOWFmNDQ0ZCAxMDA3NTUKLS0tIGEvdC8yMDAwLW1waWNrLnQKKysrIGIvdC8yMDAwLW1w aWNrLnQKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2ggLWUKIGNkICR7MCUvKn0KIC4gLi9saWIu c2gKLXBsYW4gMTMKK3BsYW4gMTUKIAogcm0gLXJmIHRlc3QuZGlyCiBta2RpciB0ZXN0LmRpcgpA QCAtNjYsNSArNjYsNyBAQCBjaGVja190ZXN0ICdzZWFyY2ggYWRkcicgLWVxIDIgJ21saXN0IGlu Ym94IHwgbXBpY2sgcGV0ZXJAZXhhbXBsZS5vcmcgfCB3YyAtbCcKIGNoZWNrX3Rlc3QgJ3NlYXJj aCBuYW1lJyAtZXEgMiAnbWxpc3QgaW5ib3ggfCBtcGljayAiUGV0ZXIgRXhhbXBsZSIgfCB3YyAt bCcKIGNoZWNrX3Rlc3QgJ3NlYXJjaCBzcGFtJyAtZXEgMSAnbWxpc3QgaW5ib3ggfCBtcGljayAt dCAidHJhc2hlZCAmJiBzdWJqZWN0ID1+IFwicGRmXCIiIHwgd2MgLWwnCiBjaGVja190ZXN0ICdh bnkgaGVhZGVyJyAtZXEgMSAnbWxpc3QgaW5ib3ggfCBtcGljayAtdCAiXCJGb29cIiA9fn4gXCJi YXJcIiIgfCB3YyAtbCcKK2NoZWNrX3Rlc3QgJ2FkZHIgZGVjb2RlIGFkZHInIC1lcSAyICdtbGlz dCBpbmJveCB8IG1waWNrIC10ICJmcm9tLmFkZHIgPT0gXCJwZXRlckBleGFtcGxlLm9yZ1wiIiB8 IHdjIC1sJworY2hlY2tfdGVzdCAnYWRkciBkZWNvZGUgZGlzcCcgLWVxIDIgJ21saXN0IGluYm94 IHwgbXBpY2sgLXQgImZyb20uZGlzcCA9PSBcIlBldGVyIEV4YW1wbGVcIiIgfCB3YyAtbCcKIAog KQoKRnJvbSA4YzJjMTY0MGViMWQ2NGYzNTFlNjNlNDllZWUyOGU5ZDlmODJhODhjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxtYWlsQGR1bmNhbm8uZGU+CkRhdGU6IEZy aSwgOCBGZWIgMjAxOSAxOTo0ODowMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTQvMjBdIHQvMjAw MC1tcGljay50OiBhZGQgdGVzdHMgZm9yIGFsbCB0aGUgbmV3IGZlYXR1cmVzCgotLS0KIHQvMjAw MC1tcGljay50IHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvdC8yMDAwLW1waWNrLnQgYi90LzIwMDAtbXBpY2sudAppbmRleCA5YWY0 NDRkLi44MDJlYTgzIDEwMDc1NQotLS0gYS90LzIwMDAtbXBpY2sudAorKysgYi90LzIwMDAtbXBp Y2sudApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaCAtZQogY2QgJHswJS8qfQogLiAuL2xpYi5z aAotcGxhbiAxNQorcGxhbiAyNgogCiBybSAtcmYgdGVzdC5kaXIKIG1rZGlyIHRlc3QuZGlyCkBA IC02MSw2ICs2MSwxMiBAQCBHcmVldGluZ3MKICNhcHBsaWNhdGlvbi9wZGYgLi4vLi4vbXNob3cK ICEKIAorY2F0IDw8ISA+c2hlYmFuZworIyEkKGNvbW1hbmQgLXYgbXBpY2spCitmcm9tLmFkZHIg PT0gInBldGVyQGV4YW1wbGUub3JnIiAmJiBmcm9tLmRpc3AgPT0gIlBldGVyIEV4YW1wbGUiCish CitjaG1vZCAreCBzaGViYW5nCisKIGNoZWNrICdzZWFyY2ggc3ViamVjdCcgJ21saXN0IGluYm94 IHwgbXBpY2sgL3dvdyB8IGdyZXAgLXEgaW5ib3gvY3VyLzk6MiwnCiBjaGVja190ZXN0ICdzZWFy Y2ggYWRkcicgLWVxIDIgJ21saXN0IGluYm94IHwgbXBpY2sgcGV0ZXJAZXhhbXBsZS5vcmcgfCB3 YyAtbCcKIGNoZWNrX3Rlc3QgJ3NlYXJjaCBuYW1lJyAtZXEgMiAnbWxpc3QgaW5ib3ggfCBtcGlj ayAiUGV0ZXIgRXhhbXBsZSIgfCB3YyAtbCcKQEAgLTY4LDUgKzc0LDQ4IEBAIGNoZWNrX3Rlc3Qg J3NlYXJjaCBzcGFtJyAtZXEgMSAnbWxpc3QgaW5ib3ggfCBtcGljayAtdCAidHJhc2hlZCAmJiBz dWJqZWN0ID1+IFwiCiBjaGVja190ZXN0ICdhbnkgaGVhZGVyJyAtZXEgMSAnbWxpc3QgaW5ib3gg fCBtcGljayAtdCAiXCJGb29cIiA9fn4gXCJiYXJcIiIgfCB3YyAtbCcKIGNoZWNrX3Rlc3QgJ2Fk ZHIgZGVjb2RlIGFkZHInIC1lcSAyICdtbGlzdCBpbmJveCB8IG1waWNrIC10ICJmcm9tLmFkZHIg PT0gXCJwZXRlckBleGFtcGxlLm9yZ1wiIiB8IHdjIC1sJwogY2hlY2tfdGVzdCAnYWRkciBkZWNv ZGUgZGlzcCcgLWVxIDIgJ21saXN0IGluYm94IHwgbXBpY2sgLXQgImZyb20uZGlzcCA9PSBcIlBl dGVyIEV4YW1wbGVcIiIgfCB3YyAtbCcKK2NoZWNrX3Rlc3QgJ3NoZWJhbmcnIC1lcSAyICdtbGlz dCBpbmJveCB8IC4vc2hlYmFuZyB8IHdjIC1sJworY2hlY2tfdGVzdCAndGVybmFyeScgLWVxIDIg J21saXN0IGluYm94IHwgbXBpY2sgLXQgImZyb20uYWRkciA9PSBcInBldGVyQGV4YW1wbGUub3Jn XCIgPyBwcmludCA6IHNraXAiIHwgd2MgLWwnCisKK2NoZWNrX3NhbWUgJ3BpcGUgY29tbWFuZCcg J21saXN0IGluYm94IHwgbXBpY2sgLXQgInByaW50IHxcImNhdCAtblwiICYmIHNraXAiJyAnbWxp c3QgaW5ib3ggfCBjYXQgLW4nCitjaGVja19zYW1lICdjcmVhdGUgZmlsZScgJ21saXN0IGluYm94 IHwgbXBpY2sgLXQgInByaW50ID5cImZvb1wiICYmIHNraXAiICYmIGNhdCBmb28nICdtbGlzdCBp bmJveCcKK2NoZWNrX3NhbWUgJ292ZXJ3cml0ZSBmaWxlJyAnbWxpc3QgaW5ib3ggfCBtcGljayAt dCAicHJpbnQgPlwiZm9vXCIgJiYgc2tpcCIgJiYgY2F0IGZvbycgJ21saXN0IGluYm94JworY2hl Y2tfc2FtZSAnYXBwZW5kIGZpbGUnICdtbGlzdCBpbmJveCB8IG1waWNrIC10ICJwcmludCA+Plwi Zm9vXCIgJiYgc2tpcCIgJiYgY2F0IGZvbycgJ21saXN0IGluYm94ICYmIG1saXN0IGluYm94Jwor CitjYXQgPDwhID5leHByCitsZXQgZm9vID0gZnJvbS5hZGRyID09ICJwZXRlckBleGFtcGxlLm9y ZyIKK2xldCBiYXIgPSBmcm9tLmRpc3AgPT0gIlBldGVyIEV4YW1wbGUiCisjIHJhbmRvbSBjb21t ZW50CitpbgorICBmb28gJiYgYmFyICMgYW5vdGhlciBjb21tZW50CishCitjaGVja190ZXN0ICds ZXQgZXhwcmVzc2lvbicgLWVxIDIgJ21saXN0IGluYm94IHwgbXBpY2sgLi9leHByIHwgd2MgLWwn CisKK2NhdCA8PCEgPmV4cHIKK2xldCBmb28gPQorICBsZXQgYmFyID0gZnJvbS5kaXNwID09ICJQ ZXRlciBFeGFtcGxlIgorICBpbgorICAgIGJhciAmJiBmcm9tLmFkZHIgPT0gInBldGVyQGV4YW1w bGUub3JnIgoraW4KKyAgZm9vCishCitjaGVja190ZXN0ICdsZXQgZXhwcmVzc2lvbiBuZXN0ZWQn IC1lcSAyICdtbGlzdCBpbmJveCB8IG1waWNrIC4vZXhwciB8IHdjIC1sJworCitjYXQgPDwhID5l eHByCitsZXQgZm9vID0gZnJvbS5hZGRyID09ICJwZXRlckBleGFtcGxlLm9yZyIKK2xldCBiYXIg PSBmb28gJiYgc3ViamVjdCA9fiAid293IgoraW4KKyAgYmFyCishCitjaGVja190ZXN0ICdsZXQg c2NvcGluZycgLWVxIDEgJ21saXN0IGluYm94IHwgbXBpY2sgLi9leHByIHwgd2MgLWwnCisKK2Nh dCA8PCEgPmV4cHIKK2xldCBmb28gPSBmcm9tLmFkZHIgPT0gInBldGVyQGV4YW1wbGUub3JnIgor bGV0IGJhciA9IGZyb20uZGlzcCA9PSAiUGV0ZXIgRXhhbXBsZSIKK2luCisgIGZvbyB8InNlZCAi InMvXi8xOiYvIiIiICYmIGJhciB8InNlZCAiInMvXi8yOiYvIiIiICYmIHNraXAKKyEKK2NoZWNr X3Rlc3QgJ211bHRpIHJlZGlyJyAtZXEgNCAnbWxpc3QgaW5ib3ggfCBtcGljayAuL2V4cHIgfCB3 YyAtbCcKK2NoZWNrX3Rlc3QgJ211bHRpIHJlZGlyIHByZWZpeGVzJyAtZXEgMiAnbWxpc3QgaW5i b3ggfCBtcGljayAuL2V4cHIgfCBjdXQgLWQ6IC1mMSB8IHNvcnQgLXUgfCB3YyAtbCcKIAogKQoK RnJvbSA0YjQxM2FhNmExOTJhODFiZDA4MGNhZDQ3YzM5M2Q4NDNlZjBhMzNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEdW5jYWVuIDxtYWlsQGR1bmNhbm8uZGU+CkRhdGU6IFRodSwg NiBKdW4gMjAxOSAyMTo0ODoyNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMjBdIG1waWNrOiBh bHdheXMgcG9pbnQgdG8gbWFsbG9jIG1lbW9yeSBpbiBwYXJzZV9zdHJpbmcKCi0tLQogbXBpY2su YyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9tcGljay5jIGIvbXBpY2suYwppbmRleCBiZmY5MGI4Li40NWMzNTBk IDEwMDY0NAotLS0gYS9tcGljay5jCisrKyBiL21waWNrLmMKQEAgLTU0NCw3ICs1NDQsNyBAQCBw YXJzZV9zdHJpbmcoY2hhciAqKnMpCiAJCQlidWZbbGVuXSA9IDA7CiAJCXBvcysrOwogCQl3cygp OwotCQkqcyA9IGJ1ZiA/IGJ1ZiA6ICIiOworCQkqcyA9IGJ1ZiA/IGJ1ZiA6IHhzdHJkdXAoIiIp OwogCQlyZXR1cm4gMTsKIAl9IGVsc2UgaWYgKCpwb3MgPT0gJyQnKSB7CiAJCWNoYXIgdDsKQEAg LTU1OSw3ICs1NTksNyBAQCBwYXJzZV9zdHJpbmcoY2hhciAqKnMpCiAJCSpwb3MgPSAwOwogCQkq cyA9IGdldGVudihlKTsKIAkJaWYgKCEqcykKLQkJCSpzID0gIiI7CisJCQkqcyA9IHhzdHJkdXAo IiIpOwogCQkqcG9zID0gdDsKIAkJd3MoKTsKIAkJcmV0dXJuIDE7CgpGcm9tIDFkNjYyYWVlMTI0 ZGE4NGU4MGFhMjU3YjQxNjExOTFjNzEyZTBlNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4KRGF0ZTogVGh1LCA2IEp1biAyMDE5IDIxOjQ4 OjU3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNi8yMF0gbXBpY2s6IGZpeCBtZW1vcnkgbGVhayBp biBwYXJzZV9kdXIKCi0tLQogbXBpY2suYyB8IDI5ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5kZXggNDVjMzUwZC4uMWUzZDBkZSAxMDA2 NDQKLS0tIGEvbXBpY2suYworKysgYi9tcGljay5jCkBAIC03OTEsMjAgKzc5MSwyMCBAQCBwYXJz ZV9kdXIoaW50NjRfdCAqbikKIAkJCXBhcnNlX2Vycm9yKCJjYW4ndCBzdGF0IGZpbGUgJyVzJzog JXMiLAogCQkJICAgIHMsIHN0cmVycm9yKGVycm5vKSk7CiAJCSpuID0gc3Quc3RfbXRpbWU7Ci0J CXJldHVybiAxOworCQlnb3RvIHJldDsKIAl9CiAKIAlzdHJ1Y3QgdG0gdG0gPSB7IDAgfTsKIAly ID0gc3RycHRpbWUocywgIiVZLSVtLSVkICVIOiVNOiVTIiwgJnRtKTsKIAlpZiAociAmJiAhKnIp IHsKIAkJKm4gPSBta3RpbWUoJnRtKTsKLQkJcmV0dXJuIDE7CisJCWdvdG8gcmV0OwogCX0KIAly ID0gc3RycHRpbWUocywgIiVZLSVtLSVkIiwgJnRtKTsKIAlpZiAociAmJiAhKnIpIHsKIAkJdG0u dG1faG91ciA9IHRtLnRtX21pbiA9IHRtLnRtX3NlYyA9IDA7CiAJCSpuID0gbWt0aW1lKCZ0bSk7 Ci0JCXJldHVybiAxOworCQlnb3RvIHJldDsKIAl9CiAJciA9IHN0cnB0aW1lKHMsICIlSDolTTol UyIsICZ0bSk7CiAJaWYgKHIgJiYgISpyKSB7CkBAIC04MTMsNyArODEzLDcgQEAgcGFyc2VfZHVy KGludDY0X3QgKm4pCiAJCXRtLnRtX21vbiA9IHRtbm93LT50bV9tb247CiAJCXRtLnRtX21kYXkg PSB0bW5vdy0+dG1fbWRheTsKIAkJKm4gPSBta3RpbWUoJnRtKTsKLQkJcmV0dXJuIDE7CisJCWdv dG8gcmV0OwogCX0KIAlyID0gc3RycHRpbWUocywgIiVIOiVNIiwgJnRtKTsKIAlpZiAociAmJiAh KnIpIHsKQEAgLTgyMywzOSArODIzLDQwIEBAIHBhcnNlX2R1cihpbnQ2NF90ICpuKQogCQl0bS50 bV9tZGF5ID0gdG1ub3ctPnRtX21kYXk7CiAJCXRtLnRtX3NlYyA9IDA7CiAJCSpuID0gbWt0aW1l KCZ0bSk7Ci0JCXJldHVybiAxOworCQlnb3RvIHJldDsKIAl9CiAKIAlpZiAoKnMgPT0gJy0nKSB7 Ci0JCXMrKzsKLQotCQllcnJubyA9IDA7CiAJCWludDY0X3QgZDsKLQkJZCA9IHN0cnRvbChzLCAm ciwgMTApOworCQllcnJubyA9IDA7CisJCWQgPSBzdHJ0b2wocysxLCAmciwgMTApOwogCQlpZiAo ZXJybm8gPT0gMCAmJiByWzBdID09ICdkJyAmJiAhclsxXSkgewogCQkJc3RydWN0IHRtICp0bW5v dyA9IGxvY2FsdGltZSgmbm93KTsKIAkJCXRtbm93LT50bV9tZGF5IC09IGQ7CiAJCQl0bW5vdy0+ dG1faG91ciA9IHRtbm93LT50bV9taW4gPSB0bW5vdy0+dG1fc2VjID0gMDsKIAkJCSpuID0gbWt0 aW1lKHRtbm93KTsKLQkJCXJldHVybiAxOworCQkJZ290byByZXQ7CiAJCX0KIAkJaWYgKGVycm5v ID09IDAgJiYgclswXSA9PSAnaCcgJiYgIXJbMV0pIHsKIAkJCSpuID0gbm93IC0gKGQqNjAqNjAp OwotCQkJcmV0dXJuIDE7CisJCQlnb3RvIHJldDsKIAkJfQogCQlpZiAoZXJybm8gPT0gMCAmJiBy WzBdID09ICdtJyAmJiAhclsxXSkgewogCQkJKm4gPSBub3cgLSAoZCo2MCk7Ci0JCQlyZXR1cm4g MTsKKwkJCWdvdG8gcmV0OwogCQl9CiAJCWlmIChlcnJubyA9PSAwICYmIHJbMF0gPT0gJ3MnICYm ICFyWzFdKSB7CiAJCQkqbiA9IG5vdyAtIGQ7Ci0JCQlyZXR1cm4gMTsKKwkJCWdvdG8gcmV0Owog CQl9Ci0JCXBhcnNlX2Vycm9yKCJpbnZhbGlkIHJlbGF0aXZlIHRpbWUgZm9ybWF0ICclcyciLCBz LTEpOworCQlwYXJzZV9lcnJvcigiaW52YWxpZCByZWxhdGl2ZSB0aW1lIGZvcm1hdCAnJXMnIiwg cyk7CiAJfQogCiAJcGFyc2VfZXJyb3IoImludmFsaWQgdGltZSBmb3JtYXQgJyVzJyIsIHMpOwog CXJldHVybiAwOworcmV0OgorCWZyZWUocyk7CisJcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBzdHJ1 Y3QgZXhwciAqCgpGcm9tIGE2ZWE0Y2I5MmJlZTQzZmU5YWM2NmFkNDc2MzU1Y2ZmOTU4NDkxYTkg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IER1bmNhZW4gPG1haWxAZHVuY2Fuby5kZT4K RGF0ZTogRnJpLCA3IEp1biAyMDE5IDAxOjI0OjQ5ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNy8y MF0gbXBpY2s6IHVzZSBzbHVycCBpbnN0ZWFkIG9mIG1tYXBpbmcgZmlsZXMKCi0tLQogbXBpY2su YyB8IDIxICsrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5k ZXggMWUzZDBkZS4uYWRmNmIwOSAxMDA2NDQKLS0tIGEvbXBpY2suYworKysgYi9tcGljay5jCkBA IC0xNTQyLDI0ICsxNTQyLDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWV4 cHIgPSBjaGFpbihleHByLCBFWFBSX0FORCwgcGFyc2VfbXNnbGlzdChhcmd2W2NdKSk7CiAJCX0K IAotCQlzdHJ1Y3Qgc3RhdCBzdDsKLQkJaW50IGZkOwotCQlzaXplX3QgbGVuOwogCQlmb3IgKDsg YyA8IGFyZ2M7IGMrKykgewotCQkJaWYgKChmZCA9IG9wZW4oYXJndltjXSwgT19SRE9OTFkpKSA9 PSAtMSkKLQkJCQlleGl0KDEpOwotCQkJaWYgKGZzdGF0KGZkLCAmc3QpID09IC0xKQotCQkJCWV4 aXQoMSk7Ci0JCQlsZW4gPSBzdC5zdF9zaXplOwotCQkJY2hhciAqcyA9IG1tYXAoMCwgbGVuKzEs IFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSwgZmQsIDApOwotCQkJaWYgKHMgPT0g TUFQX0ZBSUxFRCkgewotCQkJCXBlcnJvcigibW1hcCIpOworCQkJY2hhciAqczsKKwkJCW9mZl90 IGxlbjsKKwkJCWludCByID0gc2x1cnAoYXJndltjXSwgJnMsICZsZW4pOworCQkJaWYgKHIgIT0g MCkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIG9wZW5pbmcgZmlsZSAnJXMnOiAl c1xuIiwKKwkJCQkJYXJndjAsIGFyZ3ZbY10sIHN0cmVycm9yKHIpKTsKIAkJCQlleGl0KDEpOwog CQkJfQotCQkJc1tsZW4rMV0gPSAnXDAnOwotCQkJY2xvc2UoZmQpOwogCQkJZXhwciA9IGNoYWlu KGV4cHIsIEVYUFJfQU5ELCBwYXJzZV9idWYoYXJndltjXSwgcykpOwotCQkJbXVubWFwKHMsIGxl bisxKTsKKwkJCWZyZWUocyk7CiAJCX0KIAl9CiAKCkZyb20gNDc1ZmU0NDQ3YmE1ZmIwM2EyNmJj Yzk4OTNlNWEyYjdlMjFlNWFlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRHVuY2Fu IE92ZXJicnVjayA8bWFpbEBkdW5jYW5vLmRlPgpEYXRlOiBXZWQsIDUgRmViIDIwMjAgMTU6MzA6 NTMgKzAxMDAKU3ViamVjdDogW1BBVENIIDE4LzIwXSBtcGljazogZml4IG1lbW9yeSBsZWFrcwoK LS0tCiBtcGljay5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L21waWNrLmMgYi9tcGljay5jCmluZGV4IGFkZjZiMDkuLmQ3MjMwMWMgMTAwNjQ0Ci0tLSBhL21w aWNrLmMKKysrIGIvbXBpY2suYwpAQCAtNjgsNiArNjgsNyBAQCBlbnVtIG9wIHsKIAlFWFBSX1RZ UEUsCiAJRVhQUl9BTExTRVQsCiAJRVhQUl9BTllTRVQsCisJRVhQUl9CSU5ESU5HLAogfTsKIAog ZW51bSBwcm9wIHsKQEAgLTExOCw2ICsxMTksNyBAQCBzdHJ1Y3QgZXhwciB7CiAJCWludDY0X3Qg bnVtOwogCQlyZWdleF90ICpyZWdleDsKIAkJZW51bSB2YXIgdmFyOworCQlzdHJ1Y3QgYmluZGlu ZyAqYmluZGluZzsKIAl9IGEsIGIsIGM7CiAJaW50IGV4dHJhOwogfTsKQEAgLTMyMSw2ICszMjMs MTMgQEAgZnJlZWV4cHIoc3RydWN0IGV4cHIgKmUpCiAJY2FzZSBFWFBSX05PVDoKIAkJZnJlZWV4 cHIoZS0+YS5leHByKTsKIAkJYnJlYWs7CisJY2FzZSBFWFBSX0JJTkRJTkc6CisJCWUtPmEuYmlu ZGluZy0+cmVmY291bnQgLT0gMTsKKwkJaWYgKGUtPmEuYmluZGluZy0+cmVmY291bnQgPT0gMCkg eworCQkJZnJlZWV4cHIoZS0+YS5iaW5kaW5nLT5leHByKTsKKwkJCWZyZWUoZS0+YS5iaW5kaW5n KTsKKwkJfQorCQlicmVhazsKIAljYXNlIEVYUFJfUkVESVJfRklMRToKIAljYXNlIEVYUFJfUkVE SVJfUElQRToKIAkJZnJlZShlLT5hLnN0cmluZyk7CkBAIC0zMzgsMTIgKzM0NywxMiBAQCBmcmVl ZXhwcihzdHJ1Y3QgZXhwciAqZSkKIAkJY2FzZSBQUk9QX0hEUl9BRERSOgogCQljYXNlIFBST1Bf SERSX0RJU1A6CiAJCQlmcmVlKGUtPmIuc3RyaW5nKTsKLQkJZGVmYXVsdDogcmV0dXJuOwogCQl9 CiAJCWlmIChlLT5vcCA9PSBFWFBSX1JFR0VYIHx8IGUtPm9wID09IEVYUFJfUkVHRVhJKQogCQkJ cmVnZnJlZShlLT5jLnJlZ2V4KTsKIAkJZWxzZQogCQkJZnJlZShlLT5jLnN0cmluZyk7CisJCWJy ZWFrOwogCX0KIAlmcmVlKGUpOwogfQpAQCAtNDE5LDggKzQyOCwxMCBAQCBwYXJzZV9iaW5kaW5n KCkKIAkJZm9yIChzYyA9IHNjb3BlcTsgc2M7IHNjID0gc2MtPnByZXYpIHsKIAkJCWZvciAoYiA9 IHNjLT5iaW5kaW5nczsgYjsgYiA9IGItPm5leHQpIHsKIAkJCQlpZiAoYi0+bmxlbiA9PSBsICYm IHN0cm5jbXAoYi0+bmFtZSwgcywgbCkgPT0gMCkgeworCQkJCQlzdHJ1Y3QgZXhwciAqZSA9IG1r ZXhwcihFWFBSX0JJTkRJTkcpOworCQkJCQllLT5hLmJpbmRpbmcgPSBiOwogCQkJCQliLT5yZWZj b3VudCsrOwotCQkJCQlyZXR1cm4gYi0+ZXhwcjsKKwkJCQkJcmV0dXJuIGU7CiAJCQkJfQogCQkJ fQogCQl9CkBAIC00NjAsOSArNDcxLDEyIEBAIHBhcnNlX2xldCgpCiAJCWItPm5hbWUgPSBzOwog CQliLT5ubGVuID0gbDsKIAkJYi0+ZXhwciA9IGU7Ci0JCWlmICghc2MtPmJpbmRpbmdzKSBzYy0+ YmluZGluZ3MgPSBiOwotCQlpZiAoYnEpIGJxLT5uZXh0ID0gYjsKLQkJYnEgPSBiOworCQlpZiAo YnEpIHsKKwkJCWJxLT5uZXh0ID0gYjsKKwkJCWJxID0gYjsKKwkJfSBlbHNlIHsKKwkJCWJxID0g c2MtPmJpbmRpbmdzID0gYjsKKwkJfQogCQlpZiAoIXRva2VuKCJsZXQiKSkKIAkJCWJyZWFrOwog CX0KQEAgLTQ3NCw4ICs0ODgsOSBAQCBwYXJzZV9sZXQoKQogCXN0cnVjdCBiaW5kaW5nICpiczsK IAlmb3IgKGIgPSBzYy0+YmluZGluZ3M7IGI7IGIgPSBicykgewogCQlicyA9IGItPm5leHQ7Ci0J CWlmIChiLT5yZWZjb3VudCA9PSAwKQotCQkJZnJlZWV4cHIoYi0+ZXhwcik7CisJCWlmIChiLT5y ZWZjb3VudCAhPSAwKQorCQkJY29udGludWU7CisJCWZyZWVleHByKGItPmV4cHIpOwogCQlmcmVl KGIpOwogCX0KIApAQCAtMTIyNCw3ICsxMjM5LDggQEAgZXZhbChzdHJ1Y3QgZXhwciAqZSwgc3Ry dWN0IG1haWxpbmZvICptKQogCQkJOiBldmFsKGUtPmMuZXhwciwgbSk7CiAJY2FzZSBFWFBSX05P VDoKIAkJcmV0dXJuICFldmFsKGUtPmEuZXhwciwgbSk7Ci0JCXJldHVybiAxOworCWNhc2UgRVhQ Ul9CSU5ESU5HOgorCQlyZXR1cm4gZXZhbChlLT5hLmJpbmRpbmctPmV4cHIsIG0pOwogCWNhc2Ug RVhQUl9QUlVORToKIAkJcHJ1bmUgPSAxOwogCQlyZXR1cm4gMTsKCkZyb20gODliZTBhY2U3NGQ0 M2EwNmQyZTIyMDA0MjJlYzMzYWVkYjczZTUzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogRHVuY2FuIE92ZXJicnVjayA8bWFpbEBkdW5jYW5vLmRlPgpEYXRlOiBXZWQsIDUgRmViIDIw MjAgMTU6NDc6MjkgKzAxMDAKU3ViamVjdDogW1BBVENIIDE5LzIwXSB0LzIwMDAtbXBpY2sudDog Y2hlY2sgZm9yIGRvdWJsZSBmcmVlIHdpdGggYmluZGluZ3MKCi0tLQogdC8yMDAwLW1waWNrLnQg fCAxMSArKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS90LzIwMDAtbXBpY2sudCBiL3QvMjAwMC1tcGljay50Cmlu ZGV4IDgwMmVhODMuLjNjZmY4N2UgMTAwNzU1Ci0tLSBhL3QvMjAwMC1tcGljay50CisrKyBiL3Qv MjAwMC1tcGljay50CkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoIC1lCiBjZCAkezAlLyp9CiAu IC4vbGliLnNoCi1wbGFuIDI2CitwbGFuIDI3CiAKIHJtIC1yZiB0ZXN0LmRpcgogbWtkaXIgdGVz dC5kaXIKQEAgLTkxLDYgKzkxLDE1IEBAIGluCiAhCiBjaGVja190ZXN0ICdsZXQgZXhwcmVzc2lv bicgLWVxIDIgJ21saXN0IGluYm94IHwgbXBpY2sgLi9leHByIHwgd2MgLWwnCiAKK2NhdCA8PCEg PmV4cHIKK2xldCBmb28gPSBmcm9tLmFkZHIgPT0gInBldGVyQGV4YW1wbGUub3JnIgorbGV0IGJh ciA9IGZyb20uZGlzcCA9PSAiUGV0ZXIgRXhhbXBsZSIKKyMgcmFuZG9tIGNvbW1lbnQKK2luCisg IGZvbyAmJiBmb28KKyEKK2NoZWNrX3Rlc3QgJ2xldCBleHByZXNzaW9uIGRvdWJsZSBmcmVlJyAt ZXEgMiAnbWxpc3QgaW5ib3ggfCBtcGljayAuL2V4cHIgfCB3YyAtbCcKKwogY2F0IDw8ISA+ZXhw cgogbGV0IGZvbyA9CiAgIGxldCBiYXIgPSBmcm9tLmRpc3AgPT0gIlBldGVyIEV4YW1wbGUiCgpG cm9tIDY1MDE2YmVkOGJlZjI5YWUyYmViZWQ5NThhNzYzZTcyNTdlNTc2NTIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IER1bmNhbiBPdmVyYnJ1Y2sgPG1haWxAZHVuY2Fuby5kZT4KRGF0 ZTogV2VkLCA1IEZlYiAyMDIwIDE2OjA3OjQxICswMTAwClN1YmplY3Q6IFtQQVRDSCAyMC8yMF0g bXBpY2s6IGltcHJvdmUgdW5rbm93biBiaW5kaW5nIGVycm9yIGFuZCBhZGQgdGVzdCBjYXNlCgot LS0KIG1waWNrLmMgICAgICAgIHwgNiArKystLS0KIHQvMjAwMC1tcGljay50IHwgNSArKysrLQog MiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbXBpY2suYyBiL21waWNrLmMKaW5kZXggZDcyMzAxYy4uNWZjYjMwOCAxMDA2NDQKLS0t IGEvbXBpY2suYworKysgYi9tcGljay5jCkBAIC00MjMsNiArNDIzLDcgQEAgcGFyc2VfYmluZGlu ZygpCiAJc3RydWN0IGJpbmRpbmcgKmI7CiAJY2hhciAqczsKIAlzaXplX3QgbCA9IDA7CisJc3Ry dWN0IHBvcyBzYXZlcG9zID0geyBwb3MsIGxpbmUsIGxpbmVuciB9OwogCiAJaWYgKHBhcnNlX2lk ZW50KCZzLCAmbCkpIHsKIAkJZm9yIChzYyA9IHNjb3BlcTsgc2M7IHNjID0gc2MtPnByZXYpIHsK QEAgLTQzNiw5ICs0MzcsOCBAQCBwYXJzZV9iaW5kaW5nKCkKIAkJCX0KIAkJfQogCX0KLQkvLyBi YWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgaWRlbnQgaWYgdGhlcmUgd2FzIG9uZQotCXBvcyA9IHBv cy1sOwotCXBhcnNlX2Vycm9yX2F0KE5VTEwsICJ1bmtub3duIGV4cHJlc3Npb24iKTsKKworCXBh cnNlX2Vycm9yX2F0KCZzYXZlcG9zLCAidW5rbm93biBleHByZXNzaW9uIik7CiAJcmV0dXJuIDA7 CiB9CiAKZGlmZiAtLWdpdCBhL3QvMjAwMC1tcGljay50IGIvdC8yMDAwLW1waWNrLnQKaW5kZXgg M2NmZjg3ZS4uMGIxMjk2YyAxMDA3NTUKLS0tIGEvdC8yMDAwLW1waWNrLnQKKysrIGIvdC8yMDAw LW1waWNrLnQKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2ggLWUKIGNkICR7MCUvKn0KIC4gLi9s aWIuc2gKLXBsYW4gMjcKK3BsYW4gMjgKIAogcm0gLXJmIHRlc3QuZGlyCiBta2RpciB0ZXN0LmRp cgpAQCAtODIsNiArODIsOSBAQCBjaGVja19zYW1lICdjcmVhdGUgZmlsZScgJ21saXN0IGluYm94 IHwgbXBpY2sgLXQgInByaW50ID5cImZvb1wiICYmIHNraXAiICYmIGNhdAogY2hlY2tfc2FtZSAn b3ZlcndyaXRlIGZpbGUnICdtbGlzdCBpbmJveCB8IG1waWNrIC10ICJwcmludCA+XCJmb29cIiAm JiBza2lwIiAmJiBjYXQgZm9vJyAnbWxpc3QgaW5ib3gnCiBjaGVja19zYW1lICdhcHBlbmQgZmls ZScgJ21saXN0IGluYm94IHwgbXBpY2sgLXQgInByaW50ID4+XCJmb29cIiAmJiBza2lwIiAmJiBj YXQgZm9vJyAnbWxpc3QgaW5ib3ggJiYgbWxpc3QgaW5ib3gnCiAKK2NoZWNrX3NhbWUgJ3Vua25v d24gaWRlbnQnICdtbGlzdCBpbmJveCB8IG1waWNrIC10ICJsZXQgeCA9IHggaW4geCIgMj4mMScg XAorCSJlY2hvIFwibXBpY2s6IHBhcnNlIGVycm9yOiBhcmd2OjE6OTogdW5rbm93biBleHByZXNz aW9uIGF0ICd4IGluIHgnXCIiCisKIGNhdCA8PCEgPmV4cHIKIGxldCBmb28gPSBmcm9tLmFkZHIg PT0gInBldGVyQGV4YW1wbGUub3JnIgogbGV0IGJhciA9IGZyb20uZGlzcCA9PSAiUGV0ZXIgRXhh bXBsZSIK --===============3999447755081128265==--