From owner-freebsd-questions@FreeBSD.ORG Mon Aug 18 15:05:25 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0EFB637B401 for ; Mon, 18 Aug 2003 15:05:25 -0700 (PDT) Received: from hotmail.com (bay1-f40.bay1.hotmail.com [65.54.245.40]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1F22943F3F for ; Mon, 18 Aug 2003 15:05:24 -0700 (PDT) (envelope-from gpg__gpg@hotmail.com) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 18 Aug 2003 15:05:23 -0700 Received: from 217.136.133.161 by by1fd.bay1.hotmail.msn.com with HTTP; Mon, 18 Aug 2003 22:05:23 GMT X-Originating-IP: [217.136.133.161] X-Originating-Email: [gpg__gpg@hotmail.com] From: "hGPG GPG" To: questions@FreeBSD.org Date: Mon, 18 Aug 2003 22:05:23 +0000 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_6671_3eb_241d" Message-ID: X-OriginalArrivalTime: 18 Aug 2003 22:05:23.0890 (UTC) FILETIME=[D2B2A120:01C365D4] Subject: troubleshooting with SafeWay network drivers X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Aug 2003 22:05:25 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_6671_3eb_241d Content-Type: text/plain; charset=iso-8859-1; format=flowed j'ai installer FreeBSD 5.1 sur une machine PII 300 MHz qui dispose d'une carte réseau de marque SafeWay (chip us_bc001). inclus avec ce mail, le drivers (.c et .h) et l'expliquations fournie par le SafeWay (qui ne correspond a rien). pouvez-vous m'aider a resoudre ce problême, a faire fonctionner cette carte réseau? merci _________________________________________________________________ Hotmail: votre e-mail gratuit ! http://www.fr.msn.be/hotmail ------=_NextPart_000_6671_3eb_241d Content-Type: application/octet-stream; name="IF_FET.C" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="IF_FET.C" LyoKICogZmFzdCBldGhlcm5ldCBQQ0kgTklDIGRyaXZlcgogKi8KCiNpbmNs dWRlICJicGZpbHRlci5oIgoKI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgojaW5j bHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNsdWRlIDxzeXMvc29ja2lvLmg+CiNp bmNsdWRlIDxzeXMvbWJ1Zi5oPgojaW5jbHVkZSA8c3lzL21hbGxvYy5oPgoj aW5jbHVkZSA8c3lzL2tlcm5lbC5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5o PgoKI2luY2x1ZGUgPG5ldC9pZi5oPgojaW5jbHVkZSA8bmV0L2lmX2FycC5o PgojaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CiNpbmNsdWRlIDxuZXQvaWZf ZGwuaD4KI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgoKI2lmIE5CUEZJTFRF UiA+IDAKI2luY2x1ZGUgPG5ldC9icGYuaD4KI2VuZGlmCgojaW5jbHVkZSA8 dm0vdm0uaD4gICAgICAgICAgICAgIC8qIGZvciB2dG9waHlzICovCiNpbmNs dWRlIDx2bS9wbWFwLmg+ICAgICAgICAgICAgLyogZm9yIHZ0b3BoeXMgKi8K I2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4gICAgICAvKiBmb3IgREVMQVkg Ki8KI2luY2x1ZGUgPG1hY2hpbmUvYnVzX21lbWlvLmg+CiNpbmNsdWRlIDxt YWNoaW5lL2J1c19waW8uaD4KI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+Cgoj aW5jbHVkZSA8cGNpL3BjaXJlZy5oPgojaW5jbHVkZSA8cGNpL3BjaXZhci5o PgoKI2RlZmluZSBGRVRfVVNFSU9TUEFDRQoKI2luY2x1ZGUgPHBjaS9pZmZl dHJlZy5oPgoKI2lmbmRlZiBsaW50CnN0YXRpYyBjb25zdCBjaGFyIHJjc2lk W10gPQogICAgICAgICIkSWQ6IGlmX2ZldC5jLHYgMS4xMCAyMDAwLzA3LzI2 IDA5OjI4OjUyIHdwYXVsIEV4cCAkIjsKI2VuZGlmCgovKgogKiBWYXJpb3Vz IHN1cHBvcnRlZCBkZXZpY2UgdmVuZG9ycy90eXBlcyBhbmQgdGhlaXIgbmFt ZXMuCiAqLwpzdHJ1Y3QgZmV0X3R5cGUgKmZldF9pbmZvX3RtcDsKc3RhdGlj IHN0cnVjdCBmZXRfdHlwZSBmZXRfZGV2c1tdID0gewogICAgICAgIHsgRkVU VkVORE9SSUQsIElEMCwgIjEwMC8xME0gRXRoZXJuZXQgUENJIEFkYXB0ZXIi IH0sCiAgICAgICAgeyBGRVRWRU5ET1JJRCwgSUQxLCAiMTAwLzEwTSBFdGhl cm5ldCBQQ0kgQWRhcHRlciIgfSwKICAgICAgICB7IEZFVFZFTkRPUklELCBJ RDIsICIxMDAwLzEwMC8xME0gRXRoZXJuZXQgUENJIEFkYXB0ZXIiIH0sCiAg ICAgICAgeyAwLCAwLCBOVUxMIH0KfTsKCi8qCiAqIFZhcmlvdXMgc3VwcG9y dGVkIFBIWSB2ZW5kb3JzL3R5cGVzIGFuZCB0aGVpciBuYW1lcy4gTm90ZSB0 aGF0CiAqIHRoaXMgZHJpdmVyIHdpbGwgd29yayB3aXRoIHByZXR0eSBtdWNo IGFueSBNSUktY29tcGxpYW50IFBIWSwKICogc28gZmFpbHVyZSB0byBwb3Np dGl2ZWx5IGlkZW50aWZ5IHRoZSBjaGlwIGlzIG5vdCBhIGZhdGFsIGVycm9y LgogKi8Kc3RhdGljIHN0cnVjdCBmZXRfdHlwZSBmZXRfcGh5c1tdID0gewog ICAgICAgIHsgUEhZSUQwLCBQSFlJRDAsICI8TVREOTgxPiJ9LAogICAgICAg IHsgU2VlcVBIWUlEMCwgU2VlcVBIWUlEMCwgIjxTRUVRIDgwMjI1PiIgfSwK ICAgICAgICB7IEFoZG9jUEhZSUQwLCBBaGRvY1BIWUlEMCwgIjxBSERPQyAx MDE+IiB9LAogICAgICAgIHsgTWFydmVsbFBIWUlEMCwgTWFydmVsbFBIWUlE MCwgIjxNQVJWRUxMIDg4RTEwMDA+In0sCiAgICAgICAgeyAwLCAwLCAiPE1J SS1jb21wbGlhbnQgcGh5c2ljYWwgaW50ZXJmYWNlPiIgfQp9OwoKc3RhdGlj IHVuc2lnbmVkIGxvbmcgZmV0X2NvdW50ID0gMDsKCnN0YXRpYyBjb25zdCBj aGFyICpmZXRfcHJvYmUgX19QKChwY2ljaV90LCBwY2lkaV90KSk7CnN0YXRp YyB2b2lkIGZldF9hdHRhY2ggX19QKChwY2ljaV90LCBpbnQpKTsKc3RhdGlj IGludCBmZXRfbmV3YnVmIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBzdHJ1 Y3QgZmV0X2NoYWluX29uZWZyYWcgKikpOwpzdGF0aWMgaW50IGZldF9lbmNh cCBfX1AoKHN0cnVjdCBmZXRfc29mdGMgKiwgc3RydWN0IGZldF9jaGFpbiAq LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICop KTsKc3RhdGljIHZvaWQgZmV0X3J4ZW9mIF9fUCgoc3RydWN0IGZldF9zb2Z0 YyAqKSk7CnN0YXRpYyB2b2lkIGZldF90eGVvZiBfX1AoKHN0cnVjdCBmZXRf c29mdGMgKikpOwpzdGF0aWMgdm9pZCBmZXRfdHhlb2MgX19QKChzdHJ1Y3Qg ZmV0X3NvZnRjICopKTsKc3RhdGljIHZvaWQgZmV0X2ludHIgX19QKCh2b2lk ICopKTsKc3RhdGljIHZvaWQgZmV0X3N0YXJ0IF9fUCgoc3RydWN0IGlmbmV0 ICopKTsKc3RhdGljIGludCBmZXRfaW9jdGwgX19QKChzdHJ1Y3QgaWZuZXQg KiwgdV9sb25nLCBjYWRkcl90KSk7CnN0YXRpYyB2b2lkIGZldF9pbml0IF9f UCgodm9pZCAqKSk7CnN0YXRpYyB2b2lkIGZldF9zdG9wIF9fUCgoc3RydWN0 IGZldF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF93YXRjaGRvZyBfX1Ao KHN0cnVjdCBpZm5ldCAqKSk7CnN0YXRpYyB2b2lkIGZldF9zaHV0ZG93biBf X1AoKGludCwgdm9pZCAqKSk7CnN0YXRpYyBpbnQgZmV0X2lmbWVkaWFfdXBk IF9fUCgoc3RydWN0IGlmbmV0ICopKTsKc3RhdGljIHZvaWQgZmV0X2lmbWVk aWFfc3RzIF9fUCgoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBpZm1lZGlhcmVx ICopKTsKc3RhdGljIHVfaW50MTZfdCBmZXRfcGh5X3JlYWRyZWcgX19QKChz dHJ1Y3QgZmV0X3NvZnRjICosIGludCkpOwpzdGF0aWMgdm9pZCBmZXRfcGh5 X3dyaXRlcmVnIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBpbnQsIGludCkp OwpzdGF0aWMgdm9pZCBmZXRfYXV0b25lZ194bWl0IF9fUCgoc3RydWN0IGZl dF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF9hdXRvbmVnX21paSBfX1Ao KHN0cnVjdCBmZXRfc29mdGMgKiwgaW50LCBpbnQpKTsKc3RhdGljIHZvaWQg ZmV0X3NldG1vZGVfbWlpIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBpbnQp KTsKc3RhdGljIHZvaWQgZmV0X2dldG1vZGVfbWlpIF9fUCgoc3RydWN0IGZl dF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF9zZXRjZmcgX19QKChzdHJ1 Y3QgZmV0X3NvZnRjICosIGludCkpOwpzdGF0aWMgdV9pbnQ4X3QgZmV0X2Nh bGNoYXNoIF9fUCgoY2FkZHJfdCkpOwpzdGF0aWMgdm9pZCBmZXRfc2V0bXVs dGkgX19QKChzdHJ1Y3QgZmV0X3NvZnRjICopKTsKc3RhdGljIHZvaWQgZmV0 X3Jlc2V0IF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqKSk7CnN0YXRpYyBpbnQg ZmV0X2xpc3RfcnhfaW5pdCBfX1AoKHN0cnVjdCBmZXRfc29mdGMgKikpOwpz dGF0aWMgaW50IGZldF9saXN0X3R4X2luaXQgX19QKChzdHJ1Y3QgZmV0X3Nv ZnRjICopKTsKc3RhdGljIGxvbmcgZmV0X3NlbmRfY21kX3RvX3BoeSBfX1Ao KHN0cnVjdCBmZXRfc29mdGMgKiwgaW50LCBpbnQpKTsKCiNkZWZpbmUgRkVU X1NFVEJJVChzYywgcmVnLCB4KSBDU1JfV1JJVEVfNChzYywgcmVnLCBDU1Jf UkVBRF80KHNjLCByZWcpIHwgeCkKI2RlZmluZSBGRVRfQ0xSQklUKHNjLCBy ZWcsIHgpIENTUl9XUklURV80KHNjLCByZWcsIENTUl9SRUFEXzQoc2MsIHJl ZykgJiB+eCkKCgpzdGF0aWMgbG9uZyBmZXRfc2VuZF9jbWRfdG9fcGh5KHNj LCBvcGNvZGUsIHJlZ2FkKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKaW50IG9w Y29kZTsKaW50IHJlZ2FkOwp7CiAgIGxvbmcgbWlpcjsKICAgaW50ICBpOwog ICBpbnQgbWFzaywgZGF0YTsKCiAgIC8qIGVuYWJsZSBNSUkgb3V0cHV0ICov CiAgIG1paXI9Q1NSX1JFQURfNChzYywgRkVUX01BTkFHRU1FTlQpOwogICBt aWlyJj0weGZmZmZmZmYwOwoKICAgbWlpcnw9RkVUX01BU0tfTUlJUl9NSUlf V1JJVEUrRkVUX01BU0tfTUlJUl9NSUlfTURPOwoKICAgLyogc2VuZCAzMiAx J3MgcHJlYW1ibGUgKi8KICAgZm9yIChpPTA7aTwzMjtpKyspCiAgIHsKICAg ICAgLyogbG93IE1EQzsgTURPIGlzIGFscmVhZHkgaGlnaCAobWlpcikgKi8K ICAgICAgbWlpciY9fkZFVF9NQVNLX01JSVJfTUlJX01EQzsKICAgICAgQ1NS X1dSSVRFXzQoc2MsIEZFVF9NQU5BR0VNRU5ULCBtaWlyKTsKCiAgICAgIC8q IGhpZ2ggTURDICovCiAgICAgIG1paXJ8PUZFVF9NQVNLX01JSVJfTUlJX01E QzsKICAgICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9NQU5BR0VNRU5ULCBtaWly KTsKICAgfQoKICAgLyogY2FsY3VsYXRlIFNUK09QK1BIWUFEK1JFR0FEK1RB ICovCiAgIGRhdGE9b3Bjb2RlfChzYy0+ZmV0X3BoeV9hZGRyPDw3KXwocmVn YWQ8PDIpOwoKICAgLyogc2VudCBvdXQgKi8KICAgbWFzaz0weDgwMDA7CiAg IHdoaWxlIChtYXNrKQogICB7CiAgICAgIC8qIGxvdyBNREMsIHByZXBhcmUg TURPICovCiAgICAgIG1paXImPX4oRkVUX01BU0tfTUlJUl9NSUlfTURDK0ZF VF9NQVNLX01JSVJfTUlJX01ETyk7CiAgICAgIGlmIChtYXNrICYgZGF0YSkK ICAgICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01JSV9NRE87CgogICAgICBD U1JfV1JJVEVfNChzYywgRkVUX01BTkFHRU1FTlQsIG1paXIpOwogICAgICAv KiBoaWdoIE1EQyAqLwogICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01JSV9N REM7CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlp cik7CiAgICAgIERFTEFZKDMwKTsKCiAgICAgIC8qIG5leHQgKi8KICAgICAg bWFzaz4+PTE7CiAgICAgIGlmIChtYXNrPT0weDIgJiYgb3Bjb2RlPT1GRVRf T1BfUkVBRCkKICAgICAgICBtaWlyJj1+RkVUX01BU0tfTUlJUl9NSUlfV1JJ VEU7CiAgIH0KICAgcmV0dXJuIG1paXI7Cn0KCgpzdGF0aWMgdV9pbnQxNl90 IGZldF9waHlfcmVhZHJlZyhzYywgcmVnKQpzdHJ1Y3QgZmV0X3NvZnRjICpz YzsKaW50IHJlZzsKewogICBsb25nIG1paXI7CiAgIGludCBtYXNrLCBkYXRh OwoKICAgaWYgKHNjLT5mZXRfaW5mby0+ZmV0X2RpZCA9PSBJRDEpCiAgICAg ZGF0YSA9IENTUl9SRUFEXzIoc2MsIEZFVF9QSFlCQVNFK3JlZyoyKTsKICAg ZWxzZQogICB7CiAgICAgIG1paXI9ZmV0X3NlbmRfY21kX3RvX3BoeShzYywg RkVUX09QX1JFQUQsIHJlZyk7CgogICAgICAvKiByZWFkIGRhdGEgKi8KICAg ICAgbWFzaz0weDgwMDA7CiAgICAgIGRhdGE9MDsKICAgICAgd2hpbGUgKG1h c2spCiAgICAgIHsKICAgICAgICAgLyogbG93IE1EQyAqLwogICAgICAgICBt aWlyJj1+RkVUX01BU0tfTUlJUl9NSUlfTURDOwogICAgICAgICBDU1JfV1JJ VEVfNChzYywgRkVUX01BTkFHRU1FTlQsIG1paXIpOwoKICAgICAgICAgLyog cmVhZCBNREkgKi8KICAgICAgICAgbWlpcj1DU1JfUkVBRF80KHNjLCBGRVRf TUFOQUdFTUVOVCk7CiAgICAgICAgIGlmIChtaWlyICYgRkVUX01BU0tfTUlJ Ul9NSUlfTURJKQogICAgICAgICAgIGRhdGF8PW1hc2s7CgogICAgICAgICAv KiBoaWdoIE1EQywgYW5kIHdhaXQgKi8KICAgICAgICAgbWlpcnw9RkVUX01B U0tfTUlJUl9NSUlfTURDOwogICAgICAgICBDU1JfV1JJVEVfNChzYywgRkVU X01BTkFHRU1FTlQsIG1paXIpOwogICAgICAgICBERUxBWSgzMCk7CgogICAg ICAgICAvKiBuZXh0ICovCiAgICAgICAgIG1hc2s+Pj0xOwogICAgICB9Cgog ICAgICAvKiBsb3cgTURDICovCiAgICAgIG1paXImPX5GRVRfTUFTS19NSUlS X01JSV9NREM7CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVO VCwgbWlpcik7CiAgIH0KCiAgIHJldHVybiAodV9pbnQxNl90KWRhdGE7Cn0K CgpzdGF0aWMgdm9pZCBmZXRfcGh5X3dyaXRlcmVnKHNjLCByZWcsIGRhdGEp CnN0cnVjdCBmZXRfc29mdGMgKnNjOwppbnQgcmVnOwppbnQgZGF0YTsKewog ICBsb25nIG1paXI7CiAgIGludCBtYXNrOwoKICAgaWYgKHNjLT5mZXRfaW5m by0+ZmV0X2RpZCA9PSBJRDEpCiAgICAgQ1NSX1dSSVRFXzIoc2MsIEZFVF9Q SFlCQVNFK3JlZyoyLCBkYXRhKTsKICAgZWxzZQogICB7CiAgICAgIG1paXI9 ZmV0X3NlbmRfY21kX3RvX3BoeShzYywgRkVUX09QX1dSSVRFLCByZWcpOwoK ICAgICAgLyogd3JpdGUgZGF0YSAqLwogICAgICBtYXNrPTB4ODAwMDsKICAg ICAgd2hpbGUgKG1hc2spCiAgICAgIHsKICAgICAgICAgLyogbG93IE1EQywg cHJlcGFyZSBNRE8gKi8KICAgICAgICAgbWlpciY9fihGRVRfTUFTS19NSUlS X01JSV9NREMrRkVUX01BU0tfTUlJUl9NSUlfTURPKTsKICAgICAgICAgaWYg KG1hc2smZGF0YSkKICAgICAgICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01J SV9NRE87CiAgICAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVO VCwgbWlpcik7CgogICAgICAgICAvKiBoaWdoIE1EQyAqLwogICAgICAgICBt aWlyfD1GRVRfTUFTS19NSUlSX01JSV9NREM7CiAgICAgICAgIENTUl9XUklU RV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlpcik7CgogICAgICAgICAvKiBu ZXh0ICovCiAgICAgICAgIG1hc2s+Pj0xOwogICAgICB9CgogICAgICAvKiBs b3cgTURDICovCiAgICAgIG1paXImPX5GRVRfTUFTS19NSUlSX01JSV9NREM7 CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlpcik7 CiAgIH0KCiAgIHJldHVybjsKfQoKCnN0YXRpYyB1X2ludDhfdCBmZXRfY2Fs Y2hhc2goYWRkcikKY2FkZHJfdCBhZGRyOwp7CiAgIHVfaW50MzJfdCBjcmMs IGNhcnJ5OwogICBpbnQgaSwgajsKICAgdV9pbnQ4X3QgYzsKCiAgIC8qIENv bXB1dGUgQ1JDIGZvciB0aGUgYWRkcmVzcyB2YWx1ZS4gKi8KICAgY3JjID0g MHhGRkZGRkZGRjsgLyogaW5pdGlhbCB2YWx1ZSAqLwoKICAgZm9yIChpID0g MDsgaSA8IDY7IGkrKykKICAgewogICAgICBjID0gKihhZGRyICsgaSk7CiAg ICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspCiAgICAgIHsKICAgICAgICAg Y2FycnkgPSAoKGNyYyAmIDB4ODAwMDAwMDApID8gMSA6IDApIF4gKGMgJiAw eDAxKTsKICAgICAgICAgY3JjIDw8PSAxOwogICAgICAgICBjID4+PSAxOwog ICAgICAgICBpZiAoY2FycnkpCiAgICAgICAgICAgY3JjID0gKGNyYyBeIDB4 MDRjMTFkYjYpIHwgY2Fycnk7CiAgICAgIH0KICAgfQoKICAgLyoKICAgICog cmV0dXJuIHRoZSBmaWx0ZXIgYml0IHBvc2l0aW9uCiAgICAqIE5vdGU6IEkg YXJyaXZlZCBhdCB0aGUgZm9sbG93aW5nIG5vbnNlbnNlCiAgICAqIHRocm91 Z2ggZXhwZXJpbWVudGF0aW9uLiBJdCdzIG5vdCB0aGUgdXN1YWwgd2F5IHRv CiAgICAqIGdlbmVyYXRlIHRoZSBiaXQgcG9zaXRpb24gYnV0IGl0J3MgdGhl IG9ubHkgdGhpbmcKICAgICogSSBjb3VsZCBjb21lIHVwIHdpdGggdGhhdCB3 b3Jrcy4KICAgICovCiAgIHJldHVybih+KGNyYyA+PiAyNikgJiAweDAwMDAw MDNGKTsKfQoKCi8qCiAqIFByb2dyYW0gdGhlIDY0LWJpdCBtdWx0aWNhc3Qg aGFzaCBmaWx0ZXIuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc2V0bXVsdGkoc2Mp CnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBpZm5ldCAqaWZw OwogICBpbnQgaCA9IDA7CiAgIHVfaW50MzJfdCBoYXNoZXNbMl0gPSB7IDAs IDAgfTsKICAgc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOwogICB1X2ludDMy X3QgcnhmaWx0OwogICBpbnQgbWNudCA9IDA7CgogICBpZnAgPSAmc2MtPmFy cGNvbS5hY19pZjsKCiAgIHJ4ZmlsdCA9IENTUl9SRUFEXzQoc2MsIEZFVF9U Q1JSQ1IpOwoKICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfQUxMTVVMVEkg fHwgaWZwLT5pZl9mbGFncyAmIElGRl9QUk9NSVNDKQogICB7CiAgICAgIHJ4 ZmlsdCB8PSBGRVRfQU07CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfVENS UkNSLCByeGZpbHQpOwogICAgICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjAs IDB4RkZGRkZGRkYpOwogICAgICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjEs IDB4RkZGRkZGRkYpOwogICAgICByZXR1cm47CiAgIH0KCiAgIC8qIGZpcnN0 LCB6b3QgYWxsIHRoZSBleGlzdGluZyBoYXNoIGJpdHMgKi8KICAgQ1NSX1dS SVRFXzQoc2MsIEZFVF9NQVIwLCAwKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZF VF9NQVIxLCAwKTsKCiAgIC8qIG5vdyBwcm9ncmFtIG5ldyBvbmVzICovCiAg IGZvciAoaWZtYSA9IGlmcC0+aWZfbXVsdGlhZGRycy5saF9maXJzdDsgaWZt YSAhPSBOVUxMOwogICAgICAgIGlmbWEgPSBpZm1hLT5pZm1hX2xpbmsubGVf bmV4dCkKICAgewogICAgICBpZiAoaWZtYS0+aWZtYV9hZGRyLT5zYV9mYW1p bHkgIT0gQUZfTElOSykKICAgICAgICBjb250aW51ZTsKICAgICAgaCA9IGZl dF9jYWxjaGFzaChMTEFERFIoKHN0cnVjdCBzb2NrYWRkcl9kbCAqKWlmbWEt PmlmbWFfYWRkcikpOwogICAgICBpZiAoaCA8IDMyKQogICAgICAgIGhhc2hl c1swXSB8PSAoMSA8PCBoKTsKICAgICAgZWxzZQogICAgICAgIGhhc2hlc1sx XSB8PSAoMSA8PCAoaCAtIDMyKSk7CiAgICAgIG1jbnQrKzsKICAgfQoKICAg aWYgKG1jbnQpCiAgICAgcnhmaWx0IHw9IEZFVF9BTTsKICAgZWxzZQogICAg IHJ4ZmlsdCAmPSB+RkVUX0FNOwoKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9N QVIwLCBoYXNoZXNbMF0pOwogICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjEs IGhhc2hlc1sxXSk7CiAgIENTUl9XUklURV80KHNjLCBGRVRfVENSUkNSLCBy eGZpbHQpOwoKICAgcmV0dXJuOwp9CgoKLyoKICogSW5pdGlhdGUgYW4gYXV0 b25lZ290aWF0aW9uIHNlc3Npb24uCiAqLwpzdGF0aWMgdm9pZCBmZXRfYXV0 b25lZ194bWl0KHNjKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKewogICB1X2lu dDE2X3QgcGh5X3N0czsKCiAgIGZldF9waHlfd3JpdGVyZWcoc2MsIFBIWV9C TUNSLCBQSFlfQk1DUl9SRVNFVCk7CiAgIERFTEFZKDUwMCk7CiAgIHdoaWxl KGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpICYgUEhZX0JNQ1JfUkVT RVQpOwoKICAgcGh5X3N0cyA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JN Q1IpOwogICBwaHlfc3RzIHw9IFBIWV9CTUNSX0FVVE9ORUdFTkJMfFBIWV9C TUNSX0FVVE9ORUdSU1RSOwogICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlf Qk1DUiwgcGh5X3N0cyk7CgogICByZXR1cm47Cn0KCgovKgogKiBJbnZva2Ug YXV0b25lZ290aWF0aW9uIG9uIGEgUEhZLgogKi8Kc3RhdGljIHZvaWQgZmV0 X2F1dG9uZWdfbWlpKHNjLCBmbGFnLCB2ZXJib3NlKQpzdHJ1Y3QgZmV0X3Nv ZnRjICpzYzsKaW50IGZsYWc7CmludCB2ZXJib3NlOwp7CiAgIHVfaW50MTZf dCBwaHlfc3RzID0gMCwgbWVkaWEsIGFkdmVydCwgYWJpbGl0eTsKICAgdV9p bnQxNl90IGFiaWxpdHkyID0gMDsKICAgc3RydWN0IGlmbmV0ICppZnA7CiAg IHN0cnVjdCBpZm1lZGlhICppZm07CgogICBpZm0gPSAmc2MtPmlmbWVkaWE7 CiAgIGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAgaWZtLT5pZm1fbWVk aWEgPSBJRk1fRVRIRVIgfCBJRk1fQVVUTzsKCiNpZm5kZWYgRk9SQ0VfQVVU T05FR19URk9VUgogICAvKgogICAgKiBGaXJzdCwgc2VlIGlmIGF1dG9uZWcg aXMgc3VwcG9ydGVkLiBJZiBub3QsIHRoZXJlJ3MKICAgICogbm8gcG9pbnQg aW4gY29udGludWluZy4KICAgICovCiAgIHBoeV9zdHMgPSBmZXRfcGh5X3Jl YWRyZWcoc2MsIFBIWV9CTVNSKTsKICAgaWYgKCEocGh5X3N0cyAmIFBIWV9C TVNSX0NBTkFVVE9ORUcpKQogICB7CiAgICAgIGlmICh2ZXJib3NlKQogICAg ICAgIHByaW50ZigiZmV0JWQ6IGF1dG9uZWdvdGlhdGlvbiBub3Qgc3VwcG9y dGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtLT5pZm1fbWVkaWEg PSBJRk1fRVRIRVJ8SUZNXzEwX1R8SUZNX0hEWDsKICAgICAgcmV0dXJuOwog ICB9CiNlbmRpZgoKICAgc3dpdGNoIChmbGFnKQogICB7CiAgICAgIGNhc2Ug RkVUX0ZMQUdfRk9SQ0VERUxBWToKICAgICAgICAvKgogICAgICAgICAqIFhY WCBOZXZlciB1c2UgdGhpcyBvcHRpb24gYW55d2hlcmUgYnV0IGluIHRoZSBw cm9iZQogICAgICAgICAqIHJvdXRpbmU6IG1ha2luZyB0aGUga2VybmVsIHN0 b3AgZGVhZCBpbiBpdHMgdHJhY2tzCiAgICAgICAgICogZm9yIHRocmVlIHdo b2xlIHNlY29uZHMgYWZ0ZXIgd2UndmUgZ29uZSBtdWx0aS11c2VyCiAgICAg ICAgICogaXMgcmVhbGx5IGJhZCBtYW5uZXJzLgogICAgICAgICAqLwogICAg ICAgIGZldF9hdXRvbmVnX3htaXQoc2MpOwogICAgICAgIERFTEFZKDUwMDAw MDApOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEZFVF9GTEFHX1NDSEVE REVMQVk6CiAgICAgICAgLyoKICAgICAgICAgKiBXYWl0IGZvciB0aGUgdHJh bnNtaXR0ZXIgdG8gZ28gaWRsZSBiZWZvcmUgc3RhcnRpbmcKICAgICAgICAg KiBhbiBhdXRvbmVnIHNlc3Npb24sIG90aGVyd2lzZSBmZXRfc3RhcnQoKSBt YXkgY2xvYmJlcgogICAgICAgICAqIG91ciB0aW1lb3V0LCBhbmQgd2UgZG9u J3Qgd2FudCB0byBhbGxvdyB0cmFuc21pc3Npb24KICAgICAgICAgKiBkdXJp bmcgYW4gYXV0b25lZyBzZXNzaW9uIHNpbmNlIHRoYXQgY2FuIHNjcmV3IGl0 IHVwLgogICAgICAgICAqLwogICAgICAgIGlmIChzYy0+ZmV0X2NkYXRhLmZl dF90eF9oZWFkICE9IE5VTEwpCiAgICAgICAgewogICAgICAgICAgIHNjLT5m ZXRfd2FudF9hdXRvID0gMTsKICAgICAgICAgICByZXR1cm47CiAgICAgICAg fQogICAgICAgIGZldF9hdXRvbmVnX3htaXQoc2MpOwogICAgICAgIGlmcC0+ aWZfdGltZXIgPSA1OwogICAgICAgIHNjLT5mZXRfYXV0b25lZyA9IDE7CiAg ICAgICAgc2MtPmZldF93YW50X2F1dG8gPSAwOwogICAgICAgIHJldHVybjsK ICAgICAgY2FzZSBGRVRfRkxBR19ERUxBWVRJTUVPOgogICAgICAgIGlmcC0+ aWZfdGltZXIgPSAwOwogICAgICAgIHNjLT5mZXRfYXV0b25lZyA9IDA7CiAg ICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcHJpbnRmKCJm ZXQlZDogaW52YWxpZCBhdXRvbmVnIGZsYWc6ICVkXG4iLCBzYy0+ZmV0X3Vu aXQsIGZsYWcpOwogICAgICAgIHJldHVybjsKICAgfQoKICAgaWYgKGZldF9w aHlfcmVhZHJlZyhzYywgUEhZX0JNU1IpICYgUEhZX0JNU1JfQVVUT05FR0NP TVApCiAgIHsKICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgcHJpbnRmKCJm ZXQlZDogYXV0b25lZyBjb21wbGV0ZSwgIiwgc2MtPmZldF91bml0KTsKCiAg ICAgIHBoeV9zdHMgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTVNSKTsK ICAgfQogICBlbHNlCiAgIHsKICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg cHJpbnRmKCJmZXQlZDogYXV0b25lZyBub3QgY29tcGxldGUsICIsIHNjLT5m ZXRfdW5pdCk7CiAgIH0KCiAgIG1lZGlhID0gZmV0X3BoeV9yZWFkcmVnKHNj LCBQSFlfQk1DUik7CgogICAvKiBMaW5rIGlzIGdvb2QuIFJlcG9ydCBtb2Rl cyBhbmQgc2V0IGR1cGxleCBtb2RlLiAqLwogICBpZiAoZmV0X3BoeV9yZWFk cmVnKHNjLCBQSFlfQk1TUikgJiBQSFlfQk1TUl9MSU5LU1RBVCkKICAgewog ICAgICBpZiAodmVyYm9zZSkKICAgICAgICBwcmludGYoImZldCVkOiBsaW5r IHN0YXR1cyBnb29kLiAiLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgYWR2ZXJ0 ID0gZmV0X3BoeV9yZWFkcmVnKHNjLCBQSFlfQU5BUik7CiAgICAgIGFiaWxp dHkgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9MUEFSKTsKCiAgICAgIGlm IChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlkID09IE1hcnZlbGxQSFlJRDApCiAg ICAgIHsKICAgICAgICAgYWJpbGl0eTIgPSBmZXRfcGh5X3JlYWRyZWcoc2Ms IFBIWV8xMDAwU1IpOwoKICAgICAgICAgaWYgKGFiaWxpdHkyICYgUEhZXzEw MDBTUl8xMDAwQlRYRlVMTCkKICAgICAgICAgewogICAgICAgICAgICBhZHZl cnQgPSAwOwogICAgICAgICAgICBhYmlsaXR5ID0gMDsKLyogdGhpcyB2ZXJz aW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwKICAgICAgICAgICAgaWZtLT5p Zm1fbWVkaWEgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZEWDsKKi8K CSAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElG TV9GRFg7CiAgICAgICAgICAgIG1lZGlhICY9IH5QSFlfQk1DUl9TUEVFRFNF TDsKICAgICAgICAgICAgbWVkaWEgfD0gUEhZX0JNQ1JfMTAwMDsKICAgICAg ICAgICAgbWVkaWEgfD0gUEhZX0JNQ1JfRFVQTEVYOwogICAgICAgICAgICBw cmludGYoIihmdWxsLWR1cGxleCwgMTAwME1icHMpXG4iKTsKICAgICAgICAg fQogICAgICAgICBlbHNlIGlmIChhYmlsaXR5MiAmIFBIWV8xMDAwU1JfMTAw MEJUWEhBTEYpCiAgICAgICAgIHsKICAgICAgICAgICAgYWR2ZXJ0ID0gMDsK ICAgICAgICAgICAgYWJpbGl0eSA9IDA7Ci8qIHRoaXMgdmVyc2lvbiBkaWQg bm90IHN1cHBvcnQgMTAwME0sCiAgICAgICAgICAgIGlmbS0+aWZtX21lZGlh ID0gSUZNX0VUSEVSfElGTV8xMDAwX1RYOwoqLwoJICAgIGlmbS0+aWZtX21l ZGlhID0gSUZNX0VUSEVSfElGTV8xMDBfVFg7CQogICAgICAgICAgICBtZWRp YSAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgICAgICAgICAgIG1lZGlhICY9 IH5QSFlfQk1DUl9EVVBMRVg7CiAgICAgICAgICAgIG1lZGlhIHw9IFBIWV9C TUNSXzEwMDA7CiAgICAgICAgICAgIHByaW50ZigiKGhhbGYtZHVwbGV4LCAx MDAwTWJwcylcbiIpOwogICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChh ZHZlcnQgJiBQSFlfQU5BUl8xMDBCVDQgJiYgYWJpbGl0eSAmIFBIWV9BTkFS XzEwMEJUNCkKICAgICAgewogICAgICAgICBpZm0tPmlmbV9tZWRpYSA9IElG TV9FVEhFUnxJRk1fMTAwX1Q0OwogICAgICAgICBtZWRpYSB8PSBQSFlfQk1D Ul9TUEVFRFNFTDsKICAgICAgICAgbWVkaWEgJj0gflBIWV9CTUNSX0RVUExF WDsKICAgICAgICAgcHJpbnRmKCIoMTAwYmFzZVQ0KVxuIik7CiAgICAgIH0K ICAgICAgZWxzZSBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlRYRlVMTCAm JiBhYmlsaXR5ICYgUEhZX0FOQVJfMTAwQlRYRlVMTCkKICAgICAgewogICAg ICAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElG TV9GRFg7CiAgICAgICAgIG1lZGlhIHw9IFBIWV9CTUNSX1NQRUVEU0VMOwog ICAgICAgICBtZWRpYSB8PSBQSFlfQk1DUl9EVVBMRVg7CiAgICAgICAgIHBy aW50ZigiKGZ1bGwtZHVwbGV4LCAxMDBNYnBzKVxuIik7CiAgICAgIH0KICAg ICAgZWxzZSBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlRYSEFMRiAmJiBh YmlsaXR5ICYgUEhZX0FOQVJfMTAwQlRYSEFMRikKICAgICAgewogICAgICAg ICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9I RFg7CiAgICAgICAgIG1lZGlhIHw9IFBIWV9CTUNSX1NQRUVEU0VMOwogICAg ICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfRFVQTEVYOwogICAgICAgICBwcmlu dGYoIihoYWxmLWR1cGxleCwgMTAwTWJwcylcbiIpOwogICAgICB9CiAgICAg IGVsc2UgaWYgKGFkdmVydCAmIFBIWV9BTkFSXzEwQlRGVUxMICYmIGFiaWxp dHkgJiBQSFlfQU5BUl8xMEJURlVMTCkKICAgICAgewogICAgICAgICBpZm0t PmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRYOwogICAg ICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgICAgICAgIG1l ZGlhIHw9IFBIWV9CTUNSX0RVUExFWDsKICAgICAgICAgcHJpbnRmKCIoZnVs bC1kdXBsZXgsIDEwTWJwcylcbiIpOwogICAgICB9CiAgICAgIGVsc2UKICAg ICAgewogICAgICAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1f MTBfVHxJRk1fSERYOwogICAgICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfU1BF RURTRUw7CiAgICAgICAgIG1lZGlhICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAg ICAgICAgIHByaW50ZigiKGhhbGYtZHVwbGV4LCAxME1icHMpXG4iKTsKICAg ICAgfQoKICAgICAgbWVkaWEgJj0gflBIWV9CTUNSX0FVVE9ORUdFTkJMOwoK ICAgICAgLyogU2V0IEFTSUMncyBkdXBsZXggbW9kZSB0byBtYXRjaCB0aGUg UEhZLiAqLwogICAgICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlfQk1DUiwg bWVkaWEpOwogICAgICBmZXRfc2V0Y2ZnKHNjLCBtZWRpYSk7CiAgIH0KICAg ZWxzZQogICB7CiAgICAgIGlmICh2ZXJib3NlKQogICAgICAgIHByaW50Zigi ZmV0JWQ6IG5vIGNhcnJpZXJcbiIsIHNjLT5mZXRfdW5pdCk7CiAgIH0KCiAg IGZldF9pbml0KHNjKTsKCiAgIGlmIChzYy0+ZmV0X3R4X3BlbmQpCiAgIHsK ICAgICAgc2MtPmZldF9hdXRvbmVnID0gMDsKICAgICAgc2MtPmZldF90eF9w ZW5kID0gMDsKICAgICAgZmV0X3N0YXJ0KGlmcCk7CiAgIH0KCiAgIHJldHVy bjsKfQoKCi8qCiAqIFRvIGdldCBQSFkgYWJpbGl0eS4KICovCnN0YXRpYyB2 b2lkIGZldF9nZXRtb2RlX21paShzYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7 CnsKICAgdV9pbnQxNl90IGJtc3I7CiAgIHN0cnVjdCBpZm5ldCAqaWZwOwoK ICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7CgogICBibXNyID0gZmV0X3Bo eV9yZWFkcmVnKHNjLCBQSFlfQk1TUik7CiAgIGlmIChib290dmVyYm9zZSkK ICAgICBwcmludGYoImZldCVkOiBQSFkgc3RhdHVzIHdvcmQ6ICV4XG4iLCBz Yy0+ZmV0X3VuaXQsIGJtc3IpOwoKICAgLyogZmFsbGJhY2sgKi8KICAgc2Mt PmlmbWVkaWEuaWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMF9UfElGTV9I RFg7CgogICBpZiAoYm1zciAmIFBIWV9CTVNSXzEwQlRIQUxGKQogICB7CiAg ICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICBwcmludGYoImZldCVkOiAx ME1icHMgaGFsZi1kdXBsZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRf dW5pdCk7CgogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsIElGTV9F VEhFUnxJRk1fMTBfVHxJRk1fSERYLCAwLCBOVUxMKTsKICAgICAgaWZtZWRp YV9hZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEwX1QsIDAsIE5V TEwpOwogICB9CgogICBpZiAoYm1zciAmIFBIWV9CTVNSXzEwQlRGVUxMKQog ICB7CiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICBwcmludGYoImZl dCVkOiAxME1icHMgZnVsbC1kdXBsZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNj LT5mZXRfdW5pdCk7CgogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEs IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRYLCAwLCBOVUxMKTsKICAgICAg c2MtPmlmbWVkaWEuaWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMF9UfElG TV9GRFg7CiAgIH0KCiAgIGlmIChibXNyICYgUEhZX0JNU1JfMTAwQlRYSEFM RikKICAgewogICAgICBpZiAoYm9vdHZlcmJvc2UpCiAgICAgICAgcHJpbnRm KCJmZXQlZDogMTAwTWJwcyBoYWxmLWR1cGxleCBtb2RlIHN1cHBvcnRlZFxu Iiwgc2MtPmZldF91bml0KTsKCiAgICAgIGlmcC0+aWZfYmF1ZHJhdGUgPSAx MDAwMDAwMDA7CiAgICAgIGlmbWVkaWFfYWRkKCZzYy0+aWZtZWRpYSwgSUZN X0VUSEVSfElGTV8xMDBfVFgsIDAsIE5VTEwpOwogICAgICBpZm1lZGlhX2Fk ZCgmc2MtPmlmbWVkaWEsIElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9IRFgs IDAsIE5VTEwpOwogICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1f RVRIRVJ8SUZNXzEwMF9UWHxJRk1fSERYOwogICB9CgogICBpZiAoYm1zciAm IFBIWV9CTVNSXzEwMEJUWEZVTEwpCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJi b3NlKQogICAgICAgIHByaW50ZigiZmV0JWQ6IDEwME1icHMgZnVsbC1kdXBs ZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRfdW5pdCk7CgogICAgICBp ZnAtPmlmX2JhdWRyYXRlID0gMTAwMDAwMDAwOwogICAgICBpZm1lZGlhX2Fk ZCgmc2MtPmlmbWVkaWEsIElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9GRFgs IDAsIE5VTEwpOwogICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1f RVRIRVJ8SUZNXzEwMF9UWHxJRk1fRkRYOwogICB9CgogICAvKiBTb21lIGFs c28gc3VwcG9ydCAxMDBCYXNlVDQuICovCiAgIGlmIChibXNyICYgUEhZX0JN U1JfMTAwQlQ0KQogICB7CiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAg ICBwcmludGYoImZldCVkOiAxMDBiYXNlVDQgbW9kZSBzdXBwb3J0ZWRcbiIs IHNjLT5mZXRfdW5pdCk7CgogICAgICBpZnAtPmlmX2JhdWRyYXRlID0gMTAw MDAwMDAwOwogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsIElGTV9F VEhFUnxJRk1fMTAwX1Q0LCAwLCBOVUxMKTsKICAgICAgc2MtPmlmbWVkaWEu aWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMDBfVDQ7CiNpZmRlZiBGT1JD RV9BVVRPTkVHX1RGT1VSCiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAg ICBwcmludGYoImZldCVkOiBmb3JjaW5nIG9uIGF1dG9uZWcgc3VwcG9ydCBm b3IgQlQ0XG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtZWRpYV9hZGQo JnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNX0FVVE8sIDAgTlVMTCk6CiAg ICAgIHNjLT5pZm1lZGlhLmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fQVVU TzsKI2VuZGlmCiAgIH0KCi8qIHRoaXMgdmVyc2lvbiBkaWQgbm90IHN1cHBv cnQgMTAwME0sCiAgIGlmIChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlkID09IE1h cnZlbGxQSFlJRDApCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJib3NlKQogICAg ICAgIHByaW50ZigiZmV0JWQ6IDEwMDBNYnBzIGhhbGYtZHVwbGV4IG1vZGUg c3VwcG9ydGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZwLT5pZl9i YXVkcmF0ZSA9IDEwMDAwMDAwMDA7CiAgICAgIGlmbWVkaWFfYWRkKCZzYy0+ aWZtZWRpYSwgSUZNX0VUSEVSfElGTV8xMDAwX1RYLCAwLCBOVUxMKTsKICAg ICAgaWZtZWRpYV9hZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEw MDBfVFh8SUZNX0hEWCwgMCwgTlVMTCk7CgogICAgICBpZiAoYm9vdHZlcmJv c2UpCiAgICAgICAgcHJpbnRmKCJmZXQlZDogMTAwME1icHMgZnVsbC1kdXBs ZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRfdW5pdCk7CgogICAgICBp ZnAtPmlmX2JhdWRyYXRlID0gMTAwMDAwMDAwMDsKICAgICAgaWZtZWRpYV9h ZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZE WCwgMCwgTlVMTCk7CiAgICAgIHNjLT5pZm1lZGlhLmlmbV9tZWRpYSA9IElG TV9FVEhFUnxJRk1fMTAwMF9UWHxJRk1fRkRYOwogICB9CiovCgogICBpZiAo Ym1zciAmIFBIWV9CTVNSX0NBTkFVVE9ORUcpCiAgIHsKICAgICAgaWYgKGJv b3R2ZXJib3NlKQogICAgICAgIHByaW50ZigiZmV0JWQ6IGF1dG9uZWcgc3Vw cG9ydGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtZWRpYV9hZGQo JnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNX0FVVE8sIDAsIE5VTEwpOwog ICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1fRVRIRVJ8SUZNX0FV VE87CiAgIH0KCiAgIHJldHVybjsKfQoKCi8qCiAqIFNldCBzcGVlZCBhbmQg ZHVwbGV4IG1vZGUuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc2V0bW9kZV9taWko c2MsIG1lZGlhKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKaW50IG1lZGlhOwp7 CiAgIHVfaW50MTZfdCBibWNyOwogICBzdHJ1Y3QgaWZuZXQgKmlmcDsKCiAg IGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAgLyoKICAgICogSWYgYW4g YXV0b25lZyBzZXNzaW9uIGlzIGluIHByb2dyZXNzLCBzdG9wIGl0LgogICAg Ki8KICAgaWYgKHNjLT5mZXRfYXV0b25lZykKICAgewogICAgICBwcmludGYo ImZldCVkOiBjYW5jZWxpbmcgYXV0b25lZyBzZXNzaW9uXG4iLCBzYy0+ZmV0 X3VuaXQpOwogICAgICBpZnAtPmlmX3RpbWVyID0gc2MtPmZldF9hdXRvbmVn ID0gc2MtPmZldF93YW50X2F1dG8gPSAwOwogICAgICBibWNyID0gZmV0X3Bo eV9yZWFkcmVnKHNjLCBQSFlfQk1DUik7CiAgICAgIGJtY3IgJj0gflBIWV9C TUNSX0FVVE9ORUdFTkJMOwogICAgICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQ SFlfQk1DUiwgYm1jcik7CiAgIH0KCiAgIHByaW50ZigiZmV0JWQ6IHNlbGVj dGluZyBNSUksICIsIHNjLT5mZXRfdW5pdCk7CgogICBibWNyID0gZmV0X3Bo eV9yZWFkcmVnKHNjLCBQSFlfQk1DUik7CgogICBibWNyICY9IH4oUEhZX0JN Q1JfQVVUT05FR0VOQkx8UEhZX0JNQ1JfU1BFRURTRUx8UEhZX0JNQ1JfMTAw MHwKICAgICAgICAgICAgIFBIWV9CTUNSX0RVUExFWHxQSFlfQk1DUl9MT09Q QkspOwoKLyogdGhpcyB2ZXJzaW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwK ICAgaWYgKElGTV9TVUJUWVBFKG1lZGlhKSA9PSBJRk1fMTAwMF9UWCkKICAg ewogICAgICBwcmludGYoIjEwMDBNYnBzL1Q0LCBoYWxmLWR1cGxleFxuIik7 CiAgICAgIGJtY3IgJj0gflBIWV9CTUNSX1NQRUVEU0VMOwogICAgICBibWNy ICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAgICAgIGJtY3IgfD0gUEhZX0JNQ1Jf MTAwMDsKICAgfQoqLwoKICAgaWYgKElGTV9TVUJUWVBFKG1lZGlhKSA9PSBJ Rk1fMTAwX1Q0KQogICB7CiAgICAgIHByaW50ZigiMTAwTWJwcy9UNCwgaGFs Zi1kdXBsZXhcbiIpOwogICAgICBibWNyIHw9IFBIWV9CTUNSX1NQRUVEU0VM OwogICAgICBibWNyICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAgIH0KCiAgIGlm IChJRk1fU1VCVFlQRShtZWRpYSkgPT0gSUZNXzEwMF9UWCkKICAgewogICAg ICBwcmludGYoIjEwME1icHMsICIpOwogICAgICBibWNyIHw9IFBIWV9CTUNS X1NQRUVEU0VMOwogICB9CgogICBpZiAoSUZNX1NVQlRZUEUobWVkaWEpID09 IElGTV8xMF9UKQogICB7CiAgICAgIHByaW50ZigiMTBNYnBzLCAiKTsKICAg ICAgYm1jciAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgIH0KCiAgIGlmICgo bWVkaWEgJiBJRk1fR01BU0spID09IElGTV9GRFgpCiAgIHsKICAgICAgcHJp bnRmKCJmdWxsIGR1cGxleFxuIik7CiAgICAgIGJtY3IgfD0gUEhZX0JNQ1Jf RFVQTEVYOwogICB9CiAgIGVsc2UKICAgewogICAgICBwcmludGYoImhhbGYg ZHVwbGV4XG4iKTsKICAgICAgYm1jciAmPSB+UEhZX0JNQ1JfRFVQTEVYOwog ICB9CgogICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlfQk1DUiwgYm1jcik7 CiAgIGZldF9zZXRjZmcoc2MsIGJtY3IpOwoKICAgcmV0dXJuOwp9CgoKLyoK ICogVGhlIG1hbnVhbCBzdGF0ZXMgdGhhdCBpbiBvcmRlciB0byBmaWRkbGUg d2l0aCB0aGUKICogJ2Z1bGwtZHVwbGV4JyBhbmQgJzEwME1icHMnIGJpdHMg aW4gdGhlIG5ldGNvbmZpZyByZWdpc3Rlciwgd2UKICogZmlyc3QgaGF2ZSB0 byBwdXQgdGhlIHRyYW5zbWl0IGFuZC9vciByZWNlaXZlIGxvZ2ljIGluIHRo ZSBpZGxlIHN0YXRlLgogKi8Kc3RhdGljIHZvaWQgZmV0X3NldGNmZyhzYywg Ym1jcikKc3RydWN0IGZldF9zb2Z0YyAqc2M7CmludCBibWNyOwp7CiAgIGlu dCBpLCByZXN0YXJ0ID0gMDsKCiAgIGlmIChDU1JfUkVBRF80KHNjLCBGRVRf VENSUkNSKSAmIChGRVRfVEV8RkVUX1JFKSkKICAgewogICAgICByZXN0YXJ0 ID0gMTsKICAgICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJDUiwgKEZFVF9U RXxGRVRfUkUpKTsKCiAgICAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVElNRU9V VDsgaSsrKQogICAgICB7CiAgICAgICAgIERFTEFZKDEwKTsKICAgICAgICAg aWYgKCEoQ1NSX1JFQURfNChzYywgRkVUX1RDUlJDUikmKEZFVF9UWFJVTnxG RVRfUlhSVU4pKSkKICAgICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAg aWYgKGkgPT0gRkVUX1RJTUVPVVQpCiAgICAgICAgcHJpbnRmKCJmZXQlZDog ZmFpbGVkIHRvIGZvcmNlIHR4IGFuZCByeCB0byBpZGxlIHN0YXRlXG4iLAog ICAgICAgICAgICAgICAgc2MtPmZldF91bml0KTsKICAgfQoKICAgRkVUX0NM UkJJVChzYywgRkVUX1RDUlJDUiwgRkVUX1BTMTAwMCk7CiAgIEZFVF9DTFJC SVQoc2MsIEZFVF9UQ1JSQ1IsIEZFVF9QUzEwKTsKICAgaWYgKGJtY3IgJiBQ SFlfQk1DUl8xMDAwKQogICAgIEZFVF9TRVRCSVQoc2MsIEZFVF9UQ1JSQ1Is IEZFVF9QUzEwMDApOwogICBlbHNlIGlmICghKGJtY3IgJiBQSFlfQk1DUl9T UEVFRFNFTCkpCiAgICAgRkVUX1NFVEJJVChzYywgRkVUX1RDUlJDUiwgRkVU X1BTMTApOwoKICAgaWYgKGJtY3IgJiBQSFlfQk1DUl9EVVBMRVgpCiAgICAg RkVUX1NFVEJJVChzYywgRkVUX1RDUlJDUiwgRkVUX0ZEKTsKICAgZWxzZQog ICAgIEZFVF9DTFJCSVQoc2MsIEZFVF9UQ1JSQ1IsIEZFVF9GRCk7CgogICBp ZiAocmVzdGFydCkKICAgICBGRVRfU0VUQklUKHNjLCBGRVRfVENSUkNSLCBG RVRfVEV8RkVUX1JFKTsKCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2b2lkIGZl dF9yZXNldChzYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnsKICAgcmVnaXN0 ZXIgaW50IGk7CgogICBGRVRfU0VUQklUKHNjLCBGRVRfQkNSLCBGRVRfU1dS KTsKCiAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVElNRU9VVDsgaSsrKQogICB7 CiAgICAgIERFTEFZKDEwKTsKICAgICAgaWYgKCEoQ1NSX1JFQURfNChzYywg RkVUX0JDUikgJiBGRVRfU1dSKSkKICAgICAgICBicmVhazsKICAgfQogICBp ZiAoaSA9PSBGRVRfVElNRU9VVCkKICAgICBwcmludGYoIm0weCVkOiByZXNl dCBuZXZlciBjb21wbGV0ZWQhXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgLyog V2FpdCBhIGxpdHRsZSB3aGlsZSBmb3IgdGhlIGNoaXAgdG8gZ2V0IGl0cyBi cmFpbnMgaW4gb3JkZXIuICovCiAgIERFTEFZKDEwMDApOwoKICAgcmV0dXJu Owp9CgoKLyoKICogUHJvYmUgZm9yIGEgc3BlY2lmaWMgY2hpcC4gQ2hlY2sg dGhlIFBDSSB2ZW5kb3IgYW5kIGRldmljZQogKiBJRHMgYWdhaW5zdCBvdXIg bGlzdCBhbmQgcmV0dXJuIGEgZGV2aWNlIG5hbWUgaWYgd2UgZmluZCBhIG1h dGNoLgogKi8Kc3RhdGljIGNvbnN0IGNoYXIgKmZldF9wcm9iZShjb25maWdf aWQsIGRldmljZV9pZCkKcGNpY2lfdCBjb25maWdfaWQ7CnBjaWRpX3QgZGV2 aWNlX2lkOwp7CiAgIHN0cnVjdCBmZXRfdHlwZSAqdDsKCiAgIHQgPSBmZXRf ZGV2czsKCiAgIHdoaWxlKHQtPmZldF9uYW1lICE9IE5VTEwpCiAgIHsKICAg ICAgaWYgKChkZXZpY2VfaWQgJiAweEZGRkYpID09IHQtPmZldF92aWQgJiYK ICAgICAgICAgICgoZGV2aWNlX2lkID4+IDE2KSAmIDB4RkZGRikgPT0gdC0+ ZmV0X2RpZCkKICAgICAgewogICAgICAgICBmZXRfaW5mb190bXAgPSB0Owog ICAgICAgICByZXR1cm4odC0+ZmV0X25hbWUpOwogICAgICB9CiAgICAgIHQr KzsKICAgfQoKICAgcmV0dXJuKE5VTEwpOwp9CgoKLyoKICogQXR0YWNoIHRo ZSBpbnRlcmZhY2UuIEFsbG9jYXRlIHNvZnRjIHN0cnVjdHVyZXMsIGRvIGlm bWVkaWEKICogc2V0dXAgYW5kIGV0aGVybmV0L0JQRiBhdHRhY2guCiAqLwpz dGF0aWMgdm9pZCBmZXRfYXR0YWNoKGNvbmZpZ19pZCwgdW5pdCkKcGNpY2lf dCBjb25maWdfaWQ7CmludCB1bml0Owp7CiAgIGludCBzLCBpOwojaWZuZGVm IEZFVF9VU0VJT1NQQUNFCiAgIHZtX29mZnNldF90IHBiYXNlLCB2YmFzZTsK I2VuZGlmCiAgIHVfY2hhciBlYWRkcltFVEhFUl9BRERSX0xFTl07CiAgIHVf aW50MzJfdCBjb21tYW5kOwogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAg c3RydWN0IGlmbmV0ICppZnA7CiAgIGludCBtZWRpYSA9IElGTV9FVEhFUnxJ Rk1fMTAwX1RYfElGTV9GRFg7CiAgIHVuc2lnbmVkIGludCByb3VuZDsKICAg Y2FkZHJfdCByb3VuZHB0cjsKICAgc3RydWN0IGZldF90eXBlICpwOwogICB1 X2ludDE2X3QgcGh5X3ZpZCwgcGh5X2RpZCwgcGh5X3N0czsKCiAgIHMgPSBz cGxpbXAoKTsKCiAgIHNjID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmV0X3Nv ZnRjKSwgTV9ERVZCVUYsIE1fTk9XQUlUKTsKICAgaWYgKHNjID09IE5VTEwp CiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVtb3J5IGZvciBzb2Z0 YyBzdHJ1Y3QhXG4iLCB1bml0KTsKICAgICAgcmV0dXJuOwogICB9CiAgIGJ6 ZXJvKHNjLCBzaXplb2Yoc3RydWN0IGZldF9zb2Z0YykpOwoKICAgLyoKICAg ICogTWFwIGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVycy4KICAgICovCiAgIGNv bW1hbmQgPSBwY2lfY29uZl9yZWFkKGNvbmZpZ19pZCwgUENJX0NPTU1BTkRf U1RBVFVTX1JFRyk7CiAgIGNvbW1hbmQgfD0gKFBDSU1fQ01EX1BPUlRFTnxQ Q0lNX0NNRF9NRU1FTnxQQ0lNX0NNRF9CVVNNQVNURVJFTik7CiAgIHBjaV9j b25mX3dyaXRlKGNvbmZpZ19pZCwgUENJX0NPTU1BTkRfU1RBVFVTX1JFRywg Y29tbWFuZCk7CiAgIGNvbW1hbmQgPSBwY2lfY29uZl9yZWFkKGNvbmZpZ19p ZCwgUENJX0NPTU1BTkRfU1RBVFVTX1JFRyk7CgojaWZkZWYgRkVUX1VTRUlP U1BBQ0UKICAgaWYgKCEoY29tbWFuZCAmIFBDSU1fQ01EX1BPUlRFTikpCiAg IHsKICAgICAgcHJpbnRmKCJmZXQlZDogZmFpbGVkIHRvIGVuYWJsZSBJL08g cG9ydHMhXG4iLCB1bml0KTsKICAgICAgZnJlZShzYywgTV9ERVZCVUYpOwog ICAgICBnb3RvIGZhaWw7CiAgIH0KCiAgIGlmICghcGNpX21hcF9wb3J0KGNv bmZpZ19pZCwgRkVUX1BDSV9MT0lPLCAodV9pbnQxNl90ICopJihzYy0+ZmV0 X2JoYW5kbGUpKSkKICAgewogICAgICBwcmludGYgKCJmZXQlZDogY291bGRu J3QgbWFwIHBvcnRzXG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9 CiAgIHNjLT5mZXRfYnRhZyA9IEkzODZfQlVTX1NQQUNFX0lPOwojZWxzZQog ICBpZiAoIShjb21tYW5kICYgUENJTV9DTURfTUVNRU4pKQogICB7CiAgICAg IHByaW50ZigiZmV0JWQ6IGZhaWxlZCB0byBlbmFibGUgbWVtb3J5IG1hcHBp bmchXG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9CgogICBpZiAo IXBjaV9tYXBfbWVtKGNvbmZpZ19pZCwgRkVUX1BDSV9MT01FTSwgJnZiYXNl LCAmcGJhc2UpKQogICB7CiAgICAgIHByaW50ZiAoImZldCVkOiBjb3VsZG4n dCBtYXAgbWVtb3J5XG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9 CiAgIHNjLT5jc3IgPSAodm9sYXRpbGUgY2FkZHJfdCl2YmFzZTsKICAgc2Mt PmZldF9idGFnID0gSTM4Nl9CVVNfU1BBQ0VfTUVNOwogICBzYy0+ZmV0X2Jo YW5kbGUgPSB2YmFzZTsKI2VuZGlmCgogICAvKiBBbGxvY2F0ZSBpbnRlcnJ1 cHQgKi8KICAgaWYgKCFwY2lfbWFwX2ludChjb25maWdfaWQsIGZldF9pbnRy LCBzYywgJm5ldF9pbWFzaykpCiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDog Y291bGRuJ3QgbWFwIGludGVycnVwdFxuIiwgdW5pdCk7CiAgICAgIGdvdG8g ZmFpbDsKICAgfQoKICAgc2MtPmZldF9pbmZvID0gZmV0X2luZm9fdG1wOwoK ICAgLyogUmVzZXQgdGhlIGFkYXB0ZXIuICovCiAgIGZldF9yZXNldChzYyk7 CgogICAvKgogICAgKiBHZXQgc3RhdGlvbiBhZGRyZXNzCiAgICAqLwogICBm b3IgKGkgPSAwOyBpIDwgRVRIRVJfQUREUl9MRU47ICsraSkKICAgICBlYWRk cltpXSA9IENTUl9SRUFEXzEoc2MsIEZFVF9QQVIwK2kpOwoKICAgLyoKICAg ICogQSBzcGVjaWZpYyBjaGlwIHdhcyBkZXRlY3RlZC4gSW5mb3JtIHRoZSB3 b3JsZC4KICAgICovCiAgIHByaW50ZigiZmV0JWQ6IEV0aGVybmV0IGFkZHJl c3M6ICU2RFxuIiwgdW5pdCwgZWFkZHIsICI6Iik7CgogICBzYy0+ZmV0X3Vu aXQgPSB1bml0OwogICBiY29weShlYWRkciwgKGNoYXIgKikmc2MtPmFycGNv bS5hY19lbmFkZHIsIEVUSEVSX0FERFJfTEVOKTsKCiAgIHNjLT5mZXRfbGRh dGFfcHRyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmV0X2xpc3RfZGF0YSkg KyA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fREVWQlVGLCBN X05PV0FJVCk7CiAgIGlmIChzYy0+ZmV0X2xkYXRhX3B0ciA9PSBOVUxMKQog ICB7CiAgICAgIGZyZWUoc2MsIE1fREVWQlVGKTsKICAgICAgcHJpbnRmKCJm ZXQlZDogbm8gbWVtb3J5IGZvciBsaXN0IGJ1ZmZlcnMhXG4iLCB1bml0KTsK ICAgICAgcmV0dXJuOwogICB9CgogICBzYy0+ZmV0X2xkYXRhID0gKHN0cnVj dCBmZXRfbGlzdF9kYXRhICopc2MtPmZldF9sZGF0YV9wdHI7CiAgIHJvdW5k ID0gKHVuc2lnbmVkIGludClzYy0+ZmV0X2xkYXRhX3B0ciAmIDB4RjsKICAg cm91bmRwdHIgPSBzYy0+ZmV0X2xkYXRhX3B0cjsKICAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykKICAgewogICAgICBpZiAocm91bmQgJSA4KQogICAgICB7 CiAgICAgICAgIHJvdW5kKys7CiAgICAgICAgIHJvdW5kcHRyKys7CiAgICAg IH0KICAgICAgZWxzZQogICAgICAgIGJyZWFrOwogICB9CiAgIHNjLT5mZXRf bGRhdGEgPSAoc3RydWN0IGZldF9saXN0X2RhdGEgKilyb3VuZHB0cjsKICAg Ynplcm8oc2MtPmZldF9sZGF0YSwgc2l6ZW9mKHN0cnVjdCBmZXRfbGlzdF9k YXRhKSk7CgogICBpZnAgPSAmc2MtPmFycGNvbS5hY19pZjsKICAgaWZwLT5p Zl9zb2Z0YyA9IHNjOwogICBpZnAtPmlmX3VuaXQgPSB1bml0OwogICBpZnAt PmlmX25hbWUgPSAiZmV0IjsKICAgaWZwLT5pZl9tdHUgPSBFVEhFUk1UVTsK ICAgaWZwLT5pZl9mbGFncyA9IElGRl9CUk9BRENBU1QgfCBJRkZfU0lNUExF WCB8IElGRl9NVUxUSUNBU1Q7CiAgIGlmcC0+aWZfaW9jdGwgPSBmZXRfaW9j dGw7CiAgIGlmcC0+aWZfb3V0cHV0ID0gZXRoZXJfb3V0cHV0OwogICBpZnAt PmlmX3N0YXJ0ID0gZmV0X3N0YXJ0OwogICBpZnAtPmlmX3dhdGNoZG9nID0g ZmV0X3dhdGNoZG9nOwogICBpZnAtPmlmX2luaXQgPSBmZXRfaW5pdDsKICAg aWZwLT5pZl9iYXVkcmF0ZSA9IDEwMDAwMDAwOwoKICAgaWYgKHNjLT5mZXRf aW5mby0+ZmV0X2RpZCA9PSBJRDEpCiAgICAgc2MtPmZldF9waW5mbyA9IGZl dF9waHlzOwogICBlbHNlCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJib3NlKQog ICAgICAgIHByaW50ZigiZmV0JWQ6IHByb2JpbmcgZm9yIGEgUEhZXG4iLCBz Yy0+ZmV0X3VuaXQpOwogICAgICBmb3IgKGkgPSBGRVRfUEhZQUREUl9NSU47 IGkgPCBGRVRfUEhZQUREUl9NQVggKyAxOyBpKyspCiAgICAgIHsKICAgICAg ICAgaWYgKGJvb3R2ZXJib3NlKQogICAgICAgICAgIHByaW50ZigiZmV0JWQ6 IGNoZWNraW5nIGFkZHJlc3M6ICVkXG4iLCBzYy0+ZmV0X3VuaXQsIGkpOwog ICAgICAgICBzYy0+ZmV0X3BoeV9hZGRyID0gaTsKICAgICAgICAgcGh5X3N0 cyA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNU1IpOwogICAgICAgICAg aWYgKCAocGh5X3N0cyE9MCkmJihwaHlfc3RzIT0weGZmZmYpICkKICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHBoeV9z dHMgPSAwOwogICAgICB9CiAgICAgIGlmIChwaHlfc3RzKQogICAgICB7CiAg ICAgICAgIHBoeV92aWQgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9WRU5J RCk7CiAgICAgICAgIHBoeV9kaWQgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBI WV9ERVZJRCk7CiAgICAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICAg ewogICAgICAgICAgICBwcmludGYoImZldCVkOiBmb3VuZCBQSFkgYXQgYWRk cmVzcyAlZCwgIiwKICAgICAgICAgICAgICAgICAgICBzYy0+ZmV0X3VuaXQs IHNjLT5mZXRfcGh5X2FkZHIpOwogICAgICAgICAgICBwcmludGYoInZlbmRv ciBpZDogJXggZGV2aWNlIGlkOiAleFxuIiwgcGh5X3ZpZCwgcGh5X2RpZCk7 CiAgICAgICAgIH0KCiAgICAgICAgIHAgPSBmZXRfcGh5czsKICAgICAgICAg d2hpbGUocC0+ZmV0X3ZpZCkKICAgICAgICAgewogICAgICAgICAgICBpZiAo cGh5X3ZpZCA9PSBwLT5mZXRfdmlkKQogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgIHNjLT5mZXRfcGluZm8gPSBwOwogICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgfQogICAgICAgICAgICBwKys7CiAgICAgICAgIH0K ICAgICAgICAgaWYgKHNjLT5mZXRfcGluZm8gPT0gTlVMTCkKICAgICAgICAg ICBzYy0+ZmV0X3BpbmZvID0gJmZldF9waHlzW1BIWV9VTktOT1dOXTsKICAg ICAgICAgaWYgKGJvb3R2ZXJib3NlKQogICAgICAgICAgIHByaW50ZigiZmV0 JWQ6IFBIWSB0eXBlOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgIHNjLT5m ZXRfdW5pdCwgc2MtPmZldF9waW5mby0+ZmV0X25hbWUpOwogICAgICB9CiAg ICAgIGVsc2UKICAgICAgewogICAgICAgICBwcmludGYoImZldCVkOiBNSUkg d2l0aG91dCBhbnkgcGh5IVxuIiwgc2MtPmZldF91bml0KTsKICAgICAgICAg Z290byBmYWlsOwogICAgICB9CiAgIH0KCiAgIC8qCiAgICAqIERvIGlmbWVk aWEgc2V0dXAuCiAgICAqLwogICBpZm1lZGlhX2luaXQoJnNjLT5pZm1lZGlh LCAwLCBmZXRfaWZtZWRpYV91cGQsIGZldF9pZm1lZGlhX3N0cyk7CgogICBm ZXRfZ2V0bW9kZV9taWkoc2MpOwogICBmZXRfYXV0b25lZ19taWkoc2MsIEZF VF9GTEFHX0ZPUkNFREVMQVksIDEpOwogICBtZWRpYSA9IHNjLT5pZm1lZGlh LmlmbV9tZWRpYTsKICAgZmV0X3N0b3Aoc2MpOwoKICAgaWZtZWRpYV9zZXQo JnNjLT5pZm1lZGlhLCBtZWRpYSk7CgogICAvKgogICAgKiBDYWxsIE1JIGF0 dGFjaCByb3V0aW5lcy4KICAgICovCiAgIGlmX2F0dGFjaChpZnApOwogICBl dGhlcl9pZmF0dGFjaChpZnApOwoKI2lmIE5CUEZJTFRFUiA+IDAKICAgYnBm YXR0YWNoKGlmcCwgRExUX0VOMTBNQiwgc2l6ZW9mKHN0cnVjdCBldGhlcl9o ZWFkZXIpKTsKI2VuZGlmCiAgIGF0X3NodXRkb3duKGZldF9zaHV0ZG93biwg c2MsIFNIVVRET1dOX1BPU1RfU1lOQyk7CgpmYWlsOgogICBzcGx4KHMpOwog ICByZXR1cm47Cn0KCgovKgogKiBJbml0aWFsaXplIHRoZSB0cmFuc21pdCBk ZXNjcmlwdG9ycy4KICovCnN0YXRpYyBpbnQgZmV0X2xpc3RfdHhfaW5pdChz YykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnsKICAgc3RydWN0IGZldF9jaGFp bl9kYXRhICpjZDsKICAgc3RydWN0IGZldF9saXN0X2RhdGEgKmxkOwogICBp bnQgaTsKCiAgIGNkID0gJnNjLT5mZXRfY2RhdGE7CiAgIGxkID0gc2MtPmZl dF9sZGF0YTsKCiAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVFhfTElTVF9DTlQ7 IGkrKykKICAgewogICAgICBjZC0+ZmV0X3R4X2NoYWluW2ldLmZldF9wdHIg PSAmbGQtPmZldF90eF9saXN0W2ldOwogICAgICBpZiAoaSA9PSAoRkVUX1RY X0xJU1RfQ05UIC0gMSkpCiAgICAgICAgY2QtPmZldF90eF9jaGFpbltpXS5m ZXRfbmV4dGRlc2MgPSAmY2QtPmZldF90eF9jaGFpblswXTsKICAgICAgZWxz ZQogICAgICAgIGNkLT5mZXRfdHhfY2hhaW5baV0uZmV0X25leHRkZXNjID0g JmNkLT5mZXRfdHhfY2hhaW5baSArIDFdOwogICB9CgogICBjZC0+ZmV0X3R4 X2ZyZWUgPSAmY2QtPmZldF90eF9jaGFpblswXTsKICAgY2QtPmZldF90eF90 YWlsID0gY2QtPmZldF90eF9oZWFkID0gTlVMTDsKCiAgIHJldHVybigwKTsK fQoKCi8qCiAqIEluaXRpYWxpemUgdGhlIFJYIGRlc2NyaXB0b3JzIGFuZCBh bGxvY2F0ZSBtYnVmcyBmb3IgdGhlbS4gTm90ZSB0aGF0CiAqIHdlIGFycmFu Z2UgdGhlIGRlc2NyaXB0b3JzIGluIGEgY2xvc2VkIHJpbmcsIHNvIHRoYXQg dGhlIGxhc3QgZGVzY3JpcHRvcgogKiBwb2ludHMgYmFjayB0byB0aGUgZmly c3QuCiAqLwpzdGF0aWMgaW50IGZldF9saXN0X3J4X2luaXQoc2MpCnN0cnVj dCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBmZXRfY2hhaW5fZGF0YSAq Y2Q7CiAgIHN0cnVjdCBmZXRfbGlzdF9kYXRhICpsZDsKICAgaW50IGk7Cgog ICBjZCA9ICZzYy0+ZmV0X2NkYXRhOwogICBsZCA9IHNjLT5mZXRfbGRhdGE7 CgogICBmb3IgKGkgPSAwOyBpIDwgRkVUX1JYX0xJU1RfQ05UOyBpKyspCiAg IHsKICAgICAgY2QtPmZldF9yeF9jaGFpbltpXS5mZXRfcHRyID0gKHN0cnVj dCBmZXRfZGVzYyAqKSZsZC0+ZmV0X3J4X2xpc3RbaV07CgogICAgICBpZiAo ZmV0X25ld2J1ZihzYywgJmNkLT5mZXRfcnhfY2hhaW5baV0pID09IEVOT0JV RlMpCiAgICAgICAgcmV0dXJuKEVOT0JVRlMpOwoKICAgICAgaWYgKGkgPT0g KEZFVF9SWF9MSVNUX0NOVCAtIDEpKQogICAgICB7CiAgICAgICAgIGNkLT5m ZXRfcnhfY2hhaW5baV0uZmV0X25leHRkZXNjID0gJmNkLT5mZXRfcnhfY2hh aW5bMF07CiAgICAgICAgIGxkLT5mZXRfcnhfbGlzdFtpXS5mZXRfbmV4dCA9 IHZ0b3BoeXMoJmxkLT5mZXRfcnhfbGlzdFswXSk7CiAgICAgIH0KICAgICAg ZWxzZQogICAgICB7CiAgICAgICAgIGNkLT5mZXRfcnhfY2hhaW5baV0uZmV0 X25leHRkZXNjID0gJmNkLT5mZXRfcnhfY2hhaW5baSArIDFdOwogICAgICAg ICBsZC0+ZmV0X3J4X2xpc3RbaV0uZmV0X25leHQgPSB2dG9waHlzKCZsZC0+ ZmV0X3J4X2xpc3RbaSArIDFdKTsKICAgICAgfQogICB9CgogICBjZC0+ZmV0 X3J4X2hlYWQgPSAmY2QtPmZldF9yeF9jaGFpblswXTsKCiAgIHJldHVybigw KTsKfQoKCi8qCiAqIEluaXRpYWxpemUgYW4gUlggZGVzY3JpcHRvciBhbmQg YXR0YWNoIGFuIE1CVUYgY2x1c3Rlci4KICovCnN0YXRpYyBpbnQgZmV0X25l d2J1ZihzYywgYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnN0cnVjdCBmZXRf Y2hhaW5fb25lZnJhZyAqYzsKewogICBzdHJ1Y3QgbWJ1ZiAqbV9uZXcgPSBO VUxMOwoKICAgTUdFVEhEUihtX25ldywgTV9ET05UV0FJVCwgTVRfREFUQSk7 CiAgIGlmIChtX25ldyA9PSBOVUxMKQogICB7CiAgICAgIHByaW50ZigiZmV0 JWQ6IG5vIG1lbW9yeSBmb3IgcnggbGlzdCAtLSBwYWNrZXQgZHJvcHBlZCFc biIsCiAgICAgICAgICAgICAgc2MtPmZldF91bml0KTsKICAgICAgcmV0dXJu KEVOT0JVRlMpOwogICB9CgogICBNQ0xHRVQobV9uZXcsIE1fRE9OVFdBSVQp OwogICBpZiAoIShtX25ldy0+bV9mbGFncyAmIE1fRVhUKSkKICAgewogICAg ICBwcmludGYoImZldCVkOiBubyBtZW1vcnkgZm9yIHJ4IGxpc3QgLS0gcGFj a2V0IGRyb3BwZWQhXG4iLAogICAgICAgICAgICAgIHNjLT5mZXRfdW5pdCk7 CiAgICAgIG1fZnJlZW0obV9uZXcpOwogICAgICByZXR1cm4oRU5PQlVGUyk7 CiAgIH0KCiAgIGMtPmZldF9tYnVmID0gbV9uZXc7CiAgIGMtPmZldF9wdHIt PmZldF9kYXRhID0gdnRvcGh5cyhtdG9kKG1fbmV3LCBjYWRkcl90KSk7CiAg IGMtPmZldF9wdHItPmZldF9jdGwgPSAoTUNMQllURVMgLSAxKTw8RkVUX1JC U1NoaWZ0OwogICBjLT5mZXRfcHRyLT5mZXRfc3RhdHVzID0gRkVUX09XTkJ5 TklDOwoKICAgcmV0dXJuKDApOwp9CgoKLyoKICogQSBmcmFtZSBoYXMgYmVl biB1cGxvYWRlZDogcGFzcyB0aGUgcmVzdWx0aW5nIG1idWYgY2hhaW4gdXAg dG8KICogdGhlIGhpZ2hlciBsZXZlbCBwcm90b2NvbHMuCiAqLwpzdGF0aWMg dm9pZCBmZXRfcnhlb2Yoc2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAg IHN0cnVjdCBldGhlcl9oZWFkZXIgKmVoOwogICBzdHJ1Y3QgbWJ1ZiAqbTsK ICAgc3RydWN0IGlmbmV0ICppZnA7CiAgIHN0cnVjdCBmZXRfY2hhaW5fb25l ZnJhZyAqY3VyX3J4OwogICBpbnQgdG90YWxfbGVuID0gMDsKICAgdV9pbnQz Ml90IHJ4c3RhdDsKCiAgIGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAg d2hpbGUgKCEoKHJ4c3RhdCA9IHNjLT5mZXRfY2RhdGEuZmV0X3J4X2hlYWQt PmZldF9wdHItPmZldF9zdGF0dXMpJkZFVF9PV05CeU5JQykpCiAgIHsKICAg ICAgY3VyX3J4ID0gc2MtPmZldF9jZGF0YS5mZXRfcnhfaGVhZDsKICAgICAg c2MtPmZldF9jZGF0YS5mZXRfcnhfaGVhZCA9IGN1cl9yeC0+ZmV0X25leHRk ZXNjOwoKICAgICAgaWYgKHJ4c3RhdCAmIEZFVF9FUykgICAgICAgLyogZXJy b3Igc3VtbWFyeSAqLwogICAgICB7ICAvKiBnaXZlIHVwIHRoaXMgcnggcGt0 ICovCiAgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOwogICAgICAgICBjdXJf cngtPmZldF9wdHItPmZldF9zdGF0dXMgPSBGRVRfT1dOQnlOSUM7CiAgICAg ICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICAvKiBObyBlcnJvcnM7IHJl Y2VpdmUgdGhlIHBhY2tldC4gKi8KICAgICAgdG90YWxfbGVuID0gKHJ4c3Rh dCAmIEZFVF9GTE5HTUFTSykgPj4gRkVUX0ZMTkdTaGlmdDsKICAgICAgdG90 YWxfbGVuIC09IEVUSEVSX0NSQ19MRU47CgogICAgICBpZiAodG90YWxfbGVu IDwgTUlOQ0xTSVpFKQogICAgICB7CiAgICAgICAgIG0gPSBtX2RldmdldCht dG9kKGN1cl9yeC0+ZmV0X21idWYsIGNoYXIgKiksIHRvdGFsX2xlbiwgMCwg aWZwLCBOVUxMKTsKICAgICAgICAgY3VyX3J4LT5mZXRfcHRyLT5mZXRfc3Rh dHVzID0gRkVUX09XTkJ5TklDOwogICAgICAgICBpZiAobSA9PSBOVUxMKQog ICAgICAgICB7CiAgICAgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOwogICAg ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGVs c2UKICAgICAgewogICAgICAgICBtID0gY3VyX3J4LT5mZXRfbWJ1ZjsKCiAg ICAgICAgIC8qCiAgICAgICAgICAqIFRyeSB0byBjb25qdXJlIHVwIGEgbmV3 IG1idWYgY2x1c3Rlci4gSWYgdGhhdAogICAgICAgICAgKiBmYWlscywgaXQg bWVhbnMgd2UgaGF2ZSBhbiBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbiBhbmQK ICAgICAgICAgICogc2hvdWxkIGxlYXZlIHRoZSBidWZmZXIgaW4gcGxhY2Ug YW5kIGNvbnRpbnVlLiBUaGlzIHdpbGwKICAgICAgICAgICogcmVzdWx0IGlu IGEgbG9zdCBwYWNrZXQsIGJ1dCB0aGVyZSdzIGxpdHRsZSBlbHNlIHdlCiAg ICAgICAgICAqIGNhbiBkbyBpbiB0aGlzIHNpdHVhdGlvbi4KICAgICAgICAg ICovCiAgICAgICAgIGlmIChmZXRfbmV3YnVmKHNjLCBjdXJfcngpID09IEVO T0JVRlMpCiAgICAgICAgIHsKICAgICAgICAgICAgaWZwLT5pZl9pZXJyb3Jz Kys7CiAgICAgICAgICAgIGN1cl9yeC0+ZmV0X3B0ci0+ZmV0X3N0YXR1cyA9 IEZFVF9PV05CeU5JQzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg IH0KICAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYgPSBpZnA7CiAgICAgICAg IG0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0gdG90YWxfbGVuOwogICAg ICB9CgogICAgICBpZnAtPmlmX2lwYWNrZXRzKys7CiAgICAgIGVoID0gbXRv ZChtLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOwoKI2lmIE5CUEZJTFRFUiA+ IDAKICAgICAgLyoKICAgICAgICogSGFuZGxlIEJQRiBsaXN0ZW5lcnMuIExl dCB0aGUgQlBGIHVzZXIgc2VlIHRoZSBwYWNrZXQsIGJ1dAogICAgICAgKiBk b24ndCBwYXNzIGl0IHVwIHRvIHRoZSBldGhlcl9pbnB1dCgpIGxheWVyIHVu bGVzcyBpdCdzCiAgICAgICAqIGEgYnJvYWRjYXN0IHBhY2tldCwgbXVsdGlj YXN0IHBhY2tldCwgbWF0Y2hlcyBvdXIgZXRoZXJuZXQKICAgICAgICogYWRk cmVzcyBvciB0aGUgaW50ZXJmYWNlIGlzIGluIHByb21pc2N1b3VzIG1vZGUu CiAgICAgICAqLwogICAgICBpZiAoaWZwLT5pZl9icGYpCiAgICAgIHsKICAg ICAgICAgYnBmX210YXAoaWZwLCBtKTsKICAgICAgICAgaWYgKGlmcC0+aWZf ZmxhZ3MgJiBJRkZfUFJPTUlTQyAmJgogICAgICAgICAgICAgKGJjbXAoZWgt PmV0aGVyX2Rob3N0LCBzYy0+YXJwY29tLmFjX2VuYWRkciwgRVRIRVJfQURE Ul9MRU4pICYmCiAgICAgICAgICAgICAoZWgtPmV0aGVyX2Rob3N0WzBdICYg MSkgPT0gMCkpCiAgICAgICAgIHsKICAgICAgICAgICAgbV9mcmVlbShtKTsK ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgfQojZW5k aWYKICAgICAgLyogUmVtb3ZlIGhlYWRlciBmcm9tIG1idWYgYW5kIHBhc3Mg aXQgb24uICovCiAgICAgIG1fYWRqKG0sIHNpemVvZihzdHJ1Y3QgZXRoZXJf aGVhZGVyKSk7CiAgICAgIGV0aGVyX2lucHV0KGlmcCwgZWgsIG0pOwogICB9 CgogICByZXR1cm47Cn0KCgovKgogKiBBIGZyYW1lIHdhcyBkb3dubG9hZGVk IHRvIHRoZSBjaGlwLiBJdCdzIHNhZmUgZm9yIHVzIHRvIGNsZWFuIHVwCiAq IHRoZSBsaXN0IGJ1ZmZlcnMuCiAqLwpzdGF0aWMgdm9pZCBmZXRfdHhlb2Yo c2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBmZXRfY2hh aW4gKmN1cl90eDsKICAgc3RydWN0IGlmbmV0ICppZnA7CgogICBpZnAgPSAm c2MtPmFycGNvbS5hY19pZjsKCiAgIC8qIENsZWFyIHRoZSB0aW1lb3V0IHRp bWVyLiAqLwogICBpZnAtPmlmX3RpbWVyID0gMDsKCiAgIGlmIChzYy0+ZmV0 X2NkYXRhLmZldF90eF9oZWFkID09IE5VTEwpCiAgICAgcmV0dXJuOwoKICAg LyoKICAgICogR28gdGhyb3VnaCBvdXIgdHggbGlzdCBhbmQgZnJlZSBtYnVm cyBmb3IgdGhvc2UKICAgICogZnJhbWVzIHRoYXQgaGF2ZSBiZWVuIHRyYW5z bWl0dGVkLgogICAgKi8KICAgd2hpbGUgKHNjLT5mZXRfY2RhdGEuZmV0X3R4 X2hlYWQtPmZldF9tYnVmICE9IE5VTEwpCiAgIHsKICAgICAgdV9pbnQzMl90 IHR4c3RhdDsKCiAgICAgIGN1cl90eCA9IHNjLT5mZXRfY2RhdGEuZmV0X3R4 X2hlYWQ7CiAgICAgIHR4c3RhdCA9IEZFVF9UWFNUQVRVUyhjdXJfdHgpOwoK ICAgICAgaWYgKCh0eHN0YXQgJiBGRVRfT1dOQnlOSUMpIHx8IHR4c3RhdCA9 PSBGRVRfVU5TRU5UKQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKHR4c3Rh dCAmIEZFVF9UWEVSUikKICAgICAgewogICAgICAgICBpZnAtPmlmX29lcnJv cnMrKzsKICAgICAgICAgaWYgKHR4c3RhdCAmIEZFVF9FQykgICAgLyogZXhj ZXNzaXZlIGNvbGxpc2lvbiAqLwogICAgICAgICAgIGlmcC0+aWZfY29sbGlz aW9ucysrOwogICAgICAgICBpZiAodHhzdGF0ICYgRkVUX0xDKSAgICAvKiBs YXRlIGNvbGxpc2lvbiAqLwogICAgICAgICAgIGlmcC0+aWZfY29sbGlzaW9u cysrOwogICAgICB9CgogICAgICBpZnAtPmlmX2NvbGxpc2lvbnMgKz0gKHR4 c3RhdCAmIEZFVF9OQ1JNQVNLKSA+PiBGRVRfTkNSU2hpZnQ7CgogICAgICBp ZnAtPmlmX29wYWNrZXRzKys7CiAgICAgIG1fZnJlZW0oY3VyX3R4LT5mZXRf bWJ1Zik7CiAgICAgIGN1cl90eC0+ZmV0X21idWYgPSBOVUxMOwoKICAgICAg aWYgKHNjLT5mZXRfY2RhdGEuZmV0X3R4X2hlYWQgPT0gc2MtPmZldF9jZGF0 YS5mZXRfdHhfdGFpbCkKICAgICAgewogICAgICAgICBzYy0+ZmV0X2NkYXRh LmZldF90eF9oZWFkID0gTlVMTDsKICAgICAgICAgc2MtPmZldF9jZGF0YS5m ZXRfdHhfdGFpbCA9IE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgICB9Cgog ICAgICBzYy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkID0gY3VyX3R4LT5mZXRf bmV4dGRlc2M7CiAgIH0KCiAgIHJldHVybjsKfQoKCi8qCiAqIFRYICdlbmQg b2YgY2hhbm5lbCcgaW50ZXJydXB0IGhhbmRsZXIuCiAqLwpzdGF0aWMgdm9p ZCBmZXRfdHhlb2Moc2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0 cnVjdCBpZm5ldCAqaWZwOwoKICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7 CgogICBpZnAtPmlmX3RpbWVyID0gMDsKCiAgIGlmIChzYy0+ZmV0X2NkYXRh LmZldF90eF9oZWFkID09IE5VTEwpCiAgIHsKICAgICAgaWZwLT5pZl9mbGFn cyAmPSB+SUZGX09BQ1RJVkU7CiAgICAgIHNjLT5mZXRfY2RhdGEuZmV0X3R4 X3RhaWwgPSBOVUxMOwogICAgICBpZiAoc2MtPmZldF93YW50X2F1dG8pCiAg ICAgICAgZmV0X2F1dG9uZWdfbWlpKHNjLCBGRVRfRkxBR19TQ0hFRERFTEFZ LCAxKTsKICAgfQogICBlbHNlCiAgIHsKICAgICAgaWYgKEZFVF9UWE9XTihz Yy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkKSA9PSBGRVRfVU5TRU5UKQogICAg ICB7CiAgICAgICAgIEZFVF9UWE9XTihzYy0+ZmV0X2NkYXRhLmZldF90eF9o ZWFkKSA9IEZFVF9PV05CeU5JQzsKICAgICAgICAgaWZwLT5pZl90aW1lciA9 IDU7CiAgICAgICAgIENTUl9XUklURV80KHNjLCBGRVRfVFhQRFIsIDB4RkZG RkZGRkYpOwogICAgICB9CiAgIH0KCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2 b2lkIGZldF9pbnRyKGFyZykKdm9pZCAqYXJnOwp7CiAgIHN0cnVjdCBmZXRf c29mdGMgKnNjOwogICBzdHJ1Y3QgaWZuZXQgKmlmcDsKICAgdV9pbnQzMl90 IHN0YXR1czsKCiAgIHNjID0gYXJnOwogICBpZnAgPSAmc2MtPmFycGNvbS5h Y19pZjsKCiAgIGlmICghKGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApKQogICAg IHJldHVybjsKCiAgIC8qIERpc2FibGUgaW50ZXJydXB0cy4gKi8KICAgQ1NS X1dSSVRFXzQoc2MsIEZFVF9JTVIsIDB4MDAwMDAwMDApOwoKICAgZm9yICg7 OykKICAgewogICAgICBzdGF0dXMgPSBDU1JfUkVBRF80KHNjLCBGRVRfSVNS KTsKICAgICAgc3RhdHVzICY9IEZFVF9JTlRSUzsKICAgICAgaWYgKHN0YXR1 cykKICAgICAgICBDU1JfV1JJVEVfNChzYywgRkVUX0lTUiwgc3RhdHVzKTsK ICAgICAgZWxzZQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKHN0YXR1cyAm IEZFVF9SSSkgICAgICAgLyogcmVjZWl2ZSBpbnRlcnJ1cHQgKi8KICAgICAg ICBmZXRfcnhlb2Yoc2MpOwoKICAgICAgaWYgKChzdGF0dXMgJiBGRVRfUkJV KSB8fCAoc3RhdHVzICYgRkVUX1J4RXJyKSkKICAgICAgeyAgLyogcnggYnVm ZmVyIHVuYXZhaWxhYmxlIG9yIHJ4IGVycm9yICovCiAgICAgICAgIGlmcC0+ aWZfaWVycm9ycysrOwojaWZkZWYgZm9vCiAgICAgICAgIGZldF9zdG9wKHNj KTsKICAgICAgICAgZmV0X3Jlc2V0KHNjKTsKICAgICAgICAgZmV0X2luaXQo c2MpOwojZW5kaWYKICAgICAgfQoKICAgICAgaWYgKHN0YXR1cyAmIEZFVF9U SSkgICAgICAgLyogdHggaW50ZXJydXB0ICovCiAgICAgICAgZmV0X3R4ZW9m KHNjKTsKCiAgICAgIGlmIChzdGF0dXMgJiBGRVRfVEJVKSAgICAgIC8qIHR4 IGJ1ZmZlciB1bmF2YWlsYWJsZSAqLwogICAgICAgIGZldF90eGVvYyhzYyk7 CgogICAgICBpZiAoc3RhdHVzICYgRkVUX0ZCRSkgICAgICAvKiBmYXRhbCBi dXMgZXJyb3IgKi8KICAgICAgewogICAgICAgICBmZXRfcmVzZXQoc2MpOwog ICAgICAgICBmZXRfaW5pdChzYyk7CiAgICAgIH0KCiAgIH0KCiAgIC8qIFJl LWVuYWJsZSBpbnRlcnJ1cHRzLiAqLwogICBDU1JfV1JJVEVfNChzYywgRkVU X0lNUiwgRkVUX0lOVFJTKTsKCiAgIGlmIChpZnAtPmlmX3NuZC5pZnFfaGVh ZCAhPSBOVUxMKQogICAgIGZldF9zdGFydChpZnApOwoKICAgcmV0dXJuOwp9 CgoKLyoKICogRW5jYXBzdWxhdGUgYW4gbWJ1ZiBjaGFpbiBpbiBhIGRlc2Ny aXB0b3IgYnkgY291cGxpbmcgdGhlIG1idWYgZGF0YQogKiBwb2ludGVycyB0 byB0aGUgZnJhZ21lbnQgcG9pbnRlcnMuCiAqLwpzdGF0aWMgaW50IGZldF9l bmNhcChzYywgYywgbV9oZWFkKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKc3Ry dWN0IGZldF9jaGFpbiAqYzsKc3RydWN0IG1idWYgKm1faGVhZDsKewogICBz dHJ1Y3QgZmV0X2Rlc2MgKmYgPSBOVUxMOwogICBpbnQgdG90YWxfbGVuOwog ICBzdHJ1Y3QgbWJ1ZiAqbSwgKm1fbmV3PU5VTEw7CgogICAvKiBjYWxjdWxh dGUgdGhlIHRvdGFsIHR4IHBrdCBsZW5ndGggKi8KICAgdG90YWxfbGVuID0g MDsKICAgZm9yIChtID0gbV9oZWFkOyAgbSAhPSBOVUxMOyBtID0gbS0+bV9u ZXh0KQogICAgIHRvdGFsX2xlbiArPSBtLT5tX2xlbjsKCiAgIC8qCiAgICAq IFN0YXJ0IHBhY2tpbmcgdGhlIG1idWZzIGluIHRoaXMgY2hhaW4gaW50bwog ICAgKiB0aGUgZnJhZ21lbnQgcG9pbnRlcnMuIFN0b3Agd2hlbiB3ZSBydW4g b3V0CiAgICAqIG9mIGZyYWdtZW50cyBvciBoaXQgdGhlIGVuZCBvZiB0aGUg bWJ1ZiBjaGFpbi4KICAgICovCiAgIG0gPSBtX2hlYWQ7CgogICBNR0VUSERS KG1fbmV3LCBNX0RPTlRXQUlULCBNVF9EQVRBKTsKICAgaWYgKG1fbmV3ID09 IE5VTEwpCiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVtb3J5IGZv ciB0eCBsaXN0Iiwgc2MtPmZldF91bml0KTsKICAgICAgcmV0dXJuKDEpOwog ICB9CgogICBpZiAobV9oZWFkLT5tX3BrdGhkci5sZW4gPiBNSExFTikKICAg ewogICAgICBNQ0xHRVQobV9uZXcsIE1fRE9OVFdBSVQpOwogICAgICBpZiAo IShtX25ldy0+bV9mbGFncyAmIE1fRVhUKSkKICAgICAgewogICAgICAgICBt X2ZyZWVtKG1fbmV3KTsKICAgICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVt b3J5IGZvciB0eCBsaXN0Iiwgc2MtPmZldF91bml0KTsKICAgICAgICAgcmV0 dXJuKDEpOwogICAgICB9CiAgIH0KCiAgIG1fY29weWRhdGEobV9oZWFkLCAw LCBtX2hlYWQtPm1fcGt0aGRyLmxlbiwgbXRvZChtX25ldywgY2FkZHJfdCkp OwogICBtX25ldy0+bV9wa3RoZHIubGVuID0gbV9uZXctPm1fbGVuID0gbV9o ZWFkLT5tX3BrdGhkci5sZW47CiAgIG1fZnJlZW0obV9oZWFkKTsKICAgbV9o ZWFkID0gbV9uZXc7CiAgIGYgPSAmYy0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF07 CiAgIGYtPmZldF9zdGF0dXMgPSAwOwogICBmLT5mZXRfZGF0YSA9IHZ0b3Bo eXMobXRvZChtX25ldywgY2FkZHJfdCkpOwogICB0b3RhbF9sZW4gPSBtX25l dy0+bV9sZW47CiAgIGYtPmZldF9jdGwgPSBGRVRfVFhGRHxGRVRfVFhMRHxG RVRfQ1JDRW5hYmxlfEZFVF9QQURFbmFibGU7CiAgIGYtPmZldF9jdGwgfD0g dG90YWxfbGVuPDxGRVRfUEtUU2hpZnQ7ICAgLyogcGt0IHNpemUgKi8KICAg Zi0+ZmV0X2N0bCB8PSB0b3RhbF9sZW47ICAgICAgICAgICAgICAgIC8qIGJ1 ZmZlciBzaXplICovCgogICBjLT5mZXRfbWJ1ZiA9IG1faGVhZDsKICAgYy0+ ZmV0X2xhc3RkZXNjID0gMDsKICAgRkVUX1RYTkVYVChjKSA9IHZ0b3BoeXMo JmMtPmZldF9uZXh0ZGVzYy0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF0pOwoKICAg cmV0dXJuKDApOwp9CgoKLyoKICogTWFpbiB0cmFuc21pdCByb3V0aW5lLiBU byBhdm9pZCBoYXZpbmcgdG8gZG8gbWJ1ZiBjb3BpZXMsIHdlIHB1dCBwb2lu dGVycwogKiB0byB0aGUgbWJ1ZiBkYXRhIHJlZ2lvbnMgZGlyZWN0bHkgaW4g dGhlIHRyYW5zbWl0IGxpc3RzLiBXZSBhbHNvIHNhdmUgYQogKiBjb3B5IG9m IHRoZSBwb2ludGVycyBzaW5jZSB0aGUgdHJhbnNtaXQgbGlzdCBmcmFnbWVu dCBwb2ludGVycyBhcmUKICogcGh5c2ljYWwgYWRkcmVzc2VzLgogKi8Kc3Rh dGljIHZvaWQgZmV0X3N0YXJ0KGlmcCkKc3RydWN0IGlmbmV0ICppZnA7CnsK ICAgc3RydWN0IGZldF9zb2Z0YyAqc2M7CiAgIHN0cnVjdCBtYnVmICptX2hl YWQgPSBOVUxMOwogICBzdHJ1Y3QgZmV0X2NoYWluICpjdXJfdHggPSBOVUxM LCAqc3RhcnRfdHg7CgogICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZiAo c2MtPmZldF9hdXRvbmVnKQogICB7CiAgICAgIHNjLT5mZXRfdHhfcGVuZCA9 IDE7CiAgICAgIHJldHVybjsKICAgfQoKICAgLyoKICAgICogQ2hlY2sgZm9y IGFuIGF2YWlsYWJsZSBxdWV1ZSBzbG90LiBJZiB0aGVyZSBhcmUgbm9uZSwK ICAgICogcHVudC4KICAgICovCiAgIGlmIChzYy0+ZmV0X2NkYXRhLmZldF90 eF9mcmVlLT5mZXRfbWJ1ZiAhPSBOVUxMKQogICB7CiAgICAgIGlmcC0+aWZf ZmxhZ3MgfD0gSUZGX09BQ1RJVkU7CiAgICAgIHJldHVybjsKICAgfQoKICAg c3RhcnRfdHggPSBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVlOwoKICAgd2hp bGUgKHNjLT5mZXRfY2RhdGEuZmV0X3R4X2ZyZWUtPmZldF9tYnVmID09IE5V TEwpCiAgIHsKICAgICAgSUZfREVRVUVVRSgmaWZwLT5pZl9zbmQsIG1faGVh ZCk7CiAgICAgIGlmIChtX2hlYWQgPT0gTlVMTCkKICAgICAgICBicmVhazsK CiAgICAgIC8qIFBpY2sgYSBkZXNjcmlwdG9yIG9mZiB0aGUgZnJlZSBsaXN0 LiAqLwogICAgICBjdXJfdHggPSBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVl OwogICAgICBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVlID0gY3VyX3R4LT5m ZXRfbmV4dGRlc2M7CgogICAgICAvKiBQYWNrIHRoZSBkYXRhIGludG8gdGhl IGRlc2NyaXB0b3IuICovCiAgICAgIGZldF9lbmNhcChzYywgY3VyX3R4LCBt X2hlYWQpOwoKICAgICAgaWYgKGN1cl90eCAhPSBzdGFydF90eCkKICAgICAg ICBGRVRfVFhPV04oY3VyX3R4KSA9IEZFVF9PV05CeU5JQzsKCiNpZiBOQlBG SUxURVIgPiAwCiAgICAgIC8qCiAgICAgICAqIElmIHRoZXJlJ3MgYSBCUEYg bGlzdGVuZXIsIGJvdW5jZSBhIGNvcHkgb2YgdGhpcyBmcmFtZQogICAgICAg KiB0byBoaW0uCiAgICAgICAqLwogICAgICBpZiAoaWZwLT5pZl9icGYpCiAg ICAgICAgYnBmX210YXAoaWZwLCBjdXJfdHgtPmZldF9tYnVmKTsKI2VuZGlm CiAgIH0KCiAgIC8qCiAgICAqIElmIHRoZXJlIGFyZSBubyBwYWNrZXRzIHF1 ZXVlZCwgYmFpbC4KICAgICovCiAgIGlmIChjdXJfdHggPT0gTlVMTCkKICAg ICByZXR1cm47CgogICAvKgogICAgKiBQbGFjZSB0aGUgcmVxdWVzdCBmb3Ig dGhlIHVwbG9hZCBpbnRlcnJ1cHQKICAgICogaW4gdGhlIGxhc3QgZGVzY3Jp cHRvciBpbiB0aGUgY2hhaW4uIFRoaXMgd2F5LCBpZgogICAgKiB3ZSdyZSBj aGFpbmluZyBzZXZlcmFsIHBhY2tldHMgYXQgb25jZSwgd2UnbGwgb25seQog ICAgKiBnZXQgYW4gaW50ZXJ1cHQgb25jZSBmb3IgdGhlIHdob2xlIGNoYWlu IHJhdGhlciB0aGFuCiAgICAqIG9uY2UgZm9yIGVhY2ggcGFja2V0LgogICAg Ki8KICAgRkVUX1RYQ1RMKGN1cl90eCkgfD0gRkVUX1RYSUM7CiAgIGN1cl90 eC0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF0uZmV0X2N0bCB8PSBGRVRfVFhJQzsK ICAgc2MtPmZldF9jZGF0YS5mZXRfdHhfdGFpbCA9IGN1cl90eDsKCiAgIGlm IChzYy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkID09IE5VTEwpCiAgICAgc2Mt PmZldF9jZGF0YS5mZXRfdHhfaGVhZCA9IHN0YXJ0X3R4OwoKICAgRkVUX1RY T1dOKHN0YXJ0X3R4KSA9IEZFVF9PV05CeU5JQzsKICAgQ1NSX1dSSVRFXzQo c2MsIEZFVF9UWFBEUiwgMHhGRkZGRkZGRik7ICAgIC8qIHR4IHBvbGxpbmcg ZGVtYW5kICovCgogICAvKgogICAgKiBTZXQgYSB0aW1lb3V0IGluIGNhc2Ug dGhlIGNoaXAgZ29lcyBvdXQgdG8gbHVuY2guCiAgICAqLwogICBpZnAtPmlm X3RpbWVyID0gNTsKCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2b2lkIGZldF9p bml0KHhzYykKdm9pZCAqeHNjOwp7CiAgIHN0cnVjdCBmZXRfc29mdGMgKnNj ID0geHNjOwogICBzdHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+YXJwY29tLmFj X2lmOwogICBpbnQgcywgaTsKICAgdV9pbnQxNl90IHBoeV9ibWNyID0gMDsK CiAgIGlmIChzYy0+ZmV0X2F1dG9uZWcpCiAgICAgcmV0dXJuOwoKICAgcyA9 IHNwbGltcCgpOwoKICAgaWYgKHNjLT5mZXRfcGluZm8gIT0gTlVMTCkKICAg ICBwaHlfYm1jciA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpOwoK ICAgLyoKICAgICogQ2FuY2VsIHBlbmRpbmcgSS9PIGFuZCBmcmVlIGFsbCBS WC9UWCBidWZmZXJzLgogICAgKi8KICAgZmV0X3N0b3Aoc2MpOwogICBmZXRf cmVzZXQoc2MpOwoKICAgLyoKICAgICogU2V0IGNhY2hlIGFsaWdubWVudCBh bmQgYnVyc3QgbGVuZ3RoLgogICAgKi8KLyogODkvOS8xIG1vZGlmeSwKICAg Q1NSX1dSSVRFXzQoc2MsIEZFVF9CQ1IsIEZFVF9SUEJMRTUxMik7CiAgIENT Ul9XUklURV80KHNjLCBGRVRfVENSUkNSLCBGRVRfVEZUU0YpOwoqLwogICBD U1JfV1JJVEVfNChzYywgRkVUX0JDUiwgRkVUX1BCTDgpOwogICBDU1JfV1JJ VEVfNChzYywgRkVUX1RDUlJDUiwgRkVUX1RGVFNGfEZFVF9SQkxFTnxGRVRf UlBCTEU1MTIpOwoKICAgZmV0X3NldGNmZyhzYywgcGh5X2JtY3IpOwoKICAg LyogSW5pdCBjaXJjdWxhciBSWCBsaXN0LiAqLwogICBpZiAoZmV0X2xpc3Rf cnhfaW5pdChzYykgPT0gRU5PQlVGUykKICAgewogICAgICBwcmludGYoImZl dCVkOiBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IG5vIG1lbW9yeSBmb3Igcngg YnVmZmVyc1xuIiwKICAgICAgICAgICAgICBzYy0+ZmV0X3VuaXQpOwogICAg ICBmZXRfc3RvcChzYyk7CiAgICAgICh2b2lkKXNwbHgocyk7CiAgICAgIHJl dHVybjsKICAgfQoKICAgLyogSW5pdCBUWCBkZXNjcmlwdG9ycy4gKi8KICAg ZmV0X2xpc3RfdHhfaW5pdChzYyk7CgogICAvKiBJZiB3ZSB3YW50IHByb21p c2N1b3VzIG1vZGUsIHNldCB0aGUgYWxsZnJhbWVzIGJpdC4gKi8KICAgaWYg KGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlTQykKICAgICBGRVRfU0VUQklU KHNjLCBGRVRfVENSUkNSLCBGRVRfUFJPTSk7CiAgIGVsc2UKICAgICBGRVRf Q0xSQklUKHNjLCBGRVRfVENSUkNSLCBGRVRfUFJPTSk7CgogICAvKgogICAg KiBTZXQgY2FwdHVyZSBicm9hZGNhc3QgYml0IHRvIGNhcHR1cmUgYnJvYWRj YXN0IGZyYW1lcy4KICAgICovCiAgIGlmIChpZnAtPmlmX2ZsYWdzICYgSUZG X0JST0FEQ0FTVCkKICAgICBGRVRfU0VUQklUKHNjLCBGRVRfVENSUkNSLCBG RVRfQUIpOwogICBlbHNlCiAgICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJD UiwgRkVUX0FCKTsKCiAgIC8qCiAgICAqIFByb2dyYW0gdGhlIG11bHRpY2Fz dCBmaWx0ZXIsIGlmIG5lY2Vzc2FyeS4KICAgICovCiAgIGZldF9zZXRtdWx0 aShzYyk7CgogICAvKgogICAgKiBMb2FkIHRoZSBhZGRyZXNzIG9mIHRoZSBS WCBsaXN0LgogICAgKi8KICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJDUiwg RkVUX1JFKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9SWExCQSwgdnRvcGh5 cygmc2MtPmZldF9sZGF0YS0+ZmV0X3J4X2xpc3RbMF0pKTsKCiAgIC8qCiAg ICAqIEVuYWJsZSBpbnRlcnJ1cHRzLgogICAgKi8KICAgQ1NSX1dSSVRFXzQo c2MsIEZFVF9JTVIsIEZFVF9JTlRSUyk7CiAgIENTUl9XUklURV80KHNjLCBG RVRfSVNSLCAweEZGRkZGRkZGKTsKCiAgIC8qIEVuYWJsZSByZWNlaXZlciBh bmQgdHJhbnNtaXR0ZXIuICovCiAgIEZFVF9TRVRCSVQoc2MsIEZFVF9UQ1JS Q1IsIEZFVF9SRSk7CgogICBGRVRfQ0xSQklUKHNjLCBGRVRfVENSUkNSLCBG RVRfVEUpOwogICBDU1JfV1JJVEVfNChzYywgRkVUX1RYTEJBLCB2dG9waHlz KCZzYy0+ZmV0X2xkYXRhLT5mZXRfdHhfbGlzdFswXSkpOwogICBGRVRfU0VU QklUKHNjLCBGRVRfVENSUkNSLCBGRVRfVEUpOwoKICAgLyogUmVzdG9yZSBz dGF0ZSBvZiBCTUNSICovCiAgIGlmIChzYy0+ZmV0X3BpbmZvICE9IE5VTEwp CiAgICAgZmV0X3BoeV93cml0ZXJlZyhzYywgUEhZX0JNQ1IsIHBoeV9ibWNy KTsKCiAgIGlmcC0+aWZfZmxhZ3MgfD0gSUZGX1JVTk5JTkc7CiAgIGlmcC0+ aWZfZmxhZ3MgJj0gfklGRl9PQUNUSVZFOwoKICAgKHZvaWQpc3BseChzKTsK CiAgIHJldHVybjsKfQoKCi8qCiAqIFNldCBtZWRpYSBvcHRpb25zLgogKi8K c3RhdGljIGludCBmZXRfaWZtZWRpYV91cGQoaWZwKQpzdHJ1Y3QgaWZuZXQg KmlmcDsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAgc3RydWN0IGlm bWVkaWEgKmlmbTsKCiAgIHNjID0gaWZwLT5pZl9zb2Z0YzsKICAgaWZtID0g JnNjLT5pZm1lZGlhOwoKICAgaWYgKElGTV9UWVBFKGlmbS0+aWZtX21lZGlh KSAhPSBJRk1fRVRIRVIpCiAgICAgcmV0dXJuKEVJTlZBTCk7CgogICBpZiAo SUZNX1NVQlRZUEUoaWZtLT5pZm1fbWVkaWEpID09IElGTV9BVVRPKQogICAg IGZldF9hdXRvbmVnX21paShzYywgRkVUX0ZMQUdfU0NIRURERUxBWSwgMSk7 CiAgIGVsc2UKICAgICBmZXRfc2V0bW9kZV9taWkoc2MsIGlmbS0+aWZtX21l ZGlhKTsKCiAgIHJldHVybigwKTsKfQoKCi8qCiAqIFJlcG9ydCBjdXJyZW50 IG1lZGlhIHN0YXR1cy4KICovCnN0YXRpYyB2b2lkIGZldF9pZm1lZGlhX3N0 cyhpZnAsIGlmbXIpCnN0cnVjdCBpZm5ldCAqaWZwOwpzdHJ1Y3QgaWZtZWRp YXJlcSAqaWZtcjsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAgdV9p bnQxNl90IGFkdmVydCA9IDAsIGFiaWxpdHkgPSAwLCBhYmlsaXR5MiA9IDA7 CgogICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZm1yLT5pZm1fYWN0aXZl ID0gSUZNX0VUSEVSOwoKICAgaWYgKCEoZmV0X3BoeV9yZWFkcmVnKHNjLCBQ SFlfQk1DUikgJiBQSFlfQk1DUl9BVVRPTkVHRU5CTCkpCiAgIHsKLyogdGhp cyB2ZXJzaW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwKICAgICAgaWYgKGZl dF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpICYgUEhZX0JNQ1JfMTAwMCkK ICAgICAgICBpZm1yLT5pZm1fYWN0aXZlID0gSUZNX0VUSEVSfElGTV8xMDAw VFg7CiovCiAgICAgIGlmIChmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTUNS KSAmIFBIWV9CTUNSX1NQRUVEU0VMKQogICAgICAgIGlmbXItPmlmbV9hY3Rp dmUgPSBJRk1fRVRIRVJ8SUZNXzEwMF9UWDsKICAgICAgZWxzZQogICAgICAg IGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEwX1Q7CiAgICAg IGlmIChmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTUNSKSAmIFBIWV9CTUNS X0RVUExFWCkKICAgICAgICBpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV9GRFg7 CiAgICAgIGVsc2UKICAgICAgICBpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV9I RFg7CiAgICAgIHJldHVybjsKICAgfQoKICAgYWJpbGl0eSA9IGZldF9waHlf cmVhZHJlZyhzYywgUEhZX0xQQVIpOwogICBhZHZlcnQgPSBmZXRfcGh5X3Jl YWRyZWcoc2MsIFBIWV9BTkFSKTsKCi8qIHRoaXMgdmVyc2lvbiBkaWQgbm90 IHN1cHBvcnQgMTAwME0sCiAgIGlmIChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlk ID0gTWFydmVsbFBIWUlEMCkKICAgewogICAgICBhYmlsaXR5MiA9IGZldF9w aHlfcmVhZHJlZyhzYywgUEhZXzEwMDBTUik7CiAgICAgIGlmIChhYmlsaXR5 MiAmIFBIWV8xMDAwU1JfMTAwMEJUWEZVTEwpCiAgICAgIHsKICAgICAgICAg YWR2ZXJ0ID0gMDsKICAgICAgICAgYWJpbGl0eSA9IDA7CiAgICAgICAgIGlm bXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZE WDsKCiAgICAgIH0KICAgICAgZWxzZSBpZiAoYWJpbGl0eSAmIFBIWV8xMDAw U1JfMTAwMEJUWEhBTEYpCiAgICAgIHsKICAgICAgICAgYWR2ZXJ0ID0gMDsK ICAgICAgICAgYWJpbGl0eSA9IDA7CiAgICAgICAgIGlmbXItPmlmbV9hY3Rp dmUgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0hEWDsKICAgICAgfQog ICB9CiovCgogICBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlQ0ICYmIGFi aWxpdHkgJiBQSFlfQU5BUl8xMDBCVDQpCiAgICAgaWZtci0+aWZtX2FjdGl2 ZSA9IElGTV9FVEhFUnxJRk1fMTAwX1Q0OwogICBlbHNlIGlmIChhZHZlcnQg JiBQSFlfQU5BUl8xMDBCVFhGVUxMICYmIGFiaWxpdHkgJiBQSFlfQU5BUl8x MDBCVFhGVUxMKQogICAgIGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8 SUZNXzEwMF9UWHxJRk1fRkRYOwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlf QU5BUl8xMDBCVFhIQUxGICYmIGFiaWxpdHkgJiBQSFlfQU5BUl8xMDBCVFhI QUxGKQogICAgIGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEw MF9UWHxJRk1fSERYOwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlfQU5BUl8x MEJURlVMTCAmJiBhYmlsaXR5ICYgUEhZX0FOQVJfMTBCVEZVTEwpCiAgICAg aWZtci0+aWZtX2FjdGl2ZSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRY OwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlfQU5BUl8xMEJUSEFMRiAmJiBh YmlsaXR5ICYgUEhZX0FOQVJfMTBCVEhBTEYpCiAgICAgaWZtci0+aWZtX2Fj dGl2ZSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fSERYOwoKICAgcmV0dXJu Owp9CgoKc3RhdGljIGludCBmZXRfaW9jdGwoaWZwLCBjb21tYW5kLCBkYXRh KQpzdHJ1Y3QgaWZuZXQgKmlmcDsKdV9sb25nIGNvbW1hbmQ7CmNhZGRyX3Qg ZGF0YTsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYyA9IGlmcC0+aWZfc29m dGM7CiAgIHN0cnVjdCBpZnJlcSAqaWZyID0gKHN0cnVjdCBpZnJlcSAqKWRh dGE7CiAgIGludCBzLCBlcnJvciA9IDA7CgogICBzID0gc3BsaW1wKCk7Cgog ICBzd2l0Y2goY29tbWFuZCkKICAgewogICAgICBjYXNlIFNJT0NTSUZBRERS OgogICAgICBjYXNlIFNJT0NHSUZBRERSOgogICAgICBjYXNlIFNJT0NTSUZN VFU6CiAgICAgICAgZXJyb3IgPSBldGhlcl9pb2N0bChpZnAsIGNvbW1hbmQs IGRhdGEpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNJT0NTSUZGTEFH UzoKICAgICAgICBpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9VUCkKICAgICAg ICAgIGZldF9pbml0KHNjKTsKICAgICAgICBlbHNlIGlmIChpZnAtPmlmX2Zs YWdzICYgSUZGX1JVTk5JTkcpCiAgICAgICAgICBmZXRfc3RvcChzYyk7CiAg ICAgICAgZXJyb3IgPSAwOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNJ T0NBRERNVUxUSToKICAgICAgY2FzZSBTSU9DREVMTVVMVEk6CiAgICAgICAg ZmV0X3NldG11bHRpKHNjKTsKICAgICAgICBlcnJvciA9IDA7CiAgICAgICAg YnJlYWs7CiAgICAgIGNhc2UgU0lPQ0dJRk1FRElBOgogICAgICBjYXNlIFNJ T0NTSUZNRURJQToKICAgICAgICBlcnJvciA9IGlmbWVkaWFfaW9jdGwoaWZw LCBpZnIsICZzYy0+aWZtZWRpYSwgY29tbWFuZCk7CiAgICAgICAgYnJlYWs7 CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgZXJyb3IgPSBFSU5WQUw7CiAgICAg ICAgYnJlYWs7CiAgIH0KCiAgICh2b2lkKXNwbHgocyk7CgogICByZXR1cm4o ZXJyb3IpOwp9CgoKc3RhdGljIHZvaWQgZmV0X3dhdGNoZG9nKGlmcCkKc3Ry dWN0IGlmbmV0ICppZnA7CnsKICAgc3RydWN0IGZldF9zb2Z0YyAqc2M7Cgog ICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZiAoc2MtPmZldF9hdXRvbmVn KQogICB7CiAgICAgIGZldF9hdXRvbmVnX21paShzYywgRkVUX0ZMQUdfREVM QVlUSU1FTywgMSk7CiAgICAgIHJldHVybjsKICAgfQoKICAgaWZwLT5pZl9v ZXJyb3JzKys7CiAgIHByaW50ZigiZmV0JWQ6IHdhdGNoZG9nIHRpbWVvdXRc biIsIHNjLT5mZXRfdW5pdCk7CgogICBpZiAoIShmZXRfcGh5X3JlYWRyZWco c2MsIFBIWV9CTVNSKSAmIFBIWV9CTVNSX0xJTktTVEFUKSkKICAgICBwcmlu dGYoImZldCVkOiBubyBjYXJyaWVyIC0gdHJhbnNjZWl2ZXIgY2FibGUgcHJv YmxlbT9cbiIsIHNjLT5mZXRfdW5pdCk7CgogICBmZXRfc3RvcChzYyk7CiAg IGZldF9yZXNldChzYyk7CiAgIGZldF9pbml0KHNjKTsKCiAgIGlmIChpZnAt PmlmX3NuZC5pZnFfaGVhZCAhPSBOVUxMKQogICAgIGZldF9zdGFydChpZnAp OwoKICAgcmV0dXJuOwp9CgoKLyoKICogU3RvcCB0aGUgYWRhcHRlciBhbmQg ZnJlZSBhbnkgbWJ1ZnMgYWxsb2NhdGVkIHRvIHRoZQogKiBSWCBhbmQgVFgg bGlzdHMuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc3RvcChzYykKc3RydWN0IGZl dF9zb2Z0YyAqc2M7CnsKICAgcmVnaXN0ZXIgaW50IGk7CiAgIHN0cnVjdCBp Zm5ldCAqaWZwOwoKICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7CiAgIGlm cC0+aWZfdGltZXIgPSAwOwoKICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJD UiwgKEZFVF9SRXxGRVRfVEUpKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9J TVIsIDB4MDAwMDAwMDApOwogICBDU1JfV1JJVEVfNChzYywgRkVUX1RYTEJB LCAweDAwMDAwMDAwKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9SWExCQSwg MHgwMDAwMDAwMCk7CgogICAvKgogICAgKiBGcmVlIGRhdGEgaW4gdGhlIFJY IGxpc3RzLgogICAgKi8KICAgZm9yIChpID0gMDsgaSA8IEZFVF9SWF9MSVNU X0NOVDsgaSsrKQogICB7CiAgICAgIGlmIChzYy0+ZmV0X2NkYXRhLmZldF9y eF9jaGFpbltpXS5mZXRfbWJ1ZiAhPSBOVUxMKQogICAgICB7CiAgICAgICAg IG1fZnJlZW0oc2MtPmZldF9jZGF0YS5mZXRfcnhfY2hhaW5baV0uZmV0X21i dWYpOwogICAgICAgICBzYy0+ZmV0X2NkYXRhLmZldF9yeF9jaGFpbltpXS5m ZXRfbWJ1ZiA9IE5VTEw7CiAgICAgIH0KICAgfQogICBiemVybygoY2hhciAq KSZzYy0+ZmV0X2xkYXRhLT5mZXRfcnhfbGlzdCwgc2l6ZW9mKHNjLT5mZXRf bGRhdGEtPmZldF9yeF9saXN0KSk7CgogICAvKgogICAgKiBGcmVlIHRoZSBU WCBsaXN0IGJ1ZmZlcnMuCiAgICAqLwogICBmb3IgKGkgPSAwOyBpIDwgRkVU X1RYX0xJU1RfQ05UOyBpKyspCiAgIHsKICAgICAgaWYgKHNjLT5mZXRfY2Rh dGEuZmV0X3R4X2NoYWluW2ldLmZldF9tYnVmICE9IE5VTEwpCiAgICAgIHsK ICAgICAgICAgbV9mcmVlbShzYy0+ZmV0X2NkYXRhLmZldF90eF9jaGFpbltp XS5mZXRfbWJ1Zik7CiAgICAgICAgIHNjLT5mZXRfY2RhdGEuZmV0X3R4X2No YWluW2ldLmZldF9tYnVmID0gTlVMTDsKICAgICAgfQogICB9CiAgIGJ6ZXJv KChjaGFyICopJnNjLT5mZXRfbGRhdGEtPmZldF90eF9saXN0LCBzaXplb2Yo c2MtPmZldF9sZGF0YS0+ZmV0X3R4X2xpc3QpKTsKCiAgIGlmcC0+aWZfZmxh Z3MgJj0gfihJRkZfUlVOTklORyB8IElGRl9PQUNUSVZFKTsKCiAgIHJldHVy bjsKfQoKCi8qCiAqIFN0b3AgYWxsIGNoaXAgSS9PIHNvIHRoYXQgdGhlIGtl cm5lbCdzIHByb2JlIHJvdXRpbmVzIGRvbid0CiAqIGdldCBjb25mdXNlZCBi eSBlcnJhbnQgRE1BcyB3aGVuIHJlYm9vdGluZy4KICovCnN0YXRpYyB2b2lk IGZldF9zaHV0ZG93bihob3d0bywgYXJnKQppbnQgaG93dG87CnZvaWQgKmFy ZzsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYyA9IChzdHJ1Y3QgZmV0X3Nv ZnRjICopYXJnOwoKICAgZmV0X3N0b3Aoc2MpOwoKICAgcmV0dXJuOwp9CgoK c3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlIGZldF9kZXZpY2UgPSB7CiAgICAg ICAgImZldCIsCiAgICAgICAgZmV0X3Byb2JlLAogICAgICAgIGZldF9hdHRh Y2gsCiAgICAgICAgJmZldF9jb3VudCwKICAgICAgICBOVUxMCn07CkRBVEFf U0VUKHBjaWRldmljZV9zZXQsIGZldF9kZXZpY2UpOwo= ------=_NextPart_000_6671_3eb_241d Content-Type: application/octet-stream; name="IFFETreg.H" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="IFFETreg.H" LyoKICogcmVnaXN0ZXIgZGVmaW5pdGlvbnMuCiAqLwojZGVmaW5lIEZFVF9Q QVIwICAgICAgICAgMHgwICAgICAvKiBwaHlzaWNhbCBhZGRyZXNzIDAtMyAq LwojZGVmaW5lIEZFVF9QQVIxICAgICAgICAgMHgwNCAgICAvKiBwaHlzaWNh bCBhZGRyZXNzIDQtNSAqLwojZGVmaW5lIEZFVF9NQVIwICAgICAgICAgMHgw OCAgICAvKiBtdWx0aWNhc3QgYWRkcmVzcyAwLTMgKi8KI2RlZmluZSBGRVRf TUFSMSAgICAgICAgIDB4MEMgICAgLyogbXVsdGljYXN0IGFkZHJlc3MgNC03 ICovCiNkZWZpbmUgRkVUX0ZBUjAgICAgICAgICAweDEwICAgIC8qIGZsb3ct Y29udHJvbCBhZGRyZXNzIDAtMyAqLwojZGVmaW5lIEZFVF9GQVIxICAgICAg ICAgMHgxNCAgICAvKiBmbG93LWNvbnRyb2wgYWRkcmVzcyA0LTUgKi8KI2Rl ZmluZSBGRVRfVENSUkNSICAgICAgIDB4MTggICAgLyogcmVjZWl2ZSAmIHRy YW5zbWl0IGNvbmZpZ3VyYXRpb24gKi8KI2RlZmluZSBGRVRfQkNSICAgICAg ICAgIDB4MUMgICAgLyogYnVzIGNvbW1hbmQgKi8KI2RlZmluZSBGRVRfVFhQ RFIgICAgICAgIDB4MjAgICAgLyogdHJhbnNtaXQgcG9sbGluZyBkZW1hbmQg Ki8KI2RlZmluZSBGRVRfUlhQRFIgICAgICAgIDB4MjQgICAgLyogcmVjZWl2 ZSBwb2xsaW5nIGRlbWFuZCAqLwojZGVmaW5lIEZFVF9SWENXUCAgICAgICAg MHgyOCAgICAvKiByZWNlaXZlIGN1cnJlbnQgd29yZCBwb2ludGVyICovCiNk ZWZpbmUgRkVUX1RYTEJBICAgICAgICAweDJDICAgIC8qIHRyYW5zbWl0IGxp c3QgYmFzZSBhZGRyZXNzICovCiNkZWZpbmUgRkVUX1JYTEJBICAgICAgICAw eDMwICAgIC8qIHJlY2VpdmUgbGlzdCBiYXNlIGFkZHJlc3MgKi8KI2RlZmlu ZSBGRVRfSVNSICAgICAgICAgIDB4MzQgICAgLyogaW50ZXJydXB0IHN0YXR1 cyAqLwojZGVmaW5lIEZFVF9JTVIgICAgICAgICAgMHgzOCAgICAvKiBpbnRl cnJ1cHQgbWFzayAqLwojZGVmaW5lIEZFVF9GVEggICAgICAgICAgMHgzQyAg ICAvKiBmbG93IGNvbnRyb2wgaGlnaC9sb3cgdGhyZXNob2xkICovCiNkZWZp bmUgRkVUX01BTkFHRU1FTlQgICAweDQwICAgIC8qIGJvb3Ryb20vZWVwcm9t IGFuZCBtaWkgbWFuYWdlbWVudCAqLwojZGVmaW5lIEZFVF9UQUxMWSAgICAg ICAgMHg0NCAgICAvKiB0YWxseSBjb3VudGVycyBmb3IgY3JjIGFuZCBtcGEg Ki8KI2RlZmluZSBGRVRfVFNSICAgICAgICAgIDB4NDggICAgLyogdGFsbHkg Y291bnRlciBmb3IgdHJhbnNtaXQgc3RhdHVzICovCiNkZWZpbmUgRkVUX1BI WUJBU0UJMHg0YwoKLyoKICogUmVjZWl2ZSBDb25maWd1cmF0aW9uIFJlZ2lz dGVyCiAqLwojZGVmaW5lIEZFVF9SWFJVTiAgICAgICAgMHgwMDAwODAwMCAg ICAgIC8qIHJlY2VpdmUgcnVubmluZyBzdGF0dXMgKi8KI2RlZmluZSBGRVRf RUlFTiAgICAgICAgIDB4MDAwMDQwMDAgICAgICAvKiBlYXJseSBpbnRlcnJ1 cHQgZW5hYmxlICovCiNkZWZpbmUgRkVUX1JGQ0VOICAgICAgICAweDAwMDAy MDAwICAgICAgLyogcmVjZWl2ZSBmbG93IGNvbnRyb2wgcGFja2V0IGVuYWJs ZSAqLwojZGVmaW5lIEZFVF9OREZBICAgICAgICAgMHgwMDAwMTAwMCAgICAg IC8qIG5vdCBkZWZpbmVkIGZsb3cgY29udHJvbCBhZGRyZXNzICovCiNkZWZp bmUgRkVUX1JCTEVOICAgICAgICAweDAwMDAwODAwICAgICAgLyogcmVjZWl2 ZSBidXJzdCBsZW5ndGggZW5hYmxlICovCiNkZWZpbmUgRkVUX1JQQkxFMSAg ICAgICAweDAwMDAwMDAwICAgICAgLyogMSB3b3JkICovCiNkZWZpbmUgRkVU X1JQQkxFNCAgICAgICAweDAwMDAwMTAwICAgICAgLyogNCB3b3JkcyAqLwoj ZGVmaW5lIEZFVF9SUEJMRTggICAgICAgMHgwMDAwMDIwMCAgICAgIC8qIDgg d29yZHMgKi8KI2RlZmluZSBGRVRfUlBCTEUxNiAgICAgIDB4MDAwMDAzMDAg ICAgICAvKiAxNiB3b3JkcyAqLwojZGVmaW5lIEZFVF9SUEJMRTMyICAgICAg MHgwMDAwMDQwMCAgICAgIC8qIDMyIHdvcmRzICovCiNkZWZpbmUgRkVUX1JQ QkxFNjQgICAgICAweDAwMDAwNTAwICAgICAgLyogNjQgd29yZHMgKi8KI2Rl ZmluZSBGRVRfUlBCTEUxMjggICAgIDB4MDAwMDA2MDAgICAgICAvKiAxMjgg d29yZHMgKi8KI2RlZmluZSBGRVRfUlBCTEU1MTIgICAgIDB4MDAwMDA3MDAg ICAgICAvKiA1MTIgd29yZHMgKi8KI2RlZmluZSBGRVRfUFJPTSAgICAgICAg IDB4MDAwMDAwMDgwICAgICAvKiBwcm9taXNjdW91cyBtb2RlICovCiNkZWZp bmUgRkVUX0FCICAgICAgICAgICAweDAwMDAwMDA0MCAgICAgLyogYWNjZXB0 IGJyb2FkY2FzdCAqLwojZGVmaW5lIEZFVF9BTSAgICAgICAgICAgMHgwMDAw MDAwMjAgICAgIC8qIGFjY2VwdCBtdXRsaWNhc3QgKi8KI2RlZmluZSBGRVRf QVJQICAgICAgICAgIDB4MDAwMDAwMDA4ICAgICAvKiByZWNlaXZlIHJ1bnQg cGt0ICovCiNkZWZpbmUgRkVUX0FMUCAgICAgICAgICAweDAwMDAwMDAwNCAg ICAgLyogcmVjZWl2ZSBsb25nIHBrdCAqLwojZGVmaW5lIEZFVF9TRVAgICAg ICAgICAgMHgwMDAwMDAwMDIgICAgIC8qIHJlY2VpdmUgZXJyb3IgcGt0ICov CiNkZWZpbmUgRkVUX1JFICAgICAgICAgICAweDAwMDAwMDAwMSAgICAgLyog cmVjZWl2ZSBlbmFibGUgKi8KCi8qCiAqIFRyYW5zbWl0IENvbmZpZ3VyYXRp b24gUmVnaXN0ZXIKICovCiNkZWZpbmUgRkVUX1RYUlVOICAgICAgICAweDA0 MDAwMDAwICAgICAgLyogdHJhbnNtaXQgcnVubmluZyBzdGF0dXMgKi8KI2Rl ZmluZSBGRVRfRW5oYW5jZWQgICAgIDB4MDIwMDAwMDAgICAgICAvKiB0cmFu c21pdCBlbmhhbmNlZCBtb2RlICovCiNkZWZpbmUgRkVUX1RGQ0VOICAgICAg ICAweDAxMDAwMDAwICAgICAgLyogdHggZmxvdyBjb250cm9sIHBhY2tldCBl bmFibGUgKi8KI2RlZmluZSBGRVRfVEZUNjQgICAgICAgIDB4MDAwMDAwMDAg ICAgICAvKiA2NCBieXRlcyAqLwojZGVmaW5lIEZFVF9URlQzMiAgICAgICAg MHgwMDIwMDAwMCAgICAgIC8qIDMyIGJ5dGVzICovCiNkZWZpbmUgRkVUX1RG VDEyOCAgICAgICAweDAwNDAwMDAwICAgICAgLyogMTI4IGJ5dGVzICovCiNk ZWZpbmUgRkVUX1RGVDI1NiAgICAgICAweDAwNjAwMDAwICAgICAgLyogMjU2 IGJ5dGVzICovCiNkZWZpbmUgRkVUX1RGVDUxMiAgICAgICAweDAwODAwMDAw ICAgICAgLyogNTEyIGJ5dGVzICovCiNkZWZpbmUgRkVUX1RGVDc2OCAgICAg ICAweDAwQTAwMDAwICAgICAgLyogNzY4IGJ5dGVzICovCiNkZWZpbmUgRkVU X1RGVDEwMjQgICAgICAweDAwQzAwMDAwICAgICAgLyogMTAyNCBieXRlcyAq LwojZGVmaW5lIEZFVF9URlRTRiAgICAgICAgMHgwMEUwMDAwMCAgICAgIC8q IHN0b3JlIGFuZCBmb3J3YXJkICovCiNkZWZpbmUgRkVUX0ZEICAgICAgICAg ICAweDAwMTAwMDAwICAgICAgLyogZnVsbCBkdXBsZXggbW9kZSAqLwojZGVm aW5lIEZFVF9QUzEwICAgICAgICAgMHgwMDA4MDAwMCAgICAgIC8qIHBvcnQg c3BlZWQgaXMgMTBNICovCiNkZWZpbmUgRkVUX1RFICAgICAgICAgICAweDAw MDQwMDAwICAgICAgLyogdHJhbnNtaXQgZW5hYmxlICovCiNkZWZpbmUgRkVU X1BTMTAwMCAgICAgICAweDAwMDEwMDAwICAgICAgLyogcG9ydCBzcGVlZCBp cyAxMDAwTSAqLwovKgogKiBCdXMgQ29tbWFuZCBSZWdpc3RlcgogKi8KI2Rl ZmluZSBGRVRfUkxFICAgICAgICAgIDB4MDAwMDAxMDAgICAgICAvKiByZWFk IGxpbmUgY29tbWFuZCBlbmFibGUgKi8KI2RlZmluZSBGRVRfUk1FICAgICAg ICAgIDB4MDAwMDAwODAgICAgICAvKiByZWFkIG11bHRpcGxlIGNvbW1hbmQg ZW5hYmxlICovCiNkZWZpbmUgRkVUX1dJRSAgICAgICAgICAweDAwMDAwMDQw ICAgICAgLyogd3JpdGUgYW5kIGludmFsaWRhdGUgY21kIGVuYWJsZSAqLwoj ZGVmaW5lIEZFVF9QQkwxICAgICAgICAgMHgwMDAwMDAwMCAgICAgIC8qIDEg ZHdvcmQgKi8KI2RlZmluZSBGRVRfUEJMNCAgICAgICAgIDB4MDAwMDAwMDgg ICAgICAvKiA0IGR3b3JkcyAqLwojZGVmaW5lIEZFVF9QQkw4ICAgICAgICAg MHgwMDAwMDAxMCAgICAgIC8qIDggZHdvcmRzICovCiNkZWZpbmUgRkVUX1BC TDE2ICAgICAgICAweDAwMDAwMDE4ICAgICAgLyogMTYgZHdvcmRzICovCiNk ZWZpbmUgRkVUX1BCTDMyICAgICAgICAweDAwMDAwMDIwICAgICAgLyogMzIg ZHdvcmRzICovCiNkZWZpbmUgRkVUX1BCTDY0ICAgICAgICAweDAwMDAwMDI4 ICAgICAgLyogNjQgZHdvcmRzICovCiNkZWZpbmUgRkVUX1BCTDEyOCAgICAg ICAweDAwMDAwMDMwICAgICAgLyogMTI4IGR3b3JkcyAqLwojZGVmaW5lIEZF VF9QQkw1MTIgICAgICAgMHgwMDAwMDAzOCAgICAgIC8qIDUxMiBkd29yZHMg Ki8KI2RlZmluZSBGRVRfQUJSICAgICAgICAgIDB4MDAwMDAwMDQgICAgICAv KiBhcmJpdHJhdGlvbiBydWxlICovCiNkZWZpbmUgRkVUX0JMUyAgICAgICAg ICAweDAwMDAwMDAyICAgICAgLyogYmlnL2xpdHRsZSBlbmRpYW4gc2VsZWN0 ICovCiNkZWZpbmUgRkVUX1NXUiAgICAgICAgICAweDAwMDAwMDAxICAgICAg Lyogc29mdHdhcmUgcmVzZXQgKi8KCi8qCiAqIFRyYW5zbWl0IFBvbGwgRGVt YW5kIFJlZ2lzdGVyCiAqLwojZGVmaW5lIEZFVF9UeFBvbGxEZW1hbmQgMHgx CgovKgogKiBSZWNlaXZlIFBvbGwgRGVtYW5kIFJlZ2lzdGVyCiAqLwojZGVm aW5lIEZFVF9SeFBvbGxEZW1hbmQgMHgwMQoKLyoKICogSW50ZXJydXB0IFN0 YXR1cyBSZWdpc3RlcgogKi8KI2RlZmluZSBGRVRfUkZDT04gICAgICAgIDB4 MDAwMjAwMDAgICAgICAvKiByZWNlaXZlIGZsb3cgY29udHJvbCB4b24gcGFj a2V0ICovCiNkZWZpbmUgRkVUX1JGQ09GRiAgICAgICAweDAwMDEwMDAwICAg ICAgLyogcmVjZWl2ZSBmbG93IGNvbnRyb2wgeG9mZiBwYWNrZXQgKi8KI2Rl ZmluZSBGRVRfTFNDU3RhdHVzICAgIDB4MDAwMDgwMDAgICAgICAvKiBsaW5r IHN0YXR1cyBjaGFuZ2UgKi8KI2RlZmluZSBGRVRfQU5DU3RhdHVzICAgIDB4 MDAwMDQwMDAgICAgICAvKiBhdXRvbmVnb3RpYXRpb24gY29tcGxldGVkICov CiNkZWZpbmUgRkVUX0ZCRSAgICAgICAgICAweDAwMDAyMDAwICAgICAgLyog ZmF0YWwgYnVzIGVycm9yICovCiNkZWZpbmUgRkVUX0ZCRU1hc2sgICAgICAw eDAwMDAxODAwCiNkZWZpbmUgRkVUX1Bhcml0eUVyciAgICAweDAwMDAwMDAw ICAgICAgLyogcGFyaXR5IGVycm9yICovCiNkZWZpbmUgRkVUX01hc3RlckVy ciAgICAweDAwMDAwODAwICAgICAgLyogbWFzdGVyIGVycm9yICovCiNkZWZp bmUgRkVUX1RhcmdldEVyciAgICAweDAwMDAxMDAwICAgICAgLyogdGFyZ2V0 IGFib3J0ICovCiNkZWZpbmUgRkVUX1RVTkYgICAgICAgICAweDAwMDAwNDAw ICAgICAgLyogdHJhbnNtaXQgdW5kZXJmbG93ICovCiNkZWZpbmUgRkVUX1JP VkYgICAgICAgICAweDAwMDAwMjAwICAgICAgLyogcmVjZWl2ZSBvdmVyZmxv dyAqLwojZGVmaW5lIEZFVF9FVEkgICAgICAgICAgMHgwMDAwMDEwMCAgICAg IC8qIHRyYW5zbWl0IGVhcmx5IGludCAqLwojZGVmaW5lIEZFVF9FUkkgICAg ICAgICAgMHgwMDAwMDA4MCAgICAgIC8qIHJlY2VpdmUgZWFybHkgaW50ICov CiNkZWZpbmUgRkVUX0NOVE9WRiAgICAgICAweDAwMDAwMDQwICAgICAgLyog Y291bnRlciBvdmVyZmxvdyAqLwojZGVmaW5lIEZFVF9SQlUgICAgICAgICAg MHgwMDAwMDAyMCAgICAgIC8qIHJlY2VpdmUgYnVmZmVyIHVuYXZhaWxhYmxl ICovCiNkZWZpbmUgRkVUX1RCVSAgICAgICAgICAweDAwMDAwMDEwICAgICAg LyogdHJhbnNtaXQgYnVmZmVyIHVuYXZpbGFibGUgKi8KI2RlZmluZSBGRVRf VEkgICAgICAgICAgIDB4MDAwMDAwMDggICAgICAvKiB0cmFuc21pdCBpbnRl cnJ1cHQgKi8KI2RlZmluZSBGRVRfUkkgICAgICAgICAgIDB4MDAwMDAwMDQg ICAgICAvKiByZWNlaXZlIGludGVycnVwdCAqLwojZGVmaW5lIEZFVF9SeEVy ciAgICAgICAgMHgwMDAwMDAwMiAgICAgIC8qIHJlY2VpdmUgZXJyb3IgKi8K Ci8qCiAqIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCiAqLwojZGVmaW5lIEZF VF9NUkZDT04gICAgICAgMHgwMDAyMDAwMCAgICAgIC8qIHJlY2VpdmUgZmxv dyBjb250cm9sIHhvbiBwYWNrZXQgKi8KI2RlZmluZSBGRVRfTVJGQ09GRiAg ICAgIDB4MDAwMTAwMDAgICAgICAvKiByZWNlaXZlIGZsb3cgY29udHJvbCB4 b2ZmIHBhY2tldCAqLwojZGVmaW5lIEZFVF9NTFNDU3RhdHVzICAgMHgwMDAw ODAwMCAgICAgIC8qIGxpbmsgc3RhdHVzIGNoYW5nZSAqLwojZGVmaW5lIEZF VF9NQU5DU3RhdHVzICAgMHgwMDAwNDAwMCAgICAgIC8qIGF1dG9uZWdvdGlh dGlvbiBjb21wbGV0ZWQgKi8KI2RlZmluZSBGRVRfTUZCRSAgICAgICAgIDB4 MDAwMDIwMDAgICAgICAvKiBmYXRhbCBidXMgZXJyb3IgKi8KI2RlZmluZSBG RVRfTUZCRU1hc2sgICAgIDB4MDAwMDE4MDAKI2RlZmluZSBGRVRfTVRVTkYg ICAgICAgIDB4MDAwMDA0MDAgICAgICAvKiB0cmFuc21pdCB1bmRlcmZsb3cg Ki8KI2RlZmluZSBGRVRfTVJPVkYgICAgICAgIDB4MDAwMDAyMDAgICAgICAv KiByZWNlaXZlIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX01FVEkgICAgICAg ICAweDAwMDAwMTAwICAgICAgLyogdHJhbnNtaXQgZWFybHkgaW50ICovCiNk ZWZpbmUgRkVUX01FUkkgICAgICAgICAweDAwMDAwMDgwICAgICAgLyogcmVj ZWl2ZSBlYXJseSBpbnQgKi8KI2RlZmluZSBGRVRfTUNOVE9WRiAgICAgIDB4 MDAwMDAwNDAgICAgICAvKiBjb3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUg RkVUX01SQlUgICAgICAgICAweDAwMDAwMDIwICAgICAgLyogcmVjZWl2ZSBi dWZmZXIgdW5hdmFpbGFibGUgKi8KI2RlZmluZSBGRVRfTVRCVSAgICAgICAg IDB4MDAwMDAwMTAgICAgICAvKiB0cmFuc21pdCBidWZmZXIgdW5hdmlsYWJs ZSAqLwojZGVmaW5lIEZFVF9NVEkgICAgICAgICAgMHgwMDAwMDAwOCAgICAg IC8qIHRyYW5zbWl0IGludGVycnVwdCAqLwojZGVmaW5lIEZFVF9NUkkgICAg ICAgICAgMHgwMDAwMDAwNCAgICAgIC8qIHJlY2VpdmUgaW50ZXJydXB0ICov CiNkZWZpbmUgRkVUX01SeEVyciAgICAgICAweDAwMDAwMDAyICAgICAgLyog cmVjZWl2ZSBlcnJvciAqLwoKI2RlZmluZSBGRVRfSU5UUlMgRkVUX0ZCRXxG RVRfTVJCVXxGRVRfVEJVfEZFVF9NVEl8RkVUX01SSXxGRVRfTVJ4RXJyCgov KgogKiBGbG93IENvbnRyb2wgSGlnaC9Mb3cgVGhyZXNob2xkIFJlZ2lzdGVy CiAqLwojZGVmaW5lIEZFVF9GQ0hUU2hpZnQgICAgMTYgICAgICAvKiBmbG93 IGNvbnRyb2wgaGlnaCB0aHJlc2hvbGQgKi8KI2RlZmluZSBGRVRfRkNMVFNo aWZ0ICAgIDAgICAgICAgLyogZmxvdyBjb250cm9sIGxvdyB0aHJlc2hvbGQg Ki8KCi8qCiAqIEJvb3RST00vRUVQUk9NL01JSSBNYW5hZ2VtZW50IFJlZ2lz dGVyCiAqLwojZGVmaW5lIEZFVF9NQVNLX01JSVJfTUlJX1JFQUQgICAweDAw MDAwMDAwCiNkZWZpbmUgRkVUX01BU0tfTUlJUl9NSUlfV1JJVEUgIDB4MDAw MDAwMDgKI2RlZmluZSBGRVRfTUFTS19NSUlSX01JSV9NRE8gICAgMHgwMDAw MDAwNAojZGVmaW5lIEZFVF9NQVNLX01JSVJfTUlJX01ESSAgICAweDAwMDAw MDAyCiNkZWZpbmUgRkVUX01BU0tfTUlJUl9NSUlfTURDICAgIDB4MDAwMDAw MDEKCi8qCiAqIFRhbGx5IENvdW50ZXIgZm9yIENSQyBhbmQgTVBBCiAqLwoj ZGVmaW5lIEZFVF9UQ09WRiAgICAgICAgMHg4MDAwMDAwMCAgICAgIC8qIGNy YyB0YWxseSBjb3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX0NSQ01h c2sgICAgICAweDdmZmYwMDAwICAgICAgLyogY3JjIG51bWJlcjogYml0IDE2 LTMwICovCiNkZWZpbmUgRkVUX0NSQ1NoaWZ0ICAgICAxNgojZGVmaW5lIEZF VF9UTU9WRiAgICAgICAgMHgwMDAwODAwMCAgICAgIC8qIG1wYSB0YWxseSBj b3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX01QQU1hc2sgICAgICAw eDAwMDA3ZmZmICAgICAgLyogbXBhIG51bWJlcjogYml0IDAtMTQgKi8KI2Rl ZmluZSBGRVRfTVBBU2hpZnQgICAgIDAKCi8qCiAqIFRhbGx5IENvdW50ZXJz IGZvciB0cmFuc21pdCBzdGF0dXMKICovCiNkZWZpbmUgRkVUX0Fib3J0TWFz ayAgICAgIDB4ZmYwMDAwMDAgICAgLyogdHJhbnNtaXQgYWJvcnQgbnVtYmVy ICovCiNkZWZpbmUgRkVUX0Fib3J0U2hpZnQgICAgIDI0CiNkZWZpbmUgRkVU X0xDb2xNYXNrICAgICAgIDB4MDBmZjAwMDAgICAgLyogdHJhbnNtaXQgbGF0 ZSBjb2xsaXNpb25zICovCiNkZWZpbmUgRkVUX0xDb2xTaGlmdCAgICAgIDE2 CiNkZWZpbmUgRkVUX05DUk1hc2sgICAgICAgIDB4MDAwMGZmZmYgICAgLyog dHJhbnNtaXQgcmV0cnkgbnVtYmVyICovCiNkZWZpbmUgRkVUX05DUlNoaWZ0 ICAgICAgIDAKCi8qCiAqIFRYL1JYIGRlc2NyaXB0b3Igc3RydWN0dXJlLgog Ki8KCnN0cnVjdCBmZXRfZGVzYyB7CiAgICAgICAgdV9pbnQzMl90ICAgICAg IGZldF9zdGF0dXM7CiAgICAgICAgdV9pbnQzMl90ICAgICAgIGZldF9jdGw7 CiAgICAgICAgdV9pbnQzMl90ICAgICAgIGZldF9kYXRhOwogICAgICAgIHVf aW50MzJfdCAgICAgICBmZXRfbmV4dDsKfTsKCi8qCiAqIGZvciB0eC9yeCBk ZXNjcmlwdG9ycwogKi8KI2RlZmluZSBGRVRfT1dOQnlOSUMgICAgIDB4ODAw MDAwMDAKI2RlZmluZSBGRVRfT1dOQnlEcml2ZXIgIDB4MAoKLyoKICogcmVj ZWl2ZSBkZXNjcmlwdG9yIDAKICovCiNkZWZpbmUgRkVUX1JYT1dOICAgICAg ICAweDgwMDAwMDAwICAgICAgLyogb3duIGJpdCAqLwojZGVmaW5lIEZFVF9G TE5HTUFTSyAgICAgMHgwZmZmMDAwMCAgICAgIC8qIGZyYW1lIGxlbmd0aCAq LwojZGVmaW5lIEZFVF9GTE5HU2hpZnQgICAgMTYKI2RlZmluZSBGRVRfTUFS U1RBVFVTICAgIDB4MDAwMDQwMDAgICAgICAvKiBtdWx0aWNhc3QgYWRkcmVz cyByZWNlaXZlZCAqLwojZGVmaW5lIEZFVF9CQVJTVEFUVVMgICAgMHgwMDAw MjAwMCAgICAgIC8qIGJyb2FkY2FzdCBhZGRyZXNzIHJlY2VpdmVkICovCiNk ZWZpbmUgRkVUX1BIWVNUQVRVUyAgICAweDAwMDAxMDAwICAgICAgLyogcGh5 c2ljYWwgYWRkcmVzcyByZWNlaXZlZCAqLwojZGVmaW5lIEZFVF9SWEZTRCAg ICAgICAgMHgwMDAwMDgwMCAgICAgIC8qIGZpcnN0IGRlc2NyaXB0b3IgKi8K I2RlZmluZSBGRVRfUlhMU0QgICAgICAgIDB4MDAwMDA0MDAgICAgICAvKiBs YXN0IGRlc2NyaXB0b3IgKi8KI2RlZmluZSBGRVRfRVMgICAgICAgICAgIDB4 MDAwMDAwODAgICAgICAvKiBlcnJvciBzdW1tYXJ5ICovCiNkZWZpbmUgRkVU X1JVTlQgICAgICAgICAweDAwMDAwMDQwICAgICAgLyogcnVudCBwYWNrZXQg cmVjZWl2ZWQgKi8KI2RlZmluZSBGRVRfTE9ORyAgICAgICAgIDB4MDAwMDAw MjAgICAgICAvKiBsb25nIHBhY2tldCByZWNlaXZlZCAqLwojZGVmaW5lIEZF VF9GQUUgICAgICAgICAgMHgwMDAwMDAxMCAgICAgIC8qIGZyYW1lIGFsaWdu IGVycm9yICovCiNkZWZpbmUgRkVUX0NSQyAgICAgICAgICAweDAwMDAwMDA4 ICAgICAgLyogY3JjIGVycm9yICovCiNkZWZpbmUgRkVUX1JYRVIgICAgICAg ICAweDAwMDAwMDA0ICAgICAgLyogcmVjZWl2ZSBlcnJvciAqLwojZGVmaW5l IEZFVF9SREVTMENIRUNLICAgMHgwMDAwNzhmYyAgICAgIC8qIG9ubHkgY2hl Y2sgTUFSLCBCQVIsIFBIWSwgRVMsIFJVTlQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMT05HLCBGQUUsIENSQyBhbmQg UlhFUiBiaXRzICovCgovKgogKiByZWNlaXZlIGRlc2NyaXB0b3IgMQogKi8K I2RlZmluZSBGRVRfUlhJQyAgICAgICAgIDB4MDA4MDAwMDAgICAgICAvKiBp bnRlcnJ1cHQgY29udHJvbCAqLwojZGVmaW5lIEZFVF9SQlNNQVNLICAgICAg MHgwMDAwMDdmZiAgICAgIC8qIHJlY2VpdmUgYnVmZmVyIHNpemUgKi8KI2Rl ZmluZSBGRVRfUkJTU2hpZnQgICAgIDAKCi8qCiAqIHRyYW5zbWl0IGRlc2Ny aXB0b3IgMAogKi8KI2RlZmluZSBGRVRfVFhFUlIgICAgICAgIDB4MDAwMDgw MDAgICAgICAvKiB0cmFuc21pdCBlcnJvciAqLwojZGVmaW5lIEZFVF9KQUJU TyAgICAgICAgMHgwMDAwNDAwMCAgICAgIC8qIGphYmJlciB0aW1lb3V0ICov CiNkZWZpbmUgRkVUX0NTTCAgICAgICAgICAweDAwMDAyMDAwICAgICAgLyog Y2FycmllciBzZW5zZSBsb3N0ICovCiNkZWZpbmUgRkVUX0xDICAgICAgICAg ICAweDAwMDAxMDAwICAgICAgLyogbGF0ZSBjb2xsaXNpb24gKi8KI2RlZmlu ZSBGRVRfRUMgICAgICAgICAgIDB4MDAwMDA4MDAgICAgICAvKiBleGNlc3Np dmUgY29sbGlzaW9uICovCiNkZWZpbmUgRkVUX1VERiAgICAgICAgICAweDAw MDAwNDAwICAgICAgLyogZmlmbyB1bmRlcmZsb3cgKi8KI2RlZmluZSBGRVRf REZSICAgICAgICAgIDB4MDAwMDAyMDAgICAgICAvKiBkZWZlcnJlZCAqLwoj ZGVmaW5lIEZFVF9IRiAgICAgICAgICAgMHgwMDAwMDEwMCAgICAgIC8qIGhl YXJ0YmVhdCBmYWlsICovCiNkZWZpbmUgRkVUX05DUk1BU0sgICAgICAweDAw MDAwMGZmICAgICAgLyogY29sbGlzaW9uIHJldHJ5IGNvdW50ICovCiNkZWZp bmUgRkVUX05DUlNoaWZ0ICAgICAwCgovKgogKiB0eCBkZXNjcmlwdG9yIDEK ICovCiNkZWZpbmUgRkVUX1RYSUMgICAgICAgICAweDgwMDAwMDAwICAgICAg LyogaW50ZXJydXB0IGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfRVRJQ29udHJv bCAgIDB4NDAwMDAwMDAgICAgICAvKiBlYXJseSB0cmFuc21pdCBpbnRlcnJ1 cHQgKi8KI2RlZmluZSBGRVRfVFhMRCAgICAgICAgIDB4MjAwMDAwMDAgICAg ICAvKiBsYXN0IGRlc2NyaXB0b3IgKi8KI2RlZmluZSBGRVRfVFhGRCAgICAg ICAgIDB4MTAwMDAwMDAgICAgICAvKiBmaXJzdCBkZXNjcmlwdG9yICovCiNk ZWZpbmUgRkVUX0NSQ0Rpc2FibGUgICAweDAwMDAwMDAwICAgICAgLyogY3Jj IGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfQ1JDRW5hYmxlICAgIDB4MDgwMDAw MDAKI2RlZmluZSBGRVRfUEFERGlzYWJsZSAgIDB4MDAwMDAwMDAgICAgICAv KiBwYWRkaW5nIGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfUEFERW5hYmxlICAg IDB4MDQwMDAwMDAKI2RlZmluZSBGRVRfUEtUU2hpZnQgICAgIDExICAgICAg ICAgICAgICAvKiB0cmFuc21pdCBwa3Qgc2l6ZSAqLwojZGVmaW5lIEZFVF9U QlNNQVNLICAgICAgMHgwMDAwMDdmZgojZGVmaW5lIEZFVF9UQlNTaGlmdCAg ICAgMCAgICAgICAgICAgICAgIC8qIHRyYW5zbWl0IGJ1ZmZlciBzaXplICov CgojZGVmaW5lIEZFVF9NQVhGUkFHUyAgICAgMQojZGVmaW5lIEZFVF9SWF9M SVNUX0NOVCAgNjQKI2RlZmluZSBGRVRfVFhfTElTVF9DTlQgIDY0CiNkZWZp bmUgRkVUX01JTl9GUkFNRUxFTiA2MAoKLyoKICogQSB0cmFuc21pdCAnc3Vw ZXIgZGVzY3JpcHRvcicgaXMgYWN0dWFsbHkgRkVUX01BWEZSQUdTIHJlZ3Vs YXIKICogZGVzY3JpcHRvcnMgY2x1bXBlZCB0b2dldGhlci4gVGhlIGlkZWEg aGVyZSBpcyB0byBlbXVsYXRlIHRoZQogKiBtdWx0aS1mcmFnbWVudCBkZXNj cmlwdG9yIGxheW91dCBmb3VuZCBpbiBkZXZpY2VzIHN1Y2ggYXMgdGhlCiAq IFRleGFzIEluc3RydW1lbnRzIFRodW5kZXJMQU4gYW5kIDNDb20gYm9vbWVy YW5nIGFuZCBjeWxvbmUgY2hpcHMuCiAqIFRoZSBhZHZhbnRhZ2UgdG8gdXNp bmcgdGhpcyBzY2hlbWUgaXMgdGhhdCBpdCBhdm9pZHMgYnVmZmVyIGNvcGll cy4KICogVGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IHRoZXJlJ3MgYSBjZXJ0 YWluIGFtb3VudCBvZiBvdmVyaGVhZCBkdWUKICogdG8gdGhlIGZhY3QgdGhh dCBlYWNoICdmcmFnbWVudCcgaXMgMTYgYnl0ZXMgbG9uZy4gSW4gZmV0IHRl c3RzLAogKiB0aGlzIGxpbWl0cyB0b3Agc3BlZWQgdG8gYWJvdXQgMTAuNU1C L3NlYy4gSXQgc2hvdWxkIGJlIG1vcmUgbGlrZQogKiAxMS41TUIvc2VjLiBI b3dldmVyLCB0aGUgdXBzaG90IGlzIHRoYXQgeW91IGNhbiBhY2hpZXZlIGJl dHRlcgogKiByZXN1bHRzIG9uIHNsb3dlciBtYWNoaW5lczogYSBQZW50aXVt IDIwMCBjYW4gcHVtcCBvdXQgcGFja2V0cyBhdAogKiBzYW1lIHNwZWVkIGFz IGEgUElJIDQwMC4KICovCnN0cnVjdCBmZXRfdHhkZXNjIHsKICAgICAgICBz dHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgZmV0X2ZyYWdbRkVUX01BWEZSQUdT XTsKfTsKCiNkZWZpbmUgRkVUX1RYU1RBVFVTKHgpICB4LT5mZXRfcHRyLT5m ZXRfZnJhZ1t4LT5mZXRfbGFzdGRlc2NdLmZldF9zdGF0dXMKI2RlZmluZSBG RVRfVFhDVEwoeCkgICAgIHgtPmZldF9wdHItPmZldF9mcmFnW3gtPmZldF9s YXN0ZGVzY10uZmV0X2N0bAojZGVmaW5lIEZFVF9UWERBVEEoeCkgICAgeC0+ ZmV0X3B0ci0+ZmV0X2ZyYWdbeC0+ZmV0X2xhc3RkZXNjXS5mZXRfZGF0YQoj ZGVmaW5lIEZFVF9UWE5FWFQoeCkgICAgeC0+ZmV0X3B0ci0+ZmV0X2ZyYWdb eC0+ZmV0X2xhc3RkZXNjXS5mZXRfbmV4dAoKI2RlZmluZSBGRVRfVFhPV04o eCkgICAgIHgtPmZldF9wdHItPmZldF9mcmFnWzBdLmZldF9zdGF0dXMKCiNk ZWZpbmUgRkVUX1VOU0VOVCAgICAgICAweDEyMzQKCnN0cnVjdCBmZXRfbGlz dF9kYXRhIHsKICAgICAgICBzdHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgZmV0 X3J4X2xpc3RbRkVUX1JYX0xJU1RfQ05UXTsKICAgICAgICBzdHJ1Y3QgZmV0 X3R4ZGVzYyAgICAgICAgZmV0X3R4X2xpc3RbRkVUX1RYX0xJU1RfQ05UXTsK fTsKCnN0cnVjdCBmZXRfY2hhaW4gewogICAgICAgIHN0cnVjdCBmZXRfdHhk ZXNjICAgICAgICAqZmV0X3B0cjsKICAgICAgICBzdHJ1Y3QgbWJ1ZiAgICAg ICAgICAgICAqZmV0X21idWY7CiAgICAgICAgc3RydWN0IGZldF9jaGFpbiAg ICAgICAgICpmZXRfbmV4dGRlc2M7CiAgICAgICAgdV9pbnQ4X3QgICAgICAg ICAgICAgICAgZmV0X2xhc3RkZXNjOwp9OwoKc3RydWN0IGZldF9jaGFpbl9v bmVmcmFnIHsKICAgICAgICBzdHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgKmZl dF9wdHI7CiAgICAgICAgc3RydWN0IG1idWYgICAgICAgICAgICAgKmZldF9t YnVmOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW5fb25lZnJhZyAqZmV0X25l eHRkZXNjOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAgICAgIGZldF9y bGFzdDsKfTsKCnN0cnVjdCBmZXRfY2hhaW5fZGF0YSB7CiAgICAgICAgc3Ry dWN0IGZldF9jaGFpbl9vbmVmcmFnIGZldF9yeF9jaGFpbltGRVRfUlhfTElT VF9DTlRdOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW4gICAgICAgICBmZXRf dHhfY2hhaW5bRkVUX1RYX0xJU1RfQ05UXTsKCiAgICAgICAgc3RydWN0IGZl dF9jaGFpbl9vbmVmcmFnICpmZXRfcnhfaGVhZDsKCiAgICAgICAgc3RydWN0 IGZldF9jaGFpbiAgICAgICAgICpmZXRfdHhfaGVhZDsKICAgICAgICBzdHJ1 Y3QgZmV0X2NoYWluICAgICAgICAgKmZldF90eF90YWlsOwogICAgICAgIHN0 cnVjdCBmZXRfY2hhaW4gICAgICAgICAqZmV0X3R4X2ZyZWU7Cn07CgpzdHJ1 Y3QgZmV0X3R5cGUgewogICAgICAgIHVfaW50MTZfdCAgICAgICAgICAgICAg IGZldF92aWQ7CiAgICAgICAgdV9pbnQxNl90ICAgICAgICAgICAgICAgZmV0 X2RpZDsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAqZmV0X25h bWU7Cn07CgojZGVmaW5lIEZFVF9GTEFHX0ZPUkNFREVMQVkgICAgICAxCiNk ZWZpbmUgRkVUX0ZMQUdfU0NIRURERUxBWSAgICAgIDIKI2RlZmluZSBGRVRf RkxBR19ERUxBWVRJTUVPICAgICAgMwoKc3RydWN0IGZldF9zb2Z0YyB7CiAg ICAgICAgc3RydWN0IGFycGNvbSAgICAgICAgICAgYXJwY29tOyAgICAgICAg IC8qIGludGVyZmFjZSBpbmZvICovCiAgICAgICAgc3RydWN0IGlmbWVkaWEg ICAgICAgICAgaWZtZWRpYTsgICAgICAgIC8qIG1lZGlhIGluZm8gKi8KICAg ICAgICBidXNfc3BhY2VfaGFuZGxlX3QgICAgICBmZXRfYmhhbmRsZTsKICAg ICAgICBidXNfc3BhY2VfdGFnX3QgICAgICAgICBmZXRfYnRhZzsKICAgICAg ICBzdHJ1Y3QgZmV0X3R5cGUgICAgICAgICAgKmZldF9pbmZvOyAgICAgICAv KiBhZGFwdGVyIGluZm8gKi8KICAgICAgICBzdHJ1Y3QgZmV0X3R5cGUgICAg ICAgICAgKmZldF9waW5mbzsgICAgICAvKiBwaHkgaW5mbyAqLwogICAgICAg IHVfaW50OF90ICAgICAgICAgICAgICAgIGZldF91bml0OyAgICAgICAgLyog aW50ZXJmYWNlIG51bWJlciAqLwogICAgICAgIHVfaW50OF90ICAgICAgICAg ICAgICAgIGZldF90eXBlOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAg ICAgIGZldF9waHlfYWRkcjsgICAgLyogUEhZIGFkZHJlc3MgKi8KICAgICAg ICB1X2ludDhfdCAgICAgICAgICAgICAgICBmZXRfdHhfcGVuZDsgICAgIC8q IFRYIHBlbmRpbmcgKi8KICAgICAgICB1X2ludDhfdCAgICAgICAgICAgICAg ICBmZXRfd2FudF9hdXRvOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAg ICAgIGZldF9hdXRvbmVnOwogICAgICAgIHVfaW50MTZfdCAgICAgICAgICAg ICAgIGZldF90eHRocmVzaDsKICAgICAgICBjYWRkcl90ICAgICAgICAgICAg ICAgICBmZXRfbGRhdGFfcHRyOwogICAgICAgIHN0cnVjdCBmZXRfbGlzdF9k YXRhICAgICAqZmV0X2xkYXRhOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW5f ZGF0YSAgICBmZXRfY2RhdGE7Cn07CgovKgogKiByZWdpc3RlciBzcGFjZSBh Y2Nlc3MgbWFjcm9zCiAqLwojZGVmaW5lIENTUl9XUklURV80KHNjLCByZWcs IHZhbCkgICAgICAgXAogICAgICAgIGJ1c19zcGFjZV93cml0ZV80KHNjLT5m ZXRfYnRhZywgc2MtPmZldF9iaGFuZGxlLCByZWcsIHZhbCkKI2RlZmluZSBD U1JfV1JJVEVfMihzYywgcmVnLCB2YWwpICAgICAgIFwKICAgICAgICBidXNf c3BhY2Vfd3JpdGVfMihzYy0+ZmV0X2J0YWcsIHNjLT5mZXRfYmhhbmRsZSwg cmVnLCB2YWwpCiNkZWZpbmUgQ1NSX1dSSVRFXzEoc2MsIHJlZywgdmFsKSAg ICAgICBcCiAgICAgICAgYnVzX3NwYWNlX3dyaXRlXzEoc2MtPmZldF9idGFn LCBzYy0+ZmV0X2JoYW5kbGUsIHJlZywgdmFsKQoKI2RlZmluZSBDU1JfUkVB RF80KHNjLCByZWcpICAgICBcCiAgICAgICAgYnVzX3NwYWNlX3JlYWRfNChz Yy0+ZmV0X2J0YWcsIHNjLT5mZXRfYmhhbmRsZSwgcmVnKQojZGVmaW5lIENT Ul9SRUFEXzIoc2MsIHJlZykgICAgIFwKICAgICAgICBidXNfc3BhY2VfcmVh ZF8yKHNjLT5mZXRfYnRhZywgc2MtPmZldF9iaGFuZGxlLCByZWcpCiNkZWZp bmUgQ1NSX1JFQURfMShzYywgcmVnKSAgICAgXAogICAgICAgIGJ1c19zcGFj ZV9yZWFkXzEoc2MtPmZldF9idGFnLCBzYy0+ZmV0X2JoYW5kbGUsIHJlZykK CiNkZWZpbmUgRkVUX1RJTUVPVVQgICAgICAgICAgICAgIDEwMDAKCi8qCiAq IEdlbmVyYWwgY29uc3RhbnRzIHRoYXQgYXJlIGZ1biB0byBrbm93LgogKgog KiBGRVRTT04gUENJIHZlbmRvciBJRAogKi8KI2RlZmluZSBGRVRWRU5ET1JJ RCAgICAgICAgICAgMHgxNTE2CgovKgogKiBGRVRTT04gZGV2aWNlIElEcy4K ICovCiNkZWZpbmUgSUQwICAgICAgICAgICAgICAgIDB4MDgwMAojZGVmaW5l IElEMSAgICAgICAgICAgICAgICAweDA4MDMKI2RlZmluZSBJRDIgICAgICAg ICAgICAgICAgMHgwODkxCgovKgogKiBTVCtPUCtQSFlBRCtSRUdBRCtUQQog Ki8KI2RlZmluZSBGRVRfT1BfUkVBRCAgICAgIDB4NjAwMCAgLyogU1Q6MDEr T1A6MTArUEhZQUQrUkVHQUQrVEE6WjAgKi8KI2RlZmluZSBGRVRfT1BfV1JJ VEUgICAgIDB4NTAwMiAgLyogU1Q6MDErT1A6MDErUEhZQUQrUkVHQUQrVEE6 MTAgKi8KCi8qCiAqIENvbnN0YW5zdHMgZm9yIFBIWQogKi8KI2RlZmluZSBQ SFlJRDAgICAgIDB4MDMwMAoKLyoKICogQ29uc3RhbnN0cyBmb3IgU2VlcSA4 MDIyNSBQSFkKICovCiNkZWZpbmUgU2VlcVBIWUlEMCAgICAgIDB4MDAxNgoK I2RlZmluZSBTRUVRX01JSVJlZ2lzdGVyMTggICAgICAxOAojZGVmaW5lIFNF RVFfU1BEX0RFVF8xMDAgICAgICAgIDB4ODAKI2RlZmluZSBTRUVRX0RQTFhf REVUX0ZVTEwgICAgICAweDQwCgovKgogKiBDb25zdGFuc3RzIGZvciBBaGRv YyAxMDEgUEhZCiAqLwojZGVmaW5lIEFoZG9jUEhZSUQwICAgICAweDAwMjIK CiNkZWZpbmUgQUhET0NfRGlhZ25vc3RpY1JlZyAgICAgMTgKI2RlZmluZSBB SERPQ19EUExYX0ZVTEwgICAgICAgICAweDA4MDAKI2RlZmluZSBBSERPQ19T cGVlZF8xMDAgICAgICAgICAweDA0MDAKCi8qCiAqIENvbnN0YW5zdHMgZm9y IE1hcnZlbGwgODhFMTAwMC84OEUxMDAwUyBQSFkKICovCiNkZWZpbmUgTWFy dmVsbFBIWUlEMCAgICAgICAgICAgMHgwMTQxCgojZGVmaW5lIE1hcnZlbGxf U3BlY2lmaWNTdGF0dXMgIDE3CiNkZWZpbmUgTWFydmVsbF9TcGVlZDEwMDAg ICAgICAgMHg4MDAwCiNkZWZpbmUgTWFydmVsbF9TcGVlZDEwMCAgICAgICAg MHg0MDAwCiNkZWZpbmUgTWFydmVsbF9GdWxsRHVwbGV4ICAgICAgMHgyMDAw CgovKgogKiBQQ0kgbG93IG1lbW9yeSBiYXNlIGFuZCBsb3cgSS9PIGJhc2Ug cmVnaXN0ZXIsIGFuZAogKiBvdGhlciBQQ0kgcmVnaXN0ZXJzLiBOb3RlOiBz b21lIGFyZSBvbmx5IGF2YWlsYWJsZSBvbgogKiB0aGUgM2M5MDVCLCBpbiBw YXJ0aWN1bGFyIHRob3NlIHRoYXQgcmVsYXRlZCB0byBwb3dlciBtYW5hZ2Vt ZW50LgogKi8KI2RlZmluZSBGRVRfUENJX1ZFTkRPUl9JRCAgICAgICAgMHgw MAojZGVmaW5lIEZFVF9QQ0lfREVWSUNFX0lEICAgICAgICAweDAyCiNkZWZp bmUgRkVUX1BDSV9DT01NQU5EICAgICAgICAgIDB4MDQKI2RlZmluZSBGRVRf UENJX1NUQVRVUyAgICAgICAgICAgMHgwNgojZGVmaW5lIEZFVF9QQ0lfQ0xB U1NDT0RFICAgICAgICAweDA5CiNkZWZpbmUgRkVUX1BDSV9MQVRFTkNZX1RJ TUVSICAgIDB4MEQKI2RlZmluZSBGRVRfUENJX0hFQURFUl9UWVBFICAgICAg MHgwRQojZGVmaW5lIEZFVF9QQ0lfTE9JTyAgICAgICAgICAgICAweDEwCiNk ZWZpbmUgRkVUX1BDSV9MT01FTSAgICAgICAgICAgIDB4MTQKI2RlZmluZSBG RVRfUENJX0JJT1NST00gICAgICAgICAgMHgzMAojZGVmaW5lIEZFVF9QQ0lf SU5UTElORSAgICAgICAgICAweDNDCiNkZWZpbmUgRkVUX1BDSV9JTlRQSU4g ICAgICAgICAgIDB4M0QKI2RlZmluZSBGRVRfUENJX01JTkdOVCAgICAgICAg ICAgMHgzRQojZGVmaW5lIEZFVF9QQ0lfTUlOTEFUICAgICAgICAgICAweDBG CiNkZWZpbmUgRkVUX1BDSV9SRVNFVE9QVCAgICAgICAgIDB4NDgKI2RlZmlu ZSBGRVRfUENJX0VFUFJPTV9EQVRBICAgICAgMHg0QwoKI2RlZmluZSBQSFlf VU5LTk9XTiAgICAgICAgICAgICAzCgojZGVmaW5lIEZFVF9QSFlBRERSX01J TiAgICAgICAgICAweDAwCiNkZWZpbmUgRkVUX1BIWUFERFJfTUFYICAgICAg ICAgIDB4MUYKCiNkZWZpbmUgUEhZX0JNQ1IgICAgICAgICAgICAgICAgMHgw MAojZGVmaW5lIFBIWV9CTVNSICAgICAgICAgICAgICAgIDB4MDEKI2RlZmlu ZSBQSFlfVkVOSUQgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgUEhZX0RF VklEICAgICAgICAgICAgICAgMHgwMwojZGVmaW5lIFBIWV9BTkFSICAgICAg ICAgICAgICAgIDB4MDQKI2RlZmluZSBQSFlfTFBBUiAgICAgICAgICAgICAg ICAweDA1CiNkZWZpbmUgUEhZX0FORVhQICAgICAgICAgICAgICAgMHgwNgoj ZGVmaW5lIFBIWV9OUFRSICAgICAgICAgICAgICAgIDB4MDcKI2RlZmluZSBQ SFlfTFBOUFIgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgUEhZXzEwMDBD UiAgICAgICAgICAgICAgMHgwOQojZGVmaW5lIFBIWV8xMDAwU1IgICAgICAg ICAgICAgIDB4MGEKCiNkZWZpbmUgUEhZX0FOQVJfTkVYVFBBR0UgICAgICAg MHg4MDAwCiNkZWZpbmUgUEhZX0FOQVJfUlNWRDAgICAgICAgICAgMHg0MDAw CiNkZWZpbmUgUEhZX0FOQVJfVExSRkxUICAgICAgICAgMHgyMDAwCiNkZWZp bmUgUEhZX0FOQVJfUlNWRDEgICAgICAgICAgMHgxMDAwCiNkZWZpbmUgUEhZ X0FOQVJfUlNWRDIgICAgICAgICAgMHgwODAwCiNkZWZpbmUgUEhZX0FOQVJf UlNWRDMgICAgICAgICAgMHgwNDAwCiNkZWZpbmUgUEhZX0FOQVJfMTAwQlQ0 ICAgICAgICAgMHgwMjAwTAojZGVmaW5lIFBIWV9BTkFSXzEwMEJUWEZVTEwg ICAgIDB4MDEwMAojZGVmaW5lIFBIWV9BTkFSXzEwMEJUWEhBTEYgICAgIDB4 MDA4MAojZGVmaW5lIFBIWV9BTkFSXzEwQlRGVUxMICAgICAgIDB4MDA0MAoj ZGVmaW5lIFBIWV9BTkFSXzEwQlRIQUxGICAgICAgIDB4MDAyMAojZGVmaW5l IFBIWV9BTkFSX1BST1RPNCAgICAgICAgIDB4MDAxMAojZGVmaW5lIFBIWV9B TkFSX1BST1RPMyAgICAgICAgIDB4MDAwOAojZGVmaW5lIFBIWV9BTkFSX1BS T1RPMiAgICAgICAgIDB4MDAwNAojZGVmaW5lIFBIWV9BTkFSX1BST1RPMSAg ICAgICAgIDB4MDAwMgojZGVmaW5lIFBIWV9BTkFSX1BST1RPMCAgICAgICAg IDB4MDAwMQoKI2RlZmluZSBQSFlfMTAwMFNSXzEwMDBCVFhGVUxMICAweDA4 MDAKI2RlZmluZSBQSFlfMTAwMFNSXzEwMDBCVFhIQUxGICAweDA0MDAKCi8q CiAqIFRoZXNlIGFyZSB0aGUgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRo ZSBQSFkgKHBoeXNpY2FsIGxheWVyCiAqIGludGVyZmFjZSBjaGlwKS4KICov Ci8qCiAqIFBIWSBCTUNSIEJhc2ljIE1vZGUgQ29udHJvbCBSZWdpc3Rlcgog Ki8KI2RlZmluZSBQSFlfQk1DUl9SRVNFVCAgICAgICAgICAgICAgICAgIDB4 ODAwMAojZGVmaW5lIFBIWV9CTUNSX0xPT1BCSyAgICAgICAgICAgICAgICAg MHg0MDAwCiNkZWZpbmUgUEhZX0JNQ1JfU1BFRURTRUwgICAgICAgICAgICAg ICAweDIwMDAKI2RlZmluZSBQSFlfQk1DUl9BVVRPTkVHRU5CTCAgICAgICAg ICAgIDB4MTAwMAojZGVmaW5lIFBIWV9CTUNSX1JTVkQwICAgICAgICAgICAg ICAgICAgMHgwODAwICAvKiB3cml0ZSBhcyB6ZXJvICovCiNkZWZpbmUgUEhZ X0JNQ1JfSVNPTEFURSAgICAgICAgICAgICAgICAweDA0MDAKI2RlZmluZSBQ SFlfQk1DUl9BVVRPTkVHUlNUUiAgICAgICAgICAgIDB4MDIwMAojZGVmaW5l IFBIWV9CTUNSX0RVUExFWCAgICAgICAgICAgICAgICAgMHgwMTAwCiNkZWZp bmUgUEhZX0JNQ1JfQ09MTFRFU1QgICAgICAgICAgICAgICAweDAwODAKI2Rl ZmluZSBQSFlfQk1DUl8xMDAwICAgICAgICAgICAgICAgICAgIDB4MDA0MCAg Lyogb25seSB1c2VkIGZvciBNYXJ2ZWxsIFBIWSAqLwojZGVmaW5lIFBIWV9C TUNSX1JTVkQyICAgICAgICAgICAgICAgICAgMHgwMDIwICAvKiB3cml0ZSBh cyB6ZXJvLCBkb24ndCBjYXJlICovCiNkZWZpbmUgUEhZX0JNQ1JfUlNWRDMg ICAgICAgICAgICAgICAgICAweDAwMTAgIC8qIHdyaXRlIGFzIHplcm8sIGRv bid0IGNhcmUgKi8KI2RlZmluZSBQSFlfQk1DUl9SU1ZENCAgICAgICAgICAg ICAgICAgIDB4MDAwOCAgLyogd3JpdGUgYXMgemVybywgZG9uJ3QgY2FyZSAq LwojZGVmaW5lIFBIWV9CTUNSX1JTVkQ1ICAgICAgICAgICAgICAgICAgMHgw MDA0ICAvKiB3cml0ZSBhcyB6ZXJvLCBkb24ndCBjYXJlICovCiNkZWZpbmUg UEhZX0JNQ1JfUlNWRDYgICAgICAgICAgICAgICAgICAweDAwMDIgIC8qIHdy aXRlIGFzIHplcm8sIGRvbid0IGNhcmUgKi8KI2RlZmluZSBQSFlfQk1DUl9S U1ZENyAgICAgICAgICAgICAgICAgIDB4MDAwMSAgLyogd3JpdGUgYXMgemVy bywgZG9uJ3QgY2FyZSAqLwoKLyoKICogUkVTRVQ6IDEgPT0gc29mdHdhcmUg cmVzZXQsIDAgPT0gbm9ybWFsIG9wZXJhdGlvbgogKiBSZXNldHMgc3RhdHVz IGFuZCBjb250cm9sIHJlZ2lzdGVycyB0byBkZWZhdWx0IHZhbHVlcy4KICog UmVsYXRjaGVzIGFsbCBoYXJkd2FyZSBjb25maWcgdmFsdWVzLgogKgogKiBM T09QQks6IDEgPT0gbG9vcGJhY2sgb3BlcmF0aW9uIGVuYWJsZWQsIDAgPT0g bm9ybWFsIG9wZXJhdGlvbgogKgogKiBTUEVFRFNFTDogMSA9PSAxMDBNYi9z LCAwID09IDEwTWIvcwogKiBMaW5rIHNwZWVkIGlzIHNlbGVjdGVkIGJ5dCBo aXMgYml0IG9yIGlmIGF1dG8tbmVnb3RpYXRpb24gaWYgYml0CiAqIDEyIChB VVRPTkVHRU5CTCkgaXMgc2V0IChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBv ZiB0aGlzIHJlZ2lzdGVyCiAqIGlzIGlnbm9yZWQpLgogKgogKiBBVVRPTkVH RU5CTDogMSA9PSBBdXRvbmVnb3RpYXRpb24gZW5hYmxlZCwgMCA9PSBBdXRv bmVnb3RpYXRpb24gZGlzYWJsZWQKICogQml0cyA4IGFuZCAxMyBhcmUgaWdu b3JlZCB3aGVuIGF1dG9uZWcgaXMgc2V0LCBvdGhlcndpc2UgYml0cyA4IGFu ZCAxMwogKiBkZXRlcm1pbmUgc3BlZWQgYW5kIG1vZGUuIFNob3VsZCBiZSBj bGVhcmVkIGFuZCB0aGVuIHNldCBpZiBQSFkgY29uZmlndXJlZAogKiBmb3Ig bm8gYXV0b25lZyBvbiBzdGFydHVwLgogKgogKiBJU09MQVRFOiAxID09IGlz b2xhdGUgUEhZIGZyb20gTUlJLCAwID09IG5vcm1hbCBvcGVyYXRpb24KICoK ICogQVVUT05FR1JTVFI6IDEgPT0gcmVzdGFydCBhdXRvbmVnb3RpYXRpb24s IDAgPSBub3JtYWwgb3BlcmF0aW9uCiAqCiAqIERVUExFWDogMSA9PSBmdWxs IGR1cGxleCBtb2RlLCAwID09IGhhbGYgZHVwbGV4IG1vZGUKICoKICogQ09M TFRFU1Q6IDEgPT0gY29sbGlzaW9uIHRlc3QgZW5hYmxlZCwgMCA9PSBub3Jt YWwgb3BlcmF0aW9uCiAqLwoKLyoKICogUEhZLCBCTVNSIEJhc2ljIE1vZGUg U3RhdHVzIFJlZ2lzdGVyCiAqLwojZGVmaW5lIFBIWV9CTVNSXzEwMEJUNCAg ICAgICAgICAgICAgICAgMHg4MDAwCiNkZWZpbmUgUEhZX0JNU1JfMTAwQlRY RlVMTCAgICAgICAgICAgICAweDQwMDAKI2RlZmluZSBQSFlfQk1TUl8xMDBC VFhIQUxGICAgICAgICAgICAgIDB4MjAwMAojZGVmaW5lIFBIWV9CTVNSXzEw QlRGVUxMICAgICAgICAgICAgICAgMHgxMDAwCiNkZWZpbmUgUEhZX0JNU1Jf MTBCVEhBTEYgICAgICAgICAgICAgICAweDA4MDAKI2RlZmluZSBQSFlfQk1T Ul9SU1ZEMSAgICAgICAgICAgICAgICAgIDB4MDQwMCAgLyogd3JpdGUgYXMg emVybywgZG9uJ3QgY2FyZSAqLwojZGVmaW5lIFBIWV9CTVNSX1JTVkQyICAg ICAgICAgICAgICAgICAgMHgwMjAwICAvKiB3cml0ZSBhcyB6ZXJvLCBkb24n dCBjYXJlICovCiNkZWZpbmUgUEhZX0JNU1JfUlNWRDMgICAgICAgICAgICAg ICAgICAweDAxMDAgIC8qIHdyaXRlIGFzIHplcm8sIGRvbid0IGNhcmUgKi8K I2RlZmluZSBQSFlfQk1TUl9SU1ZENCAgICAgICAgICAgICAgICAgIDB4MDA4 MCAgLyogd3JpdGUgYXMgemVybywgZG9uJ3QgY2FyZSAqLwojZGVmaW5lIFBI WV9CTVNSX01GUFJFU1VQICAgICAgICAgICAgICAgMHgwMDQwCiNkZWZpbmUg UEhZX0JNU1JfQVVUT05FR0NPTVAgICAgICAgICAgICAweDAwMjAKI2RlZmlu ZSBQSFlfQk1TUl9SRU1GQVVMVCAgICAgICAgICAgICAgIDB4MDAxMAojZGVm aW5lIFBIWV9CTVNSX0NBTkFVVE9ORUcgICAgICAgICAgICAgMHgwMDA4CiNk ZWZpbmUgUEhZX0JNU1JfTElOS1NUQVQgICAgICAgICAgICAgICAweDAwMDQK I2RlZmluZSBQSFlfQk1TUl9KQUJCRVIgICAgICAgICAgICAgICAgIDB4MDAw MgojZGVmaW5lIFBIWV9CTVNSX0VYVEVOREVEICAgICAgICAgICAgICAgMHgw MDAxCg== ------=_NextPart_000_6671_3eb_241d Content-Type: text/plain; name="README.TXT"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="README.TXT" Installation: 1. copy the source codes if_fet.c and iffetreg.h to /sys/pci directory, #cp if_fet.c /sys/pci #cp iffetreg.h /sys/pci 2. modify /sys/conf/files, add the following line pci/if_fet.c optional fet device-driver 3. modify /usr/src/sys/i386/conf/GENERIC, add the following line device my0 4. compile the kernel, #cd /usr/src/sys/i386/conf #cp GENERIC MYKERNEL #/usr/sbin/config MYKERNEL #cd /usr/src/sys/compile/MYKERNEL #make depend #make #make install 5. reboot the system, #reboot 6. bind your card to an IP address #ifconfig my0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} 7. now, you should be able to ping local network.  ------=_NextPart_000_6671_3eb_241d--