Vicam/3com homeconnect usb camera driver

John Tyner (jtyner@cs.ucr.edu)
Thu, 3 Oct 2002 20:59:30 -0700 (PDT)


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

--394922409-960090401-1033703970=:15999
Content-Type: TEXT/PLAIN; charset=US-ASCII

Attached is a driver for the 3Com HomeConnect USB Camera. The code is
based somewhat on the vicam driver in the kernel (which crashes my
computer hard) and also relies heavily on the information obtained by
the guys doing the reverse engineering and kernel driver work at
homeconnectusb.sourceforge.net. The fact that this driver works speaks
very highly of them.

The driver gets the "It Works for Me" approval, but can definitely use
some wider testing and review. Please test, review, and comment.

The code is for for 2.4.19, and I'll port it forward to 2.5 if it
seems like it would be useful.

Apologies:
1. The files are not a patch but should build outside of the tree.
2. The file is woefully underdocumented
3. There aren't any printk's in the driver.

I'm not subscribed to the list but rather lurk on the archives, so please
try to include me in any replies.

Thanks,
John

--394922409-960090401-1033703970=:15999
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="vicam.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.30.0210032059300.15999@hill.cs.ucr.edu>
Content-Description:
Content-Disposition: attachment; filename="vicam.h"

LyogLSotIGxpbnV4LWMgLSotDQogKiB2aWNhbS5jIC0gVmlDQU0vM0NvbSBI
b21lQ29ubmVjdCBVU0IgQ2FtZXJhIERyaXZlcg0KICoNCiAqIENvcHlyaWdo
dCAoYykgMjAwMiBKb2huIFR5bmVyIDxqdHluZXJAY3MudWNyLmVkdT4NCiAq
Lw0KDQojaWZuZGVmIFZJQ0FNX0gNCiNkZWZpbmUgVklDQU1fSA0KDQojZGVm
aW5lIGNsYW1wKCB4LCBsLCBoICkgbWF4X3QoIGxvbmcsIG1pbl90KCBsb25n
LCAoIHggKSwgKCBoICkgKSwgKCBsICkgKQ0KDQojZGVmaW5lIERFQlVHX1BS
SU5UKCBmb3JtYXQsIGFyZ3MuLi4gKSBcDQogICAgICAgIHByaW50ayggS0VS
Tl9ERUJVRyBfX0ZVTkNUSU9OX18gIjogIiBmb3JtYXQsICMjYXJncyApDQoN
CiNkZWZpbmUgVVNCXzNDT01IQ19WRU5ET1JfSUQgICAgIDB4MDRDMQ0KI2Rl
ZmluZSBVU0JfM0NPTUhDX1BST0RVQ1RfSUQgICAgMHgwMDlEDQoNCiNkZWZp
bmUgVklDQU1fSEVBREVSX1NJWkUgICAgICAgIDY0DQojZGVmaW5lIFZJQ0FN
X0ZPT1RFUl9TSVpFICAgICAgICA2NA0KDQojZGVmaW5lIFZJQ0FNX05VTV9G
UkFNRVMgICAgICAgICA0DQojZGVmaW5lIFZJQ0FNX0ZSQU1FX1NJWkUgICAg
ICAgICAoIDMgKiAzMjAgKiAyNDIgKQ0KI2RlZmluZSBWSUNBTV9JTlBVVF9T
SVpFICAgICAgICAgKCA1MTIgKiAyNDIgKyBcDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZJQ0FNX0hFQURFUl9TSVpFICsgVklDQU1f
Rk9PVEVSX1NJWkUgKQ0KDQojZGVmaW5lIFZJQ0FNX0NOVFJMX0JVRl9TSVpF
ICAgICBQQUdFX1NJWkUNCiNkZWZpbmUgVklDQU1fRlJBTUVfQlVGX1NJWkUg
ICAgIFBBR0VfQUxJR04oIFZJQ0FNX05VTV9GUkFNRVMgKiBcDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSUNBTV9G
UkFNRV9TSVpFICkNCg0KI2RlZmluZSBWSUNBTV9SRVFfVkVORE9SICAgICAg
ICAgMHhGRg0KI2RlZmluZSBWSUNBTV9SRVFfUE9XRVIgICAgICAgICAgMHg1
MA0KI2RlZmluZSBWSUNBTV9SRVFfQ0FQVFVSRSAgICAgICAgMHg1MQ0KI2Rl
ZmluZSBWSUNBTV9SRVFfTEVEICAgICAgICAgICAgMHg1NQ0KDQpzdHJ1Y3Qg
dmljYW1fdXNiX2RhdGEgew0KCXN0cnVjdCB2aWRlb19kZXZpY2UgdmljYW1f
djRsX2RldjsNCn07DQoNCnN0cnVjdCB2aWNhbV92NGxfZGF0YSB7DQoJc3Ry
dWN0IHVzYl9kZXZpY2UgKnVzYl9kZXY7DQoJc3RydWN0IHVyYiAqdXJiOw0K
CXN0cnVjdCBzZW1hcGhvcmUgZGV2X211dGV4Ow0KCXN0cnVjdCBzZW1hcGhv
cmUgYnVzeV9tdXRleDsNCglzdHJ1Y3Qgc2VtYXBob3JlIGRlY29kZV9tdXRl
eFtWSUNBTV9OVU1fRlJBTUVTXTsNCglzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qg
ZGVjb2RlOw0KCXU4ICpjbnRybF9idWY7DQoJdTggKmlucHV0X2J1ZltWSUNB
TV9OVU1fRlJBTUVTXTsNCgl1OCAqZnJhbWVfYnVmOw0KCXVuc2lnbmVkIGxv
bmcgY3VycmVudF9mcmFtZTsNCgl1bnNpZ25lZCBsb25nIGRlY29kZV9mcmFt
ZXM7DQoJdTMyIHdpZHRoLCBoZWlnaHQ7DQoJdTE2IHNwZWVkOw0KCXU4IGdh
aW47DQoJdTggYnVsa19lbmRwb2ludDsNCn07DQoNCnN0YXRpYyBjb25zdCB1
OCBzZXR1cDFbXSA9IHsNCgkweEI2LCAweEMzLCAweDFGLCAweDAwLCAweDAy
LCAweDY0LCAweEU3LCAweDY3LA0KCTB4RkQsIDB4RkYsIDB4MEUsIDB4QzAs
IDB4RTcsIDB4MDksIDB4REUsIDB4MDAsDQoJMHg4RSwgMHgwMCwgMHhDMCwg
MHgwOSwgMHg0MCwgMHgwMywgMHhDMCwgMHgxNywNCgkweDQ0LCAweDAzLCAw
eDRCLCAweEFGLCAweEMwLCAweDA3LCAweDAwLCAweDAwLA0KCTB4NEIsIDB4
QUYsIDB4OTcsIDB4Q0YsIDB4MDAsIDB4MDANCn07DQoNCnN0YXRpYyBjb25z
dCB1OCBzZXR1cDJbXSA9IHsNCgkweEI2LCAweEMzLCAweDAzLCAweDAwLCAw
eDAzLCAweDY0LCAweDE4LCAweDAwLA0KCTB4MDAsIDB4MDANCn07DQoNCnN0
YXRpYyBjb25zdCB1OCBzZXR1cDNbXSA9IHsNCgkweEI2LCAweEMzLCAweDAx
LCAweDAwLCAweDA2LCAweDY0LCAweDAwLCAweDAwDQp9Ow0KDQpzdGF0aWMg
Y29uc3QgdTggc2V0dXA0W10gPSB7DQoJMHhCNiwgMHhDMywgMHg4RiwgMHgw
NiwgMHgwMiwgMHg2NCwgMHhFNywgMHgwNywNCgkweDAwLCAweDAwLCAweDA4
LCAweEMwLCAweEU3LCAweDA3LCAweDAwLCAweDAwLA0KCTB4M0UsIDB4QzAs
IDB4RTcsIDB4MDcsIDB4NTQsIDB4MDEsIDB4QUEsIDB4MDAsDQoJMHhFNywg
MHgwNywgMHhDOCwgMHgwNSwgMHhCNiwgMHgwMCwgMHhFNywgMHgwNywNCgkw
eDQyLCAweDAxLCAweEQyLCAweDAwLCAweEU3LCAweDA3LCAweDdDLCAweDAw
LA0KCTB4MTYsIDB4MDAsIDB4RTcsIDB4MDcsIDB4NTYsIDB4MDAsIDB4MTgs
IDB4MDAsDQoJMHhFNywgMHgwNywgMHgwNiwgMHgwMCwgMHg5MiwgMHhDMCwg
MHhFNywgMHgwNywNCgkweDAwLCAweDAwLCAweDFFLCAweEMwLCAweEU3LCAw
eDA3LCAweEZGLCAweEZGLA0KCTB4MjIsIDB4QzAsIDB4RTcsIDB4MDcsIDB4
MDQsIDB4MDAsIDB4MjQsIDB4QzAsDQoJMHhFNywgMHgwNywgMHhFQywgMHgy
NywgMHgyOCwgMHhDMCwgMHhFNywgMHgwNywNCgkweDE2LCAweDAxLCAweDhF
LCAweDAwLCAweEU3LCAweDg3LCAweDAxLCAweDAwLA0KCTB4MEUsIDB4QzAs
IDB4OTcsIDB4Q0YsIDB4RDcsIDB4MDksIDB4MDAsIDB4QzAsDQoJMHhFNywg
MHg3NywgMHgwMSwgMHgwMCwgMHg5MiwgMHhDMCwgMHgwOSwgMHhDMSwNCgkw
eEU3LCAweDA5LCAweEZFLCAweDA1LCAweDI0LCAweDAxLCAweEU3LCAweDA5
LA0KCTB4MDQsIDB4MDYsIDB4MjYsIDB4MDEsIDB4RTcsIDB4MDcsIDB4MDcs
IDB4MDAsDQoJMHg5MiwgMHhDMCwgMHhFNywgMHgwNSwgMHgwMCwgMHhDMCwg
MHhDMCwgMHhERiwNCgkweDk3LCAweENGLCAweDE3LCAweDAwLCAweDU3LCAw
eDAwLCAweDE3LCAweDAyLA0KCTB4RDcsIDB4MDksIDB4MDAsIDB4QzAsIDB4
RTcsIDB4NzcsIDB4MDEsIDB4MDAsDQoJMHg5MiwgMHhDMCwgMHgwQSwgMHhD
MSwgMHhFNywgMHg1NywgMHhGRiwgMHhGRiwNCgkweEZBLCAweDA1LCAweDBE
LCAweEMwLCAweEU3LCAweDU3LCAweDAwLCAweDAwLA0KCTB4RkEsIDB4MDUs
IDB4MEYsIDB4QzAsIDB4OUYsIDB4QUYsIDB4QzYsIDB4MDAsDQoJMHhFNywg
MHgwNSwgMHgwMCwgMHhDMCwgMHhDOCwgMHgwNSwgMHhDMSwgMHgwNSwNCgkw
eEMwLCAweDA1LCAweEMwLCAweERGLCAweDk3LCAweENGLCAweDI3LCAweERB
LA0KCTB4RkEsIDB4MDUsIDB4RUYsIDB4MDcsIDB4MDEsIDB4MDAsIDB4MEIs
IDB4MDYsDQoJMHg3MywgMHhDRiwgMHg5RiwgMHhBRiwgMHg3OCwgMHgwMSwg
MHg5RiwgMHhBRiwNCgkweDFBLCAweDAzLCAweDZFLCAweENGLCAweEU3LCAw
eDA5LCAweEZDLCAweDA1LA0KCTB4MjQsIDB4MDEsIDB4RTcsIDB4MDksIDB4
MDIsIDB4MDYsIDB4MjYsIDB4MDEsDQoJMHhFNywgMHgwNywgMHgwNywgMHgw
MCwgMHg5MiwgMHhDMCwgMHhFNywgMHgwOSwNCgkweEZDLCAweDA1LCAweEZF
LCAweDA1LCAweEU3LCAweDA5LCAweDAyLCAweDA2LA0KCTB4MDQsIDB4MDYs
IDB4RTcsIDB4MDksIDB4MDAsIDB4MDYsIDB4RkMsIDB4MDUsDQoJMHhFNywg
MHgwOSwgMHhGRSwgMHgwNSwgMHgwMCwgMHgwNiwgMHgyNywgMHhEQSwNCgkw
eEZBLCAweDA1LCAweEU3LCAweDU3LCAweDAxLCAweDAwLCAweEZBLCAweDA1
LA0KCTB4MDIsIDB4Q0EsIDB4MDQsIDB4QzAsIDB4OTcsIDB4Q0YsIDB4OUYs
IDB4QUYsDQoJMHg2NiwgMHgwNSwgMHg5NywgMHhDRiwgMHhFNywgMHgwNywg
MHg0MCwgMHgwMCwNCgkweDAyLCAweDA2LCAweEM4LCAweDA5LCAweEZDLCAw
eDA1LCAweDlGLCAweEFGLA0KCTB4REEsIDB4MDIsIDB4OTcsIDB4Q0YsIDB4
Q0YsIDB4MTcsIDB4MDIsIDB4MDAsDQoJMHhFRiwgMHg1NywgMHg4MSwgMHgw
MCwgMHgwOSwgMHgwNiwgMHg5RiwgMHhBMCwNCgkweEI2LCAweDAxLCAweEVG
LCAweDU3LCAweDgwLCAweDAwLCAweDA5LCAweDA2LA0KCTB4OUYsIDB4QTAs
IDB4NDAsIDB4MDIsIDB4RUYsIDB4NTcsIDB4MDEsIDB4MDAsDQoJMHgwQiwg
MHgwNiwgMHg5RiwgMHhBMCwgMHg0NiwgMHgwMywgMHhFNywgMHgwNywNCgkw
eDAxLCAweDAwLCAweDBBLCAweEMwLCAweDQ2LCAweEFGLCAweDQ3LCAweEFG
LA0KCTB4OUYsIDB4QUYsIDB4NDAsIDB4MDIsIDB4RTcsIDB4MDcsIDB4MkUs
IDB4MDAsDQoJMHgwQSwgMHhDMCwgMHhFRiwgMHg4NywgMHg4MCwgMHgwMCwg
MHgwOSwgMHgwNiwNCgkweDk3LCAweENGLCAweDAwLCAweDBFLCAweDAxLCAw
eDAwLCAweEMwLCAweDU3LA0KCTB4NTEsIDB4MDAsIDB4OUYsIDB4QzAsIDB4
OUUsIDB4MDIsIDB4QzAsIDB4NTcsDQoJMHg1MCwgMHgwMCwgMHgyMCwgMHhD
MCwgMHhDMCwgMHg1NywgMHg1NSwgMHgwMCwNCgkweDEyLCAweEMwLCAweEMw
LCAweDU3LCAweDU2LCAweDAwLCAweDlGLCAweEMwLA0KCTB4NzIsIDB4MDIs
IDB4OUYsIDB4Q0YsIDB4RDYsIDB4MDIsIDB4QzEsIDB4MEIsDQoJMHgwOCwg
MHgwNiwgMHgwMSwgMHhEMCwgMHg2RiwgMHg5MCwgMHgwOCwgMHgwNiwNCgkw
eEMwLCAweDA3LCAweDA4LCAweDAwLCAweEMxLCAweDBCLCAweDA4LCAweDA2
LA0KCTB4OUYsIDB4QUYsIDB4MjgsIDB4MDUsIDB4OTcsIDB4Q0YsIDB4MkYs
IDB4MEUsDQoJMHgwMiwgMHgwMCwgMHgwOCwgMHgwNiwgMHhDMCwgMHgwNywg
MHgwOCwgMHgwMCwNCgkweEMxLCAweDBCLCAweDA4LCAweDA2LCAweDlGLCAw
eEFGLCAweDI4LCAweDA1LA0KCTB4OUYsIDB4Q0YsIDB4RDYsIDB4MDIsIDB4
MkYsIDB4MEUsIDB4MDIsIDB4MDAsDQoJMHgwOSwgMHgwNiwgMHhFRiwgMHg4
NywgMHg4MCwgMHgwMCwgMHgwOSwgMHgwNiwNCgkweDlGLCAweENGLCAweEQ2
LCAweDAyLCAweEVGLCAweDY3LCAweDdGLCAweEZGLA0KCTB4MDksIDB4MDYs
IDB4RTcsIDB4NjcsIDB4RkYsIDB4RkQsIDB4MjIsIDB4QzAsDQoJMHhFNywg
MHg2NywgMHhFRiwgMHhGRiwgMHgyNCwgMHhDMCwgMHhFNywgMHg4NywNCgkw
eDEwLCAweDAwLCAweDI4LCAweEMwLCAweDlGLCAweEFGLCAweEI4LCAweDA1
LA0KCTB4RTcsIDB4ODcsIDB4RTAsIDB4MjEsIDB4MjQsIDB4QzAsIDB4OUYs
IDB4QUYsDQoJMHhBOCwgMHgwNSwgMHhFNywgMHg4NywgMHgwOCwgMHgwMCwg
MHgyNCwgMHhDMCwNCgkweEU3LCAweDY3LCAweERGLCAweEZGLCAweDI0LCAw
eEMwLCAweEM4LCAweDA3LA0KCTB4MEEsIDB4MDAsIDB4QzAsIDB4MDcsIDB4
MDAsIDB4MDAsIDB4QzEsIDB4MDcsDQoJMHgwMSwgMHgwMCwgMHg5RiwgMHhB
RiwgMHgyOCwgMHgwNSwgMHg5RiwgMHhBRiwNCgkweEI4LCAweDA1LCAweEMw
LCAweDA3LCAweDlFLCAweDAwLCAweDlGLCAweEFGLA0KCTB4NDQsIDB4MDUs
IDB4RTcsIDB4NjcsIDB4RkYsIDB4RkUsIDB4MjQsIDB4QzAsDQoJMHhDMCwg
MHgwOSwgMHgyMCwgMHhDMCwgMHhFNywgMHg4NywgMHgwMCwgMHgwMSwNCgkw
eDI0LCAweEMwLCAweEMwLCAweDc3LCAweDAwLCAweDAyLCAweDBGLCAweEMx
LA0KCTB4RTcsIDB4NjcsIDB4RjcsIDB4RkYsIDB4MjQsIDB4QzAsIDB4RTcs
IDB4NjcsDQoJMHhGNywgMHhGRiwgMHgyNCwgMHhDMCwgMHhFNywgMHg4Nywg
MHgwOCwgMHgwMCwNCgkweDI0LCAweEMwLCAweDA4LCAweERBLCAweDVFLCAw
eEMxLCAweEVGLCAweDA3LA0KCTB4ODAsIDB4MDAsIDB4MDksIDB4MDYsIDB4
OTcsIDB4Q0YsIDB4RUYsIDB4MDcsDQoJMHgwMSwgMHgwMCwgMHgwQSwgMHgw
NiwgMHg5NywgMHhDRiwgMHhFRiwgMHgwNywNCgkweDAwLCAweDAwLCAweDBC
LCAweDA2LCAweEVGLCAweDA3LCAweDAwLCAweDAwLA0KCTB4MEEsIDB4MDYs
IDB4RUYsIDB4NjcsIDB4N0YsIDB4RkYsIDB4MDksIDB4MDYsDQoJMHhFRiwg
MHgwNywgMHgwMCwgMHgwMCwgMHgwRCwgMHgwNiwgMHhFNywgMHg2NywNCgkw
eEVGLCAweEZGLCAweDI4LCAweEMwLCAweEU3LCAweDY3LCAweDE3LCAweEQ4
LA0KCTB4MjQsIDB4QzAsIDB4RTcsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MUUs
IDB4QzAsDQoJMHhFNywgMHgwNywgMHhGRiwgMHhGRiwgMHgyMiwgMHhDMCwg
MHg5NywgMHhDRiwNCgkweEM4LCAweDA3LCAweDBFLCAweDA2LCAweDlGLCAw
eEFGLCAweERBLCAweDAyLA0KCTB4RTcsIDB4MDcsIDB4MDAsIDB4MDAsIDB4
RjIsIDB4MDUsIDB4RTcsIDB4MDcsDQoJMHgxMCwgMHgwMCwgMHhGNiwgMHgw
NSwgMHhFNywgMHgwNywgMHgwRSwgMHgwNiwNCgkweEY0LCAweDA1LCAweEU3
LCAweDA3LCAweEQ2LCAweDAyLCAweEY4LCAweDA1LA0KCTB4QzgsIDB4MDcs
IDB4RjIsIDB4MDUsIDB4QzEsIDB4MDcsIDB4MDAsIDB4ODAsDQoJMHg1MCwg
MHhBRiwgMHg5NywgMHhDRiwgMHgyRiwgMHgwQywgMHgwMiwgMHgwMCwNCgkw
eDA3LCAweDA2LCAweDJGLCAweDBDLCAweDA0LCAweDAwLCAweDA2LCAweDA2
LA0KCTB4RTcsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RjIsIDB4MDUsIDB4RTcs
IDB4MDcsDQoJMHgxMCwgMHgwMCwgMHhGNiwgMHgwNSwgMHhFNywgMHgwNywg
MHhFMiwgMHgwNSwNCgkweEY0LCAweDA1LCAweEU3LCAweDA3LCAweENFLCAw
eDAyLCAweEY4LCAweDA1LA0KCTB4QzgsIDB4MDcsIDB4RjIsIDB4MDUsIDB4
QzEsIDB4MDcsIDB4MDAsIDB4ODAsDQoJMHg1MSwgMHhBRiwgMHg5NywgMHhD
RiwgMHg5RiwgMHhBRiwgMHg2NiwgMHgwNCwNCgkweDlGLCAweEFGLCAweDFB
LCAweDAzLCAweDU5LCAweEFGLCAweDk3LCAweENGLA0KCTB4QzAsIDB4MDcs
IDB4MEUsIDB4MDAsIDB4QzEsIDB4MEIsIDB4MEMsIDB4MDYsDQoJMHg0MSwg
MHhEMSwgMHg5RiwgMHhBRiwgMHgyOCwgMHgwNSwgMHhDMCwgMHgwNywNCgkw
eDNDLCAweDAwLCAweDlGLCAweEFGLCAweDQ0LCAweDA1LCAweDY4LCAweDAw
LA0KCTB4QzAsIDB4MDcsIDB4M0IsIDB4MDAsIDB4OUYsIDB4QUYsIDB4NDQs
IDB4MDUsDQoJMHg2RiwgMHgwMCwgMHgwQywgMHgwNiwgMHg2OCwgMHgwMCwg
MHhFMCwgMHgwNywNCgkweDA0LCAweDAxLCAweEU4LCAweDBCLCAweDBBLCAw
eDA2LCAweEU4LCAweDA3LA0KCTB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4
MDAsIDB4MDIsIDB4RTAsIDB4MDcsDQoJMHhFQywgMHgwMSwgMHhFMCwgMHgw
NywgMHhGQywgMHhGRiwgMHg5NywgMHhDRiwNCgkweEU3LCAweDA3LCAweEZG
LCAweEZGLCAweEZBLCAweDA1LCAweEVGLCAweDA3LA0KCTB4MDAsIDB4MDAs
IDB4MEIsIDB4MDYsIDB4RTcsIDB4MDcsIDB4MEUsIDB4MDYsDQoJMHgyNCwg
MHgwMSwgMHhFNywgMHgwNywgMHgwRSwgMHgwNiwgMHhGRSwgMHgwNSwNCgkw
eEU3LCAweDA3LCAweDQwLCAweDAwLCAweDI2LCAweDAxLCAweEU3LCAweDA3
LA0KCTB4NDAsIDB4MDAsIDB4MDQsIDB4MDYsIDB4RTcsIDB4MDcsIDB4MDcs
IDB4MDAsDQoJMHg5MiwgMHhDMCwgMHg5NywgMHhDRiwgMHhFRiwgMHgwNywg
MHgwMiwgMHgwMCwNCgkweDBCLCAweDA2LCAweDlGLCAweEFGLCAweDc4LCAw
eDAxLCAweEVGLCAweDc3LA0KCTB4ODAsIDB4MDAsIDB4MDcsIDB4MDYsIDB4
OUYsIDB4QzAsIDB4MTQsIDB4MDQsDQoJMHhFRiwgMHg3NywgMHgwMSwgMHgw
MCwgMHgwNywgMHgwNiwgMHgzNywgMHhDMCwNCgkweEVGLCAweDc3LCAweDAx
LCAweDAwLCAweDBELCAweDA2LCAweDBGLCAweEMxLA0KCTB4RUYsIDB4MDcs
IDB4MDEsIDB4MDAsIDB4MEQsIDB4MDYsIDB4QzAsIDB4MDcsDQoJMHgwMiwg
MHgwMCwgMHhDMSwgMHgwNywgMHgzMCwgMHgwMCwgMHg5RiwgMHhBRiwNCgkw
eDI4LCAweDA1LCAweEMwLCAweDA3LCAweDAxLCAweDAwLCAweEMxLCAweDA3
LA0KCTB4MDIsIDB4MDAsIDB4OUYsIDB4QUYsIDB4MjgsIDB4MDUsIDB4Qzgs
IDB4MDcsDQoJMHhGRiwgMHg0RiwgMHg5RiwgMHhBRiwgMHhBOCwgMHgwNSwg
MHhDMCwgMHgwNywNCgkweDM4LCAweDAwLCAweDlGLCAweEFGLCAweDQ0LCAw
eDA1LCAweEMxLCAweDc3LA0KCTB4MDMsIDB4MDAsIDB4MDIsIDB4QzEsIDB4
MDgsIDB4REEsIDB4NzUsIDB4QzEsDQoJMHhDMSwgMHg3NywgMHgwMSwgMHgw
MCwgMHgwQSwgMHhDMSwgMHhDMCwgMHgwNywNCgkweDAxLCAweDAwLCAweEMx
LCAweDA3LCAweDAyLCAweDAwLCAweDlGLCAweEFGLA0KCTB4MjgsIDB4MDUs
IDB4RUYsIDB4MDcsIDB4MDEsIDB4MDAsIDB4MDYsIDB4MDYsDQoJMHgyQywg
MHhDRiwgMHhDMCwgMHgwNywgMHgwMSwgMHgwMCwgMHhDMSwgMHgwNywNCgkw
eDA0LCAweDAwLCAweDlGLCAweEFGLCAweDI4LCAweDA1LCAweEVGLCAweDA3
LA0KCTB4MDAsIDB4MDAsIDB4MDYsIDB4MDYsIDB4MjIsIDB4Q0YsIDB4RUYs
IDB4MDcsDQoJMHgwMCwgMHgwMCwgMHgwRCwgMHgwNiwgMHhFRiwgMHg1Nywg
MHgwMSwgMHgwMCwNCgkweDA2LCAweDA2LCAweDFCLCAweEMwLCAweEMwLCAw
eDA3LCAweDAxLCAweDAwLA0KCTB4QzEsIDB4MDcsIDB4MDEsIDB4MDAsIDB4
OUYsIDB4QUYsIDB4MjgsIDB4MDUsDQoJMHhDMCwgMHgwNywgMHgwMiwgMHgw
MCwgMHhDMSwgMHgwNywgMHgzMCwgMHgwMCwNCgkweDlGLCAweEFGLCAweDI4
LCAweDA1LCAweEM4LCAweDA3LCAweEZGLCAweDRGLA0KCTB4OUYsIDB4QUYs
IDB4QTgsIDB4MDUsIDB4QzAsIDB4MDcsIDB4MzgsIDB4MDAsDQoJMHg5Riwg
MHhBRiwgMHg0NCwgMHgwNSwgMHhDMSwgMHg2NywgMHgwMywgMHgwMCwNCgkw
eEMxLCAweDU3LCAweDAzLCAweDAwLCAweDAyLCAweEMwLCAweDA4LCAweERB
LA0KCTB4NzMsIDB4QzEsIDB4QzAsIDB4MDcsIDB4MDIsIDB4MDAsIDB4QzEs
IDB4MDcsDQoJMHgxMiwgMHgwMCwgMHhFRiwgMHg1NywgMHgwMCwgMHgwMCwg
MHgwNiwgMHgwNiwNCgkweDAyLCAweEMwLCAweEMxLCAweDA3LCAweDIzLCAw
eDAwLCAweDlGLCAweEFGLA0KCTB4MjgsIDB4MDUsIDB4QzAsIDB4MDcsIDB4
MTQsIDB4MDAsIDB4QzEsIDB4MEIsDQoJMHhFQSwgMHgwNSwgMHg5RiwgMHhB
RiwgMHgyOCwgMHgwNSwgMHhDMCwgMHgwNywNCgkweDNFLCAweDAwLCAweDlG
LCAweEFGLCAweDBBLCAweDA1LCAweEU3LCAweDA5LA0KCTB4RTQsIDB4MDUs
IDB4RkEsIDB4MDUsIDB4MjcsIDB4RDgsIDB4RkEsIDB4MDUsDQoJMHhFNywg
MHgwNywgMHgwRSwgMHgwNiwgMHhGQywgMHgwNSwgMHhFNywgMHgwNywNCgkw
eDRFLCAweDA2LCAweDAwLCAweDA2LCAweEU3LCAweDA3LCAweDQwLCAweDAw
LA0KCTB4MDIsIDB4MDYsIDB4OUYsIDB4QUYsIDB4NjYsIDB4MDUsIDB4OUYs
IDB4QUYsDQoJMHhDNiwgMHgwMCwgMHg5NywgMHhDRiwgMHhDMSwgMHgwQiwg
MHhFMiwgMHgwNSwNCgkweDQxLCAweEQwLCAweDAxLCAweEQyLCAweEMxLCAw
eDE3LCAweDIzLCAweDAwLA0KCTB4OUYsIDB4QUYsIDB4REMsIDB4MDQsIDB4
QzAsIDB4MDcsIDB4MDQsIDB4MDAsDQoJMHhDMSwgMHgwQiwgMHhFMywgMHgw
NSwgMHg5RiwgMHhBRiwgMHgyOCwgMHgwNSwNCgkweEMwLCAweDA3LCAweDA2
LCAweDAwLCAweEMxLCAweDA5LCAweEU2LCAweDA1LA0KCTB4OUYsIDB4QUYs
IDB4MjgsIDB4MDUsIDB4QzAsIDB4MDcsIDB4MDcsIDB4MDAsDQoJMHhDMSwg
MHgwOSwgMHhFNiwgMHgwNSwgMHhDMSwgMHhEMSwgMHg5RiwgMHhBRiwNCgkw
eDI4LCAweDA1LCAweEMwLCAweDA3LCAweDBCLCAweDAwLCAweEMxLCAweDA5
LA0KCTB4RTgsIDB4MDUsIDB4OUYsIDB4QUYsIDB4MjgsIDB4MDUsIDB4QzAs
IDB4MDcsDQoJMHgwQywgMHgwMCwgMHhDMSwgMHgwOSwgMHhFOCwgMHgwNSwg
MHhDMSwgMHhEMSwNCgkweDlGLCAweEFGLCAweDI4LCAweDA1LCAweEMwLCAw
eDA3LCAweDBELCAweDAwLA0KCTB4QzEsIDB4MDcsIDB4MDksIDB4MDAsIDB4
OUYsIDB4QUYsIDB4MjgsIDB4MDUsDQoJMHhDMCwgMHgwNywgMHgwMywgMHgw
MCwgMHhDMSwgMHgwNywgMHgzMiwgMHgwMCwNCgkweDlGLCAweEFGLCAweDI4
LCAweDA1LCAweEMwLCAweDA3LCAweDBGLCAweDAwLA0KCTB4QzEsIDB4MDcs
IDB4MDAsIDB4MDAsIDB4OUYsIDB4QUYsIDB4MjgsIDB4MDUsDQoJMHg5Nywg
MHhDRiwgMHhFNywgMHg2NywgMHhGRiwgMHhEOSwgMHgyNCwgMHhDMCwNCgkw
eEM4LCAweDA3LCAweDBBLCAweDAwLCAweDQwLCAweDAwLCAweEMwLCAweDY3
LA0KCTB4MDAsIDB4MDIsIDB4MjcsIDB4ODAsIDB4MjQsIDB4QzAsIDB4RTcs
IDB4ODcsDQoJMHgwMCwgMHgwNCwgMHgyNCwgMHhDMCwgMHhFNywgMHg2Nywg
MHhGRiwgMHhGOSwNCgkweDI0LCAweEMwLCAweDAxLCAweEQyLCAweDA4LCAw
eERBLCAweDcyLCAweEMxLA0KCTB4RTcsIDB4ODcsIDB4MDAsIDB4MjAsIDB4
MjQsIDB4QzAsIDB4OTcsIDB4Q0YsDQoJMHgyNywgMHgwMCwgMHgxRSwgMHhD
MCwgMHhFNywgMHg4NywgMHhGRiwgMHgwMCwNCgkweDIyLCAweEMwLCAweEU3
LCAweDY3LCAweDdGLCAweEZGLCAweDI0LCAweEMwLA0KCTB4RTcsIDB4ODcs
IDB4ODAsIDB4MDAsIDB4MjQsIDB4QzAsIDB4RTcsIDB4ODcsDQoJMHg4MCwg
MHgwMCwgMHgyNCwgMHhDMCwgMHg5NywgMHhDRiwgMHg5RiwgMHhBRiwNCgkw
eDBBLCAweDA1LCAweDY3LCAweDAwLCAweDFFLCAweEMwLCAweEU3LCAweDY3
LA0KCTB4QkYsIDB4RkYsIDB4MjQsIDB4QzAsIDB4RTcsIDB4ODcsIDB4NDAs
IDB4MDAsDQoJMHgyNCwgMHhDMCwgMHhFNywgMHg4NywgMHg0MCwgMHgwMCwg
MHgyNCwgMHhDMCwNCgkweDk3LCAweENGLCAweDlGLCAweEFGLCAweDBBLCAw
eDA1LCAweEU3LCAweDY3LA0KCTB4MDAsIDB4RkYsIDB4MjIsIDB4QzAsIDB4
RTcsIDB4NjcsIDB4RkYsIDB4RkUsDQoJMHgyNCwgMHhDMCwgMHhFNywgMHg2
NywgMHhGRiwgMHhGRSwgMHgyNCwgMHhDMCwNCgkweEMxLCAweDA5LCAweDIw
LCAweEMwLCAweEU3LCAweDg3LCAweDAwLCAweDAxLA0KCTB4MjQsIDB4QzAs
IDB4OTcsIDB4Q0YsIDB4QzAsIDB4MDcsIDB4NDAsIDB4MDAsDQoJMHhDOCwg
MHgwOSwgMHhGQywgMHgwNSwgMHhFNywgMHg2NywgMHgwMCwgMHhGRiwNCgkw
eDIyLCAweEMwLCAweEU3LCAweDY3LCAweEZGLCAweEZFLCAweDI0LCAweEMw
LA0KCTB4RTcsIDB4NjcsIDB4QkYsIDB4RkYsIDB4MjQsIDB4QzAsIDB4RTcs
IDB4NjcsDQoJMHhCRiwgMHhGRiwgMHgyNCwgMHhDMCwgMHgwMCwgMHhEQSwg
MHhFOCwgMHgwOSwNCgkweDIwLCAweEMwLCAweEU3LCAweDg3LCAweDQwLCAw
eDAwLCAweDI0LCAweEMwLA0KCTB4RTcsIDB4ODcsIDB4NDAsIDB4MDAsIDB4
MjQsIDB4QzAsIDB4MDAsIDB4REEsDQoJMHhFOCwgMHgwOSwgMHgyMCwgMHhD
MCwgMHg2RCwgMHhDMSwgMHhFNywgMHg4NywNCgkweDAwLCAweDAxLCAweDI0
LCAweEMwLCAweDk3LCAweENGLCAweEU3LCAweDA3LA0KCTB4MzIsIDB4MDAs
IDB4MTIsIDB4QzAsIDB4RTcsIDB4NzcsIDB4MDAsIDB4ODAsDQoJMHgxMiwg
MHhDMCwgMHg3QywgMHhDMCwgMHg5NywgMHhDRiwgMHhFNywgMHgwNywNCgkw
eDIwLCAweDRFLCAweDEyLCAweEMwLCAweEU3LCAweDc3LCAweDAwLCAweDgw
LA0KCTB4MTIsIDB4QzAsIDB4N0MsIDB4QzAsIDB4OTcsIDB4Q0YsIDB4MDks
IDB4MDIsDQoJMHgxOSwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMCwgMHg4MCwg
MHg5NiwgMHgwOSwNCgkweDA0LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLA0KCTB4MDcsIDB4MDUsIDB4ODEsIDB4MDIsIDB4
NDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCgkweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KCTB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCgkw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LA0KCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsDQoJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwNCgkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLA0KCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCgkweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KCTB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCgkw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LA0KCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsDQoJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwNCgkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLA0KCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCgkweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KCTB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQoJMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCn07DQoNCnN0YXRpYyBj
b25zdCB1OCBzZXR1cDVbXSA9IHsNCgkweEI2LCAweEMzLCAweDJGLCAweDAx
LCAweDAzLCAweDY0LCAweDBFLCAweDAwLA0KCTB4MTQsIDB4MDAsIDB4MUEs
IDB4MDAsIDB4MjAsIDB4MDAsIDB4MjYsIDB4MDAsDQoJMHg0QSwgMHgwMCwg
MHg2NCwgMHgwMCwgMHg2QSwgMHgwMCwgMHg5MiwgMHgwMCwNCgkweDlBLCAw
eDAwLCAweEEwLCAweDAwLCAweEIyLCAweDAwLCAweEI4LCAweDAwLA0KCTB4
QkUsIDB4MDAsIDB4QzIsIDB4MDAsIDB4QzgsIDB4MDAsIDB4Q0UsIDB4MDAs
DQoJMHhEQywgMHgwMCwgMHhEQSwgMHgwMCwgMHhFMiwgMHgwMCwgMHhFMCwg
MHgwMCwNCgkweEU4LCAweDAwLCAweEU2LCAweDAwLCAweEVFLCAweDAwLCAw
eEVDLCAweDAwLA0KCTB4RjIsIDB4MDAsIDB4RjgsIDB4MDAsIDB4MDIsIDB4
MDEsIDB4MEEsIDB4MDEsDQoJMHgwRSwgMHgwMSwgMHgxMiwgMHgwMSwgMHgx
RSwgMHgwMSwgMHgyMiwgMHgwMSwNCgkweDI4LCAweDAxLCAweDJDLCAweDAx
LCAweDMyLCAweDAxLCAweDM2LCAweDAxLA0KCTB4NDQsIDB4MDEsIDB4NTAs
IDB4MDEsIDB4NUUsIDB4MDEsIDB4NzIsIDB4MDEsDQoJMHg3NiwgMHgwMSwg
MHg3QSwgMHgwMSwgMHg4MCwgMHgwMSwgMHg4OCwgMHgwMSwNCgkweDhDLCAw
eDAxLCAweDk0LCAweDAxLCAweDlDLCAweDAxLCAweEEwLCAweDAxLA0KCTB4
QTQsIDB4MDEsIDB4QUEsIDB4MDEsIDB4QjAsIDB4MDEsIDB4QjQsIDB4MDEs
DQoJMHhCQSwgMHgwMSwgMHhEMCwgMHgwMSwgMHhEQSwgMHgwMSwgMHhGNiwg
MHgwMSwNCgkweEZBLCAweDAxLCAweDAyLCAweDAyLCAweDM0LCAweDAyLCAw
eDNDLCAweDAyLA0KCTB4NDQsIDB4MDIsIDB4NEEsIDB4MDIsIDB4NTAsIDB4
MDIsIDB4NTYsIDB4MDIsDQoJMHg3NCwgMHgwMiwgMHg3OCwgMHgwMiwgMHg3
RSwgMHgwMiwgMHg4NCwgMHgwMiwNCgkweDhBLCAweDAyLCAweDg4LCAweDAy
LCAweDkwLCAweDAyLCAweDhFLCAweDAyLA0KCTB4OTQsIDB4MDIsIDB4QTIs
IDB4MDIsIDB4QTgsIDB4MDIsIDB4QUUsIDB4MDIsDQoJMHhCNCwgMHgwMiwg
MHhCQSwgMHgwMiwgMHhCOCwgMHgwMiwgMHhDMCwgMHgwMiwNCgkweEJFLCAw
eDAyLCAweEM0LCAweDAyLCAweEQwLCAweDAyLCAweEQ0LCAweDAyLA0KCTB4
RTAsIDB4MDIsIDB4RTYsIDB4MDIsIDB4RUUsIDB4MDIsIDB4RjgsIDB4MDIs
DQoJMHhGQywgMHgwMiwgMHgwNiwgMHgwMywgMHgxRSwgMHgwMywgMHgyNCwg
MHgwMywNCgkweDI4LCAweDAzLCAweDMwLCAweDAzLCAweDJFLCAweDAzLCAw
eDNDLCAweDAzLA0KCTB4NEEsIDB4MDMsIDB4NEUsIDB4MDMsIDB4NTQsIDB4
MDMsIDB4NTgsIDB4MDMsDQoJMHg1RSwgMHgwMywgMHg2NiwgMHgwMywgMHg2
RSwgMHgwMywgMHg3QSwgMHgwMywNCgkweDg2LCAweDAzLCAweDhFLCAweDAz
LCAweDk2LCAweDAzLCAweEIyLCAweDAzLA0KCTB4QjgsIDB4MDMsIDB4QzYs
IDB4MDMsIDB4Q0MsIDB4MDMsIDB4RDQsIDB4MDMsDQoJMHhEQSwgMHgwMywg
MHhFOCwgMHgwMywgMHhGNCwgMHgwMywgMHhGQywgMHgwMywNCgkweDA0LCAw
eDA0LCAweDIwLCAweDA0LCAweDJBLCAweDA0LCAweDMyLCAweDA0LA0KCTB4
MzYsIDB4MDQsIDB4M0UsIDB4MDQsIDB4NDQsIDB4MDQsIDB4NDIsIDB4MDQs
DQoJMHg0OCwgMHgwNCwgMHg0RSwgMHgwNCwgMHg0QywgMHgwNCwgMHg1NCwg
MHgwNCwNCgkweDUyLCAweDA0LCAweDVBLCAweDA0LCAweDVFLCAweDA0LCAw
eDYyLCAweDA0LA0KCTB4NjgsIDB4MDQsIDB4NzQsIDB4MDQsIDB4N0MsIDB4
MDQsIDB4ODAsIDB4MDQsDQoJMHg4OCwgMHgwNCwgMHg4QywgMHgwNCwgMHg5
NCwgMHgwNCwgMHg5QSwgMHgwNCwNCgkweEEyLCAweDA0LCAweEE2LCAweDA0
LCAweEFFLCAweDA0LCAweEI0LCAweDA0LA0KCTB4QzAsIDB4MDQsIDB4Q0Ms
IDB4MDQsIDB4RDgsIDB4MDQsIDB4MkEsIDB4MDUsDQoJMHg0NiwgMHgwNSwg
MHg2QywgMHgwNSwgMHgwMCwgMHgwMA0KfTsNCg0Kc3RhdGljIGNvbnN0IHU4
IHNldHVwNltdID0gew0KCTB4QjYsIDB4QzMsIDB4MDEsIDB4MDAsIDB4MDYs
IDB4NjQsIDB4MDAsIDB4MDANCn07DQoNCnN0YXRpYyBjb25zdCBzdHJ1Y3Qg
ew0KCWNvbnN0IHU4ICogY29uc3QgZmlybXdhcmU7DQoJY29uc3Qgc2l6ZV90
IHNpemU7DQp9IHNldHVwW10gPSB7DQoJew0KCQkuZmlybXdhcmUgPSBzZXR1
cDEsDQoJCS5zaXplID0gc2l6ZW9mKCBzZXR1cDEgKQ0KCX0sIHsNCgkJLmZp
cm13YXJlID0gc2V0dXAyLA0KCQkuc2l6ZSA9IHNpemVvZiggc2V0dXAyICkN
Cgl9LCB7DQoJCS5maXJtd2FyZSA9IHNldHVwMywNCgkJLnNpemUgPSBzaXpl
b2YoIHNldHVwMyApDQoJfSwgew0KCQkuZmlybXdhcmUgPSBzZXR1cDQsDQoJ
CS5zaXplID0gc2l6ZW9mKCBzZXR1cDQgKQ0KCX0sIHsNCgkJLmZpcm13YXJl
ID0gc2V0dXA1LA0KCQkuc2l6ZSA9IHNpemVvZiggc2V0dXA1ICkNCgl9LCB7
DQoJCS5maXJtd2FyZSA9IHNldHVwNiwNCgkJLnNpemUgPSBzaXplb2YoIHNl
dHVwNiApDQoJfSwgew0KCQkuZmlybXdhcmUgPSBOVUxMLA0KCQkuc2l6ZSA9
IDANCgl9DQp9Ow0KDQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcga3Zp
cnRfdG9fcGEodW5zaWduZWQgbG9uZyBhZHIpDQp7DQogICAgICAgIHVuc2ln
bmVkIGxvbmcga3ZhLCByZXQ7DQoNCiAgICAgICAga3ZhID0gKHVuc2lnbmVk
IGxvbmcpIHBhZ2VfYWRkcmVzcyh2bWFsbG9jX3RvX3BhZ2UoKHZvaWQgKilh
ZHIpKTsNCiAgICAgICAga3ZhIHw9IGFkciAmIChQQUdFX1NJWkUtMSk7IC8q
IHJlc3RvcmUgdGhlIG9mZnNldCAqLw0KICAgICAgICByZXQgPSBfX3BhKGt2
YSk7DQogICAgICAgIHJldHVybiByZXQ7DQp9DQoNCnN0YXRpYyB2b2lkICpy
dm1hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUpDQp7DQogICAgICAgIHZvaWQg
Km1lbTsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBhZHI7DQoNCiAgICAgICAg
c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7DQoNCiAgICAgICAgbWVtID0gdm1h
bGxvY18zMihzaXplKTsNCiAgICAgICAgaWYgKCFtZW0pDQogICAgICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7DQoNCiAgICAgICAgbWVtc2V0KG1lbSwgMCwg
c2l6ZSk7IC8qIENsZWFyIHRoZSByYW0gb3V0LCBubyBqdW5rIHRvIHRoZSB1
c2VyICovDQogICAgICAgIGFkciA9ICh1bnNpZ25lZCBsb25nKSBtZW07DQog
ICAgICAgIHdoaWxlICgobG9uZykgc2l6ZSA+IDApIHsNCiAgICAgICAgICAg
ICAgICBtZW1fbWFwX3Jlc2VydmUodm1hbGxvY190b19wYWdlKCh2b2lkICop
YWRyKSk7DQogICAgICAgICAgICAgICAgYWRyICs9IFBBR0VfU0laRTsNCiAg
ICAgICAgICAgICAgICBzaXplIC09IFBBR0VfU0laRTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHJldHVybiBtZW07DQp9DQoNCnN0YXRpYyB2b2lkIHJ2ZnJl
ZSh2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgc2l6ZSkNCnsNCiAgICAgICAg
dW5zaWduZWQgbG9uZyBhZHI7DQoNCiAgICAgICAgaWYgKCFtZW0pDQogICAg
ICAgICAgICAgICAgcmV0dXJuOw0KDQoJc2l6ZSA9IFBBR0VfQUxJR04oc2l6
ZSk7DQoNCiAgICAgICAgYWRyID0gKHVuc2lnbmVkIGxvbmcpIG1lbTsNCiAg
ICAgICAgd2hpbGUgKChsb25nKSBzaXplID4gMCkgew0KICAgICAgICAgICAg
ICAgIG1lbV9tYXBfdW5yZXNlcnZlKHZtYWxsb2NfdG9fcGFnZSgodm9pZCAq
KWFkcikpOw0KICAgICAgICAgICAgICAgIGFkciArPSBQQUdFX1NJWkU7DQog
ICAgICAgICAgICAgICAgc2l6ZSAtPSBQQUdFX1NJWkU7DQogICAgICAgIH0N
Cg0KICAgICAgICB2ZnJlZShtZW0pOw0KfQ0KDQojZW5kaWYNCg==
--394922409-960090401-1033703970=:15999
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="vicam.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.30.0210032059301.15999@hill.cs.ucr.edu>
Content-Description:
Content-Disposition: attachment; filename="vicam.c"

LyogLSotIGxpbnV4LWMgLSotDQogKiB2aWNhbS5jIC0gVmlDQU0vM0NvbSBI
b21lQ29ubmVjdCBVU0IgQ2FtZXJhIERyaXZlcg0KICoNCiAqIENvcHlyaWdo
dCAoYykgMjAwMiBKb2huIFR5bmVyIDxqdHluZXJAY3MudWNyLmVkdT4NCiAq
DQogKiBUaGlzIGRyaXZlciBpcyBmb3IgdGhlIDNDb20gSG9tZUNvbm5lY3Qg
VVNCIENhbWVyYSBhbmQNCiAqIGFzIGZhciBhcyBJIGtub3csIHRoZSBWaXN0
YSBJbWFnaW5nIFZpQ0FNIENhbWVyYS4gVGhlDQogKiBjb2RlIGlzIGJhc2Vk
IG9uIHRoZSBkcml2ZXIgY3JlYXRlZCBieSB0aGUgdGVhbSBhdA0KICogaG9t
ZWNvbm5lY3R1c2Iuc291cmNlZm9yZ2UubmV0LiBUaGV5IGRlc2VydmUgdGhl
IGNyZWRpdA0KICogZm9yIHRoZSBkZWNvZGluZyBhbGdvcml0aG0gYW5kIGZv
ciBmaWd1cmluZyBvdXQgd2hhdCB2YWx1ZXMNCiAqIGFuZCBtZXNzYWdlcyBu
ZWVkIHRvIGJlIHNlbnQgdG8gdGhlIGNhbWVyYSBhbmQgd2hhdCBkYXRhDQog
KiBpcyBhY3R1YWxseSBjb21pbmcgYmFjay4NCiAqDQogKiBUaGlzIGZpbGUg
aXMgd29lZnVsbHkgdW5kZXJkb2N1bWVudGVkIGFuZCBkb2Vzbid0IHByaW50
DQogKiBhbnkgaW5mb3JtYXRpb24uIEkgYXBvbG9naXplIGZvciB0aGF0LCBi
dXQgdGhlIGRyaXZlciBpcw0KICogd29ya2luZyAoZm9yIG1lKSwgYW5kIGRv
ZXNuJ3QgbmVlZCB0aGVtLiAqZHVjayoNCiAqLw0KDQojaW5jbHVkZSA8bGlu
dXgvaW5pdC5oPg0KI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KI2luY2x1
ZGUgPGxpbnV4L21vZHVsZS5oPg0KI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+
DQojaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KI2luY2x1ZGUgPGxpbnV4L3Vz
Yi5oPg0KI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+DQojaW5jbHVkZSA8bGlu
dXgvd2FpdC5oPg0KI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQojaW5jbHVk
ZSA8bGludXgvdmlkZW9kZXYuaD4NCiNpbmNsdWRlIDxsaW51eC92bWFsbG9j
Lmg+DQojaW5jbHVkZSA8bGludXgvd3JhcHBlci5oPg0KDQojaW5jbHVkZSA8
YXNtL3NlbWFwaG9yZS5oPg0KI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQoj
aW5jbHVkZSA8YXNtL2lvLmg+DQoNCiNpbmNsdWRlICJ2aWNhbS5oIg0KDQpp
bnQgcmV2ZXJzZV9yZ2IgPSAwOw0KaW50IHNodXR0ZXJfc3BlZWQgPSAzMDsN
Cg0Kc3RhdGljIGludCB2aWNhbV9zZW5kX2NvbnRyb2xfbXNnKCBzdHJ1Y3Qg
dmljYW1fdjRsX2RhdGEgKnZpY2FtX3Y0bF9wcml2LA0KCQkJCSAgIHU4IHJl
cXVlc3QsIHUxNiB2YWx1ZSwgdTE2IHNpemUgKQ0Kew0KCXN0cnVjdCB1c2Jf
ZGV2aWNlICp1c2JfZGV2ID0gdmljYW1fdjRsX3ByaXYtPnVzYl9kZXY7DQoJ
aW50IHJldDsNCg0KCS8qIGZvciBzb21lIHJlYXNvbiB3ZSBjYW4ndCBwYXNz
IGRhdGEgZGlyZWN0bHkNCgkgKiB0byB1c2JfY29udHJvbF9tc2cuIHRoZXJl
Zm9yZSwgd2UgYXNzdW1lIHRoYXQNCgkgKiB0aGUgY2FsbGVyIGhhcyBhbHJl
YWR5IHBsYWNlZCB0aGVpciBkYXRhIGludG8NCgkgKiB0aGUgY250cmxfYnVm
Lg0KCSAqLw0KDQoJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKA0KCQl1c2JfZGV2
LA0KCQl1c2Jfc25kY3RybHBpcGUoIHVzYl9kZXYsIDAgKSwNCgkJcmVxdWVz
dCwNCgkJVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVD
SVBfREVWSUNFLA0KCQl2YWx1ZSwNCgkJMCwNCgkJdmljYW1fdjRsX3ByaXYt
PmNudHJsX2J1ZiwNCgkJc2l6ZSwNCgkJSFogKTsNCg0KCXJldHVybiBtaW4o
IHJldCwgMCApOw0KfQ0KDQpzdGF0aWMgdm9pZCB2aWNhbV91cmJfY29tcGxl
dGUoIHN0cnVjdCB1cmIgKnZpY2FtX3Y0bF91cmIgKQ0Kew0KCXN0cnVjdCB2
aWNhbV92NGxfZGF0YSAqdmljYW1fdjRsX3ByaXY7DQoNCgl2aWNhbV92NGxf
cHJpdiA9IHZpY2FtX3Y0bF91cmItPmNvbnRleHQ7DQoNCglpZiAoICF2aWNh
bV92NGxfdXJiLT5zdGF0dXMgKSB7DQoJCXNldF9iaXQoIHZpY2FtX3Y0bF9w
cml2LT5jdXJyZW50X2ZyYW1lLA0KCQkJICZ2aWNhbV92NGxfcHJpdi0+ZGVj
b2RlX2ZyYW1lcyApOw0KCQl0YXNrbGV0X3NjaGVkdWxlKCAmdmljYW1fdjRs
X3ByaXYtPmRlY29kZSApOw0KCX0NCg0KCXVwKCAmdmljYW1fdjRsX3ByaXYt
PmJ1c3lfbXV0ZXggKTsNCn0NCg0Kc3RhdGljIGludCB2aWNhbV9jYXB0dXJl
X2ltYWdlKCBzdHJ1Y3QgdmljYW1fdjRsX2RhdGEgKnZpY2FtX3Y0bF9wcml2
LA0KCQkJCXVuc2lnbmVkIGxvbmcgZnJhbWVfbnVtICkNCnsNCgl1OCAqIGNv
bnN0IHJlcXVlc3QgPSB2aWNhbV92NGxfcHJpdi0+Y250cmxfYnVmOw0KCWlu
dCBlcnI7DQoNCglpZiAoIHZpY2FtX3Y0bF9wcml2LT5zcGVlZCA8IDIgfHwg
dmljYW1fdjRsX3ByaXYtPnNwZWVkID4gNjAgKSB7DQoJCXJldHVybiAtRUlO
VkFMOw0KCX0NCg0KCW1lbXNldCggcmVxdWVzdCwgMCwgMTYgKTsNCg0KCXJl
cXVlc3RbMF0gPSB2aWNhbV92NGxfcHJpdi0+Z2FpbjsNCg0KCWlmICggdmlj
YW1fdjRsX3ByaXYtPndpZHRoIDw9IDI1NiApIHsNCgkJcmVxdWVzdFsxXSB8
PSAoIHZpY2FtX3Y0bF9wcml2LT53aWR0aCA+IDEyOCApID8gMHgwMSA6IDB4
MDM7DQoJfQ0KDQoJaWYgKCB2aWNhbV92NGxfcHJpdi0+aGVpZ2h0IDw9IDE4
MCApIHsNCgkJcmVxdWVzdFsxXSB8PSAoIHZpY2FtX3Y0bF9wcml2LT5oZWln
aHQgPiAxMjEgKSA/IDB4MjAgOiAweDMwOw0KCX0NCg0KCXJlcXVlc3RbMl0g
PSAweDkwOw0KCXJlcXVlc3RbM10gPSAweDA3Ow0KDQoJKiggKCB1MTYgKiAp
KCAmcmVxdWVzdFs2XSApICkgPQ0KCQljcHVfdG9fbGUxNiggMTU2MDAgLyB2
aWNhbV92NGxfcHJpdi0+c3BlZWQgLSAxICk7DQoNCgllcnIgPSBkb3duX2lu
dGVycnVwdGlibGUoICZ2aWNhbV92NGxfcHJpdi0+YnVzeV9tdXRleCApOw0K
CWlmICggZXJyICkgew0KCQlyZXR1cm4gZXJyOw0KCX0NCg0KCXZpY2FtX3Y0
bF9wcml2LT5jdXJyZW50X2ZyYW1lID0gZnJhbWVfbnVtOw0KDQoJZXJyID0g
dmljYW1fc2VuZF9jb250cm9sX21zZyggdmljYW1fdjRsX3ByaXYsDQoJCQkJ
ICAgICAgVklDQU1fUkVRX0NBUFRVUkUsDQoJCQkJICAgICAgMHg4MCwNCgkJ
CQkgICAgICAxNiApOw0KDQoJaWYgKCBlcnIgKSB7DQoJCWdvdG8gZG9uZTsN
Cgl9DQoNCgl1c2JfZmlsbF9idWxrX3VyYiggdmljYW1fdjRsX3ByaXYtPnVy
YiwNCgkJCSAgIHZpY2FtX3Y0bF9wcml2LT51c2JfZGV2LA0KCQkJICAgdXNi
X3JjdmJ1bGtwaXBlKCB2aWNhbV92NGxfcHJpdi0+dXNiX2RldiwNCgkJCQkJ
ICAgIHZpY2FtX3Y0bF9wcml2LT5idWxrX2VuZHBvaW50ICksDQoJCQkgICB2
aWNhbV92NGxfcHJpdi0+aW5wdXRfYnVmW2ZyYW1lX251bV0sDQoJCQkgICB2
aWNhbV92NGxfcHJpdi0+d2lkdGggKiB2aWNhbV92NGxfcHJpdi0+aGVpZ2h0
ICsNCgkJCSAgIFZJQ0FNX0hFQURFUl9TSVpFICsgVklDQU1fRk9PVEVSX1NJ
WkUsDQoJCQkgICB2aWNhbV91cmJfY29tcGxldGUsDQoJCQkgICB2aWNhbV92
NGxfcHJpdiApOw0KDQoJZXJyID0gdXNiX3N1Ym1pdF91cmIoIHZpY2FtX3Y0
bF9wcml2LT51cmIgKTsNCg0KIGRvbmU6DQoJaWYgKCBlcnIgKSB7DQoJCXVw
KCAmdmljYW1fdjRsX3ByaXYtPmJ1c3lfbXV0ZXggKTsNCgl9DQoNCglyZXR1
cm4gZXJyOw0KfQ0KDQpzdGF0aWMgdm9pZCB2aWNhbV9kZWNvZGVfZnJhbWUo
IHN0cnVjdCB2aWNhbV92NGxfZGF0YSAqdmljYW1fdjRsX3ByaXYsDQoJCQkJ
dW5zaWduZWQgbG9uZyBmcmFtZV9udW0gKQ0Kew0KCWNvbnN0IHUzMiB3aWR0
aCA9IHZpY2FtX3Y0bF9wcml2LT53aWR0aCwNCgkJaGVpZ2h0ID0gdmljYW1f
djRsX3ByaXYtPmhlaWdodDsNCgl1OCAqaWJ1ZiwgKm9idWY7DQoJaW50IHk7
DQoNCglpYnVmID0gJnZpY2FtX3Y0bF9wcml2LT5pbnB1dF9idWZbZnJhbWVf
bnVtXVtWSUNBTV9IRUFERVJfU0laRV07DQoJb2J1ZiA9IHZpY2FtX3Y0bF9w
cml2LT5mcmFtZV9idWYgKyAoIFZJQ0FNX0ZSQU1FX1NJWkUgKiBmcmFtZV9u
dW0gKTsNCg0KCWZvciAoIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyssIGlidWYg
Kz0gd2lkdGggKSB7DQoJCWludCBkeSA9IHdpZHRoOw0KCQlpbnQgeF9vdXQ7
DQoNCgkJaWYgKCB1bmxpa2VseSggeSA+PSBoZWlnaHQgLSAxICkgKSB7DQoJ
CQlkeSA9IC1keTsNCgkJfQ0KDQoJCWZvciAoIHhfb3V0ID0gMDsgeF9vdXQg
PCAzMjA7IHhfb3V0KysgKSB7DQoJCQlpbnQgZHgsIGN4LCBjeSwgbHVtYSwg
eCwgaTsNCgkJCWludCByZ2JjWzNdOw0KCQkJdTggc3BbNF07DQoNCgkJCXgg
PSAoIHhfb3V0ICogd2lkdGggKSAvIDMyMDsNCg0KCQkJZHggPSAxOw0KDQoJ
CQlpZiAoIHVubGlrZWx5KCB4ID49IHdpZHRoIC0gMSApICkgew0KCQkJCWR4
ID0gLWR4Ow0KCQkJfQ0KDQoJCQlpID0gKCB5ICYgMSApIHwgKCAoIHggJiAx
ICkgPDwgMSApOw0KDQoJCQlzcFtpIF4gMF0gPSBpYnVmW3hdOw0KCQkJc3Bb
aSBeIDFdID0gaWJ1Zlt4ICsgZHldOw0KCQkJc3BbaSBeIDJdID0gaWJ1Zlt4
ICsgZHhdOw0KCQkJc3BbaSBeIDNdID0gaWJ1Zlt4ICsgZHkgKyBkeF07DQoN
CgkJCWN4ID0gc3BbM10gLSBzcFsxXTsNCgkJCWN5ID0gc3BbMl0gLSBzcFsw
XTsNCg0KCQkJcmdiY1swXSA9IGN5ICsgKCBjeCAvIDIgKTsNCg0KCQkJY3kg
Lz0gLTI7DQoJCQljeCAqPSAxMzsgY3ggLz0gMTU7DQoNCgkJCXJnYmNbMV0g
PSBjeSArIGN4Ow0KCQkJcmdiY1syXSA9IGN5IC0gY3g7DQoNCgkJCWx1bWEg
PSAoIGludCApKCBpYnVmW3hdICsgaWJ1Zlt4ICsgZHhdICkgPj4gMTsNCg0K
CQkJZm9yICggaSA9IDA7IGkgPCAzOyBpKyssIG9idWYrKyApIHsNCgkJCQlp
bnQgaiA9IGk7DQoNCgkJCQlpZiAoIHJldmVyc2VfcmdiICkgew0KCQkJCQlq
ID0gKCAyIC0gaSApOw0KCQkJCX0NCg0KCQkJCSpvYnVmID0gY2xhbXAoIGx1
bWEgKyByZ2JjW2pdLCAwLCAyNTUgKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCXVw
KCAmdmljYW1fdjRsX3ByaXYtPmRlY29kZV9tdXRleFtmcmFtZV9udW1dICk7
DQp9DQoNCnN0YXRpYyB2b2lkIHZpY2FtX2JoX2hhbmRsZXIoIHVuc2lnbmVk
IGxvbmcgX3ZpY2FtX3Y0bF9wcml2ICkNCnsNCglzdHJ1Y3QgdmljYW1fdjRs
X2RhdGEgKnZpY2FtX3Y0bF9wcml2ID0NCgkJKCBzdHJ1Y3QgdmljYW1fdjRs
X2RhdGEgKiApKCBfdmljYW1fdjRsX3ByaXYgKTsNCglpbnQgaTsNCg0KCWRv
IHsNCgkJaSA9IGZmcyggdmljYW1fdjRsX3ByaXYtPmRlY29kZV9mcmFtZXMg
KTsNCgkJdmljYW1fZGVjb2RlX2ZyYW1lKCB2aWNhbV92NGxfcHJpdiwgaSAt
IDEgKTsNCgkJY2xlYXJfYml0KCBpIC0gMSwgJnZpY2FtX3Y0bF9wcml2LT5k
ZWNvZGVfZnJhbWVzICk7DQoJfSB3aGlsZSAoIHZpY2FtX3Y0bF9wcml2LT5k
ZWNvZGVfZnJhbWVzICk7DQp9DQoNCnN0YXRpYyBpbnQgdmljYW1fdjRsX29w
ZW4oIHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldiwgaW50IG1vZGUgKQ0Kew0K
CXN0cnVjdCB2aWNhbV92NGxfZGF0YSAqdmljYW1fdjRsX3ByaXYgPSBkZXYt
PnByaXY7DQoJaW50IGVycjsNCg0KCWVyciA9IGRvd25faW50ZXJydXB0aWJs
ZSggJnZpY2FtX3Y0bF9wcml2LT5kZXZfbXV0ZXggKTsNCglpZiAoIGVyciAp
IHsNCgkJcmV0dXJuIGVycjsNCgl9DQoNCgllcnIgPSB2aWNhbV9zZW5kX2Nv
bnRyb2xfbXNnKCB2aWNhbV92NGxfcHJpdiwgVklDQU1fUkVRX1BPV0VSLCAx
LCAwICk7DQoJdmljYW1fc2VuZF9jb250cm9sX21zZyggdmljYW1fdjRsX3By
aXYsIFZJQ0FNX1JFUV9MRUQsIDMsIDAgKTsNCg0KCWlmICggZXJyICkgew0K
CQl1cCggJnZpY2FtX3Y0bF9wcml2LT5kZXZfbXV0ZXggKTsNCgl9DQoNCgly
ZXR1cm4gZXJyOw0KfQ0KDQpzdGF0aWMgdm9pZCB2aWNhbV92NGxfY2xvc2Uo
IHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldiApDQp7DQoJc3RydWN0IHZpY2Ft
X3Y0bF9kYXRhICp2aWNhbV92NGxfcHJpdiA9IGRldi0+cHJpdjsNCg0KCXZp
Y2FtX3NlbmRfY29udHJvbF9tc2coIHZpY2FtX3Y0bF9wcml2LCBWSUNBTV9S
RVFfUE9XRVIsIDAsIDAgKTsNCg0KCXVwKCAmdmljYW1fdjRsX3ByaXYtPmRl
dl9tdXRleCApOw0KfQ0KDQpzdGF0aWMgbG9uZyB2aWNhbV92NGxfd3JpdGUo
IHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYnVmLA0K
CQkJICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCBpbnQgbm9ibG9jayApDQp7
DQoJcmV0dXJuIC1FUEVSTTsNCn0NCg0Kc3RhdGljIGludCB2aWNhbV92NGxf
aW9jdGwoIHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50
IGNtZCwNCgkJCSAgICB2b2lkICphcmcgKQ0Kew0KCXN0cnVjdCB2aWNhbV92
NGxfZGF0YSAqdmljYW1fdjRsX3ByaXY7DQoJc3RydWN0IHZpZGVvX2NhcGFi
aWxpdHkgKnZjYXA7DQoJc3RydWN0IHZpZGVvX2NoYW5uZWwgKnZjaGFuOw0K
CXN0cnVjdCB2aWRlb19tYnVmICp2bWJ1ZjsNCglzdHJ1Y3QgdmlkZW9fcGlj
dHVyZSAqdnBpYzsNCglzdHJ1Y3QgdmlkZW9fbW1hcCAqdm1tYXA7DQoJc3Ry
dWN0IHZpZGVvX3dpbmRvdyAqdndpbjsNCgl2b2lkICpidWY7DQoJaW50IGJ1
Zl9zaXplLCBlcnIsIGk7DQoNCgl2aWNhbV92NGxfcHJpdiA9IGRldi0+cHJp
djsNCg0KCWVyciA9IDA7DQoNCglidWZfc2l6ZSA9IG1heF90KCBpbnQsIHNp
emVvZiggKnZjYXAgKSwNCgkJCSAgbWF4X3QoIGludCwgc2l6ZW9mKCAqdmNo
YW4gKSwNCgkJCQkgbWF4X3QoIGludCwgc2l6ZW9mKCAqdm1idWYgKSwNCgkJ
CQkJbWF4X3QoIGludCwgc2l6ZW9mKCAqdnBpYyApLA0KCQkJCQkgICAgICAg
bWF4X3QoIGludCwgc2l6ZW9mKCAqdm1tYXAgKSwNCgkJCQkJCSAgICAgIHNp
emVvZiggKnZ3aW4gKSApICkgKSApICk7DQoNCglpZiAoIHVubGlrZWx5KCBi
dWZfc2l6ZSA+IFZJQ0FNX0NOVFJMX0JVRl9TSVpFICkgKSB7DQoJCXJldHVy
biAtRU5PTUVNOw0KCX0NCg0KCWJ1ZiA9IHZpY2FtX3Y0bF9wcml2LT5jbnRy
bF9idWY7DQoJYnVmX3NpemUgPSAwOw0KDQoJdmNhcCAgPSBidWY7DQoJdmNo
YW4gPSBidWY7DQoJdm1idWYgPSBidWY7DQoJdnBpYyAgPSBidWY7DQoJdm1t
YXAgPSBidWY7DQoJdndpbiAgPSBidWY7DQoNCglzd2l0Y2ggKCBjbWQgKSB7
DQoJY2FzZSBWSURJT0NHQ0FQOg0KCQlidWZfc2l6ZSA9IHNpemVvZiggKnZj
YXAgKTsNCg0KCQltZW1zZXQoIGJ1ZiwgMCwgYnVmX3NpemUgKTsNCg0KCQlz
dHJjcHkoIHZjYXAtPm5hbWUsIGRldi0+bmFtZSApOw0KCQl2Y2FwLT50eXBl
ID0gZGV2LT50eXBlOw0KDQoJCXZjYXAtPmNoYW5uZWxzID0gMTsNCgkJdmNh
cC0+YXVkaW9zID0gMDsNCg0KCQl2Y2FwLT5tYXh3aWR0aCA9IDMyMDsNCgkJ
dmNhcC0+bWF4aGVpZ2h0ID0gMjQyOw0KDQoJCXZjYXAtPm1pbndpZHRoID0g
MzIwOw0KCQl2Y2FwLT5taW5oZWlnaHQgPSAyNDI7DQoNCgkJYnJlYWs7DQoJ
Y2FzZSBWSURJT0NHQ0hBTjoNCgkJaWYgKCBjb3B5X2Zyb21fdXNlciggdmNo
YW4sIGFyZywgc2l6ZW9mKCAqdmNoYW4gKSApICkgew0KCQkJZXJyID0gLUVG
QVVMVDsNCgkJCWJyZWFrOw0KCQl9DQoNCgkJaWYgKCB2Y2hhbi0+Y2hhbm5l
bCApIHsNCgkJCWVyciA9IC1FSU5WQUw7DQoJCQlicmVhazsNCgkJfQ0KDQoJ
CXN0cmNweSggdmNoYW4tPm5hbWUsIGRldi0+bmFtZSApOw0KDQoJCXZjaGFu
LT5mbGFncyA9IDA7DQoJCXZjaGFuLT50dW5lcnMgPSAwOw0KDQoJCXZjaGFu
LT50eXBlID0gVklERU9fVFlQRV9DQU1FUkE7DQoNCgkJdmNoYW4tPm5vcm0g
PSAwOw0KDQoJCWJ1Zl9zaXplID0gc2l6ZW9mKCAqdmNoYW4gKTsNCg0KCQli
cmVhazsNCgljYXNlIFZJRElPQ1NDSEFOOg0KCQlpZiAoIGNvcHlfZnJvbV91
c2VyKCB2Y2hhbiwgYXJnLCBzaXplb2YoICp2Y2hhbiApICkgKSB7DQoJCQll
cnIgPSAtRUZBVUxUOw0KCQkJYnJlYWs7DQoJCX0NCg0KCQlpZiAoIHZjaGFu
LT5jaGFubmVsICkgew0KCQkJZXJyID0gLUVJTlZBTDsNCgkJCWJyZWFrOw0K
CQl9DQoNCgkJYnJlYWs7DQoJY2FzZSBWSURJT0NHUElDVDoNCgkJYnVmX3Np
emUgPSBzaXplb2YoICp2cGljICk7DQoNCgkJbWVtc2V0KCB2cGljLCAwLCBi
dWZfc2l6ZSApOw0KDQoJCXZwaWMtPmJyaWdodG5lc3MgPSB2aWNhbV92NGxf
cHJpdi0+Z2FpbiA8PCA4Ow0KCQl2cGljLT5kZXB0aCA9IDI0Ow0KCQl2cGlj
LT5wYWxldHRlID0gVklERU9fUEFMRVRURV9SR0IyNDsNCg0KCQlicmVhazsN
CgljYXNlIFZJRElPQ1NQSUNUOg0KCQlpZiAoIGNvcHlfZnJvbV91c2VyKCB2
cGljLCBhcmcsIHNpemVvZiggKnZwaWMgKSApICkgew0KCQkJZXJyID0gLUVG
QVVMVDsNCgkJCWJyZWFrOw0KCQl9DQoNCgkJaWYgKCB2cGljLT5kZXB0aCAh
PSAyNCB8fA0KCQkgICAgIHZwaWMtPnBhbGV0dGUgIT0gVklERU9fUEFMRVRU
RV9SR0IyNCApIHsNCgkJCWVyciA9IC1FSU5WQUw7DQoJCX0NCg0KCQl2aWNh
bV92NGxfcHJpdi0+Z2FpbiA9IHZwaWMtPmJyaWdodG5lc3MgPj4gODsNCg0K
CQlicmVhazsNCgljYXNlIFZJRElPQ0dXSU46DQoJCWJ1Zl9zaXplID0gc2l6
ZW9mKCAqdndpbiApOw0KDQoJCW1lbXNldCggdndpbiwgMCwgYnVmX3NpemUg
KTsNCg0KCQl2d2luLT54ID0gMDsNCgkJdndpbi0+eSA9IDA7DQoNCgkJdndp
bi0+d2lkdGggPSAzMjA7DQoJCXZ3aW4tPmhlaWdodCA9IHZpY2FtX3Y0bF9w
cml2LT5oZWlnaHQ7DQoNCgkJdndpbi0+Y2hyb21ha2V5ID0gMDsNCgkJdndp
bi0+ZmxhZ3MgPSAwOw0KCQl2d2luLT5jbGlwcyA9IE5VTEw7DQoJCXZ3aW4t
PmNsaXBjb3VudCA9IDA7DQoNCgkJYnJlYWs7DQoJY2FzZSBWSURJT0NTV0lO
Og0KCQlpZiAoIHZ3aW4tPnggIT0gMCB8fCB2d2luLT55ICE9IDAgKSB7DQoJ
CQllcnIgPSAtRUlOVkFMOw0KCQl9DQoNCgkJaWYgKCB2d2luLT53aWR0aCAh
PSAzMjAgfHwNCgkJICAgICB2d2luLT5oZWlnaHQgIT0gdmljYW1fdjRsX3By
aXYtPmhlaWdodCApIHsNCgkJCWVyciA9IC1FSU5WQUw7DQoJCX0NCg0KCQli
cmVhazsNCgljYXNlIFZJRElPQ0dNQlVGOg0KCQlidWZfc2l6ZSA9IHNpemVv
ZiggKnZtYnVmICk7DQoNCgkJbWVtc2V0KCB2bWJ1ZiwgMCwgYnVmX3NpemUg
KTsNCg0KCQl2bWJ1Zi0+ZnJhbWVzID0gbWluKCBWSUNBTV9OVU1fRlJBTUVT
LCBWSURFT19NQVhfRlJBTUUgKTsNCgkJdm1idWYtPnNpemUgPSBWSUNBTV9G
UkFNRV9TSVpFICogdm1idWYtPmZyYW1lczsNCg0KCQlmb3IgKCBpID0gMDsg
aSA8IHZtYnVmLT5mcmFtZXM7IGkrKyApIHsNCgkJCXZtYnVmLT5vZmZzZXRz
W2ldID0gVklDQU1fRlJBTUVfU0laRSAqIGk7DQoJCX0NCg0KCQlicmVhazsN
CgljYXNlIFZJRElPQ01DQVBUVVJFOg0KCQlpZiAoIGNvcHlfZnJvbV91c2Vy
KCB2bW1hcCwgYXJnLCBzaXplb2YoICp2bW1hcCApICkgKSB7DQoJCQllcnIg
PSAtRUZBVUxUOw0KCQkJYnJlYWs7DQoJCX0NCg0KCQlpZiAoIHZtbWFwLT5m
cmFtZSA+IFZJQ0FNX05VTV9GUkFNRVMgfHwNCgkJICAgICB2bW1hcC0+Zm9y
bWF0ICE9IFZJREVPX1BBTEVUVEVfUkdCMjQgKSB7DQoJCQllcnIgPSAtRUlO
VkFMOw0KCQkJYnJlYWs7DQoJCX0NCg0KCQllcnIgPSB2aWNhbV9jYXB0dXJl
X2ltYWdlKCB2aWNhbV92NGxfcHJpdiwgdm1tYXAtPmZyYW1lICk7DQoNCgkJ
YnJlYWs7DQoJY2FzZSBWSURJT0NTWU5DOg0KCQlpZiAoIGNvcHlfZnJvbV91
c2VyKCAmaSwgYXJnLCBzaXplb2YoIGkgKSApICkgew0KCQkJZXJyID0gLUVG
QVVMVDsNCgkJCWJyZWFrOw0KCQl9DQoNCgkJaWYgKCBpID4gVklDQU1fTlVN
X0ZSQU1FUyApIHsNCgkJCWVyciA9IC1FSU5WQUw7DQoJCQlicmVhazsNCgkJ
fQ0KDQoJCWVyciA9IGRvd25faW50ZXJydXB0aWJsZSggJnZpY2FtX3Y0bF9w
cml2LT5kZWNvZGVfbXV0ZXhbaV0gKTsNCg0KCQlicmVhazsNCglkZWZhdWx0
Og0KCQllcnIgPSAtRU5PSU9DVExDTUQ7DQoJCWJyZWFrOw0KCX0NCg0KCWlm
ICggIWVyciAmJiBidWZfc2l6ZSApIHsNCgkJZXJyID0gY29weV90b191c2Vy
KCBhcmcsIGJ1ZiwgYnVmX3NpemUgKSA/IC1FRkFVTFQgOiAwOw0KCX0NCg0K
CXJldHVybiBlcnI7DQp9DQoNCnN0YXRpYyBpbnQgdmljYW1fdjRsX21tYXAo
IHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYWRkciwN
CgkJCSAgIHVuc2lnbmVkIGxvbmcgc2l6ZSApDQp7DQoJc3RydWN0IHZpY2Ft
X3Y0bF9kYXRhICp2aWNhbV92NGxfcHJpdiA9IGRldi0+cHJpdjsNCgl1bnNp
Z25lZCBsb25nIHN0YXJ0ID0gKCB1bnNpZ25lZCBsb25nICkoIGFkZHIgKTsN
Cgl1bnNpZ25lZCBsb25nIHBvczsNCg0KCWlmICggc2l6ZSA+IFZJQ0FNX0ZS
QU1FX0JVRl9TSVpFICkgew0KCQlyZXR1cm4gLUVJTlZBTDsNCgl9DQoNCglw
b3MgPSAoIHVuc2lnbmVkIGxvbmcgKSggdmljYW1fdjRsX3ByaXYtPmZyYW1l
X2J1ZiApOw0KDQoJd2hpbGUgKCBzaXplID4gMCApIHsNCgkJdW5zaWduZWQg
bG9uZyBwYWdlID0ga3ZpcnRfdG9fcGEoIHBvcyApOw0KDQoJCWlmICggcmVt
YXBfcGFnZV9yYW5nZSggc3RhcnQsDQoJCQkJICAgICAgIHBhZ2UsDQoJCQkJ
ICAgICAgIFBBR0VfU0laRSwNCgkJCQkgICAgICAgUEFHRV9TSEFSRUQgKSAp
ew0KCQkJcmV0dXJuIC1FQUdBSU47DQoJCX0NCg0KCQlzdGFydCArPSBQQUdF
X1NJWkU7DQoJCXBvcyArPSBQQUdFX1NJWkU7DQoNCgkJLyogaW4gY2FzZSBz
aXplIGlzbid0IGEgbXVsdGlwbGUgb2YgUEFHRV9TSVpFICovDQoNCgkJc2l6
ZSAtPSBtaW4oIHNpemUsIFBBR0VfU0laRSApOw0KCX0NCg0KCXJldHVybiAw
Ow0KfQ0KDQpzdGF0aWMgaW50IF9fZGV2aW5pdCB2aWNhbV92NGxfaW5pdGlh
bGl6ZSggc3RydWN0IHZpZGVvX2RldmljZSAqZGV2ICkNCnsNCglzdHJ1Y3Qg
dmljYW1fdjRsX2RhdGEgKnZpY2FtX3Y0bF9wcml2Ow0KCWludCBlcnI7DQoJ
aW50IGk7DQoNCgl2aWNhbV92NGxfcHJpdiA9IGttYWxsb2MoIHNpemVvZigg
KnZpY2FtX3Y0bF9wcml2ICksIEdGUF9LRVJORUwgKTsNCglpZiAoICF2aWNh
bV92NGxfcHJpdiApIHsNCgkJcmV0dXJuIC1FTk9NRU07DQoJfQ0KDQoJbWVt
c2V0KCB2aWNhbV92NGxfcHJpdiwgMCwgc2l6ZW9mKCAqdmljYW1fdjRsX3By
aXYgKSApOw0KDQoJZXJyID0gLUVOT01FTTsNCg0KCXZpY2FtX3Y0bF9wcml2
LT51cmIgPSB1c2JfYWxsb2NfdXJiKCAwICk7DQoJaWYgKCAhdmljYW1fdjRs
X3ByaXYtPnVyYiApIHsNCgkJZ290byBkb25lOw0KCX0NCg0KCXZpY2FtX3Y0
bF9wcml2LT5mcmFtZV9idWYgPSBydm1hbGxvYyggVklDQU1fRlJBTUVfQlVG
X1NJWkUgKTsNCglpZiAoICF2aWNhbV92NGxfcHJpdi0+ZnJhbWVfYnVmICkg
ew0KCQlnb3RvIGRvbmU7DQoJfQ0KDQoJdmljYW1fdjRsX3ByaXYtPmNudHJs
X2J1ZiA9IGttYWxsb2MoIFZJQ0FNX0NOVFJMX0JVRl9TSVpFLA0KCQkJCQkg
ICAgIEdGUF9LRVJORUwgKTsNCglpZiAoICF2aWNhbV92NGxfcHJpdi0+Y250
cmxfYnVmICkgew0KCQlnb3RvIGRvbmU7DQoJfQ0KDQoJZm9yICggaSA9IDA7
IGkgPCBWSUNBTV9OVU1fRlJBTUVTOyBpKysgKSB7DQoJCXZpY2FtX3Y0bF9w
cml2LT5pbnB1dF9idWZbaV0gPSBrbWFsbG9jKCBWSUNBTV9JTlBVVF9TSVpF
LA0KCQkJCQkJCUdGUF9LRVJORUwgKTsNCgkJaWYgKCAhdmljYW1fdjRsX3By
aXYtPmlucHV0X2J1ZltpXSApIHsNCgkJCWdvdG8gZG9uZTsNCgkJfQ0KCX0N
Cg0KCS8qIHRoZSB1c2JfZGV2aWNlIHdhcyBwYXNzZWQgdG8gdXMgZnJvbSB0
aGUgdmljYW1fdXNiX3Byb2JlDQoJICogZnVuY3Rpb24gdGhyb3VnaCBvdXIg
ZGV2LT5wcml2IHBvaW50ZXIuDQoJICovDQoNCgl2aWNhbV92NGxfcHJpdi0+
dXNiX2RldiA9IGRldi0+cHJpdjsNCglkZXYtPnByaXYgPSB2aWNhbV92NGxf
cHJpdjsNCg0KCXRhc2tsZXRfaW5pdCggJnZpY2FtX3Y0bF9wcml2LT5kZWNv
ZGUsDQoJCSAgICAgIHZpY2FtX2JoX2hhbmRsZXIsDQoJCSAgICAgICggdW5z
aWduZWQgbG9uZyApKCB2aWNhbV92NGxfcHJpdiApICk7DQoNCglpbml0X01V
VEVYKCAmdmljYW1fdjRsX3ByaXYtPmRldl9tdXRleCApOw0KCWluaXRfTVVU
RVgoICZ2aWNhbV92NGxfcHJpdi0+YnVzeV9tdXRleCApOw0KDQoJZm9yICgg
aSA9IDA7IGkgPCBWSUNBTV9OVU1fRlJBTUVTOyBpKysgKSB7DQoJCWluaXRf
TVVURVhfTE9DS0VEKCAmdmljYW1fdjRsX3ByaXYtPmRlY29kZV9tdXRleFtp
XSApOw0KCX0NCg0KCXZpY2FtX3Y0bF9wcml2LT53aWR0aCAgPSA1MTI7DQoJ
dmljYW1fdjRsX3ByaXYtPmhlaWdodCA9IDI0MjsNCgl2aWNhbV92NGxfcHJp
di0+c3BlZWQgID0gc2h1dHRlcl9zcGVlZDsNCg0KCWZvciAoIGkgPSAwLCBl
cnIgPSAwOyBzZXR1cFtpXS5maXJtd2FyZSAmJiAhZXJyOyBpKysgKSB7DQoJ
CW1lbWNweSggdmljYW1fdjRsX3ByaXYtPmNudHJsX2J1ZiwNCgkJCXNldHVw
W2ldLmZpcm13YXJlLA0KCQkJc2V0dXBbaV0uc2l6ZSApOw0KDQoJCWVyciA9
IHZpY2FtX3NlbmRfY29udHJvbF9tc2coIHZpY2FtX3Y0bF9wcml2LA0KCQkJ
CQkgICAgICBWSUNBTV9SRVFfVkVORE9SLA0KCQkJCQkgICAgICAwLA0KCQkJ
CQkgICAgICBzZXR1cFtpXS5zaXplICk7DQoJfQ0KDQogZG9uZToNCglpZiAo
IGVyciApIHsNCgkJZm9yICggaSA9IDA7IGkgPCBWSUNBTV9OVU1fRlJBTUVT
OyBpKysgKSB7DQoJCQlpZiAoIHZpY2FtX3Y0bF9wcml2LT5pbnB1dF9idWZb
aV0gKSB7DQoJCQkJa2ZyZWUoIHZpY2FtX3Y0bF9wcml2LT5pbnB1dF9idWZb
aV0gKTsNCgkJCX0NCgkJfQ0KDQoJCWlmICggdmljYW1fdjRsX3ByaXYtPmNu
dHJsX2J1ZiApIHsNCgkJCWtmcmVlKCB2aWNhbV92NGxfcHJpdi0+Y250cmxf
YnVmICk7DQoJCX0NCg0KCQlpZiAoIHZpY2FtX3Y0bF9wcml2LT5mcmFtZV9i
dWYgKSB7DQoJCQlydmZyZWUoIHZpY2FtX3Y0bF9wcml2LT5mcmFtZV9idWYs
DQoJCQkJVklDQU1fRlJBTUVfQlVGX1NJWkUgKTsNCgkJfQ0KDQoJCWlmICgg
dmljYW1fdjRsX3ByaXYtPnVyYiApIHsNCgkJCXVzYl9mcmVlX3VyYiggdmlj
YW1fdjRsX3ByaXYtPnVyYiApOw0KCQl9DQoNCgkJa2ZyZWUoIHZpY2FtX3Y0
bF9wcml2ICk7DQoJfQ0KDQoJcmV0dXJuIGVycjsNCn0NCg0Kc3RhdGljIHZv
aWQgKiBfX2RldmluaXQgdmljYW1fdXNiX3Byb2JlKCBzdHJ1Y3QgdXNiX2Rl
dmljZSAqZGV2LA0KCQkJCQkgdW5zaWduZWQgaW50IGlmbnVtLA0KCQkJCQkg
Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmRldmlkICkNCnsNCglzdHJ1
Y3QgdmljYW1fdXNiX2RhdGEgKnZpY2FtX3VzYl9wcml2Ow0KCWNvbnN0IHN0
cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaWZhY2U7DQoJaW50IGVycjsNCgl1
OCBlbmRwdF9hZGRyLCBlbmRwdF9hdHRyOw0KDQoJdmljYW1fdXNiX3ByaXYg
PSBOVUxMOw0KDQoJdXNiX2lmYWNlID0gdXNiX2lmbnVtX3RvX2lmKCBkZXYs
IGlmbnVtICk7DQoNCglpZiAoIHVzYl9pZmFjZS0+bnVtX2FsdHNldHRpbmcg
IT0gMSApIHsNCgkJcmV0dXJuIE5VTEw7DQoJfQ0KDQoJZW5kcHRfYWRkciA9
IHVzYl9pZmFjZS0+YWx0c2V0dGluZ1swXS5lbmRwb2ludFswXS5iRW5kcG9p
bnRBZGRyZXNzOw0KCWVuZHB0X2F0dHIgPSB1c2JfaWZhY2UtPmFsdHNldHRp
bmdbMF0uZW5kcG9pbnRbMF0uYm1BdHRyaWJ1dGVzOw0KDQoJaWYgKCAhKCBl
bmRwdF9hZGRyICYgVVNCX0VORFBPSU5UX0RJUl9NQVNLICkgfHwNCgkgICAg
ICggZW5kcHRfYXR0ciAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLICkg
IT0NCgkgICAgIFVTQl9FTkRQT0lOVF9YRkVSX0JVTEsgKSB7DQoJCXJldHVy
biBOVUxMOw0KCX0NCg0KCXZpY2FtX3VzYl9wcml2ID0ga21hbGxvYyggc2l6
ZW9mKCAqdmljYW1fdXNiX3ByaXYgKSwgR0ZQX0tFUk5FTCApOw0KCWlmICgg
IXZpY2FtX3VzYl9wcml2ICkgew0KCQlyZXR1cm4gTlVMTDsNCgl9DQoNCglt
ZW1zZXQoIHZpY2FtX3VzYl9wcml2LCAwLCBzaXplb2YoICp2aWNhbV91c2Jf
cHJpdiApICk7DQoNCgl1c2Jfc3RyaW5nKCBkZXYsIGRldi0+ZGVzY3JpcHRv
ci5pUHJvZHVjdCwNCgkJICAgIHZpY2FtX3VzYl9wcml2LT52aWNhbV92NGxf
ZGV2Lm5hbWUsIDMyICk7DQoNCgl2aWNhbV91c2JfcHJpdi0+dmljYW1fdjRs
X2Rldi50eXBlICAgICAgID0gVklEX1RZUEVfQ0FQVFVSRTsNCgl2aWNhbV91
c2JfcHJpdi0+dmljYW1fdjRsX2Rldi5oYXJkd2FyZSAgID0gMDsgLyogbmVl
ZCBvd24gaWQgKi8NCg0KCXZpY2FtX3VzYl9wcml2LT52aWNhbV92NGxfZGV2
LmluaXRpYWxpemUgPSB2aWNhbV92NGxfaW5pdGlhbGl6ZTsNCgl2aWNhbV91
c2JfcHJpdi0+dmljYW1fdjRsX2Rldi5vcGVuICAgICAgID0gdmljYW1fdjRs
X29wZW47DQoJdmljYW1fdXNiX3ByaXYtPnZpY2FtX3Y0bF9kZXYuY2xvc2Ug
ICAgICA9IHZpY2FtX3Y0bF9jbG9zZTsNCgl2aWNhbV91c2JfcHJpdi0+dmlj
YW1fdjRsX2Rldi53cml0ZSAgICAgID0gdmljYW1fdjRsX3dyaXRlOw0KCXZp
Y2FtX3VzYl9wcml2LT52aWNhbV92NGxfZGV2LmlvY3RsICAgICAgPSB2aWNh
bV92NGxfaW9jdGw7DQoJdmljYW1fdXNiX3ByaXYtPnZpY2FtX3Y0bF9kZXYu
bW1hcCAgICAgICA9IHZpY2FtX3Y0bF9tbWFwOw0KDQoJdmljYW1fdXNiX3By
aXYtPnZpY2FtX3Y0bF9kZXYub3duZXIgICAgICA9IFRISVNfTU9EVUxFOw0K
DQoJLyogd2UgbmVlZCB0byBnZXQgdGhlIHVzYl9kZXZpY2Ugc3RydWN0IHRv
IHRoZQ0KCSAqIHZpY2FtX3Y0bF9pbml0aWFsaXplIGZ1bmN0aW9uIFtwcmVm
ZXJhYmx5XQ0KCSAqIHdpdGhvdXQgdXNpbmcgZ2xvYmFscy4NCgkgKi8NCg0K
CXZpY2FtX3VzYl9wcml2LT52aWNhbV92NGxfZGV2LnByaXYgICAgICAgPSBk
ZXY7DQoNCgllcnIgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UgKCAmdmljYW1f
dXNiX3ByaXYtPnZpY2FtX3Y0bF9kZXYsDQoJCQkJICAgICAgVkZMX1RZUEVf
R1JBQkJFUiwgLTEgKTsNCg0KCWlmICggZXJyICkgew0KCQlrZnJlZSggdmlj
YW1fdXNiX3ByaXYgKTsNCgkJdmljYW1fdXNiX3ByaXYgPSBOVUxMOw0KCX0g
ZWxzZSB7DQoJCXN0cnVjdCB2aWNhbV92NGxfZGF0YSAqdmljYW1fdjRsX3By
aXYgPQ0KCQkJdmljYW1fdXNiX3ByaXYtPnZpY2FtX3Y0bF9kZXYucHJpdjsN
Cg0KCQl2aWNhbV92NGxfcHJpdi0+YnVsa19lbmRwb2ludCA9IGVuZHB0X2Fk
ZHI7DQoJfQ0KDQoJcmV0dXJuIHZpY2FtX3VzYl9wcml2Ow0KfQ0KDQpzdGF0
aWMgdm9pZCBfX2RldmV4aXQgdmljYW1fdXNiX2Rpc2Nvbm5lY3QoIHN0cnVj
dCB1c2JfZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEgKQ0Kew0KCXN0cnVjdCB2
aWNhbV91c2JfZGF0YSAqdmljYW1fdXNiX3ByaXY7DQoJc3RydWN0IHZpY2Ft
X3Y0bF9kYXRhICp2aWNhbV92NGxfcHJpdjsNCglpbnQgaTsNCg0KCXZpY2Ft
X3VzYl9wcml2ID0gZGF0YTsNCgl2aWNhbV92NGxfcHJpdiA9IHZpY2FtX3Vz
Yl9wcml2LT52aWNhbV92NGxfZGV2LnByaXY7DQoNCgkvKiB3aGF0IGhhcHBl
bnMgaWYgYSBkaXNjb25uZWN0IG9jY3VycyB3aGlsZSB0aGUgZGV2aWNlIGlz
IG9wZW4/ICovDQoNCgl2aWRlb191bnJlZ2lzdGVyX2RldmljZSggJnZpY2Ft
X3VzYl9wcml2LT52aWNhbV92NGxfZGV2ICk7DQoNCgl0YXNrbGV0X2tpbGwo
ICZ2aWNhbV92NGxfcHJpdi0+ZGVjb2RlICk7DQoNCgl1c2JfZnJlZV91cmIo
IHZpY2FtX3Y0bF9wcml2LT51cmIgKTsNCglydmZyZWUoIHZpY2FtX3Y0bF9w
cml2LT5mcmFtZV9idWYsIFZJQ0FNX0ZSQU1FX0JVRl9TSVpFICk7DQoJa2Zy
ZWUoIHZpY2FtX3Y0bF9wcml2LT5jbnRybF9idWYgKTsNCg0KCWZvciAoIGkg
PSAwOyBpIDwgVklDQU1fTlVNX0ZSQU1FUzsgaSsrICkgew0KCQlpZiAoIHZp
Y2FtX3Y0bF9wcml2LT5pbnB1dF9idWZbaV0gKSB7DQoJCQlrZnJlZSggdmlj
YW1fdjRsX3ByaXYtPmlucHV0X2J1ZltpXSApOw0KCQl9DQoJfQ0KDQoJa2Zy
ZWUoIHZpY2FtX3Y0bF9wcml2ICk7DQoJa2ZyZWUoIHZpY2FtX3VzYl9wcml2
ICk7DQp9DQoNCnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBfX2Rldmlu
aXRkYXRhIHZpY2FtX3VzYl90YWJsZVtdID0gew0KCXsgVVNCX0RFVklDRSgg
VVNCXzNDT01IQ19WRU5ET1JfSUQsIFVTQl8zQ09NSENfUFJPRFVDVF9JRCAp
IH0sDQoJLyogVGhhdCdzIGFsbCBmb2xrcyAqLw0KCXsgLm1hdGNoX2ZsYWdz
ID0gMCB9DQp9Ow0KDQpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdmljYW1f
dXNiX2RydiA9IHsNCgkubmFtZSA9ICJ2aWNhbV91c2IiLA0KCS5wcm9iZSA9
IHZpY2FtX3VzYl9wcm9iZSwNCgkuZGlzY29ubmVjdCA9IF9fZGV2ZXhpdF9w
KCB2aWNhbV91c2JfZGlzY29ubmVjdCApLA0KCS5pZF90YWJsZSA9IHZpY2Ft
X3VzYl90YWJsZQ0KfTsNCg0Kc3RhdGljIGludCBfX2luaXQgdmljYW1fdXNi
X2luaXQoIHZvaWQgKQ0Kew0KCXJldmVyc2VfcmdiID0gY2xhbXAoIHJldmVy
c2VfcmdiLCAwLCAxICk7DQoJc2h1dHRlcl9zcGVlZCA9IGNsYW1wKCBzaHV0
dGVyX3NwZWVkLCAyLCA2MCApOw0KDQoJcmV0dXJuIHVzYl9yZWdpc3Rlcigg
JnZpY2FtX3VzYl9kcnYgKTsNCn0NCg0Kc3RhdGljIHZvaWQgX19leGl0IHZp
Y2FtX3VzYl9leGl0KCB2b2lkICkNCnsNCgl1c2JfZGVyZWdpc3RlciggJnZp
Y2FtX3VzYl9kcnYgKTsNCn0NCg0KbW9kdWxlX2luaXQoIHZpY2FtX3VzYl9p
bml0ICk7DQptb2R1bGVfZXhpdCggdmljYW1fdXNiX2V4aXQgKTsNCg0KTU9E
VUxFX0RFVklDRV9UQUJMRSggdXNiLCB2aWNhbV91c2JfdGFibGUgKTsNCg0K
TU9EVUxFX1BBUk0oIHJldmVyc2VfcmdiLCAiaSIgKTsNCk1PRFVMRV9QQVJN
X0RFU0MoIHJldmVyc2VfcmdiLCAiUGVyZm9ybSBSR0IgdG8gQkdSIGNvbnZl
cnNpb24iICk7DQoNCk1PRFVMRV9QQVJNKCBzaHV0dGVyX3NwZWVkLCAiaSIg
KTsNCg0KTU9EVUxFX0xJQ0VOU0UoICJHUEwiICk7DQpNT0RVTEVfQVVUSE9S
KCAiSm9obiBUeW5lciA8anR5bmVyQGNzLnVjci5lZHU+IiApOw0KTU9EVUxF
X0RFU0NSSVBUSU9OKCAiVmlDQU0gVVNCL1Y0TCBEcml2ZXIiICk7DQo=
--394922409-960090401-1033703970=:15999
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=Makefile
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.30.0210032059302.15999@hill.cs.ucr.edu>
Content-Description:
Content-Disposition: attachment; filename=Makefile

SU5DTFVERSA9IC1JIC91c3Ivc3JjL2xpbnV4L2luY2x1ZGUNCkRFRklORVMg
PSAtRF9fS0VSTkVMX18gLURNT0RVTEUNCkNGTEFHUyA9IC1PMiAtV2FsbCAt
V2Vycm9yDQoNCnZpY2FtLm86IHZpY2FtLmMgdmljYW0uaCBNYWtlZmlsZQ0K
CWdjYyAkKENGTEFHUykgJChJTkNMVURFKSAkKERFRklORVMpIC1jICQ8IC1v
ICRADQoNCmNsZWFuOg0KCXJtIC1mICoubyAqfiAqIw0K
--394922409-960090401-1033703970=:15999--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/