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 1lJbTF-00008k-8L for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Mar 2021 12:28:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lJbTB-0000aq-2K for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Mar 2021 12:28:13 +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 1lJbT9-0000ag-U0 for pgsql-hackers@lists.postgresql.org; Tue, 09 Mar 2021 12:28:12 +0000 Received: from [64.147.123.30] (helo=wforward1-smtp.messagingengine.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lJbT3-0001wV-33 for pgsql-hackers@lists.postgresql.org; Tue, 09 Mar 2021 12:28:11 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailforward.west.internal (Postfix) with ESMTP id 49D4A254B; Tue, 9 Mar 2021 07:27:52 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 09 Mar 2021 07:27:52 -0500 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=xhMRuG cpi3TEaOfI7lmaFNYyXxek6H1JkPxvECg4pmc=; b=wQZgtL5RwZ5GoqlEsCo4g3 oazURGG76K3GseSwJnd2mbYsso3bDA7AxRSFv0VJtgDLHWF+YpiBxx2tR+hlPTSS XQyZE6VYZuo+7PKb9l+3jrD2V+iUF2ro7tv1JgQCFhwChvlDIXPwa/vq2YMfT07E clC1Td/vV1GYXVr3YNnZI9wpIh8eEno7Nej2MmOQHJzziJ1alHnsOfaeEoBIPU+F AOv6eNGRESgpz6xyCtjwG0GDere+GaxZOX22K/i0ThRMwCrNKQbsLnihxmcTqaoV 1hVsQzD7RgCjybVUmz0en+KvJmlurl0lupCB6aMd3DtdgLFHewjo5OvyPFR1BuBQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudduiedggedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuggftrfgrthhtvghrnheptdfgfeejueduffehveetueeg kedtteetiedugffgkeeiteeltddvgeeigeegteegnecukfhppeekjedrudejjedrieelrd dugedtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep phgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from laptop206oxuk.local (p57b1458c.dip0.t-ipconnect.de [87.177.69.140]) by mail.messagingengine.com (Postfix) with ESMTPA id 374EC240066; Tue, 9 Mar 2021 07:27:50 -0500 (EST) Subject: Re: SQL-standard function body To: Jaime Casanova Cc: PostgreSQL Hackers References: <1c11f1eb-f00c-43b7-799d-2d44132c02d7@2ndquadrant.com> <0725f2a9-a4f9-87c3-dd47-e5aa24997ad9@2ndquadrant.com> <160502166422.7362.9550545869239240893.pgcf@coridan.postgresql.org> <59430371-e1c8-3ee8-7ef6-371eb1a00e7e@2ndquadrant.com> <4b91051f-c090-532f-42f9-d901f9123f1e@2ndquadrant.com> From: Peter Eisentraut Message-ID: Date: Tue, 9 Mar 2021 13:27:48 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------D4FAA6ED8E02873C28584611" Content-Language: en-US X-Host-Lookup-Failed: Reverse DNS lookup failed for 64.147.123.30 (deferred) 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. --------------D4FAA6ED8E02873C28584611 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 05.03.21 06:58, Jaime Casanova wrote: > I was making some tests with this patch and found this problem: > > """ > CREATE OR REPLACE FUNCTION public.make_table() > RETURNS void > LANGUAGE sql > BEGIN ATOMIC > CREATE TABLE created_table AS SELECT * FROM int8_tbl; > END; > ERROR: unrecognized token: "?" > CONTEXT: SQL function "make_table" > """ I see. The problem is that we don't have serialization and deserialization support for most utility statements. I think I'll need to add that eventually. For now, I have added code to prevent utility statements. I think it's still useful that way for now. --------------D4FAA6ED8E02873C28584611 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v9-0001-SQL-standard-function-body.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v9-0001-SQL-standard-function-body.patch" RnJvbSAyOWRlNGVjMWFlMTJkM2Y5YzFmNmEzMWNmNjI2YTE5YjI0MjFhZTdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA5IE1hciAyMDIxIDEzOjI1OjM5ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2OV0gU1FMLXN0YW5kYXJkIGZ1bmN0aW9uIGJvZHkKClRoaXMgYWRkcyBzdXBw b3J0IGZvciB3cml0aW5nIENSRUFURSBGVU5DVElPTiBhbmQgQ1JFQVRFIFBST0NFRFVSRQpz dGF0ZW1lbnRzIGZvciBsYW5ndWFnZSBTUUwgd2l0aCBhIGZ1bmN0aW9uIGJvZHkgdGhhdCBj b25mb3JtcyB0byB0aGUKU1FMIHN0YW5kYXJkIGFuZCBpcyBwb3J0YWJsZSB0byBvdGhlciBp bXBsZW1lbnRhdGlvbnMuCgpJbnN0ZWFkIG9mIHRoZSBQb3N0Z3JlU1FMLXNwZWNpZmljIEFT ICQkIHN0cmluZyBsaXRlcmFsICQkIHN5bnRheCwKdGhpcyBhbGxvd3Mgd3JpdGluZyBvdXQg dGhlIFNRTCBzdGF0ZW1lbnRzIG1ha2luZyB1cCB0aGUgYm9keQp1bnF1b3RlZCwgZWl0aGVy IGFzIGEgc2luZ2xlIHN0YXRlbWVudDoKCiAgICBDUkVBVEUgRlVOQ1RJT04gYWRkKGEgaW50 ZWdlciwgYiBpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIKICAgICAgICBMQU5HVUFHRSBTUUwK ICAgICAgICBSRVRVUk4gYSArIGI7CgpvciBhcyBhIGJsb2NrCgogICAgQ1JFQVRFIFBST0NF RFVSRSBpbnNlcnRfZGF0YShhIGludGVnZXIsIGIgaW50ZWdlcikKICAgIExBTkdVQUdFIFNR TAogICAgQkVHSU4gQVRPTUlDCiAgICAgIElOU0VSVCBJTlRPIHRibCBWQUxVRVMgKGEpOwog ICAgICBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTIChiKTsKICAgIEVORDsKClRoZSBmdW5jdGlv biBib2R5IGlzIHBhcnNlZCBhdCBmdW5jdGlvbiBkZWZpbml0aW9uIHRpbWUgYW5kIHN0b3Jl ZCBhcwpleHByZXNzaW9uIG5vZGVzIGluIGEgbmV3IHBnX3Byb2MgY29sdW1uIHByb3NxbGJv ZHkuICBTbyBhdCBydW4gdGltZSwKbm8gZnVydGhlciBwYXJzaW5nIGlzIHJlcXVpcmVkLgoK SG93ZXZlciwgdGhpcyBmb3JtIGRvZXMgbm90IHN1cHBvcnQgcG9seW1vcnBoaWMgYXJndW1l bnRzLCBiZWNhdXNlCnRoZXJlIGlzIG5vIG1vcmUgcGFyc2UgYW5hbHlzaXMgZG9uZSBhdCBj YWxsIHRpbWUuCgpEZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgZnVuY3Rpb24gYW5kIHRoZSBv YmplY3RzIGl0IHVzZXMgYXJlIGZ1bGx5CnRyYWNrZWQuCgpBIG5ldyBSRVRVUk4gc3RhdGVt ZW50IGlzIGludHJvZHVjZWQuICBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlCmZ1bmN0 aW9uIGJvZGllcy4gIEludGVybmFsbHksIGl0IGlzIHRyZWF0ZWQgbXVjaCBsaWtlIGEgU0VM RUNUCnN0YXRlbWVudC4KCnBzcWwgbmVlZHMgc29tZSBuZXcgaW50ZWxsaWdlbmNlIHRvIGtl ZXAgdHJhY2sgb2YgZnVuY3Rpb24gYm9keQpib3VuZGFyaWVzIHNvIHRoYXQgaXQgZG9lc24n dCBzZW5kIG9mZiBzdGF0ZW1lbnRzIHdoZW4gaXQgc2VlcwpzZW1pY29sb25zIHRoYXQgYXJl IGluc2lkZSBhIGZ1bmN0aW9uIGJvZHkuCgpBbHNvLCBwZXIgU1FMIHN0YW5kYXJkLCBMQU5H VUFHRSBTUUwgaXMgdGhlIGRlZmF1bHQsIHNvIGl0IGRvZXMgbm90Cm5lZWQgdG8gYmUgc3Bl Y2lmaWVkIGFueW1vcmUuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkL2ZsYXQvMWMxMWYxZWItZjAwYy00M2I3LTc5OWQtMmQ0NDEzMmMwMmQ3 QDJuZHF1YWRyYW50LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlv bi5zZ21sICAgICAgICAgfCAxMjYgKysrKysrKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHJvY2VkdXJlLnNnbWwgICAgICAgIHwgIDYyICsrKystCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wcm9jLmMgICAgICAgICAgICAgICAgIHwgMTE2ICsrKysrLS0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jICAgICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICAgICAgICAgICB8IDEzMCArKysrKysr Ky0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAg IDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwg IDc5ICsrKy0tLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAg ICAgIHwgIDE1ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAg ICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAg ICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMg ICAgICAgICAgfCAxMjYgKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YyAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSAgICAgICAgICAgICAgICAgICAgIHwgMTI5ICsrKysrKystLS0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgMTMyICsrKysrKysrKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA0NSArKyst CiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUg Ky0KIHNyYy9mZV91dGlscy9wc3Fsc2Nhbi5sICAgICAgICAgICAgICAgICAgICAgICB8ICAy MyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAgICAgICB8 ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2Z1bmN0aW9ucy5oICAgICAgICAgICAg ICB8ICAxNSArKwogc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW5faW50LmggICAgICAg ICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5hZGRv bnMgICAgICAgfCAgIDYgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJh aWxlciAgICAgIHwgICA0ICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rp b25fMy5vdXQgICAgfCAyMzEgKysrKysrKysrKysrKysrKystCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dCAgICAgfCAgNjUgKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlvbl8zLnNxbCAgICB8ICA5NiArKysrKysrLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwgICAgIHwgIDMzICsrKwog MzYgZmlsZXMgY2hhbmdlZCwgMTM0NiBpbnNlcnRpb25zKCspLCAyMTQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCBiMWRlNmQwNjc0Li4xNDZiZjBmMGIwIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbApAQCAtNTk4MCw2ICs1OTgwLDE2IEBAIDx0aXRsZT48c3RydWN0bmFtZT5w Z19wcm9jPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KICAgICAgIDwvcGFyYT48L2Vu dHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+cHJvc3FsYm9keTwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25v ZGVfdHJlZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBy ZS1wYXJzZWQgU1FMIGZ1bmN0aW9uIGJvZHkuICBUaGlzIHdpbGwgYmUgdXNlZCBmb3IgbGFu Z3VhZ2UgU1FMCisgICAgICAgZnVuY3Rpb25zIGlmIHRoZSBib2R5IGlzIG5vdCBzcGVjaWZp ZWQgYXMgYSBzdHJpbmcgY29uc3RhbnQuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1 Y3RmaWVsZD5wcm9jb25maWc8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0W108L3R5cGU+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfZnVuY3Rpb24uc2dtbAppbmRleCAzYzFlYWVhNjUxLi4x YjViOTQyMGRiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Z1bmN0aW9uLnNnbWwKQEAg LTM4LDYgKzM4LDcgQEAKICAgICB8IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29uZmlndXJhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiB7IFRPIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgPSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8IEZST00gQ1VS UkVOVCB9CiAgICAgfCBBUyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmlu aXRpb248L3JlcGxhY2VhYmxlPicKICAgICB8IEFTICc8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqX2ZpbGU8L3JlcGxhY2VhYmxlPicsICc8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bGlua19zeW1ib2w8L3JlcGxhY2VhYmxlPicKKyAgICB8IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zcWxfYm9keTwvcmVwbGFjZWFibGU+CiAgIH0gLi4u CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC0yNTcsOCArMjU4LDkgQEAg PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBsYW5n dWFnZSB0aGF0IHRoZSBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpbi4KICAgICAgICBJdCBj YW4gYmUgPGxpdGVyYWw+c3FsPC9saXRlcmFsPiwgPGxpdGVyYWw+YzwvbGl0ZXJhbD4sCiAg ICAgICAgPGxpdGVyYWw+aW50ZXJuYWw8L2xpdGVyYWw+LCBvciB0aGUgbmFtZSBvZiBhIHVz ZXItZGVmaW5lZAotICAgICAgIHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGUuZy4sIDxsaXRlcmFs PnBscGdzcWw8L2xpdGVyYWw+LiAgRW5jbG9zaW5nIHRoZQotICAgICAgIG5hbWUgaW4gc2lu Z2xlIHF1b3RlcyBpcyBkZXByZWNhdGVkIGFuZCByZXF1aXJlcyBtYXRjaGluZyBjYXNlLgor ICAgICAgIHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGUuZy4sIDxsaXRlcmFsPnBscGdzcWw8L2xp dGVyYWw+LiAgVGhlIGRlZmF1bHQgaXMKKyAgICAgICA8bGl0ZXJhbD5zcWw8L2xpdGVyYWw+ LiAgRW5jbG9zaW5nIHRoZSBuYW1lIGluIHNpbmdsZSBxdW90ZXMgaXMKKyAgICAgICBkZXBy ZWNhdGVkIGFuZCByZXF1aXJlcyBtYXRjaGluZyBjYXNlLgogICAgICAgPC9wYXJhPgogICAg ICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNTc3LDYgKzU3OSw0NCBA QCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2JvZHk8L3JlcGxhY2VhYmxlPjwvdGVybT4K KworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgYm9keSBvZiBh IDxsaXRlcmFsPkxBTkdVQUdFIFNRTDwvbGl0ZXJhbD4gZnVuY3Rpb24uICBUaGlzIGNhbgor ICAgICAgIGVpdGhlciBiZSBhIHNpbmdsZSBzdGF0ZW1lbnQKKzxwcm9ncmFtbGlzdGluZz4K K1JFVFVSTiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+Cis8L3Byb2dy YW1saXN0aW5nPgorICAgICAgIG9yIGEgYmxvY2sKKzxwcm9ncmFtbGlzdGluZz4KK0JFR0lO IEFUT01JQworICA8cmVwbGFjZWFibGU+c3RhdGVtZW50PC9yZXBsYWNlYWJsZT47CisgIDxy ZXBsYWNlYWJsZT5zdGF0ZW1lbnQ8L3JlcGxhY2VhYmxlPjsKKyAgLi4uCisgIDxyZXBsYWNl YWJsZT5zdGF0ZW1lbnQ8L3JlcGxhY2VhYmxlPjsKK0VORAorPC9wcm9ncmFtbGlzdGluZz4K KyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyBzaW1pbGFy IHRvIHdyaXRpbmcgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uIGJvZHkgYXMgYSBzdHJpbmcK KyAgICAgICBjb25zdGFudCAoc2VlIDxyZXBsYWNlYWJsZT5kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gYWJvdmUpLCBidXQgdGhlcmUKKyAgICAgICBhcmUgc29tZSBkaWZmZXJlbmNlczog VGhpcyBmb3JtIG9ubHkgd29ya3MgZm9yIDxsaXRlcmFsPkxBTkdVQUdFCisgICAgICAgU1FM PC9saXRlcmFsPiwgdGhlIHN0cmluZyBjb25zdGFudCBmb3JtIHdvcmtzIGZvciBhbGwgbGFu Z3VhZ2VzLiAgVGhpcworICAgICAgIGZvcm0gaXMgcGFyc2VkIGF0IGZ1bmN0aW9uIGRlZmlu aXRpb24gdGltZSwgdGhlIHN0cmluZyBjb25zdGFudCBmb3JtIGlzCisgICAgICAgcGFyc2Vk IGF0IGV4ZWN1dGlvbiB0aW1lOyB0aGVyZWZvcmUgdGhpcyBmb3JtIGNhbm5vdCBzdXBwb3J0 CisgICAgICAgcG9seW1vcnBoaWMgYXJndW1lbnQgdHlwZXMgYW5kIG90aGVyIGNvbnN0cnVj dHMgdGhhdCBhcmUgbm90IHJlc29sdmFibGUKKyAgICAgICBhdCBmdW5jdGlvbiBkZWZpbml0 aW9uIHRpbWUuICBUaGlzIGZvcm0gdHJhY2tzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQor ICAgICAgIGZ1bmN0aW9uIGFuZCBvYmplY3RzIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGJvZHks IHNvIDxsaXRlcmFsPkRST1AKKyAgICAgICAuLi4gQ0FTQ0FERTwvbGl0ZXJhbD4gd2lsbCB3 b3JrIGNvcnJlY3RseSwgd2hlcmVhcyB0aGUgZm9ybSB1c2luZworICAgICAgIHN0cmluZyBs aXRlcmFscyBtYXkgbGVhdmUgZGFuZ2xpbmcgZnVuY3Rpb25zLiAgRmluYWxseSwgdGhpcyBm b3JtIGlzCisgICAgICAgbW9yZSBjb21wYXRpYmxlIHdpdGggdGhlIFNRTCBzdGFuZGFyZCBh bmQgb3RoZXIgU1FMIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPC92YXJpYWJsZWxpc3Q+CiAK ICAgIDxwYXJhPgpAQCAtNjY5LDYgKzcwOSwxNSBAQCA8dGl0bGU+RXhhbXBsZXM8L3RpdGxl PgogICAgIExBTkdVQUdFIFNRTAogICAgIElNTVVUQUJMRQogICAgIFJFVFVSTlMgTlVMTCBP TiBOVUxMIElOUFVUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIFRoZSBzYW1lIGZ1bmN0aW9u IHdyaXR0ZW4gaW4gYSBtb3JlIFNRTC1jb25mb3JtaW5nIHN0eWxlLCB1c2luZyBhcmd1bWVu dAorICAgbmFtZXMgYW5kIGFuIHVucXVvdGVkIGJvZHk6Cis8cHJvZ3JhbWxpc3Rpbmc+CitD UkVBVEUgRlVOQ1RJT04gYWRkKGEgaW50ZWdlciwgYiBpbnRlZ2VyKSBSRVRVUk5TIGludGVn ZXIKKyAgICBMQU5HVUFHRSBTUUwKKyAgICBJTU1VVEFCTEUKKyAgICBSRVRVUk5TIE5VTEwg T04gTlVMTCBJTlBVVAorICAgIFJFVFVSTiBhICsgYjsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAg IDwvcGFyYT4KIApAQCAtNzk5LDIzICs4NDgsNzQgQEAgPHRpdGxlPldyaXRpbmcgPGxpdGVy YWw+U0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJhbD4gRnVuY3Rpb25zIFNhZmVseTwvdGl0bGU+ CiAgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KIAogICA8cGFyYT4KLSAgIEEgPGNv bW1hbmQ+Q1JFQVRFIEZVTkNUSU9OPC9jb21tYW5kPiBjb21tYW5kIGlzIGRlZmluZWQgaW4g dGhlIFNRTCBzdGFuZGFyZC4KLSAgIFRoZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IHZlcnNpb24gaXMgc2ltaWxhciBidXQKLSAgIG5vdCBmdWxseSBjb21wYXRp YmxlLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIG5vdCBwb3J0YWJsZSwgbmVpdGhlciBhcmUgdGhl Ci0gICBkaWZmZXJlbnQgYXZhaWxhYmxlIGxhbmd1YWdlcy4KKyAgIEEgPGNvbW1hbmQ+Q1JF QVRFIEZVTkNUSU9OPC9jb21tYW5kPiBjb21tYW5kIGlzIGRlZmluZWQgaW4gdGhlIFNRTAor ICAgc3RhbmRhcmQuICBUaGUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBpbXBsZW1lbnRhdGlvbiBjYW4gYmUKKyAgIHVzZWQgaW4gYSBjb21wYXRpYmxlIHdheSBi dXQgaGFzIG1hbnkgZXh0ZW5zaW9ucy4gIENvbnZlcnNlbHksIHRoZSBTUUwKKyAgIHN0YW5k YXJkIHNwZWNpZmllcyBhIG51bWJlciBvZiBvcHRpb25hbCBmZWF0dXJlcyB0aGF0IGFyZSBu b3QgaW1wbGVtZW50ZWQKKyAgIGluIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4uCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIEZvciBjb21wYXRpYmlsaXR5IHdp dGggc29tZSBvdGhlciBkYXRhYmFzZSBzeXN0ZW1zLAotICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBjYW4gYmUgd3JpdHRlbgotICAg ZWl0aGVyIGJlZm9yZSBvciBhZnRlciA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YXJnbmFtZTwvcmVwbGFjZWFibGU+LgotICAgQnV0IG9ubHkgdGhlIGZpcnN0IHdheSBpcyBz dGFuZGFyZC1jb21wbGlhbnQuCisgICBUaGUgZm9sbG93aW5nIGFyZSBpbXBvcnRhbnQgY29t cGF0aWJpbGl0eSBpc3N1ZXM6CisKKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIDxsaXRlcmFsPk9SIFJFUExBQ0U8L2xpdGVyYWw+IGlz IGEgUG9zdGdyZVNRTCBleHRlbnNpb24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBjb21wYXRpYmls aXR5IHdpdGggc29tZSBvdGhlciBkYXRhYmFzZSBzeXN0ZW1zLCA8cmVwbGFjZWFibGUKKyAg ICAgIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBjYW4gYmUgd3Jp dHRlbiBlaXRoZXIgYmVmb3JlIG9yCisgICAgICBhZnRlciA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YXJnbmFtZTwvcmVwbGFjZWFibGU+LiAgQnV0IG9ubHkKKyAgICAgIHRo ZSBmaXJzdCB3YXkgaXMgc3RhbmRhcmQtY29tcGxpYW50LgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBGb3Ig cGFyYW1ldGVyIGRlZmF1bHRzLCB0aGUgU1FMIHN0YW5kYXJkIHNwZWNpZmllcyBvbmx5IHRo ZSBzeW50YXggd2l0aAorICAgICAgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IGtl eSB3b3JkLiAgVGhlIHN5bnRheCB3aXRoCisgICAgICA8bGl0ZXJhbD49PC9saXRlcmFsPiBp cyB1c2VkIGluIFQtU1FMIGFuZCBGaXJlYmlyZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxsaXRl cmFsPlNFVE9GPC9saXRlcmFsPiBtb2RpZmllciBpcyBhIFBvc3RncmVTUUwgZXh0ZW5zaW9u LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKworICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBPbmx5IDxsaXRlcmFsPlNRTDwvbGl0ZXJhbD4gaXMgc3RhbmRh cmRpemVkIGFzIGEgbGFuZ3VhZ2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFsbCBvdGhlciBhdHRyaWJ1 dGVzIGV4Y2VwdCA8bGl0ZXJhbD5DQUxMRUQgT04gTlVMTCBJTlBVVDwvbGl0ZXJhbD4gYW5k CisgICAgICA8bGl0ZXJhbD5SRVRVUk5TIE5VTEwgT04gTlVMTCBJTlBVVDwvbGl0ZXJhbD4g YXJlIG5vdCBzdGFuZGFyZGl6ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvciB0aGUgYm9keSBvZiA8 bGl0ZXJhbD5MQU5HVUFHRSBTUUw8L2xpdGVyYWw+IGZ1bmN0aW9ucywgdGhlIFNRTAorICAg ICAgc3RhbmRhcmQgb25seSBzcGVjaWZpZXMgdGhlIDxyZXBsYWNlYWJsZT5zcWxfYm9keTwv cmVwbGFjZWFibGU+IGZvcm0uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC9pdGVtaXplZGxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIEZvciBwYXJhbWV0 ZXIgZGVmYXVsdHMsIHRoZSBTUUwgc3RhbmRhcmQgc3BlY2lmaWVzIG9ubHkgdGhlIHN5bnRh eCB3aXRoCi0gICB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4ga2V5IHdvcmQuICBU aGUgc3ludGF4Ci0gICB3aXRoIDxsaXRlcmFsPj08L2xpdGVyYWw+IGlzIHVzZWQgaW4gVC1T UUwgYW5kIEZpcmViaXJkLgorICAgU2ltcGxlIDxsaXRlcmFsPkxBTkdVQUdFIFNRTDwvbGl0 ZXJhbD4gZnVuY3Rpb25zIGNhbiBiZSB3cml0dGVuIGluIGEgd2F5CisgICB0aGF0IGlzIGJv dGggc3RhbmRhcmQtY29uZm9ybWluZyBhbmQgcG9ydGFibGUgdG8gb3RoZXIgaW1wbGVtZW50 YXRpb25zLgorICAgTW9yZSBjb21wbGV4IGZ1bmN0aW9ucyB1c2luZyBhZHZhbmNlZCBmZWF0 dXJlcywgb3B0aW1pemF0aW9uIGF0dHJpYnV0ZXMsIG9yCisgICBvdGhlciBsYW5ndWFnZXMg d2lsbCBuZWNlc3NhcmlseSBiZSBzcGVjaWZpYyB0byBQb3N0Z3JlU1FMIGluIGEgc2lnbmlm aWNhbnQKKyAgIHdheS4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb2NlZHVyZS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwKaW5kZXggZTI1OGVjYTVjZS4uZWNkZWFjMTYy OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwKQEAgLTI5LDYg KzI5LDcgQEAKICAgICB8IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29u ZmlndXJhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiB7IFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8IEZST00gQ1VSUkVOVCB9 CiAgICAgfCBBUyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmluaXRpb248 L3JlcGxhY2VhYmxlPicKICAgICB8IEFTICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b2JqX2ZpbGU8L3JlcGxhY2VhYmxlPicsICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bGlua19zeW1ib2w8L3JlcGxhY2VhYmxlPicKKyAgICB8IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zcWxfYm9keTwvcmVwbGFjZWFibGU+CiAgIH0gLi4uCiA8L3N5 bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC0xNjIsOCArMTYzLDkgQEAgPHRpdGxl PlBhcmFtZXRlcnM8L3RpdGxlPgogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSB0 aGF0IHRoZSBwcm9jZWR1cmUgaXMgaW1wbGVtZW50ZWQgaW4uCiAgICAgICAgSXQgY2FuIGJl IDxsaXRlcmFsPnNxbDwvbGl0ZXJhbD4sIDxsaXRlcmFsPmM8L2xpdGVyYWw+LAogICAgICAg IDxsaXRlcmFsPmludGVybmFsPC9saXRlcmFsPiwgb3IgdGhlIG5hbWUgb2YgYSB1c2VyLWRl ZmluZWQKLSAgICAgICBwcm9jZWR1cmFsIGxhbmd1YWdlLCBlLmcuLCA8bGl0ZXJhbD5wbHBn c3FsPC9saXRlcmFsPi4gIEVuY2xvc2luZyB0aGUKLSAgICAgICBuYW1lIGluIHNpbmdsZSBx dW90ZXMgaXMgZGVwcmVjYXRlZCBhbmQgcmVxdWlyZXMgbWF0Y2hpbmcgY2FzZS4KKyAgICAg ICBwcm9jZWR1cmFsIGxhbmd1YWdlLCBlLmcuLCA8bGl0ZXJhbD5wbHBnc3FsPC9saXRlcmFs Pi4gIFRoZSBkZWZhdWx0IGlzCisgICAgICAgPGxpdGVyYWw+c3FsPC9saXRlcmFsPi4gIEVu Y2xvc2luZyB0aGUgbmFtZSBpbiBzaW5nbGUgcXVvdGVzIGlzCisgICAgICAgZGVwcmVjYXRl ZCBhbmQgcmVxdWlyZXMgbWF0Y2hpbmcgY2FzZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9s aXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI5OSw2ICszMDEsNDEgQEAgPHRp dGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2JvZHk8L3JlcGxhY2VhYmxlPjwvdGVybT4KKwor ICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgYm9keSBvZiBhIDxs aXRlcmFsPkxBTkdVQUdFIFNRTDwvbGl0ZXJhbD4gcHJvY2VkdXJlLiAgVGhpcyBzaG91bGQK KyAgICAgICBiZSBhIGJsb2NrCis8cHJvZ3JhbWxpc3Rpbmc+CitCRUdJTiBBVE9NSUMKKyAg PHJlcGxhY2VhYmxlPnN0YXRlbWVudDwvcmVwbGFjZWFibGU+OworICA8cmVwbGFjZWFibGU+ c3RhdGVtZW50PC9yZXBsYWNlYWJsZT47CisgIC4uLgorICA8cmVwbGFjZWFibGU+c3RhdGVt ZW50PC9yZXBsYWNlYWJsZT47CitFTkQKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3Bh cmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byB3cml0aW5n IHRoZSB0ZXh0IG9mIHRoZSBwcm9jZWR1cmUgYm9keSBhcyBhIHN0cmluZworICAgICAgIGNv bnN0YW50IChzZWUgPHJlcGxhY2VhYmxlPmRlZmluaXRpb248L3JlcGxhY2VhYmxlPiBhYm92 ZSksIGJ1dCB0aGVyZQorICAgICAgIGFyZSBzb21lIGRpZmZlcmVuY2VzOiBUaGlzIGZvcm0g b25seSB3b3JrcyBmb3IgPGxpdGVyYWw+TEFOR1VBR0UKKyAgICAgICBTUUw8L2xpdGVyYWw+ LCB0aGUgc3RyaW5nIGNvbnN0YW50IGZvcm0gd29ya3MgZm9yIGFsbCBsYW5ndWFnZXMuICBU aGlzCisgICAgICAgZm9ybSBpcyBwYXJzZWQgYXQgcHJvY2VkdXJlIGRlZmluaXRpb24gdGlt ZSwgdGhlIHN0cmluZyBjb25zdGFudCBmb3JtIGlzCisgICAgICAgcGFyc2VkIGF0IGV4ZWN1 dGlvbiB0aW1lOyB0aGVyZWZvcmUgdGhpcyBmb3JtIGNhbm5vdCBzdXBwb3J0CisgICAgICAg cG9seW1vcnBoaWMgYXJndW1lbnQgdHlwZXMgYW5kIG90aGVyIGNvbnN0cnVjdHMgdGhhdCBh cmUgbm90IHJlc29sdmFibGUKKyAgICAgICBhdCBwcm9jZWR1cmUgZGVmaW5pdGlvbiB0aW1l LiAgVGhpcyBmb3JtIHRyYWNrcyBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUKKyAgICAgICBw cm9jZWR1cmUgYW5kIG9iamVjdHMgdXNlZCBpbiB0aGUgcHJvY2VkdXJlIGJvZHksIHNvIDxs aXRlcmFsPkRST1AKKyAgICAgICAuLi4gQ0FTQ0FERTwvbGl0ZXJhbD4gd2lsbCB3b3JrIGNv cnJlY3RseSwgd2hlcmVhcyB0aGUgZm9ybSB1c2luZworICAgICAgIHN0cmluZyBsaXRlcmFs cyBtYXkgbGVhdmUgZGFuZ2xpbmcgcHJvY2VkdXJlcy4gIEZpbmFsbHksIHRoaXMgZm9ybSBp cworICAgICAgIG1vcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBTUUwgc3RhbmRhcmQgYW5kIG90 aGVyIFNRTCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0 ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVm c2VjdDE+CiAKQEAgLTMxOCw2ICszNTUsNyBAQCA8dGl0bGU+Tm90ZXM8L3RpdGxlPgogIDxy ZWZzZWN0MSBpZD0ic3FsLWNyZWF0ZXByb2NlZHVyZS1leGFtcGxlcyI+CiAgIDx0aXRsZT5F eGFtcGxlczwvdGl0bGU+CiAKKyAgPHBhcmE+CiA8cHJvZ3JhbWxpc3Rpbmc+CiBDUkVBVEUg UFJPQ0VEVVJFIGluc2VydF9kYXRhKGEgaW50ZWdlciwgYiBpbnRlZ2VyKQogTEFOR1VBR0Ug U1FMCkBAIC0zMjUsOSArMzYzLDIxIEBAIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiBJTlNF UlQgSU5UTyB0YmwgVkFMVUVTIChhKTsKIElOU0VSVCBJTlRPIHRibCBWQUxVRVMgKGIpOwog JCQ7Ci0KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICBvcgorPHByb2dyYW1saXN0aW5nPgorQ1JF QVRFIFBST0NFRFVSRSBpbnNlcnRfZGF0YShhIGludGVnZXIsIGIgaW50ZWdlcikKK0xBTkdV QUdFIFNRTAorQkVHSU4gQVRPTUlDCisgIElOU0VSVCBJTlRPIHRibCBWQUxVRVMgKGEpOwor ICBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTIChiKTsKK0VORDsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICBhbmQgY2FsbCBsaWtlIHRoaXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CiBDQUxMIGluc2Vy dF9kYXRhKDEsIDIpOwogPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgogIDwvcmVmc2Vj dDE+CiAKICA8cmVmc2VjdDEgaWQ9InNxbC1jcmVhdGVwcm9jZWR1cmUtY29tcGF0Ij4KQEAg LTMzNSw5ICszODUsOSBAQCA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CiAKICAgPHBh cmE+CiAgICBBIDxjb21tYW5kPkNSRUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+IGNvbW1hbmQg aXMgZGVmaW5lZCBpbiB0aGUgU1FMCi0gICBzdGFuZGFyZC4gIFRoZSA8cHJvZHVjdG5hbWU+ UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHZlcnNpb24gaXMgc2ltaWxhciBidXQKLSAgIG5v dCBmdWxseSBjb21wYXRpYmxlLiAgRm9yIGRldGFpbHMgc2VlCi0gICBhbHNvIDx4cmVmIGxp bmtlbmQ9InNxbC1jcmVhdGVmdW5jdGlvbiIvPi4KKyAgIHN0YW5kYXJkLiAgVGhlIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaW1wbGVtZW50YXRpb24gY2FuIGJl CisgICB1c2VkIGluIGEgY29tcGF0aWJsZSB3YXkgYnV0IGhhcyBtYW55IGV4dGVuc2lvbnMu ICBGb3IgZGV0YWlscyBzZWUgYWxzbworICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWZ1 bmN0aW9uIi8+LgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfYWdncmVnYXRlLmMKaW5kZXggODlmMjNkMGFkZC4uNTE5NzA3NmM3NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCkBAIC02MjIsNiArNjIyLDcgQEAgQWdncmVnYXRl Q3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJCQkJIEludmFsaWRPaWQsCS8qIG5v IHZhbGlkYXRvciAqLwogCQkJCQkJCSAiYWdncmVnYXRlX2R1bW15IiwgLyogcGxhY2Vob2xk ZXIgKG5vIHN1Y2ggcHJvYykgKi8KIAkJCQkJCQkgTlVMTCwJLyogcHJvYmluICovCisJCQkJ CQkJIE5VTEwsCS8qIHByb3NxbGJvZHkgKi8KIAkJCQkJCQkgUFJPS0lORF9BR0dSRUdBVEUs CiAJCQkJCQkJIGZhbHNlLCAvKiBzZWN1cml0eSBpbnZva2VyIChjdXJyZW50bHkgbm90CiAJ CQkJCQkJCQkgKiBkZWZpbmFibGUgZm9yIGFnZykgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHJvYy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMK aW5kZXggZTE0ZWVlNWExOS4uYTUzYjVmNDA4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMK QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUg InBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAidGNvcC9wcXVlcnku aCIKQEAgLTc2LDYgKzc3LDcgQEAgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2Nl ZHVyZU5hbWUsCiAJCQkJT2lkIGxhbmd1YWdlVmFsaWRhdG9yLAogCQkJCWNvbnN0IGNoYXIg KnByb3NyYywKIAkJCQljb25zdCBjaGFyICpwcm9iaW4sCisJCQkJTm9kZSAqcHJvc3FsYm9k eSwKIAkJCQljaGFyIHByb2tpbmQsCiAJCQkJYm9vbCBzZWN1cml0eV9kZWZpbmVyLAogCQkJ CWJvb2wgaXNMZWFrUHJvb2YsCkBAIC0xMTksOCArMTIxLDYgQEAgUHJvY2VkdXJlQ3JlYXRl KGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJLyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJ ICovCi0JQXNzZXJ0KFBvaW50ZXJJc1ZhbGlkKHByb3NyYykpOwotCiAJcGFyYW1ldGVyQ291 bnQgPSBwYXJhbWV0ZXJUeXBlcy0+ZGltMTsKIAlpZiAocGFyYW1ldGVyQ291bnQgPCAwIHx8 IHBhcmFtZXRlckNvdW50ID4gRlVOQ19NQVhfQVJHUykKIAkJZXJlcG9ydChFUlJPUiwKQEAg LTMzNCwxMSArMzM0LDE4IEBAIFByb2NlZHVyZUNyZWF0ZShjb25zdCBjaGFyICpwcm9jZWR1 cmVOYW1lLAogCQl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3RyZnR5cGVzIC0gMV0gPSB0cmZ0 eXBlczsKIAllbHNlCiAJCW51bGxzW0FudW1fcGdfcHJvY19wcm90cmZ0eXBlcyAtIDFdID0g dHJ1ZTsKLQl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3NyYyAtIDFdID0gQ1N0cmluZ0dldFRl eHREYXR1bShwcm9zcmMpOworCWlmIChwcm9zcmMpCisJCXZhbHVlc1tBbnVtX3BnX3Byb2Nf cHJvc3JjIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHByb3NyYyk7CisJZWxzZQorCQlu dWxsc1tBbnVtX3BnX3Byb2NfcHJvc3JjIC0gMV0gPSB0cnVlOwogCWlmIChwcm9iaW4pCiAJ CXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvYmluIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVt KHByb2Jpbik7CiAJZWxzZQogCQludWxsc1tBbnVtX3BnX3Byb2NfcHJvYmluIC0gMV0gPSB0 cnVlOworCWlmIChwcm9zcWxib2R5KQorCQl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3NxbGJv ZHkgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHByb3NxbGJvZHkp KTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfcHJvY19wcm9zcWxib2R5IC0gMV0gPSB0cnVl OwogCWlmIChwcm9jb25maWcgIT0gUG9pbnRlckdldERhdHVtKE5VTEwpKQogCQl2YWx1ZXNb QW51bV9wZ19wcm9jX3Byb2NvbmZpZyAtIDFdID0gcHJvY29uZmlnOwogCWVsc2UKQEAgLTYz OCw2ICs2NDUsMTAgQEAgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5h bWUsCiAJcmVjb3JkX29iamVjdF9hZGRyZXNzX2RlcGVuZGVuY2llcygmbXlzZWxmLCBhZGRy cywgREVQRU5ERU5DWV9OT1JNQUwpOwogCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhhZGRycyk7 CiAKKwkvKiBkZXBlbmRlbmN5IG9uIFNRTCByb3V0aW5lIGJvZHkgKi8KKwlpZiAobGFuZ3Vh Z2VPYmplY3RJZCA9PSBTUUxsYW5ndWFnZUlkICYmIHByb3NxbGJvZHkpCisJCXJlY29yZERl cGVuZGVuY3lPbkV4cHIoJm15c2VsZiwgcHJvc3FsYm9keSwgTklMLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKIAkvKiBkZXBlbmRlbmN5IG9uIHBhcmFtZXRlciBkZWZhdWx0IGV4cHJlc3Np b25zICovCiAJaWYgKHBhcmFtZXRlckRlZmF1bHRzKQogCQlyZWNvcmREZXBlbmRlbmN5T25F eHByKCZteXNlbGYsIChOb2RlICopIHBhcmFtZXRlckRlZmF1bHRzLApAQCAtODYxLDYxICs4 NzIsODEgQEAgZm1ncl9zcWxfdmFsaWRhdG9yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogUG9z dHBvbmUgYm9keSBjaGVja3MgaWYgIWNoZWNrX2Z1bmN0aW9uX2JvZGllcyAqLwogCWlmIChj aGVja19mdW5jdGlvbl9ib2RpZXMpCiAJewotCQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJP Q09JRCwgdHVwbGUsIEFudW1fcGdfcHJvY19wcm9zcmMsICZpc251bGwpOwotCQlpZiAoaXNu dWxsKQotCQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIik7Ci0KLQkJcHJvc3JjID0gVGV4 dERhdHVtR2V0Q1N0cmluZyh0bXApOwotCiAJCS8qCiAJCSAqIFNldHVwIGVycm9yIHRyYWNl YmFjayBzdXBwb3J0IGZvciBlcmVwb3J0KCkuCiAJCSAqLwogCQljYWxsYmFja19hcmcucHJv bmFtZSA9IE5hbWVTdHIocHJvYy0+cHJvbmFtZSk7Ci0JCWNhbGxiYWNrX2FyZy5wcm9zcmMg PSBwcm9zcmM7CisJCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBOVUxMOwogCiAJCXNxbGVycmNv bnRleHQuY2FsbGJhY2sgPSBzcWxfZnVuY3Rpb25fcGFyc2VfZXJyb3JfY2FsbGJhY2s7CiAJ CXNxbGVycmNvbnRleHQuYXJnID0gKHZvaWQgKikgJmNhbGxiYWNrX2FyZzsKIAkJc3FsZXJy Y29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJCWVycm9yX2NvbnRl eHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKIAotCQkvKgotCQkgKiBXZSBjYW4ndCBkbyBm dWxsIHByZWNoZWNraW5nIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlmIHRoZXJlCi0J CSAqIGFyZSBhbnkgcG9seW1vcnBoaWMgaW5wdXQgdHlwZXMsIGJlY2F1c2UgYWN0dWFsIGRh dGF0eXBlcyBvZgotCQkgKiBleHByZXNzaW9uIHJlc3VsdHMgd2lsbCBiZSB1bnJlc29sdmFi bGUuICBUaGUgY2hlY2sgd2lsbCBiZSBkb25lIGF0Ci0JCSAqIHJ1bnRpbWUgaW5zdGVhZC4K LQkJICoKLQkJICogV2UgY2FuIHJ1biB0aGUgdGV4dCB0aHJvdWdoIHRoZSByYXcgcGFyc2Vy IHRob3VnaDsgdGhpcyB3aWxsIGF0Ci0JCSAqIGxlYXN0IGNhdGNoIHNpbGx5IHN5bnRhY3Rp YyBlcnJvcnMuCi0JCSAqLwotCQlyYXdfcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVy eShwcm9zcmMpOworCQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgdHVwbGUsIEFu dW1fcGdfcHJvY19wcm9zcmMsICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQl7CisJCQlO b2RlCSAgICpuOwogCi0JCWlmICghaGFzcG9seWFyZykKKwkJCXRtcCA9IFN5c0NhY2hlR2V0 QXR0cihQUk9DT0lELCB0dXBsZSwgQW51bV9wZ19wcm9jX3Byb3NxbGJvZHksICZpc251bGwp OworCQkJaWYgKGlzbnVsbCkKKwkJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgYW5kIHBy b3NxbGJvZHkiKTsKKworCQkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5n KHRtcCkpOworCQkJaWYgKElzQShuLCBMaXN0KSkKKwkJCQlxdWVyeXRyZWVfbGlzdCA9IGNh c3ROb2RlKExpc3QsIG4pOworCQkJZWxzZQorCQkJCXF1ZXJ5dHJlZV9saXN0ID0gbGlzdF9t YWtlMShsaXN0X21ha2UxKG4pKTsKKwkJfQorCQllbHNlCiAJCXsKKwkJCXByb3NyYyA9IFRl eHREYXR1bUdldENTdHJpbmcodG1wKTsKKworCQkJY2FsbGJhY2tfYXJnLnByb3NyYyA9IHBy b3NyYzsKKwogCQkJLyoKLQkJCSAqIE9LIHRvIGRvIGZ1bGwgcHJlY2hlY2s6IGFuYWx5emUg YW5kIHJld3JpdGUgdGhlIHF1ZXJpZXMsIHRoZW4KLQkJCSAqIHZlcmlmeSB0aGUgcmVzdWx0 IHR5cGUuCisJCQkgKiBXZSBjYW4ndCBkbyBmdWxsIHByZWNoZWNraW5nIG9mIHRoZSBmdW5j dGlvbiBkZWZpbml0aW9uIGlmIHRoZXJlCisJCQkgKiBhcmUgYW55IHBvbHltb3JwaGljIGlu cHV0IHR5cGVzLCBiZWNhdXNlIGFjdHVhbCBkYXRhdHlwZXMgb2YKKwkJCSAqIGV4cHJlc3Np b24gcmVzdWx0cyB3aWxsIGJlIHVucmVzb2x2YWJsZS4gIFRoZSBjaGVjayB3aWxsIGJlIGRv bmUgYXQKKwkJCSAqIHJ1bnRpbWUgaW5zdGVhZC4KKwkJCSAqCisJCQkgKiBXZSBjYW4gcnVu IHRoZSB0ZXh0IHRocm91Z2ggdGhlIHJhdyBwYXJzZXIgdGhvdWdoOyB0aGlzIHdpbGwgYXQK KwkJCSAqIGxlYXN0IGNhdGNoIHNpbGx5IHN5bnRhY3RpYyBlcnJvcnMuCiAJCQkgKi8KLQkJ CVNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRyIHBpbmZvOwotCQkJT2lkCQkJcmV0dHlwZTsKLQkJ CVR1cGxlRGVzYwlyZXR0dXBkZXNjOworCQkJcmF3X3BhcnNldHJlZV9saXN0ID0gcGdfcGFy c2VfcXVlcnkocHJvc3JjKTsKIAotCQkJLyogQnV0IGZpcnN0LCBzZXQgdXAgcGFyYW1ldGVy IGluZm9ybWF0aW9uICovCi0JCQlwaW5mbyA9IHByZXBhcmVfc3FsX2ZuX3BhcnNlX2luZm8o dHVwbGUsIE5VTEwsIEludmFsaWRPaWQpOwotCi0JCQlxdWVyeXRyZWVfbGlzdCA9IE5JTDsK LQkJCWZvcmVhY2gobGMsIHJhd19wYXJzZXRyZWVfbGlzdCkKKwkJCWlmICghaGFzcG9seWFy ZykKIAkJCXsKLQkJCQlSYXdTdG10ICAgICpwYXJzZXRyZWUgPSBsZmlyc3Rfbm9kZShSYXdT dG10LCBsYyk7Ci0JCQkJTGlzdAkgICAqcXVlcnl0cmVlX3N1Ymxpc3Q7Ci0KLQkJCQlxdWVy eXRyZWVfc3VibGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1zKHBhcnNldHJl ZSwKLQkJCQkJCQkJCQkJCQkJCQkgIHByb3NyYywKLQkJCQkJCQkJCQkJCQkJCQkgIChQYXJz ZXJTZXR1cEhvb2spIHNxbF9mbl9wYXJzZXJfc2V0dXAsCi0JCQkJCQkJCQkJCQkJCQkJICBw aW5mbywKLQkJCQkJCQkJCQkJCQkJCQkgIE5VTEwpOwotCQkJCXF1ZXJ5dHJlZV9saXN0ID0g bGFwcGVuZChxdWVyeXRyZWVfbGlzdCwKLQkJCQkJCQkJCQkgcXVlcnl0cmVlX3N1Ymxpc3Qp OworCQkJCS8qCisJCQkJICogT0sgdG8gZG8gZnVsbCBwcmVjaGVjazogYW5hbHl6ZSBhbmQg cmV3cml0ZSB0aGUgcXVlcmllcywgdGhlbgorCQkJCSAqIHZlcmlmeSB0aGUgcmVzdWx0IHR5 cGUuCisJCQkJICovCisJCQkJU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIgcGluZm87CisKKwkJ CQkvKiBCdXQgZmlyc3QsIHNldCB1cCBwYXJhbWV0ZXIgaW5mb3JtYXRpb24gKi8KKwkJCQlw aW5mbyA9IHByZXBhcmVfc3FsX2ZuX3BhcnNlX2luZm8odHVwbGUsIE5VTEwsIEludmFsaWRP aWQpOworCisJCQkJcXVlcnl0cmVlX2xpc3QgPSBOSUw7CisJCQkJZm9yZWFjaChsYywgcmF3 X3BhcnNldHJlZV9saXN0KQorCQkJCXsKKwkJCQkJUmF3U3RtdCAgICAqcGFyc2V0cmVlID0g bGZpcnN0X25vZGUoUmF3U3RtdCwgbGMpOworCQkJCQlMaXN0CSAgICpxdWVyeXRyZWVfc3Vi bGlzdDsKKworCQkJCQlxdWVyeXRyZWVfc3VibGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3Jp dGVfcGFyYW1zKHBhcnNldHJlZSwKKwkJCQkJCQkJCQkJCQkJCQkJICBwcm9zcmMsCisJCQkJ CQkJCQkJCQkJCQkJCSAgKFBhcnNlclNldHVwSG9vaykgc3FsX2ZuX3BhcnNlcl9zZXR1cCwK KwkJCQkJCQkJCQkJCQkJCQkJICBwaW5mbywKKwkJCQkJCQkJCQkJCQkJCQkJICBOVUxMKTsK KwkJCQkJcXVlcnl0cmVlX2xpc3QgPSBsYXBwZW5kKHF1ZXJ5dHJlZV9saXN0LAorCQkJCQkJ CQkJCQkgcXVlcnl0cmVlX3N1Ymxpc3QpOworCQkJCX0KIAkJCX0KKwkJfQorCisJCWlmICgh aGFzcG9seWFyZykKKwkJeworCQkJT2lkCQkJcmV0dHlwZTsKKwkJCVR1cGxlRGVzYwlyZXR0 dXBkZXNjOwogCiAJCQljaGVja19zcWxfZm5fc3RhdGVtZW50cyhxdWVyeXRyZWVfbGlzdCk7 CiAKQEAgLTk2OCw2ICs5OTksOSBAQCBmdW5jdGlvbl9wYXJzZV9lcnJvcl90cmFuc3Bvc2Uo Y29uc3QgY2hhciAqcHJvc3JjKQogCWludAkJCW5ld2VycnBvc2l0aW9uOwogCWNvbnN0IGNo YXIgKnF1ZXJ5VGV4dDsKIAorCWlmICghcHJvc3JjKQorCQlyZXR1cm4gZmFsc2U7CisKIAkv KgogCSAqIE5vdGhpbmcgdG8gZG8gdW5sZXNzIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzeW50 YXggZXJyb3IgdGhhdCBoYXMgYQogCSAqIGN1cnNvciBwb3NpdGlvbi4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYwppbmRleCA2OWM1MGFjMDg3Li4wNDZjZjJkZjA4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jCkBAIC0zMTIsOSArMzEyLDEx IEBAIERlZmluZUFnZ3JlZ2F0ZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJICBJ bnZhbGlkT2lkLAogCQkJCQkJCQkJCSAgT0JKRUNUX0FHR1JFR0FURSwKIAkJCQkJCQkJCQkg ICZwYXJhbWV0ZXJUeXBlcywKKwkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICAmYWxs UGFyYW1ldGVyVHlwZXMsCiAJCQkJCQkJCQkJICAmcGFyYW1ldGVyTW9kZXMsCiAJCQkJCQkJ CQkJICAmcGFyYW1ldGVyTmFtZXMsCisJCQkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkJCSAg JnBhcmFtZXRlckRlZmF1bHRzLAogCQkJCQkJCQkJCSAgJnZhcmlhZGljQXJnVHlwZSwKIAkJ CQkJCQkJCQkgICZyZXF1aXJlZFJlc3VsdFR5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5j dGlvbmNtZHMuYwppbmRleCA3YTRlMTA0NjIzLi5kMTFmNjc0NWJlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9mdW5jdGlvbmNtZHMuYwpAQCAtNTMsMTUgKzUzLDE4IEBACiAjaW5jbHVkZSAi Y29tbWFuZHMvcHJvY2xhbmcuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZnVu Y3Rpb25zLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIv YW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHBy LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInRjb3AvdXRp bGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTE4Niw5ICsxODksMTEg QEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9saXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJICBPaWQgbGFuZ3VhZ2VPaWQsCiAJCQkJCQkJCSAgT2JqZWN0VHlwZSBv Ymp0eXBlLAogCQkJCQkJCQkgIG9pZHZlY3RvciAqKnBhcmFtZXRlclR5cGVzLAorCQkJCQkJ CQkgIExpc3QgKipwYXJhbWV0ZXJUeXBlc19saXN0LAogCQkJCQkJCQkgIEFycmF5VHlwZSAq KmFsbFBhcmFtZXRlclR5cGVzLAogCQkJCQkJCQkgIEFycmF5VHlwZSAqKnBhcmFtZXRlck1v ZGVzLAogCQkJCQkJCQkgIEFycmF5VHlwZSAqKnBhcmFtZXRlck5hbWVzLAorCQkJCQkJCQkg IExpc3QgKippblBhcmFtZXRlck5hbWVzX2xpc3QsCiAJCQkJCQkJCSAgTGlzdCAqKnBhcmFt ZXRlckRlZmF1bHRzLAogCQkJCQkJCQkgIE9pZCAqdmFyaWFkaWNBcmdUeXBlLAogCQkJCQkJ CQkgIE9pZCAqcmVxdWlyZWRSZXN1bHRUeXBlKQpAQCAtMjgzLDcgKzI4OCwxMSBAQCBpbnRl cnByZXRfZnVuY3Rpb25fcGFyYW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJ CS8qIGhhbmRsZSBpbnB1dCBwYXJhbWV0ZXJzICovCiAJCWlmIChmcC0+bW9kZSAhPSBGVU5D X1BBUkFNX09VVCAmJiBmcC0+bW9kZSAhPSBGVU5DX1BBUkFNX1RBQkxFKQorCQl7CiAJCQlp c2lucHV0ID0gdHJ1ZTsKKwkJCWlmIChwYXJhbWV0ZXJUeXBlc19saXN0KQorCQkJCSpwYXJh bWV0ZXJUeXBlc19saXN0ID0gbGFwcGVuZF9vaWQoKnBhcmFtZXRlclR5cGVzX2xpc3QsIHRv aWQpOworCQl9CiAKIAkJLyogaGFuZGxlIHNpZ25hdHVyZSBwYXJhbWV0ZXJzICovCiAJCWlm IChmcC0+bW9kZSA9PSBGVU5DX1BBUkFNX0lOIHx8IGZwLT5tb2RlID09IEZVTkNfUEFSQU1f SU5PVVQgfHwKQEAgLTM3Miw2ICszODEsOSBAQCBpbnRlcnByZXRfZnVuY3Rpb25fcGFyYW1l dGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJaGF2ZV9uYW1lcyA9IHRydWU7CiAJ CX0KIAorCQlpZiAoaW5QYXJhbWV0ZXJOYW1lc19saXN0KQorCQkJKmluUGFyYW1ldGVyTmFt ZXNfbGlzdCA9IGxhcHBlbmQoKmluUGFyYW1ldGVyTmFtZXNfbGlzdCwgbWFrZVN0cmluZyhm cC0+bmFtZSA/IGZwLT5uYW1lIDogcHN0cmR1cCgiIikpKTsKKwogCQlpZiAoZnAtPmRlZmV4 cHIpCiAJCXsKIAkJCU5vZGUJICAgKmRlZjsKQEAgLTc4NiwyOCArNzk4LDEwIEBAIGNvbXB1 dGVfZnVuY3Rpb25fYXR0cmlidXRlcyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGRlZmVs LT5kZWZuYW1lKTsKIAl9CiAKLQkvKiBwcm9jZXNzIHJlcXVpcmVkIGl0ZW1zICovCiAJaWYg KGFzX2l0ZW0pCiAJCSphcyA9IChMaXN0ICopIGFzX2l0ZW0tPmFyZzsKLQllbHNlCi0Jewot CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElP Tl9ERUZJTklUSU9OKSwKLQkJCQkgZXJybXNnKCJubyBmdW5jdGlvbiBib2R5IHNwZWNpZmll ZCIpKSk7Ci0JCSphcyA9IE5JTDsJCQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCX0K LQogCWlmIChsYW5ndWFnZV9pdGVtKQogCQkqbGFuZ3VhZ2UgPSBzdHJWYWwobGFuZ3VhZ2Vf aXRlbS0+YXJnKTsKLQllbHNlCi0JewotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKLQkJCQkgZXJybXNnKCJu byBsYW5ndWFnZSBzcGVjaWZpZWQiKSkpOwotCQkqbGFuZ3VhZ2UgPSBOVUxMOwkJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLwotCX0KLQotCS8qIHByb2Nlc3Mgb3B0aW9uYWwgaXRlbXMg Ki8KIAlpZiAodHJhbnNmb3JtX2l0ZW0pCiAJCSp0cmFuc2Zvcm0gPSB0cmFuc2Zvcm1faXRl bS0+YXJnOwogCWlmICh3aW5kb3dmdW5jX2l0ZW0pCkBAIC04NTYsMTAgKzg1MCwyMSBAQCBj b21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogICovCiBz dGF0aWMgdm9pZAogaW50ZXJwcmV0X0FTX2NsYXVzZShPaWQgbGFuZ3VhZ2VPaWQsIGNvbnN0 IGNoYXIgKmxhbmd1YWdlTmFtZSwKLQkJCQkJY2hhciAqZnVuY25hbWUsIExpc3QgKmFzLAot CQkJCQljaGFyICoqcHJvc3JjX3N0cl9wLCBjaGFyICoqcHJvYmluX3N0cl9wKQorCQkJCQlj aGFyICpmdW5jbmFtZSwgTGlzdCAqYXMsIE5vZGUgKnNxbF9ib2R5X2luLAorCQkJCQlMaXN0 ICpwYXJhbWV0ZXJUeXBlcywgTGlzdCAqaW5QYXJhbWV0ZXJOYW1lcywKKwkJCQkJY2hhciAq KnByb3NyY19zdHJfcCwgY2hhciAqKnByb2Jpbl9zdHJfcCwgTm9kZSAqKnNxbF9ib2R5X291 dCkKIHsKLQlBc3NlcnQoYXMgIT0gTklMKTsKKwlpZiAoc3FsX2JvZHlfaW4gJiYgYXMpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZVTkNUSU9O X0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImR1cGxpY2F0ZSBmdW5jdGlvbiBib2R5IHNw ZWNpZmllZCIpKSk7CisKKwlpZiAoc3FsX2JvZHlfaW4gJiYgbGFuZ3VhZ2VPaWQgIT0gU1FM bGFuZ3VhZ2VJZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfRlVOQ1RJT05fREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiaW5saW5lIFNRTCBm dW5jdGlvbiBib2R5IG9ubHkgdmFsaWQgZm9yIGxhbmd1YWdlIFNRTCIpKSk7CisKKwkqc3Fs X2JvZHlfb3V0ID0gTlVMTDsKIAogCWlmIChsYW5ndWFnZU9pZCA9PSBDbGFuZ3VhZ2VJZCkK IAl7CkBAIC04ODEsNiArODg2LDc2IEBAIGludGVycHJldF9BU19jbGF1c2UoT2lkIGxhbmd1 YWdlT2lkLCBjb25zdCBjaGFyICpsYW5ndWFnZU5hbWUsCiAJCQkJKnByb3NyY19zdHJfcCA9 IGZ1bmNuYW1lOwogCQl9CiAJfQorCWVsc2UgaWYgKHNxbF9ib2R5X2luKQorCXsKKwkJU1FM RnVuY3Rpb25QYXJzZUluZm9QdHIgcGluZm87CisKKwkJcGluZm8gPSAoU1FMRnVuY3Rpb25Q YXJzZUluZm9QdHIpIHBhbGxvYzAoc2l6ZW9mKFNRTEZ1bmN0aW9uUGFyc2VJbmZvKSk7CisK KwkJcGluZm8tPmZuYW1lID0gZnVuY25hbWU7CisJCXBpbmZvLT5uYXJncyA9IGxpc3RfbGVu Z3RoKHBhcmFtZXRlclR5cGVzKTsKKwkJcGluZm8tPmFyZ3R5cGVzID0gKE9pZCAqKSBwYWxs b2MocGluZm8tPm5hcmdzICogc2l6ZW9mKE9pZCkpOworCQlwaW5mby0+YXJnbmFtZXMgPSAo Y2hhciAqKikgcGFsbG9jKHBpbmZvLT5uYXJncyAqIHNpemVvZihjaGFyICopKTsKKwkJZm9y IChpbnQgaSA9IDA7IGkgPCBsaXN0X2xlbmd0aChwYXJhbWV0ZXJUeXBlcyk7IGkrKykKKwkJ eworCQkJY2hhciAqcyA9IHN0clZhbChsaXN0X250aChpblBhcmFtZXRlck5hbWVzLCBpKSk7 CisKKwkJCXBpbmZvLT5hcmd0eXBlc1tpXSA9IGxpc3RfbnRoX29pZChwYXJhbWV0ZXJUeXBl cywgaSk7CisJCQlpZiAoSXNQb2x5bW9ycGhpY1R5cGUocGluZm8tPmFyZ3R5cGVzW2ldKSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZV TkNUSU9OX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygiU1FMIGZ1bmN0aW9uIHdpdGgg dW5xdW90ZWQgZnVuY3Rpb24gYm9keSBjYW5ub3QgaGF2ZSBwb2x5bW9ycGhpYyBhcmd1bWVu dHMiKSkpOworCisJCQlpZiAoc1swXSAhPSAnXDAnKQorCQkJCXBpbmZvLT5hcmduYW1lc1tp XSA9IHM7CisJCQllbHNlCisJCQkJcGluZm8tPmFyZ25hbWVzW2ldID0gTlVMTDsKKwkJfQor CisJCWlmIChJc0Eoc3FsX2JvZHlfaW4sIExpc3QpKQorCQl7CisJCQlMaXN0CSAgICpzdG10 cyA9IGxpbml0aWFsX25vZGUoTGlzdCwgY2FzdE5vZGUoTGlzdCwgc3FsX2JvZHlfaW4pKTsK KwkJCUxpc3RDZWxsICAgKmxjOworCQkJTGlzdAkgICAqdHJhbnNmb3JtZWRfc3RtdHMgPSBO SUw7CisKKwkJCWZvcmVhY2gobGMsIHN0bXRzKQorCQkJeworCQkJCU5vZGUJICAgKnN0bXQg PSBsZmlyc3QobGMpOworCQkJCVF1ZXJ5CSAgICpxOworCQkJCVBhcnNlU3RhdGUgKnBzdGF0 ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKKworCQkJCXNxbF9mbl9wYXJzZXJfc2V0dXAo cHN0YXRlLCBwaW5mbyk7CisJCQkJcSA9IHRyYW5zZm9ybVN0bXQocHN0YXRlLCBzdG10KTsK KwkJCQlpZiAocS0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCQkJZXJybXNnKCIlcyBpcyBub3QgeWV0IHN1cHBvcnRlZCBpbiB1bnF1b3RlZCBT UUwgZnVuY3Rpb24gYm9keSIsCisJCQkJCQkJCSAgIEdldENvbW1hbmRUYWdOYW1lKENyZWF0 ZUNvbW1hbmRUYWcocS0+dXRpbGl0eVN0bXQpKSkpOworCQkJCXRyYW5zZm9ybWVkX3N0bXRz ID0gbGFwcGVuZCh0cmFuc2Zvcm1lZF9zdG10cywgcSk7CisJCQkJZnJlZV9wYXJzZXN0YXRl KHBzdGF0ZSk7CisJCQl9CisKKwkJCSpzcWxfYm9keV9vdXQgPSAoTm9kZSAqKSBsaXN0X21h a2UxKHRyYW5zZm9ybWVkX3N0bXRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVF1ZXJ5CSAg ICpxOworCQkJUGFyc2VTdGF0ZSAqcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOwor CisJCQlzcWxfZm5fcGFyc2VyX3NldHVwKHBzdGF0ZSwgcGluZm8pOworCQkJcSA9IHRyYW5z Zm9ybVN0bXQocHN0YXRlLCBzcWxfYm9keV9pbik7CisJCQlpZiAocS0+Y29tbWFuZFR5cGUg PT0gQ01EX1VUSUxJVFkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCIlcyBpcyBub3Qg eWV0IHN1cHBvcnRlZCBpbiB1bnF1b3RlZCBTUUwgZnVuY3Rpb24gYm9keSIsCisJCQkJCQkJ ICAgR2V0Q29tbWFuZFRhZ05hbWUoQ3JlYXRlQ29tbWFuZFRhZyhxLT51dGlsaXR5U3RtdCkp KSk7CisKKwkJCSpzcWxfYm9keV9vdXQgPSAoTm9kZSAqKSBxOworCQl9CisKKwkJKnByb2Jp bl9zdHJfcCA9IE5VTEw7CisJCSpwcm9zcmNfc3RyX3AgPSBOVUxMOworCX0KIAllbHNlCiAJ ewogCQkvKiBFdmVyeXRoaW5nIGVsc2Ugd2FudHMgdGhlIGdpdmVuIHN0cmluZyBpbiBwcm9z cmMuICovCkBAIC05MTksNiArOTk0LDcgQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0bXQpCiB7CiAJY2hhcgkgICAqcHJvYmlu X3N0cjsKIAljaGFyCSAgICpwcm9zcmNfc3RyOworCU5vZGUJICAgKnByb3NxbGJvZHk7CiAJ T2lkCQkJcHJvcmV0dHlwZTsKIAlib29sCQlyZXR1cm5zU2V0OwogCWNoYXIJICAgKmxhbmd1 YWdlOwpAQCAtOTI5LDkgKzEwMDUsMTEgQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0bXQpCiAJT2lkCQkJbmFtZXNwYWNlSWQ7 CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlvaWR2ZWN0b3IgICpwYXJhbWV0ZXJUeXBlczsK KwlMaXN0CSAgICpwYXJhbWV0ZXJUeXBlc19saXN0ID0gTklMOwogCUFycmF5VHlwZSAgKmFs bFBhcmFtZXRlclR5cGVzOwogCUFycmF5VHlwZSAgKnBhcmFtZXRlck1vZGVzOwogCUFycmF5 VHlwZSAgKnBhcmFtZXRlck5hbWVzOworCUxpc3QJICAgKmluUGFyYW1ldGVyTmFtZXNfbGlz dCA9IE5JTDsKIAlMaXN0CSAgICpwYXJhbWV0ZXJEZWZhdWx0czsKIAlPaWQJCQl2YXJpYWRp Y0FyZ1R5cGU7CiAJTGlzdAkgICAqdHJmdHlwZXNfbGlzdCA9IE5JTDsKQEAgLTk2Miw2ICsx MDQwLDggQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5j dGlvblN0bXQgKnN0bXQpCiAJCQkJCSAgIGdldF9uYW1lc3BhY2VfbmFtZShuYW1lc3BhY2VJ ZCkpOwogCiAJLyogU2V0IGRlZmF1bHQgYXR0cmlidXRlcyAqLworCWFzX2NsYXVzZSA9IE5V TEw7CisJbGFuZ3VhZ2UgPSAic3FsIjsKIAlpc1dpbmRvd0Z1bmMgPSBmYWxzZTsKIAlpc1N0 cmljdCA9IGZhbHNlOwogCXNlY3VyaXR5ID0gZmFsc2U7CkBAIC0xMDUzLDkgKzExMzMsMTEg QEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0 bXQgKnN0bXQpCiAJCQkJCQkJCQkgIGxhbmd1YWdlT2lkLAogCQkJCQkJCQkJICBzdG10LT5p c19wcm9jZWR1cmUgPyBPQkpFQ1RfUFJPQ0VEVVJFIDogT0JKRUNUX0ZVTkNUSU9OLAogCQkJ CQkJCQkJICAmcGFyYW1ldGVyVHlwZXMsCisJCQkJCQkJCQkgICZwYXJhbWV0ZXJUeXBlc19s aXN0LAogCQkJCQkJCQkJICAmYWxsUGFyYW1ldGVyVHlwZXMsCiAJCQkJCQkJCQkgICZwYXJh bWV0ZXJNb2RlcywKIAkJCQkJCQkJCSAgJnBhcmFtZXRlck5hbWVzLAorCQkJCQkJCQkJICAm aW5QYXJhbWV0ZXJOYW1lc19saXN0LAogCQkJCQkJCQkJICAmcGFyYW1ldGVyRGVmYXVsdHMs CiAJCQkJCQkJCQkgICZ2YXJpYWRpY0FyZ1R5cGUsCiAJCQkJCQkJCQkgICZyZXF1aXJlZFJl c3VsdFR5cGUpOwpAQCAtMTExMiw4ICsxMTk0LDkgQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0bXQpCiAJCXRyZnR5cGVzID0g TlVMTDsKIAl9CiAKLQlpbnRlcnByZXRfQVNfY2xhdXNlKGxhbmd1YWdlT2lkLCBsYW5ndWFn ZSwgZnVuY25hbWUsIGFzX2NsYXVzZSwKLQkJCQkJCSZwcm9zcmNfc3RyLCAmcHJvYmluX3N0 cik7CisJaW50ZXJwcmV0X0FTX2NsYXVzZShsYW5ndWFnZU9pZCwgbGFuZ3VhZ2UsIGZ1bmNu YW1lLCBhc19jbGF1c2UsIHN0bXQtPnNxbF9ib2R5LAorCQkJCQkJcGFyYW1ldGVyVHlwZXNf bGlzdCwgaW5QYXJhbWV0ZXJOYW1lc19saXN0LAorCQkJCQkJJnByb3NyY19zdHIsICZwcm9i aW5fc3RyLCAmcHJvc3FsYm9keSk7CiAKIAkvKgogCSAqIFNldCBkZWZhdWx0IHZhbHVlcyBm b3IgQ09TVCBhbmQgUk9XUyBkZXBlbmRpbmcgb24gb3RoZXIgcGFyYW1ldGVyczsKQEAgLTEx NTUsNiArMTIzOCw3IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlRnVuY3Rpb25TdG10ICpzdG10KQogCQkJCQkJICAgbGFuZ3VhZ2VWYWxpZGF0b3IsCiAJ CQkJCQkgICBwcm9zcmNfc3RyLAkvKiBjb252ZXJ0ZWQgdG8gdGV4dCBsYXRlciAqLwogCQkJ CQkJICAgcHJvYmluX3N0ciwJLyogY29udmVydGVkIHRvIHRleHQgbGF0ZXIgKi8KKwkJCQkJ CSAgIHByb3NxbGJvZHksCiAJCQkJCQkgICBzdG10LT5pc19wcm9jZWR1cmUgPyBQUk9LSU5E X1BST0NFRFVSRSA6IChpc1dpbmRvd0Z1bmMgPyBQUk9LSU5EX1dJTkRPVyA6IFBST0tJTkRf RlVOQ1RJT04pLAogCQkJCQkJICAgc2VjdXJpdHksCiAJCQkJCQkgICBpc0xlYWtQcm9vZiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDc2MjE4ZmI0N2UuLmU5NzU1MDhmZmEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMTc3NSw2ICsxNzc1LDcgQEAgbWFr ZVJhbmdlQ29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1lc3BhY2UsCiAJ CQkJCQkJCSBGX0ZNR1JfSU5URVJOQUxfVkFMSURBVE9SLCAvKiBsYW5ndWFnZSB2YWxpZGF0 b3IgKi8KIAkJCQkJCQkJIHByb3NyY1tpXSwgLyogcHJvc3JjICovCiAJCQkJCQkJCSBOVUxM LAkvKiBwcm9iaW4gKi8KKwkJCQkJCQkJIE5VTEwsCS8qIHByb3NxbGJvZHkgKi8KIAkJCQkJ CQkJIFBST0tJTkRfRlVOQ1RJT04sCiAJCQkJCQkJCSBmYWxzZSwgLyogc2VjdXJpdHlfZGVm aW5lciAqLwogCQkJCQkJCQkgZmFsc2UsIC8qIGxlYWtwcm9vZiAqLwpAQCAtMTgzOSw2ICsx ODQwLDcgQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3QgY2hhciAqbmFtZSwg T2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkgRl9GTUdSX0lOVEVSTkFMX1ZBTElEQVRPUiwKIAkJ CQkJCQkgIm11bHRpcmFuZ2VfY29uc3RydWN0b3IwIiwgLyogcHJvc3JjICovCiAJCQkJCQkJ IE5VTEwsCS8qIHByb2JpbiAqLworCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5ICovCiAJ CQkJCQkJIFBST0tJTkRfRlVOQ1RJT04sCiAJCQkJCQkJIGZhbHNlLCAvKiBzZWN1cml0eV9k ZWZpbmVyICovCiAJCQkJCQkJIGZhbHNlLCAvKiBsZWFrcHJvb2YgKi8KQEAgLTE4ODIsNiAr MTg4NCw3IEBAIG1ha2VNdWx0aXJhbmdlQ29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUs IE9pZCBuYW1lc3BhY2UsCiAJCQkJCQkJIEZfRk1HUl9JTlRFUk5BTF9WQUxJREFUT1IsCiAJ CQkJCQkJICJtdWx0aXJhbmdlX2NvbnN0cnVjdG9yMSIsIC8qIHByb3NyYyAqLwogCQkJCQkJ CSBOVUxMLAkvKiBwcm9iaW4gKi8KKwkJCQkJCQkgTlVMTCwJLyogcHJvc3FsYm9keSAqLwog CQkJCQkJCSBQUk9LSU5EX0ZVTkNUSU9OLAogCQkJCQkJCSBmYWxzZSwgLyogc2VjdXJpdHlf ZGVmaW5lciAqLwogCQkJCQkJCSBmYWxzZSwgLyogbGVha3Byb29mICovCkBAIC0xOTIyLDYg KzE5MjUsNyBAQCBtYWtlTXVsdGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1l LCBPaWQgbmFtZXNwYWNlLAogCQkJCQkJCSBGX0ZNR1JfSU5URVJOQUxfVkFMSURBVE9SLAog CQkJCQkJCSAibXVsdGlyYW5nZV9jb25zdHJ1Y3RvcjIiLCAvKiBwcm9zcmMgKi8KIAkJCQkJ CQkgTlVMTCwJLyogcHJvYmluICovCisJCQkJCQkJIE5VTEwsCS8qIHByb3NxbGJvZHkgKi8K IAkJCQkJCQkgUFJPS0lORF9GVU5DVElPTiwKIAkJCQkJCQkgZmFsc2UsIC8qIHNlY3VyaXR5 X2RlZmluZXIgKi8KIAkJCQkJCQkgZmFsc2UsIC8qIGxlYWtwcm9vZiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYwppbmRleCA3YmI3NTJhY2UzLi42NDI2ODM4NDNlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9jb2VyY2UuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCisjaW5jbHVkZSAicmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUg InRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0xMjgs MjEgKzEyOSw2IEBAIHR5cGVkZWYgc3RydWN0CiAKIHR5cGVkZWYgU1FMRnVuY3Rpb25DYWNo ZSAqU1FMRnVuY3Rpb25DYWNoZVB0cjsKIAotLyoKLSAqIERhdGEgc3RydWN0dXJlIG5lZWRl ZCBieSB0aGUgcGFyc2VyIGNhbGxiYWNrIGhvb2tzIHRvIHJlc29sdmUgcGFyYW1ldGVyCi0g KiByZWZlcmVuY2VzIGR1cmluZyBwYXJzaW5nIG9mIGEgU1FMIGZ1bmN0aW9uJ3MgYm9keS4g IFRoaXMgaXMgc2VwYXJhdGUgZnJvbQotICogU1FMRnVuY3Rpb25DYWNoZSBzaW5jZSB3ZSBz b21ldGltZXMgZG8gcGFyc2luZyBzZXBhcmF0ZWx5IGZyb20gZXhlY3V0aW9uLgotICovCi10 eXBlZGVmIHN0cnVjdCBTUUxGdW5jdGlvblBhcnNlSW5mbwotewotCWNoYXIJICAgKmZuYW1l OwkJCS8qIGZ1bmN0aW9uJ3MgbmFtZSAqLwotCWludAkJCW5hcmdzOwkJCS8qIG51bWJlciBv ZiBpbnB1dCBhcmd1bWVudHMgKi8KLQlPaWQJCSAgICphcmd0eXBlczsJCS8qIHJlc29sdmVk IHR5cGVzIG9mIGlucHV0IGFyZ3VtZW50cyAqLwotCWNoYXIJICAqKmFyZ25hbWVzOwkJLyog bmFtZXMgb2YgaW5wdXQgYXJndW1lbnRzOyBOVUxMIGlmIG5vbmUgKi8KLQkvKiBOb3RlIHRo YXQgYXJnbmFtZXNbaV0gY2FuIGJlIE5VTEwsIGlmIHNvbWUgYXJncyBhcmUgdW5uYW1lZCAq LwotCU9pZAkJCWNvbGxhdGlvbjsJCS8qIGZ1bmN0aW9uJ3MgaW5wdXQgY29sbGF0aW9uLCBp ZiBrbm93biAqLwotfQkJCVNRTEZ1bmN0aW9uUGFyc2VJbmZvOwotCiAKIC8qIG5vbi1leHBv cnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogc3RhdGljIE5vZGUgKnNxbF9mbl9wYXJhbV9y ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbVJlZiAqcHJlZik7CkBAIC02MDcsNyArNTkz LDYgQEAgaW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgY29s bGF0aW9uLCBib29sIGxhenlFdmFsT0spCiAJSGVhcFR1cGxlCXByb2NlZHVyZVR1cGxlOwog CUZvcm1fcGdfcHJvYyBwcm9jZWR1cmVTdHJ1Y3Q7CiAJU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGU7Ci0JTGlzdAkgICAqcmF3X3BhcnNldHJlZV9saXN0OwogCUxpc3QJICAgKnF1ZXJ5 VHJlZV9saXN0OwogCUxpc3QJICAgKnJlc3VsdHRsaXN0OwogCUxpc3RDZWxsICAgKmxjOwpA QCAtNjgyLDkgKzY2Nyw2IEBAIGluaXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbywgT2lkIGNvbGxhdGlvbiwgYm9vbCBsYXp5RXZhbE9LKQogCQkJCQkJICBwcm9jZWR1 cmVUdXBsZSwKIAkJCQkJCSAgQW51bV9wZ19wcm9jX3Byb3NyYywKIAkJCQkJCSAgJmlzTnVs bCk7Ci0JaWYgKGlzTnVsbCkKLQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIGZvciBmdW5j dGlvbiAldSIsIGZvaWQpOwotCWZjYWNoZS0+c3JjID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0 bXApOwogCiAJLyoKIAkgKiBQYXJzZSBhbmQgcmV3cml0ZSB0aGUgcXVlcmllcyBpbiB0aGUg ZnVuY3Rpb24gdGV4dC4gIFVzZSBzdWJsaXN0cyB0bwpAQCAtNjk1LDIwICs2NzcsNTUgQEAg aW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgY29sbGF0aW9u LCBib29sIGxhenlFdmFsT0spCiAJICogYnV0IHdlJ2xsIG5vdCB3b3JyeSBhYm91dCBpdCB1 bnRpbCB0aGUgbW9kdWxlIGlzIHJld3JpdHRlbiB0byB1c2UKIAkgKiBwbGFuY2FjaGUuYy4K IAkgKi8KLQlyYXdfcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVyeShmY2FjaGUtPnNy Yyk7Ci0KIAlxdWVyeVRyZWVfbGlzdCA9IE5JTDsKLQlmb3JlYWNoKGxjLCByYXdfcGFyc2V0 cmVlX2xpc3QpCisJaWYgKGlzTnVsbCkKIAl7Ci0JCVJhd1N0bXQgICAgKnBhcnNldHJlZSA9 IGxmaXJzdF9ub2RlKFJhd1N0bXQsIGxjKTsKLQkJTGlzdAkgICAqcXVlcnlUcmVlX3N1Ymxp c3Q7Ci0KLQkJcXVlcnlUcmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX3Bh cmFtcyhwYXJzZXRyZWUsCi0JCQkJCQkJCQkJCQkJCSAgZmNhY2hlLT5zcmMsCi0JCQkJCQkJ CQkJCQkJCSAgKFBhcnNlclNldHVwSG9vaykgc3FsX2ZuX3BhcnNlcl9zZXR1cCwKLQkJCQkJ CQkJCQkJCQkJICBmY2FjaGUtPnBpbmZvLAotCQkJCQkJCQkJCQkJCQkgIE5VTEwpOwotCQlx dWVyeVRyZWVfbGlzdCA9IGxhcHBlbmQocXVlcnlUcmVlX2xpc3QsIHF1ZXJ5VHJlZV9zdWJs aXN0KTsKKwkJTm9kZQkgICAqbjsKKwkJTGlzdAkgICAqc3RvcmVkX3F1ZXJ5X2xpc3Q7CisK KwkJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsCisJCQkJCQkJICBwcm9jZWR1cmVU dXBsZSwKKwkJCQkJCQkgIEFudW1fcGdfcHJvY19wcm9zcWxib2R5LAorCQkJCQkJCSAgJmlz TnVsbCk7CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgYW5k IHByb3NxbGJvZHkgZm9yIGZ1bmN0aW9uICV1IiwgZm9pZCk7CisKKwkJbiA9IHN0cmluZ1Rv Tm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCkpOworCQlpZiAoSXNBKG4sIExpc3QpKQor CQkJc3RvcmVkX3F1ZXJ5X2xpc3QgPSBsaW5pdGlhbF9ub2RlKExpc3QsIGNhc3ROb2RlKExp c3QsIG4pKTsKKwkJZWxzZQorCQkJc3RvcmVkX3F1ZXJ5X2xpc3QgPSBsaXN0X21ha2UxKG4p OworCisJCWZvcmVhY2gobGMsIHN0b3JlZF9xdWVyeV9saXN0KQorCQl7CisJCQlRdWVyeQkg ICAqcGFyc2V0cmVlID0gbGZpcnN0X25vZGUoUXVlcnksIGxjKTsKKwkJCUxpc3QJICAgKnF1 ZXJ5VHJlZV9zdWJsaXN0OworCisJCQlBY3F1aXJlUmV3cml0ZUxvY2tzKHBhcnNldHJlZSwg dHJ1ZSwgZmFsc2UpOworCQkJcXVlcnlUcmVlX3N1Ymxpc3QgPSBwZ19yZXdyaXRlX3F1ZXJ5 KHBhcnNldHJlZSk7CisJCQlxdWVyeVRyZWVfbGlzdCA9IGxhcHBlbmQocXVlcnlUcmVlX2xp c3QsIHF1ZXJ5VHJlZV9zdWJsaXN0KTsKKwkJfQorCX0KKwllbHNlCisJeworCQlMaXN0CSAg ICpyYXdfcGFyc2V0cmVlX2xpc3Q7CisKKwkJZmNhY2hlLT5zcmMgPSBUZXh0RGF0dW1HZXRD U3RyaW5nKHRtcCk7CisKKwkJcmF3X3BhcnNldHJlZV9saXN0ID0gcGdfcGFyc2VfcXVlcnko ZmNhY2hlLT5zcmMpOworCisJCWZvcmVhY2gobGMsIHJhd19wYXJzZXRyZWVfbGlzdCkKKwkJ eworCQkJUmF3U3RtdCAgICAqcGFyc2V0cmVlID0gbGZpcnN0X25vZGUoUmF3U3RtdCwgbGMp OworCQkJTGlzdAkgICAqcXVlcnlUcmVlX3N1Ymxpc3Q7CisKKwkJCXF1ZXJ5VHJlZV9zdWJs aXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9wYXJhbXMocGFyc2V0cmVlLAorCQkJCQkJ CQkJCQkJCQkJICBmY2FjaGUtPnNyYywKKwkJCQkJCQkJCQkJCQkJCSAgKFBhcnNlclNldHVw SG9vaykgc3FsX2ZuX3BhcnNlcl9zZXR1cCwKKwkJCQkJCQkJCQkJCQkJCSAgZmNhY2hlLT5w aW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQlxdWVyeVRyZWVfbGlzdCA9IGxh cHBlbmQocXVlcnlUcmVlX2xpc3QsIHF1ZXJ5VHJlZV9zdWJsaXN0KTsKKwkJfQogCX0KIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGFhYmExZWMyYzQuLjhkNTFiMzlmMzIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0zMTI2LDYgKzMxMjYsNyBAQCBfY29weVF1 ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc01vZGlmeWlu Z0NURSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzRm9yVXBkYXRlKTsKIAlDT1BZX1NDQUxB Ul9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJQ09QWV9TQ0FMQVJfRklFTEQoaXNSZXR1cm4p OwogCUNPUFlfTk9ERV9GSUVMRChjdGVMaXN0KTsKIAlDT1BZX05PREVfRklFTEQocnRhYmxl KTsKIAlDT1BZX05PREVfRklFTEQoam9pbnRyZWUpOwpAQCAtMzI1NCw2ICszMjU1LDE2IEBA IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICpmcm9tKQog CXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMgUmV0dXJuU3RtdCAqCitfY29weVJldHVy blN0bXQoY29uc3QgUmV0dXJuU3RtdCAqZnJvbSkKK3sKKwlSZXR1cm5TdG10ICpuZXdub2Rl ID0gbWFrZU5vZGUoUmV0dXJuU3RtdCk7CisKKwlDT1BZX05PREVfRklFTEQocmV0dXJudmFs KTsKKworCXJldHVybiBuZXdub2RlOworfQorCiBzdGF0aWMgUExBc3NpZ25TdG10ICoKIF9j b3B5UExBc3NpZ25TdG10KGNvbnN0IFBMQXNzaWduU3RtdCAqZnJvbSkKIHsKQEAgLTM2Mzcs NiArMzY0OCw3IEBAIF9jb3B5Q3JlYXRlRnVuY3Rpb25TdG10KGNvbnN0IENyZWF0ZUZ1bmN0 aW9uU3RtdCAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQocGFyYW1ldGVycyk7CiAJQ09QWV9O T0RFX0ZJRUxEKHJldHVyblR5cGUpOwogCUNPUFlfTk9ERV9GSUVMRChvcHRpb25zKTsKKwlD T1BZX05PREVfRklFTEQoc3FsX2JvZHkpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CkBAIC01 MjkzLDYgKzUzMDUsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQlj YXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9u U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfUmV0dXJuU3RtdDoKKwkJCXJldHZh bCA9IF9jb3B5UmV0dXJuU3RtdChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfUExBc3Np Z25TdG10OgogCQkJcmV0dmFsID0gX2NvcHlQTEFzc2lnblN0bXQoZnJvbSk7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBjMmQ3MzYyNmZjLi40NjQyZmEyNGZl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC05NjksNiArOTY5LDcgQEAgX2VxdWFs UXVlcnkoY29uc3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKGhhc01vZGlmeWluZ0NURSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzRm9y VXBkYXRlKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJQ09N UEFSRV9TQ0FMQVJfRklFTEQoaXNSZXR1cm4pOwogCUNPTVBBUkVfTk9ERV9GSUVMRChjdGVM aXN0KTsKIAlDT01QQVJFX05PREVfRklFTEQocnRhYmxlKTsKIAlDT01QQVJFX05PREVfRklF TEQoam9pbnRyZWUpOwpAQCAtMTA4NSw2ICsxMDg2LDE0IEBAIF9lcXVhbFNldE9wZXJhdGlv blN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0T3BlcmF0aW9uU3Rt dCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbFJldHVyblN0 bXQoY29uc3QgUmV0dXJuU3RtdCAqYSwgY29uc3QgUmV0dXJuU3RtdCAqYikKK3sKKwlDT01Q QVJFX05PREVfRklFTEQocmV0dXJudmFsKTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0 aWMgYm9vbAogX2VxdWFsUExBc3NpZ25TdG10KGNvbnN0IFBMQXNzaWduU3RtdCAqYSwgY29u c3QgUExBc3NpZ25TdG10ICpiKQogewpAQCAtMTQwMyw2ICsxNDEyLDcgQEAgX2VxdWFsQ3Jl YXRlRnVuY3Rpb25TdG10KGNvbnN0IENyZWF0ZUZ1bmN0aW9uU3RtdCAqYSwgY29uc3QgQ3Jl YXRlRnVuY3Rpb25TdG10ICoKIAlDT01QQVJFX05PREVfRklFTEQocGFyYW1ldGVycyk7CiAJ Q09NUEFSRV9OT0RFX0ZJRUxEKHJldHVyblR5cGUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChv cHRpb25zKTsKKwlDT01QQVJFX05PREVfRklFTEQoc3FsX2JvZHkpOwogCiAJcmV0dXJuIHRy dWU7CiB9CkBAIC0zMzE4LDYgKzMzMjgsOSBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9l cXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX1JldHVy blN0bXQ6CisJCQlyZXR2YWwgPSBfZXF1YWxSZXR1cm5TdG10KGEsIGIpOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9QTEFzc2lnblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxQTEFzc2lnblN0 bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291 dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDhmYzQzMmJm ZTEuLjg3ODE4NTA0N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc4NCw2ICsyNzg0 LDE0IEBAIF9vdXRTZWxlY3RTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBTZWxlY3RTdG10 ICpub2RlKQogCVdSSVRFX05PREVfRklFTEQocmFyZyk7CiB9CiAKK3N0YXRpYyB2b2lkCitf b3V0UmV0dXJuU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgUmV0dXJuU3RtdCAqbm9kZSkK K3sKKwlXUklURV9OT0RFX1RZUEUoIlJFVFVSTiIpOworCisJV1JJVEVfTk9ERV9GSUVMRChy ZXR1cm52YWwpOworfQorCiBzdGF0aWMgdm9pZAogX291dFBMQXNzaWduU3RtdChTdHJpbmdJ bmZvIHN0ciwgY29uc3QgUExBc3NpZ25TdG10ICpub2RlKQogewpAQCAtMjk4Niw2ICsyOTk0 LDcgQEAgX291dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9kZSkKIAlX UklURV9CT09MX0ZJRUxEKGhhc01vZGlmeWluZ0NURSk7CiAJV1JJVEVfQk9PTF9GSUVMRCho YXNGb3JVcGRhdGUpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzUm93U2VjdXJpdHkpOworCVdS SVRFX0JPT0xfRklFTEQoaXNSZXR1cm4pOwogCVdSSVRFX05PREVfRklFTEQoY3RlTGlzdCk7 CiAJV1JJVEVfTk9ERV9GSUVMRChydGFibGUpOwogCVdSSVRFX05PREVfRklFTEQoam9pbnRy ZWUpOwpAQCAtNDI2NSw2ICs0Mjc0LDkgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29u c3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQkJX291dFNlbGVjdFN0 bXQoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJY2FzZSBUX1JldHVyblN0bXQ6CisJCQkJ X291dFJldHVyblN0bXQoc3RyLCBvYmopOworCQkJCWJyZWFrOwogCQkJY2FzZSBUX1BMQXNz aWduU3RtdDoKIAkJCQlfb3V0UExBc3NpZ25TdG10KHN0ciwgb2JqKTsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggNzE4ZmI1OGU4Ni4uNzgxNzNmMDljYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI2Myw2ICsyNjMsNyBAQCBfcmVhZFF1ZXJ5KHZv aWQpCiAJUkVBRF9CT09MX0ZJRUxEKGhhc01vZGlmeWluZ0NURSk7CiAJUkVBRF9CT09MX0ZJ RUxEKGhhc0ZvclVwZGF0ZSk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc1Jvd1NlY3VyaXR5KTsK KwlSRUFEX0JPT0xfRklFTEQoaXNSZXR1cm4pOwogCVJFQURfTk9ERV9GSUVMRChjdGVMaXN0 KTsKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKIAlSRUFEX05PREVfRklFTEQoam9pbnRy ZWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGYzNzg2ZGQy YjYuLjVmMjM4YWNiZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK QEAgLTQxNTYsMjcgKzQxNTYsNDcgQEAgaW5saW5lX2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9p ZCByZXN1bHRfdHlwZSwgT2lkIHJlc3VsdF9jb2xsaWQsCiAJCQkJCQkJCSAgQUxMT0NTRVRf REVGQVVMVF9TSVpFUyk7CiAJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG15Y3h0 KTsKIAotCS8qIEZldGNoIHRoZSBmdW5jdGlvbiBib2R5ICovCi0JdG1wID0gU3lzQ2FjaGVH ZXRBdHRyKFBST0NPSUQsCi0JCQkJCQkgIGZ1bmNfdHVwbGUsCi0JCQkJCQkgIEFudW1fcGdf cHJvY19wcm9zcmMsCi0JCQkJCQkgICZpc051bGwpOwotCWlmIChpc051bGwpCi0JCWVsb2co RVJST1IsICJudWxsIHByb3NyYyBmb3IgZnVuY3Rpb24gJXUiLCBmdW5jaWQpOwotCXNyYyA9 IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKLQogCS8qCiAJICogU2V0dXAgZXJyb3IgdHJh Y2ViYWNrIHN1cHBvcnQgZm9yIGVyZXBvcnQoKS4gIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4K IAkgKiBmaW5nZXIgdGhlIGZ1bmN0aW9uIHRoYXQgYmFkIGluZm9ybWF0aW9uIGNhbWUgZnJv bS4KIAkgKi8KIAljYWxsYmFja19hcmcucHJvbmFtZSA9IE5hbWVTdHIoZnVuY2Zvcm0tPnBy b25hbWUpOwotCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBzcmM7CisJY2FsbGJhY2tfYXJnLnBy b3NyYyA9IE5VTEw7CiAKIAlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gc3FsX2lubGluZV9l cnJvcl9jYWxsYmFjazsKIAlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopICZjYWxsYmFj a19hcmc7CiAJc3FsZXJyY29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0OwogCisJLyogRmV0Y2gg dGhlIGZ1bmN0aW9uIGJvZHkgKi8KKwl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwK KwkJCQkJCSAgZnVuY190dXBsZSwKKwkJCQkJCSAgQW51bV9wZ19wcm9jX3Byb3NyYywKKwkJ CQkJCSAgJmlzTnVsbCk7CisJaWYgKGlzTnVsbCkKKwl7CisJCU5vZGUJICAgKm47CisJCUxp c3QJICAgKnF1ZXJ5dHJlZV9saXN0OworCisJCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQUk9D T0lELCBmdW5jX3R1cGxlLCBBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSwgJmlzTnVsbCk7CisJ CWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgYW5kIHByb3NxbGJv ZHkgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY2lkKTsKKworCQluID0gc3RyaW5nVG9Ob2RlKFRl eHREYXR1bUdldENTdHJpbmcodG1wKSk7CisJCWlmIChJc0EobiwgTGlzdCkpCisJCQlxdWVy eXRyZWVfbGlzdCA9IGxpbml0aWFsX25vZGUoTGlzdCwgY2FzdE5vZGUoTGlzdCwgbikpOwor CQllbHNlCisJCQlxdWVyeXRyZWVfbGlzdCA9IGxpc3RfbWFrZTEobik7CisJCWlmIChsaXN0 X2xlbmd0aChxdWVyeXRyZWVfbGlzdCkgIT0gMSkKKwkJCWdvdG8gZmFpbDsKKwkJcXVlcnl0 cmVlID0gbGluaXRpYWwocXVlcnl0cmVlX2xpc3QpOworCX0KKwllbHNlCisJeworCXNyYyA9 IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKKworCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBz cmM7CisKIAkvKgogCSAqIFNldCB1cCB0byBoYW5kbGUgcGFyYW1ldGVycyB3aGlsZSBwYXJz aW5nIHRoZSBmdW5jdGlvbiBib2R5LiAgV2UgbmVlZCBhCiAJICogZHVtbXkgRnVuY0V4cHIg bm9kZSBjb250YWluaW5nIHRoZSBhbHJlYWR5LXNpbXBsaWZpZWQgYXJndW1lbnRzIHRvIHBh c3MKQEAgLTQyMjAsNiArNDI0MCw3IEBAIGlubGluZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBP aWQgcmVzdWx0X3R5cGUsIE9pZCByZXN1bHRfY29sbGlkLAogCXF1ZXJ5dHJlZSA9IHRyYW5z Zm9ybVRvcExldmVsU3RtdChwc3RhdGUsIGxpbml0aWFsKHJhd19wYXJzZXRyZWVfbGlzdCkp OwogCiAJZnJlZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisJfQogCiAJLyoKIAkgKiBUaGUgc2lu Z2xlIGNvbW1hbmQgbXVzdCBiZSBhIHNpbXBsZSAiU0VMRUNUIGV4cHJlc3Npb24iLgpAQCAt NDQ3NiwxMiArNDQ5NywxNSBAQCBzcWxfaW5saW5lX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy ZykKIAlpbnQJCQlzeW50YXhlcnJwb3NpdGlvbjsKIAogCS8qIElmIGl0J3MgYSBzeW50YXgg ZXJyb3IsIGNvbnZlcnQgdG8gaW50ZXJuYWwgc3ludGF4IGVycm9yIHJlcG9ydCAqLwotCXN5 bnRheGVycnBvc2l0aW9uID0gZ2V0ZXJycG9zaXRpb24oKTsKLQlpZiAoc3ludGF4ZXJycG9z aXRpb24gPiAwKQorCWlmIChjYWxsYmFja19hcmctPnByb3NyYykKIAl7Ci0JCWVycnBvc2l0 aW9uKDApOwotCQlpbnRlcm5hbGVycnBvc2l0aW9uKHN5bnRheGVycnBvc2l0aW9uKTsKLQkJ aW50ZXJuYWxlcnJxdWVyeShjYWxsYmFja19hcmctPnByb3NyYyk7CisJCXN5bnRheGVycnBv c2l0aW9uID0gZ2V0ZXJycG9zaXRpb24oKTsKKwkJaWYgKHN5bnRheGVycnBvc2l0aW9uID4g MCkKKwkJeworCQkJZXJycG9zaXRpb24oMCk7CisJCQlpbnRlcm5hbGVycnBvc2l0aW9uKHN5 bnRheGVycnBvc2l0aW9uKTsKKwkJCWludGVybmFsZXJycXVlcnkoY2FsbGJhY2tfYXJnLT5w cm9zcmMpOworCQl9CiAJfQogCiAJZXJyY29udGV4dCgiU1FMIGZ1bmN0aW9uIFwiJXNcIiBk dXJpbmcgaW5saW5pbmciLCBjYWxsYmFja19hcmctPnByb25hbWUpOwpAQCAtNDU5Myw3ICs0 NjE3LDYgQEAgaW5saW5lX3NldF9yZXR1cm5pbmdfZnVuY3Rpb24oUGxhbm5lckluZm8gKnJv b3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAlPaWQJCQlmdW5jX29pZDsKIAlIZWFwVHVwbGUJ ZnVuY190dXBsZTsKIAlGb3JtX3BnX3Byb2MgZnVuY2Zvcm07Ci0JY2hhcgkgICAqc3JjOwog CURhdHVtCQl0bXA7CiAJYm9vbAkJaXNOdWxsOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwpA QCAtNDcwMiwyNyArNDcyNSw1MyBAQCBpbmxpbmVfc2V0X3JldHVybmluZ19mdW5jdGlvbihQ bGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcnRlKQogCQkJCQkJCQkgIEFMTE9D U0VUX0RFRkFVTFRfU0laRVMpOwogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyht eWN4dCk7CiAKLQkvKiBGZXRjaCB0aGUgZnVuY3Rpb24gYm9keSAqLwotCXRtcCA9IFN5c0Nh Y2hlR2V0QXR0cihQUk9DT0lELAotCQkJCQkJICBmdW5jX3R1cGxlLAotCQkJCQkJICBBbnVt X3BnX3Byb2NfcHJvc3JjLAotCQkJCQkJICAmaXNOdWxsKTsKLQlpZiAoaXNOdWxsKQotCQll bG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY19vaWQpOwot CXNyYyA9IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKLQogCS8qCiAJICogU2V0dXAgZXJy b3IgdHJhY2ViYWNrIHN1cHBvcnQgZm9yIGVyZXBvcnQoKS4gIFRoaXMgaXMgc28gdGhhdCB3 ZSBjYW4KIAkgKiBmaW5nZXIgdGhlIGZ1bmN0aW9uIHRoYXQgYmFkIGluZm9ybWF0aW9uIGNh bWUgZnJvbS4KIAkgKi8KIAljYWxsYmFja19hcmcucHJvbmFtZSA9IE5hbWVTdHIoZnVuY2Zv cm0tPnByb25hbWUpOwotCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBzcmM7CisJY2FsbGJhY2tf YXJnLnByb3NyYyA9IE5VTEw7CiAKIAlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gc3FsX2lu bGluZV9lcnJvcl9jYWxsYmFjazsKIAlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopICZj YWxsYmFja19hcmc7CiAJc3FsZXJyY29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRf c3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0OwogCisJLyog RmV0Y2ggdGhlIGZ1bmN0aW9uIGJvZHkgKi8KKwl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJP Q09JRCwKKwkJCQkJCSAgZnVuY190dXBsZSwKKwkJCQkJCSAgQW51bV9wZ19wcm9jX3Byb3Ny YywKKwkJCQkJCSAgJmlzTnVsbCk7CisJaWYgKGlzTnVsbCkKKwl7CisJCU5vZGUJICAgKm47 CisKKwkJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIGZ1bmNfdHVwbGUsIEFudW1f cGdfcHJvY19wcm9zcWxib2R5LCAmaXNOdWxsKTsKKwkJaWYgKGlzTnVsbCkKKwkJCWVsb2co RVJST1IsICJudWxsIHByb3NyYyBhbmQgcHJvc3FsYm9keSBmb3IgZnVuY3Rpb24gJXUiLCBm dW5jX29pZCk7CisKKwkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHRt cCkpOworCQlpZiAoSXNBKG4sIExpc3QpKQorCQkJcXVlcnl0cmVlX2xpc3QgPSBsaW5pdGlh bF9ub2RlKExpc3QsIGNhc3ROb2RlKExpc3QsIG4pKTsKKwkJZWxzZQorCQkJcXVlcnl0cmVl X2xpc3QgPSBsaXN0X21ha2UxKG4pOworCQlpZiAobGlzdF9sZW5ndGgocXVlcnl0cmVlX2xp c3QpICE9IDEpCisJCQlnb3RvIGZhaWw7CisJCXF1ZXJ5dHJlZSA9IGxpbml0aWFsKHF1ZXJ5 dHJlZV9saXN0KTsKKworCQlxdWVyeXRyZWVfbGlzdCA9IHBnX3Jld3JpdGVfcXVlcnkocXVl cnl0cmVlKTsKKwkJaWYgKGxpc3RfbGVuZ3RoKHF1ZXJ5dHJlZV9saXN0KSAhPSAxKQorCQkJ Z290byBmYWlsOworCQlxdWVyeXRyZWUgPSBsaW5pdGlhbChxdWVyeXRyZWVfbGlzdCk7CisJ fQorCWVsc2UKKwl7CisJY2hhcgkgICAqc3JjOworCisJc3JjID0gVGV4dERhdHVtR2V0Q1N0 cmluZyh0bXApOworCisJY2FsbGJhY2tfYXJnLnByb3NyYyA9IHNyYzsKKwogCS8qCiAJICog U2V0IHVwIHRvIGhhbmRsZSBwYXJhbWV0ZXJzIHdoaWxlIHBhcnNpbmcgdGhlIGZ1bmN0aW9u IGJvZHkuICBXZSBjYW4KIAkgKiB1c2UgdGhlIEZ1bmNFeHByIGp1c3QgY3JlYXRlZCBhcyB0 aGUgaW5wdXQgZm9yCkBAIC00NzMyLDE4ICs0NzgxLDYgQEAgaW5saW5lX3NldF9yZXR1cm5p bmdfZnVuY3Rpb24oUGxhbm5lckluZm8gKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAkJ CQkJCQkJCSAgKE5vZGUgKikgZmV4cHIsCiAJCQkJCQkJCQkgIGZleHByLT5pbnB1dGNvbGxp ZCk7CiAKLQkvKgotCSAqIEFsc28gcmVzb2x2ZSB0aGUgYWN0dWFsIGZ1bmN0aW9uIHJlc3Vs dCB0dXBkZXNjLCBpZiBjb21wb3NpdGUuICBJZiB0aGUKLQkgKiBmdW5jdGlvbiBpcyBqdXN0 IGRlY2xhcmVkIHRvIHJldHVybiBSRUNPUkQsIGRpZyB0aGUgaW5mbyBvdXQgb2YgdGhlIEFT Ci0JICogY2xhdXNlLgotCSAqLwotCWZ1bmN0eXBjbGFzcyA9IGdldF9leHByX3Jlc3VsdF90 eXBlKChOb2RlICopIGZleHByLCBOVUxMLCAmcmV0dHVwZGVzYyk7Ci0JaWYgKGZ1bmN0eXBj bGFzcyA9PSBUWVBFRlVOQ19SRUNPUkQpCi0JCXJldHR1cGRlc2MgPSBCdWlsZERlc2NGcm9t TGlzdHMocnRmdW5jLT5mdW5jY29sbmFtZXMsCi0JCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29s dHlwZXMsCi0JCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sdHlwbW9kcywKLQkJCQkJCQkJCQly dGZ1bmMtPmZ1bmNjb2xjb2xsYXRpb25zKTsKLQogCS8qCiAJICogUGFyc2UsIGFuYWx5emUs IGFuZCByZXdyaXRlICh1bmxpa2UgaW5saW5lX2Z1bmN0aW9uKCksIHdlIGNhbid0IHNraXAK IAkgKiByZXdyaXRpbmcgaGVyZSkuICBXZSBjYW4gZmFpbCBhcyBzb29uIGFzIHdlIGZpbmQg bW9yZSB0aGFuIG9uZSBxdWVyeSwKQEAgLTQ3NjAsNiArNDc5NywxOSBAQCBpbmxpbmVfc2V0 X3JldHVybmluZ19mdW5jdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAq cnRlKQogCWlmIChsaXN0X2xlbmd0aChxdWVyeXRyZWVfbGlzdCkgIT0gMSkKIAkJZ290byBm YWlsOwogCXF1ZXJ5dHJlZSA9IGxpbml0aWFsKHF1ZXJ5dHJlZV9saXN0KTsKKwl9CisKKwkv KgorCSAqIEFsc28gcmVzb2x2ZSB0aGUgYWN0dWFsIGZ1bmN0aW9uIHJlc3VsdCB0dXBkZXNj LCBpZiBjb21wb3NpdGUuICBJZiB0aGUKKwkgKiBmdW5jdGlvbiBpcyBqdXN0IGRlY2xhcmVk IHRvIHJldHVybiBSRUNPUkQsIGRpZyB0aGUgaW5mbyBvdXQgb2YgdGhlIEFTCisJICogY2xh dXNlLgorCSAqLworCWZ1bmN0eXBjbGFzcyA9IGdldF9leHByX3Jlc3VsdF90eXBlKChOb2Rl ICopIGZleHByLCBOVUxMLCAmcmV0dHVwZGVzYyk7CisJaWYgKGZ1bmN0eXBjbGFzcyA9PSBU WVBFRlVOQ19SRUNPUkQpCisJCXJldHR1cGRlc2MgPSBCdWlsZERlc2NGcm9tTGlzdHMocnRm dW5jLT5mdW5jY29sbmFtZXMsCisJCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sdHlwZXMsCisJ CQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sdHlwbW9kcywKKwkJCQkJCQkJCQlydGZ1bmMtPmZ1 bmNjb2xjb2xsYXRpb25zKTsKIAogCS8qCiAJICogVGhlIHNpbmdsZSBjb21tYW5kIG11c3Qg YmUgYSBwbGFpbiBTRUxFQ1QuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCAwZjNhNzBjNDlh Li41NTRkYjk5ZGYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTY4LDYgKzY4LDcgQEAg c3RhdGljIE5vZGUgKnRyYW5zZm9ybVNldE9wZXJhdGlvblRyZWUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBTZWxlY3RTdG10ICpzdG10LAogCQkJCQkJCQkJICAgYm9vbCBpc1RvcExldmVsLCBM aXN0ICoqdGFyZ2V0bGlzdCk7CiBzdGF0aWMgdm9pZCBkZXRlcm1pbmVSZWN1cnNpdmVDb2xU eXBlcyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBOb2RlICpsYXJnLCBMaXN0 ICpucnRhcmdldGxpc3QpOworc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1SZXR1cm5TdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwgUmV0dXJuU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqcmV0dXJuaW5nTGlzdCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCkBAIC0zMDgsNiArMzA5LDEwIEBA IHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJ CQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfUmV0dXJuU3RtdDoKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybVJldHVyblN0bXQocHN0YXRlLCAoUmV0dXJuU3RtdCAqKSBwYXJzZVRyZWUpOwor CQkJYnJlYWs7CisKIAkJY2FzZSBUX1BMQXNzaWduU3RtdDoKIAkJCXJlc3VsdCA9IHRyYW5z Zm9ybVBMQXNzaWduU3RtdChwc3RhdGUsCiAJCQkJCQkJCQkJICAgKFBMQXNzaWduU3RtdCAq KSBwYXJzZVRyZWUpOwpAQCAtMjIyNyw2ICsyMjMyLDM2IEBAIGRldGVybWluZVJlY3Vyc2l2 ZUNvbFR5cGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFyZywgTGlzdCAqbnJ0YXJn ZXRsaXN0KQogfQogCiAKKy8qCisgKiB0cmFuc2Zvcm1SZXR1cm5TdG10IC0KKyAqCSAgdHJh bnNmb3JtcyBhIHJldHVybiBzdGF0ZW1lbnQKKyAqLworc3RhdGljIFF1ZXJ5ICoKK3RyYW5z Zm9ybVJldHVyblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZXR1cm5TdG10ICpzdG10KQor eworCVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CisKKwlxcnktPmNvbW1hbmRU eXBlID0gQ01EX1NFTEVDVDsKKwlxcnktPmlzUmV0dXJuID0gdHJ1ZTsKKworCXFyeS0+dGFy Z2V0TGlzdCA9IGxpc3RfbWFrZTEobWFrZVRhcmdldEVudHJ5KChFeHByICopIHRyYW5zZm9y bUV4cHIocHN0YXRlLCBzdG10LT5yZXR1cm52YWwsIEVYUFJfS0lORF9TRUxFQ1RfVEFSR0VU KSwKKwkJCQkJCQkJCQkJCSAxLCBOVUxMLCBmYWxzZSkpOworCisJaWYgKHBzdGF0ZS0+cF9y ZXNvbHZlX3Vua25vd25zKQorCQlyZXNvbHZlVGFyZ2V0TGlzdFVua25vd25zKHBzdGF0ZSwg cXJ5LT50YXJnZXRMaXN0KTsKKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJ cXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwp OworCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJcXJ5LT5o YXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKKwlxcnktPmhhc1Rh cmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKKwlxcnktPmhhc0FnZ3MgPSBw c3RhdGUtPnBfaGFzQWdnczsKKworCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwg cXJ5KTsKKworCXJldHVybiBxcnk7Cit9CisKKwogLyoKICAqIHRyYW5zZm9ybVVwZGF0ZVN0 bXQgLQogICoJICB0cmFuc2Zvcm1zIGFuIHVwZGF0ZSBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CmluZGV4IDY1MmJlMGI5NmQuLjY3MDBhNDk3MjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjUy LDcgKzI1Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJc3RydWN0IFNlbGVj dExpbWl0CSpzZWxlY3RsaW1pdDsKIH0KIAotJXR5cGUgPG5vZGU+CXN0bXQgc2NoZW1hX3N0 bXQKKyV0eXBlIDxub2RlPglzdG10IHRvcGxldmVsX3N0bXQgc2NoZW1hX3N0bXQgcm91dGlu ZV9ib2R5X3N0bXQKIAkJQWx0ZXJFdmVudFRyaWdTdG10CiAJCUFsdGVyRGF0YWJhc2VTdG10 IEFsdGVyRGF0YWJhc2VTZXRTdG10IEFsdGVyRG9tYWluU3RtdCBBbHRlckVudW1TdG10CiAJ CUFsdGVyRmR3U3RtdCBBbHRlckZvcmVpZ25TZXJ2ZXJTdG10IEFsdGVyR3JvdXBTdG10CkBA IC0yNzksOSArMjc5LDkgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJR3JhbnRT dG10IEdyYW50Um9sZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhTdG10IElu c2VydFN0bXQKIAkJTGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4 cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAogCQlDcmVhdGVGdW5jdGlvblN0bXQgQWx0 ZXJGdW5jdGlvblN0bXQgUmVpbmRleFN0bXQgUmVtb3ZlQWdnclN0bXQKLQkJUmVtb3ZlRnVu Y1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3RtdCBSZXZva2VTdG10IFJldm9rZVJvbGVT dG10CisJCVJlbW92ZUZ1bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV0dXJu U3RtdCBSZXZva2VTdG10IFJldm9rZVJvbGVTdG10CiAJCVJ1bGVBY3Rpb25TdG10IFJ1bGVB Y3Rpb25TdG10T3JFbXB0eSBSdWxlU3RtdAotCQlTZWNMYWJlbFN0bXQgU2VsZWN0U3RtdCBU cmFuc2FjdGlvblN0bXQgVHJ1bmNhdGVTdG10CisJCVNlY0xhYmVsU3RtdCBTZWxlY3RTdG10 IFRyYW5zYWN0aW9uU3RtdCBUcmFuc2FjdGlvblN0bXRMZWdhY3kgVHJ1bmNhdGVTdG10CiAJ CVVubGlzdGVuU3RtdCBVcGRhdGVTdG10IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNldFN0 bXQgVmFyaWFibGVTZXRTdG10IFZhcmlhYmxlU2hvd1N0bXQKIAkJVmlld1N0bXQgQ2hlY2tQ b2ludFN0bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQKQEAgLTM4NSwxNCArMzg1LDE0IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFjdXVtX3JlbGF0aW9u CiAldHlwZSA8c2VsZWN0bGltaXQ+IG9wdF9zZWxlY3RfbGltaXQgc2VsZWN0X2xpbWl0IGxp bWl0X2NsYXVzZQogCi0ldHlwZSA8bGlzdD4JcGFyc2VfdG9wbGV2ZWwgc3RtdG11bHRpCisl dHlwZSA8bGlzdD4JcGFyc2VfdG9wbGV2ZWwgc3RtdG11bHRpIHJvdXRpbmVfYm9keV9zdG10 X2xpc3QKIAkJCQlPcHRUYWJsZUVsZW1lbnRMaXN0IFRhYmxlRWxlbWVudExpc3QgT3B0SW5o ZXJpdCBkZWZpbml0aW9uCiAJCQkJT3B0VHlwZWRUYWJsZUVsZW1lbnRMaXN0IFR5cGVkVGFi bGVFbGVtZW50TGlzdAogCQkJCXJlbG9wdGlvbnMgb3B0X3JlbG9wdGlvbnMKIAkJCQlPcHRX aXRoIG9wdF9kZWZpbml0aW9uIGZ1bmNfYXJncyBmdW5jX2FyZ3NfbGlzdAogCQkJCWZ1bmNf YXJnc193aXRoX2RlZmF1bHRzIGZ1bmNfYXJnc193aXRoX2RlZmF1bHRzX2xpc3QKIAkJCQlh Z2dyX2FyZ3MgYWdncl9hcmdzX2xpc3QKLQkJCQlmdW5jX2FzIGNyZWF0ZWZ1bmNfb3B0X2xp c3QgYWx0ZXJmdW5jX29wdF9saXN0CisJCQkJZnVuY19hcyBjcmVhdGVmdW5jX29wdF9saXN0 IG9wdF9jcmVhdGVmdW5jX29wdF9saXN0IGFsdGVyZnVuY19vcHRfbGlzdAogCQkJCW9sZF9h Z2dyX2RlZmluaXRpb24gb2xkX2FnZ3JfbGlzdAogCQkJCW9wZXJfYXJndHlwZXMgUnVsZUFj dGlvbkxpc3QgUnVsZUFjdGlvbk11bHRpCiAJCQkJb3B0X2NvbHVtbl9saXN0IGNvbHVtbkxp c3Qgb3B0X25hbWVfbGlzdApAQCAtNDE4LDYgKzQxOCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJCQkJdmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlv bl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdAogCisldHlwZSA8bm9kZT4Jb3B0X3JvdXRp bmVfYm9keQogJXR5cGUgPGxpc3Q+CWdyb3VwX2J5X2xpc3QKICV0eXBlIDxub2RlPglncm91 cF9ieV9pdGVtIGVtcHR5X2dyb3VwaW5nX3NldCByb2xsdXBfY2xhdXNlIGN1YmVfY2xhdXNl CiAldHlwZSA8bm9kZT4JZ3JvdXBpbmdfc2V0c19jbGF1c2UKQEAgLTYyMyw3ICs2MjQsNyBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogLyogb3JkaW5hcnkga2V5IHdvcmRzIGlu IGFscGhhYmV0aWNhbCBvcmRlciAqLwogJXRva2VuIDxrZXl3b3JkPiBBQk9SVF9QIEFCU09M VVRFX1AgQUNDRVNTIEFDVElPTiBBRERfUCBBRE1JTiBBRlRFUgogCUFHR1JFR0FURSBBTEwg QUxTTyBBTFRFUiBBTFdBWVMgQU5BTFlTRSBBTkFMWVpFIEFORCBBTlkgQVJSQVkgQVMgQVND Ci0JQVNTRVJUSU9OIEFTU0lHTk1FTlQgQVNZTU1FVFJJQyBBVCBBVFRBQ0ggQVRUUklCVVRF IEFVVEhPUklaQVRJT04KKwlBU1NFUlRJT04gQVNTSUdOTUVOVCBBU1lNTUVUUklDIEFUIEFU T01JQyBBVFRBQ0ggQVRUUklCVVRFIEFVVEhPUklaQVRJT04KIAogCUJBQ0tXQVJEIEJFRk9S RSBCRUdJTl9QIEJFVFdFRU4gQklHSU5UIEJJTkFSWSBCSVQKIAlCT09MRUFOX1AgQk9USCBC UkVBRFRIIEJZCkBAIC02ODUsNyArNjg2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUYg UkVGRVJFTkNFUyBSRUZFUkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElWRV9QIFJF TEVBU0UgUkVOQU1FIFJFUEVBVEFCTEUgUkVQTEFDRSBSRVBMSUNBCi0JUkVTRVQgUkVTVEFS VCBSRVNUUklDVCBSRVRVUk5JTkcgUkVUVVJOUyBSRVZPS0UgUklHSFQgUk9MRSBST0xMQkFD SyBST0xMVVAKKwlSRVNFVCBSRVNUQVJUIFJFU1RSSUNUIFJFVFVSTiBSRVRVUk5JTkcgUkVU VVJOUyBSRVZPS0UgUklHSFQgUk9MRSBST0xMQkFDSyBST0xMVVAKIAlST1VUSU5FIFJPVVRJ TkVTIFJPVyBST1dTIFJVTEUKIAogCVNBVkVQT0lOVCBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwg U0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVCBTRVFVRU5DRSBTRVFVRU5DRVMKQEAg LTg1NSw3ICs4NTYsNyBAQCBwYXJzZV90b3BsZXZlbDoKICAqIHdlJ2QgZ2V0IC0xIGZvciB0 aGUgbG9jYXRpb24gaW4gc3VjaCBjYXNlcy4KICAqIFdlIGFsc28gdGFrZSBjYXJlIHRvIGRp c2NhcmQgZW1wdHkgc3RhdGVtZW50cyBlbnRpcmVseS4KICAqLwotc3RtdG11bHRpOglzdG10 bXVsdGkgJzsnIHN0bXQKK3N0bXRtdWx0aToJc3RtdG11bHRpICc7JyB0b3BsZXZlbF9zdG10 CiAJCQkJewogCQkJCQlpZiAoJDEgIT0gTklMKQogCQkJCQl7CkBAIC04NjcsNyArODY4LDcg QEAgc3RtdG11bHRpOglzdG10bXVsdGkgJzsnIHN0bXQKIAkJCQkJZWxzZQogCQkJCQkJJCQg PSAkMTsKIAkJCQl9Ci0JCQl8IHN0bXQKKwkJCXwgdG9wbGV2ZWxfc3RtdAogCQkJCXsKIAkJ CQkJaWYgKCQxICE9IE5VTEwpCiAJCQkJCQkkJCA9IGxpc3RfbWFrZTEobWFrZVJhd1N0bXQo JDEsIDApKTsKQEAgLTg3Niw3ICs4NzcsMTYgQEAgc3RtdG11bHRpOglzdG10bXVsdGkgJzsn IHN0bXQKIAkJCQl9CiAJCTsKIAotc3RtdCA6CisvKgorICogdG9wbGV2ZWxfc3RtdCBpbmNs dWRlcyBCRUdJTiBhbmQgRU5ELiAgc3RtdCBkb2VzIG5vdCBpbmNsdWRlIHRoZW0sIGJlY2F1 c2UKKyAqIHRob3NlIHdvcmRzIGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzIGluIGZ1bmN0aW9u IGJvZHlzLgorICovCit0b3BsZXZlbF9zdG10OgorCQkJc3RtdAorCQkJfCBUcmFuc2FjdGlv blN0bXRMZWdhY3kKKwkJOworCitzdG10OgogCQkJQWx0ZXJFdmVudFRyaWdTdG10CiAJCQl8 IEFsdGVyRGF0YWJhc2VTdG10CiAJCQl8IEFsdGVyRGF0YWJhc2VTZXRTdG10CkBAIC03Mzk5 LDcgKzc0MDksNyBAQCBvcHRfbnVsbHNfb3JkZXI6IE5VTExTX0xBIEZJUlNUX1AJCQl7ICQk ID0gU09SVEJZX05VTExTX0ZJUlNUOyB9CiAKIENyZWF0ZUZ1bmN0aW9uU3RtdDoKIAkJCUNS RUFURSBvcHRfb3JfcmVwbGFjZSBGVU5DVElPTiBmdW5jX25hbWUgZnVuY19hcmdzX3dpdGhf ZGVmYXVsdHMKLQkJCVJFVFVSTlMgZnVuY19yZXR1cm4gY3JlYXRlZnVuY19vcHRfbGlzdAor CQkJUkVUVVJOUyBmdW5jX3JldHVybiBvcHRfY3JlYXRlZnVuY19vcHRfbGlzdCBvcHRfcm91 dGluZV9ib2R5CiAJCQkJewogCQkJCQlDcmVhdGVGdW5jdGlvblN0bXQgKm4gPSBtYWtlTm9k ZShDcmVhdGVGdW5jdGlvblN0bXQpOwogCQkJCQluLT5pc19wcm9jZWR1cmUgPSBmYWxzZTsK QEAgLTc0MDgsMTAgKzc0MTgsMTEgQEAgQ3JlYXRlRnVuY3Rpb25TdG10OgogCQkJCQluLT5w YXJhbWV0ZXJzID0gJDU7CiAJCQkJCW4tPnJldHVyblR5cGUgPSAkNzsKIAkJCQkJbi0+b3B0 aW9ucyA9ICQ4OworCQkJCQluLT5zcWxfYm9keSA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICop bjsKIAkJCQl9CiAJCQl8IENSRUFURSBvcHRfb3JfcmVwbGFjZSBGVU5DVElPTiBmdW5jX25h bWUgZnVuY19hcmdzX3dpdGhfZGVmYXVsdHMKLQkJCSAgUkVUVVJOUyBUQUJMRSAnKCcgdGFi bGVfZnVuY19jb2x1bW5fbGlzdCAnKScgY3JlYXRlZnVuY19vcHRfbGlzdAorCQkJICBSRVRV Uk5TIFRBQkxFICcoJyB0YWJsZV9mdW5jX2NvbHVtbl9saXN0ICcpJyBvcHRfY3JlYXRlZnVu Y19vcHRfbGlzdCBvcHRfcm91dGluZV9ib2R5CiAJCQkJewogCQkJCQlDcmVhdGVGdW5jdGlv blN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVGdW5jdGlvblN0bXQpOwogCQkJCQluLT5pc19w cm9jZWR1cmUgPSBmYWxzZTsKQEAgLTc0MjEsMTAgKzc0MzIsMTEgQEAgQ3JlYXRlRnVuY3Rp b25TdG10OgogCQkJCQluLT5yZXR1cm5UeXBlID0gVGFibGVGdW5jVHlwZU5hbWUoJDkpOwog CQkJCQluLT5yZXR1cm5UeXBlLT5sb2NhdGlvbiA9IEA3OwogCQkJCQluLT5vcHRpb25zID0g JDExOworCQkJCQluLT5zcWxfYm9keSA9ICQxMjsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJ CQkJfQogCQkJfCBDUkVBVEUgb3B0X29yX3JlcGxhY2UgRlVOQ1RJT04gZnVuY19uYW1lIGZ1 bmNfYXJnc193aXRoX2RlZmF1bHRzCi0JCQkgIGNyZWF0ZWZ1bmNfb3B0X2xpc3QKKwkJCSAg b3B0X2NyZWF0ZWZ1bmNfb3B0X2xpc3Qgb3B0X3JvdXRpbmVfYm9keQogCQkJCXsKIAkJCQkJ Q3JlYXRlRnVuY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlRnVuY3Rpb25TdG10KTsK IAkJCQkJbi0+aXNfcHJvY2VkdXJlID0gZmFsc2U7CkBAIC03NDMzLDEwICs3NDQ1LDExIEBA IENyZWF0ZUZ1bmN0aW9uU3RtdDoKIAkJCQkJbi0+cGFyYW1ldGVycyA9ICQ1OwogCQkJCQlu LT5yZXR1cm5UeXBlID0gTlVMTDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQ2OworCQkJCQluLT5z cWxfYm9keSA9ICQ3OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJCQl8IENSRUFU RSBvcHRfb3JfcmVwbGFjZSBQUk9DRURVUkUgZnVuY19uYW1lIGZ1bmNfYXJnc193aXRoX2Rl ZmF1bHRzCi0JCQkgIGNyZWF0ZWZ1bmNfb3B0X2xpc3QKKwkJCSAgb3B0X2NyZWF0ZWZ1bmNf b3B0X2xpc3Qgb3B0X3JvdXRpbmVfYm9keQogCQkJCXsKIAkJCQkJQ3JlYXRlRnVuY3Rpb25T dG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlRnVuY3Rpb25TdG10KTsKIAkJCQkJbi0+aXNfcHJv Y2VkdXJlID0gdHJ1ZTsKQEAgLTc0NDUsNiArNzQ1OCw3IEBAIENyZWF0ZUZ1bmN0aW9uU3Rt dDoKIAkJCQkJbi0+cGFyYW1ldGVycyA9ICQ1OwogCQkJCQluLT5yZXR1cm5UeXBlID0gTlVM TDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQ2OworCQkJCQluLT5zcWxfYm9keSA9ICQ3OwogCQkJ CQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJCTsKQEAgLTc3NTUsNiArNzc2OSwxMSBAQCBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlc19saXN0OgogCQkJCQkJCQkJCQkJCXsgJCQgPSBsYXBw ZW5kKCQxLCAkMyk7IH0KIAkJOwogCitvcHRfY3JlYXRlZnVuY19vcHRfbGlzdDoKKwkJCWNy ZWF0ZWZ1bmNfb3B0X2xpc3QKKwkJCXwgLypFTVBUWSovIHsgJCQgPSBOSUw7IH0KKwk7CisK IGNyZWF0ZWZ1bmNfb3B0X2xpc3Q6CiAJCQkvKiBNdXN0IGJlIGF0IGxlYXN0IG9uZSB0byBw cmV2ZW50IGNvbmZsaWN0ICovCiAJCQljcmVhdGVmdW5jX29wdF9pdGVtCQkJCQkJeyAkJCA9 IGxpc3RfbWFrZTEoJDEpOyB9CkBAIC03ODY2LDYgKzc4ODUsNTEgQEAgZnVuY19hczoJU2Nv bnN0CQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygkMSkpOyB9CiAJCQkJfQog CQk7CiAKK1JldHVyblN0bXQ6CVJFVFVSTiBhX2V4cHIKKwkJCQl7CisJCQkJCVJldHVyblN0 bXQgKnIgPSBtYWtlTm9kZShSZXR1cm5TdG10KTsKKwkJCQkJci0+cmV0dXJudmFsID0gKE5v ZGUgKikgJDI7CisJCQkJCSQkID0gKE5vZGUgKikgcjsKKwkJCQl9CisJCTsKKworb3B0X3Jv dXRpbmVfYm9keToKKwkJCVJldHVyblN0bXQKKwkJCQl7CisJCQkJCSQkID0gJDE7CisJCQkJ fQorCQkJfCBCRUdJTl9QIEFUT01JQyByb3V0aW5lX2JvZHlfc3RtdF9saXN0IEVORF9QCisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBBIGNvbXBvdW5kIHN0YXRlbWVudCBpcyBzdG9yZWQg YXMgYSBzaW5nbGUtaXRlbSBsaXN0CisJCQkJCSAqIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2Yg c3RhdGVtZW50cyBhcyBpdHMgbWVtYmVyLiAgVGhhdAorCQkJCQkgKiB3YXksIHRoZSBwYXJz ZSBhbmFseXNpcyBjb2RlIGNhbiB0ZWxsIGFwYXJ0IGFuIGVtcHR5CisJCQkJCSAqIGJvZHkg ZnJvbSBubyBib2R5IGF0IGFsbC4KKwkJCQkJICovCisJCQkJCSQkID0gKE5vZGUgKikgbGlz dF9tYWtlMSgkMyk7CisJCQkJfQorCQkJfCAvKkVNUFRZKi8KKwkJCQl7CisJCQkJCSQkID0g TlVMTDsKKwkJCQl9CisJCTsKKworcm91dGluZV9ib2R5X3N0bXRfbGlzdDoKKwkJCXJvdXRp bmVfYm9keV9zdG10X2xpc3Qgcm91dGluZV9ib2R5X3N0bXQgJzsnCisJCQkJeworCQkJCQkk JCA9IGxhcHBlbmQoJDEsICQyKTsKKwkJCQl9CisJCQl8IC8qRU1QVFkqLworCQkJCXsKKwkJ CQkJJCQgPSBOSUw7CisJCQkJfQorCQk7CisKK3JvdXRpbmVfYm9keV9zdG10OgorCQkJc3Rt dAorCQkJfCBSZXR1cm5TdG10CisJCTsKKwogdHJhbnNmb3JtX3R5cGVfbGlzdDoKIAkJCUZP UiBUWVBFX1AgVHlwZW5hbWUgeyAkJCA9IGxpc3RfbWFrZTEoJDMpOyB9CiAJCQl8IHRyYW5z Zm9ybV90eXBlX2xpc3QgJywnIEZPUiBUWVBFX1AgVHlwZW5hbWUgeyAkJCA9IGxhcHBlbmQo JDEsICQ1KTsgfQpAQCAtOTc5OSwxMyArOTg2Myw2IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJ CQkJbi0+Y2hhaW4gPSAkMzsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBC RUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkK LQkJCQl7Ci0JCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9u U3RtdCk7Ci0JCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0JFR0lOOwotCQkJCQluLT5vcHRp b25zID0gJDM7Ci0JCQkJCSQkID0gKE5vZGUgKiluOwotCQkJCX0KIAkJCXwgU1RBUlQgVFJB TlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5CiAJCQkJewogCQkJCQlU cmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwpAQCAtOTgy MSwxNCArOTg3OCw2IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJCQkJbi0+Y2hhaW4gPSAkMzsK IAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBFTkRfUCBvcHRfdHJhbnNhY3Rp b24gb3B0X3RyYW5zYWN0aW9uX2NoYWluCi0JCQkJewotCQkJCQlUcmFuc2FjdGlvblN0bXQg Km4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwotCQkJCQluLT5raW5kID0gVFJBTlNf U1RNVF9DT01NSVQ7Ci0JCQkJCW4tPm9wdGlvbnMgPSBOSUw7Ci0JCQkJCW4tPmNoYWluID0g JDM7Ci0JCQkJCSQkID0gKE5vZGUgKiluOwotCQkJCX0KIAkJCXwgUk9MTEJBQ0sgb3B0X3Ry YW5zYWN0aW9uIG9wdF90cmFuc2FjdGlvbl9jaGFpbgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rp b25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKQEAgLTk4OTUsNiArOTk0 NCwyNCBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCQkJfQogCQk7CiAKK1RyYW5zYWN0aW9uU3Rt dExlZ2FjeToKKwkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVf bGlzdF9vcl9lbXB0eQorCQkJCXsKKwkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5v ZGUoVHJhbnNhY3Rpb25TdG10KTsKKwkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfQkVHSU47 CisJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQor CQkJfCBFTkRfUCBvcHRfdHJhbnNhY3Rpb24gb3B0X3RyYW5zYWN0aW9uX2NoYWluCisJCQkJ eworCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQp OworCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9DT01NSVQ7CisJCQkJCW4tPm9wdGlvbnMg PSBOSUw7CisJCQkJCW4tPmNoYWluID0gJDM7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJ CX0KKwkJOworCiBvcHRfdHJhbnNhY3Rpb246CVdPUksKIAkJCXwgVFJBTlNBQ1RJT04KIAkJ CXwgLypFTVBUWSovCkBAIC0xNTI3Miw2ICsxNTMzOSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29y ZDoKIAkJCXwgQVNTRVJUSU9OCiAJCQl8IEFTU0lHTk1FTlQKIAkJCXwgQVQKKwkJCXwgQVRP TUlDCiAJCQl8IEFUVEFDSAogCQkJfCBBVFRSSUJVVEUKIAkJCXwgQkFDS1dBUkQKQEAgLTE1 NDcyLDYgKzE1NTQwLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBSRVNFVAogCQkJ fCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCisJCQl8IFJFVFVSTgogCQkJfCBSRVRVUk5TCiAJ CQl8IFJFVk9LRQogCQkJfCBST0xFCkBAIC0xNTc3OCw2ICsxNTg0Nyw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgQVNTSUdOTUVOVAogCQkJfCBBU1lNTUVUUklDCiAJCQl8IEFU CisJCQl8IEFUT01JQwogCQkJfCBBVFRBQ0gKIAkJCXwgQVRUUklCVVRFCiAJCQl8IEFVVEhP UklaQVRJT04KQEAgLTE2MDUwLDYgKzE2MTIwLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBSRVNFVAogCQkJfCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCisJCQl8IFJFVFVSTgog CQkJfCBSRVRVUk5TCiAJCQl8IFJFVk9LRQogCQkJfCBSSUdIVApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CmluZGV4IDhhMDMzMmRkZTkuLmI5ZWY1MTU1MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTE3Nyw3ICsxNzcsNiBAQCBzdGF0aWMgaW50CWludGVyYWN0aXZlX2dldGModm9pZCk7CiBz dGF0aWMgaW50CVNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBpbkJ1Zik7CiBzdGF0aWMgaW50 CVJlYWRDb21tYW5kKFN0cmluZ0luZm8gaW5CdWYpOwogc3RhdGljIHZvaWQgZm9yYmlkZGVu X2luX3dhbF9zZW5kZXIoY2hhciBmaXJzdGNoYXIpOwotc3RhdGljIExpc3QgKnBnX3Jld3Jp dGVfcXVlcnkoUXVlcnkgKnF1ZXJ5KTsKIHN0YXRpYyBib29sIGNoZWNrX2xvZ19zdGF0ZW1l bnQoTGlzdCAqc3RtdF9saXN0KTsKIHN0YXRpYyBpbnQJZXJyZGV0YWlsX2V4ZWN1dGUoTGlz dCAqcmF3X3BhcnNldHJlZV9saXN0KTsKIHN0YXRpYyBpbnQJZXJyZGV0YWlsX3BhcmFtcyhQ YXJhbUxpc3RJbmZvIHBhcmFtcyk7CkBAIC02OTUsNyArNjk0LDcgQEAgcGdfYW5hbHl6ZV9h bmRfcmV3cml0ZV9wYXJhbXMoUmF3U3RtdCAqcGFyc2V0cmVlLAogICogTm90ZTogcXVlcnkg bXVzdCBqdXN0IGhhdmUgY29tZSBmcm9tIHRoZSBwYXJzZXIsIGJlY2F1c2Ugd2UgZG8gbm90 IGRvCiAgKiBBY3F1aXJlUmV3cml0ZUxvY2tzKCkgb24gaXQuCiAgKi8KLXN0YXRpYyBMaXN0 ICoKK0xpc3QgKgogcGdfcmV3cml0ZV9xdWVyeShRdWVyeSAqcXVlcnkpCiB7CiAJTGlzdAkg ICAqcXVlcnl0cmVlX2xpc3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg ODc5Mjg4YzEzOS4uMjg2MDJiMDFmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwpAQCAtMTcyLDYgKzE3MiwxMCBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKm91dGVy X3RsaXN0OwkvKiByZWZlcmVudCBmb3IgT1VURVJfVkFSIFZhcnMgKi8KIAlMaXN0CSAgICpp bm5lcl90bGlzdDsJLyogcmVmZXJlbnQgZm9yIElOTkVSX1ZBUiBWYXJzICovCiAJTGlzdAkg ICAqaW5kZXhfdGxpc3Q7CS8qIHJlZmVyZW50IGZvciBJTkRFWF9WQVIgVmFycyAqLworCS8q IFNwZWNpYWwgbmFtZXNwYWNlIHJlcHJlc2VudGluZyBhIGZ1bmN0aW9uIHNpZ25hdHVyZTog Ki8KKwljaGFyCSAgICpmdW5jbmFtZTsKKwlpbnQJCQludW1hcmdzOworCWNoYXIJICAqKmFy Z25hbWVzOwogfSBkZXBhcnNlX25hbWVzcGFjZTsKIAogLyoKQEAgLTM0Nyw2ICszNTEsNyBA QCBzdGF0aWMgaW50CXByaW50X2Z1bmN0aW9uX2FyZ3VtZW50cyhTdHJpbmdJbmZvIGJ1Ziwg SGVhcFR1cGxlIHByb2N0dXAsCiAJCQkJCQkJCQkgYm9vbCBwcmludF90YWJsZV9hcmdzLCBi b29sIHByaW50X2RlZmF1bHRzKTsKIHN0YXRpYyB2b2lkIHByaW50X2Z1bmN0aW9uX3JldHR5 cGUoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVwKTsKIHN0YXRpYyB2b2lkIHBy aW50X2Z1bmN0aW9uX3RyZnR5cGVzKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcHJvY3R1 cCk7CitzdGF0aWMgdm9pZCBwcmludF9mdW5jdGlvbl9zcWxib2R5KFN0cmluZ0luZm8gYnVm LCBIZWFwVHVwbGUgcHJvY3R1cCk7CiBzdGF0aWMgdm9pZCBzZXRfcnRhYmxlX25hbWVzKGRl cGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRfbmFtZXNwYWNlcywKIAkJCQkJ CQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpOwogc3RhdGljIHZvaWQgc2V0X2RlcGFyc2VfZm9y X3F1ZXJ5KGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBRdWVyeSAqcXVlcnksCkBAIC0yNzk5 LDYgKzI4MDQsMTMgQEAgcGdfZ2V0X2Z1bmN0aW9uZGVmKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ fQogCiAJLyogQW5kIGZpbmFsbHkgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gLi4uICovCisJ dG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2N0dXAsIEFudW1fcGdfcHJvY19w cm9zcWxib2R5LCAmaXNudWxsKTsKKwlpZiAocHJvYy0+cHJvbGFuZyA9PSBTUUxsYW5ndWFn ZUlkICYmICFpc251bGwpCisJeworCQlwcmludF9mdW5jdGlvbl9zcWxib2R5KCZidWYsIHBy b2N0dXApOworCX0KKwllbHNlCisJewogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwg IkFTICIpOwogCiAJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2N0dXAsIEFu dW1fcGdfcHJvY19wcm9iaW4sICZpc251bGwpOwpAQCAtMjgzMCw2ICsyODQyLDcgQEAgcGdf Z2V0X2Z1bmN0aW9uZGVmKFBHX0ZVTkNUSU9OX0FSR1MpCiAJYXBwZW5kQmluYXJ5U3RyaW5n SW5mbygmYnVmLCBkcS5kYXRhLCBkcS5sZW4pOwogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmJ1ZiwgcHJvc3JjKTsKIAlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZidWYsIGRxLmRhdGEs IGRxLmxlbik7CisJfQogCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJ1xuJyk7CiAK QEAgLTMyMTMsNiArMzIyNiw3NiBAQCBwZ19nZXRfZnVuY3Rpb25fYXJnX2RlZmF1bHQoUEdf RlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0KHN0cikp OwogfQogCitzdGF0aWMgdm9pZAorcHJpbnRfZnVuY3Rpb25fc3FsYm9keShTdHJpbmdJbmZv IGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApCit7CisJaW50CQkJbnVtYXJnczsKKwlPaWQJCSAg ICphcmd0eXBlczsKKwljaGFyCSAgKiphcmduYW1lczsKKwljaGFyCSAgICphcmdtb2RlczsK KwlkZXBhcnNlX25hbWVzcGFjZSBkcG5zID0gezB9OworCURhdHVtCQl0bXA7CisJYm9vbAkJ aXNudWxsOworCU5vZGUJICAgKm47CisKKwlkcG5zLmZ1bmNuYW1lID0gcHN0cmR1cChOYW1l U3RyKCgoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCkpLT5wcm9uYW1lKSk7CisJ bnVtYXJncyA9IGdldF9mdW5jX2FyZ19pbmZvKHByb2N0dXAsCisJCQkJCQkJCSZhcmd0eXBl cywgJmFyZ25hbWVzLCAmYXJnbW9kZXMpOworCWRwbnMubnVtYXJncyA9IG51bWFyZ3M7CisJ ZHBucy5hcmduYW1lcyA9IGFyZ25hbWVzOworCisJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBS T0NPSUQsIHByb2N0dXAsIEFudW1fcGdfcHJvY19wcm9zcWxib2R5LCAmaXNudWxsKTsKKwlB c3NlcnQoIWlzbnVsbCk7CisJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5n KHRtcCkpOworCisJaWYgKElzQShuLCBMaXN0KSkKKwl7CisJCUxpc3QgICAgICAgKnN0bXRz OworCQlMaXN0Q2VsbCAgICpsYzsKKworCQlzdG10cyA9IGxpbml0aWFsKGNhc3ROb2RlKExp c3QsIG4pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkJFR0lOIEFUT01J Q1xuIik7CisKKwkJZm9yZWFjaChsYywgc3RtdHMpCisJCXsKKwkJCVF1ZXJ5CSAgICpxdWVy eSA9IGxmaXJzdF9ub2RlKFF1ZXJ5LCBsYyk7CisKKwkJCWdldF9xdWVyeV9kZWYocXVlcnks IGJ1ZiwgbGlzdF9tYWtlMSgmZHBucyksIE5VTEwsIFBSRVRUWUZMQUdfSU5ERU5ULCBXUkFQ X0NPTFVNTl9ERUZBVUxULCAxKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJzsn KTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJCX0KKworCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkVORCIpOworCX0KKwllbHNlCisJeworCQlnZXRf cXVlcnlfZGVmKGNhc3ROb2RlKFF1ZXJ5LCBuKSwgYnVmLCBsaXN0X21ha2UxKCZkcG5zKSwg TlVMTCwgUFJFVFRZRkxBR19JTkRFTlQsIFdSQVBfQ09MVU1OX0RFRkFVTFQsIDEpOworCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdcbicpOworCX0KK30KKworRGF0dW0KK3BnX2dl dF9mdW5jdGlvbl9zcWxib2R5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZnVuY2lk ID0gUEdfR0VUQVJHX09JRCgwKTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJSGVhcFR1cGxl CXByb2N0dXA7CisKKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKworCS8qIExvb2sgdXAgdGhl IGZ1bmN0aW9uICovCisJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmpl Y3RJZEdldERhdHVtKGZ1bmNpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jdHVw KSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXByaW50X2Z1bmN0aW9uX3NxbGJvZHkoJmJ1 ZiwgcHJvY3R1cCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUocHJvY3R1cCk7CisKKwlQR19SRVRV Uk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChidWYuZGF0YSkpOworfQorCiAKIC8qCiAgKiBk ZXBhcnNlX2V4cHJlc3Npb24JCQktIEdlbmVyYWwgdXRpbGl0eSBmb3IgZGVwYXJzaW5nIGV4 cHJlc3Npb25zCkBAIC01NDcyLDcgKzU1NTUsMTAgQEAgZ2V0X2Jhc2ljX3NlbGVjdF9xdWVy eShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkvKgogCSAqIEJ1 aWxkIHVwIHRoZSBxdWVyeSBzdHJpbmcgLSBmaXJzdCB3ZSBzYXkgU0VMRUNUCiAJICovCi0J YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1QiKTsKKwlpZiAocXVlcnktPmlz UmV0dXJuKQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlJFVFVSTiIpOworCWVs c2UKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1QiKTsKIAogCS8qIEFk ZCB0aGUgRElTVElOQ1QgY2xhdXNlIGlmIGdpdmVuICovCiAJaWYgKHF1ZXJ5LT5kaXN0aW5j dENsYXVzZSAhPSBOSUwpCkBAIC03NjA0LDYgKzc2OTAsNTAgQEAgZ2V0X3BhcmFtZXRlcihQ YXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJcmV0dXJuOwogCX0K IAorCS8qCisJICogSWYgaXQncyBhbiBleHRlcm5hbCBwYXJhbWV0ZXIsIHNlZSBpZiB0aGUg b3V0ZXJtb3N0IG5hbWVzcGFjZSBwcm92aWRlcworCSAqIGZ1bmN0aW9uIGFyZ3VtZW50IG5h bWVzLgorCSAqLworCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTikKKwl7 CisJCWRwbnMgPSBsZmlyc3QobGlzdF90YWlsKGNvbnRleHQtPm5hbWVzcGFjZXMpKTsKKwkJ aWYgKGRwbnMtPmFyZ25hbWVzKQorCQl7CisJCQljaGFyCSAgICphcmduYW1lID0gZHBucy0+ YXJnbmFtZXNbcGFyYW0tPnBhcmFtaWQgLSAxXTsKKworCQkJaWYgKGFyZ25hbWUpCisJCQl7 CisJCQkJYm9vbAkJc2hvdWxkX3F1YWxpZnkgPSBmYWxzZTsKKwkJCQlMaXN0Q2VsbCAgICps YzsKKworCQkJCS8qCisJCQkJICogUXVhbGlmeSB0aGUgcGFyYW1ldGVyIG5hbWUgaWYgdGhl cmUgYXJlIGFueSBvdGhlciBkZXBhcnNlCisJCQkJICogbmFtZXNwYWNlcyB3aXRoIHJhbmdl IHRhYmxlcy4gIFRoaXMgYXZvaWRzIHF1YWxpZnlpbmcgaW4KKwkJCQkgKiB0cml2aWFsIGNh c2VzIGxpa2UgIlJFVFVSTiBhICsgYiIsIGJ1dCBtYWtlcyBpdCBzYWZlIGluIGFsbAorCQkJ CSAqIG90aGVyIGNhc2VzLgorCQkJCSAqLworCQkJCWZvcmVhY2ggKGxjLCBjb250ZXh0LT5u YW1lc3BhY2VzKQorCQkJCXsKKwkJCQkJZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMgPSBsZmly c3QobGMpOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChkcG5zLT5ydGFibGVfbmFtZXMpID4g MCkKKwkJCQkJeworCQkJCQkJc2hvdWxkX3F1YWxpZnkgPSB0cnVlOworCQkJCQkJYnJlYWs7 CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKHNob3VsZF9xdWFsaWZ5KQorCQkJCXsKKwkJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIHF1b3RlX2lkZW50aWZpZXIo ZHBucy0+ZnVuY25hbWUpKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+ YnVmLCAnLicpOworCQkJCX0KKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4 dC0+YnVmLCBxdW90ZV9pZGVudGlmaWVyKGFyZ25hbWUpKTsKKwkJCQlyZXR1cm47CisJCQl9 CisJCX0KKwl9CisKIAkvKgogCSAqIE5vdCBQQVJBTV9FWEVDLCBvciBjb3VsZG4ndCBmaW5k IHJlZmVyZW50OiBqdXN0IHByaW50ICROLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZWI5 ODhkN2ViNC4uOThhNzRkMWVmYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMTk3OSw2ICsxMTk3 OSw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEZ1bmNJbmZvICpmaW5mbykK IAljaGFyCSAgICpwcm9yZXRzZXQ7CiAJY2hhcgkgICAqcHJvc3JjOwogCWNoYXIJICAgKnBy b2JpbjsKKwljaGFyCSAgICpwcm9zcWxib2R5OwogCWNoYXIJICAgKmZ1bmNhcmdzOwogCWNo YXIJICAgKmZ1bmNpYXJnczsKIAljaGFyCSAgICpmdW5jcmVzdWx0OwpAQCAtMTIwMjUsNyAr MTIwMjYsNyBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmlu Zm8pCiAJCQkJCQkgInByb3ZvbGF0aWxlLFxuIgogCQkJCQkJICJwcm9pc3N0cmljdCxcbiIK IAkJCQkJCSAicHJvc2VjZGVmLFxuIgotCQkJCQkJICIoU0VMRUNUIGxhbm5hbWUgRlJPTSBw Z19jYXRhbG9nLnBnX2xhbmd1YWdlIFdIRVJFIG9pZCA9IHByb2xhbmcpIEFTIGxhbm5hbWUs XG4iKTsKKwkJCQkJCSAibGFubmFtZSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gODAzMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtMTIwNDUs OSArMTIwNDYsOSBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAq ZmluZm8pCiAJCSAqIHBnX2dldF9mdW5jdGlvbl9yZXN1bHQgaW5zdGVhZCBvZiBleGFtaW5p bmcgcHJvYWxsYXJndHlwZXMgZXRjLgogCQkgKi8KIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCi0JCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9hcmd1bWVudHMo b2lkKSBBUyBmdW5jYXJncyxcbiIKLQkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0 aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhvaWQpIEFTIGZ1bmNpYXJncyxcbiIKLQkJCQkJCQkg InBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChvaWQpIEFTIGZ1bmNyZXN1bHQs XG4iKTsKKwkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2FyZ3VtZW50cyhw Lm9pZCkgQVMgZnVuY2FyZ3MsXG4iCisJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9mdW5j dGlvbl9pZGVudGl0eV9hcmd1bWVudHMocC5vaWQpIEFTIGZ1bmNpYXJncyxcbiIKKwkJCQkJ CQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChwLm9pZCkgQVMgZnVuY3Jl c3VsdCxcbiIpOwogCX0KIAllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDgwMTAw KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTEyMDkwLDIxICsxMjA5MSwz OSBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMjAwMDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAicHJvc3VwcG9ydFxuIik7CisJCQkJCQkJICJwcm9z dXBwb3J0LFxuIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJ CQkJCQkgIictJyBBUyBwcm9zdXBwb3J0XG4iKTsKKwkJCQkJCQkgIictJyBBUyBwcm9zdXBw b3J0LFxuIik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiQ0FTRSBXSEVOIHByb3NyYyBJ UyBOVUxMIEFORCBsYW5uYW1lID0gJ3NxbCcgVEhFTiBwZ19nZXRfZnVuY3Rpb25fc3FsYm9k eShwLm9pZCkgRU5EIEFTIHByb3NxbGJvZHlcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJOVUxMIEFTIHByb3NxbGJvZHlcbiIpOwogCiAJ YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCi0JCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19w cm9jICIKLQkJCQkJICAiV0hFUkUgb2lkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQiLAorCQkJ CQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHJvYyBwLCBwZ19jYXRhbG9nLnBnX2xhbmd1YWdl IGxcbiIKKwkJCQkJICAiV0hFUkUgcC5vaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJ CQkJCSAgIkFORCBsLm9pZCA9IHAucHJvbGFuZyIsCiAJCQkJCSAgZmluZm8tPmRvYmouY2F0 SWQub2lkKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeUZvclNpbmdsZVJvdyhmb3V0LCBx dWVyeS0+ZGF0YSk7CiAKIAlwcm9yZXRzZXQgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVt YmVyKHJlcywgInByb3JldHNldCIpKTsKLQlwcm9zcmMgPSBQUWdldHZhbHVlKHJlcywgMCwg UFFmbnVtYmVyKHJlcywgInByb3NyYyIpKTsKLQlwcm9iaW4gPSBQUWdldHZhbHVlKHJlcywg MCwgUFFmbnVtYmVyKHJlcywgInByb2JpbiIpKTsKKwlpZiAoUFFnZXRpc251bGwocmVzLCAw LCBQUWZudW1iZXIocmVzLCAicHJvc3FsYm9keSIpKSkKKwl7CisJCXByb3NyYyA9IFBRZ2V0 dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAicHJvc3JjIikpOworCQlwcm9iaW4gPSBQ UWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb2JpbiIpKTsKKwkJcHJvc3Fs Ym9keSA9IE5VTEw7CisJfQorCWVsc2UKKwl7CisJCXByb3NyYyA9IE5VTEw7CisJCXByb2Jp biA9IE5VTEw7CisJCXByb3NxbGJvZHkgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVy KHJlcywgInByb3NxbGJvZHkiKSk7CisJfQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDgwNDAwKQogCXsKIAkJZnVuY2FyZ3MgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVy KHJlcywgImZ1bmNhcmdzIikpOwpAQCAtMTIxNDEsNyArMTIxNjAsMTEgQEAgZHVtcEZ1bmMo QXJjaGl2ZSAqZm91dCwgY29uc3QgRnVuY0luZm8gKmZpbmZvKQogCSAqIHZlcnNpb25zIHdv dWxkIHNldCBpdCB0byAiLSIuICBUaGVyZSBhcmUgbm8ga25vd24gY2FzZXMgaW4gd2hpY2gg cHJvc3JjCiAJICogaXMgdW51c2VkLCBzbyB0aGUgdGVzdHMgYmVsb3cgZm9yICItIiBhcmUg cHJvYmFibHkgdXNlbGVzcy4KIAkgKi8KLQlpZiAocHJvYmluWzBdICE9ICdcMCcgJiYgc3Ry Y21wKHByb2JpbiwgIi0iKSAhPSAwKQorCWlmIChwcm9zcWxib2R5KQorCXsKKwkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoYXNQYXJ0LCBwcm9zcWxib2R5KTsKKwl9CisJZWxzZSBpZiAocHJv YmluWzBdICE9ICdcMCcgJiYgc3RyY21wKHByb2JpbiwgIi0iKSAhPSAwKQogCXsKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoYXNQYXJ0LCAiQVMgIik7CiAJCWFwcGVuZFN0cmluZ0xpdGVy YWxBSChhc1BhcnQsIHByb2JpbiwgZm91dCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDIwYWY1YTkyYjQu LmE0N2M3OGQ0YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC01MDUsMTEgKzUwNSwxOCBAQCBkZXNjcmli ZUZ1bmN0aW9ucyhjb25zdCBjaGFyICpmdW5jdHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSwgYm9vbAogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxu ICIpOwogCQlwcmludEFDTENvbHVtbigmYnVmLCAicC5wcm9hY2wiKTsKIAkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCSAgIixcbiBsLmxhbm5hbWUgYXMgXCIlc1wiIgotCQkJ CQkJICAiLFxuIHAucHJvc3JjIGFzIFwiJXNcIiIKKwkJCQkJCSAgIixcbiBsLmxhbm5hbWUg YXMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJMYW5ndWFnZSIpKTsKKwkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCQkgICIsXG4gQ09BTEVTQ0UocC5wcm9zcmMsIHBnX2NhdGFsb2cucGdfZ2V0X2Z1 bmN0aW9uX3NxbGJvZHkocC5vaWQpKSBhcyBcIiVzXCIiLAorCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJTb3VyY2UgY29kZSIpKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCQkgICIsXG4gcC5wcm9zcmMgYXMgXCIlc1wiIiwKKwkJCQkJCQkgIGdldHRl eHRfbm9vcCgiU291cmNlIGNvZGUiKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCQkgICIsXG4gcGdfY2F0YWxvZy5vYmpfZGVzY3JpcHRpb24ocC5vaWQsICdwZ19wcm9j JykgYXMgXCIlc1wiIiwKLQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJMYW5ndWFnZSIpLAotCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlNvdXJjZSBjb2RlIiksCiAJCQkJCQkgIGdldHRleHRfbm9v cCgiRGVzY3JpcHRpb24iKSk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcHNx bHNjYW4ubCBiL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sCmluZGV4IDIxNmZmMzA5OTMuLmE0 OTJhMzI0MTYgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sCisrKyBiL3Ny Yy9mZV91dGlscy9wc3Fsc2Nhbi5sCkBAIC02NDUsMTAgKzY0NSwxMSBAQCBvdGhlcgkJCS4K IAogIjsiCQkJCXsKIAkJCQkJRUNITzsKLQkJCQkJaWYgKGN1cl9zdGF0ZS0+cGFyZW5fZGVw dGggPT0gMCkKKwkJCQkJaWYgKGN1cl9zdGF0ZS0+cGFyZW5fZGVwdGggPT0gMCAmJiBjdXJf c3RhdGUtPmJlZ2luX2RlcHRoID09IDApCiAJCQkJCXsKIAkJCQkJCS8qIFRlcm1pbmF0ZSBs ZXhpbmcgdGVtcG9yYXJpbHkgKi8KIAkJCQkJCWN1cl9zdGF0ZS0+c3RhcnRfc3RhdGUgPSBZ WV9TVEFSVDsKKwkJCQkJCWN1cl9zdGF0ZS0+aWRlbnRpZmllcl9jb3VudCA9IDA7CiAJCQkJ CQlyZXR1cm4gTEVYUkVTX1NFTUk7CiAJCQkJCX0KIAkJCQl9CkBAIC02NjEsNiArNjYyLDgg QEAgb3RoZXIJCQkuCiAiXFwiWzs6XQkJewogCQkJCQkvKiBGb3JjZSBhIHNlbWktY29sb24g b3IgY29sb24gaW50byB0aGUgcXVlcnkgYnVmZmVyICovCiAJCQkJCXBzcWxzY2FuX2VtaXQo Y3VyX3N0YXRlLCB5eXRleHQgKyAxLCAxKTsKKwkJCQkJaWYgKHl5dGV4dFsxXSA9PSAnOycp CisJCQkJCQljdXJfc3RhdGUtPmlkZW50aWZpZXJfY291bnQgPSAwOwogCQkJCX0KIAogIlxc IgkJCXsKQEAgLTg2Nyw2ICs4NzAsMTcgQEAgb3RoZXIJCQkuCiAKIAoge2lkZW50aWZpZXJ9 CXsKKwkJCQkJY3VyX3N0YXRlLT5pZGVudGlmaWVyX2NvdW50Kys7CisJCQkJCWlmIChwZ19z dHJjYXNlY21wKHl5dGV4dCwgImJlZ2luIikgPT0gMCkKKwkJCQkJeworCQkJCQkJaWYgKGN1 cl9zdGF0ZS0+aWRlbnRpZmllcl9jb3VudCA+IDEpCisJCQkJCQkJY3VyX3N0YXRlLT5iZWdp bl9kZXB0aCsrOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoeXl0ZXh0 LCAiZW5kIikgPT0gMCkKKwkJCQkJeworCQkJCQkJaWYgKGN1cl9zdGF0ZS0+YmVnaW5fZGVw dGggPiAwKQorCQkJCQkJCWN1cl9zdGF0ZS0+YmVnaW5fZGVwdGgtLTsKKwkJCQkJfQogCQkJ CQlFQ0hPOwogCQkJCX0KIApAQCAtMTA1NCw2ICsxMDY4LDExIEBAIHBzcWxfc2NhbihQc3Fs U2NhblN0YXRlIHN0YXRlLAogCQkJCQkJcmVzdWx0ID0gUFNDQU5fSU5DT01QTEVURTsKIAkJ CQkJCSpwcm9tcHQgPSBQUk9NUFRfUEFSRU47CiAJCQkJCX0KKwkJCQkJaWYgKHN0YXRlLT5i ZWdpbl9kZXB0aCA+IDApCisJCQkJCXsKKwkJCQkJCXJlc3VsdCA9IFBTQ0FOX0lOQ09NUExF VEU7CisJCQkJCQkqcHJvbXB0ID0gUFJPTVBUX0NPTlRJTlVFOworCQkJCQl9CiAJCQkJCWVs c2UgaWYgKHF1ZXJ5X2J1Zi0+bGVuID4gMCkKIAkJCQkJewogCQkJCQkJcmVzdWx0ID0gUFND QU5fRU9MOwpAQCAtMTE3MCw2ICsxMTg5LDggQEAgcHNxbF9zY2FuX3Jlc2V0KFBzcWxTY2Fu U3RhdGUgc3RhdGUpCiAJaWYgKHN0YXRlLT5kb2xxc3RhcnQpCiAJCWZyZWUoc3RhdGUtPmRv bHFzdGFydCk7CiAJc3RhdGUtPmRvbHFzdGFydCA9IE5VTEw7CisJc3RhdGUtPmlkZW50aWZp ZXJfY291bnQgPSAwOworCXN0YXRlLT5iZWdpbl9kZXB0aCA9IDA7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBjNzYxOWY4Y2QzLi4wYjBjNTgxOGRhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM2OTIsNiArMzY5MiwxMCBAQAogICBwcm9u YW1lID0+ICdwZ19nZXRfZnVuY3Rpb25fYXJnX2RlZmF1bHQnLCBwcm92b2xhdGlsZSA9PiAn cycsCiAgIHByb3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkIGludDQn LAogICBwcm9zcmMgPT4gJ3BnX2dldF9mdW5jdGlvbl9hcmdfZGVmYXVsdCcgfSwKK3sgb2lk ID0+ICc5NzA0JywgZGVzY3IgPT4gJ2Z1bmN0aW9uIFNRTCBib2R5JywKKyAgcHJvbmFtZSA9 PiAncGdfZ2V0X2Z1bmN0aW9uX3NxbGJvZHknLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHBy b3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScgfSwKIAogeyBvaWQgPT4gJzE2ODYnLCBkZXNj ciA9PiAnbGlzdCBvZiBTUUwga2V5d29yZHMnLAogICBwcm9uYW1lID0+ICdwZ19nZXRfa2V5 d29yZHMnLCBwcm9jb3N0ID0+ICcxMCcsIHByb3Jvd3MgPT4gJzUwMCcsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5oCmluZGV4IDc4ZjIzMDg5NGIuLjhkNTgwNjdkMDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5oCkBAIC0xMTIsMTEgKzExMiwxNCBAQCBDQVRBTE9HKHBnX3Byb2MsMTI1NSxQ cm9jZWR1cmVSZWxhdGlvbklkKSBCS0lfQk9PVFNUUkFQIEJLSV9ST1dUWVBFX09JRCg4MSxQ cm9jZQogCU9pZAkJCXByb3RyZnR5cGVzWzFdIEJLSV9ERUZBVUxUKF9udWxsXykgQktJX0xP T0tVUChwZ190eXBlKTsKIAogCS8qIHByb2NlZHVyZSBzb3VyY2UgdGV4dCAqLwotCXRleHQJ CXByb3NyYyBCS0lfRk9SQ0VfTk9UX05VTEw7CisJdGV4dAkJcHJvc3JjOwogCiAJLyogc2Vj b25kYXJ5IHByb2NlZHVyZSBpbmZvIChjYW4gYmUgTlVMTCkgKi8KIAl0ZXh0CQlwcm9iaW4g QktJX0RFRkFVTFQoX251bGxfKTsKIAorCS8qIHByZS1wYXJzZWQgU1FMIGZ1bmN0aW9uIGJv ZHkgKi8KKwlwZ19ub2RlX3RyZWUgcHJvc3FsYm9keSBCS0lfREVGQVVMVChfbnVsbF8pOwor CiAJLyogcHJvY2VkdXJlLWxvY2FsIEdVQyBzZXR0aW5ncyAqLwogCXRleHQJCXByb2NvbmZp Z1sxXSBCS0lfREVGQVVMVChfbnVsbF8pOwogCkBAIC0xOTQsNiArMTk3LDcgQEAgZXh0ZXJu IE9iamVjdEFkZHJlc3MgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5h bWUsCiAJCQkJCQkJCQkgT2lkIGxhbmd1YWdlVmFsaWRhdG9yLAogCQkJCQkJCQkJIGNvbnN0 IGNoYXIgKnByb3NyYywKIAkJCQkJCQkJCSBjb25zdCBjaGFyICpwcm9iaW4sCisJCQkJCQkJ CQkgTm9kZSAqcHJvc3FsYm9keSwKIAkJCQkJCQkJCSBjaGFyIHByb2tpbmQsCiAJCQkJCQkJ CQkgYm9vbCBzZWN1cml0eV9kZWZpbmVyLAogCQkJCQkJCQkJIGJvb2wgaXNMZWFrUHJvb2Ys CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDFhNzk1NDBjOTQuLjJiYjBmYjEwZGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC02NSw5ICs2NSwxMSBAQCBleHRlcm4gdm9pZCBp bnRlcnByZXRfZnVuY3Rpb25fcGFyYW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJCQkJCQkgIE9pZCBsYW5ndWFnZU9pZCwKIAkJCQkJCQkJCQkJICBPYmplY3RUeXBl IG9ianR5cGUsCiAJCQkJCQkJCQkJCSAgb2lkdmVjdG9yICoqcGFyYW1ldGVyVHlwZXMsCisJ CQkJCQkJCQkJCSAgTGlzdCAqKnBhcmFtZXRlclR5cGVzX2xpc3QsCiAJCQkJCQkJCQkJCSAg QXJyYXlUeXBlICoqYWxsUGFyYW1ldGVyVHlwZXMsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBl ICoqcGFyYW1ldGVyTW9kZXMsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBlICoqcGFyYW1ldGVy TmFtZXMsCisJCQkJCQkJCQkJCSAgTGlzdCAqKmluUGFyYW1ldGVyTmFtZXNfbGlzdCwKIAkJ CQkJCQkJCQkJICBMaXN0ICoqcGFyYW1ldGVyRGVmYXVsdHMsCiAJCQkJCQkJCQkJCSAgT2lk ICp2YXJpYWRpY0FyZ1R5cGUsCiAJCQkJCQkJCQkJCSAgT2lkICpyZXF1aXJlZFJlc3VsdFR5 cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZnVuY3Rpb25zLmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaAppbmRleCBjOTc1YTkzNjYxLi5kY2I4 ZTE4NDM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaApAQCAtMjAsNiArMjAsMjEg QEAKIC8qIFRoaXMgc3RydWN0IGlzIGtub3duIG9ubHkgd2l0aGluIGV4ZWN1dG9yL2Z1bmN0 aW9ucy5jICovCiB0eXBlZGVmIHN0cnVjdCBTUUxGdW5jdGlvblBhcnNlSW5mbyAqU1FMRnVu Y3Rpb25QYXJzZUluZm9QdHI7CiAKKy8qCisgKiBEYXRhIHN0cnVjdHVyZSBuZWVkZWQgYnkg dGhlIHBhcnNlciBjYWxsYmFjayBob29rcyB0byByZXNvbHZlIHBhcmFtZXRlcgorICogcmVm ZXJlbmNlcyBkdXJpbmcgcGFyc2luZyBvZiBhIFNRTCBmdW5jdGlvbidzIGJvZHkuICBUaGlz IGlzIHNlcGFyYXRlIGZyb20KKyAqIFNRTEZ1bmN0aW9uQ2FjaGUgc2luY2Ugd2Ugc29tZXRp bWVzIGRvIHBhcnNpbmcgc2VwYXJhdGVseSBmcm9tIGV4ZWN1dGlvbi4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgU1FMRnVuY3Rpb25QYXJzZUluZm8KK3sKKwljaGFyCSAgICpmbmFtZTsJCQkv KiBmdW5jdGlvbidzIG5hbWUgKi8KKwlpbnQJCQluYXJnczsJCQkvKiBudW1iZXIgb2YgaW5w dXQgYXJndW1lbnRzICovCisJT2lkCQkgICAqYXJndHlwZXM7CQkvKiByZXNvbHZlZCB0eXBl cyBvZiBpbnB1dCBhcmd1bWVudHMgKi8KKwljaGFyCSAgKiphcmduYW1lczsJCS8qIG5hbWVz IG9mIGlucHV0IGFyZ3VtZW50czsgTlVMTCBpZiBub25lICovCisJLyogTm90ZSB0aGF0IGFy Z25hbWVzW2ldIGNhbiBiZSBOVUxMLCBpZiBzb21lIGFyZ3MgYXJlIHVubmFtZWQgKi8KKwlP aWQJCQljb2xsYXRpb247CQkvKiBmdW5jdGlvbidzIGlucHV0IGNvbGxhdGlvbiwgaWYga25v d24gKi8KK30JCQlTUUxGdW5jdGlvblBhcnNlSW5mbzsKKwogZXh0ZXJuIERhdHVtIGZtZ3Jf c3FsKFBHX0ZVTkNUSU9OX0FSR1MpOwogCiBleHRlcm4gU1FMRnVuY3Rpb25QYXJzZUluZm9Q dHIgcHJlcGFyZV9zcWxfZm5fcGFyc2VfaW5mbyhIZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nhbl9pbnQuaCBiL3Ny Yy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCmluZGV4IDJiYzNjYzRhZTcuLjkx ZDdkNGQ1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2lu dC5oCisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCkBAIC0xMTQs NiArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUHNxbFNjYW5TdGF0ZURhdGEKIAlpbnQJCQlw YXJlbl9kZXB0aDsJLyogZGVwdGggb2YgbmVzdGluZyBpbiBwYXJlbnRoZXNlcyAqLwogCWlu dAkJCXhjZGVwdGg7CQkvKiBkZXB0aCBvZiBuZXN0aW5nIGluIHNsYXNoLXN0YXIgY29tbWVu dHMgKi8KIAljaGFyCSAgICpkb2xxc3RhcnQ7CQkvKiBjdXJyZW50ICRmb28kIHF1b3RlIHN0 YXJ0IHN0cmluZyAqLworCWludAkJCWlkZW50aWZpZXJfY291bnQ7CS8qIGlkZW50aWZpZXJz IHNpbmNlIHN0YXJ0IG9mIHN0YXRlbWVudCAqLworCWludAkJCWJlZ2luX2RlcHRoOwkvKiBk ZXB0aCBvZiBiZWdpbi9lbmQgcm91dGluZSBib2R5IGJsb2NrcyAqLwogCiAJLyoKIAkgKiBD YWxsYmFjayBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHByb2dyYW0gbWFraW5nIHVzZSBv ZiB0aGUgbGV4ZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBlMjJkZjg5MGVmLi5kY2NhMGU0NTZi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKQEAgLTMxNyw2ICszMTcsNyBAQCB0eXBlZGVmIGVudW0gTm9k ZVRhZwogCVRfRGVsZXRlU3RtdCwKIAlUX1VwZGF0ZVN0bXQsCiAJVF9TZWxlY3RTdG10LAor CVRfUmV0dXJuU3RtdCwKIAlUX1BMQXNzaWduU3RtdCwKIAlUX0FsdGVyVGFibGVTdG10LAog CVRfQWx0ZXJUYWJsZUNtZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAyMzY4MzJh MmNhLi45NzkwOGI1OTdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMzIsNiAr MTMyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAlib29sCQloYXNGb3JVcGRhdGU7CS8q IEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgd2FzIHNwZWNpZmllZCAqLwogCWJvb2wJCWhhc1Jv d1NlY3VyaXR5OyAvKiByZXdyaXRlciBoYXMgYXBwbGllZCBzb21lIFJMUyBwb2xpY3kgKi8K IAorCWJvb2wJCWlzUmV0dXJuOwkJLyogaXMgYSBSRVRVUk4gc3RhdGVtZW50ICovCisKIAlM aXN0CSAgICpjdGVMaXN0OwkJLyogV0lUSCBsaXN0IChvZiBDb21tb25UYWJsZUV4cHIncykg Ki8KIAogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIHJhbmdlIHRhYmxlIGVudHJp ZXMgKi8KQEAgLTE3MDEsNiArMTcwMywxNiBAQCB0eXBlZGVmIHN0cnVjdCBTZXRPcGVyYXRp b25TdG10CiB9IFNldE9wZXJhdGlvblN0bXQ7CiAKIAorLyoKKyAqIFJFVFVSTiBzdGF0ZW1l bnQgKGluc2lkZSBTUUwgZnVuY3Rpb24gYm9keSkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmV0 dXJuU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJTm9kZQkgICAqcmV0dXJudmFsOworfSBS ZXR1cm5TdG10OworCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlQTC9wZ1NR TCBBc3NpZ25tZW50IFN0YXRlbWVudAogICoKQEAgLTI4ODQsNiArMjg5Niw3IEBAIHR5cGVk ZWYgc3RydWN0IENyZWF0ZUZ1bmN0aW9uU3RtdAogCUxpc3QJICAgKnBhcmFtZXRlcnM7CQkv KiBhIGxpc3Qgb2YgRnVuY3Rpb25QYXJhbWV0ZXIgKi8KIAlUeXBlTmFtZSAgICpyZXR1cm5U eXBlOwkJLyogdGhlIHJldHVybiB0eXBlICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIGEg bGlzdCBvZiBEZWZFbGVtICovCisJTm9kZQkgICAqc3FsX2JvZHk7CiB9IENyZWF0ZUZ1bmN0 aW9uU3RtdDsKIAogdHlwZWRlZiBlbnVtIEZ1bmN0aW9uUGFyYW1ldGVyTW9kZQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCmluZGV4IDI4MDgzYWFhYzkuLmVjNDY3YjVjMjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgUEdfS0VZV09SRCgiYXNzZXJ0aW9uIiwgQVNTRVJU SU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhc3Np Z25tZW50IiwgQVNTSUdOTUVOVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgiYXN5bW1ldHJpYyIsIEFTWU1NRVRSSUMsIFJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhdCIsIEFULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJhdG9taWMiLCBBVE9NSUMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImF0dGFjaCIsIEFUVEFDSCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiYXR0cmlidXRlIiwg QVRUUklCVVRFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJhdXRob3JpemF0aW9uIiwgQVVUSE9SSVpBVElPTiwgVFlQRV9GVU5DX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKQEAgLTM0Niw2ICszNDcsNyBAQCBQR19LRVlXT1JEKCJyZXBsaWNh IiwgUkVQTElDQSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicmVzZXQiLCBSRVNFVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicmVzdGFydCIsIFJFU1RBUlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInJlc3RyaWN0IiwgUkVTVFJJQ1QsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInJldHVybiIsIFJFVFVSTiwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmV0dXJuaW5nIiwgUkVU VVJOSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVy bnMiLCBSRVRVUk5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJyZXZva2UiLCBSRVZPS0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvdGNvcHByb3QuaAppbmRleCBlNTQ3MjEwMGE0Li40OTcwMGQxNTFhIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNv cC90Y29wcHJvdC5oCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgZW51bQogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBsb2dfc3RhdGVtZW50OwogCiBleHRlcm4gTGlzdCAqcGdfcGFyc2Vf cXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKTsKK2V4dGVybiBMaXN0ICpwZ19yZXdy aXRlX3F1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CiBleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9hbmRf cmV3cml0ZShSYXdTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkJCQljb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsCiAJCQkJCQkJCQlPaWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJhbXMsCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5hZGRvbnMgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5hZGRvbnMKaW5kZXggMzAwMzgxZWFh ZC4uMDQ0MTU2MWM1MiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9j L2VjcGcuYWRkb25zCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmFk ZG9ucwpAQCAtODcsNiArODcsMTIgQEAgRUNQRzogc3RtdFRyYW5zYWN0aW9uU3RtdCBibG9j awogCQl3aGVuZXZlcl9hY3Rpb24oMik7CiAJCWZyZWUoJDEpOwogCX0KK0VDUEc6IHRvcGxl dmVsX3N0bXRUcmFuc2FjdGlvblN0bXRMZWdhY3kgYmxvY2sKKwl7CisJCWZwcmludGYoYmFz ZV95eW91dCwgInsgRUNQR3RyYW5zKF9fTElORV9fLCAlcywgXCIlc1wiKTsiLCBjb25uZWN0 aW9uID8gY29ubmVjdGlvbiA6ICJOVUxMIiwgJDEpOworCQl3aGVuZXZlcl9hY3Rpb24oMik7 CisJCWZyZWUoJDEpOworCX0KIEVDUEc6IHN0bXRWaWV3U3RtdCBydWxlCiAJfCBFQ1BHQWxs b2NhdGVEZXNjcgogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJv Yy9lY3BnLnRyYWlsZXIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFp bGVyCmluZGV4IDBlNGEwNDEzOTMuLmJjYWJmODgzNDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIKKysrIGIvc3JjL2ludGVyZmFjZXMv ZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgpAQCAtNCw4ICs0LDggQEAgc3RhdGVtZW50czog LypFTVBUWSovCiAJCQkJfCBzdGF0ZW1lbnRzIHN0YXRlbWVudAogCQk7CiAKLXN0YXRlbWVu dDogZWNwZ3N0YXJ0IGF0IHN0bXQgJzsnIHsgY29ubmVjdGlvbiA9IE5VTEw7IH0KLQkJCQl8 IGVjcGdzdGFydCBzdG10ICc7Jworc3RhdGVtZW50OiBlY3Bnc3RhcnQgYXQgdG9wbGV2ZWxf c3RtdCAnOycgeyBjb25uZWN0aW9uID0gTlVMTDsgfQorCQkJCXwgZWNwZ3N0YXJ0IHRvcGxl dmVsX3N0bXQgJzsnCiAJCQkJfCBlY3Bnc3RhcnQgRUNQR1ZhckRlY2xhcmF0aW9uCiAJCQkJ ewogCQkJCQlmcHJpbnRmKGJhc2VfeXlvdXQsICIlcyIsICQyKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Z1bmN0aW9uXzMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rpb25fMy5vdXQKaW5kZXggZjI1YTQw N2ZkZC4uYTliNGI0MGUxYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfZnVuY3Rpb25fMy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfZnVuY3Rpb25fMy5vdXQKQEAgLTI1NSw2ICsyNTUsMTUxIEBAIFNFTEVDVCBw Z19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X0ZfMic6OnJlZ3Byb2MpOwogIAogKDEgcm93 KQogCistLQorLS0gU1FMLXN0YW5kYXJkIGJvZHkKKy0tCitDUkVBVEUgRlVOQ1RJT04gZnVu Y3Rlc3RfU18xKGEgdGV4dCwgYiBkYXRlKSBSRVRVUk5TIGJvb2xlYW4KKyAgICBMQU5HVUFH RSBTUUwKKyAgICBSRVRVUk4gYSA9ICdhYmNkJyBBTkQgYiA+ICcyMDAxLTAxLTAxJzsKK0NS RUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzIoYSB0ZXh0W10pIFJFVFVSTlMgaW50CisgICAg UkVUVVJOIGFbMV06OmludDsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzMoKSBSRVRV Uk5TIGJvb2xlYW4KKyAgICBSRVRVUk4gZmFsc2U7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rl c3RfU18zYSgpIFJFVFVSTlMgYm9vbGVhbgorICAgIEJFR0lOIEFUT01JQworICAgICAgICBS RVRVUk4gZmFsc2U7CisgICAgRU5EOworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTAo YSB0ZXh0LCBiIGRhdGUpIFJFVFVSTlMgYm9vbGVhbgorICAgIExBTkdVQUdFIFNRTAorICAg IEJFR0lOIEFUT01JQworICAgICAgICBTRUxFQ1QgYSA9ICdhYmNkJyBBTkQgYiA+ICcyMDAx LTAxLTAxJzsKKyAgICBFTkQ7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18xMygpIFJF VFVSTlMgYm9vbGVhbgorICAgIEJFR0lOIEFUT01JQworICAgICAgICBTRUxFQ1QgMTsKKyAg ICAgICAgU0VMRUNUIGZhbHNlOworICAgIEVORDsKKy0tIHBvbHltb3JwaGljIGFyZ3VtZW50 cyBub3QgYWxsb3dlZCBpbiB0aGlzIGZvcm0KK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9T X3h4KHggYW55YXJyYXkpIFJFVFVSTlMgYW55ZWxlbWVudAorICAgIExBTkdVQUdFIFNRTAor ICAgIFJFVFVSTiB4WzFdOworRVJST1I6ICBTUUwgZnVuY3Rpb24gd2l0aCB1bnF1b3RlZCBm dW5jdGlvbiBib2R5IGNhbm5vdCBoYXZlIHBvbHltb3JwaGljIGFyZ3VtZW50cworU0VMRUNU IGZ1bmN0ZXN0X1NfMSgnYWJjZCcsICcyMDIwLTAxLTAxJyk7CisgZnVuY3Rlc3Rfc18xIAor LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBmdW5jdGVzdF9TXzIoQVJS QVlbJzEnLCAnMicsICczJ10pOworIGZ1bmN0ZXN0X3NfMiAKKy0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBmdW5jdGVzdF9TXzMoKTsKKyBmdW5j dGVzdF9zXzMgCistLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGZ1bmN0 ZXN0X1NfMTAoJ2FiY2QnLCAnMjAyMC0wMS0wMScpOworIGZ1bmN0ZXN0X3NfMTAgCistLS0t LS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBmdW5jdGVzdF9TXzEzKCk7Cisg ZnVuY3Rlc3Rfc18xMyAKKy0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18xJzo6cmVncHJvYyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIHRlbXBfZnVuY190ZXN0LmZ1bmN0ZXN0X3NfMShhIHRleHQsIGIgZGF0ZSkrCisg IFJFVFVSTlMgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBSRVRVUk4gKChhID0g J2FiY2QnOjp0ZXh0KSBBTkQgKGIgPiAnMDEtMDEtMjAwMSc6OmRhdGUpKSAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9m dW5jdGlvbmRlZignZnVuY3Rlc3RfU18yJzo6cmVncHJvYyk7CisgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0 LmZ1bmN0ZXN0X3NfMihhIHRleHRbXSkrCisgIFJFVFVSTlMgaW50ZWdlciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgTEFOR1VBR0Ugc3Fs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICBSRVRVUk4gKChhKVsxXSk6OmludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18zJzo6cmVncHJvYyk7CisgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9mdW5jdGlvbmRlZiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVtcF9mdW5jX3Rlc3QuZnVuY3Rlc3Rfc18z KCkrCisgIFJFVFVSTlMgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgIExBTkdVQUdFIHNxbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgIFJFVFVSTiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgCisoMSByb3cpCisKK1NFTEVDVCBwZ19n ZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfM2EnOjpyZWdwcm9jKTsKKyAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2Z1bmN0aW9uZGVmICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0LmZ1bmN0ZXN0 X3NfM2EoKSsKKyAgUkVUVVJOUyBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgIExBTkdVQUdFIHNxbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworIEJFR0lOIEFUT01JQyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgUkVUVVJOIGZhbHNlOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgRU5EICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93 KQorCitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzEwJzo6cmVncHJv Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVtcF9mdW5jX3Rlc3QuZnVuY3Rlc3Rfc18xMChhIHRl eHQsIGIgZGF0ZSkrCisgIFJFVFVSTlMgYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgIExBTkdVQUdFIHNxbCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgQkVHSU4gQVRPTUlDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgIFNFTEVDVCAoKGEgPSAnYWJjZCc6OnRleHQpIEFO RCAoYiA+ICcwMS0wMS0yMDAxJzo6ZGF0ZSkpOyAgICAgICAgICAgICArCisgRU5EICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1 bmN0ZXN0X1NfMTMnOjpyZWdwcm9jKTsKKyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1 bmN0aW9uZGVmICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRlbXBfZnVuY190ZXN0LmZ1bmN0ZXN0X3NfMTMoKSsKKyAgUkVUVVJO UyBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg IExBTkdVQUdFIHNxbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworIEJFR0lOIEFUT01JQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgU0VMRUNUIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgIFNFTEVDVCBmYWxzZSBBUyBib29sOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworIEVORCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworLS0gdGVz dCB3aXRoIHZpZXdzCitDUkVBVEUgVEFCTEUgZnVuY3Rlc3QzIChhIGludCk7CitJTlNFUlQg SU5UTyBmdW5jdGVzdDMgVkFMVUVTICgxKSwgKDIpOworQ1JFQVRFIFZJRVcgZnVuY3Rlc3R2 MyBBUyBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0MzsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVz dF9TXzE0KCkgUkVUVVJOUyBiaWdpbnQKKyAgICBSRVRVUk4gKFNFTEVDVCBjb3VudCgqKSBG Uk9NIGZ1bmN0ZXN0djMpOworU0VMRUNUIGZ1bmN0ZXN0X1NfMTQoKTsKKyBmdW5jdGVzdF9z XzE0IAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMgorKDEgcm93KQorCitEUk9Q IFRBQkxFIGZ1bmN0ZXN0MyBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAy IG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdmlldyBmdW5jdGVz dHYzCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMTQoKQogLS0gaW5m b3JtYXRpb25fc2NoZW1hIHRlc3RzCiBDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfSVNfMShh IGludCwgYiBpbnQgZGVmYXVsdCAxLCBjIHRleHQgZGVmYXVsdCAnZm9vJykKICAgICBSRVRV Uk5TIGludApAQCAtMjkyLDYgKzQzNywxNSBAQCBDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3Rf SVNfNSh4IGludCBERUZBVUxUIG5leHR2YWwoJ2Z1bmN0ZXN0MScpKQogICAgIFJFVFVSTlMg aW50CiAgICAgTEFOR1VBR0UgU1FMCiAgICAgQVMgJ1NFTEVDVCB4JzsKK0NSRUFURSBGVU5D VElPTiBmdW5jdGVzdF9JU182KCkKKyAgICBSRVRVUk5TIGludAorICAgIExBTkdVQUdFIFNR TAorICAgIFJFVFVSTiBuZXh0dmFsKCdmdW5jdGVzdDEnKTsKK0NSRUFURSBUQUJMRSBmdW5j dGVzdDIgKGEgaW50LCBiIGludCk7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfSVNfNygp CisgICAgUkVUVVJOUyBpbnQKKyAgICBMQU5HVUFHRSBTUUwKKyAgICBSRVRVUk4gKFNFTEVD VCBjb3VudChhKSBGUk9NIGZ1bmN0ZXN0Mik7CiBTRUxFQ1QgcjAucm91dGluZV9uYW1lLCBy MS5yb3V0aW5lX25hbWUKICAgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV9yb3V0 aW5lX3VzYWdlIHJydQogICAgICAgIEpPSU4gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRpbmVz IHIwIE9OIHIwLnNwZWNpZmljX25hbWUgPSBycnUuc3BlY2lmaWNfbmFtZQpAQCAtMzA1LDIz ICs0NTksMjkgQEAgU0VMRUNUIHJvdXRpbmVfbmFtZSwgc2VxdWVuY2VfbmFtZSBGUk9NIGlu Zm9ybWF0aW9uX3NjaGVtYS5yb3V0aW5lX3NlcXVlbmNlX3VzYWcKICByb3V0aW5lX25hbWUg IHwgc2VxdWVuY2VfbmFtZSAKIC0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KICBm dW5jdGVzdF9pc181IHwgZnVuY3Rlc3QxCi0oMSByb3cpCisgZnVuY3Rlc3RfaXNfNiB8IGZ1 bmN0ZXN0MQorKDIgcm93cykKIAotLS0gY3VycmVudGx5IGVtcHR5CiBTRUxFQ1Qgcm91dGlu ZV9uYW1lLCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSBGUk9NIGluZm9ybWF0aW9uX3NjaGVt YS5yb3V0aW5lX2NvbHVtbl91c2FnZTsKLSByb3V0aW5lX25hbWUgfCB0YWJsZV9uYW1lIHwg Y29sdW1uX25hbWUgCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQotKDAgcm93cykKKyByb3V0aW5lX25hbWUgIHwgdGFibGVfbmFtZSB8IGNvbHVtbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgZnVuY3Rl c3RfaXNfNyB8IGZ1bmN0ZXN0MiAgfCBhCisoMSByb3cpCiAKIFNFTEVDVCByb3V0aW5lX25h bWUsIHRhYmxlX25hbWUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV90YWJsZV91 c2FnZTsKLSByb3V0aW5lX25hbWUgfCB0YWJsZV9uYW1lIAotLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCi0oMCByb3dzKQorIHJvdXRpbmVfbmFtZSAgfCB0YWJsZV9uYW1lIAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGZ1bmN0ZXN0X2lzXzcgfCBmdW5jdGVzdDIK KygxIHJvdykKIAogRFJPUCBGVU5DVElPTiBmdW5jdGVzdF9JU180YSBDQVNDQURFOwogTk9U SUNFOiAgZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9pc180YihpbnRlZ2Vy KQogRFJPUCBTRVFVRU5DRSBmdW5jdGVzdDEgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2Fz Y2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfaXNfNShpbnRlZ2VyKQorTk9USUNFOiAgZHJv cCBjYXNjYWRlcyB0byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gZnVuY3Rlc3RfaXNfNShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBm dW5jdGlvbiBmdW5jdGVzdF9pc182KCkKK0RST1AgVEFCTEUgZnVuY3Rlc3QyIENBU0NBREU7 CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2lzXzcoKQog LS0gb3ZlcmxvYWQKIENSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9CXzIoYmlnaW50KSBSRVRV Uk5TIGJvb2wgTEFOR1VBR0UgJ3NxbCcKICAgICAgICBJTU1VVEFCTEUgQVMgJ1NFTEVDVCAk MSA+IDAnOwpAQCAtMzQwLDYgKzUwMCw0OSBAQCBDUkVBVEUgT1IgUkVQTEFDRSBQUk9DRURV UkUgZnVuY3Rlc3QxKGEgaW50KSBMQU5HVUFHRSBTUUwgQVMgJ1NFTEVDVCAkMSc7CiBFUlJP UjogIGNhbm5vdCBjaGFuZ2Ugcm91dGluZSBraW5kCiBERVRBSUw6ICAiZnVuY3Rlc3QxIiBp cyBhIGZ1bmN0aW9uLgogRFJPUCBGVU5DVElPTiBmdW5jdGVzdDEoYSBpbnQpOworLS0gaW5s aW5pbmcgb2Ygc2V0LXJldHVybmluZyBmdW5jdGlvbnMKK0NSRUFURSBGVU5DVElPTiBmdW5j dGVzdF9zcmkxKCkgUkVUVVJOUyBTRVRPRiBpbnQKK0xBTkdVQUdFIFNRTAorU1RBQkxFCitB UyAnCisgICAgVkFMVUVTICgxKSwgKDIpLCAoMyk7CisnOworU0VMRUNUICogRlJPTSBmdW5j dGVzdF9zcmkxKCk7CisgZnVuY3Rlc3Rfc3JpMSAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgIDEKKyAgICAgICAgICAgICAyCisgICAgICAgICAgICAgMworKDMgcm93cykKKwor RVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKSBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0X3Ny aTEoKTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgVmFsdWVzIFNjYW4gb24gIipWQUxVRVMqIgorICAgT3V0cHV0 OiAiKlZBTFVFUyoiLmNvbHVtbjEKKygyIHJvd3MpCisKK0NSRUFURSBGVU5DVElPTiBmdW5j dGVzdF9zcmkyKCkgUkVUVVJOUyBTRVRPRiBpbnQKK0xBTkdVQUdFIFNRTAorU1RBQkxFCitC RUdJTiBBVE9NSUMKKyAgICBWQUxVRVMgKDEpLCAoMiksICgzKTsKK0VORDsKK1NFTEVDVCAq IEZST00gZnVuY3Rlc3Rfc3JpMigpOworIGZ1bmN0ZXN0X3NyaTIgCistLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAxCisgICAgICAgICAgICAgMgorICAgICAgICAgICAgIDMKKygz IHJvd3MpCisKK0VYUExBSU4gKHZlcmJvc2UsIGNvc3RzIG9mZikgU0VMRUNUICogRlJPTSBm dW5jdGVzdF9zcmkyKCk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFZhbHVlcyBTY2FuIG9uICIqVkFMVUVTKiIK KyAgIE91dHB1dDogIipWQUxVRVMqIi5jb2x1bW4xCisoMiByb3dzKQorCiAtLSBDaGVjayBi ZWhhdmlvciBvZiBWT0lELXJldHVybmluZyBTUUwgZnVuY3Rpb25zCiBDUkVBVEUgRlVOQ1RJ T04gdm9pZHRlc3QxKGEgaW50KSBSRVRVUk5TIFZPSUQgTEFOR1VBR0UgU1FMIEFTCiAkJCBT RUxFQ1QgYSArIDEgJCQ7CkBAIC0zOTgsNyArNjAxLDcgQEAgU0VMRUNUICogRlJPTSB2b2lk dGVzdDUoMyk7CiAKIC0tIENsZWFudXAKIERST1AgU0NIRU1BIHRlbXBfZnVuY190ZXN0IENB U0NBREU7Ci1OT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDIxIG90aGVyIG9iamVjdHMKK05P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMjkgb3RoZXIgb2JqZWN0cwogREVUQUlMOiAgZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzEodGV4dCxkYXRlKQogZHJvcCBj YXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzIodGV4dFtdKQogZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiBmdW5jdGVzdF9hXzMoKQpAQCAtNDE0LDcgKzYxNywxNSBAQCBkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2ZfMShpbnRlZ2VyKQogZHJvcCBjYXNj YWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9mXzIoaW50ZWdlcikKIGRyb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gZnVuY3Rlc3RfZl8zKGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1 bmN0aW9uIGZ1bmN0ZXN0X2ZfNChpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlv biBmdW5jdGVzdF9zXzEodGV4dCxkYXRlKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBm dW5jdGVzdF9zXzIodGV4dFtdKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVz dF9zXzMoKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9zXzNhKCkKK2Ry b3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3Rfc18xMCh0ZXh0LGRhdGUpCitkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMTMoKQogZHJvcCBjYXNjYWRlcyB0 byBmdW5jdGlvbiBmdW5jdGVzdF9iXzIoYmlnaW50KQorZHJvcCBjYXNjYWRlcyB0byBmdW5j dGlvbiBmdW5jdGVzdF9zcmkxKCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rl c3Rfc3JpMigpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHZvaWR0ZXN0MShpbnRlZ2Vy KQogZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB2b2lkdGVzdDIoaW50ZWdlcixpbnRlZ2Vy KQogZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB2b2lkdGVzdDMoaW50ZWdlcikKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CmluZGV4 IDM4MzhmYTIzMjQuLmQ0NTU3NTU2MWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dApAQCAtNjUsNiArNjUsNDggQEAgU0VMRUNU ICogRlJPTSBjcF90ZXN0IE9SREVSIEJZIGIgQ09MTEFURSAiQyI7CiAgMSB8IHh5enp5CiAo MyByb3dzKQogCistLSBTUUwtc3RhbmRhcmQgYm9keQorQ1JFQVRFIFBST0NFRFVSRSBwdGVz dDFzKHggdGV4dCkKK0xBTkdVQUdFIFNRTAorQkVHSU4gQVRPTUlDCisgIElOU0VSVCBJTlRP IGNwX3Rlc3QgVkFMVUVTICgxLCB4KTsKK0VORDsKK1xkZiBwdGVzdDFzCisgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIGZ1bmN0aW9ucworIFNjaGVtYSB8ICBOYW1lICAgfCBS ZXN1bHQgZGF0YSB0eXBlIHwgQXJndW1lbnQgZGF0YSB0eXBlcyB8IFR5cGUgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0KKyBwdWJsaWMgfCBwdGVzdDFzIHwgICAgICAgICAgICAgICAgICB8IHggdGV4dCAg ICAgICAgICAgICAgfCBwcm9jCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25k ZWYoJ3B0ZXN0MXMnOjpyZWdwcm9jKTsKKyAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1bmN0 aW9uZGVmICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgT1IgUkVQTEFDRSBQUk9DRURVUkUg cHVibGljLnB0ZXN0MXMoeCB0ZXh0KSsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyBCRUdJTiBBVE9NSUMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgSU5TRVJUIElOVE8gY3BfdGVzdCAoYSwgYikg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBWQUxVRVMgKDEsIHB0ZXN0MXMueCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyBFTkQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworQ0FMTCBwdGVzdDFzKCdi Jyk7CitTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QgT1JERVIgQlkgYiBDT0xMQVRFICJDIjsKKyBh IHwgICBiICAgCistLS0rLS0tLS0tLQorIDEgfCAwCisgMSB8IGEKKyAxIHwgYgorIDEgfCB4 eXp6eQorKDQgcm93cykKKworLS0gdXRpdGxpdHkgZnVuY3Rpb25zIGN1cnJlbnRseSBub3Qg c3VwcG9ydGVkIGhlcmUKK0NSRUFURSBQUk9DRURVUkUgcHRlc3R4KCkKK0xBTkdVQUdFIFNR TAorQkVHSU4gQVRPTUlDCisgIENSRUFURSBUQUJMRSB4IChhIGludCk7CitFTkQ7CitFUlJP UjogIENSRUFURSBUQUJMRSBpcyBub3QgeWV0IHN1cHBvcnRlZCBpbiB1bnF1b3RlZCBTUUwg ZnVuY3Rpb24gYm9keQogQ1JFQVRFIFBST0NFRFVSRSBwdGVzdDIoKQogTEFOR1VBR0UgU1FM CiBBUyAkJApAQCAtMTQ2LDYgKzE4OCwyOCBAQCBBUyAkJAogU0VMRUNUIGEgPSBiOwogJCQ7 CiBDQUxMIHB0ZXN0NyhsZWFzdCgnYScsICdiJyksICdhJyk7CistLSBlbXB0eSBib2R5CitD UkVBVEUgUFJPQ0VEVVJFIHB0ZXN0OCh4IHRleHQpCitCRUdJTiBBVE9NSUMKK0VORDsKK1xk ZiBwdGVzdDgKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgZnVuY3Rpb25zCisg U2NoZW1hIHwgIE5hbWUgIHwgUmVzdWx0IGRhdGEgdHlwZSB8IEFyZ3VtZW50IGRhdGEgdHlw ZXMgfCBUeXBlIAorLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBwdWJsaWMgfCBwdGVzdDggfCAgICAgICAgICAg ICAgICAgIHwgeCB0ZXh0ICAgICAgICAgICAgICB8IHByb2MKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9mdW5jdGlvbmRlZigncHRlc3Q4Jzo6cmVncHJvYyk7CisgICAgICAgICAgICAg ICAgcGdfZ2V0X2Z1bmN0aW9uZGVmICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBPUiBSRVBM QUNFIFBST0NFRFVSRSBwdWJsaWMucHRlc3Q4KHggdGV4dCkrCisgIExBTkdVQUdFIHNxbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBCRUdJTiBBVE9NSUMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEVORCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgCisoMSByb3cpCisKK0NBTEwg cHRlc3Q4KCcnKTsKIC0tIE9VVCBwYXJhbWV0ZXJzCiBDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0 OShPVVQgYSBpbnQpCiBMQU5HVUFHRSBTUUwKQEAgLTIxNCw2ICsyNzgsNyBAQCBBTFRFUiBS T1VUSU5FIHB0ZXN0MWEgUkVOQU1FIFRPIHB0ZXN0MTsKIERST1AgUk9VVElORSBjcF90ZXN0 ZnVuYzEoaW50KTsKIC0tIGNsZWFudXAKIERST1AgUFJPQ0VEVVJFIHB0ZXN0MTsKK0RST1Ag UFJPQ0VEVVJFIHB0ZXN0MXM7CiBEUk9QIFBST0NFRFVSRSBwdGVzdDI7CiBEUk9QIFRBQkxF IGNwX3Rlc3Q7CiBEUk9QIFVTRVIgcmVncmVzc19jcF91c2VyMTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlvbl8zLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlvbl8zLnNxbAppbmRleCA1NDliMzRiNGIyLi4yZjMx NDNiZTA5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfZnVuY3Rp b25fMy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Z1bmN0aW9uXzMu c3FsCkBAIC0xNTMsNiArMTUzLDY1IEBAIENSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9GXzQo aW50KSBSRVRVUk5TIGJvb2wgTEFOR1VBR0UgJ3NxbCcKIFNFTEVDVCBwZ19nZXRfZnVuY3Rp b25kZWYoJ2Z1bmN0ZXN0X0ZfMic6OnJlZ3Byb2MpOwogCiAKKy0tCistLSBTUUwtc3RhbmRh cmQgYm9keQorLS0KK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzEoYSB0ZXh0LCBiIGRh dGUpIFJFVFVSTlMgYm9vbGVhbgorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiBhID0g J2FiY2QnIEFORCBiID4gJzIwMDEtMDEtMDEnOworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0 X1NfMihhIHRleHRbXSkgUkVUVVJOUyBpbnQKKyAgICBSRVRVUk4gYVsxXTo6aW50OworQ1JF QVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMygpIFJFVFVSTlMgYm9vbGVhbgorICAgIFJFVFVS TiBmYWxzZTsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzNhKCkgUkVUVVJOUyBib29s ZWFuCisgICAgQkVHSU4gQVRPTUlDCisgICAgICAgIFJFVFVSTiBmYWxzZTsKKyAgICBFTkQ7 CisKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzEwKGEgdGV4dCwgYiBkYXRlKSBSRVRV Uk5TIGJvb2xlYW4KKyAgICBMQU5HVUFHRSBTUUwKKyAgICBCRUdJTiBBVE9NSUMKKyAgICAg ICAgU0VMRUNUIGEgPSAnYWJjZCcgQU5EIGIgPiAnMjAwMS0wMS0wMSc7CisgICAgRU5EOwor CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18xMygpIFJFVFVSTlMgYm9vbGVhbgorICAg IEJFR0lOIEFUT01JQworICAgICAgICBTRUxFQ1QgMTsKKyAgICAgICAgU0VMRUNUIGZhbHNl OworICAgIEVORDsKKworLS0gcG9seW1vcnBoaWMgYXJndW1lbnRzIG5vdCBhbGxvd2VkIGlu IHRoaXMgZm9ybQorQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfeHgoeCBhbnlhcnJheSkg UkVUVVJOUyBhbnllbGVtZW50CisgICAgTEFOR1VBR0UgU1FMCisgICAgUkVUVVJOIHhbMV07 CisKK1NFTEVDVCBmdW5jdGVzdF9TXzEoJ2FiY2QnLCAnMjAyMC0wMS0wMScpOworU0VMRUNU IGZ1bmN0ZXN0X1NfMihBUlJBWVsnMScsICcyJywgJzMnXSk7CitTRUxFQ1QgZnVuY3Rlc3Rf U18zKCk7CisKK1NFTEVDVCBmdW5jdGVzdF9TXzEwKCdhYmNkJywgJzIwMjAtMDEtMDEnKTsK K1NFTEVDVCBmdW5jdGVzdF9TXzEzKCk7CisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYo J2Z1bmN0ZXN0X1NfMSc6OnJlZ3Byb2MpOworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZign ZnVuY3Rlc3RfU18yJzo6cmVncHJvYyk7CitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdm dW5jdGVzdF9TXzMnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1 bmN0ZXN0X1NfM2EnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1 bmN0ZXN0X1NfMTAnOjpyZWdwcm9jKTsKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1 bmN0ZXN0X1NfMTMnOjpyZWdwcm9jKTsKKworLS0gdGVzdCB3aXRoIHZpZXdzCitDUkVBVEUg VEFCTEUgZnVuY3Rlc3QzIChhIGludCk7CitJTlNFUlQgSU5UTyBmdW5jdGVzdDMgVkFMVUVT ICgxKSwgKDIpOworQ1JFQVRFIFZJRVcgZnVuY3Rlc3R2MyBBUyBTRUxFQ1QgKiBGUk9NIGZ1 bmN0ZXN0MzsKKworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMTQoKSBSRVRVUk5TIGJp Z2ludAorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gZnVuY3Rlc3R2Myk7CisK K1NFTEVDVCBmdW5jdGVzdF9TXzE0KCk7CisKK0RST1AgVEFCTEUgZnVuY3Rlc3QzIENBU0NB REU7CisKKwogLS0gaW5mb3JtYXRpb25fc2NoZW1hIHRlc3RzCiAKIENSRUFURSBGVU5DVElP TiBmdW5jdGVzdF9JU18xKGEgaW50LCBiIGludCBkZWZhdWx0IDEsIGMgdGV4dCBkZWZhdWx0 ICdmb28nKQpAQCAtMTg4LDE3ICsyNDcsMjkgQEAgQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0 X0lTXzUoeCBpbnQgREVGQVVMVCBuZXh0dmFsKCdmdW5jdGVzdDEnKSkKICAgICBMQU5HVUFH RSBTUUwKICAgICBBUyAnU0VMRUNUIHgnOwogCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3Rf SVNfNigpCisgICAgUkVUVVJOUyBpbnQKKyAgICBMQU5HVUFHRSBTUUwKKyAgICBSRVRVUk4g bmV4dHZhbCgnZnVuY3Rlc3QxJyk7CisKK0NSRUFURSBUQUJMRSBmdW5jdGVzdDIgKGEgaW50 LCBiIGludCk7CisKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU183KCkKKyAgICBSRVRV Uk5TIGludAorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KGEp IEZST00gZnVuY3Rlc3QyKTsKKwogU0VMRUNUIHIwLnJvdXRpbmVfbmFtZSwgcjEucm91dGlu ZV9uYW1lCiAgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRpbmVfcm91dGluZV91c2Fn ZSBycnUKICAgICAgICBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5yb3V0aW5lcyByMCBPTiBy MC5zcGVjaWZpY19uYW1lID0gcnJ1LnNwZWNpZmljX25hbWUKICAgICAgICBKT0lOIGluZm9y bWF0aW9uX3NjaGVtYS5yb3V0aW5lcyByMSBPTiByMS5zcGVjaWZpY19uYW1lID0gcnJ1LnJv dXRpbmVfbmFtZTsKIFNFTEVDVCByb3V0aW5lX25hbWUsIHNlcXVlbmNlX25hbWUgRlJPTSBp bmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV9zZXF1ZW5jZV91c2FnZTsKLS0tIGN1cnJlbnRs eSBlbXB0eQogU0VMRUNUIHJvdXRpbmVfbmFtZSwgdGFibGVfbmFtZSwgY29sdW1uX25hbWUg RlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZV9jb2x1bW5fdXNhZ2U7CiBTRUxFQ1Qg cm91dGluZV9uYW1lLCB0YWJsZV9uYW1lIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRp bmVfdGFibGVfdXNhZ2U7CiAKIERST1AgRlVOQ1RJT04gZnVuY3Rlc3RfSVNfNGEgQ0FTQ0FE RTsKIERST1AgU0VRVUVOQ0UgZnVuY3Rlc3QxIENBU0NBREU7CitEUk9QIFRBQkxFIGZ1bmN0 ZXN0MiBDQVNDQURFOwogCiAKIC0tIG92ZXJsb2FkCkBAIC0yMTgsNiArMjg5LDI5IEBAIENS RUFURSBPUiBSRVBMQUNFIFBST0NFRFVSRSBmdW5jdGVzdDEoYSBpbnQpIExBTkdVQUdFIFNR TCBBUyAnU0VMRUNUICQxJzsKIERST1AgRlVOQ1RJT04gZnVuY3Rlc3QxKGEgaW50KTsKIAog CistLSBpbmxpbmluZyBvZiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucworCitDUkVBVEUgRlVO Q1RJT04gZnVuY3Rlc3Rfc3JpMSgpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwK K1NUQUJMRQorQVMgJworICAgIFZBTFVFUyAoMSksICgyKSwgKDMpOworJzsKKworU0VMRUNU ICogRlJPTSBmdW5jdGVzdF9zcmkxKCk7CitFWFBMQUlOICh2ZXJib3NlLCBjb3N0cyBvZmYp IFNFTEVDVCAqIEZST00gZnVuY3Rlc3Rfc3JpMSgpOworCitDUkVBVEUgRlVOQ1RJT04gZnVu Y3Rlc3Rfc3JpMigpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwKK1NUQUJMRQor QkVHSU4gQVRPTUlDCisgICAgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitFTkQ7CisKK1NFTEVD VCAqIEZST00gZnVuY3Rlc3Rfc3JpMigpOworRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2Zm KSBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0X3NyaTIoKTsKKworCiAtLSBDaGVjayBiZWhhdmlv ciBvZiBWT0lELXJldHVybmluZyBTUUwgZnVuY3Rpb25zCiAKIENSRUFURSBGVU5DVElPTiB2 b2lkdGVzdDEoYSBpbnQpIFJFVFVSTlMgVk9JRCBMQU5HVUFHRSBTUUwgQVMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKaW5kZXggMmVmMWM4MmNlYS4u NzZmNzgxYzBiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3By b2NlZHVyZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVy ZS5zcWwKQEAgLTI4LDYgKzI4LDI4IEBAIENSRUFURSBQUk9DRURVUkUgcHRlc3QxKHggdGV4 dCkKIFNFTEVDVCAqIEZST00gY3BfdGVzdCBPUkRFUiBCWSBiIENPTExBVEUgIkMiOwogCiAK Ky0tIFNRTC1zdGFuZGFyZCBib2R5CitDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0MXMoeCB0ZXh0 KQorTEFOR1VBR0UgU1FMCitCRUdJTiBBVE9NSUMKKyAgSU5TRVJUIElOVE8gY3BfdGVzdCBW QUxVRVMgKDEsIHgpOworRU5EOworCitcZGYgcHRlc3QxcworU0VMRUNUIHBnX2dldF9mdW5j dGlvbmRlZigncHRlc3Qxcyc6OnJlZ3Byb2MpOworCitDQUxMIHB0ZXN0MXMoJ2InKTsKKwor U0VMRUNUICogRlJPTSBjcF90ZXN0IE9SREVSIEJZIGIgQ09MTEFURSAiQyI7CisKKy0tIHV0 aXRsaXR5IGZ1bmN0aW9ucyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBoZXJlCitDUkVBVEUg UFJPQ0VEVVJFIHB0ZXN0eCgpCitMQU5HVUFHRSBTUUwKK0JFR0lOIEFUT01JQworICBDUkVB VEUgVEFCTEUgeCAoYSBpbnQpOworRU5EOworCisKIENSRUFURSBQUk9DRURVUkUgcHRlc3Qy KCkKIExBTkdVQUdFIFNRTAogQVMgJCQKQEAgLTExMiw2ICsxMzQsMTYgQEAgQ1JFQVRFIFBS T0NFRFVSRSBwdGVzdDcoYSB0ZXh0LCBiIHRleHQpCiBDQUxMIHB0ZXN0NyhsZWFzdCgnYScs ICdiJyksICdhJyk7CiAKIAorLS0gZW1wdHkgYm9keQorQ1JFQVRFIFBST0NFRFVSRSBwdGVz dDgoeCB0ZXh0KQorQkVHSU4gQVRPTUlDCitFTkQ7CisKK1xkZiBwdGVzdDgKK1NFTEVDVCBw Z19nZXRfZnVuY3Rpb25kZWYoJ3B0ZXN0OCc6OnJlZ3Byb2MpOworQ0FMTCBwdGVzdDgoJycp OworCisKIC0tIE9VVCBwYXJhbWV0ZXJzCiAKIENSRUFURSBQUk9DRURVUkUgcHRlc3Q5KE9V VCBhIGludCkKQEAgLTE3MCw2ICsyMDIsNyBAQCBDUkVBVEUgVVNFUiByZWdyZXNzX2NwX3Vz ZXIxOwogLS0gY2xlYW51cAogCiBEUk9QIFBST0NFRFVSRSBwdGVzdDE7CitEUk9QIFBST0NF RFVSRSBwdGVzdDFzOwogRFJPUCBQUk9DRURVUkUgcHRlc3QyOwogCiBEUk9QIFRBQkxFIGNw X3Rlc3Q7CgpiYXNlLWNvbW1pdDogZmY5OTkxOGM2MjVhODRjOTFlNzM5MWRiOTAzMjExMmVj ODY1MzYyMwotLSAKMi4zMC4xCgo= --------------D4FAA6ED8E02873C28584611--