Re: Linux-2.0.33 out there..

Michael L. Galbraith (mikeg@weiden.de)
Thu, 18 Dec 1997 17:01:50 +0100 (MET)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---876492614-56553521-882460910=:5589
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 18 Dec 1997, Alan Cox wrote:

> > Thanks for the new kernel release.
> >
> > > - routing memory leak fix
> >
> > It seems that linux-2.0.33 is crushed by mrouted-3.9-beta.
> > Does linux-2.0.33 still have the memory leak problem by multicast routing ?
>
> It may do. If so Ingo Molnar now has a very very good memory leak detector
> which will help no end.
>
> Alan
>
>

Speaking of which..

Hi Alan, hackers,

I've been asked to maintain the package. I'm attaching the 2.1.72.eval
version in hopes that someone(s) will critique it. If this cut is 'ok'
I'll backport to 2.1.33 and try to find a home for the package.

[how big is just too big to drop to the list?]

I'm particularly interested (read concerned) in comments concerning
ptable.h changes. I haven't cycle counted them, but they don't seeem
to be expensive (Bonnie/lmbench/and pgcc -O9 -fno-inline-functions for
no good reason other than to see if it would go KAABOOPS :).

Fretting Bullets,

-mike

---876492614-56553521-882460910=:5589
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="memleak-2.1.72-deluxe.eval"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.971218170150.5589B@mikeg.weiden.de>
Content-Description:

ZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12aXJnaW4vYXJjaC9pMzg2L2NvbmZp
Zy5pbiBsaW51eC0yLjEuNzItbWVtbGVhay9hcmNoL2kzODYvY29uZmlnLmlu
DQotLS0gbGludXgtMi4xLjcyLXZpcmdpbi9hcmNoL2kzODYvY29uZmlnLmlu
CVNhdCBEZWMgIDYgMDQ6NDk6MDQgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1t
ZW1sZWFrL2FyY2gvaTM4Ni9jb25maWcuaW4JU2F0IERlYyAgNiAwNTo1NTox
MiAxOTk3DQpAQCAtMTM5LDQgKzEzOSw1IEBADQogICBpbnQgJyBQcm9maWxl
IHNoaWZ0IGNvdW50JyBDT05GSUdfUFJPRklMRV9TSElGVCAyDQogZmkNCiBi
b29sICdNYWdpYyBTeXNScSBrZXknIENPTkZJR19NQUdJQ19TWVNSUQ0KK2Jv
b2wgJ0tlcm5lbCBtZW1vcnkgbGVhayBkZXRlY3Rpb24gc3VwcG9ydCcgQ09O
RklHX01FTUxFQUsgbg0KIGVuZG1lbnUNCmRpZmYgLXVyTiBsaW51eC0yLjEu
NzItdmlyZ2luL2FyY2gvaTM4Ni9rZXJuZWwvdHJhcHMuYyBsaW51eC0yLjEu
NzItbWVtbGVhay9hcmNoL2kzODYva2VybmVsL3RyYXBzLmMNCi0tLSBsaW51
eC0yLjEuNzItdmlyZ2luL2FyY2gvaTM4Ni9rZXJuZWwvdHJhcHMuYwlUdWUg
RGVjICAyIDA3OjE2OjE0IDE5OTcNCisrKyBsaW51eC0yLjEuNzItbWVtbGVh
ay9hcmNoL2kzODYva2VybmVsL3RyYXBzLmMJU3VuIERlYyAxNCAwMzo1Njoy
NCAxOTk3DQpAQCAtMTE1LDcgKzExNSw5IEBADQogICogc2VnbWVudHMuICBW
TUFMTE9DX09GRlNFVCBjb21lcyBmcm9tIG1tL3ZtYWxsb2MuYzsgTU9EVUxF
X1JBTkdFIGlzDQogICogYSBndWVzcyBvZiBob3cgbXVjaCBzcGFjZSBpcyBs
aWtlbHkgdG8gYmUgdm1hbGxvY2VkLg0KICAqLw0KKyNpZm5kZWYgQ09ORklH
X01FTUxFQUsNCiAjZGVmaW5lIFZNQUxMT0NfT0ZGU0VUICg4KjEwMjQqMTAy
NCkNCisjZW5kaWYNCiAjZGVmaW5lIE1PRFVMRV9SQU5HRSAoOCoxMDI0KjEw
MjQpDQogDQogc3RhdGljIHZvaWQgc2hvd19yZWdpc3RlcnMoc3RydWN0IHB0
X3JlZ3MgKnJlZ3MpDQpkaWZmIC11ck4gbGludXgtMi4xLjcyLXZpcmdpbi9h
cmNoL2kzODYvbW0vaW5pdC5jIGxpbnV4LTIuMS43Mi1tZW1sZWFrL2FyY2gv
aTM4Ni9tbS9pbml0LmMNCi0tLSBsaW51eC0yLjEuNzItdmlyZ2luL2FyY2gv
aTM4Ni9tbS9pbml0LmMJVGh1IE9jdCAyMyAxMTozNzo0NyAxOTk3DQorKysg
bGludXgtMi4xLjcyLW1lbWxlYWsvYXJjaC9pMzg2L21tL2luaXQuYwlTYXQg
RGVjICA2IDA1OjUyOjMyIDE5OTcNCkBAIC0zNjcsNyArMzY3LDExIEBADQog
CQlpZiAoIWluaXRyZF9zdGFydCB8fCAodG1wIDwgaW5pdHJkX3N0YXJ0IHx8
IHRtcCA+PQ0KIAkJICAgIGluaXRyZF9lbmQpKQ0KICNlbmRpZg0KKyNpZm5k
ZWYgQ09ORklHX01FTUxFQUsNCiAJCQlmcmVlX3BhZ2UodG1wKTsNCisjZWxz
ZQ0KKwkJCXJlYWxfZnJlZV9wYWdlcyh0bXAsMCk7DQorI2VuZGlmDQogCX0N
CiAJcHJpbnRrKCJNZW1vcnk6ICVsdWsvJWx1ayBhdmFpbGFibGUgKCVkayBr
ZXJuZWwgY29kZSwgJWRrIHJlc2VydmVkLCAlZGsgZGF0YSwgJWRrIGluaXQp
XG4iLA0KIAkJKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfcGFnZXMgPDwgKFBB
R0VfU0hJRlQtMTApLA0KQEAgLTM4OSw3ICszOTMsMTEgQEANCiAJZm9yICg7
IGFkZHIgPCAodW5zaWduZWQgbG9uZykoJl9faW5pdF9lbmQpOyBhZGRyICs9
IFBBR0VfU0laRSkgew0KIAkJbWVtX21hcFtNQVBfTlIoYWRkcildLmZsYWdz
ICY9IH4oMSA8PCBQR19yZXNlcnZlZCk7DQogCQlhdG9taWNfc2V0KCZtZW1f
bWFwW01BUF9OUihhZGRyKV0uY291bnQsIDEpOw0KKyNpZm5kZWYgQ09ORklH
X01FTUxFQUsNCiAJCWZyZWVfcGFnZShhZGRyKTsNCisjZWxzZQ0KKwkJcmVh
bF9mcmVlX3BhZ2VzKGFkZHIsMCk7DQorI2VuZGlmDQogCX0NCiAJcHJpbnRr
ICgiRnJlZWluZyB1bnVzZWQga2VybmVsIG1lbW9yeTogJWRrIGZyZWVkXG4i
LCAoJl9faW5pdF9lbmQgLSAmX19pbml0X2JlZ2luKSA+PiAxMCk7DQogfQ0K
ZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12aXJnaW4vZnMvcHJvYy9yb290LmMg
bGludXgtMi4xLjcyLW1lbWxlYWsvZnMvcHJvYy9yb290LmMNCi0tLSBsaW51
eC0yLjEuNzItdmlyZ2luL2ZzL3Byb2Mvcm9vdC5jCVRodSBPY3QgMjMgMTE6
Mzg6NTEgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1sZWFrL2ZzL3Byb2Mv
cm9vdC5jCVNhdCBEZWMgIDYgMDU6NTY6MTMgMTk5Nw0KQEAgLTQwOSw2ICs0
MDksMTQgQEANCiAJTlVMTAkJCS8qIHBlcm1pc3Npb24gKi8NCiB9Ow0KIA0K
KyNpZmRlZiBDT05GSUdfTUVNTEVBSw0KK3N0YXRpYyBzdHJ1Y3QgcHJvY19k
aXJfZW50cnkgcHJvY19yb290X21lbWxlYWsgPSB7DQorCVBST0NfTUVNTEVB
SywgNywgIm1lbWxlYWsiLA0KKwlTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdV
U1IsIDEsIDAsIDAsDQorCTAsICZwcm9jX21lbWxlYWtfaW5vZGVfb3BlcmF0
aW9ucw0KK307DQorI2VuZGlmDQorDQogc3RhdGljIHN0cnVjdCBwcm9jX2Rp
cl9lbnRyeSBwcm9jX3Jvb3RfbG9hZGF2ZyA9IHsNCiAJUFJPQ19MT0FEQVZH
LCA3LCAibG9hZGF2ZyIsDQogCVNfSUZSRUcgfCBTX0lSVUdPLCAxLCAwLCAw
LA0KQEAgLTY0NSw2ICs2NTMsMTAgQEANCiAJcHJvY19yZWdpc3RlcigmcHJv
Y19yb290LCAmcHJvY19yb290X2hhcmR3YXJlKTsNCiAjZW5kaWYNCiAJcHJv
Y19yZWdpc3RlcigmcHJvY19yb290LCAmcHJvY19yb290X3NsYWIpOw0KKw0K
KyNpZmRlZiBDT05GSUdfTUVNTEVBSw0KKwlwcm9jX3JlZ2lzdGVyKCZwcm9j
X3Jvb3QsICZwcm9jX3Jvb3RfbWVtbGVhayk7DQorI2VuZGlmDQogDQogCWlm
IChwcm9mX3NoaWZ0KSB7DQogCQlwcm9jX3JlZ2lzdGVyKCZwcm9jX3Jvb3Qs
ICZwcm9jX3Jvb3RfcHJvZmlsZSk7DQpkaWZmIC11ck4gbGludXgtMi4xLjcy
LXZpcmdpbi9pbmNsdWRlL2FzbS1pMzg2L3BndGFibGUuaCBsaW51eC0yLjEu
NzItbWVtbGVhay9pbmNsdWRlL2FzbS1pMzg2L3BndGFibGUuaA0KLS0tIGxp
bnV4LTIuMS43Mi12aXJnaW4vaW5jbHVkZS9hc20taTM4Ni9wZ3RhYmxlLmgJ
U3VuIE5vdiAzMCAwNDo1NTozOSAxOTk3DQorKysgbGludXgtMi4xLjcyLW1l
bWxlYWsvaW5jbHVkZS9hc20taTM4Ni9wZ3RhYmxlLmgJVGh1IERlYyAxOCAw
Nzo1MzoyOCAxOTk3DQpAQCAtMTg4LDcgKzE4OCwxMSBAQA0KICAqIFRoZSB2
bWFsbG9jKCkgcm91dGluZXMgbGVhdmVzIGEgaG9sZSBvZiA0a0IgYmV0d2Vl
biBlYWNoIHZtYWxsb2NlZA0KICAqIGFyZWEgZm9yIHRoZSBzYW1lIHJlYXNv
bi4gOykNCiAgKi8NCisjaWZuZGVmIENPTkZJR19NRU1MRUFLDQogI2RlZmlu
ZSBWTUFMTE9DX09GRlNFVAkoOCoxMDI0KjEwMjQpDQorI2Vsc2UNCisjZGVm
aW5lIFZNQUxMT0NfT0ZGU0VUICgxMjgqMTAyNCoxMDI0KQ0KKyNlbmRpZg0K
ICNkZWZpbmUgVk1BTExPQ19TVEFSVAkoKCh1bnNpZ25lZCBsb25nKSBoaWdo
X21lbW9yeSArIFZNQUxMT0NfT0ZGU0VUKSAmIH4oVk1BTExPQ19PRkZTRVQt
MSkpDQogI2RlZmluZSBWTUFMTE9DX1ZNQUREUih4KSAoKHVuc2lnbmVkIGxv
bmcpKHgpKQ0KIA0KQEAgLTM3OSw2ICszODMsNyBAQA0KIA0KIGV4dGVybiBj
b25zdCBjaGFyIGJhZF9wbWRfc3RyaW5nW107DQogDQorI2lmbmRlZiBDT05G
SUdfTUVNTEVBSw0KIGV4dGVybiBpbmxpbmUgcHRlX3QgKiBwdGVfYWxsb2Nf
a2VybmVsKHBtZF90ICogcG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpDQog
ew0KIAlhZGRyZXNzID0gKGFkZHJlc3MgPj4gUEFHRV9TSElGVCkgJiAoUFRS
U19QRVJfUFRFIC0gMSk7DQpAQCAtNDAxLDYgKzQwNiwzMyBAQA0KIAl9DQog
CXJldHVybiAocHRlX3QgKikgcG1kX3BhZ2UoKnBtZCkgKyBhZGRyZXNzOw0K
IH0NCisjZWxzZQ0KKyNkZWZpbmUgcHRlX2FsbG9jX2tlcm5lbChwbWQsIGFk
ZHJlc3MpICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorKHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwNCisJcHRlX3QgKnJldDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJdW5zaWduZWQg
bG9uZyBBRERSRVNTID0gKChhZGRyZXNzKSA+PiBQQUdFX1NISUZUKSAmIChQ
VFJTX1BFUl9QVEUgLSAxKTsgXA0KKwlpZiAocG1kX25vbmUoKihwbWQpKSkg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwkJ
cHRlX3QgKiBwYWdlID0gKHB0ZV90ICopIGdldF9mcmVlX3BhZ2UoR0ZQX0tF
Uk5FTCk7ICAgICAgIFwNCisJCWlmIChwbWRfbm9uZSgqKHBtZCkpKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCQkJaWYgKHBh
Z2UpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCisJCQkJcG1kX3ZhbCgqKHBtZCkpID0gX0tFUk5QR19UQUJMRSAr
IF9fcGEocGFnZSk7ICAgICAgIFwNCisJCQkJcmV0ID0gcGFnZSArIEFERFJF
U1M7IGdvdG8gb3V0OyAgICAgICAgICAgICAgICAgICAgIFwNCisJCQl9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXA0KKwkJCXBtZF92YWwoKihwbWQpKSA9IF9LRVJOUEdfVEFCTEUg
KyBfX3BhKEJBRF9QQUdFVEFCTEUpOyBcDQorCQkJcmV0ID0gTlVMTDsgZ290
byBvdXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJ
CX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcDQorCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcp
IHBhZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwl9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KKwlpZiAocG1kX2JhZCgqKHBtZCkpKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwkJcHJpbnRrKGJh
ZF9wbWRfc3RyaW5nLCBwbWRfdmFsKCoocG1kKSkpOyAgICAgICAgICAgICAg
ICAgIFwNCisJCXBtZF92YWwoKihwbWQpKSA9IF9LRVJOUEdfVEFCTEUgKyBf
X3BhKEJBRF9QQUdFVEFCTEUpOyAgICBcDQorCQlyZXQgPSBOVUxMOyBnb3Rv
IG91dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
Kwl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KKwlyZXQgPSAocHRlX3QgKikgcG1kX3Bh
Z2UoKihwbWQpKSArIEFERFJFU1M7ICAgICAgICAgICAgICAgICAgXA0KK291
dDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcDQorCXJldDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSkN
CisjZW5kaWYNCiANCiAvKg0KICAqIGFsbG9jYXRpbmcgYW5kIGZyZWVpbmcg
YSBwbWQgaXMgdHJpdmlhbDogdGhlIDEtZW50cnkgcG1kIGlzDQpAQCAtNDIx
LDYgKzQ1Myw3IEBADQogCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcHRl
KTsNCiB9DQogDQorI2lmbmRlZiBDT05GSUdfTUVNTEVBSw0KIGV4dGVybiBp
bmxpbmUgcHRlX3QgKiBwdGVfYWxsb2MocG1kX3QgKiBwbWQsIHVuc2lnbmVk
IGxvbmcgYWRkcmVzcykNCiB7DQogCWFkZHJlc3MgPSAoYWRkcmVzcyA+PiAo
UEFHRV9TSElGVC0yKSkgJiA0KihQVFJTX1BFUl9QVEUgLSAxKTsNCkBAIC00
NTMsNiArNDg2LDQzIEBADQogCXBtZF92YWwoKnBtZCkgPSBfUEFHRV9UQUJM
RSArIF9fcGEoQkFEX1BBR0VUQUJMRSk7DQogCXJldHVybiBOVUxMOw0KIH0N
CisjZWxzZQ0KKyNkZWZpbmUgcHRlX2FsbG9jKHBtZCwgYWRkcmVzcykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyh7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
KwlwdGVfdCAqcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwNCisJdW5zaWduZWQgbG9uZyBBRERSRVNTID0gKChh
ZGRyZXNzKSA+PiAoUEFHRV9TSElGVC0yKSkgJiA0KihQVFJTX1BFUl9QVEUg
LSAxKTsgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXA0KK3JlcGVhdDogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
KwlpZiAocG1kX25vbmUoKihwbWQpKSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwNCisJCWdvdG8gZ2V0bmV3OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwlpZiAocG1kX2JhZCgq
KHBtZCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN
CisJCWdvdG8gZml4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KKwlyZXQgPSAocHRlX3QgKikgKHBtZF9wYWdlKCoo
cG1kKSkgKyBBRERSRVNTKTsgZ290byBvdXQ7IFwNCisJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
DQorZ2V0bmV3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcDQoreyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCXVuc2ln
bmVkIGxvbmcgcGFnZSA9IF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsg
ICAgICAgXA0KKwlpZiAoIXBtZF9ub25lKCoocG1kKSkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwNCisJCWdvdG8gZnJlZW5ldzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwlpZiAo
IXBhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCisJCWdvdG8gb29tOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KKwltZW1zZXQoKHZvaWQgKikgcGFn
ZSwgMCwgUEFHRV9TSVpFKTsgICAgICAgICAgICAgICAgICAgIFwNCisJcG1k
X3ZhbCgqKHBtZCkpID0gX1BBR0VfVEFCTEUgKyBfX3BhKHBhZ2UpOyAgICAg
ICAgICAgICBcDQorCXJldCA9IChwdGVfdCAqKSAocGFnZSArIEFERFJFU1Mp
OyBnb3RvIG91dDsgICAgICAgICAgICAgXA0KK2ZyZWVuZXc6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
KwlmcmVlX3BhZ2UocGFnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwNCisJZ290byByZXBlYXQ7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQorZml4OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCXBy
aW50ayhiYWRfcG1kX3N0cmluZywgcG1kX3ZhbCgqKHBtZCkpKTsgICAgICAg
ICAgICAgICAgXA0KK29vbTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKwlwbWRfdmFsKCoocG1k
KSkgPSBfUEFHRV9UQUJMRSArIF9fcGEoQkFEX1BBR0VUQUJMRSk7ICAgIFwN
CisJcmV0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcDQorb3V0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCXJldDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXA0KK30pDQorI2VuZGlmDQogDQogLyoNCiAgKiBhbGxvY2F0aW5nIGFu
ZCBmcmVlaW5nIGEgcG1kIGlzIHRyaXZpYWw6IHRoZSAxLWVudHJ5IHBtZCBp
cw0KQEAgLTQ3MywxMCArNTQzLDE3IEBADQogCWZyZWVfcGFnZSgodW5zaWdu
ZWQgbG9uZykgcGdkKTsNCiB9DQogDQorI2lmbmRlZiBDT05GSUdfTUVNTEVB
Sw0KIGV4dGVybiBpbmxpbmUgcGdkX3QgKiBwZ2RfYWxsb2Modm9pZCkNCiB7
DQogCXJldHVybiAocGdkX3QgKikgZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVM
KTsNCiB9DQorI2Vsc2UNCisjZGVmaW5lIHBnZF9hbGxvYygpICAgICAgICAg
ICBcDQorKChwZ2RfdCAqKSh7ICAgICAgICAgICAgICAgICAgXA0KKwlnZXRf
ZnJlZV9wYWdlKEdGUF9LRVJORUwpOyBcDQorfSkpDQorI2VuZGlmDQogDQog
ZXh0ZXJuIHBnZF90IHN3YXBwZXJfcGdfZGlyWzEwMjRdOw0KIA0KZGlmZiAt
dXJOIGxpbnV4LTIuMS43Mi12aXJnaW4vaW5jbHVkZS9saW51eC9tbS5oIGxp
bnV4LTIuMS43Mi1tZW1sZWFrL2luY2x1ZGUvbGludXgvbW0uaA0KLS0tIGxp
bnV4LTIuMS43Mi12aXJnaW4vaW5jbHVkZS9saW51eC9tbS5oCVRodSBPY3Qg
MjMgMTE6Mzk6MDcgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1sZWFrL2lu
Y2x1ZGUvbGludXgvbW0uaAlNb24gRGVjIDE1IDAzOjIyOjAwIDE5OTcNCkBA
IC0yMzQsNiArMjM0LDE5IEBADQogDQogZXh0ZXJuIG1lbV9tYXBfdCAqIG1l
bV9tYXA7DQogDQorI2lmZGVmIENPTkZJR19NRU1MRUFLDQorLyoNCisgKiAn
YWxsb2NhdGlvbiBpZGVudGlmaWVyJyBmb3IgbWVtbGVhayBkZXRlY3Rpb24N
CisgKi8NCitzdHJ1Y3QgYWxsb2Nfc3RydWN0IHsNCisJaW50CWlkOw0KKwlj
aGFyCSpmaWxlOw0KKwlpbnQJbGluZTsNCit9Ow0KKw0KK2V4dGVybiB1bnNp
Z25lZCBsb25nIG1lbWxlYWtfaW5pdCAodW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZyk7DQorI2VuZGlmDQorDQogLyoNCiAgKiBUaGlzIGlzIHRpbWlu
Zy1jcml0aWNhbCAtIG1vc3Qgb2YgdGhlIHRpbWUgaW4gZ2V0dGluZyBhIG5l
dyBwYWdlDQogICogZ29lcyB0byBjbGVhcmluZyB0aGUgcGFnZS4gSWYgeW91
IHdhbnQgYSBwYWdlIHdpdGhvdXQgdGhlIGNsZWFyaW5nDQpAQCAtMjQxLDYg
KzI1NCw3IEBADQogICovDQogI2RlZmluZSBfX2dldF9mcmVlX3BhZ2UocHJp
b3JpdHkpIF9fZ2V0X2ZyZWVfcGFnZXMoKHByaW9yaXR5KSwwLDApDQogI2Rl
ZmluZSBfX2dldF9kbWFfcGFnZXMocHJpb3JpdHksIG9yZGVyKSBfX2dldF9m
cmVlX3BhZ2VzKChwcmlvcml0eSksKG9yZGVyKSwxKQ0KKyNpZm5kZWYgQ09O
RklHX01FTUxFQUsNCiBleHRlcm4gdW5zaWduZWQgbG9uZyBGQVNUQ0FMTChf
X2dldF9mcmVlX3BhZ2VzKGludCBwcmlvcml0eSwgdW5zaWduZWQgbG9uZyBn
ZnBvcmRlciwgaW50IGRtYSkpOw0KIA0KIGV4dGVybiBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBnZXRfZnJlZV9wYWdlKGludCBwcmlvcml0eSkNCkBAIC0yNTIs
MTIgKzI2Niw0MyBAQA0KIAkJY2xlYXJfcGFnZShwYWdlKTsNCiAJcmV0dXJu
IHBhZ2U7DQogfQ0KKyNlbHNlDQorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRkFT
VENBTEwoX19nZXRfZnJlZV9wYWdlc193cmFwcGVyKGludCBwcmlvcml0eSwN
CisJdW5zaWduZWQgbG9uZyBnZnBvcmRlciwgaW50IGRtYSwgc3RydWN0IGFs
bG9jX3N0cnVjdCAqIGlkKSk7DQorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRkFT
VENBTEwocmVhbF9fZ2V0X2ZyZWVfcGFnZXMoaW50IHByaW9yaXR5LA0KKwl1
bnNpZ25lZCBsb25nIGdmcG9yZGVyLCBpbnQgZG1hKSk7DQorI2RlZmluZSBf
X2dldF9mcmVlX3BhZ2VzKHByaW9yaXR5LGdmcG9yZGVyLGRtYSkJCQkJCVwN
CisoewkJCQkJCQkJCQlcDQorICAgICAgICBzdGF0aWMgc3RydWN0IGFsbG9j
X3N0cnVjdCBJRCA9IHsgMCwgX19GSUxFX18sIF9fTElORV9fIH07CQlcDQor
ICAgICAgICBfX2dldF9mcmVlX3BhZ2VzX3dyYXBwZXIocHJpb3JpdHksZ2Zw
b3JkZXIsZG1hLCZJRCk7CQkJXA0KK30pDQorDQorI2RlZmluZSBnZXRfZnJl
ZV9wYWdlKHByaW9yaXR5KQkJCQkJCQlcDQorKHsJCQkJCQkJCQkJXA0KKwl1
bnNpZ25lZCBsb25nIHBhZ2U7CQkJCQkJCVwNCisJCQkJCQkJCQkJXA0KKwlw
YWdlID0gX19nZXRfZnJlZV9wYWdlKHByaW9yaXR5KTsJCQkJCVwNCisJaWYg
KHBhZ2UpCQkJCQkJCQlcDQorCQltZW1zZXQoKHZvaWQgKikgcGFnZSwgMCwg
UEFHRV9TSVpFKTsJCQkJXA0KKwlwYWdlOwkJCQkJCQkJCVwNCit9KQ0KKyNl
bmRpZiAvKiBDT05GSUdfTUVNTEVBSyAqLw0KIA0KIC8qIG1lbW9yeS5jICYg
c3dhcC5jKi8NCiANCiAjZGVmaW5lIGZyZWVfcGFnZShhZGRyKSBmcmVlX3Bh
Z2VzKChhZGRyKSwwKQ0KKyNpZm5kZWYgQ09ORklHX01FTUxFQUsNCiBleHRl
cm4gdm9pZCBGQVNUQ0FMTChmcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRk
ciwgdW5zaWduZWQgbG9uZyBvcmRlcikpOw0KIGV4dGVybiB2b2lkIEZBU1RD
QUxMKF9fZnJlZV9wYWdlKHN0cnVjdCBwYWdlICopKTsNCisjZWxzZQ0KK2V4
dGVybiB2b2lkIEZBU1RDQUxMKGZyZWVfcGFnZXNfd3JhcHBlcih1bnNpZ25l
ZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgb3JkZXIpKTsNCitleHRlcm4g
dm9pZCBGQVNUQ0FMTChyZWFsX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBh
ZGRyLCB1bnNpZ25lZCBsb25nIG9yZGVyKSk7DQorI2RlZmluZSBmcmVlX3Bh
Z2VzKGFkZHIsb3JkZXIpIGZyZWVfcGFnZXNfd3JhcHBlcihhZGRyLG9yZGVy
KQ0KKw0KK2V4dGVybiB2b2lkIF9fZnJlZV9wYWdlX3dyYXBwZXIoc3RydWN0
IHBhZ2UgKik7DQorZXh0ZXJuIHZvaWQgcmVhbF9fZnJlZV9wYWdlKHN0cnVj
dCBwYWdlICopOw0KKyNkZWZpbmUgX19mcmVlX3BhZ2UocGFnZSkgX19mcmVl
X3BhZ2Vfd3JhcHBlcihwYWdlKQ0KKyNlbmRpZg0KIA0KIGV4dGVybiB2b2lk
IHNob3dfZnJlZV9hcmVhcyh2b2lkKTsNCiBleHRlcm4gdW5zaWduZWQgbG9u
ZyBwdXRfZGlydHlfcGFnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0c2ssdW5z
aWduZWQgbG9uZyBwYWdlLA0KZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12aXJn
aW4vaW5jbHVkZS9saW51eC9wcm9jX2ZzLmggbGludXgtMi4xLjcyLW1lbWxl
YWsvaW5jbHVkZS9saW51eC9wcm9jX2ZzLmgNCi0tLSBsaW51eC0yLjEuNzIt
dmlyZ2luL2luY2x1ZGUvbGludXgvcHJvY19mcy5oCU1vbiBEZWMgIDEgMDQ6
Mjc6MTEgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1sZWFrL2luY2x1ZGUv
bGludXgvcHJvY19mcy5oCU1vbiBEZWMgMTUgMDM6MjI6MDAgMTk5Nw0KQEAg
LTUyLDcgKzUyLDEwIEBADQogCVBST0NfU0xBQklORk8sDQogCVBST0NfUEFS
UE9SVCwNCiAJUFJPQ19PTUlSUiwgLyogd2hldGhlciBlbmFibGVkIG9yIG5v
dCAqLw0KLQlQUk9DX1BQQ19IVEFCDQorCVBST0NfUFBDX0hUQUIsDQorI2lm
ZGVmIENPTkZJR19NRU1MRUFLDQorCVBST0NfTUVNTEVBSywNCisjZW5kaWYN
CiB9Ow0KIA0KIGVudW0gcGlkX2RpcmVjdG9yeV9pbm9zIHsNCkBAIC0zNjcs
NyArMzcwLDggQEANCiAjZW5kaWYNCiBleHRlcm4gc3RydWN0IGlub2RlX29w
ZXJhdGlvbnMgcHJvY19vbWlycl9pbm9kZV9vcGVyYXRpb25zOw0KIGV4dGVy
biBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX3BwY19odGFiX2lub2Rl
X29wZXJhdGlvbnM7DQotDQorI2lmZGVmIENPTkZJR19NRU1MRUFLDQorZXh0
ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfbWVtbGVha19pbm9k
ZV9vcGVyYXRpb25zOw0KICNlbmRpZg0KIA0KIC8qDQpAQCAtMzg4LDMgKzM5
Miw1IEBADQogICogcHJvY19kZXZ0cmVlLmMNCiAgKi8NCiBleHRlcm4gdm9p
ZCBwcm9jX2RldmljZV90cmVlX2luaXQodm9pZCk7DQorDQorI2VuZGlmIC8q
IF9MSU5VWF9QUk9DX0ZTX0ggKi8NCmRpZmYgLXVyTiBsaW51eC0yLjEuNzIt
dmlyZ2luL2luY2x1ZGUvbGludXgvc2tidWZmLmggbGludXgtMi4xLjcyLW1l
bWxlYWsvaW5jbHVkZS9saW51eC9za2J1ZmYuaA0KLS0tIGxpbnV4LTIuMS43
Mi12aXJnaW4vaW5jbHVkZS9saW51eC9za2J1ZmYuaAlNb24gRGVjICAxIDA0
OjI3OjEyIDE5OTcNCisrKyBsaW51eC0yLjEuNzItbWVtbGVhay9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oCVRodSBEZWMgMTggMDk6Mzc6NTkgMTk5Nw0KQEAg
LTE1MCwxMSArMTUwLDM0IEBADQogZXh0ZXJuIHZvaWQJCQlza2JfdW5saW5r
KHN0cnVjdCBza19idWZmICpidWYpOw0KIGV4dGVybiBfX3UzMgkJCXNrYl9x
dWV1ZV9sZW4oc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCk7DQogZXh0ZXJu
IHN0cnVjdCBza19idWZmICoJCXNrYl9wZWVrX2NvcHkoc3RydWN0IHNrX2J1
ZmZfaGVhZCAqbGlzdCk7DQorZXh0ZXJuIHZvaWQJCQlrZnJlZV9za2JtZW0o
c3RydWN0IHNrX2J1ZmYgKnNrYik7DQorDQorI2lmbmRlZiBDT05GSUdfTUVN
TEVBSw0KIGV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqCQlhbGxvY19za2IodW5z
aWduZWQgaW50IHNpemUsIGludCBwcmlvcml0eSk7DQogZXh0ZXJuIHN0cnVj
dCBza19idWZmICoJCWRldl9hbGxvY19za2IodW5zaWduZWQgaW50IHNpemUp
Ow0KLWV4dGVybiB2b2lkCQkJa2ZyZWVfc2tibWVtKHN0cnVjdCBza19idWZm
ICpza2IpOw0KIGV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqCQlza2JfY2xvbmUo
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsNCiBleHRlcm4g
c3RydWN0IHNrX2J1ZmYgKgkJc2tiX2NvcHkoc3RydWN0IHNrX2J1ZmYgKnNr
YiwgaW50IHByaW9yaXR5KTsNCisjZWxzZSAvKiBDT05GSUdfTUVNTEVBSyAq
Lw0KKw0KKyNpbmNsdWRlIDxsaW51eC9tbS5oPg0KKw0KK2V4dGVybiBzdHJ1
Y3Qgc2tfYnVmZiAqCQlhbGxvY19za2Jfd3JhcCh1bnNpZ25lZCBpbnQgc2l6
ZSwgaW50IHByaW9yaXR5LCBzdHJ1Y3QgYWxsb2Nfc3RydWN0ICogaWQpOw0K
K2V4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqCQlkZXZfYWxsb2Nfc2tiX3dyYXAo
dW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhbGxvY19zdHJ1Y3QgKiBpZCk7
DQorZXh0ZXJuIHN0cnVjdCBza19idWZmICoJCXNrYl9jbG9uZV93cmFwKHN0
cnVjdCBza19idWZmICpza2IsIGludCBwcmlvcml0eSwgc3RydWN0IGFsbG9j
X3N0cnVjdCAqIGlkKTsNCitleHRlcm4gc3RydWN0IHNrX2J1ZmYgKgkJc2ti
X2NvcHlfd3JhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJpb3JpdHks
IHN0cnVjdCBhbGxvY19zdHJ1Y3QgKiBpZCk7DQorDQorI2RlZmluZSBXUkFQ
KHgseS4uLikJCQkJCQkJCVwNCisoewkJCQkJCQkJCQlcDQorCXN0YXRpYyBz
dHJ1Y3QgYWxsb2Nfc3RydWN0IElEID0geyAwLCBfX0ZJTEVfXywgX19MSU5F
X18gfTsJCVwNCisJeCMjX3dyYXAoeSwmSUQpOwkJCQkJCQlcDQorfSkNCisN
CisjZGVmaW5lIGFsbG9jX3NrYihzaXplLHByaW9yaXR5KSBXUkFQKGFsbG9j
X3NrYixzaXplLHByaW9yaXR5KQ0KKyNkZWZpbmUgZGV2X2FsbG9jX3NrYihz
aXplKSBXUkFQKGRldl9hbGxvY19za2Isc2l6ZSkNCisjZGVmaW5lIHNrYl9j
bG9uZShza2IscHJpb3JpdHkpIFdSQVAoc2tiX2Nsb25lLHNrYixwcmlvcml0
eSkNCisjZGVmaW5lIHNrYl9jb3B5KHNrYixwcmlvcml0eSkgV1JBUChza2Jf
Y29weSxza2IscHJpb3JpdHkpDQorI2VuZGlmIC8qIENPTkZJR19NRU1MRUFL
ICovDQorDQogZXh0ZXJuIHN0cnVjdCBza19idWZmICoJCXNrYl9yZWFsbG9j
X2hlYWRyb29tKHN0cnVjdCBza19idWZmICpza2IsIGludCBuZXdoZWFkcm9v
bSk7DQogI2RlZmluZSBkZXZfa2ZyZWVfc2tiKGEsIGIpCWtmcmVlX3NrYigo
YSksIChiKSkNCiBleHRlcm4gdW5zaWduZWQgY2hhciAqCQlza2JfcHV0KHN0
cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pOw0KZGlmZiAt
dXJOIGxpbnV4LTIuMS43Mi12aXJnaW4vaW5jbHVkZS9saW51eC9zbGFiLmgg
bGludXgtMi4xLjcyLW1lbWxlYWsvaW5jbHVkZS9saW51eC9zbGFiLmgNCi0t
LSBsaW51eC0yLjEuNzItdmlyZ2luL2luY2x1ZGUvbGludXgvc2xhYi5oCU1v
biBBdWcgMTEgMjM6MTc6MjIgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1s
ZWFrL2luY2x1ZGUvbGludXgvc2xhYi5oCU1vbiBEZWMgMTUgMDM6MjI6MDAg
MTk5Nw0KQEAgLTQ4LDYgKzQ4LDcgQEANCiBleHRlcm4gbG9uZyBrbWVtX2Nh
Y2hlX2luaXQobG9uZywgbG9uZyk7DQogZXh0ZXJuIHZvaWQga21lbV9jYWNo
ZV9zaXplc19pbml0KHZvaWQpOw0KIGV4dGVybiBrbWVtX2NhY2hlX3QgKmtt
ZW1fZmluZF9nZW5lcmFsX2NhY2hlcChzaXplX3QpOw0KKyNpZm5kZWYgQ09O
RklHX01FTUxFQUsNCiBleHRlcm4ga21lbV9jYWNoZV90ICprbWVtX2NhY2hl
X2NyZWF0ZShjb25zdCBjaGFyICosIHNpemVfdCwgc2l6ZV90LCB1bnNpZ25l
ZCBsb25nLA0KIAkJCQkgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2Nh
Y2hlX3QgKiwgdW5zaWduZWQgbG9uZyksDQogCQkJCSAgICAgICB2b2lkICgq
KSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSk7DQpA
QCAtNTgsNiArNTksNjAgQEANCiBleHRlcm4gdm9pZCAqa21hbGxvYyhzaXpl
X3QsIGludCk7DQogZXh0ZXJuIHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAqKTsN
CiBleHRlcm4gdm9pZCBrZnJlZV9zKGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsN
CisjZWxzZQ0KK2V4dGVybiBrbWVtX2NhY2hlX3QgKnJlYWxfa21lbV9jYWNo
ZV9jcmVhdGUoY29uc3QgY2hhciAqLCBzaXplX3QsIHNpemVfdCwgdW5zaWdu
ZWQgbG9uZywNCisJCQkJICAgICAgIHZvaWQgKCopKHZvaWQgKiwga21lbV9j
YWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLA0KKwkJCQkgICAgICAgdm9pZCAo
Kikodm9pZCAqLCBrbWVtX2NhY2hlX3QgKiwgdW5zaWduZWQgbG9uZykpOw0K
K2V4dGVybiBpbnQgcmVhbF9rbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hl
X3QgKik7DQorZXh0ZXJuIHZvaWQgKnJlYWxfa21lbV9jYWNoZV9hbGxvYyhr
bWVtX2NhY2hlX3QgKiwgaW50KTsNCitleHRlcm4gdm9pZCByZWFsX2ttZW1f
Y2FjaGVfZnJlZShrbWVtX2NhY2hlX3QgKiwgdm9pZCAqKTsNCisNCitleHRl
cm4ga21lbV9jYWNoZV90ICprbWVtX2NhY2hlX2NyZWF0ZV93cmFwcGVyKGNv
bnN0IGNoYXIgKiwgc2l6ZV90LA0KKwkJCSAgICAgICAgICBzaXplX3QsIHVu
c2lnbmVkIGxvbmcsDQorCQkJCSAgICAgICB2b2lkICgqKSh2b2lkICosIGtt
ZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSwNCisJCQkJICAgICAgIHZv
aWQgKCopKHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcp
LA0KKwkJCQkgICAgICAgc3RydWN0IGFsbG9jX3N0cnVjdCAqIGlkKTsNCitl
eHRlcm4gaW50IGttZW1fY2FjaGVfc2hyaW5rX3dyYXBwZXIoa21lbV9jYWNo
ZV90ICopOw0KK2V4dGVybiB2b2lkICprbWVtX2NhY2hlX2FsbG9jX3dyYXBw
ZXIoa21lbV9jYWNoZV90ICosIGludCwNCisJCQkgICAgICAgICAgc3RydWN0
IGFsbG9jX3N0cnVjdCAqIGlkKTsNCitleHRlcm4gdm9pZCBrbWVtX2NhY2hl
X2ZyZWVfd3JhcHBlcihrbWVtX2NhY2hlX3QgKiwgdm9pZCAqKTsNCisNCisj
ZGVmaW5lIGttZW1fY2FjaGVfY3JlYXRlKG5hbWUsc2l6ZSxvZmZzZXQsZmxh
Z3MsY3RvcixkdG9yKQkJCVwNCisoewkJCQkJCQkJCQlcDQorCXN0YXRpYyBz
dHJ1Y3QgYWxsb2Nfc3RydWN0IElEID0geyAwLCBfX0ZJTEVfXywgX19MSU5F
X18gfTsJCVwNCisJa21lbV9jYWNoZV9jcmVhdGVfd3JhcHBlcihuYW1lLHNp
emUsb2Zmc2V0LGZsYWdzLGN0b3IsZHRvciwmSUQpOwlcDQorfSkNCisNCisj
ZGVmaW5lIGttZW1fY2FjaGVfc2hyaW5rKGNhY2hlcCkga21lbV9jYWNoZV9z
aHJpbmtfd3JhcHBlcihjYWNoZXApDQorDQorI2RlZmluZSBrbWVtX2NhY2hl
X2FsbG9jKGNhY2hlcCwgZmxhZ3MpCQkJXA0KKyh7CQkJCQkJCQkJCVwNCisJ
c3RhdGljIHN0cnVjdCBhbGxvY19zdHJ1Y3QgSUQgPSB7IDAsIF9fRklMRV9f
LCBfX0xJTkVfXyB9OwkJXA0KKyAJa21lbV9jYWNoZV9hbGxvY193cmFwcGVy
KGNhY2hlcCxmbGFncywmSUQpOwkJCQkJXA0KK30pDQorDQorI2RlZmluZSBr
bWVtX2NhY2hlX2ZyZWUoY2FjaGVwLCBvYmpwKSBrbWVtX2NhY2hlX2ZyZWVf
d3JhcHBlcihjYWNoZXAsIG9ianApDQorDQorI2RlZmluZSBrZnJlZV9zKG9i
aixvYmpzaXplKSBrZnJlZV9zX3dyYXBwZXIob2JqLG9ianNpemUpDQorDQor
ZXh0ZXJuIHZvaWQgKnJlYWxfa21hbGxvYyh1bnNpZ25lZCBpbnQgc2l6ZSwg
aW50IHByaW9yaXR5KTsNCitleHRlcm4gdm9pZCByZWFsX2tmcmVlKGNvbnN0
IHZvaWQgKik7DQorZXh0ZXJuIHZvaWQgcmVhbF9rZnJlZV9zKGNvbnN0IHZv
aWQgKiwgc2l6ZV90KTsNCisNCitleHRlcm4gdm9pZCAqa21hbGxvY193cmFw
cGVyKHVuc2lnbmVkIGludCBzaXplLCBpbnQgcHJpb3JpdHksDQorCXN0cnVj
dCBhbGxvY19zdHJ1Y3QgKiBpZCk7DQorZXh0ZXJuIHZvaWQga2ZyZWVfd3Jh
cHBlcih2b2lkICogb2JqKTsNCitleHRlcm4gdm9pZCBrZnJlZV9zX3dyYXBw
ZXIodm9pZCAqIG9iaiwgc2l6ZV90IG9ial9zaXplKTsNCisNCisjZGVmaW5l
IGttYWxsb2Moc2l6ZSxwcmlvcml0eSkJCQkJCQkJXA0KKyh7CQkJCQkJCQkJ
CVwNCisJc3RhdGljIHN0cnVjdCBhbGxvY19zdHJ1Y3QgSUQgPSB7IDAsIF9f
RklMRV9fLCBfX0xJTkVfXyB9OwkJXA0KKyAJa21hbGxvY193cmFwcGVyKHNp
emUscHJpb3JpdHksJklEKTsJCQkJCVwNCit9KQ0KKw0KKyNkZWZpbmUga2Zy
ZWUob2JqKSBrZnJlZV93cmFwcGVyKG9iaikNCisjZGVmaW5lIGtmcmVlX3Mo
b2JqLG9ianNpemUpIGtmcmVlX3Nfd3JhcHBlcihvYmosb2Jqc2l6ZSkNCisj
ZW5kaWYgLyogQ09ORklHX01FTUxFQUsgKi8NCiANCiBleHRlcm4gaW50IGtt
ZW1fY2FjaGVfcmVhcChpbnQsIGludCwgaW50KTsNCiBleHRlcm4gaW50IGdl
dF9zbGFiaW5mbyhjaGFyICopOw0KZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12
aXJnaW4vaW5pdC9tYWluLmMgbGludXgtMi4xLjcyLW1lbWxlYWsvaW5pdC9t
YWluLmMNCi0tLSBsaW51eC0yLjEuNzItdmlyZ2luL2luaXQvbWFpbi5jCVRo
dSBEZWMgMTEgMDM6MzY6NTEgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1s
ZWFrL2luaXQvbWFpbi5jCVRodSBEZWMgMTEgMDM6Mzk6MzcgMTk5Nw0KQEAg
LTk2Myw2ICs5NjMsOSBAQA0KICNpZmRlZiBDT05GSUdfUENJDQogCW1lbW9y
eV9zdGFydCA9IHBjaV9pbml0KG1lbW9yeV9zdGFydCxtZW1vcnlfZW5kKTsN
CiAjZW5kaWYNCisjaWZkZWYgQ09ORklHX01FTUxFQUsNCisJbWVtb3J5X2Vu
ZCA9IG1lbWxlYWtfaW5pdChtZW1vcnlfc3RhcnQsbWVtb3J5X2VuZCk7DQor
I2VuZGlmDQogI2lmZGVmIENPTkZJR19NQ0ENCiAJbWVtb3J5X3N0YXJ0ID0g
bWNhX2luaXQobWVtb3J5X3N0YXJ0LG1lbW9yeV9lbmQpOw0KICNlbmRpZg0K
ZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12aXJnaW4va2VybmVsL2tzeW1zLmMg
bGludXgtMi4xLjcyLW1lbWxlYWsva2VybmVsL2tzeW1zLmMNCi0tLSBsaW51
eC0yLjEuNzItdmlyZ2luL2tlcm5lbC9rc3ltcy5jCUZyaSBEZWMgIDUgMTE6
MjY6NTQgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1tZW1sZWFrL2tlcm5lbC9r
c3ltcy5jCVRodSBEZWMgMTggMTA6MDE6MTMgMTk5Nw0KQEAgLTEyMSwxMCAr
MTIxLDExIEBADQogRVhQT1JUX1NZTUJPTChleGl0X2ZpbGVzKTsNCiANCiAv
KiBpbnRlcm5hbCBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQgKi8NCitFWFBP
UlRfU1lNQk9MKGttZW1fZmluZF9nZW5lcmFsX2NhY2hlcCk7DQorI2lmbmRl
ZiBDT05GSUdfTUVNTEVBSw0KIEVYUE9SVF9TWU1CT0woX19nZXRfZnJlZV9w
YWdlcyk7DQogRVhQT1JUX1NZTUJPTChmcmVlX3BhZ2VzKTsNCiBFWFBPUlRf
U1lNQk9MKF9fZnJlZV9wYWdlKTsNCi1FWFBPUlRfU1lNQk9MKGttZW1fZmlu
ZF9nZW5lcmFsX2NhY2hlcCk7DQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hl
X2NyZWF0ZSk7DQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX3Nocmluayk7
DQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jKTsNCkBAIC0xMzIs
NiArMTMzLDE4IEBADQogRVhQT1JUX1NZTUJPTChrbWFsbG9jKTsNCiBFWFBP
UlRfU1lNQk9MKGtmcmVlKTsNCiBFWFBPUlRfU1lNQk9MKGtmcmVlX3MpOw0K
KyNlbHNlDQorRVhQT1JUX1NZTUJPTChfX2dldF9mcmVlX3BhZ2VzX3dyYXBw
ZXIpOw0KK0VYUE9SVF9TWU1CT0woZnJlZV9wYWdlc193cmFwcGVyKTsNCitF
WFBPUlRfU1lNQk9MKF9fZnJlZV9wYWdlX3dyYXBwZXIpOw0KK0VYUE9SVF9T
WU1CT0woa21hbGxvY193cmFwcGVyKTsNCitFWFBPUlRfU1lNQk9MKGtmcmVl
X3dyYXBwZXIpOw0KK0VYUE9SVF9TWU1CT0woa2ZyZWVfc193cmFwcGVyKTsN
CitFWFBPUlRfU1lNQk9MKGttZW1fY2FjaGVfY3JlYXRlX3dyYXBwZXIpOw0K
K0VYUE9SVF9TWU1CT0woa21lbV9jYWNoZV9zaHJpbmtfd3JhcHBlcik7DQor
RVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX3dyYXBwZXIpOw0KK0VY
UE9SVF9TWU1CT0woa21lbV9jYWNoZV9mcmVlX3dyYXBwZXIpOw0KKyNlbmRp
ZiAvKiBDT05GSUdfTUVNTEVBSyAqLw0KIEVYUE9SVF9TWU1CT0wodm1hbGxv
Yyk7DQogRVhQT1JUX1NZTUJPTCh2ZnJlZSk7DQogRVhQT1JUX1NZTUJPTCht
ZW1fbWFwKTsNCmRpZmYgLXVyTiBsaW51eC0yLjEuNzItdmlyZ2luL21tL01h
a2VmaWxlIGxpbnV4LTIuMS43Mi1tZW1sZWFrL21tL01ha2VmaWxlDQotLS0g
bGludXgtMi4xLjcyLXZpcmdpbi9tbS9NYWtlZmlsZQlUaHUgSnVsIDE3IDA0
OjIyOjUxIDE5OTcNCisrKyBsaW51eC0yLjEuNzItbWVtbGVhay9tbS9NYWtl
ZmlsZQlTYXQgRGVjICA2IDA1OjUyOjMyIDE5OTcNCkBAIC0xMiw0ICsxMiw4
IEBADQogCSAgICB2bWFsbG9jLm8gc2xhYi5vIHNpbXAub1wNCiAJICAgIHN3
YXAubyB2bXNjYW4ubyBwYWdlX2lvLm8gcGFnZV9hbGxvYy5vIHN3YXBfc3Rh
dGUubyBzd2FwZmlsZS5vDQogDQoraWZlcSAoJChDT05GSUdfTUVNTEVBSyks
eSkNCitPX09CSlMgKz0gbWVtbGVhay5vDQorZW5kaWYNCisNCiBpbmNsdWRl
ICQoVE9QRElSKS9SdWxlcy5tYWtlDQpkaWZmIC11ck4gbGludXgtMi4xLjcy
LXZpcmdpbi9tbS9tZW1sZWFrLmMgbGludXgtMi4xLjcyLW1lbWxlYWsvbW0v
bWVtbGVhay5jDQotLS0gbGludXgtMi4xLjcyLXZpcmdpbi9tbS9tZW1sZWFr
LmMJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwDQorKysgbGludXgtMi4xLjcy
LW1lbWxlYWsvbW0vbWVtbGVhay5jCVRodSBEZWMgMTggMTA6MDc6MTkgMTk5
Nw0KQEAgLTAsMCArMSwzNjggQEANCisvKg0KKyAqICBsaW51eC9tbS9tZW1s
ZWFrLmMsICBtZW1vcnkgbGVhayBkZXRlY3Rvcg0KKyAqDQorICogIENvcHly
aWdodCAoQykgMTk5NyBJbmdvIE1vbG5hcg0KKyAqDQorICogIE1haW50YWlu
ZXI6IE1pa2UgR2FsYnJhaXRoIG1pa2VnQHdlaWRlbi5kZQ0KKyAqDQorICog
IENoYW5nZWxvZzoNCisgKiAgICAgRGVjIDE4IDE5OTc6IG1lbWxlYWsuYyAt
IGFkZGVkIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBzbGFiLmMNCisgKiAgICAg
RGVjIDE4IDE5OTc6IGluY2x1ZGUvYXNtLWkzODYvcGd0YWJsZS5oDQorICoJ
CQljb252ZXJ0ZWQgcHRlX2FsbG9jX2tlcm5lbCwgcHRlX2FsbG9jLCBwZ2Rf
YWxsb2MgdG8gbWFjcm9zDQorICovDQorDQorI2luY2x1ZGUgPGFzbS91YWNj
ZXNzLmg+DQorI2luY2x1ZGUgPGFzbS9wYWdlLmg+DQorI2luY2x1ZGUgPGxp
bnV4L21tLmg+DQorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCisjaW5jbHVk
ZSA8bGludXgvcHJvY19mcy5oPg0KKw0KKw0KKy8qDQorICogRGVzaWduOg0K
KyAqDQorICogRXZlcnkgMzIgYnl0ZXMgYmxvY2sgb2YgbWVtb3J5IGluIHRo
ZSBzeXN0ZW0gaGFzIGFuICdhbGxvY2F0aW9uIG1hcCBlbnRyeScuDQorICog
QSBtYXAgZW50cnkgaXMgYSB0d28tZmllbGRzIGJpdG1hcCwgYW4gJ0lEJyBw
b2ludGluZyB0byB0aGUgYWxsb2NhdG9yLA0KKyAqIGFuZCBhIH4yIHNlY29u
ZHMgZ3JhbnVsYXJpdHkgdGltZXN0YW1wIHRvIHNlZSBvYmplY3QgYWdlLg0K
KyAqIElEIDAgbWVhbnMgdGhlIGJsb2NrIGlzIGVtcHR5LiBUaGUgYWxsb2Nh
dGlvbiBtYXAgaXMgYSB2ZXJ5IGJpZyBzdGF0aWMNCisgKiBhcnJheSwgYW5k
IGlzIHByZWFsbG9jYXRlZCBhdCBib290LCBhbmQgcHV0IGF0IHRoZSBlbmQg
b2YgbWVtb3J5Lg0KKyAqDQorICogVGhpcyBtZXRob2QgcmVsaWVzIG9uIHRo
ZSBmYWN0IHRoYXQgbm8gb2JqZWN0IGFsbG9jYXRlZCBpbiBMaW51eA0KKyAq
IGlzIHNtYWxsZXIgdGhhbiAzMiBieXRlcy4gVHJ1ZSB0aGF0IHdlIHdhc3Rl
IH4xMCUgbWVtb3J5LCBidXQgdGhlDQorICogbWV0aG9kIGlzIHZlcnkgc2lt
cGxlLCBleHRyZW1lbHkgZmFzdCBhbmQgZ2VuZXJpYy4gVGhlcmUgYXJlIGxv
dHMgb2YNCisgKiBzeXN0ZW1zIHRoYXQgY2FuIHRvbGVyYXRlIDEwJSBsZXNz
IG1lbW9yeSwgYnV0IGFsbW9zdCBubyBzeXN0ZW0NCisgKiBjYW4gdG9sZXJh
dGUgdGhlIENQVSBsb2FkIGNhdXNlZCBieSBPKE4pIG9yIE8obG9nKE4pKSAn
Ym9va2VlcGluZw0KKyAqIGFsZ29yaXRobXMnIHdoZW4gYWxsb2NhdGluZyBt
ZW1vcnkgaW4gYSBSTCBzeXN0ZW0uDQorICoNCisgKiBUaGlzIG1ldGhvZCBp
cyBhIE8oMSkgYWxnb3JpdGhtLg0KKyAqDQorICoNCisgKiBDdXJyZW50bHkg
d3JhcHBlZCBhbGxvY2F0b3JzOg0KKyAqDQorICogICAgZ2VuZXJpYyBwYWdl
IGFsbG9jYXRvcjogZ2V0X2ZyZWVfcGFnZXMoKS9mcmVlX3BhZ2VzKCkNCisg
KiAgICBrZXJuZWwgYWxsb2NhdG9yOiAgICAgICBrbWFsbG9jKCkva2ZyZWUo
KS9rZnJlZV9zKCkNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
bWVtX2NhY2hlX2NyZWF0ZSgpL2ttZW1fY2FjaGVfc2hyaW5rKCkNCisgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrbWVtX2NhY2hlX2FsbG9jKCkv
a21lbV9jYWNoZV9mcmVlKCkNCisgKiAgICBuZXR3b3JraW5nIGFsbG9jYXRv
cjogICBza2JfYWxsb2MoKS9za2JfZnJlZSgpDQorICoNCisgKiAgdm1hbGxv
YygpL3ZmcmVlKCkgd2lsbCBwcm9iYWJseSBuZXZlciBiZSBzdXBwb3J0ZWQg
YnkNCisgKiAgdGhpcyBtZXRob2QsIG1heWJlIHdlIGNhbiByZXByZXNlbnQg
dGhlbSB0aHJvdWdoIHRoZWlyDQorICogIGZpcnN0IHBoeXNpY2FsIHBhZ2Uu
IEl0J3Mgbm90IGEgY29tbW9uIGFsbG9jYXRpb24NCisgKiAgbWV0aG9kLg0K
KyAqLw0KKw0KKyNkZWZpbmUgUFJPQkxFTSgpIHByaW50aygiTUVNTEVBSyBQ
Uk9CTEVNKCk6IDwlcywlZD4uXG4iLF9fRklMRV9fLF9fTElORV9fKQ0KKw0K
KyNkZWZpbmUgTUlOX01FTUJMT0NLX1NJWkUgMzINCitzdGF0aWMgdW5zaWdu
ZWQgbG9uZyBFTlRSSUVTOw0KKw0KKw0KKyNkZWZpbmUgSURYKGFkZHIpIChf
X3BhKGFkZHIpL01JTl9NRU1CTE9DS19TSVpFKQ0KKw0KKy8qDQorICogV2Ug
d2FudCB0byBrZWVwIHRoZSBhbGxvY2F0aW9uIG1hcCBhcyBzbWFsbCBhcyBw
b3NzaWJsZQ0KKyAqLw0KKyNkZWZpbmUgSURfQklUUyA5DQorI2RlZmluZSBN
QVhfSUQgKDE8PElEX0JJVFMpDQorI2RlZmluZSBUSU1FU1RBTVBfQklUUyAo
c2l6ZW9mKHVuc2lnbmVkIGludCkqOC1JRF9CSVRTKQ0KKw0KK3N0cnVjdCBh
bGxvY19lbnRyeSB7DQorCXVuc2lnbmVkIGludCB0aW1lc3RhbXA6VElNRVNU
QU1QX0JJVFMsIGlkOklEX0JJVFM7DQorfTsNCisNCitzdGF0aWMgc3RydWN0
IGFsbG9jX2VudHJ5ICogYWxsb2NfbWFwOw0KK3N0YXRpYyBzdHJ1Y3QgYWxs
b2Nfc3RydWN0ICogaWRfbWFwIFtNQVhfSURdOw0KK3N0YXRpYyBzdHJ1Y3Qg
YWxsb2Nfc3RydWN0IE5VTExfaWQgPSB7IDAsICI8TlVMTD4iLCAwIH07DQor
DQorc3RhdGljIGludCBjdXJyX2lkOw0KKw0KK3ZvaWQgYWxsb2NfYWRkcih1
bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCBhbGxvY19zdHJ1Y3QgKiBpZCkN
Cit7DQorCXVuc2lnbmVkIGxvbmcgaWR4ID0gSURYKGFkZHIpOw0KKw0KKwlp
ZiAoIWFsbG9jX21hcCkgew0KKwkJUFJPQkxFTSgpOw0KKwkJcmV0dXJuOw0K
Kwl9DQorCWlmIChpZHggPiBFTlRSSUVTKSB7DQorCQlQUk9CTEVNKCk7DQor
CQlyZXR1cm47DQorCX0NCisJaWYgKGFsbG9jX21hcFtpZHhdLmlkKSB7DQor
CQlQUk9CTEVNKCk7DQorCQlyZXR1cm47DQorCX0NCisNCisJLyoNCisJICog
RHluYW1pYyAnYWxsb2NhdGlvbiBJRCcgcmVnaXN0cmF0aW9uLiBUaGUgZmFz
dCBwYXRoIGlzDQorCSAqIHJlYWxseSBmYXN0LCBkb250IHdvcnJ5IGFib3V0
IHRoZSByZXN0Lg0KKwkgKi8NCisJaWYgKCFpZC0+aWQpIHsNCisJCS8qDQor
CQkgKiBJRCBhbGxvY2F0aW9uIGhhcyB0byBiZSBJUlEtc2FmZQ0KKwkJICov
DQorCQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwkJc2F2ZV9mbGFncyhmbGFn
cyk7DQorCQljbGkoKTsNCisNCisJCWlmIChpZC0+aWQpDQorCQkJZ290byBv
dXQ7DQorCQlpZiAoIWN1cnJfaWQpDQorCQkJZ290byBvdXQ7DQorI2lmIDAN
CisJCXByaW50aygiYWxsb2NhdGluZyBJRC4lZCBmb3IgJXM6JWQuXG4iLGN1
cnJfaWQsIGlkLT5maWxlLCBpZC0+bGluZSk7DQorI2VuZGlmDQorCQlpZC0+
aWQgPSBjdXJyX2lkOw0KKwkJY3Vycl9pZCsrOw0KKwkJaWYgKGN1cnJfaWQg
PT0gTUFYX0lEKSB7DQorCQkJcHJpbnRrKCJJRCB3cmFwcGVkIGFyb3VuZCwg
c3RvcHBpbmcgSUQgYWxsb2NhdGlvbi5cbiIpOw0KKwkJCXByaW50aygiSW5j
cmVhc2UgSURfQklUUyBpbiBtZW1sZWFrLmMuXG4iKTsNCisJCQljdXJyX2lk
ID0gMDsNCisJCX0gZWxzZQ0KKwkJCWlkX21hcFtjdXJyX2lkLTFdID0gaWQ7
DQorb3V0Og0KKwkJcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCX0NCisJYWxs
b2NfbWFwW2lkeF0uaWQgPSBpZC0+aWQ7DQorCWFsbG9jX21hcFtpZHhdLnRp
bWVzdGFtcCA9IGppZmZpZXM+PklEX0JJVFM7DQorfQ0KKw0KK3ZvaWQgZnJl
ZV9hZGRyKHVuc2lnbmVkIGxvbmcgYWRkcikNCit7DQorCWludCBpZHggPSBJ
RFgoYWRkcik7DQorDQorCWlmICghYWxsb2NfbWFwKSB7DQorCQlQUk9CTEVN
KCk7DQorCQlyZXR1cm47DQorCX0NCisJaWYgKGlkeCA+IEVOVFJJRVMpIHsN
CisJCVBST0JMRU0oKTsNCisJCXJldHVybjsNCisJfQ0KKwlpZiAoIWFsbG9j
X21hcFtpZHhdLmlkKSB7DQorCQlpZiAoIWN1cnJfaWQpDQorCQkJcmV0dXJu
Ow0KKwkJUFJPQkxFTSgpOw0KKwkJcmV0dXJuOw0KKwl9DQorCWFsbG9jX21h
cFtpZHhdLmlkID0gMDsNCit9DQorDQorLyoNCisqIGttZW1fY2FjaGVfY3Jl
YXRlKCkva21lbV9jYWNoZV9zaHJpbmsoKS9rbWVtX2NhY2hlX2FsbG9jKCkv
DQorKiBrbWVtX2NhY2hlX2ZyZWUgd3JhcHBlcnMNCisqLw0KKw0KK2ttZW1f
Y2FjaGVfdCAqDQora21lbV9jYWNoZV9jcmVhdGVfd3JhcHBlcihjb25zdCBj
aGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCwNCisJdW5z
aWduZWQgbG9uZyBmbGFncywgdm9pZCAoKmN0b3IpKHZvaWQqLCBrbWVtX2Nh
Y2hlX3QgKiwgdW5zaWduZWQgbG9uZyksDQorCXZvaWQgKCpkdG9yKSh2b2lk
Kiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLCBzdHJ1Y3QgYWxs
b2Nfc3RydWN0ICogaWQpDQorew0KKwlrbWVtX2NhY2hlX3QgKiBvYmogPSBy
ZWFsX2ttZW1fY2FjaGVfY3JlYXRlKG5hbWUsc2l6ZSxvZmZzZXQsZmxhZ3Ms
Y3RvcixkdG9yKTsNCisJaWYgKG9iaikNCisJCWFsbG9jX2FkZHIoKHVuc2ln
bmVkIGxvbmcpb2JqLGlkKTsNCisJcmV0dXJuIG9iajsNCit9DQorDQoraW50
IGttZW1fY2FjaGVfc2hyaW5rX3dyYXBwZXIoa21lbV9jYWNoZV90ICpjYWNo
ZXApDQorew0KKwlpbnQgcmV0ID0gcmVhbF9rbWVtX2NhY2hlX3Nocmluayhj
YWNoZXApOw0KKwlpZiAoIXJldCkNCisJCWZyZWVfYWRkcigodW5zaWduZWQg
bG9uZyljYWNoZXApOw0KKwllbHNlDQorCQlQUk9CTEVNKCk7DQorCXJldHVy
biByZXQ7DQorfQ0KKw0KK3ZvaWQgKmttZW1fY2FjaGVfYWxsb2Nfd3JhcHBl
cihrbWVtX2NhY2hlX3QgKmNhY2hlcCwgaW50IGZsYWdzLA0KKwlzdHJ1Y3Qg
YWxsb2Nfc3RydWN0ICogaWQpDQorew0KKwl2b2lkICogb2JqID0gcmVhbF9r
bWVtX2NhY2hlX2FsbG9jKGNhY2hlcCwgZmxhZ3MpOw0KKwlpZiAob2JqKQ0K
KwkJYWxsb2NfYWRkcigodW5zaWduZWQgbG9uZylvYmosaWQpOw0KKwlyZXR1
cm4gb2JqOw0KK30NCisNCit2b2lkIGttZW1fY2FjaGVfZnJlZV93cmFwcGVy
KGttZW1fY2FjaGVfdCAqY2FjaGVwLCB2b2lkICpvYmpwKQ0KK3sNCisJaWYg
KGNhY2hlcCAmJiBvYmpwKQ0KKwkJZnJlZV9hZGRyKCh1bnNpZ25lZCBsb25n
KW9ianApOw0KKwllbHNlDQorCQlQUk9CTEVNKCk7DQorCXJlYWxfa21lbV9j
YWNoZV9mcmVlKGNhY2hlcCwgb2JqcCk7DQorfQ0KKw0KKy8qDQorKiBrbWFs
bG9jKCkva2ZyZWUoKS9rZnJlZV9zKCkgd3JhcHBlcnMNCisqLw0KKw0KK3Zv
aWQgKiBrbWFsbG9jX3dyYXBwZXIgKHVuc2lnbmVkIGludCBzaXplLCBpbnQg
cHJpb3JpdHksDQorCSBzdHJ1Y3QgYWxsb2Nfc3RydWN0ICogaWQpDQorew0K
Kwl2b2lkICogb2JqID0gcmVhbF9rbWFsbG9jKHNpemUscHJpb3JpdHkpOw0K
KwlpZiAob2JqKQ0KKwkJYWxsb2NfYWRkcigodW5zaWduZWQgbG9uZylvYmos
aWQpOw0KKwlyZXR1cm4gb2JqOw0KK30NCisNCit2b2lkIGtmcmVlX3dyYXBw
ZXIgKHZvaWQgKiBvYmopDQorew0KKwlpZiAob2JqKQ0KKwkJZnJlZV9hZGRy
KCh1bnNpZ25lZCBsb25nKW9iaik7DQorCWVsc2UNCisJCVBST0JMRU0oKTsN
CisJcmVhbF9rZnJlZShvYmopOw0KK30NCisNCit2b2lkIGtmcmVlX3Nfd3Jh
cHBlciAodm9pZCAqIG9iaiwgc2l6ZV90IG9ianNpemUpDQorew0KKwlpZiAo
b2JqKQ0KKwkJZnJlZV9hZGRyKCh1bnNpZ25lZCBsb25nKW9iaik7DQorCWVs
c2UNCisJCVBST0JMRU0oKTsNCisJcmVhbF9rZnJlZV9zKG9iaixvYmpzaXpl
KTsNCit9DQorDQordW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzX3dy
YXBwZXIgKGludCBwcmlvcml0eSwgdW5zaWduZWQgbG9uZyBnZnBvcmRlciwN
CisJCQkgCWludCBkbWEsIHN0cnVjdCBhbGxvY19zdHJ1Y3QgKiBpZCkNCit7
DQorCXVuc2lnbmVkIGxvbmcgb2JqID0gcmVhbF9fZ2V0X2ZyZWVfcGFnZXMo
cHJpb3JpdHksZ2Zwb3JkZXIsZG1hKTsNCisJaWYgKG9iaikNCisJCWFsbG9j
X2FkZHIob2JqLGlkKTsNCisJcmV0dXJuIG9iajsNCit9DQorDQorLyoNCisg
KiBnZnAoKS9mcmVlX3BhZ2Vbc10oKSB3cmFwcGVycw0KKyAqDQorICogVGhl
IGNsaSgpcyBhcmUgdWdseQ0KKyAqLw0KKw0KK3ZvaWQgZnJlZV9wYWdlc193
cmFwcGVyICh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgb3Jk
ZXIpDQorew0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwl1bnNpZ25lZCBs
b25nIG1hcF9uciA9IE1BUF9OUihhZGRyKTsNCisNCisJc2F2ZV9mbGFncyhm
bGFncyk7DQorCWNsaSgpOw0KKw0KKwlpZiAobWFwX25yIDwgTUFQX05SKGhp
Z2hfbWVtb3J5KSkgew0KKwkJbWVtX21hcF90ICogbWFwID0gbWVtX21hcCAr
IG1hcF9ucjsNCisJCWlmICgoIVBhZ2VSZXNlcnZlZChtYXApKSAmJiAoYXRv
bWljX3JlYWQoJm1hcC0+Y291bnQpID09IDEpKQ0KKwkJCWZyZWVfYWRkcihh
ZGRyKTsNCisJfQ0KKwlyZWFsX2ZyZWVfcGFnZXMoYWRkcixvcmRlcik7DQor
CXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KK30NCisNCit2b2lkIF9fZnJlZV9w
YWdlX3dyYXBwZXIgKHN0cnVjdCBwYWdlICogcGFnZSkNCit7DQorCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7DQorDQorCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KKwlj
bGkoKTsNCisNCisJaWYgKCghUGFnZVJlc2VydmVkKHBhZ2UpKSAmJiAoYXRv
bWljX3JlYWQoJnBhZ2UtPmNvdW50KSA9PSAxKSkgew0KKwkJdW5zaWduZWQg
bG9uZyBvYmogPSBQQUdFX09GRlNFVCArIChwYWdlLT5tYXBfbnIgPDwgUEFH
RV9TSElGVCk7DQorCQlpZiAob2JqKQ0KKwkJCWZyZWVfYWRkcihvYmopOw0K
KwkJZWxzZQ0KKwkJCVBST0JMRU0oKTsNCisJfQ0KKwlyZWFsX19mcmVlX3Bh
Z2UocGFnZSk7DQorCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KK30NCisNCisv
Kg0KKyAqIFdlIHB1dCB0aGUgYWxsb2MgdGFibGUgYXQgdGhlIGVuZCBvZiBw
aHlzaWNhbCBtZW1vcnkNCisgKi8NCitfX2luaXRmdW5jKHVuc2lnbmVkIGxv
bmcgbWVtbGVha19pbml0ICh1bnNpZ25lZCBsb25nIHN0YXJ0X21lbSwgdW5z
aWduZWQgbG9uZyBlbmRfbWVtKSkNCit7DQorCXVuc2lnbmVkIGxvbmcgTUVN
U0laRSwgc2l6ZTsNCisNCisJaWRfbWFwWzBdID0gJk5VTExfaWQ7DQorCWN1
cnJfaWQgPSAxOw0KKw0KKwllbmRfbWVtID0gUEFHRV9BTElHTihlbmRfbWVt
KTsNCisNCisJTUVNU0laRSA9IGVuZF9tZW0tUEFHRV9PRkZTRVQ7DQorCUVO
VFJJRVMgPSBNRU1TSVpFLyhNSU5fTUVNQkxPQ0tfU0laRStzaXplb2Yoc3Ry
dWN0IGFsbG9jX2VudHJ5KSkrMTsNCisNCisJc2l6ZSA9IEVOVFJJRVMgKiBz
aXplb2Yoc3RydWN0IGFsbG9jX2VudHJ5KTsNCisNCisJZW5kX21lbSA9IFBB
R0VfQUxJR04oZW5kX21lbS1zaXplKS1QQUdFX1NJWkU7DQorDQorCWFsbG9j
X21hcCA9IChzdHJ1Y3QgYWxsb2NfZW50cnkgKikgZW5kX21lbTsNCisNCisJ
cHJpbnRrKCJNRU1MRUFLLCBhbGxvY2F0aW5nICVsZCBLQiBhbGxvY2F0aW9u
IG1hcC5cbiIsIHNpemUvMTAyNCk7DQorDQorCWlmICghYWxsb2NfbWFwKSB7
DQorCQlQUk9CTEVNKCk7DQorCQlmb3IoOzspOw0KKwl9DQorDQorCW1lbXNl
dChhbGxvY19tYXAsMCxzaXplKTsNCisNCisJcmV0dXJuIGVuZF9tZW07DQor
fQ0KKw0KKw0KKyNkZWZpbmUgTElORV9TSVpFIDEyOA0KKw0KK3N0YXRpYyBz
c2l6ZV90IHJlYWRfYWxsb2NhdGlvbnMgKHN0cnVjdCBmaWxlICpmaWxlLCBj
aGFyICpidWYsDQorCXNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQ0KK3sN
CisJc3RydWN0IGFsbG9jX3N0cnVjdCAqIGlkOw0KKwl1bnNpZ25lZCBsb25n
IHA7DQorCXVuc2lnbmVkIGxvbmcgaWR4Ow0KKwl1bnNpZ25lZCBsb25nIHRp
bWVzdGFtcDsNCisNCisJY2hhciBsaW5lIFtMSU5FX1NJWkVdOw0KKw0KKwlp
ZihwcG9zICE9ICZmaWxlLT5mX3BvcykNCisJCXJldHVybiAtRVNQSVBFOw0K
Kw0KKwlwID0gaWR4ID0gKnBwb3M7DQorDQorCWlmIChjb3VudCA8IDApDQor
CQlyZXR1cm4gLUVJTlZBTDsNCityZXBlYXQ6DQorCWlmIChpZHggPj0gRU5U
UklFUykNCisJCXJldHVybiAwOw0KKw0KKwlpZiAoYWxsb2NfbWFwW2lkeF0u
aWQpIHsNCisJCWlkID0gaWRfbWFwW2FsbG9jX21hcFtpZHhdLmlkXTsNCisJ
CXRpbWVzdGFtcCA9IChhbGxvY19tYXBbaWR4XS50aW1lc3RhbXA8PElEX0JJ
VFMpL0haOw0KKwkJY291bnQgPSBzcHJpbnRmKGxpbmUsIjwlcD4gJXM6JWQg
KCVsZClcbiIsDQorCQkJKHZvaWQgKikoaWR4Kk1JTl9NRU1CTE9DS19TSVpF
KSxpZC0+ZmlsZSxpZC0+bGluZSx0aW1lc3RhbXApOw0KKwkJY29weV90b191
c2VyKGJ1ZixsaW5lLGNvdW50KTsNCisJfSBlbHNlIHsNCisJCWlmICghaWR4
KSB7DQorCQkJY291bnQgPSBzcHJpbnRmKGxpbmUsIjwlcD4gamlmZmllcy5j
OiVkICglbGQpXG4iLCBOVUxMLCAwLCBqaWZmaWVzL0haKTsNCisJCQljb3B5
X3RvX3VzZXIoYnVmLGxpbmUsY291bnQpOw0KKwkJfSBlbHNlIHsNCisJCQlp
ZHgrKzsNCisJCQkqcHBvcyA9IGlkeDsNCisJCQkvKg0KKwkJCSAqIHRoZXJl
IGlzIGF0IGxlYXN0IG9uZSBhbGxvY2F0aW9uIGluIHRoZSBzeXN0ZW0NCisJ
CQkgKi8NCisJCQlnb3RvIHJlcGVhdDsNCisJCX0NCisJfQ0KKw0KKwlpZHgr
KzsNCisJKnBwb3MgPSBpZHg7DQorDQorCXJldHVybiBjb3VudDsNCit9DQor
DQorc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19tZW1sZWFr
X29wZXJhdGlvbnMgPSB7DQorCU5VTEwsCQkvKiBsc2VlayAqLw0KKwlyZWFk
X2FsbG9jYXRpb25zLA0KKwlOVUxMLAkJLyogd3JpdGUgKi8NCit9Ow0KKw0K
K3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfbWVtbGVha19pbm9kZV9v
cGVyYXRpb25zID0gew0KKwkmcHJvY19tZW1sZWFrX29wZXJhdGlvbnMsDQor
fTsNCisNCmRpZmYgLXVyTiBsaW51eC0yLjEuNzItdmlyZ2luL21tL3BhZ2Vf
YWxsb2MuYyBsaW51eC0yLjEuNzItbWVtbGVhay9tbS9wYWdlX2FsbG9jLmMN
Ci0tLSBsaW51eC0yLjEuNzItdmlyZ2luL21tL3BhZ2VfYWxsb2MuYwlUdWUg
SnVuIDE3IDAxOjM2OjAxIDE5OTcNCisrKyBsaW51eC0yLjEuNzItbWVtbGVh
ay9tbS9wYWdlX2FsbG9jLmMJVGh1IERlYyAxOCAxMTowMzozNSAxOTk3DQpA
QCAtMTMwLDcgKzEzMCwxMSBAQA0KIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl
KCZwYWdlX2FsbG9jX2xvY2ssIGZsYWdzKTsNCiB9DQogDQorI2lmbmRlZiBD
T05GSUdfTUVNTEVBSw0KIHZvaWQgX19mcmVlX3BhZ2Uoc3RydWN0IHBhZ2Ug
KnBhZ2UpDQorI2Vsc2UNCit2b2lkIHJlYWxfX2ZyZWVfcGFnZShzdHJ1Y3Qg
cGFnZSAqcGFnZSkNCisjZW5kaWYNCiB7DQogCWlmICghUGFnZVJlc2VydmVk
KHBhZ2UpICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJnBhZ2UtPmNvdW50KSkg
ew0KIAkJZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShwYWdlKTsNCkBAIC0xMzgs
NyArMTQyLDExIEBADQogCX0NCiB9DQogDQorI2lmbmRlZiBDT05GSUdfTUVN
TEVBSw0KIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVu
c2lnbmVkIGxvbmcgb3JkZXIpDQorI2Vsc2UNCit2b2lkIHJlYWxfZnJlZV9w
YWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgb3JkZXIp
DQorI2VuZGlmDQogew0KIAl1bnNpZ25lZCBsb25nIG1hcF9uciA9IE1BUF9O
UihhZGRyKTsNCiANCkBAIC0xOTQsNyArMjAyLDExIEBADQogCW1hcC0+YWdl
ID0gUEFHRV9JTklUSUFMX0FHRTsgXA0KIH0gd2hpbGUgKDApDQogDQorI2lm
bmRlZiBDT05GSUdfTUVNTEVBSw0KIHVuc2lnbmVkIGxvbmcgX19nZXRfZnJl
ZV9wYWdlcyhpbnQgcHJpb3JpdHksIHVuc2lnbmVkIGxvbmcgb3JkZXIsIGlu
dCBkbWEpDQorI2Vsc2UNCit1bnNpZ25lZCBsb25nIHJlYWxfX2dldF9mcmVl
X3BhZ2VzKGludCBwcmlvcml0eSwgdW5zaWduZWQgbG9uZyBvcmRlciwgaW50
IGRtYSkNCisjZW5kaWYNCiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQog
CWludCByZXNlcnZlZF9wYWdlczsNCmRpZmYgLXVyTiBsaW51eC0yLjEuNzIt
dmlyZ2luL21tL3NsYWIuYyBsaW51eC0yLjEuNzItbWVtbGVhay9tbS9zbGFi
LmMNCi0tLSBsaW51eC0yLjEuNzItdmlyZ2luL21tL3NsYWIuYwlUaHUgT2N0
IDIzIDExOjM2OjA2IDE5OTcNCisrKyBsaW51eC0yLjEuNzItbWVtbGVhay9t
bS9zbGFiLmMJVGh1IERlYyAxOCAxMDowOToyMCAxOTk3DQpAQCAtMTAyLDYg
KzEwMiwxMCBAQA0KIA0KICNpbmNsdWRlCTxsaW51eC9tbS5oPg0KICNpbmNs
dWRlCTxsaW51eC9zbGFiLmg+DQorI2lmZGVmIENPTkZJR19NRU1MRUFLDQor
I2RlZmluZSBfSU5fU0xBQl9DXw0KKyNpbmNsdWRlICJ1bndyYXAuaCINCisj
ZW5kaWYNCiAjaW5jbHVkZQk8bGludXgvaW50ZXJydXB0Lmg+DQogI2luY2x1
ZGUJPGxpbnV4L2NvbmZpZy5oPg0KICNpbmNsdWRlCTxsaW51eC9pbml0Lmg+
DQpkaWZmIC11ck4gbGludXgtMi4xLjcyLXZpcmdpbi9tbS91bndyYXAuaCBs
aW51eC0yLjEuNzItbWVtbGVhay9tbS91bndyYXAuaA0KLS0tIGxpbnV4LTIu
MS43Mi12aXJnaW4vbW0vdW53cmFwLmgJVGh1IEphbiAgMSAwMTowMDowMCAx
OTcwDQorKysgbGludXgtMi4xLjcyLW1lbWxlYWsvbW0vdW53cmFwLmgJVGh1
IERlYyAxOCAxMTozNjo0OCAxOTk3DQpAQCAtMCwwICsxLDMwIEBADQorI2lm
bmRlZiBfVU5XUkFQX0gNCisjZGVmaW5lIF9VTldSQVBfSA0KKw0KKy8qIHVu
d3JhcCBwYWdlX2FsbG9jLmMgZnVuY3Rpb25zIGZvciBhbnkgb3RoZXIgd3Jh
cHBlZCBhbGxvY2F0b3JzICovDQorI3VuZGVmIGZyZWVfcGFnZXMNCisjdW5k
ZWYgX19nZXRfZnJlZV9wYWdlcw0KKw0KKyNkZWZpbmUgZnJlZV9wYWdlcyBy
ZWFsX2ZyZWVfcGFnZXMNCisjZGVmaW5lIF9fZ2V0X2ZyZWVfcGFnZXMgcmVh
bF9fZ2V0X2ZyZWVfcGFnZXMNCisNCisvKiB1bndyYXAgc2xhYi5jIGZ1bmN0
aW9ucyAqLw0KKyNpZmRlZiBfSU5fU0xBQl9DXw0KKyN1bmRlZiBrbWVtX2Nh
Y2hlX2NyZWF0ZQ0KKyN1bmRlZiBrbWVtX2NhY2hlX3Nocmluaw0KKyN1bmRl
ZiBrbWVtX2NhY2hlX2FsbG9jDQorI3VuZGVmIGttZW1fY2FjaGVfZnJlZQ0K
KyN1bmRlZiBrbWFsbG9jDQorI3VuZGVmIGtmcmVlDQorI3VuZGVmIGtmcmVl
X3MNCisNCisjZGVmaW5lIGttZW1fY2FjaGVfY3JlYXRlIHJlYWxfa21lbV9j
YWNoZV9jcmVhdGUNCisjZGVmaW5lIGttZW1fY2FjaGVfc2hyaW5rIHJlYWxf
a21lbV9jYWNoZV9zaHJpbmsNCisjZGVmaW5lIGttZW1fY2FjaGVfYWxsb2Mg
cmVhbF9rbWVtX2NhY2hlX2FsbG9jDQorI2RlZmluZSBrbWVtX2NhY2hlX2Zy
ZWUgcmVhbF9rbWVtX2NhY2hlX2ZyZWUNCisjZGVmaW5lIGttYWxsb2MgcmVh
bF9rbWFsbG9jDQorI2RlZmluZSBrZnJlZSByZWFsX2tmcmVlDQorI2RlZmlu
ZSBrZnJlZV9zIHJlYWxfa2ZyZWVfcw0KKyNlbmRpZg0KKw0KKyNlbmRpZiAv
KiBfVU5XUkFQX0ggKi8NCmRpZmYgLXVyTiBsaW51eC0yLjEuNzItdmlyZ2lu
L25ldC9jb3JlL3NrYnVmZi5jIGxpbnV4LTIuMS43Mi1tZW1sZWFrL25ldC9j
b3JlL3NrYnVmZi5jDQotLS0gbGludXgtMi4xLjcyLXZpcmdpbi9uZXQvY29y
ZS9za2J1ZmYuYwlNb24gRGVjICAxIDA0OjI3OjE2IDE5OTcNCisrKyBsaW51
eC0yLjEuNzItbWVtbGVhay9uZXQvY29yZS9za2J1ZmYuYwlTYXQgRGVjICA2
IDA1OjUyOjMyIDE5OTcNCkBAIC0xMTMsNyArMTEzLDEyIEBADQogICoJdG8g
YmUgYSBnb29kIGlkZWEuDQogICovDQogDQorI2lmbmRlZiBDT05GSUdfTUVN
TEVBSw0KIHN0cnVjdCBza19idWZmICphbGxvY19za2IodW5zaWduZWQgaW50
IHNpemUsaW50IHByaW9yaXR5KQ0KKyNlbHNlDQorc3RydWN0IHNrX2J1ZmYg
KmFsbG9jX3NrYl93cmFwKHVuc2lnbmVkIGludCBzaXplLGludCBwcmlvcml0
eSwNCisJc3RydWN0IGFsbG9jX3N0cnVjdCAqIGlkKQ0KKyNlbmRpZg0KIHsN
CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCiAJdW5zaWduZWQgY2hhciAqYnB0
cjsNCkBAIC0xNDQsNyArMTQ5LDExIEBADQogCSAqCUFsbG9jYXRlIHNvbWUg
c3BhY2UNCiAJICovDQogCSANCisjaWZuZGVmIENPTkZJR19NRU1MRUFLDQog
CWJwdHIgPSBrbWFsbG9jKHNpemUscHJpb3JpdHkpOw0KKyNlbHNlDQorCWJw
dHIgPSBrbWFsbG9jX3dyYXBwZXIoc2l6ZSxwcmlvcml0eSxpZCk7DQorI2Vu
ZGlmDQogCWlmIChicHRyID09IE5VTEwpIHsNCiAJCWF0b21pY19pbmMoJm5l
dF9mYWlscyk7DQogCQlyZXR1cm4gTlVMTDsNCkBAIC0xOTgsNyArMjA3LDEx
IEBADQogew0KIAkvKiBkb24ndCBkbyBhbnl0aGluZyBpZiBzb21lYm9keSBz
dGlsbCB1c2VzIHVzICovDQogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZz
a2ItPmNvdW50KSkgew0KKyNpZm5kZWYgQ09ORklHX01FTUxFQUsNCiAJCWtm
cmVlKHNrYi0+aGVhZCk7DQorI2Vsc2UNCisJCWtmcmVlX3dyYXBwZXIoc2ti
LT5oZWFkKTsNCisjZW5kaWYNCiAJCWF0b21pY19kZWMoJm5ldF9za2Jjb3Vu
dCk7DQogCX0NCiB9DQpAQCAtMjE3LDcgKzIzMCwxMSBAQA0KIAkJCV9fa2Zy
ZWVfc2tibWVtKHNrYi0+ZGF0YV9za2IpOw0KIAkJfQ0KIAkJaWYgKGZyZWVf
aGVhZCkNCisjaWZuZGVmIENPTkZJR19NRU1MRUFLDQogCQkJa2ZyZWUoYWRk
cik7DQorI2Vsc2UNCisJCQlrZnJlZV93cmFwcGVyKGFkZHIpOw0KKyNlbmRp
Zg0KIAkJYXRvbWljX2RlYygmbmV0X3NrYmNvdW50KTsNCiAJfQ0KIH0NCkBA
IC0yMjYsNyArMjQzLDEyIEBADQogICoJRHVwbGljYXRlIGFuIHNrX2J1ZmYu
IFRoZSBuZXcgb25lIGlzIG5vdCBvd25lZCBieSBhIHNvY2tldC4NCiAgKi8N
CiANCisjaWZuZGVmIENPTkZJR19NRU1MRUFLDQogc3RydWN0IHNrX2J1ZmYg
KnNrYl9jbG9uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJpb3JpdHkp
DQorI2Vsc2UNCitzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2Nsb25lX3dyYXAoc3Ry
dWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5LA0KKwlzdHJ1Y3QgYWxs
b2Nfc3RydWN0ICogaWQpDQorI2VuZGlmDQogew0KIAlzdHJ1Y3Qgc2tfYnVm
ZiAqbjsNCiAJaW50IGluYnVmZiA9IDA7DQpAQCAtMjM3LDcgKzI1OSwxMSBA
QA0KIAkJc2tiLT5pbmNsb25lID0gU0tCX0NMT05FX09SSUc7DQogCQlpbmJ1
ZmYgPSBTS0JfQ0xPTkVfSU5MSU5FOw0KIAl9IGVsc2Ugew0KKyNpZm5kZWYg
Q09ORklHX01FTUxFQUsNCiAJCW4gPSBrbWFsbG9jKHNpemVvZigqbiksIHBy
aW9yaXR5KTsNCisjZWxzZQ0KKwkJbiA9IGttYWxsb2Nfd3JhcHBlcihzaXpl
b2YoKm4pLCBwcmlvcml0eSwgaWQpOw0KKyNlbmRpZg0KIAkJaWYgKCFuKQ0K
IAkJCXJldHVybiBOVUxMOw0KIAl9DQpAQCAtMjYzLDcgKzI4OSwxMiBAQA0K
ICAqCVRoaXMgaXMgc2xvd2VyLCBhbmQgY29waWVzIHRoZSB3aG9sZSBkYXRh
IGFyZWEgDQogICovDQogIA0KKyNpZm5kZWYgQ09ORklHX01FTUxFQUsNCiBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiX2NvcHkoc3RydWN0IHNrX2J1ZmYgKnNrYiwg
aW50IHByaW9yaXR5KQ0KKyNlbHNlDQorc3RydWN0IHNrX2J1ZmYgKnNrYl9j
b3B5X3dyYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5LA0K
KwlzdHJ1Y3QgYWxsb2Nfc3RydWN0ICogaWQpDQorI2VuZGlmDQogew0KIAlz
dHJ1Y3Qgc2tfYnVmZiAqbjsNCiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7DQpA
QCAtMjcyLDcgKzMwMywxMSBAQA0KIAkgKglBbGxvY2F0ZSB0aGUgY29weSBi
dWZmZXINCiAJICovDQogCSANCisjaWZuZGVmIENPTkZJR19NRU1MRUFLDQog
CW49YWxsb2Nfc2tiKHNrYi0+ZW5kIC0gc2tiLT5oZWFkLCBwcmlvcml0eSk7
DQorI2Vsc2UNCisJbj1hbGxvY19za2Jfd3JhcChza2ItPmVuZCAtIHNrYi0+
aGVhZCwgcHJpb3JpdHksIGlkKTsNCisjZW5kaWYNCiAJaWYobj09TlVMTCkN
CiAJCXJldHVybiBOVUxMOw0KIA0KQEAgLTM2NSwxMSArNDAwLDIwIEBADQog
CXJldHVybiBuOw0KIH0NCiAgIA0KKyNpZm5kZWYgQ09ORklHX01FTUxFQUsN
CiBzdHJ1Y3Qgc2tfYnVmZiAqZGV2X2FsbG9jX3NrYih1bnNpZ25lZCBpbnQg
bGVuZ3RoKQ0KKyNlbHNlDQorc3RydWN0IHNrX2J1ZmYgKmRldl9hbGxvY19z
a2Jfd3JhcCh1bnNpZ25lZCBpbnQgbGVuZ3RoLA0KKwlzdHJ1Y3QgYWxsb2Nf
c3RydWN0ICogaWQpDQorI2VuZGlmDQogew0KIAlzdHJ1Y3Qgc2tfYnVmZiAq
c2tiOw0KIA0KKyNpZm5kZWYgQ09ORklHX01FTUxFQUsNCiAJc2tiID0gYWxs
b2Nfc2tiKGxlbmd0aCsxNiwgR0ZQX0FUT01JQyk7DQorI2Vsc2UNCisJc2ti
ID0gYWxsb2Nfc2tiX3dyYXAobGVuZ3RoKzE2LCBHRlBfQVRPTUlDLCBpZCk7
DQorI2VuZGlmDQogCWlmIChza2IpDQogCQlza2JfcmVzZXJ2ZShza2IsMTYp
Ow0KIAlyZXR1cm4gc2tiOw0KZGlmZiAtdXJOIGxpbnV4LTIuMS43Mi12aXJn
aW4vbmV0L25ldHN5bXMuYyBsaW51eC0yLjEuNzItbWVtbGVhay9uZXQvbmV0
c3ltcy5jDQotLS0gbGludXgtMi4xLjcyLXZpcmdpbi9uZXQvbmV0c3ltcy5j
CVNhdCBEZWMgIDYgMDQ6NDk6MTMgMTk5Nw0KKysrIGxpbnV4LTIuMS43Mi1t
ZW1sZWFrL25ldC9uZXRzeW1zLmMJU2F0IERlYyAgNiAwNTo1MjozMiAxOTk3
DQpAQCAtMzI5LDExICszMjksMjEgQEANCiBFWFBPUlRfU1lNQk9MKGZkZGlf
dHlwZV90cmFucyk7DQogI2VuZGlmIC8qIENPTkZJR19GRERJICovDQogRVhQ
T1JUX1NZTUJPTChldGhfY29weV9hbmRfc3VtKTsNCisjaWZuZGVmIENPTkZJ
R19NRU1MRUFLDQogRVhQT1JUX1NZTUJPTChhbGxvY19za2IpOw0KKyNlbHNl
DQorRVhQT1JUX1NZTUJPTChhbGxvY19za2Jfd3JhcCk7DQorI2VuZGlmDQog
RVhQT1JUX1NZTUJPTChfX2tmcmVlX3NrYik7DQorI2lmbmRlZiBDT05GSUdf
TUVNTEVBSw0KIEVYUE9SVF9TWU1CT0woc2tiX2Nsb25lKTsNCiBFWFBPUlRf
U1lNQk9MKHNrYl9jb3B5KTsNCiBFWFBPUlRfU1lNQk9MKGRldl9hbGxvY19z
a2IpOw0KKyNlbHNlDQorRVhQT1JUX1NZTUJPTChza2JfY2xvbmVfd3JhcCk7
DQorRVhQT1JUX1NZTUJPTChza2JfY29weV93cmFwKTsNCitFWFBPUlRfU1lN
Qk9MKGRldl9hbGxvY19za2Jfd3JhcCk7DQorI2VuZGlmDQogRVhQT1JUX1NZ
TUJPTChuZXRpZl9yeCk7DQogRVhQT1JUX1NZTUJPTChkZXZfYWRkX3BhY2sp
Ow0KIEVYUE9SVF9TWU1CT0woZGV2X3JlbW92ZV9wYWNrKTsNCg==
---876492614-56553521-882460910=:5589--