Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fxpSh-0004VI-Pz for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Sep 2018 08:16:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fxpSd-00081g-Kt for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Sep 2018 08:16:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fxpSd-00081Y-AV for pgsql-hackers@lists.postgresql.org; Thu, 06 Sep 2018 08:16:19 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fxpSX-0004tr-O2 for pgsql-hackers@postgresql.org; Thu, 06 Sep 2018 08:16:18 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id E62B221F59; Thu, 6 Sep 2018 04:16:11 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Thu, 06 Sep 2018 04:16:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; bh=fSN8+rc6Hd04zutklqaWte7VgVIIb NKC2rI+SnExM/U=; b=d16oOwgGE8E4P9pg9oYy5vFh7eifMKFcpBLjtVk8axole fovVkkcrpIX8UR8tIXaGJj9tURQVcBIr84zVJHMhkWEunNpKRgss4VdN2IpG2FfR OzJBJLkH9KOM2CBsKzey1x8cJKO2708ssRnAL6AwXHOXOSZTNJAEmwNFX7hZygY7 mOYbJ7YuWOzH5jq0tF9xK//TqUvJUEG8W5Ywp8X4gkhkQ6zVB4FIDX+xyFoT2vE8 FMgZy2HqSSk3FWfIvwDW42m7RUkMhqSZQiH9zN/9my/cB+cMYZVGwM0bbQsRnUel oLZRI+fwvfpr5tzKPFrBItluTKoMsgRS4MN2QvRXA== X-ME-Proxy: X-ME-Sender: Received: from april.pezone.net (tmo-119-80.customers.d1-online.com [80.187.119.80]) by mail.messagingengine.com (Postfix) with ESMTPA id 4FA84E447F; Thu, 6 Sep 2018 04:16:09 -0400 (EDT) Subject: Re: remove ancient pre-dlopen dynloader code From: Peter Eisentraut References: <3e3c7552-978b-486a-1a4a-326ee31d0545@2ndquadrant.com> <20180809123059.32g25qn7dgd33iyq@alap3.anarazel.de> <26726.1533823423@sss.pgh.pa.us> <20180816083107.2f5gxbvlsgvnuit4@alap3.anarazel.de> <8022.1534425734@sss.pgh.pa.us> <20180816135928.qer5o7uxyaeolzet@alap3.anarazel.de> <10102.1534428424@sss.pgh.pa.us> <20180816141005.nkw5nwkmoip57ui6@alap3.anarazel.de> <92fe6039-16ea-483a-2cf9-ea58955006ab@2ndquadrant.com> Cc: Andres Freund , Tom Lane , Thomas Munro Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= Organization: 2ndQuadrant To: pgsql-hackers Message-ID: <38babf26-e21e-971e-fa04-e15ef6939523@2ndquadrant.com> Date: Thu, 6 Sep 2018 10:16:07 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <92fe6039-16ea-483a-2cf9-ea58955006ab@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------D6FA9E5DC93A80001D23DE32" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------D6FA9E5DC93A80001D23DE32 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 01/09/2018 06:51, Peter Eisentraut wrote: >> How about this: We only have two nonstandard dlopen() implementations >> left: Windows and (old) HP-UX. We move those into src/port/dlopen.c and >> treat it like a regular libpgport member. That gets rid of all those >> duplicative empty per-platform files. > Updated patch. It needed some adjustments for Windows, per Appveyor, I'm going to use this thread for a moment to work out some details with the cfbot. The v2 patch I sent previously was created using git format-patch with default settings. This detected a rename: rename src/{backend/port/dynloader/win32.c => port/dlopen.c} (51%) which is fair enough. However, whatever method the cfbot uses to apply patches fails to handle that. The tree that is sent for testing by Appveyor still contains a full src/backend/port/dynloader/win32.c and no src/port/dlopen.c, which expectedly makes the build fail. (It also still contains src/backend/port/dynloader/otherplatform.c, but empty, so the patching doesn't remove empty files, which is another but minor problem.) The v3 patch attached here was made with git format-patch --no-renames. Let's see how that works out. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------D6FA9E5DC93A80001D23DE32 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v3-0001-Refactor-dlopen-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v3-0001-Refactor-dlopen-support.patch" RnJvbSAyOTdmNGY2YWMzYWU0NmIzNjc4NTU0OTY0YTU5ODVkNzFlNTkwOGI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IFRodSwgNiBTZXAgMjAxOCAxMDowNzoyNCArMDIwMApTdWJqZWN0OiBbUEFU Q0ggdjNdIFJlZmFjdG9yIGRsb3BlbigpIHN1cHBvcnQKCk5vd2FkYXlzLCBhbGwgcGxhdGZv cm1zIGV4Y2VwdCBXaW5kb3dzIGFuZCBvbGRlciBIUC1VWCBoYXZlIHN0YW5kYXJkCmRsb3Bl bigpIHN1cHBvcnQuICBTbyBoYXZpbmcgYSBzZXBhcmF0ZSBpbXBsZW1lbnRhdGlvbiBwZXIg cGxhdGZvcm0KdW5kZXIgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvIGlzIGEgYml0IGV4 Y2Vzc2l2ZS4gIEluc3RlYWQsIHRyZWF0CmRsb3BlbigpIGxpa2Ugb3RoZXIgbGlicmFyeSBm dW5jdGlvbnMgdGhhdCBoYXBwZW4gdG8gYmUgbWlzc2luZwpzb21ldGltZXMgYW5kIHB1dCBh IHJlcGxhY2VtZW50IGltcGxlbWVudGF0aW9uIHVuZGVyIHNyYy9wb3J0Ly4KLS0tCiBjb25m aWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKysrKysrKy0KIGNvbmZp Z3VyZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv TWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9wb3J0Ly5n aXRpZ25vcmUgICAgICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvcG9ydC9NYWtlZmlsZSAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9haXguYyAg ICAgfCAgIDcgLS0KIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2FpeC5oICAgICB8ICAz OSAtLS0tLS0tCiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9jeWd3aW4uYyAgfCAgIDMg LQogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvY3lnd2luLmggIHwgIDM2IC0tLS0tLS0K IHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2Rhcndpbi5jICB8ICAzNSAtLS0tLS0tCiBz cmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9kYXJ3aW4uaCAgfCAgIDggLS0KIHNyYy9iYWNr ZW5kL3BvcnQvZHlubG9hZGVyL2ZyZWVic2QuYyB8ICAgNyAtLQogc3JjL2JhY2tlbmQvcG9y dC9keW5sb2FkZXIvZnJlZWJzZC5oIHwgIDM4IC0tLS0tLS0KIHNyYy9iYWNrZW5kL3BvcnQv ZHlubG9hZGVyL2hwdXguYyAgICB8ICA2OCAtLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9w b3J0L2R5bmxvYWRlci9ocHV4LmggICAgfCAgMjUgLS0tLS0KIHNyYy9iYWNrZW5kL3BvcnQv ZHlubG9hZGVyL2xpbnV4LmMgICB8ICAgNyAtLQogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIvbGludXguaCAgIHwgIDM4IC0tLS0tLS0KIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVy L25ldGJzZC5jICB8ICAgNyAtLQogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvbmV0YnNk LmggIHwgIDM4IC0tLS0tLS0KIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL29wZW5ic2Qu YyB8ICAgNyAtLQogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvb3BlbmJzZC5oIHwgIDM4 IC0tLS0tLS0KIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3NvbGFyaXMuYyB8ICAgNyAt LQogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvc29sYXJpcy5oIHwgIDM4IC0tLS0tLS0K IHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMyLmMgICB8ICA4NSAtLS0tLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci93aW4zMi5oICAgfCAgMTkgLS0t LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgIHwgICAxIC0KIHNyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyAgICAgICB8ICAzMSArKystLS0KIHNyYy9pbmNs dWRlLy5naXRpZ25vcmUgICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluICAgICAgICAgICB8ICAgOCArKwogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmgud2luMzIg ICAgICAgIHwgICA4ICsrCiBzcmMvaW5jbHVkZS9wb3J0LmggICAgICAgICAgICAgICAgICAg fCAgMjMgKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL2R5bmFtaWNfbG9hZGVyLmggICB8ICAy NSAtLS0tLQogc3JjL3BvcnQvZGxvcGVuLmMgICAgICAgICAgICAgICAgICAgIHwgMTQ1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL21zdmMvSW5zdGFsbC5wbSAg ICAgICAgICAgIHwgICA1ICstCiBzcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0gICAgICAg ICAgfCAgIDUgKy0KIHNyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtICAgICAgICAgICB8ICAg NyAtLQogc3JjL3Rvb2xzL21zdmMvY2xlYW4uYmF0ICAgICAgICAgICAgIHwgICAxIC0KIDM4 IGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspLCA2MTkgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvYWl4LmMKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9haXguaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2N5Z3dpbi5jCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvY3lnd2luLmgK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9kYXJ3aW4u YwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2Rhcndp bi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvZnJl ZWJzZC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIv ZnJlZWJzZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIvaHB1eC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIvaHB1eC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIvbGludXguYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BvcnQvZHlubG9h ZGVyL2xpbnV4LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9wb3J0L2R5bmxv YWRlci9uZXRic2QuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BvcnQvZHlu bG9hZGVyL25ldGJzZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9ydC9k eW5sb2FkZXIvb3BlbmJzZC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcG9y dC9keW5sb2FkZXIvb3BlbmJzZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQv cG9ydC9keW5sb2FkZXIvc29sYXJpcy5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tl bmQvcG9ydC9keW5sb2FkZXIvc29sYXJpcy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2Jh Y2tlbmQvcG9ydC9keW5sb2FkZXIvd2luMzIuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9i YWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMyLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv aW5jbHVkZS91dGlscy9keW5hbWljX2xvYWRlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3BvcnQvZGxvcGVuLmMKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5k ZXggZGQ5NGM1YmJhYi4uZGQ3Nzc0MmM0NiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBi L2NvbmZpZ3VyZQpAQCAtMTUwNjAsNyArMTUwNjAsNyBAQCBmaQogTElCU19pbmNsdWRpbmdf cmVhZGxpbmU9IiRMSUJTIgogTElCUz1gZWNobyAiJExJQlMiIHwgc2VkIC1lICdzLy1sZWRp dC8vZycgLWUgJ3MvLWxyZWFkbGluZS8vZydgCiAKLWZvciBhY19mdW5jIGluIGNicnQgY2xv Y2tfZ2V0dGltZSBkbG9wZW4gZmRhdGFzeW5jIGdldGlmYWRkcnMgZ2V0cGVlcnVjcmVkIGdl dHJsaW1pdCBtYnN0b3djc19sIG1lbW1vdmUgcG9sbCBwb3NpeF9mYWxsb2NhdGUgcHN0YXQg cHRocmVhZF9pc190aHJlYWRlZF9ucCByZWFkbGluayBzZXRwcm9jdGl0bGUgc2V0cHJvY3Rp dGxlX2Zhc3Qgc2V0c2lkIHNobV9vcGVuIHN5bWxpbmsgc3luY19maWxlX3JhbmdlIHV0aW1l IHV0aW1lcyB3Y3N0b21ic19sCitmb3IgYWNfZnVuYyBpbiBjYnJ0IGNsb2NrX2dldHRpbWUg ZmRhdGFzeW5jIGdldGlmYWRkcnMgZ2V0cGVlcnVjcmVkIGdldHJsaW1pdCBtYnN0b3djc19s IG1lbW1vdmUgcG9sbCBwb3NpeF9mYWxsb2NhdGUgcHN0YXQgcHRocmVhZF9pc190aHJlYWRl ZF9ucCByZWFkbGluayBzZXRwcm9jdGl0bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc2V0c2lkIHNo bV9vcGVuIHN5bWxpbmsgc3luY19maWxlX3JhbmdlIHV0aW1lIHV0aW1lcyB3Y3N0b21ic19s CiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwg JGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIk YXNfYWNfdmFyIgpAQCAtMTUyNTIsNiArMTUyNTIsMzAgQEAgY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRgogX0FDRU9GCiAKIAorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRM RF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxm Y24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5 ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAor ZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRM RF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRM SU5FTk8iICJSVExEX05PVyIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgIiNpbmNsdWRl IDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT1ciID0g eHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0w CitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9S VExEX05PVyAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiBIQVZFX0lQVjY9bm8KIGFjX2Zu X2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInN0cnVjdCBzb2NrYWRkcl9pbjYiICJhY19jdl90 eXBlX3N0cnVjdF9zb2NrYWRkcl9pbjYiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAogI2luY2x1 ZGUgPG5ldGluZXQvaW4uaD4KQEAgLTE1NDYxLDYgKzE1NDg1LDE5IEBAIGVzYWMKIAogZmkK IAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZGxvcGVuIiAiYWNfY3ZfZnVuY19k bG9wZW4iCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgor ICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0RMT1BFTiAxIiA+PmNvbmZkZWZzLmgKKworZWxz ZQorICBjYXNlICIgJExJQk9CSlMgIiBpbgorICAqIiBkbG9wZW4uJGFjX29iamV4dCAiKiAp IDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIGRsb3Blbi4kYWNfb2JqZXh0IgorIDs7Citl c2FjCisKK2ZpCisKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImZscyIgImFjX2N2 X2Z1bmNfZmxzIgogaWYgdGVzdCAieCRhY19jdl9mdW5jX2ZscyIgPSB4eWVzOyB0aGVuIDoK ICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9GTFMgMSIgPj5jb25mZGVmcy5oCkBAIC0xOTAx Niw3ICsxOTA1Myw3IEBAIGZpCiBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMg R05VbWFrZWZpbGUgc3JjL01ha2VmaWxlLmdsb2JhbCIKIAogCi1hY19jb25maWdfbGlua3M9 IiRhY19jb25maWdfbGlua3Mgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIuYzpzcmMvYmFj a2VuZC9wb3J0L2R5bmxvYWRlci8ke3RlbXBsYXRlfS5jIHNyYy9iYWNrZW5kL3BvcnQvcGdf c2VtYS5jOiR7U0VNQV9JTVBMRU1FTlRBVElPTn0gc3JjL2JhY2tlbmQvcG9ydC9wZ19zaG1l bS5jOiR7U0hNRU1fSU1QTEVNRU5UQVRJT059IHNyYy9pbmNsdWRlL2R5bmxvYWRlci5oOnNy Yy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyLyR7dGVtcGxhdGV9Lmggc3JjL2luY2x1ZGUvcGdf Y29uZmlnX29zLmg6c3JjL2luY2x1ZGUvcG9ydC8ke3RlbXBsYXRlfS5oIHNyYy9NYWtlZmls ZS5wb3J0OnNyYy9tYWtlZmlsZXMvTWFrZWZpbGUuJHt0ZW1wbGF0ZX0iCithY19jb25maWdf bGlua3M9IiRhY19jb25maWdfbGlua3Mgc3JjL2JhY2tlbmQvcG9ydC9wZ19zZW1hLmM6JHtT RU1BX0lNUExFTUVOVEFUSU9OfSBzcmMvYmFja2VuZC9wb3J0L3BnX3NobWVtLmM6JHtTSE1F TV9JTVBMRU1FTlRBVElPTn0gc3JjL2luY2x1ZGUvcGdfY29uZmlnX29zLmg6c3JjL2luY2x1 ZGUvcG9ydC8ke3RlbXBsYXRlfS5oIHNyYy9NYWtlZmlsZS5wb3J0OnNyYy9tYWtlZmlsZXMv TWFrZWZpbGUuJHt0ZW1wbGF0ZX0iCiAKIAogaWYgdGVzdCAiJFBPUlROQU1FIiA9ICJ3aW4z MiI7IHRoZW4KQEAgLTE5NzM3LDEwICsxOTc3NCw4IEBAIGRvCiAgICAgInNyYy9iYWNrZW5k L3BvcnQvdGFzLnMiKSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1Mgc3JjL2JhY2tlbmQv cG9ydC90YXMuczpzcmMvYmFja2VuZC9wb3J0L3Rhcy8ke3Rhc19maWxlfSIgOzsKICAgICAi R05VbWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgR05VbWFrZWZpbGUi IDs7CiAgICAgInNyYy9NYWtlZmlsZS5nbG9iYWwiKSBDT05GSUdfRklMRVM9IiRDT05GSUdf RklMRVMgc3JjL01ha2VmaWxlLmdsb2JhbCIgOzsKLSAgICAic3JjL2JhY2tlbmQvcG9ydC9k eW5sb2FkZXIuYyIpIENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBzcmMvYmFja2VuZC9w b3J0L2R5bmxvYWRlci5jOnNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyLyR7dGVtcGxhdGV9 LmMiIDs7CiAgICAgInNyYy9iYWNrZW5kL3BvcnQvcGdfc2VtYS5jIikgQ09ORklHX0xJTktT PSIkQ09ORklHX0xJTktTIHNyYy9iYWNrZW5kL3BvcnQvcGdfc2VtYS5jOiR7U0VNQV9JTVBM RU1FTlRBVElPTn0iIDs7CiAgICAgInNyYy9iYWNrZW5kL3BvcnQvcGdfc2htZW0uYyIpIENP TkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBzcmMvYmFja2VuZC9wb3J0L3BnX3NobWVtLmM6 JHtTSE1FTV9JTVBMRU1FTlRBVElPTn0iIDs7Ci0gICAgInNyYy9pbmNsdWRlL2R5bmxvYWRl ci5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTIHNyYy9pbmNsdWRlL2R5bmxvYWRl ci5oOnNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyLyR7dGVtcGxhdGV9LmgiIDs7CiAgICAg InNyYy9pbmNsdWRlL3BnX2NvbmZpZ19vcy5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJ TktTIHNyYy9pbmNsdWRlL3BnX2NvbmZpZ19vcy5oOnNyYy9pbmNsdWRlL3BvcnQvJHt0ZW1w bGF0ZX0uaCIgOzsKICAgICAic3JjL01ha2VmaWxlLnBvcnQiKSBDT05GSUdfTElOS1M9IiRD T05GSUdfTElOS1Mgc3JjL01ha2VmaWxlLnBvcnQ6c3JjL21ha2VmaWxlcy9NYWtlZmlsZS4k e3RlbXBsYXRlfSIgOzsKICAgICAiY2hlY2tfd2luMzJfc3ltbGlua3MiKSBDT05GSUdfQ09N TUFORFM9IiRDT05GSUdfQ09NTUFORFMgY2hlY2tfd2luMzJfc3ltbGlua3MiIDs7CmRpZmYg LS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KaW5kZXggMzI4MGFmYTBkYS4u M2FkYTQ4YjVmOSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmluCisrKyBiL2NvbmZpZ3VyZS5p bgpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgUEdBQ19GVU5DX1dDU1RPTUJTX0wKIExJQlNfaW5j bHVkaW5nX3JlYWRsaW5lPSIkTElCUyIKIExJQlM9YGVjaG8gIiRMSUJTIiB8IHNlZCAtZSAn cy8tbGVkaXQvL2cnIC1lICdzLy1scmVhZGxpbmUvL2cnYAogCi1BQ19DSEVDS19GVU5DUyhb Y2JydCBjbG9ja19nZXR0aW1lIGRsb3BlbiBmZGF0YXN5bmMgZ2V0aWZhZGRycyBnZXRwZWVy dWNyZWQgZ2V0cmxpbWl0IG1ic3Rvd2NzX2wgbWVtbW92ZSBwb2xsIHBvc2l4X2ZhbGxvY2F0 ZSBwc3RhdCBwdGhyZWFkX2lzX3RocmVhZGVkX25wIHJlYWRsaW5rIHNldHByb2N0aXRsZSBz ZXRwcm9jdGl0bGVfZmFzdCBzZXRzaWQgc2htX29wZW4gc3ltbGluayBzeW5jX2ZpbGVfcmFu Z2UgdXRpbWUgdXRpbWVzIHdjc3RvbWJzX2xdKQorQUNfQ0hFQ0tfRlVOQ1MoW2NicnQgY2xv Y2tfZ2V0dGltZSBmZGF0YXN5bmMgZ2V0aWZhZGRycyBnZXRwZWVydWNyZWQgZ2V0cmxpbWl0 IG1ic3Rvd2NzX2wgbWVtbW92ZSBwb2xsIHBvc2l4X2ZhbGxvY2F0ZSBwc3RhdCBwdGhyZWFk X2lzX3RocmVhZGVkX25wIHJlYWRsaW5rIHNldHByb2N0aXRsZSBzZXRwcm9jdGl0bGVfZmFz dCBzZXRzaWQgc2htX29wZW4gc3ltbGluayBzeW5jX2ZpbGVfcmFuZ2UgdXRpbWUgdXRpbWVz IHdjc3RvbWJzX2xdKQogCiBBQ19SRVBMQUNFX0ZVTkNTKGZzZWVrbykKIGNhc2UgJGhvc3Rf b3MgaW4KQEAgLTE1NzAsNiArMTU3MCw4IEBAIEFDX0NIRUNLX0RFQ0xTKFtzdHJsY2F0LCBz dHJsY3B5LCBzdHJubGVuXSkKICMgVGhpcyBpcyBwcm9iYWJseSBvbmx5IHByZXNlbnQgb24g bWFjT1MsIGJ1dCBtYXkgYXMgd2VsbCBjaGVjayBhbHdheXMKIEFDX0NIRUNLX0RFQ0xTKEZf RlVMTEZTWU5DLCBbXSwgW10sIFsjaW5jbHVkZSA8ZmNudGwuaD5dKQogCitBQ19DSEVDS19E RUNMUyhbUlRMRF9HTE9CQUwsIFJUTERfTk9XXSwgW10sIFtdLCBbI2luY2x1ZGUgPGRsZmNu Lmg+XSkKKwogSEFWRV9JUFY2PW5vCiBBQ19DSEVDS19UWVBFKFtzdHJ1Y3Qgc29ja2FkZHJf aW42XSwKICAgICAgICAgW0FDX0RFRklORShIQVZFX0lQVjYsIDEsIFtEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSBzdXBwb3J0IGZvciBJUHY2Ll0pCkBAIC0xNjU4LDcgKzE2NjAsNyBAQCBl bHNlCiAgIEFDX0NIRUNLX0ZVTkNTKFtmcGNsYXNzIGZwX2NsYXNzIGZwX2NsYXNzX2QgY2xh c3NdLCBbYnJlYWtdKQogZmkKIAotQUNfUkVQTEFDRV9GVU5DUyhbY3J5cHQgZmxzIGdldG9w dCBnZXRydXNhZ2UgaW5ldF9hdG9uIG1rZHRlbXAgcmFuZG9tIHJpbnQgc3JhbmRvbSBzdHJl cnJvciBzdHJsY2F0IHN0cmxjcHkgc3Rybmxlbl0pCitBQ19SRVBMQUNFX0ZVTkNTKFtjcnlw dCBkbG9wZW4gZmxzIGdldG9wdCBnZXRydXNhZ2UgaW5ldF9hdG9uIG1rZHRlbXAgcmFuZG9t IHJpbnQgc3JhbmRvbSBzdHJlcnJvciBzdHJsY2F0IHN0cmxjcHkgc3Rybmxlbl0pCiAKIGNh c2UgJGhvc3Rfb3MgaW4KIApAQCAtMjM4MiwxMCArMjM4NCw4IEBAIEFDX1NVQlNUKHZwYXRo X2J1aWxkKQogQUNfQ09ORklHX0ZJTEVTKFtHTlVtYWtlZmlsZSBzcmMvTWFrZWZpbGUuZ2xv YmFsXSkKIAogQUNfQ09ORklHX0xJTktTKFsKLSAgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIuYzpzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci8ke3RlbXBsYXRlfS5jCiAgIHNyYy9i YWNrZW5kL3BvcnQvcGdfc2VtYS5jOiR7U0VNQV9JTVBMRU1FTlRBVElPTn0KICAgc3JjL2Jh Y2tlbmQvcG9ydC9wZ19zaG1lbS5jOiR7U0hNRU1fSU1QTEVNRU5UQVRJT059Ci0gIHNyYy9p bmNsdWRlL2R5bmxvYWRlci5oOnNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyLyR7dGVtcGxh dGV9LmgKICAgc3JjL2luY2x1ZGUvcGdfY29uZmlnX29zLmg6c3JjL2luY2x1ZGUvcG9ydC8k e3RlbXBsYXRlfS5oCiAgIHNyYy9NYWtlZmlsZS5wb3J0OnNyYy9tYWtlZmlsZXMvTWFrZWZp bGUuJHt0ZW1wbGF0ZX0KIF0pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL01ha2VmaWxlCmluZGV4IDI1YWY1MTRmYmEuLjNhNThiZjY2ODUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL01ha2Vm aWxlCkBAIC0yOTMsNyArMjkzLDcgQEAgaWZlcSAoJChQT1JUTkFNRSksIHdpbjMyKQogZW5k aWYKIAogZGlzdGNsZWFuOiBjbGVhbgotCXJtIC1mIHBvcnQvdGFzLnMgcG9ydC9keW5sb2Fk ZXIuYyBwb3J0L3BnX3NlbWEuYyBwb3J0L3BnX3NobWVtLmMKKwlybSAtZiBwb3J0L3Rhcy5z IHBvcnQvcGdfc2VtYS5jIHBvcnQvcGdfc2htZW0uYwogCiBtYWludGFpbmVyLWNsZWFuOiBk aXN0Y2xlYW4KIAkkKE1BS0UpIC1DIGNhdGFsb2cgJEAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BvcnQvLmdpdGlnbm9yZSBiL3NyYy9iYWNrZW5kL3BvcnQvLmdpdGlnbm9yZQppbmRl eCA5ZjRmMWFmNWU5Li40ZWYzNmI4MmM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0 Ly5naXRpZ25vcmUKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC8uZ2l0aWdub3JlCkBAIC0xLDQg KzEsMyBAQAotL2R5bmxvYWRlci5jCiAvcGdfc2VtYS5jCiAvcGdfc2htZW0uYwogL3Rhcy5z CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQv cG9ydC9NYWtlZmlsZQppbmRleCBhYmExZTkyZmUxLi5mNDEyMGJlYzU1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3J0L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvTWFr ZWZpbGUKQEAgLTIxLDcgKzIxLDcgQEAgc3ViZGlyID0gc3JjL2JhY2tlbmQvcG9ydAogdG9w X2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIAotT0JKUyA9IGF0b21pY3MubyBkeW5sb2FkZXIubyBwZ19zZW1hLm8g cGdfc2htZW0ubyAkKFRBUykKK09CSlMgPSBhdG9taWNzLm8gcGdfc2VtYS5vIHBnX3NobWVt Lm8gJChUQVMpCiAKIGlmZXEgKCQoUE9SVE5BTUUpLCB3aW4zMikKIFNVQkRJUlMgKz0gd2lu MzIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2FpeC5jIGIvc3Jj L2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvYWl4LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGJmNmVjMjU3ZTcuLjAwMDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9k eW5sb2FkZXIvYWl4LmMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLS8qCi0gKiBz cmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9haXguYwotICoKLSAqIER1bW15IGZpbGUgdXNl ZCBmb3Igbm90aGluZyBhdCB0aGlzIHBvaW50Ci0gKgotICogc2VlIGFpeC5oCi0gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2FpeC5oIGIvc3JjL2JhY2tl bmQvcG9ydC9keW5sb2FkZXIvYWl4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGRmNGY1ZDVhMWEuLjAwMDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2Fk ZXIvYWl4LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAqCi0gKiBhaXguaAotICoJICBwcm90b3R5cGVzIGZvciBBSVgtc3BlY2lm aWMgcm91dGluZXMKLSAqCi0gKgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQotICoKLSAqIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2FpeC5oCi0gKgotICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotI2lmbmRlZiBQT1JUX1BST1RPU19ICi0jZGVm aW5lIFBPUlRfUFJPVE9TX0gKLQotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSAidXRp bHMvZHluYW1pY19sb2FkZXIuaCIJLyogcGdybWluY2x1ZGUgaWdub3JlICovCi0KLS8qCi0g KiBJbiBzb21lIG9sZGVyIHN5c3RlbXMsIHRoZSBSVExEX05PVyBmbGFnIGlzbid0IGRlZmlu ZWQgYW5kIHRoZSBtb2RlCi0gKiBhcmd1bWVudCB0byBkbG9wZW4gbXVzdCBhbHdheXMgYmUg MS4gIFRoZSBSVExEX0dMT0JBTCBmbGFnIGlzIHdhbnRlZAotICogaWYgYXZhaWxhYmxlLCBi dXQgaXQgZG9lc24ndCBleGlzdCBldmVyeXdoZXJlLgotICogSWYgaXQgZG9lc24ndCBleGlz dCwgc2V0IGl0IHRvIDAgc28gaXQgaGFzIG5vIGVmZmVjdC4KLSAqLwotI2lmbmRlZiBSVExE X05PVwotI2RlZmluZSBSVExEX05PVyAxCi0jZW5kaWYKLSNpZm5kZWYgUlRMRF9HTE9CQUwK LSNkZWZpbmUgUlRMRF9HTE9CQUwgMAotI2VuZGlmCi0KLSNkZWZpbmUgIHBnX2Rsb3Blbihm KQlkbG9wZW4oKGYpLCBSVExEX05PVyB8IFJUTERfR0xPQkFMKQotI2RlZmluZSAgcGdfZGxz eW0oaCwgZikgKChQR0Z1bmN0aW9uKSBkbHN5bShoLCBmKSkKLSNkZWZpbmUgIHBnX2RsY2xv c2UoaCkJZGxjbG9zZShoKQotI2RlZmluZSAgcGdfZGxlcnJvcigpCWRsZXJyb3IoKQotCi0j ZW5kaWYJCQkJCQkJLyogUE9SVF9QUk9UT1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9ydC9keW5sb2FkZXIvY3lnd2luLmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRl ci9jeWd3aW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM1MmJmNjE0Ny4u MDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9jeWd3aW4uYwor KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLyogc3JjL2JhY2tlbmQvcG9ydC9keW5s b2FkZXIvY3lnd2luLmMgKi8KLQotLyogRHVtbXkgZmlsZSB1c2VkIGZvciBub3RoaW5nIGF0 IHRoaXMgcG9pbnQ7IHNlZSBjeWd3aW4uaCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9ydC9keW5sb2FkZXIvY3lnd2luLmggYi9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9j eWd3aW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYwNWU2YjQxNi4uMDAw MDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9jeWd3aW4uaAorKysg L2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoK LSAqIER5bmFtaWMgbG9hZGVyIGRlY2xhcmF0aW9ucyBmb3IgQ3lnd2luCi0gKgotICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9iYWNrZW5kL3Bv cnQvZHlubG9hZGVyL2N5Z3dpbi5oCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICov Ci0jaWZuZGVmIFBPUlRfUFJPVE9TX0gKLSNkZWZpbmUgUE9SVF9QUk9UT1NfSAotCi0jaW5j bHVkZSA8ZGxmY24uaD4KLSNpbmNsdWRlICJ1dGlscy9keW5hbWljX2xvYWRlci5oIgkvKiBw Z3JtaW5jbHVkZSBpZ25vcmUgKi8KLQotLyoKLSAqIEluIHNvbWUgb2xkZXIgc3lzdGVtcywg dGhlIFJUTERfTk9XIGZsYWcgaXNuJ3QgZGVmaW5lZCBhbmQgdGhlIG1vZGUKLSAqIGFyZ3Vt ZW50IHRvIGRsb3BlbiBtdXN0IGFsd2F5cyBiZSAxLiAgVGhlIFJUTERfR0xPQkFMIGZsYWcg aXMgd2FudGVkCi0gKiBpZiBhdmFpbGFibGUsIGJ1dCBpdCBkb2Vzbid0IGV4aXN0IGV2ZXJ5 d2hlcmUuCi0gKiBJZiBpdCBkb2Vzbid0IGV4aXN0LCBzZXQgaXQgdG8gMCBzbyBpdCBoYXMg bm8gZWZmZWN0LgotICovCi0jaWZuZGVmIFJUTERfTk9XCi0jZGVmaW5lIFJUTERfTk9XIDEK LSNlbmRpZgotI2lmbmRlZiBSVExEX0dMT0JBTAotI2RlZmluZSBSVExEX0dMT0JBTCAwCi0j ZW5kaWYKLQotI2RlZmluZSBwZ19kbG9wZW4oZikJZGxvcGVuKChmKSwgUlRMRF9OT1cgfCBS VExEX0dMT0JBTCkKLSNkZWZpbmUgcGdfZGxzeW0JCWRsc3ltCi0jZGVmaW5lIHBnX2RsY2xv c2UJCWRsY2xvc2UKLSNkZWZpbmUgcGdfZGxlcnJvcgkJZGxlcnJvcgotCi0jZW5kaWYJCQkJ CQkJLyogUE9SVF9QUk9UT1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC9k eW5sb2FkZXIvZGFyd2luLmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9kYXJ3aW4u YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmYTBlMzlmMi4uMDAwMDAwMDAw MAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9kYXJ3aW4uYworKysgL2Rldi9u dWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBEeW5hbWljIGxvYWRpbmcgc3VwcG9ydCBm b3IgbWFjT1MgKERhcndpbikKLSAqCi0gKiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9k YXJ3aW4uYwotICovCi0jaW5jbHVkZSAicG9zdGdyZXMuaCIKLQotI2luY2x1ZGUgPGRsZmNu Lmg+Ci0KLSNpbmNsdWRlICJkeW5sb2FkZXIuaCIKLQotCi12b2lkICoKLXBnX2Rsb3Blbihj b25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLQlyZXR1cm4gZGxvcGVuKGZpbGVuYW1lLCBSVExE X05PVyB8IFJUTERfR0xPQkFMKTsKLX0KLQotdm9pZAotcGdfZGxjbG9zZSh2b2lkICpoYW5k bGUpCi17Ci0JZGxjbG9zZShoYW5kbGUpOwotfQotCi1QR0Z1bmN0aW9uCi1wZ19kbHN5bSh2 b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQotewotCXJldHVybiBkbHN5bSho YW5kbGUsIGZ1bmNuYW1lKTsKLX0KLQotY2hhciAqCi1wZ19kbGVycm9yKHZvaWQpCi17Ci0J cmV0dXJuIGRsZXJyb3IoKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlu bG9hZGVyL2Rhcndpbi5oIGIvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvZGFyd2luLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MmEzMWRlMTMuLjAwMDAwMDAwMDAK LS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvZGFyd2luLmgKKysrIC9kZXYvbnVs bApAQCAtMSw4ICswLDAgQEAKLS8qIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2Rhcndp bi5oICovCi0KLSNpbmNsdWRlICJmbWdyLmgiCi0KLXZvaWQJICAgKnBnX2Rsb3Blbihjb25z dCBjaGFyICpmaWxlbmFtZSk7Ci1QR0Z1bmN0aW9uCXBnX2Rsc3ltKHZvaWQgKmhhbmRsZSwg Y29uc3QgY2hhciAqZnVuY25hbWUpOwotdm9pZAkJcGdfZGxjbG9zZSh2b2lkICpoYW5kbGUp OwotY2hhcgkgICAqcGdfZGxlcnJvcih2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BvcnQvZHlubG9hZGVyL2ZyZWVic2QuYyBiL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVy L2ZyZWVic2QuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFiOTZlYmFmMC4u MDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9mcmVlYnNkLmMK KysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLS8qCi0gKiBzcmMvYmFja2VuZC9wb3J0 L2R5bmxvYWRlci9mcmVlYnNkLmMKLSAqCi0gKiBEdW1teSBmaWxlIHVzZWQgZm9yIG5vdGhp bmcgYXQgdGhpcyBwb2ludAotICoKLSAqIHNlZSBmcmVlYnNkLmgKLSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvZnJlZWJzZC5oIGIvc3JjL2JhY2tlbmQv cG9ydC9keW5sb2FkZXIvZnJlZWJzZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBkYmRkMDNjYjNhLi4wMDAwMDAwMDAwCi0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9h ZGVyL2ZyZWVic2QuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotICoKLSAqIGZyZWVic2QuaAotICoJICBwb3J0LXNwZWNpZmljIHBy b3RvdHlwZXMgZm9yIEZyZWVCU0QKLSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCi0gKgotICogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvZnJlZWJzZC5o Ci0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpZm5kZWYgUE9SVF9QUk9UT1Nf SAotI2RlZmluZSBQT1JUX1BST1RPU19ICi0KLSNpbmNsdWRlIDxkbGZjbi5oPgotCi0jaW5j bHVkZSAidXRpbHMvZHluYW1pY19sb2FkZXIuaCIJLyogcGdybWluY2x1ZGUgaWdub3JlICov Ci0KLS8qCi0gKiBJbiBzb21lIG9sZGVyIHN5c3RlbXMsIHRoZSBSVExEX05PVyBmbGFnIGlz bid0IGRlZmluZWQgYW5kIHRoZSBtb2RlCi0gKiBhcmd1bWVudCB0byBkbG9wZW4gbXVzdCBh bHdheXMgYmUgMS4gIFRoZSBSVExEX0dMT0JBTCBmbGFnIGlzIHdhbnRlZAotICogaWYgYXZh aWxhYmxlLCBidXQgaXQgZG9lc24ndCBleGlzdCBldmVyeXdoZXJlLgotICogSWYgaXQgZG9l c24ndCBleGlzdCwgc2V0IGl0IHRvIDAgc28gaXQgaGFzIG5vIGVmZmVjdC4KLSAqLwotI2lm bmRlZiBSVExEX05PVwotI2RlZmluZSBSVExEX05PVyAxCi0jZW5kaWYKLSNpZm5kZWYgUlRM RF9HTE9CQUwKLSNkZWZpbmUgUlRMRF9HTE9CQUwgMAotI2VuZGlmCi0KLSNkZWZpbmUgcGdf ZGxvcGVuKGYpCWRsb3BlbigoZiksIFJUTERfTk9XIHwgUlRMRF9HTE9CQUwpCi0jZGVmaW5l IHBnX2Rsc3ltCQlkbHN5bQotI2RlZmluZSBwZ19kbGNsb3NlCQlkbGNsb3NlCi0jZGVmaW5l IHBnX2RsZXJyb3IJCWRsZXJyb3IKLQotI2VuZGlmCQkJCQkJCS8qIFBPUlRfUFJPVE9TX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2hwdXguYyBiL3Ny Yy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2hwdXguYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZDgyZGQ3NjAzYi4uMDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0 L2R5bmxvYWRlci9ocHV4LmMKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBkeW5sb2FkZXIuYwotICoJICBkeW5hbWljIGxv YWRlciBmb3IgSFAtVVggdXNpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5IG1lY2hhbmlzbQotICoK LSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKgotICogSURF TlRJRklDQVRJT04KLSAqCSAgc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvaHB1eC5jCi0g KgotICoJTk9URVMKLSAqCQlhbGwgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhlcmUgLS0gaXQn cyBpbXBvc3NpYmxlIHRvIHRyYWNlIHRoZQotICoJCXNobF8qIHJvdXRpbmVzIGZyb20gdGhl IGJ1bmRsZWQgSFAtVVggZGVidWdnZXIuCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ki8KLSNpbmNsdWRlICJwb3N0Z3Jlcy5oIgotCi0vKiBTeXN0ZW0gaW5jbHVkZXMgKi8KLSNp bmNsdWRlIDxhLm91dC5oPgotI2luY2x1ZGUgPGRsLmg+Ci0KLSNpbmNsdWRlICJkeW5sb2Fk ZXIuaCIKLSNpbmNsdWRlICJ1dGlscy9keW5hbWljX2xvYWRlci5oIgotCi12b2lkICoKLXBn X2Rsb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLQkvKgotCSAqIFVzZSBCSU5EX0lN TUVESUFURSBzbyB0aGF0IHVuZGVmaW5lZCBzeW1ib2xzIGNhdXNlIGEgZmFpbHVyZSByZXR1 cm4KLQkgKiBmcm9tIHNobF9sb2FkKCksIHJhdGhlciB0aGFuIGFuIGFib3J0KCkgbGF0ZXIg b24gd2hlbiB3ZSBhdHRlbXB0IHRvCi0JICogY2FsbCB0aGUgbGlicmFyeSEKLQkgKi8KLQlz aGxfdAkJaGFuZGxlID0gc2hsX2xvYWQoZmlsZW5hbWUsCi0JCQkJCQkJCSAgQklORF9JTU1F RElBVEUgfCBCSU5EX1ZFUkJPU0UgfCBEWU5BTUlDX1BBVEgsCi0JCQkJCQkJCSAgMEwpOwot Ci0JcmV0dXJuICh2b2lkICopIGhhbmRsZTsKLX0KLQotUEdGdW5jdGlvbgotcGdfZGxzeW0o dm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKLXsKLQlQR0Z1bmN0aW9uCWY7 Ci0KLQlpZiAoc2hsX2ZpbmRzeW0oKHNobF90ICopICYgaGFuZGxlLCBmdW5jbmFtZSwgVFlQ RV9QUk9DRURVUkUsICZmKSA9PSAtMSkKLQkJZiA9IChQR0Z1bmN0aW9uKSBOVUxMOwotCXJl dHVybiBmOwotfQotCi12b2lkCi1wZ19kbGNsb3NlKHZvaWQgKmhhbmRsZSkKLXsKLQlzaGxf dW5sb2FkKChzaGxfdCkgaGFuZGxlKTsKLX0KLQotY2hhciAqCi1wZ19kbGVycm9yKHZvaWQp Ci17Ci0Jc3RhdGljIGNoYXIgZXJybXNnW10gPSAic2hsX2xvYWQgZmFpbGVkIjsKLQotCWlm IChlcnJubykKLQkJcmV0dXJuIHN0cmVycm9yKGVycm5vKTsKLQotCXJldHVybiBlcnJtc2c7 Ci19CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9ocHV4LmggYi9z cmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9ocHV4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDFjYmM0Njk2MGUuLjAwMDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvcG9y dC9keW5sb2FkZXIvaHB1eC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogZHlubG9hZGVyLmgKLSAqCSAgZHluYW1pYyBs b2FkZXIgZm9yIEhQLVVYIHVzaW5nIHRoZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20KLSAq Ci0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKgotICoKLSAqIElE RU5USUZJQ0FUSU9OCi0gKgkgIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2hwdXguaAot ICoKLSAqCU5PVEVTCi0gKgkJYWxsIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBoZXJlIC0tIGl0 J3MgaW1wb3NzaWJsZSB0byB0cmFjZSB0aGUKLSAqCQlzaGxfKiByb3V0aW5lcyBmcm9tIHRo ZSBidW5kbGVkIEhQLVVYIGRlYnVnZ2VyLgotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot ICovCi0vKiBTeXN0ZW0gaW5jbHVkZXMgKi8KLSNpbmNsdWRlICJmbWdyLmgiCi0KLWV4dGVy biB2b2lkICpwZ19kbG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUpOwotZXh0ZXJuIFBHRnVu Y3Rpb24gcGdfZGxzeW0odm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpmdW5jbmFtZSk7Ci1l eHRlcm4gdm9pZCBwZ19kbGNsb3NlKHZvaWQgKmhhbmRsZSk7Ci1leHRlcm4gY2hhciAqcGdf ZGxlcnJvcih2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVy L2xpbnV4LmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9saW51eC5jCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTI2NTc2ZThmLi4wMDAwMDAwMDAwCi0tLSBhL3Ny Yy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL2xpbnV4LmMKKysrIC9kZXYvbnVsbApAQCAtMSw3 ICswLDAgQEAKLS8qCi0gKiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9saW51eC5jCi0g KgotICogRHVtbXkgZmlsZSB1c2VkIGZvciBub3RoaW5nIGF0IHRoaXMgcG9pbnQKLSAqCi0g KiBzZWUgbGludXguaAotICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxv YWRlci9saW51eC5oIGIvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvbGludXguaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJlYjNkNjNmOC4uMDAwMDAwMDAwMAotLS0g YS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9saW51eC5oCisrKyAvZGV2L251bGwKQEAg LTEsMzggKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogbGludXguaAot ICoJCVBvcnQtc3BlY2lmaWMgcHJvdG90eXBlcyBmb3IgTGludXgKLSAqCi0gKgotICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9iYWNrZW5kL3Bv cnQvZHlubG9hZGVyL2xpbnV4LmgKLSAqCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwot I2lmbmRlZiBQT1JUX1BST1RPU19ICi0jZGVmaW5lIFBPUlRfUFJPVE9TX0gKLQotI2luY2x1 ZGUgInV0aWxzL2R5bmFtaWNfbG9hZGVyLmgiCS8qIHBncm1pbmNsdWRlIGlnbm9yZSAqLwot I2luY2x1ZGUgPGRsZmNuLmg+Ci0KLS8qCi0gKiBJbiBzb21lIG9sZGVyIHN5c3RlbXMsIHRo ZSBSVExEX05PVyBmbGFnIGlzbid0IGRlZmluZWQgYW5kIHRoZSBtb2RlCi0gKiBhcmd1bWVu dCB0byBkbG9wZW4gbXVzdCBhbHdheXMgYmUgMS4gIFRoZSBSVExEX0dMT0JBTCBmbGFnIGlz IHdhbnRlZAotICogaWYgYXZhaWxhYmxlLCBidXQgaXQgZG9lc24ndCBleGlzdCBldmVyeXdo ZXJlLgotICogSWYgaXQgZG9lc24ndCBleGlzdCwgc2V0IGl0IHRvIDAgc28gaXQgaGFzIG5v IGVmZmVjdC4KLSAqLwotI2lmbmRlZiBSVExEX05PVwotI2RlZmluZSBSVExEX05PVyAxCi0j ZW5kaWYKLSNpZm5kZWYgUlRMRF9HTE9CQUwKLSNkZWZpbmUgUlRMRF9HTE9CQUwgMAotI2Vu ZGlmCi0KLSNkZWZpbmUgcGdfZGxvcGVuKGYpCWRsb3BlbigoZiksIFJUTERfTk9XIHwgUlRM RF9HTE9CQUwpCi0jZGVmaW5lIHBnX2Rsc3ltCQlkbHN5bQotI2RlZmluZSBwZ19kbGNsb3Nl CQlkbGNsb3NlCi0jZGVmaW5lIHBnX2RsZXJyb3IJCWRsZXJyb3IKLQotI2VuZGlmCQkJCQkJ CS8qIFBPUlRfUFJPVE9TX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlu bG9hZGVyL25ldGJzZC5jIGIvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvbmV0YnNkLmMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmN2Y1Njg2NGQuLjAwMDAwMDAwMDAK LS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvbmV0YnNkLmMKKysrIC9kZXYvbnVs bApAQCAtMSw3ICswLDAgQEAKLS8qCi0gKiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9u ZXRic2QuYwotICoKLSAqIER1bW15IGZpbGUgdXNlZCBmb3Igbm90aGluZyBhdCB0aGlzIHBv aW50Ci0gKgotICogc2VlIG5ldGJzZC5oCi0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BvcnQvZHlubG9hZGVyL25ldGJzZC5oIGIvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIv bmV0YnNkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYzM4ZWI5OGEuLjAw MDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvbmV0YnNkLmgKKysr IC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAq Ci0gKiBuZXRic2QuaAotICoJICBwb3J0LXNwZWNpZmljIHByb3RvdHlwZXMgZm9yIE5ldEJT RAotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBz cmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9uZXRic2QuaAotICoKLSAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotICovCi0jaWZuZGVmIFBPUlRfUFJPVE9TX0gKLSNkZWZpbmUgUE9SVF9QUk9U T1NfSAotCi0jaW5jbHVkZSA8ZGxmY24uaD4KLQotI2luY2x1ZGUgInV0aWxzL2R5bmFtaWNf bG9hZGVyLmgiCS8qIHBncm1pbmNsdWRlIGlnbm9yZSAqLwotCi0vKgotICogSW4gc29tZSBv bGRlciBzeXN0ZW1zLCB0aGUgUlRMRF9OT1cgZmxhZyBpc24ndCBkZWZpbmVkIGFuZCB0aGUg bW9kZQotICogYXJndW1lbnQgdG8gZGxvcGVuIG11c3QgYWx3YXlzIGJlIDEuICBUaGUgUlRM RF9HTE9CQUwgZmxhZyBpcyB3YW50ZWQKLSAqIGlmIGF2YWlsYWJsZSwgYnV0IGl0IGRvZXNu J3QgZXhpc3QgZXZlcnl3aGVyZS4KLSAqIElmIGl0IGRvZXNuJ3QgZXhpc3QsIHNldCBpdCB0 byAwIHNvIGl0IGhhcyBubyBlZmZlY3QuCi0gKi8KLSNpZm5kZWYgUlRMRF9OT1cKLSNkZWZp bmUgUlRMRF9OT1cgMQotI2VuZGlmCi0jaWZuZGVmIFJUTERfR0xPQkFMCi0jZGVmaW5lIFJU TERfR0xPQkFMIDAKLSNlbmRpZgotCi0jZGVmaW5lIHBnX2Rsb3BlbihmKQlkbG9wZW4oKGYp LCBSVExEX05PVyB8IFJUTERfR0xPQkFMKQotI2RlZmluZSBwZ19kbHN5bQkJZGxzeW0KLSNk ZWZpbmUgcGdfZGxjbG9zZQkJZGxjbG9zZQotI2RlZmluZSBwZ19kbGVycm9yCQlkbGVycm9y Ci0KLSNlbmRpZgkJCQkJCQkvKiBQT1JUX1BST1RPU19IICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3J0L2R5bmxvYWRlci9vcGVuYnNkLmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5 bmxvYWRlci9vcGVuYnNkLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhOGUx ZDg5ZDcuLjAwMDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvb3Bl bmJzZC5jCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0vKgotICogc3JjL2JhY2tl bmQvcG9ydC9keW5sb2FkZXIvb3BlbmJzZC5jCi0gKgotICogRHVtbXkgZmlsZSB1c2VkIGZv ciBub3RoaW5nIGF0IHRoaXMgcG9pbnQKLSAqCi0gKiBzZWUgb3BlbmJzZC5oCi0gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL29wZW5ic2QuaCBiL3NyYy9i YWNrZW5kL3BvcnQvZHlubG9hZGVyL29wZW5ic2QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNzhiZmJlZDY5NC4uMDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0 L2R5bmxvYWRlci9vcGVuYnNkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0v Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBvcGVuYnNkLmgKLSAqCSAgcG9ydC1zcGVj aWZpYyBwcm90b3R5cGVzIGZvciBPcGVuQlNECi0gKgotICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCi0g KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL29w ZW5ic2QuaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0jaWZuZGVmIFBPUlRf UFJPVE9TX0gKLSNkZWZpbmUgUE9SVF9QUk9UT1NfSAotCi0jaW5jbHVkZSA8ZGxmY24uaD4K LQotI2luY2x1ZGUgInV0aWxzL2R5bmFtaWNfbG9hZGVyLmgiCS8qIHBncm1pbmNsdWRlIGln bm9yZSAqLwotCi0vKgotICogSW4gc29tZSBvbGRlciBzeXN0ZW1zLCB0aGUgUlRMRF9OT1cg ZmxhZyBpc24ndCBkZWZpbmVkIGFuZCB0aGUgbW9kZQotICogYXJndW1lbnQgdG8gZGxvcGVu IG11c3QgYWx3YXlzIGJlIDEuICBUaGUgUlRMRF9HTE9CQUwgZmxhZyBpcyB3YW50ZWQKLSAq IGlmIGF2YWlsYWJsZSwgYnV0IGl0IGRvZXNuJ3QgZXhpc3QgZXZlcnl3aGVyZS4KLSAqIElm IGl0IGRvZXNuJ3QgZXhpc3QsIHNldCBpdCB0byAwIHNvIGl0IGhhcyBubyBlZmZlY3QuCi0g Ki8KLSNpZm5kZWYgUlRMRF9OT1cKLSNkZWZpbmUgUlRMRF9OT1cgMQotI2VuZGlmCi0jaWZu ZGVmIFJUTERfR0xPQkFMCi0jZGVmaW5lIFJUTERfR0xPQkFMIDAKLSNlbmRpZgotCi0jZGVm aW5lIHBnX2Rsb3BlbihmKQlkbG9wZW4oKGYpLCBSVExEX05PVyB8IFJUTERfR0xPQkFMKQot I2RlZmluZSBwZ19kbHN5bQkJZGxzeW0KLSNkZWZpbmUgcGdfZGxjbG9zZQkJZGxjbG9zZQot I2RlZmluZSBwZ19kbGVycm9yCQlkbGVycm9yCi0KLSNlbmRpZgkJCQkJCQkvKiBQT1JUX1BS T1RPU19IICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9zb2xh cmlzLmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9zb2xhcmlzLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YWRjZWRjNWUuLjAwMDAwMDAwMDAKLS0tIGEvc3Jj L2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvc29sYXJpcy5jCisrKyAvZGV2L251bGwKQEAgLTEs NyArMCwwIEBACi0vKgotICogc3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvc29sYXJpcy5j Ci0gKgotICogRHVtbXkgZmlsZSB1c2VkIGZvciBub3RoaW5nIGF0IHRoaXMgcG9pbnQKLSAq Ci0gKiBzZWUgc29sYXJpcy5oCi0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQv ZHlubG9hZGVyL3NvbGFyaXMuaCBiL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3NvbGFy aXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU4M2MyNjZjZi4uMDAwMDAw MDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9zb2xhcmlzLmgKKysrIC9k ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0g KiBzb2xhcmlzLmgKLSAqCSAgcG9ydC1zcGVjaWZpYyBwcm90b3R5cGVzIGZvciBTb2xhcmlz Ci0gKgotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0g KiBzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci9zb2xhcmlzLmgKLSAqCi0gKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAqLwotI2lmbmRlZiBQT1JUX1BST1RPU19ICi0jZGVmaW5lIFBPUlRf UFJPVE9TX0gKLQotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSAidXRpbHMvZHluYW1p Y19sb2FkZXIuaCIJLyogcGdybWluY2x1ZGUgaWdub3JlICovCi0KLS8qCi0gKiBJbiBzb21l IG9sZGVyIHN5c3RlbXMsIHRoZSBSVExEX05PVyBmbGFnIGlzbid0IGRlZmluZWQgYW5kIHRo ZSBtb2RlCi0gKiBhcmd1bWVudCB0byBkbG9wZW4gbXVzdCBhbHdheXMgYmUgMS4gIFRoZSBS VExEX0dMT0JBTCBmbGFnIGlzIHdhbnRlZAotICogaWYgYXZhaWxhYmxlLCBidXQgaXQgZG9l c24ndCBleGlzdCBldmVyeXdoZXJlLgotICogSWYgaXQgZG9lc24ndCBleGlzdCwgc2V0IGl0 IHRvIDAgc28gaXQgaGFzIG5vIGVmZmVjdC4KLSAqLwotI2lmbmRlZiBSVExEX05PVwotI2Rl ZmluZSBSVExEX05PVyAxCi0jZW5kaWYKLSNpZm5kZWYgUlRMRF9HTE9CQUwKLSNkZWZpbmUg UlRMRF9HTE9CQUwgMAotI2VuZGlmCi0KLSNkZWZpbmUgcGdfZGxvcGVuKGYpCWRsb3Blbigo ZiksIFJUTERfTk9XIHwgUlRMRF9HTE9CQUwpCi0jZGVmaW5lIHBnX2Rsc3ltCQlkbHN5bQot I2RlZmluZSBwZ19kbGNsb3NlCQlkbGNsb3NlCi0jZGVmaW5lIHBnX2RsZXJyb3IJCWRsZXJy b3IKLQotI2VuZGlmCQkJCQkJCS8qIFBPUlRfUFJPVE9TX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMyLmMgYi9zcmMvYmFja2VuZC9wb3J0L2R5 bmxvYWRlci93aW4zMi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTk4MjNl MzY3Li4wMDAwMDAwMDAwCi0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMy LmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKiBzcmMvYmFja2VuZC9wb3J0 L2R5bmxvYWRlci93aW4zMi5jICovCi0KLSNpbmNsdWRlICJwb3N0Z3Jlcy5oIgotCi1jaGFy CSAgICpkbGVycm9yKHZvaWQpOwotaW50CQkJZGxjbG9zZSh2b2lkICpoYW5kbGUpOwotdm9p ZAkgICAqZGxzeW0odm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpzeW1ib2wpOwotdm9pZAkg ICAqZGxvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKTsKLQotc3RhdGljIGNoYXIg bGFzdF9keW5fZXJyb3JbNTEyXTsKLQotc3RhdGljIHZvaWQKLXNldF9kbF9lcnJvcih2b2lk KQotewotCURXT1JECQllcnIgPSBHZXRMYXN0RXJyb3IoKTsKLQotCWlmIChGb3JtYXRNZXNz YWdlKEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTIHwKLQkJCQkJICBGT1JNQVRfTUVT U0FHRV9GUk9NX1NZU1RFTSwKLQkJCQkJICBOVUxMLAotCQkJCQkgIGVyciwKLQkJCQkJICBN QUtFTEFOR0lEKExBTkdfRU5HTElTSCwgU1VCTEFOR19ERUZBVUxUKSwKLQkJCQkJICBsYXN0 X2R5bl9lcnJvciwKLQkJCQkJICBzaXplb2YobGFzdF9keW5fZXJyb3IpIC0gMSwKLQkJCQkJ ICBOVUxMKSA9PSAwKQotCXsKLQkJc25wcmludGYobGFzdF9keW5fZXJyb3IsIHNpemVvZihs YXN0X2R5bl9lcnJvcikgLSAxLAotCQkJCSAidW5rbm93biBlcnJvciAlbHUiLCBlcnIpOwot CX0KLX0KLQotY2hhciAqCi1kbGVycm9yKHZvaWQpCi17Ci0JaWYgKGxhc3RfZHluX2Vycm9y WzBdKQotCQlyZXR1cm4gbGFzdF9keW5fZXJyb3I7Ci0JZWxzZQotCQlyZXR1cm4gTlVMTDsK LX0KLQotaW50Ci1kbGNsb3NlKHZvaWQgKmhhbmRsZSkKLXsKLQlpZiAoIUZyZWVMaWJyYXJ5 KChITU9EVUxFKSBoYW5kbGUpKQotCXsKLQkJc2V0X2RsX2Vycm9yKCk7Ci0JCXJldHVybiAx OwotCX0KLQlsYXN0X2R5bl9lcnJvclswXSA9IDA7Ci0JcmV0dXJuIDA7Ci19Ci0KLXZvaWQg KgotZGxzeW0odm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpzeW1ib2wpCi17Ci0Jdm9pZAkg ICAqcHRyOwotCi0JcHRyID0gR2V0UHJvY0FkZHJlc3MoKEhNT0RVTEUpIGhhbmRsZSwgc3lt Ym9sKTsKLQlpZiAoIXB0cikKLQl7Ci0JCXNldF9kbF9lcnJvcigpOwotCQlyZXR1cm4gTlVM TDsKLQl9Ci0JbGFzdF9keW5fZXJyb3JbMF0gPSAwOwotCXJldHVybiBwdHI7Ci19Ci0KLXZv aWQgKgotZGxvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQotewotCUhNT0RVTEUJ CWg7Ci0JaW50CQkJcHJldm1vZGU7Ci0KLQkvKiBEaXNhYmxlIHBvcHVwIGVycm9yIG1lc3Nh Z2VzIHdoZW4gbG9hZGluZyBETExzICovCi0JcHJldm1vZGUgPSBTZXRFcnJvck1vZGUoU0VN X0ZBSUxDUklUSUNBTEVSUk9SUyB8IFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwotCWggPSBM b2FkTGlicmFyeShwYXRoKTsKLQlTZXRFcnJvck1vZGUocHJldm1vZGUpOwotCi0JaWYgKCFo KQotCXsKLQkJc2V0X2RsX2Vycm9yKCk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQlsYXN0X2R5 bl9lcnJvclswXSA9IDA7Ci0JcmV0dXJuICh2b2lkICopIGg7Ci19CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci93aW4zMi5oIGIvc3JjL2JhY2tlbmQvcG9ydC9k eW5sb2FkZXIvd2luMzIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRiZjg2 NjUyMC4uMDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci93aW4z Mi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLyoKLSAqIHNyYy9iYWNrZW5k L3BvcnQvZHlubG9hZGVyL3dpbjMyLmgKLSAqLwotI2lmbmRlZiBQT1JUX1BST1RPU19ICi0j ZGVmaW5lIFBPUlRfUFJPVE9TX0gKLQotI2luY2x1ZGUgInV0aWxzL2R5bmFtaWNfbG9hZGVy LmgiCS8qIHBncm1pbmNsdWRlIGlnbm9yZSAqLwotCi0jZGVmaW5lIHBnX2Rsb3BlbihmKQlk bG9wZW4oKGYpLCAxKQotI2RlZmluZSBwZ19kbHN5bQkJZGxzeW0KLSNkZWZpbmUgcGdfZGxj bG9zZQkJZGxjbG9zZQotI2RlZmluZSBwZ19kbGVycm9yCQlkbGVycm9yCi0KLWNoYXIJICAg KmRsZXJyb3Iodm9pZCk7Ci1pbnQJCQlkbGNsb3NlKHZvaWQgKmhhbmRsZSk7Ci12b2lkCSAg ICpkbHN5bSh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKnN5bWJvbCk7Ci12b2lkCSAgICpk bG9wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUpOwotCi0jZW5kaWYJCQkJCQkJLyog UE9SVF9QUk9UT1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRl eCA3ZmI0Mjk2YjdhLi4zMDVmZjM2MjU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYwpAQCAtMTI0LDcgKzEyNCw2IEBACiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRp bWUuaCIKLSNpbmNsdWRlICJ1dGlscy9keW5hbWljX2xvYWRlci5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGlkZmlsZS5oIgogI2luY2x1ZGUg InV0aWxzL3BzX3N0YXR1cy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1n ci9kZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jCmluZGV4IDFiMGRi YWQ4MmMuLmMyYTI1NzI1OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3Iv ZGZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKQEAgLTE2LDEx ICsxNiwxNCBAQAogCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAotI2luY2x1ZGUgImR5bmxv YWRlci5oIgorI2lmZGVmIEhBVkVfRExPUEVOCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRp ZgorCisjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgotI2lu Y2x1ZGUgInV0aWxzL2R5bmFtaWNfbG9hZGVyLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgogCiAKQEAgLTExMyw3ICsxMTYsNyBAQCBsb2FkX2V4dGVybmFsX2Z1bmN0aW9uKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkgKiBzaG91bGQg ZGVjbGFyZSBpdHMgc2Vjb25kIGFyZ3VtZW50IGFzICJjb25zdCBjaGFyICoiLCBidXQgb2xk ZXIKIAkgKiBwbGF0Zm9ybXMgbWlnaHQgbm90LCBzbyBmb3IgdGhlIHRpbWUgYmVpbmcgd2Ug anVzdCBjYXN0IGF3YXkgY29uc3QuCiAJICovCi0JcmV0dmFsID0gKFBHRnVuY3Rpb24pIHBn X2Rsc3ltKGxpYl9oYW5kbGUsIChjaGFyICopIGZ1bmNuYW1lKTsKKwlyZXR2YWwgPSAoUEdG dW5jdGlvbikgZGxzeW0obGliX2hhbmRsZSwgKGNoYXIgKikgZnVuY25hbWUpOwogCiAJaWYg KHJldHZhbCA9PSBOVUxMICYmIHNpZ25hbE5vdEZvdW5kKQogCQllcmVwb3J0KEVSUk9SLApA QCAtMTYyLDcgKzE2NSw3IEBAIFBHRnVuY3Rpb24KIGxvb2t1cF9leHRlcm5hbF9mdW5jdGlv bih2b2lkICpmaWxlaGFuZGxlLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIHsKIAkvKiBhcyBh Ym92ZSwgY2FzdCBhd2F5IGNvbnN0IGZvciB0aGUgdGltZSBiZWluZyAqLwotCXJldHVybiAo UEdGdW5jdGlvbikgcGdfZGxzeW0oZmlsZWhhbmRsZSwgKGNoYXIgKikgZnVuY25hbWUpOwor CXJldHVybiAoUEdGdW5jdGlvbikgZGxzeW0oZmlsZWhhbmRsZSwgKGNoYXIgKikgZnVuY25h bWUpOwogfQogCiAKQEAgLTIyOCwxMCArMjMxLDEwIEBAIGludGVybmFsX2xvYWRfbGlicmFy eShjb25zdCBjaGFyICpsaWJuYW1lKQogI2VuZGlmCiAJCWZpbGVfc2Nhbm5lci0+bmV4dCA9 IE5VTEw7CiAKLQkJZmlsZV9zY2FubmVyLT5oYW5kbGUgPSBwZ19kbG9wZW4oZmlsZV9zY2Fu bmVyLT5maWxlbmFtZSk7CisJCWZpbGVfc2Nhbm5lci0+aGFuZGxlID0gZGxvcGVuKGZpbGVf c2Nhbm5lci0+ZmlsZW5hbWUsIFJUTERfTk9XIHwgUlRMRF9HTE9CQUwpOwogCQlpZiAoZmls ZV9zY2FubmVyLT5oYW5kbGUgPT0gTlVMTCkKIAkJewotCQkJbG9hZF9lcnJvciA9IChjaGFy ICopIHBnX2RsZXJyb3IoKTsKKwkJCWxvYWRfZXJyb3IgPSBkbGVycm9yKCk7CiAJCQlmcmVl KChjaGFyICopIGZpbGVfc2Nhbm5lcik7CiAJCQkvKiBlcnJjb2RlX2Zvcl9maWxlX2FjY2Vz cyBtaWdodCBub3QgYmUgYXBwcm9wcmlhdGUgaGVyZT8gKi8KIAkJCWVyZXBvcnQoRVJST1Is CkBAIC0yNDIsNyArMjQ1LDcgQEAgaW50ZXJuYWxfbG9hZF9saWJyYXJ5KGNvbnN0IGNoYXIg KmxpYm5hbWUpCiAKIAkJLyogQ2hlY2sgdGhlIG1hZ2ljIGZ1bmN0aW9uIHRvIGRldGVybWlu ZSBjb21wYXRpYmlsaXR5ICovCiAJCW1hZ2ljX2Z1bmMgPSAoUEdNb2R1bGVNYWdpY0Z1bmN0 aW9uKQotCQkJcGdfZGxzeW0oZmlsZV9zY2FubmVyLT5oYW5kbGUsIFBHX01BR0lDX0ZVTkNU SU9OX05BTUVfU1RSSU5HKTsKKwkJCWRsc3ltKGZpbGVfc2Nhbm5lci0+aGFuZGxlLCBQR19N QUdJQ19GVU5DVElPTl9OQU1FX1NUUklORyk7CiAJCWlmIChtYWdpY19mdW5jKQogCQl7CiAJ CQljb25zdCBQZ19tYWdpY19zdHJ1Y3QgKm1hZ2ljX2RhdGFfcHRyID0gKCptYWdpY19mdW5j KSAoKTsKQEAgLTI1Myw4ICsyNTYsOCBAQCBpbnRlcm5hbF9sb2FkX2xpYnJhcnkoY29uc3Qg Y2hhciAqbGlibmFtZSkKIAkJCQkvKiBjb3B5IGRhdGEgYmxvY2sgYmVmb3JlIHVubGlua2lu ZyBsaWJyYXJ5ICovCiAJCQkJUGdfbWFnaWNfc3RydWN0IG1vZHVsZV9tYWdpY19kYXRhID0g Km1hZ2ljX2RhdGFfcHRyOwogCi0JCQkJLyogdHJ5IHRvIHVubGluayBsaWJyYXJ5ICovCi0J CQkJcGdfZGxjbG9zZShmaWxlX3NjYW5uZXItPmhhbmRsZSk7CisJCQkJLyogdHJ5IHRvIGNs b3NlIGxpYnJhcnkgKi8KKwkJCQlkbGNsb3NlKGZpbGVfc2Nhbm5lci0+aGFuZGxlKTsKIAkJ CQlmcmVlKChjaGFyICopIGZpbGVfc2Nhbm5lcik7CiAKIAkJCQkvKiBpc3N1ZSBzdWl0YWJs ZSBjb21wbGFpbnQgKi8KQEAgLTI2Myw4ICsyNjYsOCBAQCBpbnRlcm5hbF9sb2FkX2xpYnJh cnkoY29uc3QgY2hhciAqbGlibmFtZSkKIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qIHRyeSB0 byB1bmxpbmsgbGlicmFyeSAqLwotCQkJcGdfZGxjbG9zZShmaWxlX3NjYW5uZXItPmhhbmRs ZSk7CisJCQkvKiB0cnkgdG8gY2xvc2UgbGlicmFyeSAqLworCQkJZGxjbG9zZShmaWxlX3Nj YW5uZXItPmhhbmRsZSk7CiAJCQlmcmVlKChjaGFyICopIGZpbGVfc2Nhbm5lcik7CiAJCQkv KiBjb21wbGFpbiAqLwogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTI3Niw3ICsyNzksNyBAQCBp bnRlcm5hbF9sb2FkX2xpYnJhcnkoY29uc3QgY2hhciAqbGlibmFtZSkKIAkJLyoKIAkJICog SWYgdGhlIGxpYnJhcnkgaGFzIGEgX1BHX2luaXQoKSBmdW5jdGlvbiwgY2FsbCBpdC4KIAkJ ICovCi0JCVBHX2luaXQgPSAoUEdfaW5pdF90KSBwZ19kbHN5bShmaWxlX3NjYW5uZXItPmhh bmRsZSwgIl9QR19pbml0Iik7CisJCVBHX2luaXQgPSAoUEdfaW5pdF90KSBkbHN5bShmaWxl X3NjYW5uZXItPmhhbmRsZSwgIl9QR19pbml0Iik7CiAJCWlmIChQR19pbml0KQogCQkJKCpQ R19pbml0KSAoKTsKIApAQCAtNDM2LDEyICs0MzksMTIgQEAgaW50ZXJuYWxfdW5sb2FkX2xp YnJhcnkoY29uc3QgY2hhciAqbGlibmFtZSkKIAkJCS8qCiAJCQkgKiBJZiB0aGUgbGlicmFy eSBoYXMgYSBfUEdfZmluaSgpIGZ1bmN0aW9uLCBjYWxsIGl0LgogCQkJICovCi0JCQlQR19m aW5pID0gKFBHX2ZpbmlfdCkgcGdfZGxzeW0oZmlsZV9zY2FubmVyLT5oYW5kbGUsICJfUEdf ZmluaSIpOworCQkJUEdfZmluaSA9IChQR19maW5pX3QpIGRsc3ltKGZpbGVfc2Nhbm5lci0+ aGFuZGxlLCAiX1BHX2ZpbmkiKTsKIAkJCWlmIChQR19maW5pKQogCQkJCSgqUEdfZmluaSkg KCk7CiAKIAkJCWNsZWFyX2V4dGVybmFsX2Z1bmN0aW9uX2hhc2goZmlsZV9zY2FubmVyLT5o YW5kbGUpOwotCQkJcGdfZGxjbG9zZShmaWxlX3NjYW5uZXItPmhhbmRsZSk7CisJCQlkbGNs b3NlKGZpbGVfc2Nhbm5lci0+aGFuZGxlKTsKIAkJCWZyZWUoKGNoYXIgKikgZmlsZV9zY2Fu bmVyKTsKIAkJCS8qIHBydiBkb2VzIG5vdCBjaGFuZ2UgKi8KIAkJfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvLmdpdGlnbm9yZSBiL3NyYy9pbmNsdWRlLy5naXRpZ25vcmUKaW5kZXgg NDlkMTA4ZGJlZC4uNTE4MTlmYjRkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvLmdpdGln bm9yZQorKysgYi9zcmMvaW5jbHVkZS8uZ2l0aWdub3JlCkBAIC0zLDQgKzMsMyBAQAogL3Bn X2NvbmZpZy5oCiAvcGdfY29uZmlnX2V4dC5oCiAvcGdfY29uZmlnX29zLmgKLS9keW5sb2Fk ZXIuaApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvTWFrZWZpbGUgYi9zcmMvaW5jbHVkZS9N YWtlZmlsZQppbmRleCA5MDFlZGRiZDQ0Li42YmRmZDdkYjkxIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9NYWtlZmlsZQorKysgYi9zcmMvaW5jbHVkZS9NYWtlZmlsZQpAQCAtNTQsNyAr NTQsNyBAQCBpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKIAkgIGNwICQoc3JjZGlyKS8kJGRp ci8qLmggJyQoREVTVERJUikkKGluY2x1ZGVkaXJfc2VydmVyKScvJCRkaXIvIHx8IGV4aXQ7 IFwKIAlkb25lCiBpZmVxICgkKHZwYXRoX2J1aWxkKSx5ZXMpCi0JZm9yIGZpbGUgaW4gZHlu bG9hZGVyLmggY2F0YWxvZy9zY2hlbWFwZy5oIGNhdGFsb2cvcGdfKl9kLmggcGFyc2VyL2dy YW0uaCBzdG9yYWdlL2x3bG9ja25hbWVzLmggdXRpbHMvcHJvYmVzLmg7IGRvIFwKKwlmb3Ig ZmlsZSBpbiBjYXRhbG9nL3NjaGVtYXBnLmggY2F0YWxvZy9wZ18qX2QuaCBwYXJzZXIvZ3Jh bS5oIHN0b3JhZ2UvbHdsb2NrbmFtZXMuaCB1dGlscy9wcm9iZXMuaDsgZG8gXAogCSAgY3Ag JCRmaWxlICckKERFU1RESVIpJChpbmNsdWRlZGlyX3NlcnZlciknLyQkZmlsZSB8fCBleGl0 OyBcCiAJZG9uZQogZW5kaWYKQEAgLTgyLDQgKzgyLDQgQEAgY2xlYW46CiAJcm0gLWYgY2F0 YWxvZy9zY2hlbWFwZy5oIGNhdGFsb2cvcGdfKl9kLmggY2F0YWxvZy9oZWFkZXItc3RhbXAK IAogZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW46IGNsZWFuCi0Jcm0gLWYgcGdfY29uZmln LmggcGdfY29uZmlnX2V4dC5oIHBnX2NvbmZpZ19vcy5oIGR5bmxvYWRlci5oIHN0YW1wLWgg c3RhbXAtZXh0LWgKKwlybSAtZiBwZ19jb25maWcuaCBwZ19jb25maWdfZXh0LmggcGdfY29u ZmlnX29zLmggc3RhbXAtaCBzdGFtcC1leHQtaApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCAzNDdk NWI1NmRjLi40MDk0ZTIyNzc2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcu aC5pbgorKysgYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtMTU4LDYgKzE1OCwx NCBAQAogICAgZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9ERUNMX1BPU0lYX0ZBRFZJU0UKIAor LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dM T0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNM X1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJh dGlvbiBvZiBgUlRMRF9OT1cnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3Vu ZGVmIEhBVkVfREVDTF9SVExEX05PVworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgZGVjbGFyYXRpb24gb2YgYHNucHJpbnRmJywgYW5kIHRvIDAgaWYgeW91CiAgICBkb24n dC4gKi8KICN1bmRlZiBIQVZFX0RFQ0xfU05QUklOVEYKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BnX2NvbmZpZy5oLndpbjMyIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmgud2luMzIK aW5kZXggN2E5MmQ4ODk5OS4uNjYxOGI0MzU4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGdfY29uZmlnLmgud2luMzIKKysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmgud2luMzIK QEAgLTEyNyw2ICsxMjcsMTQgQEAKICAgIHRvIDAgaWYgeW91IGRvbid0LiAqLwogI2RlZmlu ZSBIQVZFX0RFQ0xfTExWTU9SQ0dFVFNZTUJPTEFERFJFU1NJTiAwCiAKKy8qIERlZmluZSB0 byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9HTE9CQUwnLCBhbmQg dG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9C QUwgMAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2Yg YFJUTERfTk9XJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyNkZWZpbmUgSEFW RV9ERUNMX1JUTERfTk9XIDAKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRl Y2xhcmF0aW9uIG9mIGBzbnByaW50ZicsIGFuZCB0byAwIGlmIHlvdQogICAgZG9uJ3QuICov CiAjZGVmaW5lIEhBVkVfREVDTF9TTlBSSU5URiAxCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wb3J0LmggYi9zcmMvaW5jbHVkZS9wb3J0LmgKaW5kZXggMGNlNzJlNTBlNS4uZDkyNzU2 MTExZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC5oCisrKyBiL3NyYy9pbmNsdWRl L3BvcnQuaApAQCAtNDAzLDYgKzQwMywyOSBAQCBleHRlcm4gdm9pZCBzcmFuZG9tKHVuc2ln bmVkIGludCBzZWVkKTsKICNkZWZpbmUgU1NMX2dldF9jdXJyZW50X2NvbXByZXNzaW9uKHgp IDAKICNlbmRpZgogCisjaWZuZGVmIEhBVkVfRExPUEVOCitleHRlcm4gdm9pZCAqZGxvcGVu KGNvbnN0IGNoYXIgKmZpbGUsIGludCBtb2RlKTsKK2V4dGVybiB2b2lkICpkbHN5bSh2b2lk ICpoYW5kbGUsIGNvbnN0IGNoYXIgKnN5bWJvbCk7CitleHRlcm4gaW50IGRsY2xvc2Uodm9p ZCAqaGFuZGxlKTsKK2V4dGVybiBjaGFyICpkbGVycm9yKHZvaWQpOworI2VuZGlmCisKKy8q CisgKiBJbiBzb21lIG9sZGVyIHN5c3RlbXMsIHRoZSBSVExEX05PVyBmbGFnIGlzbid0IGRl ZmluZWQgYW5kIHRoZSBtb2RlCisgKiBhcmd1bWVudCB0byBkbG9wZW4gbXVzdCBhbHdheXMg YmUgMS4KKyAqLworI2lmICFIQVZFX0RFQ0xfUlRMRF9OT1cKKyNkZWZpbmUgUlRMRF9OT1cg MQorI2VuZGlmCisKKy8qCisgKiBUaGUgUlRMRF9HTE9CQUwgZmxhZyBpcyB3YW50ZWQgaWYg YXZhaWxhYmxlLCBidXQgaXQgZG9lc24ndCBleGlzdAorICogZXZlcnl3aGVyZS4gIElmIGl0 IGRvZXNuJ3QgZXhpc3QsIHNldCBpdCB0byAwIHNvIGl0IGhhcyBubyBlZmZlY3QuCisgKi8K KyNpZiAhSEFWRV9ERUNMX1JUTERfR0xPQkFMCisjZGVmaW5lIFJUTERfR0xPQkFMIDAKKyNl bmRpZgorCiAvKiB0aHJlYWQuaCAqLwogZXh0ZXJuIGNoYXIgKnBxU3RyZXJyb3IoaW50IGVy cm51bSwgY2hhciAqc3RyZXJyYnVmLCBzaXplX3QgYnVmbGVuKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvZHluYW1pY19sb2FkZXIuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L2R5bmFtaWNfbG9hZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNDU1 YjUyY2EuLjAwMDAwMDAwMDAKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZHluYW1pY19sb2Fk ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotICoKLSAqIGR5bmFtaWNfbG9hZGVyLmgKLSAqCi0gKgotICoKLSAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBzcmMvaW5jbHVkZS91dGlscy9k eW5hbWljX2xvYWRlci5oCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpZm5k ZWYgRFlOQU1JQ19MT0FERVJfSAotI2RlZmluZSBEWU5BTUlDX0xPQURFUl9ICi0KLSNpbmNs dWRlICJmbWdyLmgiCi0KLQotZXh0ZXJuIHZvaWQgKnBnX2Rsb3Blbihjb25zdCBjaGFyICpm aWxlbmFtZSk7Ci1leHRlcm4gUEdGdW5jdGlvbiBwZ19kbHN5bSh2b2lkICpoYW5kbGUsIGNv bnN0IGNoYXIgKmZ1bmNuYW1lKTsKLWV4dGVybiB2b2lkIHBnX2RsY2xvc2Uodm9pZCAqaGFu ZGxlKTsKLWV4dGVybiBjaGFyICpwZ19kbGVycm9yKHZvaWQpOwotCi0jZW5kaWYJCQkJCQkJ LyogRFlOQU1JQ19MT0FERVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvZGxvcGVuLmMg Yi9zcmMvcG9ydC9kbG9wZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi44OTc0MDdjM2FmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3BvcnQvZGxvcGVuLmMK QEAgLTAsMCArMSwxNDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRsb3Bl bi5jCisgKgkgIGR5bmFtaWMgbG9hZGVyIGZvciBwbGF0Zm9ybXMgd2l0aG91dCBkbG9wZW4o KQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3BvcnQvZGxvcGVuLmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAiYy5oIgorCisjaWYgZGVmaW5lZChf X2hwdXgpCisKKy8qIFN5c3RlbSBpbmNsdWRlcyAqLworI2luY2x1ZGUgPGEub3V0Lmg+Cisj aW5jbHVkZSA8ZGwuaD4KKwordm9pZCAqCitkbG9wZW4oY29uc3QgY2hhciAqZmlsZSwgaW50 IG1vZGUpCit7CisJaW50CQlmbGFncyA9IDA7CisKKwlpZiAobW9kZSAmIFJUTERfTk9XKQor CQlmbGFncyB8PSBCSU5EX0lNTUVESUFURTsKKyNpZmRlZiBOT1RfVVNFRAorCWlmIChtb2Rl ICYgUlRMRF9MQVpZKQorCQlmbGFncyB8PSBCSU5EX0RFRkVSUkVEOworI2VuZGlmCisKKwly ZXR1cm4gc2hsX2xvYWQoZmlsZW5hbWUsIGZsYWdzIHwgQklORF9WRVJCT1NFLCAwTCk7Cit9 CisKK3ZvaWQgKgorZGxzeW0odm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpzeW1ib2wpCit7 CisJdm9pZAkgICAqdmFsdWU7CisKKwlpZiAoc2hsX2ZpbmRzeW0oKHNobF90ICopICYgaGFu ZGxlLCBzeW1ib2wsIFRZUEVfUFJPQ0VEVVJFLCAmdmFsdWUpID09IC0xKQorCQlyZXR1cm4g TlVMTDsKKwlyZXR1cm4gdmFsdWU7Cit9CisKK2ludAorZGxjbG9zZSh2b2lkICpoYW5kbGUp Cit7CisJcmV0dXJuIHNobF91bmxvYWQoKHNobF90KSBoYW5kbGUpOworfQorCitjaGFyICoK K2RsZXJyb3Iodm9pZCkKK3sKKwlzdGF0aWMgY2hhciBlcnJtc2dbXSA9ICJzaGxfbG9hZCBm YWlsZWQiOworCisJaWYgKGVycm5vKQorCQlyZXR1cm4gc3RyZXJyb3IoZXJybm8pOworCisJ cmV0dXJuIGVycm1zZzsKK30KKworI2VsaWYgZGVmaW5lZChXSU4zMikKKworc3RhdGljIGNo YXIgbGFzdF9keW5fZXJyb3JbNTEyXTsKKworc3RhdGljIHZvaWQKK3NldF9kbF9lcnJvcih2 b2lkKQoreworCURXT1JECQllcnIgPSBHZXRMYXN0RXJyb3IoKTsKKworCWlmIChGb3JtYXRN ZXNzYWdlKEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTIHwKKwkJCQkJICBGT1JNQVRf TUVTU0FHRV9GUk9NX1NZU1RFTSwKKwkJCQkJICBOVUxMLAorCQkJCQkgIGVyciwKKwkJCQkJ ICBNQUtFTEFOR0lEKExBTkdfRU5HTElTSCwgU1VCTEFOR19ERUZBVUxUKSwKKwkJCQkJICBs YXN0X2R5bl9lcnJvciwKKwkJCQkJICBzaXplb2YobGFzdF9keW5fZXJyb3IpIC0gMSwKKwkJ CQkJICBOVUxMKSA9PSAwKQorCXsKKwkJc25wcmludGYobGFzdF9keW5fZXJyb3IsIHNpemVv ZihsYXN0X2R5bl9lcnJvcikgLSAxLAorCQkJCSAidW5rbm93biBlcnJvciAlbHUiLCBlcnIp OworCX0KK30KKworY2hhciAqCitkbGVycm9yKHZvaWQpCit7CisJaWYgKGxhc3RfZHluX2Vy cm9yWzBdKQorCQlyZXR1cm4gbGFzdF9keW5fZXJyb3I7CisJZWxzZQorCQlyZXR1cm4gTlVM TDsKK30KKworaW50CitkbGNsb3NlKHZvaWQgKmhhbmRsZSkKK3sKKwlpZiAoIUZyZWVMaWJy YXJ5KChITU9EVUxFKSBoYW5kbGUpKQorCXsKKwkJc2V0X2RsX2Vycm9yKCk7CisJCXJldHVy biAxOworCX0KKwlsYXN0X2R5bl9lcnJvclswXSA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3Zv aWQgKgorZGxzeW0odm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpzeW1ib2wpCit7CisJdm9p ZAkgICAqcHRyOworCisJcHRyID0gR2V0UHJvY0FkZHJlc3MoKEhNT0RVTEUpIGhhbmRsZSwg c3ltYm9sKTsKKwlpZiAoIXB0cikKKwl7CisJCXNldF9kbF9lcnJvcigpOworCQlyZXR1cm4g TlVMTDsKKwl9CisJbGFzdF9keW5fZXJyb3JbMF0gPSAwOworCXJldHVybiBwdHI7Cit9CisK K3ZvaWQgKgorZGxvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQoreworCUhNT0RV TEUJCWg7CisJaW50CQkJcHJldm1vZGU7CisKKwkvKiBEaXNhYmxlIHBvcHVwIGVycm9yIG1l c3NhZ2VzIHdoZW4gbG9hZGluZyBETExzICovCisJcHJldm1vZGUgPSBTZXRFcnJvck1vZGUo U0VNX0ZBSUxDUklUSUNBTEVSUk9SUyB8IFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOworCWgg PSBMb2FkTGlicmFyeShwYXRoKTsKKwlTZXRFcnJvck1vZGUocHJldm1vZGUpOworCisJaWYg KCFoKQorCXsKKwkJc2V0X2RsX2Vycm9yKCk7CisJCXJldHVybiBOVUxMOworCX0KKwlsYXN0 X2R5bl9lcnJvclswXSA9IDA7CisJcmV0dXJuICh2b2lkICopIGg7Cit9CisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvSW5zdGFsbC5wbSBiL3NyYy90b29scy9tc3Zj L0luc3RhbGwucG0KaW5kZXggNjBiNTYzOWRmOC4uYzhhZTFhMGRjNyAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL21zdmMvSW5zdGFsbC5wbQorKysgYi9zcmMvdG9vbHMvbXN2Yy9JbnN0YWxs LnBtCkBAIC02NTQsNyArNjU0LDcgQEAgc3ViIENvcHlJbmNsdWRlRmlsZXMKIAkJJ1B1Ymxp YyBoZWFkZXJzJywgJHRhcmdldCAuICcvaW5jbHVkZS8nLAogCQknc3JjL2luY2x1ZGUvJywg ICAncG9zdGdyZXNfZXh0LmgnLAogCQkncGdfY29uZmlnLmgnLCAgICAncGdfY29uZmlnX2V4 dC5oJywKLQkJJ3BnX2NvbmZpZ19vcy5oJywgJ2R5bmxvYWRlci5oJywKKwkJJ3BnX2NvbmZp Z19vcy5oJywKIAkJJ3BnX2NvbmZpZ19tYW51YWwuaCcpOwogCWxjb3B5KCdzcmMvaW5jbHVk ZS9saWJwcS9saWJwcS1mcy5oJywgJHRhcmdldCAuICcvaW5jbHVkZS9saWJwcS8nKQogCSAg fHwgY3JvYWsgJ0NvdWxkIG5vdCBjb3B5IGxpYnBxLWZzLmgnOwpAQCAtNjc4LDggKzY3OCw3 IEBAIHN1YiBDb3B5SW5jbHVkZUZpbGVzCiAJQ29weUZpbGVzKAogCQknU2VydmVyIGhlYWRl cnMnLAogCQkkdGFyZ2V0IC4gJy9pbmNsdWRlL3NlcnZlci8nLAotCQknc3JjL2luY2x1ZGUv JywgJ3BnX2NvbmZpZy5oJywgJ3BnX2NvbmZpZ19leHQuaCcsICdwZ19jb25maWdfb3MuaCcs Ci0JCSdkeW5sb2FkZXIuaCcpOworCQknc3JjL2luY2x1ZGUvJywgJ3BnX2NvbmZpZy5oJywg J3BnX2NvbmZpZ19leHQuaCcsICdwZ19jb25maWdfb3MuaCcpOwogCUNvcHlGaWxlcygKIAkJ J0dyYW1tYXIgaGVhZGVyJywKIAkJJHRhcmdldCAuICcvaW5jbHVkZS9zZXJ2ZXIvcGFyc2Vy LycsCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0gYi9zcmMvdG9v bHMvbXN2Yy9Na3ZjYnVpbGQucG0KaW5kZXggNDU0M2Q4N2Q4My4uMTRkMmEzYzRjZiAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCisrKyBiL3NyYy90b29scy9t c3ZjL01rdmNidWlsZC5wbQpAQCAtOTgsNyArOTgsNyBAQCBzdWIgbWt2Y2J1aWxkCiAJICBl cmFuZDQ4LmMgc25wcmludGYuYyBzdHJsY2F0LmMgc3RybGNweS5jIGRpcm1vZC5jIG5vYmxv Y2suYyBwYXRoLmMKIAkgIHBnX3N0cm9uZ19yYW5kb20uYyBwZ2NoZWNrZGlyLmMgcGdta2Rp cnAuYyBwZ3NsZWVwLmMgcGdzdHJjYXNlY21wLmMKIAkgIHBxc2lnbmFsLmMgbWtkdGVtcC5j IHFzb3J0LmMgcXNvcnRfYXJnLmMgcXVvdGVzLmMgc3lzdGVtLmMKLQkgIHNwcm9tcHQuYyB0 YXIuYyB0aHJlYWQuYyBnZXRvcHQuYyBnZXRvcHRfbG9uZy5jIGRpcmVudC5jCisJICBzcHJv bXB0LmMgdGFyLmMgdGhyZWFkLmMgZ2V0b3B0LmMgZ2V0b3B0X2xvbmcuYyBkaXJlbnQuYyBk bG9wZW4uYwogCSAgd2luMzJlbnYuYyB3aW4zMmVycm9yLmMgd2luMzJzZWN1cml0eS5jIHdp bjMyc2V0bG9jYWxlLmMpOwogCiAJcHVzaChAcGdwb3J0ZmlsZXMsICdyaW50LmMnKSBpZiAo JHZzVmVyc2lvbiA8ICcxMi4wMCcpOwpAQCAtMTU1LDkgKzE1NSw2IEBAIHN1YiBta3ZjYnVp bGQKIAkkcG9zdGdyZXMtPkFkZEluY2x1ZGVEaXIoJ3NyYy9iYWNrZW5kJyk7CiAJJHBvc3Rn cmVzLT5BZGREaXIoJ3NyYy9iYWNrZW5kL3BvcnQvd2luMzInKTsKIAkkcG9zdGdyZXMtPkFk ZEZpbGUoJ3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3J0YWIuYycpOwotCSRwb3N0Z3Jlcy0+UmVw bGFjZUZpbGUoCi0JCSdzcmMvYmFja2VuZC9wb3J0L2R5bmxvYWRlci5jJywKLQkJJ3NyYy9i YWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMyLmMnKTsKIAkkcG9zdGdyZXMtPlJlcGxhY2VG aWxlKCdzcmMvYmFja2VuZC9wb3J0L3BnX3NlbWEuYycsCiAJCSdzcmMvYmFja2VuZC9wb3J0 L3dpbjMyX3NlbWEuYycpOwogCSRwb3N0Z3Jlcy0+UmVwbGFjZUZpbGUoJ3NyYy9iYWNrZW5k L3BvcnQvcGdfc2htZW0uYycsCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlv bi5wbSBiL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCmluZGV4IDdkN2NlOGIwMzEuLjY4 Y2Y4MTJmMDEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCisrKyBi L3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCkBAIC0zMjEsMTMgKzMyMSw2IEBAIHN1YiBH ZW5lcmF0ZUZpbGVzCiAJCQknc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tuYW1lcy5oJyk7 CiAJfQogCi0JaWYgKElzTmV3ZXIoCi0JCQknc3JjL2luY2x1ZGUvZHlubG9hZGVyLmgnLCAn c3JjL2JhY2tlbmQvcG9ydC9keW5sb2FkZXIvd2luMzIuaCcpKQotCXsKLQkJY29weUZpbGUo J3NyYy9iYWNrZW5kL3BvcnQvZHlubG9hZGVyL3dpbjMyLmgnLAotCQkJJ3NyYy9pbmNsdWRl L2R5bmxvYWRlci5oJyk7Ci0JfQotCiAJaWYgKElzTmV3ZXIoJ3NyYy9pbmNsdWRlL3V0aWxz L3Byb2Jlcy5oJywgJ3NyYy9iYWNrZW5kL3V0aWxzL3Byb2Jlcy5kJykpCiAJewogCQlwcmlu dCAiR2VuZXJhdGluZyBwcm9iZXMuaC4uLlxuIjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9t c3ZjL2NsZWFuLmJhdCBiL3NyYy90b29scy9tc3ZjL2NsZWFuLmJhdAppbmRleCAxZDljZDQw YmRiLi43YTIzYTJiNTVmIDEwMDc1NQotLS0gYS9zcmMvdG9vbHMvbXN2Yy9jbGVhbi5iYXQK KysrIGIvc3JjL3Rvb2xzL21zdmMvY2xlYW4uYmF0CkBAIC00MCw3ICs0MCw2IEBAIFJFTSBE ZWxldGUgZmlsZXMgY3JlYXRlZCB3aXRoIEdlbmVyYXRlRmlsZXMoKSBpbiBTb2x1dGlvbi5w bQogaWYgZXhpc3Qgc3JjXGluY2x1ZGVccGdfY29uZmlnLmggZGVsIC9xIHNyY1xpbmNsdWRl XHBnX2NvbmZpZy5oCiBpZiBleGlzdCBzcmNcaW5jbHVkZVxwZ19jb25maWdfZXh0LmggZGVs IC9xIHNyY1xpbmNsdWRlXHBnX2NvbmZpZ19leHQuaAogaWYgZXhpc3Qgc3JjXGluY2x1ZGVc cGdfY29uZmlnX29zLmggZGVsIC9xIHNyY1xpbmNsdWRlXHBnX2NvbmZpZ19vcy5oCi1pZiBl eGlzdCBzcmNcaW5jbHVkZVxkeW5sb2FkZXIuaCBkZWwgL3Egc3JjXGluY2x1ZGVcZHlubG9h ZGVyLmgKIGlmICVESVNUJT09MSBpZiBleGlzdCBzcmNcYmFja2VuZFxwYXJzZXJcZ3JhbS5o IGRlbCAvcSBzcmNcYmFja2VuZFxwYXJzZXJcZ3JhbS5oCiBpZiBleGlzdCBzcmNcaW5jbHVk ZVx1dGlsc1xlcnJjb2Rlcy5oIGRlbCAvcSBzcmNcaW5jbHVkZVx1dGlsc1xlcnJjb2Rlcy5o CiBpZiBleGlzdCBzcmNcaW5jbHVkZVx1dGlsc1xmbWdyb2lkcy5oIGRlbCAvcSBzcmNcaW5j bHVkZVx1dGlsc1xmbWdyb2lkcy5oCi0tIAoyLjE4LjAKCg== --------------D6FA9E5DC93A80001D23DE32--