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 1lM8jk-0004g5-3w for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Mar 2021 12:23:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lM8ji-0002TY-2A for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Mar 2021 12:23:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lM8jg-0002TQ-Rc for pgsql-hackers@lists.postgresql.org; Tue, 16 Mar 2021 12:23:45 +0000 Received: from forward5-smtp.messagingengine.com ([66.111.4.239]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lM8jb-00019f-W1 for pgsql-hackers@postgresql.org; Tue, 16 Mar 2021 12:23:43 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.nyi.internal (Postfix) with ESMTP id A5F8D19416AA; Tue, 16 Mar 2021 08:23:38 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Tue, 16 Mar 2021 08:23:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=Wmf0BG BsVbNmfhsDi1on4WC4z47YLs1LTkfemKjpbTk=; b=G7xVItYMkC3INUPc/MHTb5 rwlvkFMMCWzY1z55NcqPBT+3UjlMRKtDvH59YCw5v6QKLAP1WwZkMts02eByjtB4 8deyGK8TF3t5NLRFps9DoafjeaYObIYuONV54HqnRFpyyKYL38+pBXahykyx16Ma 8b2l77SIFL2lt+8/oIlhvKWETx57wut9mhCM5wvBQxevuaGcjEhP7OttF0HnyYSr 45ygiXVpfbsBEJPn69aurWtAHMTiHU0HExbqCg2j7QQ3HU9IZ0f/lyVYP0X2mBKk bRmtEE+g3JCauz0RlEFxggJ96cANPXDSONJNpIP/pOcTcTkY2LGwKRhYPUoYhjWQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudefvddgfeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuggftrfgrthhtvghrnheptdfgfeejueduffehveetueeg kedtteetiedugffgkeeiteeltddvgeeigeegteegnecukfhppeekjedrudejjedrieelrd dugedtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep phgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from laptop206oxuk.local (p57b1458c.dip0.t-ipconnect.de [87.177.69.140]) by mail.messagingengine.com (Postfix) with ESMTPA id 1B56B108005F; Tue, 16 Mar 2021 08:23:37 -0400 (EDT) Subject: Re: dynamic result sets support in extended query protocol To: David Steele , pgsql-hackers Cc: Andres Freund References: <6e747f98-835f-2e05-cde5-86ee444a7140@2ndquadrant.com> <20201009184625.4hfgpcxzd6jfredb@alap3.anarazel.de> From: Peter Eisentraut Message-ID: <7e404216-62b5-93da-1a74-c1d5aa1fe47a@2ndquadrant.com> Date: Tue, 16 Mar 2021 13:23:35 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------C16575E7DFE3317A48E7A971" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------C16575E7DFE3317A48E7A971 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 15.03.21 14:56, David Steele wrote: > Hi Peter, > > On 12/30/20 9:33 AM, Peter Eisentraut wrote: >> On 2020-10-09 20:46, Andres Freund wrote: >>> Is there really a good reason for forcing the client to issue >>> NextResult, Describe, Execute for each of the dynamic result sets? It's >>> not like there's really a case for allowing the clients to skip them, >>> right?  Why aren't we sending something more like >>> >>> S: CommandPartiallyComplete >>> S: RowDescription >>> S: DataRow... >>> S: CommandPartiallyComplete >>> S: RowDescription >>> S: DataRow... >>> ... >>> S: CommandComplete >>> C: Sync >> >> I want to post my current patch, to keep this discussion moving. > > CFBot reports that tests are failing, although the patch applies. Yes, as explained in the message, you need another patch that makes psql show the additional result sets. The cfbot cannot handle that kind of thing. In the meantime, I have made a few small fixes, so I'm attaching another patch. --------------C16575E7DFE3317A48E7A971 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Dynamic-result-sets-from-procedures.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Dynamic-result-sets-from-procedures.patch" RnJvbSAxNjNkMmJhMzlhMGI0NmRlYjgzZTc1MDlkODVhNWIyMDEyZmQ4NGVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNiBNYXIgMjAyMSAxMToyODo1MyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIER5bmFtaWMgcmVzdWx0IHNldHMgZnJvbSBwcm9jZWR1cmVzCgpEZWNs YXJpbmcgYSBjdXJzb3IgV0lUSCBSRVRVUk4gaW4gYSBwcm9jZWR1cmUgbWFrZXMgdGhlIGN1 cnNvcidzIGRhdGEgYmUKcmV0dXJuZWQgYXMgYSByZXN1bHQgb2YgdGhlIENBTEwgaW52b2Nh dGlvbi4gIFRoZSBwcm9jZWR1cmUgbmVlZHMgdG8KYmUgZGVjbGFyZWQgd2l0aCB0aGUgRFlO QU1JQyBSRVNVTFQgU0VUUyBhdHRyaWJ1dGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvNmU3NDdmOTgtODM1Zi0yZTA1LWNkZTUt ODZlZTQ0NGE3MTQwQDJuZHF1YWRyYW50LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8IDEwICsrKwogZG9jL3NyYy9zZ21sL2luZm9y bWF0aW9uX3NjaGVtYS5zZ21sICAgICAgICAgIHwgIDMgKy0KIGRvYy9zcmMvc2dtbC9wcm90 b2NvbC5zZ21sICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrCiBkb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3Byb2NlZHVyZS5zZ21sICAgICAgICAgfCAxMiArKysKIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3Byb2NlZHVyZS5zZ21sICAgICAgICB8IDE0ICsrKwogZG9jL3NyYy9z Z21sL3JlZi9kZWNsYXJlLnNnbWwgICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKy0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCAgICB8ICAyICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jICAgICAgICAgICAgfCAgMyArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNtZHMuYyAgICAgICAgICAgfCA3NSAr KysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAg ICAgICAgICAgfCAyMyArKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAg ICAgICAgICAgICAgIHwgMTIgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICAgICAgfCAyMCArKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j ICAgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvYmFja2VuZC91 dGlscy9lcnJjb2Rlcy50eHQgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCA0OCArKysrKysrKysrKwogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmggICAgICAgICAgICAgICAgIHwgIDYgKy0K IHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgICAgICB8ICAyICsK IHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICA5ICst CiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgMyAr CiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAxNCAr KysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jICAgICAgICAgICB8ICA2 ICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dCAgICAgfCA4 NSArKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfcHJv Y2VkdXJlLnNxbCAgICAgfCA2MSArKysrKysrKysrKystCiAyNyBmaWxlcyBjaGFuZ2VkLCA1 MTggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCBiMWRlNmQwNjc0Li5jMzBkNjMyOGVlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNTg0NCw2 ICs1ODQ0LDE2IEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9jPC9zdHJ1Y3RuYW1lPiBD b2x1bW5zPC90aXRsZT4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJv ZHlucmVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIEZvciBwcm9jZWR1cmVzLCB0aGlzIHJlY29yZHMgdGhl IG1heGltdW0gbnVtYmVyIG9mIGR5bmFtaWMgcmVzdWx0IHNldHMKKyAgICAgICB0aGUgcHJv Y2VkdXJlIG1heSBjcmVhdGUuICBPdGhlcndpc2UgemVyby4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAg ICAgICA8c3RydWN0ZmllbGQ+cHJvbmFyZ3M8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90 eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21s IGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IDQxMDAxOTgy NTIuLjdmNzQ5OGVlZmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9z Y2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwK QEAgLTU4ODQsNyArNTg4NCw4IEBAIDx0aXRsZT48c3RydWN0bmFtZT5yb3V0aW5lczwvc3Ry dWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgICAgICAgPHN0cnVjdGZpZWxkPm1heF9keW5h bWljX3Jlc3VsdF9zZXRzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2FyZGluYWxfbnVtYmVyPC90 eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgQXBwbGllcyB0byBh IGZlYXR1cmUgbm90IGF2YWlsYWJsZSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+CisgICAgICAgRm9yIGEgcHJvY2VkdXJlLCB0aGUgbWF4aW11bSBudW1iZXIg b2YgZHluYW1pYyByZXN1bHQgc2V0cy4gIE90aGVyd2lzZQorICAgICAgIHplcm8uCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXgg NDMwOTJmZTYyYS4uNGZlMGIyNzFlNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3Rv Y29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTk1OSw2ICs5 NTksMjUgQEAgPHRpdGxlPkV4dGVuZGVkIFF1ZXJ5PC90aXRsZT4KICAgICBhbiBlbXB0eSBx dWVyeSBzdHJpbmcpLCBFcnJvclJlc3BvbnNlLCBvciBQb3J0YWxTdXNwZW5kZWQuCiAgICA8 L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIEV4ZWN1dGluZyBhIHBvcnRhbCBtYXkgZ2l2ZSBy aXNlIHRvIGEgPGZpcnN0dGVybT5keW5hbWljIHJlc3VsdCBzZXQKKyAgICBzZXF1ZW5jZTwv Zmlyc3R0ZXJtPi4gIFRoYXQgbWVhbnMgdGhlIGNvbW1hbmQgY29udGFpbmVkIGluIHRoZSBw b3J0YWwKKyAgICBjcmVhdGVkIGFkZGl0aW9uYWwgcmVzdWx0IHNldHMgYmV5b25kIHdoYXQg aXQgbm9ybWFsbHkgcmV0dXJucy4gIChUaGUKKyAgICB0eXBpY2FsIGV4YW1wbGUgaXMgY2Fs bGluZyBhIHN0b3JlZCBwcm9jZWR1cmUgdGhhdCBjcmVhdGVzIGR5bmFtaWMgcmVzdWx0Cisg ICAgc2V0cy4pICBEeW5hbWljIHJlc3VsdCBzZXRzIGFyZSBpc3N1ZXMgYWZ0ZXIgd2hhdGV2 ZXIgcmVzcG9uc2UgdGhlIG1haW4KKyAgICBjb21tYW5kIGlzc3VlZC4gIEVhY2ggZHluYW1p YyByZXN1bHQgc2V0IGJlZ2lucyB3aXRoIGEgUm93RGVzY3JpcHRpb24KKyAgICBtZXNzYWdl IGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBEYXRhUm93IG1lc3NhZ2VzLiAgKFNpbmNlIGFz IGV4cGxhaW5lZAorICAgIGFib3ZlIGFuIEV4ZWN1dGUgbWVzc2FnZSBub3JtYWxseSBkb2Vz IG5vdCByZXNwb25kIHdpdGggYSBSb3dEZXNjcmlwdGlvbiwKKyAgICB0aGUgYXBwZWFyYW5j ZSBvZiB0aGUgZmlyc3QgUm93RGVzY3JpcHRpb24gbWFya3MgdGhlIGVuZCBvZiB0aGUgcHJp bWFyeQorICAgIHJlc3VsdCBzZXQgb2YgdGhlIHBvcnRhbCBhbmQgdGhlIGJlZ2lubmluZyBv ZiB0aGUgZmlyc3QgZHluYW1pYyByZXN1bHQKKyAgICBzZXQuKSAgVGhlIENvbW1hbmRDb21w bGV0ZSBtZXNzYWdlIHRoYXQgY29uY2x1ZGVzIHRoZSBFeGVjdXRlIG1lc3NhZ2UKKyAgICBy ZXNwb25zZSBmb2xsb3dzIDxlbXBoYXNpcz5hZnRlcjwvZW1waGFzaXM+IGFsbCBkeW5hbWlj IHJlc3VsdCBzZXRzLiAgTm90ZQorICAgIHRoYXQgZHluYW1pYyByZXN1bHQgc2V0cyBjYW5u b3QsIGJ5IHRoZWlyIG5hdHVyZSwgYmUgZGVjcmliZWQgcHJpb3IgdG8gdGhlCisgICAgZXhl Y3V0aW9uIG9mIHRoZSBwb3J0YWwuICBNdWx0aXBsZSBleGVjdXRpb25zIG9mIHRoZSBzYW1l IHByZXBhcmVkCisgICAgc3RhdGVtZW50IGNvdWxkIHJlc3VsdCBpbiBkeW5hbWljIHJlc3Vs dCBzZXRzIHdpdGggZGlmZmVyZW50IHJvdworICAgIGRlc2NyaXB0aW9ucyBiZWluZyByZXR1 cm5lZC4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgQXQgY29tcGxldGlvbiBvZiBl YWNoIHNlcmllcyBvZiBleHRlbmRlZC1xdWVyeSBtZXNzYWdlcywgdGhlIGZyb250ZW5kCiAg ICAgc2hvdWxkIGlzc3VlIGEgU3luYyBtZXNzYWdlLiAgVGhpcyBwYXJhbWV0ZXJsZXNzIG1l c3NhZ2UgY2F1c2VzIHRoZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w cm9jZWR1cmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwK aW5kZXggOWNiZTJjN2NlYS4uOTJmYzgzZmFlMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9wcm9jZWR1cmUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3Byb2NlZHVyZS5zZ21sCkBAIC0zNCw2ICszNCw3IEBACiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9u ZSBvZjo8L3BocmFzZT4KIAorICAgIERZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPgog ICAgIFsgRVhURVJOQUwgXSBTRUNVUklUWSBJTlZPS0VSIHwgWyBFWFRFUk5BTCBdIFNFQ1VS SVRZIERFRklORVIKICAgICBTRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bmZpZ3VyYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4geyBUTyB8ID0gfSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgREVGQVVM VCB9CiAgICAgU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25maWd1cmF0 aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IEZST00gQ1VSUkVOVApAQCAtMTUwLDYgKzE1 MSwxNyBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRl cmFsPkRZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisK KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQ2hhbmdlcyB0aGUgZHluYW1p YyByZXN1bHQgc2V0cyBzZXR0aW5nIG9mIHRoZSBwcm9jZWR1cmUuICBTZWUgPHhyZWYKKyAg ICAgIGxpbmtlbmQ9InNxbC1jcmVhdGVwcm9jZWR1cmUiLz4gZm9yIG1vcmUgaW5mb3JtYXRp b24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+PG9wdGlvbmFsPiBF WFRFUk5BTCA8L29wdGlvbmFsPiBTRUNVUklUWSBJTlZPS0VSPC9saXRlcmFsPjwvdGVybT4K ICAgICA8dGVybT48bGl0ZXJhbD48b3B0aW9uYWw+IEVYVEVSTkFMIDwvb3B0aW9uYWw+IFNF Q1VSSVRZIERFRklORVI8L2xpdGVyYWw+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wcm9jZWR1cmUuc2dtbAppbmRleCA2ZGJjMDEyNzE5Li4zOWZmNjU4NDY5IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbApAQCAtMjQsNiArMjQsNyBAQAog Q1JFQVRFIFsgT1IgUkVQTEFDRSBdIFBST0NFRFVSRQogICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gKCBbIFsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWyB7IERFRkFVTFQg fCA9IH0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmF1bHRfZXhwcjwvcmVw bGFjZWFibGU+IF0gWywgLi4uXSBdICkKICAgeyBMQU5HVUFHRSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bGFuZ19uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICB8IERZTkFNSUMg UkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVz dWx0X3NldHM8L3JlcGxhY2VhYmxlPgogICAgIHwgVFJBTlNGT1JNIHsgRk9SIFRZUEUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IH0g WywgLi4uIF0KICAgICB8IFsgRVhURVJOQUwgXSBTRUNVUklUWSBJTlZPS0VSIHwgWyBFWFRF Uk5BTCBdIFNFQ1VSSVRZIERFRklORVIKICAgICB8IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uZmlndXJhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiB7IFRP IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwg PSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8 IEZST00gQ1VSUkVOVCB9CkBAIC0xNzMsNiArMTc0LDE5IEBAIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg IDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPkRZTkFNSUMgUkVTVUxUIFNF VFMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8 L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgU3BlY2lmaWVzIGhvdyBtYW55IGR5bmFtaWMgcmVzdWx0IHNl dHMgdGhlIHByb2NlZHVyZSByZXR1cm5zIChzZWUKKyAgICAgICA8bGl0ZXJhbD48bGluayBs aW5rZW5kPSJzcWwtZGVjbGFyZSI+REVDTEFSRTwvbGluaz4gV0lUSAorICAgICAgIFJFVFVS TjwvbGl0ZXJhbD4pLiAgVGhlIGRlZmF1bHQgaXMgMC4gIElmIGEgcHJvY2VkdXJlIHJldHVy bnMgbW9yZQorICAgICAgIHJlc3VsdCBzZXRzIHRoYW4gZGVjbGFyZWQsIGEgd2FybmluZyBp cyByYWlzZWQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5U UkFOU0ZPUk0geyBGT1IgVFlQRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlw ZV9uYW1lPC9yZXBsYWNlYWJsZT4gfSBbLCAuLi4gXSB9PC9saXRlcmFsPjwvdGVybT4KIApk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWNsYXJlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2RlY2xhcmUuc2dtbAppbmRleCAyMTUyMTM0NjM1Li5kZGVkMTU5ZDE4IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2RlY2xhcmUuc2dtbApAQCAtMjcsNyArMjcsOCBAQAogIDxyZWZzeW5vcHNpc2Rp dj4KIDxzeW5vcHNpcz4KIERFQ0xBUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPiBbIEJJTkFSWSBdIFsgSU5TRU5TSVRJVkUgXSBbIFsgTk8g XSBTQ1JPTEwgXQotICAgIENVUlNPUiBbIHsgV0lUSCB8IFdJVEhPVVQgfSBIT0xEIF0gRk9S IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdWVyeTwvcmVwbGFjZWFibGU+Cisg ICAgQ1VSU09SIFsgeyBXSVRIIHwgV0lUSE9VVCB9IEhPTEQgXSBbIHsgV0lUSCB8IFdJVEhP VVQgfSBSRVRVUk4gXQorICAgIEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cXVlcnk8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2Pgog CkBAIC0xMjAsNiArMTIxLDIyIEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+V0lUSCBSRVRVUk48L2xpdGVyYWw+PC90ZXJtPgorICAgIDx0 ZXJtPjxsaXRlcmFsPldJVEhPVVQgUkVUVVJOPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBm b3IgY3Vyc29ycyBkZWZpbmVkIGluc2lkZSBhIHByb2NlZHVyZS4KKyAgICAgIDxsaXRlcmFs PldJVEggUkVUVVJOPC9saXRlcmFsPiBzcGVjaWZpZXMgdGhhdCB0aGUgY3Vyc29yJ3MgcmVz dWx0IHJvd3MKKyAgICAgIHdpbGwgYmUgcHJvdmlkZWQgYXMgYSByZXN1bHQgc2V0IG9mIHRo ZSBwcm9jZWR1cmUgaW52b2NhdGlvbi4gIFRvCisgICAgICBhY2NvbXBsaXNoIHRoYXQsIHRo ZSBjdXJzb3IgbXVzdCBiZSBsZWZ0IG9wZW4gYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgIHBy b2NlZHVyZS4gIElmIG11bHRpcGxlIDxsaXRlcmFsPldJVEggUkVUVVJOPC9saXRlcmFsPiBj dXJzb3JzIGFyZQorICAgICAgZGVjbGFyZWQsIHRoZW4gdGhlaXIgcmVzdWx0cyB3aWxsIGJl IHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUKKyAgICAgIGNyZWF0ZWQuICA8bGl0 ZXJhbD5XSVRIT1VUIFJFVFVSTjwvbGl0ZXJhbD4gaXMgdGhlIGRlZmF1bHQuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnF1 ZXJ5PC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMzEzLDYgKzMz MCwyMSBAQCA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICAgU2VlIDx4cmVmIGxpbmtlbmQ9 InNxbC1mZXRjaCIvPiBmb3IgbW9yZQogICAgZXhhbXBsZXMgb2YgY3Vyc29yIHVzYWdlLgog ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGlzIGV4YW1wbGUgc2hvd3MgaG93IHRvIHJl dHVybiBtdWx0aXBsZSByZXN1bHQgc2V0cyBmcm9tIGEgcHJvY2VkdXJlOgorPHByb2dyYW1s aXN0aW5nPgorQ1JFQVRFIFBST0NFRFVSRSB0ZXN0KCkKK0xBTkdVQUdFIFNRTAorQVMgJCQK K0RFQ0xBUkUgYSBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gdGJsMTsK K0RFQ0xBUkUgYiBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gdGJsMjsK KyQkOworCitDQUxMIHRlc3QoKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICBUaGUgcmVzdWx0 cyBvZiB0aGUgdHdvIGN1cnNvcnMgd2lsbCBiZSByZXR1cm5lZCBpbiBvcmRlciBmcm9tIHRo aXMgY2FsbC4KKyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKaW5kZXggNTEzY2I5 YTY5Yy4uYzg4YTFjNGRlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZv cm1hdGlvbl9zY2hlbWEuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRp b25fc2NoZW1hLnNxbApAQCAtMTU4Niw3ICsxNTg2LDcgQEAgQ1JFQVRFIFZJRVcgcm91dGlu ZXMgQVMKICAgICAgICAgICAgICBDQVNFIFdIRU4gcC5wcm9pc3N0cmljdCBUSEVOICdZRVMn IEVMU0UgJ05PJyBFTkQgRU5EIEFTIHllc19vcl9ubykgQVMgaXNfbnVsbF9jYWxsLAogICAg ICAgICAgICBDQVNUKG51bGwgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIHNxbF9wYXRoLAogICAg ICAgICAgICBDQVNUKCdZRVMnIEFTIHllc19vcl9ubykgQVMgc2NoZW1hX2xldmVsX3JvdXRp bmUsCi0gICAgICAgICAgIENBU1QoMCBBUyBjYXJkaW5hbF9udW1iZXIpIEFTIG1heF9keW5h bWljX3Jlc3VsdF9zZXRzLAorICAgICAgICAgICBDQVNUKHAucHJvZHlucmVzIEFTIGNhcmRp bmFsX251bWJlcikgQVMgbWF4X2R5bmFtaWNfcmVzdWx0X3NldHMsCiAgICAgICAgICAgIENB U1QobnVsbCBBUyB5ZXNfb3Jfbm8pIEFTIGlzX3VzZXJfZGVmaW5lZF9jYXN0LAogICAgICAg ICAgICBDQVNUKG51bGwgQVMgeWVzX29yX25vKSBBUyBpc19pbXBsaWNpdGx5X2ludm9jYWJs ZSwKICAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gcC5wcm9zZWNkZWYgVEhFTiAnREVGSU5F UicgRUxTRSAnSU5WT0tFUicgRU5EIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBzZWN1cml0eV90 eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKaW5kZXggODlmMjNkMGFkZC4u ZTU1N2Q0Mzk0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdh dGUuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCkBAIC02Mzks NyArNjM5LDggQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJ CQkJIFBvaW50ZXJHZXREYXR1bShOVUxMKSwgLyogcHJvY29uZmlnICovCiAJCQkJCQkJIElu dmFsaWRPaWQsCS8qIG5vIHByb3N1cHBvcnQgKi8KIAkJCQkJCQkgMSwgLyogcHJvY29zdCAq LwotCQkJCQkJCSAwKTsJLyogcHJvcm93cyAqLworCQkJCQkJCSAwLAkvKiBwcm9yb3dzICov CisJCQkJCQkJIDApOwkvKiBwcm9keW5yZXMgKi8KIAlwcm9jT2lkID0gbXlzZWxmLm9iamVj dElkOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMKaW5kZXggZTE0ZWVlNWExOS4uMDUw MzMzOTNhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMKQEAgLTkxLDcgKzkxLDggQEAgUHJv Y2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2NlZHVyZU5hbWUsCiAJCQkJRGF0dW0gcHJv Y29uZmlnLAogCQkJCU9pZCBwcm9zdXBwb3J0LAogCQkJCWZsb2F0NCBwcm9jb3N0LAotCQkJ CWZsb2F0NCBwcm9yb3dzKQorCQkJCWZsb2F0NCBwcm9yb3dzLAorCQkJCWludCBkeW5yZXMp CiB7CiAJT2lkCQkJcmV0dmFsOwogCWludAkJCXBhcmFtZXRlckNvdW50OwpAQCAtMzEwLDYg KzMxMSw3IEBAIFByb2NlZHVyZUNyZWF0ZShjb25zdCBjaGFyICpwcm9jZWR1cmVOYW1lLAog CXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvcmV0c2V0IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0 dXJuc1NldCk7CiAJdmFsdWVzW0FudW1fcGdfcHJvY19wcm92b2xhdGlsZSAtIDFdID0gQ2hh ckdldERhdHVtKHZvbGF0aWxpdHkpOwogCXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvcGFyYWxs ZWwgLSAxXSA9IENoYXJHZXREYXR1bShwYXJhbGxlbCk7CisJdmFsdWVzW0FudW1fcGdfcHJv Y19wcm9keW5yZXMgLSAxXSA9IEludDMyR2V0RGF0dW0oZHlucmVzKTsKIAl2YWx1ZXNbQW51 bV9wZ19wcm9jX3Byb25hcmdzIC0gMV0gPSBVSW50MTZHZXREYXR1bShwYXJhbWV0ZXJDb3Vu dCk7CiAJdmFsdWVzW0FudW1fcGdfcHJvY19wcm9uYXJnZGVmYXVsdHMgLSAxXSA9IFVJbnQx NkdldERhdHVtKGxpc3RfbGVuZ3RoKHBhcmFtZXRlckRlZmF1bHRzKSk7CiAJdmFsdWVzW0Fu dW1fcGdfcHJvY19wcm9yZXR0eXBlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHJldHVyblR5 cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0 IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CmluZGV4IDMyZWVkOTg4 YWIuLjk0ZDBhNDQ5NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2Zl YXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK QEAgLTQ4NSw3ICs0ODUsNyBAQCBUNDMzCU11bHRpYXJndW1lbnQgR1JPVVBJTkcgZnVuY3Rp b24JCQlZRVMKIFQ0MzQJR1JPVVAgQlkgRElTVElOQ1QJCQlOTwkKIFQ0NDEJQUJTIGFuZCBN T0QgZnVuY3Rpb25zCQkJWUVTCQogVDQ2MQlTeW1tZXRyaWMgQkVUV0VFTiBwcmVkaWNhdGUJ CQlZRVMJCi1UNDcxCVJlc3VsdCBzZXRzIHJldHVybiB2YWx1ZQkJCU5PCQorVDQ3MQlSZXN1 bHQgc2V0cyByZXR1cm4gdmFsdWUJCQlOTwlwYXJ0aWFsbHkgc3VwcG9ydGVkCiBUNDcyCURF U0NSSUJFIENVUlNPUgkJCU5PCQogVDQ5MQlMQVRFUkFMIGRlcml2ZWQgdGFibGUJCQlZRVMJ CiBUNDk1CUNvbWJpbmVkIGRhdGEgY2hhbmdlIGFuZCByZXRyaWV2YWwJCQlOTwlkaWZmZXJl bnQgc3ludGF4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jCmluZGV4IDdhNGUx MDQ2MjMuLjQzN2JkZGQ0MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1 bmN0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5j CkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9wb3J0YWwuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC00 NzgsNyArNDc5LDggQEAgY29tcHV0ZV9jb21tb25fYXR0cmlidXRlKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCSBEZWZFbGVtICoqY29zdF9pdGVtLAogCQkJCQkJIERlZkVsZW0gKipy b3dzX2l0ZW0sCiAJCQkJCQkgRGVmRWxlbSAqKnN1cHBvcnRfaXRlbSwKLQkJCQkJCSBEZWZF bGVtICoqcGFyYWxsZWxfaXRlbSkKKwkJCQkJCSBEZWZFbGVtICoqcGFyYWxsZWxfaXRlbSwK KwkJCQkJCSBEZWZFbGVtICoqZHlucmVzX2l0ZW0pCiB7CiAJaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInZvbGF0aWxpdHkiKSA9PSAwKQogCXsKQEAgLTU1NCw2ICs1NTYsMTUgQEAg Y29tcHV0ZV9jb21tb25fYXR0cmlidXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkqcGFy YWxsZWxfaXRlbSA9IGRlZmVsOwogCX0KKwllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJkeW5hbWljX3Jlc3VsdF9zZXRzIikgPT0gMCkKKwl7CisJCWlmICghaXNfcHJvY2Vk dXJlKQorCQkJZ290byBmdW5jdGlvbl9lcnJvcjsKKwkJaWYgKCpkeW5yZXNfaXRlbSkKKwkJ CWdvdG8gZHVwbGljYXRlX2Vycm9yOworCisJCSpkeW5yZXNfaXRlbSA9IGRlZmVsOworCX0K IAllbHNlCiAJCXJldHVybiBmYWxzZTsKIApAQCAtNTY3LDYgKzU3OCwxMyBAQCBjb21wdXRl X2NvbW1vbl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKIAlyZXR1cm4gZmFsc2U7CQkJ CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAorZnVuY3Rpb25fZXJyb3I6CisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklU SU9OKSwKKwkJCSBlcnJtc2coImludmFsaWQgYXR0cmlidXRlIGluIGZ1bmN0aW9uIGRlZmlu aXRpb24iKSwKKwkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRp b24pKSk7CisJcmV0dXJuIGZhbHNlOworCiBwcm9jZWR1cmVfZXJyb3I6CiAJZXJlcG9ydChF UlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9O KSwKQEAgLTcwMyw3ICs3MjEsOCBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCWZsb2F0NCAqcHJvY29zdCwKIAkJCQkJCQlmbG9h dDQgKnByb3Jvd3MsCiAJCQkJCQkJT2lkICpwcm9zdXBwb3J0LAotCQkJCQkJCWNoYXIgKnBh cmFsbGVsX3ApCisJCQkJCQkJY2hhciAqcGFyYWxsZWxfcCwKKwkJCQkJCQlpbnQgKmR5bnJl c19wKQogewogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAlEZWZFbGVtICAgICphc19pdGVtID0g TlVMTDsKQEAgLTcxOSw2ICs3MzgsNyBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCURlZkVsZW0gICAgKnJvd3NfaXRlbSA9IE5VTEw7CiAJ RGVmRWxlbSAgICAqc3VwcG9ydF9pdGVtID0gTlVMTDsKIAlEZWZFbGVtICAgICpwYXJhbGxl bF9pdGVtID0gTlVMTDsKKwlEZWZFbGVtICAgICpkeW5yZXNfaXRlbSA9IE5VTEw7CiAKIAlm b3JlYWNoKG9wdGlvbiwgb3B0aW9ucykKIAl7CkBAIC03NzYsNyArNzk2LDggQEAgY29tcHV0 ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkg ICZjb3N0X2l0ZW0sCiAJCQkJCQkJCQkJICAmcm93c19pdGVtLAogCQkJCQkJCQkJCSAgJnN1 cHBvcnRfaXRlbSwKLQkJCQkJCQkJCQkgICZwYXJhbGxlbF9pdGVtKSkKKwkJCQkJCQkJCQkg ICZwYXJhbGxlbF9pdGVtLAorCQkJCQkJCQkJCSAgJmR5bnJlc19pdGVtKSkKIAkJewogCQkJ LyogcmVjb2duaXplZCBjb21tb24gb3B0aW9uICovCiAJCQljb250aW51ZTsKQEAgLTg0Miw2 ICs4NjMsMTEgQEAgY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJKnByb3N1cHBvcnQgPSBpbnRlcnByZXRfZnVuY19zdXBwb3J0KHN1cHBvcnRf aXRlbSk7CiAJaWYgKHBhcmFsbGVsX2l0ZW0pCiAJCSpwYXJhbGxlbF9wID0gaW50ZXJwcmV0 X2Z1bmNfcGFyYWxsZWwocGFyYWxsZWxfaXRlbSk7CisJaWYgKGR5bnJlc19pdGVtKQorCXsK KwkJKmR5bnJlc19wID0gaW50VmFsKGR5bnJlc19pdGVtLT5hcmcpOworCQlBc3NlcnQoKmR5 bnJlc19wID49IDApOwkvKiBlbmZvcmNlZCBieSBwYXJzZXIgKi8KKwl9CiB9CiAKIApAQCAt OTUwLDYgKzk3Niw3IEBAIENyZWF0ZUZ1bmN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlRnVuY3Rpb25TdG10ICpzdG10KQogCUZvcm1fcGdfbGFuZ3VhZ2UgbGFuZ3VhZ2VTdHJ1 Y3Q7CiAJTGlzdAkgICAqYXNfY2xhdXNlOwogCWNoYXIJCXBhcmFsbGVsOworCWludAkJCWR5 bnJlczsKIAogCS8qIENvbnZlcnQgbGlzdCBvZiBuYW1lcyB0byBhIG5hbWUgYW5kIG5hbWVz cGFjZSAqLwogCW5hbWVzcGFjZUlkID0gUXVhbGlmaWVkTmFtZUdldENyZWF0aW9uTmFtZXNw YWNlKHN0bXQtPmZ1bmNuYW1lLApAQCAtOTcyLDYgKzk5OSw3IEBAIENyZWF0ZUZ1bmN0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlRnVuY3Rpb25TdG10ICpzdG10KQogCXByb3Jv d3MgPSAtMTsJCQkJLyogaW5kaWNhdGVzIG5vdCBzZXQgKi8KIAlwcm9zdXBwb3J0ID0gSW52 YWxpZE9pZDsKIAlwYXJhbGxlbCA9IFBST1BBUkFMTEVMX1VOU0FGRTsKKwlkeW5yZXMgPSAw OwogCiAJLyogRXh0cmFjdCBub24tZGVmYXVsdCBhdHRyaWJ1dGVzIGZyb20gc3RtdC0+b3B0 aW9ucyBsaXN0ICovCiAJY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKHBzdGF0ZSwKQEAg LTk4MSw3ICsxMDA5LDcgQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVGdW5jdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkJCSZpc1dpbmRvd0Z1bmMsICZ2b2xh dGlsaXR5LAogCQkJCQkJCQkmaXNTdHJpY3QsICZzZWN1cml0eSwgJmlzTGVha1Byb29mLAog CQkJCQkJCQkmcHJvY29uZmlnLCAmcHJvY29zdCwgJnByb3Jvd3MsCi0JCQkJCQkJCSZwcm9z dXBwb3J0LCAmcGFyYWxsZWwpOworCQkJCQkJCQkmcHJvc3VwcG9ydCwgJnBhcmFsbGVsLCAm ZHlucmVzKTsKIAogCS8qIExvb2sgdXAgdGhlIGxhbmd1YWdlIGFuZCB2YWxpZGF0ZSBwZXJt aXNzaW9ucyAqLwogCWxhbmd1YWdlVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoTEFOR05BTUUs IFBvaW50ZXJHZXREYXR1bShsYW5ndWFnZSkpOwpAQCAtMTE3MCw3ICsxMTk4LDggQEAgQ3Jl YXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0 bXQpCiAJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocHJvY29uZmlnKSwKIAkJCQkJCSAgIHBy b3N1cHBvcnQsCiAJCQkJCQkgICBwcm9jb3N0LAotCQkJCQkJICAgcHJvcm93cyk7CisJCQkJ CQkgICBwcm9yb3dzLAorCQkJCQkJICAgZHlucmVzKTsKIH0KIAogLyoKQEAgLTEyNDUsNiAr MTI3NCw3IEBAIEFsdGVyRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZ1bmN0 aW9uU3RtdCAqc3RtdCkKIAlEZWZFbGVtICAgICpyb3dzX2l0ZW0gPSBOVUxMOwogCURlZkVs ZW0gICAgKnN1cHBvcnRfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqcGFyYWxsZWxfaXRl bSA9IE5VTEw7CisJRGVmRWxlbSAgICAqZHlucmVzX2l0ZW0gPSBOVUxMOwogCU9iamVjdEFk ZHJlc3MgYWRkcmVzczsKIAogCXJlbCA9IHRhYmxlX29wZW4oUHJvY2VkdXJlUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CkBAIC0xMjg4LDcgKzEzMTgsOCBAQCBBbHRlckZ1bmN0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJGdW5jdGlvblN0bXQgKnN0bXQpCiAJCQkJ CQkJCQkgJmNvc3RfaXRlbSwKIAkJCQkJCQkJCSAmcm93c19pdGVtLAogCQkJCQkJCQkJICZz dXBwb3J0X2l0ZW0sCi0JCQkJCQkJCQkgJnBhcmFsbGVsX2l0ZW0pID09IGZhbHNlKQorCQkJ CQkJCQkJICZwYXJhbGxlbF9pdGVtLAorCQkJCQkJCQkJICZkeW5yZXNfaXRlbSkgPT0gZmFs c2UpCiAJCQllbG9nKEVSUk9SLCAib3B0aW9uIFwiJXNcIiBub3QgcmVjb2duaXplZCIsIGRl ZmVsLT5kZWZuYW1lKTsKIAl9CiAKQEAgLTEzODQsNiArMTQxNSw4IEBAIEFsdGVyRnVuY3Rp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZ1bmN0aW9uU3RtdCAqc3RtdCkKIAl9CiAJ aWYgKHBhcmFsbGVsX2l0ZW0pCiAJCXByb2NGb3JtLT5wcm9wYXJhbGxlbCA9IGludGVycHJl dF9mdW5jX3BhcmFsbGVsKHBhcmFsbGVsX2l0ZW0pOworCWlmIChkeW5yZXNfaXRlbSkKKwkJ cHJvY0Zvcm0tPnByb2R5bnJlcyA9IGludFZhbChkeW5yZXNfaXRlbS0+YXJnKTsKIAogCS8q IERvIHRoZSB1cGRhdGUgKi8KIAlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3Nl bGYsIHR1cCk7CkBAIC0yMDI3LDYgKzIwNjAsMjQgQEAgRXhlY3V0ZURvU3RtdChEb1N0bXQg KnN0bXQsIGJvb2wgYXRvbWljKQogCU9pZEZ1bmN0aW9uQ2FsbDEobGFuaW5saW5lLCBQb2lu dGVyR2V0RGF0dW0oY29kZWJsb2NrKSk7CiB9CiAKK3N0YXRpYyBMaXN0ICpwcm9jZWR1cmVf c3RhY2s7CisKK09pZAorQ3VycmVudFByb2NlZHVyZSh2b2lkKQoreworCWlmICghcHJvY2Vk dXJlX3N0YWNrKQorCQlyZXR1cm4gSW52YWxpZE9pZDsKKwllbHNlCisJCXJldHVybiBsbGFz dF9vaWQocHJvY2VkdXJlX3N0YWNrKTsKK30KKwordm9pZAorUHJvY2VkdXJlQ2FsbHNDbGVh bnVwKHZvaWQpCit7CisJLyogVGhlIGNvbnRlbnQgb2YgdGhpcyBpcyBmcmVlZCBieSBtZW1v cnkgY2xlYW51cC4gKi8KKwlwcm9jZWR1cmVfc3RhY2sgPSBOSUw7Cit9CisKIC8qCiAgKiBF eGVjdXRlIENBTEwgc3RhdGVtZW50CiAgKgpAQCAtMjA2OSw2ICsyMTIwLDcgQEAgRXhlY3V0 ZUNhbGxTdG10KENhbGxTdG10ICpzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgYm9vbCBh dG9taWMsIERlc3RSZWNlaXZlcgogCWNoYXIJICAgKmFyZ21vZGVzOwogCUZtZ3JJbmZvCWZs aW5mbzsKIAlDYWxsQ29udGV4dCAqY2FsbGNvbnRleHQ7CisJaW50CQkJcHJvZHlucmVzOwog CUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlIZWFwVHVw bGUJdHA7CkBAIC0yMTA5LDYgKzIxNjEsOCBAQCBFeGVjdXRlQ2FsbFN0bXQoQ2FsbFN0bXQg KnN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBib29sIGF0b21pYywgRGVzdFJlY2VpdmVy CiAJaWYgKCgoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QodHApKS0+cHJvc2VjZGVmKQogCQlj YWxsY29udGV4dC0+YXRvbWljID0gdHJ1ZTsKIAorCXByb2R5bnJlcyA9ICgoRm9ybV9wZ19w cm9jKSBHRVRTVFJVQ1QodHApKS0+cHJvZHlucmVzOworCiAJLyoKIAkgKiBFeHBhbmQgbmFt ZWQgYXJndW1lbnRzLCBkZWZhdWx0cywgZXRjLiAgV2UgZG8gbm90IHdhbnQgdG8gc2NyaWJi bGUgb24KIAkgKiB0aGUgcGFzc2VkLWluIENhbGxTdG10IHBhcnNlIHRyZWUsIHNvIGZpcnN0 IGZsYXQtY29weSBmZXhwciwgYWxsb3dpbmcKQEAgLTIxODAsOSArMjIzNCwxMSBAQCBFeGVj dXRlQ2FsbFN0bXQoQ2FsbFN0bXQgKnN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBib29s IGF0b21pYywgRGVzdFJlY2VpdmVyCiAJCWkrKzsKIAl9CiAKKwlwcm9jZWR1cmVfc3RhY2sg PSBsYXBwZW5kX29pZChwcm9jZWR1cmVfc3RhY2ssIGZleHByLT5mdW5jaWQpOwogCXBnc3Rh dF9pbml0X2Z1bmN0aW9uX3VzYWdlKGZjaW5mbywgJmZjdXNhZ2UpOwogCXJldHZhbCA9IEZ1 bmN0aW9uQ2FsbEludm9rZShmY2luZm8pOwogCXBnc3RhdF9lbmRfZnVuY3Rpb25fdXNhZ2Uo JmZjdXNhZ2UsIHRydWUpOworCXByb2NlZHVyZV9zdGFjayA9IGxpc3RfZGVsZXRlX2xhc3Qo cHJvY2VkdXJlX3N0YWNrKTsKIAogCWlmIChmZXhwci0+ZnVuY3Jlc3VsdHR5cGUgPT0gVk9J RE9JRCkKIAl7CkBAIC0yMjMwLDYgKzIyODYsMTMgQEAgRXhlY3V0ZUNhbGxTdG10KENhbGxT dG10ICpzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgYm9vbCBhdG9taWMsIERlc3RSZWNl aXZlcgogCQkJIGZleHByLT5mdW5jcmVzdWx0dHlwZSk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0 ZShlc3RhdGUpOworCisJQ2xvc2VPdGhlclJldHVybmFibGVDdXJzb3JzKGZleHByLT5mdW5j aWQpOworCisJaWYgKGxpc3RfbGVuZ3RoKEdldFJldHVybmFibGVDdXJzb3JzKCkpID4gcHJv ZHlucmVzKQorCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJZXJyY29kZShFUlJDT0RFX1dBUk5J TkdfQVRURU1QVF9UT19SRVRVUk5fVE9PX01BTllfUkVTVUxUX1NFVFMpLAorCQkJCWVycm1z ZygiYXR0ZW1wdCB0byByZXR1cm4gdG9vIG1hbnkgcmVzdWx0IHNldHMiKSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggNmYyMzk3YmQzNi4uY2I3YWFj ZDVjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMjQsNiArMjQsNyBA QAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9wb3J0YWxj bWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVj dXRvci90c3RvcmVSZWNlaXZlci5oIgpAQCAtMTQ2LDYgKzE0NywyOCBAQCBQZXJmb3JtQ3Vy c29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwg UGFyYW1MaXN0SW5mbyBwYQogCQkJcG9ydGFsLT5jdXJzb3JPcHRpb25zIHw9IENVUlNPUl9P UFRfTk9fU0NST0xMOwogCX0KIAorCS8qCisJICogRm9yIHJldHVybmFibGUgY3Vyc29ycywg cmVtZW1iZXIgdGhlIGN1cnJlbnRseSBhY3RpdmUgcHJvY2VkdXJlLCBhcworCSAqIHdlbGwg YXMgdGhlIGNvbW1hbmQgSUQsIHNvIHdlIGNhbiBzb3J0IGJ5IGNyZWF0aW9uIG9yZGVyIGxh dGVyLiAgSWYKKwkgKiB0aGVyZSBpcyBubyBwcm9jZWR1cmUgYWN0aXZlLCB0aGUgY3Vyc29y IGlzIG1hcmtlZCBhcyBXSVRIT1VUIFJFVFVSTi4KKwkgKiAoVGhpcyBpcyBub3QgYW4gZXJy b3IsIHBlciBTUUwgc3RhbmRhcmQsIHN1YmNsYXVzZSAiRWZmZWN0IG9mIG9wZW5pbmcgYQor CSAqIGN1cnNvciIuKQorCSAqLworCWlmIChwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJT T1JfT1BUX1JFVFVSTikKKwl7CisJCU9pZAkJCXByb2NJZCA9IEN1cnJlbnRQcm9jZWR1cmUo KTsKKworCQlpZiAocHJvY0lkKQorCQl7CisJCQlwb3J0YWwtPnByb2NJZCA9IHByb2NJZDsK KwkJCXBvcnRhbC0+Y3JlYXRlQ2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCXBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmPSB+Q1VSU09SX09Q VF9SRVRVUk47CisJCX0KKwl9CisKIAkvKgogCSAqIFN0YXJ0IGV4ZWN1dGlvbiwgaW5zZXJ0 aW5nIHBhcmFtZXRlcnMgaWYgYW55LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMK aW5kZXggNzYyMThmYjQ3ZS4uZTk1MTA1NTc0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21k cy5jCkBAIC0xNzkwLDcgKzE3OTAsOCBAQCBtYWtlUmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3Qg Y2hhciAqbmFtZSwgT2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShO VUxMKSwgLyogcHJvY29uZmlnICovCiAJCQkJCQkJCSBJbnZhbGlkT2lkLAkvKiBwcm9zdXBw b3J0ICovCiAJCQkJCQkJCSAxLjAsCS8qIHByb2Nvc3QgKi8KLQkJCQkJCQkJIDAuMCk7CS8q IHByb3Jvd3MgKi8KKwkJCQkJCQkJIDAuMCwJLyogcHJvcm93cyAqLworCQkJCQkJCQkgMCk7 CS8qIHByb2R5bnJlcyAqLwogCiAJCS8qCiAJCSAqIE1ha2UgdGhlIGNvbnN0cnVjdG9ycyBp bnRlcm5hbGx5LWRlcGVuZGVudCBvbiB0aGUgcmFuZ2UgdHlwZSBzbwpAQCAtMTg1NCw3ICsx ODU1LDggQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3QgY2hhciAqbmFtZSwg T2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAvKiBwcm9j b25maWcgKi8KIAkJCQkJCQkgSW52YWxpZE9pZCwJLyogcHJvc3VwcG9ydCAqLwogCQkJCQkJ CSAxLjAsCS8qIHByb2Nvc3QgKi8KLQkJCQkJCQkgMC4wKTsJLyogcHJvcm93cyAqLworCQkJ CQkJCSAwLjAsCS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMCk7CS8qIHByb2R5bnJlcyAqLwog CiAJLyoKIAkgKiBNYWtlIHRoZSBjb25zdHJ1Y3RvciBpbnRlcm5hbGx5LWRlcGVuZGVudCBv biB0aGUgbXVsdGlyYW5nZSB0eXBlIHNvCkBAIC0xODk3LDcgKzE4OTksOCBAQCBtYWtlTXVs dGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1lLCBPaWQgbmFtZXNwYWNlLAog CQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksIC8qIHByb2NvbmZpZyAqLwogCQkJCQkJ CSBJbnZhbGlkT2lkLAkvKiBwcm9zdXBwb3J0ICovCiAJCQkJCQkJIDEuMCwJLyogcHJvY29z dCAqLwotCQkJCQkJCSAwLjApOwkvKiBwcm9yb3dzICovCisJCQkJCQkJIDAuMCwJLyogcHJv cm93cyAqLworCQkJCQkJCSAwKTsJLyogcHJvZHlucmVzICovCiAJLyogZGl0dG8gKi8KIAly ZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfSU5U RVJOQUwpOwogCXBmcmVlKGFyZ3R5cGVzKTsKQEAgLTE5MzcsNyArMTk0MCw4IEBAIG1ha2VN dWx0aXJhbmdlQ29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1lc3BhY2Us CiAJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShOVUxMKSwgLyogcHJvY29uZmlnICovCiAJCQkJ CQkJIEludmFsaWRPaWQsCS8qIHByb3N1cHBvcnQgKi8KIAkJCQkJCQkgMS4wLAkvKiBwcm9j b3N0ICovCi0JCQkJCQkJIDAuMCk7CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMC4wLAkvKiBw cm9yb3dzICovCisJCQkJCQkJIDApOwkvKiBwcm9keW5yZXMgKi8KIAkvKiBkaXR0byAqLwog CXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9J TlRFUk5BTCk7CiAJcGZyZWUoYXJndHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjUyYmUw Yjk2ZC4uOWUxMzQyNGZmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NDAsNyArNjQwLDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlEQVRBX1AgREFUQUJBU0UgREFZX1AgREVB TExPQ0FURSBERUMgREVDSU1BTF9QIERFQ0xBUkUgREVGQVVMVCBERUZBVUxUUwogCURFRkVS UkFCTEUgREVGRVJSRUQgREVGSU5FUiBERUxFVEVfUCBERUxJTUlURVIgREVMSU1JVEVSUyBE RVBFTkRTIERFUFRIIERFU0MKIAlERVRBQ0ggRElDVElPTkFSWSBESVNBQkxFX1AgRElTQ0FS RCBESVNUSU5DVCBETyBET0NVTUVOVF9QIERPTUFJTl9QCi0JRE9VQkxFX1AgRFJPUAorCURP VUJMRV9QIERST1AgRFlOQU1JQwogCiAJRUFDSCBFTFNFIEVOQUJMRV9QIEVOQ09ESU5HIEVO Q1JZUFRFRCBFTkRfUCBFTlVNX1AgRVNDQVBFIEVWRU5UIEVYQ0VQVAogCUVYQ0xVREUgRVhD TFVESU5HIEVYQ0xVU0lWRSBFWEVDVVRFIEVYSVNUUyBFWFBMQUlOIEVYUFJFU1NJT04KQEAg LTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJUkFOR0Ug UkVBRCBSRUFMIFJFQVNTSUdOIFJFQ0hFQ0sgUkVDVVJTSVZFIFJFRiBSRUZFUkVOQ0VTIFJF RkVSRU5DSU5HCiAJUkVGUkVTSCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUg UkVQRUFUQUJMRSBSRVBMQUNFIFJFUExJQ0EKLQlSRVNFVCBSRVNUQVJUIFJFU1RSSUNUIFJF VFVSTklORyBSRVRVUk5TIFJFVk9LRSBSSUdIVCBST0xFIFJPTExCQUNLIFJPTExVUAorCVJF U0VUIFJFU1RBUlQgUkVTVFJJQ1QgUkVTVUxUIFJFVFVSTiBSRVRVUk5JTkcgUkVUVVJOUyBS RVZPS0UgUklHSFQgUk9MRSBST0xMQkFDSyBST0xMVVAKIAlST1VUSU5FIFJPVVRJTkVTIFJP VyBST1dTIFJVTEUKIAogCVNBVkVQT0lOVCBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNI IFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVCBTRVFVRU5DRSBTRVFVRU5DRVMKQEAgLTc4MzQs NiArNzgzNCwxMCBAQCBjb21tb25fZnVuY19vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0g bWFrZURlZkVsZW0oInBhcmFsbGVsIiwgKE5vZGUgKiltYWtlU3RyaW5nKCQyKSwgQDEpOwog CQkJCX0KKwkJCXwgRFlOQU1JQyBSRVNVTFQgU0VUUyBJY29uc3QKKwkJCQl7CisJCQkJCSQk ID0gbWFrZURlZkVsZW0oImR5bmFtaWNfcmVzdWx0X3NldHMiLCAoTm9kZSAqKW1ha2VJbnRl Z2VyKCQ0KSwgQDEpOworCQkJCX0KIAkJOwogCiBjcmVhdGVmdW5jX29wdF9pdGVtOgpAQCAt MTExMjUsNiArMTExMjksMTIgQEAgY3Vyc29yX29wdGlvbnM6IC8qRU1QVFkqLwkJCQkJeyAk JCA9IDA7IH0KIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8 IFdJVEggSE9MRAkJCQkJCXsgJCQgPSBDVVJTT1JfT1BUX0hPTEQ7IH0KIAkJCXwgV0lUSE9V VCBIT0xECQkJCQl7ICQkID0gMDsgfQorCQkJfCBXSVRIIEhPTEQgV0lUSCBSRVRVUk4JCQl7 ICQkID0gQ1VSU09SX09QVF9IT0xEIHwgQ1VSU09SX09QVF9SRVRVUk47IH0KKwkJCXwgV0lU SE9VVCBIT0xEIFdJVEggUkVUVVJOCQl7ICQkID0gQ1VSU09SX09QVF9SRVRVUk47IH0KKwkJ CXwgV0lUSCBIT0xEIFdJVEhPVVQgUkVUVVJOCQl7ICQkID0gQ1VSU09SX09QVF9IT0xEOyB9 CisJCQl8IFdJVEhPVVQgSE9MRCBXSVRIT1VUIFJFVFVSTgl7ICQkID0gMDsgfQorCQkJfCBX SVRIIFJFVFVSTgkJCQkJeyAkJCA9IENVUlNPUl9PUFRfUkVUVVJOOyB9CisJCQl8IFdJVEhP VVQgUkVUVVJOCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCkBAIC0xNTMzMSw2ICsxNTM0MSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwg RE9NQUlOX1AKIAkJCXwgRE9VQkxFX1AKIAkJCXwgRFJPUAorCQkJfCBEWU5BTUlDCiAJCQl8 IEVBQ0gKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJTkcKQEAgLTE1NDcyLDYgKzE1NDgz LDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBSRVNFVAogCQkJfCBSRVNUQVJUCiAJ CQl8IFJFU1RSSUNUCisJCQl8IFJFU1VMVAorCQkJfCBSRVRVUk4KIAkJCXwgUkVUVVJOUwog CQkJfCBSRVZPS0UKIAkJCXwgUk9MRQpAQCAtMTU4NjcsNiArMTU4ODAsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IERPTUFJTl9QCiAJCQl8IERPVUJMRV9QCiAJCQl8IERST1AK KwkJCXwgRFlOQU1JQwogCQkJfCBFQUNICiAJCQl8IEVMU0UKIAkJCXwgRU5BQkxFX1AKQEAg LTE2MDUwLDYgKzE2MDY0LDggQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBSRVNFVAog CQkJfCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCisJCQl8IFJFU1VMVAorCQkJfCBSRVRVUk4K IAkJCXwgUkVUVVJOUwogCQkJfCBSRVZPS0UKIAkJCXwgUklHSFQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwppbmRleCA4YTAzMzJkZGU5Li41NmRjMzVjNjhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIK ICNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0x MDA5LDYgKzEwMTAsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcpCiAJCVBvcnRhbAkJcG9ydGFsOwogCQlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwog CQlpbnQxNgkJZm9ybWF0OworCQlMaXN0Q2VsbCAgICpsYzsKIAogCQkvKgogCQkgKiBHZXQg dGhlIGNvbW1hbmQgbmFtZSBmb3IgdXNlIGluIHN0YXR1cyBkaXNwbGF5IChpdCBhbHNvIGJl Y29tZXMgdGhlCkBAIC0xMTY4LDcgKzExNzAsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKIAogCQkvKgotCQkgKiBSdW4gdGhlIHBvcnRhbCB0byBjb21wbGV0aW9uLCBhbmQg dGhlbiBkcm9wIGl0IChhbmQgdGhlIHJlY2VpdmVyKS4KKwkJICogUnVuIHRoZSBwb3J0YWwg dG8gY29tcGxldGlvbiwgYW5kIHRoZW4gZHJvcCBpdC4KIAkJICovCiAJCSh2b2lkKSBQb3J0 YWxSdW4ocG9ydGFsLAogCQkJCQkJIEZFVENIX0FMTCwKQEAgLTExNzgsMTAgKzExODAsMzQg QEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkJCQkJ IHJlY2VpdmVyLAogCQkJCQkJICZxYyk7CiAKLQkJcmVjZWl2ZXItPnJEZXN0cm95KHJlY2Vp dmVyKTsKLQogCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwogCisJCS8qCisJCSAqIFJ1 biBwb3J0YWxzIGZvciBkeW5hbWljIHJlc3VsdCBzZXRzLgorCQkgKi8KKwkJZm9yZWFjaCAo bGMsIEdldFJldHVybmFibGVDdXJzb3JzKCkpCisJCXsKKwkJCVBvcnRhbCBwb3J0YWwgPSBs Zmlyc3QobGMpOworCisJCQlpZiAoZGVzdCA9PSBEZXN0UmVtb3RlKQorCQkJCVNldFJlbW90 ZURlc3RSZWNlaXZlclBhcmFtcyhyZWNlaXZlciwgcG9ydGFsKTsKKworCQkJUG9ydGFsUnVu KHBvcnRhbCwKKwkJCQkJICBGRVRDSF9BTEwsCisJCQkJCSAgdHJ1ZSwKKwkJCQkJICB0cnVl LAorCQkJCQkgIHJlY2VpdmVyLAorCQkJCQkgIHJlY2VpdmVyLAorCQkJCQkgIE5VTEwpOwor CisJCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQl9CisKKwkJLyoKKwkJICogRHJv cCB0aGUgcmVjZWl2ZXIuCisJCSAqLworCQlyZWNlaXZlci0+ckRlc3Ryb3kocmVjZWl2ZXIp OworCiAJCWlmIChsbmV4dChwYXJzZXRyZWVfbGlzdCwgcGFyc2V0cmVlX2l0ZW0pID09IE5V TEwpCiAJCXsKIAkJCS8qCkBAIC0xOTgyLDYgKzIwMDgsNyBAQCBleGVjX2V4ZWN1dGVfbWVz c2FnZShjb25zdCBjaGFyICpwb3J0YWxfbmFtZSwgbG9uZyBtYXhfcm93cykKIAljb25zdCBj aGFyICpzb3VyY2VUZXh0OwogCWNvbnN0IGNoYXIgKnByZXBTdG10TmFtZTsKIAlQYXJhbUxp c3RJbmZvIHBvcnRhbFBhcmFtczsKKwlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQlzYXZlX2xv Z19zdGF0ZW1lbnRfc3RhdHMgPSBsb2dfc3RhdGVtZW50X3N0YXRzOwogCWJvb2wJCWlzX3hh Y3RfY29tbWFuZDsKIAlib29sCQlleGVjdXRlX2lzX2ZldGNoOwpAQCAtMjEzNCw2ICsyMTYx LDM0IEBAIGV4ZWNfZXhlY3V0ZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnBvcnRhbF9uYW1lLCBs b25nIG1heF9yb3dzKQogCQkJCQkJICByZWNlaXZlciwKIAkJCQkJCSAgJnFjKTsKIAorCS8q CisJICogUnVuIHBvcnRhbHMgZm9yIGR5bmFtaWMgcmVzdWx0IHNldHMuCisJICovCisJZm9y ZWFjaCAobGMsIEdldFJldHVybmFibGVDdXJzb3JzKCkpCisJeworCQlQb3J0YWwgZHluX3Bv cnRhbCA9IGxmaXJzdChsYyk7CisKKwkJaWYgKGRlc3QgPT0gRGVzdFJlbW90ZSkKKwkJCVNl dFJlbW90ZURlc3RSZWNlaXZlclBhcmFtcyhyZWNlaXZlciwgZHluX3BvcnRhbCk7CisKKwkJ UG9ydGFsU2V0UmVzdWx0Rm9ybWF0KGR5bl9wb3J0YWwsIDEsICZwb3J0YWwtPmR5bmFtaWNf Zm9ybWF0KTsKKworCQlTZW5kUm93RGVzY3JpcHRpb25NZXNzYWdlKCZyb3dfZGVzY3JpcHRp b25fYnVmLAorCQkJCQkJCQkgIGR5bl9wb3J0YWwtPnR1cERlc2MsCisJCQkJCQkJCSAgRmV0 Y2hQb3J0YWxUYXJnZXRMaXN0KGR5bl9wb3J0YWwpLAorCQkJCQkJCQkgIGR5bl9wb3J0YWwt PmZvcm1hdHMpOworCisJCVBvcnRhbFJ1bihkeW5fcG9ydGFsLAorCQkJCSAgRkVUQ0hfQUxM LAorCQkJCSAgdHJ1ZSwKKwkJCQkgIHRydWUsCisJCQkJICByZWNlaXZlciwKKwkJCQkgIHJl Y2VpdmVyLAorCQkJCSAgTlVMTCk7CisKKwkJUG9ydGFsRHJvcChkeW5fcG9ydGFsLCBmYWxz ZSk7CisJfQorCiAJcmVjZWl2ZXItPnJEZXN0cm95KHJlY2VpdmVyKTsKIAogCS8qIERvbmUg ZXhlY3V0aW5nOyByZW1vdmUgdGhlIHBhcmFtcyBlcnJvciBjYWxsYmFjayAqLwpAQCAtNDA4 Myw2ICs0MTM4LDcgQEAgUG9zdGdyZXNNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAK IAkJUG9ydGFsRXJyb3JDbGVhbnVwKCk7CiAJCVNQSUNsZWFudXAoKTsKKwkJUHJvY2VkdXJl Q2FsbHNDbGVhbnVwKCk7CiAKIAkJLyoKIAkJICogV2UgY2FuJ3QgcmVsZWFzZSByZXBsaWNh dGlvbiBzbG90cyBpbnNpZGUgQWJvcnRUcmFuc2FjdGlvbigpIGFzIHdlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YwppbmRleCA0NGY1ZmU4ZmM5Li40ZDZiZTI0ZTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTYy OSw2ICs2MjksOCBAQCBQb3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50 IG5Gb3JtYXRzLCBpbnQxNiAqZm9ybWF0cykKIAkJCQkJIGVycm1zZygiYmluZCBtZXNzYWdl IGhhcyAlZCByZXN1bHQgZm9ybWF0cyBidXQgcXVlcnkgaGFzICVkIGNvbHVtbnMiLAogCQkJ CQkJCW5Gb3JtYXRzLCBuYXR0cykpKTsKIAkJbWVtY3B5KHBvcnRhbC0+Zm9ybWF0cywgZm9y bWF0cywgbmF0dHMgKiBzaXplb2YoaW50MTYpKTsKKworCQlwb3J0YWwtPmR5bmFtaWNfZm9y bWF0ID0gMDsKIAl9CiAJZWxzZSBpZiAobkZvcm1hdHMgPiAwKQogCXsKQEAgLTYzNywxMiAr NjM5LDE2IEBAIFBvcnRhbFNldFJlc3VsdEZvcm1hdChQb3J0YWwgcG9ydGFsLCBpbnQgbkZv cm1hdHMsIGludDE2ICpmb3JtYXRzKQogCiAJCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsr KQogCQkJcG9ydGFsLT5mb3JtYXRzW2ldID0gZm9ybWF0MTsKKworCQlwb3J0YWwtPmR5bmFt aWNfZm9ybWF0ID0gZm9ybWF0MTsKIAl9CiAJZWxzZQogCXsKIAkJLyogdXNlIGRlZmF1bHQg Zm9ybWF0IGZvciBhbGwgY29sdW1ucyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkr KykKIAkJCXBvcnRhbC0+Zm9ybWF0c1tpXSA9IDA7CisKKwkJcG9ydGFsLT5keW5hbWljX2Zv cm1hdCA9IDA7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJj b2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKaW5kZXggOTg3NGE3 NzgwNS4uYTQ1MDRiNjQzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29k ZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dApAQCAtODMsNiAr ODMsNyBAQCBTZWN0aW9uOiBDbGFzcyAwMSAtIFdhcm5pbmcKICMgZG8gbm90IHVzZSB0aGlz IGNsYXNzIGZvciBmYWlsdXJlIGNvbmRpdGlvbnMKIDAxMDAwICAgIFcgICAgRVJSQ09ERV9X QVJOSU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2FybmluZwogMDEwMEMgICAgVyAgICBFUlJDT0RFX1dBUk5JTkdfRFlOQU1JQ19SRVNVTFRf U0VUU19SRVRVUk5FRCAgICAgICAgICAgICAgICAgICBkeW5hbWljX3Jlc3VsdF9zZXRzX3Jl dHVybmVkCiswMTAwRSAgICBXICAgIEVSUkNPREVfV0FSTklOR19BVFRFTVBUX1RPX1JFVFVS Tl9UT09fTUFOWV9SRVNVTFRfU0VUUyAgICAgICAgIGF0dGVtcHRfdG9fcmV0dXJuX3Rvb19t YW55X3Jlc3VsdF9zZXRzCiAwMTAwOCAgICBXICAgIEVSUkNPREVfV0FSTklOR19JTVBMSUNJ VF9aRVJPX0JJVF9QQURESU5HICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0X3plcm9f Yml0X3BhZGRpbmcKIDAxMDAzICAgIFcgICAgRVJSQ09ERV9XQVJOSU5HX05VTExfVkFMVUVf RUxJTUlOQVRFRF9JTl9TRVRfRlVOQ1RJT04gICAgICAgICAgbnVsbF92YWx1ZV9lbGltaW5h dGVkX2luX3NldF9mdW5jdGlvbgogMDEwMDcgICAgVyAgICBFUlJDT0RFX1dBUk5JTkdfUFJJ VklMRUdFX05PVF9HUkFOVEVEICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2aWxlZ2Vf bm90X2dyYW50ZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFs bWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDY2ZTMx ODE4MTUuLjM5NTY4NGJmNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpA QCAtMTI3OCwzICsxMjc4LDUxIEBAIEhvbGRQaW5uZWRQb3J0YWxzKHZvaWQpCiAJCX0KIAl9 CiB9CisKK3N0YXRpYyBpbnQKK2NtcF9wb3J0YWxzX2J5X2NyZWF0aW9uKGNvbnN0IExpc3RD ZWxsICphLCBjb25zdCBMaXN0Q2VsbCAqYikKK3sKKwlQb3J0YWwJCXBhID0gbGZpcnN0KGEp OworCVBvcnRhbAkJcGIgPSBsZmlyc3QoYik7CisKKwlyZXR1cm4gcGEtPmNyZWF0ZUNpZCAt IHBiLT5jcmVhdGVDaWQ7Cit9CisKK0xpc3QgKgorR2V0UmV0dXJuYWJsZUN1cnNvcnModm9p ZCkKK3sKKwlMaXN0CSAgICpyZXQgPSBOSUw7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK KwlQb3J0YWxIYXNoRW50ICpoZW50cnk7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBv cnRhbEhhc2hUYWJsZSk7CisKKwl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCVBvcnRhbAkJcG9y dGFsID0gaGVudHJ5LT5wb3J0YWw7CisKKwkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAm IENVUlNPUl9PUFRfUkVUVVJOKQorCQkJcmV0ID0gbGFwcGVuZChyZXQsIHBvcnRhbCk7CisJ fQorCisJbGlzdF9zb3J0KHJldCwgY21wX3BvcnRhbHNfYnlfY3JlYXRpb24pOworCisJcmV0 dXJuIHJldDsKK30KKwordm9pZAorQ2xvc2VPdGhlclJldHVybmFibGVDdXJzb3JzKE9pZCBw cm9jaWQpCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlQb3J0YWxIYXNoRW50ICpo ZW50cnk7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7CisK Kwl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0 YWw7CisKKwkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfUkVUVVJO ICYmIHBvcnRhbC0+cHJvY0lkICE9IHByb2NpZCkKKwkJCVBvcnRhbERyb3AocG9ydGFsLCBm YWxzZSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZWI5ODhkN2ViNC4uNzg3ZWRjOTJh MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMTk5Niw2ICsxMTk5Niw3IEBAIGR1bXBGdW5jKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IEZ1bmNJbmZvICpmaW5mbykKIAljaGFyCSAgICpwcm9yb3dz OwogCWNoYXIJICAgKnByb3N1cHBvcnQ7CiAJY2hhcgkgICAqcHJvcGFyYWxsZWw7CisJaW50 CQkJcHJvZHlucmVzOwogCWNoYXIJICAgKmxhbm5hbWU7CiAJY2hhcgkgICAqcmV0dHlwZW5h bWU7CiAJaW50CQkJbmFsbGFyZ3M7CkBAIC0xMjA5MCwxMCArMTIwOTEsMTcgQEAgZHVtcEZ1 bmMoQXJjaGl2ZSAqZm91dCwgY29uc3QgRnVuY0luZm8gKmZpbmZvKQogCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTIwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwKLQkJCQkJCQkgInByb3N1cHBvcnRcbiIpOworCQkJCQkJCSAicHJvc3VwcG9ydCxcbiIp OwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICInLScg QVMgcHJvc3VwcG9ydFxuIik7CisJCQkJCQkJICInLScgQVMgcHJvc3VwcG9ydCxcbiIpOwor CisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgInByb2R5bnJlc1xuIik7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIjAgQVMgcHJvZHlucmVzXG4iKTsK IAogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfcHJvYyAiCkBAIC0xMjEzMyw2ICsxMjE0MSw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZv dXQsIGNvbnN0IEZ1bmNJbmZvICpmaW5mbykKIAlwcm9yb3dzID0gUFFnZXR2YWx1ZShyZXMs IDAsIFBRZm51bWJlcihyZXMsICJwcm9yb3dzIikpOwogCXByb3N1cHBvcnQgPSBQUWdldHZh bHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb3N1cHBvcnQiKSk7CiAJcHJvcGFyYWxs ZWwgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb3BhcmFsbGVsIikp OworCXByb2R5bnJlcyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMs ICJwcm9keW5yZXMiKSkpOwogCWxhbm5hbWUgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVt YmVyKHJlcywgImxhbm5hbWUiKSk7CiAKIAkvKgpAQCAtMTIzMDksNiArMTIzMTgsOSBAQCBk dW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAJaWYgKHBy b2lzc3RyaWN0WzBdID09ICd0JykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBTVFJJ Q1QiKTsKIAorCWlmIChwcm9keW5yZXMgPiAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAi IERZTkFNSUMgUkVTVUxUIFNFVFMgJWQiLCBwcm9keW5yZXMpOworCiAJaWYgKHByb3NlY2Rl ZlswXSA9PSAndCcpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgU0VDVVJJVFkgREVG SU5FUiIpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCmluZGV4IDc4ZjIzMDg5NGIuLjdmYTRk MDk5YmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCkBAIC03Niw2ICs3Niw5IEBAIENBVEFM T0cocGdfcHJvYywxMjU1LFByb2NlZHVyZVJlbGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJ X1JPV1RZUEVfT0lEKDgxLFByb2NlCiAJLyogc2VlIFBST1BBUkFMTEVMXyBjYXRlZ29yaWVz IGJlbG93ICovCiAJY2hhcgkJcHJvcGFyYWxsZWwgQktJX0RFRkFVTFQocyk7CiAKKwkvKiBt YXhpbXVtIG51bWJlciBvZiBkeW5hbWljIHJlc3VsdCBzZXRzICovCisJaW50MzIJCXByb2R5 bnJlcyBCS0lfREVGQVVMVCgwKTsKKwogCS8qIG51bWJlciBvZiBhcmd1bWVudHMgKi8KIAkv KiBOb3RlOiBuZWVkIG5vdCBiZSBnaXZlbiBpbiBwZ19wcm9jLmRhdDsgZ2VuYmtpLnBsIHdp bGwgY29tcHV0ZSBpdCAqLwogCWludDE2CQlwcm9uYXJnczsKQEAgLTIwOSw3ICsyMTIsOCBA QCBleHRlcm4gT2JqZWN0QWRkcmVzcyBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJv Y2VkdXJlTmFtZSwKIAkJCQkJCQkJCSBEYXR1bSBwcm9jb25maWcsCiAJCQkJCQkJCQkgT2lk IHByb3N1cHBvcnQsCiAJCQkJCQkJCQkgZmxvYXQ0IHByb2Nvc3QsCi0JCQkJCQkJCQkgZmxv YXQ0IHByb3Jvd3MpOworCQkJCQkJCQkJIGZsb2F0NCBwcm9yb3dzLAorCQkJCQkJCQkJIGlu dCBkeW5yZXMpOwogCiBleHRlcm4gYm9vbCBmdW5jdGlvbl9wYXJzZV9lcnJvcl90cmFuc3Bv c2UoY29uc3QgY2hhciAqcHJvc3JjKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAx YTc5NTQwYzk0Li4wMzBhN2Q5MDExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtNTcs NiArNTcsOCBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVUcmFuc2Zvcm0oQ3JlYXRl VHJhbnNmb3JtU3RtdCAqc3RtdCk7CiBleHRlcm4gdm9pZCBJc1RoZXJlRnVuY3Rpb25Jbk5h bWVzcGFjZShjb25zdCBjaGFyICpwcm9uYW1lLCBpbnQgcHJvbmFyZ3MsCiAJCQkJCQkJCQkg ICBvaWR2ZWN0b3IgKnByb2FyZ3R5cGVzLCBPaWQgbnNwT2lkKTsKIGV4dGVybiB2b2lkIEV4 ZWN1dGVEb1N0bXQoRG9TdG10ICpzdG10LCBib29sIGF0b21pYyk7CitleHRlcm4gT2lkCUN1 cnJlbnRQcm9jZWR1cmUodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZWR1cmVDYWxsc0NsZWFu dXAodm9pZCk7CiBleHRlcm4gdm9pZCBFeGVjdXRlQ2FsbFN0bXQoQ2FsbFN0bXQgKnN0bXQs IFBhcmFtTGlzdEluZm8gcGFyYW1zLCBib29sIGF0b21pYywgRGVzdFJlY2VpdmVyICpkZXN0 KTsKIGV4dGVybiBUdXBsZURlc2MgQ2FsbFN0bXRSZXN1bHREZXNjKENhbGxTdG10ICpzdG10 KTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9vaWQoT2lkIHR5cGVfaWQsIE9pZCBsYW5n X2lkLCBib29sIG1pc3Npbmdfb2spOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDIz NjgzMmEyY2EuLmYzMzVlY2JhMDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTI3 NTIsMTEgKzI3NTIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgU2VjTGFiZWxTdG10CiAjZGVmaW5l IENVUlNPUl9PUFRfTk9fU0NST0xMCTB4MDAwNAkvKiBOTyBTQ1JPTEwgZXhwbGljaXRseSBn aXZlbiAqLwogI2RlZmluZSBDVVJTT1JfT1BUX0lOU0VOU0lUSVZFCTB4MDAwOAkvKiBJTlNF TlNJVElWRSAqLwogI2RlZmluZSBDVVJTT1JfT1BUX0hPTEQJCQkweDAwMTAJLyogV0lUSCBI T0xEICovCisjZGVmaW5lIENVUlNPUl9PUFRfUkVUVVJOCQkweDAwMjAJLyogV0lUSCBSRVRV Uk4gKi8KIC8qIHRoZXNlIHBsYW5uZXItY29udHJvbCBmbGFncyBkbyBub3QgY29ycmVzcG9u ZCB0byBhbnkgU1FMIGdyYW1tYXI6ICovCi0jZGVmaW5lIENVUlNPUl9PUFRfRkFTVF9QTEFO CTB4MDAyMAkvKiBwcmVmZXIgZmFzdC1zdGFydCBwbGFuICovCi0jZGVmaW5lIENVUlNPUl9P UFRfR0VORVJJQ19QTEFOIDB4MDA0MAkvKiBmb3JjZSB1c2Ugb2YgZ2VuZXJpYyBwbGFuICov Ci0jZGVmaW5lIENVUlNPUl9PUFRfQ1VTVE9NX1BMQU4JMHgwMDgwCS8qIGZvcmNlIHVzZSBv ZiBjdXN0b20gcGxhbiAqLwotI2RlZmluZSBDVVJTT1JfT1BUX1BBUkFMTEVMX09LCTB4MDEw MAkvKiBwYXJhbGxlbCBtb2RlIE9LICovCisjZGVmaW5lIENVUlNPUl9PUFRfRkFTVF9QTEFO CTB4MDEwMAkvKiBwcmVmZXIgZmFzdC1zdGFydCBwbGFuICovCisjZGVmaW5lIENVUlNPUl9P UFRfR0VORVJJQ19QTEFOIDB4MDIwMAkvKiBmb3JjZSB1c2Ugb2YgZ2VuZXJpYyBwbGFuICov CisjZGVmaW5lIENVUlNPUl9PUFRfQ1VTVE9NX1BMQU4JMHgwNDAwCS8qIGZvcmNlIHVzZSBv ZiBjdXN0b20gcGxhbiAqLworI2RlZmluZSBDVVJTT1JfT1BUX1BBUkFMTEVMX09LCTB4MDgw MAkvKiBwYXJhbGxlbCBtb2RlIE9LICovCiAKIHR5cGVkZWYgc3RydWN0IERlY2xhcmVDdXJz b3JTdG10CiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMjgwODNhYWFjOS4uOWUxZjgxYWM3 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMTQxLDYgKzE0MSw3IEBAIFBHX0tFWVdPUkQo ImRvY3VtZW50IiwgRE9DVU1FTlRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgiZG9tYWluIiwgRE9NQUlOX1AsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRvdWJsZSIsIERPVUJMRV9QLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkcm9wIiwgRFJPUCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZHluYW1pYyIsIERZTkFN SUMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVhY2gi LCBFQUNILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJl bHNlIiwgRUxTRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBA IC0zNDYsNiArMzQ3LDggQEAgUEdfS0VZV09SRCgicmVwbGljYSIsIFJFUExJQ0EsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc2V0IiwgUkVTRVQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc3RhcnQi LCBSRVNUQVJULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJyZXN0cmljdCIsIFJFU1RSSUNULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJyZXN1bHQiLCBSRVNVTFQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInJldHVybiIsIFJFVFVSTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmV0dXJuaW5nIiwgUkVUVVJOSU5HLCBS RVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVybnMiLCBSRVRV Uk5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZXZv a2UiLCBSRVZPS0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmgKaW5kZXggM2MxN2IwMzljYy4uOTdhOWU5YmY1MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgK QEAgLTEzMSw2ICsxMzEsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVN1YlRy YW5zYWN0aW9uSWQgY3JlYXRlU3ViaWQ7CS8qIHRoZSBjcmVhdGluZyBzdWJ4YWN0ICovCiAJ U3ViVHJhbnNhY3Rpb25JZCBhY3RpdmVTdWJpZDsJLyogdGhlIGxhc3Qgc3VieGFjdCB3aXRo IGFjdGl2aXR5ICovCiAKKwkvKgorCSAqIFByb2NlZHVyZSB0aGF0IGNyZWF0ZWQgdGhpcyBw b3J0YWwuICBVc2VkIGZvciByZXR1cm5hYmxlIGN1cnNvcnMuCisJICovCisJT2lkCQkJCXBy b2NJZDsKKwkvKgorCSAqIENvbW1hbmQgSUQgd2hlcmUgdGhlIHBvcnRhbCB3YXMgY3JlYXRl ZC4gIFVzZWQgZm9yIHNvcnRpbmcgcmV0dXJuYWJsZQorCSAqIGN1cnNvcnMgaW50byBjcmVh dGlvbiBvcmRlci4KKwkgKi8KKwlDb21tYW5kSWQJCWNyZWF0ZUNpZDsKKwogCS8qIFRoZSBx dWVyeSBvciBxdWVyaWVzIHRoZSBwb3J0YWwgd2lsbCBleGVjdXRlICovCiAJY29uc3QgY2hh ciAqc291cmNlVGV4dDsJCS8qIHRleHQgb2YgcXVlcnkgKGFzIG9mIDguNCwgbmV2ZXIgTlVM TCkgKi8KIAlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CQkvKiBjb21tYW5kIHRhZyBmb3Igb3Jp Z2luYWwgcXVlcnkgKi8KQEAgLTE1OSw2ICsxNjksOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0 YWxEYXRhCiAJVHVwbGVEZXNjCXR1cERlc2M7CQkvKiBkZXNjcmlwdG9yIGZvciByZXN1bHQg dHVwbGVzICovCiAJLyogYW5kIHRoZXNlIGFyZSB0aGUgZm9ybWF0IGNvZGVzIHRvIHVzZSBm b3IgdGhlIGNvbHVtbnM6ICovCiAJaW50MTYJICAgKmZvcm1hdHM7CQkvKiBhIGZvcm1hdCBj b2RlIGZvciBlYWNoIGNvbHVtbiAqLworCS8qIEZvcm1hdCBjb2RlIGZvciBkeW5hbWljIHJl c3VsdCBzZXRzICovCisJaW50MTYJCWR5bmFtaWNfZm9ybWF0OwogCiAJLyoKIAkgKiBXaGVy ZSB3ZSBzdG9yZSB0dXBsZXMgZm9yIGEgaGVsZCBjdXJzb3Igb3IgYSBQT1JUQUxfT05FX1JF VFVSTklORyBvcgpAQCAtMjM3LDUgKzI0OSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0 ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJs ZURlbGV0ZUFsbCh2b2lkKTsKIGV4dGVybiBib29sIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHMo dm9pZCk7CiBleHRlcm4gdm9pZCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKTsKK2V4dGVybiBM aXN0ICpHZXRSZXR1cm5hYmxlQ3Vyc29ycyh2b2lkKTsKK2V4dGVybiB2b2lkIENsb3NlT3Ro ZXJSZXR1cm5hYmxlQ3Vyc29ycyhPaWQgcHJvY2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBP UlRBTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2Nv bDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IDMwNmU4 OWFjZmQuLmViZDM4YzM5MWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXByb3RvY29sMy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5j CkBAIC0zMzcsMTAgKzMzNyw4IEBAIHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQogCQkJ CQl7CiAJCQkJCQkvKgogCQkJCQkJICogQSBuZXcgJ1QnIG1lc3NhZ2UgaXMgdHJlYXRlZCBh cyB0aGUgc3RhcnQgb2YKLQkJCQkJCSAqIGFub3RoZXIgUEdyZXN1bHQuICAoSXQgaXMgbm90 IGNsZWFyIHRoYXQgdGhpcyBpcwotCQkJCQkJICogcmVhbGx5IHBvc3NpYmxlIHdpdGggdGhl IGN1cnJlbnQgYmFja2VuZC4pIFdlIHN0b3AKLQkJCQkJCSAqIHBhcnNpbmcgdW50aWwgdGhl IGFwcGxpY2F0aW9uIGFjY2VwdHMgdGhlIGN1cnJlbnQKLQkJCQkJCSAqIHJlc3VsdC4KKwkJ CQkJCSAqIGFub3RoZXIgUEdyZXN1bHQuICBXZSBzdG9wIHBhcnNpbmcgdW50aWwgdGhlCisJ CQkJCQkgKiBhcHBsaWNhdGlvbiBhY2NlcHRzIHRoZSBjdXJyZW50IHJlc3VsdC4KIAkJCQkJ CSAqLwogCQkJCQkJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZOwogCQkJCQkJ cmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf cHJvY2VkdXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb2Nl ZHVyZS5vdXQKaW5kZXggMzgzOGZhMjMyNC4uMzlmMTM0YmM4MiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CkBAIC0yMTIsOCAr MjEyLDkxIEBAIEFMVEVSIFJPVVRJTkUgY3BfdGVzdGZ1bmMxYSBSRU5BTUUgVE8gY3BfdGVz dGZ1bmMxOwogQUxURVIgUk9VVElORSBwdGVzdDEodGV4dCkgUkVOQU1FIFRPIHB0ZXN0MWE7 CiBBTFRFUiBST1VUSU5FIHB0ZXN0MWEgUkVOQU1FIFRPIHB0ZXN0MTsKIERST1AgUk9VVElO RSBjcF90ZXN0ZnVuYzEoaW50KTsKKy0tIGR5bmFtaWMgcmVzdWx0IHNldHMKK0NSRUFURSBU QUJMRSBjcF90ZXN0MiAoYSBpbnQpOworSU5TRVJUIElOVE8gY3BfdGVzdDIgVkFMVUVTICgx KSwgKDIpLCAoMyk7CitDUkVBVEUgVEFCTEUgY3BfdGVzdDMgKHggdGV4dCwgeSB0ZXh0KTsK K0lOU0VSVCBJTlRPIGNwX3Rlc3QzIFZBTFVFUyAoJ2FiYycsICdkZWYnKSwgKCdmb28nLCAn YmFyJyk7CitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MSgpCitMQU5HVUFHRSBTUUwKK0RZ TkFNSUMgUkVTVUxUIFNFVFMgMgorQVMgJCQKK0RFQ0xBUkUgYzEgQ1VSU09SIFdJVEggUkVU VVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QyOworREVDTEFSRSBjMiBDVVJTT1IgV0lU SCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3BfdGVzdDM7CiskJDsKK0NBTEwgcGRyc3Rl c3QxKCk7CisgYSAKKy0tLQorIDEKKyAyCisgMworKDMgcm93cykKKworICB4ICB8ICB5ICAK Ky0tLS0tKy0tLS0tCisgYWJjIHwgZGVmCisgZm9vIHwgYmFyCisoMiByb3dzKQorCitDUkVB VEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MigpCitMQU5HVUFHRSBTUUwKK0RZTkFNSUMgUkVTVUxU IFNFVFMgMQorQVMgJCQKK0NBTEwgcGRyc3Rlc3QxKCk7CitERUNMQVJFIGMzIENVUlNPUiBX SVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MiBXSEVSRSBhIDwgMjsKKyQk OworQ0FMTCBwZHJzdGVzdDIoKTsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCitDUkVBVEUg UFJPQ0VEVVJFIHBkcnN0ZXN0MyhJTk9VVCBhIHRleHQpCitMQU5HVUFHRSBTUUwKK0RZTkFN SUMgUkVTVUxUIFNFVFMgMQorQVMgJCQKK0RFQ0xBUkUgYzQgQ1VSU09SIFdJVEggUkVUVVJO IEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QyOworU0VMRUNUIGEgfHwgYTsKKyQkOworQ0FM TCBwZHJzdGVzdDMoJ3gnKTsKKyBhICAKKy0tLS0KKyB4eAorKDEgcm93KQorCisgYSAKKy0t LQorIDEKKyAyCisgMworKDMgcm93cykKKworLS0gdGVzdCB0aGUgbmVzdGVkIGVycm9yIGhh bmRsaW5nCitDUkVBVEUgVEFCTEUgY3BfdGVzdF9kdW1teSAoYSBpbnQpOworQ1JFQVRFIFBS T0NFRFVSRSBwZHJzdGVzdDRhKCkKK0xBTkdVQUdFIFNRTAorRFlOQU1JQyBSRVNVTFQgU0VU UyAxCitBUyAkJAorREVDTEFSRSBjNWEgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1Qg KiBGUk9NIGNwX3Rlc3RfZHVtbXk7CiskJDsKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3Q0 YigpCitMQU5HVUFHRSBTUUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMQorQVMgJCQKK0NBTEwg cGRyc3Rlc3Q0YSgpOworJCQ7CitEUk9QIFRBQkxFIGNwX3Rlc3RfZHVtbXk7CitDQUxMIHBk cnN0ZXN0NGIoKTsKK0VSUk9SOiAgcmVsYXRpb24gImNwX3Rlc3RfZHVtbXkiIGRvZXMgbm90 IGV4aXN0CitMSU5FIDI6IERFQ0xBUkUgYzVhIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VM RUNUICogRlJPTSBjcF90ZXN0X2R1bS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorUVVFUlk6ICAKK0RFQ0xBUkUgYzVh IENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0X2R1bW15Owor CitDT05URVhUOiAgU1FMIGZ1bmN0aW9uICJwZHJzdGVzdDRhIiBkdXJpbmcgc3RhcnR1cAor U1FMIGZ1bmN0aW9uICJwZHJzdGVzdDRiIiBzdGF0ZW1lbnQgMQogLS0gY2xlYW51cAogRFJP UCBQUk9DRURVUkUgcHRlc3QxOwogRFJPUCBQUk9DRURVUkUgcHRlc3QyOwotRFJPUCBUQUJM RSBjcF90ZXN0OworRFJPUCBUQUJMRSBjcF90ZXN0LCBjcF90ZXN0MiwgY3BfdGVzdDM7CiBE Uk9QIFVTRVIgcmVncmVzc19jcF91c2VyMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX3Byb2NlZHVyZS5zcWwKaW5kZXggMmVmMWM4MmNlYS4uNzYxMzM0ZGY1YiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKQEAgLTE2NywxMSAr MTY3LDcwIEBAIENSRUFURSBVU0VSIHJlZ3Jlc3NfY3BfdXNlcjE7CiBEUk9QIFJPVVRJTkUg Y3BfdGVzdGZ1bmMxKGludCk7CiAKIAorLS0gZHluYW1pYyByZXN1bHQgc2V0cworCitDUkVB VEUgVEFCTEUgY3BfdGVzdDIgKGEgaW50KTsKK0lOU0VSVCBJTlRPIGNwX3Rlc3QyIFZBTFVF UyAoMSksICgyKSwgKDMpOworQ1JFQVRFIFRBQkxFIGNwX3Rlc3QzICh4IHRleHQsIHkgdGV4 dCk7CitJTlNFUlQgSU5UTyBjcF90ZXN0MyBWQUxVRVMgKCdhYmMnLCAnZGVmJyksICgnZm9v JywgJ2JhcicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MSgpCitMQU5HVUFHRSBT UUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMgorQVMgJCQKK0RFQ0xBUkUgYzEgQ1VSU09SIFdJ VEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QyOworREVDTEFSRSBjMiBDVVJT T1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3BfdGVzdDM7CiskJDsKKworQ0FM TCBwZHJzdGVzdDEoKTsKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDIoKQorTEFOR1VB R0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitDQUxMIHBkcnN0ZXN0MSgp OworREVDTEFSRSBjMyBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3Bf dGVzdDIgV0hFUkUgYSA8IDI7CiskJDsKKworQ0FMTCBwZHJzdGVzdDIoKTsKKworQ1JFQVRF IFBST0NFRFVSRSBwZHJzdGVzdDMoSU5PVVQgYSB0ZXh0KQorTEFOR1VBR0UgU1FMCitEWU5B TUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitERUNMQVJFIGM0IENVUlNPUiBXSVRIIFJFVFVS TiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MjsKK1NFTEVDVCBhIHx8IGE7CiskJDsKKwor Q0FMTCBwZHJzdGVzdDMoJ3gnKTsKKworLS0gdGVzdCB0aGUgbmVzdGVkIGVycm9yIGhhbmRs aW5nCitDUkVBVEUgVEFCTEUgY3BfdGVzdF9kdW1teSAoYSBpbnQpOworCitDUkVBVEUgUFJP Q0VEVVJFIHBkcnN0ZXN0NGEoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRT IDEKK0FTICQkCitERUNMQVJFIGM1YSBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAq IEZST00gY3BfdGVzdF9kdW1teTsKKyQkOworCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0 NGIoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitDQUxM IHBkcnN0ZXN0NGEoKTsKKyQkOworCitEUk9QIFRBQkxFIGNwX3Rlc3RfZHVtbXk7CisKK0NB TEwgcGRyc3Rlc3Q0YigpOworCisKIC0tIGNsZWFudXAKIAogRFJPUCBQUk9DRURVUkUgcHRl c3QxOwogRFJPUCBQUk9DRURVUkUgcHRlc3QyOwogCi1EUk9QIFRBQkxFIGNwX3Rlc3Q7CitE Uk9QIFRBQkxFIGNwX3Rlc3QsIGNwX3Rlc3QyLCBjcF90ZXN0MzsKIAogRFJPUCBVU0VSIHJl Z3Jlc3NfY3BfdXNlcjE7Ci0tIAoyLjMwLjIKCg== --------------C16575E7DFE3317A48E7A971--