Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Jun 2009 21:52:27 -0700 (PDT)
From:      Neelkanth Natu <neelnatu@yahoo.com>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        freebsd-mips@freebsd.org
Subject:   Re: FreeBSD/mips booting on Sibyte 1250
Message-ID:  <25885.49433.qm@web34405.mail.mud.yahoo.com>

next in thread | raw e-mail | index | archive | help

--0-303183881-1245214347=:49433
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Hi Warner,=0A=0AI have attached the diffs against -current at revision 1942=
80.=0A=0AThere are some changes in the diff that are unrelated to the sibyt=
e=0Awork and probably should be committed separately.=0A=0AI can provide mo=
re information about changes to specific files if necessary.=0A=0Abest=0ANe=
el=0A=0A--- On Fri, 6/12/09, M. Warner Losh <imp@bsdimp.com> wrote:=0A=0A> =
From: M. Warner Losh <imp@bsdimp.com>=0A> Subject: Re: FreeBSD/mips booting=
 on Sibyte 1250=0A> To: neelnatu@yahoo.com=0A> Cc: freebsd-mips@freebsd.org=
=0A> Date: Friday, June 12, 2009, 8:33 PM=0A> In message: <856232.92278.qm@=
web34401.mail.mud.yahoo.com>=0A> =A0 =A0 =A0 =A0 =A0 =A0 Neelkanth Natu=0A>=
 <neelnatu@yahoo.com>=0A> writes:=0A> : I don't want to keep holding diffs =
against -current for=0A> this, so I was=0A> : hoping to get this checked in=
. How do I go about doing=0A> that?=0A> =0A> diffs would be a good start :)=
=0A> =0A> Usually, we pass them through /projects/mips/* to make sure=0A> t=
hat we=0A> have a good integration branch before we collapse/merge the=0A> =
changes=0A> into -current.=0A> =0A> Warner=0A>=0A=0A=0A      
--0-303183881-1245214347=:49433
Content-Type: text/plain; name="sibyte_diff.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sibyte_diff.txt"

ZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj
L3N5cy9jb25mL2ZpbGVzLm1pcHMgLi9zeXMvY29uZi9maWxlcy5taXBzCi0t
LSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9jb25m
L2ZpbGVzLm1pcHMJMjAwOS0wNi0xNSAyMzoyNzoyNi4yMDgyMzEwMDAgLTA3
MDAKKysrIC4vc3lzL2NvbmYvZmlsZXMubWlwcwkyMDA5LTA2LTE2IDE3OjMx
OjIxLjcyNzQwOTAwMCAtMDcwMApAQCAtOTQsNSArOTQsNiBAQAogCiBkZXYv
Y2ZlL2NmZV9hcGkuYwkJb3B0aW9uYWwJY2ZlCiBkZXYvY2ZlL2NmZV9jb25z
b2xlLmMJCW9wdGlvbmFsCWNmZV9jb25zb2xlCitkZXYvY2ZlL2NmZV9lbnYu
YwkJb3B0aW9uYWwJY2ZlX2VudgogI2Rldi9jZmUvY2ZlX3Jlc291cmNlLmMJ
CW9wdGlvbmFsCWNmZQkjIG5vdCB5ZXQgbmVlZGVkCiAKZGlmZiAtTnVyZCAv
dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9jb25mL29w
dGlvbnMubWlwcyAuL3N5cy9jb25mL29wdGlvbnMubWlwcwotLS0gL3UvbmVl
bG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvY29uZi9vcHRpb25z
Lm1pcHMJMjAwOS0wNi0xNSAyMzoyNzoyNi4yODYyMzIwMDAgLTA3MDAKKysr
IC4vc3lzL2NvbmYvb3B0aW9ucy5taXBzCTIwMDktMDYtMTYgMTc6MzE6MjEu
NzMyNDE1MDAwIC0wNzAwCkBAIC0zMyw2ICszMyw3IEBACiBDUFVfTUlQUzY0
CW9wdF9nbG9iYWwuaAogQ1BVX05PRlBVCW9wdF9nbG9iYWwuaAogQ1BVX1NF
TlRSWTUJb3B0X2dsb2JhbC5oCitDUFVfU0IxCQlvcHRfZ2xvYmFsLmgKIAog
SVNBX01JUFMxCW9wdF9jcHV0eXBlLmgKIElTQV9NSVBTMwlvcHRfY3B1dHlw
ZS5oCkBAIC00NCw2ICs0NSw4IEBACiBZQU1PTgkJb3B0X2dsb2JhbC5oCiBD
RkUJCW9wdF9nbG9iYWwuaAogQ0ZFX0NPTlNPTEUJb3B0X2dsb2JhbC5oCitD
RkVfRU5WCQlvcHRfZ2xvYmFsLmgKK0NGRV9FTlZfU0laRQlvcHRfZ2xvYmFs
LmgKIAogS0VSTlBIWVNBRERSCW9wdF9nbG9iYWwuaAogS0VSTlZJUlRBRERS
CW9wdF9nbG9iYWwuaApAQCAtNTUsMyArNTgsOCBAQAogCiBUSUNLX1VTRV9Z
QU1PTl9GUkVRCW9wdF9nbG9iYWwuaAogVElDS19VU0VfTUFMVEFfUlRDCW9w
dF9nbG9iYWwuaAorCitQQ0lfSU9TUEFDRV9TSVpFCW9wdF9nbG9iYWwuaAor
UENJX0lPU1BBQ0VfQUREUglvcHRfZ2xvYmFsLmgKKworTUFYTUVNCQkJb3B0
X2dsb2JhbC5oCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9j
dXJyZW50L3NyYy9zeXMvZGV2L2NmZS9jZmVfYXBpLmMgLi9zeXMvZGV2L2Nm
ZS9jZmVfYXBpLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu
dC9zcmMvc3lzL2Rldi9jZmUvY2ZlX2FwaS5jCTIwMDktMDYtMTUgMjM6Mjc6
MzEuNzk5NDQ4MDAwIC0wNzAwCisrKyAuL3N5cy9kZXYvY2ZlL2NmZV9hcGku
YwkyMDA5LTA2LTE2IDE3OjMxOjIxLjczODQxMjAwMCAtMDcwMApAQCAtMTYw
LDcgKzE2MCw3IEBACiB7CiAgICAgY2ZlX3hpb2NiX3QgeGlvY2I7CiAKLSAg
ICB4aW9jYi54aW9jYl9mY29kZSA9IENGRV9DTURfRU5WX1NFVDsKKyAgICB4
aW9jYi54aW9jYl9mY29kZSA9IENGRV9DTURfRU5WX0VOVU07CiAgICAgeGlv
Y2IueGlvY2Jfc3RhdHVzID0gMDsKICAgICB4aW9jYi54aW9jYl9oYW5kbGUg
PSAwOwogICAgIHhpb2NiLnhpb2NiX2ZsYWdzID0gMDsKZGlmZiAtTnVyZCAv
dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9kZXYvY2Zl
L2NmZV9jb25zb2xlLmMgLi9zeXMvZGV2L2NmZS9jZmVfY29uc29sZS5jCi0t
LSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9kZXYv
Y2ZlL2NmZV9jb25zb2xlLmMJMjAwOS0wNi0xNSAyMzoyNzozMS44MjU0NDkw
MDAgLTA3MDAKKysrIC4vc3lzL2Rldi9jZmUvY2ZlX2NvbnNvbGUuYwkyMDA5
LTA2LTE2IDE3OjMxOjIxLjc0NzQxMDAwMCAtMDcwMApAQCAtODQsMTQgKzg0
LDEyIEBACiBzdGF0aWMgdm9pZAogY25fZHJ2aW5pdCh2b2lkICp1bnVzZWQp
CiB7Ci0JY2hhciBvdXRwdXRbMzJdOwogCXN0cnVjdCB0dHkgKnRwOwogCiAJ
aWYgKGNmZV9jb25zZGV2LmNuX3ByaSAhPSBDTl9ERUFEICYmCiAJICAgIGNm
ZV9jb25zZGV2LmNuX25hbWVbMF0gIT0gJ1wwJykgewogCQl0cCA9IHR0eV9h
bGxvYygmY2ZlX3R0eWRldnN3LCBOVUxMKTsKLQkJdHR5X21ha2VkZXYodHAs
IE5VTEwsICIlcyIsIG91dHB1dCk7Ci0JCXR0eV9tYWtlYWxpYXModHAsICJj
ZmVjb25zIik7CisJCXR0eV9tYWtlZGV2KHRwLCBOVUxMLCAiY2ZlY29ucyIp
OwogCX0KIH0KIApAQCAtMTE3LDE1ICsxMTUsMjEgQEAKIHN0YXRpYyB2b2lk
CiBjZmVfdHR5X291dHdha2V1cChzdHJ1Y3QgdHR5ICp0cCkKIHsKLQlpbnQg
bGVuOworCWludCBsZW4sIHdyaXR0ZW4sIHJjOwogCXVfY2hhciBidWZbQ0ZF
QlVSU1RMRU5dOwogCiAJZm9yICg7OykgewogCQlsZW4gPSB0dHlkaXNjX2dl
dGModHAsIGJ1Ziwgc2l6ZW9mIGJ1Zik7CiAJCWlmIChsZW4gPT0gMCkKIAkJ
CWJyZWFrOwotCQl3aGlsZSAoY2ZlX3dyaXRlKGNvbmhhbmRsZSwgYnVmLCBs
ZW4pID09IDApCi0JCQljb250aW51ZTsKKworCQl3cml0dGVuID0gMDsKKwkJ
d2hpbGUgKHdyaXR0ZW4gPCBsZW4pIHsKKwkJCXJjID0gY2ZlX3dyaXRlKGNv
bmhhbmRsZSwgJmJ1Zlt3cml0dGVuXSwgbGVuIC0gd3JpdHRlbik7CisJCQlp
ZiAocmMgPCAwKQorCQkJCWJyZWFrOworCQkJd3JpdHRlbiArPSByYzsKKwkJ
fQogCX0KIH0KIApAQCAtMTg0LDEzICsxODgsOSBAQAogc3RhdGljIGludAog
Y2ZlX2NuZ2V0YyhzdHJ1Y3QgY29uc2RldiAqY3ApCiB7Ci0JaW50IHJlc3Vs
dDsKIAl1bnNpZ25lZCBjaGFyIGNoOwogCi0Jd2hpbGUgKChyZXN1bHQgPSBj
ZmVfcmVhZChjb25oYW5kbGUsICZjaCwgMSkpID09IDApCi0JCWNvbnRpbnVl
OwotCi0JaWYgKHJlc3VsdCA+IDApIHsKKwlpZiAoY2ZlX3JlYWQoY29uaGFu
ZGxlLCAmY2gsIDEpID09IDEpIHsKICNpZiBkZWZpbmVkKEtEQikgJiYgZGVm
aW5lZChBTFRfQlJFQUtfVE9fREVCVUdHRVIpCiAJCWludCBrZGJfYnJrOwog
CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3Ny
Yy9zeXMvZGV2L2NmZS9jZmVfZW52LmMgLi9zeXMvZGV2L2NmZS9jZmVfZW52
LmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz
L2Rldi9jZmUvY2ZlX2Vudi5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAw
MDAwIC0wODAwCisrKyAuL3N5cy9kZXYvY2ZlL2NmZV9lbnYuYwkyMDA5LTA1
LTEyIDAxOjEyOjQ0LjcyODg2NTAwMCAtMDcwMApAQCAtMCwwICsxLDc0IEBA
CisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwOSBOZWVsa2FudGggTmF0dQor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8
c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1
ZGUgPHN5cy9zeXN0bS5oPgorCisjaW5jbHVkZSA8ZGV2L2NmZS9jZmVfYXBp
Lmg+CisKK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2lmbmRlZglDRkVf
RU5WX1NJWkUKKyNkZWZpbmUJQ0ZFX0VOVl9TSVpFCVBBR0VfU0laRQkvKiBk
ZWZhdWx0IGlzIG9uZSBwYWdlICovCisjZW5kaWYKKworZXh0ZXJuIHZvaWQg
Y2ZlX2Vudl9pbml0KHZvaWQpOworCitzdGF0aWMgY2hhciBjZmVfZW52X2J1
ZltDRkVfRU5WX1NJWkVdOworCit2b2lkCitjZmVfZW52X2luaXQodm9pZCkK
K3sKKwlpbnQgaWR4LCBsZW47CisJY2hhciBuYW1lWzY0XSwgdmFsWzEyOF0s
ICpjcCwgKmNwbGltOworCisJY3AgPSBjZmVfZW52X2J1ZjsKKwljcGxpbSA9
IGNwICsgQ0ZFX0VOVl9TSVpFOworCisJaWR4ID0gMDsKKwl3aGlsZSAoMSkg
eworCQlpZiAoY2ZlX2VudW1lbnYoaWR4LCBuYW1lLCBzaXplb2YobmFtZSks
IHZhbCwgc2l6ZW9mKHZhbCkpICE9IDApCisJCQlicmVhazsKKworCQlpZiAo
Ym9vdHZlcmJvc2UpCisJCQlwcmludGYoIkltcG9ydGluZyBDRkUgZW52OiBc
IiVzPSVzXCJcbiIsIG5hbWUsIHZhbCk7CisKKwkJLyoKKwkJICogbmFtZT12
YWxcMFwwCisJCSAqLworCQlsZW4gPSBzdHJsZW4obmFtZSkgKyAxICsgc3Ry
bGVuKHZhbCkgKyAxICsgMTsKKwkJaWYgKGNwbGltIC0gY3AgPCBsZW4pCisJ
CQlwcmludGYoIk5vIHNwYWNlIHRvIHN0b3JlIENGRSBlbnY6IFwiJXM9JXNc
IlxuIiwKKwkJCQluYW1lLCB2YWwpOworCQllbHNlCisJCQljcCArPSBzcHJp
bnRmKGNwLCAiJXM9JXMiLCBuYW1lLCB2YWwpICsgMTsKKwkJKytpZHg7CisJ
fQorCSpjcCsrID0gJ1wwJzsKKworCWtlcm5fZW52cCA9IGNmZV9lbnZfYnVm
OworfQpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu
dC9zcmMvc3lzL21pcHMvY29uZi9TV0FSTSAuL3N5cy9taXBzL2NvbmYvU1dB
Uk0KLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz
L21pcHMvY29uZi9TV0FSTQkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAw
MCAtMDgwMAorKysgLi9zeXMvbWlwcy9jb25mL1NXQVJNCTIwMDktMDYtMTMg
MTI6MTc6NDQuNDk5NTg4MDAwIC0wNzAwCkBAIC0wLDAgKzEsODIgQEAKKyMK
KyMgJElkOiAvL2RlcG90L3VzZXIvbmVlbG5hdHUvZnJlZWJzZF9zaWJ5dGUv
c3JjL3N5cy9taXBzL2NvbmYvU1dBUk0jNyAkCisjCisKK2lkZW50CQlTV0FS
TQorb3B0aW9ucwkJQ1BVX05PRlBVCitvcHRpb25zCQlDUFVfU0IxCisKK2Zp
bGVzCQkiLi4vc2lieXRlL2ZpbGVzLnNpYnl0ZSIKK2hpbnRzCQkiU1dBUk0u
aGludHMiCisKK29wdGlvbnMJCVBDSV9JT1NQQUNFX0FERFI9MHhGQzAwMDAw
MAorb3B0aW9ucwkJUENJX0lPU1BBQ0VfU0laRT0weDAyMDAwMDAwCisKKyMK
KyMgMzItYml0IGtlcm5lbCBjYW5ub3QgZGVhbCB3aXRoIHBoeXNpY2FsIG1l
bW9yeSBiZXlvbmQgNEdCCisjCitvcHRpb25zCQlNQVhNRU09NDA5NioxMDI0
CisKK29wdGlvbnMJCUNGRQorb3B0aW9ucwkJQ0ZFX0NPTlNPTEUKK29wdGlv
bnMJCUNGRV9FTlYKK29wdGlvbnMJCUFMVF9CUkVBS19UT19ERUJVR0dFUgor
CisjIGNmZSBsb2FkZXIgZXhwZWN0cyBrZXJuZWwgYXQgMHg4MDAwMTAwMCBm
b3IgbWlwczMyIHcvbyBiYWNrd2FyZHMKKyMgb2Zmc2V0cyBpbiB0aGUgbGlu
a2VkIGVsZiBpbWFnZSAoc2VlIGxkc2NyaXB0IGhhY2spCisjIFhYWCBjYW4g
d2UgY29uZGl0aW9uYWxpemUgdGhlIGxpbmtlciBzdHVmZiBvbiBvcHRpb25z
IENGRT8KK29wdGlvbnMJCUtFUk5WSVJUQUREUj0weDgwMDAxMDAwCisKK21h
a2VvcHRpb25zCUxEU0NSSVBUX05BTUU9CWxkc2NyaXB0Lm1pcHMuY2ZlCisK
KyNjcHUJCUNQVV9NSVBTNjQKKyNvcHRpb25zIAlJU0FfTUlQUzY0CisjbWFr
ZW9wdGlvbnMJQVJDSF9GTEFHUz0iLW1hcmNoPW1pcHM2NCAtbWdwNjQgLW1h
Ymk9bzY0IgorY3B1CQlDUFVfTUlQUzMyCitvcHRpb25zIAlJU0FfTUlQUzMy
CittYWtlb3B0aW9ucwlBUkNIX0ZMQUdTPSItbWFyY2g9bWlwczMyIgorCitt
YWtlb3B0aW9ucwlERUJVRz0tZwkJI0J1aWxkIGtlcm5lbCB3aXRoIGdkYigx
KSBkZWJ1ZyBzeW1ib2xzCittYWtlb3B0aW9ucwlNT0RVTEVTX09WRVJSSURF
PSIiCisKK29wdGlvbnMJCUREQgorb3B0aW9ucwkJS0RCCisKK29wdGlvbnMJ
CVNDSEVEXzRCU0QJCSM0QlNEIHNjaGVkdWxlcgorb3B0aW9ucwkJSU5FVAkJ
CSNJbnRlck5FVHdvcmtpbmcKK29wdGlvbnMJCU5GU0NMSUVOVAkJI05ldHdv
cmsgRmlsZXN5c3RlbSBDbGllbnQKK29wdGlvbnMJCU5GU19ST09UCQkjTkZT
IHVzYWJsZSBhcyAvLCByZXF1aXJlcyBORlNDTElFTlQKK29wdGlvbnMJCVBT
RVVET0ZTCQkjUHNldWRvLWZpbGVzeXN0ZW0gZnJhbWV3b3JrCitvcHRpb25z
CQlfS1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcgI1Bvc2l4IFAxMDAzXzFC
IHJlYWwtdGltZSBleHRlbnNpb25zCisKKyMgRGVidWdnaW5nIGZvciB1c2Ug
aW4gLWN1cnJlbnQKK29wdGlvbnMJCUlOVkFSSUFOVFMKK29wdGlvbnMJCUlO
VkFSSUFOVF9TVVBQT1JUCitvcHRpb25zCQlXSVRORVNTCisKK29wdGlvbnMJ
CU1EX1JPT1QKK29wdGlvbnMJCU1EX1JPT1RfU0laRT00MDk2CitvcHRpb25z
IAlGRlMJCQkjRmFzdCBmaWxlc3lzdGVtCisKK2RldmljZQkJcGNpCitkZXZp
Y2UJCW1paWJ1cworZGV2aWNlCQliZ2UKK2RldmljZQkJbG9vcAorZGV2aWNl
CQlldGhlcgorZGV2aWNlCQltZAorCitvcHRpb25zCQlVU0JfREVCVUcKK2Rl
dmljZSB1c2IKK2RldmljZSBvaGNpCitkZXZpY2UgdWhjaQorZGV2aWNlIGVo
Y2kKKworZGV2aWNlIHVtYXNzCisKK2RldmljZSBzY2J1cworZGV2aWNlIGRh
CisKK2RldmljZQkJYXRhCitkZXZpY2UJCWF0YWRpc2sKK2RldmljZQkJYXRh
cGljZAorb3B0aW9ucwkJQVRBX1NUQVRJQ19JRApkaWZmIC1OdXJkIC91L25l
ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvY29uZi9T
V0FSTS5oaW50cyAuL3N5cy9taXBzL2NvbmYvU1dBUk0uaGludHMKLS0tIC91
L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvY29u
Zi9TV0FSTS5oaW50cwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAt
MDgwMAorKysgLi9zeXMvbWlwcy9jb25mL1NXQVJNLmhpbnRzCTIwMDktMDUt
MzAgMTk6MzU6NDUuNTgxMjU4MDAwIC0wNzAwCkBAIC0wLDAgKzEsMTcgQEAK
KyMgJEZyZWVCU0QkCitoaW50LnpiYnVzLjAuYXQ9Im5leHVzMCIKK2hpbnQu
emJwY2kuMC5hdD0iemJidXMwIgoraGludC5zY2QuMC5hdD0iemJidXMwIgor
CisjCisjIFNXQVJNIElERSBpbnRlcmZhY2UgaXMgb24gdGhlIGdlbmVyaWMg
YnVzIGF0IGNoaXAgc2VsZWN0IDQuCisjIFRoZSBDUzQgcmVnaW9uIGlzIDY0
S0IgaW4gc2l6ZSBhbmQgc3RhcnRzIGF0IDB4MTAwQjAwMDAuCisjIFRoZSBJ
REUgaW50ZXJydXB0IGlzIHdpcmVkIHRvIEdQSU80IChpbnRzcmMgMzYgdG8g
dGhlIGludGVycnVwdCBtYXBwZXIpCisjCitoaW50LmF0YS4wLmF0PSJ6YmJ1
czAiCitoaW50LmF0YS4wLm1hZGRyPTB4MTAwQjAwMDAKK2hpbnQuYXRhLjAu
bXNpemU9MHgxMDAwMAoraGludC5hdGEuMC5pcnE9MzYKKyNoaW50LmF0YS4w
LmRpc2FibGVkPTAKKyNoaW50LmF0YS4wLnJlZ29mZnNldD0weDFGMAorI2hp
bnQuYXRhLjAucmVnc2hpZnQ9NQpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0
L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9jcHUuaCAu
L3N5cy9taXBzL2luY2x1ZGUvY3B1LmgKLS0tIC91L25lZWxuYXR1L3A0L2Zy
ZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9jcHUuaAkyMDA5
LTA2LTE1IDIzOjI3OjUxLjQ5NDIzMzAwMCAtMDcwMAorKysgLi9zeXMvbWlw
cy9pbmNsdWRlL2NwdS5oCTIwMDktMDYtMTYgMTc6MzE6MjEuNzUyNDE1MDAw
IC0wNzAwCkBAIC0xNTQsNyArMTU0LDExIEBACiAgKiBUaGUgYml0cyBpbiB0
aGUgQ09ORklHIHJlZ2lzdGVyCiAgKi8KICNkZWZpbmUgQ0ZHX0swX1VOQ0FD
SEVECTIKKyNpZiBkZWZpbmVkKENQVV9TQjEpCisjZGVmaW5lIENGR19LMF9D
T0hFUkVOVAk1CS8qIGNhY2hlYWJsZSBjb2hlcmVudCAqLworI2Vsc2UKICNk
ZWZpbmUJQ0ZHX0swX0NBQ0hFRAkzCisjZW5kaWYKIAogLyoKICAqIFRoZSBi
aXRzIGluIHRoZSBjb250ZXh0IHJlZ2lzdGVyLgpkaWZmIC1OdXJkIC91L25l
ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVk
ZS9jcHVyZWdzLmggLi9zeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAotLS0g
L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9p
bmNsdWRlL2NwdXJlZ3MuaAkyMDA5LTA2LTE1IDIzOjI3OjUxLjUwMDIzMDAw
MCAtMDcwMAorKysgLi9zeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAkyMDA5
LTA2LTE2IDE3OjMxOjIxLjc1ODQxNzAwMCAtMDcwMApAQCAtMTAzLDYgKzEw
Myw4IEBACiAvKiBDUFUgZGVwZW5kZW50IG10YzAgaGF6YXJkIGhvb2sgKi8K
ICNpZmRlZiBUQVJHRVRfT0NURU9OCiAjZGVmaW5lCUNPUDBfU1lOQyAgbm9w
OyBub3A7IG5vcDsgbm9wOyBub3A7CisjZWxpZiBkZWZpbmVkKENQVV9TQjEp
CisjZGVmaW5lIENPUDBfU1lOQyAgc3Nub3A7IHNzbm9wOyBzc25vcDsgc3Nu
b3A7IHNzbm9wOyBzc25vcDsgc3Nub3A7IHNzbm9wOyBzc25vcAogI2Vsc2UK
ICNkZWZpbmUJQ09QMF9TWU5DCQkvKiBub3RoaW5nICovCiAjZW5kaWYKZGlm
ZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5
cy9taXBzL2luY2x1ZGUvaW50ci5oIC4vc3lzL21pcHMvaW5jbHVkZS9pbnRy
LmgKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz
L21pcHMvaW5jbHVkZS9pbnRyLmgJMjAwOS0wNi0xNSAyMzoyNzo1MS41MzUy
MzUwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvaW5jbHVkZS9pbnRyLmgJMjAw
OS0wNi0xNiAxNzozMToyMS43NjY0MTQwMDAgLTA3MDAKQEAgLTc1LDggKzc1
LDggQEAKIAogdHlwZWRlZiB2b2lkICgqbWFza19mbikodm9pZCAqKTsKIAot
dm9pZCBtaXBzX21hc2tfaXJxKHZvaWQpOwotdm9pZCBtaXBzX3VubWFza19p
cnEodm9pZCk7Cit2b2lkIG1pcHNfbWFza19pcnEodm9pZCAqKTsKK3ZvaWQg
bWlwc191bm1hc2tfaXJxKHZvaWQgKik7CiAKIHN0cnVjdCB0cmFwZnJhbWU7
CiB2b2lkCW1pcHNfc2V0X2ludHIoaW50IHByaSwgdWludDMyX3QgbWFzaywK
ZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj
L3N5cy9taXBzL2luY2x1ZGUvaW50cl9tYWNoZGVwLmggLi9zeXMvbWlwcy9p
bmNsdWRlL2ludHJfbWFjaGRlcC5oCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVl
YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL2luY2x1ZGUvaW50cl9tYWNoZGVw
LmgJMjAwOS0wNi0xNSAyMzoyNzo1MS41MzcyMzMwMDAgLTA3MDAKKysrIC4v
c3lzL21pcHMvaW5jbHVkZS9pbnRyX21hY2hkZXAuaAkyMDA5LTA2LTE2IDE3
OjMxOjIxLjc3NDQwOTAwMCAtMDcwMApAQCAtMzQsNiArMzQsMjcgQEAKIAog
c3RydWN0IHRyYXBmcmFtZTsKIAorLyoKKyAqIEFuIGludGVycnVwdCBzb3Vy
Y2UgaXMgZGVmaW5lZCBieSBpdHMgaW50ZXJydXB0IG51bWJlciBhbmQgaGFu
ZGxlcnMgdG8KKyAqIG1hc2sgYW5kIHVubWFzayB0aGUgc291cmNlcyB0aGF0
IHRyaWdnZXIgaXQuCisgKgorICogT25jZSBhbiBpbnRlcnJ1cHQgaGFuZGxl
ciBpcyBlc3RhYmxpc2hlZCBmb3IgYSBwYXJ0aWN1bGFyIGludGVycnVwdCBu
dW1iZXIKKyAqIHdlIGFsd2F5cyBrZWVwIGl0IGVuYWJsZWQgZnJvbSB0aGUg
bWlwcyBjb3JlIHBvaW50IG9mIHZpZXcuIEhvd2V2ZXIgd2UgbWF5CisgKiBj
aG9vc2UgdG8gbWFzayB0aGUgaW50ZXJydXB0IHNvdXJjZSBmZWVkaW5nIGlu
dG8gaXQgdW50aWwgdGhlIGl0aHJlYWQgaGFzCisgKiBoYWQgYSBjaGFuY2Ug
dG8gcnVuLgorICoKKyAqIFhYWCBob3cgZG9lcyB0aGlzIHdvcmsgd2l0aCBw
bGF0Zm9ybXMgdGhhdCBoYXZlIG5vIGludGVycnVwdCBtYXBwZXIgZmVlZGlu
ZworICogaW50ZXJydXB0cyB0byB0aGUgY3B1IGNvcmU/CisgKi8KK3N0cnVj
dCBpbnRzcmMgeworCWludAlpbnRybnVtOworCXZvaWQgCSgqbWFza19mdW5j
KShzdHJ1Y3QgaW50c3JjICppc3JjKTsKKwl2b2lkIAkoKnVubWFza19mdW5j
KShzdHJ1Y3QgaW50c3JjICppc3JjKTsKK307CisKK2ludCBjcHVfcmVnaXN0
ZXJfaGFyZF9pbnRzcmMoc3RydWN0IGludHNyYyAqaXNyYyk7CitpbnQgY3B1
X3JlZ2lzdGVyX3NvZnRfaW50c3JjKHN0cnVjdCBpbnRzcmMgKmlzcmMpOwor
CiB2b2lkIGNwdV9lc3RhYmxpc2hfaGFyZGludHIoY29uc3QgY2hhciAqLCBp
bnQgKCopKHZvaWQqKSwgdm9pZCAoKikodm9pZCopLCAKICAgICB2b2lkICos
IGludCwgaW50LCB2b2lkICoqKTsKIHZvaWQgY3B1X2VzdGFibGlzaF9zb2Z0
aW50cihjb25zdCBjaGFyICosIGludCAoKikodm9pZCopLCB2b2lkICgqKSh2
b2lkKiksIApkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3Vy
cmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9tZF92YXIuaCAuL3N5cy9taXBz
L2luY2x1ZGUvbWRfdmFyLmgKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2Rf
Y3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9tZF92YXIuaAkyMDA5LTA2
LTE1IDIzOjI3OjUxLjU0NTIzMzAwMCAtMDcwMAorKysgLi9zeXMvbWlwcy9p
bmNsdWRlL21kX3Zhci5oCTIwMDktMDYtMTYgMTc6MzE6MjEuNzkzNDIwMDAw
IC0wNzAwCkBAIC0zOSw3ICszOSw3IEBACiAvKgogICogTWlzY2VsbGFuZW91
cyBtYWNoaW5lLWRlcGVuZGVudCBkZWNsYXJhdGlvbnMuCiAgKi8KLWV4dGVy
bglpbnQJTWF4bWVtOworZXh0ZXJuCWxvbmcJTWF4bWVtOwogZXh0ZXJuCWNo
YXIJc2lnY29kZVtdOwogZXh0ZXJuCWludAlzenNpZ2NvZGUsIHN6b3NpZ2Nv
ZGU7CiAKQEAgLTUyLDYgKzUyLDcgQEAKIHVfbG9uZwlrdnRvcCh2b2lkICph
ZGRyKTsKIGludAlpc19waHlzaWNhbF9tZW1vcnkodm1fb2Zmc2V0X3QgYWRk
cik7CiBpbnQJaXNfY2FjaGVhYmxlX21lbSh2bV9vZmZzZXRfdCBwYSk7Citp
bnQJaXNfY29oZXJlbnRfbWVtKHZtX29mZnNldF90IHBhKTsKIAogI2RlZmlu
ZQlNSVBTX0RFQlVHICAgMAogCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQv
ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3BsdGZtLmgg
Li9zeXMvbWlwcy9pbmNsdWRlL3BsdGZtLmgKLS0tIC91L25lZWxuYXR1L3A0
L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9wbHRmbS5o
CTIwMDktMDYtMTUgMjM6Mjc6NTEuNTY5MjM1MDAwIC0wNzAwCisrKyAuL3N5
cy9taXBzL2luY2x1ZGUvcGx0Zm0uaAkyMDA5LTA2LTE2IDE3OjMxOjIxLjgw
MTQxNTAwMCAtMDcwMApAQCAtNiw2ICs2LDEyIEBACiAjaWZuZGVmIF9NQUNI
SU5FX1BMVEZNX0hfCiAjZGVmaW5lCV9NQUNISU5FX1BMVEZNX0hfCiAKKyNp
ZmRlZiBDUFVfU0IxCisvKgorICogWFhYIE1ha2Ugc3VyZSB0aGF0IHRoZXNl
IG1hY3JvcyBhcmUgbm90IGRlZmluZWQgZm9yIHRoZSBTQi0xIGNwdQorICog
c2luY2UgdGhleSBkb24ndCBtYWtlIGFueSBzZW5zZSBmb3IgaXQuCisgKi8K
KyNlbHNlCiAvKgogICogVGhpcyBmaWxlcyBjb250YWlucyBwbGF0Zm9ybS1z
cGVjaWZpYyBkZWZpbml0aW9ucy4KICAqLwpAQCAtMjUsNSArMzEsNiBAQAog
I2VuZGlmCiAjZGVmaW5lCUFERFJfTlMxNjU1MF9VQVJUMQkweDFlZjE0MDAw
CS8qIFVBUlQgKi8KICNkZWZpbmUJVkFERFJfTlMxNjU1MF9VQVJUMQkweGJl
ZjE0MDAwCS8qIFVBUlQgKi8KKyNlbmRpZgogCiAjZW5kaWYgLyogIV9NQUNI
SU5FX1BMVEZNX0hfICovCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJl
ZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3B0ZS5oIC4vc3lz
L21pcHMvaW5jbHVkZS9wdGUuaAotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJz
ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3B0ZS5oCTIwMDktMDYt
MTUgMjM6Mjc6NTEuNTk0MjM2MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL2lu
Y2x1ZGUvcHRlLmgJMjAwOS0wNi0xNiAxNzozMToyMS44MDg0MTIwMDAgLTA3
MDAKQEAgLTEwNSw3ICsxMDUsMTEgQEAKICNkZWZpbmUgUFRFX09ERFBHICAg
ICAgIDB4MDAwMDEwMDAgCiAvKiNkZWZpbmUJUEdfQVRUUgkJMHgwMDAwMDAz
ZiAgTm90IFVzZWQgKi8KICNkZWZpbmUJUFRFX1VOQ0FDSEVECTB4MDAwMDAw
MTAKKyNpZmRlZiBDUFVfU0IxCisjZGVmaW5lCVBURV9DQUNIRQkweDAwMDAw
MDI4CS8qIGNhY2hlYWJsZSBjb2hlcmVudCAqLworI2Vsc2UKICNkZWZpbmUJ
UFRFX0NBQ0hFCTB4MDAwMDAwMTgKKyNlbmRpZgogLyojZGVmaW5lCVBHX0NB
Q0hFTU9ERQkweDAwMDAwMDM4IE5vdCBVc2VkKi8KICNkZWZpbmUJUFRFX1JP
UEFHRQkoUFRFX1YgfCBQVEVfUk8gfCBQVEVfQ0FDSEUpIC8qIFdyaXRlIHBy
b3RlY3RlZCAqLwogI2RlZmluZQlQVEVfUldQQUdFCShQVEVfViB8IFBURV9N
IHwgUFRFX0NBQ0hFKSAgLyogTm90IHdyLXByb3Qgbm90IGNsZWFuICovCmRp
ZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9z
eXMvbWlwcy9taXBzL2F1dG9jb25mLmMgLi9zeXMvbWlwcy9taXBzL2F1dG9j
b25mLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMv
c3lzL21pcHMvbWlwcy9hdXRvY29uZi5jCTIwMDktMDYtMTUgMjM6Mjc6NTEu
NzA1MjM5MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvYXV0b2NvbmYu
YwkyMDA5LTA2LTE2IDE3OjMxOjIxLjgxMzQxMjAwMCAtMDcwMApAQCAtOTMs
NiArOTMsMTcgQEAKIGNvbmZpZ3VyZShkdW1teSkKIAl2b2lkICpkdW1teTsK
IHsKKwlyZWdpc3Rlcl90IHNyOworCisJLyoKKwkgKiBFbmFibGUgaW50ZXJy
dXB0cyBvbiB0aGUgcHJvY2Vzc29yLiBUaGUgaW50ZXJydXB0cyBhcmUgc3Rp
bGwKKwkgKiBkaXNhYmxlZCBieSB0aGUgaW50ZXJydXB0IG1hc2sgYml0cyB1
bnRpbCBpbnRlcnJ1cHQgaGFuZGxlcnMKKwkgKiBhcmUgcmVnaXN0ZXJlZC4K
KwkgKi8KKwlzciA9IG1pcHNfcmRfc3RhdHVzKCk7CisJc3IgJj0gfk1JUFNf
SU5UX01BU0s7CisJc3IgfD0gTUlQU19TUl9JTlRfSUU7CisJbWlwc193cl9z
dGF0dXMoc3IpOwogCiAJLyogaW5pdGlhbGl6ZSBuZXcgYnVzIGFyY2hpdGVj
dHVyZSAqLwogCXJvb3RfYnVzX2NvbmZpZ3VyZSgpOwpkaWZmIC1OdXJkIC91
L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlw
cy9idXNkbWFfbWFjaGRlcC5jIC4vc3lzL21pcHMvbWlwcy9idXNkbWFfbWFj
aGRlcC5jCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj
L3N5cy9taXBzL21pcHMvYnVzZG1hX21hY2hkZXAuYwkyMDA5LTA2LTE1IDIz
OjI3OjUxLjcwNzI0MDAwMCAtMDcwMAorKysgLi9zeXMvbWlwcy9taXBzL2J1
c2RtYV9tYWNoZGVwLmMJMjAwOS0wNi0xNiAxNzozMToyMS44MTg0MTgwMDAg
LTA3MDAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL2J1
cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvY2FjaGUuaD4KICNpbmNsdWRlIDxt
YWNoaW5lL2NwdWZ1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL21kX3Zhci5o
PgogCiBzdHJ1Y3QgYnVzX2RtYV90YWcgewogCWJ1c19kbWFfdGFnX3QJCXBh
cmVudDsKQEAgLTI3MCw4ICsyNzEsNyBAQAogCW5ld3RhZy0+bWFwX2NvdW50
ID0gMDsKIAluZXd0YWctPl93YmFzZSA9IDA7CiAJbmV3dGFnLT5fcGh5c2Jh
c2UgPSAwOwotCS8qIFhYWE1JUFM6IFNob3VsZCB3ZSBsaW1pdCB3aW5kb3cg
c2l6ZSB0byBhbW91bnQgb2YgcGh5c2ljYWwgbWVtb3J5ICovCi0JbmV3dGFn
LT5fd3NpemUgPSBNSVBTX0tTRUcxX1NUQVJUIC0gTUlQU19LU0VHMF9TVEFS
VDsKKwluZXd0YWctPl93c2l6ZSA9IHB0b2EoTWF4bWVtKTsKIAlpZiAobG9j
a2Z1bmMgIT0gTlVMTCkgewogCQluZXd0YWctPmxvY2tmdW5jID0gbG9ja2Z1
bmM7CiAJCW5ld3RhZy0+bG9ja2Z1bmNhcmcgPSBsb2NrZnVuY2FyZzsKQEAg
LTM5Nyw2ICszOTcsNyBAQAogICAgICAgICAgICAgICAgICBidXNfZG1hbWFw
X3QgKm1hcHApCiB7CiAJYnVzX2RtYW1hcF90IG5ld21hcCA9IE5VTEw7CisJ
dm9pZCAqdG1wYWRkcjsKIAogCWludCBtZmxhZ3M7CiAKQEAgLTQxNyw3ICs0
MTgsOSBAQAogCSptYXBwID0gbmV3bWFwOwogCW5ld21hcC0+ZG1hdCA9IGRt
YXQ7CiAJCi0gICAgICAgIGlmIChkbWF0LT5tYXhzaXplIDw9IFBBR0VfU0la
RSkgeworICAgICAgICBpZiAoZG1hdC0+bWF4c2l6ZSA8PSBQQUdFX1NJWkUg
JiYKKwkgICAgZG1hdC0+YWxpZ25tZW50IDwgZG1hdC0+bWF4c2l6ZSAmJgor
CSAgICBkbWF0LT5sb3dhZGRyID49IHB0b2EoKHZtX3BhZGRyX3QpTWF4bWVt
KSkgewogICAgICAgICAgICAgICAgICp2YWRkciA9IG1hbGxvYyhkbWF0LT5t
YXhzaXplLCBNX0RFVkJVRiwgbWZsYWdzKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvKgpAQCAtNDUwLDE5ICs0NTMsMjAgQEAKIAkJ
fQogCQkqbWFwcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIChF
Tk9NRU0pOworCX0gZWxzZSBpZiAoKHVpbnRwdHJfdCkqdmFkZHIgJiAoZG1h
dC0+YWxpZ25tZW50IC0gMSkpIHsKKwkJcHJpbnRmKCJidXNfZG1hbWVtX2Fs
bG9jIGZhaWxlZCB0byBhbGlnbiBtZW1vcnkgcHJvcGVybHkuXG4iKTsKIAl9
Ci0JaWYgKGZsYWdzICYgQlVTX0RNQV9DT0hFUkVOVCkgewotCQl2b2lkICp0
bXBhZGRyID0gKHZvaWQgKikqdmFkZHI7CiAKLQkJaWYgKHRtcGFkZHIpIHsK
LQkJCXRtcGFkZHIgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMSh2dG9w
aHlzKHRtcGFkZHIpKTsKLQkJCW5ld21hcC0+b3JpZ2J1ZmZlciA9ICp2YWRk
cjsKLQkJCW5ld21hcC0+YWxsb2NidWZmZXIgPSB0bXBhZGRyOwotCQkJbWlw
c19kY2FjaGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KSp2YWRkciwKLQkJ
CSAgICBkbWF0LT5tYXhzaXplKTsKLQkJCSp2YWRkciA9IHRtcGFkZHI7Ci0J
CX0gZWxzZQotCQkJbmV3bWFwLT5vcmlnYnVmZmVyID0gbmV3bWFwLT5hbGxv
Y2J1ZmZlciA9IE5VTEw7CisJdG1wYWRkciA9ICh2b2lkICopKnZhZGRyOwor
CWlmICgoZmxhZ3MgJiBCVVNfRE1BX0NPSEVSRU5UKSAmJiAhaXNfY29oZXJl
bnRfbWVtKHZ0b3BoeXModG1wYWRkcikpKSB7CisJCUtBU1NFUlQodnRvcGh5
cyh0bXBhZGRyKSA8IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTLAorCQkJKCJi
dXNfZG1hbWVtX2FsbG9jOiBwaHlzYWRkciAweCUweCBjYW5ub3QgIgorCQkJ
ICJiZSBtYXBwZWQgaW4gS1NFRzEiLCB2dG9waHlzKHRtcGFkZHIpKSk7CisJ
CXRtcGFkZHIgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMSh2dG9waHlz
KHRtcGFkZHIpKTsKKwkJbmV3bWFwLT5vcmlnYnVmZmVyID0gKnZhZGRyOwor
CQluZXdtYXAtPmFsbG9jYnVmZmVyID0gdG1wYWRkcjsKKwkJbWlwc19kY2Fj
aGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KSp2YWRkciwgZG1hdC0+bWF4
c2l6ZSk7CisJCSp2YWRkciA9IHRtcGFkZHI7CiAJfSBlbHNlIAogCQluZXdt
YXAtPm9yaWdidWZmZXIgPSBuZXdtYXAtPmFsbG9jYnVmZmVyID0gTlVMTDsK
ICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQ4MSw3ICs0ODUsOSBAQAogCQkg
ICAgKCJUcnlpbmcgdG8gZnJlZWluZyB0aGUgd3JvbmcgRE1BIGJ1ZmZlciIp
KTsKIAkJdmFkZHIgPSBtYXAtPm9yaWdidWZmZXI7CiAJfQotICAgICAgICBp
ZiAoZG1hdC0+bWF4c2l6ZSA8PSBQQUdFX1NJWkUpCisgICAgICAgIGlmIChk
bWF0LT5tYXhzaXplIDw9IFBBR0VfU0laRSAmJgorCSAgICBkbWF0LT5hbGln
bm1lbnQgPCBkbWF0LT5tYXhzaXplICYmCisJICAgIGRtYXQtPmxvd2FkZHIg
Pj0gcHRvYShNYXhtZW0pKQogCQlmcmVlKHZhZGRyLCBNX0RFVkJVRik7CiAg
ICAgICAgIGVsc2UgewogCQljb250aWdmcmVlKHZhZGRyLCBkbWF0LT5tYXhz
aXplLCBNX0RFVkJVRik7CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJl
ZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL2NwdS5jIC4vc3lzL21p
cHMvbWlwcy9jcHUuYwotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJy
ZW50L3NyYy9zeXMvbWlwcy9taXBzL2NwdS5jCTIwMDktMDYtMTUgMjM6Mjc6
NTEuNzE1MjM5MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvY3B1LmMJ
MjAwOS0wNi0xNiAxNzozMToyMS44MjQ0MTEwMDAgLTA3MDAKQEAgLTkyLDkg
KzkyLDkgQEAKICAgICBjcHVpbmZvLT50bGJfbmVudHJpZXMgPSAoKGNmZzEg
JiBNSVBTX0NPTkZJRzFfVExCU1pfTUFTSykgPj4gTUlQU19DT05GSUcxX1RM
QlNaX1NISUZUKSArIDE7CiAKICAgICAvKiBMMSBpbnN0cnVjdGlvbiBjYWNo
ZS4gKi8KLSAgICB0bXAgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJRzFf
SUxfTUFTSykgPj4gTUlQU19DT05GSUcxX0lMX1NISUZUKSArIDEpOworICAg
IHRtcCA9IChjZmcxICYgTUlQU19DT05GSUcxX0lMX01BU0spID4+IE1JUFNf
Q09ORklHMV9JTF9TSElGVDsKICAgICBpZiAodG1wICE9IDApIHsKLQljcHVp
bmZvLT5sMS5pY19saW5lc2l6ZSA9IHRtcDsKKwljcHVpbmZvLT5sMS5pY19s
aW5lc2l6ZSA9IDEgPDwgKHRtcCArIDEpOwogCWNwdWluZm8tPmwxLmljX253
YXlzID0gKCgoY2ZnMSAmIE1JUFNfQ09ORklHMV9JQV9NQVNLKSA+PiBNSVBT
X0NPTkZJRzFfSUFfU0hJRlQpKSArIDE7CiAJY3B1aW5mby0+bDEuaWNfbnNl
dHMgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJRzFfSVNfTUFTSykgPj4g
TUlQU19DT05GSUcxX0lTX1NISUZUKSArIDYpOwogCWNwdWluZm8tPmwxLmlj
X3NpemUgPSBjcHVpbmZvLT5sMS5pY19saW5lc2l6ZSAqIGNwdWluZm8tPmwx
LmljX25zZXRzIApAQCAtMTAyLDkgKzEwMiw5IEBACiAgICAgfQogCiAgICAg
LyogTDEgZGF0YSBjYWNoZS4gKi8KLSAgICB0bXAgPSAxIDw8ICgoKGNmZzEg
JiBNSVBTX0NPTkZJRzFfRExfTUFTSykgPj4gTUlQU19DT05GSUcxX0RMX1NI
SUZUKSArIDEpOworICAgIHRtcCA9IChjZmcxICYgTUlQU19DT05GSUcxX0RM
X01BU0spID4+IE1JUFNfQ09ORklHMV9ETF9TSElGVDsKICAgICBpZiAodG1w
ICE9IDApIHsKLQljcHVpbmZvLT5sMS5kY19saW5lc2l6ZSA9IHRtcDsKKwlj
cHVpbmZvLT5sMS5kY19saW5lc2l6ZSA9IDEgPDwgKHRtcCArIDEpOwogCWNw
dWluZm8tPmwxLmRjX253YXlzID0gKCgoY2ZnMSAmIE1JUFNfQ09ORklHMV9E
QV9NQVNLKSA+PiBNSVBTX0NPTkZJRzFfREFfU0hJRlQpKSArIDE7CiAJY3B1
aW5mby0+bDEuZGNfbnNldHMgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJ
RzFfRFNfTUFTSykgPj4gTUlQU19DT05GSUcxX0RTX1NISUZUKSArIDYpOwog
I2lmZGVmIFRBUkdFVF9PQ1RFT04KZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9w
NC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvaW50cl9tYWNo
ZGVwLmMgLi9zeXMvbWlwcy9taXBzL2ludHJfbWFjaGRlcC5jCi0tLSAvdS9u
ZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMv
aW50cl9tYWNoZGVwLmMJMjAwOS0wNi0xNSAyMzoyNzo1MS43MzcyNDIwMDAg
LTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy9pbnRyX21hY2hkZXAuYwkyMDA5
LTA2LTE2IDE3OjMxOjIxLjgyOTQxMjAwMCAtMDcwMApAQCAtNTMsMTYgKzUz
LDk3IEBACiBzdGF0aWMgaW50IGxhc3RfcHJpbnRlZCA9IDA7CiAjZW5kaWYK
IAorc3RhdGljIHN0cnVjdCBpbnRzcmMgKmhhcmRpbnRyX3NyY3NbTkhBUkRf
SVJRU107CitzdGF0aWMgc3RydWN0IGludHNyYyAqc29mdGludHJfc3Jjc1tO
U09GVF9JUlFTXTsKKworc3RhdGljIGludAorY3B1X3JlZ2lzdGVyX2ludHNy
YyhzdHJ1Y3QgaW50c3JjICppbnRzcmNzW10sIGludCBsaW1pdCwgc3RydWN0
IGludHNyYyAqaXNyYykKK3sKKwlpbnQgaW50cm51bTsKKwkKKwlpbnRybnVt
ID0gaXNyYy0+aW50cm51bTsKKwlpZiAoaW50cm51bSA8IDAgfHwgaW50cm51
bSA+PSBsaW1pdCkKKwkJcmV0dXJuIChFSU5WQUwpOworCisJLyoKKwkgKiBY
WFggbG9ja2luZz8KKwkgKi8KKwlpZiAoaW50c3Jjc1tpbnRybnVtXSAhPSBO
VUxMKQorCQlyZXR1cm4gKEVFWElTVCk7CisJZWxzZQorCQlpbnRzcmNzW2lu
dHJudW1dID0gaXNyYzsKKwlyZXR1cm4gKDApOworfQorCitpbnQKK2NwdV9y
ZWdpc3Rlcl9oYXJkX2ludHNyYyhzdHJ1Y3QgaW50c3JjICppc3JjKQorewor
CisJcmV0dXJuIChjcHVfcmVnaXN0ZXJfaW50c3JjKGhhcmRpbnRyX3NyY3Ms
IE5IQVJEX0lSUVMsIGlzcmMpKTsKK30KKworaW50CitjcHVfcmVnaXN0ZXJf
c29mdF9pbnRzcmMoc3RydWN0IGludHNyYyAqaXNyYykKK3sKKworCXJldHVy
biAoY3B1X3JlZ2lzdGVyX2ludHNyYyhzb2Z0aW50cl9zcmNzLCBOU09GVF9J
UlFTLCBpc3JjKSk7Cit9CisKIHZvaWQKLW1pcHNfbWFza19pcnEodm9pZCkK
K21pcHNfbWFza19pcnEodm9pZCAqYXJnKQogeworCXN0cnVjdCBpbnRzcmMg
KmlzcmMgPSBhcmc7CiAKKwlpZiAoaXNyYyAhPSBOVUxMKQorCQkoKmlzcmMt
Pm1hc2tfZnVuYykoaXNyYyk7CiB9CiAKIHZvaWQKLW1pcHNfdW5tYXNrX2ly
cSh2b2lkKQorbWlwc191bm1hc2tfaXJxKHZvaWQgKmFyZykKK3sKKwlzdHJ1
Y3QgaW50c3JjICppc3JjID0gYXJnOworCisJaWYgKGlzcmMgIT0gTlVMTCkK
KwkJKCppc3JjLT51bm1hc2tfZnVuYykoaXNyYyk7Cit9CisKKyNkZWZpbmUJ
U1JfSEFSRF9JUlFfTUFTSyhpcnEpICgoMSA8PCAoKGlycSkgKyAyKSkgPDwg
OCkKKyNkZWZpbmUJU1JfU09GVF9JUlFfTUFTSyhpcnEpICgoMSA8PCAoKGly
cSkgKyAwKSkgPDwgOCkKKworc3RhdGljIHZvaWQKK2NwdV9kaXNhYmxlX2hh
cmRfaXJxKGludCBpcnEpCit7CisJS0FTU0VSVChpcnEgPj0gMCAmJiBpcnEg
PCBOSEFSRF9JUlFTLAorCQkoImNwdV9kaXNhYmxlX2hhcmRfaXJxOiBpbnZh
bGlkIGlycSAlZCIsIGlycSkpOworCisJbWlwc193cl9zdGF0dXMobWlwc19y
ZF9zdGF0dXMoKSAmIH5TUl9IQVJEX0lSUV9NQVNLKGlycSkpOworfQorCitz
dGF0aWMgdm9pZAorY3B1X2VuYWJsZV9oYXJkX2lycShpbnQgaXJxKQogewor
CUtBU1NFUlQoaXJxID49IDAgJiYgaXJxIDwgTkhBUkRfSVJRUywKKwkJKCJj
cHVfZW5hYmxlX2hhcmRfaXJxOiBpbnZhbGlkIGlycSAlZCIsIGlycSkpOwog
CisJbWlwc193cl9zdGF0dXMobWlwc19yZF9zdGF0dXMoKSB8IFNSX0hBUkRf
SVJRX01BU0soaXJxKSk7Cit9CisKK3N0YXRpYyB2b2lkCitjcHVfZGlzYWJs
ZV9zb2Z0X2lycShpbnQgaXJxKQoreworCUtBU1NFUlQoaXJxID49IDAgJiYg
aXJxIDwgTlNPRlRfSVJRUywKKwkJKCJjcHVfZGlzYWJsZV9zb2Z0X2lycTog
aW52YWxpZCBpcnEgJWQiLCBpcnEpKTsKKworCW1pcHNfd3Jfc3RhdHVzKG1p
cHNfcmRfc3RhdHVzKCkgJiB+U1JfU09GVF9JUlFfTUFTSyhpcnEpKTsKK30K
Kworc3RhdGljIHZvaWQKK2NwdV9lbmFibGVfc29mdF9pcnEoaW50IGlycSkK
K3sKKwlLQVNTRVJUKGlycSA+PSAwICYmIGlycSA8IE5TT0ZUX0lSUVMsCisJ
CSgiY3B1X2VuYWJsZV9zb2Z0X2lycTogaW52YWxpZCBpcnEgJWQiLCBpcnEp
KTsKKworCW1pcHNfd3Jfc3RhdHVzKG1pcHNfcmRfc3RhdHVzKCkgfCBTUl9T
T0ZUX0lSUV9NQVNLKGlycSkpOwogfQogCiB2b2lkCkBAIC04MCw5ICsxNjEs
MjAgQEAKIAlpZiAoaXJxIDwgMCB8fCBpcnEgPj0gTkhBUkRfSVJRUykKIAkJ
cGFuaWMoIiVzIGNhbGxlZCBmb3IgdW5rbm93biBoYXJkIGludHIgJWQiLCBf
X2Z1bmNfXywgaXJxKTsKIAorCS8qCisJICogWFhYIERpc2FibGUgdGhlIGhh
cmQgaXJxCisJICoKKwkgKiBJdCBhcHBlYXJzIHRoYXQgdGhlcmUgaXMgYSBy
YWNlIGJldHdlZW4gaW50cl9ldmVudF9hZGRfaGFuZGxlcigpCisJICogYW5k
IGludHJfZXZlbnRfaGFuZGxlKCkgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGlm
IHdlIHJlY2VpdmUgYW4KKwkgKiBpbnRlcnJ1cHQgd2hpbGUgd2UgYXJlIGFk
ZGluZyB0aGUgaGFuZGxlci4KKwkgKgorCSAqIFdvcmsgYXJvdW5kIHRoYXQg
YnkgZGlzYWJsaW5nIHRoZSBoYXJkIGlycSB0ZW1wb3JhcmlseS4KKwkgKi8K
KwljcHVfZGlzYWJsZV9oYXJkX2lycShpcnEpOworCiAJZXZlbnQgPSBoYXJk
aW50cl9ldmVudHNbaXJxXTsKIAlpZiAoZXZlbnQgPT0gTlVMTCkgewotCQll
cnJvciA9IGludHJfZXZlbnRfY3JlYXRlKCZldmVudCwgKHZvaWQgKilpcnEs
IDAsIGlycSwKKwkJZXJyb3IgPSBpbnRyX2V2ZW50X2NyZWF0ZSgmZXZlbnQs
IGhhcmRpbnRyX3NyY3NbaXJxXSwgMCwgaXJxLAogCQkgICAgKG1hc2tfZm4p
bWlwc19tYXNrX2lycSwgKG1hc2tfZm4pbWlwc191bm1hc2tfaXJxLAogCQkg
ICAgTlVMTCwgTlVMTCwgImhhcmQgaW50ciVkOiIsIGlycSk7CiAJCWlmIChl
cnJvcikKQEAgLTEwMSw3ICsxOTMsNyBAQAogCWludHJfZXZlbnRfYWRkX2hh
bmRsZXIoZXZlbnQsIG5hbWUsIGZpbHQsIGhhbmRsZXIsIGFyZywKIAkgICAg
aW50cl9wcmlvcml0eShmbGFncyksIGZsYWdzLCBjb29raWVwKTsKIAotCW1p
cHNfd3Jfc3RhdHVzKG1pcHNfcmRfc3RhdHVzKCkgfCAoKCgxIDw8IGlycSkg
PDwgOCkgPDwgMikpOworCWNwdV9lbmFibGVfaGFyZF9pcnEoaXJxKTsKIH0K
IAogdm9pZApAQCAtMTE3LDkgKzIwOSwxMSBAQAogCWlmIChpcnEgPCAwIHx8
IGlycSA+IE5TT0ZUX0lSUVMpCiAJCXBhbmljKCIlcyBjYWxsZWQgZm9yIHVu
a25vd24gaGFyZCBpbnRyICVkIiwgX19mdW5jX18sIGlycSk7CiAKKwljcHVf
ZGlzYWJsZV9zb2Z0X2lycShpcnEpOworCiAJZXZlbnQgPSBzb2Z0aW50cl9l
dmVudHNbaXJxXTsKIAlpZiAoZXZlbnQgPT0gTlVMTCkgewotCQllcnJvciA9
IGludHJfZXZlbnRfY3JlYXRlKCZldmVudCwgKHZvaWQgKilpcnEsIDAsIGly
cSwKKwkJZXJyb3IgPSBpbnRyX2V2ZW50X2NyZWF0ZSgmZXZlbnQsIHNvZnRp
bnRyX3NyY3NbaXJxXSwgMCwgaXJxLAogCQkgICAgKG1hc2tfZm4pbWlwc19t
YXNrX2lycSwgKG1hc2tfZm4pbWlwc191bm1hc2tfaXJxLAogCQkgICAgTlVM
TCwgTlVMTCwgImludHIlZDoiLCBpcnEpOwogCQlpZiAoZXJyb3IpCkBAIC0x
MzAsNyArMjI0LDcgQEAKIAlpbnRyX2V2ZW50X2FkZF9oYW5kbGVyKGV2ZW50
LCBuYW1lLCBmaWx0LCBoYW5kbGVyLCBhcmcsCiAJICAgIGludHJfcHJpb3Jp
dHkoZmxhZ3MpLCBmbGFncywgY29va2llcCk7CiAKLQltaXBzX3dyX3N0YXR1
cyhtaXBzX3JkX3N0YXR1cygpIHwgKCgoMTw8IGlycSkgPDwgOCkpKTsKKwlj
cHVfZW5hYmxlX3NvZnRfaXJxKGlycSk7CiB9CiAKIHZvaWQKZGlmZiAtTnVy
ZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBz
L21pcHMvbG9jb3JlLlMgLi9zeXMvbWlwcy9taXBzL2xvY29yZS5TCi0tLSAv
dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21p
cHMvbG9jb3JlLlMJMjAwOS0wNi0xNSAyMzoyNzo1MS43MzkyNDEwMDAgLTA3
MDAKKysrIC4vc3lzL21pcHMvbWlwcy9sb2NvcmUuUwkyMDA5LTA2LTE2IDE3
OjMxOjIxLjgzNDQxNjAwMCAtMDcwMApAQCAtMTM4LDcgKzEzOCwxMSBAQAog
CW10YzAJdDIsIENPUF8wX1NUQVRVU19SRUcKIAlDT1AwX1NZTkMKIAkvKiBN
YWtlIHN1cmUgS1NFRzAgaXMgY2FjaGVkICovCisjaWZkZWYgQ1BVX1NCMQor
CWxpCXQwLCBDRkdfSzBfQ09IRVJFTlQKKyNlbHNlCiAJbGkJdDAsIENGR19L
MF9DQUNIRUQKKyNlbmRpZgogCW10YzAJdDAsIE1JUFNfQ09QXzBfQ09ORklH
CiAJQ09QMF9TWU5DCiAKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVl
YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvbWFjaGRlcC5jIC4vc3lz
L21pcHMvbWlwcy9tYWNoZGVwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVi
c2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy9tYWNoZGVwLmMJMjAwOS0w
Ni0xNSAyMzoyNzo1MS43NDgyNDAwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMv
bWlwcy9tYWNoZGVwLmMJMjAwOS0wNi0xNiAxNzozMToyMS44NDg0MTUwMDAg
LTA3MDAKQEAgLTEwNCw2ICsxMDQsNyBAQAogCiBpbnQgY29sZCA9IDE7CiBs
b25nIHJlYWxtZW0gPSAwOworbG9uZyBNYXhtZW0gPSAwOwogaW50IGNwdV9j
bG9jayA9IE1JUFNfREVGQVVMVF9IWjsKIFNZU0NUTF9JTlQoX2h3LCBPSURf
QVVUTywgY2xvY2tyYXRlLCBDVExGTEFHX1JELCAKICAgICAmY3B1X2Nsb2Nr
LCAwLCAiQ1BVIGluc3RydWN0aW9uIGNsb2NrIHJhdGUiKTsKQEAgLTI1NSwx
MCArMjU2LDcgQEAKIAlwcm9jX2xpbmt1cCgmcHJvYzAsICZ0aHJlYWQwKTsK
IAl0aHJlYWQwLnRkX2tzdGFjayA9IGtzdGFjazA7CiAJdGhyZWFkMC50ZF9r
c3RhY2tfcGFnZXMgPSBLU1RBQ0tfUEFHRVMgLSAxOwotCWlmICh0aHJlYWQw
LnRkX2tzdGFjayAmICgxIDw8IFBBR0VfU0hJRlQpKQotCQl0aHJlYWQwLnRk
X21kLm1kX3JlYWxzdGFjayA9IHRocmVhZDAudGRfa3N0YWNrICsgUEFHRV9T
SVpFOwotCWVsc2UKLQkJdGhyZWFkMC50ZF9tZC5tZF9yZWFsc3RhY2sgPSB0
aHJlYWQwLnRkX2tzdGFjazsKKwl0aHJlYWQwLnRkX21kLm1kX3JlYWxzdGFj
ayA9IHJvdW5kdXAyKHRocmVhZDAudGRfa3N0YWNrLCBQQUdFX1NJWkUgKiAy
KTsKIAkvKiBJbml0aWFsaXplIHBjcHUgaW5mbyBvZiBjcHUtemVybyAqLwog
I2lmZGVmIFNNUAogCXBjcHVfaW5pdCgmX19wY3B1WzBdLCAwLCBzaXplb2Yo
c3RydWN0IHBjcHUpKTsKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVl
YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvbWVtLmMgLi9zeXMvbWlw
cy9taXBzL21lbS5jCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJl
bnQvc3JjL3N5cy9taXBzL21pcHMvbWVtLmMJMjAwOS0wNi0xNSAyMzoyNzo1
MS43NTIyNDEwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy9tZW0uYwky
MDA5LTA2LTE2IDE3OjMxOjIxLjg1MzQxOTAwMCAtMDcwMApAQCAtMTAxLDgg
KzEwMSwxNSBAQAogCQkJdm1fcGFkZHJfdCBwYTsKIAkJCXJlZ2lzdGVyIGlu
dCBvOwogCisjaWZkZWYgQ1BVX1NCMQorCQkJaWYgKCFpc19waHlzaWNhbF9t
ZW1vcnkodikgfHwKKwkJCSAgICAhaXNfcGh5c2ljYWxfbWVtb3J5KHJvdW5k
dXAyKHYsIFBBR0VfU0laRSkgLSAxKSkgeworCQkJCXJldHVybiAoRUZBVUxU
KTsKKwkJCX0KKyNlbHNlCiAJCQlpZiAodiArIGMgPiAoU0RSQU1fQUREUl9T
VEFSVCArIGN0b2IocGh5c21lbSkpKQogCQkJCXJldHVybiAoRUZBVUxUKTsK
KyNlbmRpZgogCiAJCQlpZiAoaXNfY2FjaGVhYmxlX21lbSh2KSAmJiBpc19j
YWNoZWFibGVfbWVtKHYgKyBjKSkgewogCQkJCXN0cnVjdCBmcGFnZSAqZnA7
CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3Ny
Yy9zeXMvbWlwcy9taXBzL25leHVzLmMgLi9zeXMvbWlwcy9taXBzL25leHVz
LmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz
L21pcHMvbWlwcy9uZXh1cy5jCTIwMDktMDYtMTUgMjM6Mjc6NTEuNzYyMjQy
MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvbmV4dXMuYwkyMDA5LTA2
LTE2IDE3OjMxOjIxLjg2NjQxODAwMCAtMDcwMApAQCAtNzYsNiArNzYsNyBA
QAogCiBzdGF0aWMgc3RydWN0IHJtYW4gaXJxX3JtYW47CiBzdGF0aWMgc3Ry
dWN0IHJtYW4gbWVtX3JtYW47CitzdGF0aWMgc3RydWN0IHJtYW4gcG9ydF9y
bWFuOwogCiAjaWZkZWYgbm90eWV0CiAvKgpAQCAtMTczLDYgKzE3NCwyMSBA
QAogCQlwYW5pYygiJXM6IG1lbV9ybWFuIiwgX19mdW5jX18pOwogCX0KIAor
CS8qCisJICogTUlQUyBoYXMgbm8gY29uY2VwdCBvZiB0aGUgeDg2IEkvTyBh
ZGRyZXNzIHNwYWNlIGJ1dCBzb21lIGNwdXMKKwkgKiBwcm92aWRlIGEgbWVt
b3J5IG1hcHBlZCB3aW5kb3cgdG8gYWNjZXNzIHRoZSBQQ0kgSS9PIEJBUnMu
CisJICovCisJcG9ydF9ybWFuLnJtX3N0YXJ0ID0gMDsKKyNpZmRlZiBQQ0lf
SU9TUEFDRV9TSVpFCisJcG9ydF9ybWFuLnJtX2VuZCA9IFBDSV9JT1NQQUNF
X1NJWkUgLSAxOworI2VuZGlmCisJcG9ydF9ybWFuLnJtX3R5cGUgPSBSTUFO
X0FSUkFZOworCXBvcnRfcm1hbi5ybV9kZXNjciA9ICJJL08gcG9ydHMiOwor
CWlmIChybWFuX2luaXQoJnBvcnRfcm1hbikgIT0gMCB8fAorCSAgICBybWFu
X21hbmFnZV9yZWdpb24oJnBvcnRfcm1hbiwgMCwgcG9ydF9ybWFuLnJtX2Vu
ZCkgIT0gMCkKKwkJcGFuaWMoIiVzOiBwb3J0X3JtYW4iLCBfX2Z1bmNfXyk7
CisKKwogCXJldHVybiAoMCk7CiB9CiAKQEAgLTE4MCwxNiArMTk2LDIxIEBA
CiBuZXh1c19zZXR1cF9pbnRyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp
bGQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgZmxhZ3MsCiAgICAgZHJp
dmVyX2ZpbHRlcl90ICpmaWx0LCBkcml2ZXJfaW50cl90ICppbnRyLCB2b2lk
ICphcmcsIHZvaWQgKipjb29raWVwKQogewotCWludCBpcnE7CisJaW50IGly
cSwgZXJyb3I7CiAKLQlyZWdpc3Rlcl90IHNyID0gaW50cl9kaXNhYmxlKCk7
CiAJaXJxID0gcm1hbl9nZXRfc3RhcnQocmVzKTsKIAlpZiAoaXJxID49IE5V
TV9NSVBTX0lSUVMpCiAJCXJldHVybiAoMCk7CiAKKwlpZiAoKHJtYW5fZ2V0
X2ZsYWdzKHJlcykgJiBSRl9TSEFSRUFCTEUpID09IDApCisJCWZsYWdzIHw9
IElOVFJfRVhDTDsKKworCWVycm9yID0gcm1hbl9hY3RpdmF0ZV9yZXNvdXJj
ZShyZXMpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIChlcnJvcik7CisKIAlj
cHVfZXN0YWJsaXNoX2hhcmRpbnRyKGRldmljZV9nZXRfbmFtZXVuaXQoY2hp
bGQpLCBmaWx0LCBpbnRyLCBhcmcsCiAJICAgIGlycSwgZmxhZ3MsIGNvb2tp
ZXApOwotCWludHJfcmVzdG9yZShzcik7CiAJcmV0dXJuICgwKTsKIH0KIApA
QCAtMjM4LDYgKzI1OSw3IEBACiAKIAlyZXR2YWwgKz0gcmVzb3VyY2VfbGlz
dF9wcmludF90eXBlKHJsLCAibWVtIiwgU1lTX1JFU19NRU1PUlksICIlI2x4
Iik7CiAJcmV0dmFsICs9IHJlc291cmNlX2xpc3RfcHJpbnRfdHlwZShybCwg
ImlycSIsIFNZU19SRVNfSVJRLCAiJWxkIik7CisJcmV0dmFsICs9IHJlc291
cmNlX2xpc3RfcHJpbnRfdHlwZShybCwgInBvcnQiLCBTWVNfUkVTX0lPUE9S
VCwgIiUjbHgiKTsKIAogCXJldHVybiAocmV0dmFsKTsKIH0KQEAgLTMzOCw2
ICszNjAsOSBAQAogCWNhc2UgU1lTX1JFU19NRU1PUlk6CiAJCXJtID0gJm1l
bV9ybWFuOwogCQlicmVhazsKKwljYXNlIFNZU19SRVNfSU9QT1JUOgorCQly
bSA9ICZwb3J0X3JtYW47CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50
ZigiJXM6IHVua25vd24gcmVzb3VyY2UgdHlwZSAlZFxuIiwgX19mdW5jX18s
IHR5cGUpOwogCQlyZXR1cm4gKDApOwpAQCAtMzgwLDYgKzQwNSwxMSBAQAog
ICAgICAgICAgICAgICAgIHVfaW50MzJfdCBwb2ZmczsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBwYWRkciA9IHJtYW5fZ2V0X3N0YXJ0
KHIpOworI2lmZGVmIFBDSV9JT1NQQUNFX0FERFIKKwkJaWYgKHR5cGUgPT0g
U1lTX1JFU19JT1BPUlQpIHsKKwkJCXBhZGRyICs9IFBDSV9JT1NQQUNFX0FE
RFI7CisJCX0KKyNlbmRpZgogICAgICAgICAgICAgICAgIHBzaXplID0gcm1h
bl9nZXRfc2l6ZShyKTsKICAgICAgICAgICAgICAgICBwb2ZmcyA9IHBhZGRy
IC0gdHJ1bmNfcGFnZShwYWRkcik7CiAgICAgICAgICAgICAgICAgdmFkZHIg
PSAoY2FkZHJfdCkgcG1hcF9tYXBkZXYocGFkZHItcG9mZnMsIHBzaXplK3Bv
ZmZzKSArIHBvZmZzOwpAQCAtNDczLDYgKzUwMywxMiBAQAogbmV4dXNfZGVh
Y3RpdmF0ZV9yZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxk
LCBpbnQgdHlwZSwgaW50IHJpZCwKIAkJCSAgc3RydWN0IHJlc291cmNlICpy
KQogeworCXZtX29mZnNldF90IHZhOworCQorCWlmICh0eXBlID09IFNZU19S
RVNfTUVNT1JZIHx8IHR5cGUgPT0gU1lTX1JFU19JT1BPUlQpIHsKKwkJdmEg
PSAodm1fb2Zmc2V0X3Qpcm1hbl9nZXRfdmlydHVhbChyKTsKKwkJcG1hcF91
bm1hcGRldih2YSwgcm1hbl9nZXRfc2l6ZShyKSk7CisJfQogCiAJcmV0dXJu
IChybWFuX2RlYWN0aXZhdGVfcmVzb3VyY2UocikpOwogfQpkaWZmIC1OdXJk
IC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMv
bWlwcy9wbWFwLmMgLi9zeXMvbWlwcy9taXBzL3BtYXAuYwotLS0gL3UvbmVl
bG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL3Bt
YXAuYwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc2OTI0MzAwMCAtMDcwMAorKysg
Li9zeXMvbWlwcy9taXBzL3BtYXAuYwkyMDA5LTA2LTE2IDE3OjMxOjIxLjg3
MzQxOTAwMCAtMDcwMApAQCAtMzEzLDYgKzMxMyw4IEBACiAJCX0KIAl9CiAK
KwlNYXhtZW0gPSBhdG9wKHBoeXNfYXZhaWxbaSAtIDFdKTsKKwogCWlmIChi
b290dmVyYm9zZSkgewogCQlwcmludGYoIlBoeXNpY2FsIG1lbW9yeSBjaHVu
ayhzKTpcbiIpOwogCQlmb3IgKGkgPSAwOyBwaHlzX2F2YWlsW2kgKyAxXSAh
PSAwOyBpICs9IDIpIHsKQEAgLTMyNCw2ICszMjYsNyBAQAogCQkJICAgICh1
aW50bWF4X3QpIHBoeXNfYXZhaWxbaSArIDFdIC0gMSwKIAkJCSAgICAodWlu
dG1heF90KSBzaXplLCAodWludG1heF90KSBzaXplIC8gUEFHRV9TSVpFKTsK
IAkJfQorCQlwcmludGYoIk1heG1lbSBpcyAweCUwbHhcbiIsIHB0b2EoTWF4
bWVtKSk7CiAJfQogCS8qCiAJICogU3RlYWwgdGhlIG1lc3NhZ2UgYnVmZmVy
IGZyb20gdGhlIGJlZ2lubmluZyBvZiBtZW1vcnkuCkBAIC0yMjI2LDcgKzIy
MjksNyBAQAogI2VuZGlmCiAJaWYgKHBoeXMgPCBNSVBTX0tTRUcwX0xBUkdF
U1RfUEhZUykgewogCi0JCXZhID0gTUlQU19QSFlTX1RPX1VOQ0FDSEVEKHBo
eXMpOworCQl2YSA9IE1JUFNfUEhZU19UT19DQUNIRUQocGh5cyk7CiAKIAkJ
Ynplcm8oKGNhZGRyX3QpdmEsIFBBR0VfU0laRSk7CiAJCW1pcHNfZGNhY2hl
X3diaW52X3JhbmdlKHZhLCBQQUdFX1NJWkUpOwpAQCAtMjI4Miw3ICsyMjg1
LDcgQEAKIAl9IGVsc2UKICNlbmRpZgogCWlmIChwaHlzIDwgTUlQU19LU0VH
MF9MQVJHRVNUX1BIWVMpIHsKLQkJdmEgPSBNSVBTX1BIWVNfVE9fVU5DQUNI
RUQocGh5cyk7CisJCXZhID0gTUlQU19QSFlTX1RPX0NBQ0hFRChwaHlzKTsK
IAkJYnplcm8oKGNoYXIgKikoY2FkZHJfdCl2YSArIG9mZiwgc2l6ZSk7CiAJ
CW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhICsgb2ZmLCBzaXplKTsKIAl9
IGVsc2UgewpAQCAtMjMyMSw3ICsyMzI0LDcgQEAKIAl9IGVsc2UKICNlbmRp
ZgogCWlmIChwaHlzIDwgTUlQU19LU0VHMF9MQVJHRVNUX1BIWVMpIHsKLQkJ
dmEgPSBNSVBTX1BIWVNfVE9fVU5DQUNIRUQocGh5cyk7CisJCXZhID0gTUlQ
U19QSFlTX1RPX0NBQ0hFRChwaHlzKTsKIAkJYnplcm8oKGNhZGRyX3QpdmEs
IFBBR0VfU0laRSk7CiAJCW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhLCBQ
QUdFX1NJWkUpOwogCX0gZWxzZSB7CkBAIC0yODAzLDExICsyODA2LDEyIEBA
CiAJCXJldHVybiAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMShwYSk7CiAJ
ZWxzZSB7CiAJCW9mZnNldCA9IHBhICYgUEFHRV9NQVNLOwotCQlzaXplID0g
cm91bmR1cChzaXplLCBQQUdFX1NJWkUpOworCQlzaXplID0gcm91bmR1cChz
aXplICsgb2Zmc2V0LCBQQUdFX1NJWkUpOwogICAgICAgICAKIAkJdmEgPSBr
bWVtX2FsbG9jX25vZmF1bHQoa2VybmVsX21hcCwgc2l6ZSk7CiAJCWlmICgh
dmEpCiAJCQlwYW5pYygicG1hcF9tYXBkZXY6IENvdWxkbid0IGFsbG9jIGtl
cm5lbCB2aXJ0dWFsIG1lbW9yeSIpOworCQlwYSA9IHRydW5jX3BhZ2UocGEp
OwogCQlmb3IgKHRtcHZhID0gdmE7IHNpemUgPiAwOykgewogCQkJcG1hcF9r
ZW50ZXIodG1wdmEsIHBhKTsKIAkJCXNpemUgLT0gUEFHRV9TSVpFOwpAQCAt
MjgyMiw2ICsyODI2LDE4IEBACiB2b2lkCiBwbWFwX3VubWFwZGV2KHZtX29m
ZnNldF90IHZhLCB2bV9zaXplX3Qgc2l6ZSkKIHsKKwl2bV9vZmZzZXRfdCBi
YXNlLCBvZmZzZXQsIHRtcHZhOworCisJLyogSWYgdGhlIGFkZHJlc3MgaXMg
d2l0aGluIEtTRUcxIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0byBkbyAqLwor
CWlmICh2YSA+PSBNSVBTX0tTRUcxX1NUQVJUICYmIHZhIDw9IE1JUFNfS1NF
RzFfRU5EKQorCQlyZXR1cm47CisKKwliYXNlID0gdHJ1bmNfcGFnZSh2YSk7
CisJb2Zmc2V0ID0gdmEgJiBQQUdFX01BU0s7CisJc2l6ZSA9IHJvdW5kdXAo
c2l6ZSArIG9mZnNldCwgUEFHRV9TSVpFKTsKKwlmb3IgKHRtcHZhID0gYmFz
ZTsgdG1wdmEgPCBiYXNlICsgc2l6ZTsgdG1wdmEgKz0gUEFHRV9TSVpFKQor
CQlwbWFwX2tyZW1vdmUodG1wdmEpOworCWttZW1fZnJlZShrZXJuZWxfbWFw
LCBiYXNlLCBzaXplKTsKIH0KIAogLyoKZGlmZiAtTnVyZCAvdS9uZWVsbmF0
dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvc3d0Y2gu
UyAuL3N5cy9taXBzL21pcHMvc3d0Y2guUwotLS0gL3UvbmVlbG5hdHUvcDQv
ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL3N3dGNoLlMJMjAw
OS0wNi0xNSAyMzoyNzo1MS43NzgyNDIwMDAgLTA3MDAKKysrIC4vc3lzL21p
cHMvbWlwcy9zd3RjaC5TCTIwMDktMDYtMTYgMTc6MzE6MjEuODc4NDE2MDAw
IC0wNzAwCkBAIC04MSwxNCArODEsMTQgQEAKICNkZWZpbmUJX01GQzAJZG1m
YzAKICNkZWZpbmUJX01UQzAJZG10YzAKICNkZWZpbmUgV0lSRURfU0hJRlQg
MzQKLSNkZWZpbmUgUEFHRV9TSElGVCAzNAorI2RlZmluZSBQQUdFX1NISUZU
IDEyCiAjZWxzZQogI2RlZmluZSBfU0xMCXNsbAogI2RlZmluZQlfU1JMCXNy
bAogI2RlZmluZQlfTUZDMAltZmMwCiAjZGVmaW5lCV9NVEMwCW10YzAKICNk
ZWZpbmUgV0lSRURfU0hJRlQgMgotI2RlZmluZSBQQUdFX1NISUZUIDIKKyNk
ZWZpbmUgUEFHRV9TSElGVCAxMgogI2VuZGlmCiAJLnNldAlub3Jlb3JkZXIJ
CQkjIE5vcmVvcmRlciBpcyBkZWZhdWx0IHN0eWxlIQogI2lmIGRlZmluZWQo
SVNBX01JUFMzMikKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNk
X2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvdGljay5jIC4vc3lzL21pcHMv
bWlwcy90aWNrLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu
dC9zcmMvc3lzL21pcHMvbWlwcy90aWNrLmMJMjAwOS0wNi0xNSAyMzoyNzo1
MS43NzkyNDcwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy90aWNrLmMJ
MjAwOS0wNi0xNiAxNzozMToyMS44ODQ0MTUwMDAgLTA3MDAKQEAgLTIyOSw3
ICsyMjksNyBAQAogCiAJCS8qIENoZWNrIHRvIHNlZSBpZiB0aGUgdGltZXIg
aGFzIHdyYXBwZWQgYXJvdW5kLiAqLwogCQlpZiAoY3VyIDwgbGFzdCkKLQkJ
CWRlbHRhICs9IChjdXIgKyAoY3ljbGVzX3Blcl9oeiAtIGxhc3QpKTsKKwkJ
CWRlbHRhICs9IChjdXIgKyAoMHhmZmZmZmZmZiAtIGxhc3QpICsgMSk7CiAJ
CWVsc2UKIAkJCWRlbHRhICs9IChjdXIgLSBsYXN0KTsKIApkaWZmIC1OdXJk
IC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMv
bWlwcy90bGIuUyAuL3N5cy9taXBzL21pcHMvdGxiLlMKLS0tIC91L25lZWxu
YXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy90bGIu
UwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc4MTI0MjAwMCAtMDcwMAorKysgLi9z
eXMvbWlwcy9taXBzL3RsYi5TCTIwMDktMDYtMTYgMTc6MzE6MjEuODg5NDIy
MDAwIC0wNzAwCkBAIC04MSwxNCArODEsMTQgQEAKICNkZWZpbmUJX01GQzAJ
ZG1mYzAKICNkZWZpbmUJX01UQzAJZG10YzAKICNkZWZpbmUgV0lSRURfU0hJ
RlQgMzQKLSNkZWZpbmUgUEFHRV9TSElGVCAzNAorI2RlZmluZSBQQUdFX1NI
SUZUIDEyCiAjZWxzZQogI2RlZmluZSBfU0xMCXNsbAogI2RlZmluZQlfU1JM
CXNybAogI2RlZmluZQlfTUZDMAltZmMwCiAjZGVmaW5lCV9NVEMwCW10YzAK
ICNkZWZpbmUgV0lSRURfU0hJRlQgMgotI2RlZmluZSBQQUdFX1NISUZUIDIK
KyNkZWZpbmUgUEFHRV9TSElGVCAxMgogI2VuZGlmCiAJLnNldAlub3Jlb3Jk
ZXIJCQkjIE5vcmVvcmRlciBpcyBkZWZhdWx0IHN0eWxlIQogI2lmIGRlZmlu
ZWQoSVNBX01JUFMzMikKQEAgLTQ3Myw3ICs0NzMsMTcgQEAKIAlfTUZDMAl0
NCwgQ09QXzBfVExCX0hJCQkjIEdldCBjdXJyZW50IFBJRAogCW1vdmUJdDIs
IGEwCiAJbWZjMAl0MSwgQ09QXzBfVExCX1dJUkVECisKKwkjCisJIyBMb2Fk
IGludmFsaWQgZW50cnksIGVhY2ggVExCIGVudHJ5IHNob3VsZCBoYXZlIGl0
J3Mgb3duIGJvZ3VzIAorCSMgYWRkcmVzcyBjYWxjdWxhdGVkIGJ5IGZvbGxv
d2luZyBleHByZXNzaW9uOgorCSMgTUlQU19LU0VHMF9TVEFSVCArIDB4MGZm
ZjAwMDAgKyAyICogaSAqIFBBR0VfU0laRTsKKwkjIE9uZSBib2d1cyB2YWx1
ZSBmb3IgZXZlcnkgVExCIGVudHJ5IG1pZ2h0IGNhdXNlIE1DSEVDSyBleGNl
cHRpb24KKwkjCisJc2xsCXQzLCB0MSwgUEFHRV9TSElGVCArIDEKIAlsaQl2
MCwgTUlQU19LU0VHMF9TVEFSVCArIDB4MGZmZjAwMDAJIyBpbnZhbGlkIGFk
ZHJlc3MKKwlhZGR1CXYwLCB0MworCiAJbWZjMAl0MywgQ09QXzBfVExCX1BH
X01BU0sJCSMgc2F2ZSBjdXJyZW50IHBnTWFzawogCiAJIyBkbyB7fSB3aGls
ZSAodDEgPCB0MikKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNk
X2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvdHJhcC5jIC4vc3lzL21pcHMv
bWlwcy90cmFwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu
dC9zcmMvc3lzL21pcHMvbWlwcy90cmFwLmMJMjAwOS0wNi0xNSAyMzoyNzo1
MS43ODMyNDQwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy90cmFwLmMJ
MjAwOS0wNi0xNiAxNzozMToyMS44OTU0MjAwMDAgLTA3MDAKQEAgLTM2NSw3
ICszNjUsNyBAQAogCQlwcmludGYoImNwdWlkID0gJWRcbiIsIFBDUFVfR0VU
KGNwdWlkKSk7CiAjZW5kaWYKIAkJTWFjaFRMQkdldFBJRChwaWQpOwotCQlw
cmludGYoImJhZGFkZHIgPSAlcCwgcGMgPSAlcCwgcmEgPSAlcCwgc3AgPSAl
cCwgc3IgPSAweCV4LCBwaWQgPSAlZCwgQVNJRCA9IDB4JXhcbiIsCisJCXBy
aW50ZigiYmFkYWRkciA9IDB4JTB4LCBwYyA9IDB4JTB4LCByYSA9IDB4JTB4
LCBzcCA9IDB4JTB4LCBzciA9IDB4JXgsIHBpZCA9ICVkLCBBU0lEID0gMHgl
eFxuIiwKIAkJICAgIHRyYXBmcmFtZS0+YmFkdmFkZHIsIHRyYXBmcmFtZS0+
cGMsIHRyYXBmcmFtZS0+cmEsCiAJCSAgICB0cmFwZnJhbWUtPnNwLCB0cmFw
ZnJhbWUtPnNyLAogCQkgICAgKGN1cnByb2MgPyBjdXJwcm9jLT5wX3BpZCA6
IC0xKSwgcGlkKTsKQEAgLTM4OSw3ICszODksNyBAQAogCQkgICAgKCh0eXBl
ICYgflRfVVNFUikgIT0gVF9TWVNDQUxMKSkgewogCQkJaWYgKCsrY291bnQg
PT0gMykgewogCQkJCXRyYXBfZnJhbWVfZHVtcCh0cmFwZnJhbWUpOwotCQkJ
CXBhbmljKCJ0b28gbWFueSBmYXVsdHMgYXQgJXBcbiIsIGxhc3RfYmFkdmFk
ZHIpOworCQkJCXBhbmljKCJ0b28gbWFueSBmYXVsdHMgYXQgJXhcbiIsIGxh
c3RfYmFkdmFkZHIpOwogCQkJfQogCQl9IGVsc2UgewogCQkJbGFzdF9iYWR2
YWRkciA9IHRoaXNfYmFkdmFkZHI7CkBAIC01NzAsNyArNTcwLDcgQEAKIAkJ
CS0tcC0+cF9sb2NrOwogCQkJUFJPQ19VTkxPQ0socCk7CiAjaWZkZWYgVk1G
QVVMVF9UUkFDRQotCQkJcHJpbnRmKCJ2bV9mYXVsdCgleCAocG1hcCAleCks
ICV4ICgleCksICV4LCAlZCkgLT4gJXggYXQgcGMgJXhcbiIsCisJCQlwcmlu
dGYoInZtX2ZhdWx0KCVwIChwbWFwICVwKSwgJXggKCV4KSwgJXgsICVkKSAt
PiAleCBhdCBwYyAleFxuIiwKIAkJCSAgICBtYXAsICZ2bS0+dm1fcG1hcCwg
dmEsIHRyYXBmcmFtZS0+YmFkdmFkZHIsIGZ0eXBlLCBmbGFnLAogCQkJICAg
IHJ2LCB0cmFwZnJhbWUtPnBjKTsKICNlbmRpZgpkaWZmIC1OdXJkIC91L25l
ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy92
bV9tYWNoZGVwLmMgLi9zeXMvbWlwcy9taXBzL3ZtX21hY2hkZXAuYwotLS0g
L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9t
aXBzL3ZtX21hY2hkZXAuYwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc4NzI0MjAw
MCAtMDcwMAorKysgLi9zeXMvbWlwcy9taXBzL3ZtX21hY2hkZXAuYwkyMDA5
LTA2LTE2IDE3OjMxOjIxLjkwMTQxNzAwMCAtMDcwMApAQCAtMzk1LDYgKzM5
NSwyNCBAQAogICogQ3VycmVudGx5IHVzZWQgYnkgdGhlIGtlcm5lbCBjb3Jl
ZHVtcCBjb2RlIGluIG9yZGVyIHRvIGF2b2lkCiAgKiBkdW1waW5nIG5vbi1t
ZW1vcnkgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KICAqLworI2lmZGVmIENQ
VV9TQjEKK2ludAoraXNfcGh5c2ljYWxfbWVtb3J5KHZtX29mZnNldF90IGFk
ZHIpCit7CisKKwlpZiAoKGFkZHIgPj0gMHgwMDAwMDAwMFVMICYmIGFkZHIg
PCAweDEwMDAwMDAwVUwpIHx8CisJICAgIChhZGRyID49IDB4ODAwMDAwMDBV
TCAmJiBhZGRyIDwgMHhhMDAwMDAwMFVMKSB8fAorCSAgICAoYWRkciA+PSAw
eGMwMDAwMDAwVUwgJiYgYWRkciA8IDB4ZDAwMDAwMDBVTCkpIHsKKwkJcmV0
dXJuICgxKTsKKwl9CisjaWZkZWYgSVNBX01JUFM2NAorCWlmIChhZGRyID49
IDB4MDEwMDAwMDAwMFVMTCAmJiBhZGRyIDwgMHg4MDAwMDAwMDAwVUxMKSB7
CisJCXJldHVybiAoMSk7CisJfQorI2VuZGlmCisJcmV0dXJuICgwKTsKK30K
KyNlbHNlCiBpbnQKIGlzX3BoeXNpY2FsX21lbW9yeSh2bV9vZmZzZXRfdCBh
ZGRyKQogewpAQCAtNDAzLDcgKzQyMSwyNiBAQAogCWVsc2UKIAkJcmV0dXJu
IDA7CiB9CisjZW5kaWYJLyogQ1BVX1NCMSAqLwogCisjaWZkZWYgQ1BVX1NC
MQoraW50Citpc19jYWNoZWFibGVfbWVtKHZtX29mZnNldF90IHBhKQorewor
CisJcmV0dXJuIChpc19waHlzaWNhbF9tZW1vcnkocGEpKTsKK30KKworaW50
Citpc19jb2hlcmVudF9tZW0odm1fb2Zmc2V0X3QgcGEpCit7CisJCisJLyoK
KwkgKiBBbGwgcGh5c2ljYWwgbWVtb3J5IGlzIG1hcmtlZCBjYWNoZWFibGUt
Y29oZXJlbnQgb24gdGhlIHNpYnl0ZS4KKwkgKi8KKwlyZXR1cm4gKGlzX3Bo
eXNpY2FsX21lbW9yeShwYSkpOworfQorI2Vsc2UKIGludAogaXNfY2FjaGVh
YmxlX21lbSh2bV9vZmZzZXRfdCBwYSkKIHsKQEAgLTQxOCw2ICs0NTUsMTQg
QEAKIAkJcmV0dXJuIDA7CiB9CiAKK2ludAoraXNfY29oZXJlbnRfbWVtKHZt
X29mZnNldF90IHBhKQoreworCisJcmV0dXJuICgwKTsKK30KKyNlbmRpZgkv
KiBDUFVfU0IxICovCisKIC8qCiAgKiBBbGxvY2F0ZSBhIHBvb2wgb2Ygc2Zf
YnVmcyAoc2VuZGZpbGUoMikgb3IgInN1cGVyLWZhc3QiIGlmIHlvdSBwcmVm
ZXIuIDotKSkKICAqLwpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVi
c2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL2F0YV96YmJ1cy5jIC4v
c3lzL21pcHMvc2lieXRlL2F0YV96YmJ1cy5jCi0tLSAvdS9uZWVsbmF0dS9w
NC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3NpYnl0ZS9hdGFfemJi
dXMuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysg
Li9zeXMvbWlwcy9zaWJ5dGUvYXRhX3piYnVzLmMJMjAwOS0wNS0yMSAyMzo0
MjoyNi45OTk5NjkwMDAgLTA3MDAKQEAgLTAsMCArMSwxNzAgQEAKKy8qLQor
ICogQ29weXJpZ2h0IChjKSAyMDA5IE5lZWxrYW50aCBOYXR1CisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICog
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvcGFy
YW0uaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lz
L3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUg
PHN5cy9idXMuaD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgorI2luY2x1ZGUg
PHN5cy9sb2NrLmg+CisjaW5jbHVkZSA8c3lzL211dGV4Lmg+CisjaW5jbHVk
ZSA8c3lzL3NlbWEuaD4KKyNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+CisK
KyNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgorCisjaW5jbHVkZSA8dm0vdW1h
Lmg+CisKKyNpbmNsdWRlIDxzeXMvYXRhLmg+CisjaW5jbHVkZSA8ZGV2L2F0
YS9hdGEtYWxsLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL3Jlc291cmNlLmg+
CisKK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworc3RhdGljIGludAorYXRh
X3piYnVzX3Byb2JlKGRldmljZV90IGRldikKK3sKKworCXJldHVybiAoYXRh
X3Byb2JlKGRldikpOworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfYXR0
YWNoKGRldmljZV90IGRldikKK3sKKwlpbnQgaSwgcmlkLCByZWdzaGlmdCwg
cmVnb2Zmc2V0OworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2g7CisJc3RydWN0
IHJlc291cmNlICppbzsKKwkKKwljaCA9IGRldmljZV9nZXRfc29mdGMoZGV2
KTsKKworCWlmIChjaC0+YXR0YWNoZWQpCisJCXJldHVybiAoMCk7CisJY2gt
PmF0dGFjaGVkID0gMTsKKworCXJpZCA9IDA7CisJaW8gPSBidXNfYWxsb2Nf
cmVzb3VyY2UoZGV2LCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgMCwgfjAsIDEs
IFJGX0FDVElWRSk7CisJaWYgKGlvID09IE5VTEwpCisJCXJldHVybiAoRU5Y
SU8pOworCisJLyoKKwkgKiBTV0FSTSBuZWVkcyBhbiBhZGRyZXNzIHNoaWZ0
IG9mIDUgd2hlbiBhY2Nlc3NpbmcgQVRBIHJlZ2lzdGVycy4KKwkgKgorCSAq
IEZvciBlLmcuIGFuIGFjY2VzcyB0byByZWdpc3RlciA0IGFjdHVhbGx5IG5l
ZWRzIGFuIGFkZHJlc3MKKwkgKiBvZiAoNCA8PCA1KSB0byBiZSBvdXRwdXQg
b24gdGhlIGdlbmVyaWMgYnVzLgorCSAqLworCXJlZ3NoaWZ0ID0gNTsKKwly
ZXNvdXJjZV9pbnRfdmFsdWUoZGV2aWNlX2dldF9uYW1lKGRldiksIGRldmlj
ZV9nZXRfdW5pdChkZXYpLAorCQkJICAgInJlZ3NoaWZ0IiwgJnJlZ3NoaWZ0
KTsKKwlpZiAocmVnc2hpZnQgJiYgYm9vdHZlcmJvc2UpCisJCWRldmljZV9w
cmludGYoZGV2LCAidXNpbmcgYSByZWdpc3RlciBzaGlmdCBvZiAlZFxuIiwg
cmVnc2hpZnQpOworCisJcmVnb2Zmc2V0ID0gMHgxRjA7CisJcmVzb3VyY2Vf
aW50X3ZhbHVlKGRldmljZV9nZXRfbmFtZShkZXYpLCBkZXZpY2VfZ2V0X3Vu
aXQoZGV2KSwKKwkJCSAgICJyZWdvZmZzZXQiLCAmcmVnb2Zmc2V0KTsKKwlp
ZiAocmVnb2Zmc2V0ICYmIGJvb3R2ZXJib3NlKSB7CisJCWRldmljZV9wcmlu
dGYoZGV2LCAidXNpbmcgYSByZWdpc3RlciBvZmZzZXQgb2YgMHglMHhcbiIs
CisJCQkgICAgICByZWdvZmZzZXQpOworCX0KKworCS8qIHNldHVwIHRoZSBh
dGEgcmVnaXN0ZXIgYWRkcmVzc2VzICovCisJZm9yIChpID0gQVRBX0RBVEE7
IGkgPD0gQVRBX0NPTU1BTkQ7ICsraSkgeworCQljaC0+cl9pb1tpXS5yZXMg
PSBpbzsKKwkJY2gtPnJfaW9baV0ub2Zmc2V0ID0gKHJlZ29mZnNldCArIGkp
IDw8IHJlZ3NoaWZ0OworCX0KKworCWNoLT5yX2lvW0FUQV9DT05UUk9MXS5y
ZXMgPSBpbzsKKwljaC0+cl9pb1tBVEFfQ09OVFJPTF0ub2Zmc2V0ID0gKHJl
Z29mZnNldCArIEFUQV9DVExPRkZTRVQpIDw8IHJlZ3NoaWZ0OworCWNoLT5y
X2lvW0FUQV9JRFhfQUREUl0ucmVzID0gaW87CS8qIFhYWCB3aGF0IGlzIHRo
aXMgdXNlZCBmb3IgKi8KKwlhdGFfZGVmYXVsdF9yZWdpc3RlcnMoZGV2KTsK
KworCS8qIGluaXRpYWxpemUgc29mdGMgZm9yIHRoaXMgY2hhbm5lbCAqLwor
CWNoLT51bml0ID0gMDsKKwljaC0+ZmxhZ3MgfD0gQVRBX1VTRV8xNkJJVDsK
KwlhdGFfZ2VuZXJpY19odyhkZXYpOworCisJcmV0dXJuIChhdGFfYXR0YWNo
KGRldikpOworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfZGV0YWNoKGRl
dmljZV90IGRldikKK3sKKwlpbnQgZXJyb3I7CisJc3RydWN0IGF0YV9jaGFu
bmVsICpjaCA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKworCWlmICghY2gt
PmF0dGFjaGVkKQorCQlyZXR1cm4gKDApOworCWNoLT5hdHRhY2hlZCA9IDA7
CisKKwllcnJvciA9IGF0YV9kZXRhY2goZGV2KTsKKworCWJ1c19yZWxlYXNl
X3Jlc291cmNlKGRldiwgU1lTX1JFU19NRU1PUlksIDAsCisJCQkgICAgIGNo
LT5yX2lvW0FUQV9JRFhfQUREUl0ucmVzKTsKKworCXJldHVybiAoZXJyb3Ip
OworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfc3VzcGVuZChkZXZpY2Vf
dCBkZXYpCit7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRldmljZV9n
ZXRfc29mdGMoZGV2KTsKKworCWlmICghY2gtPmF0dGFjaGVkKQorCQlyZXR1
cm4gKDApOworCisJcmV0dXJuIChhdGFfc3VzcGVuZChkZXYpKTsKK30KKwor
c3RhdGljIGludAorYXRhX3piYnVzX3Jlc3VtZShkZXZpY2VfdCBkZXYpCit7
CisJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRldmljZV9nZXRfc29mdGMo
ZGV2KTsKKworCWlmICghY2gtPmF0dGFjaGVkKQorCQlyZXR1cm4gKDApOwor
CisJcmV0dXJuIChhdGFfcmVzdW1lKGRldikpOworfQorCitzdGF0aWMgZGV2
aWNlX21ldGhvZF90IGF0YV96YmJ1c19tZXRob2RzW10gPSB7CisJLyogZGV2
aWNlIGludGVyZmFjZSAqLworCURFVk1FVEhPRChkZXZpY2VfcHJvYmUsCQlh
dGFfemJidXNfcHJvYmUpLAorCURFVk1FVEhPRChkZXZpY2VfYXR0YWNoLAlh
dGFfemJidXNfYXR0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJ
YXRhX3piYnVzX2RldGFjaCksCisJREVWTUVUSE9EKGRldmljZV9zdXNwZW5k
LAlhdGFfemJidXNfc3VzcGVuZCksCisJREVWTUVUSE9EKGRldmljZV9yZXN1
bWUsCWF0YV96YmJ1c19yZXN1bWUpLAorCisJeyAwLCAwIH0KK307CisKK3N0
YXRpYyBkcml2ZXJfdCBhdGFfemJidXNfZHJpdmVyID0geworCSJhdGEiLAor
CWF0YV96YmJ1c19tZXRob2RzLAorCXNpemVvZihzdHJ1Y3QgYXRhX2NoYW5u
ZWwpCit9OworCitEUklWRVJfTU9EVUxFKGF0YSwgemJidXMsIGF0YV96YmJ1
c19kcml2ZXIsIGF0YV9kZXZjbGFzcywgMCwgMCk7CmRpZmYgLU51cmQgL3Uv
bmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5
dGUvZmlsZXMuc2lieXRlIC4vc3lzL21pcHMvc2lieXRlL2ZpbGVzLnNpYnl0
ZQotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMv
bWlwcy9zaWJ5dGUvZmlsZXMuc2lieXRlCTE5NjktMTItMzEgMTY6MDA6MDAu
MDAwMDAwMDAwIC0wODAwCisrKyAuL3N5cy9taXBzL3NpYnl0ZS9maWxlcy5z
aWJ5dGUJMjAwOS0wNS0yMSAyMzozNDoyNy4zMTM5MzgwMDAgLTA3MDAKQEAg
LTAsMCArMSw5IEBACisjICRGcmVlQlNEJAorCittaXBzL3NpYnl0ZS9zYl9t
YWNoZGVwLmMJCQlzdGFuZGFyZAorbWlwcy9zaWJ5dGUvc2JfemJidXMuYwkJ
CQlzdGFuZGFyZAorbWlwcy9zaWJ5dGUvc2JfemJwY2kuYwkJCQlzdGFuZGFy
ZAorbWlwcy9zaWJ5dGUvc2Jfc2NkLmMJCQkJc3RhbmRhcmQKK21pcHMvc2li
eXRlL2F0YV96YmJ1cy5jCQkJCXN0YW5kYXJkCisKK21pcHMvc2lieXRlL3Ni
X2FzbS5TCQkJCXN0YW5kYXJkCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQv
ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2JfYXNtLlMg
Li9zeXMvbWlwcy9zaWJ5dGUvc2JfYXNtLlMKLS0tIC91L25lZWxuYXR1L3A0
L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX2FzbS5T
CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5
cy9taXBzL3NpYnl0ZS9zYl9hc20uUwkyMDA5LTA1LTE4IDIwOjI1OjE3Ljc5
ODcwMjAwMCAtMDcwMApAQCAtMCwwICsxLDE1NSBAQAorLyotCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
ICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+
CisKKy8qCisgKiBXZSBjb21waWxlIGEgMzItYml0IGtlcm5lbCB0byBydW4g
b24gdGhlIFNCLTEgcHJvY2Vzc29yIHdoaWNoIGlzIGEgNjQtYml0CisgKiBw
cm9jZXNzb3IuIEl0IGhhcyBzb21lIHJlZ2lzdGVycyB0aGF0IG11c3QgYmUg
YWNjZXNzZWQgdXNpbmcgNjQtYml0IGxvYWQKKyAqIGFuZCBzdG9yZSBpbnN0
cnVjdGlvbnMuCisgKgorICogU28gd2UgaGF2ZSB0byByZXNvcnQgdG8gYXNz
ZW1ibHkgYmVjYXVzZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgZW1pdCB0aGUK
KyAqICdsZCcgYW5kICdzZCcgaW5zdHJ1Y3Rpb25zIHNpbmNlIGl0IHRoaW5r
cyB0aGF0IGl0IGlzIGNvbXBpbGluZyBmb3IgYQorICogMzItYml0IG1pcHMg
cHJvY2Vzc29yLgorICovCisKKy5zZXQJbWlwczY0Cisuc2V0CW5vYXQKKy5z
ZXQJbm9yZW9yZGVyCisKKy8qCisgKiByZXR1cm4gKE1JUFNfUEhZU19UT19L
U0VHMSgweDEwMDIwMDA4KSkKKyAqIFBhcmFtZXRlcnM6IG5vbmUKKyAqLwor
TEVBRihzYl9yZWFkX3N5c2NmZykKKwlsdWkgICAgIHYwLCAweGIwMDIKKwlv
cmkgICAgIHYwLCB2MCwgMHg4CisJbGQgICAgICB2MSwgMCh2MCkJLyogc3lz
Y2ZnID0gTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAwMDgpICovCisJbW92
ZQl2MCwgdjEKKwlkc2xsMzIJdjAsIHYwLCAwCisJZHNybDMyCXYwLCB2MCwg
MAkvKiB2MCA9IGxvd2VyX3VpbnQzMihtYXNrKSAqLworCWpyCXJhCisJZHNy
bDMyCXYxLCB2MSwgMAkvKiB2MSA9IHVwcGVyX3VpbnQzMihtYXNrKSAqLwor
RU5EKHNiX3JlYWRfc3lzY2ZnKQorCisvKgorICogTUlQU19QSFlTX1RPX0tT
RUcxKDB4MTAwMjAwMDgpID0gKHVpbnQ2NF90KXZhbAorICogUGFyYW1ldGVy
czoKKyAqIC0gbG93ZXJfdWludDMyKHZhbCk6IGEwCisgKiAtIHVwcGVyX3Vp
bnQzMih2YWwpOiBhMQorICovCitMRUFGKHNiX3dyaXRlX3N5c2NmZykKKwls
dWkgICAgIHYwLCAweGIwMDIKKwlvcmkgICAgIHYwLCB2MCwgMHg4CisJZHNs
bDMyCWExLCBhMSwgMAkvKiBjbGVhciBsb3dlciAzMiBiaXRzIG9mIGExICov
CisJZHNsbDMyCWEwLCBhMCwgMAorCWRzcmwzMglhMCwgYTAsIDAJLyogY2xl
YXIgdXBwZXIgMzIgYml0cyBvZiBhMCAqLworCW9yCWExLCBhMSwgYTAKKwlz
ZAlhMSwgMCh2MCkJLyogTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAwMDgp
ID0gdmFsICovCisJanIJcmEKKwlub3AKKwlub3AKK0VORChzYl93cml0ZV9z
eXNjZmcpCisKKy8qCisgKiBNSVBTX1BIWVNfVE9fS1NFRzEoMHgxMDAyMDAy
OCkgfD0gKDEgPDwgaW50c3JjKQorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAt
IGludHNyYyAoYTApCisgKi8KK0xFQUYoc2JfZGlzYWJsZV9pbnRzcmMpCisJ
bHVpICAgICB2MCwgMHhiMDAyCisJb3JpICAgICB2MCwgdjAsIDB4MjgKKwls
ZCAgICAgIHYxLCAwKHYwKQkvKiBtYXNrID0gTUlQU19QSFlTX1RPX0tTRUcx
KDB4MTAwMjAwMjgpICovCisJbGkgICAgICBhMSwgMQorCWRzbGx2ICAgYTEs
IGExLCBhMAorCW9yICAgICAgYTEsIGExLCB2MQkvKiBtYXNrIHw9ICgxIDw8
IGludHNyYykgKi8KKwlqcglyYQorCXNkICAgICAgYTEsIDAodjApCS8qIE1J
UFNfUEhZU19UT19LU0VHMSgweDEwMDIwMDI4KSA9IG1hc2sgKi8KK0VORChz
Yl9kaXNhYmxlX2ludHNyYykKKworLyoKKyAqIE1JUFNfUEhZU19UT19LU0VH
MSgweDEwMDIwMDI4KSAmPSB+KDEgPDwgaW50c3JjKQorICoKKyAqIFBhcmFt
ZXRlcnM6CisgKiAtIGludHNyYyAoYTApCisgKi8KK0xFQUYoc2JfZW5hYmxl
X2ludHNyYykKKwlsdWkgICAgIHYwLCAweGIwMDIKKwlvcmkgICAgIHYwLCB2
MCwgMHgyOAorCWxkICAgICAgdjEsIDAodjApCS8qIG1hc2sgPSBNSVBTX1BI
WVNfVE9fS1NFRzEoMHgxMDAyMDAyOCkgKi8KKwlsaSAgICAgIGEyLCAxCisJ
ZHNsbHYgICBhMiwgYTIsIGEwCisJbm9yICAgICBhMiwgemVybywgYTIKKwlh
bmQgICAgIGEyLCBhMiwgdjEJLyogbWFzayAmPSB+KDEgPDwgaW50c3JjKSAq
LworCXNkICAgICAgYTIsIDAodjApCS8qIE1JUFNfUEhZU19UT19LU0VHMSgw
eDEwMDIwMDI4KSA9IG1hc2sgKi8KKwlqciAgICAgIHJhCisJbm9wCitFTkQo
c2JfZW5hYmxlX2ludHNyYykKKworLyoKKyAqIHJldHVybiAoKHVpbnQ2NF90
KU1JUFNfUEhZU19UT19LU0VHMSgweDEwMDIwMDI4KSkKKyAqIFBhcmFtZXRl
cnM6IG5vbmUKKyAqLworTEVBRihzYl9yZWFkX2ludHNyY19tYXNrKQorCWx1
aSAgICAgdjAsIDB4YjAwMgorCW9yaSAgICAgdjAsIHYwLCAweDI4CisJbGQg
ICAgICB2MSwgMCh2MCkJLyogbWFzayA9IE1JUFNfUEhZU19UT19LU0VHMSgw
eDEwMDIwMDI4KSAqLworCW1vdmUJdjAsIHYxCisJZHNsbDMyCXYwLCB2MCwg
MAorCWRzcmwzMgl2MCwgdjAsIDAJLyogdjAgPSBsb3dlcl91aW50MzIobWFz
aykgKi8KKwlqcglyYQorCWRzcmwzMgl2MSwgdjEsIDAJLyogdjEgPSB1cHBl
cl91aW50MzIobWFzaykgKi8KK0VORChzYl9yZWFkX2ludHNyY19tYXNrKQor
CisvKgorICogcmV0dXJuICgodWludDY0X3QgKilNSVBTX1BIWVNfVE9fS1NF
RzEoMHgxMDAyMDIwMCkgKyBpbnRzcmMpCisgKiBQYXJhbWV0ZXJzOgorICog
LSBpbnRzcmMgKGEwKQorICovCitMRUFGKHNiX3JlYWRfaW50bWFwKQorCXNs
bAlhMCwgYTAsIDMJLyogY29tcHV0ZSB0aGUgb2Zmc2V0IG9mIHRoZSBpbnRt
YXAgcmVnaXN0ZXIgKi8KKwlsdWkgICAgIHYwLCAweGIwMDIKKwlhZGR1ICAg
IGEwLCBhMCwgdjAKKwlsZCAgICAgIHYwLCA1MTIoYTApCS8qIHYwID0gTUlQ
U19QSFlTX1RPX0tTRUcxKDB4MTAwMjAyMDApICsgb2ZmICovCisJanIgICAg
ICByYQorCW5vcAorRU5EKHNiX3JlYWRfaW50bWFwKQorCisvKgorICogKHVp
bnQ2NF90ICopTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAyMDApICsgaW50
c3JjID0gaXJxCisgKiBQYXJhbWV0ZXJzOgorICogLSBpbnRzcmMgKGEwKQor
ICogLSBpcnEgICAgKGExKQorICovCitMRUFGKHNiX3dyaXRlX2ludG1hcCkK
KwlzbGwgICAgIGEwLCBhMCwgMHgzIC8qIGNvbXB1dGUgdGhlIG9mZnNldCBv
ZiB0aGUgaW50bWFwIHJlZ2lzdGVyICovCisJbHVpICAgICB2MCwgMHhiMDAy
CisJYWRkdSAgICBhMCwgYTAsIHYwCisJc2QgICAgICBhMSwgNTEyKGEwKSAv
KiBNSVBTX1BIWVNfVE9fS1NFRzEoMHgxMDAyMDIwMCkgKyBvZmYgPSBpcnEg
Ki8KKwlqciAgICAgIHJhCisJbm9wCitFTkQoc2Jfd3JpdGVfaW50bWFwKQpk
aWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMv
c3lzL21pcHMvc2lieXRlL3NiX21hY2hkZXAuYyAuL3N5cy9taXBzL3NpYnl0
ZS9zYl9tYWNoZGVwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3Vy
cmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX21hY2hkZXAuYwkxOTY5LTEy
LTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgLi9zeXMvbWlwcy9z
aWJ5dGUvc2JfbWFjaGRlcC5jCTIwMDktMDYtMTAgMTM6NTM6MzAuMzMzMDg0
MDAwIC0wNzAwCkBAIC0wLDAgKzEsMjU5IEBACisvKi0KKyAqIENvcHlyaWdo
dCAoYykgMjAwNyBCcnVjZSBNLiBTaW1wc29uLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
KiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Citf
X0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0u
aD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdXJlZ3MuaD4KKworI2luY2x1ZGUg
Im9wdF9kZGIuaCIKKyNpbmNsdWRlICJvcHRfa2RiLmgiCisKKyNpbmNsdWRl
IDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvY29uZi5oPgorI2luY2x1
ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNp
bmNsdWRlIDxzeXMvaW1nYWN0Lmg+CisjaW5jbHVkZSA8c3lzL2Jpby5oPgor
I2luY2x1ZGUgPHN5cy9idWYuaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+Cisj
aW5jbHVkZSA8c3lzL2NwdS5oPgorI2luY2x1ZGUgPHN5cy9jb25zLmg+Cisj
aW5jbHVkZSA8c3lzL2V4ZWMuaD4KKyNpbmNsdWRlIDxzeXMvdWNvbnRleHQu
aD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5cy9rZGIu
aD4KKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisjaW5jbHVkZSA8c3lzL3Jl
Ym9vdC5oPgorI2luY2x1ZGUgPHN5cy9zaWduYWx2YXIuaD4KKyNpbmNsdWRl
IDxzeXMvc3lzZW50Lmg+CisjaW5jbHVkZSA8c3lzL3N5c3Byb3RvLmg+Cisj
aW5jbHVkZSA8c3lzL3VzZXIuaD4KKworI2luY2x1ZGUgPHZtL3ZtLmg+Cisj
aW5jbHVkZSA8dm0vdm1fb2JqZWN0Lmg+CisjaW5jbHVkZSA8dm0vdm1fcGFn
ZS5oPgorI2luY2x1ZGUgPHZtL3ZtX3BhZ2VyLmg+CisKKyNpbmNsdWRlIDxt
YWNoaW5lL2NhY2hlLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jbG9jay5oPgor
I2luY2x1ZGUgPG1hY2hpbmUvY3B1Lmg+CisjaW5jbHVkZSA8bWFjaGluZS9j
cHVpbmZvLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jcHVmdW5jLmg+CisjaW5j
bHVkZSA8bWFjaGluZS9jcHVyZWdzLmg+CisjaW5jbHVkZSA8bWFjaGluZS9o
d2Z1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHJfbWFjaGRlcC5oPgor
I2luY2x1ZGUgPG1hY2hpbmUvbG9jb3JlLmg+CisjaW5jbHVkZSA8bWFjaGlu
ZS9tZF92YXIuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3B0ZS5oPgorI2luY2x1
ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Ry
YXAuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3ZtcGFyYW0uaD4KKworI2lmZGVm
IENGRQorI2luY2x1ZGUgPGRldi9jZmUvY2ZlX2FwaS5oPgorI2VuZGlmCisK
KyNpbmNsdWRlICJzYl9zY2QuaCIKKworI2lmZGVmIEREQgorI2lmbmRlZiBL
REIKKyNlcnJvciBLREIgbXVzdCBiZSBlbmFibGVkIGluIG9yZGVyIGZvciBE
REIgdG8gd29yayEKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBDRkUKK2V4
dGVybiB1aW50MzJfdCBjZmVfaGFuZGxlOworZXh0ZXJuIHVpbnQzMl90IGNm
ZV92ZWN0b3I7CisjZW5kaWYKKworI2lmZGVmIENGRV9FTlYKK2V4dGVybiB2
b2lkIGNmZV9lbnZfaW5pdCh2b2lkKTsKKyNlbmRpZgorCitleHRlcm4gaW50
ICplZGF0YTsKK2V4dGVybiBpbnQgKmVuZDsKKworc3RhdGljIHZvaWQKK21p
cHNfaW5pdCh2b2lkKQoreworCWludCBpLCBjZmVfbWVtX2lkeCwgdG1wOwor
CXVpbnQ2NF90IG1heG1lbTsKKworI2lmZGVmIENGRV9FTlYKKwljZmVfZW52
X2luaXQoKTsKKyNlbmRpZgorCisJVFVOQUJMRV9JTlRfRkVUQ0goImJvb3Ro
b3d0byIsICZib290aG93dG8pOworCisJaWYgKGJvb3Rob3d0byAmIFJCX1ZF
UkJPU0UpCisJCWJvb3R2ZXJib3NlKys7CisKKyNpZmRlZiBNQVhNRU0KKwl0
bXAgPSBNQVhNRU07CisjZWxzZQorCXRtcCA9IDA7CisjZW5kaWYKKwlUVU5B
QkxFX0lOVF9GRVRDSCgiaHcucGh5c21lbSIsICZ0bXApOworCW1heG1lbSA9
ICh1aW50NjRfdCl0bXAgKiAxMDI0OworCisjaWZkZWYgQ0ZFCisJLyoKKwkg
KiBRdWVyeSBEUkFNIG1lbW9yeSBtYXAgZnJvbSBDRkUuCisJICovCisJcGh5
c21lbSA9IDA7CisJY2ZlX21lbV9pZHggPSAwOworCWZvciAoaSA9IDA7IGkg
PCAxMDsgaSArPSAyKSB7CisJCWludCByZXN1bHQ7CisJCXVpbnQ2NF90IGFk
ZHIsIGxlbiwgdHlwZTsKKworCQlyZXN1bHQgPSBjZmVfZW51bW1lbShjZmVf
bWVtX2lkeCsrLCAwLCAmYWRkciwgJmxlbiwgJnR5cGUpOworCQlpZiAocmVz
dWx0IDwgMCkgeworCQkJcGh5c19hdmFpbFtpXSA9IHBoeXNfYXZhaWxbaSAr
IDFdID0gMDsKKwkJCWJyZWFrOworCQl9CisKKwkJS0FTU0VSVCh0eXBlID09
IENGRV9NSV9BVkFJTEFCTEUsCisJCQkoIkNGRSBEUkFNIHJlZ2lvbiBpcyBu
b3QgYXZhaWxhYmxlPyIpKTsKKworCQlpZiAoYm9vdHZlcmJvc2UpCisJCQlw
cmludGYoImNmZV9lbnVtbWVtOiAweCUwMTZqeC8lbGx1LlxuIiwgYWRkciwg
bGVuKTsKKworCQlpZiAobWF4bWVtICE9IDApIHsKKwkJCWlmIChhZGRyID49
IG1heG1lbSkgeworCQkJCXByaW50ZigiSWdub3JpbmcgJWxsdSBieXRlcyBv
ZiBtZW1vcnkgYXQgMHglanggIgorCQkJCSAgICAgICAidGhhdCBpcyBhYm92
ZSBtYXhtZW0gJWRNQlxuIiwKKwkJCQkgICAgICAgbGVuLCBhZGRyLAorCQkJ
CSAgICAgICAoaW50KShtYXhtZW0gLyAoMTAyNCAqIDEwMjQpKSk7CisJCQkJ
Y29udGludWU7CisJCQl9CisKKwkJCWlmIChhZGRyICsgbGVuID4gbWF4bWVt
KSB7CisJCQkJcHJpbnRmKCJJZ25vcmluZyAlbGx1IGJ5dGVzIG9mIG1lbW9y
eSAiCisJCQkJICAgICAgICJ0aGF0IGlzIGFib3ZlIG1heG1lbSAlZE1CXG4i
LAorCQkJCSAgICAgICAoYWRkciArIGxlbikgLSBtYXhtZW0sCisJCQkJICAg
ICAgIChpbnQpKG1heG1lbSAvICgxMDI0ICogMTAyNCkpKTsKKwkJCQlsZW4g
PSBtYXhtZW0gLSBhZGRyOworCQkJfQorCQl9CisKKwkJcGh5c19hdmFpbFtp
XSA9IGFkZHI7CisJCWlmIChpID09IDAgJiYgYWRkciA9PSAwKSB7CisJCQkv
KgorCQkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgcGh5c2ljYWwgbWVtb3J5
IHNlZ21lbnQgcHJvYmVkCisJCQkgKiBmcm9tIENGRSwgb21pdCB0aGUgcmVn
aW9uIGF0IHRoZSBzdGFydCBvZiBwaHlzaWNhbAorCQkJICogbWVtb3J5IHdo
ZXJlIHRoZSBrZXJuZWwgaGFzIGJlZW4gbG9hZGVkLgorCQkJICovCisJCQlw
aHlzX2F2YWlsW2ldICs9IE1JUFNfS1NFRzBfVE9fUEhZUygodm1fb2Zmc2V0
X3QpJmVuZCk7CisJCX0KKwkJcGh5c19hdmFpbFtpICsgMV0gPSBhZGRyICsg
bGVuOworCQlwaHlzbWVtICs9IGxlbjsKKwl9CisKKwlyZWFsbWVtID0gYnRv
YyhwaHlzbWVtKTsKKyNlbmRpZgorCisJcGh5c21lbSA9IHJlYWxtZW07CisK
Kwlpbml0X3BhcmFtMSgpOworCWluaXRfcGFyYW0yKHBoeXNtZW0pOworCW1p
cHNfY3B1X2luaXQoKTsKKwlwbWFwX2Jvb3RzdHJhcCgpOworCW1pcHNfcHJv
YzBfaW5pdCgpOworCW11dGV4X2luaXQoKTsKKworCWtkYl9pbml0KCk7Cisj
aWZkZWYgS0RCCisJaWYgKGJvb3Rob3d0byAmIFJCX0tEQikKKwkJa2RiX2Vu
dGVyKEtEQl9XSFlfQk9PVEZMQUdTLCAiQm9vdCBmbGFncyByZXF1ZXN0ZWQg
ZGVidWdnZXIiKTsKKyNlbmRpZgorfQorCit2b2lkCitwbGF0Zm9ybV9oYWx0
KHZvaWQpCit7CisKK30KKworCit2b2lkCitwbGF0Zm9ybV9pZGVudGlmeSh2
b2lkKQoreworCit9CisKK3ZvaWQKK3BsYXRmb3JtX3Jlc2V0KHZvaWQpCit7
CisJCisJLyoKKwkgKiBYWFggU01QCisJICogWFhYIGZsdXNoIGRhdGEgY2Fj
aGVzCisJICovCisJc2Jfc3lzdGVtX3Jlc2V0KCk7Cit9CisKK3ZvaWQKK3Bs
YXRmb3JtX3RyYXBfZW50ZXIodm9pZCkKK3sKKworfQorCit2b2lkCitwbGF0
Zm9ybV90cmFwX2V4aXQodm9pZCkKK3sKKworfQorCit2b2lkCitwbGF0Zm9y
bV9zdGFydChfX3JlZ2lzdGVyX3QgYTAgX191bnVzZWQsIF9fcmVnaXN0ZXJf
dCBhMSBfX3VudXNlZCwgCisgICAgX19yZWdpc3Rlcl90IGEyIF9fdW51c2Vk
LCBfX3JlZ2lzdGVyX3QgYTMgX191bnVzZWQpCit7CisJdm1fb2Zmc2V0X3Qg
a2VybmVuZDsKKworCS8qIGNsZWFyIHRoZSBCU1MgYW5kIFNCU1Mgc2VnbWVu
dHMgKi8KKwltZW1zZXQoJmVkYXRhLCAwLCAodm1fb2Zmc2V0X3QpJmVuZCAt
ICh2bV9vZmZzZXRfdCkmZWRhdGEpOworCWtlcm5lbmQgPSByb3VuZF9wYWdl
KCh2bV9vZmZzZXRfdCkmZW5kKTsKKworI2lmZGVmIENGRQorCS8qCisJICog
SW5pdGlhbGl6ZSBDRkUgZmlybXdhcmUgdHJhbXBvbGluZXMgYmVmb3JlCisJ
ICogd2UgaW5pdGlhbGl6ZSB0aGUgbG93LWxldmVsIGNvbnNvbGUuCisJICov
CisJaWYgKGNmZV9oYW5kbGUgIT0gMCkKKwkJY2ZlX2luaXQoY2ZlX2hhbmRs
ZSwgY2ZlX3ZlY3Rvcik7CisjZW5kaWYKKwljbmluaXQoKTsKKworI2lmZGVm
IENGRQorCWlmIChjZmVfaGFuZGxlID09IDApCisJCXBhbmljKCJDRkUgd2Fz
IG5vdCBkZXRlY3RlZCBieSBsb2NvcmUuXG4iKTsKKyNlbmRpZgorCW1pcHNf
aW5pdCgpOworCisJbWlwc190aW1lcl9pbml0X3BhcmFtcyhzYl9jcHVfc3Bl
ZWQoKSwgMCk7Cit9CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJz
ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2Jfc2NkLmMgLi9zeXMv
bWlwcy9zaWJ5dGUvc2Jfc2NkLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVi
c2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX3NjZC5jCTE5Njkt
MTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5cy9taXBz
L3NpYnl0ZS9zYl9zY2QuYwkyMDA5LTA1LTE1IDE2OjUxOjU2LjM2MjY4ODAw
MCAtMDcwMApAQCAtMCwwICsxLDE1MiBAQAorLyotCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor
ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRl
IDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5j
bHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKwor
I2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KKworI2luY2x1ZGUgInNi
X3NjZC5oIgorCitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKy8qCisgKiBT
eXN0ZW0gQ29udHJvbCBhbmQgRGVidWcgKFNDRCkgdW5pdCBvbiB0aGUgU2li
eXRlIFpCYnVzLgorICovCisKKy8qCisgKiBFeHRyYWN0IHRoZSB2YWx1ZSBz
dGFydGluZyBhdCBiaXQgcG9zaXRpb24gJ2InIGZvciAnbicgYml0cyBmcm9t
ICd4Jy4KKyAqLworI2RlZmluZQlHRVRfVkFMXzY0KHgsIGIsIG4pCSgoKHgp
ID4+IChiKSkgJiAoKDFVTEwgPDwgKG4pKSAtIDEpKQorCisjZGVmaW5lIFNZ
U0NGR19QTExESVYoeCkJR0VUX1ZBTF82NCgoeCksIDcsIDUpCisKK3VpbnQ2
NF90CitzYl9jcHVfc3BlZWQodm9pZCkKK3sKKwlpbnQgcGxsZGl2OworCWNv
bnN0IHVpbnQ2NF90IE1IWiA9IDEwMDAwMDA7CisJCisJcGxsZGl2ID0gU1lT
Q0ZHX1BMTERJVihzYl9yZWFkX3N5c2NmZygpKTsKKwlpZiAocGxsZGl2ID09
IDApIHsKKwkJcHJpbnRmKCJQTExfRElWIGlzIDAgLSBhc3N1bWluZyA2ICgz
MDBNSHopLlxuIik7CisJCXBsbGRpdiA9IDY7CisJfQorCisJcmV0dXJuIChw
bGxkaXYgKiA1MCAqIE1IWik7Cit9CisKK3ZvaWQKK3NiX3N5c3RlbV9yZXNl
dCh2b2lkKQoreworCXVpbnQ2NF90IHN5c2NmZzsKKworCWNvbnN0IHVpbnQ2
NF90IFNZU1RFTV9SRVNFVCA9IDFVTEwgPDwgNjA7CisJY29uc3QgdWludDY0
X3QgRVhUX1JFU0VUID0gMVVMTCA8PCA1OTsKKwljb25zdCB1aW50NjRfdCBT
T0ZUX1JFU0VUID0gMVVMTCA8PCA1ODsKKworCXN5c2NmZyA9IHNiX3JlYWRf
c3lzY2ZnKCk7CisJc3lzY2ZnICY9IH5TT0ZUX1JFU0VUOworCXN5c2NmZyB8
PSBTWVNURU1fUkVTRVQgfCBFWFRfUkVTRVQ7CisJc2Jfd3JpdGVfc3lzY2Zn
KHN5c2NmZyk7Cit9CisKK2ludAorc2Jfcm91dGVfaW50c3JjKGludCBpbnRz
cmMpCit7CisJaW50IGludHJudW07CisKKwlLQVNTRVJUKGludHNyYyA+PSAw
ICYmIGludHNyYyA8IE5VTV9JTlRTUkMsCisJCSgiSW52YWxpZCBpbnRlcnJ1
cHQgc291cmNlIG51bWJlciAoJWQpIiwgaW50c3JjKSk7CisKKwkvKgorCSAq
IEludGVycnVwdCA1IGlzIHVzZWQgYnkgc291cmNlcyBpbnRlcm5hbCB0byB0
aGUgQ1BVIChlLmcuIHRpbWVyKS4KKwkgKiBVc2UgYSBkZXRlcm1pbmlzdGlj
IG1hcHBpbmcgZm9yIHRoZSByZW1haW5pbmcgc291cmNlcyB0byBtYXAgdG8K
KwkgKiBpbnRlcnJ1cHQgbnVtYmVycyAwIHRocm91Z2ggNC4KKwkgKi8KKwlp
bnRybnVtID0gaW50c3JjICUgNTsKKworCS8qCisJICogUHJvZ3JhbSB0aGUg
aW50ZXJydXB0IG1hcHBlciB3aGlsZSB3ZSBhcmUgaGVyZS4KKwkgKi8KKwlz
Yl93cml0ZV9pbnRtYXAoaW50c3JjLCBpbnRybnVtKTsKKworCXJldHVybiAo
aW50cm51bSk7Cit9CisKKyNkZWZpbmUJU0NEX1BIWVNBRERSCTB4MTAwMDAw
MDAKKyNkZWZpbmUJU0NEX1NJWkUJMHgwMDA2MDAwMAorCitzdGF0aWMgaW50
CitzY2RfcHJvYmUoZGV2aWNlX3QgZGV2KQoreworCisJZGV2aWNlX3NldF9k
ZXNjKGRldiwgIkJyb2FkY29tL1NpYnl0ZSBTeXN0ZW0gQ29udHJvbCBhbmQg
RGVidWciKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitzY2Rf
YXR0YWNoKGRldmljZV90IGRldikKK3sKKwlpbnQgcmlkOworCXN0cnVjdCBy
ZXNvdXJjZSAqcmVzOworCisJaWYgKGJvb3R2ZXJib3NlKSB7CisJCWRldmlj
ZV9wcmludGYoZGV2LCAiYXR0YWNoZWQuXG4iKTsKKwl9CisKKwlyaWQgPSAw
OworCXJlcyA9IGJ1c19hbGxvY19yZXNvdXJjZShkZXYsIFNZU19SRVNfTUVN
T1JZLCAmcmlkLCBTQ0RfUEhZU0FERFIsCisJCQkJIFNDRF9QSFlTQUREUiAr
IFNDRF9TSVpFIC0gMSwgU0NEX1NJWkUsIDApOworCWlmIChyZXMgPT0gTlVM
TCkgeworCQlwYW5pYygiQ2Fubm90IGFsbG9jYXRlIHJlc291cmNlIGZvciBz
eXN0ZW0gY29udHJvbCBhbmQgZGVidWcuIik7CisJfQorCQorCXJldHVybiAo
MCk7Cit9CisKK3N0YXRpYyBkZXZpY2VfbWV0aG9kX3Qgc2NkX21ldGhvZHNb
XSA9eworCS8qIERldmljZSBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoZGV2
aWNlX3Byb2JlLAkJc2NkX3Byb2JlKSwKKwlERVZNRVRIT0QoZGV2aWNlX2F0
dGFjaCwJc2NkX2F0dGFjaCksCisJREVWTUVUSE9EKGRldmljZV9kZXRhY2gs
CWJ1c19nZW5lcmljX2RldGFjaCksCisJREVWTUVUSE9EKGRldmljZV9zaHV0
ZG93biwJYnVzX2dlbmVyaWNfc2h1dGRvd24pLAorCURFVk1FVEhPRChkZXZp
Y2Vfc3VzcGVuZCwJYnVzX2dlbmVyaWNfc3VzcGVuZCksCisJREVWTUVUSE9E
KGRldmljZV9yZXN1bWUsCWJ1c19nZW5lcmljX3Jlc3VtZSksCisKKwl7IDAs
IDAgfQorfTsKKworc3RhdGljIGRyaXZlcl90IHNjZF9kcml2ZXIgPSB7CisJ
InNjZCIsCisJc2NkX21ldGhvZHMKK307CisKK3N0YXRpYyBkZXZjbGFzc190
IHNjZF9kZXZjbGFzczsKKworRFJJVkVSX01PRFVMRShzY2QsIHpiYnVzLCBz
Y2RfZHJpdmVyLCBzY2RfZGV2Y2xhc3MsIDAsIDApOwpkaWZmIC1OdXJkIC91
L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2li
eXRlL3NiX3NjZC5oIC4vc3lzL21pcHMvc2lieXRlL3NiX3NjZC5oCi0tLSAv
dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3Np
Ynl0ZS9zYl9zY2QuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAt
MDgwMAorKysgLi9zeXMvbWlwcy9zaWJ5dGUvc2Jfc2NkLmgJMjAwOS0wNS0x
NSAwMTo1ODoxMi4zMTg0MjIwMDAgLTA3MDAKQEAgLTAsMCArMSw0NiBAQAor
LyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfU0Jf
U0NEX0hfCisjZGVmaW5lCV9TQl9TQ0RfSF8KKworI2RlZmluZQlOVU1fSU5U
U1JDCQk2NAkvKiB0b3RhbCBudW1iZXIgb2YgaW50ZXJydXB0IHNvdXJjZXMg
Ki8KKwordWludDY0X3QJc2JfY3B1X3NwZWVkKHZvaWQpOwordm9pZAkJc2Jf
c3lzdGVtX3Jlc2V0KHZvaWQpOworCitpbnQJCXNiX3JvdXRlX2ludHNyYyhp
bnQgc3JjKTsKK3ZvaWQJCXNiX2VuYWJsZV9pbnRzcmMoaW50IHNyYyk7Cit2
b2lkCQlzYl9kaXNhYmxlX2ludHNyYyhpbnQgc3JjKTsKK3VpbnQ2NF90CXNi
X3JlYWRfaW50c3JjX21hc2sodm9pZCk7CisKK2ludAkJc2JfcmVhZF9pbnRt
YXAoaW50IGludHNyYyk7Cit2b2lkCQlzYl93cml0ZV9pbnRtYXAoaW50IGlu
dHNyYywgaW50IGludHJudW0pOworCit1aW50NjRfdAlzYl9yZWFkX3N5c2Nm
Zyh2b2lkKTsKK3ZvaWQJCXNiX3dyaXRlX3N5c2NmZyh1aW50NjRfdCB2YWwp
OworCisjZW5kaWYJLyogX1NCX1NDRF9IXyAqLwpkaWZmIC1OdXJkIC91L25l
ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRl
L3NiX3piYnVzLmMgLi9zeXMvbWlwcy9zaWJ5dGUvc2JfemJidXMuYwotLS0g
L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9z
aWJ5dGUvc2JfemJidXMuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAw
MCAtMDgwMAorKysgLi9zeXMvbWlwcy9zaWJ5dGUvc2JfemJidXMuYwkyMDA5
LTA2LTEzIDEyOjI5OjM5LjUxNTA1NTAwMCAtMDcwMApAQCAtMCwwICsxLDUw
MSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5h
dHUKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICog
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNp
bmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+
CisjaW5jbHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9tYWxsb2Mu
aD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgorCisjaW5jbHVkZSA8bWFjaGlu
ZS9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvaW50cl9tYWNoZGVw
Lmg+CisKKyNpbmNsdWRlICJzYl9zY2QuaCIKKworX19GQlNESUQoIiRGcmVl
QlNEJCIpOworCitzdGF0aWMgTUFMTE9DX0RFRklORShNX0lOVE1BUCwgInNi
MTI1MCBpbnRtYXAiLCAiU2lieXRlIDEyNTAgSW50ZXJydXB0IE1hcHBlciIp
OworCisjZGVmaW5lCU5VTV9IQVJEX0lSUVMJNgorCitzdHJ1Y3Qgc2JfaW50
bWFwIHsKKwlpbnQgaW50c3JjOwkJLyogaW50ZXJydXB0IG1hcHBlciByZWdp
c3RlciBudW1iZXIgKDAgLSA2MykgKi8KKwlpbnQgYWN0aXZlOwkJLyogRG9l
cyB0aGlzIHNvdXJjZSBnZW5lcmF0ZSBpbnRlcnJ1cHRzPyAqLworCisJLyoK
KwkgKiBUaGUgZGV2aWNlIHRoYXQgdGhlIGludGVycnVwdCBiZWxvbmdzIHRv
LiBOb3RlIHRoYXQgbXVsdGlwbGUKKwkgKiBkZXZpY2VzIG1heSBzaGFyZSBh
biBpbnRlcnJ1cHQuIEZvciBlLmcuIFBDSV9JTlRfeCBsaW5lcy4KKwkgKgor
CSAqIFRoZSBkZXZpY2UgJ2RldicgaW4gY29tYmluYXRpb24gd2l0aCB0aGUg
J3JpZCcgdW5pcXVlbHkKKwkgKiBpZGVudGlmeSB0aGlzIGludGVycnVwdCBz
b3VyY2UuCisJICovCisJZGV2aWNlX3QgZGV2OworCWludCByaWQ7CisKKwlT
TElTVF9FTlRSWShzYl9pbnRtYXApIG5leHQ7Cit9OworCisvKgorICogV2Ug
cmVnaXN0ZXIgJ3NiX2ludHNyYy5pc3JjJyB1c2luZyBjcHVfcmVnaXN0ZXJf
aGFyZF9pbnRzcmMoKSBmb3IgZWFjaAorICogaGFyZCBpbnRlcnJ1cHQgc291
cmNlIFswLTVdLgorICoKKyAqIFRoZSBtYXNrL3VubWFzayBjYWxsYmFja3Mg
dXNlIHRoZSBpbmZvcm1hdGlvbiBpbiAnc2JfaW50bWFwJyB0byBmaWd1cmUK
KyAqIG91dCB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgc291cmNlcyB0
byBtYXNrL3VubWFzay4KKyAqLworc3RydWN0IHNiX2ludHNyYyB7CisJc3Ry
dWN0IGludHNyYyBpc3JjOworCVNMSVNUX0hFQUQoLCBzYl9pbnRtYXApIHNi
X2ludG1hcF9oZWFkOworfTsKKworc3RhdGljIHN0cnVjdCBzYl9pbnRzcmMg
c2JfaW50c3JjW05VTV9IQVJEX0lSUVNdOworCitzdGF0aWMgc3RydWN0IHNi
X2ludG1hcCAqCitzYl9pbnRtYXBfbG9va3VwKGludCBpbnRybnVtLCBkZXZp
Y2VfdCBkZXYsIGludCByaWQpCit7CisJc3RydWN0IHNiX2ludHNyYyAqaXNy
YzsKKwlzdHJ1Y3Qgc2JfaW50bWFwICptYXA7CisKKwlpc3JjID0gJnNiX2lu
dHNyY1tpbnRybnVtXTsKKwlTTElTVF9GT1JFQUNIKG1hcCwgJmlzcmMtPnNi
X2ludG1hcF9oZWFkLCBuZXh0KSB7CisJCWlmIChkZXYgPT0gbWFwLT5kZXYg
JiYgcmlkID09IG1hcC0+cmlkKQorCQkJYnJlYWs7CisJfQorCXJldHVybiAo
bWFwKTsKK30KKworLyoKKyAqIEtlZXAgdHJhY2sgb2Ygd2hpY2ggKGRldixy
aWQpIHR1cGxlIGlzIHVzaW5nIHRoZSBpbnRlcnJ1cHQgc291cmNlLgorICoK
KyAqIFdlIGRvbid0IGFjdHVhbGx5IHVubWFzayB0aGUgaW50ZXJydXB0IHNv
dXJjZSB1bnRpbCB0aGUgZGV2aWNlIGNhbGxzCisgKiBhIGJ1c19zZXR1cF9p
bnRyKCkgb24gdGhlIHJlc291cmNlLgorICovCitzdGF0aWMgdm9pZAorc2Jf
aW50bWFwX2FkZChpbnQgaW50cm51bSwgZGV2aWNlX3QgZGV2LCBpbnQgcmlk
LCBpbnQgaW50c3JjKQoreworCXN0cnVjdCBzYl9pbnRzcmMgKmlzcmM7CisJ
c3RydWN0IHNiX2ludG1hcCAqbWFwOworCXJlZ2lzdGVyX3Qgc3I7CisJCisJ
S0FTU0VSVChpbnRybnVtID49IDAgJiYgaW50cm51bSA8IE5VTV9IQVJEX0lS
UVMsCisJCSgiaW50cm51bSBpcyBvdXQgb2YgcmFuZ2U6ICVkIiwgaW50cm51
bSkpOworCisJaXNyYyA9ICZzYl9pbnRzcmNbaW50cm51bV07CisJbWFwID0g
c2JfaW50bWFwX2xvb2t1cChpbnRybnVtLCBkZXYsIHJpZCk7CisJaWYgKG1h
cCkgeworCQlLQVNTRVJUKGludHNyYyA9PSBtYXAtPmludHNyYywKKwkJCSgi
JXMlZCBhbGxvY2F0aW5nIFNZU19SRVNfSVJRIHJlc291cmNlIHdpdGggcmlk
ICVkICIKKwkJCSAid2l0aCBhIGRpZmZlcmVudCBpbnRzcmMgKCVkIHZlcnN1
cyAlZCkiLAorCQkJZGV2aWNlX2dldF9uYW1lKGRldiksIGRldmljZV9nZXRf
dW5pdChkZXYpLCByaWQsCisJCQlpbnRzcmMsIG1hcC0+aW50c3JjKSk7CisJ
CXJldHVybjsKKwl9CisKKwltYXAgPSBtYWxsb2Moc2l6ZW9mKCptYXApLCBN
X0lOVE1BUCwgTV9XQUlUT0sgfCBNX1pFUk8pOworCW1hcC0+aW50c3JjID0g
aW50c3JjOworCW1hcC0+ZGV2ID0gZGV2OworCW1hcC0+cmlkID0gcmlkOwor
CisJc3IgPSBpbnRyX2Rpc2FibGUoKTsKKwlTTElTVF9JTlNFUlRfSEVBRCgm
aXNyYy0+c2JfaW50bWFwX2hlYWQsIG1hcCwgbmV4dCk7CisJaW50cl9yZXN0
b3JlKHNyKTsKK30KKworc3RhdGljIHZvaWQKK3NiX2ludG1hcF9hY3RpdmF0
ZShpbnQgaW50cm51bSwgZGV2aWNlX3QgZGV2LCBpbnQgcmlkKQoreworCXN0
cnVjdCBzYl9pbnRtYXAgKm1hcDsKKwlyZWdpc3Rlcl90IHNyOworCQorCUtB
U1NFUlQoaW50cm51bSA+PSAwICYmIGludHJudW0gPCBOVU1fSEFSRF9JUlFT
LAorCQkoImludHJudW0gaXMgb3V0IG9mIHJhbmdlOiAlZCIsIGludHJudW0p
KTsKKworCW1hcCA9IHNiX2ludG1hcF9sb29rdXAoaW50cm51bSwgZGV2LCBy
aWQpOworCWlmIChtYXApIHsKKwkJLyoKKwkJICogU2VlIGNvbW1lbnRzIGlu
IHNiX3VubWFza19mdW5jKCkgYWJvdXQgZGlzYWJsaW5nIGNwdSBpbnRyCisJ
CSAqLworCQlzciA9IGludHJfZGlzYWJsZSgpOworCQltYXAtPmFjdGl2ZSA9
IDE7CisJCXNiX2VuYWJsZV9pbnRzcmMobWFwLT5pbnRzcmMpOworCQlpbnRy
X3Jlc3RvcmUoc3IpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIEluIHpiYnVz
X3NldHVwX2ludHIoKSB3ZSBibGluZGx5IGNhbGwgc2JfaW50bWFwX2FjdGl2
YXRlKCkKKwkJICogZm9yIGV2ZXJ5IGludGVycnVwdCBhY3RpdmF0aW9uIHRo
YXQgY29tZXMgb3VyIHdheS4KKwkJICoKKwkJICogV2UgbWlnaHQgZW5kIHVw
IGhlcmUgaWYgd2UgZGlkIG5vdCAiaGlqYWNrIiB0aGUgU1lTX1JFU19JUlEK
KwkJICogcmVzb3VyY2UgaW4gemJidXNfYWxsb2NfcmVzb3VyY2UoKS4KKwkJ
ICovCisJCXByaW50Zigic2JfaW50bWFwX2FjdGl2YXRlOiB1bmFibGUgdG8g
YWN0aXZhdGUgaW50ZXJydXB0ICVkICIKKwkJICAgICAgICJmb3IgZGV2aWNl
ICVzJWQgcmlkICVkLlxuIiwgaW50cm51bSwKKwkJICAgICAgIGRldmljZV9n
ZXRfbmFtZShkZXYpLCBkZXZpY2VfZ2V0X3VuaXQoZGV2KSwgcmlkKTsKKwl9
Cit9CisKK3N0YXRpYyB2b2lkCitzYl9tYXNrX2Z1bmMoc3RydWN0IGludHNy
YyAqYXJnKQoreworCXN0cnVjdCBzYl9pbnRtYXAgKm1hcDsKKwlzdHJ1Y3Qg
c2JfaW50c3JjICppc3JjOworCXVpbnQ2NF90IGlzcmNfYml0bWFwOworCisJ
aXNyY19iaXRtYXAgPSAwOworCWlzcmMgPSAoc3RydWN0IHNiX2ludHNyYyAq
KWFyZzsKKwlTTElTVF9GT1JFQUNIKG1hcCwgJmlzcmMtPnNiX2ludG1hcF9o
ZWFkLCBuZXh0KSB7CisJCWlmIChtYXAtPmFjdGl2ZSA9PSAwKQorCQkJY29u
dGludWU7CisJCS8qCisJCSAqIElmIHdlIGhhdmUgYWxyZWFkeSBkaXNhYmxl
ZCB0aGlzIGludGVycnVwdCBzb3VyY2UgdGhlbiBkb24ndAorCQkgKiBkbyBp
dCBhZ2Fpbi4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gbXVsdGlwbGUgZGV2aWNl
cyBzaGFyZQorCQkgKiBhbiBpbnRlcnJ1cHQgc291cmNlIChlLmcuIFBDSV9J
TlRfeCkuCisJCSAqLworCQlpZiAoaXNyY19iaXRtYXAgJiAoMVVMTCA8PCBt
YXAtPmludHNyYykpCisJCQljb250aW51ZTsKKwkJc2JfZGlzYWJsZV9pbnRz
cmMobWFwLT5pbnRzcmMpOworCQlpc3JjX2JpdG1hcCB8PSAxVUxMIDw8IG1h
cC0+aW50c3JjOworCX0KK30KKworc3RhdGljIHZvaWQKK3NiX3VubWFza19m
dW5jKHN0cnVjdCBpbnRzcmMgKmFyZykKK3sKKwlzdHJ1Y3Qgc2JfaW50bWFw
ICptYXA7CisJc3RydWN0IHNiX2ludHNyYyAqc2JfaXNyYzsKKwl1aW50NjRf
dCBpc3JjX2JpdG1hcDsKKwlyZWdpc3Rlcl90IHNyOworCQorCWlzcmNfYml0
bWFwID0gMDsKKwlzYl9pc3JjID0gKHN0cnVjdCBzYl9pbnRzcmMgKilhcmc7
CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBkaXNhYmxlIHRoZSBjcHUgaW50
ZXJydXB0cyB3aGVuIGVuYWJsaW5nIHRoZQorCSAqIGludGVycnVwdCBzb3Vy
Y2VzLgorCSAqCisJICogVGhpcyBpcyB0byBwcmV2ZW50IGEgY29uZGl0aW9u
IHdoZXJlIHNvbWUgaW50ZXJydXB0IHNvdXJjZXMgaGF2ZQorCSAqIGJlZW4g
ZW5hYmxlZCAoYnV0IG5vdCBhbGwpIGFuZCBvbmUgb2YgdGhvc2UgaW50ZXJy
dXB0IHNvdXJjZXMKKwkgKiB0cmlnZ2VycyBhbiBpbnRlcnJ1cHQuCisJICoK
KwkgKiBJZiBhbnkgb2YgdGhlIGludGVycnVwdCBoYW5kbGVycyBleGVjdXRl
cyBpbiBhbiBpdGhyZWFkIHRoZW4KKwkgKiBjcHVfaW50cigpIHdpbGwgcmV0
dXJuIHdpdGggYWxsIGludGVycnVwdCBzb3VyY2VzIGZlZWRpbmcgaW50bwor
CSAqIHRoYXQgY3B1IGlycSBtYXNrZWQuIEJ1dCB3aGVuIHRoZSBsb29wIGJl
bG93IHBpY2tzIHVwIHdoZXJlIGl0CisJICogbGVmdCBvZmYgaXQgd2lsbCBl
bmFibGUgdGhlIHJlbWFpbmluZyBpbnRlcnJ1cHQgc291cmNlcyEhIQorCSAq
CisJICogSWYgdGhlIGRpc2FibGUgdGhlIGNwdSBpbnRlcnJ1cHRzIHRoZW4g
dGhpcyByYWNlIGRvZXMgbm90IGhhcHBlbi4KKwkgKi8KKwlzciA9IGludHJf
ZGlzYWJsZSgpOworCisJU0xJU1RfRk9SRUFDSChtYXAsICZzYl9pc3JjLT5z
Yl9pbnRtYXBfaGVhZCwgbmV4dCkgeworCQlpZiAobWFwLT5hY3RpdmUgPT0g
MCkKKwkJCWNvbnRpbnVlOworCQkvKgorCQkgKiBJZiB3ZSBoYXZlIGFscmVh
ZHkgZW5hYmxlZCB0aGlzIGludGVycnVwdCBzb3VyY2UgdGhlbiBkb24ndAor
CQkgKiBkbyBpdCBhZ2Fpbi4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gbXVsdGlw
bGUgZGV2aWNlcyBzaGFyZQorCQkgKiBhbiBpbnRlcnJ1cHQgc291cmNlIChl
LmcuIFBDSV9JTlRfeCkuCisJCSAqLworCQlpZiAoaXNyY19iaXRtYXAgJiAo
MVVMTCA8PCBtYXAtPmludHNyYykpCisJCQljb250aW51ZTsKKwkJc2JfZW5h
YmxlX2ludHNyYyhtYXAtPmludHNyYyk7CisJCWlzcmNfYml0bWFwIHw9IDFV
TEwgPDwgbWFwLT5pbnRzcmM7CisJfQorCisJaW50cl9yZXN0b3JlKHNyKTsK
K30KKworc3RydWN0IHpiYnVzX2RldmluZm8geworCXN0cnVjdCByZXNvdXJj
ZV9saXN0IHJlc291cmNlczsKK307CisKK3N0YXRpYyBNQUxMT0NfREVGSU5F
KE1fWkJCVVNERVYsICJ6YmJ1c2RldiIsICJ6YmJ1c2RldiIpOworCitzdGF0
aWMgaW50Cit6YmJ1c19wcm9iZShkZXZpY2VfdCBkZXYpCit7CisKKwlkZXZp
Y2Vfc2V0X2Rlc2MoZGV2LCAiQnJvYWRjb20vU2lieXRlIFpCYnVzIik7CisJ
cmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAoremJidXNfYXR0YWNoKGRl
dmljZV90IGRldikKK3sKKwlpbnQgaSwgZXJyb3I7CisJc3RydWN0IGludHNy
YyAqaXNyYzsKKworCWlmIChib290dmVyYm9zZSkgeworCQlkZXZpY2VfcHJp
bnRmKGRldiwgImF0dGFjaGVkLlxuIik7CisJfQorCisJZm9yIChpID0gMDsg
aSA8IE5VTV9IQVJEX0lSUVM7ICsraSkgeworCQlpc3JjID0gJnNiX2ludHNy
Y1tpXS5pc3JjOworCQlpc3JjLT5pbnRybnVtID0gaTsKKwkJaXNyYy0+bWFz
a19mdW5jID0gc2JfbWFza19mdW5jOworCQlpc3JjLT51bm1hc2tfZnVuYyA9
IHNiX3VubWFza19mdW5jOworCQllcnJvciA9IGNwdV9yZWdpc3Rlcl9oYXJk
X2ludHNyYyhpc3JjKTsKKwkJaWYgKGVycm9yKQorCQkJcGFuaWMoIkVycm9y
ICVkIHJlZ2lzdGVyaW5nIGludHNyYyAlZCIsIGVycm9yLCBpKTsKKwl9CisJ
CisJYnVzX2dlbmVyaWNfcHJvYmUoZGV2KTsKKwlidXNfZW51bWVyYXRlX2hp
bnRlZF9jaGlsZHJlbihkZXYpOworCWJ1c19nZW5lcmljX2F0dGFjaChkZXYp
OworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIHZvaWQKK3piYnVzX2hp
bnRlZF9jaGlsZChkZXZpY2VfdCBidXMsIGNvbnN0IGNoYXIgKmRuYW1lLCBp
bnQgZHVuaXQpCit7CisJZGV2aWNlX3QgY2hpbGQ7CisJbG9uZyBtYWRkciwg
bXNpemU7CisJaW50IGVyciwgaXJxOworCisJaWYgKHJlc291cmNlX2Rpc2Fi
bGVkKGRuYW1lLCBkdW5pdCkpCisJCXJldHVybjsKKworCWNoaWxkID0gQlVT
X0FERF9DSElMRChidXMsIDAsIGRuYW1lLCBkdW5pdCk7CisJaWYgKGNoaWxk
ID09IE5VTEwpIHsKKwkJcGFuaWMoInpiYnVzOiBjb3VsZCBub3QgYWRkIGNo
aWxkICVzIHVuaXQgJWRcbiIsIGRuYW1lLCBkdW5pdCk7CisJfQorCisJaWYg
KGJvb3R2ZXJib3NlKQorCQlkZXZpY2VfcHJpbnRmKGJ1cywgIkFkZGluZyBo
aW50ZWQgY2hpbGQgJXMlZFxuIiwgZG5hbWUsIGR1bml0KTsKKworCS8qCisJ
ICogQXNzaWduIGFueSBwcmUtZGVmaW5lZCByZXNvdXJjZXMgdG8gdGhlIGNo
aWxkLgorCSAqLworCWlmIChyZXNvdXJjZV9sb25nX3ZhbHVlKGRuYW1lLCBk
dW5pdCwgIm1zaXplIiwgJm1zaXplKSA9PSAwICYmCisJICAgIHJlc291cmNl
X2xvbmdfdmFsdWUoZG5hbWUsIGR1bml0LCAibWFkZHIiLCAmbWFkZHIpID09
IDApIHsKKwkJaWYgKGJvb3R2ZXJib3NlKSB7CisJCQlkZXZpY2VfcHJpbnRm
KGJ1cywgIkFzc2lnbmluZyBtZW1vcnkgcmVzb3VyY2UgIgorCQkJCQkgICAi
MHglMGx4LyVsZCB0byBjaGlsZCAlcyVkXG4iLAorCQkJCQkgICBtYWRkciwg
bXNpemUsIGRuYW1lLCBkdW5pdCk7CisJCX0KKwkJZXJyID0gYnVzX3NldF9y
ZXNvdXJjZShjaGlsZCwgU1lTX1JFU19NRU1PUlksIDAsIG1hZGRyLCBtc2l6
ZSk7CisJCWlmIChlcnIpIHsKKwkJCWRldmljZV9wcmludGYoYnVzLCAiVW5h
YmxlIHRvIHNldCBtZW1vcnkgcmVzb3VyY2UgIgorCQkJCQkgICAiMHglMGx4
LyVsZCBmb3IgY2hpbGQgJXMlZDogJWRcbiIsCisJCQkJCSAgIG1hZGRyLCBt
c2l6ZSwgZG5hbWUsIGR1bml0LCBlcnIpOworCQl9CisJfQorCisJaWYgKHJl
c291cmNlX2ludF92YWx1ZShkbmFtZSwgZHVuaXQsICJpcnEiLCAmaXJxKSA9
PSAwKSB7CisJCWlmIChib290dmVyYm9zZSkgeworCQkJZGV2aWNlX3ByaW50
ZihidXMsICJBc3NpZ25pbmcgaXJxIHJlc291cmNlICVkIHRvICIKKwkJCQkJ
ICAgImNoaWxkICVzJWRcbiIsIGlycSwgZG5hbWUsIGR1bml0KTsKKwkJfQor
CQllcnIgPSBidXNfc2V0X3Jlc291cmNlKGNoaWxkLCBTWVNfUkVTX0lSUSwg
MCwgaXJxLCAxKTsKKwkJaWYgKGVycikgeworCQkJZGV2aWNlX3ByaW50Zihi
dXMsICJVbmFibGUgdG8gc2V0IGlycSByZXNvdXJjZSAlZCIKKwkJCQkJICAg
ImZvciBjaGlsZCAlcyVkOiAlZFxuIiwKKwkJCQkJICAgaXJxLCBkbmFtZSwg
ZHVuaXQsIGVycik7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVz
b3VyY2UgKgoremJidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBk
ZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAorCQkgICAgIHVf
bG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm
bGFncykKK3sKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgaW50cm51
bSwgaW50c3JjLCBpc2RlZmF1bHQ7CisJc3RydWN0IHJlc291cmNlX2xpc3Qg
KnJsOworCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CisJc3Ry
dWN0IHpiYnVzX2RldmluZm8gKmRpbmZvOworCisJaXNkZWZhdWx0ID0gKHN0
YXJ0ID09IDBVTCAmJiBlbmQgPT0gfjBVTCAmJiBjb3VudCA9PSAxKTsKKwor
CS8qCisJICogT3VyIGRpcmVjdCBjaGlsZCBpcyBhc2tpbmcgZm9yIGEgZGVm
YXVsdCByZXNvdXJjZSBhbGxvY2F0aW9uLgorCSAqLworCWlmIChkZXZpY2Vf
Z2V0X3BhcmVudChjaGlsZCkgPT0gYnVzKSB7CisJCWRpbmZvID0gZGV2aWNl
X2dldF9pdmFycyhjaGlsZCk7CisJCXJsID0gJmRpbmZvLT5yZXNvdXJjZXM7
CisJCXJsZSA9IHJlc291cmNlX2xpc3RfZmluZChybCwgdHlwZSwgKnJpZCk7
CisJCWlmIChybGUpIHsKKwkJCWlmIChybGUtPnJlcykKKwkJCQlwYW5pYygi
emJidXNfYWxsb2NfcmVzb3VyY2U6IHJlc291cmNlIGlzIGJ1c3kiKTsKKwkJ
CWlmIChpc2RlZmF1bHQpIHsKKwkJCQlzdGFydCA9IHJsZS0+c3RhcnQ7CisJ
CQkJY291bnQgPSB1bG1heChjb3VudCwgcmxlLT5jb3VudCk7CisJCQkJZW5k
ID0gdWxtYXgocmxlLT5lbmQsIHN0YXJ0ICsgY291bnQgLSAxKTsKKwkJCX0K
KwkJfSBlbHNlIHsKKwkJCWlmIChpc2RlZmF1bHQpIHsKKwkJCQkvKgorCQkJ
CSAqIE91ciBjaGlsZCBpcyByZXF1ZXN0aW5nIGEgZGVmYXVsdAorCQkJCSAq
IHJlc291cmNlIGFsbG9jYXRpb24gYnV0IHdlIGRvbid0IGhhdmUgdGhlCisJ
CQkJICogJ3R5cGUvcmlkJyB0dXBsZSBpbiB0aGUgcmVzb3VyY2UgbGlzdC4K
KwkJCQkgKgorCQkJCSAqIFdlIGhhdmUgdG8gZmFpbCB0aGUgcmVzb3VyY2Ug
YWxsb2NhdGlvbi4KKwkJCQkgKi8KKwkJCQlyZXR1cm4gKE5VTEwpOworCQkJ
fSBlbHNlIHsKKwkJCQkvKgorCQkJCSAqIFRoZSBjaGlsZCBpcyByZXF1ZXN0
aW5nIGEgbm9uLWRlZmF1bHQKKwkJCQkgKiByZXNvdXJjZS4gV2UganVzdCBw
YXNzIHRoZSByZXF1ZXN0IHVwCisJCQkJICogdG8gb3VyIHBhcmVudC4gSWYg
dGhlIHJlc291cmNlIGFsbG9jYXRpb24KKwkJCQkgKiBzdWNjZWVkcyB3ZSB3
aWxsIGNyZWF0ZSBhIHJlc291cmNlIGxpc3QKKwkJCQkgKiBlbnRyeSBjb3Jy
ZXNwb25kaW5nIHRvIHRoYXQgcmVzb3VyY2UuCisJCQkJICovCisJCQl9CisJ
CX0KKwl9IGVsc2UgeworCQlybCA9IE5VTEw7CisJCXJsZSA9IE5VTEw7CisJ
fQorCisJLyoKKwkgKiBuZXh1cyBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIGlu
dGVycnVwdCBtYXBwZXIgYW5kIG9ubHkgd2FudHMgdG8KKwkgKiBzZWUgdGhl
IGhhcmQgaXJxIG51bWJlcnMgWzAtNl0uIFdlIHRyYW5zbGF0ZSBmcm9tIHRo
ZSBpbnRlcnJ1cHQKKwkgKiBzb3VyY2UgcHJlc2VudGVkIHRvIHRoZSBtYXBw
ZXIgdG8gdGhlIGludGVycnVwdCBudW1iZXIgcHJlc2VudGVkCisJICogdG8g
dGhlIGNwdS4KKwkgKi8KKwlpZiAoKGNvdW50ID09IDEpICYmICh0eXBlID09
IFNZU19SRVNfSVJRKSkgeworCQlpbnRzcmMgPSBzdGFydDsKKwkJaW50cm51
bSA9IHNiX3JvdXRlX2ludHNyYyhpbnRzcmMpOworCQlzdGFydCA9IGVuZCA9
IGludHJudW07CisJfSBlbHNlIHsKKwkJaW50c3JjID0gLTE7CQkvKiBzYXRp
c2Z5IGdjYyAqLworCQlpbnRybnVtID0gLTE7CisJfQorCisJcmVzID0gYnVz
X2dlbmVyaWNfYWxsb2NfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlk
LAorIAkJCQkJIHN0YXJ0LCBlbmQsIGNvdW50LCBmbGFncyk7CisKKwkvKgor
CSAqIEtlZXAgdHJhY2sgb2YgdGhlIGlucHV0IGludG8gdGhlIGludGVycnVw
dCBtYXBwZXIgdGhhdCBtYXBzCisJICogdG8gdGhlIHJlc291cmNlIGFsbG9j
YXRlZCBieSAnY2hpbGQnIHdpdGggcmVzb3VyY2UgaWQgJ3JpZCcuCisJICoK
KwkgKiBJZiB3ZSBkb24ndCByZWNvcmQgdGhlIG1hcHBpbmcgaGVyZSB0aGVu
IHdlIHdvbid0IGJlIGFibGUgdG8KKwkgKiBsb2NhdGUgdGhlIGludGVycnVw
dCBzb3VyY2Ugd2hlbiBidXNfc2V0dXBfaW50cihjaGlsZCxyaWQpIGlzCisJ
ICogY2FsbGVkLgorCSAqLworCWlmIChyZXMgIT0gTlVMTCAmJiBpbnRybnVt
ICE9IC0xKQorCQlzYl9pbnRtYXBfYWRkKGludHJudW0sIGNoaWxkLCBybWFu
X2dldF9yaWQocmVzKSwgaW50c3JjKTsKKworCS8qCisJICogSWYgYSBub24t
ZGVmYXVsdCByZXNvdXJjZSBhbGxvY2F0aW9uIGJ5IG91ciBjaGlsZCB3YXMg
c3VjY2Vzc2Z1bAorCSAqIHRoZW4ga2VlcCB0cmFjayBvZiB0aGUgcmVzb3Vy
Y2UgaW4gdGhlIHJlc291cmNlIGxpc3QgYXNzb2NpYXRlZAorCSAqIHdpdGgg
dGhlIGNoaWxkLgorCSAqLworCWlmIChyZXMgIT0gTlVMTCAmJiBybGUgPT0g
TlVMTCAmJiBkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgPT0gYnVzKSB7CisJ
CXJlc291cmNlX2xpc3RfYWRkKHJsLCB0eXBlLCAqcmlkLCBzdGFydCwgZW5k
LCBjb3VudCk7CisJCXJsZSA9IHJlc291cmNlX2xpc3RfZmluZChybCwgdHlw
ZSwgKnJpZCk7CisJCWlmIChybGUgPT0gTlVMTCkKKwkJCXBhbmljKCJ6YmJ1
c19hbGxvY19yZXNvdXJjZTogY2Fubm90IGZpbmQgcmVzb3VyY2UiKTsKKwl9
CisKKwlpZiAocmxlICE9IE5VTEwpIHsKKwkJS0FTU0VSVChkZXZpY2VfZ2V0
X3BhcmVudChjaGlsZCkgPT0gYnVzLAorCQkJKCJybGUgc2hvdWxkIGJlIE5V
TEwgZm9yIHBhc3N0aHJ1IGRldmljZSIpKTsKKwkJcmxlLT5yZXMgPSByZXM7
CisJCWlmIChybGUtPnJlcykgeworCQkJcmxlLT5zdGFydCA9IHJtYW5fZ2V0
X3N0YXJ0KHJsZS0+cmVzKTsKKwkJCXJsZS0+ZW5kID0gcm1hbl9nZXRfZW5k
KHJsZS0+cmVzKTsKKwkJCXJsZS0+Y291bnQgPSBjb3VudDsKKwkJfQorCX0K
KworCXJldHVybiAocmVzKTsKK30KKworc3RhdGljIGludAoremJidXNfc2V0
dXBfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBzdHJ1Y3Qg
cmVzb3VyY2UgKmlycSwgaW50IGZsYWdzLAorCQkgZHJpdmVyX2ZpbHRlcl90
ICpmaWx0ZXIsIGRyaXZlcl9pbnRyX3QgKmludHIsIHZvaWQgKmFyZywgCisJ
CSB2b2lkICoqY29va2llcCkKK3sKKwlpbnQgZXJyb3I7CisKKwllcnJvciA9
IGJ1c19nZW5lcmljX3NldHVwX2ludHIoZGV2LCBjaGlsZCwgaXJxLCBmbGFn
cywKKwkJCQkgICAgICAgZmlsdGVyLCBpbnRyLCBhcmcsIGNvb2tpZXApOwor
CWlmIChlcnJvciA9PSAwKQorCQlzYl9pbnRtYXBfYWN0aXZhdGUocm1hbl9n
ZXRfc3RhcnQoaXJxKSwgY2hpbGQsCisJCQkJICAgcm1hbl9nZXRfcmlkKGly
cSkpOworCisJcmV0dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyBkZXZpY2Vf
dAoremJidXNfYWRkX2NoaWxkKGRldmljZV90IGJ1cywgaW50IG9yZGVyLCBj
b25zdCBjaGFyICpuYW1lLCBpbnQgdW5pdCkKK3sKKwlkZXZpY2VfdCBjaGls
ZDsKKwlzdHJ1Y3QgemJidXNfZGV2aW5mbyAqZGluZm87CisKKwljaGlsZCA9
IGRldmljZV9hZGRfY2hpbGRfb3JkZXJlZChidXMsIG9yZGVyLCBuYW1lLCB1
bml0KTsKKwlpZiAoY2hpbGQgIT0gTlVMTCkgeworCQlkaW5mbyA9IG1hbGxv
YyhzaXplb2Yoc3RydWN0IHpiYnVzX2RldmluZm8pLCBNX1pCQlVTREVWLAor
CQkJICAgICAgIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwkJcmVzb3VyY2VfbGlz
dF9pbml0KCZkaW5mby0+cmVzb3VyY2VzKTsKKwkJZGV2aWNlX3NldF9pdmFy
cyhjaGlsZCwgZGluZm8pOworCX0KKworCXJldHVybiAoY2hpbGQpOworfQor
CitzdGF0aWMgc3RydWN0IHJlc291cmNlX2xpc3QgKgoremJidXNfZ2V0X3Jl
c291cmNlX2xpc3QoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCkKK3sK
KwlzdHJ1Y3QgemJidXNfZGV2aW5mbyAqZGluZm8gPSBkZXZpY2VfZ2V0X2l2
YXJzKGNoaWxkKTsKKworCXJldHVybiAoJmRpbmZvLT5yZXNvdXJjZXMpOwor
fQorCitzdGF0aWMgZGV2aWNlX21ldGhvZF90IHpiYnVzX21ldGhvZHNbXSA9
eworCS8qIERldmljZSBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoZGV2aWNl
X3Byb2JlLAkJemJidXNfcHJvYmUpLAorCURFVk1FVEhPRChkZXZpY2VfYXR0
YWNoLAl6YmJ1c19hdHRhY2gpLAorCURFVk1FVEhPRChkZXZpY2VfZGV0YWNo
LAlidXNfZ2VuZXJpY19kZXRhY2gpLAorCURFVk1FVEhPRChkZXZpY2Vfc2h1
dGRvd24sCWJ1c19nZW5lcmljX3NodXRkb3duKSwKKwlERVZNRVRIT0QoZGV2
aWNlX3N1c3BlbmQsCWJ1c19nZW5lcmljX3N1c3BlbmQpLAorCURFVk1FVEhP
RChkZXZpY2VfcmVzdW1lLAlidXNfZ2VuZXJpY19yZXN1bWUpLAorCisJLyog
QnVzIGludGVyZmFjZSAqLworCURFVk1FVEhPRChidXNfYWxsb2NfcmVzb3Vy
Y2UsCXpiYnVzX2FsbG9jX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVzX2Fj
dGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19hY3RpdmF0ZV9yZXNvdXJj
ZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlLCBidXNf
Z2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVz
X3JlbGVhc2VfcmVzb3VyY2UsCWJ1c19nZW5lcmljX3JlbGVhc2VfcmVzb3Vy
Y2UpLAorCURFVk1FVEhPRChidXNfZ2V0X3Jlc291cmNlX2xpc3QsemJidXNf
Z2V0X3Jlc291cmNlX2xpc3QpLAorCURFVk1FVEhPRChidXNfc2V0X3Jlc291
cmNlLAlidXNfZ2VuZXJpY19ybF9zZXRfcmVzb3VyY2UpLAorCURFVk1FVEhP
RChidXNfZ2V0X3Jlc291cmNlLAlidXNfZ2VuZXJpY19ybF9nZXRfcmVzb3Vy
Y2UpLAorCURFVk1FVEhPRChidXNfZGVsZXRlX3Jlc291cmNlLAlidXNfZ2Vu
ZXJpY19ybF9kZWxldGVfcmVzb3VyY2UpLAorCURFVk1FVEhPRChidXNfc2V0
dXBfaW50ciwJemJidXNfc2V0dXBfaW50ciksCisJREVWTUVUSE9EKGJ1c190
ZWFyZG93bl9pbnRyLAlidXNfZ2VuZXJpY190ZWFyZG93bl9pbnRyKSwKKwlE
RVZNRVRIT0QoYnVzX2FkZF9jaGlsZCwJemJidXNfYWRkX2NoaWxkKSwKKwlE
RVZNRVRIT0QoYnVzX2hpbnRlZF9jaGlsZCwJemJidXNfaGludGVkX2NoaWxk
KSwKKwkKKwl7IDAsIDAgfQorfTsKKworc3RhdGljIGRyaXZlcl90IHpiYnVz
X2RyaXZlciA9IHsKKwkiemJidXMiLAorCXpiYnVzX21ldGhvZHMKK307CisK
K3N0YXRpYyBkZXZjbGFzc190IHpiYnVzX2RldmNsYXNzOworCitEUklWRVJf
TU9EVUxFKHpiYnVzLCBuZXh1cywgemJidXNfZHJpdmVyLCB6YmJ1c19kZXZj
bGFzcywgMCwgMCk7CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJz
ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2JfemJwY2kuYyAuL3N5
cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5jCi0tLSAvdS9uZWVsbmF0dS9wNC9m
cmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5j
CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5
cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5jCTIwMDktMDYtMTMgMTI6MzE6NTIu
MDQyMzI4MDAwIC0wNzAwCkBAIC0wLDAgKzEsMjgzIEBACisvKi0KKyAqIENv
cHlyaWdodCAoYykgMjAwOSBOZWVsa2FudGggTmF0dQorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5l
bC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9t
b2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+CisjaW5jbHVkZSA8c3lz
L3BjcHUuaD4KKyNpbmNsdWRlIDxzeXMvc21wLmg+CisKKyNpbmNsdWRlIDx2
bS92bS5oPgorI2luY2x1ZGUgPHZtL3ZtX3BhcmFtLmg+CisjaW5jbHVkZSA8
dm0vdm1fa2Vybi5oPgorI2luY2x1ZGUgPHZtL3ZtX2V4dGVybi5oPgorI2lu
Y2x1ZGUgPHZtL3BtYXAuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFy
Lmg+CisjaW5jbHVkZSA8ZGV2L3BjaS9wY2liX3ByaXZhdGUuaD4KKworI2lu
Y2x1ZGUgPG1hY2hpbmUvcG1hcC5oPgorI2luY2x1ZGUgPG1hY2hpbmUvcmVz
b3VyY2UuaD4KKworI2luY2x1ZGUgInBjaWJfaWYuaCIKKworI2luY2x1ZGUg
InNiX3NjZC5oIgorCitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKK3N0YXRp
YyBzdHJ1Y3QgeworCXZtX29mZnNldF90IHZhZGRyOworCXZtX3BhZGRyX3Qg
IHBhZGRyOworfSB6YnBjaV9jb25maWdfc3BhY2VbTUFYQ1BVXTsKKworc3Rh
dGljIGNvbnN0IHZtX3BhZGRyX3QgQ0ZHX1BBRERSX0JBU0UgPSAweEZFMDAw
MDAwOworCQorc3RhdGljIGludAoremJwY2lfcHJvYmUoZGV2aWNlX3QgZGV2
KQoreworCQorCWRldmljZV9zZXRfZGVzYyhkZXYsICJCcm9hZGNvbS9TaWJ5
dGUgUENJIEkvTyBCcmlkZ2UiKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0
aWMgaW50Cit6YnBjaV9hdHRhY2goZGV2aWNlX3QgZGV2KQoreworCWludCBu
LCByaWQsIHNpemU7CisJdm1fb2Zmc2V0X3QgdmE7CisJc3RydWN0IHJlc291
cmNlICpyZXM7CisKKwkvKgorCSAqIFJlc2VydmUgdGhlIHRoZSBwaHlzaWNh
bCBtZW1vcnkgdGhhdCBpcyB1c2VkIHRvIHJlYWQvd3JpdGUgdG8gdGhlCisJ
ICogcGNpIGNvbmZpZyBzcGFjZSBidXQgZG9uJ3QgYWN0aXZhdGUgaXQuIFdl
IGFyZSB1c2luZyBhIHBhZ2Ugd29ydGgKKwkgKiBvZiBLVkEgYXMgYSB3aW5k
b3cgb3ZlciB0aGlzIHJlZ2lvbi4KKwkgKi8KKwlyaWQgPSAwOworCXNpemUg
PSAoUENJX0JVU01BWCArIDEpICogKFBDSV9TTE9UTUFYICsgMSkgKiAoUENJ
X0ZVTkNNQVggKyAxKSAqIDI1NjsKKwlyZXMgPSBidXNfYWxsb2NfcmVzb3Vy
Y2UoZGV2LCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgQ0ZHX1BBRERSX0JBU0Us
CisJCQkJIENGR19QQUREUl9CQVNFICsgc2l6ZSAtIDEsIHNpemUsIDApOwor
CWlmIChyZXMgPT0gTlVMTCkgeworCQlwYW5pYygiQ2Fubm90IGFsbG9jYXRl
IHJlc291cmNlIGZvciBjb25maWcgc3BhY2UgYWNjZXNzZXMuIik7CisJfQor
CisJLyoKKwkgKiBBbGxvY2F0ZSBLVkEgZm9yIGFjY2Vzc2luZyBQQ0kgY29u
ZmlnIHNwYWNlLgorCSAqLworCXZhID0ga21lbV9hbGxvY19ub2ZhdWx0KGtl
cm5lbF9tYXAsIFBBR0VfU0laRSAqIG1wX25jcHVzKTsKKwlpZiAodmEgPT0g
MCkgeworCQlkZXZpY2VfcHJpbnRmKGRldiwgIkNhbm5vdCBhbGxvY2F0ZSB2
aXJ0dWFsIGFkZHJlc3NlcyBmb3IgIgorCQkJCSAgICJjb25maWcgc3BhY2Ug
YWNjZXNzLlxuIik7CisJCXJldHVybiAoRU5PTUVNKTsKKwl9CisKKwlmb3Ig
KG4gPSAwOyBuIDwgbXBfbmNwdXM7ICsrbikgeworCQl6YnBjaV9jb25maWdf
c3BhY2Vbbl0udmFkZHIgPSB2YSArIG4gKiBQQUdFX1NJWkU7CisJfQorCisJ
LyoKKwkgKiBTaWJ5dGUgaGFzIHRoZSBQQ0kgYnVzIGhpZXJhcmNoeSByb290
ZWQgYXQgYnVzIDAgYW5kIEhULVBDSQorCSAqIGhpZXJhcmNoeSByb290ZWQg
YXQgYnVzIDEuCisJICovCisJaWYgKGRldmljZV9hZGRfY2hpbGQoZGV2LCAi
cGNpIiwgMCkgPT0gTlVMTCkgeworCQlwYW5pYygiemJwY2lfYXR0YWNoOiBj
b3VsZCBub3QgYWRkIHBjaSBidXMgMC5cbiIpOworCX0KKworCWlmIChkZXZp
Y2VfYWRkX2NoaWxkKGRldiwgInBjaSIsIDEpID09IE5VTEwpIHsKKwkJcGFu
aWMoInpicGNpX2F0dGFjaDogY291bGQgbm90IGFkZCBwY2kgYnVzIDEuXG4i
KTsKKwl9CisKKwlpZiAoYm9vdHZlcmJvc2UpIHsKKwkJZGV2aWNlX3ByaW50
ZihkZXYsICJhdHRhY2hlZC5cbiIpOworCX0KKworCXJldHVybiAoYnVzX2dl
bmVyaWNfYXR0YWNoKGRldikpOworfQorCitzdGF0aWMgaW50Cit6YnBjaV9y
ZWFkX2l2YXIoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHdo
aWNoLCB1aW50cHRyX3QgKnJlc3VsdCkKK3sKKwkKKwlzd2l0Y2ggKHdoaWNo
KSB7CisJY2FzZSBQQ0lCX0lWQVJfRE9NQUlOOgorCQkqcmVzdWx0ID0gMDsJ
CQkJLyogc2luZ2xlIFBDSSBkb21haW4gKi8KKwkJcmV0dXJuICgwKTsKKwlj
YXNlIFBDSUJfSVZBUl9CVVM6CisJCSpyZXN1bHQgPSBkZXZpY2VfZ2V0X3Vu
aXQoY2hpbGQpOwkvKiBQQ0kgYnVzIDAgb3IgMSAqLworCQlyZXR1cm4gKDAp
OworCWRlZmF1bHQ6CisJCXJldHVybiAoRU5PRU5UKTsKKwl9Cit9CisKKy8q
CisgKiBXZSByZWx5IG9uIHRoZSBDRkUgdG8gaGF2ZSBjb25maWd1cmVkIHRo
ZSBpbnRsaW5lIGNvcnJlY3RseSB0byBwb2ludCB0bworICogb25lIG9mIFBD
SS1BL1BDSS1CL1BDSS1DL1BDSS1EIGluIHRoZSBpbnRlcnVwdCBtYXBwZXIu
CisgKi8KK3N0YXRpYyBpbnQKK3picGNpX3JvdXRlX2ludGVycnVwdChkZXZp
Y2VfdCBwY2liLCBkZXZpY2VfdCBkZXYsIGludCBwaW4pCit7CisKKwlyZXR1
cm4gKFBDSV9JTlZBTElEX0lSUSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0
aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNl
Y3Rpb24gc2luY2UgaXQKKyAqIGNoYW5nZXMgdGhlIHBlci1jcHUgcGNpIGNv
bmZpZyBzcGFjZSB2YS10by1wYSBtYXBwaW5ncy4KKyAqLworc3RhdGljIHZt
X29mZnNldF90Cit6YnBjaV9jb25maWdfc3BhY2VfdmEoaW50IGJ1cywgaW50
IHNsb3QsIGludCBmdW5jLCBpbnQgcmVnLCBpbnQgYnl0ZXMpCit7CisJaW50
IGNwdTsKKwl2bV9vZmZzZXRfdCB2YV9wYWdlOworCXZtX3BhZGRyX3QgcGEs
IHBhX3BhZ2U7CisKKwlpZiAoYnVzIDw9IFBDSV9CVVNNQVggJiYgc2xvdCA8
PSBQQ0lfU0xPVE1BWCAmJiBmdW5jIDw9IFBDSV9GVU5DTUFYICYmCisJICAg
IHJlZyA8PSBQQ0lfUkVHTUFYICYmIChieXRlcyA9PSAxIHx8IGJ5dGVzID09
IDIgfHwgYnl0ZXMgPT0gNCkgJiYKKwkgICAgKChyZWcgJiAoYnl0ZXMgLSAx
KSkgPT0gMCkpIHsKKwkJY3B1ID0gUENQVV9HRVQoY3B1aWQpOworCQl2YV9w
YWdlID0gemJwY2lfY29uZmlnX3NwYWNlW2NwdV0udmFkZHI7CisJCXBhID0g
Q0ZHX1BBRERSX0JBU0UgfAorCQkgICAgIChidXMgPDwgMTYpIHwgKHNsb3Qg
PDwgMTEpIHwgKGZ1bmMgPDwgOCkgfCByZWc7CisJCXBhX3BhZ2UgPSBwYSAm
IH4oUEFHRV9TSVpFIC0gMSk7CisJCWlmICh6YnBjaV9jb25maWdfc3BhY2Vb
Y3B1XS5wYWRkciAhPSBwYV9wYWdlKSB7CisJCQlwbWFwX2tyZW1vdmUodmFf
cGFnZSk7CisJCQlwbWFwX2tlbnRlcih2YV9wYWdlLCBwYV9wYWdlKTsKKwkJ
CXpicGNpX2NvbmZpZ19zcGFjZVtjcHVdLnBhZGRyID0gcGFfcGFnZTsKKwkJ
fQorCQlyZXR1cm4gKHZhX3BhZ2UgKyAocGEgLSBwYV9wYWdlKSk7CisJfSBl
bHNlIHsKKwkJcmV0dXJuICgwKTsKKwl9Cit9CisKK3N0YXRpYyB1aW50MzJf
dAoremJwY2lfcmVhZF9jb25maWcoZGV2aWNlX3QgZGV2LCB1X2ludCBiLCB1
X2ludCBzLCB1X2ludCBmLCB1X2ludCByLCBpbnQgdykKK3sKKwl1aW50MzJf
dCBkYXRhOworCXZtX29mZnNldF90IHZhOworCisJY3JpdGljYWxfZW50ZXIo
KTsKKworCXZhID0gemJwY2lfY29uZmlnX3NwYWNlX3ZhKGIsIHMsIGYsIHIs
IHcpOworCWlmICh2YSA9PSAwKSB7CisJCXBhbmljKCJ6YnBjaV9yZWFkX2Nv
bmZpZzogaW52YWxpZCAlZC8lZC8lZFslZF0gJWRcbiIsCisJCSAgICAgIGIs
IHMsIGYsIHIsIHcpOworCX0KKworCXN3aXRjaCAodykgeworCWNhc2UgNDoK
KwkJZGF0YSA9ICoodWludDMyX3QgKil2YTsKKwkJYnJlYWs7CisJY2FzZSAy
OgorCQlkYXRhID0gKih1aW50MTZfdCAqKXZhOworCQlicmVhazsKKwljYXNl
IDE6CisJCWRhdGEgPSAqKHVpbnQ4X3QgKil2YTsKKwkJYnJlYWs7CisJZGVm
YXVsdDoKKwkJcGFuaWMoInpicGNpX3JlYWRfY29uZmlnOiBpbnZhbGlkIHdp
ZHRoICVkXG4iLCB3KTsKKwl9CisKKwljcml0aWNhbF9leGl0KCk7CisKKwly
ZXR1cm4gKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAoremJwY2lfd3JpdGVf
Y29uZmlnKGRldmljZV90IGQsIHVfaW50IGIsIHVfaW50IHMsIHVfaW50IGYs
IHVfaW50IHIsCisJCSAgIHVpbnQzMl90IGRhdGEsIGludCB3KQoreworCXZt
X29mZnNldF90IHZhOworCisJY3JpdGljYWxfZW50ZXIoKTsKKworCXZhID0g
emJwY2lfY29uZmlnX3NwYWNlX3ZhKGIsIHMsIGYsIHIsIHcpOworCWlmICh2
YSA9PSAwKSB7CisJCXBhbmljKCJ6YnBjaV93cml0ZV9jb25maWc6IGludmFs
aWQgJWQvJWQvJWRbJWRdICVkLyVkXG4iLAorCQkgICAgICBiLCBzLCBmLCBy
LCBkYXRhLCB3KTsKKwl9CisKKwlzd2l0Y2ggKHcpIHsKKwljYXNlIDQ6CisJ
CSoodWludDMyX3QgKil2YSA9IGRhdGE7CisJCWJyZWFrOworCWNhc2UgMjoK
KwkJKih1aW50MTZfdCAqKXZhID0gZGF0YTsKKwkJYnJlYWs7CisJY2FzZSAx
OgorCQkqKHVpbnQ4X3QgKil2YSA9IGRhdGE7CisJCWJyZWFrOworCWRlZmF1
bHQ6CisJCXBhbmljKCJ6YnBjaV93cml0ZV9jb25maWc6IGludmFsaWQgd2lk
dGggJWRcbiIsIHcpOworCX0KKworCWNyaXRpY2FsX2V4aXQoKTsKK30KKwor
c3RhdGljIGRldmljZV9tZXRob2RfdCB6YnBjaV9tZXRob2RzW10gPXsKKwkv
KiBEZXZpY2UgaW50ZXJmYWNlICovCisJREVWTUVUSE9EKGRldmljZV9wcm9i
ZSwJCXpicGNpX3Byb2JlKSwKKwlERVZNRVRIT0QoZGV2aWNlX2F0dGFjaCwJ
emJwY2lfYXR0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJYnVz
X2dlbmVyaWNfZGV0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX3NodXRkb3du
LAlidXNfZ2VuZXJpY19zaHV0ZG93biksCisJREVWTUVUSE9EKGRldmljZV9z
dXNwZW5kLAlidXNfZ2VuZXJpY19zdXNwZW5kKSwKKwlERVZNRVRIT0QoZGV2
aWNlX3Jlc3VtZSwJYnVzX2dlbmVyaWNfcmVzdW1lKSwKKworCS8qIEJ1cyBp
bnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoYnVzX3JlYWRfaXZhciwJemJwY2lf
cmVhZF9pdmFyKSwKKwlERVZNRVRIT0QoYnVzX3dyaXRlX2l2YXIsCWJ1c19n
ZW5lcmljX3dyaXRlX2l2YXIpLAorCURFVk1FVEhPRChidXNfYWxsb2NfcmVz
b3VyY2UsCWJ1c19nZW5lcmljX2FsbG9jX3Jlc291cmNlKSwKKwlERVZNRVRI
T0QoYnVzX2FjdGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19hY3RpdmF0
ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291
cmNlLCBidXNfZ2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZN
RVRIT0QoYnVzX3JlbGVhc2VfcmVzb3VyY2UsCWJ1c19nZW5lcmljX3JlbGVh
c2VfcmVzb3VyY2UpLAorCURFVk1FVEhPRChidXNfc2V0dXBfaW50ciwJYnVz
X2dlbmVyaWNfc2V0dXBfaW50ciksCisJREVWTUVUSE9EKGJ1c190ZWFyZG93
bl9pbnRyLAlidXNfZ2VuZXJpY190ZWFyZG93bl9pbnRyKSwKKwlERVZNRVRI
T0QoYnVzX2FkZF9jaGlsZCwJYnVzX2dlbmVyaWNfYWRkX2NoaWxkKSwKKwor
CS8qIHBjaWIgaW50ZXJmYWNlICovCisJREVWTUVUSE9EKHBjaWJfbWF4c2xv
dHMsCXBjaWJfbWF4c2xvdHMpLAorCURFVk1FVEhPRChwY2liX3JlYWRfY29u
ZmlnLAl6YnBjaV9yZWFkX2NvbmZpZyksCisJREVWTUVUSE9EKHBjaWJfd3Jp
dGVfY29uZmlnLAl6YnBjaV93cml0ZV9jb25maWcpLAorCURFVk1FVEhPRChw
Y2liX3JvdXRlX2ludGVycnVwdCwJemJwY2lfcm91dGVfaW50ZXJydXB0KSwK
KwkKKwl7IDAsIDAgfQorfTsKKworLyoKKyAqIFRoZSAiemJwY2kiIGNsYXNz
IGluaGVyaXRzIGZyb20gdGhlICJwY2liIiBiYXNlIGNsYXNzLiBUaGVyZWZv
cmUgaW4KKyAqIGFkZGl0aW9uIHRvIGRyaXZlcnMgdGhhdCBiZWxvbmcgdG8g
dGhlICJ6YnBjaSIgY2xhc3Mgd2Ugd2lsbCBhbHNvCisgKiBjb25zaWRlciBk
cml2ZXJzIGJlbG9uZ2luZyB0byB0aGUgInBjaWIiIHdoZW4gcHJvYmluZyBj
aGlsZHJlbiBvZgorICogInpicGNpIi4KKyAqLworREVDTEFSRV9DTEFTUyhw
Y2liX2RyaXZlcik7CitERUZJTkVfQ0xBU1NfMSh6YnBjaSwgemJwY2lfZHJp
dmVyLCB6YnBjaV9tZXRob2RzLCAwLCBwY2liX2RyaXZlcik7CisKK3N0YXRp
YyBkZXZjbGFzc190IHpicGNpX2RldmNsYXNzOworCitEUklWRVJfTU9EVUxF
KHpicGNpLCB6YmJ1cywgemJwY2lfZHJpdmVyLCB6YnBjaV9kZXZjbGFzcywg
MCwgMCk7Cg==

--0-303183881-1245214347=:49433--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?25885.49433.qm>