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 1ojErh-0005Uu-2X for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Oct 2022 07:12:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ojErf-0000bp-QH for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Oct 2022 07:12:15 +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 1ojEre-0000Ue-D8 for pgsql-hackers@lists.postgresql.org; Fri, 14 Oct 2022 07:12:15 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ojErW-00063y-Ci for pgsql-hackers@postgresql.org; Fri, 14 Oct 2022 07:12:13 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 59AC43200ABA for ; Fri, 14 Oct 2022 03:12:02 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 14 Oct 2022 03:12:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1665731521; x=1665817921; bh=ohFSAGXu8PSJfQB4tbZa0wNJ1g0Y 1NuugFkTe+ia1Do=; b=N5ZIOXEOasEan7XkhLkUw6C6hK/E4+HL8wIgvEoPD1Mr NH0oYsmH8o2KK9f+QrmMk+HtTnvUNrHvPzzBwpSoNaIQJi2258nODgv+PKZUbSuq ltRqtWtLNt4rAj4wLrjp470GAnhslyLzFGVWu7FbB1XjKHkifu1C98nEgBQIhsHK 4TfmJvZGJ6zSr1fTlkOKgtvw45xBGp1nU3UEvY4pwwnDx0Y1tkpv022B9LrNdVnY IWV4ruKEgPL9eOoh7J9pmKCzz/rzzZRGnVHw7yP8po8OfVcz62//XJON5FZHvq4L yf6U8hIrvXUD9qq/xKtszBMucSxjSh53wHKG9GbWuQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeekuddguddukecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfuhfhfvfgjsehmtd erredtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghr rdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrg htthgvrhhnpeeuuddvgeekteehgefhuedvfeehvddtvddtleduhfegudduvdevkeeukeeh tdejtdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Fri, 14 Oct 2022 03:12:00 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------o0pp0kBRjHdnoeHD8uxeVSrb" Message-ID: <34632858-a067-4ae5-bd49-6531e5ed9282@enterprisedb.com> Date: Fri, 14 Oct 2022 09:11:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: dynamic result sets support in extended query protocol Content-Language: en-US From: Peter Eisentraut References: <6e747f98-835f-2e05-cde5-86ee444a7140@2ndquadrant.com> <20201009184625.4hfgpcxzd6jfredb@alap3.anarazel.de> <7e404216-62b5-93da-1a74-c1d5aa1fe47a@2ndquadrant.com> <6f038f18-0f2b-5271-a56f-1770577f246c@enterprisedb.com> <525d517f-72ab-9488-211b-ad3cb0aea3a3@enterprisedb.com> <20220112102055.fn5gpnt2lw6ii35o@jrouhaud> <4934178d-558b-f47c-36c0-7372152d5df6@enterprisedb.com> To: pgsql-hackers In-Reply-To: <4934178d-558b-f47c-36c0-7372152d5df6@enterprisedb.com> 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. --------------o0pp0kBRjHdnoeHD8uxeVSrb Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 01.02.22 15:40, Peter Eisentraut wrote: > On 12.01.22 11:20, Julien Rouhaud wrote: >> Since you mentioned that this patch depends on the SHOW_ALL_RESULTS >> psql patch >> which is still being worked on, I'm not expecting much activity here >> until the >> prerequirements are done.  It also seems better to mark this patch as >> Waiting >> on Author as further reviews are probably not really needed for now. > > Well, a review on the general architecture and approach would have been > useful.  But I understand that without the psql work, it's difficult for > a reviewer to even get started on this patch.  It's also similarly > difficult for me to keep updating it.  So I'll set it to Returned with > feedback for now and take it off the table.  I want to get back to it > when the prerequisites are more settled. Now that the psql support for multiple result sets exists, I want to revive this patch. It's the same as the last posted version, except now it doesn't require any psql changes or any weird test modifications anymore. (Old news: This patch allows declaring a cursor WITH RETURN in a procedure to make the cursor's data be returned as a result of the CALL invocation. The procedure needs to be declared with the DYNAMIC RESULT SETS attribute.) --------------o0pp0kBRjHdnoeHD8uxeVSrb Content-Type: text/plain; charset=UTF-8; name="v5-0001-Dynamic-result-sets-from-procedures.patch" Content-Disposition: attachment; filename="v5-0001-Dynamic-result-sets-from-procedures.patch" Content-Transfer-Encoding: base64 RnJvbSA4MDMxMTIxNDE0NGZiYTQwMDA2ZGVhNTQ4MTc5NTZjM2U5MjExMGNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAxNCBPY3QgMjAyMiAwOTowMToxNyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIER5bmFtaWMgcmVzdWx0IHNldHMgZnJvbSBwcm9jZWR1cmVzCgpEZWNs YXJpbmcgYSBjdXJzb3IgV0lUSCBSRVRVUk4gaW4gYSBwcm9jZWR1cmUgbWFrZXMgdGhlIGN1 cnNvcidzIGRhdGEgYmUKcmV0dXJuZWQgYXMgYSByZXN1bHQgb2YgdGhlIENBTEwgaW52b2Nh dGlvbi4gIFRoZSBwcm9jZWR1cmUgbmVlZHMgdG8KYmUgZGVjbGFyZWQgd2l0aCB0aGUgRFlO QU1JQyBSRVNVTFQgU0VUUyBhdHRyaWJ1dGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvNmU3NDdmOTgtODM1Zi0yZTA1LWNkZTUt ODZlZTQ0NGE3MTQwQDJuZHF1YWRyYW50LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8IDEwICsrKwogZG9jL3NyYy9zZ21sL2luZm9y bWF0aW9uX3NjaGVtYS5zZ21sICAgICAgICAgIHwgIDMgKy0KIGRvYy9zcmMvc2dtbC9wbHBn c3FsLnNnbWwgICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrLQogZG9jL3NyYy9zZ21s L3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysKIGRvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwgICAgICAgICB8IDEyICsrKwogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwgICAgICAgIHwgMTQgKysrCiBkb2Mv c3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dtbCAgICAgICAgICAgICAgICAgfCAzNCArKysrKysr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgICAgICAgICAgICB8ICAz ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYyAgICAgICAgICAgICAgICAgfCAg NCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0ICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICAgICAgICAgICB8 IDc5ICsrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMgICAgICAgICAgICAgfCAyMyArKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYyAgICAgICAgICAgICAgIHwgMTIgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 ICAgICAgICAgICAgICAgICAgICAgfCAxOCArKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgICAgICAgICAgICAgICAgICAgfCA2MSArKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwogc3JjL2JhY2tl bmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgNDggKysrKysrKysrKysK IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE2ICsr Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAgICAgICB8ICA2 ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgICAgfCAg MSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAg MSArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAg MiArCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAx NCArKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jICAgICAgICAgICB8 ICA2ICstCiBzcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxwZ3NxbF9jYWxsLm91dCAg fCA3OCArKysrKysrKysrKysrKysrKwogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAg ICAgICAgICAgICAgICAgIHwgIDYgKysKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkg ICAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrLS0KIHNyYy9wbC9wbHBnc3FsL3Ny Yy9wbF91bnJlc2VydmVkX2t3bGlzdC5oICAgICB8ICAyICsKIHNyYy9wbC9wbHBnc3FsL3Ny Yy9zcWwvcGxwZ3NxbF9jYWxsLnNxbCAgICAgICB8IDQ2ICsrKysrKysrKysKIC4uLi9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0ICAgICB8IDg1ICsrKysrKysrKysr KysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsICAg ICB8IDYxICsrKysrKysrKysrKy0KIDMzIGZpbGVzIGNoYW5nZWQsIDcxOSBpbnNlcnRpb25z KCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAwZjgzM2QyMTBl Ny4uMTZkYmU5M2UyMjQ2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNjAyMCw2ICs2MDIwLDE2 IEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9jPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90 aXRsZT4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJvZHlucmVzPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIEZvciBwcm9jZWR1cmVzLCB0aGlzIHJlY29yZHMgdGhlIG1heGltdW0g bnVtYmVyIG9mIGR5bmFtaWMgcmVzdWx0IHNldHMKKyAgICAgICB0aGUgcHJvY2VkdXJlIG1h eSBjcmVhdGUuICBPdGhlcndpc2UgemVyby4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3Ry dWN0ZmllbGQ+cHJvbmFyZ3M8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IDM1MGM3NWJjMzFlZi4uNWZj OWRjMjJhZWZmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1h LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCkBAIC01 ODg1LDcgKzU4ODUsOCBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cm91dGluZXM8L3N0cnVjdG5h bWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5tYXhfZHluYW1pY19y ZXN1bHRfc2V0czwvc3RydWN0ZmllbGQ+IDx0eXBlPmNhcmRpbmFsX251bWJlcjwvdHlwZT4K ICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIEFwcGxpZXMgdG8gYSBmZWF0 dXJlIG5vdCBhdmFpbGFibGUgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3Ru YW1lPgorICAgICAgIEZvciBhIHByb2NlZHVyZSwgdGhlIG1heGltdW0gbnVtYmVyIG9mIGR5 bmFtaWMgcmVzdWx0IHNldHMuICBPdGhlcndpc2UKKyAgICAgICB6ZXJvLgogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cGxwZ3NxbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbAppbmRleCBkODVmODli ZjMwMzMuLjU4YTk5N2UxNWVlZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BscGdzcWwu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCkBAIC0zMTI4LDcgKzMxMjgs NyBAQCA8dGl0bGU+RGVjbGFyaW5nIEN1cnNvciBWYXJpYWJsZXM8L3RpdGxlPgogICAgICBB bm90aGVyIHdheSBpcyB0byB1c2UgdGhlIGN1cnNvciBkZWNsYXJhdGlvbiBzeW50YXgsCiAg ICAgIHdoaWNoIGluIGdlbmVyYWwgaXM6CiA8c3lub3BzaXM+Ci08cmVwbGFjZWFibGU+bmFt ZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPG9wdGlvbmFsPiBOTyA8L29wdGlvbmFsPiBT Q1JPTEwgPC9vcHRpb25hbD4gQ1VSU09SIDxvcHRpb25hbD4gKCA8cmVwbGFjZWFibGU+YXJn dW1lbnRzPC9yZXBsYWNlYWJsZT4gKSA8L29wdGlvbmFsPiBGT1IgPHJlcGxhY2VhYmxlPnF1 ZXJ5PC9yZXBsYWNlYWJsZT47Cis8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4gPG9wdGlvbmFsPiBOTyA8L29wdGlvbmFsPiBTQ1JPTEwgPC9vcHRpb25hbD4g Q1VSU09SIDxvcHRpb25hbD4gPG9wdGlvbmFsPiBXSVRIIFJFVFVSTiA8L29wdGlvbmFsPiAo IDxyZXBsYWNlYWJsZT5hcmd1bWVudHM8L3JlcGxhY2VhYmxlPiApIDwvb3B0aW9uYWw+IEZP UiA8cmVwbGFjZWFibGU+cXVlcnk8L3JlcGxhY2VhYmxlPjsKIDwvc3lub3BzaXM+CiAgICAg ICg8bGl0ZXJhbD5GT1I8L2xpdGVyYWw+IGNhbiBiZSByZXBsYWNlZCBieSA8bGl0ZXJhbD5J UzwvbGl0ZXJhbD4gZm9yCiAgICAgIDxwcm9kdWN0bmFtZT5PcmFjbGU8L3Byb2R1Y3RuYW1l PiBjb21wYXRpYmlsaXR5LikKQEAgLTMxMzYsNiArMzEzNiwxMCBAQCA8dGl0bGU+RGVjbGFy aW5nIEN1cnNvciBWYXJpYWJsZXM8L3RpdGxlPgogICAgICBzY3JvbGxpbmcgYmFja3dhcmQ7 IGlmIDxsaXRlcmFsPk5PIFNDUk9MTDwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCBiYWNrd2Fy ZAogICAgICBmZXRjaGVzIHdpbGwgYmUgcmVqZWN0ZWQ7IGlmIG5laXRoZXIgc3BlY2lmaWNh dGlvbiBhcHBlYXJzLCBpdCBpcwogICAgICBxdWVyeS1kZXBlbmRlbnQgd2hldGhlciBiYWNr d2FyZCBmZXRjaGVzIHdpbGwgYmUgYWxsb3dlZC4KKyAgICAgSWYgPGxpdGVyYWw+V0lUSCBS RVRVUk48L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdHMgb2YgdGhlCisgICAg IGN1cnNvciwgYWZ0ZXIgaXQgaXMgb3BlbmVkLCB3aWxsIGJlIHJldHVybmVkIGFzIGEgZHlu YW1pYyByZXN1bHQgc2V0OyBzZWUKKyAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWRlY2xhcmUi Lz4gZm9yIGRldGFpbHMuICAoPGxpdGVyYWw+V0lUSE9VVAorICAgICBSRVRVUk48L2xpdGVy YWw+IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBidXQgaGFzIG5vIGVmZmVjdC4pCiAgICAgIDxy ZXBsYWNlYWJsZT5hcmd1bWVudHM8L3JlcGxhY2VhYmxlPiwgaWYgc3BlY2lmaWVkLCBpcyBh CiAgICAgIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHBhaXJzIDxsaXRlcmFsPjxyZXBsYWNl YWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgPHJlcGxhY2VhYmxlPmRhdGF0eXBlPC9y ZXBsYWNlYWJsZT48L2xpdGVyYWw+IHRoYXQgZGVmaW5lIG5hbWVzIHRvIGJlCkBAIC0zMTk0 LDcgKzMxOTgsNyBAQCA8dGl0bGU+T3BlbmluZyBDdXJzb3JzPC90aXRsZT4KICAgICAgPHRp dGxlPjxjb21tYW5kPk9QRU4gRk9SPC9jb21tYW5kPiA8cmVwbGFjZWFibGU+cXVlcnk8L3Jl cGxhY2VhYmxlPjwvdGl0bGU+CiAKIDxzeW5vcHNpcz4KLU9QRU4gPHJlcGxhY2VhYmxlPnVu Ym91bmRfY3Vyc29ydmFyPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8b3B0aW9uYWw+IE5P IDwvb3B0aW9uYWw+IFNDUk9MTCA8L29wdGlvbmFsPiBGT1IgPHJlcGxhY2VhYmxlPnF1ZXJ5 PC9yZXBsYWNlYWJsZT47CitPUEVOIDxyZXBsYWNlYWJsZT51bmJvdW5kX2N1cnNvcnZhcjwv cmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPG9wdGlvbmFsPiBOTyA8L29wdGlvbmFsPiBTQ1JP TEwgPC9vcHRpb25hbD4gPG9wdGlvbmFsPiBXSVRIIFJFVFVSTiA8L29wdGlvbmFsPiBGT1Ig PHJlcGxhY2VhYmxlPnF1ZXJ5PC9yZXBsYWNlYWJsZT47CiA8L3N5bm9wc2lzPgogCiAgICAg ICAgPHBhcmE+CkBAIC0zMjEyLDggKzMyMTYsOSBAQCA8dGl0bGU+PGNvbW1hbmQ+T1BFTiBG T1I8L2NvbW1hbmQ+IDxyZXBsYWNlYWJsZT5xdWVyeTwvcmVwbGFjZWFibGU+PC90aXRsZT4K ICAgICAgICAgc3Vic3RpdHV0ZWQgaXMgdGhlIG9uZSBpdCBoYXMgYXQgdGhlIHRpbWUgb2Yg dGhlIDxjb21tYW5kPk9QRU48L2NvbW1hbmQ+OwogICAgICAgICBzdWJzZXF1ZW50IGNoYW5n ZXMgdG8gdGhlIHZhcmlhYmxlIHdpbGwgbm90IGFmZmVjdCB0aGUgY3Vyc29yJ3MKICAgICAg ICAgYmVoYXZpb3IuCi0gICAgICAgIFRoZSA8bGl0ZXJhbD5TQ1JPTEw8L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5OTyBTQ1JPTEw8L2xpdGVyYWw+Ci0gICAgICAgIG9wdGlvbnMgaGF2ZSB0 aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgYSBib3VuZCBjdXJzb3IuCisgICAgICAgIFRoZSBv cHRpb25zIDxsaXRlcmFsPlNDUk9MTDwvbGl0ZXJhbD4sIDxsaXRlcmFsPk5PIFNDUk9MTDwv bGl0ZXJhbD4sCisgICAgICAgIGFuZCA8bGl0ZXJhbD5XSVRIIFJFVFVSTjwvbGl0ZXJhbD4g aGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgYQorICAgICAgICBib3VuZCBjdXJzb3Iu CiAgICAgICAgPC9wYXJhPgogCiAgICAgICAgPHBhcmE+CkBAIC0zNTkwLDYgKzM1OTUsMjAg QEAgPHRpdGxlPlJldHVybmluZyBDdXJzb3JzPC90aXRsZT4KIENPTU1JVDsKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAgICAgICAgPC9wYXJhPgorCisgICAgICAgPG5vdGU+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgUmV0dXJuaW5nIGEgY3Vyc29yIGZyb20gYSBmdW5jdGlvbiBhcyBk ZXNjcmliZWQgaGVyZSBpcyBhIHNlcGFyYXRlCisgICAgICAgICBtZWNoYW5pc20gZnJvbSBk ZWNsYXJpbmcgYSBjdXJzb3IgPGxpdGVyYWw+V0lUSCBSRVRVUk48L2xpdGVyYWw+LAorICAg ICAgICAgd2hpY2ggYXV0b21hdGljYWxseSBwcm9kdWNlcyBhIHJlc3VsdCBzZXQgZm9yIHRo ZSBjbGllbnQgaWYgdGhlCisgICAgICAgICBjdXJzb3IgaXMgbGVmdCBvcGVuIHdoZW4gcmV0 dXJuaW5nIGZyb20gdGhlIHByb2NlZHVyZS4gIEJvdGgKKyAgICAgICAgIG1lY2hhbmlzbXMg Y2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSBzaW1pbGFyIGVmZmVjdHMuICBUaGUgZGlmZmVyZW5j ZXMKKyAgICAgICAgIGFyZSBtYWlubHkgaG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gcHJl ZmVycyB0byBtYW5hZ2UgdGhlIGN1cnNvcnMuCisgICAgICAgICBGdXJ0aGVybW9yZSwgb3Ro ZXIgU1FMIGltcGxlbWVudGF0aW9ucyBoYXZlIG90aGVyIHByb2dyYW1taW5nIG1vZGVscwor ICAgICAgICAgdGhhdCBtaWdodCBtYXAgbW9yZSBlYXNpbHkgdG8gb25lIG9yIHRoZSBvdGhl ciBtZWNoYW5pc20gd2hlbiBkb2luZyBhCisgICAgICAgICBtaWdyYXRpb24uCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L25vdGU+CiAgICAgIDwvc2VjdDM+CiAgICA8L3NlY3QyPgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dt bC9wcm90b2NvbC5zZ21sCmluZGV4IDVmZGQ0MjllMDVkMy4uZjExMjk1MTY4NjM2IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbApAQCAtOTU5LDYgKzk1OSwyNSBAQCA8dGl0bGU+RXh0ZW5kZWQgUXVl cnk8L3RpdGxlPgogICAgIGFuIGVtcHR5IHF1ZXJ5IHN0cmluZyksIEVycm9yUmVzcG9uc2Us IG9yIFBvcnRhbFN1c3BlbmRlZC4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgRXhl Y3V0aW5nIGEgcG9ydGFsIG1heSBnaXZlIHJpc2UgdG8gYSA8Zmlyc3R0ZXJtPmR5bmFtaWMg cmVzdWx0IHNldAorICAgIHNlcXVlbmNlPC9maXJzdHRlcm0+LiAgVGhhdCBtZWFucyB0aGUg Y29tbWFuZCBjb250YWluZWQgaW4gdGhlIHBvcnRhbAorICAgIGNyZWF0ZWQgYWRkaXRpb25h bCByZXN1bHQgc2V0cyBiZXlvbmQgd2hhdCBpdCBub3JtYWxseSByZXR1cm5zLiAgKFRoZQor ICAgIHR5cGljYWwgZXhhbXBsZSBpcyBjYWxsaW5nIGEgc3RvcmVkIHByb2NlZHVyZSB0aGF0 IGNyZWF0ZXMgZHluYW1pYyByZXN1bHQKKyAgICBzZXRzLikgIER5bmFtaWMgcmVzdWx0IHNl dHMgYXJlIGlzc3VlZCBhZnRlciB3aGF0ZXZlciByZXNwb25zZSB0aGUgbWFpbgorICAgIGNv bW1hbmQgaXNzdWVkLiAgRWFjaCBkeW5hbWljIHJlc3VsdCBzZXQgYmVnaW5zIHdpdGggYSBS b3dEZXNjcmlwdGlvbgorICAgIG1lc3NhZ2UgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIERh dGFSb3cgbWVzc2FnZXMuICAoU2luY2UsIGFzIGV4cGxhaW5lZAorICAgIGFib3ZlLCBhbiBF eGVjdXRlIG1lc3NhZ2Ugbm9ybWFsbHkgZG9lcyBub3QgcmVzcG9uZCB3aXRoIGEgUm93RGVz Y3JpcHRpb24sCisgICAgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGZpcnN0IFJvd0Rlc2NyaXB0 aW9uIG1hcmtzIHRoZSBlbmQgb2YgdGhlIHByaW1hcnkKKyAgICByZXN1bHQgc2V0IG9mIHRo ZSBwb3J0YWwgYW5kIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcnN0IGR5bmFtaWMgcmVzdWx0 CisgICAgc2V0LikgIFRoZSBDb21tYW5kQ29tcGxldGUgbWVzc2FnZSB0aGF0IGNvbmNsdWRl cyB0aGUgRXhlY3V0ZSBtZXNzYWdlCisgICAgcmVzcG9uc2UgZm9sbG93cyA8ZW1waGFzaXM+ YWZ0ZXI8L2VtcGhhc2lzPiBhbGwgZHluYW1pYyByZXN1bHQgc2V0cy4gIE5vdGUKKyAgICB0 aGF0IGR5bmFtaWMgcmVzdWx0IHNldHMgY2Fubm90LCBieSB0aGVpciBuYXR1cmUsIGJlIGRl Y3JpYmVkIHByaW9yIHRvIHRoZQorICAgIGV4ZWN1dGlvbiBvZiB0aGUgcG9ydGFsLiAgTXVs dGlwbGUgZXhlY3V0aW9ucyBvZiB0aGUgc2FtZSBwcmVwYXJlZAorICAgIHN0YXRlbWVudCBj b3VsZCByZXN1bHQgaW4gZHluYW1pYyByZXN1bHQgc2V0cyB3aXRoIGRpZmZlcmVudCByb3cK KyAgICBkZXNjcmlwdGlvbnMgYmVpbmcgcmV0dXJuZWQuCisgICA8L3BhcmE+CisKICAgIDxw YXJhPgogICAgIEF0IGNvbXBsZXRpb24gb2YgZWFjaCBzZXJpZXMgb2YgZXh0ZW5kZWQtcXVl cnkgbWVzc2FnZXMsIHRoZSBmcm9udGVuZAogICAgIHNob3VsZCBpc3N1ZSBhIFN5bmMgbWVz c2FnZS4gIFRoaXMgcGFyYW1ldGVybGVzcyBtZXNzYWdlIGNhdXNlcyB0aGUKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3Byb2NlZHVyZS5zZ21sCmluZGV4IDIwYTYyMzg4NWY3NC4uNzZiOTQy NWEwOGI1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb2NlZHVyZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwKQEAgLTM0 LDYgKzM0LDcgQEAKIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCisgICAg RFlOQU1JQyBSRVNVTFQgU0VUUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZHlu YW1pY19yZXN1bHRfc2V0czwvcmVwbGFjZWFibGU+CiAgICAgWyBFWFRFUk5BTCBdIFNFQ1VS SVRZIElOVk9LRVIgfCBbIEVYVEVSTkFMIF0gU0VDVVJJVFkgREVGSU5FUgogICAgIFNFVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZmlndXJhdGlvbl9wYXJhbWV0ZXI8 L3JlcGxhY2VhYmxlPiB7IFRPIHwgPSB9IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KICAgICBTRVQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmZpZ3VyYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNl YWJsZT4gRlJPTSBDVVJSRU5UCkBAIC0xNTcsNiArMTU4LDE3IEBAIDx0aXRsZT5QYXJhbWV0 ZXJzPC90aXRsZT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+RFlOQU1JQyBSRVNVTFQgU0VU UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZHluYW1pY19yZXN1bHRfc2V0czwv cmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBDaGFuZ2VzIHRoZSBkeW5hbWljIHJlc3VsdCBzZXRzIHNldHRpbmcg b2YgdGhlIHByb2NlZHVyZS4gIFNlZSA8eHJlZgorICAgICAgbGlua2VuZD0ic3FsLWNyZWF0 ZXByb2NlZHVyZSIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4K ICAgICA8dGVybT48bGl0ZXJhbD48b3B0aW9uYWw+IEVYVEVSTkFMIDwvb3B0aW9uYWw+IFNF Q1VSSVRZIElOVk9LRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDx0ZXJtPjxsaXRlcmFsPjxv cHRpb25hbD4gRVhURVJOQUwgPC9vcHRpb25hbD4gU0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJh bD48L3Rlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1 cmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb2NlZHVyZS5zZ21sCmluZGV4 IDAzYTE0Yzg2ODQ1OC4uMWM5OWIwMGVlZjhiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wcm9jZWR1cmUuc2dtbApAQCAtMjQsNiArMjQsNyBAQAogQ1JFQVRFIFsgT1IgUkVQTEFD RSBdIFBST0NFRFVSRQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gKCBbIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFy Z21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWyB7IERFRkFVTFQgfCA9IH0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmF1bHRfZXhwcjwvcmVwbGFjZWFibGU+IF0gWywgLi4u XSBdICkKICAgeyBMQU5HVUFHRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGFu Z19uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICB8IERZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2Vh YmxlPgogICAgIHwgVFJBTlNGT1JNIHsgRk9SIFRZUEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IH0gWywgLi4uIF0KICAgICB8IFsg RVhURVJOQUwgXSBTRUNVUklUWSBJTlZPS0VSIHwgWyBFWFRFUk5BTCBdIFNFQ1VSSVRZIERF RklORVIKICAgICB8IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZmln dXJhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiB7IFRPIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgPSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8IEZST00gQ1VSUkVOVCB9CkBA IC0xNzYsNiArMTc3LDE5IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgPC9s aXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgIDx0ZXJtPjxsaXRlcmFsPkRZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg U3BlY2lmaWVzIGhvdyBtYW55IGR5bmFtaWMgcmVzdWx0IHNldHMgdGhlIHByb2NlZHVyZSBy ZXR1cm5zIChzZWUKKyAgICAgICA8bGl0ZXJhbD48bGluayBsaW5rZW5kPSJzcWwtZGVjbGFy ZSI+REVDTEFSRTwvbGluaz4gV0lUSAorICAgICAgIFJFVFVSTjwvbGl0ZXJhbD4pLiAgVGhl IGRlZmF1bHQgaXMgMC4gIElmIGEgcHJvY2VkdXJlIHJldHVybnMgbW9yZQorICAgICAgIHJl c3VsdCBzZXRzIHRoYW4gZGVjbGFyZWQsIGEgd2FybmluZyBpcyByYWlzZWQuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8 dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5UUkFOU0ZPUk0geyBGT1IgVFlQ RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9uYW1lPC9yZXBsYWNlYWJs ZT4gfSBbLCAuLi4gXSB9PC9saXRlcmFsPjwvdGVybT4KIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9kZWNsYXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dt bAppbmRleCBiYmJkMzM1YmQwYmYuLmE2ZmYyNTY3ZWEzYiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9kZWNsYXJlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWNsYXJl LnNnbWwKQEAgLTI3LDcgKzI3LDggQEAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ CiBERUNMQVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gWyBCSU5BUlkgXSBbIEFTRU5TSVRJVkUgfCBJTlNFTlNJVElWRSBdIFsgWyBOTyBd IFNDUk9MTCBdCi0gICAgQ1VSU09SIFsgeyBXSVRIIHwgV0lUSE9VVCB9IEhPTEQgXSBGT1Ig PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnF1ZXJ5PC9yZXBsYWNlYWJsZT4KKyAg ICBDVVJTT1IgWyB7IFdJVEggfCBXSVRIT1VUIH0gSE9MRCBdIFsgeyBXSVRIIHwgV0lUSE9V VCB9IFJFVFVSTiBdCisgICAgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5x dWVyeTwvcmVwbGFjZWFibGU+CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAK QEAgLTEzMSw2ICsxMzIsMjIgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5XSVRIIFJFVFVSTjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPHRl cm0+PGxpdGVyYWw+V0lUSE9VVCBSRVRVUk48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZv ciBjdXJzb3JzIGRlZmluZWQgaW5zaWRlIGEgcHJvY2VkdXJlLgorICAgICAgPGxpdGVyYWw+ V0lUSCBSRVRVUk48L2xpdGVyYWw+IHNwZWNpZmllcyB0aGF0IHRoZSBjdXJzb3IncyByZXN1 bHQgcm93cworICAgICAgd2lsbCBiZSBwcm92aWRlZCBhcyBhIHJlc3VsdCBzZXQgb2YgdGhl IHByb2NlZHVyZSBpbnZvY2F0aW9uLiAgVG8KKyAgICAgIGFjY29tcGxpc2ggdGhhdCwgdGhl IGN1cnNvciBtdXN0IGJlIGxlZnQgb3BlbiBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgcHJv Y2VkdXJlLiAgSWYgbXVsdGlwbGUgPGxpdGVyYWw+V0lUSCBSRVRVUk48L2xpdGVyYWw+IGN1 cnNvcnMgYXJlCisgICAgICBkZWNsYXJlZCwgdGhlbiB0aGVpciByZXN1bHRzIHdpbGwgYmUg cmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZQorICAgICAgY3JlYXRlZC4gIDxsaXRl cmFsPldJVEhPVVQgUkVUVVJOPC9saXRlcmFsPiBpcyB0aGUgZGVmYXVsdC4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxp c3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVl cnk8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0zMjMsNiArMzQw LDIxIEBAIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgICBTZWUgPHhyZWYgbGlua2VuZD0i c3FsLWZldGNoIi8+IGZvciBtb3JlCiAgICBleGFtcGxlcyBvZiBjdXJzb3IgdXNhZ2UuCiAg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gcmV0 dXJuIG11bHRpcGxlIHJlc3VsdCBzZXRzIGZyb20gYSBwcm9jZWR1cmU6Cis8cHJvZ3JhbWxp c3Rpbmc+CitDUkVBVEUgUFJPQ0VEVVJFIHRlc3QoKQorTEFOR1VBR0UgU1FMCitBUyAkJAor REVDTEFSRSBhIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSB0YmwxOwor REVDTEFSRSBiIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSB0YmwyOwor JCQ7CisKK0NBTEwgdGVzdCgpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIFRoZSByZXN1bHRz IG9mIHRoZSB0d28gY3Vyc29ycyB3aWxsIGJlIHJldHVybmVkIGluIG9yZGVyIGZyb20gdGhp cyBjYWxsLgorICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAppbmRleCAxODcyNWEw MmQxZmIuLjdiNDQwZTc2MTM3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmZvcm1hdGlvbl9zY2hlbWEuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbApAQCAtMTU5Myw3ICsxNTkzLDcgQEAgQ1JFQVRFIFZJRVcgcm91 dGluZXMgQVMKICAgICAgICAgICAgICBDQVNFIFdIRU4gcC5wcm9pc3N0cmljdCBUSEVOICdZ RVMnIEVMU0UgJ05PJyBFTkQgRU5EIEFTIHllc19vcl9ubykgQVMgaXNfbnVsbF9jYWxsLAog ICAgICAgICAgICBDQVNUKG51bGwgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIHNxbF9wYXRoLAog ICAgICAgICAgICBDQVNUKCdZRVMnIEFTIHllc19vcl9ubykgQVMgc2NoZW1hX2xldmVsX3Jv dXRpbmUsCi0gICAgICAgICAgIENBU1QoMCBBUyBjYXJkaW5hbF9udW1iZXIpIEFTIG1heF9k eW5hbWljX3Jlc3VsdF9zZXRzLAorICAgICAgICAgICBDQVNUKHAucHJvZHlucmVzIEFTIGNh cmRpbmFsX251bWJlcikgQVMgbWF4X2R5bmFtaWNfcmVzdWx0X3NldHMsCiAgICAgICAgICAg IENBU1QobnVsbCBBUyB5ZXNfb3Jfbm8pIEFTIGlzX3VzZXJfZGVmaW5lZF9jYXN0LAogICAg ICAgICAgICBDQVNUKG51bGwgQVMgeWVzX29yX25vKSBBUyBpc19pbXBsaWNpdGx5X2ludm9j YWJsZSwKICAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gcC5wcm9zZWNkZWYgVEhFTiAnREVG SU5FUicgRUxTRSAnSU5WT0tFUicgRU5EIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBzZWN1cml0 eV90eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKaW5kZXggMGQwZGFhNjli MzQwLi5hOGYwOTY3ZDNkOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf YWdncmVnYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwpA QCAtNjQwLDcgKzY0MCw4IEBAIEFnZ3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1l LAogCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksIC8qIHByb2NvbmZpZyAqLwogCQkJ CQkJCSBJbnZhbGlkT2lkLAkvKiBubyBwcm9zdXBwb3J0ICovCiAJCQkJCQkJIDEsIC8qIHBy b2Nvc3QgKi8KLQkJCQkJCQkgMCk7CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMCwJLyogcHJv cm93cyAqLworCQkJCQkJCSAwKTsJLyogcHJvZHlucmVzICovCiAJcHJvY09pZCA9IG15c2Vs Zi5vYmplY3RJZDsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3Byb2MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jCmluZGV4IGE5ZmU0NWUz NDcxNC4uNjY3ZGRmMjg5ZGMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYwpAQCAtOTUsNyAr OTUsOCBAQCBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAkJ CQlEYXR1bSBwcm9jb25maWcsCiAJCQkJT2lkIHByb3N1cHBvcnQsCiAJCQkJZmxvYXQ0IHBy b2Nvc3QsCi0JCQkJZmxvYXQ0IHByb3Jvd3MpCisJCQkJZmxvYXQ0IHByb3Jvd3MsCisJCQkJ aW50IGR5bnJlcykKIHsKIAlPaWQJCQlyZXR2YWw7CiAJaW50CQkJcGFyYW1ldGVyQ291bnQ7 CkBAIC0zMTQsNiArMzE1LDcgQEAgUHJvY2VkdXJlQ3JlYXRlKGNvbnN0IGNoYXIgKnByb2Nl ZHVyZU5hbWUsCiAJdmFsdWVzW0FudW1fcGdfcHJvY19wcm9yZXRzZXQgLSAxXSA9IEJvb2xH ZXREYXR1bShyZXR1cm5zU2V0KTsKIAl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3ZvbGF0aWxl IC0gMV0gPSBDaGFyR2V0RGF0dW0odm9sYXRpbGl0eSk7CiAJdmFsdWVzW0FudW1fcGdfcHJv Y19wcm9wYXJhbGxlbCAtIDFdID0gQ2hhckdldERhdHVtKHBhcmFsbGVsKTsKKwl2YWx1ZXNb QW51bV9wZ19wcm9jX3Byb2R5bnJlcyAtIDFdID0gSW50MzJHZXREYXR1bShkeW5yZXMpOwog CXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvbmFyZ3MgLSAxXSA9IFVJbnQxNkdldERhdHVtKHBh cmFtZXRlckNvdW50KTsKIAl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb25hcmdkZWZhdWx0cyAt IDFdID0gVUludDE2R2V0RGF0dW0obGlzdF9sZW5ndGgocGFyYW1ldGVyRGVmYXVsdHMpKTsK IAl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3JldHR5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0 dW0ocmV0dXJuVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9m ZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggZGE3YzljNzcyZTA5Li5lYjhhMjQ2NWU4NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQKQEAgLTQ4Niw3ICs0ODYsNyBAQCBUNDMzCU11bHRpYXJndW1lbnQg R1JPVVBJTkcgZnVuY3Rpb24JCQlZRVMKIFQ0MzQJR1JPVVAgQlkgRElTVElOQ1QJCQlZRVMJ CiBUNDQxCUFCUyBhbmQgTU9EIGZ1bmN0aW9ucwkJCVlFUwkKIFQ0NjEJU3ltbWV0cmljIEJF VFdFRU4gcHJlZGljYXRlCQkJWUVTCQotVDQ3MQlSZXN1bHQgc2V0cyByZXR1cm4gdmFsdWUJ CQlOTwkKK1Q0NzEJUmVzdWx0IHNldHMgcmV0dXJuIHZhbHVlCQkJTk8JcGFydGlhbGx5IHN1 cHBvcnRlZAogVDQ3MglERVNDUklCRSBDVVJTT1IJCQlOTwkKIFQ0OTEJTEFURVJBTCBkZXJp dmVkIHRhYmxlCQkJWUVTCQogVDQ5NQlDb21iaW5lZCBkYXRhIGNoYW5nZSBhbmQgcmV0cmll dmFsCQkJTk8JZGlmZmVyZW50IHN5bnRheApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZnVuY3Rpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlvbmNt ZHMuYwppbmRleCBlNmZjZmMyM2I5MzEuLjFmMjQwMDg1NDMxMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgogI2luY2x1ZGUgInV0 aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9zeXNjYWNoZS5oIgpAQCAtNTEzLDcgKzUxNCw4IEBAIGNvbXB1dGVfY29tbW9uX2F0dHJp YnV0ZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgRGVmRWxlbSAqKmNvc3RfaXRlbSwK IAkJCQkJCSBEZWZFbGVtICoqcm93c19pdGVtLAogCQkJCQkJIERlZkVsZW0gKipzdXBwb3J0 X2l0ZW0sCi0JCQkJCQkgRGVmRWxlbSAqKnBhcmFsbGVsX2l0ZW0pCisJCQkJCQkgRGVmRWxl bSAqKnBhcmFsbGVsX2l0ZW0sCisJCQkJCQkgRGVmRWxlbSAqKmR5bnJlc19pdGVtKQogewog CWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ2b2xhdGlsaXR5IikgPT0gMCkKIAl7CkBA IC01ODksMTIgKzU5MSwyOCBAQCBjb21wdXRlX2NvbW1vbl9hdHRyaWJ1dGUoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCSpwYXJhbGxlbF9pdGVtID0gZGVmZWw7CiAJfQorCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImR5bmFtaWNfcmVzdWx0X3NldHMiKSA9PSAwKQor CXsKKwkJaWYgKCFpc19wcm9jZWR1cmUpCisJCQlnb3RvIGZ1bmN0aW9uX2Vycm9yOworCQlp ZiAoKmR5bnJlc19pdGVtKQorCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBz dGF0ZSk7CisKKwkJKmR5bnJlc19pdGVtID0gZGVmZWw7CisJfQogCWVsc2UKIAkJcmV0dXJu IGZhbHNlOwogCiAJLyogUmVjb2duaXplZCBhbiBvcHRpb24gKi8KIAlyZXR1cm4gdHJ1ZTsK IAorZnVuY3Rpb25fZXJyb3I6CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKKwkJCSBlcnJtc2coImludmFsaWQg YXR0cmlidXRlIGluIGZ1bmN0aW9uIGRlZmluaXRpb24iKSwKKwkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CisJcmV0dXJuIGZhbHNlOworCiBw cm9jZWR1cmVfZXJyb3I6CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKQEAgLTczMSw3ICs3NDksOCBAQCBjb21w dXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCWZs b2F0NCAqcHJvY29zdCwKIAkJCQkJCQlmbG9hdDQgKnByb3Jvd3MsCiAJCQkJCQkJT2lkICpw cm9zdXBwb3J0LAotCQkJCQkJCWNoYXIgKnBhcmFsbGVsX3ApCisJCQkJCQkJY2hhciAqcGFy YWxsZWxfcCwKKwkJCQkJCQlpbnQgKmR5bnJlc19wKQogewogCUxpc3RDZWxsICAgKm9wdGlv bjsKIAlEZWZFbGVtICAgICphc19pdGVtID0gTlVMTDsKQEAgLTc0Nyw2ICs3NjYsNyBAQCBj b21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCURlZkVs ZW0gICAgKnJvd3NfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqc3VwcG9ydF9pdGVtID0g TlVMTDsKIAlEZWZFbGVtICAgICpwYXJhbGxlbF9pdGVtID0gTlVMTDsKKwlEZWZFbGVtICAg ICpkeW5yZXNfaXRlbSA9IE5VTEw7CiAKIAlmb3JlYWNoKG9wdGlvbiwgb3B0aW9ucykKIAl7 CkBAIC03OTIsNyArODEyLDggQEAgY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgICZjb3N0X2l0ZW0sCiAJCQkJCQkJCQkJICAm cm93c19pdGVtLAogCQkJCQkJCQkJCSAgJnN1cHBvcnRfaXRlbSwKLQkJCQkJCQkJCQkgICZw YXJhbGxlbF9pdGVtKSkKKwkJCQkJCQkJCQkgICZwYXJhbGxlbF9pdGVtLAorCQkJCQkJCQkJ CSAgJmR5bnJlc19pdGVtKSkKIAkJewogCQkJLyogcmVjb2duaXplZCBjb21tb24gb3B0aW9u ICovCiAJCQljb250aW51ZTsKQEAgLTg0MCw2ICs4NjEsMTEgQEAgY29tcHV0ZV9mdW5jdGlv bl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKnByb3N1cHBvcnQgPSBpbnRl cnByZXRfZnVuY19zdXBwb3J0KHN1cHBvcnRfaXRlbSk7CiAJaWYgKHBhcmFsbGVsX2l0ZW0p CiAJCSpwYXJhbGxlbF9wID0gaW50ZXJwcmV0X2Z1bmNfcGFyYWxsZWwocGFyYWxsZWxfaXRl bSk7CisJaWYgKGR5bnJlc19pdGVtKQorCXsKKwkJKmR5bnJlc19wID0gaW50VmFsKGR5bnJl c19pdGVtLT5hcmcpOworCQlBc3NlcnQoKmR5bnJlc19wID49IDApOwkvKiBlbmZvcmNlZCBi eSBwYXJzZXIgKi8KKwl9CiB9CiAKIApAQCAtMTA1MSw2ICsxMDc3LDcgQEAgQ3JlYXRlRnVu Y3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGdW5jdGlvblN0bXQgKnN0bXQpCiAJ Rm9ybV9wZ19sYW5ndWFnZSBsYW5ndWFnZVN0cnVjdDsKIAlMaXN0CSAgICphc19jbGF1c2U7 CiAJY2hhcgkJcGFyYWxsZWw7CisJaW50CQkJZHlucmVzOwogCiAJLyogQ29udmVydCBsaXN0 IG9mIG5hbWVzIHRvIGEgbmFtZSBhbmQgbmFtZXNwYWNlICovCiAJbmFtZXNwYWNlSWQgPSBR dWFsaWZpZWROYW1lR2V0Q3JlYXRpb25OYW1lc3BhY2Uoc3RtdC0+ZnVuY25hbWUsCkBAIC0x MDc1LDYgKzExMDIsNyBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAlwcm9yb3dzID0gLTE7CQkJCS8qIGluZGljYXRl cyBub3Qgc2V0ICovCiAJcHJvc3VwcG9ydCA9IEludmFsaWRPaWQ7CiAJcGFyYWxsZWwgPSBQ Uk9QQVJBTExFTF9VTlNBRkU7CisJZHlucmVzID0gMDsKIAogCS8qIEV4dHJhY3Qgbm9uLWRl ZmF1bHQgYXR0cmlidXRlcyBmcm9tIHN0bXQtPm9wdGlvbnMgbGlzdCAqLwogCWNvbXB1dGVf ZnVuY3Rpb25fYXR0cmlidXRlcyhwc3RhdGUsCkBAIC0xMDg0LDcgKzExMTIsNyBAQCBDcmVh dGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3Rt dCkKIAkJCQkJCQkJJmlzV2luZG93RnVuYywgJnZvbGF0aWxpdHksCiAJCQkJCQkJCSZpc1N0 cmljdCwgJnNlY3VyaXR5LCAmaXNMZWFrUHJvb2YsCiAJCQkJCQkJCSZwcm9jb25maWcsICZw cm9jb3N0LCAmcHJvcm93cywKLQkJCQkJCQkJJnByb3N1cHBvcnQsICZwYXJhbGxlbCk7CisJ CQkJCQkJCSZwcm9zdXBwb3J0LCAmcGFyYWxsZWwsICZkeW5yZXMpOwogCiAJaWYgKCFsYW5n dWFnZSkKIAl7CkBAIC0xMjg1LDcgKzEzMTMsOCBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAgIFBvaW50 ZXJHZXREYXR1bShwcm9jb25maWcpLAogCQkJCQkJICAgcHJvc3VwcG9ydCwKIAkJCQkJCSAg IHByb2Nvc3QsCi0JCQkJCQkgICBwcm9yb3dzKTsKKwkJCQkJCSAgIHByb3Jvd3MsCisJCQkJ CQkgICBkeW5yZXMpOwogfQogCiAvKgpAQCAtMTM2Miw2ICsxMzkxLDcgQEAgQWx0ZXJGdW5j dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyRnVuY3Rpb25TdG10ICpzdG10KQogCURl ZkVsZW0gICAgKnJvd3NfaXRlbSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqc3VwcG9ydF9pdGVt ID0gTlVMTDsKIAlEZWZFbGVtICAgICpwYXJhbGxlbF9pdGVtID0gTlVMTDsKKwlEZWZFbGVt ICAgICpkeW5yZXNfaXRlbSA9IE5VTEw7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwogCiAJ cmVsID0gdGFibGVfb3BlbihQcm9jZWR1cmVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKQEAgLTE0MDUsNyArMTQzNSw4IEBAIEFsdGVyRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlckZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJCSAmY29zdF9pdGVtLAog CQkJCQkJCQkJICZyb3dzX2l0ZW0sCiAJCQkJCQkJCQkgJnN1cHBvcnRfaXRlbSwKLQkJCQkJ CQkJCSAmcGFyYWxsZWxfaXRlbSkgPT0gZmFsc2UpCisJCQkJCQkJCQkgJnBhcmFsbGVsX2l0 ZW0sCisJCQkJCQkJCQkgJmR5bnJlc19pdGVtKSA9PSBmYWxzZSkKIAkJCWVsb2coRVJST1Is ICJvcHRpb24gXCIlc1wiIG5vdCByZWNvZ25pemVkIiwgZGVmZWwtPmRlZm5hbWUpOwogCX0K IApAQCAtMTQ2Nyw2ICsxNDk4LDggQEAgQWx0ZXJGdW5jdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyRnVuY3Rpb25TdG10ICpzdG10KQogCX0KIAlpZiAocGFyYWxsZWxfaXRlbSkK IAkJcHJvY0Zvcm0tPnByb3BhcmFsbGVsID0gaW50ZXJwcmV0X2Z1bmNfcGFyYWxsZWwocGFy YWxsZWxfaXRlbSk7CisJaWYgKGR5bnJlc19pdGVtKQorCQlwcm9jRm9ybS0+cHJvZHlucmVz ID0gaW50VmFsKGR5bnJlc19pdGVtLT5hcmcpOwogCWlmIChzZXRfaXRlbXMpCiAJewogCQlE YXR1bQkJZGF0dW07CkBAIC0yMTM4LDYgKzIxNzEsMTcgQEAgRXhlY3V0ZURvU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIERvU3RtdCAqc3RtdCwgYm9vbCBhdG9taWMpCiAJT2lkRnVuY3Rp b25DYWxsMShsYW5pbmxpbmUsIFBvaW50ZXJHZXREYXR1bShjb2RlYmxvY2spKTsKIH0KIAor c3RhdGljIExpc3QgKnByb2NlZHVyZV9zdGFjazsKKworT2lkCitDdXJyZW50UHJvY2VkdXJl KHZvaWQpCit7CisJaWYgKCFwcm9jZWR1cmVfc3RhY2spCisJCXJldHVybiBJbnZhbGlkT2lk OworCWVsc2UKKwkJcmV0dXJuIGxsYXN0X29pZChwcm9jZWR1cmVfc3RhY2spOworfQorCiAv KgogICogRXhlY3V0ZSBDQUxMIHN0YXRlbWVudAogICoKQEAgLTIxNzcsNiArMjIyMSw3IEBA IEV4ZWN1dGVDYWxsU3RtdChDYWxsU3RtdCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs IGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2ZXIKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUZt Z3JJbmZvCWZsaW5mbzsKIAlDYWxsQ29udGV4dCAqY2FsbGNvbnRleHQ7CisJaW50CQkJcHJv ZHlucmVzOwogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsK IAlIZWFwVHVwbGUJdHA7CkBAIC0yMjE3LDYgKzIyNjIsOCBAQCBFeGVjdXRlQ2FsbFN0bXQo Q2FsbFN0bXQgKnN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBib29sIGF0b21pYywgRGVz dFJlY2VpdmVyCiAJaWYgKCgoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QodHApKS0+cHJvc2Vj ZGVmKQogCQljYWxsY29udGV4dC0+YXRvbWljID0gdHJ1ZTsKIAorCXByb2R5bnJlcyA9ICgo Rm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QodHApKS0+cHJvZHlucmVzOworCiAJUmVsZWFzZVN5 c0NhY2hlKHRwKTsKIAogCS8qIHNhZmV0eSBjaGVjazsgc2VlIEV4ZWNJbml0RnVuYygpICov CkBAIC0yMjc3LDcgKzIzMjQsMTggQEAgRXhlY3V0ZUNhbGxTdG10KENhbGxTdG10ICpzdG10 LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgYm9vbCBhdG9taWMsIERlc3RSZWNlaXZlcgogCiAJ LyogSGVyZSB3ZSBhY3R1YWxseSBjYWxsIHRoZSBwcm9jZWR1cmUgKi8KIAlwZ3N0YXRfaW5p dF9mdW5jdGlvbl91c2FnZShmY2luZm8sICZmY3VzYWdlKTsKLQlyZXR2YWwgPSBGdW5jdGlv bkNhbGxJbnZva2UoZmNpbmZvKTsKKworCXByb2NlZHVyZV9zdGFjayA9IGxhcHBlbmRfb2lk KHByb2NlZHVyZV9zdGFjaywgZmV4cHItPmZ1bmNpZCk7CisJUEdfVFJZKCk7CisJeworCQly ZXR2YWwgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvKTsKKwl9CisJUEdfRklOQUxMWSgp OworCXsKKwkJcHJvY2VkdXJlX3N0YWNrID0gbGlzdF9kZWxldGVfbGFzdChwcm9jZWR1cmVf c3RhY2spOworCX0KKwlQR19FTkRfVFJZKCk7CisKIAlwZ3N0YXRfZW5kX2Z1bmN0aW9uX3Vz YWdlKCZmY3VzYWdlLCB0cnVlKTsKIAogCS8qIEhhbmRsZSB0aGUgcHJvY2VkdXJlJ3Mgb3V0 cHV0cyAqLwpAQCAtMjMzOCw2ICsyMzk2LDEzIEBAIEV4ZWN1dGVDYWxsU3RtdChDYWxsU3Rt dCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2 ZXIKIAkJCSBmZXhwci0+ZnVuY3Jlc3VsdHR5cGUpOwogCiAJRnJlZUV4ZWN1dG9yU3RhdGUo ZXN0YXRlKTsKKworCUNsb3NlT3RoZXJSZXR1cm5hYmxlQ3Vyc29ycyhmZXhwci0+ZnVuY2lk KTsKKworCWlmIChsaXN0X2xlbmd0aChHZXRSZXR1cm5hYmxlQ3Vyc29ycygpKSA+IHByb2R5 bnJlcykKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XQVJOSU5H X0FUVEVNUFRfVE9fUkVUVVJOX1RPT19NQU5ZX1JFU1VMVF9TRVRTKSwKKwkJCQllcnJtc2co ImF0dGVtcHQgdG8gcmV0dXJuIHRvbyBtYW55IHJlc3VsdCBzZXRzIikpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IDk5MDJjNWM1NjY5YS4uYzQyZjg4 ZjJkZGRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0yNCw2ICsyNCw3 IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgor I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3BvcnRh bGNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCkBAIC0xNDAsNiArMTQxLDI4IEBAIFBlcmZvcm1D dXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNvclN0bXQgKmNzdG10 LCBQYXJhbUxpc3RJbmZvIHBhCiAJCQlwb3J0YWwtPmN1cnNvck9wdGlvbnMgfD0gQ1VSU09S X09QVF9OT19TQ1JPTEw7CiAJfQogCisJLyoKKwkgKiBGb3IgcmV0dXJuYWJsZSBjdXJzb3Jz LCByZW1lbWJlciB0aGUgY3VycmVudGx5IGFjdGl2ZSBwcm9jZWR1cmUsIGFzCisJICogd2Vs bCBhcyB0aGUgY29tbWFuZCBJRCwgc28gd2UgY2FuIHNvcnQgYnkgY3JlYXRpb24gb3JkZXIg bGF0ZXIuICBJZgorCSAqIHRoZXJlIGlzIG5vIHByb2NlZHVyZSBhY3RpdmUsIHRoZSBjdXJz b3IgaXMgbWFya2VkIGFzIFdJVEhPVVQgUkVUVVJOLgorCSAqIChUaGlzIGlzIG5vdCBhbiBl cnJvciwgcGVyIFNRTCBzdGFuZGFyZCwgc3ViY2xhdXNlICJFZmZlY3Qgb2Ygb3BlbmluZyBh CisJICogY3Vyc29yIi4pCisJICovCisJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENV UlNPUl9PUFRfUkVUVVJOKQorCXsKKwkJT2lkCQkJcHJvY0lkID0gQ3VycmVudFByb2NlZHVy ZSgpOworCisJCWlmIChwcm9jSWQpCisJCXsKKwkJCXBvcnRhbC0+cHJvY0lkID0gcHJvY0lk OworCQkJcG9ydGFsLT5jcmVhdGVDaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOwor CQl9CisJCWVsc2UKKwkJeworCQkJcG9ydGFsLT5jdXJzb3JPcHRpb25zICY9IH5DVVJTT1Jf T1BUX1JFVFVSTjsKKwkJfQorCX0KKwogCS8qCiAJICogU3RhcnQgZXhlY3V0aW9uLCBpbnNl cnRpbmcgcGFyYW1ldGVycyBpZiBhbnkuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YwppbmRleCAzM2I2NGZkMjc5M2IuLjk0MmNiZmE5M2Y5MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jCkBAIC0xNzc1LDcgKzE3NzUsOCBAQCBtYWtlUmFuZ2VDb25zdHJ1Y3RvcnMo Y29uc3QgY2hhciAqbmFtZSwgT2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkJIFBvaW50ZXJHZXRE YXR1bShOVUxMKSwgLyogcHJvY29uZmlnICovCiAJCQkJCQkJCSBJbnZhbGlkT2lkLAkvKiBw cm9zdXBwb3J0ICovCiAJCQkJCQkJCSAxLjAsCS8qIHByb2Nvc3QgKi8KLQkJCQkJCQkJIDAu MCk7CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkJIDAuMCwJLyogcHJvcm93cyAqLworCQkJCQkJ CQkgMCk7CS8qIHByb2R5bnJlcyAqLwogCiAJCS8qCiAJCSAqIE1ha2UgdGhlIGNvbnN0cnVj dG9ycyBpbnRlcm5hbGx5LWRlcGVuZGVudCBvbiB0aGUgcmFuZ2UgdHlwZSBzbwpAQCAtMTg0 MCw3ICsxODQxLDggQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3QgY2hhciAq bmFtZSwgT2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAv KiBwcm9jb25maWcgKi8KIAkJCQkJCQkgSW52YWxpZE9pZCwJLyogcHJvc3VwcG9ydCAqLwog CQkJCQkJCSAxLjAsCS8qIHByb2Nvc3QgKi8KLQkJCQkJCQkgMC4wKTsJLyogcHJvcm93cyAq LworCQkJCQkJCSAwLjAsCS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMCk7CS8qIHByb2R5bnJl cyAqLwogCiAJLyoKIAkgKiBNYWtlIHRoZSBjb25zdHJ1Y3RvciBpbnRlcm5hbGx5LWRlcGVu ZGVudCBvbiB0aGUgbXVsdGlyYW5nZSB0eXBlIHNvCkBAIC0xODg0LDcgKzE4ODYsOCBAQCBt YWtlTXVsdGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpuYW1lLCBPaWQgbmFtZXNw YWNlLAogCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksIC8qIHByb2NvbmZpZyAqLwog CQkJCQkJCSBJbnZhbGlkT2lkLAkvKiBwcm9zdXBwb3J0ICovCiAJCQkJCQkJIDEuMCwJLyog cHJvY29zdCAqLwotCQkJCQkJCSAwLjApOwkvKiBwcm9yb3dzICovCisJCQkJCQkJIDAuMCwJ LyogcHJvcm93cyAqLworCQkJCQkJCSAwKTsJLyogcHJvZHlucmVzICovCiAJLyogZGl0dG8g Ki8KIAlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVO Q1lfSU5URVJOQUwpOwogCXBmcmVlKGFyZ3R5cGVzKTsKQEAgLTE5MjIsNyArMTkyNSw4IEBA IG1ha2VNdWx0aXJhbmdlQ29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1l c3BhY2UsCiAJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShOVUxMKSwgLyogcHJvY29uZmlnICov CiAJCQkJCQkJIEludmFsaWRPaWQsCS8qIHByb3N1cHBvcnQgKi8KIAkJCQkJCQkgMS4wLAkv KiBwcm9jb3N0ICovCi0JCQkJCQkJIDAuMCk7CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMC4w LAkvKiBwcm9yb3dzICovCisJCQkJCQkJIDApOwkvKiBwcm9keW5yZXMgKi8KIAkvKiBkaXR0 byAqLwogCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5E RU5DWV9JTlRFUk5BTCk7CiAJcGZyZWUoYXJndHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXgg OTRkNTE0MmE0YTA2Li4wMjlkODZmYTMwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNjg5LDcg KzY4OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJREFUQV9QIERBVEFCQVNF IERBWV9QIERFQUxMT0NBVEUgREVDIERFQ0lNQUxfUCBERUNMQVJFIERFRkFVTFQgREVGQVVM VFMKIAlERUZFUlJBQkxFIERFRkVSUkVEIERFRklORVIgREVMRVRFX1AgREVMSU1JVEVSIERF TElNSVRFUlMgREVQRU5EUyBERVBUSCBERVNDCiAJREVUQUNIIERJQ1RJT05BUlkgRElTQUJM RV9QIERJU0NBUkQgRElTVElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5fUAotCURPVUJMRV9Q IERST1AKKwlET1VCTEVfUCBEUk9QIERZTkFNSUMKIAogCUVBQ0ggRUxTRSBFTkFCTEVfUCBF TkNPRElORyBFTkNSWVBURUQgRU5EX1AgRU5VTV9QIEVTQ0FQRSBFVkVOVCBFWENFUFQKIAlF WENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMgRVhQTEFJTiBFWFBS RVNTSU9OCkBAIC03MzYsNyArNzM2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUYgUkVG RVJFTkNFUyBSRUZFUkVOQ0lORwogCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElWRV9QIFJFTEVB U0UgUkVOQU1FIFJFUEVBVEFCTEUgUkVQTEFDRSBSRVBMSUNBCi0JUkVTRVQgUkVTVEFSVCBS RVNUUklDVCBSRVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJPTEUgUk9M TEJBQ0sgUk9MTFVQCisJUkVTRVQgUkVTVEFSVCBSRVNUUklDVCBSRVNVTFQgUkVUVVJOIFJF VFVSTklORyBSRVRVUk5TIFJFVk9LRSBSSUdIVCBST0xFIFJPTExCQUNLIFJPTExVUAogCVJP VVRJTkUgUk9VVElORVMgUk9XIFJPV1MgUlVMRQogCiAJU0FWRVBPSU5UIFNDSEVNQSBTQ0hF TUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUIFNFUVVFTkNFIFNF UVVFTkNFUwpAQCAtODUxMiw2ICs4NTEyLDEwIEBAIGNvbW1vbl9mdW5jX29wdF9pdGVtOgog CQkJCXsKIAkJCQkJJCQgPSBtYWtlRGVmRWxlbSgicGFyYWxsZWwiLCAoTm9kZSAqKSBtYWtl U3RyaW5nKCQyKSwgQDEpOwogCQkJCX0KKwkJCXwgRFlOQU1JQyBSRVNVTFQgU0VUUyBJY29u c3QKKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImR5bmFtaWNfcmVzdWx0X3NldHMi LCAoTm9kZSAqKW1ha2VJbnRlZ2VyKCQ0KSwgQDEpOworCQkJCX0KIAkJOwogCiBjcmVhdGVm dW5jX29wdF9pdGVtOgpAQCAtMTI0MDEsNiArMTI0MDUsMTIgQEAgY3Vyc29yX29wdGlvbnM6 IC8qRU1QVFkqLwkJCQkJeyAkJCA9IDA7IH0KIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJ CXsgJCQgPSAwOyB9CiAJCQl8IFdJVEggSE9MRAkJCQkJCXsgJCQgPSBDVVJTT1JfT1BUX0hP TEQ7IH0KIAkJCXwgV0lUSE9VVCBIT0xECQkJCQl7ICQkID0gMDsgfQorCQkJfCBXSVRIIEhP TEQgV0lUSCBSRVRVUk4JCQl7ICQkID0gQ1VSU09SX09QVF9IT0xEIHwgQ1VSU09SX09QVF9S RVRVUk47IH0KKwkJCXwgV0lUSE9VVCBIT0xEIFdJVEggUkVUVVJOCQl7ICQkID0gQ1VSU09S X09QVF9SRVRVUk47IH0KKwkJCXwgV0lUSCBIT0xEIFdJVEhPVVQgUkVUVVJOCQl7ICQkID0g Q1VSU09SX09QVF9IT0xEOyB9CisJCQl8IFdJVEhPVVQgSE9MRCBXSVRIT1VUIFJFVFVSTgl7 ICQkID0gMDsgfQorCQkJfCBXSVRIIFJFVFVSTgkJCQkJeyAkJCA9IENVUlNPUl9PUFRfUkVU VVJOOyB9CisJCQl8IFdJVEhPVVQgUkVUVVJOCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCkBAIC0xNjcyMiw2ICsxNjczMiw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgRE9NQUlOX1AKIAkJCXwgRE9VQkxFX1AKIAkJCXwgRFJPUAor CQkJfCBEWU5BTUlDCiAJCQl8IEVBQ0gKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJTkcK QEAgLTE2ODY3LDYgKzE2ODc4LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBSRVNF VAogCQkJfCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCisJCQl8IFJFU1VMVAogCQkJfCBSRVRV Uk4KIAkJCXwgUkVUVVJOUwogCQkJfCBSRVZPS0UKQEAgLTE3MjY3LDYgKzE3Mjc5LDcgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBET01BSU5fUAogCQkJfCBET1VCTEVfUAogCQkJ fCBEUk9QCisJCQl8IERZTkFNSUMKIAkJCXwgRUFDSAogCQkJfCBFTFNFCiAJCQl8IEVOQUJM RV9QCkBAIC0xNzQ1NCw2ICsxNzQ2Nyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwg UkVTRVQKIAkJCXwgUkVTVEFSVAogCQkJfCBSRVNUUklDVAorCQkJfCBSRVNVTFQKIAkJCXwg UkVUVVJOCiAJCQl8IFJFVFVSTlMKIAkJCXwgUkVWT0tFCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggMjdkZWUyOWY0MjBiLi5lNjBmY2ExMjhhMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgog I2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5oIgpAQCAt MTA3Miw2ICsxMDczLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlf c3RyaW5nKQogCQlQb3J0YWwJCXBvcnRhbDsKIAkJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsK IAkJaW50MTYJCWZvcm1hdDsKKwkJTGlzdENlbGwgICAqbGM7CiAKIAkJcGdzdGF0X3JlcG9y dF9xdWVyeV9pZCgwLCB0cnVlKTsKIApAQCAtMTIzMyw3ICsxMjM1LDcgQEAgZXhlY19zaW1w bGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CiAKIAkJLyoKLQkJICogUnVuIHRoZSBwb3J0YWwgdG8gY29t cGxldGlvbiwgYW5kIHRoZW4gZHJvcCBpdCAoYW5kIHRoZSByZWNlaXZlcikuCisJCSAqIFJ1 biB0aGUgcG9ydGFsIHRvIGNvbXBsZXRpb24sIGFuZCB0aGVuIGRyb3AgaXQuCiAJCSAqLwog CQkodm9pZCkgUG9ydGFsUnVuKHBvcnRhbCwKIAkJCQkJCSBGRVRDSF9BTEwsCkBAIC0xMjQz LDEwICsxMjQ1LDM0IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZykKIAkJCQkJCSByZWNlaXZlciwKIAkJCQkJCSAmcWMpOwogCi0JCXJlY2VpdmVyLT5y RGVzdHJveShyZWNlaXZlcik7Ci0KIAkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKIAor CQkvKgorCQkgKiBSdW4gcG9ydGFscyBmb3IgZHluYW1pYyByZXN1bHQgc2V0cy4KKwkJICov CisJCWZvcmVhY2ggKGxjLCBHZXRSZXR1cm5hYmxlQ3Vyc29ycygpKQorCQl7CisJCQlQb3J0 YWwJCWR5bnBvcnRhbCA9IGxmaXJzdChsYyk7CisKKwkJCWlmIChkZXN0ID09IERlc3RSZW1v dGUpCisJCQkJU2V0UmVtb3RlRGVzdFJlY2VpdmVyUGFyYW1zKHJlY2VpdmVyLCBkeW5wb3J0 YWwpOworCisJCQlQb3J0YWxSdW4oZHlucG9ydGFsLAorCQkJCQkgIEZFVENIX0FMTCwKKwkJ CQkJICB0cnVlLAorCQkJCQkgIHRydWUsCisJCQkJCSAgcmVjZWl2ZXIsCisJCQkJCSAgcmVj ZWl2ZXIsCisJCQkJCSAgTlVMTCk7CisKKwkJCVBvcnRhbERyb3AoZHlucG9ydGFsLCBmYWxz ZSk7CisJCX0KKworCQkvKgorCQkgKiBEcm9wIHRoZSByZWNlaXZlci4KKwkJICovCisJCXJl Y2VpdmVyLT5yRGVzdHJveShyZWNlaXZlcik7CisKIAkJaWYgKGxuZXh0KHBhcnNldHJlZV9s aXN0LCBwYXJzZXRyZWVfaXRlbSkgPT0gTlVMTCkKIAkJewogCQkJLyoKQEAgLTIwNTgsNiAr MjA4NCw3IEBAIGV4ZWNfZXhlY3V0ZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnBvcnRhbF9uYW1l LCBsb25nIG1heF9yb3dzKQogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CiAJY29uc3QgY2hh ciAqcHJlcFN0bXROYW1lOwogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOworCUxpc3RD ZWxsICAgKmxjOwogCWJvb2wJCXNhdmVfbG9nX3N0YXRlbWVudF9zdGF0cyA9IGxvZ19zdGF0 ZW1lbnRfc3RhdHM7CiAJYm9vbAkJaXNfeGFjdF9jb21tYW5kOwogCWJvb2wJCWV4ZWN1dGVf aXNfZmV0Y2g7CkBAIC0yMTk0LDYgKzIyMjEsMzQgQEAgZXhlY19leGVjdXRlX21lc3NhZ2Uo Y29uc3QgY2hhciAqcG9ydGFsX25hbWUsIGxvbmcgbWF4X3Jvd3MpCiAJCQkJCQkgIHJlY2Vp dmVyLAogCQkJCQkJICAmcWMpOwogCisJLyoKKwkgKiBSdW4gcG9ydGFscyBmb3IgZHluYW1p YyByZXN1bHQgc2V0cy4KKwkgKi8KKwlmb3JlYWNoIChsYywgR2V0UmV0dXJuYWJsZUN1cnNv cnMoKSkKKwl7CisJCVBvcnRhbCBkeW5fcG9ydGFsID0gbGZpcnN0KGxjKTsKKworCQlpZiAo ZGVzdCA9PSBEZXN0UmVtb3RlRXhlY3V0ZSkKKwkJCVNldFJlbW90ZURlc3RSZWNlaXZlclBh cmFtcyhyZWNlaXZlciwgZHluX3BvcnRhbCk7CisKKwkJUG9ydGFsU2V0UmVzdWx0Rm9ybWF0 KGR5bl9wb3J0YWwsIDEsICZwb3J0YWwtPmR5bmFtaWNfZm9ybWF0KTsKKworCQlTZW5kUm93 RGVzY3JpcHRpb25NZXNzYWdlKCZyb3dfZGVzY3JpcHRpb25fYnVmLAorCQkJCQkJCQkgIGR5 bl9wb3J0YWwtPnR1cERlc2MsCisJCQkJCQkJCSAgRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KGR5 bl9wb3J0YWwpLAorCQkJCQkJCQkgIGR5bl9wb3J0YWwtPmZvcm1hdHMpOworCisJCVBvcnRh bFJ1bihkeW5fcG9ydGFsLAorCQkJCSAgRkVUQ0hfQUxMLAorCQkJCSAgdHJ1ZSwKKwkJCQkg IHRydWUsCisJCQkJICByZWNlaXZlciwKKwkJCQkgIHJlY2VpdmVyLAorCQkJCSAgTlVMTCk7 CisKKwkJUG9ydGFsRHJvcChkeW5fcG9ydGFsLCBmYWxzZSk7CisJfQorCiAJcmVjZWl2ZXIt PnJEZXN0cm95KHJlY2VpdmVyKTsKIAogCS8qIERvbmUgZXhlY3V0aW5nOyByZW1vdmUgdGhl IHBhcmFtcyBlcnJvciBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNWFhNWEzNTBm Mzg3Li5kMmU1NTUwMTMyNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtNjQxLDYgKzY0MSw4IEBA IFBvcnRhbFNldFJlc3VsdEZvcm1hdChQb3J0YWwgcG9ydGFsLCBpbnQgbkZvcm1hdHMsIGlu dDE2ICpmb3JtYXRzKQogCQkJCQkgZXJybXNnKCJiaW5kIG1lc3NhZ2UgaGFzICVkIHJlc3Vs dCBmb3JtYXRzIGJ1dCBxdWVyeSBoYXMgJWQgY29sdW1ucyIsCiAJCQkJCQkJbkZvcm1hdHMs IG5hdHRzKSkpOwogCQltZW1jcHkocG9ydGFsLT5mb3JtYXRzLCBmb3JtYXRzLCBuYXR0cyAq IHNpemVvZihpbnQxNikpOworCisJCXBvcnRhbC0+ZHluYW1pY19mb3JtYXQgPSAwOwogCX0K IAllbHNlIGlmIChuRm9ybWF0cyA+IDApCiAJewpAQCAtNjQ5LDEyICs2NTEsMTYgQEAgUG9y dGFsU2V0UmVzdWx0Rm9ybWF0KFBvcnRhbCBwb3J0YWwsIGludCBuRm9ybWF0cywgaW50MTYg KmZvcm1hdHMpCiAKIAkJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCiAJCQlwb3J0YWwt PmZvcm1hdHNbaV0gPSBmb3JtYXQxOworCisJCXBvcnRhbC0+ZHluYW1pY19mb3JtYXQgPSBm b3JtYXQxOwogCX0KIAllbHNlCiAJewogCQkvKiB1c2UgZGVmYXVsdCBmb3JtYXQgZm9yIGFs bCBjb2x1bW5zICovCiAJCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQkJcG9ydGFs LT5mb3JtYXRzW2ldID0gMDsKKworCQlwb3J0YWwtPmR5bmFtaWNfZm9ybWF0ID0gMDsKIAl9 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dCBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dAppbmRleCA2MjQxOGEwNTFhYzcuLmMyMDcy MmU2YmJkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0Cisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dApAQCAtODMsNiArODMsNyBAQCBT ZWN0aW9uOiBDbGFzcyAwMSAtIFdhcm5pbmcKICMgZG8gbm90IHVzZSB0aGlzIGNsYXNzIGZv ciBmYWlsdXJlIGNvbmRpdGlvbnMKIDAxMDAwICAgIFcgICAgRVJSQ09ERV9XQVJOSU5HICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZwog MDEwMEMgICAgVyAgICBFUlJDT0RFX1dBUk5JTkdfRFlOQU1JQ19SRVNVTFRfU0VUU19SRVRV Uk5FRCAgICAgICAgICAgICAgICAgICBkeW5hbWljX3Jlc3VsdF9zZXRzX3JldHVybmVkCisw MTAwRSAgICBXICAgIEVSUkNPREVfV0FSTklOR19BVFRFTVBUX1RPX1JFVFVSTl9UT09fTUFO WV9SRVNVTFRfU0VUUyAgICAgICAgIGF0dGVtcHRfdG9fcmV0dXJuX3Rvb19tYW55X3Jlc3Vs dF9zZXRzCiAwMTAwOCAgICBXICAgIEVSUkNPREVfV0FSTklOR19JTVBMSUNJVF9aRVJPX0JJ VF9QQURESU5HICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0X3plcm9fYml0X3BhZGRp bmcKIDAxMDAzICAgIFcgICAgRVJSQ09ERV9XQVJOSU5HX05VTExfVkFMVUVfRUxJTUlOQVRF RF9JTl9TRVRfRlVOQ1RJT04gICAgICAgICAgbnVsbF92YWx1ZV9lbGltaW5hdGVkX2luX3Nl dF9mdW5jdGlvbgogMDEwMDcgICAgVyAgICBFUlJDT0RFX1dBUk5JTkdfUFJJVklMRUdFX05P VF9HUkFOVEVEICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2aWxlZ2Vfbm90X2dyYW50 ZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDNhMTYxYmRiODhkMS4u ZTI3ZTA4MmE2MThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTEy ODksMyArMTI4OSw1MSBAQCBGb3JnZXRQb3J0YWxTbmFwc2hvdHModm9pZCkKIAkJZWxvZyhF UlJPUiwgInBvcnRhbCBzbmFwc2hvdHMgKCVkKSBkaWQgbm90IGFjY291bnQgZm9yIGFsbCBh Y3RpdmUgc25hcHNob3RzICglZCkiLAogCQkJIG51bVBvcnRhbFNuYXBzLCBudW1BY3RpdmVT bmFwcyk7CiB9CisKK3N0YXRpYyBpbnQKK2NtcF9wb3J0YWxzX2J5X2NyZWF0aW9uKGNvbnN0 IExpc3RDZWxsICphLCBjb25zdCBMaXN0Q2VsbCAqYikKK3sKKwlQb3J0YWwJCXBhID0gbGZp cnN0KGEpOworCVBvcnRhbAkJcGIgPSBsZmlyc3QoYik7CisKKwlyZXR1cm4gcGEtPmNyZWF0 ZUNpZCAtIHBiLT5jcmVhdGVDaWQ7Cit9CisKK0xpc3QgKgorR2V0UmV0dXJuYWJsZUN1cnNv cnModm9pZCkKK3sKKwlMaXN0CSAgICpyZXQgPSBOSUw7CisJSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKKwlQb3J0YWxIYXNoRW50ICpoZW50cnk7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIFBvcnRhbEhhc2hUYWJsZSk7CisKKwl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNo RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CisKKwkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfUkVUVVJOKQorCQkJcmV0ID0gbGFwcGVuZChyZXQsIHBvcnRh bCk7CisJfQorCisJbGlzdF9zb3J0KHJldCwgY21wX3BvcnRhbHNfYnlfY3JlYXRpb24pOwor CisJcmV0dXJuIHJldDsKK30KKwordm9pZAorQ2xvc2VPdGhlclJldHVybmFibGVDdXJzb3Jz KE9pZCBwcm9jaWQpCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlQb3J0YWxIYXNo RW50ICpoZW50cnk7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJs ZSk7CisKKwl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5 LT5wb3J0YWw7CisKKwkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRf UkVUVVJOICYmIHBvcnRhbC0+cHJvY0lkICE9IHByb2NpZCkKKwkJCVBvcnRhbERyb3AocG9y dGFsLCBmYWxzZSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYmQ5YjA2NmU0ZWI4Li5l NmQxN2FlZGMzNDUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTE1NzMsNiArMTE1NzMsNyBAQCBk dW1wRnVuYyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAJY2hhcgkg ICAqcHJvcm93czsKIAljaGFyCSAgICpwcm9zdXBwb3J0OwogCWNoYXIJICAgKnByb3BhcmFs bGVsOworCWludAkJCXByb2R5bnJlczsKIAljaGFyCSAgICpsYW5uYW1lOwogCWNoYXIJICAq KmNvbmZpZ2l0ZW1zID0gTlVMTDsKIAlpbnQJCQluY29uZmlnaXRlbXMgPSAwOwpAQCAtMTE2 NDAsMTAgKzExNjQxLDE3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEZ1bmNJ bmZvICpmaW5mbykKIAogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJICJwZ19nZXRfZnVuY3Rp b25fc3FsYm9keShwLm9pZCkgQVMgcHJvc3FsYm9keVxuIik7CisJCQkJCQkJCSAicGdfZ2V0 X2Z1bmN0aW9uX3NxbGJvZHkocC5vaWQpIEFTIHByb3NxbGJvZHksXG4iKTsKIAkJZWxzZQog CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJCSAiTlVMTCBBUyBwcm9z cWxib2R5XG4iKTsKKwkJCQkJCQkJICJOVUxMIEFTIHByb3NxbGJvZHksXG4iKTsKKworCQlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKKwkJCQkJCQkJICJwcm9keW5yZXNcbiIpOworCQllbHNlCisJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkJICIwIEFTIHByb2R5bnJlc1xuIik7 CiAKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJGUk9NIHBnX2Nh dGFsb2cucGdfcHJvYyBwLCBwZ19jYXRhbG9nLnBnX2xhbmd1YWdlIGxcbiIKQEAgLTExNjg4 LDYgKzExNjk2LDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgY29uc3QgRnVuY0luZm8g KmZpbmZvKQogCXByb3Jvd3MgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywg InByb3Jvd3MiKSk7CiAJcHJvc3VwcG9ydCA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1i ZXIocmVzLCAicHJvc3VwcG9ydCIpKTsKIAlwcm9wYXJhbGxlbCA9IFBRZ2V0dmFsdWUocmVz LCAwLCBQUWZudW1iZXIocmVzLCAicHJvcGFyYWxsZWwiKSk7CisJcHJvZHlucmVzID0gYXRv aShQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb2R5bnJlcyIpKSk7CiAJ bGFubmFtZSA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAibGFubmFtZSIp KTsKIAogCS8qCkBAIC0xMTgwNiw2ICsxMTgxNSw5IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZv dXQsIGNvbnN0IEZ1bmNJbmZvICpmaW5mbykKIAlpZiAocHJvaXNzdHJpY3RbMF0gPT0gJ3Qn KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIFNUUklDVCIpOwogCisJaWYgKHByb2R5 bnJlcyA+IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgRFlOQU1JQyBSRVNVTFQgU0VU UyAlZCIsIHByb2R5bnJlcyk7CisKIAlpZiAocHJvc2VjZGVmWzBdID09ICd0JykKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBTRUNVUklUWSBERUZJTkVSIik7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmgKaW5kZXggNzYzMTBkNGNjOWExLi5jNWQyZjViZWJhODIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5oCkBAIC03Niw2ICs3Niw5IEBAIENBVEFMT0cocGdfcHJvYywxMjU1 LFByb2NlZHVyZVJlbGF0aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJX1JPV1RZUEVfT0lEKDgx LFByb2NlCiAJLyogc2VlIFBST1BBUkFMTEVMXyBjYXRlZ29yaWVzIGJlbG93ICovCiAJY2hh cgkJcHJvcGFyYWxsZWwgQktJX0RFRkFVTFQocyk7CiAKKwkvKiBtYXhpbXVtIG51bWJlciBv ZiBkeW5hbWljIHJlc3VsdCBzZXRzICovCisJaW50MzIJCXByb2R5bnJlcyBCS0lfREVGQVVM VCgwKTsKKwogCS8qIG51bWJlciBvZiBhcmd1bWVudHMgKi8KIAkvKiBOb3RlOiBuZWVkIG5v dCBiZSBnaXZlbiBpbiBwZ19wcm9jLmRhdDsgZ2VuYmtpLnBsIHdpbGwgY29tcHV0ZSBpdCAq LwogCWludDE2CQlwcm9uYXJnczsKQEAgLTIxMSw3ICsyMTQsOCBAQCBleHRlcm4gT2JqZWN0 QWRkcmVzcyBQcm9jZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAkJ CQkJCQkJCSBEYXR1bSBwcm9jb25maWcsCiAJCQkJCQkJCQkgT2lkIHByb3N1cHBvcnQsCiAJ CQkJCQkJCQkgZmxvYXQ0IHByb2Nvc3QsCi0JCQkJCQkJCQkgZmxvYXQ0IHByb3Jvd3MpOwor CQkJCQkJCQkJIGZsb2F0NCBwcm9yb3dzLAorCQkJCQkJCQkJIGludCBkeW5yZXMpOwogCiBl eHRlcm4gYm9vbCBmdW5jdGlvbl9wYXJzZV9lcnJvcl90cmFuc3Bvc2UoY29uc3QgY2hhciAq cHJvc3JjKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCA1NmQyYmI2NjE2MTIuLjg0 NTkxYTUyOWJjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTU3LDYgKzU3LDcgQEAg ZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlVHJhbnNmb3JtKENyZWF0ZVRyYW5zZm9ybVN0 bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQgSXNUaGVyZUZ1bmN0aW9uSW5OYW1lc3BhY2UoY29u c3QgY2hhciAqcHJvbmFtZSwgaW50IHByb25hcmdzLAogCQkJCQkJCQkJICAgb2lkdmVjdG9y ICpwcm9hcmd0eXBlcywgT2lkIG5zcE9pZCk7CiBleHRlcm4gdm9pZCBFeGVjdXRlRG9TdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRG9TdG10ICpzdG10LCBib29sIGF0b21pYyk7CitleHRl cm4gT2lkCUN1cnJlbnRQcm9jZWR1cmUodm9pZCk7CiBleHRlcm4gdm9pZCBFeGVjdXRlQ2Fs bFN0bXQoQ2FsbFN0bXQgKnN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBib29sIGF0b21p YywgRGVzdFJlY2VpdmVyICpkZXN0KTsKIGV4dGVybiBUdXBsZURlc2MgQ2FsbFN0bXRSZXN1 bHREZXNjKENhbGxTdG10ICpzdG10KTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9vaWQo T2lkIHR5cGVfaWQsIE9pZCBsYW5nX2lkLCBib29sIG1pc3Npbmdfb2spOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDYzM2U3NjcxYjNlYS4uZWYxMGUyZmY3OGRkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yODk5LDYgKzI4OTksNyBAQCB0eXBlZGVmIHN0cnVj dCBTZWNMYWJlbFN0bXQKICNkZWZpbmUgQ1VSU09SX09QVF9JTlNFTlNJVElWRQkweDAwMDgJ LyogSU5TRU5TSVRJVkUgKi8KICNkZWZpbmUgQ1VSU09SX09QVF9BU0VOU0lUSVZFCTB4MDAx MAkvKiBBU0VOU0lUSVZFICovCiAjZGVmaW5lIENVUlNPUl9PUFRfSE9MRAkJCTB4MDAyMAkv KiBXSVRIIEhPTEQgKi8KKyNkZWZpbmUgQ1VSU09SX09QVF9SRVRVUk4JCTB4MDA0MAkvKiBX SVRIIFJFVFVSTiAqLwogLyogdGhlc2UgcGxhbm5lci1jb250cm9sIGZsYWdzIGRvIG5vdCBj b3JyZXNwb25kIHRvIGFueSBTUUwgZ3JhbW1hcjogKi8KICNkZWZpbmUgQ1VSU09SX09QVF9G QVNUX1BMQU4JMHgwMTAwCS8qIHByZWZlciBmYXN0LXN0YXJ0IHBsYW4gKi8KICNkZWZpbmUg Q1VSU09SX09QVF9HRU5FUklDX1BMQU4gMHgwMjAwCS8qIGZvcmNlIHVzZSBvZiBnZW5lcmlj IHBsYW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjY2M5Mjc4NTFjYjkuLjljZjQ1YTAy ZDNmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIFBHX0tFWVdP UkQoImRvY3VtZW50IiwgRE9DVU1FTlRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiZG9tYWluIiwgRE9NQUlOX1AsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRvdWJsZSIsIERPVUJMRV9QLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkcm9wIiwgRFJPUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZHluYW1pYyIsIERZ TkFNSUMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVh Y2giLCBFQUNILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJlbHNlIiwgRUxTRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CkBAIC0zNTMsNiArMzU0LDcgQEAgUEdfS0VZV09SRCgicmVwbGljYSIsIFJFUExJQ0EsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc2V0IiwgUkVT RVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc3Rh cnQiLCBSRVNUQVJULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJyZXN0cmljdCIsIFJFU1RSSUNULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCitQR19LRVlXT1JEKCJyZXN1bHQiLCBSRVNVTFQsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVybiIsIFJFVFVSTiwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmV0dXJuaW5nIiwgUkVUVVJOSU5H LCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInJldHVybnMiLCBS RVRVUk5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5o CmluZGV4IGFlZGRiZGFmZTU2YS4uZWVkOWJiMzcyZGJjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApA QCAtMTMyLDYgKzEzMiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJU3ViVHJh bnNhY3Rpb25JZCBhY3RpdmVTdWJpZDsJLyogdGhlIGxhc3Qgc3VieGFjdCB3aXRoIGFjdGl2 aXR5ICovCiAJaW50CQkJY3JlYXRlTGV2ZWw7CS8qIGNyZWF0aW5nIHN1YnhhY3QncyBuZXN0 aW5nIGxldmVsICovCiAKKwkvKgorCSAqIFByb2NlZHVyZSB0aGF0IGNyZWF0ZWQgdGhpcyBw b3J0YWwuICBVc2VkIGZvciByZXR1cm5hYmxlIGN1cnNvcnMuCisJICovCisJT2lkCQkJCXBy b2NJZDsKKwkvKgorCSAqIENvbW1hbmQgSUQgd2hlcmUgdGhlIHBvcnRhbCB3YXMgY3JlYXRl ZC4gIFVzZWQgZm9yIHNvcnRpbmcgcmV0dXJuYWJsZQorCSAqIGN1cnNvcnMgaW50byBjcmVh dGlvbiBvcmRlci4KKwkgKi8KKwlDb21tYW5kSWQJCWNyZWF0ZUNpZDsKKwogCS8qIFRoZSBx dWVyeSBvciBxdWVyaWVzIHRoZSBwb3J0YWwgd2lsbCBleGVjdXRlICovCiAJY29uc3QgY2hh ciAqc291cmNlVGV4dDsJCS8qIHRleHQgb2YgcXVlcnkgKGFzIG9mIDguNCwgbmV2ZXIgTlVM TCkgKi8KIAlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CQkvKiBjb21tYW5kIHRhZyBmb3Igb3Jp Z2luYWwgcXVlcnkgKi8KQEAgLTE2MCw2ICsxNzAsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0 YWxEYXRhCiAJVHVwbGVEZXNjCXR1cERlc2M7CQkvKiBkZXNjcmlwdG9yIGZvciByZXN1bHQg dHVwbGVzICovCiAJLyogYW5kIHRoZXNlIGFyZSB0aGUgZm9ybWF0IGNvZGVzIHRvIHVzZSBm b3IgdGhlIGNvbHVtbnM6ICovCiAJaW50MTYJICAgKmZvcm1hdHM7CQkvKiBhIGZvcm1hdCBj b2RlIGZvciBlYWNoIGNvbHVtbiAqLworCS8qIEZvcm1hdCBjb2RlIGZvciBkeW5hbWljIHJl c3VsdCBzZXRzICovCisJaW50MTYJCWR5bmFtaWNfZm9ybWF0OwogCiAJLyoKIAkgKiBPdXRl cm1vc3QgQWN0aXZlU25hcHNob3QgZm9yIGV4ZWN1dGlvbiBvZiB0aGUgcG9ydGFsJ3MgcXVl cmllcy4gIEZvcgpAQCAtMjQ4LDUgKzI2MCw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hU YWJsZURlbGV0ZUFsbCh2b2lkKTsKIGV4dGVybiBib29sIFRoZXJlQXJlTm9SZWFkeVBvcnRh bHModm9pZCk7CiBleHRlcm4gdm9pZCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKTsKIGV4dGVy biB2b2lkIEZvcmdldFBvcnRhbFNuYXBzaG90cyh2b2lkKTsKK2V4dGVybiBMaXN0ICpHZXRS ZXR1cm5hYmxlQ3Vyc29ycyh2b2lkKTsKK2V4dGVybiB2b2lkIENsb3NlT3RoZXJSZXR1cm5h YmxlQ3Vyc29ycyhPaWQgcHJvY2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBPUlRBTF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IGYwMDExMzdiNzY5Mi4u MGZhNGM5NTM3YmQxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90 b2NvbDMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwpAQCAt MzI0LDEwICszMjQsOCBAQCBwcVBhcnNlSW5wdXQzKFBHY29ubiAqY29ubikKIAkJCQkJewog CQkJCQkJLyoKIAkJCQkJCSAqIEEgbmV3ICdUJyBtZXNzYWdlIGlzIHRyZWF0ZWQgYXMgdGhl IHN0YXJ0IG9mCi0JCQkJCQkgKiBhbm90aGVyIFBHcmVzdWx0LiAgKEl0IGlzIG5vdCBjbGVh ciB0aGF0IHRoaXMgaXMKLQkJCQkJCSAqIHJlYWxseSBwb3NzaWJsZSB3aXRoIHRoZSBjdXJy ZW50IGJhY2tlbmQuKSBXZSBzdG9wCi0JCQkJCQkgKiBwYXJzaW5nIHVudGlsIHRoZSBhcHBs aWNhdGlvbiBhY2NlcHRzIHRoZSBjdXJyZW50Ci0JCQkJCQkgKiByZXN1bHQuCisJCQkJCQkg KiBhbm90aGVyIFBHcmVzdWx0LiAgV2Ugc3RvcCBwYXJzaW5nIHVudGlsIHRoZQorCQkJCQkJ ICogYXBwbGljYXRpb24gYWNjZXB0cyB0aGUgY3VycmVudCByZXN1bHQuCiAJCQkJCQkgKi8K IAkJCQkJCWNvbm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19SRUFEWTsKIAkJCQkJCXJldHVy bjsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2Nh bGwub3V0IGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfY2FsbC5vdXQK aW5kZXggMWVjNjE4MmE4ZGE4Li4xYzg4NzJhNzU0NzAgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9w bHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2NhbGwub3V0CisrKyBiL3NyYy9wbC9wbHBn c3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2NhbGwub3V0CkBAIC00NjYsMyArNDY2LDgxIEBA IEJFR0lOCiBFTkQ7CiAkJDsKIE5PVElDRTogIDxOVUxMPgorLS0gZHluYW1pYyByZXN1bHQg c2V0cworQ1JFQVRFIFRBQkxFIGNwX3Rlc3QyIChhIGludCk7CitJTlNFUlQgSU5UTyBjcF90 ZXN0MiBWQUxVRVMgKDEpLCAoMiksICgzKTsKK0NSRUFURSBUQUJMRSBjcF90ZXN0MyAoeCB0 ZXh0LCB5IHRleHQpOworSU5TRVJUIElOVE8gY3BfdGVzdDMgVkFMVUVTICgnYWJjJywgJ2Rl ZicpLCAoJ2ZvbycsICdiYXInKTsKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3QxKHggaW50 KQorTEFOR1VBR0UgcGxwZ3NxbAorRFlOQU1JQyBSRVNVTFQgU0VUUyAyCitBUyAkJAorREVD TEFSRQorICBjMSBDVVJTT1IgV0lUSCBSRVRVUk4gKHkgaW50KSBGT1IgU0VMRUNUIGEgKiB5 IEFTIGF5IEZST00gY3BfdGVzdDI7CisgIGMyIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VM RUNUICogRlJPTSBjcF90ZXN0MzsKK0JFR0lOCisgIE9QRU4gYzEoeCk7CisgIElGIHggPiAx IFRIRU4KKyAgICBPUEVOIGMyOworICBFTkQgSUY7CitFTkQ7CiskJDsKK0NBTEwgcGRyc3Rl c3QxKDEpOworIGF5IAorLS0tLQorICAxCisgIDIKKyAgMworKDMgcm93cykKKworQ0FMTCBw ZHJzdGVzdDEoMik7CisgYXkgCistLS0tCisgIDIKKyAgNAorICA2CisoMyByb3dzKQorCisg IHggIHwgIHkgIAorLS0tLS0rLS0tLS0KKyBhYmMgfCBkZWYKKyBmb28gfCBiYXIKKygyIHJv d3MpCisKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3QyKHggaW50KQorTEFOR1VBR0UgcGxw Z3NxbAorRFlOQU1JQyBSRVNVTFQgU0VUUyAyCitBUyAkJAorREVDTEFSRQorICBjMSByZWZj dXJzb3I7CisgIGMyIHJlZmN1cnNvcjsKK0JFR0lOCisgIE9QRU4gYzEgV0lUSCBSRVRVUk4g Rk9SIFNFTEVDVCBhICogeCBBUyBheCBGUk9NIGNwX3Rlc3QyOworICBJRiB4ID4gMSBUSEVO CisgICAgT1BFTiBjMiBTQ1JPTEwgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3Bf dGVzdDM7CisgIEVORCBJRjsKK0VORDsKKyQkOworQ0FMTCBwZHJzdGVzdDIoMSk7CisgYXgg CistLS0tCisgIDEKKyAgMgorICAzCisoMyByb3dzKQorCitDQUxMIHBkcnN0ZXN0MigyKTsK KyBheCAKKy0tLS0KKyAgMgorICA0CisgIDYKKygzIHJvd3MpCisKKyAgeCAgfCAgeSAgCist LS0tLSstLS0tLQorIGFiYyB8IGRlZgorIGZvbyB8IGJhcgorKDIgcm93cykKKworRFJPUCBU QUJMRSBjcF90ZXN0MiwgY3BfdGVzdDM7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9z cmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCBhNjQ3 MzQyOTQ4MDUuLjA3ZDIxYWQ4ZWQ3OSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCkBAIC00Nzc2 LDYgKzQ3NzYsMTIgQEAgZXhlY19zdG10X29wZW4oUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0 ZSwgUExwZ1NRTF9zdG10X29wZW4gKnN0bXQpCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg b3BlbiBjdXJzb3I6ICVzIiwKIAkJCSBTUElfcmVzdWx0X2NvZGVfc3RyaW5nKFNQSV9yZXN1 bHQpKTsKIAorCWlmIChwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1JFVFVS TikKKwl7CisJCXBvcnRhbC0+cHJvY0lkID0gZXN0YXRlLT5mdW5jLT5mbl9vaWQ7CisJCXBv cnRhbC0+Y3JlYXRlQ2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKwl9CisKIAkv KgogCSAqIElmIGN1cnNvciB2YXJpYWJsZSB3YXMgTlVMTCwgc3RvcmUgdGhlIGdlbmVyYXRl ZCBwb3J0YWwgbmFtZSBpbiBpdCwKIAkgKiBhZnRlciB2ZXJpZnlpbmcgaXQncyBva2F5IHRv IGFzc2lnbiB0by4KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkg Yi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CmluZGV4IGY3Y2YyYjRiODk5YS4uZTVl OTIyMmQzZWMzIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55Cisr KyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAgLTIxMiw3ICsyMTIsNyBAQCBz dGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMoUExwZ1NRTF9zdG10X3JhaXNl ICpzdG10KTsKICV0eXBlIDxkYXR1bT4JZ2V0ZGlhZ190YXJnZXQKICV0eXBlIDxpdmFsPgln ZXRkaWFnX2l0ZW0KIAotJXR5cGUgPGl2YWw+CW9wdF9zY3JvbGxhYmxlCisldHlwZSA8aXZh bD4Jb3B0X3Njcm9sbGFibGUgb3B0X3dpdGhfcmV0dXJuCiAldHlwZSA8ZmV0Y2g+CW9wdF9m ZXRjaF9kaXJlY3Rpb24KIAogJXR5cGUgPGl2YWw+CW9wdF90cmFuc2FjdGlvbl9jaGFpbgpA QCAtMzUyLDYgKzM1Miw4IEBAIHN0YXRpYwl2b2lkCQkJY2hlY2tfcmFpc2VfcGFyYW1ldGVy cyhQTHBnU1FMX3N0bXRfcmFpc2UgKnN0bXQpOwogJXRva2VuIDxrZXl3b3JkPglLX1dBUk5J TkcKICV0b2tlbiA8a2V5d29yZD4JS19XSEVOCiAldG9rZW4gPGtleXdvcmQ+CUtfV0hJTEUK KyV0b2tlbiA8a2V5d29yZD4JS19XSVRICisldG9rZW4gPGtleXdvcmQ+CUtfV0lUSE9VVAog CiAlJQogCkBAIC01MjksNyArNTMxLDcgQEAgZGVjbF9zdGF0ZW1lbnQJOiBkZWNsX3Zhcm5h bWUgZGVjbF9jb25zdCBkZWNsX2RhdGF0eXBlIGRlY2xfY29sbGF0ZSBkZWNsX25vdG51bGwK IAkJCQkJCXBscGdzcWxfbnNfYWRkaXRlbSgkNC0+aXRlbXR5cGUsCiAJCQkJCQkJCQkJICAg JDQtPml0ZW1ubywgJDEubmFtZSk7CiAJCQkJCX0KLQkJCQl8IGRlY2xfdmFybmFtZSBvcHRf c2Nyb2xsYWJsZSBLX0NVUlNPUgorCQkJCXwgZGVjbF92YXJuYW1lIG9wdF9zY3JvbGxhYmxl IEtfQ1VSU09SIG9wdF93aXRoX3JldHVybgogCQkJCQl7IHBscGdzcWxfbnNfcHVzaCgkMS5u YW1lLCBQTFBHU1FMX0xBQkVMX09USEVSKTsgfQogCQkJCSAgZGVjbF9jdXJzb3JfYXJncyBk ZWNsX2lzX2ZvciBkZWNsX2N1cnNvcl9xdWVyeQogCQkJCQl7CkBAIC01NzMsMTIgKzU3NSwx MiBAQCBkZWNsX3N0YXRlbWVudAk6IGRlY2xfdmFybmFtZSBkZWNsX2NvbnN0IGRlY2xfZGF0 YXR5cGUgZGVjbF9jb2xsYXRlIGRlY2xfbm90bnVsbAogCQkJCQkJY3VybmFtZV9kZWYtPnBh cnNlTW9kZSA9IFJBV19QQVJTRV9QTFBHU1FMX0VYUFI7CiAJCQkJCQluZXctPmRlZmF1bHRf dmFsID0gY3VybmFtZV9kZWY7CiAKLQkJCQkJCW5ldy0+Y3Vyc29yX2V4cGxpY2l0X2V4cHIg PSAkNzsKLQkJCQkJCWlmICgkNSA9PSBOVUxMKQorCQkJCQkJbmV3LT5jdXJzb3JfZXhwbGlj aXRfZXhwciA9ICQ4OworCQkJCQkJaWYgKCQ2ID09IE5VTEwpCiAJCQkJCQkJbmV3LT5jdXJz b3JfZXhwbGljaXRfYXJncm93ID0gLTE7CiAJCQkJCQllbHNlCi0JCQkJCQkJbmV3LT5jdXJz b3JfZXhwbGljaXRfYXJncm93ID0gJDUtPmRubzsKLQkJCQkJCW5ldy0+Y3Vyc29yX29wdGlv bnMgPSBDVVJTT1JfT1BUX0ZBU1RfUExBTiB8ICQyOworCQkJCQkJCW5ldy0+Y3Vyc29yX2V4 cGxpY2l0X2FyZ3JvdyA9ICQ2LT5kbm87CisJCQkJCQluZXctPmN1cnNvcl9vcHRpb25zID0g Q1VSU09SX09QVF9GQVNUX1BMQU4gfCAkMiB8ICQ0OwogCQkJCQl9CiAJCQkJOwogCkBAIC01 OTYsNiArNTk4LDIwIEBAIG9wdF9zY3JvbGxhYmxlIDoKIAkJCQkJfQogCQkJCTsKIAorb3B0 X3dpdGhfcmV0dXJuIDoKKwkJCQkJeworCQkJCQkJJCQgPSAwOworCQkJCQl9CisJCQkJfCBL X1dJVEggS19SRVRVUk4KKwkJCQkJeworCQkJCQkJJCQgPSBDVVJTT1JfT1BUX1JFVFVSTjsK KwkJCQkJfQorCQkJCXwgS19XSVRIT1VUIEtfUkVUVVJOCisJCQkJCXsKKwkJCQkJCSQkID0g MDsKKwkJCQkJfQorCQkJCTsKKwogZGVjbF9jdXJzb3JfcXVlcnkgOgogCQkJCQl7CiAJCQkJ CQkkJCA9IHJlYWRfc3FsX3N0bXQoKTsKQEAgLTIwMDMsNiArMjAxOSwxMCBAQCBzdG10X2V4 ZWNzcWwJOiBLX0lNUE9SVAogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VfZXhlY3NxbF9zdG10 KEtfTUVSR0UsIEAxKTsKIAkJCQkJfQorCQkJCXwgS19XSVRICisJCQkJCXsKKwkJCQkJCSQk ID0gbWFrZV9leGVjc3FsX3N0bXQoS19XSVRILCBAMSk7CisJCQkJCX0KIAkJCQl8IFRfV09S RAogCQkJCQl7CiAJCQkJCQlpbnQJCQl0b2s7CkBAIC0yMTI1LDYgKzIxNDUsMzAgQEAgc3Rt dF9vcGVuCQk6IEtfT1BFTiBjdXJzb3JfdmFyaWFibGUKIAkJCQkJCQkJdG9rID0geXlsZXgo KTsKIAkJCQkJCQl9CiAKKwkJCQkJCQkvKiBzYW1lIGZvciBvcHRfd2l0aF9yZXR1cm4gKi8K KwkJCQkJCQlpZiAodG9rX2lzX2tleXdvcmQodG9rLCAmeXlsdmFsLAorCQkJCQkJCQkJCQkg ICBLX1dJVEgsICJ3aXRoIikpCisJCQkJCQkJeworCQkJCQkJCQl0b2sgPSB5eWxleCgpOwor CQkJCQkJCQlpZiAodG9rX2lzX2tleXdvcmQodG9rLCAmeXlsdmFsLAorCQkJCQkJCQkJCQkJ ICAgS19SRVRVUk4sICJyZXR1cm4iKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJbmV3LT5jdXJz b3Jfb3B0aW9ucyB8PSBDVVJTT1JfT1BUX1JFVFVSTjsKKwkJCQkJCQkJCXRvayA9IHl5bGV4 KCk7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQkJZWxzZSBpZiAodG9rX2lzX2tleXdv cmQodG9rLCAmeXlsdmFsLAorCQkJCQkJCQkJCQkgICBLX1dJVEhPVVQsICJ3aXRob3V0Iikp CisJCQkJCQkJeworCQkJCQkJCQl0b2sgPSB5eWxleCgpOworCQkJCQkJCQlpZiAodG9rX2lz X2tleXdvcmQodG9rLCAmeXlsdmFsLAorCQkJCQkJCQkJCQkJICAgS19SRVRVUk4sICJyZXR1 cm4iKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJbmV3LT5jdXJzb3Jfb3B0aW9ucyB8PSAwOwor CQkJCQkJCQkJdG9rID0geXlsZXgoKTsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwogCQkJCQkJ CWlmICh0b2sgIT0gS19GT1IpCiAJCQkJCQkJCXl5ZXJyb3IoInN5bnRheCBlcnJvciwgZXhw ZWN0ZWQgXCJGT1JcIiIpOwogCkBAIC0yNTc5LDYgKzI2MjMsOCBAQCB1bnJlc2VydmVkX2tl eXdvcmQJOgogCQkJCXwgS19VU0VfVkFSSUFCTEUKIAkJCQl8IEtfVkFSSUFCTEVfQ09ORkxJ Q1QKIAkJCQl8IEtfV0FSTklORworCQkJCXwgS19XSVRICisJCQkJfCBLX1dJVEhPVVQKIAkJ CQk7CiAKICUlCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZl ZF9rd2xpc3QuaCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF91bnJlc2VydmVkX2t3bGlzdC5o CmluZGV4IGVlMmJlMWIyMTJiNC4uZGFmMGIxMDgxZGUwIDEwMDY0NAotLS0gYS9zcmMvcGwv cGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaAorKysgYi9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaApAQCAtMTA5LDMgKzEwOSw1IEBAIFBHX0tF WVdPUkQoInVzZV9jb2x1bW4iLCBLX1VTRV9DT0xVTU4pCiBQR19LRVlXT1JEKCJ1c2VfdmFy aWFibGUiLCBLX1VTRV9WQVJJQUJMRSkKIFBHX0tFWVdPUkQoInZhcmlhYmxlX2NvbmZsaWN0 IiwgS19WQVJJQUJMRV9DT05GTElDVCkKIFBHX0tFWVdPUkQoIndhcm5pbmciLCBLX1dBUk5J TkcpCitQR19LRVlXT1JEKCJ3aXRoIiwgS19XSVRIKQorUEdfS0VZV09SRCgid2l0aG91dCIs IEtfV0lUSE9VVCkKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3Nx bF9jYWxsLnNxbCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9jYWxsLnNxbApp bmRleCA1MDI4Mzk4MzQ4MDMuLjlhY2U5ZDRlMDY3NiAxMDA2NDQKLS0tIGEvc3JjL3BsL3Bs cGdzcWwvc3JjL3NxbC9wbHBnc3FsX2NhbGwuc3FsCisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9zcWwvcGxwZ3NxbF9jYWxsLnNxbApAQCAtNDM2LDMgKzQzNiw0OSBAQCBDUkVBVEUgUFJP Q0VEVVJFIHAxKHZfY250IGludCwgdl9UZXh0IGlub3V0IHRleHQgPSBOVUxMKQogICBSQUlT RSBOT1RJQ0UgJyUnLCB2X1RleHQ7CiBFTkQ7CiAkJDsKKworCistLSBkeW5hbWljIHJlc3Vs dCBzZXRzCisKK0NSRUFURSBUQUJMRSBjcF90ZXN0MiAoYSBpbnQpOworSU5TRVJUIElOVE8g Y3BfdGVzdDIgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitDUkVBVEUgVEFCTEUgY3BfdGVzdDMg KHggdGV4dCwgeSB0ZXh0KTsKK0lOU0VSVCBJTlRPIGNwX3Rlc3QzIFZBTFVFUyAoJ2FiYycs ICdkZWYnKSwgKCdmb28nLCAnYmFyJyk7CisKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3Qx KHggaW50KQorTEFOR1VBR0UgcGxwZ3NxbAorRFlOQU1JQyBSRVNVTFQgU0VUUyAyCitBUyAk JAorREVDTEFSRQorICBjMSBDVVJTT1IgV0lUSCBSRVRVUk4gKHkgaW50KSBGT1IgU0VMRUNU IGEgKiB5IEFTIGF5IEZST00gY3BfdGVzdDI7CisgIGMyIENVUlNPUiBXSVRIIFJFVFVSTiBG T1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MzsKK0JFR0lOCisgIE9QRU4gYzEoeCk7CisgIElG IHggPiAxIFRIRU4KKyAgICBPUEVOIGMyOworICBFTkQgSUY7CitFTkQ7CiskJDsKKworQ0FM TCBwZHJzdGVzdDEoMSk7CitDQUxMIHBkcnN0ZXN0MSgyKTsKKworQ1JFQVRFIFBST0NFRFVS RSBwZHJzdGVzdDIoeCBpbnQpCitMQU5HVUFHRSBwbHBnc3FsCitEWU5BTUlDIFJFU1VMVCBT RVRTIDIKK0FTICQkCitERUNMQVJFCisgIGMxIHJlZmN1cnNvcjsKKyAgYzIgcmVmY3Vyc29y OworQkVHSU4KKyAgT1BFTiBjMSBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUIGEgKiB4IEFTIGF4 IEZST00gY3BfdGVzdDI7CisgIElGIHggPiAxIFRIRU4KKyAgICBPUEVOIGMyIFNDUk9MTCBX SVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MzsKKyAgRU5EIElGOworRU5E OworJCQ7CisKK0NBTEwgcGRyc3Rlc3QyKDEpOworQ0FMTCBwZHJzdGVzdDIoMik7CisKK0RS T1AgVEFCTEUgY3BfdGVzdDIsIGNwX3Rlc3QzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQKaW5kZXggNDZjODI3Zjk3OTFjLi5iMzgw MmJkN2MxZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X3Byb2NlZHVyZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf cHJvY2VkdXJlLm91dApAQCAtMzc1LDkgKzM3NSw5MiBAQCBBTFRFUiBST1VUSU5FIGNwX3Rl c3RmdW5jMWEgUkVOQU1FIFRPIGNwX3Rlc3RmdW5jMTsKIEFMVEVSIFJPVVRJTkUgcHRlc3Qx KHRleHQpIFJFTkFNRSBUTyBwdGVzdDFhOwogQUxURVIgUk9VVElORSBwdGVzdDFhIFJFTkFN RSBUTyBwdGVzdDE7CiBEUk9QIFJPVVRJTkUgY3BfdGVzdGZ1bmMxKGludCk7CistLSBkeW5h bWljIHJlc3VsdCBzZXRzCitDUkVBVEUgVEFCTEUgY3BfdGVzdDIgKGEgaW50KTsKK0lOU0VS VCBJTlRPIGNwX3Rlc3QyIFZBTFVFUyAoMSksICgyKSwgKDMpOworQ1JFQVRFIFRBQkxFIGNw X3Rlc3QzICh4IHRleHQsIHkgdGV4dCk7CitJTlNFUlQgSU5UTyBjcF90ZXN0MyBWQUxVRVMg KCdhYmMnLCAnZGVmJyksICgnZm9vJywgJ2JhcicpOworQ1JFQVRFIFBST0NFRFVSRSBwZHJz dGVzdDEoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDIKK0FTICQkCitE RUNMQVJFIGMxIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0 MjsKK0RFQ0xBUkUgYzIgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNw X3Rlc3QzOworJCQ7CitDQUxMIHBkcnN0ZXN0MSgpOworIGEgCistLS0KKyAxCisgMgorIDMK KygzIHJvd3MpCisKKyAgeCAgfCAgeSAgCistLS0tLSstLS0tLQorIGFiYyB8IGRlZgorIGZv byB8IGJhcgorKDIgcm93cykKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDIoKQorTEFO R1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitDQUxMIHBkcnN0ZXN0 MSgpOworREVDTEFSRSBjMyBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00g Y3BfdGVzdDIgV0hFUkUgYSA8IDI7CiskJDsKK0NBTEwgcGRyc3Rlc3QyKCk7CisgYSAKKy0t LQorIDEKKygxIHJvdykKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDMoSU5PVVQgYSB0 ZXh0KQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitERUNM QVJFIGM0IENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MjsK K1NFTEVDVCBhIHx8IGE7CiskJDsKK0NBTEwgcGRyc3Rlc3QzKCd4Jyk7CisgYSAgCistLS0t CisgeHgKKygxIHJvdykKKworIGEgCistLS0KKyAxCisgMgorIDMKKygzIHJvd3MpCisKKy0t IHRlc3QgdGhlIG5lc3RlZCBlcnJvciBoYW5kbGluZworQ1JFQVRFIFRBQkxFIGNwX3Rlc3Rf ZHVtbXkgKGEgaW50KTsKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3Q0YSgpCitMQU5HVUFH RSBTUUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMQorQVMgJCQKK0RFQ0xBUkUgYzVhIENVUlNP UiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0X2R1bW15OworJCQ7CitD UkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0NGIoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJF U1VMVCBTRVRTIDEKK0FTICQkCitDQUxMIHBkcnN0ZXN0NGEoKTsKKyQkOworRFJPUCBUQUJM RSBjcF90ZXN0X2R1bW15OworQ0FMTCBwZHJzdGVzdDRiKCk7CitFUlJPUjogIHJlbGF0aW9u ICJjcF90ZXN0X2R1bW15IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBERUNMQVJFIGM1YSBD VVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3BfdGVzdF9kdW0uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK1FVRVJZOiAgCitERUNMQVJFIGM1YSBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVD VCAqIEZST00gY3BfdGVzdF9kdW1teTsKKworQ09OVEVYVDogIFNRTCBmdW5jdGlvbiAicGRy c3Rlc3Q0YSIgZHVyaW5nIHN0YXJ0dXAKK1NRTCBmdW5jdGlvbiAicGRyc3Rlc3Q0YiIgc3Rh dGVtZW50IDEKIC0tIGNsZWFudXAKIERST1AgUFJPQ0VEVVJFIHB0ZXN0MTsKIERST1AgUFJP Q0VEVVJFIHB0ZXN0MXM7CiBEUk9QIFBST0NFRFVSRSBwdGVzdDI7Ci1EUk9QIFRBQkxFIGNw X3Rlc3Q7CitEUk9QIFRBQkxFIGNwX3Rlc3QsIGNwX3Rlc3QyLCBjcF90ZXN0MzsKIERST1Ag VVNFUiByZWdyZXNzX2NwX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVf cHJvY2VkdXJlLnNxbAppbmRleCA3NWNjMGZjZjJhNmMuLmMzOTcwNzI2YTZlMCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKQEAgLTI0MiwxMiAr MjQyLDcxIEBAIENSRUFURSBVU0VSIHJlZ3Jlc3NfY3BfdXNlcjE7CiBEUk9QIFJPVVRJTkUg Y3BfdGVzdGZ1bmMxKGludCk7CiAKIAorLS0gZHluYW1pYyByZXN1bHQgc2V0cworCitDUkVB VEUgVEFCTEUgY3BfdGVzdDIgKGEgaW50KTsKK0lOU0VSVCBJTlRPIGNwX3Rlc3QyIFZBTFVF UyAoMSksICgyKSwgKDMpOworQ1JFQVRFIFRBQkxFIGNwX3Rlc3QzICh4IHRleHQsIHkgdGV4 dCk7CitJTlNFUlQgSU5UTyBjcF90ZXN0MyBWQUxVRVMgKCdhYmMnLCAnZGVmJyksICgnZm9v JywgJ2JhcicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MSgpCitMQU5HVUFHRSBT UUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMgorQVMgJCQKK0RFQ0xBUkUgYzEgQ1VSU09SIFdJ VEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QyOworREVDTEFSRSBjMiBDVVJT T1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3BfdGVzdDM7CiskJDsKKworQ0FM TCBwZHJzdGVzdDEoKTsKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDIoKQorTEFOR1VB R0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitDQUxMIHBkcnN0ZXN0MSgp OworREVDTEFSRSBjMyBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3Bf dGVzdDIgV0hFUkUgYSA8IDI7CiskJDsKKworQ0FMTCBwZHJzdGVzdDIoKTsKKworQ1JFQVRF IFBST0NFRFVSRSBwZHJzdGVzdDMoSU5PVVQgYSB0ZXh0KQorTEFOR1VBR0UgU1FMCitEWU5B TUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitERUNMQVJFIGM0IENVUlNPUiBXSVRIIFJFVFVS TiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MjsKK1NFTEVDVCBhIHx8IGE7CiskJDsKKwor Q0FMTCBwZHJzdGVzdDMoJ3gnKTsKKworLS0gdGVzdCB0aGUgbmVzdGVkIGVycm9yIGhhbmRs aW5nCitDUkVBVEUgVEFCTEUgY3BfdGVzdF9kdW1teSAoYSBpbnQpOworCitDUkVBVEUgUFJP Q0VEVVJFIHBkcnN0ZXN0NGEoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRT IDEKK0FTICQkCitERUNMQVJFIGM1YSBDVVJTT1IgV0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAq IEZST00gY3BfdGVzdF9kdW1teTsKKyQkOworCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0 NGIoKQorTEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDEKK0FTICQkCitDQUxM IHBkcnN0ZXN0NGEoKTsKKyQkOworCitEUk9QIFRBQkxFIGNwX3Rlc3RfZHVtbXk7CisKK0NB TEwgcGRyc3Rlc3Q0YigpOworCisKIC0tIGNsZWFudXAKIAogRFJPUCBQUk9DRURVUkUgcHRl c3QxOwogRFJPUCBQUk9DRURVUkUgcHRlc3QxczsKIERST1AgUFJPQ0VEVVJFIHB0ZXN0MjsK IAotRFJPUCBUQUJMRSBjcF90ZXN0OworRFJPUCBUQUJMRSBjcF90ZXN0LCBjcF90ZXN0Miwg Y3BfdGVzdDM7CiAKIERST1AgVVNFUiByZWdyZXNzX2NwX3VzZXIxOwoKYmFzZS1jb21taXQ6 IDM5YjhjMjkzZmNkZTFkODQ1ZGE0ZDcxMjdhMjVkNDFkZjUzZmFhYjUKLS0gCjIuMzcuMwoK --------------o0pp0kBRjHdnoeHD8uxeVSrb--