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 1kg0nN-0005yD-SU for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Nov 2020 07:25:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kg0nM-0003zu-T1 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Nov 2020 07:25:24 +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 1kg0nL-0003zm-VF for pgsql-hackers@lists.postgresql.org; Fri, 20 Nov 2020 07:25:24 +0000 Received: from forward1-smtp.messagingengine.com ([66.111.4.223]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kg0nG-0001xl-3n for pgsql-hackers@lists.postgresql.org; Fri, 20 Nov 2020 07:25:23 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.nyi.internal (Postfix) with ESMTP id 123101942FE9; Fri, 20 Nov 2020 02:25:16 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 20 Nov 2020 02:25:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=fm1; bh=bZj+2A OSuRJds2ru6B0DaZ7MQqaRPOuVg0A5qTfTjZo=; b=c2ehkbEDuLH64ffw9IyHj8 jNUO39tfCrxSvx6k0KXPBOnfrbqk+qxU3RrtgSge+05ZTsAHNXhIZedYuE0joIIM smTjJTf0/iWafwh1yPB4gbjOAKt9cnpyGXUSy/sNwSf21nKF/8gZxIhybqKTqslA 7h/R7eJRGOZI8KwcoTccgruW0wzRWRF6wCyxc6T+yLjkBiiYeHFGAuhpQxbxzYGl NMVlpziPcaEW9Aej/KJPUXjV60QSpEFX8+HwSBXbozykUNxBECVEHPpVxF+2e83x xjuVONKYGaBuMSV/MUfJ4Kx219Y501xvhc3PnfSOiNuwasy85Wwz57RFGA+mnTeA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudefledgjeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhohfkffgfgggjtgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqh hurggurhgrnhhtrdgtohhmqeenucggtffrrghtthgvrhhnpedugfeuveeileeugfegledu gffhuefhhfejheefgfeludeftdeivedugfegvefgjeenucffohhmrghinhepvdhnughquh grughrrghnthdrtghomhenucfkphepkeejrddujeejrdejhedrleegnecuvehluhhsthgv rhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnh htrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from april.pezone.net (p57b14b5e.dip0.t-ipconnect.de [87.177.75.94]) by mail.messagingengine.com (Postfix) with ESMTPA id A14503064AB0; Fri, 20 Nov 2020 02:25:14 -0500 (EST) Subject: Re: SQL-standard function body To: Georgios Kokolatos , pgsql-hackers@lists.postgresql.org References: <1c11f1eb-f00c-43b7-799d-2d44132c02d7@2ndquadrant.com> <0725f2a9-a4f9-87c3-dd47-e5aa24997ad9@2ndquadrant.com> <160502166422.7362.9550545869239240893.pgcf@coridan.postgresql.org> From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <59430371-e1c8-3ee8-7ef6-371eb1a00e7e@2ndquadrant.com> Date: Fri, 20 Nov 2020 08:25:13 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <160502166422.7362.9550545869239240893.pgcf@coridan.postgresql.org> Content-Type: multipart/mixed; boundary="------------DD43FC793BE73AC2FAEDEF69" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------DD43FC793BE73AC2FAEDEF69 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2020-11-10 16:21, Georgios Kokolatos wrote: > Hi, > > I noticed that this patch fails on the cfbot. > For this, I changed the status to: 'Waiting on Author'. > > Cheers, > //Georgios > > The new status of this patch is: Waiting on Author > Here is an updated patch to get it building again. -- Peter Eisentraut 2ndQuadrant, an EDB company https://www.2ndquadrant.com/ --------------DD43FC793BE73AC2FAEDEF69 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v6-0001-SQL-standard-function-body.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v6-0001-SQL-standard-function-body.patch" RnJvbSA1ZmEzODU1YWJkODhlMDE3NGNiMDAzMDhhOTk2ODE5NDQwYjdlNmI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyMCBOb3YgMjAyMCAwODoyMzozMCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjZdIFNRTC1zdGFuZGFyZCBmdW5jdGlvbiBib2R5CgpUaGlzIGFkZHMgc3Vw cG9ydCBmb3Igd3JpdGluZyBDUkVBVEUgRlVOQ1RJT04gYW5kIENSRUFURSBQUk9DRURVUkUK c3RhdGVtZW50cyBmb3IgbGFuZ3VhZ2UgU1FMIHdpdGggYSBmdW5jdGlvbiBib2R5IHRoYXQg Y29uZm9ybXMgdG8gdGhlClNRTCBzdGFuZGFyZCBhbmQgaXMgcG9ydGFibGUgdG8gb3RoZXIg aW1wbGVtZW50YXRpb25zLgoKSW5zdGVhZCBvZiB0aGUgUG9zdGdyZVNRTC1zcGVjaWZpYyBB UyAkJCBzdHJpbmcgbGl0ZXJhbCAkJCBzeW50YXgsCnRoaXMgYWxsb3dzIHdyaXRpbmcgb3V0 IHRoZSBTUUwgc3RhdGVtZW50cyBtYWtpbmcgdXAgdGhlIGJvZHkKdW5xdW90ZWQsIGVpdGhl ciBhcyBhIHNpbmdsZSBzdGF0ZW1lbnQ6CgogICAgQ1JFQVRFIEZVTkNUSU9OIGFkZChhIGlu dGVnZXIsIGIgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyCiAgICAgICAgTEFOR1VBR0UgU1FM CiAgICAgICAgUkVUVVJOIGEgKyBiOwoKb3IgYXMgYSBibG9jawoKICAgIENSRUFURSBQUk9D RURVUkUgaW5zZXJ0X2RhdGEoYSBpbnRlZ2VyLCBiIGludGVnZXIpCiAgICBMQU5HVUFHRSBT UUwKICAgIEJFR0lOIEFUT01JQwogICAgICBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTIChhKTsK ICAgICAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYik7CiAgICBFTkQ7CgpUaGUgZnVuY3Rp b24gYm9keSBpcyBwYXJzZWQgYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiB0aW1lIGFuZCBzdG9y ZWQgYXMKZXhwcmVzc2lvbiBub2RlcyBpbiBhIG5ldyBwZ19wcm9jIGNvbHVtbiBwcm9zcWxi b2R5LiAgU28gYXQgcnVuIHRpbWUsCm5vIGZ1cnRoZXIgcGFyc2luZyBpcyByZXF1aXJlZC4K Ckhvd2V2ZXIsIHRoaXMgZm9ybSBkb2VzIG5vdCBzdXBwb3J0IHBvbHltb3JwaGljIGFyZ3Vt ZW50cywgYmVjYXVzZQp0aGVyZSBpcyBubyBtb3JlIHBhcnNlIGFuYWx5c2lzIGRvbmUgYXQg Y2FsbCB0aW1lLgoKRGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIGZ1bmN0aW9uIGFuZCB0aGUg b2JqZWN0cyBpdCB1c2VzIGFyZSBmdWxseQp0cmFja2VkLgoKQSBuZXcgUkVUVVJOIHN0YXRl bWVudCBpcyBpbnRyb2R1Y2VkLiAgVGhpcyBjYW4gb25seSBiZSB1c2VkIGluc2lkZQpmdW5j dGlvbiBib2RpZXMuICBJbnRlcm5hbGx5LCBpdCBpcyB0cmVhdGVkIG11Y2ggbGlrZSBhIFNF TEVDVApzdGF0ZW1lbnQuCgpwc3FsIG5lZWRzIHNvbWUgbmV3IGludGVsbGlnZW5jZSB0byBr ZWVwIHRyYWNrIG9mIGZ1bmN0aW9uIGJvZHkKYm91bmRhcmllcyBzbyB0aGF0IGl0IGRvZXNu J3Qgc2VuZCBvZmYgc3RhdGVtZW50cyB3aGVuIGl0IHNlZXMKc2VtaWNvbG9ucyB0aGF0IGFy ZSBpbnNpZGUgYSBmdW5jdGlvbiBib2R5LgoKQWxzbywgcGVyIFNRTCBzdGFuZGFyZCwgTEFO R1VBR0UgU1FMIGlzIHRoZSBkZWZhdWx0LCBzbyBpdCBkb2VzIG5vdApuZWVkIHRvIGJlIHNw ZWNpZmllZCBhbnltb3JlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5v cmcvbWVzc2FnZS1pZC9mbGF0LzFjMTFmMWViLWYwMGMtNDNiNy03OTlkLTJkNDQxMzJjMDJk N0AybmRxdWFkcmFudC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAg ICAgICAgICAgICAgICAgfCAgMTAgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZnVuY3Rp b24uc2dtbCAgICAgICAgIHwgMTI2ICsrKysrKysrKy0tCiBkb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9wcm9jZWR1cmUuc2dtbCAgICAgICAgfCAgNjIgKysrKy0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfYWdncmVnYXRlLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX3Byb2MuYyAgICAgICAgICAgICAgICAgfCAxMTYgKysrKysrLS0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICAgICAgICAgICB8IDExOSArKysr KysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAg IHwgIDc5ICsrKystLS0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAg ICAgICAgICB8ICAxNSArKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAg ICAgICAgICAgIHwgIDEzICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAg ICAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYyAgICAgICAgICB8IDEyNiArKysrKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYyAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgMTI5ICsrKysrKysrLS0tCiBzcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDEwNiArKysrKysr Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA0 NSArKystCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAg fCAgMTUgKy0KIHNyYy9mZV91dGlscy9wc3Fsc2Nhbi5sICAgICAgICAgICAgICAgICAgICAg ICB8ICAyMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2Z1bmN0aW9ucy5oICAgICAg ICAgICAgICB8ICAxNSArKwogc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW5faW50Lmgg ICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMTMgKysKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAg ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2Vj cGcuYWRkb25zICAgICAgIHwgICA2ICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLnRyYWlsZXIgICAgICB8ICAgNCArLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2Z1bmN0aW9uXzMub3V0ICAgIHwgMjEyICsrKysrKysrKysrKysrKysrLQogLi4uL3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQgICAgIHwgIDU4ICsrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfZnVuY3Rpb25fMy5zcWwgICAgfCAgOTkgKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsICAgICB8ICAy NiArKysKIDM2IGZpbGVzIGNoYW5nZWQsIDEyODYgaW5zZXJ0aW9ucygrKSwgMjA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNTY5ODQxMzk4Yi4uZmRhMmU0NmQ0YiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKQEAgLTU5NzMsNiArNTk3MywxNiBAQCA8dGl0bGU+PHN0cnVj dG5hbWU+cGdfcHJvYzwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3NxbGJvZHk8L3N0cnVjdGZpZWxkPiA8dHlw ZT5wZ19ub2RlX3RyZWU8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBQcmUtcGFyc2VkIFNRTCBmdW5jdGlvbiBib2R5LiAgVGhpcyB3aWxsIGJlIHVzZWQg Zm9yIGxhbmd1YWdlIFNRTAorICAgICAgIGZ1bmN0aW9ucyBpZiB0aGUgYm9keSBpcyBub3Qg c3BlY2lmaWVkIGFzIGEgc3RyaW5nIGNvbnN0YW50LgorICAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAg ICA8c3RydWN0ZmllbGQ+cHJvY29uZmlnPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dFtdPC90 eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZnVuY3Rpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2Z1bmN0aW9uLnNnbWwKaW5kZXggM2MxZWFl YTY1MS4uMWI1Yjk0MjBkYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf ZnVuY3Rpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mdW5jdGlvbi5z Z21sCkBAIC0zOCw2ICszOCw3IEBACiAgICAgfCBTRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbmZpZ3VyYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4geyBUTyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gfCBG Uk9NIENVUlJFTlQgfQogICAgIHwgQVMgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4nCiAgICAgfCBBUyAnPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9ial9maWxlPC9yZXBsYWNlYWJsZT4nLCAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxpbmtfc3ltYm9sPC9yZXBsYWNlYWJsZT4nCisgICAgfCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2JvZHk8L3JlcGxhY2VhYmxlPgog ICB9IC4uLgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgpAQCAtMjU3LDggKzI1 OCw5IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgICBUaGUgbmFtZSBvZiB0 aGUgbGFuZ3VhZ2UgdGhhdCB0aGUgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4uCiAgICAg ICAgSXQgY2FuIGJlIDxsaXRlcmFsPnNxbDwvbGl0ZXJhbD4sIDxsaXRlcmFsPmM8L2xpdGVy YWw+LAogICAgICAgIDxsaXRlcmFsPmludGVybmFsPC9saXRlcmFsPiwgb3IgdGhlIG5hbWUg b2YgYSB1c2VyLWRlZmluZWQKLSAgICAgICBwcm9jZWR1cmFsIGxhbmd1YWdlLCBlLmcuLCA8 bGl0ZXJhbD5wbHBnc3FsPC9saXRlcmFsPi4gIEVuY2xvc2luZyB0aGUKLSAgICAgICBuYW1l IGluIHNpbmdsZSBxdW90ZXMgaXMgZGVwcmVjYXRlZCBhbmQgcmVxdWlyZXMgbWF0Y2hpbmcg Y2FzZS4KKyAgICAgICBwcm9jZWR1cmFsIGxhbmd1YWdlLCBlLmcuLCA8bGl0ZXJhbD5wbHBn c3FsPC9saXRlcmFsPi4gIFRoZSBkZWZhdWx0IGlzCisgICAgICAgPGxpdGVyYWw+c3FsPC9s aXRlcmFsPi4gIEVuY2xvc2luZyB0aGUgbmFtZSBpbiBzaW5nbGUgcXVvdGVzIGlzCisgICAg ICAgZGVwcmVjYXRlZCBhbmQgcmVxdWlyZXMgbWF0Y2hpbmcgY2FzZS4KICAgICAgIDwvcGFy YT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTU3Nyw2ICs1 NzksNDQgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgICA8L2xpc3RpdGVtPgog ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9ib2R5PC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGJv ZHkgb2YgYSA8bGl0ZXJhbD5MQU5HVUFHRSBTUUw8L2xpdGVyYWw+IGZ1bmN0aW9uLiAgVGhp cyBjYW4KKyAgICAgICBlaXRoZXIgYmUgYSBzaW5nbGUgc3RhdGVtZW50Cis8cHJvZ3JhbWxp c3Rpbmc+CitSRVRVUk4gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPgor PC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICBvciBhIGJsb2NrCis8cHJvZ3JhbWxpc3Rpbmc+ CitCRUdJTiBBVE9NSUMKKyAgPHJlcGxhY2VhYmxlPnN0YXRlbWVudDwvcmVwbGFjZWFibGU+ OworICA8cmVwbGFjZWFibGU+c3RhdGVtZW50PC9yZXBsYWNlYWJsZT47CisgIC4uLgorICA8 cmVwbGFjZWFibGU+c3RhdGVtZW50PC9yZXBsYWNlYWJsZT47CitFTkQKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMg c2ltaWxhciB0byB3cml0aW5nIHRoZSB0ZXh0IG9mIHRoZSBmdW5jdGlvbiBib2R5IGFzIGEg c3RyaW5nCisgICAgICAgY29uc3RhbnQgKHNlZSA8cmVwbGFjZWFibGU+ZGVmaW5pdGlvbjwv cmVwbGFjZWFibGU+IGFib3ZlKSwgYnV0IHRoZXJlCisgICAgICAgYXJlIHNvbWUgZGlmZmVy ZW5jZXM6IFRoaXMgZm9ybSBvbmx5IHdvcmtzIGZvciA8bGl0ZXJhbD5MQU5HVUFHRQorICAg ICAgIFNRTDwvbGl0ZXJhbD4sIHRoZSBzdHJpbmcgY29uc3RhbnQgZm9ybSB3b3JrcyBmb3Ig YWxsIGxhbmd1YWdlcy4gIFRoaXMKKyAgICAgICBmb3JtIGlzIHBhcnNlZCBhdCBmdW5jdGlv biBkZWZpbml0aW9uIHRpbWUsIHRoZSBzdHJpbmcgY29uc3RhbnQgZm9ybSBpcworICAgICAg IHBhcnNlZCBhdCBleGVjdXRpb24gdGltZTsgdGhlcmVmb3JlIHRoaXMgZm9ybSBjYW5ub3Qg c3VwcG9ydAorICAgICAgIHBvbHltb3JwaGljIGFyZ3VtZW50IHR5cGVzIGFuZCBvdGhlciBj b25zdHJ1Y3RzIHRoYXQgYXJlIG5vdCByZXNvbHZhYmxlCisgICAgICAgYXQgZnVuY3Rpb24g ZGVmaW5pdGlvbiB0aW1lLiAgVGhpcyBmb3JtIHRyYWNrcyBkZXBlbmRlbmNpZXMgYmV0d2Vl biB0aGUKKyAgICAgICBmdW5jdGlvbiBhbmQgb2JqZWN0cyB1c2VkIGluIHRoZSBmdW5jdGlv biBib2R5LCBzbyA8bGl0ZXJhbD5EUk9QCisgICAgICAgLi4uIENBU0NBREU8L2xpdGVyYWw+ IHdpbGwgd29yayBjb3JyZWN0bHksIHdoZXJlYXMgdGhlIGZvcm0gdXNpbmcKKyAgICAgICBz dHJpbmcgbGl0ZXJhbHMgbWF5IGxlYXZlIGRhbmdsaW5nIGZ1bmN0aW9ucy4gIEZpbmFsbHks IHRoaXMgZm9ybSBpcworICAgICAgIG1vcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBTUUwgc3Rh bmRhcmQgYW5kIG90aGVyIFNRTCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICA8L3BhcmE+Cisg ICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDwvdmFyaWFibGVs aXN0PgogCiAgICA8cGFyYT4KQEAgLTY2OSw2ICs3MDksMTUgQEAgPHRpdGxlPkV4YW1wbGVz PC90aXRsZT4KICAgICBMQU5HVUFHRSBTUUwKICAgICBJTU1VVEFCTEUKICAgICBSRVRVUk5T IE5VTEwgT04gTlVMTCBJTlBVVDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICBUaGUgc2FtZSBm dW5jdGlvbiB3cml0dGVuIGluIGEgbW9yZSBTUUwtY29uZm9ybWluZyBzdHlsZSwgdXNpbmcg YXJndW1lbnQKKyAgIG5hbWVzIGFuZCBhbiB1bnF1b3RlZCBib2R5OgorPHByb2dyYW1saXN0 aW5nPgorQ1JFQVRFIEZVTkNUSU9OIGFkZChhIGludGVnZXIsIGIgaW50ZWdlcikgUkVUVVJO UyBpbnRlZ2VyCisgICAgTEFOR1VBR0UgU1FMCisgICAgSU1NVVRBQkxFCisgICAgUkVUVVJO UyBOVUxMIE9OIE5VTEwgSU5QVVQKKyAgICBSRVRVUk4gYSArIGI7CiA8L3Byb2dyYW1saXN0 aW5nPgogICA8L3BhcmE+CiAKQEAgLTc5OSwyMyArODQ4LDc0IEBAIDx0aXRsZT5Xcml0aW5n IDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+IEZ1bmN0aW9ucyBTYWZlbHk8 L3RpdGxlPgogICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CiAKICAgPHBhcmE+Ci0g ICBBIDxjb21tYW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gY29tbWFuZCBpcyBkZWZp bmVkIGluIHRoZSBTUUwgc3RhbmRhcmQuCi0gICBUaGUgPHByb2R1Y3RuYW1lPlBvc3RncmVT UUw8L3Byb2R1Y3RuYW1lPiB2ZXJzaW9uIGlzIHNpbWlsYXIgYnV0Ci0gICBub3QgZnVsbHkg Y29tcGF0aWJsZS4gIFRoZSBhdHRyaWJ1dGVzIGFyZSBub3QgcG9ydGFibGUsIG5laXRoZXIg YXJlIHRoZQotICAgZGlmZmVyZW50IGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICBBIDxjb21t YW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gY29tbWFuZCBpcyBkZWZpbmVkIGluIHRo ZSBTUUwKKyAgIHN0YW5kYXJkLiAgVGhlIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9k dWN0bmFtZT4gaW1wbGVtZW50YXRpb24gY2FuIGJlCisgICB1c2VkIGluIGEgY29tcGF0aWJs ZSB3YXkgYnV0IGhhcyBtYW55IGV4dGVuc2lvbnMuICBDb252ZXJzZWx5LCB0aGUgU1FMCisg ICBzdGFuZGFyZCBzcGVjaWZpZXMgYSBudW1iZXIgb2Ygb3B0aW9uYWwgZmVhdHVyZXMgdGhh dCBhcmUgbm90IGltcGxlbWVudGVkCisgICBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+LgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBGb3IgY29tcGF0aWJp bGl0eSB3aXRoIHNvbWUgb3RoZXIgZGF0YWJhc2Ugc3lzdGVtcywKLSAgIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gY2FuIGJlIHdyaXR0 ZW4KLSAgIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPi4KLSAgIEJ1dCBvbmx5IHRoZSBmaXJzdCB3 YXkgaXMgc3RhbmRhcmQtY29tcGxpYW50LgorICAgVGhlIGZvbGxvd2luZyBhcmUgaW1wb3J0 YW50IGNvbXBhdGliaWxpdHkgaXNzdWVzOgorCisgICA8aXRlbWl6ZWRsaXN0PgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJhbD5PUiBSRVBMQUNFPC9saXRl cmFsPiBpcyBhIFBvc3RncmVTUUwgZXh0ZW5zaW9uLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBGb3IgY29t cGF0aWJpbGl0eSB3aXRoIHNvbWUgb3RoZXIgZGF0YWJhc2Ugc3lzdGVtcywgPHJlcGxhY2Vh YmxlCisgICAgICBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gY2Fu IGJlIHdyaXR0ZW4gZWl0aGVyIGJlZm9yZSBvcgorICAgICAgYWZ0ZXIgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPi4gIEJ1dCBvbmx5Cisg ICAgICB0aGUgZmlyc3Qgd2F5IGlzIHN0YW5kYXJkLWNvbXBsaWFudC4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAg ICAgRm9yIHBhcmFtZXRlciBkZWZhdWx0cywgdGhlIFNRTCBzdGFuZGFyZCBzcGVjaWZpZXMg b25seSB0aGUgc3ludGF4IHdpdGgKKyAgICAgIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPiBrZXkgd29yZC4gIFRoZSBzeW50YXggd2l0aAorICAgICAgPGxpdGVyYWw+PTwvbGl0 ZXJhbD4gaXMgdXNlZCBpbiBULVNRTCBhbmQgRmlyZWJpcmQuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRo ZSA8bGl0ZXJhbD5TRVRPRjwvbGl0ZXJhbD4gbW9kaWZpZXIgaXMgYSBQb3N0Z3JlU1FMIGV4 dGVuc2lvbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisKKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgT25seSA8bGl0ZXJhbD5TUUw8L2xpdGVyYWw+IGlz IHN0YW5kYXJkaXplZCBhcyBhIGxhbmd1YWdlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbGwgb3RoZXIg YXR0cmlidXRlcyBleGNlcHQgPGxpdGVyYWw+Q0FMTEVEIE9OIE5VTEwgSU5QVVQ8L2xpdGVy YWw+IGFuZAorICAgICAgPGxpdGVyYWw+UkVUVVJOUyBOVUxMIE9OIE5VTEwgSU5QVVQ8L2xp dGVyYWw+IGFyZSBub3Qgc3RhbmRhcmRpemVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBGb3IgdGhlIGJv ZHkgb2YgPGxpdGVyYWw+TEFOR1VBR0UgU1FMPC9saXRlcmFsPiBmdW5jdGlvbnMsIHRoZSBT UUwKKyAgICAgIHN0YW5kYXJkIG9ubHkgc3BlY2lmaWVzIHRoZSA8cmVwbGFjZWFibGU+c3Fs X2JvZHk8L3JlcGxhY2VhYmxlPiBmb3JtLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvaXRlbWl6ZWRsaXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBGb3Ig cGFyYW1ldGVyIGRlZmF1bHRzLCB0aGUgU1FMIHN0YW5kYXJkIHNwZWNpZmllcyBvbmx5IHRo ZSBzeW50YXggd2l0aAotICAgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IGtleSB3 b3JkLiAgVGhlIHN5bnRheAotICAgd2l0aCA8bGl0ZXJhbD49PC9saXRlcmFsPiBpcyB1c2Vk IGluIFQtU1FMIGFuZCBGaXJlYmlyZC4KKyAgIFNpbXBsZSA8bGl0ZXJhbD5MQU5HVUFHRSBT UUw8L2xpdGVyYWw+IGZ1bmN0aW9ucyBjYW4gYmUgd3JpdHRlbiBpbiBhIHdheQorICAgdGhh dCBpcyBib3RoIHN0YW5kYXJkLWNvbmZvcm1pbmcgYW5kIHBvcnRhYmxlIHRvIG90aGVyIGlt cGxlbWVudGF0aW9ucy4KKyAgIE1vcmUgY29tcGxleCBmdW5jdGlvbnMgdXNpbmcgYWR2YW5j ZWQgZmVhdHVyZXMsIG9wdGltaXphdGlvbiBhdHRyaWJ1dGVzLCBvcgorICAgb3RoZXIgbGFu Z3VhZ2VzIHdpbGwgbmVjZXNzYXJpbHkgYmUgc3BlY2lmaWMgdG8gUG9zdGdyZVNRTCBpbiBh IHNpZ25pZmljYW50CisgICB3YXkuCiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3Byb2NlZHVyZS5zZ21sCmluZGV4IGUyNThlY2E1Y2UuLmVj ZGVhYzE2MjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb2NlZHVy ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb2NlZHVyZS5zZ21sCkBA IC0yOSw2ICsyOSw3IEBACiAgICAgfCBTRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbmZpZ3VyYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4geyBUTyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8ID0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gfCBGUk9NIENV UlJFTlQgfQogICAgIHwgQVMgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZWZp bml0aW9uPC9yZXBsYWNlYWJsZT4nCiAgICAgfCBBUyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9ial9maWxlPC9yZXBsYWNlYWJsZT4nLCAnPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmxpbmtfc3ltYm9sPC9yZXBsYWNlYWJsZT4nCisgICAgfCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2JvZHk8L3JlcGxhY2VhYmxlPgogICB9IC4u LgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgpAQCAtMTYyLDggKzE2Myw5IEBA IDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbGFu Z3VhZ2UgdGhhdCB0aGUgcHJvY2VkdXJlIGlzIGltcGxlbWVudGVkIGluLgogICAgICAgIEl0 IGNhbiBiZSA8bGl0ZXJhbD5zcWw8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jPC9saXRlcmFsPiwK ICAgICAgICA8bGl0ZXJhbD5pbnRlcm5hbDwvbGl0ZXJhbD4sIG9yIHRoZSBuYW1lIG9mIGEg dXNlci1kZWZpbmVkCi0gICAgICAgcHJvY2VkdXJhbCBsYW5ndWFnZSwgZS5nLiwgPGxpdGVy YWw+cGxwZ3NxbDwvbGl0ZXJhbD4uICBFbmNsb3NpbmcgdGhlCi0gICAgICAgbmFtZSBpbiBz aW5nbGUgcXVvdGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcXVpcmVzIG1hdGNoaW5nIGNhc2Uu CisgICAgICAgcHJvY2VkdXJhbCBsYW5ndWFnZSwgZS5nLiwgPGxpdGVyYWw+cGxwZ3NxbDwv bGl0ZXJhbD4uICBUaGUgZGVmYXVsdCBpcworICAgICAgIDxsaXRlcmFsPnNxbDwvbGl0ZXJh bD4uICBFbmNsb3NpbmcgdGhlIG5hbWUgaW4gc2luZ2xlIHF1b3RlcyBpcworICAgICAgIGRl cHJlY2F0ZWQgYW5kIHJlcXVpcmVzIG1hdGNoaW5nIGNhc2UuCiAgICAgICA8L3BhcmE+CiAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0yOTksNiArMzAxLDQx IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KIAogICAgICA8L2xpc3RpdGVtPgogICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9ib2R5PC9yZXBsYWNlYWJsZT48L3Rl cm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGJvZHkg b2YgYSA8bGl0ZXJhbD5MQU5HVUFHRSBTUUw8L2xpdGVyYWw+IHByb2NlZHVyZS4gIFRoaXMg c2hvdWxkCisgICAgICAgYmUgYSBibG9jaworPHByb2dyYW1saXN0aW5nPgorQkVHSU4gQVRP TUlDCisgIDxyZXBsYWNlYWJsZT5zdGF0ZW1lbnQ8L3JlcGxhY2VhYmxlPjsKKyAgPHJlcGxh Y2VhYmxlPnN0YXRlbWVudDwvcmVwbGFjZWFibGU+OworICAuLi4KKyAgPHJlcGxhY2VhYmxl PnN0YXRlbWVudDwvcmVwbGFjZWFibGU+OworRU5ECis8L3Byb2dyYW1saXN0aW5nPgorICAg ICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8g d3JpdGluZyB0aGUgdGV4dCBvZiB0aGUgcHJvY2VkdXJlIGJvZHkgYXMgYSBzdHJpbmcKKyAg ICAgICBjb25zdGFudCAoc2VlIDxyZXBsYWNlYWJsZT5kZWZpbml0aW9uPC9yZXBsYWNlYWJs ZT4gYWJvdmUpLCBidXQgdGhlcmUKKyAgICAgICBhcmUgc29tZSBkaWZmZXJlbmNlczogVGhp cyBmb3JtIG9ubHkgd29ya3MgZm9yIDxsaXRlcmFsPkxBTkdVQUdFCisgICAgICAgU1FMPC9s aXRlcmFsPiwgdGhlIHN0cmluZyBjb25zdGFudCBmb3JtIHdvcmtzIGZvciBhbGwgbGFuZ3Vh Z2VzLiAgVGhpcworICAgICAgIGZvcm0gaXMgcGFyc2VkIGF0IHByb2NlZHVyZSBkZWZpbml0 aW9uIHRpbWUsIHRoZSBzdHJpbmcgY29uc3RhbnQgZm9ybSBpcworICAgICAgIHBhcnNlZCBh dCBleGVjdXRpb24gdGltZTsgdGhlcmVmb3JlIHRoaXMgZm9ybSBjYW5ub3Qgc3VwcG9ydAor ICAgICAgIHBvbHltb3JwaGljIGFyZ3VtZW50IHR5cGVzIGFuZCBvdGhlciBjb25zdHJ1Y3Rz IHRoYXQgYXJlIG5vdCByZXNvbHZhYmxlCisgICAgICAgYXQgcHJvY2VkdXJlIGRlZmluaXRp b24gdGltZS4gIFRoaXMgZm9ybSB0cmFja3MgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlCisg ICAgICAgcHJvY2VkdXJlIGFuZCBvYmplY3RzIHVzZWQgaW4gdGhlIHByb2NlZHVyZSBib2R5 LCBzbyA8bGl0ZXJhbD5EUk9QCisgICAgICAgLi4uIENBU0NBREU8L2xpdGVyYWw+IHdpbGwg d29yayBjb3JyZWN0bHksIHdoZXJlYXMgdGhlIGZvcm0gdXNpbmcKKyAgICAgICBzdHJpbmcg bGl0ZXJhbHMgbWF5IGxlYXZlIGRhbmdsaW5nIHByb2NlZHVyZXMuICBGaW5hbGx5LCB0aGlz IGZvcm0gaXMKKyAgICAgICBtb3JlIGNvbXBhdGlibGUgd2l0aCB0aGUgU1FMIHN0YW5kYXJk IGFuZCBvdGhlciBTUUwgaW1wbGVtZW50YXRpb25zLgorICAgICAgPC9wYXJhPgorICAgICA8 L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8L3ZhcmlhYmxlbGlzdD4K ICA8L3JlZnNlY3QxPgogCkBAIC0zMTgsNiArMzU1LDcgQEAgPHRpdGxlPk5vdGVzPC90aXRs ZT4KICA8cmVmc2VjdDEgaWQ9InNxbC1jcmVhdGVwcm9jZWR1cmUtZXhhbXBsZXMiPgogICA8 dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogCisgIDxwYXJhPgogPHByb2dyYW1saXN0aW5nPgog Q1JFQVRFIFBST0NFRFVSRSBpbnNlcnRfZGF0YShhIGludGVnZXIsIGIgaW50ZWdlcikKIExB TkdVQUdFIFNRTApAQCAtMzI1LDkgKzM2MywyMSBAQCA8dGl0bGU+RXhhbXBsZXM8L3RpdGxl PgogSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYSk7CiBJTlNFUlQgSU5UTyB0YmwgVkFMVUVT IChiKTsKICQkOwotCis8L3Byb2dyYW1saXN0aW5nPgorICAgb3IKKzxwcm9ncmFtbGlzdGlu Zz4KK0NSRUFURSBQUk9DRURVUkUgaW5zZXJ0X2RhdGEoYSBpbnRlZ2VyLCBiIGludGVnZXIp CitMQU5HVUFHRSBTUUwKK0JFR0lOIEFUT01JQworICBJTlNFUlQgSU5UTyB0YmwgVkFMVUVT IChhKTsKKyAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUyAoYik7CitFTkQ7Cis8L3Byb2dyYW1s aXN0aW5nPgorICAgYW5kIGNhbGwgbGlrZSB0aGlzOgorPHByb2dyYW1saXN0aW5nPgogQ0FM TCBpbnNlcnRfZGF0YSgxLCAyKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KICA8 L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxIGlkPSJzcWwtY3JlYXRlcHJvY2VkdXJlLWNvbXBh dCI+CkBAIC0zMzUsOSArMzg1LDkgQEAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgog CiAgIDxwYXJhPgogICAgQSA8Y29tbWFuZD5DUkVBVEUgUFJPQ0VEVVJFPC9jb21tYW5kPiBj b21tYW5kIGlzIGRlZmluZWQgaW4gdGhlIFNRTAotICAgc3RhbmRhcmQuICBUaGUgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB2ZXJzaW9uIGlzIHNpbWlsYXIgYnV0 Ci0gICBub3QgZnVsbHkgY29tcGF0aWJsZS4gIEZvciBkZXRhaWxzIHNlZQotICAgYWxzbyA8 eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlZnVuY3Rpb24iLz4uCisgICBzdGFuZGFyZC4gIFRo ZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGltcGxlbWVudGF0aW9u IGNhbiBiZQorICAgdXNlZCBpbiBhIGNvbXBhdGlibGUgd2F5IGJ1dCBoYXMgbWFueSBleHRl bnNpb25zLiAgRm9yIGRldGFpbHMgc2VlIGFsc28KKyAgIDx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGVmdW5jdGlvbiIvPi4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCmluZGV4IDc2NjRiYjYyODUuLjQ0NTYzNDJiYWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwpAQCAtNjIyLDYgKzYyMiw3IEBAIEFn Z3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAogCQkJCQkJCSBJbnZhbGlkT2lk LAkvKiBubyB2YWxpZGF0b3IgKi8KIAkJCQkJCQkgImFnZ3JlZ2F0ZV9kdW1teSIsIC8qIHBs YWNlaG9sZGVyIChubyBzdWNoIHByb2MpICovCiAJCQkJCQkJIE5VTEwsCS8qIHByb2JpbiAq LworCQkJCQkJCSBOVUxMLAkvKiBwcm9zcWxib2R5ICovCiAJCQkJCQkJIFBST0tJTkRfQUdH UkVHQVRFLAogCQkJCQkJCSBmYWxzZSwgLyogc2VjdXJpdHkgaW52b2tlciAoY3VycmVudGx5 IG5vdAogCQkJCQkJCQkJICogZGVmaW5hYmxlIGZvciBhZ2cpICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cHJvYy5jCmluZGV4IDFkZDllY2MwNjMuLjgwOGQ0ODk0OWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cHJvYy5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2Vy Y2UuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInRjb3Av cHF1ZXJ5LmgiCkBAIC03Niw2ICs3Nyw3IEBAIFByb2NlZHVyZUNyZWF0ZShjb25zdCBjaGFy ICpwcm9jZWR1cmVOYW1lLAogCQkJCU9pZCBsYW5ndWFnZVZhbGlkYXRvciwKIAkJCQljb25z dCBjaGFyICpwcm9zcmMsCiAJCQkJY29uc3QgY2hhciAqcHJvYmluLAorCQkJCU5vZGUgKnBy b3NxbGJvZHksCiAJCQkJY2hhciBwcm9raW5kLAogCQkJCWJvb2wgc2VjdXJpdHlfZGVmaW5l ciwKIAkJCQlib29sIGlzTGVha1Byb29mLApAQCAtMTE5LDggKzEyMSw2IEBAIFByb2NlZHVy ZUNyZWF0ZShjb25zdCBjaGFyICpwcm9jZWR1cmVOYW1lLAogCS8qCiAJICogc2FuaXR5IGNo ZWNrcwogCSAqLwotCUFzc2VydChQb2ludGVySXNWYWxpZChwcm9zcmMpKTsKLQogCXBhcmFt ZXRlckNvdW50ID0gcGFyYW1ldGVyVHlwZXMtPmRpbTE7CiAJaWYgKHBhcmFtZXRlckNvdW50 IDwgMCB8fCBwYXJhbWV0ZXJDb3VudCA+IEZVTkNfTUFYX0FSR1MpCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0zMzQsMTEgKzMzNCwxOCBAQCBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAq cHJvY2VkdXJlTmFtZSwKIAkJdmFsdWVzW0FudW1fcGdfcHJvY19wcm90cmZ0eXBlcyAtIDFd ID0gdHJmdHlwZXM7CiAJZWxzZQogCQludWxsc1tBbnVtX3BnX3Byb2NfcHJvdHJmdHlwZXMg LSAxXSA9IHRydWU7Ci0JdmFsdWVzW0FudW1fcGdfcHJvY19wcm9zcmMgLSAxXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0ocHJvc3JjKTsKKwlpZiAocHJvc3JjKQorCQl2YWx1ZXNbQW51bV9w Z19wcm9jX3Byb3NyYyAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShwcm9zcmMpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ19wcm9jX3Byb3NyYyAtIDFdID0gdHJ1ZTsKIAlpZiAocHJv YmluKQogCQl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb2JpbiAtIDFdID0gQ1N0cmluZ0dldFRl eHREYXR1bShwcm9iaW4pOwogCWVsc2UKIAkJbnVsbHNbQW51bV9wZ19wcm9jX3Byb2JpbiAt IDFdID0gdHJ1ZTsKKwlpZiAocHJvc3FsYm9keSkKKwkJdmFsdWVzW0FudW1fcGdfcHJvY19w cm9zcWxib2R5IC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyhwcm9z cWxib2R5KSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSAtIDFd ID0gdHJ1ZTsKIAlpZiAocHJvY29uZmlnICE9IFBvaW50ZXJHZXREYXR1bShOVUxMKSkKIAkJ dmFsdWVzW0FudW1fcGdfcHJvY19wcm9jb25maWcgLSAxXSA9IHByb2NvbmZpZzsKIAllbHNl CkBAIC02MzgsNiArNjQ1LDEwIEBAIFByb2NlZHVyZUNyZWF0ZShjb25zdCBjaGFyICpwcm9j ZWR1cmVOYW1lLAogCXJlY29yZF9vYmplY3RfYWRkcmVzc19kZXBlbmRlbmNpZXMoJm15c2Vs ZiwgYWRkcnMsIERFUEVOREVOQ1lfTk9STUFMKTsKIAlmcmVlX29iamVjdF9hZGRyZXNzZXMo YWRkcnMpOwogCisJLyogZGVwZW5kZW5jeSBvbiBTUUwgcm91dGluZSBib2R5ICovCisJaWYg KGxhbmd1YWdlT2JqZWN0SWQgPT0gU1FMbGFuZ3VhZ2VJZCAmJiBwcm9zcWxib2R5KQorCQly ZWNvcmREZXBlbmRlbmN5T25FeHByKCZteXNlbGYsIHByb3NxbGJvZHksIE5JTCwgREVQRU5E RU5DWV9OT1JNQUwpOworCiAJLyogZGVwZW5kZW5jeSBvbiBwYXJhbWV0ZXIgZGVmYXVsdCBl eHByZXNzaW9ucyAqLwogCWlmIChwYXJhbWV0ZXJEZWZhdWx0cykKIAkJcmVjb3JkRGVwZW5k ZW5jeU9uRXhwcigmbXlzZWxmLCAoTm9kZSAqKSBwYXJhbWV0ZXJEZWZhdWx0cywKQEAgLTg2 MSw2MSArODcyLDgxIEBAIGZtZ3Jfc3FsX3ZhbGlkYXRvcihQR19GVU5DVElPTl9BUkdTKQog CS8qIFBvc3Rwb25lIGJvZHkgY2hlY2tzIGlmICFjaGVja19mdW5jdGlvbl9ib2RpZXMgKi8K IAlpZiAoY2hlY2tfZnVuY3Rpb25fYm9kaWVzKQogCXsKLQkJdG1wID0gU3lzQ2FjaGVHZXRB dHRyKFBST0NPSUQsIHR1cGxlLCBBbnVtX3BnX3Byb2NfcHJvc3JjLCAmaXNudWxsKTsKLQkJ aWYgKGlzbnVsbCkKLQkJCWVsb2coRVJST1IsICJudWxsIHByb3NyYyIpOwotCi0JCXByb3Ny YyA9IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKLQogCQkvKgogCQkgKiBTZXR1cCBlcnJv ciB0cmFjZWJhY2sgc3VwcG9ydCBmb3IgZXJlcG9ydCgpLgogCQkgKi8KIAkJY2FsbGJhY2tf YXJnLnByb25hbWUgPSBOYW1lU3RyKHByb2MtPnByb25hbWUpOwotCQljYWxsYmFja19hcmcu cHJvc3JjID0gcHJvc3JjOworCQljYWxsYmFja19hcmcucHJvc3JjID0gTlVMTDsKIAogCQlz cWxlcnJjb250ZXh0LmNhbGxiYWNrID0gc3FsX2Z1bmN0aW9uX3BhcnNlX2Vycm9yX2NhbGxi YWNrOwogCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopICZjYWxsYmFja19hcmc7CiAJ CXNxbGVycmNvbnRleHQucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCQllcnJv cl9jb250ZXh0X3N0YWNrID0gJnNxbGVycmNvbnRleHQ7CiAKLQkJLyoKLQkJICogV2UgY2Fu J3QgZG8gZnVsbCBwcmVjaGVja2luZyBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpZiB0 aGVyZQotCQkgKiBhcmUgYW55IHBvbHltb3JwaGljIGlucHV0IHR5cGVzLCBiZWNhdXNlIGFj dHVhbCBkYXRhdHlwZXMgb2YKLQkJICogZXhwcmVzc2lvbiByZXN1bHRzIHdpbGwgYmUgdW5y ZXNvbHZhYmxlLiAgVGhlIGNoZWNrIHdpbGwgYmUgZG9uZSBhdAotCQkgKiBydW50aW1lIGlu c3RlYWQuCi0JCSAqCi0JCSAqIFdlIGNhbiBydW4gdGhlIHRleHQgdGhyb3VnaCB0aGUgcmF3 IHBhcnNlciB0aG91Z2g7IHRoaXMgd2lsbCBhdAotCQkgKiBsZWFzdCBjYXRjaCBzaWxseSBz eW50YWN0aWMgZXJyb3JzLgotCQkgKi8KLQkJcmF3X3BhcnNldHJlZV9saXN0ID0gcGdfcGFy c2VfcXVlcnkocHJvc3JjKTsKKwkJdG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHR1 cGxlLCBBbnVtX3BnX3Byb2NfcHJvc3JjLCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJ eworCQkJTm9kZQkgICAqbjsKIAotCQlpZiAoIWhhc3BvbHlhcmcpCisJCQl0bXAgPSBTeXND YWNoZUdldEF0dHIoUFJPQ09JRCwgdHVwbGUsIEFudW1fcGdfcHJvY19wcm9zcWxib2R5LCAm aXNudWxsKTsKKwkJCWlmIChpc251bGwpCisJCQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3Jj IGFuZCBwcm9zcWxib2R5Iik7CisKKwkJCW4gPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0 Q1N0cmluZyh0bXApKTsKKwkJCWlmIChJc0EobiwgTGlzdCkpCisJCQkJcXVlcnl0cmVlX2xp c3QgPSBjYXN0Tm9kZShMaXN0LCBuKTsKKwkJCWVsc2UKKwkJCQlxdWVyeXRyZWVfbGlzdCA9 IGxpc3RfbWFrZTEobGlzdF9tYWtlMShuKSk7CisJCX0KKwkJZWxzZQogCQl7CisJCQlwcm9z cmMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCk7CisKKwkJCWNhbGxiYWNrX2FyZy5wcm9z cmMgPSBwcm9zcmM7CisKIAkJCS8qCi0JCQkgKiBPSyB0byBkbyBmdWxsIHByZWNoZWNrOiBh bmFseXplIGFuZCByZXdyaXRlIHRoZSBxdWVyaWVzLCB0aGVuCi0JCQkgKiB2ZXJpZnkgdGhl IHJlc3VsdCB0eXBlLgorCQkJICogV2UgY2FuJ3QgZG8gZnVsbCBwcmVjaGVja2luZyBvZiB0 aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpZiB0aGVyZQorCQkJICogYXJlIGFueSBwb2x5bW9y cGhpYyBpbnB1dCB0eXBlcywgYmVjYXVzZSBhY3R1YWwgZGF0YXR5cGVzIG9mCisJCQkgKiBl eHByZXNzaW9uIHJlc3VsdHMgd2lsbCBiZSB1bnJlc29sdmFibGUuICBUaGUgY2hlY2sgd2ls bCBiZSBkb25lIGF0CisJCQkgKiBydW50aW1lIGluc3RlYWQuCisJCQkgKgorCQkJICogV2Ug Y2FuIHJ1biB0aGUgdGV4dCB0aHJvdWdoIHRoZSByYXcgcGFyc2VyIHRob3VnaDsgdGhpcyB3 aWxsIGF0CisJCQkgKiBsZWFzdCBjYXRjaCBzaWxseSBzeW50YWN0aWMgZXJyb3JzLgogCQkJ ICovCi0JCQlTUUxGdW5jdGlvblBhcnNlSW5mb1B0ciBwaW5mbzsKLQkJCU9pZAkJCXJldHR5 cGU7Ci0JCQlUdXBsZURlc2MJcmV0dHVwZGVzYzsKKwkJCXJhd19wYXJzZXRyZWVfbGlzdCA9 IHBnX3BhcnNlX3F1ZXJ5KHByb3NyYyk7CiAKLQkJCS8qIEJ1dCBmaXJzdCwgc2V0IHVwIHBh cmFtZXRlciBpbmZvcm1hdGlvbiAqLwotCQkJcGluZm8gPSBwcmVwYXJlX3NxbF9mbl9wYXJz ZV9pbmZvKHR1cGxlLCBOVUxMLCBJbnZhbGlkT2lkKTsKLQotCQkJcXVlcnl0cmVlX2xpc3Qg PSBOSUw7Ci0JCQlmb3JlYWNoKGxjLCByYXdfcGFyc2V0cmVlX2xpc3QpCisJCQlpZiAoIWhh c3BvbHlhcmcpCiAJCQl7Ci0JCQkJUmF3U3RtdCAgICAqcGFyc2V0cmVlID0gbGZpcnN0X25v ZGUoUmF3U3RtdCwgbGMpOwotCQkJCUxpc3QJICAgKnF1ZXJ5dHJlZV9zdWJsaXN0OwotCi0J CQkJcXVlcnl0cmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX3BhcmFtcyhw YXJzZXRyZWUsCi0JCQkJCQkJCQkJCQkJCQkJICBwcm9zcmMsCi0JCQkJCQkJCQkJCQkJCQkJ ICAoUGFyc2VyU2V0dXBIb29rKSBzcWxfZm5fcGFyc2VyX3NldHVwLAotCQkJCQkJCQkJCQkJ CQkJCSAgcGluZm8sCi0JCQkJCQkJCQkJCQkJCQkJICBOVUxMKTsKLQkJCQlxdWVyeXRyZWVf bGlzdCA9IGxhcHBlbmQocXVlcnl0cmVlX2xpc3QsCi0JCQkJCQkJCQkJIHF1ZXJ5dHJlZV9z dWJsaXN0KTsKKwkJCQkvKgorCQkJCSAqIE9LIHRvIGRvIGZ1bGwgcHJlY2hlY2s6IGFuYWx5 emUgYW5kIHJld3JpdGUgdGhlIHF1ZXJpZXMsIHRoZW4KKwkJCQkgKiB2ZXJpZnkgdGhlIHJl c3VsdCB0eXBlLgorCQkJCSAqLworCQkJCVNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRyIHBpbmZv OworCisJCQkJLyogQnV0IGZpcnN0LCBzZXQgdXAgcGFyYW1ldGVyIGluZm9ybWF0aW9uICov CisJCQkJcGluZm8gPSBwcmVwYXJlX3NxbF9mbl9wYXJzZV9pbmZvKHR1cGxlLCBOVUxMLCBJ bnZhbGlkT2lkKTsKKworCQkJCXF1ZXJ5dHJlZV9saXN0ID0gTklMOworCQkJCWZvcmVhY2go bGMsIHJhd19wYXJzZXRyZWVfbGlzdCkKKwkJCQl7CisJCQkJCVJhd1N0bXQgICAgKnBhcnNl dHJlZSA9IGxmaXJzdF9ub2RlKFJhd1N0bXQsIGxjKTsKKwkJCQkJTGlzdAkgICAqcXVlcnl0 cmVlX3N1Ymxpc3Q7CisKKwkJCQkJcXVlcnl0cmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2Fu ZF9yZXdyaXRlX3BhcmFtcyhwYXJzZXRyZWUsCisJCQkJCQkJCQkJCQkJCQkJCSAgcHJvc3Jj LAorCQkJCQkJCQkJCQkJCQkJCQkgIChQYXJzZXJTZXR1cEhvb2spIHNxbF9mbl9wYXJzZXJf c2V0dXAsCisJCQkJCQkJCQkJCQkJCQkJCSAgcGluZm8sCisJCQkJCQkJCQkJCQkJCQkJCSAg TlVMTCk7CisJCQkJCXF1ZXJ5dHJlZV9saXN0ID0gbGFwcGVuZChxdWVyeXRyZWVfbGlzdCwK KwkJCQkJCQkJCQkJIHF1ZXJ5dHJlZV9zdWJsaXN0KTsKKwkJCQl9CiAJCQl9CisJCX0KKwor CQlpZiAoIWhhc3BvbHlhcmcpCisJCXsKKwkJCU9pZAkJCXJldHR5cGU7CisJCQlUdXBsZURl c2MJcmV0dHVwZGVzYzsKIAogCQkJY2hlY2tfc3FsX2ZuX3N0YXRlbWVudHMocXVlcnl0cmVl X2xpc3QpOwogCkBAIC05NjgsNiArOTk5LDkgQEAgZnVuY3Rpb25fcGFyc2VfZXJyb3JfdHJh bnNwb3NlKGNvbnN0IGNoYXIgKnByb3NyYykKIAlpbnQJCQluZXdlcnJwb3NpdGlvbjsKIAlj b25zdCBjaGFyICpxdWVyeVRleHQ7CiAKKwlpZiAoIXByb3NyYykKKwkJcmV0dXJuIGZhbHNl OworCiAJLyoKIAkgKiBOb3RoaW5nIHRvIGRvIHVubGVzcyB3ZSBhcmUgZGVhbGluZyB3aXRo IGEgc3ludGF4IGVycm9yIHRoYXQgaGFzIGEKIAkgKiBjdXJzb3IgcG9zaXRpb24uCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKaW5kZXggNjg5MjIwNGE5YS4uNTg0MTMx ZGJlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYwpAQCAtMzEyLDkg KzMxMiwxMSBAQCBEZWZpbmVBZ2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJ CQkJCSAgSW52YWxpZE9pZCwKIAkJCQkJCQkJCQkgIE9CSkVDVF9BR0dSRUdBVEUsCiAJCQkJ CQkJCQkJICAmcGFyYW1ldGVyVHlwZXMsCisJCQkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkJ CSAgJmFsbFBhcmFtZXRlclR5cGVzLAogCQkJCQkJCQkJCSAgJnBhcmFtZXRlck1vZGVzLAog CQkJCQkJCQkJCSAgJnBhcmFtZXRlck5hbWVzLAorCQkJCQkJCQkJCSAgTlVMTCwKIAkJCQkJ CQkJCQkgICZwYXJhbWV0ZXJEZWZhdWx0cywKIAkJCQkJCQkJCQkgICZ2YXJpYWRpY0FyZ1R5 cGUsCiAJCQkJCQkJCQkJICAmcmVxdWlyZWRSZXN1bHRUeXBlKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZnVuY3Rpb25jbWRzLmMKaW5kZXggYzNjZTQ4MGM4Zi4uYzQ4ZDM3NDRhNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTUzLDkgKzUzLDExIEBACiAjaW5j bHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVz Yy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3IvZnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJw YXJzZXIvYW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9leHByLmgiCkBAIC0xODYsOSArMTg4LDExIEBAIGludGVycHJldF9mdW5jdGlvbl9wYXJh bWV0ZXJfbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAgT2lkIGxhbmd1YWdl T2lkLAogCQkJCQkJCQkgIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCQkJICBvaWR2ZWN0 b3IgKipwYXJhbWV0ZXJUeXBlcywKKwkJCQkJCQkJICBMaXN0ICoqcGFyYW1ldGVyVHlwZXNf bGlzdCwKIAkJCQkJCQkJICBBcnJheVR5cGUgKiphbGxQYXJhbWV0ZXJUeXBlcywKIAkJCQkJ CQkJICBBcnJheVR5cGUgKipwYXJhbWV0ZXJNb2RlcywKIAkJCQkJCQkJICBBcnJheVR5cGUg KipwYXJhbWV0ZXJOYW1lcywKKwkJCQkJCQkJICBMaXN0ICoqaW5QYXJhbWV0ZXJOYW1lc19s aXN0LAogCQkJCQkJCQkgIExpc3QgKipwYXJhbWV0ZXJEZWZhdWx0cywKIAkJCQkJCQkJICBP aWQgKnZhcmlhZGljQXJnVHlwZSwKIAkJCQkJCQkJICBPaWQgKnJlcXVpcmVkUmVzdWx0VHlw ZSkKQEAgLTI4Myw3ICsyODcsMTEgQEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9s aXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkvKiBoYW5kbGUgaW5wdXQgcGFyYW1ldGVy cyAqLwogCQlpZiAoZnAtPm1vZGUgIT0gRlVOQ19QQVJBTV9PVVQgJiYgZnAtPm1vZGUgIT0g RlVOQ19QQVJBTV9UQUJMRSkKKwkJewogCQkJaXNpbnB1dCA9IHRydWU7CisJCQlpZiAocGFy YW1ldGVyVHlwZXNfbGlzdCkKKwkJCQkqcGFyYW1ldGVyVHlwZXNfbGlzdCA9IGxhcHBlbmRf b2lkKCpwYXJhbWV0ZXJUeXBlc19saXN0LCB0b2lkKTsKKwkJfQogCiAJCS8qIGhhbmRsZSBz aWduYXR1cmUgcGFyYW1ldGVycyAqLwogCQlpZiAoZnAtPm1vZGUgPT0gRlVOQ19QQVJBTV9J TiB8fCBmcC0+bW9kZSA9PSBGVU5DX1BBUkFNX0lOT1VUIHx8CkBAIC0zNzIsNiArMzgwLDkg QEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9saXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCWhhdmVfbmFtZXMgPSB0cnVlOwogCQl9CiAKKwkJaWYgKGluUGFyYW1ldGVyTmFt ZXNfbGlzdCkKKwkJCSppblBhcmFtZXRlck5hbWVzX2xpc3QgPSBsYXBwZW5kKCppblBhcmFt ZXRlck5hbWVzX2xpc3QsIG1ha2VTdHJpbmcoZnAtPm5hbWUgPyBmcC0+bmFtZSA6IHBzdHJk dXAoIiIpKSk7CisKIAkJaWYgKGZwLT5kZWZleHByKQogCQl7CiAJCQlOb2RlCSAgICpkZWY7 CkBAIC03ODYsMjggKzc5NywxMCBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBkZWZlbC0+ZGVmbmFtZSk7CiAJfQogCi0JLyogcHJv Y2VzcyByZXF1aXJlZCBpdGVtcyAqLwogCWlmIChhc19pdGVtKQogCQkqYXMgPSAoTGlzdCAq KSBhc19pdGVtLT5hcmc7Ci0JZWxzZQotCXsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfRlVOQ1RJT05fREVGSU5JVElPTiksCi0JCQkJIGVycm1z Zygibm8gZnVuY3Rpb24gYm9keSBzcGVjaWZpZWQiKSkpOwotCQkqYXMgPSBOSUw7CQkJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQl9Ci0KIAlpZiAobGFuZ3VhZ2VfaXRlbSkKIAkJ Kmxhbmd1YWdlID0gc3RyVmFsKGxhbmd1YWdlX2l0ZW0tPmFyZyk7Ci0JZWxzZQotCXsKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRlVOQ1RJT05f REVGSU5JVElPTiksCi0JCQkJIGVycm1zZygibm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkIikpKTsK LQkJKmxhbmd1YWdlID0gTlVMTDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQl9Ci0K LQkvKiBwcm9jZXNzIG9wdGlvbmFsIGl0ZW1zICovCiAJaWYgKHRyYW5zZm9ybV9pdGVtKQog CQkqdHJhbnNmb3JtID0gdHJhbnNmb3JtX2l0ZW0tPmFyZzsKIAlpZiAod2luZG93ZnVuY19p dGVtKQpAQCAtODU2LDEwICs4NDksMjEgQEAgY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVz KFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3RhdGljIHZvaWQKIGludGVycHJldF9BU19j bGF1c2UoT2lkIGxhbmd1YWdlT2lkLCBjb25zdCBjaGFyICpsYW5ndWFnZU5hbWUsCi0JCQkJ CWNoYXIgKmZ1bmNuYW1lLCBMaXN0ICphcywKLQkJCQkJY2hhciAqKnByb3NyY19zdHJfcCwg Y2hhciAqKnByb2Jpbl9zdHJfcCkKKwkJCQkJY2hhciAqZnVuY25hbWUsIExpc3QgKmFzLCBO b2RlICpzcWxfYm9keV9pbiwKKwkJCQkJTGlzdCAqcGFyYW1ldGVyVHlwZXMsIExpc3QgKmlu UGFyYW1ldGVyTmFtZXMsCisJCQkJCWNoYXIgKipwcm9zcmNfc3RyX3AsIGNoYXIgKipwcm9i aW5fc3RyX3AsIE5vZGUgKipzcWxfYm9keV9vdXQpCiB7Ci0JQXNzZXJ0KGFzICE9IE5JTCk7 CisJaWYgKHNxbF9ib2R5X2luICYmIGFzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNn KCJkdXBsaWNhdGUgZnVuY3Rpb24gYm9keSBzcGVjaWZpZWQiKSkpOworCisJaWYgKHNxbF9i b2R5X2luICYmIGxhbmd1YWdlT2lkICE9IFNRTGxhbmd1YWdlSWQpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZVTkNUSU9OX0RFRklOSVRJT04p LAorCQkJCSBlcnJtc2coImlubGluZSBTUUwgZnVuY3Rpb24gYm9keSBvbmx5IHZhbGlkIGZv ciBsYW5ndWFnZSBTUUwiKSkpOworCisJKnNxbF9ib2R5X291dCA9IE5VTEw7CiAKIAlpZiAo bGFuZ3VhZ2VPaWQgPT0gQ2xhbmd1YWdlSWQpCiAJewpAQCAtODgxLDYgKzg4NSw2NiBAQCBp bnRlcnByZXRfQVNfY2xhdXNlKE9pZCBsYW5ndWFnZU9pZCwgY29uc3QgY2hhciAqbGFuZ3Vh Z2VOYW1lLAogCQkJCSpwcm9zcmNfc3RyX3AgPSBmdW5jbmFtZTsKIAkJfQogCX0KKwllbHNl IGlmIChzcWxfYm9keV9pbikKKwl7CisJCVNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRyIHBpbmZv OworCisJCXBpbmZvID0gKFNRTEZ1bmN0aW9uUGFyc2VJbmZvUHRyKSBwYWxsb2MwKHNpemVv ZihTUUxGdW5jdGlvblBhcnNlSW5mbykpOworCisJCXBpbmZvLT5mbmFtZSA9IGZ1bmNuYW1l OworCQlwaW5mby0+bmFyZ3MgPSBsaXN0X2xlbmd0aChwYXJhbWV0ZXJUeXBlcyk7CisJCXBp bmZvLT5hcmd0eXBlcyA9IChPaWQgKikgcGFsbG9jKHBpbmZvLT5uYXJncyAqIHNpemVvZihP aWQpKTsKKwkJcGluZm8tPmFyZ25hbWVzID0gKGNoYXIgKiopIHBhbGxvYyhwaW5mby0+bmFy Z3MgKiBzaXplb2YoY2hhciAqKSk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbGlzdF9sZW5n dGgocGFyYW1ldGVyVHlwZXMpOyBpKyspCisJCXsKKwkJCWNoYXIgKnMgPSBzdHJWYWwobGlz dF9udGgoaW5QYXJhbWV0ZXJOYW1lcywgaSkpOworCisJCQlwaW5mby0+YXJndHlwZXNbaV0g PSBsaXN0X250aF9vaWQocGFyYW1ldGVyVHlwZXMsIGkpOworCQkJaWYgKElzUG9seW1vcnBo aWNUeXBlKHBpbmZvLT5hcmd0eXBlc1tpXSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKKwkJCQkJ CSBlcnJtc2coIlNRTCBmdW5jdGlvbiB3aXRoIHVucXVvdGVkIGZ1bmN0aW9uIGJvZHkgY2Fu bm90IGhhdmUgcG9seW1vcnBoaWMgYXJndW1lbnRzIikpKTsKKworCQkJaWYgKHNbMF0gIT0g J1wwJykKKwkJCQlwaW5mby0+YXJnbmFtZXNbaV0gPSBzOworCQkJZWxzZQorCQkJCXBpbmZv LT5hcmduYW1lc1tpXSA9IE5VTEw7CisJCX0KKworCQlpZiAoSXNBKHNxbF9ib2R5X2luLCBM aXN0KSkKKwkJeworCQkJTGlzdAkgICAqc3RtdHMgPSBsaW5pdGlhbF9ub2RlKExpc3QsIGNh c3ROb2RlKExpc3QsIHNxbF9ib2R5X2luKSk7CisJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCUxp c3QJICAgKnRyYW5zZm9ybWVkX3N0bXRzID0gTklMOworCisJCQlmb3JlYWNoKGxjLCBzdG10 cykKKwkJCXsKKwkJCQlOb2RlCSAgICpzdG10ID0gbGZpcnN0KGxjKTsKKwkJCQlRdWVyeQkg ICAqcTsKKwkJCQlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7 CisKKwkJCQlzcWxfZm5fcGFyc2VyX3NldHVwKHBzdGF0ZSwgcGluZm8pOworCQkJCXEgPSB0 cmFuc2Zvcm1TdG10KHBzdGF0ZSwgc3RtdCk7CisJCQkJdHJhbnNmb3JtZWRfc3RtdHMgPSBs YXBwZW5kKHRyYW5zZm9ybWVkX3N0bXRzLCBxKTsKKwkJCQlmcmVlX3BhcnNlc3RhdGUocHN0 YXRlKTsKKwkJCX0KKworCQkJKnNxbF9ib2R5X291dCA9IChOb2RlICopIGxpc3RfbWFrZTEo dHJhbnNmb3JtZWRfc3RtdHMpOworCQl9CisJCWVsc2UKKwkJeworCQkJUXVlcnkJICAgKnE7 CisJCQlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisKKwkJ CXNxbF9mbl9wYXJzZXJfc2V0dXAocHN0YXRlLCBwaW5mbyk7CisJCQlxID0gdHJhbnNmb3Jt U3RtdChwc3RhdGUsIHNxbF9ib2R5X2luKTsKKworCQkJKnNxbF9ib2R5X291dCA9IChOb2Rl ICopIHE7CisJCX0KKworCQkqcHJvYmluX3N0cl9wID0gTlVMTDsKKwkJKnByb3NyY19zdHJf cCA9IE5VTEw7CisJfQogCWVsc2UKIAl7CiAJCS8qIEV2ZXJ5dGhpbmcgZWxzZSB3YW50cyB0 aGUgZ2l2ZW4gc3RyaW5nIGluIHByb3NyYy4gKi8KQEAgLTkxOSw2ICs5ODMsNyBAQCBDcmVh dGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3Rt dCkKIHsKIAljaGFyCSAgICpwcm9iaW5fc3RyOwogCWNoYXIJICAgKnByb3NyY19zdHI7CisJ Tm9kZQkgICAqcHJvc3FsYm9keTsKIAlPaWQJCQlwcm9yZXR0eXBlOwogCWJvb2wJCXJldHVy bnNTZXQ7CiAJY2hhcgkgICAqbGFuZ3VhZ2U7CkBAIC05MjksOSArOTk0LDExIEBAIENyZWF0 ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10 KQogCU9pZAkJCW5hbWVzcGFjZUlkOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJb2lkdmVj dG9yICAqcGFyYW1ldGVyVHlwZXM7CisJTGlzdAkgICAqcGFyYW1ldGVyVHlwZXNfbGlzdCA9 IE5JTDsKIAlBcnJheVR5cGUgICphbGxQYXJhbWV0ZXJUeXBlczsKIAlBcnJheVR5cGUgICpw YXJhbWV0ZXJNb2RlczsKIAlBcnJheVR5cGUgICpwYXJhbWV0ZXJOYW1lczsKKwlMaXN0CSAg ICppblBhcmFtZXRlck5hbWVzX2xpc3QgPSBOSUw7CiAJTGlzdAkgICAqcGFyYW1ldGVyRGVm YXVsdHM7CiAJT2lkCQkJdmFyaWFkaWNBcmdUeXBlOwogCUxpc3QJICAgKnRyZnR5cGVzX2xp c3QgPSBOSUw7CkBAIC05NjIsNiArMTAyOSw4IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogCQkJCQkgICBnZXRfbmFt ZXNwYWNlX25hbWUobmFtZXNwYWNlSWQpKTsKIAogCS8qIFNldCBkZWZhdWx0IGF0dHJpYnV0 ZXMgKi8KKwlhc19jbGF1c2UgPSBOVUxMOworCWxhbmd1YWdlID0gInNxbCI7CiAJaXNXaW5k b3dGdW5jID0gZmFsc2U7CiAJaXNTdHJpY3QgPSBmYWxzZTsKIAlzZWN1cml0eSA9IGZhbHNl OwpAQCAtMTA1Myw5ICsxMTIyLDExIEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogCQkJCQkJCQkJICBsYW5ndWFnZU9p ZCwKIAkJCQkJCQkJCSAgc3RtdC0+aXNfcHJvY2VkdXJlID8gT0JKRUNUX1BST0NFRFVSRSA6 IE9CSkVDVF9GVU5DVElPTiwKIAkJCQkJCQkJCSAgJnBhcmFtZXRlclR5cGVzLAorCQkJCQkJ CQkJICAmcGFyYW1ldGVyVHlwZXNfbGlzdCwKIAkJCQkJCQkJCSAgJmFsbFBhcmFtZXRlclR5 cGVzLAogCQkJCQkJCQkJICAmcGFyYW1ldGVyTW9kZXMsCiAJCQkJCQkJCQkgICZwYXJhbWV0 ZXJOYW1lcywKKwkJCQkJCQkJCSAgJmluUGFyYW1ldGVyTmFtZXNfbGlzdCwKIAkJCQkJCQkJ CSAgJnBhcmFtZXRlckRlZmF1bHRzLAogCQkJCQkJCQkJICAmdmFyaWFkaWNBcmdUeXBlLAog CQkJCQkJCQkJICAmcmVxdWlyZWRSZXN1bHRUeXBlKTsKQEAgLTExMTIsOCArMTE4Myw5IEBA IENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10 ICpzdG10KQogCQl0cmZ0eXBlcyA9IE5VTEw7CiAJfQogCi0JaW50ZXJwcmV0X0FTX2NsYXVz ZShsYW5ndWFnZU9pZCwgbGFuZ3VhZ2UsIGZ1bmNuYW1lLCBhc19jbGF1c2UsCi0JCQkJCQkm cHJvc3JjX3N0ciwgJnByb2Jpbl9zdHIpOworCWludGVycHJldF9BU19jbGF1c2UobGFuZ3Vh Z2VPaWQsIGxhbmd1YWdlLCBmdW5jbmFtZSwgYXNfY2xhdXNlLCBzdG10LT5zcWxfYm9keSwK KwkJCQkJCXBhcmFtZXRlclR5cGVzX2xpc3QsIGluUGFyYW1ldGVyTmFtZXNfbGlzdCwKKwkJ CQkJCSZwcm9zcmNfc3RyLCAmcHJvYmluX3N0ciwgJnByb3NxbGJvZHkpOwogCiAJLyoKIAkg KiBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIENPU1QgYW5kIFJPV1MgZGVwZW5kaW5nIG9uIG90 aGVyIHBhcmFtZXRlcnM7CkBAIC0xMTU1LDYgKzEyMjcsNyBAQCBDcmVhdGVGdW5jdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAg IGxhbmd1YWdlVmFsaWRhdG9yLAogCQkJCQkJICAgcHJvc3JjX3N0ciwJLyogY29udmVydGVk IHRvIHRleHQgbGF0ZXIgKi8KIAkJCQkJCSAgIHByb2Jpbl9zdHIsCS8qIGNvbnZlcnRlZCB0 byB0ZXh0IGxhdGVyICovCisJCQkJCQkgICBwcm9zcWxib2R5LAogCQkJCQkJICAgc3RtdC0+ aXNfcHJvY2VkdXJlID8gUFJPS0lORF9QUk9DRURVUkUgOiAoaXNXaW5kb3dGdW5jID8gUFJP S0lORF9XSU5ET1cgOiBQUk9LSU5EX0ZVTkNUSU9OKSwKIAkJCQkJCSAgIHNlY3VyaXR5LAog CQkJCQkJICAgaXNMZWFrUHJvb2YsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCA0 ODNiYjY1ZGRjLi42NWFhOTFkODBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAg LTE1ODgsNiArMTU4OCw3IEBAIG1ha2VSYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpu YW1lLCBPaWQgbmFtZXNwYWNlLAogCQkJCQkJCQkgRl9GTUdSX0lOVEVSTkFMX1ZBTElEQVRP UiwgLyogbGFuZ3VhZ2UgdmFsaWRhdG9yICovCiAJCQkJCQkJCSBwcm9zcmNbaV0sIC8qIHBy b3NyYyAqLwogCQkJCQkJCQkgTlVMTCwJLyogcHJvYmluICovCisJCQkJCQkJCSBOVUxMLAkv KiBwcm9zcWxib2R5ICovCiAJCQkJCQkJCSBQUk9LSU5EX0ZVTkNUSU9OLAogCQkJCQkJCQkg ZmFsc2UsIC8qIHNlY3VyaXR5X2RlZmluZXIgKi8KIAkJCQkJCQkJIGZhbHNlLCAvKiBsZWFr cHJvb2YgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggNDU5YTMzMzc1Yi4u M2NhN2U4OWQ0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25z LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTI2LDYgKzI2 LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgor I2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgpAQCAtMTI4LDIxICsxMjksNiBAQCB0eXBlZGVmIHN0cnVjdAogCiB0eXBl ZGVmIFNRTEZ1bmN0aW9uQ2FjaGUgKlNRTEZ1bmN0aW9uQ2FjaGVQdHI7CiAKLS8qCi0gKiBE YXRhIHN0cnVjdHVyZSBuZWVkZWQgYnkgdGhlIHBhcnNlciBjYWxsYmFjayBob29rcyB0byBy ZXNvbHZlIHBhcmFtZXRlcgotICogcmVmZXJlbmNlcyBkdXJpbmcgcGFyc2luZyBvZiBhIFNR TCBmdW5jdGlvbidzIGJvZHkuICBUaGlzIGlzIHNlcGFyYXRlIGZyb20KLSAqIFNRTEZ1bmN0 aW9uQ2FjaGUgc2luY2Ugd2Ugc29tZXRpbWVzIGRvIHBhcnNpbmcgc2VwYXJhdGVseSBmcm9t IGV4ZWN1dGlvbi4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgU1FMRnVuY3Rpb25QYXJzZUluZm8K LXsKLQljaGFyCSAgICpmbmFtZTsJCQkvKiBmdW5jdGlvbidzIG5hbWUgKi8KLQlpbnQJCQlu YXJnczsJCQkvKiBudW1iZXIgb2YgaW5wdXQgYXJndW1lbnRzICovCi0JT2lkCQkgICAqYXJn dHlwZXM7CQkvKiByZXNvbHZlZCB0eXBlcyBvZiBpbnB1dCBhcmd1bWVudHMgKi8KLQljaGFy CSAgKiphcmduYW1lczsJCS8qIG5hbWVzIG9mIGlucHV0IGFyZ3VtZW50czsgTlVMTCBpZiBu b25lICovCi0JLyogTm90ZSB0aGF0IGFyZ25hbWVzW2ldIGNhbiBiZSBOVUxMLCBpZiBzb21l IGFyZ3MgYXJlIHVubmFtZWQgKi8KLQlPaWQJCQljb2xsYXRpb247CQkvKiBmdW5jdGlvbidz IGlucHV0IGNvbGxhdGlvbiwgaWYga25vd24gKi8KLX0JCQlTUUxGdW5jdGlvblBhcnNlSW5m bzsKLQogCiAvKiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBO b2RlICpzcWxfZm5fcGFyYW1fcmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnBy ZWYpOwpAQCAtNjA3LDcgKzU5Myw2IEBAIGluaXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywgT2lkIGNvbGxhdGlvbiwgYm9vbCBsYXp5RXZhbE9LKQogCUhlYXBUdXBs ZQlwcm9jZWR1cmVUdXBsZTsKIAlGb3JtX3BnX3Byb2MgcHJvY2VkdXJlU3RydWN0OwogCVNR TEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlOwotCUxpc3QJICAgKnJhd19wYXJzZXRyZWVfbGlz dDsKIAlMaXN0CSAgICpxdWVyeVRyZWVfbGlzdDsKIAlMaXN0CSAgICpyZXN1bHR0bGlzdDsK IAlMaXN0Q2VsbCAgICpsYzsKQEAgLTY4Miw5ICs2NjcsNiBAQCBpbml0X3NxbF9mY2FjaGUo RnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIE9pZCBjb2xsYXRpb24sIGJvb2wgbGF6eUV2YWxP SykKIAkJCQkJCSAgcHJvY2VkdXJlVHVwbGUsCiAJCQkJCQkgIEFudW1fcGdfcHJvY19wcm9z cmMsCiAJCQkJCQkgICZpc051bGwpOwotCWlmIChpc051bGwpCi0JCWVsb2coRVJST1IsICJu dWxsIHByb3NyYyBmb3IgZnVuY3Rpb24gJXUiLCBmb2lkKTsKLQlmY2FjaGUtPnNyYyA9IFRl eHREYXR1bUdldENTdHJpbmcodG1wKTsKIAogCS8qCiAJICogUGFyc2UgYW5kIHJld3JpdGUg dGhlIHF1ZXJpZXMgaW4gdGhlIGZ1bmN0aW9uIHRleHQuICBVc2Ugc3VibGlzdHMgdG8KQEAg LTY5NSwyMCArNjc3LDU1IEBAIGluaXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbywgT2lkIGNvbGxhdGlvbiwgYm9vbCBsYXp5RXZhbE9LKQogCSAqIGJ1dCB3ZSdsbCBu b3Qgd29ycnkgYWJvdXQgaXQgdW50aWwgdGhlIG1vZHVsZSBpcyByZXdyaXR0ZW4gdG8gdXNl CiAJICogcGxhbmNhY2hlLmMuCiAJICovCi0JcmF3X3BhcnNldHJlZV9saXN0ID0gcGdfcGFy c2VfcXVlcnkoZmNhY2hlLT5zcmMpOwotCiAJcXVlcnlUcmVlX2xpc3QgPSBOSUw7Ci0JZm9y ZWFjaChsYywgcmF3X3BhcnNldHJlZV9saXN0KQorCWlmIChpc051bGwpCiAJewotCQlSYXdT dG10ICAgICpwYXJzZXRyZWUgPSBsZmlyc3Rfbm9kZShSYXdTdG10LCBsYyk7Ci0JCUxpc3QJ ICAgKnF1ZXJ5VHJlZV9zdWJsaXN0OwotCi0JCXF1ZXJ5VHJlZV9zdWJsaXN0ID0gcGdfYW5h bHl6ZV9hbmRfcmV3cml0ZV9wYXJhbXMocGFyc2V0cmVlLAotCQkJCQkJCQkJCQkJCQkgIGZj YWNoZS0+c3JjLAotCQkJCQkJCQkJCQkJCQkgIChQYXJzZXJTZXR1cEhvb2spIHNxbF9mbl9w YXJzZXJfc2V0dXAsCi0JCQkJCQkJCQkJCQkJCSAgZmNhY2hlLT5waW5mbywKLQkJCQkJCQkJ CQkJCQkJICBOVUxMKTsKLQkJcXVlcnlUcmVlX2xpc3QgPSBsYXBwZW5kKHF1ZXJ5VHJlZV9s aXN0LCBxdWVyeVRyZWVfc3VibGlzdCk7CisJCU5vZGUJICAgKm47CisJCUxpc3QJICAgKnN0 b3JlZF9xdWVyeV9saXN0OworCisJCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELAor CQkJCQkJCSAgcHJvY2VkdXJlVHVwbGUsCisJCQkJCQkJICBBbnVtX3BnX3Byb2NfcHJvc3Fs Ym9keSwKKwkJCQkJCQkgICZpc051bGwpOworCQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJP UiwgIm51bGwgcHJvc3JjIGFuZCBwcm9zcWxib2R5IGZvciBmdW5jdGlvbiAldSIsIGZvaWQp OworCisJCW4gPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh0bXApKTsKKwkJ aWYgKElzQShuLCBMaXN0KSkKKwkJCXN0b3JlZF9xdWVyeV9saXN0ID0gbGluaXRpYWxfbm9k ZShMaXN0LCBjYXN0Tm9kZShMaXN0LCBuKSk7CisJCWVsc2UKKwkJCXN0b3JlZF9xdWVyeV9s aXN0ID0gbGlzdF9tYWtlMShuKTsKKworCQlmb3JlYWNoKGxjLCBzdG9yZWRfcXVlcnlfbGlz dCkKKwkJeworCQkJUXVlcnkJICAgKnBhcnNldHJlZSA9IGxmaXJzdF9ub2RlKFF1ZXJ5LCBs Yyk7CisJCQlMaXN0CSAgICpxdWVyeVRyZWVfc3VibGlzdDsKKworCQkJQWNxdWlyZVJld3Jp dGVMb2NrcyhwYXJzZXRyZWUsIHRydWUsIGZhbHNlKTsKKwkJCXF1ZXJ5VHJlZV9zdWJsaXN0 ID0gcGdfcmV3cml0ZV9xdWVyeShwYXJzZXRyZWUpOworCQkJcXVlcnlUcmVlX2xpc3QgPSBs YXBwZW5kKHF1ZXJ5VHJlZV9saXN0LCBxdWVyeVRyZWVfc3VibGlzdCk7CisJCX0KKwl9CisJ ZWxzZQorCXsKKwkJTGlzdAkgICAqcmF3X3BhcnNldHJlZV9saXN0OworCisJCWZjYWNoZS0+ c3JjID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0bXApOworCisJCXJhd19wYXJzZXRyZWVfbGlz dCA9IHBnX3BhcnNlX3F1ZXJ5KGZjYWNoZS0+c3JjKTsKKworCQlmb3JlYWNoKGxjLCByYXdf cGFyc2V0cmVlX2xpc3QpCisJCXsKKwkJCVJhd1N0bXQgICAgKnBhcnNldHJlZSA9IGxmaXJz dF9ub2RlKFJhd1N0bXQsIGxjKTsKKwkJCUxpc3QJICAgKnF1ZXJ5VHJlZV9zdWJsaXN0Owor CisJCQlxdWVyeVRyZWVfc3VibGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1z KHBhcnNldHJlZSwKKwkJCQkJCQkJCQkJCQkJCSAgZmNhY2hlLT5zcmMsCisJCQkJCQkJCQkJ CQkJCQkgIChQYXJzZXJTZXR1cEhvb2spIHNxbF9mbl9wYXJzZXJfc2V0dXAsCisJCQkJCQkJ CQkJCQkJCQkgIGZjYWNoZS0+cGluZm8sCisJCQkJCQkJCQkJCQkJCQkgIE5VTEwpOworCQkJ cXVlcnlUcmVlX2xpc3QgPSBsYXBwZW5kKHF1ZXJ5VHJlZV9saXN0LCBxdWVyeVRyZWVfc3Vi bGlzdCk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA1YTU5 MWQwYTc1Li5lZWI2NTdhMjZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMzA2OCw2 ICszMDY4LDcgQEAgX2NvcHlRdWVyeShjb25zdCBRdWVyeSAqZnJvbSkKIAlDT1BZX1NDQUxB Ul9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc0ZvclVw ZGF0ZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzUm93U2VjdXJpdHkpOworCUNPUFlfU0NB TEFSX0ZJRUxEKGlzUmV0dXJuKTsKIAlDT1BZX05PREVfRklFTEQoY3RlTGlzdCk7CiAJQ09Q WV9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKQEAg LTMxOTYsNiArMzE5NywxNiBAQCBfY29weVNldE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3Bl cmF0aW9uU3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIFJldHVy blN0bXQgKgorX2NvcHlSZXR1cm5TdG10KGNvbnN0IFJldHVyblN0bXQgKmZyb20pCit7CisJ UmV0dXJuU3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKFJldHVyblN0bXQpOworCisJQ09QWV9O T0RFX0ZJRUxEKHJldHVybnZhbCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGlj IEFsdGVyVGFibGVTdG10ICoKIF9jb3B5QWx0ZXJUYWJsZVN0bXQoY29uc3QgQWx0ZXJUYWJs ZVN0bXQgKmZyb20pCiB7CkBAIC0zNTYzLDYgKzM1NzQsNyBAQCBfY29weUNyZWF0ZUZ1bmN0 aW9uU3RtdChjb25zdCBDcmVhdGVGdW5jdGlvblN0bXQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJ RUxEKHBhcmFtZXRlcnMpOwogCUNPUFlfTk9ERV9GSUVMRChyZXR1cm5UeXBlKTsKIAlDT1BZ X05PREVfRklFTEQob3B0aW9ucyk7CisJQ09QWV9OT0RFX0ZJRUxEKHNxbF9ib2R5KTsKIAog CXJldHVybiBuZXdub2RlOwogfQpAQCAtNTIxNiw2ICs1MjI4LDkgQEAgY29weU9iamVjdElt cGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQly ZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2Fz ZSBUX1JldHVyblN0bXQ6CisJCQlyZXR2YWwgPSBfY29weVJldHVyblN0bXQoZnJvbSk7CisJ CQlicmVhazsKIAkJY2FzZSBUX0FsdGVyVGFibGVTdG10OgogCQkJcmV0dmFsID0gX2NvcHlB bHRlclRhYmxlU3RtdChmcm9tKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j CmluZGV4IGUyODk1YTg5ODUuLjI1NWU4M2QzOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKQEAgLTk2Niw2ICs5NjYsNyBAQCBfZXF1YWxRdWVyeShjb25zdCBRdWVyeSAqYSwgY29u c3QgUXVlcnkgKmIpCiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzTW9kaWZ5aW5nQ1RFKTsK IAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNGb3JVcGRhdGUpOwogCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKGhhc1Jvd1NlY3VyaXR5KTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChpc1JldHVy bik7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGN0ZUxpc3QpOwogCUNPTVBBUkVfTk9ERV9GSUVM RChydGFibGUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChqb2ludHJlZSk7CkBAIC0xMDgyLDYg KzEwODMsMTQgQEAgX2VxdWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25T dG10ICphLCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpiKQogCXJldHVybiB0cnVlOwogfQog CitzdGF0aWMgYm9vbAorX2VxdWFsUmV0dXJuU3RtdChjb25zdCBSZXR1cm5TdG10ICphLCBj b25zdCBSZXR1cm5TdG10ICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChyZXR1cm52YWwp OworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sCiBfZXF1YWxBbHRlclRhYmxl U3RtdChjb25zdCBBbHRlclRhYmxlU3RtdCAqYSwgY29uc3QgQWx0ZXJUYWJsZVN0bXQgKmIp CiB7CkBAIC0xMzg2LDYgKzEzOTUsNyBAQCBfZXF1YWxDcmVhdGVGdW5jdGlvblN0bXQoY29u c3QgQ3JlYXRlRnVuY3Rpb25TdG10ICphLCBjb25zdCBDcmVhdGVGdW5jdGlvblN0bXQgKgog CUNPTVBBUkVfTk9ERV9GSUVMRChwYXJhbWV0ZXJzKTsKIAlDT01QQVJFX05PREVfRklFTEQo cmV0dXJuVHlwZSk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKG9wdGlvbnMpOworCUNPTVBBUkVf Tk9ERV9GSUVMRChzcWxfYm9keSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTMyNzEsNiAr MzI4MSw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2Ug VF9TZXRPcGVyYXRpb25TdG10OgogCQkJcmV0dmFsID0gX2VxdWFsU2V0T3BlcmF0aW9uU3Rt dChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfUmV0dXJuU3RtdDoKKwkJCXJldHZhbCA9 IF9lcXVhbFJldHVyblN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX0FsdGVyVGFi bGVTdG10OgogCQkJcmV0dmFsID0gX2VxdWFsQWx0ZXJUYWJsZVN0bXQoYSwgYik7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGYyNjQ5OGNlYTIuLjQ2MDlmZTg3ZTEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc1Niw2ICsyNzU2LDE0IEBAIF9vdXRTZWxl Y3RTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBTZWxlY3RTdG10ICpub2RlKQogCVdSSVRF X05PREVfRklFTEQocmFyZyk7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0UmV0dXJuU3RtdChT dHJpbmdJbmZvIHN0ciwgY29uc3QgUmV0dXJuU3RtdCAqbm9kZSkKK3sKKwlXUklURV9OT0RF X1RZUEUoIlJFVFVSTiIpOworCisJV1JJVEVfTk9ERV9GSUVMRChyZXR1cm52YWwpOworfQor CiBzdGF0aWMgdm9pZAogX291dEZ1bmNDYWxsKFN0cmluZ0luZm8gc3RyLCBjb25zdCBGdW5j Q2FsbCAqbm9kZSkKIHsKQEAgLTI5NDUsNiArMjk1Myw3IEBAIF9vdXRRdWVyeShTdHJpbmdJ bmZvIHN0ciwgY29uc3QgUXVlcnkgKm5vZGUpCiAJV1JJVEVfQk9PTF9GSUVMRChoYXNNb2Rp ZnlpbmdDVEUpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzRm9yVXBkYXRlKTsKIAlXUklURV9C T09MX0ZJRUxEKGhhc1Jvd1NlY3VyaXR5KTsKKwlXUklURV9CT09MX0ZJRUxEKGlzUmV0dXJu KTsKIAlXUklURV9OT0RFX0ZJRUxEKGN0ZUxpc3QpOwogCVdSSVRFX05PREVfRklFTEQocnRh YmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKQEAgLTQxOTEsNiArNDIwMCw5 IEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZvaWQgKm9iaikKIAkJCWNhc2Ug VF9TZWxlY3RTdG10OgogCQkJCV9vdXRTZWxlY3RTdG10KHN0ciwgb2JqKTsKIAkJCQlicmVh azsKKwkJCWNhc2UgVF9SZXR1cm5TdG10OgorCQkJCV9vdXRSZXR1cm5TdG10KHN0ciwgb2Jq KTsKKwkJCQlicmVhazsKIAkJCWNhc2UgVF9Db2x1bW5EZWY6CiAJCQkJX291dENvbHVtbkRl ZihzdHIsIG9iaik7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IGFi N2I1MzVjYWEuLmQwMTc0NmQwZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0yNjMs NiArMjYzLDcgQEAgX3JlYWRRdWVyeSh2b2lkKQogCVJFQURfQk9PTF9GSUVMRChoYXNNb2Rp ZnlpbmdDVEUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNGb3JVcGRhdGUpOwogCVJFQURfQk9P TF9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJUkVBRF9CT09MX0ZJRUxEKGlzUmV0dXJuKTsK IAlSRUFEX05PREVfRklFTEQoY3RlTGlzdCk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJ0YWJsZSk7 CiAJUkVBRF9OT0RFX0ZJRUxEKGpvaW50cmVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYwppbmRleCA4NWVmODczY2FhLi42NmRiNGQ3YWNlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC00NDE2LDI3ICs0NDE2LDQ3IEBAIGlubGlu ZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5cGUsIE9pZCByZXN1bHRfY29s bGlkLAogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhteWN4dCk7CiAKLQkvKiBGZXRjaCB0aGUgZnVuY3Rpb24g Ym9keSAqLwotCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELAotCQkJCQkJICBmdW5j X3R1cGxlLAotCQkJCQkJICBBbnVtX3BnX3Byb2NfcHJvc3JjLAotCQkJCQkJICAmaXNOdWxs KTsKLQlpZiAoaXNOdWxsKQotCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgZm9yIGZ1bmN0 aW9uICV1IiwgZnVuY2lkKTsKLQlzcmMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCk7Ci0K IAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBzdXBwb3J0IGZvciBlcmVwb3J0KCku ICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuCiAJICogZmluZ2VyIHRoZSBmdW5jdGlvbiB0aGF0 IGJhZCBpbmZvcm1hdGlvbiBjYW1lIGZyb20uCiAJICovCiAJY2FsbGJhY2tfYXJnLnByb25h bWUgPSBOYW1lU3RyKGZ1bmNmb3JtLT5wcm9uYW1lKTsKLQljYWxsYmFja19hcmcucHJvc3Jj ID0gc3JjOworCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBOVUxMOwogCiAJc3FsZXJyY29udGV4 dC5jYWxsYmFjayA9IHNxbF9pbmxpbmVfZXJyb3JfY2FsbGJhY2s7CiAJc3FsZXJyY29udGV4 dC5hcmcgPSAodm9pZCAqKSAmY2FsbGJhY2tfYXJnOwogCXNxbGVycmNvbnRleHQucHJldmlv dXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmc3Fs ZXJyY29udGV4dDsKIAorCS8qIEZldGNoIHRoZSBmdW5jdGlvbiBib2R5ICovCisJdG1wID0g U3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsCisJCQkJCQkgIGZ1bmNfdHVwbGUsCisJCQkJCQkg IEFudW1fcGdfcHJvY19wcm9zcmMsCisJCQkJCQkgICZpc051bGwpOworCWlmIChpc051bGwp CisJeworCQlOb2RlCSAgICpuOworCQlMaXN0CSAgICpxdWVyeXRyZWVfbGlzdDsKKworCQl0 bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgZnVuY190dXBsZSwgQW51bV9wZ19wcm9j X3Byb3NxbGJvZHksICZpc051bGwpOworCQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwg Im51bGwgcHJvc3JjIGFuZCBwcm9zcWxib2R5IGZvciBmdW5jdGlvbiAldSIsIGZ1bmNpZCk7 CisKKwkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCkpOworCQlp ZiAoSXNBKG4sIExpc3QpKQorCQkJcXVlcnl0cmVlX2xpc3QgPSBsaW5pdGlhbF9ub2RlKExp c3QsIGNhc3ROb2RlKExpc3QsIG4pKTsKKwkJZWxzZQorCQkJcXVlcnl0cmVlX2xpc3QgPSBs aXN0X21ha2UxKG4pOworCQlpZiAobGlzdF9sZW5ndGgocXVlcnl0cmVlX2xpc3QpICE9IDEp CisJCQlnb3RvIGZhaWw7CisJCXF1ZXJ5dHJlZSA9IGxpbml0aWFsKHF1ZXJ5dHJlZV9saXN0 KTsKKwl9CisJZWxzZQorCXsKKwlzcmMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcCk7CisK KwljYWxsYmFja19hcmcucHJvc3JjID0gc3JjOworCiAJLyoKIAkgKiBTZXQgdXAgdG8gaGFu ZGxlIHBhcmFtZXRlcnMgd2hpbGUgcGFyc2luZyB0aGUgZnVuY3Rpb24gYm9keS4gIFdlIG5l ZWQgYQogCSAqIGR1bW15IEZ1bmNFeHByIG5vZGUgY29udGFpbmluZyB0aGUgYWxyZWFkeS1z aW1wbGlmaWVkIGFyZ3VtZW50cyB0byBwYXNzCkBAIC00NDgwLDYgKzQ1MDAsNyBAQCBpbmxp bmVfZnVuY3Rpb24oT2lkIGZ1bmNpZCwgT2lkIHJlc3VsdF90eXBlLCBPaWQgcmVzdWx0X2Nv bGxpZCwKIAlxdWVyeXRyZWUgPSB0cmFuc2Zvcm1Ub3BMZXZlbFN0bXQocHN0YXRlLCBsaW5p dGlhbChyYXdfcGFyc2V0cmVlX2xpc3QpKTsKIAogCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUp OworCX0KIAogCS8qCiAJICogVGhlIHNpbmdsZSBjb21tYW5kIG11c3QgYmUgYSBzaW1wbGUg IlNFTEVDVCBleHByZXNzaW9uIi4KQEAgLTQ3MzYsMTIgKzQ3NTcsMTUgQEAgc3FsX2lubGlu ZV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiAJaW50CQkJc3ludGF4ZXJycG9zaXRpb247 CiAKIAkvKiBJZiBpdCdzIGEgc3ludGF4IGVycm9yLCBjb252ZXJ0IHRvIGludGVybmFsIHN5 bnRheCBlcnJvciByZXBvcnQgKi8KLQlzeW50YXhlcnJwb3NpdGlvbiA9IGdldGVycnBvc2l0 aW9uKCk7Ci0JaWYgKHN5bnRheGVycnBvc2l0aW9uID4gMCkKKwlpZiAoY2FsbGJhY2tfYXJn LT5wcm9zcmMpCiAJewotCQllcnJwb3NpdGlvbigwKTsKLQkJaW50ZXJuYWxlcnJwb3NpdGlv bihzeW50YXhlcnJwb3NpdGlvbik7Ci0JCWludGVybmFsZXJycXVlcnkoY2FsbGJhY2tfYXJn LT5wcm9zcmMpOworCQlzeW50YXhlcnJwb3NpdGlvbiA9IGdldGVycnBvc2l0aW9uKCk7CisJ CWlmIChzeW50YXhlcnJwb3NpdGlvbiA+IDApCisJCXsKKwkJCWVycnBvc2l0aW9uKDApOwor CQkJaW50ZXJuYWxlcnJwb3NpdGlvbihzeW50YXhlcnJwb3NpdGlvbik7CisJCQlpbnRlcm5h bGVycnF1ZXJ5KGNhbGxiYWNrX2FyZy0+cHJvc3JjKTsKKwkJfQogCX0KIAogCWVycmNvbnRl eHQoIlNRTCBmdW5jdGlvbiBcIiVzXCIgZHVyaW5nIGlubGluaW5nIiwgY2FsbGJhY2tfYXJn LT5wcm9uYW1lKTsKQEAgLTQ4NTMsNyArNDg3Nyw2IEBAIGlubGluZV9zZXRfcmV0dXJuaW5n X2Z1bmN0aW9uKFBsYW5uZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUpCiAJT2lk CQkJZnVuY19vaWQ7CiAJSGVhcFR1cGxlCWZ1bmNfdHVwbGU7CiAJRm9ybV9wZ19wcm9jIGZ1 bmNmb3JtOwotCWNoYXIJICAgKnNyYzsKIAlEYXR1bQkJdG1wOwogCWJvb2wJCWlzTnVsbDsK IAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKQEAgLTQ5NjIsMjcgKzQ5ODUsNTMgQEAgaW5saW5l X3NldF9yZXR1cm5pbmdfZnVuY3Rpb24oUGxhbm5lckluZm8gKnJvb3QsIFJhbmdlVGJsRW50 cnkgKnJ0ZSkKIAkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obXljeHQpOwogCi0JLyogRmV0Y2ggdGhlIGZ1bmN0 aW9uIGJvZHkgKi8KLQl0bXAgPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwKLQkJCQkJCSAg ZnVuY190dXBsZSwKLQkJCQkJCSAgQW51bV9wZ19wcm9jX3Byb3NyYywKLQkJCQkJCSAgJmlz TnVsbCk7Ci0JaWYgKGlzTnVsbCkKLQkJZWxvZyhFUlJPUiwgIm51bGwgcHJvc3JjIGZvciBm dW5jdGlvbiAldSIsIGZ1bmNfb2lkKTsKLQlzcmMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHRt cCk7Ci0KIAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBzdXBwb3J0IGZvciBlcmVw b3J0KCkuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuCiAJICogZmluZ2VyIHRoZSBmdW5jdGlv biB0aGF0IGJhZCBpbmZvcm1hdGlvbiBjYW1lIGZyb20uCiAJICovCiAJY2FsbGJhY2tfYXJn LnByb25hbWUgPSBOYW1lU3RyKGZ1bmNmb3JtLT5wcm9uYW1lKTsKLQljYWxsYmFja19hcmcu cHJvc3JjID0gc3JjOworCWNhbGxiYWNrX2FyZy5wcm9zcmMgPSBOVUxMOwogCiAJc3FsZXJy Y29udGV4dC5jYWxsYmFjayA9IHNxbF9pbmxpbmVfZXJyb3JfY2FsbGJhY2s7CiAJc3FsZXJy Y29udGV4dC5hcmcgPSAodm9pZCAqKSAmY2FsbGJhY2tfYXJnOwogCXNxbGVycmNvbnRleHQu cHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sg PSAmc3FsZXJyY29udGV4dDsKIAorCS8qIEZldGNoIHRoZSBmdW5jdGlvbiBib2R5ICovCisJ dG1wID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsCisJCQkJCQkgIGZ1bmNfdHVwbGUsCisJ CQkJCQkgIEFudW1fcGdfcHJvY19wcm9zcmMsCisJCQkJCQkgICZpc051bGwpOworCWlmIChp c051bGwpCisJeworCQlOb2RlCSAgICpuOworCisJCXRtcCA9IFN5c0NhY2hlR2V0QXR0cihQ Uk9DT0lELCBmdW5jX3R1cGxlLCBBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSwgJmlzTnVsbCk7 CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9zcmMgYW5kIHByb3Nx bGJvZHkgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY19vaWQpOworCisJCW4gPSBzdHJpbmdUb05v ZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh0bXApKTsKKwkJaWYgKElzQShuLCBMaXN0KSkKKwkJ CXF1ZXJ5dHJlZV9saXN0ID0gbGluaXRpYWxfbm9kZShMaXN0LCBjYXN0Tm9kZShMaXN0LCBu KSk7CisJCWVsc2UKKwkJCXF1ZXJ5dHJlZV9saXN0ID0gbGlzdF9tYWtlMShuKTsKKwkJaWYg KGxpc3RfbGVuZ3RoKHF1ZXJ5dHJlZV9saXN0KSAhPSAxKQorCQkJZ290byBmYWlsOworCQlx dWVyeXRyZWUgPSBsaW5pdGlhbChxdWVyeXRyZWVfbGlzdCk7CisKKwkJcXVlcnl0cmVlX2xp c3QgPSBwZ19yZXdyaXRlX3F1ZXJ5KHF1ZXJ5dHJlZSk7CisJCWlmIChsaXN0X2xlbmd0aChx dWVyeXRyZWVfbGlzdCkgIT0gMSkKKwkJCWdvdG8gZmFpbDsKKwkJcXVlcnl0cmVlID0gbGlu aXRpYWwocXVlcnl0cmVlX2xpc3QpOworCX0KKwllbHNlCisJeworCWNoYXIJICAgKnNyYzsK KworCXNyYyA9IFRleHREYXR1bUdldENTdHJpbmcodG1wKTsKKworCWNhbGxiYWNrX2FyZy5w cm9zcmMgPSBzcmM7CisKIAkvKgogCSAqIFNldCB1cCB0byBoYW5kbGUgcGFyYW1ldGVycyB3 aGlsZSBwYXJzaW5nIHRoZSBmdW5jdGlvbiBib2R5LiAgV2UgY2FuCiAJICogdXNlIHRoZSBG dW5jRXhwciBqdXN0IGNyZWF0ZWQgYXMgdGhlIGlucHV0IGZvcgpAQCAtNDk5MiwxOCArNTA0 MSw2IEBAIGlubGluZV9zZXRfcmV0dXJuaW5nX2Z1bmN0aW9uKFBsYW5uZXJJbmZvICpyb290 LCBSYW5nZVRibEVudHJ5ICpydGUpCiAJCQkJCQkJCQkgIChOb2RlICopIGZleHByLAogCQkJ CQkJCQkJICBmZXhwci0+aW5wdXRjb2xsaWQpOwogCi0JLyoKLQkgKiBBbHNvIHJlc29sdmUg dGhlIGFjdHVhbCBmdW5jdGlvbiByZXN1bHQgdHVwZGVzYywgaWYgY29tcG9zaXRlLiAgSWYg dGhlCi0JICogZnVuY3Rpb24gaXMganVzdCBkZWNsYXJlZCB0byByZXR1cm4gUkVDT1JELCBk aWcgdGhlIGluZm8gb3V0IG9mIHRoZSBBUwotCSAqIGNsYXVzZS4KLQkgKi8KLQlmdW5jdHlw Y2xhc3MgPSBnZXRfZXhwcl9yZXN1bHRfdHlwZSgoTm9kZSAqKSBmZXhwciwgTlVMTCwgJnJl dHR1cGRlc2MpOwotCWlmIChmdW5jdHlwY2xhc3MgPT0gVFlQRUZVTkNfUkVDT1JEKQotCQly ZXR0dXBkZXNjID0gQnVpbGREZXNjRnJvbUxpc3RzKHJ0ZnVuYy0+ZnVuY2NvbG5hbWVzLAot CQkJCQkJCQkJCXJ0ZnVuYy0+ZnVuY2NvbHR5cGVzLAotCQkJCQkJCQkJCXJ0ZnVuYy0+ZnVu Y2NvbHR5cG1vZHMsCi0JCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sY29sbGF0aW9ucyk7Ci0K IAkvKgogCSAqIFBhcnNlLCBhbmFseXplLCBhbmQgcmV3cml0ZSAodW5saWtlIGlubGluZV9m dW5jdGlvbigpLCB3ZSBjYW4ndCBza2lwCiAJICogcmV3cml0aW5nIGhlcmUpLiAgV2UgY2Fu IGZhaWwgYXMgc29vbiBhcyB3ZSBmaW5kIG1vcmUgdGhhbiBvbmUgcXVlcnksCkBAIC01MDIw LDYgKzUwNTcsMTkgQEAgaW5saW5lX3NldF9yZXR1cm5pbmdfZnVuY3Rpb24oUGxhbm5lcklu Zm8gKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAlpZiAobGlzdF9sZW5ndGgocXVlcnl0 cmVlX2xpc3QpICE9IDEpCiAJCWdvdG8gZmFpbDsKIAlxdWVyeXRyZWUgPSBsaW5pdGlhbChx dWVyeXRyZWVfbGlzdCk7CisJfQorCisJLyoKKwkgKiBBbHNvIHJlc29sdmUgdGhlIGFjdHVh bCBmdW5jdGlvbiByZXN1bHQgdHVwZGVzYywgaWYgY29tcG9zaXRlLiAgSWYgdGhlCisJICog ZnVuY3Rpb24gaXMganVzdCBkZWNsYXJlZCB0byByZXR1cm4gUkVDT1JELCBkaWcgdGhlIGlu Zm8gb3V0IG9mIHRoZSBBUworCSAqIGNsYXVzZS4KKwkgKi8KKwlmdW5jdHlwY2xhc3MgPSBn ZXRfZXhwcl9yZXN1bHRfdHlwZSgoTm9kZSAqKSBmZXhwciwgTlVMTCwgJnJldHR1cGRlc2Mp OworCWlmIChmdW5jdHlwY2xhc3MgPT0gVFlQRUZVTkNfUkVDT1JEKQorCQlyZXR0dXBkZXNj ID0gQnVpbGREZXNjRnJvbUxpc3RzKHJ0ZnVuYy0+ZnVuY2NvbG5hbWVzLAorCQkJCQkJCQkJ CXJ0ZnVuYy0+ZnVuY2NvbHR5cGVzLAorCQkJCQkJCQkJCXJ0ZnVuYy0+ZnVuY2NvbHR5cG1v ZHMsCisJCQkJCQkJCQkJcnRmdW5jLT5mdW5jY29sY29sbGF0aW9ucyk7CiAKIAkvKgogCSAq IFRoZSBzaW5nbGUgY29tbWFuZCBtdXN0IGJlIGEgcGxhaW4gU0VMRUNULgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9h bmFseXplLmMKaW5kZXggMDg0ZTAwZjczZC4uN2U0YjhlZjI3OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC02Niw2ICs2Niw3IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1TZXRPcGVy YXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCwKIAkJCQkJ CQkJCSAgIGJvb2wgaXNUb3BMZXZlbCwgTGlzdCAqKnRhcmdldGxpc3QpOwogc3RhdGljIHZv aWQgZGV0ZXJtaW5lUmVjdXJzaXZlQ29sVHlwZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCQkJICAgTm9kZSAqbGFyZywgTGlzdCAqbnJ0YXJnZXRsaXN0KTsKK3N0YXRpYyBRdWVy eSAqdHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJldHVyblN0bXQg KnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUmV0 dXJuaW5nTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnJldHVybmluZ0xpc3QpOwog c3RhdGljIExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0 YXRlLApAQCAtMzA0LDYgKzMwNSwxMCBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1Jl dHVyblN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1SZXR1cm5TdG10KHBzdGF0ZSwgKFJl dHVyblN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogU3Bl Y2lhbCBjYXNlcwogCQkJICovCkBAIC0yMjA2LDYgKzIyMTEsMzYgQEAgZGV0ZXJtaW5lUmVj dXJzaXZlQ29sVHlwZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXJnLCBMaXN0ICpu cnRhcmdldGxpc3QpCiB9CiAKIAorLyoKKyAqIHRyYW5zZm9ybVJldHVyblN0bXQgLQorICoJ ICB0cmFuc2Zvcm1zIGEgcmV0dXJuIHN0YXRlbWVudAorICovCitzdGF0aWMgUXVlcnkgKgor dHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJldHVyblN0bXQgKnN0 bXQpCit7CisJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKworCXFyeS0+Y29t bWFuZFR5cGUgPSBDTURfU0VMRUNUOworCXFyeS0+aXNSZXR1cm4gPSB0cnVlOworCisJcXJ5 LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdHJh bnNmb3JtRXhwcihwc3RhdGUsIHN0bXQtPnJldHVybnZhbCwgRVhQUl9LSU5EX1NFTEVDVF9U QVJHRVQpLAorCQkJCQkJCQkJCQkJIDEsIE5VTEwsIGZhbHNlKSk7CisKKwlpZiAocHN0YXRl LT5wX3Jlc29sdmVfdW5rbm93bnMpCisJCXJlc29sdmVUYXJnZXRMaXN0VW5rbm93bnMocHN0 YXRlLCBxcnktPnRhcmdldExpc3QpOworCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJs ZTsKKwlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwg TlVMTCk7CisJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlx cnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRlLT5wX2hhc1dpbmRvd0Z1bmNzOworCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOworCXFyeS0+aGFzQWdn cyA9IHBzdGF0ZS0+cF9oYXNBZ2dzOworCisJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0 YXRlLCBxcnkpOworCisJcmV0dXJuIHFyeTsKK30KKworCiAvKgogICogdHJhbnNmb3JtVXBk YXRlU3RtdCAtCiAgKgkgIHRyYW5zZm9ybXMgYW4gdXBkYXRlIHN0YXRlbWVudApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggZWZjOWM5OTc1NC4uNDE4MDA3MGFkYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBA IC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlzdHJ1Y3Qg U2VsZWN0TGltaXQJKnNlbGVjdGxpbWl0OwogfQogCi0ldHlwZSA8bm9kZT4Jc3RtdCBzY2hl bWFfc3RtdAorJXR5cGUgPG5vZGU+CXN0bXQgdG9wbGV2ZWxfc3RtdCBzY2hlbWFfc3RtdCBy b3V0aW5lX2JvZHlfc3RtdAogCQlBbHRlckV2ZW50VHJpZ1N0bXQKIAkJQWx0ZXJEYXRhYmFz ZVN0bXQgQWx0ZXJEYXRhYmFzZVNldFN0bXQgQWx0ZXJEb21haW5TdG10IEFsdGVyRW51bVN0 bXQKIAkJQWx0ZXJGZHdTdG10IEFsdGVyRm9yZWlnblNlcnZlclN0bXQgQWx0ZXJHcm91cFN0 bXQKQEAgLTI4MCw5ICsyODAsOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlH cmFudFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJbmRleFN0 bXQgSW5zZXJ0U3RtdAogCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0 bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3Rt dCBBbHRlckZ1bmN0aW9uU3RtdCBSZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAotCQlSZW1v dmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBSZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tl Um9sZVN0bXQKKwkJUmVtb3ZlRnVuY1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3RtdCBS ZXR1cm5TdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQg UnVsZUFjdGlvblN0bXRPckVtcHR5IFJ1bGVTdG10Ci0JCVNlY0xhYmVsU3RtdCBTZWxlY3RT dG10IFRyYW5zYWN0aW9uU3RtdCBUcnVuY2F0ZVN0bXQKKwkJU2VjTGFiZWxTdG10IFNlbGVj dFN0bXQgVHJhbnNhY3Rpb25TdG10IFRyYW5zYWN0aW9uU3RtdExlZ2FjeSBUcnVuY2F0ZVN0 bXQKIAkJVW5saXN0ZW5TdG10IFVwZGF0ZVN0bXQgVmFjdXVtU3RtdAogCQlWYXJpYWJsZVJl c2V0U3RtdCBWYXJpYWJsZVNldFN0bXQgVmFyaWFibGVTaG93U3RtdAogCQlWaWV3U3RtdCBD aGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdApAQCAtMzg1LDE0ICszODUsMTQg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YWN1dW1fcmVs YXRpb24KICV0eXBlIDxzZWxlY3RsaW1pdD4gb3B0X3NlbGVjdF9saW1pdCBzZWxlY3RfbGlt aXQgbGltaXRfY2xhdXNlCiAKLSV0eXBlIDxsaXN0PglzdG10YmxvY2sgc3RtdG11bHRpCisl dHlwZSA8bGlzdD4Jc3RtdGJsb2NrIHN0bXRtdWx0aSByb3V0aW5lX2JvZHlfc3RtdF9saXN0 CiAJCQkJT3B0VGFibGVFbGVtZW50TGlzdCBUYWJsZUVsZW1lbnRMaXN0IE9wdEluaGVyaXQg ZGVmaW5pdGlvbgogCQkJCU9wdFR5cGVkVGFibGVFbGVtZW50TGlzdCBUeXBlZFRhYmxlRWxl bWVudExpc3QKIAkJCQlyZWxvcHRpb25zIG9wdF9yZWxvcHRpb25zCiAJCQkJT3B0V2l0aCBk aXN0aW5jdF9jbGF1c2Ugb3B0X2RlZmluaXRpb24gZnVuY19hcmdzIGZ1bmNfYXJnc19saXN0 CiAJCQkJZnVuY19hcmdzX3dpdGhfZGVmYXVsdHMgZnVuY19hcmdzX3dpdGhfZGVmYXVsdHNf bGlzdAogCQkJCWFnZ3JfYXJncyBhZ2dyX2FyZ3NfbGlzdAotCQkJCWZ1bmNfYXMgY3JlYXRl ZnVuY19vcHRfbGlzdCBhbHRlcmZ1bmNfb3B0X2xpc3QKKwkJCQlmdW5jX2FzIGNyZWF0ZWZ1 bmNfb3B0X2xpc3Qgb3B0X2NyZWF0ZWZ1bmNfb3B0X2xpc3QgYWx0ZXJmdW5jX29wdF9saXN0 CiAJCQkJb2xkX2FnZ3JfZGVmaW5pdGlvbiBvbGRfYWdncl9saXN0CiAJCQkJb3Blcl9hcmd0 eXBlcyBSdWxlQWN0aW9uTGlzdCBSdWxlQWN0aW9uTXVsdGkKIAkJCQlvcHRfY29sdW1uX2xp c3QgY29sdW1uTGlzdCBvcHRfbmFtZV9saXN0CkBAIC00MTgsNiArNDE4LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFj dXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0CiAKKyV0eXBlIDxub2Rl PglvcHRfcm91dGluZV9ib2R5CiAldHlwZSA8bGlzdD4JZ3JvdXBfYnlfbGlzdAogJXR5cGUg PG5vZGU+CWdyb3VwX2J5X2l0ZW0gZW1wdHlfZ3JvdXBpbmdfc2V0IHJvbGx1cF9jbGF1c2Ug Y3ViZV9jbGF1c2UKICV0eXBlIDxub2RlPglncm91cGluZ19zZXRzX2NsYXVzZQpAQCAtNjI4 LDcgKzYyOSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAvKiBvcmRpbmFyeSBr ZXkgd29yZHMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyICovCiAldG9rZW4gPGtleXdvcmQ+IEFC T1JUX1AgQUJTT0xVVEVfUCBBQ0NFU1MgQUNUSU9OIEFERF9QIEFETUlOIEFGVEVSCiAJQUdH UkVHQVRFIEFMTCBBTFNPIEFMVEVSIEFMV0FZUyBBTkFMWVNFIEFOQUxZWkUgQU5EIEFOWSBB UlJBWSBBUyBBU0MKLQlBU1NFUlRJT04gQVNTSUdOTUVOVCBBU1lNTUVUUklDIEFUIEFUVEFD SCBBVFRSSUJVVEUgQVVUSE9SSVpBVElPTgorCUFTU0VSVElPTiBBU1NJR05NRU5UIEFTWU1N RVRSSUMgQVQgQVRPTUlDIEFUVEFDSCBBVFRSSUJVVEUgQVVUSE9SSVpBVElPTgogCiAJQkFD S1dBUkQgQkVGT1JFIEJFR0lOX1AgQkVUV0VFTiBCSUdJTlQgQklOQVJZIEJJVAogCUJPT0xF QU5fUCBCT1RIIEJZCkBAIC02OTAsNyArNjkxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lWRSBS RUYgUkVGRVJFTkNFUyBSRUZFUkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElWRV9Q IFJFTEVBU0UgUkVOQU1FIFJFUEVBVEFCTEUgUkVQTEFDRSBSRVBMSUNBCi0JUkVTRVQgUkVT VEFSVCBSRVNUUklDVCBSRVRVUk5JTkcgUkVUVVJOUyBSRVZPS0UgUklHSFQgUk9MRSBST0xM QkFDSyBST0xMVVAKKwlSRVNFVCBSRVNUQVJUIFJFU1RSSUNUIFJFVFVSTiBSRVRVUk5JTkcg UkVUVVJOUyBSRVZPS0UgUklHSFQgUk9MRSBST0xMQkFDSyBST0xMVVAKIAlST1VUSU5FIFJP VVRJTkVTIFJPVyBST1dTIFJVTEUKIAogCVNBVkVQT0lOVCBTQ0hFTUEgU0NIRU1BUyBTQ1JP TEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVCBTRVFVRU5DRSBTRVFVRU5DRVMK QEAgLTgxMiw3ICs4MTMsNyBAQCBzdG10YmxvY2s6CXN0bXRtdWx0aQogICogd2UnZCBnZXQg LTEgZm9yIHRoZSBsb2NhdGlvbiBpbiBzdWNoIGNhc2VzLgogICogV2UgYWxzbyB0YWtlIGNh cmUgdG8gZGlzY2FyZCBlbXB0eSBzdGF0ZW1lbnRzIGVudGlyZWx5LgogICovCi1zdG10bXVs dGk6CXN0bXRtdWx0aSAnOycgc3RtdAorc3RtdG11bHRpOglzdG10bXVsdGkgJzsnIHRvcGxl dmVsX3N0bXQKIAkJCQl7CiAJCQkJCWlmICgkMSAhPSBOSUwpCiAJCQkJCXsKQEAgLTgyNCw3 ICs4MjUsNyBAQCBzdG10bXVsdGk6CXN0bXRtdWx0aSAnOycgc3RtdAogCQkJCQllbHNlCiAJ CQkJCQkkJCA9ICQxOwogCQkJCX0KLQkJCXwgc3RtdAorCQkJfCB0b3BsZXZlbF9zdG10CiAJ CQkJewogCQkJCQlpZiAoJDEgIT0gTlVMTCkKIAkJCQkJCSQkID0gbGlzdF9tYWtlMShtYWtl UmF3U3RtdCgkMSwgMCkpOwpAQCAtODMzLDcgKzgzNCwxNiBAQCBzdG10bXVsdGk6CXN0bXRt dWx0aSAnOycgc3RtdAogCQkJCX0KIAkJOwogCi1zdG10IDoKKy8qCisgKiB0b3BsZXZlbF9z dG10IGluY2x1ZGVzIEJFR0lOIGFuZCBFTkQuICBzdG10IGRvZXMgbm90IGluY2x1ZGUgdGhl bSwgYmVjYXVzZQorICogdGhvc2Ugd29yZHMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZ3MgaW4g ZnVuY3Rpb24gYm9keXMuCisgKi8KK3RvcGxldmVsX3N0bXQ6CisJCQlzdG10CisJCQl8IFRy YW5zYWN0aW9uU3RtdExlZ2FjeQorCQk7CisKK3N0bXQ6CiAJCQlBbHRlckV2ZW50VHJpZ1N0 bXQKIAkJCXwgQWx0ZXJEYXRhYmFzZVN0bXQKIAkJCXwgQWx0ZXJEYXRhYmFzZVNldFN0bXQK QEAgLTczNTIsNyArNzM2Miw3IEBAIG9wdF9udWxsc19vcmRlcjogTlVMTFNfTEEgRklSU1Rf UAkJCXsgJCQgPSBTT1JUQllfTlVMTFNfRklSU1Q7IH0KIAogQ3JlYXRlRnVuY3Rpb25TdG10 OgogCQkJQ1JFQVRFIG9wdF9vcl9yZXBsYWNlIEZVTkNUSU9OIGZ1bmNfbmFtZSBmdW5jX2Fy Z3Nfd2l0aF9kZWZhdWx0cwotCQkJUkVUVVJOUyBmdW5jX3JldHVybiBjcmVhdGVmdW5jX29w dF9saXN0CisJCQlSRVRVUk5TIGZ1bmNfcmV0dXJuIG9wdF9jcmVhdGVmdW5jX29wdF9saXN0 IG9wdF9yb3V0aW5lX2JvZHkKIAkJCQl7CiAJCQkJCUNyZWF0ZUZ1bmN0aW9uU3RtdCAqbiA9 IG1ha2VOb2RlKENyZWF0ZUZ1bmN0aW9uU3RtdCk7CiAJCQkJCW4tPmlzX3Byb2NlZHVyZSA9 IGZhbHNlOwpAQCAtNzM2MSwxMCArNzM3MSwxMSBAQCBDcmVhdGVGdW5jdGlvblN0bXQ6CiAJ CQkJCW4tPnBhcmFtZXRlcnMgPSAkNTsKIAkJCQkJbi0+cmV0dXJuVHlwZSA9ICQ3OwogCQkJ CQluLT5vcHRpb25zID0gJDg7CisJCQkJCW4tPnNxbF9ib2R5ID0gJDk7CiAJCQkJCSQkID0g KE5vZGUgKiluOwogCQkJCX0KIAkJCXwgQ1JFQVRFIG9wdF9vcl9yZXBsYWNlIEZVTkNUSU9O IGZ1bmNfbmFtZSBmdW5jX2FyZ3Nfd2l0aF9kZWZhdWx0cwotCQkJICBSRVRVUk5TIFRBQkxF ICcoJyB0YWJsZV9mdW5jX2NvbHVtbl9saXN0ICcpJyBjcmVhdGVmdW5jX29wdF9saXN0CisJ CQkgIFJFVFVSTlMgVEFCTEUgJygnIHRhYmxlX2Z1bmNfY29sdW1uX2xpc3QgJyknIG9wdF9j cmVhdGVmdW5jX29wdF9saXN0IG9wdF9yb3V0aW5lX2JvZHkKIAkJCQl7CiAJCQkJCUNyZWF0 ZUZ1bmN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZUZ1bmN0aW9uU3RtdCk7CiAJCQkJ CW4tPmlzX3Byb2NlZHVyZSA9IGZhbHNlOwpAQCAtNzM3NCwxMCArNzM4NSwxMSBAQCBDcmVh dGVGdW5jdGlvblN0bXQ6CiAJCQkJCW4tPnJldHVyblR5cGUgPSBUYWJsZUZ1bmNUeXBlTmFt ZSgkOSk7CiAJCQkJCW4tPnJldHVyblR5cGUtPmxvY2F0aW9uID0gQDc7CiAJCQkJCW4tPm9w dGlvbnMgPSAkMTE7CisJCQkJCW4tPnNxbF9ib2R5ID0gJDEyOwogCQkJCQkkJCA9IChOb2Rl ICopbjsKIAkJCQl9CiAJCQl8IENSRUFURSBvcHRfb3JfcmVwbGFjZSBGVU5DVElPTiBmdW5j X25hbWUgZnVuY19hcmdzX3dpdGhfZGVmYXVsdHMKLQkJCSAgY3JlYXRlZnVuY19vcHRfbGlz dAorCQkJICBvcHRfY3JlYXRlZnVuY19vcHRfbGlzdCBvcHRfcm91dGluZV9ib2R5CiAJCQkJ ewogCQkJCQlDcmVhdGVGdW5jdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVGdW5jdGlv blN0bXQpOwogCQkJCQluLT5pc19wcm9jZWR1cmUgPSBmYWxzZTsKQEAgLTczODYsMTAgKzcz OTgsMTEgQEAgQ3JlYXRlRnVuY3Rpb25TdG10OgogCQkJCQluLT5wYXJhbWV0ZXJzID0gJDU7 CiAJCQkJCW4tPnJldHVyblR5cGUgPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gJDY7CisJ CQkJCW4tPnNxbF9ib2R5ID0gJDc7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJ CXwgQ1JFQVRFIG9wdF9vcl9yZXBsYWNlIFBST0NFRFVSRSBmdW5jX25hbWUgZnVuY19hcmdz X3dpdGhfZGVmYXVsdHMKLQkJCSAgY3JlYXRlZnVuY19vcHRfbGlzdAorCQkJICBvcHRfY3Jl YXRlZnVuY19vcHRfbGlzdCBvcHRfcm91dGluZV9ib2R5CiAJCQkJewogCQkJCQlDcmVhdGVG dW5jdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVGdW5jdGlvblN0bXQpOwogCQkJCQlu LT5pc19wcm9jZWR1cmUgPSB0cnVlOwpAQCAtNzM5OCw2ICs3NDExLDcgQEAgQ3JlYXRlRnVu Y3Rpb25TdG10OgogCQkJCQluLT5wYXJhbWV0ZXJzID0gJDU7CiAJCQkJCW4tPnJldHVyblR5 cGUgPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gJDY7CisJCQkJCW4tPnNxbF9ib2R5ID0g JDc7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJOwpAQCAtNzcwOCw2ICs3NzIy LDExIEBAIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzX2xpc3Q6CiAJCQkJCQkJCQkJCQkJeyAk JCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK29wdF9jcmVhdGVmdW5jX29wdF9saXN0 OgorCQkJY3JlYXRlZnVuY19vcHRfbGlzdAorCQkJfCAvKkVNUFRZKi8geyAkJCA9IE5JTDsg fQorCTsKKwogY3JlYXRlZnVuY19vcHRfbGlzdDoKIAkJCS8qIE11c3QgYmUgYXQgbGVhc3Qg b25lIHRvIHByZXZlbnQgY29uZmxpY3QgKi8KIAkJCWNyZWF0ZWZ1bmNfb3B0X2l0ZW0JCQkJ CQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KQEAgLTc4MTksNiArNzgzOCw1MSBAQCBmdW5j X2FzOglTY29uc3QJCQkJCQl7ICQkID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7IH0K IAkJCQl9CiAJCTsKIAorUmV0dXJuU3RtdDoJUkVUVVJOIGFfZXhwcgorCQkJCXsKKwkJCQkJ UmV0dXJuU3RtdCAqciA9IG1ha2VOb2RlKFJldHVyblN0bXQpOworCQkJCQlyLT5yZXR1cm52 YWwgPSAoTm9kZSAqKSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKSByOworCQkJCX0KKwkJOwor CitvcHRfcm91dGluZV9ib2R5OgorCQkJUmV0dXJuU3RtdAorCQkJCXsKKwkJCQkJJCQgPSAk MTsKKwkJCQl9CisJCQl8IEJFR0lOX1AgQVRPTUlDIHJvdXRpbmVfYm9keV9zdG10X2xpc3Qg RU5EX1AKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEEgY29tcG91bmQgc3RhdGVtZW50IGlz IHN0b3JlZCBhcyBhIHNpbmdsZS1pdGVtIGxpc3QKKwkJCQkJICogY29udGFpbmluZyB0aGUg bGlzdCBvZiBzdGF0ZW1lbnRzIGFzIGl0cyBtZW1iZXIuICBUaGF0CisJCQkJCSAqIHdheSwg dGhlIHBhcnNlIGFuYWx5c2lzIGNvZGUgY2FuIHRlbGwgYXBhcnQgYW4gZW1wdHkKKwkJCQkJ ICogYm9keSBmcm9tIG5vIGJvZHkgYXQgYWxsLgorCQkJCQkgKi8KKwkJCQkJJCQgPSAoTm9k ZSAqKSBsaXN0X21ha2UxKCQzKTsKKwkJCQl9CisJCQl8IC8qRU1QVFkqLworCQkJCXsKKwkJ CQkJJCQgPSBOVUxMOworCQkJCX0KKwkJOworCityb3V0aW5lX2JvZHlfc3RtdF9saXN0Ogor CQkJcm91dGluZV9ib2R5X3N0bXRfbGlzdCByb3V0aW5lX2JvZHlfc3RtdCAnOycKKwkJCQl7 CisJCQkJCSQkID0gbGFwcGVuZCgkMSwgJDIpOworCQkJCX0KKwkJCXwgLypFTVBUWSovCisJ CQkJeworCQkJCQkkJCA9IE5JTDsKKwkJCQl9CisJCTsKKworcm91dGluZV9ib2R5X3N0bXQ6 CisJCQlzdG10CisJCQl8IFJldHVyblN0bXQKKwkJOworCiB0cmFuc2Zvcm1fdHlwZV9saXN0 OgogCQkJRk9SIFRZUEVfUCBUeXBlbmFtZSB7ICQkID0gbGlzdF9tYWtlMSgkMyk7IH0KIAkJ CXwgdHJhbnNmb3JtX3R5cGVfbGlzdCAnLCcgRk9SIFRZUEVfUCBUeXBlbmFtZSB7ICQkID0g bGFwcGVuZCgkMSwgJDUpOyB9CkBAIC05NzY5LDEzICs5ODMzLDYgQEAgVHJhbnNhY3Rpb25T dG10OgogCQkJCQluLT5jaGFpbiA9ICQzOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9 Ci0JCQl8IEJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9v cl9lbXB0eQotCQkJCXsKLQkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJh bnNhY3Rpb25TdG10KTsKLQkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfQkVHSU47Ci0JCQkJ CW4tPm9wdGlvbnMgPSAkMzsKLQkJCQkJJCQgPSAoTm9kZSAqKW47Ci0JCQkJfQogCQkJfCBT VEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKIAkJCQl7 CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7 CkBAIC05NzkxLDE0ICs5ODQ4LDYgQEAgVHJhbnNhY3Rpb25TdG10OgogCQkJCQluLT5jaGFp biA9ICQzOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IEVORF9QIG9wdF90 cmFuc2FjdGlvbiBvcHRfdHJhbnNhY3Rpb25fY2hhaW4KLQkJCQl7Ci0JCQkJCVRyYW5zYWN0 aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7Ci0JCQkJCW4tPmtpbmQg PSBUUkFOU19TVE1UX0NPTU1JVDsKLQkJCQkJbi0+b3B0aW9ucyA9IE5JTDsKLQkJCQkJbi0+ Y2hhaW4gPSAkMzsKLQkJCQkJJCQgPSAoTm9kZSAqKW47Ci0JCQkJfQogCQkJfCBST0xMQkFD SyBvcHRfdHJhbnNhY3Rpb24gb3B0X3RyYW5zYWN0aW9uX2NoYWluCiAJCQkJewogCQkJCQlU cmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwpAQCAtOTg2 NSw2ICs5OTE0LDI0IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJCQl9CiAJCTsKIAorVHJhbnNh Y3Rpb25TdG10TGVnYWN5OgorCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rp b25fbW9kZV9saXN0X29yX2VtcHR5CisJCQkJeworCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4g PSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOworCQkJCQluLT5raW5kID0gVFJBTlNfU1RN VF9CRUdJTjsKKwkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsK KwkJCQl9CisJCQl8IEVORF9QIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJhbnNhY3Rpb25fY2hh aW4KKwkJCQl7CisJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0 aW9uU3RtdCk7CisJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0NPTU1JVDsKKwkJCQkJbi0+ b3B0aW9ucyA9IE5JTDsKKwkJCQkJbi0+Y2hhaW4gPSAkMzsKKwkJCQkJJCQgPSAoTm9kZSAq KW47CisJCQkJfQorCQk7CisKIG9wdF90cmFuc2FjdGlvbjoJV09SSwogCQkJfCBUUkFOU0FD VElPTgogCQkJfCAvKkVNUFRZKi8KQEAgLTE1MTUyLDYgKzE1MjE5LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBBU1NFUlRJT04KIAkJCXwgQVNTSUdOTUVOVAogCQkJfCBBVAor CQkJfCBBVE9NSUMKIAkJCXwgQVRUQUNICiAJCQl8IEFUVFJJQlVURQogCQkJfCBCQUNLV0FS RApAQCAtMTUzNTAsNiArMTU0MTgsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFJF U0VUCiAJCQl8IFJFU1RBUlQKIAkJCXwgUkVTVFJJQ1QKKwkJCXwgUkVUVVJOCiAJCQl8IFJF VFVSTlMKIAkJCXwgUkVWT0tFCiAJCQl8IFJPTEUKQEAgLTE1NjU2LDYgKzE1NzI1LDcgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBBU1NJR05NRU5UCiAJCQl8IEFTWU1NRVRSSUMK IAkJCXwgQVQKKwkJCXwgQVRPTUlDCiAJCQl8IEFUVEFDSAogCQkJfCBBVFRSSUJVVEUKIAkJ CXwgQVVUSE9SSVpBVElPTgpAQCAtMTU5MjYsNiArMTU5OTYsNyBAQCBiYXJlX2xhYmVsX2tl eXdvcmQ6CiAJCQl8IFJFU0VUCiAJCQl8IFJFU1RBUlQKIAkJCXwgUkVTVFJJQ1QKKwkJCXwg UkVUVVJOCiAJCQl8IFJFVFVSTlMKIAkJCXwgUkVWT0tFCiAJCQl8IFJJR0hUCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggN2M1ZjdjNzc1Yi4uNTI4ZWYxMWNhMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwpAQCAtMTc2LDcgKzE3Niw2IEBAIHN0YXRpYyBpbnQJaW50ZXJhY3RpdmVfZ2V0Yyh2 b2lkKTsKIHN0YXRpYyBpbnQJU29ja2V0QmFja2VuZChTdHJpbmdJbmZvIGluQnVmKTsKIHN0 YXRpYyBpbnQJUmVhZENvbW1hbmQoU3RyaW5nSW5mbyBpbkJ1Zik7CiBzdGF0aWMgdm9pZCBm b3JiaWRkZW5faW5fd2FsX3NlbmRlcihjaGFyIGZpcnN0Y2hhcik7Ci1zdGF0aWMgTGlzdCAq cGdfcmV3cml0ZV9xdWVyeShRdWVyeSAqcXVlcnkpOwogc3RhdGljIGJvb2wgY2hlY2tfbG9n X3N0YXRlbWVudChMaXN0ICpzdG10X2xpc3QpOwogc3RhdGljIGludAllcnJkZXRhaWxfZXhl Y3V0ZShMaXN0ICpyYXdfcGFyc2V0cmVlX2xpc3QpOwogc3RhdGljIGludAllcnJkZXRhaWxf cGFyYW1zKFBhcmFtTGlzdEluZm8gcGFyYW1zKTsKQEAgLTc2MSw3ICs3NjAsNyBAQCBwZ19h bmFseXplX2FuZF9yZXdyaXRlX3BhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsCiAgKiBOb3Rl OiBxdWVyeSBtdXN0IGp1c3QgaGF2ZSBjb21lIGZyb20gdGhlIHBhcnNlciwgYmVjYXVzZSB3 ZSBkbyBub3QgZG8KICAqIEFjcXVpcmVSZXdyaXRlTG9ja3MoKSBvbiBpdC4KICAqLwotc3Rh dGljIExpc3QgKgorTGlzdCAqCiBwZ19yZXdyaXRlX3F1ZXJ5KFF1ZXJ5ICpxdWVyeSkKIHsK IAlMaXN0CSAgICpxdWVyeXRyZWVfbGlzdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwppbmRleCBjMmM2ZGYyYTRmLi42NmQ1M2YyZmZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC0xNzMsNiArMTczLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlMaXN0CSAg ICpvdXRlcl90bGlzdDsJLyogcmVmZXJlbnQgZm9yIE9VVEVSX1ZBUiBWYXJzICovCiAJTGlz dAkgICAqaW5uZXJfdGxpc3Q7CS8qIHJlZmVyZW50IGZvciBJTk5FUl9WQVIgVmFycyAqLwog CUxpc3QJICAgKmluZGV4X3RsaXN0OwkvKiByZWZlcmVudCBmb3IgSU5ERVhfVkFSIFZhcnMg Ki8KKwkvKiBTcGVjaWFsIG5hbWVzcGFjZSByZXByZXNlbnRpbmcgYSBmdW5jdGlvbiBzaWdu YXR1cmU6ICovCisJaW50CQkJbnVtYXJnczsKKwljaGFyCSAgKiphcmduYW1lczsKIH0gZGVw YXJzZV9uYW1lc3BhY2U7CiAKIC8qCkBAIC0zNDgsNiArMzUxLDcgQEAgc3RhdGljIGludAlw cmludF9mdW5jdGlvbl9hcmd1bWVudHMoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9j dHVwLAogCQkJCQkJCQkJIGJvb2wgcHJpbnRfdGFibGVfYXJncywgYm9vbCBwcmludF9kZWZh dWx0cyk7CiBzdGF0aWMgdm9pZCBwcmludF9mdW5jdGlvbl9yZXR0eXBlKFN0cmluZ0luZm8g YnVmLCBIZWFwVHVwbGUgcHJvY3R1cCk7CiBzdGF0aWMgdm9pZCBwcmludF9mdW5jdGlvbl90 cmZ0eXBlcyhTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApOworc3RhdGljIHZv aWQgcHJpbnRfZnVuY3Rpb25fc3FsYm9keShTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHBy b2N0dXApOwogc3RhdGljIHZvaWQgc2V0X3J0YWJsZV9uYW1lcyhkZXBhcnNlX25hbWVzcGFj ZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJCQkJCQkJIEJpdG1hcHNldCAq cmVsc191c2VkKTsKIHN0YXRpYyB2b2lkIHNldF9kZXBhcnNlX2Zvcl9xdWVyeShkZXBhcnNl X25hbWVzcGFjZSAqZHBucywgUXVlcnkgKnF1ZXJ5LApAQCAtMjgwMCw2ICsyODA0LDEzIEBA IHBnX2dldF9mdW5jdGlvbmRlZihQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCS8qIEFuZCBm aW5hbGx5IHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIC4uLiAqLworCXRtcCA9IFN5c0NhY2hl R2V0QXR0cihQUk9DT0lELCBwcm9jdHVwLCBBbnVtX3BnX3Byb2NfcHJvc3FsYm9keSwgJmlz bnVsbCk7CisJaWYgKHByb2MtPnByb2xhbmcgPT0gU1FMbGFuZ3VhZ2VJZCAmJiAhaXNudWxs KQorCXsKKwkJcHJpbnRfZnVuY3Rpb25fc3FsYm9keSgmYnVmLCBwcm9jdHVwKTsKKwl9CisJ ZWxzZQorCXsKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICJBUyAiKTsKIAogCXRt cCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELCBwcm9jdHVwLCBBbnVtX3BnX3Byb2NfcHJv YmluLCAmaXNudWxsKTsKQEAgLTI4MzEsNiArMjg0Miw3IEBAIHBnX2dldF9mdW5jdGlvbmRl ZihQR19GVU5DVElPTl9BUkdTKQogCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJmJ1ZiwgZHEu ZGF0YSwgZHEubGVuKTsKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHByb3NyYyk7 CiAJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmYnVmLCBkcS5kYXRhLCBkcS5sZW4pOworCX0K IAogCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICdcbicpOwogCkBAIC0zMjEzLDYgKzMy MjUsNzUgQEAgcGdfZ2V0X2Z1bmN0aW9uX2FyZ19kZWZhdWx0KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4dChzdHIpKTsKIH0KIAorc3RhdGlj IHZvaWQKK3ByaW50X2Z1bmN0aW9uX3NxbGJvZHkoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBs ZSBwcm9jdHVwKQoreworCWludAkJCW51bWFyZ3M7CisJT2lkCQkgICAqYXJndHlwZXM7CisJ Y2hhcgkgICoqYXJnbmFtZXM7CisJY2hhcgkgICAqYXJnbW9kZXM7CisJZGVwYXJzZV9uYW1l c3BhY2UgZHBucyA9IHswfTsKKwlEYXR1bQkJdG1wOworCWJvb2wJCWlzbnVsbDsKKwlOb2Rl CSAgICpuOworCisJbnVtYXJncyA9IGdldF9mdW5jX2FyZ19pbmZvKHByb2N0dXAsCisJCQkJ CQkJCSZhcmd0eXBlcywgJmFyZ25hbWVzLCAmYXJnbW9kZXMpOworCWRwbnMubnVtYXJncyA9 IG51bWFyZ3M7CisJZHBucy5hcmduYW1lcyA9IGFyZ25hbWVzOworCisJdG1wID0gU3lzQ2Fj aGVHZXRBdHRyKFBST0NPSUQsIHByb2N0dXAsIEFudW1fcGdfcHJvY19wcm9zcWxib2R5LCAm aXNudWxsKTsKKwlBc3NlcnQoIWlzbnVsbCk7CisJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0 dW1HZXRDU3RyaW5nKHRtcCkpOworCisJaWYgKElzQShuLCBMaXN0KSkKKwl7CisJCUxpc3Qg ICAgICAgKnN0bXRzOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQlzdG10cyA9IGxpbml0aWFs KGNhc3ROb2RlKExpc3QsIG4pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwg IkJFR0lOIEFUT01JQ1xuIik7CisKKwkJZm9yZWFjaChsYywgc3RtdHMpCisJCXsKKwkJCVF1 ZXJ5CSAgICpxdWVyeSA9IGxmaXJzdF9ub2RlKFF1ZXJ5LCBsYyk7CisKKwkJCWdldF9xdWVy eV9kZWYocXVlcnksIGJ1ZiwgbGlzdF9tYWtlMSgmZHBucyksIE5VTEwsIFBSRVRUWUZMQUdf SU5ERU5ULCBXUkFQX0NPTFVNTl9ERUZBVUxULCAxKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJzsnKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJ CX0KKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkVORCIpOworCX0KKwllbHNl CisJeworCQlnZXRfcXVlcnlfZGVmKGNhc3ROb2RlKFF1ZXJ5LCBuKSwgYnVmLCBsaXN0X21h a2UxKCZkcG5zKSwgTlVMTCwgUFJFVFRZRkxBR19JTkRFTlQsIFdSQVBfQ09MVU1OX0RFRkFV TFQsIDEpOworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdcbicpOworCX0KK30KKwor RGF0dW0KK3BnX2dldF9mdW5jdGlvbl9zcWxib2R5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ T2lkCQkJZnVuY2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7 CisJSGVhcFR1cGxlCXByb2N0dXA7CisKKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKworCS8q IExvb2sgdXAgdGhlIGZ1bmN0aW9uICovCisJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQ Uk9DT0lELCBPYmplY3RJZEdldERhdHVtKGZ1bmNpZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChwcm9jdHVwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXByaW50X2Z1bmN0aW9u X3NxbGJvZHkoJmJ1ZiwgcHJvY3R1cCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUocHJvY3R1cCk7 CisKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChidWYuZGF0YSkpOworfQor CiAKIC8qCiAgKiBkZXBhcnNlX2V4cHJlc3Npb24JCQktIEdlbmVyYWwgdXRpbGl0eSBmb3Ig ZGVwYXJzaW5nIGV4cHJlc3Npb25zCkBAIC01NDE0LDcgKzU0OTUsMTAgQEAgZ2V0X2Jhc2lj X3NlbGVjdF9xdWVyeShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwK IAkvKgogCSAqIEJ1aWxkIHVwIHRoZSBxdWVyeSBzdHJpbmcgLSBmaXJzdCB3ZSBzYXkgU0VM RUNUCiAJICovCi0JYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1QiKTsKKwlp ZiAocXVlcnktPmlzUmV0dXJuKQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlJF VFVSTiIpOworCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1Qi KTsKIAogCS8qIEFkZCB0aGUgRElTVElOQ1QgY2xhdXNlIGlmIGdpdmVuICovCiAJaWYgKHF1 ZXJ5LT5kaXN0aW5jdENsYXVzZSAhPSBOSUwpCkBAIC03NTQ2LDYgKzc2MzAsMjYgQEAgZ2V0 X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJ cmV0dXJuOwogCX0KIAorCS8qCisJICogSWYgaXQncyBhbiBleHRlcm5hbCBwYXJhbWV0ZXIs IHNlZSBpZiB0aGUgb3V0ZXJtb3N0IG5hbWVzcGFjZSBwcm92aWRlcworCSAqIGZ1bmN0aW9u IGFyZ3VtZW50IG5hbWVzLgorCSAqLworCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFN X0VYVEVSTikKKwl7CisJCWRwbnMgPSBsZmlyc3QobGlzdF90YWlsKGNvbnRleHQtPm5hbWVz cGFjZXMpKTsKKwkJaWYgKGRwbnMtPmFyZ25hbWVzKQorCQl7CisJCQljaGFyCSAgICphcmdu YW1lID0gZHBucy0+YXJnbmFtZXNbcGFyYW0tPnBhcmFtaWQgLSAxXTsKKworCQkJaWYgKGFy Z25hbWUpCisJCQl7CisJCQkJLy8gVE9ETzogcXVhbGlmeSB3aXRoIGZ1bmN0aW9uIG5hbWUg aWYgbmVjZXNzYXJ5CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIlcyIs IHF1b3RlX2lkZW50aWZpZXIoYXJnbmFtZSkpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQor CX0KKwogCS8qCiAJICogTm90IFBBUkFNX0VYRUMsIG9yIGNvdWxkbid0IGZpbmQgcmVmZXJl bnQ6IGp1c3QgcHJpbnQgJE4uCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBkYzFkNDFkZDhk Li44YzBiNDZiMGQyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTExODc5LDYgKzExODc5LDcgQEAg ZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVuY0luZm8gKmZpbmZvKQogCWNoYXIJICAgKnBy b3JldHNldDsKIAljaGFyCSAgICpwcm9zcmM7CiAJY2hhcgkgICAqcHJvYmluOworCWNoYXIJ ICAgKnByb3NxbGJvZHk7CiAJY2hhcgkgICAqZnVuY2FyZ3M7CiAJY2hhcgkgICAqZnVuY2lh cmdzOwogCWNoYXIJICAgKmZ1bmNyZXN1bHQ7CkBAIC0xMTkyNSw3ICsxMTkyNiw3IEBAIGR1 bXBGdW5jKEFyY2hpdmUgKmZvdXQsIEZ1bmNJbmZvICpmaW5mbykKIAkJCQkJCSAicHJvdm9s YXRpbGUsXG4iCiAJCQkJCQkgInByb2lzc3RyaWN0LFxuIgogCQkJCQkJICJwcm9zZWNkZWYs XG4iCi0JCQkJCQkgIihTRUxFQ1QgbGFubmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfbGFuZ3Vh Z2UgV0hFUkUgb2lkID0gcHJvbGFuZykgQVMgbGFubmFtZSxcbiIpOworCQkJCQkJICJsYW5u YW1lLFxuIik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA4MDMwMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC0xMTk0NSw5ICsxMTk0Niw5IEBAIGR1bXBG dW5jKEFyY2hpdmUgKmZvdXQsIEZ1bmNJbmZvICpmaW5mbykKIAkJICogcGdfZ2V0X2Z1bmN0 aW9uX3Jlc3VsdCBpbnN0ZWFkIG9mIGV4YW1pbmluZyBwcm9hbGxhcmd0eXBlcyBldGMuCiAJ CSAqLwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgInBnX2NhdGFs b2cucGdfZ2V0X2Z1bmN0aW9uX2FyZ3VtZW50cyhvaWQpIEFTIGZ1bmNhcmdzLFxuIgotCQkJ CQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1lbnRzKG9p ZCkgQVMgZnVuY2lhcmdzLFxuIgotCQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rp b25fcmVzdWx0KG9pZCkgQVMgZnVuY3Jlc3VsdCxcbiIpOworCQkJCQkJCSAicGdfY2F0YWxv Zy5wZ19nZXRfZnVuY3Rpb25fYXJndW1lbnRzKHAub2lkKSBBUyBmdW5jYXJncyxcbiIKKwkJ CQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhw Lm9pZCkgQVMgZnVuY2lhcmdzLFxuIgorCQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZnVu Y3Rpb25fcmVzdWx0KHAub2lkKSBBUyBmdW5jcmVzdWx0LFxuIik7CiAJfQogCWVsc2UgaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gODAxMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LApAQCAtMTE5OTAsMjEgKzExOTkxLDM5IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZv dXQsIEZ1bmNJbmZvICpmaW5mbykKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEy MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJwcm9zdXBw b3J0XG4iKTsKKwkJCQkJCQkgInByb3N1cHBvcnQsXG4iKTsKIAllbHNlCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiJy0nIEFTIHByb3N1cHBvcnRcbiIpOwor CQkJCQkJCSAiJy0nIEFTIHByb3N1cHBvcnQsXG4iKTsKKworCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE0MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJ CQkJICJDQVNFIFdIRU4gcHJvc3JjIElTIE5VTEwgQU5EIGxhbm5hbWUgPSAnc3FsJyBUSEVO IHBnX2dldF9mdW5jdGlvbl9zcWxib2R5KHAub2lkKSBFTkQgQVMgcHJvc3FsYm9keVxuIik7 CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIk5VTEwg QVMgcHJvc3FsYm9keVxuIik7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKLQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX3Byb2MgIgotCQkJCQkgICJXSEVSRSBvaWQgPSAnJXUn OjpwZ19jYXRhbG9nLm9pZCIsCisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wcm9jIHAs IHBnX2NhdGFsb2cucGdfbGFuZ3VhZ2UgbFxuIgorCQkJCQkgICJXSEVSRSBwLm9pZCA9ICcl dSc6OnBnX2NhdGFsb2cub2lkICIKKwkJCQkJICAiQU5EIGwub2lkID0gcC5wcm9sYW5nIiwK IAkJCQkJICBmaW5mby0+ZG9iai5jYXRJZC5vaWQpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1 ZXJ5Rm9yU2luZ2xlUm93KGZvdXQsIHF1ZXJ5LT5kYXRhKTsKIAogCXByb3JldHNldCA9IFBR Z2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAicHJvcmV0c2V0IikpOwotCXByb3Ny YyA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAicHJvc3JjIikpOwotCXBy b2JpbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAicHJvYmluIikpOwor CWlmIChQUWdldGlzbnVsbChyZXMsIDAsIFBRZm51bWJlcihyZXMsICJwcm9zcWxib2R5Iikp KQorCXsKKwkJcHJvc3JjID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJw cm9zcmMiKSk7CisJCXByb2JpbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVz LCAicHJvYmluIikpOworCQlwcm9zcWxib2R5ID0gTlVMTDsKKwl9CisJZWxzZQorCXsKKwkJ cHJvc3JjID0gTlVMTDsKKwkJcHJvYmluID0gTlVMTDsKKwkJcHJvc3FsYm9keSA9IFBRZ2V0 dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAicHJvc3FsYm9keSIpKTsKKwl9CiAJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gODA0MDApCiAJewogCQlmdW5jYXJncyA9IFBRZ2V0 dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAiZnVuY2FyZ3MiKSk7CkBAIC0xMjA0MSw3 ICsxMjA2MCwxMSBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8p CiAJICogdmVyc2lvbnMgd291bGQgc2V0IGl0IHRvICItIi4gIFRoZXJlIGFyZSBubyBrbm93 biBjYXNlcyBpbiB3aGljaCBwcm9zcmMKIAkgKiBpcyB1bnVzZWQsIHNvIHRoZSB0ZXN0cyBi ZWxvdyBmb3IgIi0iIGFyZSBwcm9iYWJseSB1c2VsZXNzLgogCSAqLwotCWlmIChwcm9iaW5b MF0gIT0gJ1wwJyAmJiBzdHJjbXAocHJvYmluLCAiLSIpICE9IDApCisJaWYgKHByb3NxbGJv ZHkpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihhc1BhcnQsIHByb3NxbGJvZHkpOwor CX0KKwllbHNlIGlmIChwcm9iaW5bMF0gIT0gJ1wwJyAmJiBzdHJjbXAocHJvYmluLCAiLSIp ICE9IDApCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihhc1BhcnQsICJBUyAiKTsKIAkJ YXBwZW5kU3RyaW5nTGl0ZXJhbEFIKGFzUGFydCwgcHJvYmluLCBmb3V0KTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK aW5kZXggMDdkNjQwMDIxYy4uMzE5YzM0ZmYyYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTUwNSwxMSAr NTA1LDE4IEBAIGRlc2NyaWJlRnVuY3Rpb25zKGNvbnN0IGNoYXIgKmZ1bmN0eXBlcywgY29u c3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICIsXG4gIik7CiAJCXByaW50QUNMQ29sdW1uKCZidWYsICJwLnByb2Fj bCIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJICAiLFxuIGwubGFubmFt ZSBhcyBcIiVzXCIiCi0JCQkJCQkgICIsXG4gcC5wcm9zcmMgYXMgXCIlc1wiIgorCQkJCQkJ ICAiLFxuIGwubGFubmFtZSBhcyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkxh bmd1YWdlIikpOworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDApCisJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIixcbiBDT0FMRVNDRShwLnByb3NyYywgcGdf Y2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25fc3FsYm9keShwLm9pZCkpIGFzIFwiJXNcIiIsCisJ CQkJCQkJICBnZXR0ZXh0X25vb3AoIlNvdXJjZSBjb2RlIikpOworCQllbHNlCisJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIixcbiBwLnByb3NyYyBhcyBcIiVzXCIi LAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTb3VyY2UgY29kZSIpKTsKKwkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiBwZ19jYXRhbG9nLm9ial9kZXNjcmlwdGlv bihwLm9pZCwgJ3BnX3Byb2MnKSBhcyBcIiVzXCIiLAotCQkJCQkJICBnZXR0ZXh0X25vb3Ao Ikxhbmd1YWdlIiksCi0JCQkJCQkgIGdldHRleHRfbm9vcCgiU291cmNlIGNvZGUiKSwKIAkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJEZXNjcmlwdGlvbiIpKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKaW5k ZXggMDhkZmZkZTFiYS4uZWUzNDQ2M2U2NyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL3Bz cWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKQEAgLTY0NSwxMCArNjQ1 LDExIEBAIG90aGVyCQkJLgogCiAiOyIJCQkJewogCQkJCQlFQ0hPOwotCQkJCQlpZiAoY3Vy X3N0YXRlLT5wYXJlbl9kZXB0aCA9PSAwKQorCQkJCQlpZiAoY3VyX3N0YXRlLT5wYXJlbl9k ZXB0aCA9PSAwICYmIGN1cl9zdGF0ZS0+YmVnaW5fZGVwdGggPT0gMCkKIAkJCQkJewogCQkJ CQkJLyogVGVybWluYXRlIGxleGluZyB0ZW1wb3JhcmlseSAqLwogCQkJCQkJY3VyX3N0YXRl LT5zdGFydF9zdGF0ZSA9IFlZX1NUQVJUOworCQkJCQkJY3VyX3N0YXRlLT5pZGVudGlmaWVy X2NvdW50ID0gMDsKIAkJCQkJCXJldHVybiBMRVhSRVNfU0VNSTsKIAkJCQkJfQogCQkJCX0K QEAgLTY2MSw2ICs2NjIsOCBAQCBvdGhlcgkJCS4KICJcXCJbOzpdCQl7CiAJCQkJCS8qIEZv cmNlIGEgc2VtaS1jb2xvbiBvciBjb2xvbiBpbnRvIHRoZSBxdWVyeSBidWZmZXIgKi8KIAkJ CQkJcHNxbHNjYW5fZW1pdChjdXJfc3RhdGUsIHl5dGV4dCArIDEsIDEpOworCQkJCQlpZiAo eXl0ZXh0WzFdID09ICc7JykKKwkJCQkJCWN1cl9zdGF0ZS0+aWRlbnRpZmllcl9jb3VudCA9 IDA7CiAJCQkJfQogCiAiXFwiCQkJewpAQCAtODY3LDYgKzg3MCwxNyBAQCBvdGhlcgkJCS4K IAogCiB7aWRlbnRpZmllcn0JeworCQkJCQljdXJfc3RhdGUtPmlkZW50aWZpZXJfY291bnQr KzsKKwkJCQkJaWYgKHBnX3N0cmNhc2VjbXAoeXl0ZXh0LCAiYmVnaW4iKSA9PSAwKQorCQkJ CQl7CisJCQkJCQlpZiAoY3VyX3N0YXRlLT5pZGVudGlmaWVyX2NvdW50ID4gMSkKKwkJCQkJ CQljdXJfc3RhdGUtPmJlZ2luX2RlcHRoKys7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAocGdf c3RyY2FzZWNtcCh5eXRleHQsICJlbmQiKSA9PSAwKQorCQkJCQl7CisJCQkJCQlpZiAoY3Vy X3N0YXRlLT5iZWdpbl9kZXB0aCA+IDApCisJCQkJCQkJY3VyX3N0YXRlLT5iZWdpbl9kZXB0 aC0tOworCQkJCQl9CiAJCQkJCUVDSE87CiAJCQkJfQogCkBAIC0xMDU0LDYgKzEwNjgsMTEg QEAgcHNxbF9zY2FuKFBzcWxTY2FuU3RhdGUgc3RhdGUsCiAJCQkJCQlyZXN1bHQgPSBQU0NB Tl9JTkNPTVBMRVRFOwogCQkJCQkJKnByb21wdCA9IFBST01QVF9QQVJFTjsKIAkJCQkJfQor CQkJCQlpZiAoc3RhdGUtPmJlZ2luX2RlcHRoID4gMCkKKwkJCQkJeworCQkJCQkJcmVzdWx0 ID0gUFNDQU5fSU5DT01QTEVURTsKKwkJCQkJCSpwcm9tcHQgPSBQUk9NUFRfQ09OVElOVUU7 CisJCQkJCX0KIAkJCQkJZWxzZSBpZiAocXVlcnlfYnVmLT5sZW4gPiAwKQogCQkJCQl7CiAJ CQkJCQlyZXN1bHQgPSBQU0NBTl9FT0w7CkBAIC0xMTcwLDYgKzExODksOCBAQCBwc3FsX3Nj YW5fcmVzZXQoUHNxbFNjYW5TdGF0ZSBzdGF0ZSkKIAlpZiAoc3RhdGUtPmRvbHFzdGFydCkK IAkJZnJlZShzdGF0ZS0+ZG9scXN0YXJ0KTsKIAlzdGF0ZS0+ZG9scXN0YXJ0ID0gTlVMTDsK KwlzdGF0ZS0+aWRlbnRpZmllcl9jb3VudCA9IDA7CisJc3RhdGUtPmJlZ2luX2RlcHRoID0g MDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDMzZGFjZmQzNDAu LjA2MTFlN2M1NTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMzY5Miw2ICsz NjkyLDEwIEBACiAgIHByb25hbWUgPT4gJ3BnX2dldF9mdW5jdGlvbl9hcmdfZGVmYXVsdCcs IHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5 cGVzID0+ICdvaWQgaW50NCcsCiAgIHByb3NyYyA9PiAncGdfZ2V0X2Z1bmN0aW9uX2FyZ19k ZWZhdWx0JyB9LAoreyBvaWQgPT4gJzk3MDQnLCBkZXNjciA9PiAnZnVuY3Rpb24gU1FMIGJv ZHknLAorICBwcm9uYW1lID0+ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScsIHByb3ZvbGF0 aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdv aWQnLAorICBwcm9zcmMgPT4gJ3BnX2dldF9mdW5jdGlvbl9zcWxib2R5JyB9LAogCiB7IG9p ZCA9PiAnMTY4NicsIGRlc2NyID0+ICdsaXN0IG9mIFNRTCBrZXl3b3JkcycsCiAgIHByb25h bWUgPT4gJ3BnX2dldF9rZXl3b3JkcycsIHByb2Nvc3QgPT4gJzEwJywgcHJvcm93cyA9PiAn NTAwJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKaW5kZXggZjhlNmRlYTIyZC4uZmUyOTdiOWZm MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKQEAgLTExMiwxMSArMTEyLDE0IEBAIENBVEFM T0cocGdfcHJvYywxMjU1LFByb2NlZHVyZVJlbGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJ X1JPV1RZUEVfT0lEKDgxLFByb2NlCiAJT2lkCQkJcHJvdHJmdHlwZXNbMV0gQktJX0RFRkFV TFQoX251bGxfKTsKIAogCS8qIHByb2NlZHVyZSBzb3VyY2UgdGV4dCAqLwotCXRleHQJCXBy b3NyYyBCS0lfRk9SQ0VfTk9UX05VTEw7CisJdGV4dAkJcHJvc3JjOwogCiAJLyogc2Vjb25k YXJ5IHByb2NlZHVyZSBpbmZvIChjYW4gYmUgTlVMTCkgKi8KIAl0ZXh0CQlwcm9iaW4gQktJ X0RFRkFVTFQoX251bGxfKTsKIAorCS8qIHByZS1wYXJzZWQgU1FMIGZ1bmN0aW9uIGJvZHkg Ki8KKwlwZ19ub2RlX3RyZWUgcHJvc3FsYm9keSBCS0lfREVGQVVMVChfbnVsbF8pOworCiAJ LyogcHJvY2VkdXJlLWxvY2FsIEdVQyBzZXR0aW5ncyAqLwogCXRleHQJCXByb2NvbmZpZ1sx XSBCS0lfREVGQVVMVChfbnVsbF8pOwogCkBAIC0xOTQsNiArMTk3LDcgQEAgZXh0ZXJuIE9i amVjdEFkZHJlc3MgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUs CiAJCQkJCQkJCQkgT2lkIGxhbmd1YWdlVmFsaWRhdG9yLAogCQkJCQkJCQkJIGNvbnN0IGNo YXIgKnByb3NyYywKIAkJCQkJCQkJCSBjb25zdCBjaGFyICpwcm9iaW4sCisJCQkJCQkJCQkg Tm9kZSAqcHJvc3FsYm9keSwKIAkJCQkJCQkJCSBjaGFyIHByb2tpbmQsCiAJCQkJCQkJCQkg Ym9vbCBzZWN1cml0eV9kZWZpbmVyLAogCQkJCQkJCQkJIGJvb2wgaXNMZWFrUHJvb2YsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDdhMDc5ZWYwN2YuLmEzMmNmYmE0MjEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oCkBAIC02OCw5ICs2OCwxMSBAQCBleHRlcm4gdm9pZCBpbnRl cnByZXRfZnVuY3Rpb25fcGFyYW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCQkJCQkgIE9pZCBsYW5ndWFnZU9pZCwKIAkJCQkJCQkJCQkJICBPYmplY3RUeXBlIG9i anR5cGUsCiAJCQkJCQkJCQkJCSAgb2lkdmVjdG9yICoqcGFyYW1ldGVyVHlwZXMsCisJCQkJ CQkJCQkJCSAgTGlzdCAqKnBhcmFtZXRlclR5cGVzX2xpc3QsCiAJCQkJCQkJCQkJCSAgQXJy YXlUeXBlICoqYWxsUGFyYW1ldGVyVHlwZXMsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBlICoq cGFyYW1ldGVyTW9kZXMsCiAJCQkJCQkJCQkJCSAgQXJyYXlUeXBlICoqcGFyYW1ldGVyTmFt ZXMsCisJCQkJCQkJCQkJCSAgTGlzdCAqKmluUGFyYW1ldGVyTmFtZXNfbGlzdCwKIAkJCQkJ CQkJCQkJICBMaXN0ICoqcGFyYW1ldGVyRGVmYXVsdHMsCiAJCQkJCQkJCQkJCSAgT2lkICp2 YXJpYWRpY0FyZ1R5cGUsCiAJCQkJCQkJCQkJCSAgT2lkICpyZXF1aXJlZFJlc3VsdFR5cGUp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZnVuY3Rpb25zLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaAppbmRleCBhMGRiMjRiZGU2Li4zMTExZmY4 MjRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9mdW5jdGlvbnMuaApAQCAtMjAsNiArMjAsMjEgQEAK IC8qIFRoaXMgc3RydWN0IGlzIGtub3duIG9ubHkgd2l0aGluIGV4ZWN1dG9yL2Z1bmN0aW9u cy5jICovCiB0eXBlZGVmIHN0cnVjdCBTUUxGdW5jdGlvblBhcnNlSW5mbyAqU1FMRnVuY3Rp b25QYXJzZUluZm9QdHI7CiAKKy8qCisgKiBEYXRhIHN0cnVjdHVyZSBuZWVkZWQgYnkgdGhl IHBhcnNlciBjYWxsYmFjayBob29rcyB0byByZXNvbHZlIHBhcmFtZXRlcgorICogcmVmZXJl bmNlcyBkdXJpbmcgcGFyc2luZyBvZiBhIFNRTCBmdW5jdGlvbidzIGJvZHkuICBUaGlzIGlz IHNlcGFyYXRlIGZyb20KKyAqIFNRTEZ1bmN0aW9uQ2FjaGUgc2luY2Ugd2Ugc29tZXRpbWVz IGRvIHBhcnNpbmcgc2VwYXJhdGVseSBmcm9tIGV4ZWN1dGlvbi4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgU1FMRnVuY3Rpb25QYXJzZUluZm8KK3sKKwljaGFyCSAgICpmbmFtZTsJCQkvKiBm dW5jdGlvbidzIG5hbWUgKi8KKwlpbnQJCQluYXJnczsJCQkvKiBudW1iZXIgb2YgaW5wdXQg YXJndW1lbnRzICovCisJT2lkCQkgICAqYXJndHlwZXM7CQkvKiByZXNvbHZlZCB0eXBlcyBv ZiBpbnB1dCBhcmd1bWVudHMgKi8KKwljaGFyCSAgKiphcmduYW1lczsJCS8qIG5hbWVzIG9m IGlucHV0IGFyZ3VtZW50czsgTlVMTCBpZiBub25lICovCisJLyogTm90ZSB0aGF0IGFyZ25h bWVzW2ldIGNhbiBiZSBOVUxMLCBpZiBzb21lIGFyZ3MgYXJlIHVubmFtZWQgKi8KKwlPaWQJ CQljb2xsYXRpb247CQkvKiBmdW5jdGlvbidzIGlucHV0IGNvbGxhdGlvbiwgaWYga25vd24g Ki8KK30JCQlTUUxGdW5jdGlvblBhcnNlSW5mbzsKKwogZXh0ZXJuIERhdHVtIGZtZ3Jfc3Fs KFBHX0ZVTkNUSU9OX0FSR1MpOwogCiBleHRlcm4gU1FMRnVuY3Rpb25QYXJzZUluZm9QdHIg cHJlcGFyZV9zcWxfZm5fcGFyc2VfaW5mbyhIZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nhbl9pbnQuaCBiL3NyYy9p bmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCmluZGV4IDMxMWY4MDM5NGEuLmZiOGY1 OGFhMjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5o CisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oCkBAIC0xMTQsNiAr MTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUHNxbFNjYW5TdGF0ZURhdGEKIAlpbnQJCQlwYXJl bl9kZXB0aDsJLyogZGVwdGggb2YgbmVzdGluZyBpbiBwYXJlbnRoZXNlcyAqLwogCWludAkJ CXhjZGVwdGg7CQkvKiBkZXB0aCBvZiBuZXN0aW5nIGluIHNsYXNoLXN0YXIgY29tbWVudHMg Ki8KIAljaGFyCSAgICpkb2xxc3RhcnQ7CQkvKiBjdXJyZW50ICRmb28kIHF1b3RlIHN0YXJ0 IHN0cmluZyAqLworCWludAkJCWlkZW50aWZpZXJfY291bnQ7CS8qIGlkZW50aWZpZXJzIHNp bmNlIHN0YXJ0IG9mIHN0YXRlbWVudCAqLworCWludAkJCWJlZ2luX2RlcHRoOwkvKiBkZXB0 aCBvZiBiZWdpbi9lbmQgcm91dGluZSBib2R5IGJsb2NrcyAqLwogCiAJLyoKIAkgKiBDYWxs YmFjayBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHByb2dyYW0gbWFraW5nIHVzZSBvZiB0 aGUgbGV4ZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA3ZGRkOGMwMTFiLi5mNTcxNmEzZWIwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKQEAgLTMxNSw2ICszMTUsNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRh ZwogCVRfRGVsZXRlU3RtdCwKIAlUX1VwZGF0ZVN0bXQsCiAJVF9TZWxlY3RTdG10LAorCVRf UmV0dXJuU3RtdCwKIAlUX0FsdGVyVGFibGVTdG10LAogCVRfQWx0ZXJUYWJsZUNtZCwKIAlU X0FsdGVyRG9tYWluU3RtdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkMWY5ZWYy OWNhLi4xMTdhOTI1ZmQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMzIsNiAr MTMyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAlib29sCQloYXNGb3JVcGRhdGU7CS8q IEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgd2FzIHNwZWNpZmllZCAqLwogCWJvb2wJCWhhc1Jv d1NlY3VyaXR5OyAvKiByZXdyaXRlciBoYXMgYXBwbGllZCBzb21lIFJMUyBwb2xpY3kgKi8K IAorCWJvb2wJCWlzUmV0dXJuOwkJLyogaXMgYSBSRVRVUk4gc3RhdGVtZW50ICovCisKIAlM aXN0CSAgICpjdGVMaXN0OwkJLyogV0lUSCBsaXN0IChvZiBDb21tb25UYWJsZUV4cHIncykg Ki8KIAogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIHJhbmdlIHRhYmxlIGVudHJp ZXMgKi8KQEAgLTE2NzUsNiArMTY3NywxNiBAQCB0eXBlZGVmIHN0cnVjdCBTZXRPcGVyYXRp b25TdG10CiB9IFNldE9wZXJhdGlvblN0bXQ7CiAKIAorLyoKKyAqIFJFVFVSTiBzdGF0ZW1l bnQgKGluc2lkZSBTUUwgZnVuY3Rpb24gYm9keSkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmV0 dXJuU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJTm9kZQkgICAqcmV0dXJudmFsOworfSBS ZXR1cm5TdG10OworCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJCU90aGVyIFN0 YXRlbWVudHMgKG5vIG9wdGltaXphdGlvbnMgcmVxdWlyZWQpCiAgKgpAQCAtMjgzOCw2ICsy ODUwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlRnVuY3Rpb25TdG10CiAJTGlzdAkgICAq cGFyYW1ldGVyczsJCS8qIGEgbGlzdCBvZiBGdW5jdGlvblBhcmFtZXRlciAqLwogCVR5cGVO YW1lICAgKnJldHVyblR5cGU7CQkvKiB0aGUgcmV0dXJuIHR5cGUgKi8KIAlMaXN0CSAgICpv cHRpb25zOwkJLyogYSBsaXN0IG9mIERlZkVsZW0gKi8KKwlOb2RlCSAgICpzcWxfYm9keTsK IH0gQ3JlYXRlRnVuY3Rpb25TdG10OwogCiB0eXBlZGVmIGVudW0gRnVuY3Rpb25QYXJhbWV0 ZXJNb2RlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggNzFkY2RmMjg4OS4uMzYzMTdhMTRkYiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaApAQCAtNDgsNiArNDgsNyBAQCBQR19LRVlXT1JEKCJhc3Nl cnRpb24iLCBBU1NFUlRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImFzc2lnbm1lbnQiLCBBU1NJR05NRU5ULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJhc3ltbWV0cmljIiwgQVNZTU1FVFJJQywgUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImF0IiwgQVQsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImF0b21pYyIsIEFUT01J QywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiYXR0YWNo IiwgQVRUQUNILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJhdHRyaWJ1dGUiLCBBVFRSSUJVVEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImF1dGhvcml6YXRpb24iLCBBVVRIT1JJWkFUSU9OLCBUWVBFX0ZV TkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMzQ0LDYgKzM0NSw3IEBAIFBHX0tF WVdPUkQoInJlcGxpY2EiLCBSRVBMSUNBLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJyZXNldCIsIFJFU0VULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZXN0YXJ0IiwgUkVTVEFSVCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVzdHJpY3QiLCBSRVNUUklDVCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicmV0dXJuIiwg UkVUVVJOLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJy ZXR1cm5pbmciLCBSRVRVUk5JTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdf S0VZV09SRCgicmV0dXJucyIsIFJFVFVSTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInJldm9rZSIsIFJFVk9LRSwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5o IGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IGJkMzA2MDdiMDcuLmU2MjZj OGVhZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9z cmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBl bnVtCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGxvZ19zdGF0ZW1lbnQ7CiAKIGV4dGVybiBM aXN0ICpwZ19wYXJzZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpOworZXh0ZXJu IExpc3QgKnBnX3Jld3JpdGVfcXVlcnkoUXVlcnkgKnF1ZXJ5KTsKIGV4dGVybiBMaXN0ICpw Z19hbmFseXplX2FuZF9yZXdyaXRlKFJhd1N0bXQgKnBhcnNldHJlZSwKIAkJCQkJCQkJCWNv bnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCU9pZCAqcGFyYW1UeXBlcywgaW50 IG51bVBhcmFtcywKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLmFkZG9ucyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmFkZG9ucwpp bmRleCAzMDAzODFlYWFkLi4wNDQxNTYxYzUyIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3ByZXByb2MvZWNwZy5hZGRvbnMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9w cmVwcm9jL2VjcGcuYWRkb25zCkBAIC04Nyw2ICs4NywxMiBAQCBFQ1BHOiBzdG10VHJhbnNh Y3Rpb25TdG10IGJsb2NrCiAJCXdoZW5ldmVyX2FjdGlvbigyKTsKIAkJZnJlZSgkMSk7CiAJ fQorRUNQRzogdG9wbGV2ZWxfc3RtdFRyYW5zYWN0aW9uU3RtdExlZ2FjeSBibG9jaworCXsK KwkJZnByaW50ZihiYXNlX3l5b3V0LCAieyBFQ1BHdHJhbnMoX19MSU5FX18sICVzLCBcIiVz XCIpOyIsIGNvbm5lY3Rpb24gPyBjb25uZWN0aW9uIDogIk5VTEwiLCAkMSk7CisJCXdoZW5l dmVyX2FjdGlvbigyKTsKKwkJZnJlZSgkMSk7CisJfQogRUNQRzogc3RtdFZpZXdTdG10IHJ1 bGUKIAl8IEVDUEdBbGxvY2F0ZURlc2NyCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJl cHJvYy9lY3BnLnRyYWlsZXIKaW5kZXggMGU0YTA0MTM5My4uYmNhYmY4ODM0MSAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgorKysgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFpbGVyCkBAIC00LDggKzQsOCBA QCBzdGF0ZW1lbnRzOiAvKkVNUFRZKi8KIAkJCQl8IHN0YXRlbWVudHMgc3RhdGVtZW50CiAJ CTsKIAotc3RhdGVtZW50OiBlY3Bnc3RhcnQgYXQgc3RtdCAnOycgeyBjb25uZWN0aW9uID0g TlVMTDsgfQotCQkJCXwgZWNwZ3N0YXJ0IHN0bXQgJzsnCitzdGF0ZW1lbnQ6IGVjcGdzdGFy dCBhdCB0b3BsZXZlbF9zdG10ICc7JyB7IGNvbm5lY3Rpb24gPSBOVUxMOyB9CisJCQkJfCBl Y3Bnc3RhcnQgdG9wbGV2ZWxfc3RtdCAnOycKIAkJCQl8IGVjcGdzdGFydCBFQ1BHVmFyRGVj bGFyYXRpb24KIAkJCQl7CiAJCQkJCWZwcmludGYoYmFzZV95eW91dCwgIiVzIiwgJDIpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfZnVuY3Rpb25f My5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl8zLm91 dAppbmRleCBjZTUwOGFlMWRjLi5kYmQ2MzU4ZmZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl8zLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9mdW5jdGlvbl8zLm91dApAQCAtMjU1LDYgKzI1NSwx NTEgQEAgU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfRl8yJzo6cmVncHJv Yyk7CiAgCiAoMSByb3cpCiAKKy0tCistLSBTUUwtc3RhbmRhcmQgYm9keQorLS0KK0NSRUFU RSBGVU5DVElPTiBmdW5jdGVzdF9TXzEoYSB0ZXh0LCBiIGRhdGUpIFJFVFVSTlMgYm9vbGVh bgorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiBhID0gJ2FiY2QnIEFORCBiID4gJzIw MDEtMDEtMDEnOworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1NfMihhIHRleHRbXSkgUkVU VVJOUyBpbnQKKyAgICBSRVRVUk4gYVsxXTo6aW50OworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0 ZXN0X1NfMygpIFJFVFVSTlMgYm9vbGVhbgorICAgIFJFVFVSTiBmYWxzZTsKK0NSRUFURSBG VU5DVElPTiBmdW5jdGVzdF9TXzNhKCkgUkVUVVJOUyBib29sZWFuCisgICAgQkVHSU4gQVRP TUlDCisgICAgICAgIFJFVFVSTiBmYWxzZTsKKyAgICBFTkQ7CitDUkVBVEUgRlVOQ1RJT04g ZnVuY3Rlc3RfU18xMChhIHRleHQsIGIgZGF0ZSkgUkVUVVJOUyBib29sZWFuCisgICAgTEFO R1VBR0UgU1FMCisgICAgQkVHSU4gQVRPTUlDCisgICAgICAgIFNFTEVDVCBhID0gJ2FiY2Qn IEFORCBiID4gJzIwMDEtMDEtMDEnOworICAgIEVORDsKK0NSRUFURSBGVU5DVElPTiBmdW5j dGVzdF9TXzEzKCkgUkVUVVJOUyBib29sZWFuCisgICAgQkVHSU4gQVRPTUlDCisgICAgICAg IFNFTEVDVCAxOworICAgICAgICBTRUxFQ1QgZmFsc2U7CisgICAgRU5EOworLS0gcG9seW1v cnBoaWMgYXJndW1lbnRzIG5vdCBhbGxvd2VkIGluIHRoaXMgZm9ybQorQ1JFQVRFIEZVTkNU SU9OIGZ1bmN0ZXN0X1NfeHgoeCBhbnlhcnJheSkgUkVUVVJOUyBhbnllbGVtZW50CisgICAg TEFOR1VBR0UgU1FMCisgICAgUkVUVVJOIHhbMV07CitFUlJPUjogIFNRTCBmdW5jdGlvbiB3 aXRoIHVucXVvdGVkIGZ1bmN0aW9uIGJvZHkgY2Fubm90IGhhdmUgcG9seW1vcnBoaWMgYXJn dW1lbnRzCitTRUxFQ1QgZnVuY3Rlc3RfU18xKCdhYmNkJywgJzIwMjAtMDEtMDEnKTsKKyBm dW5jdGVzdF9zXzEgCistLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGZ1 bmN0ZXN0X1NfMihBUlJBWVsnMScsICcyJywgJzMnXSk7CisgZnVuY3Rlc3Rfc18yIAorLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGZ1bmN0ZXN0 X1NfMygpOworIGZ1bmN0ZXN0X3NfMyAKKy0tLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQor CitTRUxFQ1QgZnVuY3Rlc3RfU18xMCgnYWJjZCcsICcyMDIwLTAxLTAxJyk7CisgZnVuY3Rl c3Rfc18xMCAKKy0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGZ1bmN0 ZXN0X1NfMTMoKTsKKyBmdW5jdGVzdF9zXzEzIAorLS0tLS0tLS0tLS0tLS0tCisgZgorKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzEnOjpyZWdw cm9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9mdW5jdGlvbmRlZiAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVtcF9mdW5jX3Rlc3QuZnVuY3Rlc3Rfc18xKGEgdGV4 dCwgYiBkYXRlKSsKKyAgUkVUVVJOUyBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBMQU5HVUFHRSBzcWwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg IFJFVFVSTiAoKGEgPSAnYWJjZCc6OnRleHQpIEFORCAoYiA+ICcwMS0wMS0yMDAxJzo6ZGF0 ZSkpICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93KQorCitT RUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzInOjpyZWdwcm9jKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9mdW5jdGlvbmRlZiAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g dGVtcF9mdW5jX3Rlc3QuZnVuY3Rlc3Rfc18yKGEgdGV4dFtdKSsKKyAgUkVUVVJOUyBpbnRl Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICBMQU5HVUFHRSBzcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgIFJFVFVSTiAoKGEpWzFdKTo6aW50ZWdlciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzMnOjpyZWdwcm9jKTsK KyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Z1bmN0aW9uZGVmICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZW1wX2Z1bmNfdGVz dC5mdW5jdGVzdF9zXzMoKSsKKyAgUkVUVVJOUyBib29sZWFuICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgUkVUVVJOIGZhbHNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykK KworU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18zYSc6OnJlZ3Byb2Mp OworICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVtcF9mdW5j X3Rlc3QuZnVuY3Rlc3Rfc18zYSgpKworICBSRVRVUk5TIGJvb2xlYW4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgQkVHSU4gQVRPTUlDICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBSRVRVUk4g ZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBF TkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0 X1NfMTAnOjpyZWdwcm9jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9m dW5jdGlvbmRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZW1wX2Z1bmNfdGVzdC5mdW5j dGVzdF9zXzEwKGEgdGV4dCwgYiBkYXRlKSsKKyAgUkVUVVJOUyBib29sZWFuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgTEFO R1VBR0Ugc3FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyBCRUdJTiBBVE9NSUMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgU0VMRUNUICgoYSA9ICdh YmNkJzo6dGV4dCkgQU5EIChiID4gJzAxLTAxLTIwMDEnOjpkYXRlKSk7ICAgICAgICAgICAg ICsKKyBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9m dW5jdGlvbmRlZignZnVuY3Rlc3RfU18xMyc6OnJlZ3Byb2MpOworICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVtcF9mdW5jX3Rlc3QuZnVuY3Rlc3Rfc18x MygpKworICBSRVRVUk5TIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgQkVHSU4gQVRPTUlDICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICBTRUxFQ1QgMTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgU0VMRUNUIGZhbHNlIEFTIGJv b2w7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgRU5EICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEg cm93KQorCistLSB0ZXN0IHdpdGggdmlld3MKK0NSRUFURSBUQUJMRSBmdW5jdGVzdDMgKGEg aW50KTsKK0lOU0VSVCBJTlRPIGZ1bmN0ZXN0MyBWQUxVRVMgKDEpLCAoMik7CitDUkVBVEUg VklFVyBmdW5jdGVzdHYzIEFTIFNFTEVDVCAqIEZST00gZnVuY3Rlc3QzOworQ1JFQVRFIEZV TkNUSU9OIGZ1bmN0ZXN0X1NfMTQoKSBSRVRVUk5TIGJpZ2ludAorICAgIFJFVFVSTiAoU0VM RUNUIGNvdW50KCopIEZST00gZnVuY3Rlc3R2Myk7CitTRUxFQ1QgZnVuY3Rlc3RfU18xNCgp OworIGZ1bmN0ZXN0X3NfMTQgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAyCiso MSByb3cpCisKK0RST1AgVEFCTEUgZnVuY3Rlc3QzIENBU0NBREU7CitOT1RJQ0U6ICBkcm9w IGNhc2NhZGVzIHRvIDIgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0 byB2aWV3IGZ1bmN0ZXN0djMKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3Rf c18xNCgpCiAtLSBpbmZvcm1hdGlvbl9zY2hlbWEgdGVzdHMKIENSRUFURSBGVU5DVElPTiBm dW5jdGVzdF9JU18xKGEgaW50LCBiIGludCBkZWZhdWx0IDEsIGMgdGV4dCBkZWZhdWx0ICdm b28nKQogICAgIFJFVFVSTlMgaW50CkBAIC0yODQsNiArNDI5LDIwIEBAIFNFTEVDVCByb3V0 aW5lX25hbWUsIG9yZGluYWxfcG9zaXRpb24sIHBhcmFtZXRlcl9uYW1lLCBwYXJhbWV0ZXJf ZGVmYXVsdAogKDcgcm93cykKIAogRFJPUCBGVU5DVElPTiBmdW5jdGVzdF9JU18xKGludCwg aW50LCB0ZXh0KSwgZnVuY3Rlc3RfSVNfMihpbnQpLCBmdW5jdGVzdF9JU18zKGludCk7CitD UkVBVEUgVEFCTEUgZnVuY3Rlc3QxIChhIGludCwgYiBpbnQpOworQ1JFQVRFIFNFUVVFTkNF IGZ1bmN0ZXN0MjsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU180KCkKKyAgICBSRVRV Uk5TIGludAorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KGEp IEZST00gZnVuY3Rlc3QxKTsKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU181KCkKKyAg ICBSRVRVUk5TIGludAorICAgIExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiBuZXh0dmFsKCdm dW5jdGVzdDInKTsKK0RST1AgVEFCTEUgZnVuY3Rlc3QxIENBU0NBREU7CitOT1RJQ0U6ICBk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2lzXzQoKQorRFJPUCBTRVFVRU5D RSBmdW5jdGVzdDIgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rp b24gZnVuY3Rlc3RfaXNfNSgpCiAtLSBvdmVybG9hZAogQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0 ZXN0X0JfMihiaWdpbnQpIFJFVFVSTlMgYm9vbCBMQU5HVUFHRSAnc3FsJwogICAgICAgIElN TVVUQUJMRSBBUyAnU0VMRUNUICQxID4gMCc7CkBAIC0zMDIsNiArNDYxLDQ5IEBAIENSRUFU RSBPUiBSRVBMQUNFIFBST0NFRFVSRSBmdW5jdGVzdDEoYSBpbnQpIExBTkdVQUdFIFNRTCBB UyAnU0VMRUNUICQxJzsKIEVSUk9SOiAgY2Fubm90IGNoYW5nZSByb3V0aW5lIGtpbmQKIERF VEFJTDogICJmdW5jdGVzdDEiIGlzIGEgZnVuY3Rpb24uCiBEUk9QIEZVTkNUSU9OIGZ1bmN0 ZXN0MShhIGludCk7CistLSBpbmxpbmluZyBvZiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucwor Q1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X3NyaTEoKSBSRVRVUk5TIFNFVE9GIGludAorTEFO R1VBR0UgU1FMCitTVEFCTEUKK0FTICcKKyAgICBWQUxVRVMgKDEpLCAoMiksICgzKTsKKyc7 CitTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0X3NyaTEoKTsKKyBmdW5jdGVzdF9zcmkxIAorLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMQorICAgICAgICAgICAgIDIKKyAgICAgICAg ICAgICAzCisoMyByb3dzKQorCitFWFBMQUlOICh2ZXJib3NlLCBjb3N0cyBvZmYpIFNFTEVD VCAqIEZST00gZnVuY3Rlc3Rfc3JpMSgpOworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBWYWx1ZXMgU2NhbiBvbiAi KlZBTFVFUyoiCisgICBPdXRwdXQ6ICIqVkFMVUVTKiIuY29sdW1uMQorKDIgcm93cykKKwor Q1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X3NyaTIoKSBSRVRVUk5TIFNFVE9GIGludAorTEFO R1VBR0UgU1FMCitTVEFCTEUKK0JFR0lOIEFUT01JQworICAgIFZBTFVFUyAoMSksICgyKSwg KDMpOworRU5EOworU0VMRUNUICogRlJPTSBmdW5jdGVzdF9zcmkyKCk7CisgZnVuY3Rlc3Rf c3JpMiAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAy CisgICAgICAgICAgICAgMworKDMgcm93cykKKworRVhQTEFJTiAodmVyYm9zZSwgY29zdHMg b2ZmKSBTRUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0X3NyaTIoKTsKKyAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVmFsdWVz IFNjYW4gb24gIipWQUxVRVMqIgorICAgT3V0cHV0OiAiKlZBTFVFUyoiLmNvbHVtbjEKKygy IHJvd3MpCisKIC0tIENoZWNrIGJlaGF2aW9yIG9mIFZPSUQtcmV0dXJuaW5nIFNRTCBmdW5j dGlvbnMKIENSRUFURSBGVU5DVElPTiB2b2lkdGVzdDEoYSBpbnQpIFJFVFVSTlMgVk9JRCBM QU5HVUFHRSBTUUwgQVMKICQkIFNFTEVDVCBhICsgMSAkJDsKQEAgLTM2MCw3ICs1NjIsNyBA QCBTRUxFQ1QgKiBGUk9NIHZvaWR0ZXN0NSgzKTsKIAogLS0gQ2xlYW51cAogRFJPUCBTQ0hF TUEgdGVtcF9mdW5jX3Rlc3QgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MjEgb3RoZXIgb2JqZWN0cworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAyOSBvdGhlciBv YmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2Ff MSh0ZXh0LGRhdGUpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2FfMih0 ZXh0W10pCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2FfMygpCkBAIC0z NzYsNyArNTc4LDE1IEBAIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfZl8x KGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2ZfMihpbnRl Z2VyKQogZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9mXzMoaW50ZWdlcikK IGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3RfZl80KGludGVnZXIpCitkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMSh0ZXh0LGRhdGUpCitkcm9wIGNh c2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMih0ZXh0W10pCitkcm9wIGNhc2NhZGVz IHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NfMygpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IGZ1bmN0ZXN0X3NfM2EoKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmdW5jdGVzdF9z XzEwKHRleHQsZGF0ZSkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gZnVuY3Rlc3Rfc18x MygpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X2JfMihiaWdpbnQpCitk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZ1bmN0ZXN0X3NyaTEoKQorZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiBmdW5jdGVzdF9zcmkyKCkKIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rp b24gdm9pZHRlc3QxKGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHZvaWR0 ZXN0MihpbnRlZ2VyLGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHZvaWR0 ZXN0MyhpbnRlZ2VyKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j cmVhdGVfcHJvY2VkdXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X3Byb2NlZHVyZS5vdXQKaW5kZXggMzgzOGZhMjMyNC4uNWQ2MzQ1NzBjNCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CkBAIC02 NSw2ICs2NSw0MSBAQCBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QgT1JERVIgQlkgYiBDT0xMQVRF ICJDIjsKICAxIHwgeHl6enkKICgzIHJvd3MpCiAKKy0tIFNRTC1zdGFuZGFyZCBib2R5CitD UkVBVEUgUFJPQ0VEVVJFIHB0ZXN0MXMoeCB0ZXh0KQorTEFOR1VBR0UgU1FMCitCRUdJTiBB VE9NSUMKKyAgSU5TRVJUIElOVE8gY3BfdGVzdCBWQUxVRVMgKDEsIHgpOworRU5EOworXGRm IHB0ZXN0MXMKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgZnVuY3Rpb25zCisg U2NoZW1hIHwgIE5hbWUgICB8IFJlc3VsdCBkYXRhIHR5cGUgfCBBcmd1bWVudCBkYXRhIHR5 cGVzIHwgVHlwZSAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHB1YmxpYyB8IHB0ZXN0MXMgfCAgICAgICAg ICAgICAgICAgIHwgeCB0ZXh0ICAgICAgICAgICAgICB8IHByb2MKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF9mdW5jdGlvbmRlZigncHRlc3Qxcyc6OnJlZ3Byb2MpOworICAgICAgICAg ICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBP UiBSRVBMQUNFIFBST0NFRFVSRSBwdWJsaWMucHRlc3Qxcyh4IHRleHQpKworICBMQU5HVUFH RSBzcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEJFR0lOIEFU T01JQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICBJTlNFUlQg SU5UTyBjcF90ZXN0IChhLCBiKSAgICAgICAgICAgICAgICAgICAgICAgKworICAgIFZBTFVF UyAoMSwgeCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEVORCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIAorKDEgcm93 KQorCitDQUxMIHB0ZXN0MXMoJ2InKTsKK1NFTEVDVCAqIEZST00gY3BfdGVzdCBPUkRFUiBC WSBiIENPTExBVEUgIkMiOworIGEgfCAgIGIgICAKKy0tLSstLS0tLS0tCisgMSB8IDAKKyAx IHwgYQorIDEgfCBiCisgMSB8IHh5enp5CisoNCByb3dzKQorCiBDUkVBVEUgUFJPQ0VEVVJF IHB0ZXN0MigpCiBMQU5HVUFHRSBTUUwKIEFTICQkCkBAIC0xNDYsNiArMTgxLDI4IEBAIEFT ICQkCiBTRUxFQ1QgYSA9IGI7CiAkJDsKIENBTEwgcHRlc3Q3KGxlYXN0KCdhJywgJ2InKSwg J2EnKTsKKy0tIGVtcHR5IGJvZHkKK0NSRUFURSBQUk9DRURVUkUgcHRlc3Q4KHggdGV4dCkK K0JFR0lOIEFUT01JQworRU5EOworXGRmIHB0ZXN0OAorICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBmdW5jdGlvbnMKKyBTY2hlbWEgfCAgTmFtZSAgfCBSZXN1bHQgZGF0YSB0 eXBlIHwgQXJndW1lbnQgZGF0YSB0eXBlcyB8IFR5cGUgCistLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHB1Ymxp YyB8IHB0ZXN0OCB8ICAgICAgICAgICAgICAgICAgfCB4IHRleHQgICAgICAgICAgICAgIHwg cHJvYworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdwdGVzdDgnOjpy ZWdwcm9jKTsKKyAgICAgICAgICAgICAgICBwZ19nZXRfZnVuY3Rpb25kZWYgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIHB1YmxpYy5wdGVzdDgoeCB0 ZXh0KSsKKyAgTEFOR1VBR0Ugc3FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworIEJFR0lOIEFUT01JQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAKKygxIHJvdykKKworQ0FMTCBwdGVzdDgoJycpOwogLS0gT1VUIHBhcmFtZXRlcnMK IENSRUFURSBQUk9DRURVUkUgcHRlc3Q5KE9VVCBhIGludCkKIExBTkdVQUdFIFNRTApAQCAt MjE0LDYgKzI3MSw3IEBAIEFMVEVSIFJPVVRJTkUgcHRlc3QxYSBSRU5BTUUgVE8gcHRlc3Qx OwogRFJPUCBST1VUSU5FIGNwX3Rlc3RmdW5jMShpbnQpOwogLS0gY2xlYW51cAogRFJPUCBQ Uk9DRURVUkUgcHRlc3QxOworRFJPUCBQUk9DRURVUkUgcHRlc3QxczsKIERST1AgUFJPQ0VE VVJFIHB0ZXN0MjsKIERST1AgVEFCTEUgY3BfdGVzdDsKIERST1AgVVNFUiByZWdyZXNzX2Nw X3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Z1bmN0 aW9uXzMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Z1bmN0aW9uXzMuc3Fs CmluZGV4IGJkMTA4YTkxOGYuLjA5MmUxNWI1OTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9mdW5jdGlvbl8zLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfZnVuY3Rpb25fMy5zcWwKQEAgLTE1Myw2ICsxNTMsNjUgQEAgQ1JFQVRF IEZVTkNUSU9OIGZ1bmN0ZXN0X0ZfNChpbnQpIFJFVFVSTlMgYm9vbCBMQU5HVUFHRSAnc3Fs JwogU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfRl8yJzo6cmVncHJvYyk7 CiAKIAorLS0KKy0tIFNRTC1zdGFuZGFyZCBib2R5CistLQorQ1JFQVRFIEZVTkNUSU9OIGZ1 bmN0ZXN0X1NfMShhIHRleHQsIGIgZGF0ZSkgUkVUVVJOUyBib29sZWFuCisgICAgTEFOR1VB R0UgU1FMCisgICAgUkVUVVJOIGEgPSAnYWJjZCcgQU5EIGIgPiAnMjAwMS0wMS0wMSc7CitD UkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18yKGEgdGV4dFtdKSBSRVRVUk5TIGludAorICAg IFJFVFVSTiBhWzFdOjppbnQ7CitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rlc3RfU18zKCkgUkVU VVJOUyBib29sZWFuCisgICAgUkVUVVJOIGZhbHNlOworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0 ZXN0X1NfM2EoKSBSRVRVUk5TIGJvb2xlYW4KKyAgICBCRUdJTiBBVE9NSUMKKyAgICAgICAg UkVUVVJOIGZhbHNlOworICAgIEVORDsKKworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X1Nf MTAoYSB0ZXh0LCBiIGRhdGUpIFJFVFVSTlMgYm9vbGVhbgorICAgIExBTkdVQUdFIFNRTAor ICAgIEJFR0lOIEFUT01JQworICAgICAgICBTRUxFQ1QgYSA9ICdhYmNkJyBBTkQgYiA+ICcy MDAxLTAxLTAxJzsKKyAgICBFTkQ7CisKK0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9TXzEz KCkgUkVUVVJOUyBib29sZWFuCisgICAgQkVHSU4gQVRPTUlDCisgICAgICAgIFNFTEVDVCAx OworICAgICAgICBTRUxFQ1QgZmFsc2U7CisgICAgRU5EOworCistLSBwb2x5bW9ycGhpYyBh cmd1bWVudHMgbm90IGFsbG93ZWQgaW4gdGhpcyBmb3JtCitDUkVBVEUgRlVOQ1RJT04gZnVu Y3Rlc3RfU194eCh4IGFueWFycmF5KSBSRVRVUk5TIGFueWVsZW1lbnQKKyAgICBMQU5HVUFH RSBTUUwKKyAgICBSRVRVUk4geFsxXTsKKworU0VMRUNUIGZ1bmN0ZXN0X1NfMSgnYWJjZCcs ICcyMDIwLTAxLTAxJyk7CitTRUxFQ1QgZnVuY3Rlc3RfU18yKEFSUkFZWycxJywgJzInLCAn MyddKTsKK1NFTEVDVCBmdW5jdGVzdF9TXzMoKTsKKworU0VMRUNUIGZ1bmN0ZXN0X1NfMTAo J2FiY2QnLCAnMjAyMC0wMS0wMScpOworU0VMRUNUIGZ1bmN0ZXN0X1NfMTMoKTsKKworU0VM RUNUIHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18xJzo6cmVncHJvYyk7CitTRUxF Q1QgcGdfZ2V0X2Z1bmN0aW9uZGVmKCdmdW5jdGVzdF9TXzInOjpyZWdwcm9jKTsKK1NFTEVD VCBwZ19nZXRfZnVuY3Rpb25kZWYoJ2Z1bmN0ZXN0X1NfMyc6OnJlZ3Byb2MpOworU0VMRUNU IHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18zYSc6OnJlZ3Byb2MpOworU0VMRUNU IHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18xMCc6OnJlZ3Byb2MpOworU0VMRUNU IHBnX2dldF9mdW5jdGlvbmRlZignZnVuY3Rlc3RfU18xMyc6OnJlZ3Byb2MpOworCistLSB0 ZXN0IHdpdGggdmlld3MKK0NSRUFURSBUQUJMRSBmdW5jdGVzdDMgKGEgaW50KTsKK0lOU0VS VCBJTlRPIGZ1bmN0ZXN0MyBWQUxVRVMgKDEpLCAoMik7CitDUkVBVEUgVklFVyBmdW5jdGVz dHYzIEFTIFNFTEVDVCAqIEZST00gZnVuY3Rlc3QzOworCitDUkVBVEUgRlVOQ1RJT04gZnVu Y3Rlc3RfU18xNCgpIFJFVFVSTlMgYmlnaW50CisgICAgUkVUVVJOIChTRUxFQ1QgY291bnQo KikgRlJPTSBmdW5jdGVzdHYzKTsKKworU0VMRUNUIGZ1bmN0ZXN0X1NfMTQoKTsKKworRFJP UCBUQUJMRSBmdW5jdGVzdDMgQ0FTQ0FERTsKKworCiAtLSBpbmZvcm1hdGlvbl9zY2hlbWEg dGVzdHMKIAogQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X0lTXzEoYSBpbnQsIGIgaW50IGRl ZmF1bHQgMSwgYyB0ZXh0IGRlZmF1bHQgJ2ZvbycpCkBAIC0xNzcsNiArMjM2LDIzIEBAIENS RUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU18zKGEgaW50IGRlZmF1bHQgMSwgb3V0IGIgaW50 KQogCiBEUk9QIEZVTkNUSU9OIGZ1bmN0ZXN0X0lTXzEoaW50LCBpbnQsIHRleHQpLCBmdW5j dGVzdF9JU18yKGludCksIGZ1bmN0ZXN0X0lTXzMoaW50KTsKIAorQ1JFQVRFIFRBQkxFIGZ1 bmN0ZXN0MSAoYSBpbnQsIGIgaW50KTsKK0NSRUFURSBTRVFVRU5DRSBmdW5jdGVzdDI7CisK K0NSRUFURSBGVU5DVElPTiBmdW5jdGVzdF9JU180KCkKKyAgICBSRVRVUk5TIGludAorICAg IExBTkdVQUdFIFNRTAorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KGEpIEZST00gZnVuY3Rl c3QxKTsKKworQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0ZXN0X0lTXzUoKQorICAgIFJFVFVSTlMg aW50CisgICAgTEFOR1VBR0UgU1FMCisgICAgUkVUVVJOIG5leHR2YWwoJ2Z1bmN0ZXN0Micp OworCitEUk9QIFRBQkxFIGZ1bmN0ZXN0MSBDQVNDQURFOworRFJPUCBTRVFVRU5DRSBmdW5j dGVzdDIgQ0FTQ0FERTsKKworCiAtLSBvdmVybG9hZAogQ1JFQVRFIEZVTkNUSU9OIGZ1bmN0 ZXN0X0JfMihiaWdpbnQpIFJFVFVSTlMgYm9vbCBMQU5HVUFHRSAnc3FsJwogICAgICAgIElN TVVUQUJMRSBBUyAnU0VMRUNUICQxID4gMCc7CkBAIC0xOTQsNiArMjcwLDI5IEBAIENSRUFU RSBPUiBSRVBMQUNFIFBST0NFRFVSRSBmdW5jdGVzdDEoYSBpbnQpIExBTkdVQUdFIFNRTCBB UyAnU0VMRUNUICQxJzsKIERST1AgRlVOQ1RJT04gZnVuY3Rlc3QxKGEgaW50KTsKIAogCist LSBpbmxpbmluZyBvZiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucworCitDUkVBVEUgRlVOQ1RJ T04gZnVuY3Rlc3Rfc3JpMSgpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwKK1NU QUJMRQorQVMgJworICAgIFZBTFVFUyAoMSksICgyKSwgKDMpOworJzsKKworU0VMRUNUICog RlJPTSBmdW5jdGVzdF9zcmkxKCk7CitFWFBMQUlOICh2ZXJib3NlLCBjb3N0cyBvZmYpIFNF TEVDVCAqIEZST00gZnVuY3Rlc3Rfc3JpMSgpOworCitDUkVBVEUgRlVOQ1RJT04gZnVuY3Rl c3Rfc3JpMigpIFJFVFVSTlMgU0VUT0YgaW50CitMQU5HVUFHRSBTUUwKK1NUQUJMRQorQkVH SU4gQVRPTUlDCisgICAgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitFTkQ7CisKK1NFTEVDVCAq IEZST00gZnVuY3Rlc3Rfc3JpMigpOworRVhQTEFJTiAodmVyYm9zZSwgY29zdHMgb2ZmKSBT RUxFQ1QgKiBGUk9NIGZ1bmN0ZXN0X3NyaTIoKTsKKworCiAtLSBDaGVjayBiZWhhdmlvciBv ZiBWT0lELXJldHVybmluZyBTUUwgZnVuY3Rpb25zCiAKIENSRUFURSBGVU5DVElPTiB2b2lk dGVzdDEoYSBpbnQpIFJFVFVSTlMgVk9JRCBMQU5HVUFHRSBTUUwgQVMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKaW5kZXggMmVmMWM4MmNlYS4uOGMw ZDcwY2IxNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2Nl ZHVyZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5z cWwKQEAgLTI4LDYgKzI4LDIxIEBAIENSRUFURSBQUk9DRURVUkUgcHRlc3QxKHggdGV4dCkK IFNFTEVDVCAqIEZST00gY3BfdGVzdCBPUkRFUiBCWSBiIENPTExBVEUgIkMiOwogCiAKKy0t IFNRTC1zdGFuZGFyZCBib2R5CitDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0MXMoeCB0ZXh0KQor TEFOR1VBR0UgU1FMCitCRUdJTiBBVE9NSUMKKyAgSU5TRVJUIElOVE8gY3BfdGVzdCBWQUxV RVMgKDEsIHgpOworRU5EOworCitcZGYgcHRlc3QxcworU0VMRUNUIHBnX2dldF9mdW5jdGlv bmRlZigncHRlc3Qxcyc6OnJlZ3Byb2MpOworCitDQUxMIHB0ZXN0MXMoJ2InKTsKKworU0VM RUNUICogRlJPTSBjcF90ZXN0IE9SREVSIEJZIGIgQ09MTEFURSAiQyI7CisKKwogQ1JFQVRF IFBST0NFRFVSRSBwdGVzdDIoKQogTEFOR1VBR0UgU1FMCiBBUyAkJApAQCAtMTEyLDYgKzEy NywxNiBAQCBDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0NyhhIHRleHQsIGIgdGV4dCkKIENBTEwg cHRlc3Q3KGxlYXN0KCdhJywgJ2InKSwgJ2EnKTsKIAogCistLSBlbXB0eSBib2R5CitDUkVB VEUgUFJPQ0VEVVJFIHB0ZXN0OCh4IHRleHQpCitCRUdJTiBBVE9NSUMKK0VORDsKKworXGRm IHB0ZXN0OAorU0VMRUNUIHBnX2dldF9mdW5jdGlvbmRlZigncHRlc3Q4Jzo6cmVncHJvYyk7 CitDQUxMIHB0ZXN0OCgnJyk7CisKKwogLS0gT1VUIHBhcmFtZXRlcnMKIAogQ1JFQVRFIFBS T0NFRFVSRSBwdGVzdDkoT1VUIGEgaW50KQpAQCAtMTcwLDYgKzE5NSw3IEBAIENSRUFURSBV U0VSIHJlZ3Jlc3NfY3BfdXNlcjE7CiAtLSBjbGVhbnVwCiAKIERST1AgUFJPQ0VEVVJFIHB0 ZXN0MTsKK0RST1AgUFJPQ0VEVVJFIHB0ZXN0MXM7CiBEUk9QIFBST0NFRFVSRSBwdGVzdDI7 CiAKIERST1AgVEFCTEUgY3BfdGVzdDsKCmJhc2UtY29tbWl0OiA0OTQwN2RjMzJhMjkzMTU1 MGU0ZmYxZGVhMzE0YjZhMjVhZmRmYzM1Ci0tIAoyLjI5LjIKCg== --------------DD43FC793BE73AC2FAEDEF69--