kern/175794: Patches for ufs

Christoph Mallon christoph.mallon at gmx.de
Sun Feb 3 11:20:01 UTC 2013


>Number:         175794
>Category:       kern
>Synopsis:       Patches for ufs
>Confidential:   yes
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb 03 11:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
Hi Pedro,

please have a look at the the attached patches, which remove some cruft from ufs (as also noted by Bruce earlier) and correct inconsistent panic messages.

	Christoph

--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0001-ufs-Remove-dead-assignment.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="0001-ufs-Remove-dead-assignment.patch"

RnJvbSA0MWQ1NmU3ZmYzNmUyZjRmOTZhOTllOTZjNWZhOWQxOWM4ODg3YmFhIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogVHVlLCAyOSBKYW4gMjAxMyAwNjo0MzowMSArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggMS82XSB1ZnM6IFJlbW92ZSBkZWFkIGFzc2lnbm1lbnQuCgotLS0KIHN5
cy91ZnMvdWZzL3Vmc19sb29rdXAuYyB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRp
b24oLSkKCmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZz
L3Vmcy91ZnNfbG9va3VwLmMKaW5kZXggZDcyMjc4ZC4uMDJmZGE5ZiAxMDA2NDQKLS0tIGEv
c3lzL3Vmcy91ZnMvdWZzX2xvb2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAu
YwpAQCAtMTQzNCw3ICsxNDM0LDYgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2VfaW5v
LCBpbm9fdCBwYXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUKIAkJ
cmV0dXJuICgwKTsKIAlpZiAodGFyZ2V0LT5pX251bWJlciA9PSBST09USU5PKQogCQlyZXR1
cm4gKDApOwotCWVycm9yID0gMDsKIAlmb3IgKDs7KSB7CiAJCWVycm9yID0gdWZzX2Rpcl9k
ZF9pbm8odnAsIGNyZWQsICZkZF9pbm8pOwogCQlpZiAoZXJyb3IgIT0gMCkKLS0gCjEuOC4x
LjIKCg==
--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0002-ufs-Remove-the-unused-macro-MAXSYMLINKLEN.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="0002-ufs-Remove-the-unused-macro-MAXSYMLINKLEN.patch"

RnJvbSBlYzY2NDkxZDAwNzEyNTliYzVkMjliOWVkOGM2YTZjZjQyYzk4OGQ0IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDExOjMwOjM3ICswMTAwClN1Ympl
Y3Q6IFtQQVRDSCAyLzZdIHVmczogUmVtb3ZlIHRoZSB1bnVzZWQgbWFjcm8gTUFYU1lNTElO
S0xFTigpLgoKLS0tCiBzeXMvdWZzL3Vmcy9pbm9kZS5oIHwgNCAtLS0tCiAxIGZpbGUgY2hh
bmdlZCwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy9pbm9kZS5o
IGIvc3lzL3Vmcy91ZnMvaW5vZGUuaAppbmRleCA1OWIxNzBjLi42NDE2NjMyIDEwMDY0NAot
LS0gYS9zeXMvdWZzL3Vmcy9pbm9kZS5oCisrKyBiL3N5cy91ZnMvdWZzL2lub2RlLmgKQEAg
LTE1MSwxMCArMTUxLDYgQEAgc3RydWN0IGlub2RlIHsKIAkJKGlwKS0+aV9kaW4yLT5kIyNm
aWVsZCA9ICh2YWwpOyBcCiAJfSB3aGlsZSAoMCkKIAotI2RlZmluZQlNQVhTWU1MSU5LTEVO
KGlwKSBcCi0JKChpcCktPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkgPyBcCi0JKChOREFE
RFIgKyBOSUFERFIpICogc2l6ZW9mKHVmczFfZGFkZHJfdCkpIDogXAotCSgoTkRBRERSICsg
TklBRERSKSAqIHNpemVvZih1ZnMyX2RhZGRyX3QpKQogI2RlZmluZQlTSE9SVExJTksoaXAp
IFwKIAkoKChpcCktPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkgPyBcCiAJKGNhZGRyX3Qp
KGlwKS0+aV9kaW4xLT5kaV9kYiA6IChjYWRkcl90KShpcCktPmlfZGluMi0+ZGlfZGIpCi0t
IAoxLjguMS4yCgo=
--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0003-sys-Add-the-macro-PANIC-which-acts-like-panic-but-au.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0="0003-sys-Add-the-macro-PANIC-which-acts-like-panic-but-au.pa";
 filename*1="tch"

RnJvbSA4MDdiYzg2NTJiM2ZmOGI3YzI2ZGNhNWM3NGUwYTcxNWQzYmY2YWNjIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogTW9uLCAyOCBKYW4gMjAxMyAxNjowMzo0OCArMDEwMApTdWJq
ZWN0OiBbUEFUQ0ggMy82XSBzeXM6IEFkZCB0aGUgbWFjcm8gUEFOSUMoKSwgd2hpY2ggYWN0
cyBsaWtlIHBhbmljKCksIGJ1dAogYXV0b21hdGljYWxseSBhZGRzIHRoZSBuYW1lIG9mIHRo
ZSBjYWxsaW5nIGZ1bmN0aW9uLgoKLS0tCiBzeXMvc3lzL3N5c3RtLmggfCA2ICsrKysrKwog
MSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3N5cy9zeXMv
c3lzdG0uaCBiL3N5cy9zeXMvc3lzdG0uaAppbmRleCBkZDk2ZDcwLi41ZmY5ZWIyIDEwMDY0
NAotLS0gYS9zeXMvc3lzL3N5c3RtLmgKKysrIGIvc3lzL3N5cy9zeXN0bS5oCkBAIC0xNzYs
NiArMTc2LDEyIEBAIHZvaWQJZ193YWl0aWRsZSh2b2lkKTsKIAogdm9pZAlwYW5pYyhjb25z
dCBjaGFyICosIC4uLikgX19kZWFkMiBfX3ByaW50Zmxpa2UoMSwgMik7CiAKKy8qCisgKiBQ
YW5pYyBhbmQgYXV0b21hdGljYWxseSBwcmVwZW5kIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlv
biB0byB0aGUgcGFuaWMKKyAqIG1lc3NhZ2UuCisgKi8KKyNkZWZpbmUgUEFOSUMoZm10LCAu
Li4pIHBhbmljKCIlczogIiBmbXQsIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQorCiB2b2lk
CWNwdV9ib290KGludCk7CiB2b2lkCWNwdV9mbHVzaF9kY2FjaGUodm9pZCAqLCBzaXplX3Qp
Owogdm9pZAljcHVfcm9vdGNvbmYodm9pZCk7Ci0tIAoxLjguMS4yCgo=
--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0004-ufs-Use-PANIC-instead-of-panic-with-inconsistent-fun.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0="0004-ufs-Use-PANIC-instead-of-panic-with-inconsistent-fun.pa";
 filename*1="tch"

RnJvbSA4NWU3MWEzMmE1OTgzMjAxMDZkNTIwYzcwNjVhM2Q3MWJjMDJiZTU0IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDExOjM4OjI3ICswMTAwClN1Ympl
Y3Q6IFtQQVRDSCA0LzZdIHVmczogVXNlIFBBTklDKCkgaW5zdGVhZCBvZiBwYW5pYygpIHdp
dGggaW5jb25zaXN0ZW50CiBmdW5jdGlvbiBuYW1lcy4KCi0tLQogc3lzL3Vmcy91ZnMvdWZz
X2FjbC5jICAgICAgfCAgNCArKy0tCiBzeXMvdWZzL3Vmcy91ZnNfYm1hcC5jICAgICB8ICA2
ICsrKy0tLQogc3lzL3Vmcy91ZnMvdWZzX2Rpcmhhc2guYyAgfCAyNCArKysrKysrKysrKy0t
LS0tLS0tLS0tLQogc3lzL3Vmcy91ZnMvdWZzX2V4dGF0dHIuYyAgfCAgNiArKystLS0KIHN5
cy91ZnMvdWZzL3Vmc19nam91cm5hbC5jIHwgIDIgKy0KIHN5cy91ZnMvdWZzL3Vmc19sb29r
dXAuYyAgIHwgMTQgKysrKysrKy0tLS0tLS0KIHN5cy91ZnMvdWZzL3Vmc19xdW90YS5jICAg
IHwgMTAgKysrKystLS0tLQogc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMgICAgfCA0OCArKysr
KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA4IGZpbGVzIGNo
YW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L3N5cy91ZnMvdWZzL3Vmc19hY2wuYyBiL3N5cy91ZnMvdWZzL3Vmc19hY2wuYwppbmRleCA0
MDIxYjBhLi5mNDNlYmEwIDEwMDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfYWNsLmMKKysr
IGIvc3lzL3Vmcy91ZnMvdWZzX2FjbC5jCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB1ZnNfc3lu
Y19hY2xfZnJvbV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlwLCBzdHJ1Y3QgYWNsICphY2wpCiAJ
CQlicmVhazsKIAkKIAkJZGVmYXVsdDoKLQkJCXBhbmljKCJ1ZnNfc3luY19hY2xfZnJvbV9p
bm9kZSgpOiBiYWQgYWVfdGFnIik7CisJCQlQQU5JQygiYmFkIGFlX3RhZyIpOwogCQl9CiAJ
fQogCiAJaWYgKGFjbF9ncm91cF9vYmogPT0gTlVMTCkKLQkJcGFuaWMoInVmc19zeW5jX2Fj
bF9mcm9tX2lub2RlKCk6IG5vIEFDTF9HUk9VUF9PQkoiKTsKKwkJUEFOSUMoIm5vIEFDTF9H
Uk9VUF9PQkoiKTsKIAogCWlmIChhY2xfbWFzayA9PSBOVUxMKSB7CiAJCS8qCmRpZmYgLS1n
aXQgYS9zeXMvdWZzL3Vmcy91ZnNfYm1hcC5jIGIvc3lzL3Vmcy91ZnMvdWZzX2JtYXAuYwpp
bmRleCAyMjg4N2M4Li41ZWE0NzYyIDEwMDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfYm1h
cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19ibWFwLmMKQEAgLTE1MiwxMSArMTUyLDExIEBA
IHVmc19ibWFwYXJyYXkodnAsIGJuLCBibnAsIG5icCwgcnVucCwgcnVuYikKIAkJCWlmICgq
Ym5wID09IDApCiAJCQkJKmJucCA9IC0xOwogCQkJaWYgKG5icCA9PSBOVUxMKQotCQkJCXBh
bmljKCJ1ZnNfYm1hcGFycmF5OiBtYXBwaW5nIGV4dCBkYXRhIik7CisJCQkJUEFOSUMoIm1h
cHBpbmcgZXh0IGRhdGEiKTsKIAkJCW5icC0+Yl94ZmxhZ3MgfD0gQlhfQUxUREFUQTsKIAkJ
CXJldHVybiAoMCk7CiAJCX0gZWxzZSB7Ci0JCQlwYW5pYygidWZzX2JtYXBhcnJheTogYmxr
bm8gb3V0IG9mIHJhbmdlIik7CisJCQlQQU5JQygiYmxrbm8gb3V0IG9mIHJhbmdlIik7CiAJ
CX0KIAkJLyoKIAkJICogU2luY2UgdGhpcyBpcyBGRlMgaW5kZXBlbmRlbnQgY29kZSwgd2Ug
YXJlIG91dCBvZgpAQCAtMjE2LDcgKzIxNiw3IEBAIHVmc19ibWFwYXJyYXkodnAsIGJuLCBi
bnAsIG5icCwgcnVucCwgcnVuYikKIAkJaWYgKChicC0+Yl9mbGFncyAmIEJfQ0FDSEUpID09
IDApIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoIWRhZGRyKQotCQkJCXBhbmljKCJ1
ZnNfYm1hcGFycmF5OiBpbmRpcmVjdCBibG9jayBub3QgaW4gY2FjaGUiKTsKKwkJCQlQQU5J
QygiaW5kaXJlY3QgYmxvY2sgbm90IGluIGNhY2hlIik7CiAjZW5kaWYKIAkJCWJwLT5iX2Js
a25vID0gYmxrcHRydG9kYih1bXAsIGRhZGRyKTsKIAkJCWJwLT5iX2lvY21kID0gQklPX1JF
QUQ7CmRpZmYgLS1naXQgYS9zeXMvdWZzL3Vmcy91ZnNfZGlyaGFzaC5jIGIvc3lzL3Vmcy91
ZnMvdWZzX2Rpcmhhc2guYwppbmRleCBiNTFmZGZmLi4yMTcxNmM0IDEwMDY0NAotLS0gYS9z
eXMvdWZzL3Vmcy91ZnNfZGlyaGFzaC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19kaXJoYXNo
LmMKQEAgLTYyMSw3ICs2MjEsNyBAQCByZXN0YXJ0OgogCQlpZiAob2Zmc2V0ID09IERJUkhB
U0hfREVMKQogCQkJY29udGludWU7CiAJCWlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+PSBp
cC0+aV9zaXplKQotCQkJcGFuaWMoInVmc2Rpcmhhc2hfbG9va3VwOiBiYWQgb2Zmc2V0IGlu
IGhhc2ggYXJyYXkiKTsKKwkJCVBBTklDKCJiYWQgb2Zmc2V0IGluIGhhc2ggYXJyYXkiKTsK
IAkJaWYgKChvZmZzZXQgJiB+Ym1hc2spICE9IGJsa29mZikgewogCQkJaWYgKGJwICE9IE5V
TEwpCiAJCQkJYnJlbHNlKGJwKTsKQEAgLTc2MSw3ICs3NjEsNyBAQCB1ZnNkaXJoYXNoX2Zp
bmRmcmVlKHN0cnVjdCBpbm9kZSAqaXAsIGludCBzbG90bmVlZGVkLCBpbnQgKnNsb3RzaXpl
KQogCQlyZXR1cm4gKC0xKTsKIAl9CiAJaWYgKGZyZWVieXRlcyA8IHNsb3RuZWVkZWQpCi0J
CXBhbmljKCJ1ZnNkaXJoYXNoX2ZpbmRmcmVlOiBmcmVlIG1pc21hdGNoIik7CisJCVBBTklD
KCJmcmVlIG1pc21hdGNoIik7CiAJYnJlbHNlKGJwKTsKIAkqc2xvdHNpemUgPSBwb3MgKyBp
IC0gc2xvdHN0YXJ0OwogCXJldHVybiAoc2xvdHN0YXJ0KTsKQEAgLTk0OSwxMCArOTQ5LDEw
IEBAIHVmc2Rpcmhhc2hfZGlydHJ1bmMoc3RydWN0IGlub2RlICppcCwgZG9mZl90IG9mZnNl
dCkKIAkJZGgtPmRoX2ZpcnN0ZnJlZVtESF9ORlNUQVRTXSA9IC0xOwogCWZvciAoaSA9IGJs
b2NrOyBpIDwgZGgtPmRoX2RpcmJsa3M7IGkrKykKIAkJaWYgKGRoLT5kaF9ibGtmcmVlW2ld
ICE9IERJUkJMS1NJWiAvIERJUkFMSUdOKQotCQkJcGFuaWMoInVmc2Rpcmhhc2hfZGlydHJ1
bmM6IGJsb2NrcyBpbiB1c2UiKTsKKwkJCVBBTklDKCJibG9ja3MgaW4gdXNlIik7CiAJZm9y
IChpID0gMDsgaSA8IERIX05GU1RBVFM7IGkrKykKIAkJaWYgKGRoLT5kaF9maXJzdGZyZWVb
aV0gPj0gYmxvY2spCi0JCQlwYW5pYygidWZzZGlyaGFzaF9kaXJ0cnVuYzogZmlyc3QgZnJl
ZSBjb3JydXB0Iik7CisJCQlQQU5JQygiZmlyc3QgZnJlZSBjb3JydXB0Iik7CiAJZGgtPmRo
X2RpcmJsa3MgPSBibG9jazsKIAl1ZnNkaXJoYXNoX3JlbGVhc2UoZGgpOwogfQpAQCAtOTgw
LDEzICs5ODAsMTMgQEAgdWZzZGlyaGFzaF9jaGVja2Jsb2NrKHN0cnVjdCBpbm9kZSAqaXAs
IGNoYXIgKmJ1ZiwgZG9mZl90IG9mZnNldCkKIAogCWJsb2NrID0gb2Zmc2V0IC8gRElSQkxL
U0laOwogCWlmICgob2Zmc2V0ICYgKERJUkJMS1NJWiAtIDEpKSAhPSAwIHx8IGJsb2NrID49
IGRoLT5kaF9kaXJibGtzKQotCQlwYW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBiYWQg
b2Zmc2V0Iik7CisJCVBBTklDKCJiYWQgb2Zmc2V0Iik7CiAKIAluZnJlZSA9IDA7CiAJZm9y
IChpID0gMDsgaSA8IERJUkJMS1NJWjsgaSArPSBkcC0+ZF9yZWNsZW4pIHsKIAkJZHAgPSAo
c3RydWN0IGRpcmVjdCAqKShidWYgKyBpKTsKIAkJaWYgKGRwLT5kX3JlY2xlbiA9PSAwIHx8
IGkgKyBkcC0+ZF9yZWNsZW4gPiBESVJCTEtTSVopCi0JCQlwYW5pYygidWZzZGlyaGFzaF9j
aGVja2Jsb2NrOiBiYWQgZGlyIik7CisJCQlQQU5JQygiYmFkIGRpciIpOwogCiAJCWlmIChk
cC0+ZF9pbm8gPT0gMCkgewogI2lmIDAKQEAgLTk5Nyw3ICs5OTcsNyBAQCB1ZnNkaXJoYXNo
X2NoZWNrYmxvY2soc3RydWN0IGlub2RlICppcCwgY2hhciAqYnVmLCBkb2ZmX3Qgb2Zmc2V0
KQogCQkJICogb2Zmc2V0cywgYW5kIGZzY2sgZG9lcyBub3QgZml4IHRoZW0uCiAJCQkgKi8K
IAkJCWlmIChpICE9IDApCi0JCQkJcGFuaWMoInVmc2Rpcmhhc2hfY2hlY2tibG9jazogYmFk
IGRpciBpbm9kZSIpOworCQkJCVBBTklDKCJiYWQgZGlyIGlub2RlIik7CiAjZW5kaWYKIAkJ
CW5mcmVlICs9IGRwLT5kX3JlY2xlbjsKIAkJCWNvbnRpbnVlOwpAQCAtMTAwOSwxNyArMTAw
OSwxNyBAQCB1ZnNkaXJoYXNoX2NoZWNrYmxvY2soc3RydWN0IGlub2RlICppcCwgY2hhciAq
YnVmLCBkb2ZmX3Qgb2Zmc2V0KQogCQluZnJlZSArPSBkcC0+ZF9yZWNsZW4gLSBESVJTSVoo
MCwgZHApOwogCX0KIAlpZiAoaSAhPSBESVJCTEtTSVopCi0JCXBhbmljKCJ1ZnNkaXJoYXNo
X2NoZWNrYmxvY2s6IGJhZCBkaXIgZW5kIik7CisJCVBBTklDKCJiYWQgZGlyIGVuZCIpOwog
CiAJaWYgKGRoLT5kaF9ibGtmcmVlW2Jsb2NrXSAqIERJUkFMSUdOICE9IG5mcmVlKQotCQlw
YW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBiYWQgZnJlZSBjb3VudCIpOworCQlQQU5J
QygiYmFkIGZyZWUgY291bnQiKTsKIAogCWZmc2xvdCA9IEJMS0ZSRUUySURYKG5mcmVlIC8g
RElSQUxJR04pOwogCWZvciAoaSA9IDA7IGkgPD0gREhfTkZTVEFUUzsgaSsrKQogCQlpZiAo
ZGgtPmRoX2ZpcnN0ZnJlZVtpXSA9PSBibG9jayAmJiBpICE9IGZmc2xvdCkKLQkJCXBhbmlj
KCJ1ZnNkaXJoYXNoX2NoZWNrYmxvY2s6IGJhZCBmaXJzdC1mcmVlIik7CisJCQlQQU5JQygi
YmFkIGZpcnN0LWZyZWUiKTsKIAlpZiAoZGgtPmRoX2ZpcnN0ZnJlZVtmZnNsb3RdID09IC0x
KQotCQlwYW5pYygidWZzZGlyaGFzaF9jaGVja2Jsb2NrOiBtaXNzaW5nIGZpcnN0LWZyZWUg
ZW50cnkiKTsKKwkJUEFOSUMoIm1pc3NpbmcgZmlyc3QtZnJlZSBlbnRyeSIpOwogCXVmc2Rp
cmhhc2hfcmVsZWFzZShkaCk7CiB9CiAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHVmc2Rpcmhh
c2hfZmluZHNsb3Qoc3RydWN0IGRpcmhhc2ggKmRoLCBjaGFyICpuYW1lLCBpbnQgbmFtZWxl
biwgZG9mZl90IG9mZnNldCkKIAkgICAgREhfRU5UUlkoZGgsIHNsb3QpICE9IERJUkhBU0hf
RU1QVFkpCiAJCXNsb3QgPSBXUkFQSU5DUihzbG90LCBkaC0+ZGhfaGxlbik7CiAJaWYgKERI
X0VOVFJZKGRoLCBzbG90KSAhPSBvZmZzZXQpCi0JCXBhbmljKCJ1ZnNkaXJoYXNoX2ZpbmRz
bG90OiAnJS4qcycgbm90IGZvdW5kIiwgbmFtZWxlbiwgbmFtZSk7CisJCVBBTklDKCInJS4q
cycgbm90IGZvdW5kIiwgbmFtZWxlbiwgbmFtZSk7CiAKIAlyZXR1cm4gKHNsb3QpOwogfQpk
aWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX2V4dGF0dHIuYyBiL3N5cy91ZnMvdWZzL3Vm
c19leHRhdHRyLmMKaW5kZXggZDUyZjY1MC4uODljZDU2ZCAxMDA2NDQKLS0tIGEvc3lzL3Vm
cy91ZnMvdWZzX2V4dGF0dHIuYworKysgYi9zeXMvdWZzL3Vmcy91ZnNfZXh0YXR0ci5jCkBA
IC0xODgsMTAgKzE4OCwxMCBAQCB1ZnNfZXh0YXR0cl91ZXBtX2Rlc3Ryb3koc3RydWN0IHVm
c19leHRhdHRyX3Blcl9tb3VudCAqdWVwbSkKIHsKIAogCWlmICghKHVlcG0tPnVlcG1fZmxh
Z3MgJiBVRlNfRVhUQVRUUl9VRVBNX0lOSVRJQUxJWkVEKSkKLQkJcGFuaWMoInVmc19leHRh
dHRyX3VlcG1fZGVzdHJveTogbm90IGluaXRpYWxpemVkIik7CisJCVBBTklDKCJub3QgaW5p
dGlhbGl6ZWQiKTsKIAogCWlmICgodWVwbS0+dWVwbV9mbGFncyAmIFVGU19FWFRBVFRSX1VF
UE1fU1RBUlRFRCkpCi0JCXBhbmljKCJ1ZnNfZXh0YXR0cl91ZXBtX2Rlc3Ryb3k6IGNhbGxl
ZCB3aGlsZSBzdGlsbCBzdGFydGVkIik7CisJCVBBTklDKCJjYWxsZWQgd2hpbGUgc3RpbGwg
c3RhcnRlZCIpOwogCiAJLyoKIAkgKiBJdCdzIG5vdCBjbGVhciB0aGF0IGVpdGhlciBvcmRl
ciBmb3IgdGhlIG5leHQgdHdvIGxpbmVzIGlzCkBAIC0yOTgsNyArMjk4LDcgQEAgdWZzX2V4
dGF0dHJfbG9va3VwKHN0cnVjdCB2bm9kZSAqc3RhcnRfZHZwLCBpbnQgbG9ja3BhcmVudCwg
Y2hhciAqZGlybmFtZSwKIAl9CiAvKgogCWlmICh0YXJnZXRfdnAgPT0gc3RhcnRfZHZwKQot
CQlwYW5pYygidWZzX2V4dGF0dHJfbG9va3VwOiB0YXJnZXRfdnAgPT0gc3RhcnRfZHZwIik7
CisJCVBBTklDKCJ0YXJnZXRfdnAgPT0gc3RhcnRfZHZwIik7CiAqLwogCiAJaWYgKHRhcmdl
dF92cCAhPSBzdGFydF9kdnAgJiYgbG9ja3BhcmVudCA9PSBVRV9HRVRESVJfTE9DS1BBUkVO
VF9ET05UKQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX2dqb3VybmFsLmMgYi9zeXMv
dWZzL3Vmcy91ZnNfZ2pvdXJuYWwuYwppbmRleCA4ZTM1YzA4Li4wNWEyMTVkIDEwMDY0NAot
LS0gYS9zeXMvdWZzL3Vmcy91ZnNfZ2pvdXJuYWwuYworKysgYi9zeXMvdWZzL3Vmcy91ZnNf
Z2pvdXJuYWwuYwpAQCAtODAsNyArODAsNyBAQCB1ZnNfZ2pvdXJuYWxfbW9kcmVmKHN0cnVj
dCB2bm9kZSAqdnAsIGludCBjb3VudCkKIAkJY2dibm8gPSBmc2J0b2RiKGZzLCBjZ3RvZChm
cywgY2cpKTsKIAl9CiAJaWYgKCh1X2ludClpbm8gPj0gZnMtPmZzX2lwZyAqIGZzLT5mc19u
Y2cpCi0JCXBhbmljKCJ1ZnNfZ2pvdXJuYWxfbW9kcmVmOiByYW5nZTogZGV2ID0gJXMsIGlu
byA9ICVsdSwgZnMgPSAlcyIsCisJCVBBTklDKCJyYW5nZTogZGV2ID0gJXMsIGlubyA9ICVs
dSwgZnMgPSAlcyIsCiAJCSAgICBkZXZ0b25hbWUoZGV2KSwgKHVfbG9uZylpbm8sIGZzLT5m
c19mc21udCk7CiAJaWYgKChlcnJvciA9IGJyZWFkKGRldnZwLCBjZ2JubywgKGludClmcy0+
ZnNfY2dzaXplLCBOT0NSRUQsICZicCkpKSB7CiAJCWJyZWxzZShicCk7CmRpZmYgLS1naXQg
YS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMK
aW5kZXggMDJmZGE5Zi4uMTc2Yzg3OSAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZzX2xv
b2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAuYwpAQCAtNzcwLDcgKzc3MCw3
IEBAIHVmc19kaXJiYWQoaXAsIG9mZnNldCwgaG93KQogCiAJbXAgPSBJVE9WKGlwKS0+dl9t
b3VudDsKIAlpZiAoKG1wLT5tbnRfZmxhZyAmIE1OVF9SRE9OTFkpID09IDApCi0JCXBhbmlj
KCJ1ZnNfZGlyYmFkOiAlczogYmFkIGRpciBpbm8gJWp1IGF0IG9mZnNldCAlbGQ6ICVzIiwK
KwkJUEFOSUMoIiVzOiBiYWQgZGlyIGlubyAlanUgYXQgb2Zmc2V0ICVsZDogJXMiLAogCQkg
ICAgbXAtPm1udF9zdGF0LmZfbW50b25uYW1lLCAodWludG1heF90KWlwLT5pX251bWJlciwK
IAkJICAgIChsb25nKW9mZnNldCwgaG93KTsKIAllbHNlCkBAIC04MzksNyArODM5LDcgQEAg
dWZzX21ha2VkaXJlbnRyeShpcCwgY25wLCBuZXdkaXJwKQogCiAjaWZkZWYgSU5WQVJJQU5U
UwogCWlmICgoY25wLT5jbl9mbGFncyAmIFNBVkVOQU1FKSA9PSAwKQotCQlwYW5pYygidWZz
X21ha2VkaXJlbnRyeTogbWlzc2luZyBuYW1lIik7CisJCVBBTklDKCJtaXNzaW5nIG5hbWUi
KTsKICNlbmRpZgogCW5ld2RpcnAtPmRfaW5vID0gaXAtPmlfbnVtYmVyOwogCW5ld2RpcnAt
PmRfbmFtbGVuID0gY25wLT5jbl9uYW1lbGVuOwpAQCAtODk4LDcgKzg5OCw3IEBAIHVmc19k
aXJlbnRlcihkdnAsIHR2cCwgZGlycCwgY25wLCBuZXdkaXJicCwgaXNyZW5hbWUpCiAJCSAq
IG5ldyBlbnRyeSBpbnRvIGEgZnJlc2ggYmxvY2suCiAJCSAqLwogCQlpZiAoZHAtPmlfb2Zm
c2V0ICYgKERJUkJMS1NJWiAtIDEpKQotCQkJcGFuaWMoInVmc19kaXJlbnRlcjogbmV3Ymxr
Iik7CisJCQlQQU5JQygibmV3YmxrIik7CiAJCWZsYWdzID0gQkFfQ0xSQlVGOwogCQlpZiAo
IURPSU5HU09GVERFUChkdnApICYmICFET0lOR0FTWU5DKGR2cCkpCiAJCQlmbGFncyB8PSBJ
T19TWU5DOwpAQCAtMTA4MSwxMSArMTA4MSwxMSBAQCB1ZnNfZGlyZW50ZXIoZHZwLCB0dnAs
IGRpcnAsIGNucCwgbmV3ZGlyYnAsIGlzcmVuYW1lKQogCSAgICAoZXAtPmRfaW5vID09IFdJ
Tk8gJiYgbmFtbGVuID09IGRpcnAtPmRfbmFtbGVuICYmCiAJICAgICBiY21wKGVwLT5kX25h
bWUsIGRpcnAtPmRfbmFtZSwgZGlycC0+ZF9uYW1sZW4pID09IDApKSB7CiAJCWlmIChzcGFj
ZWZyZWUgKyBkc2l6ZSA8IG5ld2VudHJ5c2l6ZSkKLQkJCXBhbmljKCJ1ZnNfZGlyZW50ZXI6
IGNvbXBhY3QxIik7CisJCQlQQU5JQygiY29tcGFjdDEiKTsKIAkJZGlycC0+ZF9yZWNsZW4g
PSBzcGFjZWZyZWUgKyBkc2l6ZTsKIAl9IGVsc2UgewogCQlpZiAoc3BhY2VmcmVlIDwgbmV3
ZW50cnlzaXplKQotCQkJcGFuaWMoInVmc19kaXJlbnRlcjogY29tcGFjdDIiKTsKKwkJCVBB
TklDKCJjb21wYWN0MiIpOwogCQlkaXJwLT5kX3JlY2xlbiA9IHNwYWNlZnJlZTsKIAkJZXAt
PmRfcmVjbGVuID0gZHNpemU7CiAJCWVwID0gKHN0cnVjdCBkaXJlY3QgKikoKGNoYXIgKill
cCArIGRzaXplKTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHVmc19kaXJyZW1vdmUoZHZwLCBp
cCwgZmxhZ3MsIGlzcm1kaXIpCiAJCXVmc2Rpcmhhc2hfcmVtb3ZlKGRwLCByZXAsIGRwLT5p
X29mZnNldCk7CiAjZW5kaWYKIAlpZiAoaXAgJiYgcmVwLT5kX2lubyAhPSBpcC0+aV9udW1i
ZXIpCi0JCXBhbmljKCJ1ZnNfZGlycmVtb3ZlOiBpcCAlanUgZG9lcyBub3QgbWF0Y2ggZGly
ZW50IGlubyAlanVcbiIsCisJCVBBTklDKCJpcCAlanUgZG9lcyBub3QgbWF0Y2ggZGlyZW50
IGlubyAlanVcbiIsCiAJCSAgICAodWludG1heF90KWlwLT5pX251bWJlciwgKHVpbnRtYXhf
dClyZXAtPmRfaW5vKTsKIAlpZiAoZHAtPmlfY291bnQgPT0gMCkgewogCQkvKgpAQCAtMTQ2
OCw3ICsxNDY4LDcgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2VfaW5vLCBpbm9fdCBw
YXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUKIAl9CiAKIAlpZiAo
ZXJyb3IgPT0gRU5PVERJUikKLQkJcGFuaWMoImNoZWNrcGF0aDogLi4gbm90IGEgZGlyZWN0
b3J5XG4iKTsKKwkJUEFOSUMoIi4uIG5vdCBhIGRpcmVjdG9yeVxuIik7CiAJaWYgKHZwICE9
IHR2cCkKIAkJdnB1dCh2cCk7CiAJcmV0dXJuIChlcnJvcik7CmRpZmYgLS1naXQgYS9zeXMv
dWZzL3Vmcy91ZnNfcXVvdGEuYyBiL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCmluZGV4IDg3
YWM5YTEuLjliZTk0OTYgMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCisr
KyBiL3N5cy91ZnMvdWZzL3Vmc19xdW90YS5jCkBAIC00NzYsNyArNDc2LDcgQEAgY2hrZHF1
b3Qoc3RydWN0IGlub2RlICppcCkKIAkJaWYgKGlwLT5pX2RxdW90W2ldID09IE5PRFFVT1Qp
IHsKIAkJCVVGU19VTkxPQ0sodW1wKTsKIAkJCXZwcmludCgiY2hrZHF1b3Q6IG1pc3Npbmcg
ZHF1b3QiLCBJVE9WKGlwKSk7Ci0JCQlwYW5pYygiY2hrZHF1b3Q6IG1pc3NpbmcgZHF1b3Qi
KTsKKwkJCVBBTklDKCJtaXNzaW5nIGRxdW90Iik7CiAJCX0KIAl9CiAJVUZTX1VOTE9DSyh1
bXApOwpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgaGZvdW5kOgkJRFFJX0xPQ0soZHEpOwogCQkJ
cmV0dXJuIChFVVNFUlMpOwogCQl9CiAJCWlmIChkcS0+ZHFfY250IHx8IChkcS0+ZHFfZmxh
Z3MgJiBEUV9NT0QpKQotCQkJcGFuaWMoImRxZ2V0OiBmcmVlIGRxdW90IGlzbid0ICVwIiwg
ZHEpOworCQkJUEFOSUMoImZyZWUgZHF1b3QgaXNuJ3QgJXAiLCBkcSk7CiAJCVRBSUxRX1JF
TU9WRSgmZHFmcmVlbGlzdCwgZHEsIGRxX2ZyZWVsaXN0KTsKIAkJaWYgKGRxLT5kcV91bXAg
IT0gTlVMTCkKIAkJCUxJU1RfUkVNT1ZFKGRxLCBkcV9oYXNoKTsKQEAgLTE1MjMsMTIgKzE1
MjMsMTIgQEAgZHFzeW5jKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkcXVvdCAqZHEpCiAJ
bXAgPSBOVUxMOwogCWVycm9yID0gMDsKIAlpZiAoZHEgPT0gTk9EUVVPVCkKLQkJcGFuaWMo
ImRxc3luYzogZHF1b3QiKTsKKwkJUEFOSUMoImRxdW90Iik7CiAJaWYgKCh1bXAgPSBkcS0+
ZHFfdW1wKSA9PSBOVUxMKQogCQlyZXR1cm4gKDApOwogCVVGU19MT0NLKHVtcCk7CiAJaWYg
KChkcXZwID0gdW1wLT51bV9xdW90YXNbZHEtPmRxX3R5cGVdKSA9PSBOVUxMVlApCi0JCXBh
bmljKCJkcXN5bmM6IGZpbGUiKTsKKwkJUEFOSUMoImZpbGUiKTsKIAl2cmVmKGRxdnApOwog
CVVGU19VTkxPQ0sodW1wKTsKIApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgZHFmbHVzaChzdHJ1
Y3Qgdm5vZGUgKnZwKQogCQkJaWYgKGRxLT5kcV91bXAtPnVtX3F1b3Rhc1tkcS0+ZHFfdHlw
ZV0gIT0gdnApCiAJCQkJY29udGludWU7CiAJCQlpZiAoZHEtPmRxX2NudCkKLQkJCQlwYW5p
YygiZHFmbHVzaDogc3RyYXkgZHF1b3QiKTsKKwkJCQlQQU5JQygic3RyYXkgZHF1b3QiKTsK
IAkJCUxJU1RfUkVNT1ZFKGRxLCBkcV9oYXNoKTsKIAkJCWRxLT5kcV91bXAgPSAoc3RydWN0
IHVmc21vdW50ICopMDsKIAkJfQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy91ZnMvdWZzX3Zub3Bz
LmMgYi9zeXMvdWZzL3Vmcy91ZnNfdm5vcHMuYwppbmRleCBmNjliMWY5Li42MjQwMTkwIDEw
MDY0NAotLS0gYS9zeXMvdWZzL3Vmcy91ZnNfdm5vcHMuYworKysgYi9zeXMvdWZzL3Vmcy91
ZnNfdm5vcHMuYwpAQCAtOTEzLDcgKzkxMyw3IEBAIHVmc19jaG93bih2cCwgdWlkLCBnaWQs
IGNyZWQsIHRkKQogCXJldHVybiAoZXJyb3IpOwogZ29vZDoKIAlpZiAoZ2V0aW5vcXVvdGEo
aXApKQotCQlwYW5pYygidWZzX2Nob3duOiBsb3N0IHF1b3RhIik7CisJCVBBTklDKCJsb3N0
IHF1b3RhIik7CiAjZW5kaWYgLyogUVVPVEEgKi8KIAlpcC0+aV9mbGFnIHw9IElOX0NIQU5H
RTsKIAlpZiAoKGlwLT5pX21vZGUgJiAoSVNVSUQgfCBJU0dJRCkpICYmIChvdWlkICE9IHVp
ZCB8fCBvZ2lkICE9IGdpZCkpIHsKQEAgLTk5MSwxNSArOTkxLDE0IEBAIHVmc19saW5rKGFw
KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5jbl9mbGFncyAmIEhBU0JVRikg
PT0gMCkKLQkJcGFuaWMoInVmc19saW5rOiBubyBuYW1lIik7CisJCVBBTklDKCJubyBuYW1l
Iik7CiAjZW5kaWYKIAlpZiAodGR2cC0+dl9tb3VudCAhPSB2cC0+dl9tb3VudCkgewogCQll
cnJvciA9IEVYREVWOwogCQlnb3RvIG91dDsKIAl9CiAJaWYgKFZUT0kodGR2cCktPmlfZWZm
bmxpbmsgPCAyKQotCQlwYW5pYygidWZzX2xpbms6IEJhZCBsaW5rIGNvdW50ICVkIG9uIHBh
cmVudCIsCi0JCSAgICBWVE9JKHRkdnApLT5pX2VmZm5saW5rKTsKKwkJUEFOSUMoIkJhZCBs
aW5rIGNvdW50ICVkIG9uIHBhcmVudCIsIFZUT0kodGR2cCktPmlfZWZmbmxpbmspOwogCWlw
ID0gVlRPSSh2cCk7CiAJaWYgKChubGlua190KWlwLT5pX25saW5rID49IExJTktfTUFYKSB7
CiAJCWVycm9yID0gRU1MSU5LOwpAQCAtMTA2OCw5ICsxMDY3LDkgQEAgdWZzX3doaXRlb3V0
KGFwKQogCQkvKiBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IHdoaXRlb3V0ICovCiAjaWZkZWYg
SU5WQVJJQU5UUwogCQlpZiAoKGNucC0+Y25fZmxhZ3MgJiBTQVZFTkFNRSkgPT0gMCkKLQkJ
CXBhbmljKCJ1ZnNfd2hpdGVvdXQ6IG1pc3NpbmcgbmFtZSIpOworCQkJUEFOSUMoIm1pc3Np
bmcgbmFtZSIpOwogCQlpZiAoZHZwLT52X21vdW50LT5tbnRfbWF4c3ltbGlua2xlbiA8PSAw
KQotCQkJcGFuaWMoInVmc193aGl0ZW91dDogb2xkIGZvcm1hdCBmaWxlc3lzdGVtIik7CisJ
CQlQQU5JQygib2xkIGZvcm1hdCBmaWxlc3lzdGVtIik7CiAjZW5kaWYKIAogCQluZXdkaXIu
ZF9pbm8gPSBXSU5POwpAQCAtMTA4NCwxNCArMTA4MywxNCBAQCB1ZnNfd2hpdGVvdXQoYXAp
CiAJCS8qIHJlbW92ZSBhbiBleGlzdGluZyBkaXJlY3Rvcnkgd2hpdGVvdXQgKi8KICNpZmRl
ZiBJTlZBUklBTlRTCiAJCWlmIChkdnAtPnZfbW91bnQtPm1udF9tYXhzeW1saW5rbGVuIDw9
IDApCi0JCQlwYW5pYygidWZzX3doaXRlb3V0OiBvbGQgZm9ybWF0IGZpbGVzeXN0ZW0iKTsK
KwkJCVBBTklDKCJvbGQgZm9ybWF0IGZpbGVzeXN0ZW0iKTsKICNlbmRpZgogCiAJCWNucC0+
Y25fZmxhZ3MgJj0gfkRPV0hJVEVPVVQ7CiAJCWVycm9yID0gdWZzX2RpcnJlbW92ZShkdnAs
IE5VTEwsIGNucC0+Y25fZmxhZ3MsIDApOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlwYW5p
YygidWZzX3doaXRlb3V0OiB1bmtub3duIG9wIik7CisJCVBBTklDKCJ1bmtub3duIG9wIik7
CiAJfQogCXJldHVybiAoZXJyb3IpOwogfQpAQCAtMTE1NSw3ICsxMTU0LDcgQEAgdWZzX3Jl
bmFtZShhcCkKICNpZmRlZiBJTlZBUklBTlRTCiAJaWYgKCh0Y25wLT5jbl9mbGFncyAmIEhB
U0JVRikgPT0gMCB8fAogCSAgICAoZmNucC0+Y25fZmxhZ3MgJiBIQVNCVUYpID09IDApCi0J
CXBhbmljKCJ1ZnNfcmVuYW1lOiBubyBuYW1lIik7CisJCVBBTklDKCJubyBuYW1lIik7CiAj
ZW5kaWYKIAllbmRvZmYgPSAwOwogCW1wID0gdGR2cC0+dl9tb3VudDsKQEAgLTEzNTQsMTEg
KzEzNTMsMTEgQEAgcmVsb2NrOgogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIHVubG9ja291dDsK
IAkJaWYgKCh0Y25wLT5jbl9mbGFncyAmIFNBVkVTVEFSVCkgPT0gMCkKLQkJCXBhbmljKCJ1
ZnNfcmVuYW1lOiBsb3N0IHRvIHN0YXJ0ZGlyIik7CisJCQlQQU5JQygibG9zdCB0byBzdGFy
dGRpciIpOwogCX0KIAlpZiAoZmlwLT5pX2VmZm5saW5rID09IDAgfHwgZmRwLT5pX2VmZm5s
aW5rID09IDAgfHwKIAkgICAgdGRwLT5pX2VmZm5saW5rID09IDApCi0JCXBhbmljKCJCYWQg
ZWZmbmxpbmsgZmlwICVwLCBmZHAgJXAsIHRkcCAlcCIsIGZpcCwgZmRwLCB0ZHApOworCQlQ
QU5JQygiQmFkIGVmZm5saW5rIGZpcCAlcCwgZmRwICVwLCB0ZHAgJXAiLCBmaXAsIGZkcCwg
dGRwKTsKIAogCS8qCiAJICogMSkgQnVtcCBsaW5rIGNvdW50IHdoaWxlIHdlJ3JlIG1vdmlu
ZyBzdHVmZgpAQCAtMTM4NSw3ICsxMzg0LDcgQEAgcmVsb2NrOgogCSAqLwogCWlmICh0aXAg
PT0gTlVMTCkgewogCQlpZiAodGRwLT5pX2RldiAhPSBmaXAtPmlfZGV2KQotCQkJcGFuaWMo
InVmc19yZW5hbWU6IEVYREVWIik7CisJCQlQQU5JQygiRVhERVYiKTsKIAkJaWYgKGRvaW5n
ZGlyZWN0b3J5ICYmIG5ld3BhcmVudCkgewogCQkJLyoKIAkJCSAqIEFjY291bnQgZm9yICIu
LiIgaW4gbmV3IGRpcmVjdG9yeS4KQEAgLTE0MDksMTIgKzE0MDgsMTIgQEAgcmVsb2NrOgog
CQkJZW5kb2ZmID0gdGRwLT5pX2VuZG9mZjsKIAl9IGVsc2UgewogCQlpZiAodGlwLT5pX2Rl
diAhPSB0ZHAtPmlfZGV2IHx8IHRpcC0+aV9kZXYgIT0gZmlwLT5pX2RldikKLQkJCXBhbmlj
KCJ1ZnNfcmVuYW1lOiBFWERFViIpOworCQkJUEFOSUMoIkVYREVWIik7CiAJCS8qCiAJCSAq
IFNob3J0IGNpcmN1aXQgcmVuYW1lKGZvbywgZm9vKS4KIAkJICovCiAJCWlmICh0aXAtPmlf
bnVtYmVyID09IGZpcC0+aV9udW1iZXIpCi0JCQlwYW5pYygidWZzX3JlbmFtZTogc2FtZSBm
aWxlIik7CisJCQlQQU5JQygic2FtZSBmaWxlIik7CiAJCS8qCiAJCSAqIElmIHRoZSBwYXJl
bnQgZGlyZWN0b3J5IGlzICJzdGlja3kiLCB0aGVuIHRoZSBjYWxsZXIKIAkJICogbXVzdCBw
b3NzZXNzIFZBRE1JTiBmb3IgdGhlIHBhcmVudCBkaXJlY3RvcnksIG9yIHRoZQpAQCAtMTUw
Miw5ICsxNTAxLDkgQEAgcmVsb2NrOgogCWlmIChmZHZwID09IHRkdnApIHsKIAkJZXJyb3Ig
PSB1ZnNfbG9va3VwX2lubyhmZHZwLCBOVUxMLCBmY25wLCAmaW5vKTsKIAkJaWYgKGVycm9y
KQotCQkJcGFuaWMoInVmc19yZW5hbWU6IGZyb20gZW50cnkgd2VudCBhd2F5ISIpOworCQkJ
UEFOSUMoImZyb20gZW50cnkgd2VudCBhd2F5ISIpOwogCQlpZiAoaW5vICE9IGZpcC0+aV9u
dW1iZXIpCi0JCQlwYW5pYygidWZzX3JlbmFtZTogaW5vIG1pc21hdGNoICVqdSAhPSAlanVc
biIsCisJCQlQQU5JQygiaW5vIG1pc21hdGNoICVqdSAhPSAlanVcbiIsCiAJCQkgICAgKHVp
bnRtYXhfdClpbm8sICh1aW50bWF4X3QpZmlwLT5pX251bWJlcik7CiAJfQogCS8qCkBAIC0x
NjYzLDcgKzE2NjIsNyBAQCB1ZnNfZG9fcG9zaXgxZV9hY2xfaW5oZXJpdGFuY2VfZGlyKHN0
cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnR2cCwKIAkJICovCiAJCXByaW50Zigi
dWZzX21rZGlyOiBWT1BfR0VUQUNMKCkgYnV0IG5vIFZPUF9TRVRBQ0woKVxuIik7CiAJCS8q
Ci0JCXBhbmljKCJ1ZnNfbWtkaXI6IFZPUF9HRVRBQ0woKSBidXQgbm8gVk9QX1NFVEFDTCgp
Iik7CisJCVBBTklDKCJWT1BfR0VUQUNMKCkgYnV0IG5vIFZPUF9TRVRBQ0woKSIpOwogCQkg
Ki8KIAkJYnJlYWs7CiAKQEAgLTE3NDMsOCArMTc0Miw3IEBAIHVmc19kb19wb3NpeDFlX2Fj
bF9pbmhlcml0YW5jZV9maWxlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnR2
cCwKIAkJICovCiAJCXByaW50ZigidWZzX21ha2Vpbm9kZTogVk9QX0dFVEFDTCgpIGJ1dCBu
byAiCiAJCSAgICAiVk9QX1NFVEFDTCgpXG4iKTsKLQkJLyogcGFuaWMoInVmc19tYWtlaW5v
ZGU6IFZPUF9HRVRBQ0woKSBidXQgbm8gIgotCQkgICAgIlZPUF9TRVRBQ0woKSIpOyAqLwor
CQkvKiBQQU5JQygiVk9QX0dFVEFDTCgpIGJ1dCBubyBWT1BfU0VUQUNMKCkiKTsgKi8KIAkJ
YnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtMTgwOCw3ICsxODA2LDcgQEAgdWZzX21rZGlyKGFw
KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5jbl9mbGFncyAmIEhBU0JVRikg
PT0gMCkKLQkJcGFuaWMoInVmc19ta2Rpcjogbm8gbmFtZSIpOworCQlQQU5JQygibm8gbmFt
ZSIpOwogI2VuZGlmCiAJZHAgPSBWVE9JKGR2cCk7CiAJaWYgKChubGlua190KWRwLT5pX25s
aW5rID49IExJTktfTUFYKSB7CkBAIC0yMDU3LDggKzIwNTUsNyBAQCB1ZnNfcm1kaXIoYXAp
CiAJCWdvdG8gb3V0OwogCX0KIAlpZiAoZHAtPmlfZWZmbmxpbmsgPCAzKQotCQlwYW5pYygi
dWZzX2RpcnJlbTogQmFkIGxpbmsgY291bnQgJWQgb24gcGFyZW50IiwKLQkJICAgIGRwLT5p
X2VmZm5saW5rKTsKKwkJUEFOSUMoIkJhZCBsaW5rIGNvdW50ICVkIG9uIHBhcmVudCIsIGRw
LT5pX2VmZm5saW5rKTsKIAlpZiAoIXVmc19kaXJlbXB0eShpcCwgZHAtPmlfbnVtYmVyLCBj
bnAtPmNuX2NyZWQpKSB7CiAJCWVycm9yID0gRU5PVEVNUFRZOwogCQlnb3RvIG91dDsKQEAg
LTIyNTMsNyArMjI1MCw3IEBAIHVmc19yZWFkZGlyKGFwKQogCQl1X2xvbmcgKmNvb2tpZXA7
CiAKIAkJaWYgKHVpby0+dWlvX3NlZ2ZsZyAhPSBVSU9fU1lTU1BBQ0UgfHwgdWlvLT51aW9f
aW92Y250ICE9IDEpCi0JCQlwYW5pYygidWZzX3JlYWRkaXI6IHVuZXhwZWN0ZWQgdWlvIGZy
b20gTkZTIHNlcnZlciIpOworCQkJUEFOSUMoInVuZXhwZWN0ZWQgdWlvIGZyb20gTkZTIHNl
cnZlciIpOwogCQlkcFN0YXJ0ID0gKHN0cnVjdCBkaXJlbnQgKikKIAkJICAgICgoY2hhciAq
KXVpby0+dWlvX2lvdi0+aW92X2Jhc2UgLSAodWlvLT51aW9fb2Zmc2V0IC0gb2ZmKSk7CiAJ
CWRwRW5kID0gKHN0cnVjdCBkaXJlbnQgKikgdWlvLT51aW9faW92LT5pb3ZfYmFzZTsKQEAg
LTI1OTMsMTUgKzI1OTAsMTQgQEAgdWZzX21ha2Vpbm9kZShtb2RlLCBkdnAsIHZwcCwgY25w
KQogCXBkaXIgPSBWVE9JKGR2cCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICgoY25wLT5j
bl9mbGFncyAmIEhBU0JVRikgPT0gMCkKLQkJcGFuaWMoInVmc19tYWtlaW5vZGU6IG5vIG5h
bWUiKTsKKwkJUEFOSUMoIm5vIG5hbWUiKTsKICNlbmRpZgogCSp2cHAgPSBOVUxMOwogCWlm
ICgobW9kZSAmIElGTVQpID09IDApCiAJCW1vZGUgfD0gSUZSRUc7CiAKIAlpZiAoVlRPSShk
dnApLT5pX2VmZm5saW5rIDwgMikKLQkJcGFuaWMoInVmc19tYWtlaW5vZGU6IEJhZCBsaW5r
IGNvdW50ICVkIG9uIHBhcmVudCIsCi0JCSAgICBWVE9JKGR2cCktPmlfZWZmbmxpbmspOwor
CQlQQU5JQygiQmFkIGxpbmsgY291bnQgJWQgb24gcGFyZW50IiwgVlRPSShkdnApLT5pX2Vm
Zm5saW5rKTsKIAllcnJvciA9IFVGU19WQUxMT0MoZHZwLCBtb2RlLCBjbnAtPmNuX2NyZWQs
ICZ0dnApOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIChlcnJvcik7Ci0tIAoxLjguMS4yCgo=
--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0005-ffs-Use-PANIC-instead-of-panic-with-inconsistent-fun.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0="0005-ffs-Use-PANIC-instead-of-panic-with-inconsistent-fun.pa";
 filename*1="tch"

RnJvbSBlMDA2OTFjNWZjMDkyYTc4YjBmNGZmMjViZjIwYzI0YmViZDZkMTQ4IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDEyOjA1OjU4ICswMTAwClN1Ympl
Y3Q6IFtQQVRDSCA1LzZdIGZmczogVXNlIFBBTklDKCkgaW5zdGVhZCBvZiBwYW5pYygpIHdp
dGggaW5jb25zaXN0ZW50CiBmdW5jdGlvbiBuYW1lcy4KCi0tLQogc3lzL3Vmcy9mZnMvZmZz
X2FsbG9jLmMgICAgfCAgODIgKysrKy0tLS0KIHN5cy91ZnMvZmZzL2Zmc19iYWxsb2MuYyAg
IHwgIDE4ICstCiBzeXMvdWZzL2Zmcy9mZnNfaW5vZGUuYyAgICB8ICAxOCArLQogc3lzL3Vm
cy9mZnMvZmZzX3Jhd3JlYWQuYyAgfCAgIDIgKy0KIHN5cy91ZnMvZmZzL2Zmc19zbmFwc2hv
dC5jIHwgIDM4ICsrLS0KIHN5cy91ZnMvZmZzL2Zmc19zb2Z0ZGVwLmMgIHwgNTExICsrKysr
KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3lzL3Vmcy9mZnMv
ZmZzX3N1YnIuYyAgICAgfCAgMTAgKy0KIHN5cy91ZnMvZmZzL2Zmc19zdXNwZW5kLmMgIHwg
ICAyICstCiBzeXMvdWZzL2Zmcy9mZnNfdmZzb3BzLmMgICB8ICAxOSArLQogc3lzL3Vmcy9m
ZnMvZmZzX3Zub3BzLmMgICAgfCAgMjYgKy0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMzcgaW5z
ZXJ0aW9ucygrKSwgMzg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N5cy91ZnMvZmZz
L2Zmc19hbGxvYy5jIGIvc3lzL3Vmcy9mZnMvZmZzX2FsbG9jLmMKaW5kZXggNWFkNTc3NS4u
YWEyNTNmMyAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX2FsbG9jLmMKKysrIGIvc3lz
L3Vmcy9mZnMvZmZzX2FsbG9jLmMKQEAgLTE3MiwxMCArMTcyLDEwIEBAIGZmc19hbGxvYyhp
cCwgbGJuLCBicHJlZiwgc2l6ZSwgZmxhZ3MsIGNyZWQsIGJucCkKIAkJcHJpbnRmKCJkZXYg
PSAlcywgYnNpemUgPSAlbGQsIHNpemUgPSAlZCwgZnMgPSAlc1xuIiwKIAkJICAgIGRldnRv
bmFtZShpcC0+aV9kZXYpLCAobG9uZylmcy0+ZnNfYnNpemUsIHNpemUsCiAJCSAgICBmcy0+
ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX2FsbG9jOiBiYWQgc2l6ZSIpOworCQlQQU5JQygi
YmFkIHNpemUiKTsKIAl9CiAJaWYgKGNyZWQgPT0gTk9DUkVEKQotCQlwYW5pYygiZmZzX2Fs
bG9jOiBtaXNzaW5nIGNyZWRlbnRpYWwiKTsKKwkJUEFOSUMoIm1pc3NpbmcgY3JlZGVudGlh
bCIpOwogI2VuZGlmIC8qIElOVkFSSUFOVFMgKi8KIAlyZWNsYWltZWQgPSAwOwogcmV0cnk6
CkBAIC0yNjgsMTcgKzI2OCwxNyBAQCBmZnNfcmVhbGxvY2NnKGlwLCBsYnByZXYsIGJwcmV2
LCBicHJlZiwgb3NpemUsIG5zaXplLCBmbGFncywgY3JlZCwgYnBwKQogCW10eF9hc3NlcnQo
VUZTX01UWCh1bXApLCBNQV9PV05FRCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh2cC0+
dl9tb3VudC0+bW50X2tlcm5fZmxhZyAmIE1OVEtfU1VTUEVOREVEKQotCQlwYW5pYygiZmZz
X3JlYWxsb2NjZzogYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOworCQlQ
QU5JQygiYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOwogCWlmICgodV9p
bnQpb3NpemUgPiBmcy0+ZnNfYnNpemUgfHwgZnJhZ29mZihmcywgb3NpemUpICE9IDAgfHwK
IAkgICAgKHVfaW50KW5zaXplID4gZnMtPmZzX2JzaXplIHx8IGZyYWdvZmYoZnMsIG5zaXpl
KSAhPSAwKSB7CiAJCXByaW50ZigKIAkJImRldiA9ICVzLCBic2l6ZSA9ICVsZCwgb3NpemUg
PSAlZCwgbnNpemUgPSAlZCwgZnMgPSAlc1xuIiwKIAkJICAgIGRldnRvbmFtZShpcC0+aV9k
ZXYpLCAobG9uZylmcy0+ZnNfYnNpemUsIG9zaXplLAogCQkgICAgbnNpemUsIGZzLT5mc19m
c21udCk7Ci0JCXBhbmljKCJmZnNfcmVhbGxvY2NnOiBiYWQgc2l6ZSIpOworCQlQQU5JQygi
YmFkIHNpemUiKTsKIAl9CiAJaWYgKGNyZWQgPT0gTk9DUkVEKQotCQlwYW5pYygiZmZzX3Jl
YWxsb2NjZzogbWlzc2luZyBjcmVkZW50aWFsIik7CisJCVBBTklDKCJtaXNzaW5nIGNyZWRl
bnRpYWwiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJcmVjbGFpbWVkID0gMDsKIHJl
dHJ5OgpAQCAtMjkwLDcgKzI5MCw3IEBAIHJldHJ5OgogCQlwcmludGYoImRldiA9ICVzLCBi
c2l6ZSA9ICVsZCwgYnByZXYgPSAlamQsIGZzID0gJXNcbiIsCiAJCSAgICBkZXZ0b25hbWUo
aXAtPmlfZGV2KSwgKGxvbmcpZnMtPmZzX2JzaXplLCAoaW50bWF4X3QpYnByZXYsCiAJCSAg
ICBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX3JlYWxsb2NjZzogYmFkIGJwcmV2Iik7
CisJCVBBTklDKCJiYWQgYnByZXYiKTsKIAl9CiAJVUZTX1VOTE9DSyh1bXApOwogCS8qCkBA
IC0zMDQsNyArMzA0LDcgQEAgcmV0cnk6CiAKIAlpZiAoYnAtPmJfYmxrbm8gPT0gYnAtPmJf
bGJsa25vKSB7CiAJCWlmIChsYnByZXYgPj0gTkRBRERSKQotCQkJcGFuaWMoImZmc19yZWFs
bG9jY2c6IGxicHJldiBvdXQgb2YgcmFuZ2UiKTsKKwkJCVBBTklDKCJsYnByZXYgb3V0IG9m
IHJhbmdlIik7CiAJCWJwLT5iX2Jsa25vID0gZnNidG9kYihmcywgYnByZXYpOwogCX0KIApA
QCAtMzIzLDcgKzMyMyw3IEBAIHJldHJ5OgogCWJubyA9IGZmc19mcmFnZXh0ZW5kKGlwLCBj
ZywgYnByZXYsIG9zaXplLCBuc2l6ZSk7CiAJaWYgKGJubykgewogCQlpZiAoYnAtPmJfYmxr
bm8gIT0gZnNidG9kYihmcywgYm5vKSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2NnOiBiYWQg
YmxvY2tubyIpOworCQkJUEFOSUMoImJhZCBibG9ja25vIik7CiAJCWRlbHRhID0gYnRvZGIo
bnNpemUgLSBvc2l6ZSk7CiAJCURJUF9TRVQoaXAsIGlfYmxvY2tzLCBESVAoaXAsIGlfYmxv
Y2tzKSArIGRlbHRhKTsKIAkJaWYgKGZsYWdzICYgSU9fRVhUKQpAQCAtMzgzLDcgKzM4Myw3
IEBAIHJldHJ5OgogCWRlZmF1bHQ6CiAJCXByaW50ZigiZGV2ID0gJXMsIG9wdGltID0gJWxk
LCBmcyA9ICVzXG4iLAogCQkgICAgZGV2dG9uYW1lKGlwLT5pX2RldiksIChsb25nKWZzLT5m
c19vcHRpbSwgZnMtPmZzX2ZzbW50KTsKLQkJcGFuaWMoImZmc19yZWFsbG9jY2c6IGJhZCBv
cHRpbSIpOworCQlQQU5JQygiYmFkIG9wdGltIik7CiAJCS8qIE5PVFJFQUNIRUQgKi8KIAl9
CiAJYm5vID0gZmZzX2hhc2hhbGxvYyhpcCwgY2csIGJwcmVmLCByZXF1ZXN0LCBuc2l6ZSwg
ZmZzX2FsbG9jY2cpOwpAQCAtNTI0LDE1ICs1MjQsMTUgQEAgZmZzX3JlYWxsb2NibGtzX3Vm
czEoYXApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQogCQlpZiAoIWZmc19jaGVja2Js
ayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxr
bm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogdW5hbGxv
Y2F0ZWQgYmxvY2sgMSIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDEiKTsKIAlm
b3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspCiAJCWlmIChidWZsaXN0LT5ic19jaGlsZHJlbltp
XS0+Yl9sYmxrbm8gIT0gc3RhcnRfbGJuICsgaSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Js
a3M6IG5vbi1sb2dpY2FsIGNsdXN0ZXIiKTsKKwkJCVBBTklDKCJub24tbG9naWNhbCBjbHVz
dGVyIik7CiAJYmxrbm8gPSBidWZsaXN0LT5ic19jaGlsZHJlblswXS0+Yl9ibGtubzsKIAlz
c2l6ZSA9IGZzYnRvZGIoZnMsIGZzLT5mc19mcmFnKTsKIAlmb3IgKGkgPSAxOyBpIDwgbGVu
IC0gMTsgaSsrKQogCQlpZiAoYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8gIT0g
Ymxrbm8gKyAoaSAqIHNzaXplKSkKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Jsa3M6IG5vbi1w
aHlzaWNhbCBjbHVzdGVyICVkIiwgaSk7CisJCQlQQU5JQygibm9uLXBoeXNpY2FsIGNsdXN0
ZXIgJWQiLCBpKTsKICNlbmRpZgogCS8qCiAJICogSWYgdGhlIGNsdXN0ZXIgY3Jvc3NlcyB0
aGUgYm91bmRhcnkgZm9yIHRoZSBmaXJzdCBpbmRpcmVjdApAQCAtNTgxLDcgKzU4MSw3IEBA
IGZmc19yZWFsbG9jYmxrc191ZnMxKGFwKQogI2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKHN0
YXJ0X2x2bCA+IDAgJiYKIAkJICAgIHN0YXJ0X2FwW3N0YXJ0X2x2bCAtIDFdLmluX2xibiA9
PSBpZHAtPmluX2xibikKLQkJCXBhbmljKCJmZnNfcmVhbGxvY2Jsazogc3RhcnQgPT0gZW5k
Iik7CisJCQlQQU5JQygic3RhcnQgPT0gZW5kIik7CiAjZW5kaWYKIAkJc3NpemUgPSBsZW4g
LSAoaWRwLT5pbl9vZmYgKyAxKTsKIAkJaWYgKGJyZWFkKHZwLCBpZHAtPmluX2xibiwgKGlu
dClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmVicCkpCkBAIC02MjMsOSArNjIzLDkgQEAgZmZz
X3JlYWxsb2NibGtzX3VmczEoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoIWZmc19j
aGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0t
PmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczog
dW5hbGxvY2F0ZWQgYmxvY2sgMiIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDIi
KTsKIAkJaWYgKGRidG9mc2IoZnMsIGJ1Zmxpc3QtPmJzX2NoaWxkcmVuW2ldLT5iX2Jsa25v
KSAhPSAqYmFwKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogYWxsb2MgbWlzbWF0Y2gi
KTsKKwkJCVBBTklDKCJhbGxvYyBtaXNtYXRjaCIpOwogI2VuZGlmCiAjaWZkZWYgREVCVUcK
IAkJaWYgKHBydHJlYWxsb2MpCkBAIC02ODksNyArNjg5LDcgQEAgZmZzX3JlYWxsb2NibGtz
X3VmczEoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoIWZmc19jaGVja2JsayhpcCwK
IAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8pLCBm
cy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQg
YmxvY2sgMyIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJsb2NrIDMiKTsKICNlbmRpZgog
I2lmZGVmIERFQlVHCiAJCWlmIChwcnRyZWFsbG9jKQpAQCAtNzQ1LDE1ICs3NDUsMTUgQEAg
ZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQog
CQlpZiAoIWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNf
Y2hpbGRyZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19y
ZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMSIpOworCQkJUEFOSUMoInVuYWxsb2Nh
dGVkIGJsb2NrIDEiKTsKIAlmb3IgKGkgPSAxOyBpIDwgbGVuOyBpKyspCiAJCWlmIChidWZs
aXN0LT5ic19jaGlsZHJlbltpXS0+Yl9sYmxrbm8gIT0gc3RhcnRfbGJuICsgaSkKLQkJCXBh
bmljKCJmZnNfcmVhbGxvY2Jsa3M6IG5vbi1sb2dpY2FsIGNsdXN0ZXIiKTsKKwkJCVBBTklD
KCJub24tbG9naWNhbCBjbHVzdGVyIik7CiAJYmxrbm8gPSBidWZsaXN0LT5ic19jaGlsZHJl
blswXS0+Yl9ibGtubzsKIAlzc2l6ZSA9IGZzYnRvZGIoZnMsIGZzLT5mc19mcmFnKTsKIAlm
b3IgKGkgPSAxOyBpIDwgbGVuIC0gMTsgaSsrKQogCQlpZiAoYnVmbGlzdC0+YnNfY2hpbGRy
ZW5baV0tPmJfYmxrbm8gIT0gYmxrbm8gKyAoaSAqIHNzaXplKSkKLQkJCXBhbmljKCJmZnNf
cmVhbGxvY2Jsa3M6IG5vbi1waHlzaWNhbCBjbHVzdGVyICVkIiwgaSk7CisJCQlQQU5JQygi
bm9uLXBoeXNpY2FsIGNsdXN0ZXIgJWQiLCBpKTsKICNlbmRpZgogCS8qCiAJICogSWYgdGhl
IGNsdXN0ZXIgY3Jvc3NlcyB0aGUgYm91bmRhcnkgZm9yIHRoZSBmaXJzdCBpbmRpcmVjdApA
QCAtODAyLDcgKzgwMiw3IEBAIGZmc19yZWFsbG9jYmxrc191ZnMyKGFwKQogI2lmZGVmIElO
VkFSSUFOVFMKIAkJaWYgKHN0YXJ0X2x2bCA+IDAgJiYKIAkJICAgIHN0YXJ0X2FwW3N0YXJ0
X2x2bCAtIDFdLmluX2xibiA9PSBpZHAtPmluX2xibikKLQkJCXBhbmljKCJmZnNfcmVhbGxv
Y2Jsazogc3RhcnQgPT0gZW5kIik7CisJCQlQQU5JQygic3RhcnQgPT0gZW5kIik7CiAjZW5k
aWYKIAkJc3NpemUgPSBsZW4gLSAoaWRwLT5pbl9vZmYgKyAxKTsKIAkJaWYgKGJyZWFkKHZw
LCBpZHAtPmluX2xibiwgKGludClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmVicCkpCkBAIC04
NTIsOSArODUyLDkgQEAgZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAjaWZkZWYgSU5WQVJJ
QU5UUwogCQlpZiAoIWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlz
dC0+YnNfY2hpbGRyZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMo
ImZmc19yZWFsbG9jYmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMiIpOworCQkJUEFOSUMoInVu
YWxsb2NhdGVkIGJsb2NrIDIiKTsKIAkJaWYgKGRidG9mc2IoZnMsIGJ1Zmxpc3QtPmJzX2No
aWxkcmVuW2ldLT5iX2Jsa25vKSAhPSAqYmFwKQotCQkJcGFuaWMoImZmc19yZWFsbG9jYmxr
czogYWxsb2MgbWlzbWF0Y2giKTsKKwkJCVBBTklDKCJhbGxvYyBtaXNtYXRjaCIpOwogI2Vu
ZGlmCiAjaWZkZWYgREVCVUcKIAkJaWYgKHBydHJlYWxsb2MpCkBAIC05MTgsNyArOTE4LDcg
QEAgZmZzX3JlYWxsb2NibGtzX3VmczIoYXApCiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAo
IWZmc19jaGVja2JsayhpcCwKIAkJICAgZGJ0b2ZzYihmcywgYnVmbGlzdC0+YnNfY2hpbGRy
ZW5baV0tPmJfYmxrbm8pLCBmcy0+ZnNfYnNpemUpKQotCQkJcGFuaWMoImZmc19yZWFsbG9j
YmxrczogdW5hbGxvY2F0ZWQgYmxvY2sgMyIpOworCQkJUEFOSUMoInVuYWxsb2NhdGVkIGJs
b2NrIDMiKTsKICNlbmRpZgogI2lmZGVmIERFQlVHCiAJCWlmIChwcnRyZWFsbG9jKQpAQCAt
MTAyNiw3ICsxMDI2LDcgQEAgcmV0cnk6CiBkdXBfYWxsb2M6CiAJCXByaW50ZigibW9kZSA9
IDAlbywgaW51bSA9ICVsdSwgZnMgPSAlc1xuIiwKIAkJICAgIGlwLT5pX21vZGUsICh1X2xv
bmcpaXAtPmlfbnVtYmVyLCBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygiZmZzX3ZhbGxvYzog
ZHVwIGFsbG9jIik7CisJCVBBTklDKCJkdXAgYWxsb2MiKTsKIAl9CiAJaWYgKERJUChpcCwg
aV9ibG9ja3MpICYmIChmcy0+ZnNfZmxhZ3MgJiBGU19VTkNMRUFOKSA9PSAwKSB7ICAvKiBY
WFggKi8KIAkJcHJpbnRmKCJmcmVlIGlub2RlICVzLyVsdSBoYWQgJWxkIGJsb2Nrc1xuIiwK
QEAgLTEzNjUsNyArMTM2NSw3IEBAIGZmc19oYXNoYWxsb2MoaXAsIGNnLCBwcmVmLCBzaXpl
LCByc2l6ZSwgYWxsb2NhdG9yKQogCW10eF9hc3NlcnQoVUZTX01UWChpcC0+aV91bXApLCBN
QV9PV05FRCk7CiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmIChJVE9WKGlwKS0+dl9tb3VudC0+
bW50X2tlcm5fZmxhZyAmIE1OVEtfU1VTUEVOREVEKQotCQlwYW5pYygiZmZzX2hhc2hhbGxv
YzogYWxsb2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOworCQlQQU5JQygiYWxs
b2NhdGlvbiBvbiBzdXNwZW5kZWQgZmlsZXN5c3RlbSIpOwogI2VuZGlmCiAJZnMgPSBpcC0+
aV9mczsKIAkvKgpAQCAtMTc2OSwxNSArMTc2OSwxNSBAQCBmZnNfY2x1c3RlcmFsbG9jKGlw
LCBjZywgYnByZWYsIGxlbiwgdW51c2VkKQogCWJsa3NmcmVlID0gY2dfYmxrc2ZyZWUoY2dw
KTsKIAlmb3IgKGkgPSAxOyBpIDw9IGxlbjsgaSsrKQogCQlpZiAoIWZmc19pc2Jsb2NrKGZz
LCBibGtzZnJlZSwgZ290IC0gcnVuICsgaSkpCi0JCQlwYW5pYygiZmZzX2NsdXN0ZXJhbGxv
YzogbWFwIG1pc21hdGNoIik7CisJCQlQQU5JQygibWFwIG1pc21hdGNoIik7CiAJYm5vID0g
Y2diYXNlKGZzLCBjZykgKyBibGtzdG9mcmFncyhmcywgZ290IC0gcnVuICsgMSk7CiAJaWYg
KGR0b2coZnMsIGJubykgIT0gY2cpCi0JCXBhbmljKCJmZnNfY2x1c3RlcmFsbG9jOiBhbGxv
Y2F0ZWQgb3V0IG9mIGdyb3VwIik7CisJCVBBTklDKCJhbGxvY2F0ZWQgb3V0IG9mIGdyb3Vw
Iik7CiAJbGVuID0gYmxrc3RvZnJhZ3MoZnMsIGxlbik7CiAJVUZTX0xPQ0sodW1wKTsKIAlm
b3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IGZzLT5mc19mcmFnKQogCQlpZiAoZmZzX2FsbG9j
Y2dibGsoaXAsIGJwLCBibm8gKyBpLCBmcy0+ZnNfYnNpemUpICE9IGJubyArIGkpCi0JCQlw
YW5pYygiZmZzX2NsdXN0ZXJhbGxvYzogbG9zdCBibG9jayIpOworCQkJUEFOSUMoImxvc3Qg
YmxvY2siKTsKIAlBQ1RJVkVDTEVBUihmcywgY2cpOwogCVVGU19VTkxPQ0sodW1wKTsKIAli
ZHdyaXRlKGJwKTsKQEAgLTE4NTEsNyArMTg1MSw3IEBAIGZmc19ub2RlYWxsb2NjZyhpcCwg
Y2csIGlwcmVmLCBtb2RlLCB1bnVzZWQpCiAJCWlmIChsb2MgPT0gTlVMTCkgewogCQkJcHJp
bnRmKCJjZyA9ICVkLCBpcm90b3IgPSAlbGQsIGZzID0gJXNcbiIsCiAJCQkgICAgY2csIChs
b25nKWNncC0+Y2dfaXJvdG9yLCBmcy0+ZnNfZnNtbnQpOwotCQkJcGFuaWMoImZmc19ub2Rl
YWxsb2NjZzogbWFwIGNvcnJ1cHRlZCIpOworCQkJUEFOSUMoIm1hcCBjb3JydXB0ZWQiKTsK
IAkJCS8qIE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTE5NDEsNyArMTk0MSw3IEBAIGZm
c19ibGtmcmVlX2NnKHVtcCwgZnMsIGRldnZwLCBibm8sIHNpemUsIGludW0sIGRlcGhkKQog
CQlwcmludGYoImRldj0lcywgYm5vID0gJWpkLCBic2l6ZSA9ICVsZCwgc2l6ZSA9ICVsZCwg
ZnMgPSAlc1xuIiwKIAkJICAgIGRldnRvbmFtZShkZXYpLCAoaW50bWF4X3QpYm5vLCAobG9u
Zylmcy0+ZnNfYnNpemUsCiAJCSAgICBzaXplLCBmcy0+ZnNfZnNtbnQpOwotCQlwYW5pYygi
ZmZzX2Jsa2ZyZWVfY2c6IGJhZCBzaXplIik7CisJCVBBTklDKCJiYWQgc2l6ZSIpOwogCX0K
ICNlbmRpZgogCWlmICgodV9pbnQpYm5vID49IGZzLT5mc19zaXplKSB7CkBAIC0xOTc1LDcg
KzE5NzUsNyBAQCBmZnNfYmxrZnJlZV9jZyh1bXAsIGZzLCBkZXZ2cCwgYm5vLCBzaXplLCBp
bnVtLCBkZXBoZCkKIAkJCX0KIAkJCXByaW50ZigiZGV2ID0gJXMsIGJsb2NrID0gJWpkLCBm
cyA9ICVzXG4iLAogCQkJICAgIGRldnRvbmFtZShkZXYpLCAoaW50bWF4X3QpYm5vLCBmcy0+
ZnNfZnNtbnQpOwotCQkJcGFuaWMoImZmc19ibGtmcmVlX2NnOiBmcmVlaW5nIGZyZWUgYmxv
Y2siKTsKKwkJCVBBTklDKCJmcmVlaW5nIGZyZWUgYmxvY2siKTsKIAkJfQogCQlmZnNfc2V0
YmxvY2soZnMsIGJsa3NmcmVlLCBmcmFnbm8pOwogCQlmZnNfY2x1c3RlcmFjY3QoZnMsIGNn
cCwgZnJhZ25vLCAxKTsKQEAgLTE5OTgsNyArMTk5OCw3IEBAIGZmc19ibGtmcmVlX2NnKHVt
cCwgZnMsIGRldnZwLCBibm8sIHNpemUsIGludW0sIGRlcGhkKQogCQkJCXByaW50ZigiZGV2
ID0gJXMsIGJsb2NrID0gJWpkLCBmcyA9ICVzXG4iLAogCQkJCSAgICBkZXZ0b25hbWUoZGV2
KSwgKGludG1heF90KShibm8gKyBpKSwKIAkJCQkgICAgZnMtPmZzX2ZzbW50KTsKLQkJCQlw
YW5pYygiZmZzX2Jsa2ZyZWVfY2c6IGZyZWVpbmcgZnJlZSBmcmFnIik7CisJCQkJUEFOSUMo
ImZyZWVpbmcgZnJlZSBmcmFnIik7CiAJCQl9CiAJCQlzZXRiaXQoYmxrc2ZyZWUsIGNnYm5v
ICsgaSk7CiAJCX0KQEAgLTIxNjEsMTcgKzIxNjEsMTcgQEAgZmZzX2NoZWNrYmxrKGlwLCBi
bm8sIHNpemUpCiAJaWYgKCh1X2ludClzaXplID4gZnMtPmZzX2JzaXplIHx8IGZyYWdvZmYo
ZnMsIHNpemUpICE9IDApIHsKIAkJcHJpbnRmKCJic2l6ZSA9ICVsZCwgc2l6ZSA9ICVsZCwg
ZnMgPSAlc1xuIiwKIAkJICAgIChsb25nKWZzLT5mc19ic2l6ZSwgc2l6ZSwgZnMtPmZzX2Zz
bW50KTsKLQkJcGFuaWMoImZmc19jaGVja2JsazogYmFkIHNpemUiKTsKKwkJUEFOSUMoImJh
ZCBzaXplIik7CiAJfQogCWlmICgodV9pbnQpYm5vID49IGZzLT5mc19zaXplKQotCQlwYW5p
YygiZmZzX2NoZWNrYmxrOiBiYWQgYmxvY2sgJWpkIiwgKGludG1heF90KWJubyk7CisJCVBB
TklDKCJiYWQgYmxvY2sgJWpkIiwgKGludG1heF90KWJubyk7CiAJZXJyb3IgPSBicmVhZChp
cC0+aV9kZXZ2cCwgZnNidG9kYihmcywgY2d0b2QoZnMsIGR0b2coZnMsIGJubykpKSwKIAkJ
KGludClmcy0+ZnNfY2dzaXplLCBOT0NSRUQsICZicCk7CiAJaWYgKGVycm9yKQotCQlwYW5p
YygiZmZzX2NoZWNrYmxrOiBjZyBicmVhZCBmYWlsZWQiKTsKKwkJUEFOSUMoImNnIGJyZWFk
IGZhaWxlZCIpOwogCWNncCA9IChzdHJ1Y3QgY2cgKilicC0+Yl9kYXRhOwogCWlmICghY2df
Y2hrbWFnaWMoY2dwKSkKLQkJcGFuaWMoImZmc19jaGVja2JsazogY2cgbWFnaWMgbWlzbWF0
Y2giKTsKKwkJUEFOSUMoImNnIG1hZ2ljIG1pc21hdGNoIik7CiAJYnAtPmJfeGZsYWdzIHw9
IEJYX0JLR1JEV1JJVEU7CiAJYmxrc2ZyZWUgPSBjZ19ibGtzZnJlZShjZ3ApOwogCWNnYm5v
ID0gZHRvZ2QoZnMsIGJubyk7CkBAIC0yMTgzLDcgKzIxODMsNyBAQCBmZnNfY2hlY2tibGso
aXAsIGJubywgc2l6ZSkKIAkJCWlmIChpc3NldChibGtzZnJlZSwgY2dibm8gKyBpKSkKIAkJ
CQlmcmVlKys7CiAJCWlmIChmcmVlICE9IDAgJiYgZnJlZSAhPSBmcmFncykKLQkJCXBhbmlj
KCJmZnNfY2hlY2tibGs6IHBhcnRpYWxseSBmcmVlIGZyYWdtZW50Iik7CisJCQlQQU5JQygi
cGFydGlhbGx5IGZyZWUgZnJhZ21lbnQiKTsKIAl9CiAJYnJlbHNlKGJwKTsKIAlyZXR1cm4g
KCFmcmVlKTsKQEAgLTIyNDIsNyArMjI0Miw3IEBAIGZmc19mcmVlZmlsZSh1bXAsIGZzLCBk
ZXZ2cCwgaW5vLCBtb2RlLCB3a2hkKQogCQljZ2JubyA9IGZzYnRvZGIoZnMsIGNndG9kKGZz
LCBjZykpOwogCX0KIAlpZiAoaW5vID49IGZzLT5mc19pcGcgKiBmcy0+ZnNfbmNnKQotCQlw
YW5pYygiZmZzX2ZyZWVmaWxlOiByYW5nZTogZGV2ID0gJXMsIGlubyA9ICVqdSwgZnMgPSAl
cyIsCisJCVBBTklDKCJyYW5nZTogZGV2ID0gJXMsIGlubyA9ICVqdSwgZnMgPSAlcyIsCiAJ
CSAgICBkZXZ0b25hbWUoZGV2KSwgKHVpbnRtYXhfdClpbm8sIGZzLT5mc19mc21udCk7CiAJ
aWYgKChlcnJvciA9IGJyZWFkKGRldnZwLCBjZ2JubywgKGludClmcy0+ZnNfY2dzaXplLCBO
T0NSRUQsICZicCkpKSB7CiAJCWJyZWxzZShicCk7CkBAIC0yMjYxLDcgKzIyNjEsNyBAQCBm
ZnNfZnJlZWZpbGUodW1wLCBmcywgZGV2dnAsIGlubywgbW9kZSwgd2toZCkKIAkJcHJpbnRm
KCJkZXYgPSAlcywgaW5vID0gJWp1LCBmcyA9ICVzXG4iLCBkZXZ0b25hbWUoZGV2KSwKIAkJ
ICAgICh1aW50bWF4X3QpKGlubyArIGNnICogZnMtPmZzX2lwZyksIGZzLT5mc19mc21udCk7
CiAJCWlmIChmcy0+ZnNfcm9ubHkgPT0gMCkKLQkJCXBhbmljKCJmZnNfZnJlZWZpbGU6IGZy
ZWVpbmcgZnJlZSBpbm9kZSIpOworCQkJUEFOSUMoImZyZWVpbmcgZnJlZSBpbm9kZSIpOwog
CX0KIAljbHJiaXQoaW5vc3VzZWQsIGlubyk7CiAJaWYgKGlubyA8IGNncC0+Y2dfaXJvdG9y
KQpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgZmZzX21hcHNlYXJjaChmcywgY2dwLCBicHJlZiwg
YWxsb2NzaXopCiAJCWlmIChsb2MgPT0gMCkgewogCQkJcHJpbnRmKCJzdGFydCA9ICVkLCBs
ZW4gPSAlZCwgZnMgPSAlc1xuIiwKIAkJCSAgICBzdGFydCwgbGVuLCBmcy0+ZnNfZnNtbnQp
OwotCQkJcGFuaWMoImZmc19hbGxvY2NnOiBtYXAgY29ycnVwdGVkIik7CisJCQlQQU5JQygi
bWFwIGNvcnJ1cHRlZCIpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwogCQl9CiAJfQpAQCAtMjM5
MCw3ICsyMzkwLDcgQEAgZmZzX21hcHNlYXJjaChmcywgY2dwLCBicHJlZiwgYWxsb2NzaXop
CiAJCX0KIAl9CiAJcHJpbnRmKCJibm8gPSAlbHUsIGZzID0gJXNcbiIsICh1X2xvbmcpYm5v
LCBmcy0+ZnNfZnNtbnQpOwotCXBhbmljKCJmZnNfYWxsb2NjZzogYmxvY2sgbm90IGluIG1h
cCIpOworCVBBTklDKCJibG9jayBub3QgaW4gbWFwIik7CiAJcmV0dXJuICgtMSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL3N5cy91ZnMvZmZzL2Zmc19iYWxsb2MuYyBiL3N5cy91ZnMvZmZzL2Zm
c19iYWxsb2MuYwppbmRleCAwZTI5YmU4N2YuLjg3ODJjOTcgMTAwNjQ0Ci0tLSBhL3N5cy91
ZnMvZmZzL2Zmc19iYWxsb2MuYworKysgYi9zeXMvdWZzL2Zmcy9mZnNfYmFsbG9jLmMKQEAg
LTExNyw3ICsxMTcsNyBAQCBmZnNfYmFsbG9jX3VmczEoc3RydWN0IHZub2RlICp2cCwgb2Zm
X3Qgc3RhcnRvZmZzZXQsIGludCBzaXplLAogCXNpemUgPSBibGtvZmYoZnMsIHN0YXJ0b2Zm
c2V0KSArIHNpemU7CiAJcmVjbGFpbWVkID0gMDsKIAlpZiAoc2l6ZSA+IGZzLT5mc19ic2l6
ZSkKLQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMTogYmxrIHRvbyBiaWciKTsKKwkJUEFOSUMo
ImJsayB0b28gYmlnIik7CiAJKmJwcCA9IE5VTEw7CiAJaWYgKGZsYWdzICYgSU9fRVhUKQog
CQlyZXR1cm4gKEVPUE5PVFNVUFApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIGZmc19iYWxsb2Nf
dWZzMShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJ
ICovCiAJaWYgKGxibiA8IE5EQUREUikgewogCQlpZiAoZmxhZ3MgJiBCQV9NRVRBT05MWSkK
LQkJCXBhbmljKCJmZnNfYmFsbG9jX3VmczE6IEJBX01FVEFPTkxZIGZvciBkaXJlY3QgYmxv
Y2siKTsKKwkJCVBBTklDKCJCQV9NRVRBT05MWSBmb3IgZGlyZWN0IGJsb2NrIik7CiAJCW5i
ID0gZHAtPmRpX2RiW2xibl07CiAJCWlmIChuYiAhPSAwICYmIGlwLT5pX3NpemUgPj0gc21h
bGxsYmxrdG9zaXplKGZzLCBsYm4gKyAxKSkgewogCQkJZXJyb3IgPSBicmVhZCh2cCwgbGJu
LCBmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmJwKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBmZnNf
YmFsbG9jX3VmczEoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qgc3RhcnRvZmZzZXQsIGludCBz
aXplLAogCQlyZXR1cm4oZXJyb3IpOwogI2lmZGVmIElOVkFSSUFOVFMKIAlpZiAobnVtIDwg
MSkKLQkJcGFuaWMgKCJmZnNfYmFsbG9jX3VmczE6IHVmc19nZXRsYm5zIHJldHVybmVkIGlu
ZGlyZWN0IGJsb2NrIik7CisJCVBBTklDKCJ1ZnNfZ2V0bGJucyByZXR1cm5lZCBpbmRpcmVj
dCBibG9jayIpOwogI2VuZGlmCiAJc2F2ZWRfaW5iZGZsdXNoID0gY3VydGhyZWFkX3BmbGFn
c19zZXQoVERQX0lOQkRGTFVTSCk7CiAJLyoKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBmYWlsOgog
CQlyID0gYnJlYWQodnAsIGluZGlyc1t1bndpbmRpZHhdLmluX2xibiwgCiAJCSAgICAoaW50
KWZzLT5mc19ic2l6ZSwgTk9DUkVELCAmYnApOwogCQlpZiAocikgewotCQkJcGFuaWMoIkNv
dWxkIG5vdCB1bndpbmQgaW5kaXJlY3QgYmxvY2ssIGVycm9yICVkIiwgcik7CisJCQlQQU5J
QygiQ291bGQgbm90IHVud2luZCBpbmRpcmVjdCBibG9jaywgZXJyb3IgJWQiLCByKTsKIAkJ
CWJyZWxzZShicCk7CiAJCX0gZWxzZSB7CiAJCQliYXAgPSAodWZzMV9kYWRkcl90ICopYnAt
PmJfZGF0YTsKQEAgLTU0OSw3ICs1NDksNyBAQCBmZnNfYmFsbG9jX3VmczIoc3RydWN0IHZu
b2RlICp2cCwgb2ZmX3Qgc3RhcnRvZmZzZXQsIGludCBzaXplLAogCXNpemUgPSBibGtvZmYo
ZnMsIHN0YXJ0b2Zmc2V0KSArIHNpemU7CiAJcmVjbGFpbWVkID0gMDsKIAlpZiAoc2l6ZSA+
IGZzLT5mc19ic2l6ZSkKLQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjogYmxrIHRvbyBiaWci
KTsKKwkJUEFOSUMoImJsayB0b28gYmlnIik7CiAJKmJwcCA9IE5VTEw7CiAJaWYgKGxibiA8
IDApCiAJCXJldHVybiAoRUZCSUcpOwpAQCAtNjAwLDcgKzYwMCw3IEBAIGZmc19iYWxsb2Nf
dWZzMihzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJ
CSAqIEFsbCBibG9ja3MgYXJlIGRpcmVjdCBibG9ja3MKIAkJICovCiAJCWlmIChmbGFncyAm
IEJBX01FVEFPTkxZKQotCQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjogQkFfTUVUQU9OTFkg
Zm9yIGV4dCBibG9jayIpOworCQkJUEFOSUMoIkJBX01FVEFPTkxZIGZvciBleHQgYmxvY2si
KTsKIAkJbmIgPSBkcC0+ZGlfZXh0YltsYm5dOwogCQlpZiAobmIgIT0gMCAmJiBkcC0+ZGlf
ZXh0c2l6ZSA+PSBzbWFsbGxibGt0b3NpemUoZnMsIGxibiArIDEpKSB7CiAJCQllcnJvciA9
IGJyZWFkKHZwLCAtMSAtIGxibiwgZnMtPmZzX2JzaXplLCBOT0NSRUQsICZicCk7CkBAIC03
MDQsNyArNzA0LDcgQEAgZmZzX2JhbGxvY191ZnMyKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90
IHN0YXJ0b2Zmc2V0LCBpbnQgc2l6ZSwKIAkgKi8KIAlpZiAobGJuIDwgTkRBRERSKSB7CiAJ
CWlmIChmbGFncyAmIEJBX01FVEFPTkxZKQotCQkJcGFuaWMoImZmc19iYWxsb2NfdWZzMjog
QkFfTUVUQU9OTFkgZm9yIGRpcmVjdCBibG9jayIpOworCQkJUEFOSUMoIkJBX01FVEFPTkxZ
IGZvciBkaXJlY3QgYmxvY2siKTsKIAkJbmIgPSBkcC0+ZGlfZGJbbGJuXTsKIAkJaWYgKG5i
ICE9IDAgJiYgaXAtPmlfc2l6ZSA+PSBzbWFsbGxibGt0b3NpemUoZnMsIGxibiArIDEpKSB7
CiAJCQllcnJvciA9IGJyZWFkKHZwLCBsYm4sIGZzLT5mc19ic2l6ZSwgTk9DUkVELCAmYnAp
OwpAQCAtNzc0LDcgKzc3NCw3IEBAIGZmc19iYWxsb2NfdWZzMihzdHJ1Y3Qgdm5vZGUgKnZw
LCBvZmZfdCBzdGFydG9mZnNldCwgaW50IHNpemUsCiAJCXJldHVybihlcnJvcik7CiAjaWZk
ZWYgSU5WQVJJQU5UUwogCWlmIChudW0gPCAxKQotCQlwYW5pYyAoImZmc19iYWxsb2NfdWZz
MjogdWZzX2dldGxibnMgcmV0dXJuZWQgaW5kaXJlY3QgYmxvY2siKTsKKwkJUEFOSUMoInVm
c19nZXRsYm5zIHJldHVybmVkIGluZGlyZWN0IGJsb2NrIik7CiAjZW5kaWYKIAlzYXZlZF9p
bmJkZmx1c2ggPSBjdXJ0aHJlYWRfcGZsYWdzX3NldChURFBfSU5CREZMVVNIKTsKIAkvKgpA
QCAtMTAyNSw3ICsxMDI1LDcgQEAgZmFpbDoKIAkJciA9IGJyZWFkKHZwLCBpbmRpcnNbdW53
aW5kaWR4XS5pbl9sYm4sIAogCQkgICAgKGludClmcy0+ZnNfYnNpemUsIE5PQ1JFRCwgJmJw
KTsKIAkJaWYgKHIpIHsKLQkJCXBhbmljKCJDb3VsZCBub3QgdW53aW5kIGluZGlyZWN0IGJs
b2NrLCBlcnJvciAlZCIsIHIpOworCQkJUEFOSUMoIkNvdWxkIG5vdCB1bndpbmQgaW5kaXJl
Y3QgYmxvY2ssIGVycm9yICVkIiwgcik7CiAJCQlicmVsc2UoYnApOwogCQl9IGVsc2Ugewog
CQkJYmFwID0gKHVmczJfZGFkZHJfdCAqKWJwLT5iX2RhdGE7CmRpZmYgLS1naXQgYS9zeXMv
dWZzL2Zmcy9mZnNfaW5vZGUuYyBiL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCmluZGV4IGY4
NTg0ZDUuLjIwZDUxOGQgMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCisr
KyBiL3N5cy91ZnMvZmZzL2Zmc19pbm9kZS5jCkBAIC0xNDEsNyArMTQxLDcgQEAgbG9vcDoK
IAlpZiAoRE9JTkdTT0ZUREVQKHZwKSkKIAkJc29mdGRlcF91cGRhdGVfaW5vZGVibG9jayhp
cCwgYnAsIHdhaXRmb3IpOwogCWVsc2UgaWYgKGlwLT5pX2VmZm5saW5rICE9IGlwLT5pX25s
aW5rKQotCQlwYW5pYygiZmZzX3VwZGF0ZTogYmFkIGxpbmsgY250Iik7CisJCVBBTklDKCJi
YWQgbGluayBjbnQiKTsKIAlpZiAoaXAtPmlfdW1wLT51bV9mc3R5cGUgPT0gVUZTMSkKIAkJ
Kigoc3RydWN0IHVmczFfZGlub2RlICopYnAtPmJfZGF0YSArCiAJCSAgICBpbm9fdG9fZnNi
byhmcywgaXAtPmlfbnVtYmVyKSkgPSAqaXAtPmlfZGluMTsKQEAgLTIzNiw3ICsyMzYsNyBA
QCBmZnNfdHJ1bmNhdGUodnAsIGxlbmd0aCwgZmxhZ3MsIGNyZWQpCiAJfQogCWlmICgoZmxh
Z3MgJiBJT19FWFQpICYmIGV4dGJsb2NrcyA+IDApIHsKIAkJaWYgKGxlbmd0aCAhPSAwKQot
CQkJcGFuaWMoImZmc190cnVuY2F0ZTogcGFydGlhbCB0cnVuYyBvZiBleHRkYXRhIik7CisJ
CQlQQU5JQygicGFydGlhbCB0cnVuYyBvZiBleHRkYXRhIik7CiAJCWlmIChzb2Z0ZGVwdHJ1
bmMgfHwgam91cm5hbHRydW5jKSB7CiAJCQlpZiAoKGZsYWdzICYgSU9fTk9STUFMKSA9PSAw
KQogCQkJCWdvdG8gZXh0Y2xlYW47CkBAIC0yNzYsNyArMjc2LDcgQEAgZmZzX3RydW5jYXRl
KHZwLCBsZW5ndGgsIGZsYWdzLCBjcmVkKQogCSAgICAgZGF0YWJsb2NrcyA9PSAwKSkgewog
I2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKGxlbmd0aCAhPSAwKQotCQkJcGFuaWMoImZmc190
cnVuY2F0ZTogcGFydGlhbCB0cnVuY2F0ZSBvZiBzeW1saW5rIik7CisJCQlQQU5JQygicGFy
dGlhbCB0cnVuY2F0ZSBvZiBzeW1saW5rIik7CiAjZW5kaWYKIAkJYnplcm8oU0hPUlRMSU5L
KGlwKSwgKHVfaW50KWlwLT5pX3NpemUpOwogCQlpcC0+aV9zaXplID0gMDsKQEAgLTI5Myw3
ICsyOTMsNyBAQCBmZnNfdHJ1bmNhdGUodnAsIGxlbmd0aCwgZmxhZ3MsIGNyZWQpCiAJCXJl
dHVybiAoZmZzX3VwZGF0ZSh2cCwgMCkpOwogCX0KIAlpZiAoZnMtPmZzX3Jvbmx5KQotCQlw
YW5pYygiZmZzX3RydW5jYXRlOiByZWFkLW9ubHkgZmlsZXN5c3RlbSIpOworCQlQQU5JQygi
cmVhZC1vbmx5IGZpbGVzeXN0ZW0iKTsKIAlpZiAoSVNfU05BUFNIT1QoaXApKQogCQlmZnNf
c25hcHJlbW92ZSh2cCk7CiAJdnAtPnZfbGFzdGEgPSB2cC0+dl9jbGVuID0gdnAtPnZfY3N0
YXJ0ID0gdnAtPnZfbGFzdHcgPSAwOwpAQCAtNTEzLDcgKzUxMyw3IEBAIGZmc190cnVuY2F0
ZSh2cCwgbGVuZ3RoLCBmbGFncywgY3JlZCkKIAkJRElQX1NFVChpcCwgaV9zaXplLCBsZW5n
dGgpOwogCQluZXdzcGFjZSA9IGJsa3NpemUoZnMsIGlwLCBsYXN0YmxvY2spOwogCQlpZiAo
bmV3c3BhY2UgPT0gMCkKLQkJCXBhbmljKCJmZnNfdHJ1bmNhdGU6IG5ld3NwYWNlIik7CisJ
CQlQQU5JQygibmV3c3BhY2UiKTsKIAkJaWYgKG9sZHNwYWNlIC0gbmV3c3BhY2UgPiAwKSB7
CiAJCQkvKgogCQkJICogQmxvY2sgbnVtYmVyIG9mIHNwYWNlIHRvIGJlIGZyZWUnZCBpcwpA
QCAtNTMwLDE1ICs1MzAsMTUgQEAgZG9uZToKICNpZmRlZiBJTlZBUklBTlRTCiAJZm9yIChs
ZXZlbCA9IFNJTkdMRTsgbGV2ZWwgPD0gVFJJUExFOyBsZXZlbCsrKQogCQlpZiAobmV3Ymxr
c1tOREFERFIgKyBsZXZlbF0gIT0gRElQKGlwLCBpX2liW2xldmVsXSkpCi0JCQlwYW5pYygi
ZmZzX3RydW5jYXRlMSIpOworCQkJUEFOSUMoIjEiKTsKIAlmb3IgKGkgPSAwOyBpIDwgTkRB
RERSOyBpKyspCiAJCWlmIChuZXdibGtzW2ldICE9IERJUChpcCwgaV9kYltpXSkpCi0JCQlw
YW5pYygiZmZzX3RydW5jYXRlMiIpOworCQkJUEFOSUMoIjIiKTsKIAlCT19MT0NLKGJvKTsK
IAlpZiAobGVuZ3RoID09IDAgJiYKIAkgICAgKGZzLT5mc19tYWdpYyAhPSBGU19VRlMyX01B
R0lDIHx8IGlwLT5pX2RpbjItPmRpX2V4dHNpemUgPT0gMCkgJiYKIAkgICAgKGJvLT5ib19k
aXJ0eS5idl9jbnQgPiAwIHx8IGJvLT5ib19jbGVhbi5idl9jbnQgPiAwKSkKLQkJcGFuaWMo
ImZmc190cnVuY2F0ZTMiKTsKKwkJUEFOSUMoIjMiKTsKIAlCT19VTkxPQ0soYm8pOwogI2Vu
ZGlmIC8qIElOVkFSSUFOVFMgKi8KIAkvKgpAQCAtNjE2LDcgKzYxNiw3IEBAIGZmc19pbmRp
cnRydW5jKGlwLCBsYm4sIGRibiwgbGFzdGJuLCBsZXZlbCwgY291bnRwKQogCQlicC0+Yl9m
bGFncyAmPSB+Ql9JTlZBTDsKIAkJYnAtPmJfaW9mbGFncyAmPSB+QklPX0VSUk9SOwogCQlp
ZiAoYnAtPmJfYmNvdW50ID4gYnAtPmJfYnVmc2l6ZSkKLQkJCXBhbmljKCJmZnNfaW5kaXJ0
cnVuYzogYmFkIGJ1ZmZlciBzaXplIik7CisJCQlQQU5JQygiYmFkIGJ1ZmZlciBzaXplIik7
CiAJCWJwLT5iX2Jsa25vID0gZGJuOwogCQl2ZnNfYnVzeV9wYWdlcyhicCwgMCk7CiAJCWJw
LT5iX2lvb2Zmc2V0ID0gZGJ0b2IoYnAtPmJfYmxrbm8pOwpkaWZmIC0tZ2l0IGEvc3lzL3Vm
cy9mZnMvZmZzX3Jhd3JlYWQuYyBiL3N5cy91ZnMvZmZzL2Zmc19yYXdyZWFkLmMKaW5kZXgg
ZjhlM2UwMC4uOGVlMTkzNSAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX3Jhd3JlYWQu
YworKysgYi9zeXMvdWZzL2Zmcy9mZnNfcmF3cmVhZC5jCkBAIC0xNzEsNyArMTcxLDcgQEAg
ZmZzX3Jhd3JlYWRfc3luYyhzdHJ1Y3Qgdm5vZGUgKnZwKQogCQkJfQogCQkJQk9fTE9DSyhi
byk7CiAJCQlpZiAoYm8tPmJvX251bW91dHB1dCA+IDAgfHwgYm8tPmJvX2RpcnR5LmJ2X2Nu
dCA+IDApCi0JCQkJcGFuaWMoImZmc19yYXdyZWFkX3N5bmM6IGRpcnR5IGJ1ZnMiKTsKKwkJ
CQlQQU5JQygiZGlydHkgYnVmcyIpOwogCQl9CiAJCUJPX1VOTE9DSyhibyk7CiAJCWlmICh1
cGdyYWRlZCAhPSAwKQpkaWZmIC0tZ2l0IGEvc3lzL3Vmcy9mZnMvZmZzX3NuYXBzaG90LmMg
Yi9zeXMvdWZzL2Zmcy9mZnNfc25hcHNob3QuYwppbmRleCAwYzY1M2MyLi5kZGI1YWZkIDEw
MDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfc25hcHNob3QuYworKysgYi9zeXMvdWZzL2Zm
cy9mZnNfc25hcHNob3QuYwpAQCAtMjc5LDcgKzI3OSw3IEBAIHJlc3RhcnQ6CiAJaWYgKFZP
UF9HRVRXUklURU1PVU5UKG5kLm5pX2R2cCwgJndydG1wKSkKIAkJd3J0bXAgPSBOVUxMOwog
CWlmICh3cnRtcCAhPSBtcCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogbW91bnQgbWlzbWF0
Y2giKTsKKwkJUEFOSUMoIm1vdW50IG1pc21hdGNoIik7CiAJdmZzX3JlbCh3cnRtcCk7CiAJ
aWYgKHZuX3N0YXJ0X3dyaXRlKE5VTEwsICZ3cnRtcCwgVl9OT1dBSVQpICE9IDApIHsKIAkJ
TkRGUkVFKCZuZCwgTkRGX09OTFlfUE5CVUYpOwpAQCAtNjYyLDcgKzY2Miw3IEBAIGxvb3A6
CiAJCXNuYXBibGtsaXN0WzBdID0gYmxrcCAtIHNuYXBibGtsaXN0OwogCQlWSV9MT0NLKGRl
dnZwKTsKIAkJaWYgKHNuLT5zbl9ibGtsaXN0ICE9IE5VTEwpCi0JCQlwYW5pYygiZmZzX3Nu
YXBzaG90OiBub24tZW1wdHkgbGlzdCIpOworCQkJUEFOSUMoIm5vbi1lbXB0eSBsaXN0Iik7
CiAJCXNuLT5zbl9ibGtsaXN0ID0gc25hcGJsa2xpc3Q7CiAJCXNuLT5zbl9saXN0c2l6ZSA9
IGJsa3AgLSBzbmFwYmxrbGlzdDsKIAkJVklfVU5MT0NLKGRldnZwKTsKQEAgLTY3NCw4ICs2
NzQsNyBAQCBsb29wOgogCVZJX0xPQ0soZGV2dnApOwogCWZzLT5mc19zbmFwaW51bVtzbmFw
bG9jXSA9IGlwLT5pX251bWJlcjsKIAlpZiAoaXAtPmlfbmV4dHNuYXAudHFlX3ByZXYgIT0g
MCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogJWp1IGFscmVhZHkgb24gbGlzdCIsCi0JCSAg
ICAodWludG1heF90KWlwLT5pX251bWJlcik7CisJCVBBTklDKCIlanUgYWxyZWFkeSBvbiBs
aXN0IiwgKHVpbnRtYXhfdClpcC0+aV9udW1iZXIpOwogCVRBSUxRX0lOU0VSVF9UQUlMKCZz
bi0+c25faGVhZCwgaXAsIGlfbmV4dHNuYXApOwogCWRldnZwLT52X3ZmbGFnIHw9IFZWX0NP
UFlPTldSSVRFOwogCVZJX1VOTE9DSyhkZXZ2cCk7CkBAIC03NDUsNyArNzQ0LDcgQEAgb3V0
MToKIAkJZ290byBkb25lOwogCX0KIAlpZiAoc25hcGxpc3RzaXplIDwgaXAtPmlfc25hcGJs
a2xpc3QgLSBzbmFwYmxrbGlzdCkKLQkJcGFuaWMoImZmc19zbmFwc2hvdDogbGlzdCB0b28g
c21hbGwiKTsKKwkJUEFOSUMoImxpc3QgdG9vIHNtYWxsIik7CiAJc25hcGxpc3RzaXplID0g
aXAtPmlfc25hcGJsa2xpc3QgLSBzbmFwYmxrbGlzdDsKIAlzbmFwYmxrbGlzdFswXSA9IHNu
YXBsaXN0c2l6ZTsKIAlpcC0+aV9zbmFwYmxrbGlzdCA9IDA7CkBAIC05MjgsNyArOTI3LDcg
QEAgY2dhY2NvdW50KGNnLCB2cCwgbmJwLCBwYXNzbm8pCiAJCQllbHNlIGlmIChwYXNzbm8g
PT0gMiAmJiBESVAoaXAsIGlfZGJbbG9jXSk9PSBCTEtfTk9DT1BZKQogCQkJCURJUF9TRVQo
aXAsIGlfZGJbbG9jXSwgMCk7CiAJCQllbHNlIGlmIChwYXNzbm8gPT0gMSAmJiBESVAoaXAs
IGlfZGJbbG9jXSk9PSBCTEtfTk9DT1BZKQotCQkJCXBhbmljKCJmZnNfc25hcHNob3Q6IGxv
c3QgZGlyZWN0IGJsb2NrIik7CisJCQkJUEFOSUMoImxvc3QgZGlyZWN0IGJsb2NrIik7CiAJ
CX0KIAl9CiAJZXJyb3IgPSBVRlNfQkFMTE9DKHZwLCBsYmxrdG9zaXplKGZzLCAob2ZmX3Qp
KGJhc2UgKyBsb2MpKSwKQEAgLTk1OSw3ICs5NTgsNyBAQCBjZ2FjY291bnQoY2csIHZwLCBu
YnAsIHBhc3NubykKIAkJCQkoKHVmczFfZGFkZHJfdCAqKShpYnAtPmJfZGF0YSkpW2luZGly
b2ZmXSA9IDA7CiAJCQllbHNlIGlmIChwYXNzbm8gPT0gMSAmJiAoKHVmczFfZGFkZHJfdCAq
KShpYnAtPmJfZGF0YSkpCiAJCQkgICAgW2luZGlyb2ZmXSA9PSBCTEtfTk9DT1BZKQotCQkJ
CXBhbmljKCJmZnNfc25hcHNob3Q6IGxvc3QgaW5kaXJlY3QgYmxvY2siKTsKKwkJCQlQQU5J
QygibG9zdCBpbmRpcmVjdCBibG9jayIpOwogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKGZm
c19pc2Jsb2NrKGZzLCBjZ19ibGtzZnJlZShjZ3ApLCBsb2MpKQpAQCAtOTY5LDcgKzk2OCw3
IEBAIGNnYWNjb3VudChjZywgdnAsIG5icCwgcGFzc25vKQogCQkJKCh1ZnMyX2RhZGRyX3Qg
KikoaWJwLT5iX2RhdGEpKVtpbmRpcm9mZl0gPSAwOwogCQllbHNlIGlmIChwYXNzbm8gPT0g
MSAmJgogCQkgICAgKCh1ZnMyX2RhZGRyX3QgKikoaWJwLT5iX2RhdGEpKSBbaW5kaXJvZmZd
ID09IEJMS19OT0NPUFkpCi0JCQlwYW5pYygiZmZzX3NuYXBzaG90OiBsb3N0IGluZGlyZWN0
IGJsb2NrIik7CisJCQlQQU5JQygibG9zdCBpbmRpcmVjdCBibG9jayIpOwogCX0KIAlpZiAo
cGFzc25vID09IDIpCiAJCWlicC0+Yl9mbGFncyB8PSBCX1ZBTElEU1VTUFdSVDsKQEAgLTEx
MDUsMTIgKzExMDQsMTIgQEAgaW5kaXJhY2N0X3VmczEoc25hcHZwLCBjYW5jZWx2cCwgbGV2
ZWwsIGJsa25vLCBsYm4sIHJsYm4sIHJlbWJsa3MsCiAJaWYgKGJsa25vID09IDApIHsKIAkJ
aWYgKGV4cHVuZ2V0eXBlID09IEJMS19OT0NPUFkpCiAJCQlyZXR1cm4gKDApOwotCQlwYW5p
YygiaW5kaXJhY2N0X3VmczE6IG1pc3NpbmcgaW5kaXIiKTsKKwkJUEFOSUMoIm1pc3Npbmcg
aW5kaXIiKTsKIAl9CiAJaWYgKChlcnJvciA9IHVmc19nZXRsYm5zKGNhbmNlbHZwLCBybGJu
LCBpbmRpcnMsICZudW0pKSAhPSAwKQogCQlyZXR1cm4gKGVycm9yKTsKIAlpZiAobGJuICE9
IGluZGlyc1tudW0gLSAxIC0gbGV2ZWxdLmluX2xibiB8fCBudW0gPCAyKQotCQlwYW5pYygi
aW5kaXJhY2N0X3VmczE6IGJvdGNoZWQgcGFyYW1zIik7CisJCVBBTklDKCJib3RjaGVkIHBh
cmFtcyIpOwogCS8qCiAJICogV2UgaGF2ZSB0byBleHBhbmQgYnJlYWQgaGVyZSBzaW5jZSBp
dCB3aWxsIGRlYWRsb2NrIGxvb2tpbmcKIAkgKiB1cCB0aGUgYmxvY2sgbnVtYmVyIGZvciBh
bnkgYmxvY2tzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY2FjaGUuCkBAIC0xMjE2LDcgKzEyMTUs
NyBAQCBzbmFwYWNjdF91ZnMxKHZwLCBvbGRibGtwLCBsYXN0YmxrcCwgZnMsIGxibGtubywg
ZXhwdW5nZXR5cGUpCiAJCQkJYnJlbHNlKGlicCk7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKmJs
a3AgIT0gMCkKLQkJCQlwYW5pYygic25hcGFjY3RfdWZzMTogYmFkIGJsb2NrIik7CisJCQkJ
UEFOSUMoImJhZCBibG9jayIpOwogCQkJKmJsa3AgPSBleHB1bmdldHlwZTsKIAkJCWlmIChs
Ym4gPj0gTkRBRERSKQogCQkJCWJkd3JpdGUoaWJwKTsKQEAgLTEzODksMTIgKzEzODgsMTIg
QEAgaW5kaXJhY2N0X3VmczIoc25hcHZwLCBjYW5jZWx2cCwgbGV2ZWwsIGJsa25vLCBsYm4s
IHJsYm4sIHJlbWJsa3MsCiAJaWYgKGJsa25vID09IDApIHsKIAkJaWYgKGV4cHVuZ2V0eXBl
ID09IEJMS19OT0NPUFkpCiAJCQlyZXR1cm4gKDApOwotCQlwYW5pYygiaW5kaXJhY2N0X3Vm
czI6IG1pc3NpbmcgaW5kaXIiKTsKKwkJUEFOSUMoIm1pc3NpbmcgaW5kaXIiKTsKIAl9CiAJ
aWYgKChlcnJvciA9IHVmc19nZXRsYm5zKGNhbmNlbHZwLCBybGJuLCBpbmRpcnMsICZudW0p
KSAhPSAwKQogCQlyZXR1cm4gKGVycm9yKTsKIAlpZiAobGJuICE9IGluZGlyc1tudW0gLSAx
IC0gbGV2ZWxdLmluX2xibiB8fCBudW0gPCAyKQotCQlwYW5pYygiaW5kaXJhY2N0X3VmczI6
IGJvdGNoZWQgcGFyYW1zIik7CisJCVBBTklDKCJib3RjaGVkIHBhcmFtcyIpOwogCS8qCiAJ
ICogV2UgaGF2ZSB0byBleHBhbmQgYnJlYWQgaGVyZSBzaW5jZSBpdCB3aWxsIGRlYWRsb2Nr
IGxvb2tpbmcKIAkgKiB1cCB0aGUgYmxvY2sgbnVtYmVyIGZvciBhbnkgYmxvY2tzIHRoYXQg
YXJlIG5vdCBpbiB0aGUgY2FjaGUuCkBAIC0xNTAwLDcgKzE0OTksNyBAQCBzbmFwYWNjdF91
ZnMyKHZwLCBvbGRibGtwLCBsYXN0YmxrcCwgZnMsIGxibGtubywgZXhwdW5nZXR5cGUpCiAJ
CQkJYnJlbHNlKGlicCk7CiAJCX0gZWxzZSB7CiAJCQlpZiAoKmJsa3AgIT0gMCkKLQkJCQlw
YW5pYygic25hcGFjY3RfdWZzMjogYmFkIGJsb2NrIik7CisJCQkJUEFOSUMoImJhZCBibG9j
ayIpOwogCQkJKmJsa3AgPSBleHB1bmdldHlwZTsKIAkJCWlmIChsYm4gPj0gTkRBRERSKQog
CQkJCWJkd3JpdGUoaWJwKTsKQEAgLTE4MDAsNyArMTc5OSw3IEBAIHJldHJ5OgogCQkJICog
KGRvbid0IGNhcmUpIGZvciB1cy4KIAkJCSAqLwogCQkJaWYgKGNsYWltZWRibGspCi0JCQkJ
cGFuaWMoInNuYXBibGtmcmVlOiBpbmNvbnNpc3RlbnQgYmxvY2sgdHlwZSIpOworCQkJCVBB
TklDKCJpbmNvbnNpc3RlbnQgYmxvY2sgdHlwZSIpOwogCQkJaWYgKGxibiA8IE5EQUREUikg
ewogCQkJCURJUF9TRVQoaXAsIGlfZGJbbGJuXSwgQkxLX05PQ09QWSk7CiAJCQkJaXAtPmlf
ZmxhZyB8PSBJTl9DSEFOR0UgfCBJTl9VUERBVEU7CkBAIC0yMDIyLDggKzIwMjEsNyBAQCBm
ZnNfc25hcHNob3RfbW91bnQobXApCiAJCSAqLwogCQlWSV9MT0NLKGRldnZwKTsKIAkJaWYg
KGlwLT5pX25leHRzbmFwLnRxZV9wcmV2ICE9IDApCi0JCQlwYW5pYygiZmZzX3NuYXBzaG90
X21vdW50OiAlanUgYWxyZWFkeSBvbiBsaXN0IiwKLQkJCSAgICAodWludG1heF90KWlwLT5p
X251bWJlcik7CisJCQlQQU5JQygiJWp1IGFscmVhZHkgb24gbGlzdCIsICh1aW50bWF4X3Qp
aXAtPmlfbnVtYmVyKTsKIAkJZWxzZQogCQkJVEFJTFFfSU5TRVJUX1RBSUwoJnNuLT5zbl9o
ZWFkLCBpcCwgaV9uZXh0c25hcCk7CiAJCXZwLT52X3ZmbGFnIHw9IFZWX1NZU1RFTTsKQEAg
LTIxOTAsNyArMjE4OCw3IEBAIGZmc19iZGZsdXNoKGJvLCBicCkKIAkJCQkgICAgIExLX0VY
Q0xVU0lWRSB8IExLX05PV0FJVCwgTlVMTCkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoYnAg
PT0gbmJwKQotCQkJCXBhbmljKCJiZHdyaXRlOiBmb3VuZCBvdXJzZWx2ZXMiKTsKKwkJCQlQ
QU5JQygiZm91bmQgb3Vyc2VsdmVzIik7CiAJCQlCT19VTkxPQ0soYm8pOwogCQkJLyoKIAkJ
CSAqIERvbid0IGNvdW50ZGVwcyB3aXRoIHRoZSBibyBsb2NrCkBAIC0yMjUwLDcgKzIyNDgs
NyBAQCBmZnNfY29weW9ud3JpdGUoZGV2dnAsIGJwKQogCWlmIChkZXZ2cCAhPSBicC0+Yl92
cCAmJiBJU19TTkFQU0hPVChWVE9JKGJwLT5iX3ZwKSkpCiAJCXJldHVybiAoMCk7CQkvKiBV
cGRhdGUgb24gYSBzbmFwc2hvdCBmaWxlICovCiAJaWYgKHRkLT50ZF9wZmxhZ3MgJiBURFBf
Q09XSU5QUk9HUkVTUykKLQkJcGFuaWMoImZmc19jb3B5b253cml0ZTogcmVjdXJzaXZlIGNh
bGwiKTsKKwkJUEFOSUMoInJlY3Vyc2l2ZSBjYWxsIik7CiAJLyoKIAkgKiBGaXJzdCBjaGVj
ayB0byBzZWUgaWYgaXQgaXMgaW4gdGhlIHByZWFsbG9jYXRlZCBsaXN0LgogCSAqIEJ5IGRv
aW5nIHRoaXMgY2hlY2sgd2UgYXZvaWQgc2V2ZXJhbCBwb3RlbnRpYWwgZGVhZGxvY2tzLgpA
QCAtMjM0NSw3ICsyMzQzLDcgQEAgZmZzX2NvcHlvbndyaXRlKGRldnZwLCBicCkKIAkJfQog
I2lmZGVmIElOVkFSSUFOVFMKIAkJaWYgKGJsa25vID09IEJMS19TTkFQICYmIGJwLT5iX2xi
bGtubyA+PSAwKQotCQkJcGFuaWMoImZmc19jb3B5b253cml0ZTogYmFkIGNvcHkgYmxvY2si
KTsKKwkJCVBBTklDKCJiYWQgY29weSBibG9jayIpOwogI2VuZGlmCiAJCWlmIChibGtubyAh
PSAwKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc29mdGRl
cC5jIGIvc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYwppbmRleCAxNmZlMTM0Li40OGQ4MDcz
IDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfc29mdGRlcC5jCisrKyBiL3N5cy91ZnMv
ZmZzL2Zmc19zb2Z0ZGVwLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzb2Z0ZGVwX2ZsdXNoZmls
ZXMob2xkbW50LCBmbGFncywgdGQpCiAJc3RydWN0IHRocmVhZCAqdGQ7CiB7CiAKLQlwYW5p
Yygic29mdGRlcF9mbHVzaGZpbGVzIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0K
IAogaW50CkBAIC0xNTUsNyArMTU1LDcgQEAgc29mdGRlcF9zZXR1cF9pbm9tYXBkZXAoYnAs
IGlwLCBuZXdpbnVtLCBtb2RlKQogCWludCBtb2RlOwogewogCi0JcGFuaWMoInNvZnRkZXBf
c2V0dXBfaW5vbWFwZGVwIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9p
ZApAQCAtMTY3LDcgKzE2Nyw3IEBAIHNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwKGJwLCBtcCwg
bmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAlpbnQgb2xkZnJhZ3M7CiB7CiAKLQlwYW5p
Yygic29mdGRlcF9zZXR1cF9ibGttYXBkZXAgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIp
OwogfQogCiB2b2lkIApAQCAtMTgxLDcgKzE4MSw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2Nk
aXJlY3QoaXAsIGxibiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBi
cCkKIAlzdHJ1Y3QgYnVmICpicDsKIHsKIAkKLQlwYW5pYygic29mdGRlcF9zZXR1cF9hbGxv
Y2RpcmVjdCBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQgCkBAIC0x
OTUsNyArMTk1LDcgQEAgc29mdGRlcF9zZXR1cF9hbGxvY2V4dChpcCwgbGJuLCBuZXdibGtu
bywgb2xkYmxrbm8sIG5ld3NpemUsIG9sZHNpemUsIGJwKQogCXN0cnVjdCBidWYgKmJwOwog
ewogCQotCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0IGNhbGxlZCIpOworCVBBTklD
KCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMjA5LDcgKzIwOSw3IEBAIHNvZnRkZXBfc2V0
dXBfYWxsb2NpbmRpcl9wYWdlKGlwLCBsYm4sIGJwLCBwdHJubywgbmV3Ymxrbm8sIG9sZGJs
a25vLCBuYnApCiAJc3RydWN0IGJ1ZiAqbmJwOwogewogCi0JcGFuaWMoInNvZnRkZXBfc2V0
dXBfYWxsb2NpbmRpcl9wYWdlIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAog
dm9pZApAQCAtMjIxLDcgKzIyMSw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NpbmRpcl9tZXRh
KG5icCwgaXAsIGJwLCBwdHJubywgbmV3Ymxrbm8pCiAJdWZzMl9kYWRkcl90IG5ld2Jsa25v
OwogewogCi0JcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NpbmRpcl9tZXRhIGNhbGxlZCIp
OworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMjMyLDcgKzIzMiw3IEBAIHNv
ZnRkZXBfam91cm5hbF9mcmVlYmxvY2tzKGlwLCBjcmVkLCBsZW5ndGgsIGZsYWdzKQogCWlu
dCBmbGFnczsKIHsKIAkKLQlwYW5pYygic29mdGRlcF9qb3VybmFsX2ZyZWVibG9ja3MgY2Fs
bGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0yNDAsNyArMjQwLDcg
QEAgc29mdGRlcF9qb3VybmFsX2ZzeW5jKGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAK
LQlwYW5pYygic29mdGRlcF9qb3VybmFsX2ZzeW5jIGNhbGxlZCIpOworCVBBTklDKCJjYWxs
ZWQiKTsKIH0KIAogdm9pZApAQCAtMjUwLDcgKzI1MCw3IEBAIHNvZnRkZXBfc2V0dXBfZnJl
ZWJsb2NrcyhpcCwgbGVuZ3RoLCBmbGFncykKIAlpbnQgZmxhZ3M7CiB7CiAJCi0JcGFuaWMo
InNvZnRkZXBfc2V0dXBfZnJlZWJsb2NrcyBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7
CiB9CiAKIHZvaWQKQEAgLTI2MCw3ICsyNjAsNyBAQCBzb2Z0ZGVwX2ZyZWVmaWxlKHB2cCwg
aW5vLCBtb2RlKQogCQlpbnQgbW9kZTsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX2ZyZWVmaWxl
IGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogaW50IApAQCAtMjczLDcgKzI3
Myw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2FkZChicCwgZHAsIGRpcm9mZnNldCwg
bmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3YmxrKQogCWludCBpc25ld2JsazsKIHsKIAotCXBh
bmljKCJzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9hZGQgY2FsbGVkIik7CisJUEFOSUMoImNh
bGxlZCIpOwogfQogCiB2b2lkIApAQCAtMjg2LDcgKzI4Niw3IEBAIHNvZnRkZXBfY2hhbmdl
X2RpcmVjdG9yeWVudHJ5X29mZnNldChicCwgZHAsIGJhc2UsIG9sZGxvYywgbmV3bG9jLCBl
bnRyeXNpemUpCiAJaW50IGVudHJ5c2l6ZTsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX2NoYW5n
ZV9kaXJlY3RvcnllbnRyeV9vZmZzZXQgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwog
fQogCiB2b2lkIApAQCAtMjk3LDcgKzI5Nyw3IEBAIHNvZnRkZXBfc2V0dXBfcmVtb3ZlKGJw
LCBkcCwgaXAsIGlzcm1kaXIpCiAJaW50IGlzcm1kaXI7CiB7CiAJCi0JcGFuaWMoInNvZnRk
ZXBfc2V0dXBfcmVtb3ZlIGNhbGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9p
ZCAKQEAgLTMwOSw3ICszMDksNyBAQCBzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9jaGFuZ2Uo
YnAsIGRwLCBpcCwgbmV3aW51bSwgaXNybWRpcikKIAlpbnQgaXNybWRpcjsKIHsKIAotCXBh
bmljKCJzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9jaGFuZ2UgY2FsbGVkIik7CisJUEFOSUMo
ImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0zMjEsNyArMzIxLDcgQEAgc29mdGRlcF9zZXR1
cF9ibGtmcmVlKG1wLCBicCwgYmxrbm8sIGZyYWdzLCB3a2hkKQogCXN0cnVjdCB3b3JraGVh
ZCAqd2toZDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBB
TklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzMyLDcgKzMzMiw3IEBAIHNvZnRkZXBf
c2V0dXBfaW5vZnJlZShtcCwgYnAsIGlubywgd2toZCkKIAlzdHJ1Y3Qgd29ya2hlYWQgKndr
aGQ7CiB7CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygi
Y2FsbGVkIik7CiB9CiAKIHZvaWQKQEAgLTM0MSw3ICszNDEsNyBAQCBzb2Z0ZGVwX3NldHVw
X3VubGluayhkcCwgaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBj
YWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApA
QCAtMzUwLDcgKzM1MCw3IEBAIHNvZnRkZXBfc2V0dXBfbGluayhkcCwgaXApCiAJc3RydWN0
IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOwor
CVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzU5LDcgKzM1OSw3IEBAIHNvZnRk
ZXBfcmV2ZXJ0X2xpbmsoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAKLQlwYW5p
YygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAK
IHZvaWQKQEAgLTM2OCw3ICszNjgsNyBAQCBzb2Z0ZGVwX3NldHVwX3JtZGlyKGRwLCBpcCkK
IAlzdHJ1Y3QgaW5vZGUgKmlwOwogewogCi0JcGFuaWMoIiVzIGNhbGxlZCIsIF9fRlVOQ1RJ
T05fXyk7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC0zNzcsNyArMzc3LDcg
QEAgc29mdGRlcF9yZXZlcnRfcm1kaXIoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7
CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVk
Iik7CiB9CiAKIHZvaWQKQEAgLTM4Niw3ICszODYsNyBAQCBzb2Z0ZGVwX3NldHVwX2NyZWF0
ZShkcCwgaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQi
LCBfX0ZVTkNUSU9OX18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtMzk1
LDcgKzM5NSw3IEBAIHNvZnRkZXBfcmV2ZXJ0X2NyZWF0ZShkcCwgaXApCiAJc3RydWN0IGlu
b2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9OX18pOworCVBB
TklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNDA0LDcgKzQwNCw3IEBAIHNvZnRkZXBf
c2V0dXBfbWtkaXIoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7CiB7CiAKLQlwYW5pYygi
JXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZv
aWQKQEAgLTQxMyw3ICs0MTMsNyBAQCBzb2Z0ZGVwX3JldmVydF9ta2RpcihkcCwgaXApCiAJ
c3RydWN0IGlub2RlICppcDsKIHsKIAotCXBhbmljKCIlcyBjYWxsZWQiLCBfX0ZVTkNUSU9O
X18pOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNDIyLDcgKzQyMiw3IEBA
IHNvZnRkZXBfc2V0dXBfZG90ZG90X2xpbmsoZHAsIGlwKQogCXN0cnVjdCBpbm9kZSAqaXA7
CiB7CiAKLQlwYW5pYygiJXMgY2FsbGVkIiwgX19GVU5DVElPTl9fKTsKKwlQQU5JQygiY2Fs
bGVkIik7CiB9CiAKIGludApAQCAtNDMxLDcgKzQzMSw3IEBAIHNvZnRkZXBfcHJlYWxsb2Mo
dnAsIHdhaXRvaykKIAlpbnQgd2FpdG9rOwogewogCi0JcGFuaWMoIiVzIGNhbGxlZCIsIF9f
RlVOQ1RJT05fXyk7CisJUEFOSUMoImNhbGxlZCIpOwogCiAJcmV0dXJuICgwKTsKIH0KQEAg
LTQ1MCw3ICs0NTAsNyBAQCBzb2Z0ZGVwX2NoYW5nZV9saW5rY250KGlwKQogCXN0cnVjdCBp
bm9kZSAqaXA7CiB7CiAKLQlwYW5pYygic29mdGRlcF9jaGFuZ2VfbGlua2NudCBjYWxsZWQi
KTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQgCkBAIC00NTgsNyArNDU4LDcgQEAg
c29mdGRlcF9sb2FkX2lub2RlYmxvY2soaXApCiAJc3RydWN0IGlub2RlICppcDsKIHsKIAot
CXBhbmljKCJzb2Z0ZGVwX2xvYWRfaW5vZGVibG9jayBjYWxsZWQiKTsKKwlQQU5JQygiY2Fs
bGVkIik7CiB9CiAKIHZvaWQgCkBAIC00NjgsNyArNDY4LDcgQEAgc29mdGRlcF91cGRhdGVf
aW5vZGVibG9jayhpcCwgYnAsIHdhaXRmb3IpCiAJaW50IHdhaXRmb3I7CiB7CiAKLQlwYW5p
Yygic29mdGRlcF91cGRhdGVfaW5vZGVibG9jayBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVk
Iik7CiB9CiAKIGludApAQCAtNTE3LDcgKzUxNyw3IEBAIHNvZnRkZXBfc2xvd2Rvd24odnAp
CiAJc3RydWN0IHZub2RlICp2cDsKIHsKIAotCXBhbmljKCJzb2Z0ZGVwX3Nsb3dkb3duIGNh
bGxlZCIpOworCVBBTklDKCJjYWxsZWQiKTsKIH0KIAogdm9pZApAQCAtNTI1LDcgKzUyNSw3
IEBAIHNvZnRkZXBfcmVsZWFzZWZpbGUoaXApCiAJc3RydWN0IGlub2RlICppcDsJLyogaW5v
ZGUgd2l0aCB0aGUgemVybyBlZmZlY3RpdmUgbGluayBjb3VudCAqLwogewogCi0JcGFuaWMo
InNvZnRkZXBfcmVsZWFzZWZpbGUgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQog
CiBpbnQKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzb2Z0ZGVwX2J1Zl9hcHBlbmQoYnAsIHdraGQp
CiAJc3RydWN0IHdvcmtoZWFkICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfYnVmX2Fw
cGVuZHdvcmsgY2FsbGVkIik7CisJUEFOSUMoImNhbGxlZCIpOwogfQogCiB2b2lkCkBAIC02
MDcsNyArNjA3LDcgQEAgc29mdGRlcF9pbm9kZV9hcHBlbmQoaXAsIGNyZWQsIHdraGQpCiAJ
c3RydWN0IHdvcmtoZWFkICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfaW5vZGVfYXBw
ZW5kd29yayBjYWxsZWQiKTsKKwlQQU5JQygiY2FsbGVkIik7CiB9CiAKIHZvaWQKQEAgLTYx
NSw3ICs2MTUsNyBAQCBzb2Z0ZGVwX2ZyZWV3b3JrKHdraGQpCiAJc3RydWN0IHdvcmtoZWFk
ICp3a2hkOwogewogCi0JcGFuaWMoInNvZnRkZXBfZnJlZXdvcmsgY2FsbGVkIik7CisJUEFO
SUMoImNhbGxlZCIpOwogfQogCiAjZWxzZQpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgd29ya2xp
c3RfaW5zZXJ0KGhlYWQsIGl0ZW0sIGxvY2tlZCkKIAlpZiAobG9ja2VkKQogCQltdHhfYXNz
ZXJ0KCZsaywgTUFfT1dORUQpOwogCWlmIChpdGVtLT53a19zdGF0ZSAmIE9OV09SS0xJU1Qp
Ci0JCXBhbmljKCJ3b3JrbGlzdF9pbnNlcnQ6ICVwICVzKDB4JVgpIGFscmVhZHkgb24gbGlz
dCIsCisJCVBBTklDKCIlcCAlcygweCVYKSBhbHJlYWR5IG9uIGxpc3QiLAogCQkgICAgaXRl
bSwgVFlQRU5BTUUoaXRlbS0+d2tfdHlwZSksIGl0ZW0tPndrX3N0YXRlKTsKIAlpdGVtLT53
a19zdGF0ZSB8PSBPTldPUktMSVNUOwogCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgaXRlbSwg
d2tfbGlzdCk7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB3b3JrbGlzdF9yZW1vdmUoaXRlbSwg
bG9ja2VkKQogCWlmIChsb2NrZWQpCiAJCW10eF9hc3NlcnQoJmxrLCBNQV9PV05FRCk7CiAJ
aWYgKChpdGVtLT53a19zdGF0ZSAmIE9OV09SS0xJU1QpID09IDApCi0JCXBhbmljKCJ3b3Jr
bGlzdF9yZW1vdmU6ICVwICVzKDB4JVgpIG5vdCBvbiBsaXN0IiwKKwkJUEFOSUMoIiVwICVz
KDB4JVgpIG5vdCBvbiBsaXN0IiwKIAkJICAgIGl0ZW0sIFRZUEVOQU1FKGl0ZW0tPndrX3R5
cGUpLCBpdGVtLT53a19zdGF0ZSk7CiAJaXRlbS0+d2tfc3RhdGUgJj0gfk9OV09SS0xJU1Q7
CiAJTElTVF9SRU1PVkUoaXRlbSwgd2tfbGlzdCk7CkBAIC0xMjEzLDEwICsxMjEzLDEwIEBA
IHdvcmtpdGVtX2ZyZWUoaXRlbSwgdHlwZSkKIAogI2lmZGVmIERFQlVHCiAJaWYgKGl0ZW0t
PndrX3N0YXRlICYgT05XT1JLTElTVCkKLQkJcGFuaWMoIndvcmtpdGVtX2ZyZWU6ICVzKDB4
JVgpIHN0aWxsIG9uIGxpc3QiLAorCQlQQU5JQygiJXMoMHglWCkgc3RpbGwgb24gbGlzdCIs
CiAJCSAgICBUWVBFTkFNRShpdGVtLT53a190eXBlKSwgaXRlbS0+d2tfc3RhdGUpOwogCWlm
IChpdGVtLT53a190eXBlICE9IHR5cGUpCi0JCXBhbmljKCJ3b3JraXRlbV9mcmVlOiB0eXBl
IG1pc21hdGNoICVzICE9ICVzIiwKKwkJUEFOSUMoInR5cGUgbWlzbWF0Y2ggJXMgIT0gJXMi
LAogCQkgICAgVFlQRU5BTUUoaXRlbS0+d2tfdHlwZSksIFRZUEVOQU1FKHR5cGUpKTsKICNl
bmRpZgogCWlmIChpdGVtLT53a19zdGF0ZSAmIElPV0FJVElORykKQEAgLTE0NjIsNyArMTQ2
Miw3IEBAIGFkZF90b193b3JrbGlzdCh3aywgZmxhZ3MpCiAJbXR4X2Fzc2VydCgmbGssIE1B
X09XTkVEKTsKIAl1bXAgPSBWRlNUT1VGUyh3ay0+d2tfbXApOwogCWlmICh3ay0+d2tfc3Rh
dGUgJiBPTldPUktMSVNUKQotCQlwYW5pYygiYWRkX3RvX3dvcmtsaXN0OiAlcygweCVYKSBh
bHJlYWR5IG9uIGxpc3QiLAorCQlQQU5JQygiJXMoMHglWCkgYWxyZWFkeSBvbiBsaXN0IiwK
IAkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSwgd2stPndrX3N0YXRlKTsKIAl3ay0+d2tf
c3RhdGUgfD0gT05XT1JLTElTVDsKIAlpZiAodW1wLT5zb2Z0ZGVwX29uX3dvcmtsaXN0ID09
IDApIHsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIHRvcDoKIAkJcmVtb3ZlX2Zyb21fd29ya2xp
c3QoJmRpcnJlbS0+ZG1fbGlzdCk7CiAJCUZSRUVfTE9DSygmbGspOwogCQlpZiAodm5fc3Rh
cnRfc2Vjb25kYXJ5X3dyaXRlKE5VTEwsICZtcCwgVl9OT1dBSVQpKQotCQkJcGFuaWMoInBy
b2Nlc3NfcmVtb3Zlczogc3VzcGVuZGVkIGZpbGVzeXN0ZW0iKTsKKwkJCVBBTklDKCJzdXNw
ZW5kZWQgZmlsZXN5c3RlbSIpOwogCQloYW5kbGVfd29ya2l0ZW1fcmVtb3ZlKGRpcnJlbSwg
MCk7CiAJCXZuX2ZpbmlzaGVkX3NlY29uZGFyeV93cml0ZShtcCk7CiAJCUFDUVVJUkVfTE9D
SygmbGspOwpAQCAtMTY4Niw4ICsxNjg2LDcgQEAgcHJvY2Vzc190cnVuY2F0ZXModnApCiAJ
CQkJRlJFRV9MT0NLKCZsayk7CiAJCQkJaWYgKHZuX3N0YXJ0X3NlY29uZGFyeV93cml0ZShO
VUxMLCAmbXAsCiAJCQkJICAgIFZfTk9XQUlUKSkKLQkJCQkJcGFuaWMoInByb2Nlc3NfdHJ1
bmNhdGVzOiAiCi0JCQkJCSAgICAic3VzcGVuZGVkIGZpbGVzeXN0ZW0iKTsKKwkJCQkJUEFO
SUMoInN1c3BlbmRlZCBmaWxlc3lzdGVtIik7CiAJCQkJaGFuZGxlX3dvcmtpdGVtX2ZyZWVi
bG9ja3MoZnJlZWJsa3MsIDApOwogCQkJCXZuX2ZpbmlzaGVkX3NlY29uZGFyeV93cml0ZSht
cCk7CiAJCQkJQUNRVUlSRV9MT0NLKCZsayk7CkBAIC0xNzQ3LDEzICsxNzQ2LDEyIEBAIHBy
b2Nlc3Nfd29ya2xpc3RfaXRlbShtcCwgdGFyZ2V0LCBmbGFncykKIAkJCWNvbnRpbnVlOwog
CQl9CiAJCWlmICh3ay0+d2tfc3RhdGUgJiBJTlBST0dSRVNTKQotCQkJcGFuaWMoInByb2Nl
c3Nfd29ya2xpc3RfaXRlbTogJXAgYWxyZWFkeSBpbiBwcm9ncmVzcy4iLAotCQkJICAgIHdr
KTsKKwkJCVBBTklDKCIlcCBhbHJlYWR5IGluIHByb2dyZXNzLiIsIHdrKTsKIAkJd2stPndr
X3N0YXRlIHw9IElOUFJPR1JFU1M7CiAJCXJlbW92ZV9mcm9tX3dvcmtsaXN0KHdrKTsKIAkJ
RlJFRV9MT0NLKCZsayk7CiAJCWlmICh2bl9zdGFydF9zZWNvbmRhcnlfd3JpdGUoTlVMTCwg
Jm1wLCBWX05PV0FJVCkpCi0JCQlwYW5pYygicHJvY2Vzc193b3JrbGlzdF9pdGVtOiBzdXNw
ZW5kZWQgZmlsZXN5c3RlbSIpOworCQkJUEFOSUMoInN1c3BlbmRlZCBmaWxlc3lzdGVtIik7
CiAJCXN3aXRjaCAod2stPndrX3R5cGUpIHsKIAkJY2FzZSBEX0RJUlJFTToKIAkJCS8qIHJl
bW92YWwgb2YgYSBkaXJlY3RvcnkgZW50cnkgKi8KQEAgLTE3NzksOCArMTc3Nyw3IEBAIHBy
b2Nlc3Nfd29ya2xpc3RfaXRlbShtcCwgdGFyZ2V0LCBmbGFncykKIAkJCWJyZWFrOwogCiAJ
CWRlZmF1bHQ6Ci0JCQlwYW5pYygiJXNfcHJvY2Vzc193b3JrbGlzdDogVW5rbm93biB0eXBl
ICVzIiwKLQkJCSAgICAic29mdGRlcCIsIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQ
QU5JQygiVW5rbm93biB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCS8q
IE5PVFJFQUNIRUQgKi8KIAkJfQogCQl2bl9maW5pc2hlZF9zZWNvbmRhcnlfd3JpdGUobXAp
OwpAQCAtMTg4NCw3ICsxODgxLDcgQEAgc29mdGRlcF93YWl0aWRsZShzdHJ1Y3QgbW91bnQg
Km1wKQogCWZvciAoaSA9IDA7IGkgPCAxMCAmJiB1bXAtPnNvZnRkZXBfZGVwczsgaSsrKSB7
CiAJCXVtcC0+c29mdGRlcF9yZXEgPSAxOwogCQlpZiAodW1wLT5zb2Z0ZGVwX29uX3dvcmts
aXN0KQotCQkJcGFuaWMoInNvZnRkZXBfd2FpdGlkbGU6IHdvcmsgYWRkZWQgYWZ0ZXIgZmx1
c2guIik7CisJCQlQQU5JQygid29yayBhZGRlZCBhZnRlciBmbHVzaC4iKTsKIAkJbXNsZWVw
KCZ1bXAtPnNvZnRkZXBfZGVwcywgJmxrLCBQVk0sICJzb2Z0ZGVwcyIsIDEpOwogCX0KIAl1
bXAtPnNvZnRkZXBfcmVxID0gMDsKQEAgLTE5MzksNyArMTkzNiw3IEBAIHJldHJ5X2ZsdXNo
OgogCSAqLwogCWlmIChsb29wY250ID09IDApIHsKIAkJaWYgKG9sZG1udC0+bW50X2tlcm5f
ZmxhZyAmIE1OVEtfVU5NT1VOVCkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZsdXNoZmlsZXM6IGxv
b3BpbmciKTsKKwkJCVBBTklDKCJsb29waW5nIik7CiAJCWVycm9yID0gRUJVU1k7CiAJfQog
CWlmICghZXJyb3IpCkBAIC0yNjg3LDcgKzI2ODQsNyBAQCBhZGRfdG9fam91cm5hbCh3aykK
IAltdHhfYXNzZXJ0KCZsaywgTUFfT1dORUQpOwogCXVtcCA9IFZGU1RPVUZTKHdrLT53a19t
cCk7CiAJaWYgKHdrLT53a19zdGF0ZSAmIE9OV09SS0xJU1QpCi0JCXBhbmljKCJhZGRfdG9f
am91cm5hbDogJXMoMHglWCkgYWxyZWFkeSBvbiBsaXN0IiwKKwkJUEFOSUMoIiVzKDB4JVgp
IGFscmVhZHkgb24gbGlzdCIsCiAJCSAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSksIHdrLT53
a19zdGF0ZSk7CiAJd2stPndrX3N0YXRlIHw9IE9OV09SS0xJU1QgfCBERVBDT01QTEVURTsK
IAlpZiAoTElTVF9FTVBUWSgmdW1wLT5zb2Z0ZGVwX2pvdXJuYWxfcGVuZGluZykpIHsKQEAg
LTI3MjAsNyArMjcxNyw3IEBAIHJlbW92ZV9mcm9tX2pvdXJuYWwod2spCiAJCQlpZiAod2tu
ID09IHdrKQogCQkJCWJyZWFrOwogCQlpZiAod2tuID09IE5VTEwpCi0JCQlwYW5pYygicmVt
b3ZlX2Zyb21fam91cm5hbDogJXAgaXMgbm90IGluIGpvdXJuYWwiLCB3ayk7CisJCQlQQU5J
QygiJXAgaXMgbm90IGluIGpvdXJuYWwiLCB3ayk7CiAJfQogI2VuZGlmCiAJLyoKQEAgLTMz
MzMsOCArMzMzMCw3IEBAIHNvZnRkZXBfcHJvY2Vzc19qb3VybmFsKG1wLCBuZWVkd2ssIGZs
YWdzKQogCQkJCWpmc3luY193cml0ZShXS19KRlNZTkMod2spLCBqc2VnLCBkYXRhKTsKIAkJ
CQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJcGFuaWMoInByb2Nlc3Nfam91cm5hbDogVW5r
bm93biB0eXBlICVzIiwKLQkJCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCQlQ
QU5JQygiVW5rbm93biB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCQkv
KiBOT1RSRUFDSEVEICovCiAJCQl9CiAJCQlvZmYgKz0gSlJFQ19TSVpFOwpAQCAtMzQ0Myw4
ICszNDM5LDcgQEAgY29tcGxldGVfanNlZyhqc2VnKQogCQkJaGFuZGxlX3dyaXR0ZW5famZy
ZWVmcmFnKFdLX0pGUkVFRlJBRyh3aykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlw
YW5pYygiaGFuZGxlX3dyaXR0ZW5fanNlZzogVW5rbm93biB0eXBlICVzIiwKLQkJCSAgICBU
WVBFTkFNRSh3ay0+d2tfdHlwZSkpOworCQkJUEFOSUMoIlVua25vd24gdHlwZSAlcyIsIFRZ
UEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkvKiBOT1RSRUFDSEVEICovCiAJCX0KIAkJaWYg
KHdhaXRpbmcpCkBAIC0zNDk4LDcgKzM0OTMsNyBAQCBoYW5kbGVfd3JpdHRlbl9qc2VnKGpz
ZWcsIGJwKQogewogCiAJaWYgKGpzZWctPmpzX3JlZnMgPT0gMCkKLQkJcGFuaWMoImhhbmRs
ZV93cml0dGVuX2pzZWc6IE5vIHNlbGYtcmVmZXJlbmNlIG9uICVwIiwganNlZyk7CisJCVBB
TklDKCJObyBzZWxmLXJlZmVyZW5jZSBvbiAlcCIsIGpzZWcpOwogCWpzZWctPmpzX3N0YXRl
IHw9IERFUENPTVBMRVRFOwogCS8qCiAJICogV2UnbGwgbmV2ZXIgbmVlZCB0aGlzIGJ1ZmZl
ciBhZ2Fpbiwgc2V0IGZsYWdzIHNvIGl0IHdpbGwgYmUKQEAgLTM1NDAsNyArMzUzNSw3IEBA
IGhhbmRsZV93cml0dGVuX2pyZW1yZWYoanJlbXJlZikKIAkgKi8KIAlpZiAoaW5vZGVkZXBf
bG9va3VwKGpyZW1yZWYtPmpyX2xpc3Qud2tfbXAsIGpyZW1yZWYtPmpyX3JlZi5pZl9pbm8s
CiAJICAgIDAsICZpbm9kZWRlcCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2py
ZW1yZWY6IExvc3QgaW5vZGVkZXAiKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVkZXAiKTsKIAlU
QUlMUV9SRU1PVkUoJmlub2RlZGVwLT5pZF9pbm9yZWZsc3QsICZqcmVtcmVmLT5qcl9yZWYs
IGlmX2RlcHMpOwogCS8qCiAJICogQ29tcGxldGUgdGhlIGRpcnJlbS4KQEAgLTM1NzgsOSAr
MzU3Myw5IEBAIGhhbmRsZV93cml0dGVuX2phZGRyZWYoamFkZHJlZikKIAlkaXJhZGQgPSBO
VUxMOwogCWlmIChpbm9kZWRlcF9sb29rdXAoamFkZHJlZi0+amFfbGlzdC53a19tcCwgamFk
ZHJlZi0+amFfaW5vLAogCSAgICAwLCAmaW5vZGVkZXApID09IDApCi0JCXBhbmljKCJoYW5k
bGVfd3JpdHRlbl9qYWRkcmVmOiBMb3N0IGlub2RlZGVwLiIpOworCQlQQU5JQygiTG9zdCBp
bm9kZWRlcC4iKTsKIAlpZiAoamFkZHJlZi0+amFfZGlyYWRkID09IE5VTEwpCi0JCXBhbmlj
KCJoYW5kbGVfd3JpdHRlbl9qYWRkcmVmOiBObyBkZXBlbmRlbmN5Iik7CisJCVBBTklDKCJO
byBkZXBlbmRlbmN5Iik7CiAJaWYgKGphZGRyZWYtPmphX2RpcmFkZC0+ZGFfbGlzdC53a190
eXBlID09IERfRElSQUREKSB7CiAJCWRpcmFkZCA9IGphZGRyZWYtPmphX2RpcmFkZDsKIAkJ
V09SS0xJU1RfSU5TRVJUKCZpbm9kZWRlcC0+aWRfYnVmd2FpdCwgJmRpcmFkZC0+ZGFfbGlz
dCk7CkBAIC0zNTkwLDggKzM1ODUsNyBAQCBoYW5kbGVfd3JpdHRlbl9qYWRkcmVmKGphZGRy
ZWYpCiAJfSBlbHNlIGlmIChqYWRkcmVmLT5qYV9zdGF0ZSAmIE1LRElSX0JPRFkpCiAJCW1r
ZGlyID0gamFkZHJlZi0+amFfbWtkaXI7CiAJZWxzZQotCQlwYW5pYygiaGFuZGxlX3dyaXR0
ZW5famFkZHJlZjogVW5rbm93biBkZXBlbmRlbmN5ICVwIiwKLQkJICAgIGphZGRyZWYtPmph
X2RpcmFkZCk7CisJCVBBTklDKCJVbmtub3duIGRlcGVuZGVuY3kgJXAiLCBqYWRkcmVmLT5q
YV9kaXJhZGQpOwogCWphZGRyZWYtPmphX2RpcmFkZCA9IE5VTEw7CS8qIGFsc28gY2xlYXJz
IGphX21rZGlyICovCiAJLyoKIAkgKiBSZW1vdmUgdXMgZnJvbSB0aGUgaW5vZGUgbGlzdC4K
QEAgLTM2MzksNyArMzYzMyw3IEBAIGhhbmRsZV93cml0dGVuX2puZXdibGsoam5ld2JsaykK
IAlqc2VnZGVwID0gam5ld2Jsay0+am5fanNlZ2RlcDsKIAlqbmV3YmxrLT5qbl9qc2VnZGVw
ID0gTlVMTDsKIAlpZiAoam5ld2Jsay0+am5fZGVwID09IE5VTEwpIAotCQlwYW5pYygiaGFu
ZGxlX3dyaXR0ZW5fam5ld2JsazogTm8gZGVwZW5kZW5jeSBmb3IgdGhlIHNlZ2RlcC4iKTsK
KwkJUEFOSUMoIk5vIGRlcGVuZGVuY3kgZm9yIHRoZSBzZWdkZXAuIik7CiAJc3dpdGNoIChq
bmV3YmxrLT5qbl9kZXAtPndrX3R5cGUpIHsKIAljYXNlIERfTkVXQkxLOgogCWNhc2UgRF9B
TExPQ0RJUkVDVDoKQEAgLTM2NzYsOCArMzY3MCw3IEBAIGhhbmRsZV93cml0dGVuX2puZXdi
bGsoam5ld2JsaykKIAkJandvcmtfaW5zZXJ0KCZmcmVld29yay0+ZndfZnJlZWJsa3MtPmZi
X2p3b3JrLCBqc2VnZGVwKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJcGFuaWMoImhhbmRs
ZV93cml0dGVuX2puZXdibGs6IFVua25vd24gdHlwZSAlZC4iLAotCQkgICAgam5ld2Jsay0+
am5fZGVwLT53a190eXBlKTsKKwkJUEFOSUMoIlVua25vd24gdHlwZSAlZC4iLCBqbmV3Ymxr
LT5qbl9kZXAtPndrX3R5cGUpOwogCX0KIAlqbmV3YmxrLT5qbl9kZXAgPSBOVUxMOwogCWZy
ZWVfam5ld2JsayhqbmV3YmxrKTsKQEAgLTM3MTksNyArMzcxMiw3IEBAIGZyZWVfamZyZWVm
cmFnKGpmcmVlZnJhZykKIAllbHNlIGlmIChqZnJlZWZyYWctPmZyX3N0YXRlICYgT05XT1JL
TElTVCkKIAkJcmVtb3ZlX2Zyb21fam91cm5hbCgmamZyZWVmcmFnLT5mcl9saXN0KTsKIAlp
ZiAoamZyZWVmcmFnLT5mcl9mcmVlZnJhZyAhPSBOVUxMKQotCQlwYW5pYygiZnJlZV9qZnJl
ZWZyYWc6ICBTdGlsbCBhdHRhY2hlZCB0byBhIGZyZWVmcmFnLiIpOworCQlQQU5JQygiU3Rp
bGwgYXR0YWNoZWQgdG8gYSBmcmVlZnJhZy4iKTsKIAlXT1JLSVRFTV9GUkVFKGpmcmVlZnJh
ZywgRF9KRlJFRUZSQUcpOwogfQogCkBAIC0zNzM5LDcgKzM3MzIsNyBAQCBoYW5kbGVfd3Jp
dHRlbl9qZnJlZWZyYWcoamZyZWVmcmFnKQogCWpmcmVlZnJhZy0+ZnJfanNlZ2RlcCA9IE5V
TEw7CiAJZnJlZWZyYWcgPSBqZnJlZWZyYWctPmZyX2ZyZWVmcmFnOwogCWlmIChmcmVlZnJh
ZyA9PSBOVUxMKQotCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5famZyZWVmcmFnOiBObyBmcmVl
ZnJhZy4iKTsKKwkJUEFOSUMoIk5vIGZyZWVmcmFnLiIpOwogCWZyZWVmcmFnLT5mZl9zdGF0
ZSB8PSBERVBDT01QTEVURTsKIAlmcmVlZnJhZy0+ZmZfamRlcCA9IE5VTEw7CiAJandvcmtf
aW5zZXJ0KCZmcmVlZnJhZy0+ZmZfandvcmssIGpzZWdkZXApOwpAQCAtNDA5MSw3ICs0MDg0
LDcgQEAgY2FuY2VsX2phZGRyZWYoamFkZHJlZiwgaW5vZGVkZXAsIHdraGQpCiAJaWYgKGlu
b2RlZGVwID09IE5VTEwpCiAJCWlmIChpbm9kZWRlcF9sb29rdXAoamFkZHJlZi0+amFfbGlz
dC53a19tcCwgamFkZHJlZi0+amFfaW5vLAogCQkgICAgMCwgJmlub2RlZGVwKSA9PSAwKQot
CQkJcGFuaWMoImNhbmNlbF9qYWRkcmVmOiBMb3N0IGlub2RlZGVwIik7CisJCQlQQU5JQygi
TG9zdCBpbm9kZWRlcCIpOwogCS8qCiAJICogV2UgbXVzdCBhZGp1c3QgdGhlIG5saW5rIG9m
IGFueSByZWZlcmVuY2Ugb3BlcmF0aW9uIHRoYXQgZm9sbG93cwogCSAqIHVzIHNvIHRoYXQg
aXQgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBpbi1tZW1vcnkgcmVmZXJlbmNlLiAgVGhpcwpA
QCAtNDE1OCwxNSArNDE1MSwxNCBAQCBmcmVlX2phZGRyZWYoamFkZHJlZikKIAlpZiAoKGph
ZGRyZWYtPmphX3N0YXRlICYgQUxMQ09NUExFVEUpICE9IEFMTENPTVBMRVRFKQogCQlyZXR1
cm47CiAJaWYgKGphZGRyZWYtPmphX3JlZi5pZl9qc2VnZGVwKQotCQlwYW5pYygiZnJlZV9q
YWRkcmVmOiBzZWdkZXAgYXR0YWNoZWQgdG8gamFkZHJlZiAlcCgweCVYKVxuIiwKKwkJUEFO
SUMoInNlZ2RlcCBhdHRhY2hlZCB0byBqYWRkcmVmICVwKDB4JVgpXG4iLAogCQkgICAgamFk
ZHJlZiwgamFkZHJlZi0+amFfc3RhdGUpOwogCWlmIChqYWRkcmVmLT5qYV9zdGF0ZSAmIE5F
V0JMT0NLKQogCQlMSVNUX1JFTU9WRShqYWRkcmVmLCBqYV9ibWRlcHMpOwogCWlmIChqYWRk
cmVmLT5qYV9zdGF0ZSAmIChJTlBST0dSRVNTIHwgT05XT1JLTElTVCkpCi0JCXBhbmljKCJm
cmVlX2phZGRyZWY6IEJhZCBzdGF0ZSAlcCgweCVYKSIsCi0JCSAgICBqYWRkcmVmLCBqYWRk
cmVmLT5qYV9zdGF0ZSk7CisJCVBBTklDKCJCYWQgc3RhdGUgJXAoMHglWCkiLCBqYWRkcmVm
LCBqYWRkcmVmLT5qYV9zdGF0ZSk7CiAJaWYgKGphZGRyZWYtPmphX21rZGlyICE9IE5VTEwp
Ci0JCXBhbmljKCJmcmVlX2phZGRyZWY6IFdvcmsgcGVuZGluZywgMHglWFxuIiwgamFkZHJl
Zi0+amFfc3RhdGUpOworCQlQQU5JQygiV29yayBwZW5kaW5nLCAweCVYXG4iLCBqYWRkcmVm
LT5qYV9zdGF0ZSk7CiAJV09SS0lURU1fRlJFRShqYWRkcmVmLCBEX0pBRERSRUYpOwogfQog
CkBAIC00MTgxLDcgKzQxNzMsNyBAQCBmcmVlX2pyZW1yZWYoanJlbXJlZikKIAlpZiAoanJl
bXJlZi0+anJfcmVmLmlmX2pzZWdkZXApCiAJCWZyZWVfanNlZ2RlcChqcmVtcmVmLT5qcl9y
ZWYuaWZfanNlZ2RlcCk7CiAJaWYgKGpyZW1yZWYtPmpyX3N0YXRlICYgSU5QUk9HUkVTUykK
LQkJcGFuaWMoImZyZWVfanJlbXJlZjogSU8gc3RpbGwgcGVuZGluZyIpOworCQlQQU5JQygi
SU8gc3RpbGwgcGVuZGluZyIpOwogCVdPUktJVEVNX0ZSRUUoanJlbXJlZiwgRF9KUkVNUkVG
KTsKIH0KIApAQCAtNDE5Nyw3ICs0MTg5LDcgQEAgZnJlZV9qbmV3YmxrKGpuZXdibGspCiAJ
CXJldHVybjsKIAlMSVNUX1JFTU9WRShqbmV3YmxrLCBqbl9kZXBzKTsKIAlpZiAoam5ld2Js
ay0+am5fZGVwICE9IE5VTEwpCi0JCXBhbmljKCJmcmVlX2puZXdibGs6IERlcGVuZGVuY3kg
c3RpbGwgYXR0YWNoZWQuIik7CisJCVBBTklDKCJEZXBlbmRlbmN5IHN0aWxsIGF0dGFjaGVk
LiIpOwogCVdPUktJVEVNX0ZSRUUoam5ld2JsaywgRF9KTkVXQkxLKTsKIH0KIApAQCAtNDIx
NCw3ICs0MjA2LDcgQEAgY2FuY2VsX2puZXdibGsoam5ld2Jsaywgd2toZCkKIAlDVFIxKEtU
Ul9TVUosICJjYW5jZWxfam5ld2JsazogYmxrbm8gJWpkIiwgam5ld2Jsay0+am5fYmxrbm8p
OwogCWpzZWdkZXAgPSBqbmV3YmxrLT5qbl9qc2VnZGVwOwogCWlmIChqbmV3YmxrLT5qbl9q
c2VnZGVwID09IE5VTEwgfHwgam5ld2Jsay0+am5fZGVwID09IE5VTEwpCi0JCXBhbmljKCJj
YW5jZWxfam5ld2JsazogSW52YWxpZCBzdGF0ZSIpOworCQlQQU5JQygiSW52YWxpZCBzdGF0
ZSIpOwogCWpuZXdibGstPmpuX2pzZWdkZXAgID0gTlVMTDsKIAlqbmV3YmxrLT5qbl9kZXAg
PSBOVUxMOwogCWpuZXdibGstPmpuX3N0YXRlIHw9IEdPSU5HQVdBWTsKQEAgLTQyNDAsOCAr
NDIzMiw3IEBAIGZyZWVfamJsa2RlcChqYmxrZGVwKQogCWVsc2UgaWYgKGpibGtkZXAtPmpi
X2xpc3Qud2tfdHlwZSA9PSBEX0pUUlVOQykKIAkJV09SS0lURU1fRlJFRShqYmxrZGVwLCBE
X0pUUlVOQyk7CiAJZWxzZQotCQlwYW5pYygiZnJlZV9qYmxrZGVwOiBVbmV4cGVjdGVkIHR5
cGUgJXMiLAotCQkgICAgVFlQRU5BTUUoamJsa2RlcC0+amJfbGlzdC53a190eXBlKSk7CisJ
CVBBTklDKCJVbmV4cGVjdGVkIHR5cGUgJXMiLCBUWVBFTkFNRShqYmxrZGVwLT5qYl9saXN0
LndrX3R5cGUpKTsKIH0KIAogLyoKQEAgLTQ4MzEsOCArNDgyMiw3IEBAIHNvZnRkZXBfc2V0
dXBfaW5vbWFwZGVwKGJwLCBpcCwgbmV3aW51bSwgbW9kZSkKIAl3b3JraXRlbV9hbGxvYygm
Ym1zYWZlbWFwLT5zbV9saXN0LCBEX0JNU0FGRU1BUCwgbXApOwogCUFDUVVJUkVfTE9DSygm
bGspOwogCWlmICgoaW5vZGVkZXBfbG9va3VwKG1wLCBuZXdpbnVtLCBERVBBTExPQyB8IE5P
REVMQVksICZpbm9kZWRlcCkpKQotCQlwYW5pYygic29mdGRlcF9zZXR1cF9pbm9tYXBkZXA6
IGRlcGVuZGVuY3kgJXAgZm9yIG5ldyIKLQkJICAgICJpbm9kZSBhbHJlYWR5IGV4aXN0cyIs
IGlub2RlZGVwKTsKKwkJUEFOSUMoImRlcGVuZGVuY3kgJXAgZm9yIG5ldyBpbm9kZSBhbHJl
YWR5IGV4aXN0cyIsIGlub2RlZGVwKTsKIAlibXNhZmVtYXAgPSBibXNhZmVtYXBfbG9va3Vw
KG1wLCBicCwgaW5vX3RvX2NnKGZzLCBuZXdpbnVtKSwgYm1zYWZlbWFwKTsKIAlpZiAoamFk
ZHJlZikgewogCQlMSVNUX0lOU0VSVF9IRUFEKCZibXNhZmVtYXAtPnNtX2phZGRyZWZoZCwg
amFkZHJlZiwgamFfYm1kZXBzKTsKQEAgLTQ4OTIsOCArNDg4Miw3IEBAIHNvZnRkZXBfc2V0
dXBfYmxrbWFwZGVwKGJwLCBtcCwgbmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAkJCWZv
ciAoaSA9IGpuZXdibGstPmpuX29sZGZyYWdzOyBpIDwgam5ld2Jsay0+am5fZnJhZ3M7CiAJ
CQkgICAgaSsrKSB7CiAJCQkJaWYgKGlzc2V0KGJsa3NmcmVlLCBibm8gKyBpKSkKLQkJCQkJ
cGFuaWMoInNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwOiAiCi0JCQkJCSAgICAiZnJlZSBmcmFn
bWVudCAlZCBmcm9tICVkLSVkICIKKwkJCQkJUEFOSUMoImZyZWUgZnJhZ21lbnQgJWQgZnJv
bSAlZC0lZCAiCiAJCQkJCSAgICAic3RhdGUgMHglWCBkZXAgJXAiLCBpLAogCQkJCQkgICAg
am5ld2Jsay0+am5fb2xkZnJhZ3MsCiAJCQkJCSAgICBqbmV3YmxrLT5qbl9mcmFncywKQEAg
LTQ5MDksNyArNDg5OCw3IEBAIHNvZnRkZXBfc2V0dXBfYmxrbWFwZGVwKGJwLCBtcCwgbmV3
Ymxrbm8sIGZyYWdzLCBvbGRmcmFncykKIAkgICAgbmV3Ymxrbm8sIGZyYWdzLCBvbGRmcmFn
cyk7CiAJQUNRVUlSRV9MT0NLKCZsayk7CiAJaWYgKG5ld2Jsa19sb29rdXAobXAsIG5ld2Js
a25vLCBERVBBTExPQywgJm5ld2JsaykgIT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBf
YmxrbWFwZGVwOiBmb3VuZCBibG9jayIpOworCQlQQU5JQygiZm91bmQgYmxvY2siKTsKIAlu
ZXdibGstPm5iX2Jtc2FmZW1hcCA9IGJtc2FmZW1hcCA9IGJtc2FmZW1hcF9sb29rdXAobXAs
IGJwLAogCSAgICBkdG9nKGZzLCBuZXdibGtubyksIE5VTEwpOwogCWlmIChqbmV3YmxrKSB7
CkBAIC01MDc1LDE1ICs1MDY0LDEzIEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NkaXJlY3QoaXAs
IG9mZiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBicCkKIAlBQ1FV
SVJFX0xPQ0soJmxrKTsKIAlpZiAob2ZmID49IE5EQUREUikgewogCQlpZiAobGJuID4gMCkK
LQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBiYWQgbGJuICVqZCwgb2Zm
ICVqZCIsCi0JCQkgICAgbGJuLCBvZmYpOworCQkJUEFOSUMoImJhZCBsYm4gJWpkLCBvZmYg
JWpkIiwgbGJuLCBvZmYpOwogCQkvKiBhbGxvY2F0aW5nIGFuIGluZGlyZWN0IGJsb2NrICov
CiAJCWlmIChvbGRibGtubyAhPSAwKQotCQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2Nk
aXJlY3Q6IG5vbi16ZXJvIGluZGlyIik7CisJCQlQQU5JQygibm9uLXplcm8gaW5kaXIiKTsK
IAl9IGVsc2UgewogCQlpZiAob2ZmICE9IGxibikKLQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVw
X2FsbG9jZGlyZWN0OiBsYm4gJWpkICE9IG9mZiAlamQiLAotCQkJICAgIGxibiwgb2ZmKTsK
KwkJCVBBTklDKCJsYm4gJWpkICE9IG9mZiAlamQiLCBsYm4sIG9mZik7CiAJCS8qCiAJCSAq
IEFsbG9jYXRpbmcgYSBkaXJlY3QgYmxvY2suCiAJCSAqCkBAIC01MDk2LDcgKzUwODMsNyBA
QCBzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0KGlwLCBvZmYsIG5ld2Jsa25vLCBvbGRibGtu
bywgbmV3c2l6ZSwgb2xkc2l6ZSwgYnApCiAJCQkgICAgJnBhZ2VkZXApOwogCX0KIAlpZiAo
bmV3YmxrX2xvb2t1cChtcCwgbmV3Ymxrbm8sIDAsICZuZXdibGspID09IDApCi0JCXBhbmlj
KCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBsb3N0IGJsb2NrIik7CisJCVBBTklDKCJs
b3N0IGJsb2NrIik7CiAJS0FTU0VSVChuZXdibGstPm5iX2xpc3Qud2tfdHlwZSA9PSBEX05F
V0JMSywKIAkgICAgKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZGlyZWN0OiBuZXdibGsgYWxyZWFk
eSBpbml0aWFsaXplZCIpKTsKIAkvKgpAQCAtNTE1Miw3ICs1MTM5LDcgQEAgc29mdGRlcF9z
ZXR1cF9hbGxvY2RpcmVjdChpcCwgb2ZmLCBuZXdibGtubywgb2xkYmxrbm8sIG5ld3NpemUs
IG9sZHNpemUsIGJwKQogCQkJYnJlYWs7CiAJfQogCWlmIChvbGRhZHAgPT0gTlVMTCkKLQkJ
cGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NkaXJlY3Q6IGxvc3QgZW50cnkiKTsKKwkJUEFO
SUMoImxvc3QgZW50cnkiKTsKIAkvKiBpbnNlcnQgaW4gbWlkZGxlIG9mIGxpc3QgKi8KIAlU
QUlMUV9JTlNFUlRfQkVGT1JFKG9sZGFkcCwgYWRwLCBhZF9uZXh0KTsKIAlpZiAob2xkYWRw
LT5hZF9vZmZzZXQgPT0gb2ZmKQpAQCAtNTE4NiwxNCArNTE3MywxMiBAQCBqbmV3YmxrX21l
cmdlKG5ldywgb2xkLCB3a2hkKQogCS8qIFJlcGxhY2UgYSBqZnJlZWZyYWcgd2l0aCBhIGpu
ZXdibGsuICovCiAJaWYgKG5ldy0+d2tfdHlwZSA9PSBEX0pGUkVFRlJBRykgewogCQlpZiAo
V0tfSk5FV0JMSyhvbGQpLT5qbl9ibGtubyAhPSBXS19KRlJFRUZSQUcobmV3KS0+ZnJfYmxr
bm8pCi0JCQlwYW5pYygiam5ld2Jsa19tZXJnZTogYmxrbm8gbWlzbWF0Y2g6ICVwLCAlcCIs
Ci0JCQkgICAgb2xkLCBuZXcpOworCQkJUEFOSUMoImJsa25vIG1pc21hdGNoOiAlcCwgJXAi
LCBvbGQsIG5ldyk7CiAJCWNhbmNlbF9qZnJlZWZyYWcoV0tfSkZSRUVGUkFHKG5ldykpOwog
CQlyZXR1cm4gKG9sZCk7CiAJfQogCWlmIChvbGQtPndrX3R5cGUgIT0gRF9KTkVXQkxLIHx8
IG5ldy0+d2tfdHlwZSAhPSBEX0pORVdCTEspCi0JCXBhbmljKCJqbmV3YmxrX21lcmdlOiBC
YWQgdHlwZTogb2xkICVkIG5ldyAlZFxuIiwKLQkJICAgIG9sZC0+d2tfdHlwZSwgbmV3LT53
a190eXBlKTsKKwkJUEFOSUMoIkJhZCB0eXBlOiBvbGQgJWQgbmV3ICVkXG4iLCBvbGQtPndr
X3R5cGUsIG5ldy0+d2tfdHlwZSk7CiAJLyoKIAkgKiBIYW5kbGUgbWVyZ2luZyBvZiB0d28g
am5ld2JsayByZWNvcmRzIHRoYXQgZGVzY3JpYmUKIAkgKiBkaWZmZXJlbnQgc2V0cyBvZiBm
cmFnbWVudHMgaW4gdGhlIHNhbWUgYmxvY2suCkBAIC01MjAxLDcgKzUxODYsNyBAQCBqbmV3
YmxrX21lcmdlKG5ldywgb2xkLCB3a2hkKQogCWpuZXdibGsgPSBXS19KTkVXQkxLKG9sZCk7
CiAJbmpuZXdibGsgPSBXS19KTkVXQkxLKG5ldyk7CiAJaWYgKGpuZXdibGstPmpuX2Jsa25v
ICE9IG5qbmV3YmxrLT5qbl9ibGtubykKLQkJcGFuaWMoImpuZXdibGtfbWVyZ2U6IE1lcmdp
bmcgZGlzcGFyYXRlIGJsb2Nrcy4iKTsKKwkJUEFOSUMoIk1lcmdpbmcgZGlzcGFyYXRlIGJs
b2Nrcy4iKTsKIAkvKgogCSAqIFRoZSByZWNvcmQgbWF5IGJlIHJvbGxlZCBiYWNrIGluIHRo
ZSBjZy4KIAkgKi8KQEAgLTUyNDIsOCArNTIyNyw3IEBAIGFsbG9jZGlyZWN0X21lcmdlKGFk
cGhlYWQsIG5ld2FkcCwgb2xkYWRwKQogCWlmIChuZXdhZHAtPmFkX29sZGJsa25vICE9IG9s
ZGFkcC0+YWRfbmV3Ymxrbm8gfHwKIAkgICAgbmV3YWRwLT5hZF9vbGRzaXplICE9IG9sZGFk
cC0+YWRfbmV3c2l6ZSB8fAogCSAgICBuZXdhZHAtPmFkX29mZnNldCA+PSBOREFERFIpCi0J
CXBhbmljKCIlcyAlamQgIT0gbmV3ICVqZCB8fCBvbGQgc2l6ZSAlbGQgIT0gbmV3ICVsZCIs
Ci0JCSAgICAiYWxsb2NkaXJlY3RfbWVyZ2U6IG9sZCBibGtubyIsCisJCVBBTklDKCJvbGQg
Ymxrbm8gJWpkICE9IG5ldyAlamQgfHwgb2xkIHNpemUgJWxkICE9IG5ldyAlbGQiLAogCQkg
ICAgKGludG1heF90KW5ld2FkcC0+YWRfb2xkYmxrbm8sCiAJCSAgICAoaW50bWF4X3Qpb2xk
YWRwLT5hZF9uZXdibGtubywKIAkJICAgIG5ld2FkcC0+YWRfb2xkc2l6ZSwgb2xkYWRwLT5h
ZF9uZXdzaXplKTsKQEAgLTUyNzcsNyArNTI2MSw3IEBAIGFsbG9jZGlyZWN0X21lcmdlKGFk
cGhlYWQsIG5ld2FkcCwgb2xkYWRwKQogCWlmICgod2sgPSBMSVNUX0ZJUlNUKCZvbGRhZHAt
PmFkX25ld2RpcmJsaykpICE9IE5VTEwpIHsKIAkJV09SS0xJU1RfUkVNT1ZFKHdrKTsKIAkJ
aWYgKCFMSVNUX0VNUFRZKCZvbGRhZHAtPmFkX25ld2RpcmJsaykpCi0JCQlwYW5pYygiYWxs
b2NkaXJlY3RfbWVyZ2U6IGV4dHJhIG5ld2RpcmJsayIpOworCQkJUEFOSUMoImV4dHJhIG5l
d2RpcmJsayIpOwogCQlXT1JLTElTVF9JTlNFUlQoJm5ld2FkcC0+YWRfbmV3ZGlyYmxrLCB3
ayk7CiAJfQogCVRBSUxRX1JFTU9WRShhZHBoZWFkLCBvbGRhZHAsIGFkX25leHQpOwpAQCAt
NTI5MCw3ICs1Mjc0LDcgQEAgYWxsb2NkaXJlY3RfbWVyZ2UoYWRwaGVhZCwgbmV3YWRwLCBv
bGRhZHApCiAJICovCiAJaWYgKGZyZWVmcmFnID09IE5VTEwpIHsKIAkJaWYgKG9sZGFkcC0+
YWRfbmV3Ymxrbm8gIT0gbmV3YWRwLT5hZF9uZXdibGtubykKLQkJCXBhbmljKCJhbGxvY2Rp
cmVjdF9tZXJnZTogJWpkICE9ICVqZCIsCisJCQlQQU5JQygiJWpkICE9ICVqZCIsCiAJCQkg
ICAgb2xkYWRwLT5hZF9uZXdibGtubywgbmV3YWRwLT5hZF9uZXdibGtubyk7CiAJCW5ld2Fk
cC0+YWRfYmxvY2submJfam5ld2JsayA9IChzdHJ1Y3Qgam5ld2JsayAqKQogCQkgICAgam5l
d2Jsa19tZXJnZSgmbmV3YWRwLT5hZF9ibG9jay5uYl9qbmV3YmxrLT5qbl9saXN0LCAKQEAg
LTUzNTQsNyArNTMzOCw3IEBAIG5ld2ZyZWVmcmFnKGlwLCBibGtubywgc2l6ZSwgbGJuKQog
CSAgICBpcC0+aV9udW1iZXIsIGJsa25vLCBzaXplLCBsYm4pOwogCWZzID0gaXAtPmlfZnM7
CiAJaWYgKGZyYWdudW0oZnMsIGJsa25vKSArIG51bWZyYWdzKGZzLCBzaXplKSA+IGZzLT5m
c19mcmFnKQotCQlwYW5pYygibmV3ZnJlZWZyYWc6IGZyYWcgc2l6ZSIpOworCQlQQU5JQygi
ZnJhZyBzaXplIik7CiAJZnJlZWZyYWcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmcmVlZnJh
ZyksCiAJICAgIE1fRlJFRUZSQUcsIE1fU09GVERFUF9GTEFHUyk7CiAJd29ya2l0ZW1fYWxs
b2MoJmZyZWVmcmFnLT5mZl9saXN0LCBEX0ZSRUVGUkFHLCBVRlNUT1ZGUyhpcC0+aV91bXAp
KTsKQEAgLTU0MDMsNyArNTM4Nyw3IEBAIGhhbmRsZV93b3JraXRlbV9mcmVlZnJhZyhmcmVl
ZnJhZykKIAkgKi8KIAlpZiAoZnJlZWZyYWctPmZmX2pkZXApIHsKIAkJaWYgKGZyZWVmcmFn
LT5mZl9qZGVwLT53a190eXBlICE9IERfSk5FV0JMSykKLQkJCXBhbmljKCJoYW5kbGVfd29y
a2l0ZW1fZnJlZWZyYWc6IFVuZXhwZWN0ZWQgdHlwZSAlZFxuIiwKKwkJCVBBTklDKCJVbmV4
cGVjdGVkIHR5cGUgJWRcbiIsCiAJCQkgICAgZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUp
OwogCQljYW5jZWxfam5ld2JsayhXS19KTkVXQkxLKGZyZWVmcmFnLT5mZl9qZGVwKSwgJndr
aGQpOwogCX0KQEAgLTU0NDAsOCArNTQyNCw3IEBAIHNvZnRkZXBfc2V0dXBfYWxsb2NleHQo
aXAsIG9mZiwgbmV3Ymxrbm8sIG9sZGJsa25vLCBuZXdzaXplLCBvbGRzaXplLCBicCkKIAl1
ZnNfbGJuX3QgbGJuOwogCiAJaWYgKG9mZiA+PSBOWEFERFIpCi0JCXBhbmljKCJzb2Z0ZGVw
X3NldHVwX2FsbG9jZXh0OiBsYm4gJWxsZCA+IE5YQUREUiIsCi0JCSAgICAobG9uZyBsb25n
KW9mZik7CisJCVBBTklDKCJsYm4gJWxsZCA+IE5YQUREUiIsIChsb25nIGxvbmcpb2ZmKTsK
IAogCWxibiA9IGJwLT5iX2xibGtubzsKIAltcCA9IFVGU1RPVkZTKGlwLT5pX3VtcCk7CkBA
IC01NDUyLDcgKzU0MzUsNyBAQCBzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0KGlwLCBvZmYsIG5l
d2Jsa25vLCBvbGRibGtubywgbmV3c2l6ZSwgb2xkc2l6ZSwgYnApCiAKIAlBQ1FVSVJFX0xP
Q0soJmxrKTsKIAlpZiAobmV3YmxrX2xvb2t1cChtcCwgbmV3Ymxrbm8sIDAsICZuZXdibGsp
ID09IDApCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0OiBsb3N0IGJsb2NrIik7
CisJCVBBTklDKCJsb3N0IGJsb2NrIik7CiAJS0FTU0VSVChuZXdibGstPm5iX2xpc3Qud2tf
dHlwZSA9PSBEX05FV0JMSywKIAkgICAgKCJzb2Z0ZGVwX3NldHVwX2FsbG9jZXh0OiBuZXdi
bGsgYWxyZWFkeSBpbml0aWFsaXplZCIpKTsKIAkvKgpAQCAtNTUwOSw3ICs1NDkyLDcgQEAg
c29mdGRlcF9zZXR1cF9hbGxvY2V4dChpcCwgb2ZmLCBuZXdibGtubywgb2xkYmxrbm8sIG5l
d3NpemUsIG9sZHNpemUsIGJwKQogCQkJYnJlYWs7CiAJfQogCWlmIChvbGRhZHAgPT0gTlVM
TCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfYWxsb2NleHQ6IGxvc3QgZW50cnkiKTsKKwkJ
UEFOSUMoImxvc3QgZW50cnkiKTsKIAkvKiBpbnNlcnQgaW4gbWlkZGxlIG9mIGxpc3QgKi8K
IAlUQUlMUV9JTlNFUlRfQkVGT1JFKG9sZGFkcCwgYWRwLCBhZF9uZXh0KTsKIAlpZiAob2xk
YWRwLT5hZF9vZmZzZXQgPT0gb2ZmKQpAQCAtNTU2NCw3ICs1NTQ3LDcgQEAgbmV3YWxsb2Np
bmRpcihpcCwgcHRybm8sIG5ld2Jsa25vLCBvbGRibGtubywgbGJuKQogCQlmcmVlZnJhZyA9
IE5VTEw7CiAJQUNRVUlSRV9MT0NLKCZsayk7CiAJaWYgKG5ld2Jsa19sb29rdXAoVUZTVE9W
RlMoaXAtPmlfdW1wKSwgbmV3Ymxrbm8sIDAsICZuZXdibGspID09IDApCi0JCXBhbmljKCJu
ZXdfYWxsb2NpbmRpcjogbG9zdCBibG9jayIpOworCQlQQU5JQygibG9zdCBibG9jayIpOwog
CUtBU1NFUlQobmV3YmxrLT5uYl9saXN0LndrX3R5cGUgPT0gRF9ORVdCTEssCiAJICAgICgi
bmV3YWxsb2NpbmRpcjogbmV3YmxrIGFscmVhZHkgaW5pdGlhbGl6ZWQiKSk7CiAJbmV3Ymxr
LT5uYl9saXN0LndrX3R5cGUgPSBEX0FMTE9DSU5ESVI7CkBAIC01NjA2LDggKzU1ODksNyBA
QCBzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZShpcCwgbGJuLCBicCwgcHRybm8sIG5l
d2Jsa25vLCBvbGRibGtubywgbmJwKQogCWludCBkZmxhZ3M7CiAKIAlpZiAobGJuICE9IG5i
cC0+Yl9sYmxrbm8pCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZTog
bGJuICVqZCAhPSBsYmxrbm8gJWpkIiwKLQkJICAgIGxibiwgYnAtPmJfbGJsa25vKTsKKwkJ
UEFOSUMoImxibiAlamQgIT0gbGJsa25vICVqZCIsIGxibiwgYnAtPmJfbGJsa25vKTsKIAlD
VFI0KEtUUl9TVUosCiAJICAgICJzb2Z0ZGVwX3NldHVwX2FsbG9jaW5kaXJfcGFnZTogaW5v
ICVkIGJsa25vICVqZCBvbGRibGtubyAlamQgIgogCSAgICAibGJuICVqZCIsIGlwLT5pX251
bWJlciwgbmV3Ymxrbm8sIG9sZGJsa25vLCBsYm4pOwpAQCAtNTY2MSw3ICs1NjQzLDcgQEAg
c29mdGRlcF9zZXR1cF9hbGxvY2luZGlyX21ldGEobmJwLCBpcCwgYnAsIHB0cm5vLCBuZXdi
bGtubykKIAlpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAtPmlfbnVt
YmVyLCBkZmxhZ3MsICZpbm9kZWRlcCk7CiAJV09SS0xJU1RfSU5TRVJUKCZuYnAtPmJfZGVw
LCAmYWlwLT5haV9ibG9jay5uYl9saXN0KTsKIAlpZiAoc2V0dXBfYWxsb2NpbmRpcl9waGFz
ZTIoYnAsIGlwLCBpbm9kZWRlcCwgYWlwLCBsYm4pKQotCQlwYW5pYygic29mdGRlcF9zZXR1
cF9hbGxvY2luZGlyX21ldGE6IEJsb2NrIGFscmVhZHkgZXhpc3RlZCIpOworCQlQQU5JQygi
QmxvY2sgYWxyZWFkeSBleGlzdGVkIik7CiAJRlJFRV9MT0NLKCZsayk7CiB9CiAKQEAgLTU3
MTQsNyArNTY5Niw3IEBAIGluZGlyZGVwX2xvb2t1cChtcCwgaXAsIGJwKQogCQlpZiAoaW5k
aXJkZXAgIT0gTlVMTCAmJiBuZXdpbmRpcmRlcCA9PSBOVUxMKQogCQkJcmV0dXJuIChpbmRp
cmRlcCk7CiAJCWlmIChpbmRpcmRlcCAhPSBOVUxMICYmIG5ld2luZGlyZGVwICE9IE5VTEwp
Ci0JCQlwYW5pYygiaW5kaXJkZXBfbG9va3VwOiBzaW11bHRhbmVvdXMgY3JlYXRlIik7CisJ
CQlQQU5JQygic2ltdWx0YW5lb3VzIGNyZWF0ZSIpOwogCQkvKiBOb25lIGZvdW5kIG9uIHRo
ZSBidWZmZXIgYW5kIGEgbmV3IHN0cnVjdHVyZSBpcyByZWFkeS4gKi8KIAkJaWYgKGluZGly
ZGVwID09IE5VTEwgJiYgbmV3aW5kaXJkZXAgIT0gTlVMTCkKIAkJCWJyZWFrOwpAQCAtNTc4
Miw3ICs1NzY0LDcgQEAgc2V0dXBfYWxsb2NpbmRpcl9waGFzZTIoYnAsIGlwLCBpbm9kZWRl
cCwgYWlwLCBsYm4pCiAJbXAgPSBVRlNUT1ZGUyhpcC0+aV91bXApOwogCWZzID0gaXAtPmlf
ZnM7CiAJaWYgKGJwLT5iX2xibGtubyA+PSAwKQotCQlwYW5pYygic2V0dXBfYWxsb2NpbmRp
cl9waGFzZTI6IG5vdCBpbmRpciBibGsiKTsKKwkJUEFOSUMoIm5vdCBpbmRpciBibGsiKTsK
IAlLQVNTRVJUKGFpcC0+YWlfb2Zmc2V0ID49IDAgJiYgYWlwLT5haV9vZmZzZXQgPCBOSU5E
SVIoZnMpLAogCSAgICAoInNldHVwX2FsbG9jaW5kaXJfcGhhc2UyOiBCYWQgb2Zmc2V0ICVk
IiwgYWlwLT5haV9vZmZzZXQpKTsKIAlpbmRpcmRlcCA9IGluZGlyZGVwX2xvb2t1cChtcCwg
aXAsIGJwKTsKQEAgLTU4MjcsNyArNTgwOSw3IEBAIGFsbG9jaW5kaXJfbWVyZ2UoYWlwLCBv
bGRhaXApCiAJc3RydWN0IHdvcmtsaXN0ICp3azsKIAogCWlmIChvbGRhaXAtPmFpX25ld2Js
a25vICE9IGFpcC0+YWlfb2xkYmxrbm8pCi0JCXBhbmljKCJhbGxvY2luZGlyX21lcmdlOiBi
bGtubyIpOworCQlQQU5JQygiYmxrbm8iKTsKIAlhaXAtPmFpX29sZGJsa25vID0gb2xkYWlw
LT5haV9vbGRibGtubzsKIAlmcmVlZnJhZyA9IGFpcC0+YWlfZnJlZWZyYWc7CiAJYWlwLT5h
aV9mcmVlZnJhZyA9IG9sZGFpcC0+YWlfZnJlZWZyYWc7CkBAIC01ODQwLDcgKzU4MjIsNyBA
QCBhbGxvY2luZGlyX21lcmdlKGFpcCwgb2xkYWlwKQogCWlmICgod2sgPSBMSVNUX0ZJUlNU
KCZvbGRhaXAtPmFpX25ld2RpcmJsaykpICE9IE5VTEwpIHsKIAkJV09SS0xJU1RfUkVNT1ZF
KHdrKTsKIAkJaWYgKCFMSVNUX0VNUFRZKCZvbGRhaXAtPmFpX25ld2RpcmJsaykpCi0JCQlw
YW5pYygiYWxsb2NpbmRpcl9tZXJnZTogZXh0cmEgbmV3ZGlyYmxrIik7CisJCQlQQU5JQygi
ZXh0cmEgbmV3ZGlyYmxrIik7CiAJCVdPUktMSVNUX0lOU0VSVCgmYWlwLT5haV9uZXdkaXJi
bGssIHdrKTsKIAl9CiAJLyoKQEAgLTYwMzYsNyArNjAxOCw3IEBAIHNldHVwX3RydW5jX2lu
ZGlyKGZyZWVibGtzLCBpcCwgbGJuLCBsYXN0bGJuLCBibGtubykKIAlBQ1FVSVJFX0xPQ0so
JmxrKTsKIAlpbmRpcmRlcCA9IGluZGlyZGVwX2xvb2t1cChtcCwgaXAsIGJwKTsKIAlpZiAo
aW5kaXJkZXAtPmlyX2ZyZWVibGtzKQotCQlwYW5pYygic2V0dXBfdHJ1bmNfaW5kaXI6IGlu
ZGlyZGVwIGFscmVhZHkgdHJ1bmNhdGVkLiIpOworCQlQQU5JQygiaW5kaXJkZXAgYWxyZWFk
eSB0cnVuY2F0ZWQuIik7CiAJVEFJTFFfSU5TRVJUX1RBSUwoJmluZGlyZGVwLT5pcl90cnVu
YywgZnJlZXdvcmssIGZ3X25leHQpOwogCWZyZWV3b3JrLT5md19pbmRpciA9IGluZGlyZGVw
OwogCS8qCkBAIC02NDE2LDcgKzYzOTgsNyBAQCBzb2Z0ZGVwX2pvdXJuYWxfZnJlZWJsb2Nr
cyhpcCwgY3JlZCwgbGVuZ3RoLCBmbGFncykKIAlBQ1FVSVJFX0xPQ0soJmxrKTsKIAkodm9p
ZCkgaW5vZGVkZXBfbG9va3VwKG1wLCBpcC0+aV9udW1iZXIsIGRmbGFncywgJmlub2RlZGVw
KTsKIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIElPU1RBUlRFRCkgIT0gMCkKLQkJcGFu
aWMoInNvZnRkZXBfc2V0dXBfZnJlZWJsb2NrczogaW5vZGUgYnVzeSIpOworCQlQQU5JQygi
aW5vZGUgYnVzeSIpOwogCS8qCiAJICogQWRkIHRoZSBmcmVlYmxrcyBzdHJ1Y3R1cmUgdG8g
dGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0CiAJICogbXVzdCBhd2FpdCB0aGUgemVybydl
ZCBpbm9kZSBiZWluZyB3cml0dGVuIHRvIGRpc2suIElmIHdlCkBAIC02NjA0LDcgKzY1ODYs
NyBAQCBzb2Z0ZGVwX3NldHVwX2ZyZWVibG9ja3MoaXAsIGxlbmd0aCwgZmxhZ3MpCiAJZnMg
PSBpcC0+aV9mczsKIAltcCA9IFVGU1RPVkZTKGlwLT5pX3VtcCk7CiAJaWYgKGxlbmd0aCAh
PSAwKQotCQlwYW5pYygic29mdGRlcF9zZXR1cF9mcmVlYmxvY2tzOiBub24temVybyBsZW5n
dGgiKTsKKwkJUEFOSUMoIm5vbi16ZXJvIGxlbmd0aCIpOwogCWZyZWVibGtzID0gbmV3ZnJl
ZWJsa3MobXAsIGlwKTsKIAlleHRibG9ja3MgPSAwOwogCWRhdGFibG9ja3MgPSAwOwpAQCAt
NjY2Nyw3ICs2NjQ5LDcgQEAgc29mdGRlcF9zZXR1cF9mcmVlYmxvY2tzKGlwLCBsZW5ndGgs
IGZsYWdzKQogCQlkZmxhZ3MgfD0gTk9ERUxBWTsKIAkodm9pZCkgaW5vZGVkZXBfbG9va3Vw
KG1wLCBpcC0+aV9udW1iZXIsIGRmbGFncywgJmlub2RlZGVwKTsKIAlpZiAoKGlub2RlZGVw
LT5pZF9zdGF0ZSAmIElPU1RBUlRFRCkgIT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBf
ZnJlZWJsb2NrczogaW5vZGUgYnVzeSIpOworCQlQQU5JQygiaW5vZGUgYnVzeSIpOwogCS8q
CiAJICogQWRkIHRoZSBmcmVlYmxrcyBzdHJ1Y3R1cmUgdG8gdGhlIGxpc3Qgb2Ygb3BlcmF0
aW9ucyB0aGF0CiAJICogbXVzdCBhd2FpdCB0aGUgemVybydlZCBpbm9kZSBiZWluZyB3cml0
dGVuIHRvIGRpc2suIElmIHdlCkBAIC02OTUxLDEyICs2OTMzLDEyIEBAIGNhbmNlbF9wYWdl
ZGVwKHBhZ2VkZXAsIGZyZWVibGtzLCBibGtvZmYpCiAKIAkJTElTVF9GT1JFQUNIKGRhcCwg
JnBhZ2VkZXAtPnBkX3BlbmRpbmdoZCwgZGFfcGRsaXN0KQogCQkJaWYgKGRhcC0+ZGFfb2Zm
c2V0ID4gYmxrb2ZmKQotCQkJCXBhbmljKCJjYW5jZWxfcGFnZWRlcDogZGlyYWRkICVwIG9m
ZiAlZCA+ICVkIiwKKwkJCQlQQU5JQygiZGlyYWRkICVwIG9mZiAlZCA+ICVkIiwKIAkJCQkg
ICAgZGFwLCBkYXAtPmRhX29mZnNldCwgYmxrb2ZmKTsKIAkJZm9yIChpID0gMDsgaSA8IERB
SEFTSFNaOyBpKyspCiAJCQlMSVNUX0ZPUkVBQ0goZGFwLCAmcGFnZWRlcC0+cGRfZGlyYWRk
aGRbaV0sIGRhX3BkbGlzdCkKIAkJCQlpZiAoZGFwLT5kYV9vZmZzZXQgPiBibGtvZmYpCi0J
CQkJCXBhbmljKCJjYW5jZWxfcGFnZWRlcDogZGlyYWRkICVwIG9mZiAlZCA+ICVkIiwKKwkJ
CQkJUEFOSUMoImRpcmFkZCAlcCBvZmYgJWQgPiAlZCIsCiAJCQkJCSAgICBkYXAsIGRhcC0+
ZGFfb2Zmc2V0LCBibGtvZmYpOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTY5NzMsNyArNjk1
NSw3IEBAIGNhbmNlbF9wYWdlZGVwKHBhZ2VkZXAsIGZyZWVibGtzLCBibGtvZmYpCiAJaWYg
KChwYWdlZGVwLT5wZF9zdGF0ZSAmIE5FV0JMT0NLKSAhPSAwKQogCQlmcmVlX25ld2RpcmJs
ayhwYWdlZGVwLT5wZF9uZXdkaXJibGspOwogCWlmIChmcmVlX3BhZ2VkZXAocGFnZWRlcCkg
PT0gMCkKLQkJcGFuaWMoIkZhaWxlZCB0byBmcmVlIHBhZ2VkZXAgJXAiLCBwYWdlZGVwKTsK
KwkJUEFOSUMoIkZhaWxlZCB0byBmcmVlIHBhZ2VkZXAgJXAiLCBwYWdlZGVwKTsKIAlyZXR1
cm4gKDApOwogfQogCkBAIC03MDAyLDcgKzY5ODQsNyBAQCBkZWFsbG9jYXRlX2RlcGVuZGVu
Y2llcyhicCwgZnJlZWJsa3MsIG9mZikKIAkJCWluZGlyZGVwID0gV0tfSU5ESVJERVAod2sp
OwogCQkJaWYgKGJwLT5iX2xibGtubyA+PSAwIHx8CiAJCQkgICAgYnAtPmJfYmxrbm8gIT0g
aW5kaXJkZXAtPmlyX3NhdmVicC0+Yl9sYmxrbm8pCi0JCQkJcGFuaWMoImRlYWxsb2NhdGVf
ZGVwZW5kZW5jaWVzOiBub3QgaW5kaXIiKTsKKwkJCQlQQU5JQygibm90IGluZGlyIik7CiAJ
CQljYW5jZWxfaW5kaXJkZXAoaW5kaXJkZXAsIGJwLCBmcmVlYmxrcyk7CiAJCQljb250aW51
ZTsKIApAQCAtNzA0MCw4ICs3MDIyLDcgQEAgZGVhbGxvY2F0ZV9kZXBlbmRlbmNpZXMoYnAs
IGZyZWVibGtzLCBvZmYpCiAJCQkJY29udGludWU7CiAJCQkvKiBGQUxMVEhST1VHSCAqLwog
CQlkZWZhdWx0OgotCQkJcGFuaWMoImRlYWxsb2NhdGVfZGVwZW5kZW5jaWVzOiBVbmV4cGVj
dGVkIHR5cGUgJXMiLAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQQU5J
QygiVW5leHBlY3RlZCB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJCS8q
IE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTcwOTAsNyArNzA3MSw3IEBAIGNhbmNlbF9h
bGxvY2RpcmVjdChhZHBoZWFkLCBhZHAsIGZyZWVibGtzKQogCQkJYnJlYWs7CiAJfQogCWlm
IChmcmVld29yayA9PSBOVUxMKQotCQlwYW5pYygiY2FuY2VsX2FsbG9jZGlyZWN0OiBGcmVl
d29yayBub3QgZm91bmQiKTsKKwkJUEFOSUMoIkZyZWV3b3JrIG5vdCBmb3VuZCIpOwogCS8q
CiAJICogSWYgYSBuZXdibGsgZXhpc3RzIGF0IGFsbCB3ZSBzdGlsbCBoYXZlIHRoZSBqb3Vy
bmFsIGVudHJ5IHRoYXQKIAkgKiBpbml0aWF0ZWQgdGhlIGFsbG9jYXRpb24gc28gd2UgZG8g
bm90IG5lZWQgdG8gam91cm5hbCB0aGUgZnJlZS4KQEAgLTcxNjMsNyArNzE0NCw3IEBAIGNh
bmNlbF9uZXdibGsobmV3YmxrLCB3aywgd2toZCkKIAlpZiAoKHdrID0gTElTVF9GSVJTVCgm
bmV3YmxrLT5uYl9uZXdkaXJibGspKSAhPSBOVUxMKQogCQlmcmVlX25ld2RpcmJsayhXS19O
RVdESVJCTEsod2spKTsKIAlpZiAoIUxJU1RfRU1QVFkoJm5ld2Jsay0+bmJfbmV3ZGlyYmxr
KSkKLQkJcGFuaWMoImNhbmNlbF9uZXdibGs6IGV4dHJhIG5ld2RpcmJsayIpOworCQlQQU5J
QygiZXh0cmEgbmV3ZGlyYmxrIik7CiAKIAlyZXR1cm4gKGpuZXdibGspOwogfQpAQCAtNzIx
MSw3ICs3MTkyLDcgQEAgZnJlZV9uZXdibGsobmV3YmxrKQogCWlmICgod2sgPSBMSVNUX0ZJ
UlNUKCZuZXdibGstPm5iX25ld2RpcmJsaykpICE9IE5VTEwpCiAJCWZyZWVfbmV3ZGlyYmxr
KFdLX05FV0RJUkJMSyh3aykpOwogCWlmICghTElTVF9FTVBUWSgmbmV3YmxrLT5uYl9uZXdk
aXJibGspKQotCQlwYW5pYygiZnJlZV9uZXdibGs6IGV4dHJhIG5ld2RpcmJsayIpOworCQlQ
QU5JQygiZXh0cmEgbmV3ZGlyYmxrIik7CiAJd2hpbGUgKChpbmRpcmRlcCA9IExJU1RfRklS
U1QoJm5ld2Jsay0+bmJfaW5kaXJkZXBzKSkgIT0gTlVMTCkKIAkJaW5kaXJkZXBfY29tcGxl
dGUoaW5kaXJkZXApOwogCWhhbmRsZV9qd29yaygmbmV3YmxrLT5uYl9qd29yayk7CkBAIC03
Mzk4LDcgKzczNzksNyBAQCBjaGVja19pbm9kZV91bndyaXR0ZW4oaW5vZGVkZXApCiAJCWlu
b2RlZGVwLT5pZF9zYXZlZGlubzEgPSBOVUxMOwogCX0KIAlpZiAoZnJlZV9pbm9kZWRlcChp
bm9kZWRlcCkgPT0gMCkKLQkJcGFuaWMoImNoZWNrX2lub2RlX3Vud3JpdHRlbjogYnVzeSBp
bm9kZSIpOworCQlQQU5JQygiYnVzeSBpbm9kZSIpOwogCXJldHVybiAoMSk7CiB9CiAKQEAg
LTc2NTYsOCArNzYzNyw3IEBAIGhhbmRsZV93b3JraXRlbV9mcmVlYmxvY2tzKGZyZWVibGtz
LCBmbGFncykKIAkJCQlmcmVld29ya19mcmVlYmxvY2soZnJlZXdvcmspOwogCQkJY29udGlu
dWU7CiAJCWRlZmF1bHQ6Ci0JCQlwYW5pYygiaGFuZGxlX3dvcmtpdGVtX2ZyZWVibG9ja3M6
IFVua25vd24gdHlwZSAlcyIsCi0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJ
CVBBTklDKCJVbmtub3duIHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQl9
CiAJfQogCWlmIChmcmVlYmxrcy0+ZmJfcmVmICE9IDApIHsKQEAgLTc4MzAsOCArNzgxMCw3
IEBAIGluZGlyX3RydW5jKGZyZWV3b3JrLCBkYm4sIGxibikKIAkJaW5kaXJkZXAgPSBmcmVl
d29yay0+ZndfaW5kaXI7CiAJCWJwID0gaW5kaXJkZXAtPmlyX3NhdmVicDsKIAkJaWYgKGJw
ID09IE5VTEwgfHwgYnAtPmJfYmxrbm8gIT0gZGJuKQotCQkJcGFuaWMoImluZGlyX3RydW5j
OiBCYWQgc2F2ZWQgYnVmICVwIGJsa25vICVqZCIsCi0JCQkgICAgYnAsIChpbnRtYXhfdClk
Ym4pOworCQkJUEFOSUMoIkJhZCBzYXZlZCBidWYgJXAgYmxrbm8gJWpkIiwgYnAsIChpbnRt
YXhfdClkYm4pOwogCX0gZWxzZSBpZiAoKGJwID0gaW5jb3JlKCZmcmVlYmxrcy0+ZmJfZGV2
dnAtPnZfYnVmb2JqLCBkYm4pKSAhPSBOVUxMKSB7CiAJCS8qCiAJCSAqIFRoZSBsb2NrIHBy
ZXZlbnRzIHRoZSBidWYgZGVwIGxpc3QgZnJvbSBjaGFuZ2luZyBhbmQKQEAgLTc4MzksOCAr
NzgxOCw3IEBAIGluZGlyX3RydW5jKGZyZWV3b3JrLCBkYm4sIGxibikKIAkJICovCiAJCWlu
ZGlyZGVwID0gV0tfSU5ESVJERVAoTElTVF9GSVJTVCgmYnAtPmJfZGVwKSk7CiAJCWlmIChp
bmRpcmRlcCA9PSBOVUxMIHx8IChpbmRpcmRlcC0+aXJfc3RhdGUgJiBHT0lOR0FXQVkpID09
IDApCi0JCQlwYW5pYygiaW5kaXJfdHJ1bmM6IEJhZCBpbmRpcmRlcCAlcCBmcm9tIGJ1ZiAl
cCIsCi0JCQkgICAgaW5kaXJkZXAsIGJwKTsKKwkJCVBBTklDKCJCYWQgaW5kaXJkZXAgJXAg
ZnJvbSBidWYgJXAiLCBpbmRpcmRlcCwgYnApOwogCX0gZWxzZSBpZiAoYnJlYWQoZnJlZWJs
a3MtPmZiX2RldnZwLCBkYm4sIChpbnQpZnMtPmZzX2JzaXplLAogCSAgICBOT0NSRUQsICZi
cCkgIT0gMCkgewogCQlicmVsc2UoYnApOwpAQCAtODA5NywxNCArODA3NSwxNCBAQCBzZXR1
cF9uZXdkaXIoZGFwLCBuZXdpbnVtLCBkaW51bSwgbmV3ZGlyYnAsIG1rZGlycCkKIAkgKiBi
bG9jayBpcyByZWFjaGFibGUgdmlhIHRoZSBpbm9kZS4KIAkgKi8KIAlpZiAocGFnZWRlcF9s
b29rdXAobXAsIG5ld2RpcmJwLCBuZXdpbnVtLCAwLCAwLCAmcGFnZWRlcCkgPT0gMCkKLQkJ
cGFuaWMoInNldHVwX25ld2RpcjogbG9zdCBwYWdlZGVwIik7CisJCVBBTklDKCJsb3N0IHBh
Z2VkZXAiKTsKIAlMSVNUX0ZPUkVBQ0god2ssICZuZXdkaXJicC0+Yl9kZXAsIHdrX2xpc3Qp
CiAJCWlmICh3ay0+d2tfdHlwZSA9PSBEX0FMTE9DRElSRUNUKQogCQkJYnJlYWs7CiAJaWYg
KHdrID09IE5VTEwpCi0JCXBhbmljKCJzZXR1cF9uZXdkaXI6IGxvc3QgYWxsb2NkaXJlY3Qi
KTsKKwkJUEFOSUMoImxvc3QgYWxsb2NkaXJlY3QiKTsKIAlpZiAocGFnZWRlcC0+cGRfc3Rh
dGUgJiBORVdCTE9DSykKLQkJcGFuaWMoInNldHVwX25ld2RpcjogTkVXQkxPQ0sgYWxyZWFk
eSBzZXQiKTsKKwkJUEFOSUMoIk5FV0JMT0NLIGFscmVhZHkgc2V0Iik7CiAJbmV3YmxrID0g
V0tfTkVXQkxLKHdrKTsKIAlwYWdlZGVwLT5wZF9zdGF0ZSB8PSBORVdCTE9DSzsKIAlwYWdl
ZGVwLT5wZF9uZXdkaXJibGsgPSBuZXdkaXJibGs7CkBAIC04MTIxLDcgKzgwOTksNyBAQCBz
ZXR1cF9uZXdkaXIoZGFwLCBuZXdpbnVtLCBkaW51bSwgbmV3ZGlyYnAsIG1rZGlycCkKIAlp
bm9kZWRlcF9sb29rdXAobXAsIGRpbnVtLCAwLCAmaW5vZGVkZXApOwogCWlmIChNT1VOVEVE
U1VKKG1wKSkgewogCQlpZiAoaW5vZGVkZXAgPT0gTlVMTCkKLQkJCXBhbmljKCJzZXR1cF9u
ZXdkaXI6IExvc3QgcGFyZW50LiIpOworCQkJUEFOSUMoIkxvc3QgcGFyZW50LiIpOwogCQlq
YWRkcmVmID0gKHN0cnVjdCBqYWRkcmVmICopVEFJTFFfTEFTVCgmaW5vZGVkZXAtPmlkX2lu
b3JlZmxzdCwKIAkJICAgIGlub3JlZmxzdCk7CiAJCUtBU1NFUlQoamFkZHJlZiAhPSBOVUxM
ICYmIGphZGRyZWYtPmphX3BhcmVudCA9PSBuZXdpbnVtICYmCkBAIC04MjM2LDcgKzgyMTQs
NyBAQCBzb2Z0ZGVwX3NldHVwX2RpcmVjdG9yeV9hZGQoYnAsIGRwLCBkaXJvZmZzZXQsIG5l
d2ludW0sIG5ld2RpcmJwLCBpc25ld2JsaykKIAlwYWdlZGVwX2xvb2t1cChtcCwgYnAsIGRw
LT5pX251bWJlciwgbGJuLCBERVBBTExPQywgJnBhZ2VkZXApOwogI2lmZGVmIERFQlVHCiAJ
aWYgKGRpcmFkZF9sb29rdXAocGFnZWRlcCwgb2Zmc2V0KSAhPSBOVUxMKQotCQlwYW5pYygi
c29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkOiAlcCBhbHJlYWR5IGF0IG9mZiAlZFxuIiwK
KwkJUEFOSUMoIiVwIGFscmVhZHkgYXQgb2ZmICVkXG4iLAogCQkgICAgZGlyYWRkX2xvb2t1
cChwYWdlZGVwLCBvZmZzZXQpLCBvZmZzZXQpOwogI2VuZGlmCiAJZGFwLT5kYV9wYWdlZGVw
ID0gcGFnZWRlcDsKQEAgLTgyOTYsNyArODI3NCw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0
b3J5X2FkZChicCwgZHAsIGRpcm9mZnNldCwgbmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3Ymxr
KQogCSAqLwogCWlmIChta2RpcjEgIT0gTlVMTCkgewogCQlpZiAoaW5vZGVkZXAtPmlkX21r
ZGlyYWRkICE9IE5VTEwpCi0JCQlwYW5pYygic29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRk
OiBFeGlzdGluZyBta2RpciIpOworCQkJUEFOSUMoIkV4aXN0aW5nIG1rZGlyIik7CiAJCWlu
b2RlZGVwLT5pZF9ta2RpcmFkZCA9IGRhcDsKIAl9IGVsc2UgaWYgKGlub2RlZGVwLT5pZF9t
a2RpcmFkZCkKIAkJbWVyZ2VfZGlyYWRkKGlub2RlZGVwLCBkYXApOwpAQCAtODMxMiw3ICs4
MjkwLDcgQEAgc29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkKGJwLCBkcCwgZGlyb2Zmc2V0
LCBuZXdpbnVtLCBuZXdkaXJicCwgaXNuZXdibGspCiAJCX0KIAkJaWYgKG5ld2Jsa19sb29r
dXAobXAsIGRidG9mc2IoZnMsIGJwLT5iX2Jsa25vKSwgMCwgJm5ld2JsaykKIAkJICAgID09
IDApCi0JCQlwYW5pYygic29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfYWRkOiBsb3N0IGVudHJ5
Iik7CisJCQlQQU5JQygibG9zdCBlbnRyeSIpOwogCQlXT1JLTElTVF9JTlNFUlQoJm5ld2Js
ay0+bmJfbmV3ZGlyYmxrLCAmbmV3ZGlyYmxrLT5kYl9saXN0KTsKIAkJcGFnZWRlcC0+cGRf
c3RhdGUgfD0gTkVXQkxPQ0s7CiAJCXBhZ2VkZXAtPnBkX25ld2RpcmJsayA9IG5ld2RpcmJs
azsKQEAgLTg0MzAsNyArODQwOCw3IEBAIG1lcmdlX2RpcmFkZChpbm9kZWRlcCwgbmV3ZGFw
KQogCQkJCWJyZWFrOwogCQl9CiAJCWlmICgob2xkZGFwLT5kYV9zdGF0ZSAmIChNS0RJUl9Q
QVJFTlQgfCBNS0RJUl9CT0RZKSkgIT0gMCkKLQkJCXBhbmljKCJtZXJnZV9kaXJhZGQ6IHVu
Zm91bmQgcmVmIik7CisJCQlQQU5JQygidW5mb3VuZCByZWYiKTsKIAl9CiAJLyoKIAkgKiBB
bnkgbWtkaXIgcmVsYXRlZCBqb3VybmFsIGl0ZW1zIGFyZSBub3Qgc2FmZSB0byBiZSBmcmVl
ZCB1bnRpbApAQCAtODU4NywxMyArODU2NSwxMyBAQCBmcmVlX2RpcmFkZChkYXAsIHdraGQp
CiAJCQlpZiAobWtkaXItPm1kX3N0YXRlICYgT05XT1JLTElTVCkKIAkJCQlXT1JLTElTVF9S
RU1PVkUoJm1rZGlyLT5tZF9saXN0KTsKIAkJCWlmIChta2Rpci0+bWRfamFkZHJlZiAhPSBO
VUxMKQotCQkJCXBhbmljKCJmcmVlX2RpcmFkZDogVW5leHBlY3RlZCBqYWRkcmVmIik7CisJ
CQkJUEFOSUMoIlVuZXhwZWN0ZWQgamFkZHJlZiIpOwogCQkJV09SS0lURU1fRlJFRShta2Rp
ciwgRF9NS0RJUik7CiAJCQlpZiAoKGRhcC0+ZGFfc3RhdGUgJiAoTUtESVJfUEFSRU5UIHwg
TUtESVJfQk9EWSkpID09IDApCiAJCQkJYnJlYWs7CiAJCX0KIAkJaWYgKChkYXAtPmRhX3N0
YXRlICYgKE1LRElSX1BBUkVOVCB8IE1LRElSX0JPRFkpKSAhPSAwKQotCQkJcGFuaWMoImZy
ZWVfZGlyYWRkOiB1bmZvdW5kIHJlZiIpOworCQkJUEFOSUMoInVuZm91bmQgcmVmIik7CiAJ
fQogCWlmIChpbm9kZWRlcCkKIAkJZnJlZV9pbm9kZWRlcChpbm9kZWRlcCk7CkBAIC04NjQ0
LDcgKzg2MjIsNyBAQCBzb2Z0ZGVwX3NldHVwX3JlbW92ZShicCwgZHAsIGlwLCBpc3JtZGly
KQogCSAqLwogCWlmIChpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAt
PmlfbnVtYmVyLCAwLAogCSAgICAmaW5vZGVkZXApID09IDApCi0JCXBhbmljKCJzb2Z0ZGVw
X3NldHVwX3JlbW92ZTogTG9zdCBpbm9kZWRlcC4iKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVk
ZXAuIik7CiAJS0FTU0VSVCgoaW5vZGVkZXAtPmlkX3N0YXRlICYgVU5MSU5LRUQpID09IDAs
ICgiaW5vZGUgdW5saW5rZWQiKSk7CiAJZGlycmVtLT5kbV9zdGF0ZSB8PSBPTkRFUExJU1Q7
CiAJTElTVF9JTlNFUlRfSEVBRCgmaW5vZGVkZXAtPmlkX2RpcnJlbWhkLCBkaXJyZW0sIGRt
X2lub25leHQpOwpAQCAtODc1NiwxMyArODczNCwxMyBAQCBjYW5jZWxfbWtkaXJfZG90ZG90
KGlwLCBkaXJyZW0sIGpyZW1yZWYpCiAJCWlmIChta2Rpci0+bWRfZGlyYWRkID09IGRhcCAm
JiBta2Rpci0+bWRfc3RhdGUgJiBNS0RJUl9QQVJFTlQpCiAJCQlicmVhazsKIAlpZiAobWtk
aXIgPT0gTlVMTCkKLQkJcGFuaWMoImNhbmNlbF9ta2Rpcl9kb3Rkb3Q6IFVuYWJsZSB0byBm
aW5kIG1rZGlyXG4iKTsKKwkJUEFOSUMoIlVuYWJsZSB0byBmaW5kIG1rZGlyXG4iKTsKIAlp
ZiAoKGphZGRyZWYgPSBta2Rpci0+bWRfamFkZHJlZikgIT0gTlVMTCkgewogCQlta2Rpci0+
bWRfamFkZHJlZiA9IE5VTEw7CiAJCWphZGRyZWYtPmphX3N0YXRlICY9IH5NS0RJUl9QQVJF
TlQ7CiAJCWlmIChpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgamFkZHJl
Zi0+amFfaW5vLCAwLAogCQkgICAgJmlub2RlZGVwKSA9PSAwKQotCQkJcGFuaWMoImNhbmNl
bF9ta2Rpcl9kb3Rkb3Q6IExvc3QgcGFyZW50IGlub2RlZGVwIik7CisJCQlQQU5JQygiTG9z
dCBwYXJlbnQgaW5vZGVkZXAiKTsKIAkJaWYgKGNhbmNlbF9qYWRkcmVmKGphZGRyZWYsIGlu
b2RlZGVwLCAmZGlycmVtLT5kbV9qd29yaykpIHsKIAkJCWpvdXJuYWxfanJlbXJlZihkaXJy
ZW0sIGpyZW1yZWYsIGlub2RlZGVwKTsKIAkJCWpyZW1yZWYgPSBOVUxMOwpAQCAtODc4NSw3
ICs4NzYzLDcgQEAgam91cm5hbF9qcmVtcmVmKGRpcnJlbSwganJlbXJlZiwgaW5vZGVkZXAp
CiAJaWYgKGlub2RlZGVwID09IE5VTEwpCiAJCWlmIChpbm9kZWRlcF9sb29rdXAoanJlbXJl
Zi0+anJfbGlzdC53a19tcCwKIAkJICAgIGpyZW1yZWYtPmpyX3JlZi5pZl9pbm8sIDAsICZp
bm9kZWRlcCkgPT0gMCkKLQkJCXBhbmljKCJqb3VybmFsX2pyZW1yZWY6IExvc3QgaW5vZGVk
ZXAiKTsKKwkJCVBBTklDKCJMb3N0IGlub2RlZGVwIik7CiAJTElTVF9JTlNFUlRfSEVBRCgm
ZGlycmVtLT5kbV9qcmVtcmVmaGQsIGpyZW1yZWYsIGpyX2RlcHMpOwogCVRBSUxRX0lOU0VS
VF9UQUlMKCZpbm9kZWRlcC0+aWRfaW5vcmVmbHN0LCAmanJlbXJlZi0+anJfcmVmLCBpZl9k
ZXBzKTsKIAlhZGRfdG9fam91cm5hbCgmanJlbXJlZi0+anJfbGlzdCk7CkBAIC04ODAzLDcg
Kzg3ODEsNyBAQCBkaXJyZW1fam91cm5hbChkaXJyZW0sIGpyZW1yZWYsIGRvdHJlbXJlZiwg
ZG90ZG90cmVtcmVmKQogCiAJaWYgKGlub2RlZGVwX2xvb2t1cChqcmVtcmVmLT5qcl9saXN0
LndrX21wLCBqcmVtcmVmLT5qcl9yZWYuaWZfaW5vLCAwLAogCSAgICAmaW5vZGVkZXApID09
IDApCi0JCXBhbmljKCJkaXJyZW1fam91cm5hbDogTG9zdCBpbm9kZWRlcCIpOworCQlQQU5J
QygiTG9zdCBpbm9kZWRlcCIpOwogCWpvdXJuYWxfanJlbXJlZihkaXJyZW0sIGpyZW1yZWYs
IGlub2RlZGVwKTsKIAlpZiAoZG90cmVtcmVmKQogCQlqb3VybmFsX2pyZW1yZWYoZGlycmVt
LCBkb3RyZW1yZWYsIGlub2RlZGVwKTsKQEAgLTg4MzcsNyArODgxNSw3IEBAIG5ld2RpcnJl
bShicCwgZHAsIGlwLCBpc3JtZGlyLCBwcmV2ZGlycmVtcCkKIAkgKiBXaGl0ZW91dHMgaGF2
ZSBubyBkZWxldGlvbiBkZXBlbmRlbmNpZXMuCiAJICovCiAJaWYgKGlwID09IE5VTEwpCi0J
CXBhbmljKCJuZXdkaXJyZW06IHdoaXRlb3V0Iik7CisJCVBBTklDKCJ3aGl0ZW91dCIpOwog
CWR2cCA9IElUT1YoZHApOwogCS8qCiAJICogSWYgd2UgYXJlIG92ZXIgb3VyIGxpbWl0LCB0
cnkgdG8gaW1wcm92ZSB0aGUgc2l0dWF0aW9uLgpAQCAtODg5Miw3ICs4ODcwLDcgQEAgbmV3
ZGlycmVtKGJwLCBkcCwgaXAsIGlzcm1kaXIsIHByZXZkaXJyZW1wKQogCSAqLwogCWlmIChk
cC0+aV9vZmZzZXQgPT0gRE9URE9UX09GRlNFVCkgewogCQlpZiAoaXNybWRpcikKLQkJCXBh
bmljKCJuZXdkaXJyZW06IC4uIGRpcmVjdG9yeSBjaGFuZ2UgZHVyaW5nIHJlbW92ZT8iKTsK
KwkJCVBBTklDKCIuLiBkaXJlY3RvcnkgY2hhbmdlIGR1cmluZyByZW1vdmU/Iik7CiAJCWpy
ZW1yZWYgPSBjYW5jZWxfbWtkaXJfZG90ZG90KGRwLCBkaXJyZW0sIGpyZW1yZWYpOwogCX0K
IAkvKgpAQCAtODkyMiw5ICs4OTAwLDkgQEAgbmV3ZGlycmVtKGJwLCBkcCwgaXAsIGlzcm1k
aXIsIHByZXZkaXJyZW1wKQogCSAqIE11c3QgYmUgQVRUQUNIRUQgYXQgdGhpcyBwb2ludC4K
IAkgKi8KIAlpZiAoKGRhcC0+ZGFfc3RhdGUgJiBBVFRBQ0hFRCkgPT0gMCkKLQkJcGFuaWMo
Im5ld2RpcnJlbTogbm90IEFUVEFDSEVEIik7CisJCVBBTklDKCJub3QgQVRUQUNIRUQiKTsK
IAlpZiAoZGFwLT5kYV9uZXdpbnVtICE9IGlwLT5pX251bWJlcikKLQkJcGFuaWMoIm5ld2Rp
cnJlbTogaW51bSAlanUgc2hvdWxkIGJlICVqdSIsCisJCVBBTklDKCJpbnVtICVqdSBzaG91
bGQgYmUgJWp1IiwKIAkJICAgICh1aW50bWF4X3QpaXAtPmlfbnVtYmVyLCAodWludG1heF90
KWRhcC0+ZGFfbmV3aW51bSk7CiAJLyoKIAkgKiBJZiB3ZSBhcmUgZGVsZXRpbmcgYSBjaGFu
Z2VkIG5hbWUgdGhhdCBuZXZlciBtYWRlIGl0IHRvIGRpc2ssCkBAIC04OTQ4LDcgKzg5MjYs
NyBAQCBuZXdkaXJyZW0oYnAsIGRwLCBpcCwgaXNybWRpciwgcHJldmRpcnJlbXApCiAKIAkJ
TElTVF9GT1JFQUNIKHdrLCAmZGlycmVtLT5kbV9qd29yaywgd2tfbGlzdCkKIAkJCWlmICh3
ay0+d2tfc3RhdGUgJiAoTUtESVJfQk9EWSB8IE1LRElSX1BBUkVOVCkpCi0JCQkJcGFuaWMo
ImJhZCB3ayAlcCAoMHglWClcbiIsIHdrLCB3ay0+d2tfc3RhdGUpOworCQkJCVBBTklDKCJi
YWQgd2sgJXAgKDB4JVgpXG4iLCB3aywgd2stPndrX3N0YXRlKTsKIAl9CiAjZW5kaWYKIApA
QCAtOTA0Niw3ICs5MDI0LDcgQEAgc29mdGRlcF9zZXR1cF9kaXJlY3RvcnlfY2hhbmdlKGJw
LCBkcCwgaXAsIG5ld2ludW0sIGlzcm1kaXIpCiAJICogd2lsbCBub3QgZmFpbC4KIAkgKi8K
IAlpZiAoaW5vZGVkZXBfbG9va3VwKG1wLCBpcC0+aV9udW1iZXIsIDAsICZpbm9kZWRlcCkg
PT0gMCkKLQkJcGFuaWMoInNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2NoYW5nZTogTG9zdCBp
bm9kZWRlcC4iKTsKKwkJUEFOSUMoIkxvc3QgaW5vZGVkZXAuIik7CiAJZGlycmVtLT5kbV9z
dGF0ZSB8PSBPTkRFUExJU1Q7CiAJTElTVF9JTlNFUlRfSEVBRCgmaW5vZGVkZXAtPmlkX2Rp
cnJlbWhkLCBkaXJyZW0sIGRtX2lub25leHQpOwogCkBAIC05MTMzLDcgKzkxMTEsNyBAQCBz
b2Z0ZGVwX2NoYW5nZV9saW5rY250KGlwKQogCQlkZmxhZ3MgfD0gTk9ERUxBWTsKIAlpbm9k
ZWRlcF9sb29rdXAoVUZTVE9WRlMoaXAtPmlfdW1wKSwgaXAtPmlfbnVtYmVyLCBkZmxhZ3Ms
ICZpbm9kZWRlcCk7CiAJaWYgKGlwLT5pX25saW5rIDwgaXAtPmlfZWZmbmxpbmspCi0JCXBh
bmljKCJzb2Z0ZGVwX2NoYW5nZV9saW5rY250OiBiYWQgZGVsdGEiKTsKKwkJUEFOSUMoImJh
ZCBkZWx0YSIpOwogCWlub2RlZGVwLT5pZF9ubGlua2RlbHRhID0gaXAtPmlfbmxpbmsgLSBp
cC0+aV9lZmZubGluazsKIAlGUkVFX0xPQ0soJmxrKTsKIH0KQEAgLTkyNDksNyArOTIyNyw3
IEBAIGhhbmRsZV93cml0dGVuX3NiZGVwKHNiZGVwLCBicCkKIAkgKi8KIAlmb3IgKDsgaW5v
ZGVkZXAgIT0gTlVMTDsgaW5vZGVkZXAgPSBUQUlMUV9ORVhUKGlub2RlZGVwLCBpZF91bmxp
bmtlZCkpIHsKIAkJaWYgKChpbm9kZWRlcC0+aWRfc3RhdGUgJiBVTkxJTktMSU5LUykgIT0g
VU5MSU5LTElOS1MpCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5fc2JkZXA6IEJhZCBpbm9k
ZWRlcCAlcCAoMHglWCkiLAorCQkJUEFOSUMoIkJhZCBpbm9kZWRlcCAlcCAoMHglWCkiLAog
CQkJICAgIGlub2RlZGVwLCBpbm9kZWRlcC0+aWRfc3RhdGUpOwogCQlpZiAoaW5vZGVkZXAt
PmlkX3N0YXRlICYgVU5MSU5LT05MSVNUKQogCQkJYnJlYWs7CkBAIC05Mjc1LDcgKzkyNTMs
NyBAQCB1bmxpbmtlZF9pbm9kZWRlcChtcCwgaW5vZGVkZXApCiAJdW1wID0gVkZTVE9VRlMo
bXApOwogCXVtcC0+dW1fZnMtPmZzX2Ztb2QgPSAxOwogCWlmIChpbm9kZWRlcC0+aWRfc3Rh
dGUgJiBVTkxJTktFRCkKLQkJcGFuaWMoInVubGlua2VkX2lub2RlZGVwOiAlcCBhbHJlYWR5
IHVubGlua2VkXG4iLCBpbm9kZWRlcCk7CisJCVBBTklDKCIlcCBhbHJlYWR5IHVubGlua2Vk
XG4iLCBpbm9kZWRlcCk7CiAJaW5vZGVkZXAtPmlkX3N0YXRlIHw9IFVOTElOS0VEOwogCVRB
SUxRX0lOU0VSVF9IRUFEKCZ1bXAtPnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91
bmxpbmtlZCk7CiB9CkBAIC05NDE4LDEwICs5Mzk2LDEwIEBAIGNsZWFyX3VubGlua2VkX2lu
b2RlZGVwKGlub2RlZGVwKQogCiAJCWlmIChmcy0+ZnNfc3VqZnJlZSAhPSBpbm8pCiAJCQly
ZXR1cm47Ci0JCXBhbmljKCJjbGVhcl91bmxpbmtlZF9pbm9kZWRlcDogRmFpbGVkIHRvIGNs
ZWFyIGZyZWUgaGVhZCIpOworCQlQQU5JQygiRmFpbGVkIHRvIGNsZWFyIGZyZWUgaGVhZCIp
OwogCX0KIAlpZiAoaW5vZGVkZXAtPmlkX2lubyA9PSBmcy0+ZnNfc3VqZnJlZSkKLQkJcGFu
aWMoImNsZWFyX3VubGlua2VkX2lub2RlZGVwOiBGcmVlaW5nIGhlYWQgb2YgZnJlZSBsaXN0
Iik7CisJCVBBTklDKCJGcmVlaW5nIGhlYWQgb2YgZnJlZSBsaXN0Iik7CiAJaW5vZGVkZXAt
PmlkX3N0YXRlICY9IH4oVU5MSU5LRUQgfCBVTkxJTktMSU5LUyB8IFVOTElOS09OTElTVCk7
CiAJVEFJTFFfUkVNT1ZFKCZ1bXAtPnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91
bmxpbmtlZCk7CiAJcmV0dXJuOwpAQCAtOTQ0Niw3ICs5NDI0LDcgQEAgaGFuZGxlX3dvcmtp
dGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCWlub190IG9sZGludW07CiAKIAlpZiAoZGly
cmVtLT5kbV9zdGF0ZSAmIE9OV09SS0xJU1QpCi0JCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1f
cmVtb3ZlOiBkaXJyZW0gJXAgc3RpbGwgb24gd29ya2xpc3QiLAorCQlQQU5JQygiZGlycmVt
ICVwIHN0aWxsIG9uIHdvcmtsaXN0IiwKIAkJICAgIGRpcnJlbSk7CiAJb2xkaW51bSA9IGRp
cnJlbS0+ZG1fb2xkaW51bTsKIAltcCA9IGRpcnJlbS0+ZG1fbGlzdC53a19tcDsKQEAgLTk0
NTcsNyArOTQzNSw3IEBAIGhhbmRsZV93b3JraXRlbV9yZW1vdmUoZGlycmVtLCBmbGFncykK
IAlpcCA9IFZUT0kodnApOwogCUFDUVVJUkVfTE9DSygmbGspOwogCWlmICgoaW5vZGVkZXBf
bG9va3VwKG1wLCBvbGRpbnVtLCAwLCAmaW5vZGVkZXApKSA9PSAwKQotCQlwYW5pYygiaGFu
ZGxlX3dvcmtpdGVtX3JlbW92ZTogbG9zdCBpbm9kZWRlcCIpOworCQlQQU5JQygibG9zdCBp
bm9kZWRlcCIpOwogCWlmIChkaXJyZW0tPmRtX3N0YXRlICYgT05ERVBMSVNUKQogCQlMSVNU
X1JFTU9WRShkaXJyZW0sIGRtX2lub25leHQpOwogCUtBU1NFUlQoTElTVF9FTVBUWSgmZGly
cmVtLT5kbV9qcmVtcmVmaGQpLApAQCAtOTQ4OSw3ICs5NDY3LDcgQEAgaGFuZGxlX3dvcmtp
dGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCQlESVBfU0VUKGlwLCBpX25saW5rLCBpcC0+
aV9ubGluayk7CiAJCWlwLT5pX2ZsYWcgfD0gSU5fQ0hBTkdFOwogCQlpZiAoaXAtPmlfbmxp
bmsgPCBpcC0+aV9lZmZubGluaykKLQkJCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1fcmVtb3Zl
OiBiYWQgZmlsZSBkZWx0YSIpOworCQkJUEFOSUMoImJhZCBmaWxlIGRlbHRhIik7CiAJCWlm
IChpcC0+aV9ubGluayA9PSAwKSAKIAkJCXVubGlua2VkX2lub2RlZGVwKG1wLCBpbm9kZWRl
cCk7CiAJCWlub2RlZGVwLT5pZF9ubGlua2RlbHRhID0gaXAtPmlfbmxpbmsgLSBpcC0+aV9l
ZmZubGluazsKQEAgLTk1MTAsNyArOTQ4OCw3IEBAIGhhbmRsZV93b3JraXRlbV9yZW1vdmUo
ZGlycmVtLCBmbGFncykKIAlESVBfU0VUKGlwLCBpX25saW5rLCBpcC0+aV9ubGluayk7CiAJ
aXAtPmlfZmxhZyB8PSBJTl9DSEFOR0U7CiAJaWYgKGlwLT5pX25saW5rIDwgaXAtPmlfZWZm
bmxpbmspCi0JCXBhbmljKCJoYW5kbGVfd29ya2l0ZW1fcmVtb3ZlOiBiYWQgZGlyIGRlbHRh
Iik7CisJCVBBTklDKCJiYWQgZGlyIGRlbHRhIik7CiAJaWYgKGlwLT5pX25saW5rID09IDAp
CiAJCXVubGlua2VkX2lub2RlZGVwKG1wLCBpbm9kZWRlcCk7CiAJaW5vZGVkZXAtPmlkX25s
aW5rZGVsdGEgPSBpcC0+aV9ubGluayAtIGlwLT5pX2VmZm5saW5rOwpAQCAtOTUzMiw3ICs5
NTEwLDcgQEAgaGFuZGxlX3dvcmtpdGVtX3JlbW92ZShkaXJyZW0sIGZsYWdzKQogCSAqIFBs
YWNlIHRoZSBkaXJyZW0gb24gdGhlIHBhcmVudCdzIGRpcmVtaGQgbGlzdC4KIAkgKi8KIAlp
ZiAoaW5vZGVkZXBfbG9va3VwKG1wLCBkaXJyZW0tPmRtX29sZGludW0sIDAsICZpbm9kZWRl
cCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93b3JraXRlbV9yZW1vdmU6IGxvc3QgZGlyIGlu
b2RlZGVwIik7CisJCVBBTklDKCJsb3N0IGRpciBpbm9kZWRlcCIpOwogCUxJU1RfSU5TRVJU
X0hFQUQoJmlub2RlZGVwLT5pZF9kaXJyZW1oZCwgZGlycmVtLCBkbV9pbm9uZXh0KTsKIAkv
KgogCSAqIElmIHRoZSBhbGxvY2F0ZWQgaW5vZGUgaGFzIG5ldmVyIGJlZW4gd3JpdHRlbiB0
byBkaXNrLCB0aGVuCkBAIC05NTg4LDcgKzk1NjYsNyBAQCBoYW5kbGVfd29ya2l0ZW1fZnJl
ZWZpbGUoZnJlZWZpbGUpCiAJZXJyb3IgPSBpbm9kZWRlcF9sb29rdXAoVUZTVE9WRlModW1w
KSwgZnJlZWZpbGUtPmZ4X29sZGludW0sIDAsICZpZHApOwogCUZSRUVfTE9DSygmbGspOwog
CWlmIChlcnJvcikKLQkJcGFuaWMoImhhbmRsZV93b3JraXRlbV9mcmVlZmlsZTogaW5vZGVk
ZXAgJXAgc3Vydml2ZWQiLCBpZHApOworCQlQQU5JQygiaW5vZGVkZXAgJXAgc3Vydml2ZWQi
LCBpZHApOwogI2VuZGlmCiAJVUZTX0xPQ0sodW1wKTsKIAlmcy0+ZnNfcGVuZGluZ2lub2Rl
cyAtPSAxOwpAQCAtOTY1NiwxMSArOTYzNCwxMSBAQCBzb2Z0ZGVwX2Rpc2tfaW9faW5pdGlh
dGlvbihicCkKIAkgKiBiZSBkZXBlbmRlbmNpZXMgZm9yIHJlYWRzLgogCSAqLwogCWlmIChi
cC0+Yl9pb2NtZCAhPSBCSU9fV1JJVEUpCi0JCXBhbmljKCJzb2Z0ZGVwX2Rpc2tfaW9faW5p
dGlhdGlvbjogbm90IHdyaXRlIik7CisJCVBBTklDKCJub3Qgd3JpdGUiKTsKIAogCWlmIChi
cC0+Yl92ZmxhZ3MgJiBCVl9CS0dSRElOUFJPRykKLQkJcGFuaWMoInNvZnRkZXBfZGlza19p
b19pbml0aWF0aW9uOiBXcml0aW5nIGJ1ZmZlciB3aXRoICIKLQkJICAgICJiYWNrZ3JvdW5k
IHdyaXRlIGluIHByb2dyZXNzOiAlcCIsIGJwKTsKKwkJUEFOSUMoIldyaXRpbmcgYnVmZmVy
IHdpdGggYmFja2dyb3VuZCB3cml0ZSBpbiBwcm9ncmVzczogJXAiLAorCQkgICAgYnApOwog
CiAJbWFya2VyLndrX3R5cGUgPSBEX0xBU1QgKyAxOwkvKiBOb3QgYSBub3JtYWwgd29ya2l0
ZW0gKi8KIAlQSE9MRChjdXJwcm9jKTsJCQkvKiBEb24ndCBzd2FwIG91dCBrZXJuZWwgc3Rh
Y2sgKi8KQEAgLTk3NDQsOCArOTcyMiw3IEBAIHNvZnRkZXBfZGlza19pb19pbml0aWF0aW9u
KGJwKQogCQkJY29udGludWU7CiAKIAkJZGVmYXVsdDoKLQkJCXBhbmljKCJoYW5kbGVfZGlz
a19pb19pbml0aWF0aW9uOiBVbmV4cGVjdGVkIHR5cGUgJXMiLAotCQkJICAgIFRZUEVOQU1F
KHdrLT53a190eXBlKSk7CisJCQlQQU5JQygiVW5leHBlY3RlZCB0eXBlICVzIiwgVFlQRU5B
TUUod2stPndrX3R5cGUpKTsKIAkJCS8qIE5PVFJFQUNIRUQgKi8KIAkJfQogCX0KQEAgLTk3
OTgsOCArOTc3NSw3IEBAIGluaXRpYXRlX3dyaXRlX2ZpbGVwYWdlKHBhZ2VkZXAsIGJwKQog
CQkJZXAgPSAoc3RydWN0IGRpcmVjdCAqKQogCQkJICAgICgoY2hhciAqKWJwLT5iX2RhdGEg
KyBkYXAtPmRhX29mZnNldCk7CiAJCQlpZiAoZXAtPmRfaW5vICE9IGRhcC0+ZGFfbmV3aW51
bSkKLQkJCQlwYW5pYygiJXM6IGRpciBpbnVtICVqdSAhPSBuZXcgJWp1IiwKLQkJCQkgICAg
ImluaXRpYXRlX3dyaXRlX2ZpbGVwYWdlIiwKKwkJCQlQQU5JQygiZGlyIGludW0gJWp1ICE9
IG5ldyAlanUiLAogCQkJCSAgICAodWludG1heF90KWVwLT5kX2lubywKIAkJCQkgICAgKHVp
bnRtYXhfdClkYXAtPmRhX25ld2ludW0pOwogCQkJaWYgKGRhcC0+ZGFfc3RhdGUgJiBESVJD
SEcpCkBAIC05ODM5LDcgKzk4MTUsNyBAQCBpbml0aWF0ZV93cml0ZV9pbm9kZWJsb2NrX3Vm
czEoaW5vZGVkZXAsIGJwKQogCWludCBkZXBsaXN0OwogCiAJaWYgKGlub2RlZGVwLT5pZF9z
dGF0ZSAmIElPU1RBUlRFRCkKLQkJcGFuaWMoImluaXRpYXRlX3dyaXRlX2lub2RlYmxvY2tf
dWZzMTogYWxyZWFkeSBzdGFydGVkIik7CisJCVBBTklDKCJhbHJlYWR5IHN0YXJ0ZWQiKTsK
IAlpbm9kZWRlcC0+aWRfc3RhdGUgfD0gSU9TVEFSVEVEOwogCWZzID0gaW5vZGVkZXAtPmlk
X2ZzOwogCWRwID0gKHN0cnVjdCB1ZnMxX2Rpbm9kZSAqKWJwLT5iX2RhdGEgKwpAQCAtOTg2
MSw3ICs5ODM3LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlub2RlZGVw
LCBicCkKIAkgKi8KIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIERFUENPTVBMRVRFKSA9
PSAwKSB7CiAJCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRpbm8xICE9IE5VTEwpCi0JCQlwYW5p
YygiaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxOiBJL08gdW5kZXJ3YXkiKTsKKwkJ
CVBBTklDKCJJL08gdW5kZXJ3YXkiKTsKIAkJRlJFRV9MT0NLKCZsayk7CiAJCXNpcCA9IG1h
bGxvYyhzaXplb2Yoc3RydWN0IHVmczFfZGlub2RlKSwKIAkJICAgIE1fU0FWRURJTk8sIE1f
U09GVERFUF9GTEFHUyk7CkBAIC05ODk1LDI2ICs5ODcxLDIzIEBAIGluaXRpYXRlX3dyaXRl
X2lub2RlYmxvY2tfdWZzMShpbm9kZWRlcCwgYnApCiAJICAgICBhZHAgPSBUQUlMUV9ORVhU
KGFkcCwgYWRfbmV4dCkpIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCWlmIChkZXBsaXN0ICE9
IDAgJiYgcHJldmxibiA+PSBhZHAtPmFkX29mZnNldCkKLQkJCXBhbmljKCJzb2Z0ZGVwX3dy
aXRlX2lub2RlYmxvY2s6IGxibiBvcmRlciIpOworCQkJUEFOSUMoImxibiBvcmRlciIpOwog
CQlwcmV2bGJuID0gYWRwLT5hZF9vZmZzZXQ7CiAJCWlmIChhZHAtPmFkX29mZnNldCA8IE5E
QUREUiAmJgogCQkgICAgZHAtPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAtPmFkX25l
d2Jsa25vKQotCQkJcGFuaWMoIiVzOiBkaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVk
ICE9ICVqZCIsCi0JCQkgICAgInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jayIsCisJCQlQQU5J
QygiZGlyZWN0IHBvaW50ZXIgIyVqZCBtaXNtYXRjaCAlZCAhPSAlamQiLAogCQkJICAgIChp
bnRtYXhfdClhZHAtPmFkX29mZnNldCwKIAkJCSAgICBkcC0+ZGlfZGJbYWRwLT5hZF9vZmZz
ZXRdLAogCQkJICAgIChpbnRtYXhfdClhZHAtPmFkX25ld2Jsa25vKTsKIAkJaWYgKGFkcC0+
YWRfb2Zmc2V0ID49IE5EQUREUiAmJgogCQkgICAgZHAtPmRpX2liW2FkcC0+YWRfb2Zmc2V0
IC0gTkRBRERSXSAhPSBhZHAtPmFkX25ld2Jsa25vKQotCQkJcGFuaWMoIiVzOiBpbmRpcmVj
dCBwb2ludGVyICMlamQgbWlzbWF0Y2ggJWQgIT0gJWpkIiwKLQkJCSAgICAic29mdGRlcF93
cml0ZV9pbm9kZWJsb2NrIiwKKwkJCVBBTklDKCJpbmRpcmVjdCBwb2ludGVyICMlamQgbWlz
bWF0Y2ggJWQgIT0gJWpkIiwKIAkJCSAgICAoaW50bWF4X3QpYWRwLT5hZF9vZmZzZXQgLSBO
REFERFIsCiAJCQkgICAgZHAtPmRpX2liW2FkcC0+YWRfb2Zmc2V0IC0gTkRBRERSXSwKIAkJ
CSAgICAoaW50bWF4X3QpYWRwLT5hZF9uZXdibGtubyk7CiAJCWRlcGxpc3QgfD0gMSA8PCBh
ZHAtPmFkX29mZnNldDsKIAkJaWYgKChhZHAtPmFkX3N0YXRlICYgQVRUQUNIRUQpID09IDAp
Ci0JCQlwYW5pYygic29mdGRlcF93cml0ZV9pbm9kZWJsb2NrOiBVbmtub3duIHN0YXRlIDB4
JXgiLAotCQkJICAgIGFkcC0+YWRfc3RhdGUpOworCQkJUEFOSUMoIlVua25vd24gc3RhdGUg
MHgleCIsIGFkcC0+YWRfc3RhdGUpOwogI2VuZGlmIC8qIElOVkFSSUFOVFMgKi8KIAkJYWRw
LT5hZF9zdGF0ZSAmPSB+QVRUQUNIRUQ7CiAJCWFkcC0+YWRfc3RhdGUgfD0gVU5ET05FOwpA
QCAtOTkzNyw3ICs5OTEwLDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlu
b2RlZGVwLCBicCkKIAkJZm9yIChpID0gYWRwLT5hZF9vZmZzZXQgKyAxOyBpIDwgTkRBRERS
OyBpKyspIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2RiW2ldICE9IDAg
JiYgKGRlcGxpc3QgJiAoMSA8PCBpKSkgPT0gMCkKLQkJCQlwYW5pYygic29mdGRlcF93cml0
ZV9pbm9kZWJsb2NrOiBsb3N0IGRlcDEiKTsKKwkJCQlQQU5JQygibG9zdCBkZXAxIik7CiAj
ZW5kaWYgLyogSU5WQVJJQU5UUyAqLwogCQkJZHAtPmRpX2RiW2ldID0gMDsKIAkJfQpAQCAt
OTk0NSw3ICs5OTE4LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMxKGlub2Rl
ZGVwLCBicCkKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2liW2ldICE9IDAg
JiYKIAkJCSAgICAoZGVwbGlzdCAmICgoMSA8PCBOREFERFIpIDw8IGkpKSA9PSAwKQotCQkJ
CXBhbmljKCJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMiIpOworCQkJCVBB
TklDKCJsb3N0IGRlcDIiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlf
aWJbaV0gPSAwOwogCQl9CkBAIC0xMDAwNiw3ICs5OTc5LDcgQEAgaW5pdGlhdGVfd3JpdGVf
aW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKIAlpbnQgZGVwbGlzdDsKIAogCWlmIChp
bm9kZWRlcC0+aWRfc3RhdGUgJiBJT1NUQVJURUQpCi0JCXBhbmljKCJpbml0aWF0ZV93cml0
ZV9pbm9kZWJsb2NrX3VmczI6IGFscmVhZHkgc3RhcnRlZCIpOworCQlQQU5JQygiYWxyZWFk
eSBzdGFydGVkIik7CiAJaW5vZGVkZXAtPmlkX3N0YXRlIHw9IElPU1RBUlRFRDsKIAlmcyA9
IGlub2RlZGVwLT5pZF9mczsKIAlkcCA9IChzdHJ1Y3QgdWZzMl9kaW5vZGUgKilicC0+Yl9k
YXRhICsKQEAgLTEwMDI4LDcgKzEwMDAxLDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9j
a191ZnMyKGlub2RlZGVwLCBicCkKIAkgKi8KIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAm
IERFUENPTVBMRVRFKSA9PSAwKSB7CiAJCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRpbm8yICE9
IE5VTEwpCi0JCQlwYW5pYygiaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyOiBJL08g
dW5kZXJ3YXkiKTsKKwkJCVBBTklDKCJJL08gdW5kZXJ3YXkiKTsKIAkJRlJFRV9MT0NLKCZs
ayk7CiAJCXNpcCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHVmczJfZGlub2RlKSwKIAkJICAg
IE1fU0FWRURJTk8sIE1fU09GVERFUF9GTEFHUyk7CkBAIC0xMDA2NCwxOCArMTAwMzcsMTYg
QEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKIAkgICAg
IGFkcCA9IFRBSUxRX05FWFQoYWRwLCBhZF9uZXh0KSkgewogI2lmZGVmIElOVkFSSUFOVFMK
IAkJaWYgKGRlcGxpc3QgIT0gMCAmJiBwcmV2bGJuID49IGFkcC0+YWRfb2Zmc2V0KQotCQkJ
cGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogbGJuIG9yZGVyIik7CisJCQlQQU5J
QygibGJuIG9yZGVyIik7CiAJCXByZXZsYm4gPSBhZHAtPmFkX29mZnNldDsKIAkJaWYgKGRw
LT5kaV9leHRiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAtPmFkX25ld2Jsa25vKQotCQkJcGFu
aWMoIiVzOiBkaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVqZCAhPSAlamQiLAotCQkJ
ICAgICJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2siLAorCQkJUEFOSUMoImRpcmVjdCBwb2lu
dGVyICMlamQgbWlzbWF0Y2ggJWpkICE9ICVqZCIsCiAJCQkgICAgKGludG1heF90KWFkcC0+
YWRfb2Zmc2V0LAogCQkJICAgIChpbnRtYXhfdClkcC0+ZGlfZXh0YlthZHAtPmFkX29mZnNl
dF0sCiAJCQkgICAgKGludG1heF90KWFkcC0+YWRfbmV3Ymxrbm8pOwogCQlkZXBsaXN0IHw9
IDEgPDwgYWRwLT5hZF9vZmZzZXQ7CiAJCWlmICgoYWRwLT5hZF9zdGF0ZSAmIEFUVEFDSEVE
KSA9PSAwKQotCQkJcGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogVW5rbm93biBz
dGF0ZSAweCV4IiwKLQkJCSAgICBhZHAtPmFkX3N0YXRlKTsKKwkJCVBBTklDKCJVbmtub3du
IHN0YXRlIDB4JXgiLCBhZHAtPmFkX3N0YXRlKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICov
CiAJCWFkcC0+YWRfc3RhdGUgJj0gfkFUVEFDSEVEOwogCQlhZHAtPmFkX3N0YXRlIHw9IFVO
RE9ORTsKQEAgLTEwMDk2LDcgKzEwMDY3LDcgQEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9j
a191ZnMyKGlub2RlZGVwLCBicCkKIAkJZm9yIChpID0gYWRwLT5hZF9vZmZzZXQgKyAxOyBp
IDwgTlhBRERSOyBpKyspIHsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2V4
dGJbaV0gIT0gMCAmJiAoZGVwbGlzdCAmICgxIDw8IGkpKSA9PSAwKQotCQkJCXBhbmljKCJz
b2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMSIpOworCQkJCVBBTklDKCJsb3N0
IGRlcDEiKTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlfZXh0YltpXSA9
IDA7CiAJCX0KQEAgLTEwMTIzLDI4ICsxMDA5NCwyNiBAQCBpbml0aWF0ZV93cml0ZV9pbm9k
ZWJsb2NrX3VmczIoaW5vZGVkZXAsIGJwKQogCSAgICAgYWRwID0gVEFJTFFfTkVYVChhZHAs
IGFkX25leHQpKSB7CiAjaWZkZWYgSU5WQVJJQU5UUwogCQlpZiAoZGVwbGlzdCAhPSAwICYm
IHByZXZsYm4gPj0gYWRwLT5hZF9vZmZzZXQpCi0JCQlwYW5pYygic29mdGRlcF93cml0ZV9p
bm9kZWJsb2NrOiBsYm4gb3JkZXIiKTsKKwkJCVBBTklDKCJsYm4gb3JkZXIiKTsKIAkJaWYg
KChhZHAtPmFkX3N0YXRlICYgQVRUQUNIRUQpID09IDApCi0JCQlwYW5pYygiaW5vZGVkZXAg
JXAgYW5kIGFkcCAlcCBub3QgYXR0YWNoZWQiLCBpbm9kZWRlcCwgYWRwKTsKKwkJCVBBTklD
KCJpbm9kZWRlcCAlcCBhbmQgYWRwICVwIG5vdCBhdHRhY2hlZCIsCisJCQkgICAgaW5vZGVk
ZXAsIGFkcCk7CiAJCXByZXZsYm4gPSBhZHAtPmFkX29mZnNldDsKIAkJaWYgKGFkcC0+YWRf
b2Zmc2V0IDwgTkRBRERSICYmCiAJCSAgICBkcC0+ZGlfZGJbYWRwLT5hZF9vZmZzZXRdICE9
IGFkcC0+YWRfbmV3Ymxrbm8pCi0JCQlwYW5pYygiJXM6IGRpcmVjdCBwb2ludGVyICMlamQg
bWlzbWF0Y2ggJWpkICE9ICVqZCIsCi0JCQkgICAgInNvZnRkZXBfd3JpdGVfaW5vZGVibG9j
ayIsCisJCQlQQU5JQygiZGlyZWN0IHBvaW50ZXIgIyVqZCBtaXNtYXRjaCAlamQgIT0gJWpk
IiwKIAkJCSAgICAoaW50bWF4X3QpYWRwLT5hZF9vZmZzZXQsCiAJCQkgICAgKGludG1heF90
KWRwLT5kaV9kYlthZHAtPmFkX29mZnNldF0sCiAJCQkgICAgKGludG1heF90KWFkcC0+YWRf
bmV3Ymxrbm8pOwogCQlpZiAoYWRwLT5hZF9vZmZzZXQgPj0gTkRBRERSICYmCiAJCSAgICBk
cC0+ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdICE9IGFkcC0+YWRfbmV3Ymxrbm8p
Ci0JCQlwYW5pYygiJXMgaW5kaXJlY3QgcG9pbnRlciAjJWpkIG1pc21hdGNoICVqZCAhPSAl
amQiLAotCQkJICAgICJzb2Z0ZGVwX3dyaXRlX2lub2RlYmxvY2s6IiwKKwkJCVBBTklDKCJp
bmRpcmVjdCBwb2ludGVyICMlamQgbWlzbWF0Y2ggJWpkICE9ICVqZCIsCiAJCQkgICAgKGlu
dG1heF90KWFkcC0+YWRfb2Zmc2V0IC0gTkRBRERSLAogCQkJICAgIChpbnRtYXhfdClkcC0+
ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdLAogCQkJICAgIChpbnRtYXhfdClhZHAt
PmFkX25ld2Jsa25vKTsKIAkJZGVwbGlzdCB8PSAxIDw8IGFkcC0+YWRfb2Zmc2V0OwogCQlp
ZiAoKGFkcC0+YWRfc3RhdGUgJiBBVFRBQ0hFRCkgPT0gMCkKLQkJCXBhbmljKCJzb2Z0ZGVw
X3dyaXRlX2lub2RlYmxvY2s6IFVua25vd24gc3RhdGUgMHgleCIsCi0JCQkgICAgYWRwLT5h
ZF9zdGF0ZSk7CisJCQlQQU5JQygiVW5rbm93biBzdGF0ZSAweCV4IiwgYWRwLT5hZF9zdGF0
ZSk7CiAjZW5kaWYgLyogSU5WQVJJQU5UUyAqLwogCQlhZHAtPmFkX3N0YXRlICY9IH5BVFRB
Q0hFRDsKIAkJYWRwLT5hZF9zdGF0ZSB8PSBVTkRPTkU7CkBAIC0xMDE2Nyw3ICsxMDEzNiw3
IEBAIGluaXRpYXRlX3dyaXRlX2lub2RlYmxvY2tfdWZzMihpbm9kZWRlcCwgYnApCiAJCWZv
ciAoaSA9IGFkcC0+YWRfb2Zmc2V0ICsgMTsgaSA8IE5EQUREUjsgaSsrKSB7CiAjaWZkZWYg
SU5WQVJJQU5UUwogCQkJaWYgKGRwLT5kaV9kYltpXSAhPSAwICYmIChkZXBsaXN0ICYgKDEg
PDwgaSkpID09IDApCi0JCQkJcGFuaWMoInNvZnRkZXBfd3JpdGVfaW5vZGVibG9jazogbG9z
dCBkZXAyIik7CisJCQkJUEFOSUMoImxvc3QgZGVwMiIpOwogI2VuZGlmIC8qIElOVkFSSUFO
VFMgKi8KIAkJCWRwLT5kaV9kYltpXSA9IDA7CiAJCX0KQEAgLTEwMTc1LDcgKzEwMTQ0LDcg
QEAgaW5pdGlhdGVfd3JpdGVfaW5vZGVibG9ja191ZnMyKGlub2RlZGVwLCBicCkKICNpZmRl
ZiBJTlZBUklBTlRTCiAJCQlpZiAoZHAtPmRpX2liW2ldICE9IDAgJiYKIAkJCSAgICAoZGVw
bGlzdCAmICgoMSA8PCBOREFERFIpIDw8IGkpKSA9PSAwKQotCQkJCXBhbmljKCJzb2Z0ZGVw
X3dyaXRlX2lub2RlYmxvY2s6IGxvc3QgZGVwMyIpOworCQkJCVBBTklDKCJsb3N0IGRlcDMi
KTsKICNlbmRpZiAvKiBJTlZBUklBTlRTICovCiAJCQlkcC0+ZGlfaWJbaV0gPSAwOwogCQl9
CkBAIC0xMDIzNyw3ICsxMDIwNiw3IEBAIGNhbmNlbF9pbmRpcmRlcChpbmRpcmRlcCwgYnAs
IGZyZWVibGtzKQogCSAqIG9uIHRvIHRoZSByZWFsIGNvcHkgZm9yIGxhdGVyIHVzZSBpbiBp
bmRpcl90cnVuYy4KIAkgKi8KIAlpZiAoaW5kaXJkZXAtPmlyX3N0YXRlICYgR09JTkdBV0FZ
KQotCQlwYW5pYygiY2FuY2VsX2luZGlyZGVwOiBhbHJlYWR5IGdvbmUiKTsKKwkJUEFOSUMo
ImFscmVhZHkgZ29uZSIpOwogCWlmICgoaW5kaXJkZXAtPmlyX3N0YXRlICYgREVQQ09NUExF
VEUpID09IDApIHsKIAkJaW5kaXJkZXAtPmlyX3N0YXRlIHw9IERFUENPTVBMRVRFOwogCQlM
SVNUX1JFTU9WRShpbmRpcmRlcCwgaXJfbmV4dCk7CkBAIC0xMDMxMiw3ICsxMDI4MSw3IEBA
IGluaXRpYXRlX3dyaXRlX2luZGlyZGVwKGluZGlyZGVwLCBicCkKIAogCWluZGlyZGVwLT5p
cl9zdGF0ZSB8PSBJT1NUQVJURUQ7CiAJaWYgKGluZGlyZGVwLT5pcl9zdGF0ZSAmIEdPSU5H
QVdBWSkKLQkJcGFuaWMoImRpc2tfaW9faW5pdGlhdGlvbjogaW5kaXJkZXAgZ29uZSIpOwor
CQlQQU5JQygiaW5kaXJkZXAgZ29uZSIpOwogCS8qCiAJICogSWYgdGhlcmUgYXJlIG5vIHJl
bWFpbmluZyBkZXBlbmRlbmNpZXMsIHRoaXMgd2lsbCBiZSB3cml0aW5nCiAJICogdGhlIHJl
YWwgcG9pbnRlcnMuCkBAIC0xMDM1OCwxMCArMTAzMjcsOSBAQCBzb2Z0ZGVwX3NldHVwX2lu
b2ZyZWUobXAsIGJwLCBpbm8sIHdraGQpCiAJY2dwID0gKHN0cnVjdCBjZyAqKWJwLT5iX2Rh
dGE7CiAJaW5vc3VzZWQgPSBjZ19pbm9zdXNlZChjZ3ApOwogCWlmIChpc3NldChpbm9zdXNl
ZCwgaW5vICUgZnMtPmZzX2lwZykpCi0JCXBhbmljKCJzb2Z0ZGVwX3NldHVwX2lub2ZyZWU6
IGlub2RlICVqdSBub3QgZnJlZWQuIiwKLQkJICAgICh1aW50bWF4X3QpaW5vKTsKKwkJUEFO
SUMoImlub2RlICVqdSBub3QgZnJlZWQuIiwgKHVpbnRtYXhfdClpbm8pOwogCWlmIChpbm9k
ZWRlcF9sb29rdXAobXAsIGlubywgMCwgJmlub2RlZGVwKSkKLQkJcGFuaWMoInNvZnRkZXBf
c2V0dXBfaW5vZnJlZTogaW5vICVqdSBoYXMgZXhpc3RpbmcgaW5vZGVkZXAgJXAiLAorCQlQ
QU5JQygiaW5vICVqdSBoYXMgZXhpc3RpbmcgaW5vZGVkZXAgJXAiLAogCQkgICAgKHVpbnRt
YXhfdClpbm8sIGlub2RlZGVwKTsKIAlpZiAod2toZCkgewogCQlMSVNUX0ZPUkVBQ0hfU0FG
RSh3aywgd2toZCwgd2tfbGlzdCwgd2tuKSB7CkBAIC0xMDQ0OCw3ICsxMDQxNiw3IEBAIHNv
ZnRkZXBfc2V0dXBfYmxrZnJlZShtcCwgYnAsIGJsa25vLCBmcmFncywgd2toZCkKIAkJCSAg
ICBpIDwgam5ld2Jsay0+am5fZnJhZ3M7IGkrKykgewogCQkJCWlmIChpc3NldChibGtzZnJl
ZSwgYm5vICsgaSkpCiAJCQkJCWNvbnRpbnVlOwotCQkJCXBhbmljKCJzb2Z0ZGVwX3NldHVw
X2Jsa2ZyZWU6IG5vdCBmcmVlIik7CisJCQkJUEFOSUMoIm5vdCBmcmVlIik7CiAJCQl9CiAj
ZW5kaWYKIAkJCS8qCkBAIC0xMDQ4NCw4ICsxMDQ1Miw3IEBAIHNvZnRkZXBfc2V0dXBfYmxr
ZnJlZShtcCwgYnAsIGJsa25vLCBmcmFncywgd2toZCkKIAkJCSAgICBqbmV3YmxrLT5qbl9z
dGF0ZSwgam5ld2Jsay0+am5fYmxrbm8sCiAJCQkgICAgam5ld2Jsay0+am5fb2xkZnJhZ3Ms
IGpuZXdibGstPmpuX2ZyYWdzLAogCQkJICAgIGpuZXdibGstPmpuX2RlcCk7Ci0JCQlwYW5p
Yygic29mdGRlcF9zZXR1cF9ibGtmcmVlOiAiCi0JCQkgICAgIiVqZC0lamQoJWQpIG92ZXJs
YXBzIHdpdGggJWpkLSVqZCIsCisJCQlQQU5JQygiJWpkLSVqZCglZCkgb3ZlcmxhcHMgd2l0
aCAlamQtJWpkIiwKIAkJCSAgICBibGtubywgZW5kLCBmcmFncywganN0YXJ0LCBqZW5kKTsK
IAkJfQogCX0KQEAgLTEwNTkxLDggKzEwNTU4LDggQEAgaW5pdGlhdGVfd3JpdGVfYm1zYWZl
bWFwKGJtc2FmZW1hcCwgYnApCiAJCQkJamFkZHJlZi0+amFfc3RhdGUgfD0gVU5ET05FOwog
CQkJCXN0YXRfamFkZHJlZisrOwogCQkJfSBlbHNlCi0JCQkJcGFuaWMoImluaXRpYXRlX3dy
aXRlX2Jtc2FmZW1hcDogaW5vZGUgJWp1ICIKLQkJCQkgICAgIm1hcmtlZCBmcmVlIiwgKHVp
bnRtYXhfdClqYWRkcmVmLT5qYV9pbm8pOworCQkJCVBBTklDKCJpbm9kZSAlanUgbWFya2Vk
IGZyZWUiLAorCQkJCSAgICAodWludG1heF90KWphZGRyZWYtPmphX2lubyk7CiAJCX0KIAl9
CiAJLyoKQEAgLTEwNjA1LDggKzEwNTcyLDcgQEAgaW5pdGlhdGVfd3JpdGVfYm1zYWZlbWFw
KGJtc2FmZW1hcCwgYnApCiAJCUxJU1RfRk9SRUFDSChqbmV3YmxrLCAmYm1zYWZlbWFwLT5z
bV9qbmV3YmxraGQsIGpuX2RlcHMpIHsKIAkJCWlmIChqbmV3YmxrX3JvbGxiYWNrKGpuZXdi
bGssIGZzLCBjZ3AsIGJsa3NmcmVlKSkKIAkJCQljb250aW51ZTsKLQkJCXBhbmljKCJpbml0
aWF0ZV93cml0ZV9ibXNhZmVtYXA6IGJsb2NrICVqZCAiCi0JCQkgICAgIm1hcmtlZCBmcmVl
Iiwgam5ld2Jsay0+am5fYmxrbm8pOworCQkJUEFOSUMoImJsb2NrICVqZCBtYXJrZWQgZnJl
ZSIsIGpuZXdibGstPmpuX2Jsa25vKTsKIAkJfQogCX0KIAkvKgpAQCAtMTA2NTcsNyArMTA2
MjMsNyBAQCBzb2Z0ZGVwX2Rpc2tfd3JpdGVfY29tcGxldGUoYnApCiAJCVdPUktMSVNUX1JF
TU9WRSh3ayk7CiAJCWRlcF93cml0ZVt3ay0+d2tfdHlwZV0rKzsKIAkJaWYgKHdrID09IG93
aykKLQkJCXBhbmljKCJkdXBsaWNhdGUgd29ya2xpc3Q6ICVwXG4iLCB3ayk7CisJCQlQQU5J
QygiZHVwbGljYXRlIHdvcmtsaXN0OiAlcFxuIiwgd2spOwogCQlvd2sgPSB3azsKIAkJc3dp
dGNoICh3ay0+d2tfdHlwZSkgewogCkBAIC0xMDcyNSw4ICsxMDY5MSw3IEBAIHNvZnRkZXBf
ZGlza193cml0ZV9jb21wbGV0ZShicCkKIAkJCWNvbnRpbnVlOwogCiAJCWRlZmF1bHQ6Ci0J
CQlwYW5pYygiaGFuZGxlX2Rpc2tfd3JpdGVfY29tcGxldGU6IFVua25vd24gdHlwZSAlcyIs
Ci0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJVbmtub3duIHR5
cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwog
CQl9CiAJfQpAQCAtMTA4MDMsNyArMTA3NjgsNyBAQCBoYW5kbGVfYWxsb2NkaXJlY3RfcGFy
dGRvbmUoYWRwLCB3a2hkKQogCQkJaWYgKGxpc3RhZHAgPT0gYWRwKQogCQkJCWJyZWFrOwog
CQlpZiAobGlzdGFkcCA9PSBOVUxMKQotCQkJcGFuaWMoImhhbmRsZV9hbGxvY2RpcmVjdF9w
YXJ0ZG9uZTogbG9zdCBkZXAiKTsKKwkJCVBBTklDKCJsb3N0IGRlcCIpOwogI2VuZGlmIC8q
IERFQlVHICovCiAJCXJldHVybjsKIAl9CkBAIC0xMDg4Niw4ICsxMDg1MSw3IEBAIGhhbmRs
ZV9qd29yayh3a2hkKQogCQkJaGFuZGxlX3dyaXR0ZW5fZnJlZXdvcmsoV0tfRlJFRVdPUkso
d2spKTsKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgotCQkJcGFuaWMoImhhbmRsZV9qd29y
azogVW5rbm93biB0eXBlICVzXG4iLAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7
CisJCQlQQU5JQygiVW5rbm93biB0eXBlICVzXG4iLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkp
OwogCQl9CiAJfQogfQpAQCAtMTA5MTksNyArMTA4ODMsNyBAQCBoYW5kbGVfYnVmd2FpdChp
bm9kZWRlcCwgcmVmaGQpCiAJCQkgKiBvbGQgYmxvY2tzIGhhdmUgYmVlbiBmcmVlZC4KIAkJ
CSAqLwogCQkJaWYgKGZyZWVmaWxlICE9IE5VTEwpCi0JCQkJcGFuaWMoImhhbmRsZV9idWZ3
YWl0OiBmcmVlZmlsZSIpOworCQkJCVBBTklDKCJmcmVlZmlsZSIpOwogCQkJZnJlZWZpbGUg
PSBXS19GUkVFRklMRSh3ayk7CiAJCQljb250aW51ZTsKIApAQCAtMTA5ODAsOCArMTA5NDQs
NyBAQCBoYW5kbGVfYnVmd2FpdChpbm9kZWRlcCwgcmVmaGQpCiAJCQljb250aW51ZTsKIAog
CQlkZWZhdWx0OgotCQkJcGFuaWMoImhhbmRsZV9idWZ3YWl0OiBVbmtub3duIHR5cGUgJXAo
JXMpIiwKLQkJCSAgICB3aywgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJV
bmtub3duIHR5cGUgJXAoJXMpIiwgd2ssIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkv
KiBOT1RSRUFDSEVEICovCiAJCX0KIAl9CkBAIC0xMTAxMCw3ICsxMDk3Myw3IEBAIGhhbmRs
ZV93cml0dGVuX2lub2RlYmxvY2soaW5vZGVkZXAsIGJwKQogCWhhZGNoYW5nZXMgPSAwOwog
CWZyZWVmaWxlID0gTlVMTDsKIAlpZiAoKGlub2RlZGVwLT5pZF9zdGF0ZSAmIElPU1RBUlRF
RCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IG5vdCBzdGFy
dGVkIik7CisJCVBBTklDKCJub3Qgc3RhcnRlZCIpOwogCWlub2RlZGVwLT5pZF9zdGF0ZSAm
PSB+SU9TVEFSVEVEOwogCWlmIChpbm9kZWRlcC0+aWRfZnMtPmZzX21hZ2ljID09IEZTX1VG
UzFfTUFHSUMpIHsKIAkJZnN0eXBlID0gVUZTMTsKQEAgLTExMDczLDEyICsxMTAzNiwxMSBA
QCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlub2RlZGVwLCBicCkKIAlmb3IgKGFkcCA9
IFRBSUxRX0ZJUlNUKCZpbm9kZWRlcC0+aWRfaW5vdXBkdCk7IGFkcDsgYWRwID0gbmV4dGFk
cCkgewogCQluZXh0YWRwID0gVEFJTFFfTkVYVChhZHAsIGFkX25leHQpOwogCQlpZiAoYWRw
LT5hZF9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2lub2Rl
YmxvY2s6IG5ldyBlbnRyeSIpOworCQkJUEFOSUMoIm5ldyBlbnRyeSIpOwogCQlpZiAoZnN0
eXBlID09IFVGUzEpIHsKIAkJCWlmIChhZHAtPmFkX29mZnNldCA8IE5EQUREUikgewogCQkJ
CWlmIChkcDEtPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSE9YWRwLT5hZF9vbGRibGtubykKLQkJ
CQkJcGFuaWMoIiVzICVzICMlamQgbWlzbWF0Y2ggJWQgIT0gJWpkIiwKLQkJCQkJICAgICJo
YW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrOiIsCisJCQkJCVBBTklDKCIlcyAjJWpkIG1pc21h
dGNoICVkICE9ICVqZCIsCiAJCQkJCSAgICAiZGlyZWN0IHBvaW50ZXIiLAogCQkJCQkgICAg
KGludG1heF90KWFkcC0+YWRfb2Zmc2V0LAogCQkJCQkgICAgZHAxLT5kaV9kYlthZHAtPmFk
X29mZnNldF0sCkBAIC0xMTA4Niw4ICsxMTA0OCw3IEBAIGhhbmRsZV93cml0dGVuX2lub2Rl
YmxvY2soaW5vZGVkZXAsIGJwKQogCQkJCWRwMS0+ZGlfZGJbYWRwLT5hZF9vZmZzZXRdID0g
YWRwLT5hZF9uZXdibGtubzsKIAkJCX0gZWxzZSB7CiAJCQkJaWYgKGRwMS0+ZGlfaWJbYWRw
LT5hZF9vZmZzZXQgLSBOREFERFJdICE9IDApCi0JCQkJCXBhbmljKCIlczogJXMgIyVqZCBh
bGxvY2F0ZWQgYXMgJWQiLAotCQkJCQkgICAgImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2si
LAorCQkJCQlQQU5JQygiJXMgIyVqZCBhbGxvY2F0ZWQgYXMgJWQiLAogCQkJCQkgICAgImlu
ZGlyZWN0IHBvaW50ZXIiLAogCQkJCQkgICAgKGludG1heF90KWFkcC0+YWRfb2Zmc2V0IC0g
TkRBRERSLAogCQkJCQkgICAgZHAxLT5kaV9pYlthZHAtPmFkX29mZnNldCAtIE5EQUREUl0p
OwpAQCAtMTEwOTcsOCArMTEwNTgsNyBAQCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlu
b2RlZGVwLCBicCkKIAkJfSBlbHNlIHsKIAkJCWlmIChhZHAtPmFkX29mZnNldCA8IE5EQURE
UikgewogCQkJCWlmIChkcDItPmRpX2RiW2FkcC0+YWRfb2Zmc2V0XSE9YWRwLT5hZF9vbGRi
bGtubykKLQkJCQkJcGFuaWMoIiVzOiAlcyAjJWpkICVzICVqZCAhPSAlamQiLAotCQkJCQkg
ICAgImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2siLAorCQkJCQlQQU5JQygiJXMgIyVqZCAl
cyAlamQgIT0gJWpkIiwKIAkJCQkJICAgICJkaXJlY3QgcG9pbnRlciIsCiAJCQkJCSAgICAo
aW50bWF4X3QpYWRwLT5hZF9vZmZzZXQsICJtaXNtYXRjaCIsCiAJCQkJCSAgICAoaW50bWF4
X3QpZHAyLT5kaV9kYlthZHAtPmFkX29mZnNldF0sCkBAIC0xMTEwNiw4ICsxMTA2Niw3IEBA
IGhhbmRsZV93cml0dGVuX2lub2RlYmxvY2soaW5vZGVkZXAsIGJwKQogCQkJCWRwMi0+ZGlf
ZGJbYWRwLT5hZF9vZmZzZXRdID0gYWRwLT5hZF9uZXdibGtubzsKIAkJCX0gZWxzZSB7CiAJ
CQkJaWYgKGRwMi0+ZGlfaWJbYWRwLT5hZF9vZmZzZXQgLSBOREFERFJdICE9IDApCi0JCQkJ
CXBhbmljKCIlczogJXMgIyVqZCBhbGxvY2F0ZWQgYXMgJWpkIiwKLQkJCQkJICAgICJoYW5k
bGVfd3JpdHRlbl9pbm9kZWJsb2NrIiwKKwkJCQkJUEFOSUMoIiVzICMlamQgYWxsb2NhdGVk
IGFzICVqZCIsCiAJCQkJCSAgICAiaW5kaXJlY3QgcG9pbnRlciIsCiAJCQkJCSAgICAoaW50
bWF4X3QpYWRwLT5hZF9vZmZzZXQgLSBOREFERFIsCiAJCQkJCSAgICAoaW50bWF4X3QpCkBA
IC0xMTEyMywxMCArMTEwODIsOSBAQCBoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrKGlub2Rl
ZGVwLCBicCkKIAlmb3IgKGFkcCA9IFRBSUxRX0ZJUlNUKCZpbm9kZWRlcC0+aWRfZXh0dXBk
dCk7IGFkcDsgYWRwID0gbmV4dGFkcCkgewogCQluZXh0YWRwID0gVEFJTFFfTkVYVChhZHAs
IGFkX25leHQpOwogCQlpZiAoYWRwLT5hZF9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJcGFuaWMo
ImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IG5ldyBlbnRyeSIpOworCQkJUEFOSUMoIm5l
dyBlbnRyeSIpOwogCQlpZiAoZHAyLT5kaV9leHRiW2FkcC0+YWRfb2Zmc2V0XSAhPSBhZHAt
PmFkX29sZGJsa25vKQotCQkJcGFuaWMoIiVzOiBkaXJlY3QgcG9pbnRlcnMgIyVqZCAlcyAl
amQgIT0gJWpkIiwKLQkJCSAgICAiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jayIsCisJCQlQ
QU5JQygiZGlyZWN0IHBvaW50ZXJzICMlamQgJXMgJWpkICE9ICVqZCIsCiAJCQkgICAgKGlu
dG1heF90KWFkcC0+YWRfb2Zmc2V0LCAibWlzbWF0Y2giLAogCQkJICAgIChpbnRtYXhfdClk
cDItPmRpX2V4dGJbYWRwLT5hZF9vZmZzZXRdLAogCQkJICAgIChpbnRtYXhfdClhZHAtPmFk
X29sZGJsa25vKTsKQEAgLTExMTQxLDEwICsxMTA5OSwxMCBAQCBoYW5kbGVfd3JpdHRlbl9p
bm9kZWJsb2NrKGlub2RlZGVwLCBicCkKIAkgKiBSZXNldCB0aGUgZmlsZSBzaXplIHRvIGl0
cyBtb3N0IHVwLXRvLWRhdGUgdmFsdWUuCiAJICovCiAJaWYgKGlub2RlZGVwLT5pZF9zYXZl
ZHNpemUgPT0gLTEgfHwgaW5vZGVkZXAtPmlkX3NhdmVkZXh0c2l6ZSA9PSAtMSkKLQkJcGFu
aWMoImhhbmRsZV93cml0dGVuX2lub2RlYmxvY2s6IGJhZCBzaXplIik7CisJCVBBTklDKCJi
YWQgc2l6ZSIpOwogCWlmIChpbm9kZWRlcC0+aWRfc2F2ZWRubGluayA+IExJTktfTUFYKQot
CQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jazogSW52YWxpZCBsaW5rIGNvdW50
ICIKLQkJICAgICIlZCBmb3IgaW5vZGVkZXAgJXAiLCBpbm9kZWRlcC0+aWRfc2F2ZWRubGlu
aywgaW5vZGVkZXApOworCQlQQU5JQygiSW52YWxpZCBsaW5rIGNvdW50ICVkIGZvciBpbm9k
ZWRlcCAlcCIsCisJCSAgICBpbm9kZWRlcC0+aWRfc2F2ZWRubGluaywgaW5vZGVkZXApOwog
CWlmIChmc3R5cGUgPT0gVUZTMSkgewogCQlpZiAoZHAxLT5kaV9ubGluayAhPSBpbm9kZWRl
cC0+aWRfc2F2ZWRubGluaykgeyAKIAkJCWRwMS0+ZGlfbmxpbmsgPSBpbm9kZWRlcC0+aWRf
c2F2ZWRubGluazsKQEAgLTExMjA3LDcgKzExMTY1LDcgQEAgYnVmd2FpdDoKIAkgKiBub3cg
dGhhdCB0aG9zZSB0aGF0IHdlcmUgYWxyZWFkeSB3cml0dGVuIGhhdmUgYmVlbiBwcm9jZXNz
ZWQuCiAJICovCiAJaWYgKCFMSVNUX0VNUFRZKCZ3a2hkKSAmJiBoYWRjaGFuZ2VzID09IDAp
Ci0JCXBhbmljKCJoYW5kbGVfd3JpdHRlbl9pbm9kZWJsb2NrOiBidWZ3YWl0IGJ1dCBubyBj
aGFuZ2VzIik7CisJCVBBTklDKCJidWZ3YWl0IGJ1dCBubyBjaGFuZ2VzIik7CiAJandvcmtf
bW92ZSgmaW5vZGVkZXAtPmlkX2J1ZndhaXQsICZ3a2hkKTsKIAogCWlmIChmcmVlZmlsZSAh
PSBOVUxMKSB7CkBAIC0xMTIxOCw4ICsxMTE3Niw3IEBAIGJ1ZndhaXQ6CiAJCWlmIChpbm9k
ZWRlcC0+aWRfc3RhdGUgJiBHT0lOR0FXQVkpCiAJCQlpbm9kZWRlcC0+aWRfc3RhdGUgfD0g
Q09NUExFVEUgfCBERVBDT01QTEVURTsKIAkJaWYgKGZyZWVfaW5vZGVkZXAoaW5vZGVkZXAp
ID09IDApCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5faW5vZGVibG9jazogbGl2ZSBpbm9k
ZWRlcCAlcCIsCi0JCQkgICAgaW5vZGVkZXApOworCQkJUEFOSUMoImxpdmUgaW5vZGVkZXAg
JXAiLCBpbm9kZWRlcCk7CiAJCWFkZF90b193b3JrbGlzdCgmZnJlZWZpbGUtPmZ4X2xpc3Qs
IDApOwogCQlyZXR1cm4gKDApOwogCX0KQEAgLTExMjQ3LDkgKzExMjA0LDkgQEAgaGFuZGxl
X3dyaXR0ZW5faW5kaXJkZXAoaW5kaXJkZXAsIGJwLCBicHApCiAJaW50IGNoZ3M7CiAKIAlp
ZiAoaW5kaXJkZXAtPmlyX3N0YXRlICYgR09JTkdBV0FZKQotCQlwYW5pYygiaGFuZGxlX3dy
aXR0ZW5faW5kaXJkZXA6IGluZGlyZGVwIGdvbmUiKTsKKwkJUEFOSUMoImluZGlyZGVwIGdv
bmUiKTsKIAlpZiAoKGluZGlyZGVwLT5pcl9zdGF0ZSAmIElPU1RBUlRFRCkgPT0gMCkKLQkJ
cGFuaWMoImhhbmRsZV93cml0dGVuX2luZGlyZGVwOiBJTyBub3Qgc3RhcnRlZCIpOworCQlQ
QU5JQygiSU8gbm90IHN0YXJ0ZWQiKTsKIAljaGdzID0gMDsKIAkvKgogCSAqIElmIHRoZXJl
IHdlcmUgcm9sbGJhY2tzIHJldmVydCB0aGVtIGhlcmUuCkBAIC0xMTI4Nyw3ICsxMTI0NCw3
IEBAIGhhbmRsZV93cml0dGVuX2luZGlyZGVwKGluZGlyZGVwLCBicCwgYnBwKQogCQl3aGls
ZSAoKGFpcCA9IExJU1RfRklSU1QoJmluZGlyZGVwLT5pcl9kb25laGQpKSAhPSAwKSB7CiAJ
CQloYW5kbGVfYWxsb2NpbmRpcl9wYXJ0ZG9uZShhaXApOwogCQkJaWYgKGFpcCA9PSBMSVNU
X0ZJUlNUKCZpbmRpcmRlcC0+aXJfZG9uZWhkKSkKLQkJCQlwYW5pYygiZGlza193cml0ZV9j
b21wbGV0ZTogbm90IGdvbmUiKTsKKwkJCQlQQU5JQygibm90IGdvbmUiKTsKIAkJCWNoZ3Mg
PSAxOwogCQl9CiAJfQpAQCAtMTEzMTAsNyArMTEyNjcsNyBAQCBoYW5kbGVfd3JpdHRlbl9p
bmRpcmRlcChpbmRpcmRlcCwgYnAsIGJwcCkKIAlpbmRpcmRlcC0+aXJfc2F2ZWJwID0gTlVM
TDsKIAlpbmRpcmRlcC0+aXJfYnAgPSBOVUxMOwogCWlmICgqYnBwICE9IE5VTEwpCi0JCXBh
bmljKCJoYW5kbGVfd3JpdHRlbl9pbmRpcmRlcDogYnAgYWxyZWFkeSBleGlzdHMuIik7CisJ
CVBBTklDKCJicCBhbHJlYWR5IGV4aXN0cy4iKTsKIAkqYnBwID0gc2JwOwogCS8qCiAJICog
VGhlIGluZGlyZGVwIG1heSBub3QgYmUgZnJlZWQgdW50aWwgaXRzIHBhcmVudCBwb2ludHMg
YXQgaXQuCkBAIC0xMTM4MSw3ICsxMTMzOCw3IEBAIGpuZXdibGtfcm9sbGZvcndhcmQoam5l
d2JsaywgZnMsIGNncCwgYmxrc2ZyZWUpCiAJY2dibm8gPSBkdG9nZChmcywgam5ld2Jsay0+
am5fYmxrbm8pOwogCWZvciAoaSA9IGpuZXdibGstPmpuX29sZGZyYWdzOyBpIDwgam5ld2Js
ay0+am5fZnJhZ3M7IGkrKykgewogCQlpZiAoaXNjbHIoYmxrc2ZyZWUsIGNnYm5vICsgaSkp
Ci0JCQlwYW5pYygiam5ld2Jsa19yb2xsZm9yd2FyZDogcmUtYWxsb2NhdGVkIGZyYWdtZW50
Iik7CisJCQlQQU5JQygicmUtYWxsb2NhdGVkIGZyYWdtZW50Iik7CiAJCWZyYWdzKys7CiAJ
fQogCWlmIChmcmFncyA9PSBmcy0+ZnNfZnJhZykgewpAQCAtMTE0MzYsNyArMTEzOTMsNyBA
QCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAoYm1zYWZlbWFwLCBicCkKIAlpbnQgY2hnczsK
IAogCWlmICgoYm1zYWZlbWFwLT5zbV9zdGF0ZSAmIElPU1RBUlRFRCkgPT0gMCkKLQkJcGFu
aWMoImluaXRpYXRlX3dyaXRlX2Jtc2FmZW1hcDogTm90IHN0YXJ0ZWRcbiIpOworCQlQQU5J
QygiTm90IHN0YXJ0ZWRcbiIpOwogCXVtcCA9IFZGU1RPVUZTKGJtc2FmZW1hcC0+c21fbGlz
dC53a19tcCk7CiAJY2hncyA9IDA7CiAJYm1zYWZlbWFwLT5zbV9zdGF0ZSAmPSB+SU9TVEFS
VEVEOwpAQCAtMTE0NTgsOCArMTE0MTUsNyBAQCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAo
Ym1zYWZlbWFwLCBicCkKIAkJCQljb250aW51ZTsKIAkJCWlubyA9IGphZGRyZWYtPmphX2lu
byAlIGZzLT5mc19pcGc7CiAJCQlpZiAoaXNzZXQoaW5vc3VzZWQsIGlubykpCi0JCQkJcGFu
aWMoImhhbmRsZV93cml0dGVuX2Jtc2FmZW1hcDogIgotCQkJCSAgICAicmUtYWxsb2NhdGVk
IGlub2RlIik7CisJCQkJUEFOSUMoInJlLWFsbG9jYXRlZCBpbm9kZSIpOwogCQkJaWYgKChi
cC0+Yl94ZmxhZ3MgJiBCWF9CS0dSRE1BUktFUikgPT0gMCkgewogCQkJCWlmICgoamFkZHJl
Zi0+amFfbW9kZSAmIElGTVQpID09IElGRElSKQogCQkJCQljZ3AtPmNnX2NzLmNzX25kaXIr
KzsKQEAgLTExNTAzLDcgKzExNDU5LDcgQEAgaGFuZGxlX3dyaXR0ZW5fYm1zYWZlbWFwKGJt
c2FmZW1hcCwgYnApCiAJCQloYW5kbGVfYWxsb2NpbmRpcl9wYXJ0ZG9uZSgKIAkJCSAgICBX
S19BTExPQ0lORElSKCZuZXdibGstPm5iX2xpc3QpKTsKIAkJZWxzZSBpZiAobmV3YmxrLT5u
Yl9saXN0LndrX3R5cGUgIT0gRF9ORVdCTEspCi0JCQlwYW5pYygiaGFuZGxlX3dyaXR0ZW5f
Ym1zYWZlbWFwOiBVbmV4cGVjdGVkIHR5cGU6ICVzIiwKKwkJCVBBTklDKCJVbmV4cGVjdGVk
IHR5cGU6ICVzIiwKIAkJCSAgICBUWVBFTkFNRShuZXdibGstPm5iX2xpc3Qud2tfdHlwZSkp
OwogCX0KIAl3aGlsZSAoKGlub2RlZGVwID0gTElTVF9GSVJTVCgmYm1zYWZlbWFwLT5zbV9p
bm9kZWRlcHdyKSkgIT0gTlVMTCkgewpAQCAtMTE1NTgsNyArMTE1MTQsNyBAQCBoYW5kbGVf
d3JpdHRlbl9ta2Rpcihta2RpciwgdHlwZSkKIHsKIAogCWlmICgobWtkaXItPm1kX3N0YXRl
ICYgKE1LRElSX1BBUkVOVCB8IE1LRElSX0JPRFkpKSAhPSB0eXBlKQotCQlwYW5pYygiaGFu
ZGxlX3dyaXR0ZW5fbWtkaXI6IGJhZCB0eXBlIik7CisJCVBBTklDKCJiYWQgdHlwZSIpOwog
CW1rZGlyLT5tZF9zdGF0ZSB8PSBDT01QTEVURTsKIAljb21wbGV0ZV9ta2Rpcihta2Rpcik7
CiB9CkBAIC0xMTYwNiw3ICsxMTU2Miw3IEBAIGhhbmRsZV93cml0dGVuX2ZpbGVwYWdlKHBh
Z2VkZXAsIGJwKQogCWludCBpLCBjaGdzOwogCiAJaWYgKChwYWdlZGVwLT5wZF9zdGF0ZSAm
IElPU1RBUlRFRCkgPT0gMCkKLQkJcGFuaWMoImhhbmRsZV93cml0dGVuX2ZpbGVwYWdlOiBu
b3Qgc3RhcnRlZCIpOworCQlQQU5JQygibm90IHN0YXJ0ZWQiKTsKIAlwYWdlZGVwLT5wZF9z
dGF0ZSAmPSB+SU9TVEFSVEVEOwogCS8qCiAJICogUHJvY2VzcyBhbnkgZGlyZWN0b3J5IHJl
bW92YWxzIHRoYXQgaGF2ZSBiZWVuIGNvbW1pdHRlZC4KQEAgLTExNjM1LDcgKzExNTkxLDcg
QEAgaGFuZGxlX3dyaXR0ZW5fZmlsZXBhZ2UocGFnZWRlcCwgYnApCiAJCSAgICAgZGFwID0g
bmV4dGRhcCkgewogCQkJbmV4dGRhcCA9IExJU1RfTkVYVChkYXAsIGRhX3BkbGlzdCk7CiAJ
CQlpZiAoZGFwLT5kYV9zdGF0ZSAmIEFUVEFDSEVEKQotCQkJCXBhbmljKCJoYW5kbGVfd3Jp
dHRlbl9maWxlcGFnZTogYXR0YWNoZWQiKTsKKwkJCQlQQU5JQygiYXR0YWNoZWQiKTsKIAkJ
CWVwID0gKHN0cnVjdCBkaXJlY3QgKikKIAkJCSAgICAoKGNoYXIgKilicC0+Yl9kYXRhICsg
ZGFwLT5kYV9vZmZzZXQpOwogCQkJZXAtPmRfaW5vID0gZGFwLT5kYV9uZXdpbnVtOwpAQCAt
MTE3NjEsMTEgKzExNzE3LDExIEBAIGFnYWluOgogCWlmIChpbm9kZWRlcF9sb29rdXAobXAs
IGlwLT5pX251bWJlciwgMCwgJmlub2RlZGVwKSA9PSAwKSB7CiAJCUZSRUVfTE9DSygmbGsp
OwogCQlpZiAoaXAtPmlfZWZmbmxpbmsgIT0gaXAtPmlfbmxpbmspCi0JCQlwYW5pYygic29m
dGRlcF91cGRhdGVfaW5vZGVibG9jazogYmFkIGxpbmsgY291bnQiKTsKKwkJCVBBTklDKCJi
YWQgbGluayBjb3VudCIpOwogCQlyZXR1cm47CiAJfQogCWlmIChpbm9kZWRlcC0+aWRfbmxp
bmtkZWx0YSAhPSBpcC0+aV9ubGluayAtIGlwLT5pX2VmZm5saW5rKQotCQlwYW5pYygic29m
dGRlcF91cGRhdGVfaW5vZGVibG9jazogYmFkIGRlbHRhIik7CisJCVBBTklDKCJiYWQgZGVs
dGEiKTsKIAkvKgogCSAqIElmIHdlJ3JlIGZsdXNoaW5nIGFsbCBkZXBlbmRlbmNpZXMgd2Ug
bXVzdCBhbHNvIG1vdmUgYW55IHdhaXRpbmcKIAkgKiBmb3Igam91cm5hbCB3cml0ZXMgb250
byB0aGUgYnVmd2FpdCBsaXN0IHByaW9yIHRvIEkvTy4KQEAgLTExOTIxLDEzICsxMTg3Nywx
MiBAQCByZXN0YXJ0OgogCSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9uZXdleHR1
cGR0KSB8fAogCSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9pbm91cGR0KSB8fAog
CSAgICAhVEFJTFFfRU1QVFkoJmlub2RlZGVwLT5pZF9uZXdpbm91cGR0KSkKLQkJcGFuaWMo
InNvZnRkZXBfZnN5bmM6IHBlbmRpbmcgb3BzICVwIiwgaW5vZGVkZXApOworCQlQQU5JQygi
cGVuZGluZyBvcHMgJXAiLCBpbm9kZWRlcCk7CiAJZm9yIChlcnJvciA9IDAsIGZsdXNocGFy
ZW50ID0gMDsgOyApIHsKIAkJaWYgKCh3ayA9IExJU1RfRklSU1QoJmlub2RlZGVwLT5pZF9w
ZW5kaW5naGQpKSA9PSBOVUxMKQogCQkJYnJlYWs7CiAJCWlmICh3ay0+d2tfdHlwZSAhPSBE
X0RJUkFERCkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZzeW5jOiBVbmV4cGVjdGVkIHR5cGUgJXMi
LAotCQkJICAgIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CisJCQlQQU5JQygiVW5leHBlY3Rl
ZCB0eXBlICVzIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKIAkJZGFwID0gV0tfRElSQURE
KHdrKTsKIAkJLyoKIAkJICogRmx1c2ggb3VyIHBhcmVudCBpZiB0aGlzIGRpcmVjdG9yeSBl
bnRyeSBoYXMgYSBNS0RJUl9QQVJFTlQKQEAgLTExOTQwLDcgKzExODk1LDcgQEAgcmVzdGFy
dDoKIAkJcGFyZW50aW5vID0gcGFnZWRlcC0+cGRfaW5vOwogCQlsYm4gPSBwYWdlZGVwLT5w
ZF9sYm47CiAJCWlmICgoZGFwLT5kYV9zdGF0ZSAmIChNS0RJUl9CT0RZIHwgQ09NUExFVEUp
KSAhPSBDT01QTEVURSkKLQkJCXBhbmljKCJzb2Z0ZGVwX2ZzeW5jOiBkaXJ0eSIpOworCQkJ
UEFOSUMoImRpcnR5Iik7CiAJCWlmICgoZGFwLT5kYV9zdGF0ZSAmIE1LRElSX1BBUkVOVCkg
fHwKIAkJICAgIChwYWdlZGVwLT5wZF9zdGF0ZSAmIE5FV0JMT0NLKSkKIAkJCWZsdXNocGFy
ZW50ID0gMTsKQEAgLTEyMDE0LDcgKzExOTY5LDcgQEAgcmVzdGFydDoKIAkJCWlmIChpbm9k
ZWRlcF9sb29rdXAobXAsIGlwLT5pX251bWJlciwgMCwgJmlub2RlZGVwKSAhPSAwKSB7CiAJ
CQkJaWYgKCh3ayA9IExJU1RfRklSU1QoJmlub2RlZGVwLT5pZF9wZW5kaW5naGQpKSAhPSBO
VUxMKSB7CiAJCQkJCWlmICh3ay0+d2tfdHlwZSAhPSBEX0RJUkFERCkKLQkJCQkJCXBhbmlj
KCJzb2Z0ZGVwX2ZzeW5jOiBVbmV4cGVjdGVkIHR5cGUgJXMiLAorCQkJCQkJUEFOSUMoIlVu
ZXhwZWN0ZWQgdHlwZSAlcyIsCiAJCQkJCQkgICAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSkp
OwogCQkJCQlkYXAgPSBXS19ESVJBREQod2spOwogCQkJCQlpZiAoZGFwLT5kYV9zdGF0ZSAm
IERJUkNIRykKQEAgLTEyMDcwLDcgKzEyMDI1LDcgQEAgc29mdGRlcF9mc3luY19tb3VudGRl
dih2cCkKIAlzdHJ1Y3QgYnVmb2JqICpibzsKIAogCWlmICghdm5faXNkaXNrKHZwLCBOVUxM
KSkKLQkJcGFuaWMoInNvZnRkZXBfZnN5bmNfbW91bnRkZXY6IHZub2RlIG5vdCBhIGRpc2si
KTsKKwkJUEFOSUMoInZub2RlIG5vdCBhIGRpc2siKTsKIAlibyA9ICZ2cC0+dl9idWZvYmo7
CiByZXN0YXJ0OgogCUJPX0xPQ0soYm8pOwpAQCAtMTIwODMsNyArMTIwMzgsNyBAQCByZXN0
YXJ0OgogCQkJY29udGludWU7CiAKIAkJaWYgKChicC0+Yl9mbGFncyAmIEJfREVMV1JJKSA9
PSAwKQotCQkJcGFuaWMoInNvZnRkZXBfZnN5bmNfbW91bnRkZXY6IG5vdCBkaXJ0eSIpOwor
CQkJUEFOSUMoIm5vdCBkaXJ0eSIpOwogCQkvKgogCQkgKiBXZSBhcmUgb25seSBpbnRlcmVz
dGVkIGluIGJpdG1hcHMgd2l0aCBvdXRzdGFuZGluZwogCQkgKiBkZXBlbmRlbmNpZXMuCkBA
IC0xMjI2Niw3ICsxMjIyMSw3IEBAIHRvcDoKIAkJCQl9CiAJCQl9CiAJCQlpZiAoIVRBSUxR
X0VNUFRZKCZpbmRpcmRlcC0+aXJfdHJ1bmMpKQotCQkJCXBhbmljKCJzb2Z0ZGVwX3N5bmNf
YnVmOiB0cnVuY2F0aW9uIHBlbmRpbmcuIik7CisJCQkJUEFOSUMoInRydW5jYXRpb24gcGVu
ZGluZy4iKTsKIAkJcmVzdGFydDoKIAkJCUxJU1RfRk9SRUFDSChhaXAsICZpbmRpcmRlcC0+
aXJfZGVwbGlzdGhkLCBhaV9uZXh0KSB7CiAJCQkJbmV3YmxrID0gKHN0cnVjdCBuZXdibGsg
KilhaXA7CkBAIC0xMjMyOSw4ICsxMjI4NCw3IEBAIHRvcDoKIAkJCWNvbnRpbnVlOwogCiAJ
CWRlZmF1bHQ6Ci0JCQlwYW5pYygic29mdGRlcF9zeW5jX2J1ZjogVW5rbm93biB0eXBlICVz
IiwKLQkJCSAgICBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOworCQkJUEFOSUMoIlVua25vd24g
dHlwZSAlcyIsIFRZUEVOQU1FKHdrLT53a190eXBlKSk7CiAJCQkvKiBOT1RSRUFDSEVEICov
CiAJCX0KIAl9CkBAIC0xMjQ2NCw3ICsxMjQxOCw3IEBAIGZsdXNoX25ld2Jsa19kZXAodnAs
IG1wLCBsYm4pCiAJaXAgPSBWVE9JKHZwKTsKIAlibGtubyA9IERJUChpcCwgaV9kYltsYm5d
KTsKIAlpZiAoYmxrbm8gPT0gMCkKLQkJcGFuaWMoImZsdXNoX25ld2Jsa19kZXA6IE1pc3Np
bmcgYmxvY2siKTsKKwkJUEFOSUMoIk1pc3NpbmcgYmxvY2siKTsKIAlBQ1FVSVJFX0xPQ0so
JmxrKTsKIAkvKgogCSAqIExvb3AgdW50aWwgYWxsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRv
IHRoaXMgYmxvY2sgYXJlIHNhdGlzZmllZC4KQEAgLTEyNDc3LDcgKzEyNDMxLDcgQEAgZmx1
c2hfbmV3YmxrX2RlcCh2cCwgbXAsIGxibikKIAkJCWJyZWFrOwogCQl9CiAJCWlmIChuZXdi
bGstPm5iX2xpc3Qud2tfdHlwZSAhPSBEX0FMTE9DRElSRUNUKQotCQkJcGFuaWMoImZsdXNo
X25ld2Jsa19kZXBzOiBCYWQgbmV3YmxrICVwIiwgbmV3YmxrKTsKKwkJCVBBTklDKCJCYWQg
bmV3YmxrICVwIiwgbmV3YmxrKTsKIAkJLyoKIAkJICogRmx1c2ggdGhlIGpvdXJuYWwuCiAJ
CSAqLwpAQCAtMTI1NzQsNyArMTI1MjgsNyBAQCByZXN0YXJ0OgogCQkJaWYgKGRhcCAhPSBM
SVNUX0ZJUlNUKGRpcmFkZGhkcCkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoZGFwLT5kYV9z
dGF0ZSAmIE1LRElSX1BBUkVOVCkKLQkJCQlwYW5pYygiZmx1c2hfcGFnZWRlcF9kZXBzOiBN
S0RJUl9QQVJFTlQiKTsKKwkJCQlQQU5JQygiTUtESVJfUEFSRU5UIik7CiAJCX0KIAkJLyoK
IAkJICogQSBuZXdseSBhbGxvY2F0ZWQgZGlyZWN0b3J5IG11c3QgaGF2ZSBpdHMgIi4iIGFu
ZApAQCAtMTI1ODMsNyArMTI1MzcsNyBAQCByZXN0YXJ0OgogCQkgKi8KIAkJaW51bSA9IGRh
cC0+ZGFfbmV3aW51bTsKIAkJaWYgKGlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1bXApLCBp
bnVtLCAwLCAmaW5vZGVkZXApID09IDApCi0JCQlwYW5pYygiZmx1c2hfcGFnZWRlcF9kZXBz
OiBsb3N0IGlub2RlMSIpOworCQkJUEFOSUMoImxvc3QgaW5vZGUxIik7CiAJCS8qCiAJCSAq
IFdhaXQgZm9yIGFueSBwZW5kaW5nIGpvdXJuYWwgYWRkcyB0byBjb21wbGV0ZSBzbyB3ZSBk
b24ndAogCQkgKiBjYXVzZSByb2xsYmFja3Mgd2hpbGUgc3luY2luZy4KQEAgLTEyNjIwLDgg
KzEyNTc0LDcgQEAgcmVzdGFydDoKIAkJCWlmIChkYXAtPmRhX3N0YXRlICYgTUtESVJfQk9E
WSkgewogCQkJCWlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1bXApLCBpbnVtLCAwLAogCQkJ
CSAgICAmaW5vZGVkZXApOwotCQkJCXBhbmljKCJmbHVzaF9wYWdlZGVwX2RlcHM6IE1LRElS
X0JPRFkgIgotCQkJCSAgICAiaW5vZGVkZXAgJXAgZGFwICVwIHZwICVwIiwKKwkJCQlQQU5J
QygiTUtESVJfQk9EWSBpbm9kZWRlcCAlcCBkYXAgJXAgdnAgJXAiLAogCQkJCSAgICBpbm9k
ZWRlcCwgZGFwLCB2cCk7CiAJCQl9CiAJCX0KQEAgLTEyNjM3LDcgKzEyNTkwLDcgQEAgcmVz
dGFydDoKIAkJICovCiByZXRyeToKIAkJaWYgKGlub2RlZGVwX2xvb2t1cChVRlNUT1ZGUyh1
bXApLCBpbnVtLCAwLCAmaW5vZGVkZXApID09IDApCi0JCQlwYW5pYygiZmx1c2hfcGFnZWRl
cF9kZXBzOiBsb3N0IGlub2RlIik7CisJCQlQQU5JQygibG9zdCBpbm9kZSIpOwogCQkvKgog
CQkgKiBJZiB0aGUgaW5vZGUgc3RpbGwgaGFzIGJpdG1hcCBkZXBlbmRlbmNpZXMsCiAJCSAq
IHB1c2ggdGhlbSB0byBkaXNrLgpAQCAtMTI2NzYsOCArMTI2MjksNyBAQCByZXRyeToKIAkJ
ICovCiAJCWlmIChkYXAgPT0gTElTVF9GSVJTVChkaXJhZGRoZHApKSB7CiAJCQlpbm9kZWRl
cF9sb29rdXAoVUZTVE9WRlModW1wKSwgaW51bSwgMCwgJmlub2RlZGVwKTsKLQkJCXBhbmlj
KCJmbHVzaF9wYWdlZGVwX2RlcHM6IGZhaWxlZCB0byBmbHVzaCAiIAotCQkJICAgICJpbm9k
ZWRlcCAlcCBpbm8gJWp1IGRhcCAlcCIsCisJCQlQQU5JQygiZmFpbGVkIHRvIGZsdXNoIGlu
b2RlZGVwICVwIGlubyAlanUgZGFwICVwIiwKIAkJCSAgICBpbm9kZWRlcCwgKHVpbnRtYXhf
dClpbnVtLCBkYXApOwogCQl9CiAJfQpAQCAtMTI5NTEsNyArMTI5MDMsNyBAQCByZXF1ZXN0
X2NsZWFudXAobXAsIHJlc291cmNlKQogCQlicmVhazsKIAogCWRlZmF1bHQ6Ci0JCXBhbmlj
KCJyZXF1ZXN0X2NsZWFudXA6IHVua25vd24gdHlwZSIpOworCQlQQU5JQygidW5rbm93biB0
eXBlIik7CiAJfQogCS8qCiAJICogSG9wZWZ1bGx5IHRoZSBzeW5jZXIgZGFlbW9uIHdpbGwg
Y2F0Y2ggdXAgYW5kIGF3YWtlbiB1cy4KQEAgLTEzMzI3LDggKzEzMjc5LDcgQEAgc29mdGRl
cF9jb3VudF9kZXBlbmRlbmNpZXMoYnAsIHdhbnRjb3VudCkKIAkJCWNvbnRpbnVlOwogCiAJ
CWRlZmF1bHQ6Ci0JCQlwYW5pYygic29mdGRlcF9jb3VudF9kZXBlbmRlbmNpZXM6IFVuZXhw
ZWN0ZWQgdHlwZSAlcyIsCi0JCQkgICAgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBB
TklDKCJVbmV4cGVjdGVkIHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQkJ
LyogTk9UUkVBQ0hFRCAqLwogCQl9CiAJfQpAQCAtMTMzNjMsNyArMTMzMTQsNyBAQCBnZXRk
aXJ0eWJ1ZihicCwgbXR4LCB3YWl0Zm9yKQogCQlpZiAoZXJyb3IgPT0gMCkKIAkJCUJVRl9V
TkxPQ0soYnApOwogCQllbHNlIGlmIChlcnJvciAhPSBFTk9MQ0spCi0JCQlwYW5pYygiZ2V0
ZGlydHlidWY6IGluY29uc2lzdGVudCBsb2NrOiAlZCIsIGVycm9yKTsKKwkJCVBBTklDKCJp
bmNvbnNpc3RlbnQgbG9jazogJWQiLCBlcnJvcik7CiAJCW10eF9sb2NrKG10eCk7CiAJCXJl
dHVybiAoTlVMTCk7CiAJfQpAQCAtMTM1MjMsMTQgKzEzNDc0LDE0IEBAIHNvZnRkZXBfZGVh
bGxvY2F0ZV9kZXBlbmRlbmNpZXMoYnApCiB7CiAKIAlpZiAoKGJwLT5iX2lvZmxhZ3MgJiBC
SU9fRVJST1IpID09IDApCi0JCXBhbmljKCJzb2Z0ZGVwX2RlYWxsb2NhdGVfZGVwZW5kZW5j
aWVzOiBkYW5nbGluZyBkZXBzIik7CisJCVBBTklDKCJkYW5nbGluZyBkZXBzIik7CiAJaWYg
KGJwLT5iX3ZwICE9IE5VTEwgJiYgYnAtPmJfdnAtPnZfbW91bnQgIT0gTlVMTCkKIAkJc29m
dGRlcF9lcnJvcihicC0+Yl92cC0+dl9tb3VudC0+bW50X3N0YXQuZl9tbnRvbm5hbWUsIGJw
LT5iX2Vycm9yKTsKIAllbHNlCiAJCXByaW50Zigic29mdGRlcF9kZWFsbG9jYXRlX2RlcGVu
ZGVuY2llczogIgogCQkgICAgImdvdCBlcnJvciAlZCB3aGlsZSBhY2Nlc3NpbmcgZmlsZXN5
c3RlbVxuIiwgYnAtPmJfZXJyb3IpOwogCWlmIChicC0+Yl9lcnJvciAhPSBFTlhJTykKLQkJ
cGFuaWMoInNvZnRkZXBfZGVhbGxvY2F0ZV9kZXBlbmRlbmNpZXM6IHVucmVjb3ZlcmVkIEkv
TyBlcnJvciIpOworCQlQQU5JQygidW5yZWNvdmVyZWQgSS9PIGVycm9yIik7CiB9CiAKIC8q
CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc3Vici5jIGIvc3lzL3Vmcy9mZnMvZmZz
X3N1YnIuYwppbmRleCBlMjQ2MGEzLi5hMGUwNzc0IDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zm
cy9mZnNfc3Vici5jCisrKyBiL3N5cy91ZnMvZmZzL2Zmc19zdWJyLmMKQEAgLTE5MSw3ICsx
OTEsNyBAQCBmZnNfY2hlY2tvdmVybGFwKGJwLCBpcCkKIAkJcHJpbnRmKCJcdHN0YXJ0ICVq
ZCwgZW5kICVqZCBvdmVybGFwIHN0YXJ0ICVqZCwgZW5kICVqZFxuIiwKIAkJICAgIChpbnRt
YXhfdClzdGFydCwgKGludG1heF90KWxhc3QsIChpbnRtYXhfdCllcC0+Yl9ibGtubywKIAkJ
ICAgIChpbnRtYXhfdCkoZXAtPmJfYmxrbm8gKyBidG9kYihlcC0+Yl9iY291bnQpIC0gMSkp
OwotCQlwYW5pYygiZmZzX2NoZWNrb3ZlcmxhcDogRGlzayBidWZmZXIgb3ZlcmxhcCIpOwor
CQlQQU5JQygiRGlzayBidWZmZXIgb3ZlcmxhcCIpOwogCX0KIH0KICNlbmRpZiAvKiBLREIg
Ki8KQEAgLTIyMyw3ICsyMjMsNyBAQCBmZnNfaXNibG9jayhmcywgY3AsIGgpCiAJCXJldHVy
biAoKGNwW2ggPj4gM10gJiBtYXNrKSA9PSBtYXNrKTsKIAlkZWZhdWx0OgogI2lmZGVmIF9L
RVJORUwKLQkJcGFuaWMoImZmc19pc2Jsb2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgog
CQlicmVhazsKIAl9CkBAIC0yNTEsNyArMjUxLDcgQEAgZmZzX2lzZnJlZWJsb2NrKGZzLCBj
cCwgaCkKIAkJcmV0dXJuICgoY3BbaCA+PiAzXSAmICgweDAxIDw8IChoICYgMHg3KSkpID09
IDApOwogCWRlZmF1bHQ6CiAjaWZkZWYgX0tFUk5FTAotCQlwYW5pYygiZmZzX2lzZnJlZWJs
b2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgogCQlicmVhazsKIAl9CkBAIC0yODMsNyAr
MjgzLDcgQEAgZmZzX2NscmJsb2NrKGZzLCBjcCwgaCkKIAkJcmV0dXJuOwogCWRlZmF1bHQ6
CiAjaWZkZWYgX0tFUk5FTAotCQlwYW5pYygiZmZzX2NscmJsb2NrIik7CisJCVBBTklDKCIi
KTsKICNlbmRpZgogCQlicmVhazsKIAl9CkBAIC0zMTUsNyArMzE1LDcgQEAgZmZzX3NldGJs
b2NrKGZzLCBjcCwgaCkKIAkJcmV0dXJuOwogCWRlZmF1bHQ6CiAjaWZkZWYgX0tFUk5FTAot
CQlwYW5pYygiZmZzX3NldGJsb2NrIik7CisJCVBBTklDKCIiKTsKICNlbmRpZgogCQlicmVh
azsKIAl9CmRpZmYgLS1naXQgYS9zeXMvdWZzL2Zmcy9mZnNfc3VzcGVuZC5jIGIvc3lzL3Vm
cy9mZnMvZmZzX3N1c3BlbmQuYwppbmRleCAzMTk4YzFhLi5mZDU3NDJkIDEwMDY0NAotLS0g
YS9zeXMvdWZzL2Zmcy9mZnNfc3VzcGVuZC5jCisrKyBiL3N5cy91ZnMvZmZzL2Zmc19zdXNw
ZW5kLmMKQEAgLTIzOCw3ICsyMzgsNyBAQCBmZnNfc3VzcF9kdG9yKHZvaWQgKmRhdGEpCiAK
IAllcnJvciA9IGZmc19yZWxvYWQobXAsIGN1cnRocmVhZCwgMSk7CiAJaWYgKGVycm9yICE9
IDApCi0JCXBhbmljKCJmYWlsZWQgdG8gdW5zdXNwZW5kIHdyaXRlcyBvbiAlcyIsIGZzLT5m
c19mc21udCk7CisJCVBBTklDKCJmYWlsZWQgdG8gdW5zdXNwZW5kIHdyaXRlcyBvbiAlcyIs
IGZzLT5mc19mc21udCk7CiAKIAkvKgogCSAqIFhYWDogVGhlIHN0YXR1cyBpcyBrZXB0IHBl
ci1wcm9jZXNzOyB0aGUgdmZzX3dyaXRlX3Jlc3VtZSgpIHJvdXRpbmUKZGlmZiAtLWdpdCBh
L3N5cy91ZnMvZmZzL2Zmc192ZnNvcHMuYyBiL3N5cy91ZnMvZmZzL2Zmc192ZnNvcHMuYwpp
bmRleCAwMjA0NjEzLi4xNTg2MmJhIDEwMDY0NAotLS0gYS9zeXMvdWZzL2Zmcy9mZnNfdmZz
b3BzLmMKKysrIGIvc3lzL3Vmcy9mZnMvZmZzX3Zmc29wcy5jCkBAIC02MzQsNyArNjM0LDcg
QEAgZmZzX3JlbG9hZChzdHJ1Y3QgbW91bnQgKm1wLCBzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50
IGZvcmNlKQogCWRldnZwID0gVkZTVE9VRlMobXApLT51bV9kZXZ2cDsKIAl2bl9sb2NrKGRl
dnZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJaWYgKHZpbnZhbGJ1ZihkZXZ2cCwg
MCwgMCwgMCkgIT0gMCkKLQkJcGFuaWMoImZmc19yZWxvYWQ6IGRpcnR5MSIpOworCQlQQU5J
QygiZGlydHkxIik7CiAJVk9QX1VOTE9DSyhkZXZ2cCwgMCk7CiAKIAkvKgpAQCAtNzMwLDcg
KzczMCw3IEBAIGxvb3A6CiAJCQlnb3RvIGxvb3A7CiAJCX0KIAkJaWYgKHZpbnZhbGJ1Zih2
cCwgMCwgMCwgMCkpCi0JCQlwYW5pYygiZmZzX3JlbG9hZDogZGlydHkyIik7CisJCQlQQU5J
QygiZGlydHkyIik7CiAJCS8qCiAJCSAqIFN0ZXAgNTogcmUtcmVhZCBpbm9kZSBkYXRhIGZv
ciBhbGwgYWN0aXZlIHZub2Rlcy4KIAkJICovCkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBmZnNf
c3RhdGZzKG1wLCBzYnApCiAJdW1wID0gVkZTVE9VRlMobXApOwogCWZzID0gdW1wLT51bV9m
czsKIAlpZiAoZnMtPmZzX21hZ2ljICE9IEZTX1VGUzFfTUFHSUMgJiYgZnMtPmZzX21hZ2lj
ICE9IEZTX1VGUzJfTUFHSUMpCi0JCXBhbmljKCJmZnNfc3RhdGZzIik7CisJCVBBTklDKCIi
KTsKIAlzYnAtPmZfdmVyc2lvbiA9IFNUQVRGU19WRVJTSU9OOwogCXNicC0+Zl9ic2l6ZSA9
IGZzLT5mc19mc2l6ZTsKIAlzYnAtPmZfaW9zaXplID0gZnMtPmZzX2JzaXplOwpAQCAtMTUx
Niw4ICsxNTE2LDcgQEAgZmZzX3N5bmMobXAsIHdhaXRmb3IpCiAJdGQgPSBjdXJ0aHJlYWQ7
CiAJZnMgPSB1bXAtPnVtX2ZzOwogCWlmIChmcy0+ZnNfZm1vZCAhPSAwICYmIGZzLT5mc19y
b25seSAhPSAwICYmIHVtcC0+dW1fZnNja3BpZCA9PSAwKQotCQlwYW5pYygiJXM6IGZmc19z
eW5jOiBtb2RpZmljYXRpb24gb24gcmVhZC1vbmx5IGZpbGVzeXN0ZW0iLAotCQkgICAgZnMt
PmZzX2ZzbW50KTsKKwkJUEFOSUMoIiVzOiBtb2RpZmljYXRpb24gb24gcmVhZC1vbmx5IGZp
bGVzeXN0ZW0iLCBmcy0+ZnNfZnNtbnQpOwogCWlmICh3YWl0Zm9yID09IE1OVF9MQVpZKQog
CQlyZXR1cm4gKGZmc19zeW5jX2xhenkobXApKTsKIApAQCAtMTg3Myw3ICsxODcyLDcgQEAg
ZmZzX3NidXBkYXRlKHVtcCwgd2FpdGZvciwgc3VzcGVuZGVkKQogCWlmIChmcy0+ZnNfcm9u
bHkgPT0gMSAmJgogCSAgICAodW1wLT51bV9tb3VudHAtPm1udF9mbGFnICYgKE1OVF9SRE9O
TFkgfCBNTlRfVVBEQVRFKSkgIT0KIAkgICAgKE1OVF9SRE9OTFkgfCBNTlRfVVBEQVRFKSAm
JiB1bXAtPnVtX2ZzY2twaWQgPT0gMCkKLQkJcGFuaWMoImZmc19zYnVwZGF0ZTogd3JpdGUg
cmVhZC1vbmx5IGZpbGVzeXN0ZW0iKTsKKwkJUEFOSUMoIndyaXRlIHJlYWQtb25seSBmaWxl
c3lzdGVtIik7CiAJLyoKIAkgKiBXZSB1c2UgdGhlIHN1cGVyYmxvY2sncyBidWYgdG8gc2Vy
aWFsaXplIGNhbGxzIHRvIGZmc19zYnVwZGF0ZSgpLgogCSAqLwpAQCAtMTk4MCw3ICsxOTc5
LDcgQEAgZmZzX2JhY2tncm91bmR3cml0ZWRvbmUoc3RydWN0IGJ1ZiAqYnApCiAJYnVmb2Jq
ID0gYnAtPmJfYnVmb2JqOwogCUJPX0xPQ0soYnVmb2JqKTsKIAlpZiAoKG9yaWdicCA9IGdi
aW5jb3JlKGJwLT5iX2J1Zm9iaiwgYnAtPmJfbGJsa25vKSkgPT0gTlVMTCkKLQkJcGFuaWMo
ImJhY2tncm91bmR3cml0ZWRvbmU6IGxvc3QgYnVmZmVyIik7CisJCVBBTklDKCJsb3N0IGJ1
ZmZlciIpOwogCS8qIEdyYWIgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIGJlIGRyb3BwZWQgYnkg
dGhlIGJ1ZmRvbmUoKSBiZWxvdy4gKi8KIAlidWZvYmpfd3JlZmwoYnVmb2JqKTsKIAlCT19V
TkxPQ0soYnVmb2JqKTsKQEAgLTIwNDQsNyArMjA0Myw3IEBAIGZmc19idWZ3cml0ZShzdHJ1
Y3QgYnVmICpicCkKIAlvbGRmbGFncyA9IGJwLT5iX2ZsYWdzOwogCiAJaWYgKCFCVUZfSVNM
T0NLRUQoYnApKQotCQlwYW5pYygiYnVmd3JpdGU6IGJ1ZmZlciBpcyBub3QgYnVzeT8/PyIp
OworCQlQQU5JQygiYnVmZmVyIGlzIG5vdCBidXN5Pz8/Iik7CiAJcyA9IHNwbGJpbygpOwog
CS8qCiAJICogSWYgYSBiYWNrZ3JvdW5kIHdyaXRlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3Ms
IGRlbGF5CkBAIC0yMDYyLDcgKzIwNjEsNyBAQCBmZnNfYnVmd3JpdGUoc3RydWN0IGJ1ZiAq
YnApCiAJCWJwLT5iX3ZmbGFncyB8PSBCVl9CS0dSRFdBSVQ7CiAJCW1zbGVlcCgmYnAtPmJf
eGZsYWdzLCBCT19NVFgoYnAtPmJfYnVmb2JqKSwgUFJJQklPLCAiYndyYmciLCAwKTsKIAkJ
aWYgKGJwLT5iX3ZmbGFncyAmIEJWX0JLR1JESU5QUk9HKQotCQkJcGFuaWMoImJ1ZndyaXRl
OiBzdGlsbCB3cml0aW5nIik7CisJCQlQQU5JQygic3RpbGwgd3JpdGluZyIpOwogCX0KIAlC
T19VTkxPQ0soYnAtPmJfYnVmb2JqKTsKIApAQCAtMjE1Miw3ICsyMTUxLDcgQEAgZmZzX2dl
b21fc3RyYXRlZ3koc3RydWN0IGJ1Zm9iaiAqYm8sIHN0cnVjdCBidWYgKmJwKQogCQlpZiAo
KGJwLT5iX2ZsYWdzICYgQl9WQUxJRFNVU1BXUlQpID09IDAgJiYKIAkJICAgIGJwLT5iX3Zw
ICE9IE5VTEwgJiYgYnAtPmJfdnAtPnZfbW91bnQgIT0gTlVMTCAmJgogCQkgICAgKGJwLT5i
X3ZwLT52X21vdW50LT5tbnRfa2Vybl9mbGFnICYgTU5US19TVVNQRU5ERUQpICE9IDApCi0J
CQlwYW5pYygiZmZzX2dlb21fc3RyYXRlZ3k6IGJhZCBJL08iKTsKKwkJCVBBTklDKCJiYWQg
SS9PIik7CiAJCW5vY29weSA9IGJwLT5iX2ZsYWdzICYgQl9OT0NPUFk7CiAJCWJwLT5iX2Zs
YWdzICY9IH4oQl9WQUxJRFNVU1BXUlQgfCBCX05PQ09QWSk7CiAJCWlmICgodnAtPnZfdmZs
YWcgJiBWVl9DT1BZT05XUklURSkgJiYgbm9jb3B5ID09IDAgJiYKZGlmZiAtLWdpdCBhL3N5
cy91ZnMvZmZzL2Zmc192bm9wcy5jIGIvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMKaW5kZXgg
NWM5OWQ1Yi4uYmUyYjNjYiAxMDA2NDQKLS0tIGEvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMK
KysrIGIvc3lzL3Vmcy9mZnMvZmZzX3Zub3BzLmMKQEAgLTI1NywxMiArMjU3LDEyIEBAIGxv
b3A6CiAJCSAgICBsYm5fbGV2ZWwoYnAtPmJfbGJsa25vKSA+PSBwYXNzZXMpCiAJCQljb250
aW51ZTsKIAkJaWYgKGJwLT5iX2xibGtubyA+IGxibikKLQkJCXBhbmljKCJmZnNfc3luY3Zu
b2RlOiBzeW5jaW5nIHRydW5jYXRlZCBkYXRhLiIpOworCQkJUEFOSUMoInN5bmNpbmcgdHJ1
bmNhdGVkIGRhdGEuIik7CiAJCWlmIChCVUZfTE9DSyhicCwgTEtfRVhDTFVTSVZFIHwgTEtf
Tk9XQUlULCBOVUxMKSkKIAkJCWNvbnRpbnVlOwogCQlCT19VTkxPQ0soYm8pOwogCQlpZiAo
KGJwLT5iX2ZsYWdzICYgQl9ERUxXUkkpID09IDApCi0JCQlwYW5pYygiZmZzX2ZzeW5jOiBu
b3QgZGlydHkiKTsKKwkJCVBBTklDKCJub3QgZGlydHkiKTsKIAkJLyoKIAkJICogQ2hlY2sg
Zm9yIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsbHkgY29tcGxldGUgdGhlbS4KIAkJICov
CkBAIC00MzcsNyArNDM3LDcgQEAgZmZzX3JlYWQoYXApCiAjaWZkZWYgbm90eWV0CiAJCXJl
dHVybiAoZmZzX2V4dHJlYWQodnAsIHVpbywgaW9mbGFnKSk7CiAjZWxzZQotCQlwYW5pYygi
ZmZzX3JlYWQrSU9fRVhUIik7CisJCVBBTklDKCJJT19FWFQiKTsKICNlbmRpZgogI2lmZGVm
IERJUkVDVElPCiAJaWYgKChpb2ZsYWcgJiBJT19ESVJFQ1QpICE9IDApIHsKQEAgLTQ1NCwx
MyArNDU0LDEzIEBAIGZmc19yZWFkKGFwKQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh1
aW8tPnVpb19ydyAhPSBVSU9fUkVBRCkKLQkJcGFuaWMoImZmc19yZWFkOiBtb2RlIik7CisJ
CVBBTklDKCJtb2RlIik7CiAKIAlpZiAodnAtPnZfdHlwZSA9PSBWTE5LKSB7CiAJCWlmICgo
aW50KWlwLT5pX3NpemUgPCB2cC0+dl9tb3VudC0+bW50X21heHN5bWxpbmtsZW4pCi0JCQlw
YW5pYygiZmZzX3JlYWQ6IHNob3J0IHN5bWxpbmsiKTsKKwkJCVBBTklDKCJzaG9ydCBzeW1s
aW5rIik7CiAJfSBlbHNlIGlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAh
PSBWRElSKQotCQlwYW5pYygiZmZzX3JlYWQ6IHR5cGUgJWQiLCAgdnAtPnZfdHlwZSk7CisJ
CVBBTklDKCJ0eXBlICVkIiwgIHZwLT52X3R5cGUpOwogI2VuZGlmCiAJb3JpZ19yZXNpZCA9
IHVpby0+dWlvX3Jlc2lkOwogCUtBU1NFUlQob3JpZ19yZXNpZCA+PSAwLCAoImZmc19yZWFk
OiB1aW8tPnVpb19yZXNpZCA8IDAiKSk7CkBAIC02NTAsNyArNjUwLDcgQEAgZmZzX3dyaXRl
KGFwKQogI2lmZGVmIG5vdHlldAogCQlyZXR1cm4gKGZmc19leHR3cml0ZSh2cCwgdWlvLCBp
b2ZsYWcsIGFwLT5hX2NyZWQpKTsKICNlbHNlCi0JCXBhbmljKCJmZnNfd3JpdGUrSU9fRVhU
Iik7CisJCVBBTklDKCJJT19FWFQiKTsKICNlbmRpZgogCiAJc2VxY291bnQgPSBhcC0+YV9p
b2ZsYWcgPj4gSU9fU0VRU0hJRlQ7CkBAIC02NTgsNyArNjU4LDcgQEAgZmZzX3dyaXRlKGFw
KQogCiAjaWZkZWYgSU5WQVJJQU5UUwogCWlmICh1aW8tPnVpb19ydyAhPSBVSU9fV1JJVEUp
Ci0JCXBhbmljKCJmZnNfd3JpdGU6IG1vZGUiKTsKKwkJUEFOSUMoIm1vZGUiKTsKICNlbmRp
ZgogCiAJc3dpdGNoICh2cC0+dl90eXBlKSB7CkBAIC02NzEsMTAgKzY3MSwxMCBAQCBmZnNf
d3JpdGUoYXApCiAJY2FzZSBWTE5LOgogCQlicmVhazsKIAljYXNlIFZESVI6Ci0JCXBhbmlj
KCJmZnNfd3JpdGU6IGRpciB3cml0ZSIpOworCQlQQU5JQygiZGlyIHdyaXRlIik7CiAJCWJy
ZWFrOwogCWRlZmF1bHQ6Ci0JCXBhbmljKCJmZnNfd3JpdGU6IHR5cGUgJXAgJWQgKCVkLCVk
KSIsIHZwLCAoaW50KXZwLT52X3R5cGUsCisJCVBBTklDKCJ0eXBlICVwICVkICglZCwlZCki
LCB2cCwgKGludCl2cC0+dl90eXBlLAogCQkJKGludCl1aW8tPnVpb19vZmZzZXQsCiAJCQko
aW50KXVpby0+dWlvX3Jlc2lkCiAJCSk7CkBAIC04ODYsNyArODg2LDcgQEAgZmZzX2V4dHJl
YWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCiAj
aWZkZWYgSU5WQVJJQU5UUwogCWlmICh1aW8tPnVpb19ydyAhPSBVSU9fUkVBRCB8fCBmcy0+
ZnNfbWFnaWMgIT0gRlNfVUZTMl9NQUdJQykKLQkJcGFuaWMoImZmc19leHRyZWFkOiBtb2Rl
Iik7CisJCVBBTklDKCJtb2RlIik7CiAKICNlbmRpZgogCW9yaWdfcmVzaWQgPSB1aW8tPnVp
b19yZXNpZDsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIGZmc19leHR3cml0ZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcsIHN0cnVjdCB1Y3JlZCAqdWNy
ZWQpCiAKICNpZmRlZiBJTlZBUklBTlRTCiAJaWYgKHVpby0+dWlvX3J3ICE9IFVJT19XUklU
RSB8fCBmcy0+ZnNfbWFnaWMgIT0gRlNfVUZTMl9NQUdJQykKLQkJcGFuaWMoImZmc19leHR3
cml0ZTogbW9kZSIpOworCQlQQU5JQygibW9kZSIpOwogI2VuZGlmCiAKIAlpZiAoaW9mbGFn
ICYgSU9fQVBQRU5EKQpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgc3RydWN0IHZvcF9zdHJhdGVn
eV9hcmdzIHsKIAkJcmV0dXJuIChWT1BfU1RSQVRFR1lfQVBWKCZ1ZnNfdm5vZGVvcHMsIGFw
KSk7CiAJaWYgKHZwLT52X3R5cGUgPT0gVkZJRk8pCiAJCXJldHVybiAoVk9QX1NUUkFURUdZ
X0FQVigmdWZzX2ZpZm9vcHMsIGFwKSk7Ci0JcGFuaWMoInNwZWMgbm9kZXMgd2VudCBoZXJl
Iik7CisJUEFOSUMoInNwZWMgbm9kZXMgd2VudCBoZXJlIik7CiB9CiAKIC8qCi0tIAoxLjgu
MS4yCgo=
--------------080109060307080707080700
Content-Type: text/plain; charset=UTF-8;
 name="0006-ufs-Remove-extra-n-at-end-of-panic-messages.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="0006-ufs-Remove-extra-n-at-end-of-panic-messages.patch"

RnJvbSA3MWQ2ZTIwNmEzODM4ZDBmYzQxY2RiNGJjN2JmZWJjM2FmMGI5MzQ2IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGggTWFsbG9uIDxjaHJpc3RvcGgubWFs
bG9uQGdteC5kZT4KRGF0ZTogU3VuLCAzIEZlYiAyMDEzIDEyOjA3OjE4ICswMTAwClN1Ympl
Y3Q6IFtQQVRDSCA2LzZdIHVmczogUmVtb3ZlIGV4dHJhIFxuIGF0IGVuZCBvZiBwYW5pYyBt
ZXNzYWdlcy4KCi0tLQogc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYyB8IDIzICsrKysrKysr
KysrLS0tLS0tLS0tLS0tCiBzeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgIHwgIDQgKystLQog
c3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDE0
IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N5cy91ZnMv
ZmZzL2Zmc19zb2Z0ZGVwLmMgYi9zeXMvdWZzL2Zmcy9mZnNfc29mdGRlcC5jCmluZGV4IDQ4
ZDgwNzMuLjg3YjZkYTggMTAwNjQ0Ci0tLSBhL3N5cy91ZnMvZmZzL2Zmc19zb2Z0ZGVwLmMK
KysrIGIvc3lzL3Vmcy9mZnMvZmZzX3NvZnRkZXAuYwpAQCAtNDE1MSwxNCArNDE1MSwxNCBA
QCBmcmVlX2phZGRyZWYoamFkZHJlZikKIAlpZiAoKGphZGRyZWYtPmphX3N0YXRlICYgQUxM
Q09NUExFVEUpICE9IEFMTENPTVBMRVRFKQogCQlyZXR1cm47CiAJaWYgKGphZGRyZWYtPmph
X3JlZi5pZl9qc2VnZGVwKQotCQlQQU5JQygic2VnZGVwIGF0dGFjaGVkIHRvIGphZGRyZWYg
JXAoMHglWClcbiIsCisJCVBBTklDKCJzZWdkZXAgYXR0YWNoZWQgdG8gamFkZHJlZiAlcCgw
eCVYKSIsCiAJCSAgICBqYWRkcmVmLCBqYWRkcmVmLT5qYV9zdGF0ZSk7CiAJaWYgKGphZGRy
ZWYtPmphX3N0YXRlICYgTkVXQkxPQ0spCiAJCUxJU1RfUkVNT1ZFKGphZGRyZWYsIGphX2Jt
ZGVwcyk7CiAJaWYgKGphZGRyZWYtPmphX3N0YXRlICYgKElOUFJPR1JFU1MgfCBPTldPUktM
SVNUKSkKIAkJUEFOSUMoIkJhZCBzdGF0ZSAlcCgweCVYKSIsIGphZGRyZWYsIGphZGRyZWYt
PmphX3N0YXRlKTsKIAlpZiAoamFkZHJlZi0+amFfbWtkaXIgIT0gTlVMTCkKLQkJUEFOSUMo
IldvcmsgcGVuZGluZywgMHglWFxuIiwgamFkZHJlZi0+amFfc3RhdGUpOworCQlQQU5JQygi
V29yayBwZW5kaW5nLCAweCVYIiwgamFkZHJlZi0+amFfc3RhdGUpOwogCVdPUktJVEVNX0ZS
RUUoamFkZHJlZiwgRF9KQUREUkVGKTsKIH0KIApAQCAtNTE3OCw3ICs1MTc4LDcgQEAgam5l
d2Jsa19tZXJnZShuZXcsIG9sZCwgd2toZCkKIAkJcmV0dXJuIChvbGQpOwogCX0KIAlpZiAo
b2xkLT53a190eXBlICE9IERfSk5FV0JMSyB8fCBuZXctPndrX3R5cGUgIT0gRF9KTkVXQkxL
KQotCQlQQU5JQygiQmFkIHR5cGU6IG9sZCAlZCBuZXcgJWRcbiIsIG9sZC0+d2tfdHlwZSwg
bmV3LT53a190eXBlKTsKKwkJUEFOSUMoIkJhZCB0eXBlOiBvbGQgJWQgbmV3ICVkIiwgb2xk
LT53a190eXBlLCBuZXctPndrX3R5cGUpOwogCS8qCiAJICogSGFuZGxlIG1lcmdpbmcgb2Yg
dHdvIGpuZXdibGsgcmVjb3JkcyB0aGF0IGRlc2NyaWJlCiAJICogZGlmZmVyZW50IHNldHMg
b2YgZnJhZ21lbnRzIGluIHRoZSBzYW1lIGJsb2NrLgpAQCAtNTM4Nyw4ICs1Mzg3LDcgQEAg
aGFuZGxlX3dvcmtpdGVtX2ZyZWVmcmFnKGZyZWVmcmFnKQogCSAqLwogCWlmIChmcmVlZnJh
Zy0+ZmZfamRlcCkgewogCQlpZiAoZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUgIT0gRF9K
TkVXQkxLKQotCQkJUEFOSUMoIlVuZXhwZWN0ZWQgdHlwZSAlZFxuIiwKLQkJCSAgICBmcmVl
ZnJhZy0+ZmZfamRlcC0+d2tfdHlwZSk7CisJCQlQQU5JQygiVW5leHBlY3RlZCB0eXBlICVk
IiwgZnJlZWZyYWctPmZmX2pkZXAtPndrX3R5cGUpOwogCQljYW5jZWxfam5ld2JsayhXS19K
TkVXQkxLKGZyZWVmcmFnLT5mZl9qZGVwKSwgJndraGQpOwogCX0KIAlGUkVFX0xPQ0soJmxr
KTsKQEAgLTgyMTQsNyArODIxMyw3IEBAIHNvZnRkZXBfc2V0dXBfZGlyZWN0b3J5X2FkZChi
cCwgZHAsIGRpcm9mZnNldCwgbmV3aW51bSwgbmV3ZGlyYnAsIGlzbmV3YmxrKQogCXBhZ2Vk
ZXBfbG9va3VwKG1wLCBicCwgZHAtPmlfbnVtYmVyLCBsYm4sIERFUEFMTE9DLCAmcGFnZWRl
cCk7CiAjaWZkZWYgREVCVUcKIAlpZiAoZGlyYWRkX2xvb2t1cChwYWdlZGVwLCBvZmZzZXQp
ICE9IE5VTEwpCi0JCVBBTklDKCIlcCBhbHJlYWR5IGF0IG9mZiAlZFxuIiwKKwkJUEFOSUMo
IiVwIGFscmVhZHkgYXQgb2ZmICVkIiwKIAkJICAgIGRpcmFkZF9sb29rdXAocGFnZWRlcCwg
b2Zmc2V0KSwgb2Zmc2V0KTsKICNlbmRpZgogCWRhcC0+ZGFfcGFnZWRlcCA9IHBhZ2VkZXA7
CkBAIC04NzM0LDcgKzg3MzMsNyBAQCBjYW5jZWxfbWtkaXJfZG90ZG90KGlwLCBkaXJyZW0s
IGpyZW1yZWYpCiAJCWlmIChta2Rpci0+bWRfZGlyYWRkID09IGRhcCAmJiBta2Rpci0+bWRf
c3RhdGUgJiBNS0RJUl9QQVJFTlQpCiAJCQlicmVhazsKIAlpZiAobWtkaXIgPT0gTlVMTCkK
LQkJUEFOSUMoIlVuYWJsZSB0byBmaW5kIG1rZGlyXG4iKTsKKwkJUEFOSUMoIlVuYWJsZSB0
byBmaW5kIG1rZGlyIik7CiAJaWYgKChqYWRkcmVmID0gbWtkaXItPm1kX2phZGRyZWYpICE9
IE5VTEwpIHsKIAkJbWtkaXItPm1kX2phZGRyZWYgPSBOVUxMOwogCQlqYWRkcmVmLT5qYV9z
dGF0ZSAmPSB+TUtESVJfUEFSRU5UOwpAQCAtODkyNiw3ICs4OTI1LDcgQEAgbmV3ZGlycmVt
KGJwLCBkcCwgaXAsIGlzcm1kaXIsIHByZXZkaXJyZW1wKQogCiAJCUxJU1RfRk9SRUFDSCh3
aywgJmRpcnJlbS0+ZG1fandvcmssIHdrX2xpc3QpCiAJCQlpZiAod2stPndrX3N0YXRlICYg
KE1LRElSX0JPRFkgfCBNS0RJUl9QQVJFTlQpKQotCQkJCVBBTklDKCJiYWQgd2sgJXAgKDB4
JVgpXG4iLCB3aywgd2stPndrX3N0YXRlKTsKKwkJCQlQQU5JQygiYmFkIHdrICVwICgweCVY
KSIsIHdrLCB3ay0+d2tfc3RhdGUpOwogCX0KICNlbmRpZgogCkBAIC05MjUzLDcgKzkyNTIs
NyBAQCB1bmxpbmtlZF9pbm9kZWRlcChtcCwgaW5vZGVkZXApCiAJdW1wID0gVkZTVE9VRlMo
bXApOwogCXVtcC0+dW1fZnMtPmZzX2Ztb2QgPSAxOwogCWlmIChpbm9kZWRlcC0+aWRfc3Rh
dGUgJiBVTkxJTktFRCkKLQkJUEFOSUMoIiVwIGFscmVhZHkgdW5saW5rZWRcbiIsIGlub2Rl
ZGVwKTsKKwkJUEFOSUMoIiVwIGFscmVhZHkgdW5saW5rZWQiLCBpbm9kZWRlcCk7CiAJaW5v
ZGVkZXAtPmlkX3N0YXRlIHw9IFVOTElOS0VEOwogCVRBSUxRX0lOU0VSVF9IRUFEKCZ1bXAt
PnNvZnRkZXBfdW5saW5rZWQsIGlub2RlZGVwLCBpZF91bmxpbmtlZCk7CiB9CkBAIC0xMDYy
Myw3ICsxMDYyMiw3IEBAIHNvZnRkZXBfZGlza193cml0ZV9jb21wbGV0ZShicCkKIAkJV09S
S0xJU1RfUkVNT1ZFKHdrKTsKIAkJZGVwX3dyaXRlW3drLT53a190eXBlXSsrOwogCQlpZiAo
d2sgPT0gb3drKQotCQkJUEFOSUMoImR1cGxpY2F0ZSB3b3JrbGlzdDogJXBcbiIsIHdrKTsK
KwkJCVBBTklDKCJkdXBsaWNhdGUgd29ya2xpc3Q6ICVwIiwgd2spOwogCQlvd2sgPSB3azsK
IAkJc3dpdGNoICh3ay0+d2tfdHlwZSkgewogCkBAIC0xMDg1MSw3ICsxMDg1MCw3IEBAIGhh
bmRsZV9qd29yayh3a2hkKQogCQkJaGFuZGxlX3dyaXR0ZW5fZnJlZXdvcmsoV0tfRlJFRVdP
Uksod2spKTsKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgotCQkJUEFOSUMoIlVua25vd24g
dHlwZSAlc1xuIiwgVFlQRU5BTUUod2stPndrX3R5cGUpKTsKKwkJCVBBTklDKCJVbmtub3du
IHR5cGUgJXMiLCBUWVBFTkFNRSh3ay0+d2tfdHlwZSkpOwogCQl9CiAJfQogfQpAQCAtMTEz
OTMsNyArMTEzOTIsNyBAQCBoYW5kbGVfd3JpdHRlbl9ibXNhZmVtYXAoYm1zYWZlbWFwLCBi
cCkKIAlpbnQgY2hnczsKIAogCWlmICgoYm1zYWZlbWFwLT5zbV9zdGF0ZSAmIElPU1RBUlRF
RCkgPT0gMCkKLQkJUEFOSUMoIk5vdCBzdGFydGVkXG4iKTsKKwkJUEFOSUMoIk5vdCBzdGFy
dGVkIik7CiAJdW1wID0gVkZTVE9VRlMoYm1zYWZlbWFwLT5zbV9saXN0LndrX21wKTsKIAlj
aGdzID0gMDsKIAlibXNhZmVtYXAtPnNtX3N0YXRlICY9IH5JT1NUQVJURUQ7CmRpZmYgLS1n
aXQgYS9zeXMvdWZzL3Vmcy91ZnNfbG9va3VwLmMgYi9zeXMvdWZzL3Vmcy91ZnNfbG9va3Vw
LmMKaW5kZXggMTc2Yzg3OS4uYmVmOTgyMiAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZz
X2xvb2t1cC5jCisrKyBiL3N5cy91ZnMvdWZzL3Vmc19sb29rdXAuYwpAQCAtMTIxMSw3ICsx
MjExLDcgQEAgdWZzX2RpcnJlbW92ZShkdnAsIGlwLCBmbGFncywgaXNybWRpcikKIAkJdWZz
ZGlyaGFzaF9yZW1vdmUoZHAsIHJlcCwgZHAtPmlfb2Zmc2V0KTsKICNlbmRpZgogCWlmIChp
cCAmJiByZXAtPmRfaW5vICE9IGlwLT5pX251bWJlcikKLQkJUEFOSUMoImlwICVqdSBkb2Vz
IG5vdCBtYXRjaCBkaXJlbnQgaW5vICVqdVxuIiwKKwkJUEFOSUMoImlwICVqdSBkb2VzIG5v
dCBtYXRjaCBkaXJlbnQgaW5vICVqdSIsCiAJCSAgICAodWludG1heF90KWlwLT5pX251bWJl
ciwgKHVpbnRtYXhfdClyZXAtPmRfaW5vKTsKIAlpZiAoZHAtPmlfY291bnQgPT0gMCkgewog
CQkvKgpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgdWZzX2NoZWNrcGF0aChpbm9fdCBzb3VyY2Vf
aW5vLCBpbm9fdCBwYXJlbnRfaW5vLCBzdHJ1Y3QgaW5vZGUgKnRhcmdldCwgc3RydWN0IHUK
IAl9CiAKIAlpZiAoZXJyb3IgPT0gRU5PVERJUikKLQkJUEFOSUMoIi4uIG5vdCBhIGRpcmVj
dG9yeVxuIik7CisJCVBBTklDKCIuLiBub3QgYSBkaXJlY3RvcnkiKTsKIAlpZiAodnAgIT0g
dHZwKQogCQl2cHV0KHZwKTsKIAlyZXR1cm4gKGVycm9yKTsKZGlmZiAtLWdpdCBhL3N5cy91
ZnMvdWZzL3Vmc192bm9wcy5jIGIvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKaW5kZXggNjI0
MDE5MC4uZmE1YzhkNCAxMDA2NDQKLS0tIGEvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKKysr
IGIvc3lzL3Vmcy91ZnMvdWZzX3Zub3BzLmMKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHJlbG9j
azoKIAkJaWYgKGVycm9yKQogCQkJUEFOSUMoImZyb20gZW50cnkgd2VudCBhd2F5ISIpOwog
CQlpZiAoaW5vICE9IGZpcC0+aV9udW1iZXIpCi0JCQlQQU5JQygiaW5vIG1pc21hdGNoICVq
dSAhPSAlanVcbiIsCisJCQlQQU5JQygiaW5vIG1pc21hdGNoICVqdSAhPSAlanUiLAogCQkJ
ICAgICh1aW50bWF4X3QpaW5vLCAodWludG1heF90KWZpcC0+aV9udW1iZXIpOwogCX0KIAkv
KgotLSAKMS44LjEuMgoK
--------------080109060307080707080700--
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
 This is a multi-part message in MIME format.
 --------------080109060307080707080700
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 7bit
 


More information about the freebsd-bugs mailing list