Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lSIrl-0003l2-WF for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Apr 2021 12:25:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lSIrk-0006WE-SB for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Apr 2021 12:25:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lSIrj-0006Vk-S0 for pgsql-hackers@lists.postgresql.org; Fri, 02 Apr 2021 12:25:32 +0000 Received: from forward4-smtp.messagingengine.com ([66.111.4.238]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lSIrZ-0000jp-3e for pgsql-hackers@lists.postgresql.org; Fri, 02 Apr 2021 12:25:31 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.nyi.internal (Postfix) with ESMTP id AD43F19411D2; Fri, 2 Apr 2021 08:25:18 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 02 Apr 2021 08:25:18 -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-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=7b9OJF E53PmAoAIbppgS0vU+AqIll7rq2LLFl6HoeZw=; b=VIaw/Su0YcB0KVeSc34PAG gTqnii6ATAbOyWBiIAuJbcB+Xwbx7ggpNRRSTJ1YgXl5xIlvvO4wrYR1DnOSidSP UZI0buGiJoEguXRRTPoalG0ZfxLXiqhbkZNVfMsuQqUEgRypwJBEf86YKrjOHHz8 rMarC6k7DnDT6R+5XKpfU8LX4H58NjdAI/D6YbdC3KE2xAlUrKYK38YNmRldUbzn RJWJbohACtgWjg6LLoc7IUjl3mLusxpEYPTy934t0rRtSxaeXpgLtv93JpuVfOPj 4+xlrS/LMaiiS0vRvoLkgLbcUV611Lh3F+jBRd5O8JESb213+Frv/qo9XRdXQ/WQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudeiiedgheduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuggftrfgrthhtvghrnheptdfgfeejueduffehveetueeg kedtteetiedugffgkeeiteeltddvgeeigeegteegnecukfhppeeluddrudegrddvfedvrd einecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgv thgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from laptop206oxuk.local (p5b0ee806.dip0.t-ipconnect.de [91.14.232.6]) by mail.messagingengine.com (Postfix) with ESMTPA id DD13C1080064; Fri, 2 Apr 2021 08:25:16 -0400 (EDT) Subject: Re: SQL-standard function body To: Julien Rouhaud , Jaime Casanova Cc: PostgreSQL Hackers References: <59430371-e1c8-3ee8-7ef6-371eb1a00e7e@2ndquadrant.com> <4b91051f-c090-532f-42f9-d901f9123f1e@2ndquadrant.com> <20210315080344.wed62yy54fuse7jg@nol> <20210315081448.63vagqr3ly45l74i@nol> <20210331101256.d7h7d74o4celskt4@nol> From: Peter Eisentraut Message-ID: <9277ef6a-bfa8-9c06-8e91-16c2892120cc@2ndquadrant.com> Date: Fri, 2 Apr 2021 14:25:15 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <20210331101256.d7h7d74o4celskt4@nol> Content-Type: multipart/mixed; boundary="------------E313D6005A498242689676AD" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------E313D6005A498242689676AD Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 31.03.21 12:12, Julien Rouhaud wrote: > On Tue, Mar 23, 2021 at 11:28:55PM -0500, Jaime Casanova wrote: >> On Fri, Mar 19, 2021 at 8:49 AM Peter Eisentraut >> wrote: >>> >>> Right. Here is a new patch with that fix added and a small conflict >>> resolved. >> >> Great. >> >> It seems print_function_sqlbody() is not protected to avoid receiving >> a function that hasn't a standard sql body in >> src/backend/utils/adt/ruleutils.c:3292, but instead it has an assert >> that gets hit with something like this: >> >> CREATE FUNCTION foo() RETURNS int LANGUAGE SQL AS $$ SELECT 1 $$; >> SELECT pg_get_function_sqlbody('foo'::regproc); fixed > It would also be good to add a regression test checking that we can't define a > function with both a prosrc and a prosqlbody. done > @@ -76,6 +77,7 @@ ProcedureCreate(const char *procedureName, > Oid languageValidator, > const char *prosrc, > const char *probin, > + Node *prosqlbody, > char prokind, > bool security_definer, > bool isLeakProof, > @@ -119,8 +121,6 @@ ProcedureCreate(const char *procedureName, > /* > * sanity checks > */ > - Assert(PointerIsValid(prosrc)); > - > parameterCount = parameterTypes->dim1; > > > Shouldn't we still assert that we either have a valid procsrc or valid > prosqlbody? fixed New patch attached. --------------E313D6005A498242689676AD Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v11-0001-SQL-standard-function-body.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v11-0001-SQL-standard-function-body.patch" RnJvbSA3MjkyYjA0OWI5MDE3ZTAyZmZiOGJiYjgzMGQ5MWY3NzAwZTE0YTc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyIEFwciAyMDIxIDE0OjIzOjE0ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MTFdIFNRTC1zdGFuZGFyZCBmdW5jdGlvbiBib2R5CgpUaGlzIGFkZHMgc3Vw cG9ydCBmb3Igd3JpdGluZyBDUkVBVEUgRlVOQ1RJT04gYW5kIENSRUFURSBQUk9DRURVUkUK c3RhdGVtZW50cyBmb3IgbGFuZ3VhZ2UgU1FMIHdpdGggYSBmdW5jdGlvbiBib2R5IHRoYXQg Y29uZm9ybXMgdG8gdGhlClNRTCBzdGFuZGFyZCBhbmQgaXMgcG9ydGFibGUgdG8gb3RoZXIg aW1wbGVtZW50YXRpb25zLgoKSW5zdGVhZCBvZiB0aGUgUG9zdGdyZVNRTC1zcGVjaWZpYyBB UyAkJCBzdHJpbmcgbGl0ZXJhbCAkJCBzeW50YXgsCnRoaXMgYWxsb3dzIHdyaXRpbmcgb3V0 IHRoZSBTUUwgc3RhdGVtZW50cyBtYWtpbmcgdXAgdGhlIGJvZHkKdW5xdW90ZWQsIGVpdGhl ciBhcyBhIHNpbmdsZSBzdGF0ZW1lbnQ6CgogICAgQ1JFQVRFIEZVTkNUSU9OIGFkZChhIGlu dGVnZXIsIGIgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyCiAgICAgICAgTEFOR1VBR0UgU1FM CiAgICAgICAgUkVUVVJOIGEgKyBiOwoKb3IgYXMgYSBibG9jawoKICAgIENSRUFURSBQUk9D RURVUkUgaW5zZXJ0X2RhdGEoYSBpbnRlZ2VyLCBiIGludGVnZXIpCiAgICBMQU5HVUFHRSBT UUwKICAgIEJFR0lOIEFUT01JQwogICAgICBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTIChhKTsK ICAgICAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYik7CiAgICBFTkQ7CgpUaGUgZnVuY3Rp b24gYm9keSBpcyBwYXJzZWQgYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiB0aW1lIGFuZCBzdG9y ZWQgYXMKZXhwcmVzc2lvbiBub2RlcyBpbiBhIG5ldyBwZ19wcm9jIGNvbHVtbiBwcm9zcWxi b2R5LiAgU28gYXQgcnVuIHRpbWUsCm5vIGZ1cnRoZXIgcGFyc2luZyBpcyByZXF1aXJlZC4K Ckhvd2V2ZXIsIHRoaXMgZm9ybSBkb2VzIG5vdCBzdXBwb3J0IHBvbHltb3JwaGljIGFyZ3Vt ZW50cywgYmVjYXVzZQp0aGVyZSBpcyBubyBtb3JlIHBhcnNlIGFuYWx5c2lzIGRvbmUgYXQg Y2FsbCB0aW1lLgoKRGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIGZ1bmN0aW9uIGFuZCB0aGUg b2JqZWN0cyBpdCB1c2VzIGFyZSBmdWxseQp0cmFja2VkLgoKQSBuZXcgUkVUVVJOIHN0YXRl bWVudCBpcyBpbnRyb2R1Y2VkLiAgVGhpcyBjYW4gb25seSBiZSB1c2VkIGluc2lkZQpmdW5j dGlvbiBib2RpZXMuICBJbnRlcm5hbGx5LCBpdCBpcyB0cmVhdGVkIG11Y2ggbGlrZSBhIFNF TEVDVApzdGF0ZW1lbnQuCgpwc3FsIG5lZWRzIHNvbWUgbmV3IGludGVsbGlnZW5jZSB0byBr ZWVwIHRyYWNrIG9mIGZ1bmN0aW9uIGJvZHkKYm91bmRhcmllcyBzbyB0aGF0IGl0IGRvZXNu J3Qgc2VuZCBvZmYgc3RhdGVtZW50cyB3aGVuIGl0IHNlZXMKc2VtaWNvbG9ucyB0aGF0IGFy ZSBpbnNpZGUgYSBmdW5jdGlvbiBib2R5LgoKQWxzbywgcGVyIFNRTCBzdGFuZGFyZCwgTEFO R1VBR0UgU1FMIGlzIHRoZSBkZWZhdWx0LCBzbyBpdCBkb2VzIG5vdApuZWVkIHRvIGJlIHNw ZWNpZmllZCBhbnltb3JlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5v cmcvbWVzc2FnZS1pZC9mbGF0LzFjMTFmMWViLWYwMGMtNDNiNy03OTlkLTJkNDQxMzJjMDJk N0AybmRxdWFkcmFudC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAg ICAgICAgICAgICAgICAgfCAgMTAgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZnVuY3Rp b24uc2dtbCAgICAgICAgIHwgMTI2ICsrKysrKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHJvY2VkdXJlLnNnbWwgICAgICAgIHwgIDYyICsrKystCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wcm9jLmMgICAgICAgICAgICAgICAgIHwgMTE2ICsrKysrLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMgICAgICAgICAgIHwgMTMwICsrKysrKyst LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgICA0 ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgICAgICAgICB8ICA3 OSArKystLS0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAg ICB8ICAxNSArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAg ICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAg ICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAg ICAgICAgfCAxMjYgKysrKysrLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAg ICAgICAgICAgICAgICAgfCAgMzUgKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAxMjkgKysrKysrKy0tCiBzcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDE0MCArKysrKysrKystCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKystCiBzcmMv YmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNy Yy9mZV91dGlscy9wc3Fsc2Nhbi5sICAgICAgICAgICAgICAgICAgICAgICB8ICAyNCArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0ICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAgICAgICB8ICAgNiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2Z1bmN0aW9ucy5oICAgICAgICAgICAgICB8ICAx NSArCiBzcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nhbl9pbnQuaCAgICAgICAgICAgfCAg IDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAxMyArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmFkZG9ucyAgICAg ICB8ICAgNiArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFpbGVyICAg ICAgfCAgIDQgKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl8zLm91 dCAgICB8IDI2MCArKysrKysrKysrKysrKysrKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV9wcm9jZWR1cmUub3V0ICAgICB8ICA2NSArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2Z1bmN0aW9uXzMuc3FsICAgIHwgMTEwICsrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jcmVhdGVfcHJvY2VkdXJlLnNxbCAgICAgfCAgMzMgKysrCiAzNiBmaWxl cyBjaGFuZ2VkLCAxMzk5IGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCmluZGV4IGYxMDNkOTE0YTYuLjI2NTY3ODZkMWUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCkBAIC02MDAyLDYgKzYwMDIsMTYgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3Byb2M8 L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5wcm9zcWxib2R5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90cmVl PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJlLXBhcnNl ZCBTUUwgZnVuY3Rpb24gYm9keS4gIFRoaXMgd2lsbCBiZSB1c2VkIGZvciBsYW5ndWFnZSBT UUwKKyAgICAgICBmdW5jdGlvbnMgaWYgdGhlIGJvZHkgaXMgbm90IHNwZWNpZmllZCBhcyBh IHN0cmluZyBjb25zdGFudC4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxk PnByb2NvbmZpZzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHRbXTwvdHlwZT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Z1bmN0aW9uLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5zZ21sCmluZGV4IGYxMDAxNjE1ZjQuLjEwYmFkNjky N2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Z1bmN0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZnVuY3Rpb24uc2dtbApAQCAtMzgsNiAr MzgsNyBAQAogICAgIHwgU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25m aWd1cmF0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IHsgVE8gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gfCA9IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgRlJPTSBDVVJSRU5UIH0K ICAgICB8IEFTICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGVmaW5pdGlvbjwv cmVwbGFjZWFibGU+JwogICAgIHwgQVMgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vYmpfZmlsZTwvcmVwbGFjZWFibGU+JywgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5saW5rX3N5bWJvbDwvcmVwbGFjZWFibGU+JworICAgIHwgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnNxbF9ib2R5PC9yZXBsYWNlYWJsZT4KICAgfSAuLi4KIDwvc3lu b3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTI2Miw4ICsyNjMsOSBAQCA8dGl0bGU+ UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRo YXQgdGhlIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluLgogICAgICAgIEl0IGNhbiBiZSA8 bGl0ZXJhbD5zcWw8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jPC9saXRlcmFsPiwKICAgICAgICA8 bGl0ZXJhbD5pbnRlcm5hbDwvbGl0ZXJhbD4sIG9yIHRoZSBuYW1lIG9mIGEgdXNlci1kZWZp bmVkCi0gICAgICAgcHJvY2VkdXJhbCBsYW5ndWFnZSwgZS5nLiwgPGxpdGVyYWw+cGxwZ3Nx bDwvbGl0ZXJhbD4uICBFbmNsb3NpbmcgdGhlCi0gICAgICAgbmFtZSBpbiBzaW5nbGUgcXVv dGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcXVpcmVzIG1hdGNoaW5nIGNhc2UuCisgICAgICAg cHJvY2VkdXJhbCBsYW5ndWFnZSwgZS5nLiwgPGxpdGVyYWw+cGxwZ3NxbDwvbGl0ZXJhbD4u ICBUaGUgZGVmYXVsdCBpcworICAgICAgIDxsaXRlcmFsPnNxbDwvbGl0ZXJhbD4uICBFbmNs b3NpbmcgdGhlIG5hbWUgaW4gc2luZ2xlIHF1b3RlcyBpcworICAgICAgIGRlcHJlY2F0ZWQg YW5kIHJlcXVpcmVzIG1hdGNoaW5nIGNhc2UuCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlz dGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC01ODIsNiArNTg0LDQ0IEBAIDx0aXRs ZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zcWxfYm9keTwvcmVwbGFjZWFibGU+PC90ZXJtPgorCisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBib2R5IG9mIGEgPGxpdGVy YWw+TEFOR1VBR0UgU1FMPC9saXRlcmFsPiBmdW5jdGlvbi4gIFRoaXMgY2FuCisgICAgICAg ZWl0aGVyIGJlIGEgc2luZ2xlIHN0YXRlbWVudAorPHByb2dyYW1saXN0aW5nPgorUkVUVVJO IDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgICAgb3IgYSBibG9jaworPHByb2dyYW1saXN0aW5nPgorQkVHSU4gQVRPTUlD CisgIDxyZXBsYWNlYWJsZT5zdGF0ZW1lbnQ8L3JlcGxhY2VhYmxlPjsKKyAgPHJlcGxhY2Vh YmxlPnN0YXRlbWVudDwvcmVwbGFjZWFibGU+OworICAuLi4KKyAgPHJlcGxhY2VhYmxlPnN0 YXRlbWVudDwvcmVwbGFjZWFibGU+OworRU5ECis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gd3Jp dGluZyB0aGUgdGV4dCBvZiB0aGUgZnVuY3Rpb24gYm9keSBhcyBhIHN0cmluZworICAgICAg IGNvbnN0YW50IChzZWUgPHJlcGxhY2VhYmxlPmRlZmluaXRpb248L3JlcGxhY2VhYmxlPiBh Ym92ZSksIGJ1dCB0aGVyZQorICAgICAgIGFyZSBzb21lIGRpZmZlcmVuY2VzOiBUaGlzIGZv cm0gb25seSB3b3JrcyBmb3IgPGxpdGVyYWw+TEFOR1VBR0UKKyAgICAgICBTUUw8L2xpdGVy YWw+LCB0aGUgc3RyaW5nIGNvbnN0YW50IGZvcm0gd29ya3MgZm9yIGFsbCBsYW5ndWFnZXMu ICBUaGlzCisgICAgICAgZm9ybSBpcyBwYXJzZWQgYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiB0 aW1lLCB0aGUgc3RyaW5nIGNvbnN0YW50IGZvcm0gaXMKKyAgICAgICBwYXJzZWQgYXQgZXhl Y3V0aW9uIHRpbWU7IHRoZXJlZm9yZSB0aGlzIGZvcm0gY2Fubm90IHN1cHBvcnQKKyAgICAg ICBwb2x5bW9ycGhpYyBhcmd1bWVudCB0eXBlcyBhbmQgb3RoZXIgY29uc3RydWN0cyB0aGF0 IGFyZSBub3QgcmVzb2x2YWJsZQorICAgICAgIGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gdGlt ZS4gIFRoaXMgZm9ybSB0cmFja3MgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCisgICAgICAg ZnVuY3Rpb24gYW5kIG9iamVjdHMgdXNlZCBpbiB0aGUgZnVuY3Rpb24gYm9keSwgc28gPGxp dGVyYWw+RFJPUAorICAgICAgIC4uLiBDQVNDQURFPC9saXRlcmFsPiB3aWxsIHdvcmsgY29y cmVjdGx5LCB3aGVyZWFzIHRoZSBmb3JtIHVzaW5nCisgICAgICAgc3RyaW5nIGxpdGVyYWxz IG1heSBsZWF2ZSBkYW5nbGluZyBmdW5jdGlvbnMuICBGaW5hbGx5LCB0aGlzIGZvcm0gaXMK KyAgICAgICBtb3JlIGNvbXBhdGlibGUgd2l0aCB0aGUgU1FMIHN0YW5kYXJkIGFuZCBvdGhl ciBTUUwgaW1wbGVtZW50YXRpb25zLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNl Y3QxPgogCkBAIC02NjcsNiArNzA3LDE1IEBAIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAg ICAgTEFOR1VBR0UgU1FMCiAgICAgSU1NVVRBQkxFCiAgICAgUkVUVVJOUyBOVUxMIE9OIE5V TEwgSU5QVVQ7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgVGhlIHNhbWUgZnVuY3Rpb24gd3Jp dHRlbiBpbiBhIG1vcmUgU1FMLWNvbmZvcm1pbmcgc3R5bGUsIHVzaW5nIGFyZ3VtZW50Cisg ICBuYW1lcyBhbmQgYW4gdW5xdW90ZWQgYm9keToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBGVU5DVElPTiBhZGQoYSBpbnRlZ2VyLCBiIGludGVnZXIpIFJFVFVSTlMgaW50ZWdlcgor ICAgIExBTkdVQUdFIFNRTAorICAgIElNTVVUQUJMRQorICAgIFJFVFVSTlMgTlVMTCBPTiBO VUxMIElOUFVUCisgICAgUkVUVVJOIGEgKyBiOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9w YXJhPgogCkBAIC03OTcsMjMgKzg0Niw3NCBAQCA8dGl0bGU+V3JpdGluZyA8bGl0ZXJhbD5T RUNVUklUWSBERUZJTkVSPC9saXRlcmFsPiBGdW5jdGlvbnMgU2FmZWx5PC90aXRsZT4KICAg PHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgogCiAgIDxwYXJhPgotICAgQSA8Y29tbWFu ZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IGNvbW1hbmQgaXMgZGVmaW5lZCBpbiB0aGUg U1FMIHN0YW5kYXJkLgotICAgVGhlIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4gdmVyc2lvbiBpcyBzaW1pbGFyIGJ1dAotICAgbm90IGZ1bGx5IGNvbXBhdGlibGUu ICBUaGUgYXR0cmlidXRlcyBhcmUgbm90IHBvcnRhYmxlLCBuZWl0aGVyIGFyZSB0aGUKLSAg IGRpZmZlcmVudCBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorICAgQSA8Y29tbWFuZD5DUkVBVEUg RlVOQ1RJT048L2NvbW1hbmQ+IGNvbW1hbmQgaXMgZGVmaW5lZCBpbiB0aGUgU1FMCisgICBz dGFuZGFyZC4gIFRoZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGlt cGxlbWVudGF0aW9uIGNhbiBiZQorICAgdXNlZCBpbiBhIGNvbXBhdGlibGUgd2F5IGJ1dCBo YXMgbWFueSBleHRlbnNpb25zLiAgQ29udmVyc2VseSwgdGhlIFNRTAorICAgc3RhbmRhcmQg c3BlY2lmaWVzIGEgbnVtYmVyIG9mIG9wdGlvbmFsIGZlYXR1cmVzIHRoYXQgYXJlIG5vdCBp bXBsZW1lbnRlZAorICAgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l Pi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBz b21lIG90aGVyIGRhdGFiYXNlIHN5c3RlbXMsCi0gICA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+YXJnbW9kZTwvcmVwbGFjZWFibGU+IGNhbiBiZSB3cml0dGVuCi0gICBlaXRo ZXIgYmVmb3JlIG9yIGFmdGVyIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdu YW1lPC9yZXBsYWNlYWJsZT4uCi0gICBCdXQgb25seSB0aGUgZmlyc3Qgd2F5IGlzIHN0YW5k YXJkLWNvbXBsaWFudC4KKyAgIFRoZSBmb2xsb3dpbmcgYXJlIGltcG9ydGFudCBjb21wYXRp YmlsaXR5IGlzc3VlczoKKworICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgPGxpdGVyYWw+T1IgUkVQTEFDRTwvbGl0ZXJhbD4gaXMgYSBQ b3N0Z3JlU1FMIGV4dGVuc2lvbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisK KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yIGNvbXBhdGliaWxpdHkg d2l0aCBzb21lIG90aGVyIGRhdGFiYXNlIHN5c3RlbXMsIDxyZXBsYWNlYWJsZQorICAgICAg Y2xhc3M9InBhcmFtZXRlciI+YXJnbW9kZTwvcmVwbGFjZWFibGU+IGNhbiBiZSB3cml0dGVu IGVpdGhlciBiZWZvcmUgb3IKKyAgICAgIGFmdGVyIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4uICBCdXQgb25seQorICAgICAgdGhlIGZp cnN0IHdheSBpcyBzdGFuZGFyZC1jb21wbGlhbnQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBwYXJh bWV0ZXIgZGVmYXVsdHMsIHRoZSBTUUwgc3RhbmRhcmQgc3BlY2lmaWVzIG9ubHkgdGhlIHN5 bnRheCB3aXRoCisgICAgICB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4ga2V5IHdv cmQuICBUaGUgc3ludGF4IHdpdGgKKyAgICAgIDxsaXRlcmFsPj08L2xpdGVyYWw+IGlzIHVz ZWQgaW4gVC1TUUwgYW5kIEZpcmViaXJkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+ U0VUT0Y8L2xpdGVyYWw+IG1vZGlmaWVyIGlzIGEgUG9zdGdyZVNRTCBleHRlbnNpb24uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIE9ubHkgPGxpdGVyYWw+U1FMPC9saXRlcmFsPiBpcyBzdGFuZGFyZGl6 ZWQgYXMgYSBsYW5ndWFnZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisKKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQWxsIG90aGVyIGF0dHJpYnV0ZXMg ZXhjZXB0IDxsaXRlcmFsPkNBTExFRCBPTiBOVUxMIElOUFVUPC9saXRlcmFsPiBhbmQKKyAg ICAgIDxsaXRlcmFsPlJFVFVSTlMgTlVMTCBPTiBOVUxMIElOUFVUPC9saXRlcmFsPiBhcmUg bm90IHN0YW5kYXJkaXplZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisKKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yIHRoZSBib2R5IG9mIDxsaXRl cmFsPkxBTkdVQUdFIFNRTDwvbGl0ZXJhbD4gZnVuY3Rpb25zLCB0aGUgU1FMCisgICAgICBz dGFuZGFyZCBvbmx5IHNwZWNpZmllcyB0aGUgPHJlcGxhY2VhYmxlPnNxbF9ib2R5PC9yZXBs YWNlYWJsZT4gZm9ybS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L2l0 ZW1pemVkbGlzdD4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgRm9yIHBhcmFtZXRlciBk ZWZhdWx0cywgdGhlIFNRTCBzdGFuZGFyZCBzcGVjaWZpZXMgb25seSB0aGUgc3ludGF4IHdp dGgKLSAgIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBrZXkgd29yZC4gIFRoZSBz eW50YXgKLSAgIHdpdGggPGxpdGVyYWw+PTwvbGl0ZXJhbD4gaXMgdXNlZCBpbiBULVNRTCBh bmQgRmlyZWJpcmQuCisgICBTaW1wbGUgPGxpdGVyYWw+TEFOR1VBR0UgU1FMPC9saXRlcmFs PiBmdW5jdGlvbnMgY2FuIGJlIHdyaXR0ZW4gaW4gYSB3YXkKKyAgIHRoYXQgaXMgYm90aCBz dGFuZGFyZC1jb25mb3JtaW5nIGFuZCBwb3J0YWJsZSB0byBvdGhlciBpbXBsZW1lbnRhdGlv bnMuCisgICBNb3JlIGNvbXBsZXggZnVuY3Rpb25zIHVzaW5nIGFkdmFuY2VkIGZlYXR1cmVz LCBvcHRpbWl6YXRpb24gYXR0cmlidXRlcywgb3IKKyAgIG90aGVyIGxhbmd1YWdlcyB3aWxs IG5lY2Vzc2FyaWx5IGJlIHNwZWNpZmljIHRvIFBvc3RncmVTUUwgaW4gYSBzaWduaWZpY2Fu dAorICAgd2F5LgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAppbmRleCA2ZGJjMDEyNzE5Li5lN2FhY2U3ZmYxIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbApAQCAtMjksNiArMjks NyBAQAogICAgIHwgU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25maWd1 cmF0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IHsgVE8gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gfCA9IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgRlJPTSBDVVJSRU5UIH0KICAg ICB8IEFTICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGVmaW5pdGlvbjwvcmVw bGFjZWFibGU+JwogICAgIHwgQVMgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v YmpfZmlsZTwvcmVwbGFjZWFibGU+JywgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5saW5rX3N5bWJvbDwvcmVwbGFjZWFibGU+JworICAgIHwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNxbF9ib2R5PC9yZXBsYWNlYWJsZT4KICAgfSAuLi4KIDwvc3lub3Bz aXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTE2Nyw4ICsxNjgsOSBAQCA8dGl0bGU+UGFy YW1ldGVyczwvdGl0bGU+CiAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRoYXQg dGhlIHByb2NlZHVyZSBpcyBpbXBsZW1lbnRlZCBpbi4KICAgICAgICBJdCBjYW4gYmUgPGxp dGVyYWw+c3FsPC9saXRlcmFsPiwgPGxpdGVyYWw+YzwvbGl0ZXJhbD4sCiAgICAgICAgPGxp dGVyYWw+aW50ZXJuYWw8L2xpdGVyYWw+LCBvciB0aGUgbmFtZSBvZiBhIHVzZXItZGVmaW5l ZAotICAgICAgIHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGUuZy4sIDxsaXRlcmFsPnBscGdzcWw8 L2xpdGVyYWw+LiAgRW5jbG9zaW5nIHRoZQotICAgICAgIG5hbWUgaW4gc2luZ2xlIHF1b3Rl cyBpcyBkZXByZWNhdGVkIGFuZCByZXF1aXJlcyBtYXRjaGluZyBjYXNlLgorICAgICAgIHBy b2NlZHVyYWwgbGFuZ3VhZ2UsIGUuZy4sIDxsaXRlcmFsPnBscGdzcWw8L2xpdGVyYWw+LiAg VGhlIGRlZmF1bHQgaXMKKyAgICAgICA8bGl0ZXJhbD5zcWw8L2xpdGVyYWw+LiAgRW5jbG9z aW5nIHRoZSBuYW1lIGluIHNpbmdsZSBxdW90ZXMgaXMKKyAgICAgICBkZXByZWNhdGVkIGFu ZCByZXF1aXJlcyBtYXRjaGluZyBjYXNlLgogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3Rp dGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzA0LDYgKzMwNiw0MSBAQCA8dGl0bGU+ UGFyYW1ldGVyczwvdGl0bGU+CiAKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zcWxfYm9keTwvcmVwbGFjZWFibGU+PC90ZXJtPgorCisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBib2R5IG9mIGEgPGxpdGVy YWw+TEFOR1VBR0UgU1FMPC9saXRlcmFsPiBwcm9jZWR1cmUuICBUaGlzIHNob3VsZAorICAg ICAgIGJlIGEgYmxvY2sKKzxwcm9ncmFtbGlzdGluZz4KK0JFR0lOIEFUT01JQworICA8cmVw bGFjZWFibGU+c3RhdGVtZW50PC9yZXBsYWNlYWJsZT47CisgIDxyZXBsYWNlYWJsZT5zdGF0 ZW1lbnQ8L3JlcGxhY2VhYmxlPjsKKyAgLi4uCisgIDxyZXBsYWNlYWJsZT5zdGF0ZW1lbnQ8 L3JlcGxhY2VhYmxlPjsKK0VORAorPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFyYT4K KworICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIHdyaXRpbmcgdGhl IHRleHQgb2YgdGhlIHByb2NlZHVyZSBib2R5IGFzIGEgc3RyaW5nCisgICAgICAgY29uc3Rh bnQgKHNlZSA8cmVwbGFjZWFibGU+ZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IGFib3ZlKSwg YnV0IHRoZXJlCisgICAgICAgYXJlIHNvbWUgZGlmZmVyZW5jZXM6IFRoaXMgZm9ybSBvbmx5 IHdvcmtzIGZvciA8bGl0ZXJhbD5MQU5HVUFHRQorICAgICAgIFNRTDwvbGl0ZXJhbD4sIHRo ZSBzdHJpbmcgY29uc3RhbnQgZm9ybSB3b3JrcyBmb3IgYWxsIGxhbmd1YWdlcy4gIFRoaXMK KyAgICAgICBmb3JtIGlzIHBhcnNlZCBhdCBwcm9jZWR1cmUgZGVmaW5pdGlvbiB0aW1lLCB0 aGUgc3RyaW5nIGNvbnN0YW50IGZvcm0gaXMKKyAgICAgICBwYXJzZWQgYXQgZXhlY3V0aW9u IHRpbWU7IHRoZXJlZm9yZSB0aGlzIGZvcm0gY2Fubm90IHN1cHBvcnQKKyAgICAgICBwb2x5 bW9ycGhpYyBhcmd1bWVudCB0eXBlcyBhbmQgb3RoZXIgY29uc3RydWN0cyB0aGF0IGFyZSBu b3QgcmVzb2x2YWJsZQorICAgICAgIGF0IHByb2NlZHVyZSBkZWZpbml0aW9uIHRpbWUuICBU aGlzIGZvcm0gdHJhY2tzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQorICAgICAgIHByb2Nl ZHVyZSBhbmQgb2JqZWN0cyB1c2VkIGluIHRoZSBwcm9jZWR1cmUgYm9keSwgc28gPGxpdGVy YWw+RFJPUAorICAgICAgIC4uLiBDQVNDQURFPC9saXRlcmFsPiB3aWxsIHdvcmsgY29ycmVj dGx5LCB3aGVyZWFzIHRoZSBmb3JtIHVzaW5nCisgICAgICAgc3RyaW5nIGxpdGVyYWxzIG1h eSBsZWF2ZSBkYW5nbGluZyBwcm9jZWR1cmVzLiAgRmluYWxseSwgdGhpcyBmb3JtIGlzCisg ICAgICAgbW9yZSBjb21wYXRpYmxlIHdpdGggdGhlIFNRTCBzdGFuZGFyZCBhbmQgb3RoZXIg U1FMIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4K KyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPC92YXJpYWJsZWxpc3Q+CiAgPC9yZWZzZWN0 MT4KIApAQCAtMzIzLDYgKzM2MCw3IEBAIDx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgPHJlZnNl Y3QxIGlkPSJzcWwtY3JlYXRlcHJvY2VkdXJlLWV4YW1wbGVzIj4KICAgPHRpdGxlPkV4YW1w bGVzPC90aXRsZT4KIAorICA8cGFyYT4KIDxwcm9ncmFtbGlzdGluZz4KIENSRUFURSBQUk9D RURVUkUgaW5zZXJ0X2RhdGEoYSBpbnRlZ2VyLCBiIGludGVnZXIpCiBMQU5HVUFHRSBTUUwK QEAgLTMzMCw5ICszNjgsMjEgQEAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KIElOU0VSVCBJ TlRPIHRibCBWQUxVRVMgKGEpOwogSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYik7CiAkJDsK LQorPC9wcm9ncmFtbGlzdGluZz4KKyAgIG9yCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUg UFJPQ0VEVVJFIGluc2VydF9kYXRhKGEgaW50ZWdlciwgYiBpbnRlZ2VyKQorTEFOR1VBR0Ug U1FMCitCRUdJTiBBVE9NSUMKKyAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYSk7CisgIElO U0VSVCBJTlRPIHRibCBWQUxVRVMgKGIpOworRU5EOworPC9wcm9ncmFtbGlzdGluZz4KKyAg IGFuZCBjYWxsIGxpa2UgdGhpczoKKzxwcm9ncmFtbGlzdGluZz4KIENBTEwgaW5zZXJ0X2Rh dGEoMSwgMik7CiA8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4K IAogIDxyZWZzZWN0MSBpZD0ic3FsLWNyZWF0ZXByb2NlZHVyZS1jb21wYXQiPgpAQCAtMzQw LDkgKzM5MCw5IEBAIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KIAogICA8cGFyYT4K ICAgIEEgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwvY29tbWFuZD4gY29tbWFuZCBpcyBk ZWZpbmVkIGluIHRoZSBTUUwKLSAgIHN0YW5kYXJkLiAgVGhlIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdmVyc2lvbiBpcyBzaW1pbGFyIGJ1dAotICAgbm90IGZ1 bGx5IGNvbXBhdGlibGUuICBGb3IgZGV0YWlscyBzZWUKLSAgIGFsc28gPHhyZWYgbGlua2Vu ZD0ic3FsLWNyZWF0ZWZ1bmN0aW9uIi8+LgorICAgc3RhbmRhcmQuICBUaGUgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpbXBsZW1lbnRhdGlvbiBjYW4gYmUKKyAg IHVzZWQgaW4gYSBjb21wYXRpYmxlIHdheSBidXQgaGFzIG1hbnkgZXh0ZW5zaW9ucy4gIEZv ciBkZXRhaWxzIHNlZSBhbHNvCisgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlZnVuY3Rp b24iLz4uCiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19h Z2dyZWdhdGUuYwppbmRleCA4OWYyM2QwYWRkLi41MTk3MDc2Yzc2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfYWdncmVnYXRlLmMKQEAgLTYyMiw2ICs2MjIsNyBAQCBBZ2dyZWdhdGVDcmVh dGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAkJCQkJCQkgSW52YWxpZE9pZCwJLyogbm8gdmFs aWRhdG9yICovCiAJCQkJCQkJICJhZ2dyZWdhdGVfZHVtbXkiLCAvKiBwbGFjZWhvbGRlciAo bm8gc3VjaCBwcm9jKSAqLwogCQkJCQkJCSBOVUxMLAkvKiBwcm9iaW4gKi8KKwkJCQkJCQkg TlVMTCwJLyogcHJvc3FsYm9keSAqLwogCQkJCQkJCSBQUk9LSU5EX0FHR1JFR0FURSwKIAkJ CQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5IGludm9rZXIgKGN1cnJlbnRseSBub3QKIAkJCQkJ CQkJCSAqIGRlZmluYWJsZSBmb3IgYWdnKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wcm9jLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYwppbmRl eCBlMTRlZWU1YTE5Li4wNWRlMzc3YmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYwpAQCAt MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAicGFy c2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJ0Y29wL3BxdWVyeS5oIgpA QCAtNzYsNiArNzcsNyBAQCBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJl TmFtZSwKIAkJCQlPaWQgbGFuZ3VhZ2VWYWxpZGF0b3IsCiAJCQkJY29uc3QgY2hhciAqcHJv c3JjLAogCQkJCWNvbnN0IGNoYXIgKnByb2JpbiwKKwkJCQlOb2RlICpwcm9zcWxib2R5LAog CQkJCWNoYXIgcHJva2luZCwKIAkJCQlib29sIHNlY3VyaXR5X2RlZmluZXIsCiAJCQkJYm9v bCBpc0xlYWtQcm9vZiwKQEAgLTExOSw3ICsxMjEsNyBAQCBQcm9jZWR1cmVDcmVhdGUoY29u c3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAkvKgogCSAqIHNhbml0eSBjaGVja3MKIAkgKi8K LQlBc3NlcnQoUG9pbnRlcklzVmFsaWQocHJvc3JjKSk7CisJQXNzZXJ0KFBvaW50ZXJJc1Zh bGlkKHByb3NyYykgfHwgUG9pbnRlcklzVmFsaWQocHJvc3FsYm9keSkpOwogCiAJcGFyYW1l dGVyQ291bnQgPSBwYXJhbWV0ZXJUeXBlcy0+ZGltMTsKIAlpZiAocGFyYW1ldGVyQ291bnQg PCAwIHx8IHBhcmFtZXRlckNvdW50ID4gRlVOQ19NQVhfQVJHUykKQEAgLTMzNCwxMSArMzM2 LDE4IEBAIFByb2NlZHVyZUNyZWF0ZShjb25zdCBjaGFyICpwcm9jZWR1cmVOYW1lLAogCQl2 YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3RyZnR5cGVzIC0gMV0gPSB0cmZ0eXBlczsKIAllbHNl CiAJCW51bGxzW0FudW1fcGdfcHJvY19wcm90cmZ0eXBlcyAtIDFdID0gdHJ1ZTsKLQl2YWx1 ZXNbQW51bV9wZ19wcm9jX3Byb3NyYyAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShwcm9z cmMpOworCWlmIChwcm9zcmMpCisJCXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvc3JjIC0gMV0g PSBDU3RyaW5nR2V0VGV4dERhdHVtKHByb3NyYyk7CisJZWxzZQorCQludWxsc1tBbnVtX3Bn X3Byb2NfcHJvc3JjIC0gMV0gPSB0cnVlOwogCWlmIChwcm9iaW4pCiAJCXZhbHVlc1tBbnVt X3BnX3Byb2NfcHJvYmluIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHByb2Jpbik7CiAJ ZWxzZQogCQludWxsc1tBbnVtX3BnX3Byb2NfcHJvYmluIC0gMV0gPSB0cnVlOworCWlmIChw cm9zcWxib2R5KQorCQl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3NxbGJvZHkgLSAxXSA9IENT dHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHByb3NxbGJvZHkpKTsKKwllbHNlCisJ CW51bGxzW0FudW1fcGdfcHJvY19wcm9zcWxib2R5IC0gMV0gPSB0cnVlOwogCWlmIChwcm9j b25maWcgIT0gUG9pbnRlckdldERhdHVtKE5VTEwpKQogCQl2YWx1ZXNbQW51bV9wZ19wcm9j X3Byb2NvbmZpZyAtIDFdID0gcHJvY29uZmlnOwogCWVsc2UKQEAgLTYzOCw2ICs2NDcsMTAg QEAgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJcmVjb3Jk X29iamVjdF9hZGRyZXNzX2RlcGVuZGVuY2llcygmbXlzZWxmLCBhZGRycywgREVQRU5ERU5D WV9OT1JNQUwpOwogCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhhZGRycyk7CiAKKwkvKiBkZXBl bmRlbmN5IG9uIFNRTCByb3V0aW5lIGJvZHkgKi8KKwlpZiAobGFuZ3VhZ2VPYmplY3RJZCA9 PSBTUUxsYW5ndWFnZUlkICYmIHByb3NxbGJvZHkpCisJCXJlY29yZERlcGVuZGVuY3lPbkV4 cHIoJm15c2VsZiwgcHJvc3FsYm9keSwgTklMLCBERVBFTkRFTkNZX05PUk1BTCk7CisKIAkv KiBkZXBlbmRlbmN5IG9uIHBhcmFtZXRlciBkZWZhdWx0IGV4cHJlc3Npb25zICovCiAJaWYg KHBhcmFtZXRlckRlZmF1bHRzKQogCQlyZWNvcmREZXBlbmRlbmN5T25FeHByKCZteXNlbGYs IChOb2RlICopIHBhcmFtZXRlckRlZmF1bHRzLApAQCAtODYxLDYxICs4NzQsODEgQEAgZm1n cl9zcWxfdmFsaWRhdG9yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogUG9zdHBvbmUgYm9keSBj aGVja3MgaWYgIWNoZWNrX2Z1bmN0aW9uX2JvZGllcyAqLwogCWlmIChjaGVja19mdW5jdGlv bl9ib2RpZXMpCiAJewotCQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgdHVwbGUs IEFudW1fcGdfcHJvY19wcm9zcmMsICZpc251bGwpOwotCQlpZiAoaXNudWxsKQotCQkJZWxv ZyhFUlJPUiwgIm51bGwgcHJvc3JjIik7Ci0KLQkJcHJvc3JjID0gVGV4dERhdHVtR2V0Q1N0 cmluZyh0bXApOwotCiAJCS8qCiAJCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBzdXBwb3J0 IGZvciBlcmVwb3J0KCkuCiAJCSAqLwogCQljYWxsYmFja19hcmcucHJvbmFtZSA9IE5hbWVT dHIocHJvYy0+cHJvbmFtZSk7Ci0JCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBwcm9zcmM7CisJ CWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBOVUxMOwogCiAJCXNxbGVycmNvbnRleHQuY2FsbGJh Y2sgPSBzcWxfZnVuY3Rpb25fcGFyc2VfZXJyb3JfY2FsbGJhY2s7CiAJCXNxbGVycmNvbnRl eHQuYXJnID0gKHZvaWQgKikgJmNhbGxiYWNrX2FyZzsKIAkJc3FsZXJyY29udGV4dC5wcmV2 aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJCWVycm9yX2NvbnRleHRfc3RhY2sgPSAm c3FsZXJyY29udGV4dDsKIAotCQkvKgotCQkgKiBXZSBjYW4ndCBkbyBmdWxsIHByZWNoZWNr aW5nIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlmIHRoZXJlCi0JCSAqIGFyZSBhbnkg cG9seW1vcnBoaWMgaW5wdXQgdHlwZXMsIGJlY2F1c2UgYWN0dWFsIGRhdGF0eXBlcyBvZgot CQkgKiBleHByZXNzaW9uIHJlc3VsdHMgd2lsbCBiZSB1bnJlc29sdmFibGUuICBUaGUgY2hl Y2sgd2lsbCBiZSBkb25lIGF0Ci0JCSAqIHJ1bnRpbWUgaW5zdGVhZC4KLQkJICoKLQkJICog V2UgY2FuIHJ1biB0aGUgdGV4dCB0aHJvdWdoIHRoZSByYXcgcGFyc2VyIHRob3VnaDsgdGhp cyB3aWxsIGF0Ci0JCSAqIGxlYXN0IGNhdGNoIHNpbGx5IHN5bnRhY3RpYyBlcnJvcnMuCi0J CSAqLwotCQlyYXdfcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVyeShwcm9zcmMpOwor CQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgdHVwbGUsIEFudW1fcGdfcHJvY19w cm9zcmMsICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQl7CisJCQlOb2RlCSAgICpuOwog Ci0JCWlmICghaGFzcG9seWFyZykKKwkJCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lE LCB0dXBsZSwgQW51bV9wZ19wcm9jX3Byb3NxbGJvZHksICZpc251bGwpOworCQkJaWYgKGlz bnVsbCkKKwkJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgYW5kIHByb3NxbGJvZHkiKTsK KworCQkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCkpOworCQkJ aWYgKElzQShuLCBMaXN0KSkKKwkJCQlxdWVyeXRyZWVfbGlzdCA9IGNhc3ROb2RlKExpc3Qs IG4pOworCQkJZWxzZQorCQkJCXF1ZXJ5dHJlZV9saXN0ID0gbGlzdF9tYWtlMShsaXN0X21h a2UxKG4pKTsKKwkJfQorCQllbHNlCiAJCXsKKwkJCXByb3NyYyA9IFRleHREYXR1bUdldENT dHJpbmcodG1wKTsKKworCQkJY2FsbGJhY2tfYXJnLnByb3NyYyA9IHByb3NyYzsKKwogCQkJ LyoKLQkJCSAqIE9LIHRvIGRvIGZ1bGwgcHJlY2hlY2s6IGFuYWx5emUgYW5kIHJld3JpdGUg dGhlIHF1ZXJpZXMsIHRoZW4KLQkJCSAqIHZlcmlmeSB0aGUgcmVzdWx0IHR5cGUuCisJCQkg KiBXZSBjYW4ndCBkbyBmdWxsIHByZWNoZWNraW5nIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0 aW9uIGlmIHRoZXJlCisJCQkgKiBhcmUgYW55IHBvbHltb3JwaGljIGlucHV0IHR5cGVzLCBi ZWNhdXNlIGFjdHVhbCBkYXRhdHlwZXMgb2YKKwkJCSAqIGV4cHJlc3Npb24gcmVzdWx0cyB3 aWxsIGJlIHVucmVzb2x2YWJsZS4gIFRoZSBjaGVjayB3aWxsIGJlIGRvbmUgYXQKKwkJCSAq IHJ1bnRpbWUgaW5zdGVhZC4KKwkJCSAqCisJCQkgKiBXZSBjYW4gcnVuIHRoZSB0ZXh0IHRo cm91Z2ggdGhlIHJhdyBwYXJzZXIgdGhvdWdoOyB0aGlzIHdpbGwgYXQKKwkJCSAqIGxlYXN0 IGNhdGNoIHNpbGx5IHN5bnRhY3RpYyBlcnJvcnMuCiAJCQkgKi8KLQkJCVNRTEZ1bmN0aW9u UGFyc2VJbmZvUHRyIHBpbmZvOwotCQkJT2lkCQkJcmV0dHlwZTsKLQkJCVR1cGxlRGVzYwly ZXR0dXBkZXNjOwotCi0JCQkvKiBCdXQgZmlyc3QsIHNldCB1cCBwYXJhbWV0ZXIgaW5mb3Jt YXRpb24gKi8KLQkJCXBpbmZvID0gcHJlcGFyZV9zcWxfZm5fcGFyc2VfaW5mbyh0dXBsZSwg TlVMTCwgSW52YWxpZE9pZCk7CisJCQlyYXdfcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9x dWVyeShwcm9zcmMpOwogCi0JCQlxdWVyeXRyZWVfbGlzdCA9IE5JTDsKLQkJCWZvcmVhY2go bGMsIHJhd19wYXJzZXRyZWVfbGlzdCkKKwkJCWlmICghaGFzcG9seWFyZykKIAkJCXsKLQkJ CQlSYXdTdG10ICAgICpwYXJzZXRyZWUgPSBsZmlyc3Rfbm9kZShSYXdTdG10LCBsYyk7Ci0J CQkJTGlzdAkgICAqcXVlcnl0cmVlX3N1Ymxpc3Q7Ci0KLQkJCQlxdWVyeXRyZWVfc3VibGlz dCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1zKHBhcnNldHJlZSwKLQkJCQkJCQkJ CQkJCQkJCQkgIHByb3NyYywKLQkJCQkJCQkJCQkJCQkJCQkgIChQYXJzZXJTZXR1cEhvb2sp IHNxbF9mbl9wYXJzZXJfc2V0dXAsCi0JCQkJCQkJCQkJCQkJCQkJICBwaW5mbywKLQkJCQkJ CQkJCQkJCQkJCQkgIE5VTEwpOwotCQkJCXF1ZXJ5dHJlZV9saXN0ID0gbGFwcGVuZChxdWVy eXRyZWVfbGlzdCwKLQkJCQkJCQkJCQkgcXVlcnl0cmVlX3N1Ymxpc3QpOworCQkJCS8qCisJ CQkJICogT0sgdG8gZG8gZnVsbCBwcmVjaGVjazogYW5hbHl6ZSBhbmQgcmV3cml0ZSB0aGUg cXVlcmllcywgdGhlbgorCQkJCSAqIHZlcmlmeSB0aGUgcmVzdWx0IHR5cGUuCisJCQkJICov CisJCQkJU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIgcGluZm87CisKKwkJCQkvKiBCdXQgZmly c3QsIHNldCB1cCBwYXJhbWV0ZXIgaW5mb3JtYXRpb24gKi8KKwkJCQlwaW5mbyA9IHByZXBh cmVfc3FsX2ZuX3BhcnNlX2luZm8odHVwbGUsIE5VTEwsIEludmFsaWRPaWQpOworCisJCQkJ cXVlcnl0cmVlX2xpc3QgPSBOSUw7CisJCQkJZm9yZWFjaChsYywgcmF3X3BhcnNldHJlZV9s aXN0KQorCQkJCXsKKwkJCQkJUmF3U3RtdCAgICAqcGFyc2V0cmVlID0gbGZpcnN0X25vZGUo UmF3U3RtdCwgbGMpOworCQkJCQlMaXN0CSAgICpxdWVyeXRyZWVfc3VibGlzdDsKKworCQkJ CQlxdWVyeXRyZWVfc3VibGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1zKHBh cnNldHJlZSwKKwkJCQkJCQkJCQkJCQkJCQkJICBwcm9zcmMsCisJCQkJCQkJCQkJCQkJCQkJ CSAgKFBhcnNlclNldHVwSG9vaykgc3FsX2ZuX3BhcnNlcl9zZXR1cCwKKwkJCQkJCQkJCQkJ CQkJCQkJICBwaW5mbywKKwkJCQkJCQkJCQkJCQkJCQkJICBOVUxMKTsKKwkJCQkJcXVlcnl0 cmVlX2xpc3QgPSBsYXBwZW5kKHF1ZXJ5dHJlZV9saXN0LAorCQkJCQkJCQkJCQkgcXVlcnl0 cmVlX3N1Ymxpc3QpOworCQkJCX0KIAkJCX0KKwkJfQorCisJCWlmICghaGFzcG9seWFyZykK KwkJeworCQkJT2lkCQkJcmV0dHlwZTsKKwkJCVR1cGxlRGVzYwlyZXR0dXBkZXNjOwogCiAJ CQljaGVja19zcWxfZm5fc3RhdGVtZW50cyhxdWVyeXRyZWVfbGlzdCk7CiAKQEAgLTk2OCw2 ICsxMDAxLDkgQEAgZnVuY3Rpb25fcGFyc2VfZXJyb3JfdHJhbnNwb3NlKGNvbnN0IGNoYXIg KnByb3NyYykKIAlpbnQJCQluZXdlcnJwb3NpdGlvbjsKIAljb25zdCBjaGFyICpxdWVyeVRl eHQ7CiAKKwlpZiAoIXByb3NyYykKKwkJcmV0dXJuIGZhbHNlOworCiAJLyoKIAkgKiBOb3Ro aW5nIHRvIGRvIHVubGVzcyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgc3ludGF4IGVycm9yIHRo YXQgaGFzIGEKIAkgKiBjdXJzb3IgcG9zaXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dy ZWdhdGVjbWRzLmMKaW5kZXggNjljNTBhYzA4Ny4uMDQ2Y2YyZGYwOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYwpAQCAtMzEyLDkgKzMxMiwxMSBAQCBEZWZpbmVB Z2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwK IAkJCQkJCQkJCQkgIE9CSkVDVF9BR0dSRUdBVEUsCiAJCQkJCQkJCQkJICAmcGFyYW1ldGVy VHlwZXMsCisJCQkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkJCSAgJmFsbFBhcmFtZXRlclR5 cGVzLAogCQkJCQkJCQkJCSAgJnBhcmFtZXRlck1vZGVzLAogCQkJCQkJCQkJCSAgJnBhcmFt ZXRlck5hbWVzLAorCQkJCQkJCQkJCSAgTlVMTCwKIAkJCQkJCQkJCQkgICZwYXJhbWV0ZXJE ZWZhdWx0cywKIAkJCQkJCQkJCQkgICZ2YXJpYWRpY0FyZ1R5cGUsCiAJCQkJCQkJCQkJICAm cmVxdWlyZWRSZXN1bHRUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2Z1bmN0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMK aW5kZXggN2E0ZTEwNDYyMy4uYTIyMzVmMjdlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVu Y3Rpb25jbWRzLmMKQEAgLTUzLDE1ICs1MywxOCBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3By b2NsYW5nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUu aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNp bmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC0xODYsOSArMTg5LDExIEBAIGludGVycHJl dF9mdW5jdGlvbl9wYXJhbWV0ZXJfbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ CSAgT2lkIGxhbmd1YWdlT2lkLAogCQkJCQkJCQkgIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJ CQkJCQkJICBvaWR2ZWN0b3IgKipwYXJhbWV0ZXJUeXBlcywKKwkJCQkJCQkJICBMaXN0ICoq cGFyYW1ldGVyVHlwZXNfbGlzdCwKIAkJCQkJCQkJICBBcnJheVR5cGUgKiphbGxQYXJhbWV0 ZXJUeXBlcywKIAkJCQkJCQkJICBBcnJheVR5cGUgKipwYXJhbWV0ZXJNb2RlcywKIAkJCQkJ CQkJICBBcnJheVR5cGUgKipwYXJhbWV0ZXJOYW1lcywKKwkJCQkJCQkJICBMaXN0ICoqaW5Q YXJhbWV0ZXJOYW1lc19saXN0LAogCQkJCQkJCQkgIExpc3QgKipwYXJhbWV0ZXJEZWZhdWx0 cywKIAkJCQkJCQkJICBPaWQgKnZhcmlhZGljQXJnVHlwZSwKIAkJCQkJCQkJICBPaWQgKnJl cXVpcmVkUmVzdWx0VHlwZSkKQEAgLTI4Myw3ICsyODgsMTEgQEAgaW50ZXJwcmV0X2Z1bmN0 aW9uX3BhcmFtZXRlcl9saXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkvKiBoYW5kbGUg aW5wdXQgcGFyYW1ldGVycyAqLwogCQlpZiAoZnAtPm1vZGUgIT0gRlVOQ19QQVJBTV9PVVQg JiYgZnAtPm1vZGUgIT0gRlVOQ19QQVJBTV9UQUJMRSkKKwkJewogCQkJaXNpbnB1dCA9IHRy dWU7CisJCQlpZiAocGFyYW1ldGVyVHlwZXNfbGlzdCkKKwkJCQkqcGFyYW1ldGVyVHlwZXNf bGlzdCA9IGxhcHBlbmRfb2lkKCpwYXJhbWV0ZXJUeXBlc19saXN0LCB0b2lkKTsKKwkJfQog CiAJCS8qIGhhbmRsZSBzaWduYXR1cmUgcGFyYW1ldGVycyAqLwogCQlpZiAoZnAtPm1vZGUg PT0gRlVOQ19QQVJBTV9JTiB8fCBmcC0+bW9kZSA9PSBGVU5DX1BBUkFNX0lOT1VUIHx8CkBA IC0zNzIsNiArMzgxLDkgQEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9saXN0KFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJCWhhdmVfbmFtZXMgPSB0cnVlOwogCQl9CiAKKwkJaWYg KGluUGFyYW1ldGVyTmFtZXNfbGlzdCkKKwkJCSppblBhcmFtZXRlck5hbWVzX2xpc3QgPSBs YXBwZW5kKCppblBhcmFtZXRlck5hbWVzX2xpc3QsIG1ha2VTdHJpbmcoZnAtPm5hbWUgPyBm cC0+bmFtZSA6IHBzdHJkdXAoIiIpKSk7CisKIAkJaWYgKGZwLT5kZWZleHByKQogCQl7CiAJ CQlOb2RlCSAgICpkZWY7CkBAIC03ODYsMjggKzc5OCwxMCBAQCBjb21wdXRlX2Z1bmN0aW9u X2F0dHJpYnV0ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBkZWZlbC0+ZGVmbmFtZSk7 CiAJfQogCi0JLyogcHJvY2VzcyByZXF1aXJlZCBpdGVtcyAqLwogCWlmIChhc19pdGVtKQog CQkqYXMgPSAoTGlzdCAqKSBhc19pdGVtLT5hcmc7Ci0JZWxzZQotCXsKLQkJZXJlcG9ydChF UlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRlVOQ1RJT05fREVGSU5JVElP TiksCi0JCQkJIGVycm1zZygibm8gZnVuY3Rpb24gYm9keSBzcGVjaWZpZWQiKSkpOwotCQkq YXMgPSBOSUw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQl9Ci0KIAlpZiAobGFu Z3VhZ2VfaXRlbSkKIAkJKmxhbmd1YWdlID0gc3RyVmFsKGxhbmd1YWdlX2l0ZW0tPmFyZyk7 Ci0JZWxzZQotCXsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfRlVOQ1RJT05fREVGSU5JVElPTiksCi0JCQkJIGVycm1zZygibm8gbGFuZ3VhZ2Ug c3BlY2lmaWVkIikpKTsKLQkJKmxhbmd1YWdlID0gTlVMTDsJCS8qIGtlZXAgY29tcGlsZXIg cXVpZXQgKi8KLQl9Ci0KLQkvKiBwcm9jZXNzIG9wdGlvbmFsIGl0ZW1zICovCiAJaWYgKHRy YW5zZm9ybV9pdGVtKQogCQkqdHJhbnNmb3JtID0gdHJhbnNmb3JtX2l0ZW0tPmFyZzsKIAlp ZiAod2luZG93ZnVuY19pdGVtKQpAQCAtODU2LDEwICs4NTAsMjEgQEAgY29tcHV0ZV9mdW5j dGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3RhdGljIHZvaWQK IGludGVycHJldF9BU19jbGF1c2UoT2lkIGxhbmd1YWdlT2lkLCBjb25zdCBjaGFyICpsYW5n dWFnZU5hbWUsCi0JCQkJCWNoYXIgKmZ1bmNuYW1lLCBMaXN0ICphcywKLQkJCQkJY2hhciAq KnByb3NyY19zdHJfcCwgY2hhciAqKnByb2Jpbl9zdHJfcCkKKwkJCQkJY2hhciAqZnVuY25h bWUsIExpc3QgKmFzLCBOb2RlICpzcWxfYm9keV9pbiwKKwkJCQkJTGlzdCAqcGFyYW1ldGVy VHlwZXMsIExpc3QgKmluUGFyYW1ldGVyTmFtZXMsCisJCQkJCWNoYXIgKipwcm9zcmNfc3Ry X3AsIGNoYXIgKipwcm9iaW5fc3RyX3AsIE5vZGUgKipzcWxfYm9keV9vdXQpCiB7Ci0JQXNz ZXJ0KGFzICE9IE5JTCk7CisJaWYgKHNxbF9ib2R5X2luICYmIGFzKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9O KSwKKwkJCQkgZXJybXNnKCJkdXBsaWNhdGUgZnVuY3Rpb24gYm9keSBzcGVjaWZpZWQiKSkp OworCisJaWYgKHNxbF9ib2R5X2luICYmIGxhbmd1YWdlT2lkICE9IFNRTGxhbmd1YWdlSWQp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZVTkNU SU9OX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImlubGluZSBTUUwgZnVuY3Rpb24gYm9k eSBvbmx5IHZhbGlkIGZvciBsYW5ndWFnZSBTUUwiKSkpOworCisJKnNxbF9ib2R5X291dCA9 IE5VTEw7CiAKIAlpZiAobGFuZ3VhZ2VPaWQgPT0gQ2xhbmd1YWdlSWQpCiAJewpAQCAtODgx LDYgKzg4Niw3NiBAQCBpbnRlcnByZXRfQVNfY2xhdXNlKE9pZCBsYW5ndWFnZU9pZCwgY29u c3QgY2hhciAqbGFuZ3VhZ2VOYW1lLAogCQkJCSpwcm9zcmNfc3RyX3AgPSBmdW5jbmFtZTsK IAkJfQogCX0KKwllbHNlIGlmIChzcWxfYm9keV9pbikKKwl7CisJCVNRTEZ1bmN0aW9uUGFy c2VJbmZvUHRyIHBpbmZvOworCisJCXBpbmZvID0gKFNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRy KSBwYWxsb2MwKHNpemVvZihTUUxGdW5jdGlvblBhcnNlSW5mbykpOworCisJCXBpbmZvLT5m bmFtZSA9IGZ1bmNuYW1lOworCQlwaW5mby0+bmFyZ3MgPSBsaXN0X2xlbmd0aChwYXJhbWV0 ZXJUeXBlcyk7CisJCXBpbmZvLT5hcmd0eXBlcyA9IChPaWQgKikgcGFsbG9jKHBpbmZvLT5u YXJncyAqIHNpemVvZihPaWQpKTsKKwkJcGluZm8tPmFyZ25hbWVzID0gKGNoYXIgKiopIHBh bGxvYyhwaW5mby0+bmFyZ3MgKiBzaXplb2YoY2hhciAqKSk7CisJCWZvciAoaW50IGkgPSAw OyBpIDwgbGlzdF9sZW5ndGgocGFyYW1ldGVyVHlwZXMpOyBpKyspCisJCXsKKwkJCWNoYXIJ ICAgKnMgPSBzdHJWYWwobGlzdF9udGgoaW5QYXJhbWV0ZXJOYW1lcywgaSkpOworCisJCQlw aW5mby0+YXJndHlwZXNbaV0gPSBsaXN0X250aF9vaWQocGFyYW1ldGVyVHlwZXMsIGkpOwor CQkJaWYgKElzUG9seW1vcnBoaWNUeXBlKHBpbmZvLT5hcmd0eXBlc1tpXSkpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9E RUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coIlNRTCBmdW5jdGlvbiB3aXRoIHVucXVvdGVk IGZ1bmN0aW9uIGJvZHkgY2Fubm90IGhhdmUgcG9seW1vcnBoaWMgYXJndW1lbnRzIikpKTsK KworCQkJaWYgKHNbMF0gIT0gJ1wwJykKKwkJCQlwaW5mby0+YXJnbmFtZXNbaV0gPSBzOwor CQkJZWxzZQorCQkJCXBpbmZvLT5hcmduYW1lc1tpXSA9IE5VTEw7CisJCX0KKworCQlpZiAo SXNBKHNxbF9ib2R5X2luLCBMaXN0KSkKKwkJeworCQkJTGlzdAkgICAqc3RtdHMgPSBsaW5p dGlhbF9ub2RlKExpc3QsIGNhc3ROb2RlKExpc3QsIHNxbF9ib2R5X2luKSk7CisJCQlMaXN0 Q2VsbCAgICpsYzsKKwkJCUxpc3QJICAgKnRyYW5zZm9ybWVkX3N0bXRzID0gTklMOworCisJ CQlmb3JlYWNoKGxjLCBzdG10cykKKwkJCXsKKwkJCQlOb2RlCSAgICpzdG10ID0gbGZpcnN0 KGxjKTsKKwkJCQlRdWVyeQkgICAqcTsKKwkJCQlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtl X3BhcnNlc3RhdGUoTlVMTCk7CisKKwkJCQlzcWxfZm5fcGFyc2VyX3NldHVwKHBzdGF0ZSwg cGluZm8pOworCQkJCXEgPSB0cmFuc2Zvcm1TdG10KHBzdGF0ZSwgc3RtdCk7CisJCQkJaWYg KHEtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ CWVycm1zZygiJXMgaXMgbm90IHlldCBzdXBwb3J0ZWQgaW4gdW5xdW90ZWQgU1FMIGZ1bmN0 aW9uIGJvZHkiLAorCQkJCQkJCQkgICBHZXRDb21tYW5kVGFnTmFtZShDcmVhdGVDb21tYW5k VGFnKHEtPnV0aWxpdHlTdG10KSkpKTsKKwkJCQl0cmFuc2Zvcm1lZF9zdG10cyA9IGxhcHBl bmQodHJhbnNmb3JtZWRfc3RtdHMsIHEpOworCQkJCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUp OworCQkJfQorCisJCQkqc3FsX2JvZHlfb3V0ID0gKE5vZGUgKikgbGlzdF9tYWtlMSh0cmFu c2Zvcm1lZF9zdG10cyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlRdWVyeQkgICAqcTsKKwkJ CVBhcnNlU3RhdGUgKnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKKworCQkJc3Fs X2ZuX3BhcnNlcl9zZXR1cChwc3RhdGUsIHBpbmZvKTsKKwkJCXEgPSB0cmFuc2Zvcm1TdG10 KHBzdGF0ZSwgc3FsX2JvZHlfaW4pOworCQkJaWYgKHEtPmNvbW1hbmRUeXBlID09IENNRF9V VElMSVRZKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygiJXMgaXMgbm90IHlldCBzdXBw b3J0ZWQgaW4gdW5xdW90ZWQgU1FMIGZ1bmN0aW9uIGJvZHkiLAorCQkJCQkJCSAgIEdldENv bW1hbmRUYWdOYW1lKENyZWF0ZUNvbW1hbmRUYWcocS0+dXRpbGl0eVN0bXQpKSkpOworCisJ CQkqc3FsX2JvZHlfb3V0ID0gKE5vZGUgKikgcTsKKwkJfQorCisJCSpwcm9iaW5fc3RyX3Ag PSBOVUxMOworCQkqcHJvc3JjX3N0cl9wID0gTlVMTDsKKwl9CiAJZWxzZQogCXsKIAkJLyog RXZlcnl0aGluZyBlbHNlIHdhbnRzIHRoZSBnaXZlbiBzdHJpbmcgaW4gcHJvc3JjLiAqLwpA QCAtOTE5LDYgKzk5NCw3IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogewogCWNoYXIJICAgKnByb2Jpbl9zdHI7CiAJ Y2hhcgkgICAqcHJvc3JjX3N0cjsKKwlOb2RlCSAgICpwcm9zcWxib2R5OwogCU9pZAkJCXBy b3JldHR5cGU7CiAJYm9vbAkJcmV0dXJuc1NldDsKIAljaGFyCSAgICpsYW5ndWFnZTsKQEAg LTkyOSw5ICsxMDA1LDExIEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogCU9pZAkJCW5hbWVzcGFjZUlkOwogCUFjbFJl c3VsdAlhY2xyZXN1bHQ7CiAJb2lkdmVjdG9yICAqcGFyYW1ldGVyVHlwZXM7CisJTGlzdAkg ICAqcGFyYW1ldGVyVHlwZXNfbGlzdCA9IE5JTDsKIAlBcnJheVR5cGUgICphbGxQYXJhbWV0 ZXJUeXBlczsKIAlBcnJheVR5cGUgICpwYXJhbWV0ZXJNb2RlczsKIAlBcnJheVR5cGUgICpw YXJhbWV0ZXJOYW1lczsKKwlMaXN0CSAgICppblBhcmFtZXRlck5hbWVzX2xpc3QgPSBOSUw7 CiAJTGlzdAkgICAqcGFyYW1ldGVyRGVmYXVsdHM7CiAJT2lkCQkJdmFyaWFkaWNBcmdUeXBl OwogCUxpc3QJICAgKnRyZnR5cGVzX2xpc3QgPSBOSUw7CkBAIC05NjIsNiArMTA0MCw4IEBA IENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10 ICpzdG10KQogCQkJCQkgICBnZXRfbmFtZXNwYWNlX25hbWUobmFtZXNwYWNlSWQpKTsKIAog CS8qIFNldCBkZWZhdWx0IGF0dHJpYnV0ZXMgKi8KKwlhc19jbGF1c2UgPSBOVUxMOworCWxh bmd1YWdlID0gInNxbCI7CiAJaXNXaW5kb3dGdW5jID0gZmFsc2U7CiAJaXNTdHJpY3QgPSBm YWxzZTsKIAlzZWN1cml0eSA9IGZhbHNlOwpAQCAtMTA1Myw5ICsxMTMzLDExIEBAIENyZWF0 ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10 KQogCQkJCQkJCQkJICBsYW5ndWFnZU9pZCwKIAkJCQkJCQkJCSAgc3RtdC0+aXNfcHJvY2Vk dXJlID8gT0JKRUNUX1BST0NFRFVSRSA6IE9CSkVDVF9GVU5DVElPTiwKIAkJCQkJCQkJCSAg JnBhcmFtZXRlclR5cGVzLAorCQkJCQkJCQkJICAmcGFyYW1ldGVyVHlwZXNfbGlzdCwKIAkJ CQkJCQkJCSAgJmFsbFBhcmFtZXRlclR5cGVzLAogCQkJCQkJCQkJICAmcGFyYW1ldGVyTW9k ZXMsCiAJCQkJCQkJCQkgICZwYXJhbWV0ZXJOYW1lcywKKwkJCQkJCQkJCSAgJmluUGFyYW1l dGVyTmFtZXNfbGlzdCwKIAkJCQkJCQkJCSAgJnBhcmFtZXRlckRlZmF1bHRzLAogCQkJCQkJ CQkJICAmdmFyaWFkaWNBcmdUeXBlLAogCQkJCQkJCQkJICAmcmVxdWlyZWRSZXN1bHRUeXBl KTsKQEAgLTExMTIsOCArMTE5NCw5IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogCQl0cmZ0eXBlcyA9IE5VTEw7CiAJ fQogCi0JaW50ZXJwcmV0X0FTX2NsYXVzZShsYW5ndWFnZU9pZCwgbGFuZ3VhZ2UsIGZ1bmNu YW1lLCBhc19jbGF1c2UsCi0JCQkJCQkmcHJvc3JjX3N0ciwgJnByb2Jpbl9zdHIpOworCWlu dGVycHJldF9BU19jbGF1c2UobGFuZ3VhZ2VPaWQsIGxhbmd1YWdlLCBmdW5jbmFtZSwgYXNf Y2xhdXNlLCBzdG10LT5zcWxfYm9keSwKKwkJCQkJCXBhcmFtZXRlclR5cGVzX2xpc3QsIGlu UGFyYW1ldGVyTmFtZXNfbGlzdCwKKwkJCQkJCSZwcm9zcmNfc3RyLCAmcHJvYmluX3N0ciwg JnByb3NxbGJvZHkpOwogCiAJLyoKIAkgKiBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIENPU1Qg YW5kIFJPV1MgZGVwZW5kaW5nIG9uIG90aGVyIHBhcmFtZXRlcnM7CkBAIC0xMTU1LDYgKzEy MzgsNyBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0 aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAgIGxhbmd1YWdlVmFsaWRhdG9yLAogCQkJCQkJICAg cHJvc3JjX3N0ciwJLyogY29udmVydGVkIHRvIHRleHQgbGF0ZXIgKi8KIAkJCQkJCSAgIHBy b2Jpbl9zdHIsCS8qIGNvbnZlcnRlZCB0byB0ZXh0IGxhdGVyICovCisJCQkJCQkgICBwcm9z cWxib2R5LAogCQkJCQkJICAgc3RtdC0+aXNfcHJvY2VkdXJlID8gUFJPS0lORF9QUk9DRURV UkUgOiAoaXNXaW5kb3dGdW5jID8gUFJPS0lORF9XSU5ET1cgOiBQUk9LSU5EX0ZVTkNUSU9O KSwKIAkJCQkJCSAgIHNlY3VyaXR5LAogCQkJCQkJICAgaXNMZWFrUHJvb2YsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHlwZWNtZHMuYwppbmRleCA3NjIxOGZiNDdlLi5lOTc1NTA4ZmZhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTE3NzUsNiArMTc3NSw3IEBAIG1ha2VSYW5nZUNv bnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1lLCBPaWQgbmFtZXNwYWNlLAogCQkJCQkJCQkg Rl9GTUdSX0lOVEVSTkFMX1ZBTElEQVRPUiwgLyogbGFuZ3VhZ2UgdmFsaWRhdG9yICovCiAJ CQkJCQkJCSBwcm9zcmNbaV0sIC8qIHByb3NyYyAqLwogCQkJCQkJCQkgTlVMTCwJLyogcHJv YmluICovCisJCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5ICovCiAJCQkJCQkJCSBQUk9L SU5EX0ZVTkNUSU9OLAogCQkJCQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5X2RlZmluZXIgKi8K IAkJCQkJCQkJIGZhbHNlLCAvKiBsZWFrcHJvb2YgKi8KQEAgLTE4MzksNiArMTg0MCw3IEBA IG1ha2VNdWx0aXJhbmdlQ29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1l c3BhY2UsCiAJCQkJCQkJIEZfRk1HUl9JTlRFUk5BTF9WQUxJREFUT1IsCiAJCQkJCQkJICJt dWx0aXJhbmdlX2NvbnN0cnVjdG9yMCIsIC8qIHByb3NyYyAqLwogCQkJCQkJCSBOVUxMLAkv KiBwcm9iaW4gKi8KKwkJCQkJCQkgTlVMTCwJLyogcHJvc3FsYm9keSAqLwogCQkJCQkJCSBQ Uk9LSU5EX0ZVTkNUSU9OLAogCQkJCQkJCSBmYWxzZSwgLyogc2VjdXJpdHlfZGVmaW5lciAq LwogCQkJCQkJCSBmYWxzZSwgLyogbGVha3Byb29mICovCkBAIC0xODgyLDYgKzE4ODQsNyBA QCBtYWtlTXVsdGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1lLCBPaWQgbmFt ZXNwYWNlLAogCQkJCQkJCSBGX0ZNR1JfSU5URVJOQUxfVkFMSURBVE9SLAogCQkJCQkJCSAi bXVsdGlyYW5nZV9jb25zdHJ1Y3RvcjEiLCAvKiBwcm9zcmMgKi8KIAkJCQkJCQkgTlVMTCwJ LyogcHJvYmluICovCisJCQkJCQkJIE5VTEwsCS8qIHByb3NxbGJvZHkgKi8KIAkJCQkJCQkg UFJPS0lORF9GVU5DVElPTiwKIAkJCQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5X2RlZmluZXIg Ki8KIAkJCQkJCQkgZmFsc2UsIC8qIGxlYWtwcm9vZiAqLwpAQCAtMTkyMiw2ICsxOTI1LDcg QEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5h bWVzcGFjZSwKIAkJCQkJCQkgRl9GTUdSX0lOVEVSTkFMX1ZBTElEQVRPUiwKIAkJCQkJCQkg Im11bHRpcmFuZ2VfY29uc3RydWN0b3IyIiwgLyogcHJvc3JjICovCiAJCQkJCQkJIE5VTEws CS8qIHByb2JpbiAqLworCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5ICovCiAJCQkJCQkJ IFBST0tJTkRfRlVOQ1RJT04sCiAJCQkJCQkJIGZhbHNlLCAvKiBzZWN1cml0eV9kZWZpbmVy ICovCiAJCQkJCQkJIGZhbHNlLCAvKiBsZWFrcHJvb2YgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMKaW5kZXggN2JiNzUyYWNlMy4uNjQyNjgzODQzZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNs dWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhh bmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3V0 aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMTI4LDIxICsxMjks NiBAQCB0eXBlZGVmIHN0cnVjdAogCiB0eXBlZGVmIFNRTEZ1bmN0aW9uQ2FjaGUgKlNRTEZ1 bmN0aW9uQ2FjaGVQdHI7CiAKLS8qCi0gKiBEYXRhIHN0cnVjdHVyZSBuZWVkZWQgYnkgdGhl IHBhcnNlciBjYWxsYmFjayBob29rcyB0byByZXNvbHZlIHBhcmFtZXRlcgotICogcmVmZXJl bmNlcyBkdXJpbmcgcGFyc2luZyBvZiBhIFNRTCBmdW5jdGlvbidzIGJvZHkuICBUaGlzIGlz IHNlcGFyYXRlIGZyb20KLSAqIFNRTEZ1bmN0aW9uQ2FjaGUgc2luY2Ugd2Ugc29tZXRpbWVz IGRvIHBhcnNpbmcgc2VwYXJhdGVseSBmcm9tIGV4ZWN1dGlvbi4KLSAqLwotdHlwZWRlZiBz dHJ1Y3QgU1FMRnVuY3Rpb25QYXJzZUluZm8KLXsKLQljaGFyCSAgICpmbmFtZTsJCQkvKiBm dW5jdGlvbidzIG5hbWUgKi8KLQlpbnQJCQluYXJnczsJCQkvKiBudW1iZXIgb2YgaW5wdXQg YXJndW1lbnRzICovCi0JT2lkCQkgICAqYXJndHlwZXM7CQkvKiByZXNvbHZlZCB0eXBlcyBv ZiBpbnB1dCBhcmd1bWVudHMgKi8KLQljaGFyCSAgKiphcmduYW1lczsJCS8qIG5hbWVzIG9m IGlucHV0IGFyZ3VtZW50czsgTlVMTCBpZiBub25lICovCi0JLyogTm90ZSB0aGF0IGFyZ25h bWVzW2ldIGNhbiBiZSBOVUxMLCBpZiBzb21lIGFyZ3MgYXJlIHVubmFtZWQgKi8KLQlPaWQJ CQljb2xsYXRpb247CQkvKiBmdW5jdGlvbidzIGlucHV0IGNvbGxhdGlvbiwgaWYga25vd24g Ki8KLX0JCQlTUUxGdW5jdGlvblBhcnNlSW5mbzsKLQogCiAvKiBub24tZXhwb3J0IGZ1bmN0 aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBOb2RlICpzcWxfZm5fcGFyYW1fcmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwpAQCAtNjA3LDcgKzU5Myw2IEBAIGlu aXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lkIGNvbGxhdGlvbiwg Ym9vbCBsYXp5RXZhbE9LKQogCUhlYXBUdXBsZQlwcm9jZWR1cmVUdXBsZTsKIAlGb3JtX3Bn X3Byb2MgcHJvY2VkdXJlU3RydWN0OwogCVNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlOwot CUxpc3QJICAgKnJhd19wYXJzZXRyZWVfbGlzdDsKIAlMaXN0CSAgICpxdWVyeVRyZWVfbGlz dDsKIAlMaXN0CSAgICpyZXN1bHR0bGlzdDsKIAlMaXN0Q2VsbCAgICpsYzsKQEAgLTY4Miw5 ICs2NjcsNiBAQCBpbml0X3NxbF9mY2FjaGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIE9p ZCBjb2xsYXRpb24sIGJvb2wgbGF6eUV2YWxPSykKIAkJCQkJCSAgcHJvY2VkdXJlVHVwbGUs CiAJCQkJCQkgIEFudW1fcGdfcHJvY19wcm9zcmMsCiAJCQkJCQkgICZpc051bGwpOwotCWlm IChpc051bGwpCi0JCWVsb2coRVJST1IsICJudWxsIHByb3NyYyBmb3IgZnVuY3Rpb24gJXUi LCBmb2lkKTsKLQlmY2FjaGUtPnNyYyA9IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKIAog CS8qCiAJICogUGFyc2UgYW5kIHJld3JpdGUgdGhlIHF1ZXJpZXMgaW4gdGhlIGZ1bmN0aW9u IHRleHQuICBVc2Ugc3VibGlzdHMgdG8KQEAgLTY5NSwyMCArNjc3LDU1IEBAIGluaXRfc3Fs X2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lkIGNvbGxhdGlvbiwgYm9vbCBs YXp5RXZhbE9LKQogCSAqIGJ1dCB3ZSdsbCBub3Qgd29ycnkgYWJvdXQgaXQgdW50aWwgdGhl IG1vZHVsZSBpcyByZXdyaXR0ZW4gdG8gdXNlCiAJICogcGxhbmNhY2hlLmMuCiAJICovCi0J cmF3X3BhcnNldHJlZV9saXN0ID0gcGdfcGFyc2VfcXVlcnkoZmNhY2hlLT5zcmMpOwotCiAJ cXVlcnlUcmVlX2xpc3QgPSBOSUw7Ci0JZm9yZWFjaChsYywgcmF3X3BhcnNldHJlZV9saXN0 KQorCWlmIChpc051bGwpCiAJewotCQlSYXdTdG10ICAgICpwYXJzZXRyZWUgPSBsZmlyc3Rf bm9kZShSYXdTdG10LCBsYyk7Ci0JCUxpc3QJICAgKnF1ZXJ5VHJlZV9zdWJsaXN0OwotCi0J CXF1ZXJ5VHJlZV9zdWJsaXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9wYXJhbXMocGFy c2V0cmVlLAotCQkJCQkJCQkJCQkJCQkgIGZjYWNoZS0+c3JjLAotCQkJCQkJCQkJCQkJCQkg IChQYXJzZXJTZXR1cEhvb2spIHNxbF9mbl9wYXJzZXJfc2V0dXAsCi0JCQkJCQkJCQkJCQkJ CSAgZmNhY2hlLT5waW5mbywKLQkJCQkJCQkJCQkJCQkJICBOVUxMKTsKLQkJcXVlcnlUcmVl X2xpc3QgPSBsYXBwZW5kKHF1ZXJ5VHJlZV9saXN0LCBxdWVyeVRyZWVfc3VibGlzdCk7CisJ CU5vZGUJICAgKm47CisJCUxpc3QJICAgKnN0b3JlZF9xdWVyeV9saXN0OworCisJCXRtcCA9 IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELAorCQkJCQkJCSAgcHJvY2VkdXJlVHVwbGUsCisJ CQkJCQkJICBBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSwKKwkJCQkJCQkgICZpc051bGwpOwor CQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIGFuZCBwcm9zcWxi b2R5IGZvciBmdW5jdGlvbiAldSIsIGZvaWQpOworCisJCW4gPSBzdHJpbmdUb05vZGUoVGV4 dERhdHVtR2V0Q1N0cmluZyh0bXApKTsKKwkJaWYgKElzQShuLCBMaXN0KSkKKwkJCXN0b3Jl ZF9xdWVyeV9saXN0ID0gbGluaXRpYWxfbm9kZShMaXN0LCBjYXN0Tm9kZShMaXN0LCBuKSk7 CisJCWVsc2UKKwkJCXN0b3JlZF9xdWVyeV9saXN0ID0gbGlzdF9tYWtlMShuKTsKKworCQlm b3JlYWNoKGxjLCBzdG9yZWRfcXVlcnlfbGlzdCkKKwkJeworCQkJUXVlcnkJICAgKnBhcnNl dHJlZSA9IGxmaXJzdF9ub2RlKFF1ZXJ5LCBsYyk7CisJCQlMaXN0CSAgICpxdWVyeVRyZWVf c3VibGlzdDsKKworCQkJQWNxdWlyZVJld3JpdGVMb2NrcyhwYXJzZXRyZWUsIHRydWUsIGZh bHNlKTsKKwkJCXF1ZXJ5VHJlZV9zdWJsaXN0ID0gcGdfcmV3cml0ZV9xdWVyeShwYXJzZXRy ZWUpOworCQkJcXVlcnlUcmVlX2xpc3QgPSBsYXBwZW5kKHF1ZXJ5VHJlZV9saXN0LCBxdWVy eVRyZWVfc3VibGlzdCk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJTGlzdAkgICAqcmF3X3Bh cnNldHJlZV9saXN0OworCisJCWZjYWNoZS0+c3JjID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0 bXApOworCisJCXJhd19wYXJzZXRyZWVfbGlzdCA9IHBnX3BhcnNlX3F1ZXJ5KGZjYWNoZS0+ c3JjKTsKKworCQlmb3JlYWNoKGxjLCByYXdfcGFyc2V0cmVlX2xpc3QpCisJCXsKKwkJCVJh d1N0bXQgICAgKnBhcnNldHJlZSA9IGxmaXJzdF9ub2RlKFJhd1N0bXQsIGxjKTsKKwkJCUxp c3QJICAgKnF1ZXJ5VHJlZV9zdWJsaXN0OworCisJCQlxdWVyeVRyZWVfc3VibGlzdCA9IHBn X2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1zKHBhcnNldHJlZSwKKwkJCQkJCQkJCQkJCQkJ CSAgZmNhY2hlLT5zcmMsCisJCQkJCQkJCQkJCQkJCQkgIChQYXJzZXJTZXR1cEhvb2spIHNx bF9mbl9wYXJzZXJfc2V0dXAsCisJCQkJCQkJCQkJCQkJCQkgIGZjYWNoZS0+cGluZm8sCisJ CQkJCQkJCQkJCQkJCQkgIE5VTEwpOworCQkJcXVlcnlUcmVlX2xpc3QgPSBsYXBwZW5kKHF1 ZXJ5VHJlZV9saXN0LCBxdWVyeVRyZWVfc3VibGlzdCk7CisJCX0KIAl9CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBhZDcyOWQxMGE4Li5mY2M1ZWJiMjA2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMzE3MSw2ICszMTcxLDcgQEAgX2NvcHlRdWVyeShjb25z dCBRdWVyeSAqZnJvbSkKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwog CUNPUFlfU0NBTEFSX0ZJRUxEKGhhc0ZvclVwZGF0ZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQo aGFzUm93U2VjdXJpdHkpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGlzUmV0dXJuKTsKIAlDT1BZ X05PREVfRklFTEQoY3RlTGlzdCk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJQ09Q WV9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKQEAgLTMzMDEsNiArMzMwMiwxNiBAQCBfY29weVNl dE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqZnJvbSkKIAlyZXR1cm4g bmV3bm9kZTsKIH0KIAorc3RhdGljIFJldHVyblN0bXQgKgorX2NvcHlSZXR1cm5TdG10KGNv bnN0IFJldHVyblN0bXQgKmZyb20pCit7CisJUmV0dXJuU3RtdCAqbmV3bm9kZSA9IG1ha2VO b2RlKFJldHVyblN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHJldHVybnZhbCk7CisKKwly ZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGljIFBMQXNzaWduU3RtdCAqCiBfY29weVBMQXNz aWduU3RtdChjb25zdCBQTEFzc2lnblN0bXQgKmZyb20pCiB7CkBAIC0zNjg0LDYgKzM2OTUs NyBAQCBfY29weUNyZWF0ZUZ1bmN0aW9uU3RtdChjb25zdCBDcmVhdGVGdW5jdGlvblN0bXQg KmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKHBhcmFtZXRlcnMpOwogCUNPUFlfTk9ERV9GSUVM RChyZXR1cm5UeXBlKTsKIAlDT1BZX05PREVfRklFTEQob3B0aW9ucyk7CisJQ09QWV9OT0RF X0ZJRUxEKHNxbF9ib2R5KTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtNTM0NCw2ICs1 MzU2LDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1Nl dE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJv bSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX1JldHVyblN0bXQ6CisJCQlyZXR2YWwgPSBfY29w eVJldHVyblN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1BMQXNzaWduU3RtdDoK IAkJCXJldHZhbCA9IF9jb3B5UExBc3NpZ25TdG10KGZyb20pOwogCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggZjZiMzdhZjBlYy4uOTM2MzY1ZTA5YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtOTcwLDYgKzk3MCw3IEBAIF9lcXVhbFF1ZXJ5KGNv bnN0IFF1ZXJ5ICphLCBjb25zdCBRdWVyeSAqYikKIAlDT01QQVJFX1NDQUxBUl9GSUVMRCho YXNNb2RpZnlpbmdDVEUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0ZvclVwZGF0ZSk7 CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzUm93U2VjdXJpdHkpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGlzUmV0dXJuKTsKIAlDT01QQVJFX05PREVfRklFTEQoY3RlTGlzdCk7CiAJ Q09NUEFSRV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGpvaW50 cmVlKTsKQEAgLTEwODgsNiArMTA4OSwxNCBAQCBfZXF1YWxTZXRPcGVyYXRpb25TdG10KGNv bnN0IFNldE9wZXJhdGlvblN0bXQgKmEsIGNvbnN0IFNldE9wZXJhdGlvblN0bXQgKmIpCiAJ cmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxSZXR1cm5TdG10KGNvbnN0 IFJldHVyblN0bXQgKmEsIGNvbnN0IFJldHVyblN0bXQgKmIpCit7CisJQ09NUEFSRV9OT0RF X0ZJRUxEKHJldHVybnZhbCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wK IF9lcXVhbFBMQXNzaWduU3RtdChjb25zdCBQTEFzc2lnblN0bXQgKmEsIGNvbnN0IFBMQXNz aWduU3RtdCAqYikKIHsKQEAgLTE0MDYsNiArMTQxNSw3IEBAIF9lcXVhbENyZWF0ZUZ1bmN0 aW9uU3RtdChjb25zdCBDcmVhdGVGdW5jdGlvblN0bXQgKmEsIGNvbnN0IENyZWF0ZUZ1bmN0 aW9uU3RtdCAqCiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHBhcmFtZXRlcnMpOwogCUNPTVBBUkVf Tk9ERV9GSUVMRChyZXR1cm5UeXBlKTsKIAlDT01QQVJFX05PREVfRklFTEQob3B0aW9ucyk7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHNxbF9ib2R5KTsKIAogCXJldHVybiB0cnVlOwogfQpA QCAtMzMzNCw2ICszMzQ0LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YikKIAkJY2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRP cGVyYXRpb25TdG10KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SZXR1cm5TdG10Ogor CQkJcmV0dmFsID0gX2VxdWFsUmV0dXJuU3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNl IFRfUExBc3NpZ25TdG10OgogCQkJcmV0dmFsID0gX2VxdWFsUExBc3NpZ25TdG10KGEsIGIp OwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBmYThmNjVmYmM1Li40YThk YzJkODZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTI4MzUsNiArMjgzNSwxNCBAQCBf b3V0U2VsZWN0U3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgU2VsZWN0U3RtdCAqbm9kZSkK IAlXUklURV9OT0RFX0ZJRUxEKHJhcmcpOwogfQogCitzdGF0aWMgdm9pZAorX291dFJldHVy blN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJldHVyblN0bXQgKm5vZGUpCit7CisJV1JJ VEVfTk9ERV9UWVBFKCJSRVRVUk4iKTsKKworCVdSSVRFX05PREVfRklFTEQocmV0dXJudmFs KTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRQTEFzc2lnblN0bXQoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IFBMQXNzaWduU3RtdCAqbm9kZSkKIHsKQEAgLTMwNDcsNiArMzA1NSw3IEBAIF9v dXRRdWVyeShTdHJpbmdJbmZvIHN0ciwgY29uc3QgUXVlcnkgKm5vZGUpCiAJV1JJVEVfQk9P TF9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzRm9yVXBk YXRlKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1Jvd1NlY3VyaXR5KTsKKwlXUklURV9CT09M X0ZJRUxEKGlzUmV0dXJuKTsKIAlXUklURV9OT0RFX0ZJRUxEKGN0ZUxpc3QpOwogCVdSSVRF X05PREVfRklFTEQocnRhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKQEAg LTQzMzcsNiArNDM0Niw5IEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZvaWQg Km9iaikKIAkJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJCV9vdXRTZWxlY3RTdG10KHN0ciwg b2JqKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgVF9SZXR1cm5TdG10OgorCQkJCV9vdXRSZXR1 cm5TdG10KHN0ciwgb2JqKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgVF9QTEFzc2lnblN0bXQ6 CiAJCQkJX291dFBMQXNzaWduU3RtdChzdHIsIG9iaik7CiAJCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCmluZGV4IGVjY2UyM2I3NDcuLjk5MjQ3Mjc4NTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCkBAIC0yNjMsNiArMjYzLDcgQEAgX3JlYWRRdWVyeSh2b2lkKQogCVJF QURfQk9PTF9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNG b3JVcGRhdGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJUkVBRF9C T09MX0ZJRUxEKGlzUmV0dXJuKTsKIAlSRUFEX05PREVfRklFTEQoY3RlTGlzdCk7CiAJUkVB RF9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJUkVBRF9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCBiZWExY2M0ZDY3Li45YTZl M2RhYjgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2Vz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC00MjUz LDI3ICs0MjUzLDQ3IEBAIGlubGluZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0 X3R5cGUsIE9pZCByZXN1bHRfY29sbGlkLAogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRf U0laRVMpOwogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhteWN4dCk7CiAKLQkv KiBGZXRjaCB0aGUgZnVuY3Rpb24gYm9keSAqLwotCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQ Uk9DT0lELAotCQkJCQkJICBmdW5jX3R1cGxlLAotCQkJCQkJICBBbnVtX3BnX3Byb2NfcHJv c3JjLAotCQkJCQkJICAmaXNOdWxsKTsKLQlpZiAoaXNOdWxsKQotCQllbG9nKEVSUk9SLCAi bnVsbCBwcm9zcmMgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY2lkKTsKLQlzcmMgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKHRtcCk7Ci0KIAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBz dXBwb3J0IGZvciBlcmVwb3J0KCkuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuCiAJICogZmlu Z2VyIHRoZSBmdW5jdGlvbiB0aGF0IGJhZCBpbmZvcm1hdGlvbiBjYW1lIGZyb20uCiAJICov CiAJY2FsbGJhY2tfYXJnLnByb25hbWUgPSBOYW1lU3RyKGZ1bmNmb3JtLT5wcm9uYW1lKTsK LQljYWxsYmFja19hcmcucHJvc3JjID0gc3JjOworCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBO VUxMOwogCiAJc3FsZXJyY29udGV4dC5jYWxsYmFjayA9IHNxbF9pbmxpbmVfZXJyb3JfY2Fs bGJhY2s7CiAJc3FsZXJyY29udGV4dC5hcmcgPSAodm9pZCAqKSAmY2FsbGJhY2tfYXJnOwog CXNxbGVycmNvbnRleHQucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9y X2NvbnRleHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKIAorCS8qIEZldGNoIHRoZSBmdW5j dGlvbiBib2R5ICovCisJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsCisJCQkJCQkg IGZ1bmNfdHVwbGUsCisJCQkJCQkgIEFudW1fcGdfcHJvY19wcm9zcmMsCisJCQkJCQkgICZp c051bGwpOworCWlmIChpc051bGwpCisJeworCQlOb2RlCSAgICpuOworCQlMaXN0CSAgICpx dWVyeXRyZWVfbGlzdDsKKworCQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgZnVu Y190dXBsZSwgQW51bV9wZ19wcm9jX3Byb3NxbGJvZHksICZpc051bGwpOworCQlpZiAoaXNO dWxsKQorCQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIGFuZCBwcm9zcWxib2R5IGZvciBm dW5jdGlvbiAldSIsIGZ1bmNpZCk7CisKKwkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1H ZXRDU3RyaW5nKHRtcCkpOworCQlpZiAoSXNBKG4sIExpc3QpKQorCQkJcXVlcnl0cmVlX2xp c3QgPSBsaW5pdGlhbF9ub2RlKExpc3QsIGNhc3ROb2RlKExpc3QsIG4pKTsKKwkJZWxzZQor CQkJcXVlcnl0cmVlX2xpc3QgPSBsaXN0X21ha2UxKG4pOworCQlpZiAobGlzdF9sZW5ndGgo cXVlcnl0cmVlX2xpc3QpICE9IDEpCisJCQlnb3RvIGZhaWw7CisJCXF1ZXJ5dHJlZSA9IGxp bml0aWFsKHF1ZXJ5dHJlZV9saXN0KTsKKwl9CisJZWxzZQorCXsKKwlzcmMgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKHRtcCk7CisKKwljYWxsYmFja19hcmcucHJvc3JjID0gc3JjOworCiAJ LyoKIAkgKiBTZXQgdXAgdG8gaGFuZGxlIHBhcmFtZXRlcnMgd2hpbGUgcGFyc2luZyB0aGUg ZnVuY3Rpb24gYm9keS4gIFdlIG5lZWQgYQogCSAqIGR1bW15IEZ1bmNFeHByIG5vZGUgY29u dGFpbmluZyB0aGUgYWxyZWFkeS1zaW1wbGlmaWVkIGFyZ3VtZW50cyB0byBwYXNzCkBAIC00 MzE3LDYgKzQzMzcsNyBAQCBpbmxpbmVfZnVuY3Rpb24oT2lkIGZ1bmNpZCwgT2lkIHJlc3Vs dF90eXBlLCBPaWQgcmVzdWx0X2NvbGxpZCwKIAlxdWVyeXRyZWUgPSB0cmFuc2Zvcm1Ub3BM ZXZlbFN0bXQocHN0YXRlLCBsaW5pdGlhbChyYXdfcGFyc2V0cmVlX2xpc3QpKTsKIAogCWZy ZWVfcGFyc2VzdGF0ZShwc3RhdGUpOworCX0KIAogCS8qCiAJICogVGhlIHNpbmdsZSBjb21t YW5kIG11c3QgYmUgYSBzaW1wbGUgIlNFTEVDVCBleHByZXNzaW9uIi4KQEAgLTQ1NzMsMTIg KzQ1OTQsMTUgQEAgc3FsX2lubGluZV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiAJaW50 CQkJc3ludGF4ZXJycG9zaXRpb247CiAKIAkvKiBJZiBpdCdzIGEgc3ludGF4IGVycm9yLCBj b252ZXJ0IHRvIGludGVybmFsIHN5bnRheCBlcnJvciByZXBvcnQgKi8KLQlzeW50YXhlcnJw b3NpdGlvbiA9IGdldGVycnBvc2l0aW9uKCk7Ci0JaWYgKHN5bnRheGVycnBvc2l0aW9uID4g MCkKKwlpZiAoY2FsbGJhY2tfYXJnLT5wcm9zcmMpCiAJewotCQllcnJwb3NpdGlvbigwKTsK LQkJaW50ZXJuYWxlcnJwb3NpdGlvbihzeW50YXhlcnJwb3NpdGlvbik7Ci0JCWludGVybmFs ZXJycXVlcnkoY2FsbGJhY2tfYXJnLT5wcm9zcmMpOworCQlzeW50YXhlcnJwb3NpdGlvbiA9 IGdldGVycnBvc2l0aW9uKCk7CisJCWlmIChzeW50YXhlcnJwb3NpdGlvbiA+IDApCisJCXsK KwkJCWVycnBvc2l0aW9uKDApOworCQkJaW50ZXJuYWxlcnJwb3NpdGlvbihzeW50YXhlcnJw b3NpdGlvbik7CisJCQlpbnRlcm5hbGVycnF1ZXJ5KGNhbGxiYWNrX2FyZy0+cHJvc3JjKTsK KwkJfQogCX0KIAogCWVycmNvbnRleHQoIlNRTCBmdW5jdGlvbiBcIiVzXCIgZHVyaW5nIGlu bGluaW5nIiwgY2FsbGJhY2tfYXJnLT5wcm9uYW1lKTsKQEAgLTQ2OTAsNyArNDcxNCw2IEBA IGlubGluZV9zZXRfcmV0dXJuaW5nX2Z1bmN0aW9uKFBsYW5uZXJJbmZvICpyb290LCBSYW5n ZVRibEVudHJ5ICpydGUpCiAJT2lkCQkJZnVuY19vaWQ7CiAJSGVhcFR1cGxlCWZ1bmNfdHVw bGU7CiAJRm9ybV9wZ19wcm9jIGZ1bmNmb3JtOwotCWNoYXIJICAgKnNyYzsKIAlEYXR1bQkJ dG1wOwogCWJvb2wJCWlzTnVsbDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKQEAgLTQ3OTks MjcgKzQ4MjIsNTMgQEAgaW5saW5lX3NldF9yZXR1cm5pbmdfZnVuY3Rpb24oUGxhbm5lcklu Zm8gKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAkJCQkJCQkJICBBTExPQ1NFVF9ERUZB VUxUX1NJWkVTKTsKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obXljeHQpOwog Ci0JLyogRmV0Y2ggdGhlIGZ1bmN0aW9uIGJvZHkgKi8KLQl0bXAgPSBTeXNDYWNoZUdldEF0 dHIoUFJPQ09JRCwKLQkJCQkJCSAgZnVuY190dXBsZSwKLQkJCQkJCSAgQW51bV9wZ19wcm9j X3Byb3NyYywKLQkJCQkJCSAgJmlzTnVsbCk7Ci0JaWYgKGlzTnVsbCkKLQkJZWxvZyhFUlJP UiwgIm51bGwgcHJvc3JjIGZvciBmdW5jdGlvbiAldSIsIGZ1bmNfb2lkKTsKLQlzcmMgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCk7Ci0KIAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNl YmFjayBzdXBwb3J0IGZvciBlcmVwb3J0KCkuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuCiAJ ICogZmluZ2VyIHRoZSBmdW5jdGlvbiB0aGF0IGJhZCBpbmZvcm1hdGlvbiBjYW1lIGZyb20u CiAJICovCiAJY2FsbGJhY2tfYXJnLnByb25hbWUgPSBOYW1lU3RyKGZ1bmNmb3JtLT5wcm9u YW1lKTsKLQljYWxsYmFja19hcmcucHJvc3JjID0gc3JjOworCWNhbGxiYWNrX2FyZy5wcm9z cmMgPSBOVUxMOwogCiAJc3FsZXJyY29udGV4dC5jYWxsYmFjayA9IHNxbF9pbmxpbmVfZXJy b3JfY2FsbGJhY2s7CiAJc3FsZXJyY29udGV4dC5hcmcgPSAodm9pZCAqKSAmY2FsbGJhY2tf YXJnOwogCXNxbGVycmNvbnRleHQucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwog CWVycm9yX2NvbnRleHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKIAorCS8qIEZldGNoIHRo ZSBmdW5jdGlvbiBib2R5ICovCisJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsCisJ CQkJCQkgIGZ1bmNfdHVwbGUsCisJCQkJCQkgIEFudW1fcGdfcHJvY19wcm9zcmMsCisJCQkJ CQkgICZpc051bGwpOworCWlmIChpc051bGwpCisJeworCQlOb2RlCSAgICpuOworCisJCXRt cCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELCBmdW5jX3R1cGxlLCBBbnVtX3BnX3Byb2Nf cHJvc3FsYm9keSwgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAi bnVsbCBwcm9zcmMgYW5kIHByb3NxbGJvZHkgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY19vaWQp OworCisJCW4gPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh0bXApKTsKKwkJ aWYgKElzQShuLCBMaXN0KSkKKwkJCXF1ZXJ5dHJlZV9saXN0ID0gbGluaXRpYWxfbm9kZShM aXN0LCBjYXN0Tm9kZShMaXN0LCBuKSk7CisJCWVsc2UKKwkJCXF1ZXJ5dHJlZV9saXN0ID0g bGlzdF9tYWtlMShuKTsKKwkJaWYgKGxpc3RfbGVuZ3RoKHF1ZXJ5dHJlZV9saXN0KSAhPSAx KQorCQkJZ290byBmYWlsOworCQlxdWVyeXRyZWUgPSBsaW5pdGlhbChxdWVyeXRyZWVfbGlz dCk7CisKKwkJcXVlcnl0cmVlX2xpc3QgPSBwZ19yZXdyaXRlX3F1ZXJ5KHF1ZXJ5dHJlZSk7 CisJCWlmIChsaXN0X2xlbmd0aChxdWVyeXRyZWVfbGlzdCkgIT0gMSkKKwkJCWdvdG8gZmFp bDsKKwkJcXVlcnl0cmVlID0gbGluaXRpYWwocXVlcnl0cmVlX2xpc3QpOworCX0KKwllbHNl CisJeworCWNoYXIJICAgKnNyYzsKKworCXNyYyA9IFRleHREYXR1bUdldENTdHJpbmcodG1w KTsKKworCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBzcmM7CisKIAkvKgogCSAqIFNldCB1cCB0 byBoYW5kbGUgcGFyYW1ldGVycyB3aGlsZSBwYXJzaW5nIHRoZSBmdW5jdGlvbiBib2R5LiAg V2UgY2FuCiAJICogdXNlIHRoZSBGdW5jRXhwciBqdXN0IGNyZWF0ZWQgYXMgdGhlIGlucHV0 IGZvcgpAQCAtNDgyOSwxOCArNDg3OCw2IEBAIGlubGluZV9zZXRfcmV0dXJuaW5nX2Z1bmN0 aW9uKFBsYW5uZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUpCiAJCQkJCQkJCQkg IChOb2RlICopIGZleHByLAogCQkJCQkJCQkJICBmZXhwci0+aW5wdXRjb2xsaWQpOwogCi0J LyoKLQkgKiBBbHNvIHJlc29sdmUgdGhlIGFjdHVhbCBmdW5jdGlvbiByZXN1bHQgdHVwZGVz YywgaWYgY29tcG9zaXRlLiAgSWYgdGhlCi0JICogZnVuY3Rpb24gaXMganVzdCBkZWNsYXJl ZCB0byByZXR1cm4gUkVDT1JELCBkaWcgdGhlIGluZm8gb3V0IG9mIHRoZSBBUwotCSAqIGNs YXVzZS4KLQkgKi8KLQlmdW5jdHlwY2xhc3MgPSBnZXRfZXhwcl9yZXN1bHRfdHlwZSgoTm9k ZSAqKSBmZXhwciwgTlVMTCwgJnJldHR1cGRlc2MpOwotCWlmIChmdW5jdHlwY2xhc3MgPT0g VFlQRUZVTkNfUkVDT1JEKQotCQlyZXR0dXBkZXNjID0gQnVpbGREZXNjRnJvbUxpc3RzKHJ0 ZnVuYy0+ZnVuY2NvbG5hbWVzLAotCQkJCQkJCQkJCXJ0ZnVuYy0+ZnVuY2NvbHR5cGVzLAot CQkJCQkJCQkJCXJ0ZnVuYy0+ZnVuY2NvbHR5cG1vZHMsCi0JCQkJCQkJCQkJcnRmdW5jLT5m dW5jY29sY29sbGF0aW9ucyk7Ci0KIAkvKgogCSAqIFBhcnNlLCBhbmFseXplLCBhbmQgcmV3 cml0ZSAodW5saWtlIGlubGluZV9mdW5jdGlvbigpLCB3ZSBjYW4ndCBza2lwCiAJICogcmV3 cml0aW5nIGhlcmUpLiAgV2UgY2FuIGZhaWwgYXMgc29vbiBhcyB3ZSBmaW5kIG1vcmUgdGhh biBvbmUgcXVlcnksCkBAIC00ODU3LDYgKzQ4OTQsMTkgQEAgaW5saW5lX3NldF9yZXR1cm5p bmdfZnVuY3Rpb24oUGxhbm5lckluZm8gKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAlp ZiAobGlzdF9sZW5ndGgocXVlcnl0cmVlX2xpc3QpICE9IDEpCiAJCWdvdG8gZmFpbDsKIAlx dWVyeXRyZWUgPSBsaW5pdGlhbChxdWVyeXRyZWVfbGlzdCk7CisJfQorCisJLyoKKwkgKiBB bHNvIHJlc29sdmUgdGhlIGFjdHVhbCBmdW5jdGlvbiByZXN1bHQgdHVwZGVzYywgaWYgY29t cG9zaXRlLiAgSWYgdGhlCisJICogZnVuY3Rpb24gaXMganVzdCBkZWNsYXJlZCB0byByZXR1 cm4gUkVDT1JELCBkaWcgdGhlIGluZm8gb3V0IG9mIHRoZSBBUworCSAqIGNsYXVzZS4KKwkg Ki8KKwlmdW5jdHlwY2xhc3MgPSBnZXRfZXhwcl9yZXN1bHRfdHlwZSgoTm9kZSAqKSBmZXhw ciwgTlVMTCwgJnJldHR1cGRlc2MpOworCWlmIChmdW5jdHlwY2xhc3MgPT0gVFlQRUZVTkNf UkVDT1JEKQorCQlyZXR0dXBkZXNjID0gQnVpbGREZXNjRnJvbUxpc3RzKHJ0ZnVuYy0+ZnVu Y2NvbG5hbWVzLAorCQkJCQkJCQkJCXJ0ZnVuYy0+ZnVuY2NvbHR5cGVzLAorCQkJCQkJCQkJ CXJ0ZnVuYy0+ZnVuY2NvbHR5cG1vZHMsCisJCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sY29s bGF0aW9ucyk7CiAKIAkvKgogCSAqIFRoZSBzaW5nbGUgY29tbWFuZCBtdXN0IGJlIGEgcGxh aW4gU0VMRUNULgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggNWRlMTMwNzU3MC4uNDdlYTQ3 M2Y4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1TZXRPcGVyYXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCwKIAkJCQkJCQkJCSAgIGJvb2wgaXNUb3BMZXZlbCwgTGlzdCAqKnRh cmdldGxpc3QpOwogc3RhdGljIHZvaWQgZGV0ZXJtaW5lUmVjdXJzaXZlQ29sVHlwZXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJICAgTm9kZSAqbGFyZywgTGlzdCAqbnJ0YXJn ZXRsaXN0KTsKK3N0YXRpYyBRdWVyeSAqdHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIFJldHVyblN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1V cGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCk7CiBzdGF0 aWMgTGlzdCAqdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExp c3QgKnJldHVybmluZ0xpc3QpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdl dExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMzA4LDYgKzMwOSwxMCBAQCB0cmFuc2Zv cm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJfQogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX1JldHVyblN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1S ZXR1cm5TdG10KHBzdGF0ZSwgKFJldHVyblN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJyZWFr OworCiAJCWNhc2UgVF9QTEFzc2lnblN0bXQ6CiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1QTEFz c2lnblN0bXQocHN0YXRlLAogCQkJCQkJCQkJCSAgIChQTEFzc2lnblN0bXQgKikgcGFyc2VU cmVlKTsKQEAgLTIyMjksNiArMjIzNCwzNiBAQCBkZXRlcm1pbmVSZWN1cnNpdmVDb2xUeXBl cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhcmcsIExpc3QgKm5ydGFyZ2V0bGlzdCkK IH0KIAogCisvKgorICogdHJhbnNmb3JtUmV0dXJuU3RtdCAtCisgKgkgIHRyYW5zZm9ybXMg YSByZXR1cm4gc3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1SZXR1 cm5TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmV0dXJuU3RtdCAqc3RtdCkKK3sKKwlRdWVy eQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOworCisJcXJ5LT5jb21tYW5kVHlwZSA9IENN RF9TRUxFQ1Q7CisJcXJ5LT5pc1JldHVybiA9IHRydWU7CisKKwlxcnktPnRhcmdldExpc3Qg PSBsaXN0X21ha2UxKG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgc3RtdC0+cmV0dXJudmFsLCBFWFBSX0tJTkRfU0VMRUNUX1RBUkdFVCksCisJCQkJ CQkJCQkJCQkgMSwgTlVMTCwgZmFsc2UpKTsKKworCWlmIChwc3RhdGUtPnBfcmVzb2x2ZV91 bmtub3ducykKKwkJcmVzb2x2ZVRhcmdldExpc3RVbmtub3ducyhwc3RhdGUsIHFyeS0+dGFy Z2V0TGlzdCk7CisJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOworCXFyeS0+am9p bnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKwlxcnkt Pmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFzV2luZG93 RnVuY3MgPSBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3M7CisJcXJ5LT5oYXNUYXJnZXRTUkZz ID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXJ5LT5oYXNBZ2dzID0gcHN0YXRlLT5w X2hhc0FnZ3M7CisKKwlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CisK KwlyZXR1cm4gcXJ5OworfQorCisKIC8qCiAgKiB0cmFuc2Zvcm1VcGRhdGVTdG10IC0KICAq CSAgdHJhbnNmb3JtcyBhbiB1cGRhdGUgc3RhdGVtZW50CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA4 YjFiYWQwZDc5Li5hYWU4OWFiNzM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI2Miw3ICsyNjIs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCXN0cnVjdCBHcm91cENsYXVzZSAg Kmdyb3VwY2xhdXNlOwogfQogCi0ldHlwZSA8bm9kZT4Jc3RtdCBzY2hlbWFfc3RtdAorJXR5 cGUgPG5vZGU+CXN0bXQgdG9wbGV2ZWxfc3RtdCBzY2hlbWFfc3RtdCByb3V0aW5lX2JvZHlf c3RtdAogCQlBbHRlckV2ZW50VHJpZ1N0bXQKIAkJQWx0ZXJEYXRhYmFzZVN0bXQgQWx0ZXJE YXRhYmFzZVNldFN0bXQgQWx0ZXJEb21haW5TdG10IEFsdGVyRW51bVN0bXQKIAkJQWx0ZXJG ZHdTdG10IEFsdGVyRm9yZWlnblNlcnZlclN0bXQgQWx0ZXJHcm91cFN0bXQKQEAgLTI4OSw5 ICsyODksOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlHcmFudFN0bXQgR3Jh bnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJbmRleFN0bXQgSW5zZXJ0U3Rt dAogCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFi bGVTdG10IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0 aW9uU3RtdCBSZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAotCQlSZW1vdmVGdW5jU3RtdCBS ZW1vdmVPcGVyU3RtdCBSZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKKwkJ UmVtb3ZlRnVuY1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3RtdCBSZXR1cm5TdG10IFJl dm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQgUnVsZUFjdGlvblN0 bXRPckVtcHR5IFJ1bGVTdG10Ci0JCVNlY0xhYmVsU3RtdCBTZWxlY3RTdG10IFRyYW5zYWN0 aW9uU3RtdCBUcnVuY2F0ZVN0bXQKKwkJU2VjTGFiZWxTdG10IFNlbGVjdFN0bXQgVHJhbnNh Y3Rpb25TdG10IFRyYW5zYWN0aW9uU3RtdExlZ2FjeSBUcnVuY2F0ZVN0bXQKIAkJVW5saXN0 ZW5TdG10IFVwZGF0ZVN0bXQgVmFjdXVtU3RtdAogCQlWYXJpYWJsZVJlc2V0U3RtdCBWYXJp YWJsZVNldFN0bXQgVmFyaWFibGVTaG93U3RtdAogCQlWaWV3U3RtdCBDaGVja1BvaW50U3Rt dCBDcmVhdGVDb252ZXJzaW9uU3RtdApAQCAtMzk1LDE0ICszOTUsMTQgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YWN1dW1fcmVsYXRpb24KICV0eXBl IDxzZWxlY3RsaW1pdD4gb3B0X3NlbGVjdF9saW1pdCBzZWxlY3RfbGltaXQgbGltaXRfY2xh dXNlCiAKLSV0eXBlIDxsaXN0PglwYXJzZV90b3BsZXZlbCBzdG10bXVsdGkKKyV0eXBlIDxs aXN0PglwYXJzZV90b3BsZXZlbCBzdG10bXVsdGkgcm91dGluZV9ib2R5X3N0bXRfbGlzdAog CQkJCU9wdFRhYmxlRWxlbWVudExpc3QgVGFibGVFbGVtZW50TGlzdCBPcHRJbmhlcml0IGRl ZmluaXRpb24KIAkJCQlPcHRUeXBlZFRhYmxlRWxlbWVudExpc3QgVHlwZWRUYWJsZUVsZW1l bnRMaXN0CiAJCQkJcmVsb3B0aW9ucyBvcHRfcmVsb3B0aW9ucwogCQkJCU9wdFdpdGggb3B0 X2RlZmluaXRpb24gZnVuY19hcmdzIGZ1bmNfYXJnc19saXN0CiAJCQkJZnVuY19hcmdzX3dp dGhfZGVmYXVsdHMgZnVuY19hcmdzX3dpdGhfZGVmYXVsdHNfbGlzdAogCQkJCWFnZ3JfYXJn cyBhZ2dyX2FyZ3NfbGlzdAotCQkJCWZ1bmNfYXMgY3JlYXRlZnVuY19vcHRfbGlzdCBhbHRl cmZ1bmNfb3B0X2xpc3QKKwkJCQlmdW5jX2FzIGNyZWF0ZWZ1bmNfb3B0X2xpc3Qgb3B0X2Ny ZWF0ZWZ1bmNfb3B0X2xpc3QgYWx0ZXJmdW5jX29wdF9saXN0CiAJCQkJb2xkX2FnZ3JfZGVm aW5pdGlvbiBvbGRfYWdncl9saXN0CiAJCQkJb3Blcl9hcmd0eXBlcyBSdWxlQWN0aW9uTGlz dCBSdWxlQWN0aW9uTXVsdGkKIAkJCQlvcHRfY29sdW1uX2xpc3QgY29sdW1uTGlzdCBvcHRf bmFtZV9saXN0CkBAIC00MjgsNiArNDI4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QK IAkJCQlkcm9wX29wdGlvbl9saXN0CiAKKyV0eXBlIDxub2RlPglvcHRfcm91dGluZV9ib2R5 CiAldHlwZSA8Z3JvdXBjbGF1c2U+IGdyb3VwX2NsYXVzZQogJXR5cGUgPGxpc3Q+CWdyb3Vw X2J5X2xpc3QKICV0eXBlIDxub2RlPglncm91cF9ieV9pdGVtIGVtcHR5X2dyb3VwaW5nX3Nl dCByb2xsdXBfY2xhdXNlIGN1YmVfY2xhdXNlCkBAIC02MzcsNyArNjM4LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIC8qIG9yZGluYXJ5IGtleSB3b3JkcyBpbiBhbHBoYWJl dGljYWwgb3JkZXIgKi8KICV0b2tlbiA8a2V5d29yZD4gQUJPUlRfUCBBQlNPTFVURV9QIEFD Q0VTUyBBQ1RJT04gQUREX1AgQURNSU4gQUZURVIKIAlBR0dSRUdBVEUgQUxMIEFMU08gQUxU RVIgQUxXQVlTIEFOQUxZU0UgQU5BTFlaRSBBTkQgQU5ZIEFSUkFZIEFTIEFTQwotCUFTU0VS VElPTiBBU1NJR05NRU5UIEFTWU1NRVRSSUMgQVQgQVRUQUNIIEFUVFJJQlVURSBBVVRIT1JJ WkFUSU9OCisJQVNTRVJUSU9OIEFTU0lHTk1FTlQgQVNZTU1FVFJJQyBBVCBBVE9NSUMgQVRU QUNIIEFUVFJJQlVURSBBVVRIT1JJWkFUSU9OCiAKIAlCQUNLV0FSRCBCRUZPUkUgQkVHSU5f UCBCRVRXRUVOIEJJR0lOVCBCSU5BUlkgQklUCiAJQk9PTEVBTl9QIEJPVEggQlJFQURUSCBC WQpAQCAtNjk5LDcgKzcwMCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKIAlS QU5HRSBSRUFEIFJFQUwgUkVBU1NJR04gUkVDSEVDSyBSRUNVUlNJVkUgUkVGIFJFRkVSRU5D RVMgUkVGRVJFTkNJTkcKIAlSRUZSRVNIIFJFSU5ERVggUkVMQVRJVkVfUCBSRUxFQVNFIFJF TkFNRSBSRVBFQVRBQkxFIFJFUExBQ0UgUkVQTElDQQotCVJFU0VUIFJFU1RBUlQgUkVTVFJJ Q1QgUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJPTEUgUk9MTEJBQ0sgUk9MTFVQ CisJUkVTRVQgUkVTVEFSVCBSRVNUUklDVCBSRVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVW T0tFIFJJR0hUIFJPTEUgUk9MTEJBQ0sgUk9MTFVQCiAJUk9VVElORSBST1VUSU5FUyBST1cg Uk9XUyBSVUxFCiAKIAlTQVZFUE9JTlQgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBT RUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QgU0VRVUVOQ0UgU0VRVUVOQ0VTCkBAIC04NjksNyAr ODcwLDcgQEAgcGFyc2VfdG9wbGV2ZWw6CiAgKiB3ZSdkIGdldCAtMSBmb3IgdGhlIGxvY2F0 aW9uIGluIHN1Y2ggY2FzZXMuCiAgKiBXZSBhbHNvIHRha2UgY2FyZSB0byBkaXNjYXJkIGVt cHR5IHN0YXRlbWVudHMgZW50aXJlbHkuCiAgKi8KLXN0bXRtdWx0aToJc3RtdG11bHRpICc7 JyBzdG10CitzdG10bXVsdGk6CXN0bXRtdWx0aSAnOycgdG9wbGV2ZWxfc3RtdAogCQkJCXsK IAkJCQkJaWYgKCQxICE9IE5JTCkKIAkJCQkJewpAQCAtODgxLDcgKzg4Miw3IEBAIHN0bXRt dWx0aToJc3RtdG11bHRpICc7JyBzdG10CiAJCQkJCWVsc2UKIAkJCQkJCSQkID0gJDE7CiAJ CQkJfQotCQkJfCBzdG10CisJCQl8IHRvcGxldmVsX3N0bXQKIAkJCQl7CiAJCQkJCWlmICgk MSAhPSBOVUxMKQogCQkJCQkJJCQgPSBsaXN0X21ha2UxKG1ha2VSYXdTdG10KCQxLCAwKSk7 CkBAIC04OTAsNyArODkxLDE2IEBAIHN0bXRtdWx0aToJc3RtdG11bHRpICc7JyBzdG10CiAJ CQkJfQogCQk7CiAKLXN0bXQgOgorLyoKKyAqIHRvcGxldmVsX3N0bXQgaW5jbHVkZXMgQkVH SU4gYW5kIEVORC4gIHN0bXQgZG9lcyBub3QgaW5jbHVkZSB0aGVtLCBiZWNhdXNlCisgKiB0 aG9zZSB3b3JkcyBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncyBpbiBmdW5jdGlvbiBib2R5cy4K KyAqLwordG9wbGV2ZWxfc3RtdDoKKwkJCXN0bXQKKwkJCXwgVHJhbnNhY3Rpb25TdG10TGVn YWN5CisJCTsKKworc3RtdDoKIAkJCUFsdGVyRXZlbnRUcmlnU3RtdAogCQkJfCBBbHRlckRh dGFiYXNlU3RtdAogCQkJfCBBbHRlckRhdGFiYXNlU2V0U3RtdApAQCAtNzQ3Nyw3ICs3NDg3 LDcgQEAgb3B0X251bGxzX29yZGVyOiBOVUxMU19MQSBGSVJTVF9QCQkJeyAkJCA9IFNPUlRC WV9OVUxMU19GSVJTVDsgfQogCiBDcmVhdGVGdW5jdGlvblN0bXQ6CiAJCQlDUkVBVEUgb3B0 X29yX3JlcGxhY2UgRlVOQ1RJT04gZnVuY19uYW1lIGZ1bmNfYXJnc193aXRoX2RlZmF1bHRz Ci0JCQlSRVRVUk5TIGZ1bmNfcmV0dXJuIGNyZWF0ZWZ1bmNfb3B0X2xpc3QKKwkJCVJFVFVS TlMgZnVuY19yZXR1cm4gb3B0X2NyZWF0ZWZ1bmNfb3B0X2xpc3Qgb3B0X3JvdXRpbmVfYm9k eQogCQkJCXsKIAkJCQkJQ3JlYXRlRnVuY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl RnVuY3Rpb25TdG10KTsKIAkJCQkJbi0+aXNfcHJvY2VkdXJlID0gZmFsc2U7CkBAIC03NDg2 LDEwICs3NDk2LDExIEBAIENyZWF0ZUZ1bmN0aW9uU3RtdDoKIAkJCQkJbi0+cGFyYW1ldGVy cyA9ICQ1OwogCQkJCQluLT5yZXR1cm5UeXBlID0gJDc7CiAJCQkJCW4tPm9wdGlvbnMgPSAk ODsKKwkJCQkJbi0+c3FsX2JvZHkgPSAkOTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJ fQogCQkJfCBDUkVBVEUgb3B0X29yX3JlcGxhY2UgRlVOQ1RJT04gZnVuY19uYW1lIGZ1bmNf YXJnc193aXRoX2RlZmF1bHRzCi0JCQkgIFJFVFVSTlMgVEFCTEUgJygnIHRhYmxlX2Z1bmNf Y29sdW1uX2xpc3QgJyknIGNyZWF0ZWZ1bmNfb3B0X2xpc3QKKwkJCSAgUkVUVVJOUyBUQUJM RSAnKCcgdGFibGVfZnVuY19jb2x1bW5fbGlzdCAnKScgb3B0X2NyZWF0ZWZ1bmNfb3B0X2xp c3Qgb3B0X3JvdXRpbmVfYm9keQogCQkJCXsKIAkJCQkJQ3JlYXRlRnVuY3Rpb25TdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlRnVuY3Rpb25TdG10KTsKIAkJCQkJbi0+aXNfcHJvY2VkdXJl ID0gZmFsc2U7CkBAIC03NDk5LDEwICs3NTEwLDExIEBAIENyZWF0ZUZ1bmN0aW9uU3RtdDoK IAkJCQkJbi0+cmV0dXJuVHlwZSA9IFRhYmxlRnVuY1R5cGVOYW1lKCQ5KTsKIAkJCQkJbi0+ cmV0dXJuVHlwZS0+bG9jYXRpb24gPSBANzsKIAkJCQkJbi0+b3B0aW9ucyA9ICQxMTsKKwkJ CQkJbi0+c3FsX2JvZHkgPSAkMTI7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJ CXwgQ1JFQVRFIG9wdF9vcl9yZXBsYWNlIEZVTkNUSU9OIGZ1bmNfbmFtZSBmdW5jX2FyZ3Nf d2l0aF9kZWZhdWx0cwotCQkJICBjcmVhdGVmdW5jX29wdF9saXN0CisJCQkgIG9wdF9jcmVh dGVmdW5jX29wdF9saXN0IG9wdF9yb3V0aW5lX2JvZHkKIAkJCQl7CiAJCQkJCUNyZWF0ZUZ1 bmN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZUZ1bmN0aW9uU3RtdCk7CiAJCQkJCW4t PmlzX3Byb2NlZHVyZSA9IGZhbHNlOwpAQCAtNzUxMSwxMCArNzUyMywxMSBAQCBDcmVhdGVG dW5jdGlvblN0bXQ6CiAJCQkJCW4tPnBhcmFtZXRlcnMgPSAkNTsKIAkJCQkJbi0+cmV0dXJu VHlwZSA9IE5VTEw7CiAJCQkJCW4tPm9wdGlvbnMgPSAkNjsKKwkJCQkJbi0+c3FsX2JvZHkg PSAkNzsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQogCQkJfCBDUkVBVEUgb3B0X29y X3JlcGxhY2UgUFJPQ0VEVVJFIGZ1bmNfbmFtZSBmdW5jX2FyZ3Nfd2l0aF9kZWZhdWx0cwot CQkJICBjcmVhdGVmdW5jX29wdF9saXN0CisJCQkgIG9wdF9jcmVhdGVmdW5jX29wdF9saXN0 IG9wdF9yb3V0aW5lX2JvZHkKIAkJCQl7CiAJCQkJCUNyZWF0ZUZ1bmN0aW9uU3RtdCAqbiA9 IG1ha2VOb2RlKENyZWF0ZUZ1bmN0aW9uU3RtdCk7CiAJCQkJCW4tPmlzX3Byb2NlZHVyZSA9 IHRydWU7CkBAIC03NTIzLDYgKzc1MzYsNyBAQCBDcmVhdGVGdW5jdGlvblN0bXQ6CiAJCQkJ CW4tPnBhcmFtZXRlcnMgPSAkNTsKIAkJCQkJbi0+cmV0dXJuVHlwZSA9IE5VTEw7CiAJCQkJ CW4tPm9wdGlvbnMgPSAkNjsKKwkJCQkJbi0+c3FsX2JvZHkgPSAkNzsKIAkJCQkJJCQgPSAo Tm9kZSAqKW47CiAJCQkJfQogCQk7CkBAIC03ODMzLDYgKzc4NDcsMTEgQEAgYWdncmVnYXRl X3dpdGhfYXJndHlwZXNfbGlzdDoKIAkJCQkJCQkJCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwg JDMpOyB9CiAJCTsKIAorb3B0X2NyZWF0ZWZ1bmNfb3B0X2xpc3Q6CisJCQljcmVhdGVmdW5j X29wdF9saXN0CisJCQl8IC8qRU1QVFkqLyB7ICQkID0gTklMOyB9CisJOworCiBjcmVhdGVm dW5jX29wdF9saXN0OgogCQkJLyogTXVzdCBiZSBhdCBsZWFzdCBvbmUgdG8gcHJldmVudCBj b25mbGljdCAqLwogCQkJY3JlYXRlZnVuY19vcHRfaXRlbQkJCQkJCXsgJCQgPSBsaXN0X21h a2UxKCQxKTsgfQpAQCAtNzk0NCw2ICs3OTYzLDUxIEBAIGZ1bmNfYXM6CVNjb25zdAkJCQkJ CXsgJCQgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoJDEpKTsgfQogCQkJCX0KIAkJOwogCitS ZXR1cm5TdG10OglSRVRVUk4gYV9leHByCisJCQkJeworCQkJCQlSZXR1cm5TdG10ICpyID0g bWFrZU5vZGUoUmV0dXJuU3RtdCk7CisJCQkJCXItPnJldHVybnZhbCA9IChOb2RlICopICQy OworCQkJCQkkJCA9IChOb2RlICopIHI7CisJCQkJfQorCQk7CisKK29wdF9yb3V0aW5lX2Jv ZHk6CisJCQlSZXR1cm5TdG10CisJCQkJeworCQkJCQkkJCA9ICQxOworCQkJCX0KKwkJCXwg QkVHSU5fUCBBVE9NSUMgcm91dGluZV9ib2R5X3N0bXRfbGlzdCBFTkRfUAorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogQSBjb21wb3VuZCBzdGF0ZW1lbnQgaXMgc3RvcmVkIGFzIGEgc2lu Z2xlLWl0ZW0gbGlzdAorCQkJCQkgKiBjb250YWluaW5nIHRoZSBsaXN0IG9mIHN0YXRlbWVu dHMgYXMgaXRzIG1lbWJlci4gIFRoYXQKKwkJCQkJICogd2F5LCB0aGUgcGFyc2UgYW5hbHlz aXMgY29kZSBjYW4gdGVsbCBhcGFydCBhbiBlbXB0eQorCQkJCQkgKiBib2R5IGZyb20gbm8g Ym9keSBhdCBhbGwuCisJCQkJCSAqLworCQkJCQkkJCA9IChOb2RlICopIGxpc3RfbWFrZTEo JDMpOworCQkJCX0KKwkJCXwgLypFTVBUWSovCisJCQkJeworCQkJCQkkJCA9IE5VTEw7CisJ CQkJfQorCQk7CisKK3JvdXRpbmVfYm9keV9zdG10X2xpc3Q6CisJCQlyb3V0aW5lX2JvZHlf c3RtdF9saXN0IHJvdXRpbmVfYm9keV9zdG10ICc7JworCQkJCXsKKwkJCQkJJCQgPSBsYXBw ZW5kKCQxLCAkMik7CisJCQkJfQorCQkJfCAvKkVNUFRZKi8KKwkJCQl7CisJCQkJCSQkID0g TklMOworCQkJCX0KKwkJOworCityb3V0aW5lX2JvZHlfc3RtdDoKKwkJCXN0bXQKKwkJCXwg UmV0dXJuU3RtdAorCQk7CisKIHRyYW5zZm9ybV90eXBlX2xpc3Q6CiAJCQlGT1IgVFlQRV9Q IFR5cGVuYW1lIHsgJCQgPSBsaXN0X21ha2UxKCQzKTsgfQogCQkJfCB0cmFuc2Zvcm1fdHlw ZV9saXN0ICcsJyBGT1IgVFlQRV9QIFR5cGVuYW1lIHsgJCQgPSBsYXBwZW5kKCQxLCAkNSk7 IH0KQEAgLTk4NzcsMTMgKzk5NDEsNiBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCQkJCW4tPmNo YWluID0gJDM7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgQkVHSU5fUCBv cHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5Ci0JCQkJewot CQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwot CQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKLQkJCQkJbi0+b3B0aW9ucyA9ICQz OwotCQkJCQkkJCA9IChOb2RlICopbjsKLQkJCQl9CiAJCQl8IFNUQVJUIFRSQU5TQUNUSU9O IHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rp b25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKQEAgLTk4OTksMTQgKzk5 NTYsNiBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCQkJCW4tPmNoYWluID0gJDM7CiAJCQkJCSQk ID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgRU5EX1Agb3B0X3RyYW5zYWN0aW9uIG9wdF90 cmFuc2FjdGlvbl9jaGFpbgotCQkJCXsKLQkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFr ZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKLQkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfQ09N TUlUOwotCQkJCQluLT5vcHRpb25zID0gTklMOwotCQkJCQluLT5jaGFpbiA9ICQzOwotCQkJ CQkkJCA9IChOb2RlICopbjsKLQkJCQl9CiAJCQl8IFJPTExCQUNLIG9wdF90cmFuc2FjdGlv biBvcHRfdHJhbnNhY3Rpb25fY2hhaW4KIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAq biA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CkBAIC05OTczLDYgKzEwMDIyLDI0IEBA IFRyYW5zYWN0aW9uU3RtdDoKIAkJCQl9CiAJCTsKIAorVHJhbnNhY3Rpb25TdG10TGVnYWN5 OgorCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29y X2VtcHR5CisJCQkJeworCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFu c2FjdGlvblN0bXQpOworCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKKwkJCQkJ bi0+b3B0aW9ucyA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IEVO RF9QIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJhbnNhY3Rpb25fY2hhaW4KKwkJCQl7CisJCQkJ CVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CisJCQkJ CW4tPmtpbmQgPSBUUkFOU19TVE1UX0NPTU1JVDsKKwkJCQkJbi0+b3B0aW9ucyA9IE5JTDsK KwkJCQkJbi0+Y2hhaW4gPSAkMzsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQk7 CisKIG9wdF90cmFuc2FjdGlvbjoJV09SSwogCQkJfCBUUkFOU0FDVElPTgogCQkJfCAvKkVN UFRZKi8KQEAgLTE1NDA3LDYgKzE1NDc0LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJ fCBBU1NFUlRJT04KIAkJCXwgQVNTSUdOTUVOVAogCQkJfCBBVAorCQkJfCBBVE9NSUMKIAkJ CXwgQVRUQUNICiAJCQl8IEFUVFJJQlVURQogCQkJfCBCQUNLV0FSRApAQCAtMTU2MDksNiAr MTU2NzcsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFJFU0VUCiAJCQl8IFJFU1RB UlQKIAkJCXwgUkVTVFJJQ1QKKwkJCXwgUkVUVVJOCiAJCQl8IFJFVFVSTlMKIAkJCXwgUkVW T0tFCiAJCQl8IFJPTEUKQEAgLTE1OTE1LDYgKzE1OTg0LDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBBU1NJR05NRU5UCiAJCQl8IEFTWU1NRVRSSUMKIAkJCXwgQVQKKwkJCXwg QVRPTUlDCiAJCQl8IEFUVEFDSAogCQkJfCBBVFRSSUJVVEUKIAkJCXwgQVVUSE9SSVpBVElP TgpAQCAtMTYxODksNiArMTYyNTksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFJF U0VUCiAJCQl8IFJFU1RBUlQKIAkJCXwgUkVTVFJJQ1QKKwkJCXwgUkVUVVJOCiAJCQl8IFJF VFVSTlMKIAkJCXwgUkVWT0tFCiAJCQl8IFJJR0hUCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXgg MmIxYjY4MTA5Zi4uZDNkOThiYTY0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTg4LDcg KzE4OCw2IEBAIHN0YXRpYyBpbnQJaW50ZXJhY3RpdmVfZ2V0Yyh2b2lkKTsKIHN0YXRpYyBp bnQJU29ja2V0QmFja2VuZChTdHJpbmdJbmZvIGluQnVmKTsKIHN0YXRpYyBpbnQJUmVhZENv bW1hbmQoU3RyaW5nSW5mbyBpbkJ1Zik7CiBzdGF0aWMgdm9pZCBmb3JiaWRkZW5faW5fd2Fs X3NlbmRlcihjaGFyIGZpcnN0Y2hhcik7Ci1zdGF0aWMgTGlzdCAqcGdfcmV3cml0ZV9xdWVy eShRdWVyeSAqcXVlcnkpOwogc3RhdGljIGJvb2wgY2hlY2tfbG9nX3N0YXRlbWVudChMaXN0 ICpzdG10X2xpc3QpOwogc3RhdGljIGludAllcnJkZXRhaWxfZXhlY3V0ZShMaXN0ICpyYXdf cGFyc2V0cmVlX2xpc3QpOwogc3RhdGljIGludAllcnJkZXRhaWxfcGFyYW1zKFBhcmFtTGlz dEluZm8gcGFyYW1zKTsKQEAgLTcwNyw3ICs3MDYsNyBAQCBwZ19hbmFseXplX2FuZF9yZXdy aXRlX3BhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsCiAgKiBOb3RlOiBxdWVyeSBtdXN0IGp1 c3QgaGF2ZSBjb21lIGZyb20gdGhlIHBhcnNlciwgYmVjYXVzZSB3ZSBkbyBub3QgZG8KICAq IEFjcXVpcmVSZXdyaXRlTG9ja3MoKSBvbiBpdC4KICAqLwotc3RhdGljIExpc3QgKgorTGlz dCAqCiBwZ19yZXdyaXRlX3F1ZXJ5KFF1ZXJ5ICpxdWVyeSkKIHsKIAlMaXN0CSAgICpxdWVy eXRyZWVfbGlzdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAyNTRlOGYz MDUwLi5jMDgzYmRlMTY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0x NzIsNiArMTcyLDEwIEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqb3V0ZXJfdGxpc3Q7 CS8qIHJlZmVyZW50IGZvciBPVVRFUl9WQVIgVmFycyAqLwogCUxpc3QJICAgKmlubmVyX3Rs aXN0OwkvKiByZWZlcmVudCBmb3IgSU5ORVJfVkFSIFZhcnMgKi8KIAlMaXN0CSAgICppbmRl eF90bGlzdDsJLyogcmVmZXJlbnQgZm9yIElOREVYX1ZBUiBWYXJzICovCisJLyogU3BlY2lh bCBuYW1lc3BhY2UgcmVwcmVzZW50aW5nIGEgZnVuY3Rpb24gc2lnbmF0dXJlOiAqLworCWNo YXIJICAgKmZ1bmNuYW1lOworCWludAkJCW51bWFyZ3M7CisJY2hhcgkgICoqYXJnbmFtZXM7 CiB9IGRlcGFyc2VfbmFtZXNwYWNlOwogCiAvKgpAQCAtMzQ4LDYgKzM1Miw3IEBAIHN0YXRp YyBpbnQJcHJpbnRfZnVuY3Rpb25fYXJndW1lbnRzKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVw bGUgcHJvY3R1cCwKIAkJCQkJCQkJCSBib29sIHByaW50X3RhYmxlX2FyZ3MsIGJvb2wgcHJp bnRfZGVmYXVsdHMpOwogc3RhdGljIHZvaWQgcHJpbnRfZnVuY3Rpb25fcmV0dHlwZShTdHJp bmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApOwogc3RhdGljIHZvaWQgcHJpbnRfZnVu Y3Rpb25fdHJmdHlwZXMoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVwKTsKK3N0 YXRpYyB2b2lkIHByaW50X2Z1bmN0aW9uX3NxbGJvZHkoU3RyaW5nSW5mbyBidWYsIEhlYXBU dXBsZSBwcm9jdHVwKTsKIHN0YXRpYyB2b2lkIHNldF9ydGFibGVfbmFtZXMoZGVwYXJzZV9u YW1lc3BhY2UgKmRwbnMsIExpc3QgKnBhcmVudF9uYW1lc3BhY2VzLAogCQkJCQkJCSBCaXRt YXBzZXQgKnJlbHNfdXNlZCk7CiBzdGF0aWMgdm9pZCBzZXRfZGVwYXJzZV9mb3JfcXVlcnko ZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMsIFF1ZXJ5ICpxdWVyeSwKQEAgLTI5NjgsNiArMjk3 MywxMyBAQCBwZ19nZXRfZnVuY3Rpb25kZWYoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAkv KiBBbmQgZmluYWxseSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiAuLi4gKi8KKwl0bXAgPSBT eXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY3R1cCwgQW51bV9wZ19wcm9jX3Byb3NxbGJv ZHksICZpc251bGwpOworCWlmIChwcm9jLT5wcm9sYW5nID09IFNRTGxhbmd1YWdlSWQgJiYg IWlzbnVsbCkKKwl7CisJCXByaW50X2Z1bmN0aW9uX3NxbGJvZHkoJmJ1ZiwgcHJvY3R1cCk7 CisJfQorCWVsc2UKKwl7CiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiQVMgIik7 CiAKIAl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY3R1cCwgQW51bV9wZ19w cm9jX3Byb2JpbiwgJmlzbnVsbCk7CkBAIC0yOTk5LDYgKzMwMTEsNyBAQCBwZ19nZXRfZnVu Y3Rpb25kZWYoUEdfRlVOQ1RJT05fQVJHUykKIAlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZi dWYsIGRxLmRhdGEsIGRxLmxlbik7CiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCBw cm9zcmMpOwogCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJmJ1ZiwgZHEuZGF0YSwgZHEubGVu KTsKKwl9CiAKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnXG4nKTsKIApAQCAtMzM4 Miw2ICszMzk1LDg0IEBAIHBnX2dldF9mdW5jdGlvbl9hcmdfZGVmYXVsdChQR19GVU5DVElP Tl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQoc3RyKSk7CiB9CiAK K3N0YXRpYyB2b2lkCitwcmludF9mdW5jdGlvbl9zcWxib2R5KFN0cmluZ0luZm8gYnVmLCBI ZWFwVHVwbGUgcHJvY3R1cCkKK3sKKwlpbnQJCQludW1hcmdzOworCU9pZAkJICAgKmFyZ3R5 cGVzOworCWNoYXIJICAqKmFyZ25hbWVzOworCWNoYXIJICAgKmFyZ21vZGVzOworCWRlcGFy c2VfbmFtZXNwYWNlIGRwbnMgPSB7MH07CisJRGF0dW0JCXRtcDsKKwlib29sCQlpc251bGw7 CisJTm9kZQkgICAqbjsKKworCWRwbnMuZnVuY25hbWUgPSBwc3RyZHVwKE5hbWVTdHIoKChG b3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jdHVwKSktPnByb25hbWUpKTsKKwludW1hcmdz ID0gZ2V0X2Z1bmNfYXJnX2luZm8ocHJvY3R1cCwKKwkJCQkJCQkJJmFyZ3R5cGVzLCAmYXJn bmFtZXMsICZhcmdtb2Rlcyk7CisJZHBucy5udW1hcmdzID0gbnVtYXJnczsKKwlkcG5zLmFy Z25hbWVzID0gYXJnbmFtZXM7CisKKwl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwg cHJvY3R1cCwgQW51bV9wZ19wcm9jX3Byb3NxbGJvZHksICZpc251bGwpOworCUFzc2VydCgh aXNudWxsKTsKKwluID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcodG1wKSk7 CisKKwlpZiAoSXNBKG4sIExpc3QpKQorCXsKKwkJTGlzdAkgICAqc3RtdHM7CisJCUxpc3RD ZWxsICAgKmxjOworCisJCXN0bXRzID0gbGluaXRpYWwoY2FzdE5vZGUoTGlzdCwgbikpOwor CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiQkVHSU4gQVRPTUlDXG4iKTsKKwor CQlmb3JlYWNoKGxjLCBzdG10cykKKwkJeworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gbGZpcnN0 X25vZGUoUXVlcnksIGxjKTsKKworCQkJZ2V0X3F1ZXJ5X2RlZihxdWVyeSwgYnVmLCBsaXN0 X21ha2UxKCZkcG5zKSwgTlVMTCwgUFJFVFRZRkxBR19JTkRFTlQsIFdSQVBfQ09MVU1OX0RF RkFVTFQsIDEpOworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnOycpOworCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsKKwkJfQorCisJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiRU5EIik7CisJfQorCWVsc2UKKwl7CisJCWdldF9xdWVyeV9kZWYo Y2FzdE5vZGUoUXVlcnksIG4pLCBidWYsIGxpc3RfbWFrZTEoJmRwbnMpLCBOVUxMLCBQUkVU VFlGTEFHX0lOREVOVCwgV1JBUF9DT0xVTU5fREVGQVVMVCwgMSk7CisJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJfQorfQorCitEYXR1bQorcGdfZ2V0X2Z1bmN0aW9u X3NxbGJvZHkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlmdW5jaWQgPSBQR19HRVRB UkdfT0lEKDApOworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlIZWFwVHVwbGUJcHJvY3R1cDsK Kwlib29sCQlpc251bGw7CisKKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKworCS8qIExvb2sg dXAgdGhlIGZ1bmN0aW9uICovCisJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lE LCBPYmplY3RJZEdldERhdHVtKGZ1bmNpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChw cm9jdHVwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVN5c0NhY2hlR2V0QXR0cihQUk9D T0lELCBwcm9jdHVwLCBBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSwgJmlzbnVsbCk7CisJaWYg KGlzbnVsbCkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShwcm9jdHVwKTsKKwkJUEdfUkVUVVJO X05VTEwoKTsKKwl9CisKKwlwcmludF9mdW5jdGlvbl9zcWxib2R5KCZidWYsIHByb2N0dXAp OworCisJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCisJUEdfUkVUVVJOX1RFWFRfUChj c3RyaW5nX3RvX3RleHQoYnVmLmRhdGEpKTsKK30KKwogCiAvKgogICogZGVwYXJzZV9leHBy ZXNzaW9uCQkJLSBHZW5lcmFsIHV0aWxpdHkgZm9yIGRlcGFyc2luZyBleHByZXNzaW9ucwpA QCAtNTYzNyw3ICs1NzI4LDEwIEBAIGdldF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1 ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJLyoKIAkgKiBCdWlsZCB1cCB0aGUg cXVlcnkgc3RyaW5nIC0gZmlyc3Qgd2Ugc2F5IFNFTEVDVAogCSAqLwotCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiU0VMRUNUIik7CisJaWYgKHF1ZXJ5LT5pc1JldHVybikKKwkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJSRVRVUk4iKTsKKwllbHNlCisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiU0VMRUNUIik7CiAKIAkvKiBBZGQgdGhlIERJU1RJ TkNUIGNsYXVzZSBpZiBnaXZlbiAqLwogCWlmIChxdWVyeS0+ZGlzdGluY3RDbGF1c2UgIT0g TklMKQpAQCAtNzc3MSw2ICs3ODY1LDUwIEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFt LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAq IElmIGl0J3MgYW4gZXh0ZXJuYWwgcGFyYW1ldGVyLCBzZWUgaWYgdGhlIG91dGVybW9zdCBu YW1lc3BhY2UgcHJvdmlkZXMKKwkgKiBmdW5jdGlvbiBhcmd1bWVudCBuYW1lcy4KKwkgKi8K KwlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pCisJeworCQlkcG5zID0g bGZpcnN0KGxpc3RfdGFpbChjb250ZXh0LT5uYW1lc3BhY2VzKSk7CisJCWlmIChkcG5zLT5h cmduYW1lcykKKwkJeworCQkJY2hhcgkgICAqYXJnbmFtZSA9IGRwbnMtPmFyZ25hbWVzW3Bh cmFtLT5wYXJhbWlkIC0gMV07CisKKwkJCWlmIChhcmduYW1lKQorCQkJeworCQkJCWJvb2wJ CXNob3VsZF9xdWFsaWZ5ID0gZmFsc2U7CisJCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCQkv KgorCQkJCSAqIFF1YWxpZnkgdGhlIHBhcmFtZXRlciBuYW1lIGlmIHRoZXJlIGFyZSBhbnkg b3RoZXIgZGVwYXJzZQorCQkJCSAqIG5hbWVzcGFjZXMgd2l0aCByYW5nZSB0YWJsZXMuICBU aGlzIGF2b2lkcyBxdWFsaWZ5aW5nIGluCisJCQkJICogdHJpdmlhbCBjYXNlcyBsaWtlICJS RVRVUk4gYSArIGIiLCBidXQgbWFrZXMgaXQgc2FmZSBpbiBhbGwKKwkJCQkgKiBvdGhlciBj YXNlcy4KKwkJCQkgKi8KKwkJCQlmb3JlYWNoKGxjLCBjb250ZXh0LT5uYW1lc3BhY2VzKQor CQkJCXsKKwkJCQkJZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMgPSBsZmlyc3QobGMpOworCisJ CQkJCWlmIChsaXN0X2xlbmd0aChkcG5zLT5ydGFibGVfbmFtZXMpID4gMCkKKwkJCQkJewor CQkJCQkJc2hvdWxkX3F1YWxpZnkgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJ CQl9CisJCQkJaWYgKHNob3VsZF9xdWFsaWZ5KQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhjb250ZXh0LT5idWYsIHF1b3RlX2lkZW50aWZpZXIoZHBucy0+ZnVuY25h bWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnLicpOwor CQkJCX0KKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+YnVmLCBxdW90 ZV9pZGVudGlmaWVyKGFyZ25hbWUpKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisK IAkvKgogCSAqIE5vdCBQQVJBTV9FWEVDLCBvciBjb3VsZG4ndCBmaW5kIHJlZmVyZW50OiBq dXN0IHByaW50ICROLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMjU3MTdjZTBlNi4uZDBl YTQ4OTYxNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMjEyOCw2ICsxMjEyOCw3IEBAIGR1bXBG dW5jKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEZ1bmNJbmZvICpmaW5mbykKIAljaGFyCSAgICpw cm9yZXRzZXQ7CiAJY2hhcgkgICAqcHJvc3JjOwogCWNoYXIJICAgKnByb2JpbjsKKwljaGFy CSAgICpwcm9zcWxib2R5OwogCWNoYXIJICAgKmZ1bmNhcmdzOwogCWNoYXIJICAgKmZ1bmNp YXJnczsKIAljaGFyCSAgICpmdW5jcmVzdWx0OwpAQCAtMTIxNzQsNyArMTIxNzUsNyBAQCBk dW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAJCQkJCQkg InByb3ZvbGF0aWxlLFxuIgogCQkJCQkJICJwcm9pc3N0cmljdCxcbiIKIAkJCQkJCSAicHJv c2VjZGVmLFxuIgotCQkJCQkJICIoU0VMRUNUIGxhbm5hbWUgRlJPTSBwZ19jYXRhbG9nLnBn X2xhbmd1YWdlIFdIRVJFIG9pZCA9IHByb2xhbmcpIEFTIGxhbm5hbWUsXG4iKTsKKwkJCQkJ CSAibGFubmFtZSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gODAzMDAp CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtMTIxOTQsOSArMTIxOTUsOSBA QCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAJCSAq IHBnX2dldF9mdW5jdGlvbl9yZXN1bHQgaW5zdGVhZCBvZiBleGFtaW5pbmcgcHJvYWxsYXJn dHlwZXMgZXRjLgogCQkgKi8KIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJ CQkJICJwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9hcmd1bWVudHMob2lkKSBBUyBmdW5j YXJncyxcbiIKLQkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5 X2FyZ3VtZW50cyhvaWQpIEFTIGZ1bmNpYXJncyxcbiIKLQkJCQkJCQkgInBnX2NhdGFsb2cu cGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChvaWQpIEFTIGZ1bmNyZXN1bHQsXG4iKTsKKwkJCQkJ CQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2FyZ3VtZW50cyhwLm9pZCkgQVMgZnVu Y2FyZ3MsXG4iCisJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0 eV9hcmd1bWVudHMocC5vaWQpIEFTIGZ1bmNpYXJncyxcbiIKKwkJCQkJCQkgInBnX2NhdGFs b2cucGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChwLm9pZCkgQVMgZnVuY3Jlc3VsdCxcbiIpOwog CX0KIAllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDgwMTAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTEyMjM5LDIxICsxMjI0MCwzOSBAQCBkdW1wRnVu YyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAKIAlpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxMjAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAotCQkJCQkJCSAicHJvc3VwcG9ydFxuIik7CisJCQkJCQkJICJwcm9zdXBwb3J0LFxuIik7 CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgIictJyBB UyBwcm9zdXBwb3J0XG4iKTsKKwkJCQkJCQkgIictJyBBUyBwcm9zdXBwb3J0LFxuIik7CisK KwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiQ0FTRSBXSEVOIHByb3NyYyBJUyBOVUxMIEFORCBs YW5uYW1lID0gJ3NxbCcgVEhFTiBwZ19nZXRfZnVuY3Rpb25fc3FsYm9keShwLm9pZCkgRU5E IEFTIHByb3NxbGJvZHlcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCisJCQkJCQkJICJOVUxMIEFTIHByb3NxbGJvZHlcbiIpOwogCiAJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksCi0JCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wcm9jICIKLQkJCQkJ ICAiV0hFUkUgb2lkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQiLAorCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHJvYyBwLCBwZ19jYXRhbG9nLnBnX2xhbmd1YWdlIGxcbiIKKwkJCQkJ ICAiV0hFUkUgcC5vaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJCQkJCSAgIkFORCBs Lm9pZCA9IHAucHJvbGFuZyIsCiAJCQkJCSAgZmluZm8tPmRvYmouY2F0SWQub2lkKTsKIAog CXJlcyA9IEV4ZWN1dGVTcWxRdWVyeUZvclNpbmdsZVJvdyhmb3V0LCBxdWVyeS0+ZGF0YSk7 CiAKIAlwcm9yZXRzZXQgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInBy b3JldHNldCIpKTsKLQlwcm9zcmMgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJl cywgInByb3NyYyIpKTsKLQlwcm9iaW4gPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVy KHJlcywgInByb2JpbiIpKTsKKwlpZiAoUFFnZXRpc251bGwocmVzLCAwLCBQUWZudW1iZXIo cmVzLCAicHJvc3FsYm9keSIpKSkKKwl7CisJCXByb3NyYyA9IFBRZ2V0dmFsdWUocmVzLCAw LCBQUWZudW1iZXIocmVzLCAicHJvc3JjIikpOworCQlwcm9iaW4gPSBQUWdldHZhbHVlKHJl cywgMCwgUFFmbnVtYmVyKHJlcywgInByb2JpbiIpKTsKKwkJcHJvc3FsYm9keSA9IE5VTEw7 CisJfQorCWVsc2UKKwl7CisJCXByb3NyYyA9IE5VTEw7CisJCXByb2JpbiA9IE5VTEw7CisJ CXByb3NxbGJvZHkgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb3Nx bGJvZHkiKSk7CisJfQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDgwNDAwKQogCXsK IAkJZnVuY2FyZ3MgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgImZ1bmNh cmdzIikpOwpAQCAtMTIyOTAsNyArMTIzMDksMTEgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91 dCwgY29uc3QgRnVuY0luZm8gKmZpbmZvKQogCSAqIHZlcnNpb25zIHdvdWxkIHNldCBpdCB0 byAiLSIuICBUaGVyZSBhcmUgbm8ga25vd24gY2FzZXMgaW4gd2hpY2ggcHJvc3JjCiAJICog aXMgdW51c2VkLCBzbyB0aGUgdGVzdHMgYmVsb3cgZm9yICItIiBhcmUgcHJvYmFibHkgdXNl bGVzcy4KIAkgKi8KLQlpZiAocHJvYmluWzBdICE9ICdcMCcgJiYgc3RyY21wKHByb2Jpbiwg Ii0iKSAhPSAwKQorCWlmIChwcm9zcWxib2R5KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoYXNQYXJ0LCBwcm9zcWxib2R5KTsKKwl9CisJZWxzZSBpZiAocHJvYmluWzBdICE9ICdc MCcgJiYgc3RyY21wKHByb2JpbiwgIi0iKSAhPSAwKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoYXNQYXJ0LCAiQVMgIik7CiAJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChhc1BhcnQs IHByb2JpbiwgZm91dCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDQ0MDI0OWZmNjkuLjUyZjdiMmNlNzgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC01MDUsMTEgKzUwNSwxOCBAQCBkZXNjcmliZUZ1bmN0aW9ucyhj b25zdCBjaGFyICpmdW5jdHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSwgYm9vbAogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICIpOwogCQlwcmlu dEFDTENvbHVtbigmYnVmLCAicC5wcm9hY2wiKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKLQkJCQkJCSAgIixcbiBsLmxhbm5hbWUgYXMgXCIlc1wiIgotCQkJCQkJICAiLFxuIHAu cHJvc3JjIGFzIFwiJXNcIiIKKwkJCQkJCSAgIixcbiBsLmxhbm5hbWUgYXMgXCIlc1wiIiwK KwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJMYW5ndWFnZSIpKTsKKwkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTQwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICIs XG4gQ09BTEVTQ0UocC5wcm9zcmMsIHBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX3NxbGJv ZHkocC5vaWQpKSBhcyBcIiVzXCIiLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTb3VyY2Ug Y29kZSIpKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkg ICIsXG4gcC5wcm9zcmMgYXMgXCIlc1wiIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiU291 cmNlIGNvZGUiKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICIsXG4g cGdfY2F0YWxvZy5vYmpfZGVzY3JpcHRpb24ocC5vaWQsICdwZ19wcm9jJykgYXMgXCIlc1wi IiwKLQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJMYW5ndWFnZSIpLAotCQkJCQkJICBnZXR0ZXh0 X25vb3AoIlNvdXJjZSBjb2RlIiksCiAJCQkJCQkgIGdldHRleHRfbm9vcCgiRGVzY3JpcHRp b24iKSk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcHNxbHNjYW4ubCBiL3Ny Yy9mZV91dGlscy9wc3Fsc2Nhbi5sCmluZGV4IDIxNmZmMzA5OTMuLjRlYzU3ZTk2YTkgMTAw NjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sCisrKyBiL3NyYy9mZV91dGlscy9w c3Fsc2Nhbi5sCkBAIC02NDUsMTAgKzY0NSwxMSBAQCBvdGhlcgkJCS4KIAogIjsiCQkJCXsK IAkJCQkJRUNITzsKLQkJCQkJaWYgKGN1cl9zdGF0ZS0+cGFyZW5fZGVwdGggPT0gMCkKKwkJ CQkJaWYgKGN1cl9zdGF0ZS0+cGFyZW5fZGVwdGggPT0gMCAmJiBjdXJfc3RhdGUtPmJlZ2lu X2RlcHRoID09IDApCiAJCQkJCXsKIAkJCQkJCS8qIFRlcm1pbmF0ZSBsZXhpbmcgdGVtcG9y YXJpbHkgKi8KIAkJCQkJCWN1cl9zdGF0ZS0+c3RhcnRfc3RhdGUgPSBZWV9TVEFSVDsKKwkJ CQkJCWN1cl9zdGF0ZS0+aWRlbnRpZmllcl9jb3VudCA9IDA7CiAJCQkJCQlyZXR1cm4gTEVY UkVTX1NFTUk7CiAJCQkJCX0KIAkJCQl9CkBAIC02NjEsNiArNjYyLDggQEAgb3RoZXIJCQku CiAiXFwiWzs6XQkJewogCQkJCQkvKiBGb3JjZSBhIHNlbWktY29sb24gb3IgY29sb24gaW50 byB0aGUgcXVlcnkgYnVmZmVyICovCiAJCQkJCXBzcWxzY2FuX2VtaXQoY3VyX3N0YXRlLCB5 eXRleHQgKyAxLCAxKTsKKwkJCQkJaWYgKHl5dGV4dFsxXSA9PSAnOycpCisJCQkJCQljdXJf c3RhdGUtPmlkZW50aWZpZXJfY291bnQgPSAwOwogCQkJCX0KIAogIlxcIgkJCXsKQEAgLTg2 Nyw2ICs4NzAsMTggQEAgb3RoZXIJCQkuCiAKIAoge2lkZW50aWZpZXJ9CXsKKwkJCQkJY3Vy X3N0YXRlLT5pZGVudGlmaWVyX2NvdW50Kys7CisJCQkJCWlmIChwZ19zdHJjYXNlY21wKHl5 dGV4dCwgImJlZ2luIikgPT0gMAorCQkJCQkJfHwgcGdfc3RyY2FzZWNtcCh5eXRleHQsICJj YXNlIikgPT0gMCkKKwkJCQkJeworCQkJCQkJaWYgKGN1cl9zdGF0ZS0+aWRlbnRpZmllcl9j b3VudCA+IDEpCisJCQkJCQkJY3VyX3N0YXRlLT5iZWdpbl9kZXB0aCsrOworCQkJCQl9CisJ CQkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoeXl0ZXh0LCAiZW5kIikgPT0gMCkKKwkJCQkJ eworCQkJCQkJaWYgKGN1cl9zdGF0ZS0+YmVnaW5fZGVwdGggPiAwKQorCQkJCQkJCWN1cl9z dGF0ZS0+YmVnaW5fZGVwdGgtLTsKKwkJCQkJfQogCQkJCQlFQ0hPOwogCQkJCX0KIApAQCAt MTA1NCw2ICsxMDY5LDExIEBAIHBzcWxfc2NhbihQc3FsU2NhblN0YXRlIHN0YXRlLAogCQkJ CQkJcmVzdWx0ID0gUFNDQU5fSU5DT01QTEVURTsKIAkJCQkJCSpwcm9tcHQgPSBQUk9NUFRf UEFSRU47CiAJCQkJCX0KKwkJCQkJaWYgKHN0YXRlLT5iZWdpbl9kZXB0aCA+IDApCisJCQkJ CXsKKwkJCQkJCXJlc3VsdCA9IFBTQ0FOX0lOQ09NUExFVEU7CisJCQkJCQkqcHJvbXB0ID0g UFJPTVBUX0NPTlRJTlVFOworCQkJCQl9CiAJCQkJCWVsc2UgaWYgKHF1ZXJ5X2J1Zi0+bGVu ID4gMCkKIAkJCQkJewogCQkJCQkJcmVzdWx0ID0gUFNDQU5fRU9MOwpAQCAtMTE3MCw2ICsx MTkwLDggQEAgcHNxbF9zY2FuX3Jlc2V0KFBzcWxTY2FuU3RhdGUgc3RhdGUpCiAJaWYgKHN0 YXRlLT5kb2xxc3RhcnQpCiAJCWZyZWUoc3RhdGUtPmRvbHFzdGFydCk7CiAJc3RhdGUtPmRv bHFzdGFydCA9IE5VTEw7CisJc3RhdGUtPmlkZW50aWZpZXJfY291bnQgPSAwOworCXN0YXRl LT5iZWdpbl9kZXB0aCA9IDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCA2OWZmZDBjM2Y0Li4yMDAwYmM3NTYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTM3MDMsNiArMzcwMywxMCBAQAogICBwcm9uYW1lID0+ICdwZ19nZXRfZnVuY3Rp b25fYXJnX2RlZmF1bHQnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4g J3RleHQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkIGludDQnLAogICBwcm9zcmMgPT4gJ3BnX2dl dF9mdW5jdGlvbl9hcmdfZGVmYXVsdCcgfSwKK3sgb2lkID0+ICc5NzA0JywgZGVzY3IgPT4g J2Z1bmN0aW9uIFNRTCBib2R5JywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X2Z1bmN0aW9uX3Nx bGJvZHknLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ3RleHQnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19nZXRfZnVuY3Rpb25fc3Fs Ym9keScgfSwKIAogeyBvaWQgPT4gJzE2ODYnLCBkZXNjciA9PiAnbGlzdCBvZiBTUUwga2V5 d29yZHMnLAogICBwcm9uYW1lID0+ICdwZ19nZXRfa2V5d29yZHMnLCBwcm9jb3N0ID0+ICcx MCcsIHByb3Jvd3MgPT4gJzUwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCmluZGV4IDc4ZjIz MDg5NGIuLjhkNTgwNjdkMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCkBAIC0xMTIsMTEg KzExMiwxNCBAQCBDQVRBTE9HKHBnX3Byb2MsMTI1NSxQcm9jZWR1cmVSZWxhdGlvbklkKSBC S0lfQk9PVFNUUkFQIEJLSV9ST1dUWVBFX09JRCg4MSxQcm9jZQogCU9pZAkJCXByb3RyZnR5 cGVzWzFdIEJLSV9ERUZBVUxUKF9udWxsXykgQktJX0xPT0tVUChwZ190eXBlKTsKIAogCS8q IHByb2NlZHVyZSBzb3VyY2UgdGV4dCAqLwotCXRleHQJCXByb3NyYyBCS0lfRk9SQ0VfTk9U X05VTEw7CisJdGV4dAkJcHJvc3JjOwogCiAJLyogc2Vjb25kYXJ5IHByb2NlZHVyZSBpbmZv IChjYW4gYmUgTlVMTCkgKi8KIAl0ZXh0CQlwcm9iaW4gQktJX0RFRkFVTFQoX251bGxfKTsK IAorCS8qIHByZS1wYXJzZWQgU1FMIGZ1bmN0aW9uIGJvZHkgKi8KKwlwZ19ub2RlX3RyZWUg cHJvc3FsYm9keSBCS0lfREVGQVVMVChfbnVsbF8pOworCiAJLyogcHJvY2VkdXJlLWxvY2Fs IEdVQyBzZXR0aW5ncyAqLwogCXRleHQJCXByb2NvbmZpZ1sxXSBCS0lfREVGQVVMVChfbnVs bF8pOwogCkBAIC0xOTQsNiArMTk3LDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgUHJvY2Vk dXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJCQkJCQkJCQkgT2lkIGxh bmd1YWdlVmFsaWRhdG9yLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByb3NyYywKIAkJCQkJ CQkJCSBjb25zdCBjaGFyICpwcm9iaW4sCisJCQkJCQkJCQkgTm9kZSAqcHJvc3FsYm9keSwK IAkJCQkJCQkJCSBjaGFyIHByb2tpbmQsCiAJCQkJCQkJCQkgYm9vbCBzZWN1cml0eV9kZWZp bmVyLAogCQkJCQkJCQkJIGJvb2wgaXNMZWFrUHJvb2YsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5o CmluZGV4IDMzOWYyOWY0YzguLjZiY2U0ZDc2ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5o CkBAIC02NSw5ICs2NSwxMSBAQCBleHRlcm4gdm9pZCBpbnRlcnByZXRfZnVuY3Rpb25fcGFy YW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkgIE9pZCBsYW5n dWFnZU9pZCwKIAkJCQkJCQkJCQkJICBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQkJCQkJ CSAgb2lkdmVjdG9yICoqcGFyYW1ldGVyVHlwZXMsCisJCQkJCQkJCQkJCSAgTGlzdCAqKnBh cmFtZXRlclR5cGVzX2xpc3QsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBlICoqYWxsUGFyYW1l dGVyVHlwZXMsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBlICoqcGFyYW1ldGVyTW9kZXMsCiAJ CQkJCQkJCQkJCSAgQXJyYXlUeXBlICoqcGFyYW1ldGVyTmFtZXMsCisJCQkJCQkJCQkJCSAg TGlzdCAqKmluUGFyYW1ldGVyTmFtZXNfbGlzdCwKIAkJCQkJCQkJCQkJICBMaXN0ICoqcGFy YW1ldGVyRGVmYXVsdHMsCiAJCQkJCQkJCQkJCSAgT2lkICp2YXJpYWRpY0FyZ1R5cGUsCiAJ CQkJCQkJCQkJCSAgT2lkICpyZXF1aXJlZFJlc3VsdFR5cGUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZnVuY3Rpb25zLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9m dW5jdGlvbnMuaAppbmRleCBjOTc1YTkzNjYxLi5kY2I4ZTE4NDM3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9mdW5jdGlvbnMuaApAQCAtMjAsNiArMjAsMjEgQEAKIC8qIFRoaXMgc3RydWN0IGlz IGtub3duIG9ubHkgd2l0aGluIGV4ZWN1dG9yL2Z1bmN0aW9ucy5jICovCiB0eXBlZGVmIHN0 cnVjdCBTUUxGdW5jdGlvblBhcnNlSW5mbyAqU1FMRnVuY3Rpb25QYXJzZUluZm9QdHI7CiAK Ky8qCisgKiBEYXRhIHN0cnVjdHVyZSBuZWVkZWQgYnkgdGhlIHBhcnNlciBjYWxsYmFjayBo b29rcyB0byByZXNvbHZlIHBhcmFtZXRlcgorICogcmVmZXJlbmNlcyBkdXJpbmcgcGFyc2lu ZyBvZiBhIFNRTCBmdW5jdGlvbidzIGJvZHkuICBUaGlzIGlzIHNlcGFyYXRlIGZyb20KKyAq IFNRTEZ1bmN0aW9uQ2FjaGUgc2luY2Ugd2Ugc29tZXRpbWVzIGRvIHBhcnNpbmcgc2VwYXJh dGVseSBmcm9tIGV4ZWN1dGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU1FMRnVuY3Rpb25Q YXJzZUluZm8KK3sKKwljaGFyCSAgICpmbmFtZTsJCQkvKiBmdW5jdGlvbidzIG5hbWUgKi8K KwlpbnQJCQluYXJnczsJCQkvKiBudW1iZXIgb2YgaW5wdXQgYXJndW1lbnRzICovCisJT2lk CQkgICAqYXJndHlwZXM7CQkvKiByZXNvbHZlZCB0eXBlcyBvZiBpbnB1dCBhcmd1bWVudHMg Ki8KKwljaGFyCSAgKiphcmduYW1lczsJCS8qIG5hbWVzIG9mIGlucHV0IGFyZ3VtZW50czsg TlVMTCBpZiBub25lICovCisJLyogTm90ZSB0aGF0IGFyZ25hbWVzW2ldIGNhbiBiZSBOVUxM LCBpZiBzb21lIGFyZ3MgYXJlIHVubmFtZWQgKi8KKwlPaWQJCQljb2xsYXRpb247CQkvKiBm dW5jdGlvbidzIGlucHV0IGNvbGxhdGlvbiwgaWYga25vd24gKi8KK30JCQlTUUxGdW5jdGlv blBhcnNlSW5mbzsKKwogZXh0ZXJuIERhdHVtIGZtZ3Jfc3FsKFBHX0ZVTkNUSU9OX0FSR1Mp OwogCiBleHRlcm4gU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIgcHJlcGFyZV9zcWxfZm5fcGFy c2VfaW5mbyhIZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9mZV91dGlscy9wc3Fsc2Nhbl9pbnQuaCBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3Bz cWxzY2FuX2ludC5oCmluZGV4IDJiYzNjYzRhZTcuLjkxZDdkNGQ1YzYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCisrKyBiL3NyYy9pbmNsdWRl L2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCkBAIC0xMTQsNiArMTE0LDggQEAgdHlwZWRlZiBz dHJ1Y3QgUHNxbFNjYW5TdGF0ZURhdGEKIAlpbnQJCQlwYXJlbl9kZXB0aDsJLyogZGVwdGgg b2YgbmVzdGluZyBpbiBwYXJlbnRoZXNlcyAqLwogCWludAkJCXhjZGVwdGg7CQkvKiBkZXB0 aCBvZiBuZXN0aW5nIGluIHNsYXNoLXN0YXIgY29tbWVudHMgKi8KIAljaGFyCSAgICpkb2xx c3RhcnQ7CQkvKiBjdXJyZW50ICRmb28kIHF1b3RlIHN0YXJ0IHN0cmluZyAqLworCWludAkJ CWlkZW50aWZpZXJfY291bnQ7CS8qIGlkZW50aWZpZXJzIHNpbmNlIHN0YXJ0IG9mIHN0YXRl bWVudCAqLworCWludAkJCWJlZ2luX2RlcHRoOwkvKiBkZXB0aCBvZiBiZWdpbi9lbmQgcm91 dGluZSBib2R5IGJsb2NrcyAqLwogCiAJLyoKIAkgKiBDYWxsYmFjayBmdW5jdGlvbnMgcHJv dmlkZWQgYnkgdGhlIHByb2dyYW0gbWFraW5nIHVzZSBvZiB0aGUgbGV4ZXIsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9k ZXMuaAppbmRleCAyMDUxYWJiYmY5Li5kOWU0MTdiY2Q3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAg LTMyMSw2ICszMjEsNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfRGVsZXRlU3RtdCwK IAlUX1VwZGF0ZVN0bXQsCiAJVF9TZWxlY3RTdG10LAorCVRfUmV0dXJuU3RtdCwKIAlUX1BM QXNzaWduU3RtdCwKIAlUX0FsdGVyVGFibGVTdG10LAogCVRfQWx0ZXJUYWJsZUNtZCwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3OTYwY2ZlMWE4Li4xNGQwMmE4YWIzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNDAsNiArMTQwLDggQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnkKIAlib29sCQloYXNGb3JVcGRhdGU7CS8qIEZPUiBbS0VZXSBVUERBVEUvU0hB UkUgd2FzIHNwZWNpZmllZCAqLwogCWJvb2wJCWhhc1Jvd1NlY3VyaXR5OyAvKiByZXdyaXRl ciBoYXMgYXBwbGllZCBzb21lIFJMUyBwb2xpY3kgKi8KIAorCWJvb2wJCWlzUmV0dXJuOwkJ LyogaXMgYSBSRVRVUk4gc3RhdGVtZW50ICovCisKIAlMaXN0CSAgICpjdGVMaXN0OwkJLyog V0lUSCBsaXN0IChvZiBDb21tb25UYWJsZUV4cHIncykgKi8KIAogCUxpc3QJICAgKnJ0YWJs ZTsJCQkvKiBsaXN0IG9mIHJhbmdlIHRhYmxlIGVudHJpZXMgKi8KQEAgLTE3MjEsNiArMTcy MywxNiBAQCB0eXBlZGVmIHN0cnVjdCBTZXRPcGVyYXRpb25TdG10CiB9IFNldE9wZXJhdGlv blN0bXQ7CiAKIAorLyoKKyAqIFJFVFVSTiBzdGF0ZW1lbnQgKGluc2lkZSBTUUwgZnVuY3Rp b24gYm9keSkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmV0dXJuU3RtdAoreworCU5vZGVUYWcJ CXR5cGU7CisJTm9kZQkgICAqcmV0dXJudmFsOworfSBSZXR1cm5TdG10OworCisKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlQTC9wZ1NRTCBBc3NpZ25tZW50IFN0YXRlbWVu dAogICoKQEAgLTI5MjMsNiArMjkzNSw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZUZ1bmN0 aW9uU3RtdAogCUxpc3QJICAgKnBhcmFtZXRlcnM7CQkvKiBhIGxpc3Qgb2YgRnVuY3Rpb25Q YXJhbWV0ZXIgKi8KIAlUeXBlTmFtZSAgICpyZXR1cm5UeXBlOwkJLyogdGhlIHJldHVybiB0 eXBlICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIGEgbGlzdCBvZiBEZWZFbGVtICovCisJ Tm9kZQkgICAqc3FsX2JvZHk7CiB9IENyZWF0ZUZ1bmN0aW9uU3RtdDsKIAogdHlwZWRlZiBl bnVtIEZ1bmN0aW9uUGFyYW1ldGVyTW9kZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDRiYmU1 M2U4NTIuLmE1Zjg0ZDQzZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQ4LDYgKzQ4LDcg QEAgUEdfS0VZV09SRCgiYXNzZXJ0aW9uIiwgQVNTRVJUSU9OLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhc3NpZ25tZW50IiwgQVNTSUdOTUVOVCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiYXN5bW1ldHJp YyIsIEFTWU1NRVRSSUMsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJhdCIsIEFULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJhdG9taWMiLCBBVE9NSUMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImF0dGFjaCIsIEFUVEFDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgiYXR0cmlidXRlIiwgQVRUUklCVVRFLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhdXRob3JpemF0aW9uIiwgQVVU SE9SSVpBVElPTiwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTM0 OCw2ICszNDksNyBAQCBQR19LRVlXT1JEKCJyZXBsaWNhIiwgUkVQTElDQSwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVzZXQiLCBSRVNFVCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVzdGFydCIsIFJF U1RBUlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJl c3RyaWN0IiwgUkVTVFJJQ1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BH X0tFWVdPUkQoInJldHVybiIsIFJFVFVSTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicmV0dXJuaW5nIiwgUkVUVVJOSU5HLCBSRVNFUlZFRF9LRVlX T1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVybnMiLCBSRVRVUk5TLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZXZva2UiLCBSRVZPS0Us IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAppbmRl eCBlNTQ3MjEwMGE0Li40OTcwMGQxNTFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29w L3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCkBAIC00Myw2 ICs0Myw3IEBAIHR5cGVkZWYgZW51bQogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dfc3Rh dGVtZW50OwogCiBleHRlcm4gTGlzdCAqcGdfcGFyc2VfcXVlcnkoY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nKTsKK2V4dGVybiBMaXN0ICpwZ19yZXdyaXRlX3F1ZXJ5KFF1ZXJ5ICpxdWVy eSk7CiBleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShSYXdTdG10ICpwYXJz ZXRyZWUsCiAJCQkJCQkJCQljb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQlP aWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJhbXMsCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9lY3BnL3ByZXByb2MvZWNwZy5hZGRvbnMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3By ZXByb2MvZWNwZy5hZGRvbnMKaW5kZXggOTc0Y2UwNTY2NC4uYjZlMzQxMmNlZiAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcuYWRkb25zCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmFkZG9ucwpAQCAtODksNiArODksMTIg QEAgRUNQRzogc3RtdFRyYW5zYWN0aW9uU3RtdCBibG9jawogCQl3aGVuZXZlcl9hY3Rpb24o Mik7CiAJCWZyZWUoJDEpOwogCX0KK0VDUEc6IHRvcGxldmVsX3N0bXRUcmFuc2FjdGlvblN0 bXRMZWdhY3kgYmxvY2sKKwl7CisJCWZwcmludGYoYmFzZV95eW91dCwgInsgRUNQR3RyYW5z KF9fTElORV9fLCAlcywgXCIlc1wiKTsiLCBjb25uZWN0aW9uID8gY29ubmVjdGlvbiA6ICJO VUxMIiwgJDEpOworCQl3aGVuZXZlcl9hY3Rpb24oMik7CisJCWZyZWUoJDEpOworCX0KIEVD UEc6IHN0bXRWaWV3U3RtdCBydWxlCiAJfCBFQ1BHQWxsb2NhdGVEZXNjcgogCXsKZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIgYi9zcmMv aW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFpbGVyCmluZGV4IGQ2OTllMGFiYmYu LjM2MDBkN2M2MDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLnRyYWlsZXIKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJh aWxlcgpAQCAtNCw4ICs0LDggQEAgc3RhdGVtZW50czogLypFTVBUWSovCiAJCQkJfCBzdGF0 ZW1lbnRzIHN0YXRlbWVudAogCQk7CiAKLXN0YXRlbWVudDogZWNwZ3N0YXJ0IGF0IHN0bXQg JzsnIHsgY29ubmVjdGlvbiA9IE5VTEw7IH0KLQkJCQl8IGVjcGdzdGFydCBzdG10ICc7Jwor c3RhdGVtZW50OiBlY3Bnc3RhcnQgYXQgdG9wbGV2ZWxfc3RtdCAnOycgeyBjb25uZWN0aW9u ID0gTlVMTDsgfQorCQkJCXwgZWNwZ3N0YXJ0IHRvcGxldmVsX3N0bXQgJzsnCiAJCQkJfCBl Y3Bnc3RhcnQgRUNQR1ZhckRlY2xhcmF0aW9uCiAJCQkJewogCQkJCQlmcHJpbnRmKGJhc2Vf eXlvdXQsICIlcyIsICQyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY3JlYXRlX2Z1bmN0aW9uXzMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j cmVhdGVfZnVuY3Rpb25fMy5vdXQKaW5kZXggZjI1YTQwN2ZkZC4uZWRiNThiNmFkMCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rpb25fMy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rpb25fMy5v dXQKQEAgLTI1NSw2ICsyNTUsMTc5IEBAIFNFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1 bmN0ZXN0X0ZfMic6OnJlZ3Byb2MpOwogIAogKDEgcm93KQogCistLQorLS0gU1FMLXN0YW5k YXJkIGJvZHkKKy0tCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18xKGEgdGV4dCwgYiBk YXRlKSBSRVRVUk5TIGJvb2xlYW4KKyAgICBMQU5HVUFHRSBTUUwKKyAgICBSRVRVUk4gYSA9 ICdhYmNkJyBBTkQgYiA+ICcyMDAxLTAxLTAxJzsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVz dF9TXzIoYSB0ZXh0W10pIFJFVFVSTlMgaW50CisgICAgUkVUVVJOIGFbMV06OmludDsKK0NS RUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzMoKSBSRVRVUk5TIGJvb2xlYW4KKyAgICBSRVRV Uk4gZmFsc2U7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18zYSgpIFJFVFVSTlMgYm9v bGVhbgorICAgIEJFR0lOIEFUT01JQworICAgICAgICBSRVRVUk4gZmFsc2U7CisgICAgRU5E OworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTAoYSB0ZXh0LCBiIGRhdGUpIFJFVFVS TlMgYm9vbGVhbgorICAgIExBTkdVQUdFIFNRTAorICAgIEJFR0lOIEFUT01JQworICAgICAg ICBTRUxFQ1QgYSA9ICdhYmNkJyBBTkQgYiA+ICcyMDAxLTAxLTAxJzsKKyAgICBFTkQ7CitD UkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18xMygpIFJFVFVSTlMgYm9vbGVhbgorICAgIEJF R0lOIEFUT01JQworICAgICAgICBTRUxFQ1QgMTsKKyAgICAgICAgU0VMRUNUIGZhbHNlOwor ICAgIEVORDsKKy0tIGVycm9yOiBkdXBsaWNhdGUgZnVuY3Rpb24gYm9keQorQ1JFQVRFIEZV TkNUSU9OIGZ1bmN0ZXN0X1NfeHh4KHggaW50KSBSRVRVUk5TIGludAorICAgIExBTkdVQUdF IFNRTAorICAgIEFTICQkIFNFTEVDVCB4ICogMiAkJAorICAgIFJFVFVSTiB4ICogMzsKK0VS Uk9SOiAgZHVwbGljYXRlIGZ1bmN0aW9uIGJvZHkgc3BlY2lmaWVkCistLSBwb2x5bW9ycGhp YyBhcmd1bWVudHMgbm90IGFsbG93ZWQgaW4gdGhpcyBmb3JtCitDUkVBVEUgRlVOQ1RJT04g ZnVuY3Rlc3RfU194eCh4IGFueWFycmF5KSBSRVRVUk5TIGFueWVsZW1lbnQKKyAgICBMQU5H VUFHRSBTUUwKKyAgICBSRVRVUk4geFsxXTsKK0VSUk9SOiAgU1FMIGZ1bmN0aW9uIHdpdGgg dW5xdW90ZWQgZnVuY3Rpb24gYm9keSBjYW5ub3QgaGF2ZSBwb2x5bW9ycGhpYyBhcmd1bWVu dHMKKy0tIHRyaWNreSBwYXJzaW5nCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18xNSh4 IGludCkgUkVUVVJOUyBib29sZWFuCitMQU5HVUFHRSBTUUwKK0JFR0lOIEFUT01JQworICAg IHNlbGVjdCBjYXNlIHdoZW4geCAlIDIgPSAwIHRoZW4gdHJ1ZSBlbHNlIGZhbHNlIGVuZDsK K0VORDsKK1NFTEVDVCBmdW5jdGVzdF9TXzEoJ2FiY2QnLCAnMjAyMC0wMS0wMScpOworIGZ1 bmN0ZXN0X3NfMSAKKy0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgZnVu Y3Rlc3RfU18yKEFSUkFZWycxJywgJzInLCAnMyddKTsKKyBmdW5jdGVzdF9zXzIgCistLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgZnVuY3Rlc3Rf U18zKCk7CisgZnVuY3Rlc3Rfc18zIAorLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisK K1NFTEVDVCBmdW5jdGVzdF9TXzEwKCdhYmNkJywgJzIwMjAtMDEtMDEnKTsKKyBmdW5jdGVz dF9zXzEwIAorLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgZnVuY3Rl c3RfU18xMygpOworIGZ1bmN0ZXN0X3NfMTMgCistLS0tLS0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfMSc6OnJlZ3By b2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1bmN0aW9uZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiB0ZW1wX2Z1bmNfdGVzdC5mdW5jdGVzdF9zXzEoYSB0ZXh0 LCBiIGRhdGUpKworICBSRVRVUk5TIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgIExBTkdVQUdFIHNxbCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg UkVUVVJOICgoYSA9ICdhYmNkJzo6dGV4dCkgQU5EIChiID4gJzAxLTAxLTIwMDEnOjpkYXRl KSkgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgCisoMSByb3cpCisKK1NF TEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfMic6OnJlZ3Byb2MpOworICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1bmN0aW9uZGVmICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0 ZW1wX2Z1bmNfdGVzdC5mdW5jdGVzdF9zXzIoYSB0ZXh0W10pKworICBSRVRVUk5TIGludGVn ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg IExBTkdVQUdFIHNxbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgUkVUVVJOICgoYSlbMV0pOjppbnRlZ2VyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgCisoMSByb3cpCisK K1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfMyc6OnJlZ3Byb2MpOwor ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0 LmZ1bmN0ZXN0X3NfMygpKworICBSRVRVUk5TIGJvb2xlYW4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICBMQU5HVUFHRSBzcWwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBSRVRVUk4gZmFsc2UgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzNhJzo6cmVncHJvYyk7 CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9mdW5jdGlvbmRlZiAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZW1wX2Z1bmNf dGVzdC5mdW5jdGVzdF9zXzNhKCkrCisgIFJFVFVSTlMgYm9vbGVhbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBMQU5HVUFHRSBzcWwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBCRUdJTiBBVE9NSUMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgIFJFVFVSTiBm YWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEVO RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3Rf U18xMCc6OnJlZ3Byb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1 bmN0aW9uZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0LmZ1bmN0 ZXN0X3NfMTAoYSB0ZXh0LCBiIGRhdGUpKworICBSRVRVUk5TIGJvb2xlYW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBMQU5H VUFHRSBzcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworIEJFR0lOIEFUT01JQyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBTRUxFQ1QgKChhID0gJ2Fi Y2QnOjp0ZXh0KSBBTkQgKGIgPiAnMDEtMDEtMjAwMSc6OmRhdGUpKTsgICAgICAgICAgICAg KworIEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2Z1 bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzEzJzo6cmVncHJvYyk7CisgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9mdW5jdGlvbmRlZiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZW1wX2Z1bmNfdGVzdC5mdW5jdGVzdF9zXzEz KCkrCisgIFJFVFVSTlMgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICBMQU5HVUFHRSBzcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyBCRUdJTiBBVE9NSUMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgIFNFTEVDVCAxOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBTRUxFQ1QgZmFsc2UgQVMgYm9v bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBFTkQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgCisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfMTUnOjpyZWdw cm9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0LmZ1bmN0ZXN0X3NfMTUoeCBpbnRlZ2VyKSsK KyAgUkVUVVJOUyBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgIExBTkdVQUdFIHNxbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEJFR0lOIEFUT01JQyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgU0VM RUNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgQ0FTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICBXSEVOICgoeCAlIDIp ID0gMCkgVEhFTiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgRUxTRSBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgRU5EIEFTICJjYXNlIjsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworIEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworLS0g dGVzdCB3aXRoIHZpZXdzCitDUkVBVEUgVEFCTEUgZnVuY3Rlc3QzIChhIGludCk7CitJTlNF UlQgSU5UTyBmdW5jdGVzdDMgVkFMVUVTICgxKSwgKDIpOworQ1JFQVRFIFZJRVcgZnVuY3Rl c3R2MyBBUyBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0MzsKK0NSRUFURSBGVU5DVElPTiBmdW5j dGVzdF9TXzE0KCkgUkVUVVJOUyBiaWdpbnQKKyAgICBSRVRVUk4gKFNFTEVDVCBjb3VudCgq KSBGUk9NIGZ1bmN0ZXN0djMpOworU0VMRUNUIGZ1bmN0ZXN0X1NfMTQoKTsKKyBmdW5jdGVz dF9zXzE0IAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMgorKDEgcm93KQorCitE Uk9QIFRBQkxFIGZ1bmN0ZXN0MyBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdmlldyBmdW5j dGVzdHYzCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMTQoKQogLS0g aW5mb3JtYXRpb25fc2NoZW1hIHRlc3RzCiBDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfSVNf MShhIGludCwgYiBpbnQgZGVmYXVsdCAxLCBjIHRleHQgZGVmYXVsdCAnZm9vJykKICAgICBS RVRVUk5TIGludApAQCAtMjkyLDYgKzQ2NSwxNSBAQCBDUkVBVEUgRlVOQ1RJT04gZnVuY3Rl c3RfSVNfNSh4IGludCBERUZBVUxUIG5leHR2YWwoJ2Z1bmN0ZXN0MScpKQogICAgIFJFVFVS TlMgaW50CiAgICAgTEFOR1VBR0UgU1FMCiAgICAgQVMgJ1NFTEVDVCB4JzsKK0NSRUFURSBG VU5DVElPTiBmdW5jdGVzdF9JU182KCkKKyAgICBSRVRVUk5TIGludAorICAgIExBTkdVQUdF IFNRTAorICAgIFJFVFVSTiBuZXh0dmFsKCdmdW5jdGVzdDEnKTsKK0NSRUFURSBUQUJMRSBm dW5jdGVzdDIgKGEgaW50LCBiIGludCk7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfSVNf NygpCisgICAgUkVUVVJOUyBpbnQKKyAgICBMQU5HVUFHRSBTUUwKKyAgICBSRVRVUk4gKFNF TEVDVCBjb3VudChhKSBGUk9NIGZ1bmN0ZXN0Mik7CiBTRUxFQ1QgcjAucm91dGluZV9uYW1l LCByMS5yb3V0aW5lX25hbWUKICAgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV9y b3V0aW5lX3VzYWdlIHJydQogICAgICAgIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRp bmVzIHIwIE9OIHIwLnNwZWNpZmljX25hbWUgPSBycnUuc3BlY2lmaWNfbmFtZQpAQCAtMzA1 LDIzICs0ODcsMjkgQEAgU0VMRUNUIHJvdXRpbmVfbmFtZSwgc2VxdWVuY2VfbmFtZSBGUk9N IGluZm9ybWF0aW9uX3NjaGVtYS5yb3V0aW5lX3NlcXVlbmNlX3VzYWcKICByb3V0aW5lX25h bWUgIHwgc2VxdWVuY2VfbmFtZSAKIC0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K ICBmdW5jdGVzdF9pc181IHwgZnVuY3Rlc3QxCi0oMSByb3cpCisgZnVuY3Rlc3RfaXNfNiB8 IGZ1bmN0ZXN0MQorKDIgcm93cykKIAotLS0gY3VycmVudGx5IGVtcHR5CiBTRUxFQ1Qgcm91 dGluZV9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSBGUk9NIGluZm9ybWF0aW9uX3Nj aGVtYS5yb3V0aW5lX2NvbHVtbl91c2FnZTsKLSByb3V0aW5lX25hbWUgfCB0YWJsZV9uYW1l IHwgY29sdW1uX25hbWUgCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQotKDAgcm93cykKKyByb3V0aW5lX25hbWUgIHwgdGFibGVfbmFtZSB8IGNvbHVtbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgZnVu Y3Rlc3RfaXNfNyB8IGZ1bmN0ZXN0MiAgfCBhCisoMSByb3cpCiAKIFNFTEVDVCByb3V0aW5l X25hbWUsIHRhYmxlX25hbWUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV90YWJs ZV91c2FnZTsKLSByb3V0aW5lX25hbWUgfCB0YWJsZV9uYW1lIAotLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCi0oMCByb3dzKQorIHJvdXRpbmVfbmFtZSAgfCB0YWJsZV9uYW1lIAor LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGZ1bmN0ZXN0X2lzXzcgfCBmdW5jdGVz dDIKKygxIHJvdykKIAogRFJPUCBGVU5DVElPTiBmdW5jdGVzdF9JU180YSBDQVNDQURFOwog Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9pc180YihpbnRl Z2VyKQogRFJPUCBTRVFVRU5DRSBmdW5jdGVzdDEgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3Ag Y2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfaXNfNShpbnRlZ2VyKQorTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2Fk ZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfaXNfNShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0 byBmdW5jdGlvbiBmdW5jdGVzdF9pc182KCkKK0RST1AgVEFCTEUgZnVuY3Rlc3QyIENBU0NB REU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2lzXzco KQogLS0gb3ZlcmxvYWQKIENSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9CXzIoYmlnaW50KSBS RVRVUk5TIGJvb2wgTEFOR1VBR0UgJ3NxbCcKICAgICAgICBJTU1VVEFCTEUgQVMgJ1NFTEVD VCAkMSA+IDAnOwpAQCAtMzQwLDYgKzUyOCw0OSBAQCBDUkVBVEUgT1IgUkVQTEFDRSBQUk9D RURVUkUgZnVuY3Rlc3QxKGEgaW50KSBMQU5HVUFHRSBTUUwgQVMgJ1NFTEVDVCAkMSc7CiBF UlJPUjogIGNhbm5vdCBjaGFuZ2Ugcm91dGluZSBraW5kCiBERVRBSUw6ICAiZnVuY3Rlc3Qx IiBpcyBhIGZ1bmN0aW9uLgogRFJPUCBGVU5DVElPTiBmdW5jdGVzdDEoYSBpbnQpOworLS0g aW5saW5pbmcgb2Ygc2V0LXJldHVybmluZyBmdW5jdGlvbnMKK0NSRUFURSBGVU5DVElPTiBm dW5jdGVzdF9zcmkxKCkgUkVUVVJOUyBTRVRPRiBpbnQKK0xBTkdVQUdFIFNRTAorU1RBQkxF CitBUyAnCisgICAgVkFMVUVTICgxKSwgKDIpLCAoMyk7CisnOworU0VMRUNUICogRlJPTSBm dW5jdGVzdF9zcmkxKCk7CisgZnVuY3Rlc3Rfc3JpMSAKKy0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgIDEKKyAgICAgICAgICAgICAyCisgICAgICAgICAgICAgMworKDMgcm93cykK KworRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKSBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0 X3NyaTEoKTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgVmFsdWVzIFNjYW4gb24gIipWQUxVRVMqIgorICAgT3V0 cHV0OiAiKlZBTFVFUyoiLmNvbHVtbjEKKygyIHJvd3MpCisKK0NSRUFURSBGVU5DVElPTiBm dW5jdGVzdF9zcmkyKCkgUkVUVVJOUyBTRVRPRiBpbnQKK0xBTkdVQUdFIFNRTAorU1RBQkxF CitCRUdJTiBBVE9NSUMKKyAgICBWQUxVRVMgKDEpLCAoMiksICgzKTsKK0VORDsKK1NFTEVD VCAqIEZST00gZnVuY3Rlc3Rfc3JpMigpOworIGZ1bmN0ZXN0X3NyaTIgCistLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAxCisgICAgICAgICAgICAgMgorICAgICAgICAgICAgIDMK KygzIHJvd3MpCisKK0VYUExBSU4gKHZlcmJvc2UsIGNvc3RzIG9mZikgU0VMRUNUICogRlJP TSBmdW5jdGVzdF9zcmkyKCk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFZhbHVlcyBTY2FuIG9uICIqVkFMVUVT KiIKKyAgIE91dHB1dDogIipWQUxVRVMqIi5jb2x1bW4xCisoMiByb3dzKQorCiAtLSBDaGVj ayBiZWhhdmlvciBvZiBWT0lELXJldHVybmluZyBTUUwgZnVuY3Rpb25zCiBDUkVBVEUgRlVO Q1RJT04gdm9pZHRlc3QxKGEgaW50KSBSRVRVUk5TIFZPSUQgTEFOR1VBR0UgU1FMIEFTCiAk JCBTRUxFQ1QgYSArIDEgJCQ7CkBAIC0zOTgsNyArNjI5LDcgQEAgU0VMRUNUICogRlJPTSB2 b2lkdGVzdDUoMyk7CiAKIC0tIENsZWFudXAKIERST1AgU0NIRU1BIHRlbXBfZnVuY190ZXN0 IENBU0NBREU7Ci1OT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDIxIG90aGVyIG9iamVjdHMK K05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMzAgb3RoZXIgb2JqZWN0cwogREVUQUlMOiAg ZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzEodGV4dCxkYXRlKQogZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzIodGV4dFtdKQogZHJvcCBjYXNj YWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzMoKQpAQCAtNDE0LDcgKzY0NSwxNiBAQCBk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2ZfMShpbnRlZ2VyKQogZHJvcCBj YXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9mXzIoaW50ZWdlcikKIGRyb3AgY2FzY2Fk ZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfZl8zKGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRv IGZ1bmN0aW9uIGZ1bmN0ZXN0X2ZfNChpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5j dGlvbiBmdW5jdGVzdF9zXzEodGV4dCxkYXRlKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlv biBmdW5jdGVzdF9zXzIodGV4dFtdKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5j dGVzdF9zXzMoKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9zXzNhKCkK K2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3Rfc18xMCh0ZXh0LGRhdGUpCitk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMTMoKQorZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiBmdW5jdGVzdF9zXzE1KGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRv IGZ1bmN0aW9uIGZ1bmN0ZXN0X2JfMihiaWdpbnQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0 aW9uIGZ1bmN0ZXN0X3NyaTEoKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVz dF9zcmkyKCkKIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gdm9pZHRlc3QxKGludGVnZXIp CiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHZvaWR0ZXN0MihpbnRlZ2VyLGludGVnZXIp CiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHZvaWR0ZXN0MyhpbnRlZ2VyKQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQKaW5kZXgg MzgzOGZhMjMyNC4uZDQ1NTc1NTYxZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CkBAIC02NSw2ICs2NSw0OCBAQCBTRUxFQ1Qg KiBGUk9NIGNwX3Rlc3QgT1JERVIgQlkgYiBDT0xMQVRFICJDIjsKICAxIHwgeHl6enkKICgz IHJvd3MpCiAKKy0tIFNRTC1zdGFuZGFyZCBib2R5CitDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0 MXMoeCB0ZXh0KQorTEFOR1VBR0UgU1FMCitCRUdJTiBBVE9NSUMKKyAgSU5TRVJUIElOVE8g Y3BfdGVzdCBWQUxVRVMgKDEsIHgpOworRU5EOworXGRmIHB0ZXN0MXMKKyAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgZnVuY3Rpb25zCisgU2NoZW1hIHwgIE5hbWUgICB8IFJl c3VsdCBkYXRhIHR5cGUgfCBBcmd1bWVudCBkYXRhIHR5cGVzIHwgVHlwZSAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLQorIHB1YmxpYyB8IHB0ZXN0MXMgfCAgICAgICAgICAgICAgICAgIHwgeCB0ZXh0ICAg ICAgICAgICAgICB8IHByb2MKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRl ZigncHRlc3Qxcyc6OnJlZ3Byb2MpOworICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rp b25kZWYgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVSRSBw dWJsaWMucHRlc3Qxcyh4IHRleHQpKworICBMQU5HVUFHRSBzcWwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworIEJFR0lOIEFUT01JQyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICBJTlNFUlQgSU5UTyBjcF90ZXN0IChhLCBiKSAg ICAgICAgICAgICAgICAgICAgICAgKworICAgIFZBTFVFUyAoMSwgcHRlc3Qxcy54KTsgICAg ICAgICAgICAgICAgICAgICAgICAgKworIEVORCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93KQorCitDQUxMIHB0ZXN0MXMoJ2In KTsKK1NFTEVDVCAqIEZST00gY3BfdGVzdCBPUkRFUiBCWSBiIENPTExBVEUgIkMiOworIGEg fCAgIGIgICAKKy0tLSstLS0tLS0tCisgMSB8IDAKKyAxIHwgYQorIDEgfCBiCisgMSB8IHh5 enp5CisoNCByb3dzKQorCistLSB1dGl0bGl0eSBmdW5jdGlvbnMgY3VycmVudGx5IG5vdCBz dXBwb3J0ZWQgaGVyZQorQ1JFQVRFIFBST0NFRFVSRSBwdGVzdHgoKQorTEFOR1VBR0UgU1FM CitCRUdJTiBBVE9NSUMKKyAgQ1JFQVRFIFRBQkxFIHggKGEgaW50KTsKK0VORDsKK0VSUk9S OiAgQ1JFQVRFIFRBQkxFIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIHVucXVvdGVkIFNRTCBm dW5jdGlvbiBib2R5CiBDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0MigpCiBMQU5HVUFHRSBTUUwK IEFTICQkCkBAIC0xNDYsNiArMTg4LDI4IEBAIEFTICQkCiBTRUxFQ1QgYSA9IGI7CiAkJDsK IENBTEwgcHRlc3Q3KGxlYXN0KCdhJywgJ2InKSwgJ2EnKTsKKy0tIGVtcHR5IGJvZHkKK0NS RUFURSBQUk9DRURVUkUgcHRlc3Q4KHggdGV4dCkKK0JFR0lOIEFUT01JQworRU5EOworXGRm IHB0ZXN0OAorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBmdW5jdGlvbnMKKyBT Y2hlbWEgfCAgTmFtZSAgfCBSZXN1bHQgZGF0YSB0eXBlIHwgQXJndW1lbnQgZGF0YSB0eXBl cyB8IFR5cGUgCistLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHB1YmxpYyB8IHB0ZXN0OCB8ICAgICAgICAgICAg ICAgICAgfCB4IHRleHQgICAgICAgICAgICAgIHwgcHJvYworKDEgcm93KQorCitTRUxFQ1Qg cGdfZ2V0X2Z1bmN0aW9uZGVmKCdwdGVzdDgnOjpyZWdwcm9jKTsKKyAgICAgICAgICAgICAg ICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIE9SIFJFUExB Q0UgUFJPQ0VEVVJFIHB1YmxpYy5wdGVzdDgoeCB0ZXh0KSsKKyAgTEFOR1VBR0Ugc3FsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEJFR0lOIEFUT01JQyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgRU5EICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworQ0FMTCBw dGVzdDgoJycpOwogLS0gT1VUIHBhcmFtZXRlcnMKIENSRUFURSBQUk9DRURVUkUgcHRlc3Q5 KE9VVCBhIGludCkKIExBTkdVQUdFIFNRTApAQCAtMjE0LDYgKzI3OCw3IEBAIEFMVEVSIFJP VVRJTkUgcHRlc3QxYSBSRU5BTUUgVE8gcHRlc3QxOwogRFJPUCBST1VUSU5FIGNwX3Rlc3Rm dW5jMShpbnQpOwogLS0gY2xlYW51cAogRFJPUCBQUk9DRURVUkUgcHRlc3QxOworRFJPUCBQ Uk9DRURVUkUgcHRlc3QxczsKIERST1AgUFJPQ0VEVVJFIHB0ZXN0MjsKIERST1AgVEFCTEUg Y3BfdGVzdDsKIERST1AgVVNFUiByZWdyZXNzX2NwX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Z1bmN0aW9uXzMuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2Z1bmN0aW9uXzMuc3FsCmluZGV4IDU0OWIzNGI0YjIuLjY5NWVl MzQxM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlv bl8zLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfZnVuY3Rpb25fMy5z cWwKQEAgLTE1Myw2ICsxNTMsNzkgQEAgQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X0ZfNChp bnQpIFJFVFVSTlMgYm9vbCBMQU5HVUFHRSAnc3FsJwogU0VMRUNUIHBnX2dldF9mdW5jdGlv bmRlZignZnVuY3Rlc3RfRl8yJzo6cmVncHJvYyk7CiAKIAorLS0KKy0tIFNRTC1zdGFuZGFy ZCBib2R5CistLQorQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMShhIHRleHQsIGIgZGF0 ZSkgUkVUVVJOUyBib29sZWFuCisgICAgTEFOR1VBR0UgU1FMCisgICAgUkVUVVJOIGEgPSAn YWJjZCcgQU5EIGIgPiAnMjAwMS0wMS0wMSc7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3Rf U18yKGEgdGV4dFtdKSBSRVRVUk5TIGludAorICAgIFJFVFVSTiBhWzFdOjppbnQ7CitDUkVB VEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18zKCkgUkVUVVJOUyBib29sZWFuCisgICAgUkVUVVJO IGZhbHNlOworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfM2EoKSBSRVRVUk5TIGJvb2xl YW4KKyAgICBCRUdJTiBBVE9NSUMKKyAgICAgICAgUkVUVVJOIGZhbHNlOworICAgIEVORDsK KworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTAoYSB0ZXh0LCBiIGRhdGUpIFJFVFVS TlMgYm9vbGVhbgorICAgIExBTkdVQUdFIFNRTAorICAgIEJFR0lOIEFUT01JQworICAgICAg ICBTRUxFQ1QgYSA9ICdhYmNkJyBBTkQgYiA+ICcyMDAxLTAxLTAxJzsKKyAgICBFTkQ7CisK K0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzEzKCkgUkVUVVJOUyBib29sZWFuCisgICAg QkVHSU4gQVRPTUlDCisgICAgICAgIFNFTEVDVCAxOworICAgICAgICBTRUxFQ1QgZmFsc2U7 CisgICAgRU5EOworCistLSBlcnJvcjogZHVwbGljYXRlIGZ1bmN0aW9uIGJvZHkKK0NSRUFU RSBGVU5DVElPTiBmdW5jdGVzdF9TX3h4eCh4IGludCkgUkVUVVJOUyBpbnQKKyAgICBMQU5H VUFHRSBTUUwKKyAgICBBUyAkJCBTRUxFQ1QgeCAqIDIgJCQKKyAgICBSRVRVUk4geCAqIDM7 CisKKy0tIHBvbHltb3JwaGljIGFyZ3VtZW50cyBub3QgYWxsb3dlZCBpbiB0aGlzIGZvcm0K K0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TX3h4KHggYW55YXJyYXkpIFJFVFVSTlMgYW55 ZWxlbWVudAorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiB4WzFdOworCistLSB0cmlj a3kgcGFyc2luZworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTUoeCBpbnQpIFJFVFVS TlMgYm9vbGVhbgorTEFOR1VBR0UgU1FMCitCRUdJTiBBVE9NSUMKKyAgICBzZWxlY3QgY2Fz ZSB3aGVuIHggJSAyID0gMCB0aGVuIHRydWUgZWxzZSBmYWxzZSBlbmQ7CitFTkQ7CisKK1NF TEVDVCBmdW5jdGVzdF9TXzEoJ2FiY2QnLCAnMjAyMC0wMS0wMScpOworU0VMRUNUIGZ1bmN0 ZXN0X1NfMihBUlJBWVsnMScsICcyJywgJzMnXSk7CitTRUxFQ1QgZnVuY3Rlc3RfU18zKCk7 CisKK1NFTEVDVCBmdW5jdGVzdF9TXzEwKCdhYmNkJywgJzIwMjAtMDEtMDEnKTsKK1NFTEVD VCBmdW5jdGVzdF9TXzEzKCk7CisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0 ZXN0X1NfMSc6OnJlZ3Byb2MpOworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rl c3RfU18yJzo6cmVncHJvYyk7CitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVz dF9TXzMnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0 X1NfM2EnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0 X1NfMTAnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0 X1NfMTMnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0 X1NfMTUnOjpyZWdwcm9jKTsKKworLS0gdGVzdCB3aXRoIHZpZXdzCitDUkVBVEUgVEFCTEUg ZnVuY3Rlc3QzIChhIGludCk7CitJTlNFUlQgSU5UTyBmdW5jdGVzdDMgVkFMVUVTICgxKSwg KDIpOworQ1JFQVRFIFZJRVcgZnVuY3Rlc3R2MyBBUyBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0 MzsKKworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTQoKSBSRVRVUk5TIGJpZ2ludAor ICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gZnVuY3Rlc3R2Myk7CisKK1NFTEVD VCBmdW5jdGVzdF9TXzE0KCk7CisKK0RST1AgVEFCTEUgZnVuY3Rlc3QzIENBU0NBREU7CisK KwogLS0gaW5mb3JtYXRpb25fc2NoZW1hIHRlc3RzCiAKIENSRUFURSBGVU5DVElPTiBmdW5j dGVzdF9JU18xKGEgaW50LCBiIGludCBkZWZhdWx0IDEsIGMgdGV4dCBkZWZhdWx0ICdmb28n KQpAQCAtMTg4LDE3ICsyNjEsMjkgQEAgQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X0lTXzUo eCBpbnQgREVGQVVMVCBuZXh0dmFsKCdmdW5jdGVzdDEnKSkKICAgICBMQU5HVUFHRSBTUUwK ICAgICBBUyAnU0VMRUNUIHgnOwogCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfSVNfNigp CisgICAgUkVUVVJOUyBpbnQKKyAgICBMQU5HVUFHRSBTUUwKKyAgICBSRVRVUk4gbmV4dHZh bCgnZnVuY3Rlc3QxJyk7CisKK0NSRUFURSBUQUJMRSBmdW5jdGVzdDIgKGEgaW50LCBiIGlu dCk7CisKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU183KCkKKyAgICBSRVRVUk5TIGlu dAorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KGEpIEZST00g ZnVuY3Rlc3QyKTsKKwogU0VMRUNUIHIwLnJvdXRpbmVfbmFtZSwgcjEucm91dGluZV9uYW1l CiAgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRpbmVfcm91dGluZV91c2FnZSBycnUK ICAgICAgICBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5yb3V0aW5lcyByMCBPTiByMC5zcGVj aWZpY19uYW1lID0gcnJ1LnNwZWNpZmljX25hbWUKICAgICAgICBKT0lOIGluZm9ybWF0aW9u X3NjaGVtYS5yb3V0aW5lcyByMSBPTiByMS5zcGVjaWZpY19uYW1lID0gcnJ1LnJvdXRpbmVf bmFtZTsKIFNFTEVDVCByb3V0aW5lX25hbWUsIHNlcXVlbmNlX25hbWUgRlJPTSBpbmZvcm1h dGlvbl9zY2hlbWEucm91dGluZV9zZXF1ZW5jZV91c2FnZTsKLS0tIGN1cnJlbnRseSBlbXB0 eQogU0VMRUNUIHJvdXRpbmVfbmFtZSwgdGFibGVfbmFtZSwgY29sdW1uX25hbWUgRlJPTSBp bmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV9jb2x1bW5fdXNhZ2U7CiBTRUxFQ1Qgcm91dGlu ZV9uYW1lLCB0YWJsZV9uYW1lIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRpbmVfdGFi bGVfdXNhZ2U7CiAKIERST1AgRlVOQ1RJT04gZnVuY3Rlc3RfSVNfNGEgQ0FTQ0FERTsKIERS T1AgU0VRVUVOQ0UgZnVuY3Rlc3QxIENBU0NBREU7CitEUk9QIFRBQkxFIGZ1bmN0ZXN0MiBD QVNDQURFOwogCiAKIC0tIG92ZXJsb2FkCkBAIC0yMTgsNiArMzAzLDI5IEBAIENSRUFURSBP UiBSRVBMQUNFIFBST0NFRFVSRSBmdW5jdGVzdDEoYSBpbnQpIExBTkdVQUdFIFNRTCBBUyAn U0VMRUNUICQxJzsKIERST1AgRlVOQ1RJT04gZnVuY3Rlc3QxKGEgaW50KTsKIAogCistLSBp bmxpbmluZyBvZiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucworCitDUkVBVEUgRlVOQ1RJT04g ZnVuY3Rlc3Rfc3JpMSgpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwKK1NUQUJM RQorQVMgJworICAgIFZBTFVFUyAoMSksICgyKSwgKDMpOworJzsKKworU0VMRUNUICogRlJP TSBmdW5jdGVzdF9zcmkxKCk7CitFWFBMQUlOICh2ZXJib3NlLCBjb3N0cyBvZmYpIFNFTEVD VCAqIEZST00gZnVuY3Rlc3Rfc3JpMSgpOworCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3Rf c3JpMigpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwKK1NUQUJMRQorQkVHSU4g QVRPTUlDCisgICAgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitFTkQ7CisKK1NFTEVDVCAqIEZS T00gZnVuY3Rlc3Rfc3JpMigpOworRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKSBTRUxF Q1QgKiBGUk9NIGZ1bmN0ZXN0X3NyaTIoKTsKKworCiAtLSBDaGVjayBiZWhhdmlvciBvZiBW T0lELXJldHVybmluZyBTUUwgZnVuY3Rpb25zCiAKIENSRUFURSBGVU5DVElPTiB2b2lkdGVz dDEoYSBpbnQpIFJFVFVSTlMgVk9JRCBMQU5HVUFHRSBTUUwgQVMKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKaW5kZXggMmVmMWM4MmNlYS4uNzZmNzgx YzBiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVy ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwK QEAgLTI4LDYgKzI4LDI4IEBAIENSRUFURSBQUk9DRURVUkUgcHRlc3QxKHggdGV4dCkKIFNF TEVDVCAqIEZST00gY3BfdGVzdCBPUkRFUiBCWSBiIENPTExBVEUgIkMiOwogCiAKKy0tIFNR TC1zdGFuZGFyZCBib2R5CitDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0MXMoeCB0ZXh0KQorTEFO R1VBR0UgU1FMCitCRUdJTiBBVE9NSUMKKyAgSU5TRVJUIElOVE8gY3BfdGVzdCBWQUxVRVMg KDEsIHgpOworRU5EOworCitcZGYgcHRlc3QxcworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRl ZigncHRlc3Qxcyc6OnJlZ3Byb2MpOworCitDQUxMIHB0ZXN0MXMoJ2InKTsKKworU0VMRUNU ICogRlJPTSBjcF90ZXN0IE9SREVSIEJZIGIgQ09MTEFURSAiQyI7CisKKy0tIHV0aXRsaXR5 IGZ1bmN0aW9ucyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBoZXJlCitDUkVBVEUgUFJPQ0VE VVJFIHB0ZXN0eCgpCitMQU5HVUFHRSBTUUwKK0JFR0lOIEFUT01JQworICBDUkVBVEUgVEFC TEUgeCAoYSBpbnQpOworRU5EOworCisKIENSRUFURSBQUk9DRURVUkUgcHRlc3QyKCkKIExB TkdVQUdFIFNRTAogQVMgJCQKQEAgLTExMiw2ICsxMzQsMTYgQEAgQ1JFQVRFIFBST0NFRFVS RSBwdGVzdDcoYSB0ZXh0LCBiIHRleHQpCiBDQUxMIHB0ZXN0NyhsZWFzdCgnYScsICdiJyks ICdhJyk7CiAKIAorLS0gZW1wdHkgYm9keQorQ1JFQVRFIFBST0NFRFVSRSBwdGVzdDgoeCB0 ZXh0KQorQkVHSU4gQVRPTUlDCitFTkQ7CisKK1xkZiBwdGVzdDgKK1NFTEVDVCBwZ19nZXRf ZnVuY3Rpb25kZWYoJ3B0ZXN0OCc6OnJlZ3Byb2MpOworQ0FMTCBwdGVzdDgoJycpOworCisK IC0tIE9VVCBwYXJhbWV0ZXJzCiAKIENSRUFURSBQUk9DRURVUkUgcHRlc3Q5KE9VVCBhIGlu dCkKQEAgLTE3MCw2ICsyMDIsNyBAQCBDUkVBVEUgVVNFUiByZWdyZXNzX2NwX3VzZXIxOwog LS0gY2xlYW51cAogCiBEUk9QIFBST0NFRFVSRSBwdGVzdDE7CitEUk9QIFBST0NFRFVSRSBw dGVzdDFzOwogRFJPUCBQUk9DRURVUkUgcHRlc3QyOwogCiBEUk9QIFRBQkxFIGNwX3Rlc3Q7 CgpiYXNlLWNvbW1pdDogOWM1ZjY3ZmQ2MjU2MjQ2YjJhNzg4YThmZWIxZDQyYjc5ZGNkMDQ0 OAotLSAKMi4zMS4wCgo= --------------E313D6005A498242689676AD--