Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wykuT-003bOl-1v for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Aug 2026 06:45:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wykuR-005pKU-1M for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Aug 2026 06:45:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wykuQ-005pKL-2r for pgsql-hackers@lists.postgresql.org; Tue, 25 Aug 2026 06:45:23 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wykuN-000000018ci-2V1W for pgsql-hackers@postgresql.org; Tue, 25 Aug 2026 06:45:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1787640318; bh=d6B3uRyNUULEBXzIcKTSJlhr61n3QSgaivL/T82fqUg=; h=Message-ID:Date:User-Agent:From:Subject:To:Cc:References: In-Reply-To:From; b=EiN80nFTaPbaKZh+YeNVx+FbJDZbTRIGnG6ehZQGZxzKSCPh/Zj6WsPqxVeQezflz EOhkLPgkLsIUmmmwAa+jRrNFxcGvWEXFGzyV1sZdqxiRaO5+gab7QYdQyYx9PCbmY+ MqRL6FEJHxuwj1PLy3gA95qhEzaOJBFOOXJXNzACU6yQfNWJpoHjyUTEyLZo8rY+wW hvzr9DIiqSqgjVsnWljejpBovHIi9M+sORYN6Ztzj6QTUy2O3U07Zda7V0/8TPw70w YslndNoxQZ3av8tSLiCucj4HiBgvddFgvvbgjkoa6eFwciAH+tMPaHYxIujx4kIfLz bS22w8qqqs5tg== Received: from [10.9.2.114] (unknown [31.187.97.93]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: m.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id ACBFD61A47; Tue, 25 Aug 2026 09:45:18 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------PQWoTXc6U1Z8kTyXQhgWg0IC" Message-ID: Date: Tue, 25 Aug 2026 09:45:17 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: "Maksim.Melnikov" Subject: Re: Init connection time grows quadratically To: Matthias van de Meent Cc: pgsql-hackers@postgresql.org References: <3bdba-68359800-d-249da480@139845401> <2ab4be-6847f380-11-1d048f40@125133490> <3b7e5e-684fdc80-f-48e15c80@193664207> <65d0e5b2-2a40-4b12-be04-0804912d2daf@postgrespro.ru> <08e7c338-e175-4474-be53-6538bb67d4b6@postgrespro.ru> Content-Language: en-US In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2026/08/25 05:59:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 3.0.0.9059, bases: 2026/08/25 05:18:00 #28520976 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------PQWoTXc6U1Z8kTyXQhgWg0IC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 8/12/26 23:19, Matthias van de Meent wrote: > On Fri, 7 Aug 2026 at 16:05, Maksim.Melnikov wrote: >> On 7/17/26 11:54, Matthias van de Meent wrote: >>> On Thu, 11 Jun 2026 at 16:31, Maksim.Melnikov wrote: >>>> Patch with fixes was attached. Thanks for review. >>> You removed the pgxactoff field with its comment from PGPROC, but >>> haven't yet added a comment on PROC_HDR's pgxactoffs. Please add a >>> comment to the pgxactoffs array that describes its contents. A simple >>> adaptation of the comment removed with PGPROC's pgxactoff field should >>> be sufficient. >>> >>> The comments on PROC_HDR and PGPROC also reference the deleted >>> PGPROC->pgxactoff field, so that also must be adjusted; there may be >>> several other places, as I didn't do a full check on the codebase. >>> >>> Once the relevant comments are added and adjusted I think this is >>> ready for a committer. >>> >>> >>> Kind regards, >>> >>> Matthias van de Meent >>> Databricks (https://www.databricks.com) >>> >>> >> Sorry for the delay, was unavailable for several weeks. >> >> Thanks for review, patch was updated. > I noticed this patch wasn't registered at the commitfest yet, so I > took the liberty to do that for you. It's registered at [0]. Thanks! > The CFBot then noticed crashes caused by the patch in various tests, > which I think can be caused by a lack of initialization of pgxactoffs > in ProcArrayShmemAttach, but I haven't worked on a fix. Yes, thanks, there was the problem with alignment of pgxactoff array on shmem, I've fixed it with re-ordering of elements. Also I've rebased master and noticed new commit c6d55714ba4, that introduced new shmem alloc functions, so I've added minor fix. I've attached incremental patch for ease of review of last CI fixes. > Attached are some copy-edits of comments on top of your v3, and a > missed replacement of "GetNumberFromPGProc(MyProc)" with > "MyProcNumber". > > This is an incremental patch on your v3, and doesn't fix the CFBot failures. Thanks. I've attached overall patch with your edits for commitfest too. Kind regards Melnikov Maksim --------------PQWoTXc6U1Z8kTyXQhgWg0IC Content-Type: text/x-patch; charset=UTF-8; name="incremental-CI-fixes-with-rebase.patch" Content-Disposition: attachment; filename="incremental-CI-fixes-with-rebase.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZTYwNzVkYWZlOS4uN2Zl ZjEyMDcyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5 LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQ2Miw2 ICs0NjIsNyBAQCBzdGF0aWMgdm9pZAogUHJvY0FycmF5U2htZW1BdHRhY2godm9pZCAqYXJn KQogewogCWFsbFByb2NzID0gUHJvY0dsb2JhbC0+YWxsUHJvY3M7CisJcGd4YWN0b2ZmcyA9 IFByb2NHbG9iYWwtPnBneGFjdG9mZnM7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYwppbmRleCBlNjRhYjZlNTk3Li5iZTBjYTA3MTYxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9wcm9jLmMKQEAgLTI2OSwxMiArMjY5LDEyIEBAIFByb2NHbG9iYWxTaG1lbUluaXQodm9p ZCAqYXJnKQogCVByb2NHbG9iYWwtPnhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKSBwdHI7CiAJ cHRyID0gcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsK IAorCVByb2NHbG9iYWwtPnBneGFjdG9mZnMgPSAoaW50ICopIHB0cjsKKwlwdHIgPSBwdHIg KyAoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+cGd4YWN0b2ZmcykpOworCiAJ UHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzID0gKFhpZENhY2hlU3RhdHVzICopIHB0cjsKIAlw dHIgPSBwdHIgKyAoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3Rh dGVzKSk7CiAKLQlQcm9jR2xvYmFsLT5wZ3hhY3RvZmZzID0gKGludCAqKSBwdHI7Ci0JcHRy ID0gKGNoYXIgKikgcHRyICsgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+cGd4 YWN0b2Zmcyk7Ci0KIAlQcm9jR2xvYmFsLT5zdGF0dXNGbGFncyA9ICh1aW50OCAqKSBwdHI7 CiAJcHRyID0gcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1 c0ZsYWdzKSk7CiAK --------------PQWoTXc6U1Z8kTyXQhgWg0IC Content-Type: text/x-patch; charset=UTF-8; name="v5-0001-This-patch-reduce-connection-init-close-time.patch" Content-Disposition: attachment; filename*0="v5-0001-This-patch-reduce-connection-init-close-time.patch" Content-Transfer-Encoding: base64 RnJvbSBhNjI5MjJhNzMyYjI2MWNjZmU1Yzc2MjNhYTRmZTBlOWIxOGM0YWViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWtzaW0gTWVsbmlrb3YgPG0ubWVsbmlrb3ZAcG9z dGdyZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMTggTm92IDIwMjUgMTc6MjA6MDkgKzAzMDAKU3Vi amVjdDogW1BBVENIIHY1XSBUaGlzIHBhdGNoIHJlZHVjZSBjb25uZWN0aW9uIGluaXQvY2xv c2UgdGltZS4KClByb2NBcnJheVJlbW92ZS9Qcm9jQXJyYXlBZGQgYXJlIGV4cGVuc2l2ZSBp biB0ZXJtcyBvZiBhY2Nlc3NpbmcgcGd4YWN0b2ZmCmZpZWxkIGluIFBHUFJPQywgYmVjYXVz ZSBpdHMgYXJlIHBsYWNlZCBvbiBkaWZmZXJlbnQgcGFnZXMgYW5kIGl0IHRoZQpyZWFzb24g b2YgcGFnZV9mYXVsdHMgb2NjdXJlbmNlLiBOb3cgb25lIG9mIHRoZSB1c2UgY2FzZSB3aXRo IHBneGFjdG9mZgppcyBpdGVyYXRpb24gd2l0aCBnYXBzIG92ZXIgUEdQUk9DcyBhbmQgcmVh ZC93cml0ZSBwZ3hhY3RvZmYsIFBHUFJPQwphbGxvY2F0ZSB+MUtCIGFuZCBpdCBxdWl0ZSBl bm91Z2ggdG8gaGF2ZSBwYWdlX2ZhdWx0cyBpbiBjYXNlIG9mIHN1Y2gKYWNjZXNzaW5nLgoK U28gd2UgcGxhY2VkIGFsbCBwZ3hhY3RvZmYgaW4gdGhlIHNlcGFyYXRlIGFycmF5IHBneGFj dG9mZnMgdG8gaGF2ZSBhZGphY2VudApwYWdlcyBmb3IgdGhlbSBhbGwuIEluZGV4ZXMgaW4g YWxsUHJvY3MgYWxpZ25lZCB3aXRoIHBneGFjdG9mZnMgYXJyYXksIHNvCnRoZSBOdGggZWxl bWVudCBpbiBwZ3hhY3RvZmZzIHJlZmVyIHRvIE50aCBQR1BST0MuCgpFdmVudHVhbGx5IGl0 IGhlbHBzIHRvIGF2b2lkIGV4dHJhIHBhZ2VfZmF1bHRzIGFuZCByZWR1Y2UgY29ubmVjdGlv bgppbml0L2Nsb3NlIHRpbWUuIFRoZSBtYWluIGJlbmVmaXQgaXMgc2VlbiBvbiBjb25maWd1 cmF0aW9ucyB3aXRob3V0IGh1Z2UKcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vdmFyc3VwLmMgICAgICAgfCAxMCArKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5j ICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMg ICAgICAgfCA1NSArKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYyAgICAgICAgICAgfCAgNiArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvYy5oICAgICAgICAgICAgICAgIHwgMjMgKysrKysrLS0tLQogOSBmaWxlcyBjaGFuZ2Vk LCA2MyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3ZhcnN1cC5jCmluZGV4IGNiNjhkOGZhOTc0Li5kNjdjMDBiMzVjOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKQEAgLTg1LDcgKzg1LDcgQEAgR2V0TmV3 VHJhbnNhY3Rpb25JZChib29sIGlzU3ViWGFjdCkKIAl7CiAJCUFzc2VydCghaXNTdWJYYWN0 KTsKIAkJTXlQcm9jLT54aWQgPSBCb290c3RyYXBUcmFuc2FjdGlvbklkOwotCQlQcm9jR2xv YmFsLT54aWRzW015UHJvYy0+cGd4YWN0b2ZmXSA9IEJvb3RzdHJhcFRyYW5zYWN0aW9uSWQ7 CisJCVByb2NHbG9iYWwtPnhpZHNbUHJvY0dldE15WGFjdE9mZigpXSA9IEJvb3RzdHJhcFRy YW5zYWN0aW9uSWQ7CiAJCXJldHVybiBGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhp ZCgwLCBCb290c3RyYXBUcmFuc2FjdGlvbklkKTsKIAl9CiAKQEAgLTI0NCwxOCArMjQ0LDE4 IEBAIEdldE5ld1RyYW5zYWN0aW9uSWQoYm9vbCBpc1N1YlhhY3QpCiAJICovCiAJaWYgKCFp c1N1YlhhY3QpCiAJewotCQlBc3NlcnQoUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzW015UHJv Yy0+cGd4YWN0b2ZmXS5jb3VudCA9PSAwKTsKLQkJQXNzZXJ0KCFQcm9jR2xvYmFsLT5zdWJ4 aWRTdGF0ZXNbTXlQcm9jLT5wZ3hhY3RvZmZdLm92ZXJmbG93ZWQpOworCQlBc3NlcnQoUHJv Y0dsb2JhbC0+c3VieGlkU3RhdGVzW1Byb2NHZXRNeVhhY3RPZmYoKV0uY291bnQgPT0gMCk7 CisJCUFzc2VydCghUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzW1Byb2NHZXRNeVhhY3RPZmYo KV0ub3ZlcmZsb3dlZCk7CiAJCUFzc2VydChNeVByb2MtPnN1YnhpZFN0YXR1cy5jb3VudCA9 PSAwKTsKIAkJQXNzZXJ0KCFNeVByb2MtPnN1YnhpZFN0YXR1cy5vdmVyZmxvd2VkKTsKIAog CQkvKiBMV0xvY2tSZWxlYXNlIGFjdHMgYXMgYmFycmllciAqLwogCQlNeVByb2MtPnhpZCA9 IHhpZDsKLQkJUHJvY0dsb2JhbC0+eGlkc1tNeVByb2MtPnBneGFjdG9mZl0gPSB4aWQ7CisJ CVByb2NHbG9iYWwtPnhpZHNbUHJvY0dldE15WGFjdE9mZigpXSA9IHhpZDsKIAl9CiAJZWxz ZQogCXsKLQkJWGlkQ2FjaGVTdGF0dXMgKnN1YnN0YXQgPSAmUHJvY0dsb2JhbC0+c3VieGlk U3RhdGVzW015UHJvYy0+cGd4YWN0b2ZmXTsKKwkJWGlkQ2FjaGVTdGF0dXMgKnN1YnN0YXQg PSAmUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzW1Byb2NHZXRNeVhhY3RPZmYoKV07CiAJCWlu dAkJCW54aWRzID0gTXlQcm9jLT5zdWJ4aWRTdGF0dXMuY291bnQ7CiAKIAkJQXNzZXJ0KHN1 YnN0YXQtPmNvdW50ID09IE15UHJvYy0+c3VieGlkU3RhdHVzLmNvdW50KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNWEwMzEyZmU3NzIuLjRjNjZlN2JiOTE3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNDgxMSw2ICs0ODExLDYgQEAgc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCkKIAogCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9j aywgTFdfRVhDTFVTSVZFKTsKIAlNeVByb2MtPnN0YXR1c0ZsYWdzIHw9IFBST0NfSU5fU0FG RV9JQzsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tNeVByb2MtPnBneGFjdG9mZl0gPSBN eVByb2MtPnN0YXR1c0ZsYWdzOworCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW1Byb2NHZXRN eVhhY3RPZmYoKV0gPSBNeVByb2MtPnN0YXR1c0ZsYWdzOwogCUxXTG9ja1JlbGVhc2UoUHJv Y0FycmF5TG9jayk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDcyYzdmNjgwYTg0 Li5hMmI4NTNlODVhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTIwODEsNyArMjA4 MSw3IEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1 bVBhcmFtcyBwYXJhbXMsCiAJCU15UHJvYy0+c3RhdHVzRmxhZ3MgfD0gUFJPQ19JTl9WQUNV VU07CiAJCWlmIChwYXJhbXMuaXNfd3JhcGFyb3VuZCkKIAkJCU15UHJvYy0+c3RhdHVzRmxh Z3MgfD0gUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQ7Ci0JCVByb2NHbG9iYWwtPnN0YXR1 c0ZsYWdzW015UHJvYy0+cGd4YWN0b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7CisJCVBy b2NHbG9iYWwtPnN0YXR1c0ZsYWdzW1Byb2NHZXRNeVhhY3RPZmYoKV0gPSBNeVByb2MtPnN0 YXR1c0ZsYWdzOwogCQlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOwogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRleCA5OGU1ZjFk ZDhmOS4uNTNjNTIxZjEyOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbC5jCkBAIC0yNzQsNyArMjc0LDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4 dChMaXN0ICpvdXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJewogCQlMV0xvY2tBY3F1aXJlKFBy b2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCU15UHJvYy0+c3RhdHVzRmxhZ3MgfD0g UFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HOwotCQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tN eVByb2MtPnBneGFjdG9mZl0gPSBNeVByb2MtPnN0YXR1c0ZsYWdzOworCQlQcm9jR2xvYmFs LT5zdGF0dXNGbGFnc1tQcm9jR2V0TXlYYWN0T2ZmKCldID0gTXlQcm9jLT5zdGF0dXNGbGFn czsKIAkJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCA2M2NlNmQyNzg4NS4uOWMyYTJjYjk4ODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZXBsaWNhdGlvblNsb3RSZWxl YXNlKHZvaWQpCiAJLyogbWlnaHQgbm90IGhhdmUgYmVlbiBzZXQgd2hlbiB3ZSd2ZSBiZWVu IGEgcGxhaW4gc2xvdCAqLwogCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfRVhD TFVTSVZFKTsKIAlNeVByb2MtPnN0YXR1c0ZsYWdzICY9IH5QUk9DX0lOX0xPR0lDQUxfREVD T0RJTkc7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbTXlQcm9jLT5wZ3hhY3RvZmZdID0g TXlQcm9jLT5zdGF0dXNGbGFnczsKKwlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tQcm9jR2V0 TXlYYWN0T2ZmKCldID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKIAlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOwogCiAJaWYgKGFtX3dhbHNlbmRlcikKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKaW5kZXggYzY1ZGQzMjQzMjUuLjk4MjE3OTQzZGZhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMzU4LDcgKzM1OCw3IEBAIEluaXRX YWxTZW5kZXIodm9pZCkKIAkJQXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCk7CiAJCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfRVhDTFVTSVZF KTsKIAkJTXlQcm9jLT5zdGF0dXNGbGFncyB8PSBQUk9DX0FGRkVDVFNfQUxMX0hPUklaT05T OwotCQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tNeVByb2MtPnBneGFjdG9mZl0gPSBNeVBy b2MtPnN0YXR1c0ZsYWdzOworCQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tQcm9jR2V0TXlY YWN0T2ZmKCldID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKIAkJTFdMb2NrUmVsZWFzZShQcm9j QXJyYXlMb2NrKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5k ZXggYjdlMDMxMzRlZDguLjA5MDMzOGZiNjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jYXJyYXkuYwpAQCAtMjg0LDYgKzI4NCwxMyBAQCB0eXBlZGVmIGVudW0gS0FYQ29tcHJl c3NSZWFzb24KIAogc3RhdGljIFBHUFJPQyAqYWxsUHJvY3M7CiAKKy8qCisgKiBvZmZzZXRz IGludG8gdmFyaW91cyBQcm9jR2xvYmFsLT5hcnJheXMgd2l0aCBkYXRhIG1pcnJvcmVkIGZy b20KKyAqIGFwcHJvcHJpYXRlIFBHUFJPQ3MsIHByb2NubyBkZWZpbmUgb2Zmc2V0IGluZGV4 IGluIHBneGFjdG9mZnMgYXJyYXkoU2VlCisgKiBQUk9DX0hEUiBmb3IgZGV0YWlscykuCisg Ki8KK3N0YXRpYyBpbnQgKnBneGFjdG9mZnM7CisKIC8qCiAgKiBDYWNoZSB0byByZWR1Y2Ug b3ZlcmhlYWQgb2YgcmVwZWF0ZWQgY2FsbHMgdG8gVHJhbnNhY3Rpb25JZElzSW5Qcm9ncmVz cygpCiAgKi8KQEAgLTQ0OSwxMiArNDU2LDE0IEBAIFByb2NBcnJheVNobWVtSW5pdCh2b2lk ICphcmcpCiAJVHJhbnNhbVZhcmlhYmxlcy0+eGFjdENvbXBsZXRpb25Db3VudCA9IDE7CiAK IAlhbGxQcm9jcyA9IFByb2NHbG9iYWwtPmFsbFByb2NzOworCXBneGFjdG9mZnMgPSBQcm9j R2xvYmFsLT5wZ3hhY3RvZmZzOwogfQogCiBzdGF0aWMgdm9pZAogUHJvY0FycmF5U2htZW1B dHRhY2godm9pZCAqYXJnKQogewogCWFsbFByb2NzID0gUHJvY0dsb2JhbC0+YWxsUHJvY3M7 CisJcGd4YWN0b2ZmcyA9IFByb2NHbG9iYWwtPnBneGFjdG9mZnM7CiB9CiAKIC8qCkBAIC00 OTgsNyArNTA3LDcgQEAgUHJvY0FycmF5QWRkKFBHUFJPQyAqcHJvYykKIAkJaW50CQkJdGhp c19wcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07CiAKIAkJQXNzZXJ0KHRoaXNf cHJvY25vID49IDAgJiYgdGhpc19wcm9jbm8gPCAoYXJyYXlQLT5tYXhQcm9jcyArIE5VTV9B VVhJTElBUllfUFJPQ1MpKTsKLQkJQXNzZXJ0KGFsbFByb2NzW3RoaXNfcHJvY25vXS5wZ3hh Y3RvZmYgPT0gaW5kZXgpOworCQlBc3NlcnQocGd4YWN0b2Zmc1t0aGlzX3Byb2Nub10gPT0g aW5kZXgpOwogCiAJCS8qIElmIHdlIGhhdmUgZm91bmQgb3VyIHJpZ2h0IHBvc2l0aW9uIGlu IHRoZSBhcnJheSwgYnJlYWsgKi8KIAkJaWYgKHRoaXNfcHJvY25vID4gcGdwcm9jbm8pCkBA IC01MjAsMjMgKzUyOSwyMyBAQCBQcm9jQXJyYXlBZGQoUEdQUk9DICpwcm9jKQogCQkJbW92 ZWNvdW50ICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwogCiAJYXJyYXlQ LT5wZ3Byb2Nub3NbaW5kZXhdID0gcGdwcm9jbm87Ci0JcHJvYy0+cGd4YWN0b2ZmID0gaW5k ZXg7CisJcGd4YWN0b2Zmc1thcnJheVAtPnBncHJvY25vc1tpbmRleF1dID0gaW5kZXg7CiAJ UHJvY0dsb2JhbC0+eGlkc1tpbmRleF0gPSBwcm9jLT54aWQ7CiAJUHJvY0dsb2JhbC0+c3Vi eGlkU3RhdGVzW2luZGV4XSA9IHByb2MtPnN1YnhpZFN0YXR1czsKIAlQcm9jR2xvYmFsLT5z dGF0dXNGbGFnc1tpbmRleF0gPSBwcm9jLT5zdGF0dXNGbGFnczsKIAogCWFycmF5UC0+bnVt UHJvY3MrKzsKIAotCS8qIGFkanVzdCBwZ3hhY3RvZmYgZm9yIGFsbCBmb2xsb3dpbmcgUEdQ Uk9DcyAqLworCS8qIGFkanVzdCBhcHByb3ByaWF0ZSBwZ3hhY3RvZmYgZm9yIGFsbCBmb2xs b3dpbmcgUEdQUk9DcyAqLwogCWluZGV4Kys7CiAJZm9yICg7IGluZGV4IDwgYXJyYXlQLT5u dW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXByb2NubyA9IGFycmF5UC0+cGdwcm9j bm9zW2luZGV4XTsKIAogCQlBc3NlcnQocHJvY25vID49IDAgJiYgcHJvY25vIDwgKGFycmF5 UC0+bWF4UHJvY3MgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSk7Ci0JCUFzc2VydChhbGxQcm9j c1twcm9jbm9dLnBneGFjdG9mZiA9PSBpbmRleCAtIDEpOworCQlBc3NlcnQocGd4YWN0b2Zm c1twcm9jbm9dID09IGluZGV4IC0gMSk7CiAKLQkJYWxsUHJvY3NbcHJvY25vXS5wZ3hhY3Rv ZmYgPSBpbmRleDsKKwkJcGd4YWN0b2Zmc1twcm9jbm9dID0gaW5kZXg7CiAJfQogCiAJLyoK QEAgLTU3NCwxMCArNTgzLDEwIEBAIFByb2NBcnJheVJlbW92ZShQR1BST0MgKnByb2MsIFRy YW5zYWN0aW9uSWQgbGF0ZXN0WGlkKQogCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywg TFdfRVhDTFVTSVZFKTsKIAlMV0xvY2tBY3F1aXJlKFhpZEdlbkxvY2ssIExXX0VYQ0xVU0lW RSk7CiAKLQlteW9mZiA9IHByb2MtPnBneGFjdG9mZjsKKwlteW9mZiA9IFByb2NHZXRYYWN0 T2ZmKEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogCiAJQXNzZXJ0KG15b2ZmID49IDAg JiYgbXlvZmYgPCBhcnJheVAtPm51bVByb2NzKTsKLQlBc3NlcnQoUHJvY0dsb2JhbC0+YWxs UHJvY3NbYXJyYXlQLT5wZ3Byb2Nub3NbbXlvZmZdXS5wZ3hhY3RvZmYgPT0gbXlvZmYpOwor CUFzc2VydChQcm9jR2xvYmFsLT5wZ3hhY3RvZmZzW2FycmF5UC0+cGdwcm9jbm9zW215b2Zm XV0gPT0gbXlvZmYpOwogCiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhdGVzdFhpZCkp CiAJewpAQCAtNjI0LDE3ICs2MzMsMTcgQEAgUHJvY0FycmF5UmVtb3ZlKFBHUFJPQyAqcHJv YywgVHJhbnNhY3Rpb25JZCBsYXRlc3RYaWQpCiAJYXJyYXlQLT5udW1Qcm9jcy0tOwogCiAJ LyoKLQkgKiBBZGp1c3QgcGd4YWN0b2ZmIG9mIGZvbGxvd2luZyBwcm9jcyBmb3IgcmVtb3Zl ZCBQR1BST0MgKG5vdGUgdGhhdAotCSAqIG51bVByb2NzIGFscmVhZHkgaGFzIGJlZW4gZGVj cmVtZW50ZWQpLgorCSAqIEFkanVzdCBhcHByb3ByaWF0ZSBwZ3hhY3RvZmYgb2YgZm9sbG93 aW5nIHByb2NzIGZvciByZW1vdmVkIFBHUFJPQworCSAqIChub3RlIHRoYXQgbnVtUHJvY3Mg YWxyZWFkeSBoYXMgYmVlbiBkZWNyZW1lbnRlZCkuCiAJICovCiAJZm9yIChpbnQgaW5kZXgg PSBteW9mZjsgaW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJaW50 CQkJcHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdOwogCiAJCUFzc2VydChwcm9j bm8gPj0gMCAmJiBwcm9jbm8gPCAoYXJyYXlQLT5tYXhQcm9jcyArIE5VTV9BVVhJTElBUllf UFJPQ1MpKTsKLQkJQXNzZXJ0KGFsbFByb2NzW3Byb2Nub10ucGd4YWN0b2ZmIC0gMSA9PSBp bmRleCk7CisJCUFzc2VydChwZ3hhY3RvZmZzW3Byb2Nub10gLSAxID09IGluZGV4KTsKIAot CQlhbGxQcm9jc1twcm9jbm9dLnBneGFjdG9mZiA9IGluZGV4OworCQlwZ3hhY3RvZmZzW3By b2Nub10gPSBpbmRleDsKIAl9CiAKIAkvKgpAQCAtNzA2LDExICs3MTUsMTMgQEAgUHJvY0Fy cmF5RW5kVHJhbnNhY3Rpb24oUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhp ZCkKIAkJLyogYXZvaWQgdW5uZWNlc3NhcmlseSBkaXJ0eWluZyBzaGFyZWQgY2FjaGVsaW5l cyAqLwogCQlpZiAocHJvYy0+c3RhdHVzRmxhZ3MgJiBQUk9DX1ZBQ1VVTV9TVEFURV9NQVNL KQogCQl7CisJCQlpbnQJCQlwZ3hhY3RvZmYgPSBQcm9jR2V0WGFjdE9mZihHZXROdW1iZXJG cm9tUEdQcm9jKHByb2MpKTsKKwogCQkJQXNzZXJ0KCFMV0xvY2tIZWxkQnlNZShQcm9jQXJy YXlMb2NrKSk7CiAJCQlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lW RSk7Ci0JCQlBc3NlcnQocHJvYy0+c3RhdHVzRmxhZ3MgPT0gUHJvY0dsb2JhbC0+c3RhdHVz RmxhZ3NbcHJvYy0+cGd4YWN0b2ZmXSk7CisJCQlBc3NlcnQocHJvYy0+c3RhdHVzRmxhZ3Mg PT0gUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbcGd4YWN0b2ZmXSk7CiAJCQlwcm9jLT5zdGF0 dXNGbGFncyAmPSB+UFJPQ19WQUNVVU1fU1RBVEVfTUFTSzsKLQkJCVByb2NHbG9iYWwtPnN0 YXR1c0ZsYWdzW3Byb2MtPnBneGFjdG9mZl0gPSBwcm9jLT5zdGF0dXNGbGFnczsKKwkJCVBy b2NHbG9iYWwtPnN0YXR1c0ZsYWdzW3BneGFjdG9mZl0gPSBwcm9jLT5zdGF0dXNGbGFnczsK IAkJCUxXTG9ja1JlbGVhc2UoUHJvY0FycmF5TG9jayk7CiAJCX0KIAl9CkBAIC03MjQsNyAr NzM1LDcgQEAgUHJvY0FycmF5RW5kVHJhbnNhY3Rpb24oUEdQUk9DICpwcm9jLCBUcmFuc2Fj dGlvbklkIGxhdGVzdFhpZCkKIHN0YXRpYyBpbmxpbmUgdm9pZAogUHJvY0FycmF5RW5kVHJh bnNhY3Rpb25JbnRlcm5hbChQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0ZXN0WGlk KQogewotCWludAkJCXBneGFjdG9mZiA9IHByb2MtPnBneGFjdG9mZjsKKwlpbnQJCQlwZ3hh Y3RvZmYgPSBQcm9jR2V0WGFjdE9mZihHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAog CS8qCiAJICogTm90ZTogd2UgbmVlZCBleGNsdXNpdmUgbG9jayBoZXJlIGJlY2F1c2Ugd2Un cmUgZ29pbmcgdG8gY2hhbmdlIG90aGVyCkBAIC03NDcsNyArNzU4LDcgQEAgUHJvY0FycmF5 RW5kVHJhbnNhY3Rpb25JbnRlcm5hbChQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0WGlkKQogCWlmIChwcm9jLT5zdGF0dXNGbGFncyAmIFBST0NfVkFDVVVNX1NUQVRFX01B U0spCiAJewogCQlwcm9jLT5zdGF0dXNGbGFncyAmPSB+UFJPQ19WQUNVVU1fU1RBVEVfTUFT SzsKLQkJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbcHJvYy0+cGd4YWN0b2ZmXSA9IHByb2Mt PnN0YXR1c0ZsYWdzOworCQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1twZ3hhY3RvZmZdID0g cHJvYy0+c3RhdHVzRmxhZ3M7CiAJfQogCiAJLyogQ2xlYXIgdGhlIHN1YnRyYW5zYWN0aW9u LVhJRCBjYWNoZSB0b28gd2hpbGUgaG9sZGluZyB0aGUgbG9jayAqLwpAQCAtOTAzLDcgKzkx NCw3IEBAIFByb2NBcnJheUNsZWFyVHJhbnNhY3Rpb24oUEdQUk9DICpwcm9jKQogCS8qCiAJ ICogQ3VycmVudGx5IHdlIG5lZWQgdG8gbG9jayBQcm9jQXJyYXlMb2NrIGV4Y2x1c2l2ZWx5 IGhlcmUsIGFzIHdlCiAJICogaW5jcmVtZW50IHhhY3RDb21wbGV0aW9uQ291bnQgYmVsb3cu IFdlIGFsc28gbmVlZCBpdCBhdCBsZWFzdCBpbiBzaGFyZWQKLQkgKiBtb2RlIGZvciBwZ3By b2MtPnBneGFjdG9mZiB0byBzdGF5IHRoZSBzYW1lIGJlbG93LgorCSAqIG1vZGUgZm9yIHBy b2MncyBwZ3hhY3RvZmYgdG8gc3RheSB0aGUgc2FtZSBiZWxvdy4KIAkgKgogCSAqIFdlIGNv dWxkIGhvd2V2ZXIsIGFzIHRoaXMgYWN0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGNoYW5nZSBh bnlvbmUncyB2aWV3CiAJICogb2YgdGhlIHNldCBvZiBydW5uaW5nIFhJRHMgKG91ciBlbnRy eSBpcyBkdXBsaWNhdGUgd2l0aCB0aGUgZ3hhY3QgdGhhdApAQCAtOTE2LDcgKzkyNyw3IEBA IFByb2NBcnJheUNsZWFyVHJhbnNhY3Rpb24oUEdQUk9DICpwcm9jKQogCSAqLwogCUxXTG9j a0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXBneGFjdG9mZiA9 IHByb2MtPnBneGFjdG9mZjsKKwlwZ3hhY3RvZmYgPSBQcm9jR2V0WGFjdE9mZihHZXROdW1i ZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCVByb2NHbG9iYWwtPnhpZHNbcGd4YWN0b2ZmXSA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCXByb2MtPnhpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwpAQCAtMTQ3NSw3ICsxNDg2LDcgQEAgVHJhbnNhY3Rpb25JZElzSW5Qcm9ncmVzcyhU cmFuc2FjdGlvbklkIHhpZCkKIAl9CiAKIAkvKiBObyBzaG9ydGN1dHMsIGdvdHRhIGdyb3Zl bCB0aHJvdWdoIHRoZSBhcnJheSAqLwotCW15cGd4YWN0b2ZmID0gTXlQcm9jLT5wZ3hhY3Rv ZmY7CisJbXlwZ3hhY3RvZmYgPSBQcm9jR2V0TXlYYWN0T2ZmKCk7CiAJbnVtUHJvY3MgPSBh cnJheVAtPm51bVByb2NzOwogCWZvciAoaW50IHBneGFjdG9mZiA9IDA7IHBneGFjdG9mZiA8 IG51bVByb2NzOyBwZ3hhY3RvZmYrKykKIAl7CkBAIC0yMTg0LDcgKzIxOTUsNyBAQCBHZXRT bmFwc2hvdERhdGEoU25hcHNob3Qgc25hcHNob3QpCiAJfQogCiAJbGF0ZXN0X2NvbXBsZXRl ZCA9IFRyYW5zYW1WYXJpYWJsZXMtPmxhdGVzdENvbXBsZXRlZFhpZDsKLQlteXBneGFjdG9m ZiA9IE15UHJvYy0+cGd4YWN0b2ZmOworCW15cGd4YWN0b2ZmID0gUHJvY0dldE15WGFjdE9m ZigpOwogCW15eGlkID0gb3RoZXJfeGlkc1tteXBneGFjdG9mZl07CiAJQXNzZXJ0KG15eGlk ID09IE15UHJvYy0+eGlkKTsKIApAQCAtMjIyMyw3ICsyMjM0LDcgQEAgR2V0U25hcHNob3RE YXRhKFNuYXBzaG90IHNuYXBzaG90KQogCQkJVHJhbnNhY3Rpb25JZCB4aWQgPSBVSU5UMzJf QUNDRVNTX09OQ0Uob3RoZXJfeGlkc1twZ3hhY3RvZmZdKTsKIAkJCXVpbnQ4CQlzdGF0dXNG bGFnczsKIAotCQkJQXNzZXJ0KGFsbFByb2NzW2FycmF5UC0+cGdwcm9jbm9zW3BneGFjdG9m Zl1dLnBneGFjdG9mZiA9PSBwZ3hhY3RvZmYpOworCQkJQXNzZXJ0KHBneGFjdG9mZnNbYXJy YXlQLT5wZ3Byb2Nub3NbcGd4YWN0b2ZmXV0gPT0gcGd4YWN0b2ZmKTsKIAogCQkJLyoKIAkJ CSAqIElmIHRoZSB0cmFuc2FjdGlvbiBoYXMgbm8gWElEIGFzc2lnbmVkLCB3ZSBjYW4gc2tp cCBpdDsgaXQKQEAgLTI1OTYsNyArMjYwNyw3IEBAIFByb2NBcnJheUluc3RhbGxSZXN0b3Jl ZFhtaW4oVHJhbnNhY3Rpb25JZCB4bWluLCBQR1BST0MgKnByb2MpCiAJCU15UHJvYy0+eG1p biA9IFRyYW5zYWN0aW9uWG1pbiA9IHhtaW47CiAJCU15UHJvYy0+c3RhdHVzRmxhZ3MgPSAo TXlQcm9jLT5zdGF0dXNGbGFncyAmIH5QUk9DX1hNSU5fRkxBR1MpIHwKIAkJCShwcm9jLT5z dGF0dXNGbGFncyAmIFBST0NfWE1JTl9GTEFHUyk7Ci0JCVByb2NHbG9iYWwtPnN0YXR1c0Zs YWdzW015UHJvYy0+cGd4YWN0b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7CisJCVByb2NH bG9iYWwtPnN0YXR1c0ZsYWdzW1Byb2NHZXRNeVhhY3RPZmYoKV0gPSBNeVByb2MtPnN0YXR1 c0ZsYWdzOwogCiAJCXJlc3VsdCA9IHRydWU7CiAJfQpAQCAtNDAyNCw3ICs0MDM1LDcgQEAg WGlkQ2FjaGVSZW1vdmVSdW5uaW5nWGlkcyhUcmFuc2FjdGlvbklkIHhpZCwKIAkgKi8KIAlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQlteXN1Ynhp ZHN0YXQgPSAmUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzW015UHJvYy0+cGd4YWN0b2ZmXTsK KwlteXN1YnhpZHN0YXQgPSAmUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzW1Byb2NHZXRNeVhh Y3RPZmYoKV07CiAKIAkvKgogCSAqIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHhpZCBh bmQgeGlkc1tdIHdpbGwgYmUgaW4gaW5jcmVhc2luZyBvcmRlciwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jCmluZGV4IDYyNGNlY2M2YmM1Li4wNTM1MzhjY2ViZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJvYy5jCkBAIC0xNjMsNiArMTYzLDcgQEAgUHJvY0dsb2JhbFNobWVtUmVx dWVzdCh2b2lkICphcmcpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFs UHJvY3MsIHNpemVvZihQR1BST0MpKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9z aXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpKTsKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xvYmFs LT5zdWJ4aWRTdGF0ZXMpKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRv dGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+cGd4YWN0b2ZmcykpKTsKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xvYmFs LT5zdGF0dXNGbGFncykpKTsKIAlQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbVNpemUgPSBzaXpl OwogCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQR1BST0Mgc3RydWN0dXJlcyIsCkBA IC0yNjcsNiArMjY4LDkgQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lkICphcmcpCiAJUHJv Y0dsb2JhbC0+eGlkcyA9IChUcmFuc2FjdGlvbklkICopIHB0cjsKIAlwdHIgPSBwdHIgKyAo VG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpOwogCisJUHJvY0dsb2Jh bC0+cGd4YWN0b2ZmcyA9IChpbnQgKikgcHRyOworCXB0ciA9IHB0ciArIChUb3RhbFByb2Nz ICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5wZ3hhY3RvZmZzKSk7CisKIAlQcm9jR2xvYmFsLT5z dWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgcHRyOwogCXB0ciA9IHB0ciArIChU b3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKIApAQCAt MTU1NSw3ICsxNTU5LDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQkJ ICogdGhlIGxvY2sgaGVsZCwgd2hpY2ggaXMgbXVjaCBtb3JlIHVuZGVzaXJhYmxlLgogCQkJ ICovCiAJCQlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0J CQlzdGF0dXNGbGFncyA9IFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW2F1dG92YWMtPnBneGFj dG9mZl07CisJCQlzdGF0dXNGbGFncyA9IFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW1Byb2NH ZXRYYWN0T2ZmKEdldE51bWJlckZyb21QR1Byb2MoYXV0b3ZhYykpXTsKIAkJCWxvY2ttZXRo b2RfY29weSA9IGxvY2stPnRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZDsKIAkJCWxvY2t0YWdf Y29weSA9IGxvY2stPnRhZzsKIAkJCUxXTG9ja1JlbGVhc2UoUHJvY0FycmF5TG9jayk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvYy5oCmluZGV4IDAzYTFhNDY2ZmE4Li44Y2JjODkyOGRkNSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jLmgKQEAgLTE3NCw3ICsxNzQsOCBAQCB0eXBlZGVmIGVudW0KICAqCiAgKiBTb21l IGZpZWxkcyBpbiBQR1BST0MgKHNlZSAibWlycm9yZWQgaW4gLi4uIiBjb21tZW50KSBhcmUg bWlycm9yZWQgaW50byBhbgogICogZWxlbWVudCBvZiBtb3JlIGRlbnNlbHkgcGFja2VkIFBy b2NHbG9iYWwgYXJyYXlzLiBUaGVzZSBhcnJheXMgYXJlIGluZGV4ZWQKLSAqIGJ5IFBHUFJP Qy0+cGd4YWN0b2ZmLiBCb3RoIGNvcGllcyBuZWVkIHRvIGJlIG1haW50YWluZWQgY29oZXJl bnRseS4KKyAqIGJ5IGEgUEdQUk9DJ3MgcGd4YWN0b2ZmcyBlbnRyeS4gQm90aCBjb3BpZXMg bmVlZCB0byBiZSBtYWludGFpbmVkCisgKiBjb2hlcmVudGx5LgogICoKICAqIE5COiBUaGUg cGd4YWN0b2ZmIGluZGV4ZWQgdmFsdWUgY2FuICpuZXZlciogYmUgYWNjZXNzZWQgd2l0aG91 dCBob2xkaW5nCiAgKiBsb2Nrcy4KQEAgLTIxMCw5ICsyMTEsNiBAQCB0eXBlZGVmIHN0cnVj dCBQR1BST0MKIAlPaWQJCQl0ZW1wTmFtZXNwYWNlSWQ7CS8qIE9JRCBvZiB0ZW1wIHNjaGVt YSB0aGlzIGJhY2tlbmQgaXMKIAkJCQkJCQkJCSAqIHVzaW5nICovCiAKLQlpbnQJCQlwZ3hh Y3RvZmY7CQkvKiBvZmZzZXQgaW50byB2YXJpb3VzIFByb2NHbG9iYWwtPmFycmF5cyB3aXRo Ci0JCQkJCQkJCSAqIGRhdGEgbWlycm9yZWQgZnJvbSB0aGlzIFBHUFJPQyAqLwotCiAJdWlu dDgJCXN0YXR1c0ZsYWdzOwkvKiB0aGlzIGJhY2tlbmQncyBzdGF0dXMgZmxhZ3MsIHNlZSBQ Uk9DXyoKIAkJCQkJCQkJICogYWJvdmUuIG1pcnJvcmVkIGluCiAJCQkJCQkJCSAqIFByb2NH bG9iYWwtPnN0YXR1c0ZsYWdzW3BneGFjdG9mZl0gKi8KQEAgLTQwMiwxMCArNDAwLDExIEBA IGV4dGVybiBQR0RMTElNUE9SVCBQR1BST0MgKk15UHJvYzsKICAqIGZvciBQR1BST0NzIHRo YXQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBzaGFyZWQgYXJyYXkgd2l0aCBQcm9jQXJyYXlB ZGQoKQogICogKGluIGNvbnRyYXN0IHRvIFBHUFJPQyBhcnJheSB3aGljaCBoYXMgdW51c2Vk IFBHUFJPQ3MgaW50ZXJzcGVyc2VkKS4KICAqCi0gKiBUaGUgZGVuc2UgYXJyYXlzIGFyZSBp bmRleGVkIGJ5IFBHUFJPQy0+cGd4YWN0b2ZmLiBBbnkgY29uY3VycmVudAotICogUHJvY0Fy cmF5QWRkKCkgLyBQcm9jQXJyYXlSZW1vdmUoKSBjYW4gbGVhZCB0byBwZ3hhY3RvZmYgb2Yg YSBwcm9jYXJyYXkKLSAqIG1lbWJlciB0byBjaGFuZ2UuICBUaGVyZWZvcmUgaXQgaXMgb25s eSBzYWZlIHRvIHVzZSBQR1BST0MtPnBneGFjdG9mZiB0bwotICogYWNjZXNzIHRoZSBkZW5z ZSBhcnJheSB3aGlsZSBob2xkaW5nIGVpdGhlciBQcm9jQXJyYXlMb2NrIG9yIFhpZEdlbkxv Y2suCisgKiBUaGUgZGVuc2UgYXJyYXlzIGFyZSBpbmRleGVkIGJ5IHRoZSBQR1BST0MncyBj b3JyZXNwb25kaW5nIG9mZnNldCBpbgorICogcGd4YWN0b2ZmLiAgQW55IGNvbmN1cnJlbnQg UHJvY0FycmF5QWRkKCkgLyBQcm9jQXJyYXlSZW1vdmUoKSBjYW4gY2F1c2UKKyAqIHRoZSBw Z3hhY3RvZmYgb2YgYSBwcm9jYXJyYXkgbWVtYmVyIHRvIGNoYW5nZS4gIFRoZXJlZm9yZSBp dCBpcyBvbmx5IHNhZmUKKyAqIHRvIHVzZSBhIHByb2MncyBwZ3hhY3RvZmYgdG8gYWNjZXNz IHRoZSBkZW5zZSBhcnJheSB3aGlsZSBob2xkaW5nIGVpdGhlcgorICogUHJvY0FycmF5TG9j ayBvciBYaWRHZW5Mb2NrLgogICoKICAqIEFzIGxvbmcgYXMgYSBQR1BST0MgaXMgaW4gdGhl IHByb2NhcnJheSwgdGhlIG1pcnJvcmVkIHZhbHVlcyBuZWVkIHRvIGJlCiAgKiBtYWludGFp bmVkIGluIGJvdGggcGxhY2VzIGluIGEgY29oZXJlbnQgbWFubmVyLgpAQCAtNDQ2LDYgKzQ0 NSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQUk9DX0hEUgogCS8qIEFycmF5IG9mIFBHUFJPQyBz dHJ1Y3R1cmVzIChub3QgaW5jbHVkaW5nIGR1bW1pZXMgZm9yIHByZXBhcmVkIHR4bnMpICov CiAJUEdQUk9DCSAgICphbGxQcm9jczsKIAorCS8qCisJICogRGVuc2Ugb2Zmc2V0cyBpbnRv IHZhcmlvdXMgUHJvY0dsb2JhbC0+YXJyYXlzIHdpdGggZGF0YSBtaXJyb3JlZCBmcm9tCisJ ICogYXBwcm9wcmlhdGUgUEdQUk9Dcy4gIExpa2UgYWxsUHJvY3MsIHZhbHVlcyBhcmUgaW5k ZXhlZCBieSBQcm9jTnVtYmVyLgorCSAqLworCWludAkJICAgKnBneGFjdG9mZnM7CisKIAkv KiBBcnJheSBtaXJyb3JpbmcgUEdQUk9DLnhpZCBmb3IgZWFjaCBQR1BST0MgY3VycmVudGx5 IGluIHRoZSBwcm9jYXJyYXkgKi8KIAlUcmFuc2FjdGlvbklkICp4aWRzOwogCkBAIC01MTEs NiArNTE2LDggQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJv Y3M7CiAgKi8KICNkZWZpbmUgR2V0UEdQcm9jQnlOdW1iZXIobikgKCZQcm9jR2xvYmFsLT5h bGxQcm9jc1sobildKQogI2RlZmluZSBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpICgocHJv YykgLSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbMF0pCisjZGVmaW5lIFByb2NHZXRYYWN0T2Zm KHByb2NubykgKFByb2NHbG9iYWwtPnBneGFjdG9mZnNbKHByb2NubyldKQorI2RlZmluZSBQ cm9jR2V0TXlYYWN0T2ZmKCkgKFByb2NHZXRYYWN0T2ZmKE15UHJvY051bWJlcikpCiAKIC8q CiAgKiBXZSBzZXQgYXNpZGUgc29tZSBleHRyYSBQR1BST0Mgc3RydWN0dXJlcyBmb3IgInNw ZWNpYWwgd29ya2VyIiBwcm9jZXNzZXMsCi0tIAoyLjQzLjAKCg== --------------PQWoTXc6U1Z8kTyXQhgWg0IC--