From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2952 invoked by alias); 17 Apr 2003 22:44:48 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 2945 invoked from network); 17 Apr 2003 22:44:46 -0000 Received: from unknown (HELO e3.ny.us.ibm.com) (32.97.182.103) by sources.redhat.com with SMTP; 17 Apr 2003 22:44:46 -0000 Received: from northrelay03.pok.ibm.com (northrelay03.pok.ibm.com [9.56.224.151]) by e3.ny.us.ibm.com (8.12.9/8.12.2) with ESMTP id h3HMieE2189276; Thu, 17 Apr 2003 18:44:40 -0400 Received: from d27ml103.rchland.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by northrelay03.pok.ibm.com (8.12.8/NCO/VER6.5) with ESMTP id h3HMibd9024730; Thu, 17 Apr 2003 18:44:37 -0400 Subject: [PATCH] new support for PPC64 architecture To: gdb-patches@sources.redhat.com Cc: will_schmidt@vnet.ibm.com, Elena Zannoni Message-ID: From: "Will Schmidt" Date: Thu, 17 Apr 2003 22:44:00 -0000 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=09BBE798DFE887698f9e8a93df938690918c09BBE798DFE88769" Content-Disposition: inline X-SW-Source: 2003-04/txt/msg00346.txt.bz2 --0__=09BBE798DFE887698f9e8a93df938690918c09BBE798DFE88769 Content-type: text/plain; charset=us-ascii Content-length: 413 All, This patch contains code that provides support for GDB on the PPC64 architecture. This patch will apply clean on top of the RedHat gdb-5.3post-0.20021129.29.src.rpm. (A patch against CVS will happen, but not today.. ) (See attached file: gdb-5.3post-ppc64-support.patch) -Will Will Schmidt willschm@us.ibm.com will_schmidt@vnet.ibm.com Linux on PowerPC-64 Development IBM Rochester --0__=09BBE798DFE887698f9e8a93df938690918c09BBE798DFE88769 Content-type: application/octet-stream; name="gdb-5.3post-ppc64-support.patch" Content-Disposition: attachment; filename="gdb-5.3post-ppc64-support.patch" Content-transfer-encoding: base64 Content-length: 46613 ZGlmZiAtcnVwUE4gZ2RiLTUuMi4xL2dkYi9jb25maWcvcG93ZXJwYy9wcGM2 NGxpbnV4Lm1oIHNyYy5wcGM2NC9nZGIvY29uZmlnL3Bvd2VycGMvcHBjNjRs aW51eC5taAotLS0gZ2RiLTUuMi4xL2dkYi9jb25maWcvcG93ZXJwYy9wcGM2 NGxpbnV4Lm1oCTE5NjktMTItMzEgMTg6MDA6MDAuMDAwMDAwMDAwIC0wNjAw CisrKyBzcmMucHBjNjQvZ2RiL2NvbmZpZy9wb3dlcnBjL3BwYzY0bGludXgu bWgJMjAwMy0wMy0wNSAxMzowMDozMy4wMDAwMDAwMDAgLTA2MDAKQEAgLTAs MCArMSwxNCBAQAorIyBIb3N0OiBQb3dlclBDLCBydW5uaW5nIExpbnV4CisK K1hNX0ZJTEU9IHhtLWxpbnV4LmgKK1hNX0NMSUJTPQorCitOQVRfRklMRT0g bm0tbGludXguaAorTkFUREVQRklMRVM9IGluZnB0cmFjZS5vIGluZnRhcmcu byBmb3JrLWNoaWxkLm8gY29yZWxvdy5vIGxpbnV4LXByb2MubyBcCisJY29y ZS1yZWdzZXQubyBwcGMtbGludXgtbmF0Lm8gcHJvYy1zZXJ2aWNlLm8gdGhy ZWFkLWRiLm8gbGluLWx3cC5vICBcCisJZ2NvcmUubyBwcGMtc3lzdi10ZGVw Lm8KKworTE9BRExJQkVTID0gLWxkbCAtbHRocmVhZF9kYgorCitHREJTRVJW RVJfREVQRklMRVM9IGxvdy1saW51eC5vCitHREJTRVJWRVJfTElCUz0gLWxu c3NfZG5zICAtbG5zc19maWxlcyAtbHJlc29sdgpkaWZmIC1ydXBQTiBnZGIt NS4yLjEvZ2RiL2NvbmZpZy9wb3dlcnBjL3BwYzY0bGludXgubXQgc3JjLnBw YzY0L2dkYi9jb25maWcvcG93ZXJwYy9wcGM2NGxpbnV4Lm10Ci0tLSBnZGIt NS4yLjEvZ2RiL2NvbmZpZy9wb3dlcnBjL3BwYzY0bGludXgubXQJMTk2OS0x Mi0zMSAxODowMDowMC4wMDAwMDAwMDAgLTA2MDAKKysrIHNyYy5wcGM2NC9n ZGIvY29uZmlnL3Bvd2VycGMvcHBjNjRsaW51eC5tdAkyMDAzLTAzLTA1IDE2 OjMyOjEyLjAwMDAwMDAwMCAtMDYwMApAQCAtMCwwICsxLDQgQEAKKyMgVGFy Z2V0OiBQUEMgcnVubmluZyBMaW51eCA2NGJpdCBwcm9ncmFtcworVERFUEZJ TEVTPSByczYwMDAtdGRlcC5vIHBwYy1saW51eC10ZGVwLm8gcHBjNjQtbGlu dXgtdGRlcC5vIHNvbGliLm8gc29saWItc3ZyNC5vIHNvbGliLWxlZ2FjeS5v IAorVE1fRklMRT0gdG0tcHBjNjRsaW51eC5oCisKZGlmZiAtcnVwUE4gZ2Ri LTUuMi4xL2dkYi9zb2xpYi1zdnI0LmMgc3JjLnBwYzY0L2dkYi9zb2xpYi1z dnI0LmMKLS0tIGdkYi01LjIuMS9nZGIvc29saWItc3ZyNC5jCTIwMDItMDIt MDUgMTc6Mjg6MTMuMDAwMDAwMDAwIC0wNjAwCisrKyBzcmMucHBjNjQvZ2Ri L3NvbGliLXN2cjQuYwkyMDAzLTAxLTI4IDEzOjI4OjI0LjAwMDAwMDAwMCAt MDYwMApAQCAtNzUsNiArNzUsOSBAQCBzdHJ1Y3QgbG1faW5mbwogCiBzdGF0 aWMgY2hhciAqc29saWJfYnJlYWtfbmFtZXNbXSA9CiB7CisjaWYgZGVmaW5l ZCAoU09MSUJfQlJFQUtfTkFNRSkKKyAgU09MSUJfQlJFQUtfTkFNRSwKKyNl bmRpZgogICAicl9kZWJ1Z19zdGF0ZSIsCiAgICJfcl9kZWJ1Z19zdGF0ZSIs CiAgICJfZGxfZGVidWdfc3RhdGUiLApAQCAtOTk4LDcgKzEwMDEsNyBAQCBl bmFibGVfYnJlYWsgKHZvaWQpCiAJIHRoZSBjdXJyZW50IHBjICh3aGljaCBz aG91bGQgcG9pbnQgYXQgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUKIAkgZHlu YW1pYyBsaW5rZXIpIGFuZCBzdWJ0cmFjdGluZyB0aGUgb2Zmc2V0IG9mIHRo ZSBlbnRyeSBwb2ludC4gICovCiAgICAgICBpZiAoIWxvYWRfYWRkcl9mb3Vu ZCkKLQlsb2FkX2FkZHIgPSByZWFkX3BjICgpIC0gdG1wX2JmZC0+c3RhcnRf YWRkcmVzczsKKwlsb2FkX2FkZHIgPSByZWFkX3BjICgpIC0gQ09OVkVSVF9G Uk9NX0ZVTkNfUFRSX0FERFIodG1wX2JmZC0+c3RhcnRfYWRkcmVzcyk7CiAK ICAgICAgIC8qIFJlY29yZCB0aGUgcmVsb2NhdGVkIHN0YXJ0IGFuZCBlbmQg YWRkcmVzcyBvZiB0aGUgZHluYW1pYyBsaW5rZXIKICAgICAgICAgIHRleHQg YW5kIHBsdCBzZWN0aW9uIGZvciBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2Nv ZGUuICAqLwoKZGlmZiAtcnVwUE4gZ2RiLTUuMi4xL2dkYi9jb25maWcvcG93 ZXJwYy90bS1saW51eC5oIHNyYy5wcGM2NC9nZGIvY29uZmlnL3Bvd2VycGMv dG0tbGludXguaAotLS0gZ2RiLTUuMi4xL2dkYi9jb25maWcvcG93ZXJwYy90 bS1saW51eC5oCTIwMDItMDItMjQgMTY6NTY6MDYuMDAwMDAwMDAwIC0wNjAw CisrKyBzcmMucHBjNjQvZ2RiL2NvbmZpZy9wb3dlcnBjL3RtLWxpbnV4LmgJ MjAwMy0wMS0yOCAxMzoyODoyNC4wMDAwMDAwMDAgLTA2MDAKQEAgLTY3LDQg KzY3LDkgQEAgZXh0ZXJuIGludCBwcGNfbGludXhfaW5fc2lndHJhbXAgKENP UkVfQQogICAgdG8gYmUgcmVsb2NhdGVkLiAqLwogI2RlZmluZSBTT0ZVTl9B RERSRVNTX01BWUJFX01JU1NJTkcKIAorLyogdXNlZCBmb3IgcHBjNjQgb25s eSwgYnV0IGFkZGVkIGhlcmUgYmVjYXVzZSBjb2RlIGlzIGNvbW1vbiBiZXR3 ZWVuIHBwYyBhbmQgcHBjNjQgKi8KK3N0cnVjdCBsaW5rX21hcF9vZmZzZXRz ICpwcGM2NF9saW51eF9zdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMgKHZv aWQpOworZXh0ZXJuIENPUkVfQUREUiBwcGM2NF9saW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoQ09SRV9BRERSIGFkZHIpOworCisKICNlbmRp ZiAgLyogI2lmbmRlZiBUTV9MSU5VWF9IICovCmRpZmYgLXJ1cFBOIGdkYi01 LjIuMS9nZGIvY29uZmlnL3Bvd2VycGMvdG0tcHBjNjRsaW51eC5oIHNyYy5w cGM2NC9nZGIvY29uZmlnL3Bvd2VycGMvdG0tcHBjNjRsaW51eC5oCi0tLSBn ZGItNS4yLjEvZ2RiL2NvbmZpZy9wb3dlcnBjL3RtLXBwYzY0bGludXguaAkx OTY5LTEyLTMxIDE4OjAwOjAwLjAwMDAwMDAwMCAtMDYwMAorKysgc3JjLnBw YzY0L2dkYi9jb25maWcvcG93ZXJwYy90bS1wcGM2NGxpbnV4LmgJMjAwMy0w MS0yOCAxMzoyODoyNC4wMDAwMDAwMDAgLTA2MDAKQEAgLTAsMCArMSw4MCBA QAorI2lmbmRlZiBUTV9QUEM2NExJTlVYX0gKKyNkZWZpbmUgVE1fUFBDNjRM SU5VWF9ICisKKyNpbmNsdWRlICJyczYwMDAvdG0tcnM2MDAwLmgiCisKKy8q IEF2b2lkIHdhcm5pbmcgZnJvbSByZWRlZmluaXRpb24gaW4gdG0tc3lzdjQu aCAoaW5jbHVkZWQgZnJvbSB0bS1saW51eC5oKSAqLworI3VuZGVmIFNLSVBf VFJBTVBPTElORV9DT0RFCisjaW5jbHVkZSAidG0tbGludXguaCIKKworI2lu Y2x1ZGUgImdkYmFyY2guaCIKKy8qIFJlc2V0IHRoZXNlIGJhY2sgdG8gdGhl IGRlZmF1bHQuICBTaG91bGQgcmVhbGx5IGZpeCB0aGlzIGZvciBvdGhlcgor ICAgcG93ZXJwYyB0bS5oIHNvIGl0IGNhbiBiZSBjaG9zZW4gYXQgcnVudGlt ZSAgKi8KKyN1bmRlZiBTT0ZUV0FSRV9TSU5HTEVfU1RFUF9QCisjZGVmaW5l IFNPRlRXQVJFX1NJTkdMRV9TVEVQX1AoKSAoZ2RiYXJjaF9zb2Z0d2FyZV9z aW5nbGVfc3RlcF9wIChjdXJyZW50X2dkYmFyY2gpKQorI3VuZGVmIFNPRlRX QVJFX1NJTkdMRV9TVEVQCisjZGVmaW5lIFNPRlRXQVJFX1NJTkdMRV9TVEVQ KHNpZywgaW5zZXJ0X2JyZWFrcG9pbnRzX3ApIChnZGJhcmNoX3NvZnR3YXJl X3NpbmdsZV9zdGVwIChjdXJyZW50X2dkYmFyY2gsIHNpZywgaW5zZXJ0X2Jy ZWFrcG9pbnRzX3ApKQorCisjaWZkZWYgREVBRF9DT0RFCisvKiBGSVhNRTog dG0tbGludXggZGVmaW5lcyB0aGlzIHdoaWNoIGEgZGVhZCBpbnRlcmZhY2Us IGFzIGZhciBhcyBJCisgICBjYW4gdGVsbC4gVGhlIG1hY3JvIGlzIHVudXNl ZCBhbmQgdGhlcmUgaXMgbm8gZGVmaW5pdGlvbiBmb3IgdGhlCisgICBmdW5j dGlvbiB0aGUgbWFjcm8gY2FsbHMuIEl0IGlzIGhlcmUgc28gd2Uga25vdyB0 byBnZXQgcmlkIG9mIGl0CisgICB0aGVyZS4gKi8KKy8qIE1ha2Ugc3VyZSBu ZXh0aSBnZXRzIHRoZSBoZWxwIGl0IG5lZWRzIGZvciBkZWJ1Z2dpbmcgYXNz ZW1ibHkgY29kZQorICAgd2l0aG91dCBzeW1ib2xzICovCisKKyNkZWZpbmUg QVRfU1VCUk9VVElORV9DQUxMX0lOU1RSVUNUSU9OX1RBUkdFVChwcmV2cGMs c3RvcHBjKSBcCisgICBhdF9zdWJyb3V0aW5lX2NhbGxfaW5zdHJ1Y3Rpb25f dGFyZ2V0KHByZXZwYyxzdG9wcGMpCitleHRlcm4gaW50IGF0X3N1YnJvdXRp bmVfY2FsbF9pbnN0cnVjdGlvbl90YXJnZXQoKTsKKyNlbmRpZiAvKiBERUFE X0NPREUgKi8KKworLyogV2UgX3dhbnRfIHRoZSBTVlI0IHNlY3Rpb24gb2Zm c2V0IGNhbGN1bGF0aW9ucyAoc2VlIHN5bXNfZnJvbV9vYmpmaWxlKCkKKyAg IGluIHN5bWZpbGUuYykgKi8KKyN1bmRlZiBJQk02MDAwX1RBUkdFVAorCisv KiBEZWZhdWx0IG9mZnNldCBmcm9tIFNQIHdoZXJlIHRoZSBMUiBpcyBzdG9y ZWQgKi8KKyN1bmRlZiBERUZBVUxUX0xSX1NBVkUKKyNkZWZpbmUJREVGQVVM VF9MUl9TQVZFIDE2CisKKy8qIFNheSB0aGF0IHdlJ3JlIHVzaW5nIEVMRiwg bm90IFhDT0ZGLiAgKi8KKyNkZWZpbmUgRUxGX09CSkVDVF9GT1JNQVQgMQor CisvKiBTYXkgdGhhdCB3ZSdyZSB1c2luZyBFTEY2NCBzaW5jZSBBQkkgaXMg Y2xvc2VyIHRvIFhDT0ZGNjQuICovCisjZGVmaW5lIEVMRjY0X09CSkVDVF9G T1JNQVQgMQorCisjdW5kZWYgUFJPQ0VTU19MSU5FTlVNQkVSX0hPT0sKKwor I3VuZGVmIFRFWFRfU0VHTUVOVF9CQVNFCisjZGVmaW5lIFRFWFRfU0VHTUVO VF9CQVNFIDEKKworLyogZG9uJ3QgdGhpbmsgaXQgaXMgYnV0IGl0IGNhbid0 IGh1cnQgKGNhbiBpdD8pICovCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVS X1NFTEVDVEFCTEVfUCAxCisKKy8qIFRoZSB2YWx1ZSBvZiBzeW1ib2xzIG9m IHR5cGUgTl9TTyBhbmQgTl9GVU4gbWF5YmUgbnVsbCB3aGVuIAorICAgaXQg c2hvdWxkbid0IGJlLiAqLworI2RlZmluZSBTT0ZVTl9BRERSRVNTX01BWUJF X01JU1NJTkcKKworI3VuZGVmIENISUxEX1NQRUNJQUxfV0FJVFNUQVRVUwor CisvKiBVc2UgZ2VuZXJpYyBzaGFyZWQgbGlicmFyeSBtYWNoaW5lcnkuICAq LworI2luY2x1ZGUgInNvbGliLmgiCisKKy8qIGZ1bmN0aW9uIGVudHJ5cG9p bnRzIGhhdmUgYSAnLicgcHJlcGVuZGVkIHRvIHRoZW0gKGVsZnJlYWQuYykg Ki8KKyNkZWZpbmUgRFJPUF9URVhUX05BTUVfUFJFRklYX0NIQVIgJy4nCisv KiBza2lwIGRhdGEgc3ltYm9scyBpZiB0aGV5IGFyZSBmcm9tIHRoZSAub3Bk IHNlY3Rpb24gKGVsZnJlYWQuYykgKi8KKyNkZWZpbmUgU0tJUF9EQVRBX0lO X09QRAorCisvKiBkZWZpbmUgb3VyIG93biBjaGlsZF94ZmVyX21lbW9yeSgp IHBwYy1saW51eC1uYXQuYyAqLworI2RlZmluZSBDSElMRF9YRkVSX01FTU9S WQorCisjdW5kZWYgYmZkX2dldF9zdGFydF9hZGRyZXNzCisjZGVmaW5lIGJm ZF9nZXRfc3RhcnRfYWRkcmVzcyhhYmZkKSBwcGM2NF9iZmRfZ2V0X3N0YXJ0 X2FkZHJlc3MgKGFiZmQpCitleHRlcm4gIENPUkVfQUREUiBwcGM2NF9iZmRf Z2V0X3N0YXJ0X2FkZHJlc3MgKGJmZCAqKTsKK3N0cnVjdCBsaW5rX21hcF9v ZmZzZXRzICpwcGM2NF9saW51eF9zdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNl dHMgKHZvaWQpOworZXh0ZXJuIENPUkVfQUREUiBwcGM2NF9saW51eF9jb252 ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoQ09SRV9BRERSIGFkZHIpOworCisv KiBkZWZpbmUgYWRkaXRpb25hbCBuYW1lIGZvciBzb2xpYiBmdW5jdGlvbnMg KHNvbGliLXN2cjQuYykgdG8gaGluZ2Ugb24uICovCisjZGVmaW5lIFNPTElC X0JSRUFLX05BTUUgIi5fZGxfZGVidWdfc3RhdGUiCisKKworI2VuZGlmICAv KiAjaWZuZGVmIFRNX1BQQzY0TElOVVhfSCAqLwpkaWZmIC1ydXBQTiBnZGIt NS4yLjEvZ2RiL2NvbmZpZ3VyZS5ob3N0IHNyYy5wcGM2NC9nZGIvY29uZmln dXJlLmhvc3QKLS0tIGdkYi01LjIuMS9nZGIvY29uZmlndXJlLmhvc3QJMjAw Mi0wMy0wMSAxMjozNToyMy4wMDAwMDAwMDAgLTA2MDAKKysrIHNyYy5wcGM2 NC9nZGIvY29uZmlndXJlLmhvc3QJMjAwMy0wMS0yOCAxMzoyODoyNC4wMDAw MDAwMDAgLTA2MDAKQEAgLTEzNiw2ICsxMzYsOCBAQCBwb3dlcnBjLSotYWl4 KikJCWdkYl9ob3N0PWFpeCA7OwogcG93ZXJwYy0qLWxpbnV4KikJZ2RiX2hv c3Q9bGludXggOzsKIHBvd2VycGMtKi1uZXRic2QqKQlnZGJfaG9zdD1uYnNk IDs7CiAKK3Bvd2VycGM2NC0qLWxpbnV4KikJZ2RiX2hvc3Q9cHBjNjRsaW51 eCA7OworCiByczYwMDAtKi1seW54b3MqKQlnZGJfaG9zdD1yczYwMDBseW54 IDs7CiByczYwMDAtKi1haXg0KikJCWdkYl9ob3N0PWFpeDQgOzsKIHJzNjAw MC0qLSopCQlnZGJfaG9zdD1yczYwMDAgOzsKZGlmZiAtcnVwUE4gZ2RiLTUu Mi4xL2dkYi9jb25maWd1cmUudGd0IHNyYy5wcGM2NC9nZGIvY29uZmlndXJl LnRndAotLS0gZ2RiLTUuMi4xL2dkYi9jb25maWd1cmUudGd0CTIwMDItMDUt MjggMjE6MzY6NTUuMDAwMDAwMDAwIC0wNTAwCisrKyBzcmMucHBjNjQvZ2Ri L2NvbmZpZ3VyZS50Z3QJMjAwMy0wMS0yOCAxMzoyODoyNC4wMDAwMDAwMDAg LTA2MDAKQEAgLTIyMiw2ICsyMjIsMTUgQEAgcG93ZXJwY2xlLSotZWFiaSog fCBwb3dlcnBjbGUtKi1zeXN2KiB8IAogcG93ZXJwYy0qLWxpbnV4KikJZ2Ri X3RhcmdldD1saW51eAogCQkJYnVpbGRfZ2Ric2VydmVyPXllcwogCQkJOzsK K3Bvd2VycGM2NC0qLWxpbnV4KikJZ2RiX3RhcmdldD1wcGM2NGxpbnV4CisJ CQkjIyNIQUNLIC1KWAorCQkJY2FzZSAiJHtob3N0fSIgaW4KKwkJCXBvd2Vy cGMtKi1saW51eCopCisJCQkgICMjIFRoaXMgaG9zdCBjYW4gdHJlYXQgdGFy Z2V0IGFzIG5hdGl2ZQorCQkJICBuYXRpdmVmaWxlPW5tLWxpbnV4LmgKKwkJ CSAgOzsKKwkJCWVzYWMKKwkJCTs7CiBwb3dlcnBjLSotdnh3b3JrcyopCWdk Yl90YXJnZXQ9dnh3b3JrcyA7OwogcG93ZXJwYyotKi0qKQkJaWYgdGVzdCAt ZiAuLi9zaW0vcHBjL01ha2VmaWxlOyB0aGVuCiAJCQkgIGdkYl90YXJnZXQ9 cHBjLXNpbQoKZGlmZiAtcnVwUE4gZ2RiLTUuMi4xL2dkYi9lbGZyZWFkLmMg c3JjLnBwYzY0L2dkYi9lbGZyZWFkLmMKLS0tIGdkYi01LjIuMS9nZGIvZWxm cmVhZC5jCTIwMDItMDMtMjUgMTA6NTA6MjAuMDAwMDAwMDAwIC0wNjAwCisr KyBzcmMucHBjNjQvZ2RiL2VsZnJlYWQuYwkyMDAzLTAxLTI4IDEzOjI4OjI0 LjAwMDAwMDAwMCAtMDYwMApAQCAtMTU0LDYgKzE1NCwxMiBAQCByZWNvcmRf bWluaW1hbF9zeW1ib2xfYW5kX2luZm8gKGNoYXIgKm5hCiAgIGlmIChtc190 eXBlID09IG1zdF90ZXh0IHx8IG1zX3R5cGUgPT0gbXN0X2ZpbGVfdGV4dCkK ICAgICBhZGRyZXNzID0gU01BU0hfVEVYVF9BRERSRVNTIChhZGRyZXNzKTsK IAorI2lmZGVmIERST1BfVEVYVF9OQU1FX1BSRUZJWF9DSEFSCisgIGlmICgo bXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3Rl eHQpCisgICAgICAmJiBuYW1lWzBdID09IERST1BfVEVYVF9OQU1FX1BSRUZJ WF9DSEFSKQorICAgICsrbmFtZTsKKyNlbmRpZiAvKiBEUk9QX1RFWFRfTkFN RV9QUkVGSVhfQ0hBUiAqLworCiAgIHJldHVybiBwcmltX3JlY29yZF9taW5p bWFsX3N5bWJvbF9hbmRfaW5mbwogICAgIChuYW1lLCBhZGRyZXNzLCBtc190 eXBlLCBpbmZvLCBiZmRfc2VjdGlvbi0+aW5kZXgsIGJmZF9zZWN0aW9uLCBv YmpmaWxlKTsKIH0KQEAgLTM3Niw2ICszODIsMTAgQEAgZWxmX3N5bXRhYl9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogCQkgICAgewogCQkgICAg ICBpZiAoc3ltLT5zZWN0aW9uLT5mbGFncyAmIFNFQ19MT0FEKQogCQkJewor I2lmZGVmIFNLSVBfREFUQV9JTl9PUEQKKwkJCSAgaWYgKHN0cmNtcChzeW0t PnNlY3Rpb24tPm5hbWUsICIub3BkIikgPT0gMCkKKwkJCSAgICBjb250aW51 ZTsKKyNlbmRpZiAvKiBTS0lQX0RBVEFfSU5fT1BEICovCiAJCQkgIG1zX3R5 cGUgPSBtc3RfZGF0YTsKIAkJCX0KIAkJICAgICAgZWxzZQpAQCAtNDU1LDYg KzQ2NSwxMCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlCiAJCSAgICAgICAgIHN5bWJvbCBwcm9jZXNzaW5nLiAqLwogCQkg ICAgICBpZiAoc3ltLT5zZWN0aW9uLT5mbGFncyAmIFNFQ19MT0FEKQogCQkJ eworI2lmZGVmIFNLSVBfREFUQV9JTl9PUEQKKwkJCSAgaWYgKHN0cmNtcChz eW0tPnNlY3Rpb24tPm5hbWUsICIub3BkIikgPT0gMCkKKwkJCSAgICBjb250 aW51ZTsKKyNlbmRpZiAvKiBTS0lQX0RBVEFfSU5fT1BEICovCiAJCQkgIG1z X3R5cGUgPSBtc3RfZmlsZV9kYXRhOwogCQkJfQogCQkgICAgICBlbHNlCmRp ZmYgLXJ1cFBOIGdkYi01LjIuMS9nZGIvcHBjLWxpbnV4LW5hdC5jIHNyYy5w cGM2NC9nZGIvcHBjLWxpbnV4LW5hdC5jCi0tLSBnZGItNS4yLjEvZ2RiL3Bw Yy1saW51eC1uYXQuYwkyMDAyLTAyLTIxIDE2OjA0OjQ2LjAwMDAwMDAwMCAt MDYwMAorKysgc3JjLnBwYzY0L2dkYi9wcGMtbGludXgtbmF0LmMJMjAwMy0w MS0yOCAxMzoyODoyNC4wMDAwMDAwMDAgLTA2MDAKQEAgLTQ3LDExICs0Nywx MDggQEAKICNkZWZpbmUgUFRfV1JJVEVfVSBQVFJBQ0VfUE9LRVVTUgogI2Vu ZGlmCiAKLS8qIERlZmF1bHQgdGhlIHR5cGUgb2YgdGhlIHB0cmFjZSB0cmFu c2ZlciB0byBpbnQuICAqLworLyogRGVmYXVsdCB0aGUgdHlwZSBvZiB0aGUg cHRyYWNlIHRyYW5zZmVyIHRvIGxvbmcuICAqLwogI2lmbmRlZiBQVFJBQ0Vf WEZFUl9UWVBFCi0jZGVmaW5lIFBUUkFDRV9YRkVSX1RZUEUgaW50CisjZGVm aW5lIFBUUkFDRV9YRkVSX1RZUEUgbG9uZwogI2VuZGlmCiAKKy8qIFdyaXRl IERBVEEgaW50byBsb2NhdGlvbiBBRERSIHdpdGhpbiB0aGUgInVzZXIgYXJl YSIgb24gYSA2NC1iaXQKKyAgIHByb2Nlc3MgZnJvbSBhIDMyLWJpdCBwcm9j ZXNzLiAqLworI2lmbmRlZiBQUENfUFRSQUNFX1BPS0VVU1JfMzI2NAorI2Rl ZmluZSBQUENfUFRSQUNFX1BPS0VVU1JfMzI2NCAgIDB4OTAgCisjZW5kaWYK KworLyogUmVhZCBhIHJlZ2lzdGVyIChzcGVjaWZpZWQgYnkgQUREUikgb3V0 IG9mIHRoZSAidXNlciBhcmVhIiBvbiBhCisgICA2NC1iaXQgcHJvY2VzcyBm cm9tIGEgMzItYml0IHByb2Nlc3MuICovCisjaWZuZGVmIFBQQ19QVFJBQ0Vf UEVFS1VTUl8zMjY0CisjZGVmaW5lIFBQQ19QVFJBQ0VfUEVFS1VTUl8zMjY0 ICAgMHg5MQorI2VuZGlmCisKKy8qIFdyaXRlIHdvcmQgYXQgbG9jYXRpb24g QUREUiBvbiBhIDY0LWJpdCBwcm9jZXNzIGZyb20gYSAzMi1iaXQgcHJvY2Vz cy4gKi8KKyNpZm5kZWYgUFBDX1BUUkFDRV9QT0tFREFUQV8zMjY0CisjZGVm aW5lIFBQQ19QVFJBQ0VfUE9LRURBVEFfMzI2NCAgIDB4OTIKKyNlbmRpZgor CisvKiBSZWFkIHdvcmQgYXQgbG9jYXRpb24gQUREUiBvbiBhIDY0LWJpdCBw cm9jZXNzIGZyb20gYSAzMi1iaXQKKyAgIHByb2Nlc3MuICovCisjaWZuZGVm IFBQQ19QVFJBQ0VfUEVFS0RBVEFfMzI2NAorI2RlZmluZSBQUENfUFRSQUNF X1BFRUtEQVRBXzMyNjQgICAweDk0CisjZW5kaWYKKworI2RlZmluZSBBUkNI NjQoKSAoUkVHSVNURVJfUkFXX1NJWkUgKDApID09IDgpCisKKy8qIFJFQUxM WSBTSEFNRUxFU1MgSEFDSzoKKworICAgMzIgYml0IHByb2dyYW1zIGNhbiBl eGVjIDY0IGJpdCBwcm9ncmFtcyBhbmQgc28gZm9ydGguIEdEQiBsYXVuY2hl cworICAgdGhlIGluZmVyaW9yIHByb2Nlc3MgYnkgbGF1Y2hpbmcgJHtTSEVM TH0gLWMgPHByb2dyYW0gYW5kIGFyZ3M+LgorICAgRm9ydHVuYXRlbHksIHdl IGtub3cgdGhhdCBpdCBvbmx5IHRyaWVzIHRvIGdldCB0aGUgUEMgc28gd2Ug b25seQorICAgaGF2ZSB0byBoYWNrIHRoYXQuLiBJIFRISU5LLgorCisgICBB dCB0aGlzIHRpbWUgd2UgYXJlIG5vdCByZWFkeSB0byB1bmlmeSBwcGMzMiBh bmQgcHBjNjQgYXMKKyAgIHJzLzYwMDAtYWl4IGlzLiBhbmQgdGhlcmUgaXMg a25vdyBlYXN5IHdheSB0byBmaW5kIG91dCBpZiBhIHByb2Nlc3MKKyAgIGlz IHJ1bm5pbmcgMzIgb3IgNjQgYml0cyBzbyB3ZSBoYXZlIHRoaXMgbGl0dGxl IGhhY2suCisKKyAgIEVWRU4gTU9SRSBTSEFNRUxFU1MgSEFDSzogcnM2MDAw LW5hdC5jIHNvbHZlcyB0aGlzIHByb2JsZW0gYnkKKyAgIGV4cGVjdGluZyB0 aGUgZmlyc3QgZmV3IHB0cmFjZXgoKSBjYWxscyB0byBmYWlsLgorCisqLwor I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSAiYmZkL2VsZi1iZmQu aCIKK3N0YXRpYyBpbnQKK3BwY193b3Jkc2l6ZV9waWQocGlkX3QgcGlkKQor eworICBzdGF0aWMgaW5vX3QgZmlubyA9IDA7CisgIHN0YXRpYyBpbnQgbGFz dCA9IDA7CisgIHN0cnVjdCBzdGF0IHNiOworICBjb25zdCBjaGFyIGZtdFtd ID0gIi9wcm9jLyV1L2V4ZSI7CisgIEZJTEUgKmZpbGU7CisgIGNoYXIgKmZu YW1lID0gYWxsb2NhIChzaXplb2YoZm10KSArIDEwKTsgLyogMTAgZGlnaXQg cGlkLi4gd2h5IG5vdCAqLworICBFbGZfSW50ZXJuYWxfRWhkciBlbGZoOwor CisgIGlmICgoZ2RiYXJjaF90ZGVwIChjdXJyZW50X2dkYmFyY2gpKS0+d29y ZHNpemUgPT0gNCkKKyAgICByZXR1cm4gNDsKKworICBzcHJpbnRmIChmbmFt ZSwgZm10LCBwaWQpOworCisgIGlmIChzdGF0KGZuYW1lLCAmc2IpID09IC0x KQorICAgIHsKKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sCisJCSAgICAgICJjb3VsZCBub3Qgc3RhdCBleGVjdXRhYmxlIGZy b20gL3Byb2MuIik7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgaWYg KGZpbm8gPT0gc2Iuc3RfaW5vKQorICAgICAgcmV0dXJuIGxhc3Q7CisKKyAg ZmlubyA9IHNiLnN0X2lubzsKKworICAvKiBGSVhNRTogY291bGQgc3RhdCB0 aGUgZmlsZSBhbmQgY2hlY2sgaWYgaW5vZGUgY2hhbmdlZC4gKi8KKyAgZmls ZSA9IGZvcGVuIChmbmFtZSwgInJiIik7CisgIGlmIChmaWxlID09IE5VTEwp CisgICAgeworICAgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJ TkVfXywKKwkJICAgICAgImNvdWxkIG5vdCBvcGVuIGV4ZWN1dGFibGUgZnJv bSAvcHJvYy4iKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICBpZiAo ZnJlYWQgKGVsZmguZV9pZGVudCwgRUlfTklERU5ULCAxLCBmaWxlKSA9PSAx KQorICAgIHsKKyAgICAgIGlmIChlbGZoLmVfaWRlbnQgW0VJX0NMQVNTXSA9 PSBFTEZDTEFTUzY0KQorCWxhc3QgPSA4OworICAgICAgZWxzZQorCWxhc3Qg PSA0OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGxhc3QgPSAwOwor ICAgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJ ICAgICAgImNvdWxkIG5vdCByZWFkIGV4ZWN1dGFibGUgZnJvbSAvcHJvYy4i KTsKKyAgICB9CisgIGZjbG9zZSAoZmlsZSk7CisgIAorICByZXR1cm4gbGFz dDsKK30KKwogLyogR2xpYmMncyBoZWFkZXJzIGRvbid0IGRlZmluZSBQVFJB Q0VfR0VUVlJSRUdTIHNvIHdlIGNhbm5vdCB1c2UgYQogICAgY29uZmlndXJl IHRpbWUgY2hlY2suICBTb21lIG9sZGVyIGdsaWJjJ3MgKGZvciBpbnN0YW5j ZSAyLjIuMSkKICAgIGRvbid0IGhhdmUgYSBzcGVjaWZpYyBwb3dlcnBjIHZl cnNpb24gb2YgcHRyYWNlLmgsIGFuZCBmYWxsIGJhY2sgb24KQEAgLTEwNSw3 ICsyMDIsMTUgQEAgaW50IGhhdmVfcHRyYWNlX2dldHZycmVncyA9IDE7CiBp bnQKIGtlcm5lbF91X3NpemUgKHZvaWQpCiB7Ci0gIHJldHVybiAoc2l6ZW9m IChzdHJ1Y3QgdXNlcikpOworICBpZiAoKGdkYmFyY2hfdGRlcCAoY3VycmVu dF9nZGJhcmNoKSktPndvcmRzaXplID09IHNpemVvZiAoUFRSQUNFX1hGRVJf VFlQRSkpCisgICAgcmV0dXJuIChzaXplb2YgKHN0cnVjdCB1c2VyKSk7Cisg IGVsc2UKKyAgICB7CisgICAgICAvKiB3aXRoIGEgNjQtYml0IGtlcm5lbCwg YWxsIG1lbWJlcnMgb2Ygc3RydWN0IHVzZXIgZ28gZnJvbSAzMgorICAgICAg ICAgdG8gNjQgYml0IGV4Y2VwdCBmb3IgdGhlIHVfY29tbSBjaGFyYWN0ZXIg YXJyYXkgc28gd2UgY2FuCisgICAgICAgICBkb3VibGUgZXZlcnl0aGluZyBh bmQgc3VidHJhY3Qgc2l6ZW9mIHVfY29tbS4gKi8KKyAgICAgIHJldHVybiAo KHNpemVvZiAoc3RydWN0IHVzZXIpICogMikgLSBzaXplb2YgKCgoc3RydWN0 IHVzZXIqKTApLT51X2NvbW0pKTsKKyAgICB9CiB9CiAKIC8qICpJTkRFTlQt T0ZGKiAqLwpAQCAtMTI1LDMzICsxMjUsMzQgQEAKIHBwY19yZWdpc3Rlcl91 X2FkZHIgKGludCByZWdubykKIHsKICAgaW50IHVfYWRkciA9IC0xOwogICBz dHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChjdXJy ZW50X2dkYmFyY2gpOworICBpbnQgd29yZHNpemUgPSB0ZGVwLT53b3Jkc2l6 ZTsKIAogICAvKiBHZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzIG9jY3VweSAx IHNsb3QgZWFjaCBpbiB0aGUgYnVmZmVyICovCiAgIGlmIChyZWdubyA+PSB0 ZGVwLT5wcGNfZ3AwX3JlZ251bSAmJiByZWdubyA8PSB0ZGVwLT5wcGNfZ3Bs YXN0X3JlZ251bSApCi0gICAgdV9hZGRyID0gICgoUFRfUjAgKyByZWdubykg KiA0KTsKKyAgICB1X2FkZHIgPSAgKChQVF9SMCArIHJlZ25vKSAqIHdvcmRz aXplKTsKIAogICAvKiBGbG9hdGluZyBwb2ludCByZWdzOiAyIHNsb3RzIGVh Y2ggKi8KICAgaWYgKHJlZ25vID49IEZQMF9SRUdOVU0gJiYgcmVnbm8gPD0g RlBMQVNUX1JFR05VTSkKLSAgICB1X2FkZHIgPSAoKFBUX0ZQUjAgKyAocmVn bm8gLSBGUDBfUkVHTlVNKSAqIDIpICogNCk7CisgICAgdV9hZGRyID0gKChQ VF9GUFIwICsgKHJlZ25vIC0gRlAwX1JFR05VTSkgKiAyKSAqIHdvcmRzaXpl KTsKIAogICAvKiBVSVNBIHNwZWNpYWwgcHVycG9zZSByZWdpc3RlcnM6IDEg c2xvdCBlYWNoICovCiAgIGlmIChyZWdubyA9PSBQQ19SRUdOVU0pCi0gICAg dV9hZGRyID0gUFRfTklQICogNDsKKyAgICB1X2FkZHIgPSBQVF9OSVAgKiB3 b3Jkc2l6ZTsKICAgaWYgKHJlZ25vID09IHRkZXAtPnBwY19scl9yZWdudW0p Ci0gICAgdV9hZGRyID0gUFRfTE5LICogNDsKKyAgICB1X2FkZHIgPSBQVF9M TksgKiB3b3Jkc2l6ZTsKICAgaWYgKHJlZ25vID09IHRkZXAtPnBwY19jcl9y ZWdudW0pCi0gICAgdV9hZGRyID0gUFRfQ0NSICogNDsKKyAgICB1X2FkZHIg PSBQVF9DQ1IgKiB3b3Jkc2l6ZTsKICAgaWYgKHJlZ25vID09IHRkZXAtPnBw Y194ZXJfcmVnbnVtKQotICAgIHVfYWRkciA9IFBUX1hFUiAqIDQ7CisgICAg dV9hZGRyID0gUFRfWEVSICogd29yZHNpemU7CiAgIGlmIChyZWdubyA9PSB0 ZGVwLT5wcGNfY3RyX3JlZ251bSkKLSAgICB1X2FkZHIgPSBQVF9DVFIgKiA0 OworICAgIHVfYWRkciA9IFBUX0NUUiAqIHdvcmRzaXplOwogICBpZiAocmVn bm8gPT0gdGRlcC0+cHBjX21xX3JlZ251bSkKLSAgICB1X2FkZHIgPSBQVF9N USAqIDQ7CisgICAgdV9hZGRyID0gUFRfTVEgKiB3b3Jkc2l6ZTsKICAgaWYg KHJlZ25vID09IHRkZXAtPnBwY19wc19yZWdudW0pCi0gICAgdV9hZGRyID0g UFRfTVNSICogNDsKKyAgICB1X2FkZHIgPSBQVF9NU1IgKiB3b3Jkc2l6ZTsK ICAgaWYgKHJlZ25vID09IHRkZXAtPnBwY19mcHNjcl9yZWdudW0pCi0gICAg dV9hZGRyID0gUFRfRlBTQ1IgKiA0OworICAgIHVfYWRkciA9IFBUX0ZQU0NS ICogd29yZHNpemU7CiAKICAgcmV0dXJuIHVfYWRkcjsKIH0KQEAgLTIwNSw2 ICszMjIsMTYgQEAgZmV0Y2hfcmVnaXN0ZXIgKGludCB0aWQsIGludCByZWdu bykKICAgdW5zaWduZWQgaW50IG9mZnNldDsgICAgICAgICAvKiBPZmZzZXQg b2YgcmVnaXN0ZXJzIHdpdGhpbiB0aGUgdSBhcmVhLiAqLwogICBjaGFyICpi dWYgPSBhbGxvY2EgKE1BWF9SRUdJU1RFUl9SQVdfU0laRSk7CiAgIENPUkVf QUREUiByZWdhZGRyID0gcHBjX3JlZ2lzdGVyX3VfYWRkciAocmVnbm8pOwor ICBpbnQgd29yZHNpemUgPSAoZ2RiYXJjaF90ZGVwIChjdXJyZW50X2dkYmFy Y2gpKS0+d29yZHNpemU7CisKKyAgLyogRG8gdGhlIGVhc3kgdGhpbmcgZm9y IG5vdyB3aGljaCBpcyB0byBzaWxlbnRseSBzdWNjZWVkIGlmIHdlIGFyZQor ICAgICBhdHRhY2hlZCB0byBhIDMyLWJpdCBwcm9jZXNzIHdoZW4gd2UgYXJl IGV4cGVjdGluZyA2NC1iaXRzICovCisgIGlmICh3b3Jkc2l6ZSAhPSBwcGNf d29yZHNpemVfcGlkKHRpZCkpCisgICAgeworICAgICAgLyogc3VwcGx5aW5n IGdhcmJhZ2UuLiBidXQgdGhhdCdzIG9rICovCisgICAgICBzdXBwbHlfcmVn aXN0ZXIgKHJlZ25vLCBidWYpOworICAgICAgcmV0dXJuOworICAgIH0KIAog ICBpZiAoYWx0aXZlY19yZWdpc3Rlcl9wIChyZWdubykpCiAgICAgewpAQCAt MjMyLDggKzM1OSwxOSBAQCBmZXRjaF9yZWdpc3RlciAoaW50IHRpZCwgaW50 IHJlZ25vKQogICBmb3IgKGkgPSAwOyBpIDwgUkVHSVNURVJfUkFXX1NJWkUg KHJlZ25vKTsgaSArPSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpKQogICAg IHsKICAgICAgIGVycm5vID0gMDsKLSAgICAgICooUFRSQUNFX1hGRVJfVFlQ RSAqKSAmIGJ1ZltpXSA9IHB0cmFjZSAoUFRfUkVBRF9VLCB0aWQsCi0JCQkJ CSAgICAgICAoUFRSQUNFX0FSRzNfVFlQRSkgcmVnYWRkciwgMCk7CisgICAg ICBpZiAod29yZHNpemUgIT0gc2l6ZW9mIChQVFJBQ0VfWEZFUl9UWVBFKSkK Kwl7CisJICBQVFJBQ0VfWEZFUl9UWVBFIHJlZzsKKwkgIHB0cmFjZSAoUFBD X1BUUkFDRV9QRUVLVVNSXzMyNjQsIHRpZCwKKwkJICAoUFRSQUNFX0FSRzNf VFlQRSkgcmVnYWRkciwgJnJlZyk7CisJICAqKFBUUkFDRV9YRkVSX1RZUEUg KikgJiBidWZbaV0gPSByZWc7CisJfQorICAgICAgZWxzZQorICAgICAgewor CSAgKihQVFJBQ0VfWEZFUl9UWVBFICopICYgYnVmW2ldID0gcHRyYWNlIChQ VF9SRUFEX1UsIHRpZCwKKwkJCQkJCSAgIChQVFJBQ0VfQVJHM19UWVBFKSBy ZWdhZGRyLCAwKTsKKyAgICAgIH0KKwogICAgICAgcmVnYWRkciArPSBzaXpl b2YgKFBUUkFDRV9YRkVSX1RZUEUpOwogICAgICAgaWYgKGVycm5vICE9IDAp CiAJewpAQCAtMzY0LDYgKzQ1Miw3IEBAIHN0b3JlX3JlZ2lzdGVyIChpbnQg dGlkLCBpbnQgcmVnbm8pCiAgIHJlZ2lzdGVyIGludCBpOwogICB1bnNpZ25l ZCBpbnQgb2Zmc2V0OyAgICAgICAgIC8qIE9mZnNldCBvZiByZWdpc3RlcnMg d2l0aGluIHRoZSB1IGFyZWEuICAqLwogICBjaGFyICpidWYgPSBhbGxvY2Eg KE1BWF9SRUdJU1RFUl9SQVdfU0laRSk7CisgIGludCB3b3Jkc2l6ZSA9IChn ZGJhcmNoX3RkZXAgKGN1cnJlbnRfZ2RiYXJjaCkpLT53b3Jkc2l6ZTsKIAog ICBpZiAoYWx0aXZlY19yZWdpc3Rlcl9wIChyZWdubykpCiAgICAgewpAQCAt Mzc4LDggKzUxNywxOCBAQCBzdG9yZV9yZWdpc3RlciAoaW50IHRpZCwgaW50 IHJlZ25vKQogICBmb3IgKGkgPSAwOyBpIDwgUkVHSVNURVJfUkFXX1NJWkUg KHJlZ25vKTsgaSArPSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpKQogICAg IHsKICAgICAgIGVycm5vID0gMDsKLSAgICAgIHB0cmFjZSAoUFRfV1JJVEVf VSwgdGlkLCAoUFRSQUNFX0FSRzNfVFlQRSkgcmVnYWRkciwKLQkgICAgICAq KFBUUkFDRV9YRkVSX1RZUEUgKikgJiBidWZbaV0pOworICAgICAgaWYgKHdv cmRzaXplICE9IHNpemVvZiAoUFRSQUNFX1hGRVJfVFlQRSkpCisJeworCSAg UFRSQUNFX1hGRVJfVFlQRSByZWc7CisJICBwdHJhY2UgKFBQQ19QVFJBQ0Vf UE9LRVVTUl8zMjY0LCB0aWQsIChQVFJBQ0VfQVJHM19UWVBFKSByZWdhZGRy LAorCQkgICooUFRSQUNFX1hGRVJfVFlQRSAqKSAmIGJ1ZltpXSk7CisJfQor ICAgICAgZWxzZQorICAgICAgeworCSAgcHRyYWNlIChQVF9XUklURV9VLCB0 aWQsIChQVFJBQ0VfQVJHM19UWVBFKSByZWdhZGRyLAorCQkgICooUFRSQUNF X1hGRVJfVFlQRSAqKSAmIGJ1ZltpXSk7CisgICAgICB9CisKICAgICAgIHJl Z2FkZHIgKz0gc2l6ZW9mIChQVFJBQ0VfWEZFUl9UWVBFKTsKCiAgICAgICBp ZiAoZXJybm8gPT0gRUlPIApAQCAtNTMzLDMgKzY4MiwyNDMgQEAgZmlsbF9m cHJlZ3NldCAoZ2RiX2ZwcmVnc2V0X3QgKmZwcmVnc2V0cAogICBpZiAoKHJl Z25vID09IC0xKSB8fCByZWdubyA9PSB0ZGVwLT5wcGNfZnBzY3JfcmVnbnVt KQogICAgIHJlZ2NhY2hlX2NvbGxlY3QgKHRkZXAtPnBwY19mcHNjcl9yZWdu dW0sIChjaGFyICopICgqZnByZWdzZXRwICsgcmVnaSkpOwogfQorCisKKyNp ZmRlZiBDSElMRF9YRkVSX01FTU9SWQorCisvKiB0aGlzIGlzIGEgY29tcGxl dGUgcmlwIG9mZiBmcm9tIGluZnB0cmFjZS5jICovCisKKyNpZm5kZWYgR0RC X01BWF9BTExPQ0EKKyNkZWZpbmUgR0RCX01BWF9BTExPQ0EgMHgxMDAwCisj ZW5kaWYgLyogR0RCX01BWF9BTExPQ0EgKi8KKworLyogQ29weSBMRU4gYnl0 ZXMgdG8gb3IgZnJvbSBpbmZlcmlvcidzIG1lbW9yeSBzdGFydGluZyBhdCBN RU1BRERSIHRvCisgICBkZWJ1Z2dlciBtZW1vcnkgc3RhcnRpbmcgYXQgTVlB RERSLiAgQ29weSB0byBpbmZlcmlvciBpZiBXUklURSBpcworICAgbm9uemVy by4gIFRBUkdFVCBpcyBpZ25vcmVkLgorCisgICBSZXR1cm5zIHRoZSBsZW5n dGggY29waWVkLCB3aGljaCBpcyBlaXRoZXIgdGhlIExFTiBhcmd1bWVudCBv cgorICAgemVyby4gIFRoaXMgeGZlciBmdW5jdGlvbiBkb2VzIG5vdCBkbyBw YXJ0aWFsIG1vdmVzLCBzaW5jZQorICAgY2hpbGRfb3BzIGRvZXNuJ3QgYWxs b3cgbWVtb3J5IG9wZXJhdGlvbnMgdG8gY3Jvc3MgYmVsb3cgdXMgaW4gdGhl CisgICB0YXJnZXQgc3RhY2sgYW55d2F5LiAgKi8KKworaW50CitjaGlsZF94 ZmVyX21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIsIGNoYXIgKm15YWRkciwg aW50IGxlbiwgaW50IHdyaXRlLAorCQkgICBzdHJ1Y3QgbWVtX2F0dHJpYiAq YXR0cmliLCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQoreworICAgIGlu dCBpOworICAvKiBSb3VuZCBzdGFydGluZyBhZGRyZXNzIGRvd24gdG8gbG9u Z3dvcmQgYm91bmRhcnkuICAqLworICAgIENPUkVfQUREUiBhZGRyID0gbWVt YWRkciAmIC0oQ09SRV9BRERSKSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUp OworICAvKiBSb3VuZCBlbmRpbmcgYWRkcmVzcyB1cDsgZ2V0IG51bWJlciBv ZiBsb25nd29yZHMgdGhhdCBtYWtlcy4gICovCisgICAgaW50IGNvdW50ID0g KCgoKG1lbWFkZHIgKyBsZW4pIC0gYWRkcikgKyBzaXplb2YgKFBUUkFDRV9Y RkVSX1RZUEUpIC0gMSkKKwkJIC8gc2l6ZW9mIChQVFJBQ0VfWEZFUl9UWVBF KSk7CisgICAgaW50IGFsbG9jID0gY291bnQgKiBzaXplb2YgKFBUUkFDRV9Y RkVSX1RZUEUpOworICAgIFBUUkFDRV9YRkVSX1RZUEUgKmJ1ZmZlcjsKKyAg ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gTlVMTDsKKyAgICBpbnQg d29yZHNpemUgPSAoZ2RiYXJjaF90ZGVwIChjdXJyZW50X2dkYmFyY2gpKS0+ d29yZHNpemU7CisgICAgaW50IGFyY2g2NCA9IEFSQ0g2NCgpOworCisgIC8q IEFsbG9jYXRlIGJ1ZmZlciBvZiB0aGF0IG1hbnkgbG9uZ3dvcmRzLiAgKi8K KyAgICBpZiAobGVuIDwgR0RCX01BWF9BTExPQ0EpCisgICAgeworCWJ1ZmZl ciA9IChQVFJBQ0VfWEZFUl9UWVBFICopIGFsbG9jYSAoYWxsb2MpOworICAg IH0KKyAgICBlbHNlCisgICAgeworCWJ1ZmZlciA9IChQVFJBQ0VfWEZFUl9U WVBFICopIHhtYWxsb2MgKGFsbG9jKTsKKwlvbGRfY2hhaW4gPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBidWZmZXIpOworICAgIH0KKworICAvKiBXQVJOSU5H OiBmcm9tIGtlcm5lbCBzb3VyY2U6ICJ3aGVuIEkgYW5kIEQgc3BhY2UgYXJl IHNlcGFyYXRlLAorICAgICB0aGVzZSB3aWxsIG5lZWQgdG8gYmUgZml4ZWQu IiAqLworICAgIGlmICh3cml0ZSkKKyAgICB7CisgICAgICAvKiBGaWxsIHN0 YXJ0IGFuZCBlbmQgZXh0cmEgYnl0ZXMgb2YgYnVmZmVyIHdpdGggZXhpc3Rp bmcgbWVtb3J5CisJIGRhdGEuICAqLworCWlmIChhZGRyICE9IG1lbWFkZHIg fHwgbGVuIDwgKGludCkgc2l6ZW9mIChQVFJBQ0VfWEZFUl9UWVBFKSkKKwl7 CisJICAvKiBOZWVkIHBhcnQgb2YgaW5pdGlhbCB3b3JkIC0tIGZldGNoIGl0 LiAgKi8KKwkgICAgaWYgKHdvcmRzaXplID09IHNpemVvZiAoUFRSQUNFX1hG RVJfVFlQRSkgJiYgKCFhcmNoNjQpKQorCSAgICB7CisJCWJ1ZmZlclswXSA9 IHB0cmFjZSAoUFRfUkVBRF9JLCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLCAK KwkJCQkgICAgKFBUUkFDRV9BUkczX1RZUEUpIGFkZHIsIDApOworCSAgICB9 CisJICAgIGVsc2UKKwkgICAgeworCQlpZiAoYXJjaDY0KSB7CisJCSAgICBi dWZmZXJbMF0gPSBwdHJhY2UgKFBUUkFDRV9QRUVLREFUQSwgUElER0VUIChp bmZlcmlvcl9wdGlkKSwgCisJCQkJCSh1bnNpZ25lZCBsb25nKSBhZGRyLCAw KTsKKwkJfQorCQllbHNlIAorCQl7CisJCSAgICBwdHJhY2UgKFBQQ19QVFJB Q0VfUEVFS0RBVEFfMzI2NCwgUElER0VUIChpbmZlcmlvcl9wdGlkKSwgCisJ CQkgICAgKFBUUkFDRV9BUkczX1RZUEUpICZhZGRyLCBidWZmZXIpOworCQl9 CisJICAgIH0KKwl9CisJaWYgKGNvdW50ID4gMSkJCS8qIEZJWE1FLCBhdm9p ZCBpZiBldmVuIGJvdW5kYXJ5LiAgKi8KKwl7CisJICAgIENPUkVfQUREUiBh NjQgPSAoYWRkciArIChjb3VudCAtIDEpICogc2l6ZW9mIChQVFJBQ0VfWEZF Ul9UWVBFKSk7CisJICAgIGlmICh3b3Jkc2l6ZSA9PSBzaXplb2YgKFBUUkFD RV9YRkVSX1RZUEUpICYmICghYXJjaDY0KSkKKwkgICAgeworCQlidWZmZXJb Y291bnQgLSAxXSA9IHB0cmFjZSAoUFRfUkVBRF9JLCBQSURHRVQgKGluZmVy aW9yX3B0aWQpLAorCQkJCQkgICAgKFBUUkFDRV9BUkczX1RZUEUpIGE2NCwg MCk7CisJICAgIH0KKwkgICAgZWxzZQorCQlpZiAoYXJjaDY0KSB7CisJCSAg ICBidWZmZXJbY291bnQtMV0gPSBwdHJhY2UgKFBUUkFDRV9QRUVLREFUQSwg UElER0VUIChpbmZlcmlvcl9wdGlkKSwKKwkJCQkJICAgICAgKFBUUkFDRV9B UkczX1RZUEUpICZhNjQsIDApOworCQl9CisJCWVsc2UKKwkJeworCQkgICAg cHRyYWNlIChQUENfUFRSQUNFX1BFRUtEQVRBXzMyNjQsIFBJREdFVCAoaW5m ZXJpb3JfcHRpZCksCisJCQkgICAgKFBUUkFDRV9BUkczX1RZUEUpICZhNjQs ICZidWZmZXJbY291bnQgLSAxXSk7CisJCX0KKwl9CisKKyAgICAgIC8qIENv cHkgZGF0YSB0byBiZSB3cml0dGVuIG92ZXIgY29ycmVzcG9uZGluZyBwYXJ0 IG9mIGJ1ZmZlci4gICovCisJbWVtY3B5ICgoY2hhciAqKSBidWZmZXIgKyAo bWVtYWRkciAmIChzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpIC0gMSkpLAor CQlteWFkZHIsIGxlbik7CisKKyAgICAgIC8qIFdyaXRlIHRoZSBlbnRpcmUg YnVmZmVyLiAgKi8KKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKywgYWRk ciArPSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpKQorCXsKKwkgICAgZXJy bm8gPSAwOworCSAgICBpZiAod29yZHNpemUgPT0gc2l6ZW9mIChQVFJBQ0Vf WEZFUl9UWVBFKSAmJiAoIWFyY2g2NCkpCisJICAgIHsKKwkJcHRyYWNlIChQ VF9XUklURV9ELCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLCAKKwkJCShQVFJB Q0VfQVJHM19UWVBFKSBhZGRyLCBidWZmZXJbaV0pOworCSAgICB9CisJICAg IGVsc2UKKwkJaWYgKGFyY2g2NCkgeworCQkgICAgcHRyYWNlIChQVF9XUklU RV9ELCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLCAKKwkJCSAgICAodW5zaWdu ZWQgbG9uZykgYWRkciwgYnVmZmVyW2ldKTsgIAorCQl9CisJCWVsc2UgCisJ CXsKKwkJICAgIHB0cmFjZSAoUFBDX1BUUkFDRV9QT0tFREFUQV8zMjY0LCBQ SURHRVQgKGluZmVyaW9yX3B0aWQpLCAKKwkJCSAgICAoUFRSQUNFX0FSRzNf VFlQRSkgJmFkZHIsIGJ1ZmZlcltpXSk7CisJCX0KKwkgICAgaWYgKGVycm5v KQorCSAgICB7CisJCWVycm5vID0gMDsKKwkJaWYgKHdvcmRzaXplID09IHNp emVvZiAoUFRSQUNFX1hGRVJfVFlQRSkgJiYgKCFhcmNoNjQpKQorCQl7CisJ CSAgICBwdHJhY2UgKFBUX1dSSVRFX0ksIFBJREdFVCAoaW5mZXJpb3JfcHRp ZCksIAorCQkJICAgIChQVFJBQ0VfQVJHM19UWVBFKSBhZGRyLCBidWZmZXJb aV0pOworCQl9CisJCWVsc2UKKwkJICAgIGlmIChhcmNoNjQpIHsKKwkJCXB0 cmFjZSAoUFRSQUNFX1BPS0VEQVRBLCBQSURHRVQgKGluZmVyaW9yX3B0aWQp LCAgCisJCQkJKFBUUkFDRV9BUkczX1RZUEUpIGFkZHIsIGJ1ZmZlcltpXSk7 IAorCQkgICAgfQorCQkgICAgZWxzZSAKKwkJICAgIHsKKwkJCXB0cmFjZSAo UFBDX1BUUkFDRV9QT0tFREFUQV8zMjY0LCBQSURHRVQgKGluZmVyaW9yX3B0 aWQpLCAKKwkJCQkoUFRSQUNFX0FSRzNfVFlQRSkgJmFkZHIsIGJ1ZmZlcltp XSk7CisJCSAgICB9CisJICAgIH0KKwkgICAgaWYgKGVycm5vKQorCQlyZXR1 cm4gMDsKKwl9CisjaWZkZWYgQ0xFQVJfSU5TTl9DQUNIRQorCSAgICBDTEVB Ul9JTlNOX0NBQ0hFICgpOworI2VuZGlmCisgICAgfQorICBlbHNlCisgIHsK KyAgICAgIC8qIFJlYWQgYWxsIHRoZSBsb25nd29yZHMuICAqLworICAgICAg Zm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyssIGFkZHIgKz0gc2l6ZW9mIChQ VFJBQ0VfWEZFUl9UWVBFKSkKKyAgICAgIHsKKwkgIGVycm5vID0gMDsKKwkg IGlmICh3b3Jkc2l6ZSA9PSBzaXplb2YgKFBUUkFDRV9YRkVSX1RZUEUpICYm ICghYXJjaDY0KSkKKwkgIHsKKwkgICAgICBidWZmZXJbaV0gPSBwdHJhY2Ug KFBUX1JFQURfSSwgUElER0VUIChpbmZlcmlvcl9wdGlkKSwKKwkJCQkgIChQ VFJBQ0VfQVJHM19UWVBFKSBhZGRyLCAwKTsKKwkgIH0KKwkgIGVsc2UKKwkg IHsKKwkgICAgICBpZiAoYXJjaDY0KSB7CisJCSAgYnVmZmVyW2ldID0gcHRy YWNlIChQVFJBQ0VfUEVFS0RBVEEsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCks CisJCQkJICAgICAgKHVuc2lnbmVkIGxvbmcpIGFkZHIsIDApOworCSAgICAg IH0KKwkgICAgICBlbHNlCisJICAgICAgeworCQkgIHB0cmFjZSAoUFBDX1BU UkFDRV9QRUVLREFUQV8zMjY0LCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAor CQkJICAoUFRSQUNFX0FSRzNfVFlQRSkgJmFkZHIsICZidWZmZXJbaV0pOwor CSAgICAgIH0KKwkgICAgICBpZiAoZXJybm8pCisJCSAgcmV0dXJuIDA7CisJ ICAgICAgUVVJVDsKKwkgIH0KKworICAgICAgLyogQ29weSBhcHByb3ByaWF0 ZSBieXRlcyBvdXQgb2YgdGhlIGJ1ZmZlci4gICovCisJICBtZW1jcHkgKG15 YWRkciwKKwkJICAoY2hhciAqKSBidWZmZXIgKyAobWVtYWRkciAmIChzaXpl b2YgKFBUUkFDRV9YRkVSX1RZUEUpIC0gMSkpLAorCQkgIGxlbik7CisgICAg ICB9CisgIH0KKyAgaWYgKG9sZF9jaGFpbiAhPSBOVUxMKQorICAgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOworICByZXR1cm4gbGVuOworICAgIH0KKwor DAorLyogRGlkIG5vdCB3YW50IHRvIGFkZCB0aGlzIG9yaWdpbmFsbHkgc2lu Y2UgdGhlIGtlcm5lbCB3aWxsIGdpdmUgdXMgYQorICAgbG90IG9mIGdhcmdh YmUgKGFuZCB3b3VsZCBwcm9iYWJseSBmYWlsIGlmIGl0IHdhc24ndCBmb3Ig dGhlCisgICBGUFUncykuIEJ1dCBhdCBsZWFzdCB5b3UgY2FuIGdldCB0aGUg b3RoZXIgcmVnaXN0ZXJzIGluIHN0cnVjdAorICAgcHRfcmVncy4gIFBlcmhh cHMgd2UgY2FuIGdldCB0aGUga2VybmVscyB0byBjby1vcGVyYXRlLiAqLwor c3RhdGljIHZvaWQKK3Vkb3RfaW5mbyAoY2hhciAqZHVtbXkxLCBpbnQgZHVt bXkyKQoreworICBpbnQgdWRvdF9vZmY7CQkJLyogT2Zmc2V0IGludG8gdXNl ciBzdHJ1Y3QgKi8KKyAgaW50IHVkb3RfdmFsOwkJCS8qIFZhbHVlIGZyb20g dXNlciBzdHJ1Y3QgYXQgdWRvdF9vZmYgKi8KKyAgY2hhciBtZXNzWzEyOF07 CQkvKiBGb3IgbWVzc2FnZXMgKi8KKyAgaW50IHdvcmRzaXplID0gKGdkYmFy Y2hfdGRlcCAoY3VycmVudF9nZGJhcmNoKSktPndvcmRzaXplOworCisgIGlm ICghdGFyZ2V0X2hhc19leGVjdXRpb24pCisgICAgeworICAgICAgZXJyb3Ig KCJUaGUgcHJvZ3JhbSBpcyBub3QgYmVpbmcgcnVuLiIpOworICAgIH0KKwor ICBmb3IgKHVkb3Rfb2ZmID0gMDsgdWRvdF9vZmYgPCBLRVJORUxfVV9TSVpF OyB1ZG90X29mZiArPSBzaXplb2YgKHVkb3RfdmFsKSkKKyAgICB7CisgICAg ICBpZiAoKHVkb3Rfb2ZmICUgMjQpID09IDApCisJeworCSAgaWYgKHVkb3Rf b2ZmID4gMCkKKwkgICAgeworCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlxu Iik7CisJICAgIH0KKwkgIHByaW50Zl9maWx0ZXJlZCAoIiUwNHg6IiwgdWRv dF9vZmYpOworCX0KKyAgICAgIGlmICh3b3Jkc2l6ZSAhPSBzaXplb2YgKFBU UkFDRV9YRkVSX1RZUEUpKQorCXsKKwkgIFBUUkFDRV9YRkVSX1RZUEUgcmVn OworCSAgLyogcHRyYWNlIHdpbGwgcGxhY2UgY29udGVudHMgaW4gImRhdGEi IHBvaW50ZXIgKi8KKwkgIHB0cmFjZSAoUFBDX1BUUkFDRV9QRUVLVVNSXzMy NjQsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCisJCSAgKFBUUkFDRV9BUkcz X1RZUEUpIHVkb3Rfb2ZmLCAmcmVnKTsKKwkgIHVkb3RfdmFsID0gcmVnOwor CX0KKyAgICAgIGVsc2UKKwl1ZG90X3ZhbCA9IHB0cmFjZSAoUFRfUkVBRF9V LCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAorCQkJICAgKFBUUkFDRV9BUkcz X1RZUEUpIHVkb3Rfb2ZmLCAwKTsKKyAgICAgIGlmIChlcnJubyAhPSAwKQor CXsKKwkgIHNwcmludGYgKG1lc3MsICJcbnJlYWRpbmcgdXNlciBzdHJ1Y3Qg YXQgb2Zmc2V0IDB4JXgiLCB1ZG90X29mZik7CisJICBwZXJyb3Jfd2l0aF9u YW1lIChtZXNzKTsKKwl9CisgICAgICAvKiBBdm9pZCB1c2luZyBub25wb3J0 YWJsZSAoPykgIioiIGluIHByaW50IHNwZWNzICovCisgICAgICBwcmludGZf ZmlsdGVyZWQgKHNpemVvZiAoaW50KSA9PSA0ID8gIiAweCUwOHgiIDogIiAw eCUxNngiLCB1ZG90X3ZhbCk7CisgICAgfQorICBwcmludGZfZmlsdGVyZWQg KCJcbiIpOworfQorI2VuZGlmIC8qIENISUxEX1hGRVJfTUVNT1JZICovCisK KyNpbmNsdWRlICJjb21tYW5kLmgiCit2b2lkCitfaW5pdGlhbGl6ZV9wcGNf bGludXhfbmF0ICh2b2lkKQoreworI2lmZGVmIENISUxEX1hGRVJfTUVNT1JZ CisgIGFkZF9pbmZvICgidWRvdCIsIHVkb3RfaW5mbywKKwkgICAgIlByaW50 IGNvbnRlbnRzIG9mIGtlcm5lbCBgYHN0cnVjdCB1c2VyJycgZm9yIGN1cnJl bnQgY2hpbGQuIik7CisjZW5kaWYKK30KZGlmZiAtcnVwUE4gZ2RiLTUuMi4x L2dkYi9wcGMtbGludXgtdGRlcC5jIHNyYy5wcGM2NC9nZGIvcHBjLWxpbnV4 LXRkZXAuYwotLS0gZ2RiLTUuMi4xL2dkYi9wcGMtbGludXgtdGRlcC5jCTIw MDItMDItMjQgMTY6MzE6MTkuMDAwMDAwMDAwIC0wNjAwCisrKyBzcmMucHBj NjQvZ2RiL3BwYy1saW51eC10ZGVwLmMJMjAwMy0wMS0yOCAxMzoyODoyNC4w MDAwMDAwMDAgLTA2MDAKQEAgLTU3LDYgKzU3LDggQEAKICAgIG9mZnNldG9m KHN0cnVjdCBzaWdjb250ZXh0X3N0cnVjdCwgaGFuZGxlcikgPT0gMHgxNCAq LwogI2RlZmluZSBQUENfTElOVVhfSEFORExFUl9QVFJfT0ZGU0VUIChQUENf TElOVVhfU0lHTkFMX0ZSQU1FU0laRSArIDB4MTQpCiAKKyNkZWZpbmUgVERF UAlnZGJhcmNoX3RkZXAgKGN1cnJlbnRfZ2RiYXJjaCkKKwkKIC8qIEZyb20g PGFzbS9wdHJhY2UuaD4sIHZhbHVlcyBmb3IgUFRfTklQLCBQVF9SMSwgYW5k IFBUX0xOSyAqLwogI2RlZmluZSBQUENfTElOVVhfUFRfUjAJCTAKICNkZWZp bmUgUFBDX0xJTlVYX1BUX1IxCQkxCkBAIC03MzAsMyArNzMyLDY0IEBAIF9p bml0aWFsaXplX3BwY19saW51eF90ZGVwICh2b2lkKQogCQkJICBwcGNfbGlu dXhfaW5pdF9hYmkpOwogICBhZGRfY29yZV9mbnMgKCZwcGNfbGludXhfcmVn c2V0X2NvcmVfZm5zKTsKIH0KKworc3RydWN0IGxpbmtfbWFwX29mZnNldHMg KgorCXBwYzY0X2xpbnV4X3N2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAo dm9pZCkKK3sKKyAgICBzdGF0aWMgc3RydWN0IGxpbmtfbWFwX29mZnNldHMg bG1vOworICAgIHN0YXRpYyBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1w ID0gTlVMTDsKKworICAgIGlmIChsbXAgPT0gTlVMTCkKKyAgICB7CisJbG1w ID0gJmxtbzsKKworCWxtby5yX2RlYnVnX3NpemUgPSAxNjsvKiBUaGUgYWN0 dWFsIHNpemUgaXMgeHggYnl0ZXMsIGJ1dAorCQkJCQkgICB0aGlzIGlzIGFs bCB3ZSBuZWVkLiAgKi8KKwlsbW8ucl9tYXBfb2Zmc2V0ID0gODsKKwlsbW8u cl9tYXBfc2l6ZSAgID0gODsgCisJbG1vLmxpbmtfbWFwX3NpemUgPSA0MDsg IC8qIFRoZSBhY3R1YWwgc2l6ZSBpcyB4eHggYnl0ZXMsIGJ1dAorCQkJCQkg ICB0aGlzIGlzIGFsbCB3ZSBuZWVkLiAgKi8KKwlsbW8ubF9hZGRyX29mZnNl dCA9IDA7CisJbG1vLmxfYWRkcl9zaXplICAgPSA4OworCWxtby5sX25hbWVf b2Zmc2V0ID0gODsgCisJbG1vLmxfbmFtZV9zaXplICAgPSA4OworCWxtby5s X25leHRfb2Zmc2V0ID0gMjQ7CisJbG1vLmxfbmV4dF9zaXplICAgPSA4Owor CWxtby5sX3ByZXZfb2Zmc2V0ID0gMzI7CisJbG1vLmxfcHJldl9zaXplICAg PSA4OworICAgIH0KKworICAgIHJldHVybiBsbXA7Cit9CisKKworLyogU3Vw cG9ydCBmb3IgQ09OVkVSVF9GUk9NX0ZVTkNfUFRSX0FERFIoQUREUikuCisJ ICAgRHVwbGljYXRlIG9mIFJTNjAwMCBmdW5jdGlvbiwgZXhjZXB0IHBwYzY0 X2xpbnV4IHJlcXVpcmVzIHJlbG9jYXRlZCBhZGRyZXNzLiAqLworc3RhdGlj IENPUkVfQUREUgorcmVhZF9tZW1vcnlfYWRkciAoQ09SRV9BRERSIG1lbWFk ZHIsIGludCBsZW4pCit7CisgICAgcmV0dXJuIHJlYWRfbWVtb3J5X3Vuc2ln bmVkX2ludGVnZXIgKG1lbWFkZHIsIGxlbik7Cit9CisJCisJCitDT1JFX0FE RFIKK3BwYzY0X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChD T1JFX0FERFIgYWRkcikKK3sKKyAgICBsb25nIGxvbmcgbXlfYWRkZXI7Cisg ICAgc3RydWN0IG9ial9zZWN0aW9uICpzOworICAgIENPUkVfQUREUiByZXR2 YWw7CisgICAgZXh0ZXJuIHN0cnVjdCBvYmpfc2VjdGlvbiAqZmluZF9wY19z ZWN0aW9uKENPUkVfQUREUik7CisKKwkvKiB0aGlzIHNob3VsZCBiZSB0aGUg YmFzZSBhZGRyZXNzIHRoYXQgdGhlIG9iamVjdCAoY29udGFpbmluZyB0aGUg ZnVuY19wdHJfYWRkcikgaXMgbG9hZGVkIGF0LiAqLworICAgIG15X2FkZGVy ID0gMHg3ZmUwMDAwMDAwOyAKKworICAgIHMgPSBmaW5kX3BjX3NlY3Rpb24g KG15X2FkZGVyICsgYWRkcik7CisgICAgaWYgKHMgJiYgcy0+dGhlX2JmZF9z ZWN0aW9uLT5mbGFncyAmIFNFQ19DT0RFKQorCXJldHVybiBhZGRyOworCisJ ICAvKiBBRERSIGlzIGluIHRoZSBkYXRhIHNwYWNlLCBzbyBpdCdzIGEgc3Bl Y2lhbCBmdW5jdGlvbiBwb2ludGVyLiAqLworICAgIHJldHZhbCA9IHJlYWRf bWVtb3J5X2FkZHIgKG15X2FkZGVyICsgYWRkciwgVERFUC0+d29yZHNpemUp OworCS8qICBwcmludGYoInJlYWRpbmcgMHglbHggIixteV9hZGRlcithZGRy KTsgKi8KKwkvKiAgcHJpbnRmKCJwcGM2NC4uLmNvbnZlcnRfZnVuY19wdHIg YWRkcjoweCVseCAgbmV3OjB4JWx4XG4iLGFkZHIscmV0dmFsKTsgKi8KKyAg ICByZXR1cm4gcmV0dmFsOworfQpkaWZmIC1ydXBQTiBnZGItNS4yLjEvZ2Ri L3BwYzY0LWxpbnV4LXRkZXAuYyBzcmMucHBjNjQvZ2RiL3BwYzY0LWxpbnV4 LXRkZXAuYwotLS0gZ2RiLTUuMi4xL2dkYi9wcGM2NC1saW51eC10ZGVwLmMJ MTk2OS0xMi0zMSAxODowMDowMC4wMDAwMDAwMDAgLTA2MDAKKysrIHNyYy5w cGM2NC9nZGIvcHBjNjQtbGludXgtdGRlcC5jCTIwMDMtMDEtMjggMTM6Mjg6 MjQuMDAwMDAwMDAwIC0wNjAwCkBAIC0wLDAgKzEsODAgQEAKKy8qIFRhcmdl dC1kZXBlbmRlbnQgY29kZSBmb3IgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgor CisgICBDb3B5cmlnaHQgMTk4NiwgMTk4NywgMTk4OSwgMTk5MSwgMTk5Miwg MTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywKKyAgIDIwMDAsIDIwMDEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKyNpbmNsdWRlICJk ZWZzLmgiCisKKworLyogVGhlc2UgZWxmY29yZSBmdWN0aW9ucyBhcmUgZGVm aW5lZCBpbiBsaWJiZmQuYSBidXQgb25seSB3aGVuIGhvc3QKKyAgID09IHRh cmdldCwgb25jZSB3ZSBjYW4gY29udmluY2UgdGhlIGJmZCB0byBzdXBwbHkg aXQgdGhlc2UgY2FuIGdvICovCisjZGVmaW5lIF9TWVNDQUxMMzIKKyNpbmNs dWRlICJiZmQuaCIKKyNpbmNsdWRlICJzeXNkZXAuaCIKKyNpbmNsdWRlICJi ZmRsaW5rLmgiCisjaW5jbHVkZSAibGliYmZkLmgiCisjZGVmaW5lIEFSQ0hf U0laRSAwCisjaW5jbHVkZSAiZWxmLWJmZC5oIgorI2luY2x1ZGUgImxpYmli ZXJ0eS5oIgorI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKworCisvKgorICog SW5pdGlhbGl6YXRpb24KKyAqLwordm9pZAorX2luaXRpYWxpemVfcHBjNjRf bGludXhfdGRlcCAodm9pZCkKK3sKKyAgLyogaGFyZHdhcmUva2VybmVsIHN1 cHBvcnRzIHNpbmdsZSBzdGVwcGluZyAqLworICBzZXRfZ2RiYXJjaF9zb2Z0 d2FyZV9zaW5nbGVfc3RlcCAoY3VycmVudF9nZGJhcmNoLCBOVUxMKTsKK30K KworLyogdGhlIHN0YXJ0X2FkZHJlc3Mgc3RvcmVkIGluIHRoZSBiZmQgaXMg YSBmdW5jdGlvbiBkZXNjcmlwdG9yICovCisjaW5jbHVkZSAiZ2RiL3Rhcmdl dC5oIgorQ09SRV9BRERSCitwcGM2NF9iZmRfZ2V0X3N0YXJ0X2FkZHJlc3Mg KGJmZCAqYWJmZCkKK3sKKyAgZXh0ZXJuIHN0cnVjdCB0YXJnZXRfb3BzIGV4 ZWNfb3BzOworICBDT1JFX0FERFIgbXlhZGRyOworICB4ZmVyX21lbW9yeShh YmZkLT5zdGFydF9hZGRyZXNzLCAoY2hhciAqKSZteWFkZHIsIDgsIDAsIDAs ICZleGVjX29wcyk7CisgIHJldHVybiBteWFkZHI7Cit9CisKKy8qIEZldGNo IChhbmQgcG9zc2libHkgYnVpbGQpIGFuIGFwcHJvcHJpYXRlIGxpbmtfbWFw X29mZnNldHMKKyAgIHN0cnVjdHVyZSBmb3IgR05VL0xpbnV4IFBQQyB0YXJn ZXRzIHVzaW5nIHRoZSBzdHJ1Y3Qgb2Zmc2V0cworICAgZGVmaW5lZCBpbiBs aW5rLmggKGJ1dCB3aXRob3V0IGFjdHVhbCByZWZlcmVuY2UgdG8gdGhhdCBm aWxlKS4KKworICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBhY2Nlc3Mg R05VL0xpbnV4IFBQQyBzaGFyZWQgbGlicmFyaWVzCisgICBmcm9tIGEgR0RC IHRoYXQgd2FzIG5vdCBidWlsdCBvbiBhbiBHTlUvTGludXggUFBDIGhvc3Qg KGZvciBjcm9zcworICAgZGVidWdnaW5nKS4KKworKi8KKyNpbmNsdWRlICJn ZGJjb3JlLmgiCisjaW5jbHVkZSAic3ltZmlsZS5oIgorI2luY2x1ZGUgIm9i amZpbGVzLmgiCisKKyNpbmNsdWRlICJwcGMtdGRlcC5oIgorI2RlZmluZSBU REVQCWdkYmFyY2hfdGRlcCAoY3VycmVudF9nZGJhcmNoKQorCitzdGF0aWMg Q09SRV9BRERSCityZWFkX21lbW9yeV9hZGRyIChDT1JFX0FERFIgbWVtYWRk ciwgaW50IGxlbikKK3sKKyAgcmV0dXJuIHJlYWRfbWVtb3J5X3Vuc2lnbmVk X2ludGVnZXIgKG1lbWFkZHIsIGxlbik7Cit9CmRpZmYgLXJ1cFBOIGdkYi01 LjIuMS9nZGIvcnM2MDAwLXRkZXAuYyBzcmMucHBjNjQvZ2RiL3JzNjAwMC10 ZGVwLmMKLS0tIGdkYi01LjIuMS9nZGIvcnM2MDAwLXRkZXAuYwkyMDAyLTA0 LTAxIDAwOjAxOjQ2LjAwMDAwMDAwMCAtMDYwMAorKysgc3JjLnBwYzY0L2dk Yi9yczYwMDAtdGRlcC5jCTIwMDMtMDEtMjggMTM6Mjg6MjQuMDAwMDAwMDAw IC0wNjAwCkBAIC01MTMsMTMgKzUwOCwxMyBAQCBza2lwX3Byb2xvZ3VlIChD T1JFX0FERFIgcGMsIENPUkVfQUREUiBsCiAKICAgICAgIGlmICgob3AgJiAw eGZjMWZmZmZmKSA9PSAweDdjMDgwMmE2KQogCXsJCQkvKiBtZmxyIFJ4ICov Ci0JICBscl9yZWcgPSAob3AgJiAweDAzZTAwMDAwKSB8IDB4OTAwMTAwMDA7 CisJICBscl9yZWcgPSAob3AgJiAweDAzZTAwMDAwKTsKIAkgIGNvbnRpbnVl OwogCiAJfQogICAgICAgZWxzZSBpZiAoKG9wICYgMHhmYzFmZmZmZikgPT0g MHg3YzAwMDAyNikKIAl7CQkJLyogbWZjciBSeCAqLwotCSAgY3JfcmVnID0g KG9wICYgMHgwM2UwMDAwMCkgfCAweDkwMDEwMDAwOworCSAgY3JfcmVnID0g KG9wICYgMHgwM2UwMDAwMCk7CiAJICBjb250aW51ZTsKIAogCX0KQEAgLTU0 NSw3ICs1NDAsNyBAQCBza2lwX3Byb2xvZ3VlIChDT1JFX0FERFIgcGMsIENP UkVfQUREUiBsCiAJICAgIHsKIAkgICAgICBmZGF0YS0+c2F2ZWRfZ3ByID0g cmVnOwogCSAgICAgIGlmICgob3AgJiAweGZjMWYwMDAzKSA9PSAweGY4MDEw MDAwKQotCQlvcCA9IChvcCA+PiAxKSA8PCAxOworCQlvcCAmPSB+M1VMOwog CSAgICAgIGZkYXRhLT5ncHJfb2Zmc2V0ID0gU0lHTkVEX1NIT1JUIChvcCkg KyBvZmZzZXQ7CiAJICAgIH0KIAkgIGNvbnRpbnVlOwpAQCAtNTc3LDE5ICs1 NzIsNDkgQEAgc2tpcF9wcm9sb2d1ZSAoQ09SRV9BRERSIHBjLCBDT1JFX0FE RFIgbAogCSAgY29udGludWU7CiAKIAl9Ci0gICAgICBlbHNlIGlmIChscl9y ZWcgIT0gLTEgJiYgKG9wICYgMHhmZmZmMDAwMCkgPT0gbHJfcmVnKQotCXsJ CQkvKiBzdCBSeCxOVU0ocjEpIAotCQkJCSAgIHdoZXJlIFJ4ID09IGxyICov Ci0JICBmZGF0YS0+bHJfb2Zmc2V0ID0gU0lHTkVEX1NIT1JUIChvcCkgKyBv ZmZzZXQ7CisgICAgICBlbHNlIGlmIChscl9yZWcgIT0gLTEgJiYKKwkgICAg ICAgLyogc3RkIFJ4IHx8IHN0ZHUgUnggKi8KKwkgICAgICAgKCgob3AgJiAw eGZmZmYwMDAwKSA9PSAobHJfcmVnIHwgMHhmODAxMDAwMCkpIHx8CisJCS8q IHN0dyBSeCAqLworCQkoKG9wICYgMHhmZmZmMDAwMCkgPT0gKGxyX3JlZyB8 IDB4OTAwMTAwMDApKSB8fAorCQkvKiBzdHd1IFJ4ICovCisJCSgob3AgJiAw eGZmZmYwMDAwKSA9PSAobHJfcmVnIHwgMHg5NDAxMDAwMCkpKSkKKwl7CS8q IHdoZXJlIFJ4ID09IGxyICovCisJICBmZGF0YS0+bHJfb2Zmc2V0ID0gb2Zm c2V0OwogCSAgZmRhdGEtPm5vc2F2ZWRwYyA9IDA7CiAJICBscl9yZWcgPSAw OworCSAgaWYgKChvcCAmIDB4ZmMwMDAwMDMpID09IDB4ZjgwMDAwMDAgfHwJ Lyogc3RkIFJ4ICovCisJICAgICAgKG9wICYgMHhmYzAwMDAwMCkgPT0gMHg5 MDAwMDAwMCkJCS8qIHN0dyBSeCAqLworCSAgICB7CisJICAgICAgLyogZG9l cyBub3QgdXBkYXRlIHIxIGFkZCBkIHRvIGxyX29mZnNldCAqLworCSAgICAg IGZkYXRhLT5scl9vZmZzZXQgPSBTSUdORURfU0hPUlQgKG9wKTsKKwkgICAg fQogCSAgY29udGludWU7CiAKIAl9Ci0gICAgICBlbHNlIGlmIChjcl9yZWcg IT0gLTEgJiYgKG9wICYgMHhmZmZmMDAwMCkgPT0gY3JfcmVnKQotCXsJCQkv KiBzdCBSeCxOVU0ocjEpIAorICAgICAgZWxzZSBpZiAoY3JfcmVnICE9IC0x ICYmCisJICAgICAgIC8qIHN0ZCBSeCB8fCBzdGR1IFJ4ICovCisJICAgICAg ICgoKG9wICYgMHhmZmZmMDAwMCkgPT0gKGNyX3JlZyB8IDB4ZjgwMTAwMDAp KSB8fAorCQkvKiBzdHcgUnggKi8KKwkJKChvcCAmIDB4ZmZmZjAwMDApID09 IChjcl9yZWcgfCAweDkwMDEwMDAwKSkgfHwKKwkJLyogc3R3dSBSeCAqLwor CQkoKG9wICYgMHhmZmZmMDAwMCkgPT0gKGNyX3JlZyB8IDB4OTQwMTAwMDAp KSkpCisJewkvKiB3aGVyZSBSeCA9PSBjciAqLworCSAgZmRhdGEtPmNyX29m ZnNldCA9IG9mZnNldDsKKwkgIGNyX3JlZyA9IDA7CisJICBpZiAoKG9wICYg MHhmYzAwMDAwMykgPT0gMHhmODAwMDAwMCB8fAorCSAgICAgIChvcCAmIDB4 ZmMwMDAwMDApID09IDB4OTAwMDAwMDApCisJICAgIHsKKwkgICAgICAvKiBk b2VzIG5vdCB1cGRhdGUgcjEgYWRkIGQgdG8gY3Jfb2Zmc2V0ICovCisJICAg ICAgZmRhdGEtPmNyX29mZnNldCArPSBTSUdORURfU0hPUlQgKG9wKTsKKwkg ICAgfQorCSAgY29udGludWU7CisKKwl9CisgICAgICBlbHNlIGlmIChjcl9y ZWcgIT0gLTEgJiYgKG9wICYgMHhmZmZmMDAwMykgPT0gY3JfcmVnKQorCXsJ CQkvKiBzdGQgUngsTlVNKHIxKSB8fCBzdGR1IFJ4LE5VTShyMSkgCiAJCQkJ ICAgd2hlcmUgUnggPT0gY3IgKi8KLQkgIGZkYXRhLT5jcl9vZmZzZXQgPSBT SUdORURfU0hPUlQgKG9wKSArIG9mZnNldDsKKwkgIGZkYXRhLT5jcl9vZmZz ZXQgPSBTSUdORURfU0hPUlQgKG9wICYgfjNVTCkgKyBvZmZzZXQ7CiAJICBj cl9yZWcgPSAwOwogCSAgY29udGludWU7CiAKQEAgLTYzNCwzMCArNjU4LDQx IEBAIHNraXBfcHJvbG9ndWUgKENPUkVfQUREUiBwYywgQ09SRV9BRERSIGwK IAkJCQkgICB0aGlzIGJyYW5jaCAqLwogCSAgY29udGludWU7CiAKLQkgIC8q IHVwZGF0ZSBzdGFjayBwb2ludGVyICovCiAJfQotICAgICAgZWxzZSBpZiAo KG9wICYgMHhmZmZmMDAwMCkgPT0gMHg5NDIxMDAwMCB8fAkvKiBzdHUgcjEs TlVNKHIxKSAqLwotCSAgICAgICAob3AgJiAweGZmZmYwMDAzKSA9PSAweGY4 MjEwMDAxKQkJLyogc3RkdSByMSxOVU0ocjEpICovCi0JeworICAgICAgLyog dXBkYXRlIHN0YWNrIHBvaW50ZXIgKi8KKyAgICAgIGVsc2UgaWYgKChvcCAm IDB4ZmMxZjAwMDApID09IDB4OTQwMTAwMDApCisJewkJLyogc3R1IHJYLE5V TShyMSkgfHwgIHN0d3UgclgsTlVNKHIxKSAqLwogCSAgZmRhdGEtPmZyYW1l bGVzcyA9IDA7Ci0JICBpZiAoKG9wICYgMHhmZmZmMDAwMykgPT0gMHhmODIx MDAwMSkKLQkgICAgb3AgPSAob3AgPj4gMSkgPDwgMTsKIAkgIGZkYXRhLT5v ZmZzZXQgPSBTSUdORURfU0hPUlQgKG9wKTsKIAkgIG9mZnNldCA9IGZkYXRh LT5vZmZzZXQ7CiAJICBjb250aW51ZTsKLQogCX0KLSAgICAgIGVsc2UgaWYg KG9wID09IDB4N2MyMTAxNmUpCi0JewkJCS8qIHN0d3V4IDEsMSwwICovCisg ICAgICBlbHNlIGlmICgob3AgJiAweGZjMWYwMTZhKSA9PSAweDdjMDEwMTZl KQorCXsJCQkvKiBzdHd1eCByWCxyMSxyWSAqLworCSAgLyogbm8gd2F5IHRv IGZpZ3VyZSBvdXQgd2hhdCByMSBpcyBnb2luZyB0byBiZSAqLworCSAgZmRh dGEtPmZyYW1lbGVzcyA9IDA7CisJICBvZmZzZXQgPSBmZGF0YS0+b2Zmc2V0 OworCSAgY29udGludWU7CisJfQorICAgICAgZWxzZSBpZiAoKG9wICYgMHhm YzFmMDAwMykgPT0gMHhmODAxMDAwMSkKKwl7CQkJLyogc3RkdSByWCxOVU0o cjEpICovCisJICBmZGF0YS0+ZnJhbWVsZXNzID0gMDsKKwkgIGZkYXRhLT5v ZmZzZXQgPSBTSUdORURfU0hPUlQgKG9wICYgfjNVTCk7CisJICBvZmZzZXQg PSBmZGF0YS0+b2Zmc2V0OworCSAgY29udGludWU7CisJfQorICAgICAgZWxz ZSBpZiAoKG9wICYgMHhmYzFmMDE2YSkgPT0gMHg3YzAxMDE2YSkKKwl7CQkJ Lyogc3RkdXggclgscjEsclkgKi8KKwkgIC8qIG5vIHdheSB0byBmaWd1cmUg b3V0IHdoYXQgcjEgaXMgZ29pbmcgdG8gYmUgKi8KIAkgIGZkYXRhLT5mcmFt ZWxlc3MgPSAwOwogCSAgb2Zmc2V0ID0gZmRhdGEtPm9mZnNldDsKIAkgIGNv bnRpbnVlOwotCi0JICAvKiBMb2FkIHVwIG1pbmltYWwgdG9jIHBvaW50ZXIg Ki8KIAl9Ci0gICAgICBlbHNlIGlmICgob3AgPj4gMjIpID09IDB4MjBmCisg ICAgICAvKiBMb2FkIHVwIG1pbmltYWwgdG9jIHBvaW50ZXIgKi8KKyAgICAg IGVsc2UgaWYgKCgob3AgPj4gMjIpID09IDB4MjBmCXx8CS8qIGwgcjMxLC4u LiBvciBsIHIzMCwuLi4gKi8KKwkgICAgICAgKG9wID4+IDIyKSA9PSAweDNh ZikJCS8qIGxkIHIzMSwuLi4gb3IgbGQgcjMwLC4uLiAqLwogCSAgICAgICAm JiAhbWluaW1hbF90b2NfbG9hZGVkKQotCXsJCQkvKiBsIHIzMSwuLi4gb3Ig bCByMzAsLi4uICovCisJewogCSAgbWluaW1hbF90b2NfbG9hZGVkID0gMTsK IAkgIGNvbnRpbnVlOwogCkBAIC0yNDM5LDYgKzI0ODMsNDQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCByZWcgcmVnaXN0ZXJzXzc0MDBbXQogICAvKiBGSVhN RT8gQWRkIG1vcmUgcmVnaXN0ZXJzPyAqLwogfTsKIAorCisvKiBQb3dlclBD IFVJU0EgLSBhIFBQQzY0IHByb2Nlc3NvciBhcyB2aWV3ZWQgYnkgdXNlci1s ZXZlbCBjb2RlLiAqLworLyogU2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSBj b21tb24gcmVnaXN0ZXJzX3Bvd2VycGNbXSBoZXJlLCBob3dldmVyCisgICBp dCBkb2VzIG5vdCBkZWZpbmUgYW4gZnBzY3IsIHRob3VnaCBib3RoIGxpbnV4 IGFuZCBhaXggZ2V0IG9uZSBmcm9tCisgICBwdHJhY2UoKS4gQ2FuIG9ubHkg YXNzdW1lIHRoYXQgdGhlcmUgaXMgYSAzMi1iaXQgY29yZSBvdXIgdGhlcmUK KyAgIHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBmcHNjci4gIEkgdGhpbmsgd2Ug Y2FuIGFzc2VydCB0aGF0IGFsbCA2NC1iaXQKKyAgIGNvcmVzIGRvLiAqLwor c3RhdGljIGNvbnN0IHN0cnVjdCByZWcgcmVnaXN0ZXJzX3Bvd2VycGM2NFtd ID0KK3sKKyAgQ09NTU9OX1VJU0FfUkVHUywKKyAgLyogU1BScyAqLworICAv KiAgNjYgKi8gUjQoY3IpLCBSKGxyKSwgUihjdHIpLCBSNCh4ZXIpLAorICAv KiAgNzAgKi8gUjQoZnBzY3IpLCBSMCAvKiBtcT8gKi8KK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgcmVnIHJlZ2lzdGVyc19hMzVbXSA9Cit7CisgIENP TU1PTl9VSVNBX1JFR1MsCisgIC8qIFNQUnMgKi8KKyAgLyogIDY2ICovIFI0 KGNyKSwgUihsciksIFIoY3RyKSwgUjQoeGVyKSwKKyAgLyogIDcwICovIFI0 KGZwc2NyKSwgUjAgLyogbXE/ICovLAorICAvKiAgNzIgKi8gUihkYWJyKSwg UihpYWJyKSwgUjQoZHNpc3IpLAorICAvKiAgNzUgKi8gUihkYXIpLCBSNChk ZWMpLCBSKHNkcjEpLCBSKHNycjApLCBSKHNycjEpLAorICAvKiAgODAgKi8g UihzcHJnMCksIFIoc3ByZzEpLCBSKHNwcmcyKSwgUihzcHJnMyksCisgIC8q ICA4NCAqLyBSNjQoYXNyKSwgUjQoZWFyKSwgUjQodGJsKSwgUjQodGJ1KSwK KyAgLyogIDg4ICovIFIoaWJhdDB1KSwgUihpYmF0MGwpLCBSKGliYXQxdSks IFIoaWJhdDFsKSwKKyAgLyogIDkyICovIFIoaWJhdDJ1KSwgUihpYmF0Mmwp LCBSKGliYXQzdSksIFIoaWJhdDNsKSwKKyAgLyogIDk2ICovIFIoZGJhdDB1 KSwgUihkYmF0MGwpLCBSKGRiYXQxdSksIFIoZGJhdDFsKSwKKyAgLyogMTAw ICovIFIoZGJhdDJ1KSwgUihkYmF0MmwpLCBSKGRiYXQzdSksIFIoZGJhdDNs KSwKKyAgLyogMTA0ICovIFIocGlyKSwgUjQobW1jcjApLAorICAvKiAxMDYu LjEyMSBzZWdtZW50IHJlZ3MgMC4uMTUgKi8gCisgIC8qIDEwNiAqLyBSKHNy MCksIFIoc3IxKSwgUihzcjIpLCBSKHNyMyksCisgIC8qIDExMCAqLyBSKHNy NCksIFIoc3I1KSwgUihzcjYpLCBSKHNyNyksCisgIC8qIDExNCAqLyBSKHNy OCksIFIoc3I5KSwgUihzcjEwKSwgUihzcjExKSwKKyAgLyogMTE4ICovIFIo c3IxMiksIFIoc3IxMyksIFIoc3IxNCksIFIoc3IxNSksCisgIC8qIDEyMiAq LyBSNChwdnIpIC8qIHByb2Nlc3NvciB2ZXJzaW9uIHJlZ2lzdGVyICovCit9 OworCiAvKiBNb3Rvcm9sYSBlNTAwLiAgKi8KIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgcmVnIHJlZ2lzdGVyc19lNTAwW10gPQogewpAQCAtMjk0Nyw2ICszMDUx LDE1IEBAIHJzNjAwMF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2lu Zm8KICAgICAgICAgIGRlc2NyaXB0b3JzKS4gICovCiAgICAgICBzZXRfZ2Ri YXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKIAly czYwMDBfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOworCisgICAgICAv KiB3b3Jkc2l6ZSA4LCBwcGM2NCBsaW51eCAgZnVuY3Rpb25zICovCisgICAg ICBpZiAob3NhYmkgPT0gRUxGT1NBQklfTElOVVgpCisgICAgICB7CisJICBz ZXRfc29saWJfc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzCisJICAgIChn ZGJhcmNoLCBwcGM2NF9saW51eF9zdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNl dHMpOworCSAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIKKyAgICAgICAgICAgIChnZGJhcmNoLCBwcGM2NF9saW51eF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkcik7CisgICAgICB9CiAgICAgfQogICBzZXRf Z2RiYXJjaF9mcmFtZV9hcmdzX2FkZHJlc3MgKGdkYmFyY2gsIHJzNjAwMF9m cmFtZV9hcmdzX2FkZHJlc3MpOwogICBzZXRfZ2RiYXJjaF9mcmFtZV9sb2Nh bHNfYWRkcmVzcyAoZ2RiYXJjaCwgcnM2MDAwX2ZyYW1lX2FyZ3NfYWRkcmVz cyk7Cg== --0__=09BBE798DFE887698f9e8a93df938690918c09BBE798DFE88769--