Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Thu, 3 Oct 2002 23:54:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Thu, 3 Oct 2002 23:54:14 -0400 Received: from barrichello.cs.ucr.edu ([138.23.169.5]:37351 "HELO barrichello.cs.ucr.edu") by vger.kernel.org with SMTP id ; Thu, 3 Oct 2002 23:54:05 -0400 Mailbox-Line: From jtyner@cs.ucr.edu Thu Oct 3 20:59:32 2002 Date: Thu, 3 Oct 2002 20:59:30 -0700 (PDT) From: John Tyner To: , Cc: , Subject: Vicam/3com homeconnect usb camera driver Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="394922409-960090401-1033703970=:15999" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 47523 Lines: 800 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: 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: 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: 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/