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 1w71XB-004smd-0O for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 01:35:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w71X9-000O7W-20 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 01:35:16 +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 1w71X9-000O7N-0i for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 01:35:15 +0000 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w71X6-00000001ufH-2g6k for pgsql-hackers@postgresql.org; Mon, 30 Mar 2026 01:35:15 +0000 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-7d9e22176a7so1999985a34.1 for ; Sun, 29 Mar 2026 18:35:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774834511; cv=none; d=google.com; s=arc-20240605; b=Rxvxur5lZEXDDAzCSI7Y+zxi+JmC3jjz8HtCVVx5FgfSRzCFqpYSY6F/YmmvLMWHPN nXXjqsTFa/ltTUyTOvYQdTyYkVAJTfLAySUYemsSlIj+3Nz4+HfYwzL6xGg0e+iMsfQ+ EtWuy826HHnTllrcc594mk8tRXp3pDc3Ahl7KeiFcMqv1KFll5gBS9bdXojpn5U21ZY4 41sm7YOv1HtrEdb4YWbv9B6R4Gwm0bpuMqWTuZslXshrakrHtnjrk81exlVLc83s9dp3 M/hPj7ggX4SeCYu7SJLnoU/1KMjgVvtMZYGJiTwOE7ftEFSM6r/RsYm8X07PxKUnD7Ma gTVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=/8hKST0VGW/TwF+IyEuNgGbP6D36w1uiTwpvVZ/z3zo=; fh=NR/Shy7gFWuoNNubAb6/4AK5OSVlQ42+K5CD/X6PZ8w=; b=f2EnovDUV0TZ2NefESS0jQ+938Hheli4ejA/EvGXeEeq0OQVGikboP3LneYGcNAQ3U tSrLuRPKq8lRc29+xS7SFdcQvo1Qq8/Lc7AnCzNu1tbHCZlTYGttMtqEcFQZ9uRGqgCc H3swJgDvY0dZ+q/HtZ+dgeDgci4q/bAQF9lEejg8RVEbiZl0NjswrY009q7n7NwHD1HD Up4iGlsm/VdFxi4g42zmTwWgI0eYgLx9Aknyb/O+67fm2R0hpOHsxJYWcZv1pfZea7qR cfUJ2hexnoQJPLIrbpTms5uUBb0GwigLut6pEfKUQAwZ7FAA4ODiiubow/ebBCs574Hq oAqw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774834511; x=1775439311; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/8hKST0VGW/TwF+IyEuNgGbP6D36w1uiTwpvVZ/z3zo=; b=arzL2maa+qrRwwChDAd1HWsoa4/HPWYKp6xaa0IfZk+9hNFuPpHOwVXbX5VPFF5mKO XhTTtbvDZdYjripjiAD20eQMHcCEFNoG+4nf7E98Bc+Hez4+J9N8AZOGQThc7wv4NEsL wFaCCQM3jUIOCKiFFl793XYfaVHuSueTUGflonsi/VkMORGm0YFfrHbddJ/HT30V2/4m k1BMOcf0O+7lwyrVkXDoBwxsv+Vylpta/hGNCTEk/hgnkdyAZm4lqYY3ivbkeeJrORem 9COXMyUcHgfLb7CrsxW5AW9x8VQ4NktUoP79AmvMib4r5z/YE4q+YzjoYVST7pwU3VUO allw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774834511; x=1775439311; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/8hKST0VGW/TwF+IyEuNgGbP6D36w1uiTwpvVZ/z3zo=; b=IVrtzWgbAbkih4eTjVMRispk4tXEe3q6gd4ovnKu2SH6exrcP08miMkDjv6m3km123 iBvQwUX+f6+/pKHLplgbEmVXh1jHwGC2YKUqKmavNRc9G9IQWfNtBFEtHZ7yjhZBq1Yo VnHEQwOw4ZW/ouDugiWfK0CZ6lFdbHZjxm16S0YeQTCzJn30YfNagrQrYn9QgM0IbROX yqxV/DSSWeyEMTwCrzsSSP1QYobDiIpltbllbmpcI8zI2LPe8vwEE8PYcBh+AFD1prSG XAiitBeCTk9aXV+9tnmQW7WnUsEmq/SLuGG+5SnXzMr4MEZ6sl3sw/se1aHNt+fiMi6Z udhw== X-Forwarded-Encrypted: i=1; AJvYcCVIukKzo+P7lo0nL2Q292qzTggTqBqkKXZY9arlJw3E0hS6V1HiNPV59A6AkSEsHDudXoTfOAnytk/EJG0X@postgresql.org X-Gm-Message-State: AOJu0YwJgzt9jTiuKs5sAbRKaZjQzdHvbzC25qaASX/oMR/5gkgQw8wF fLPQp68ZPiejwW0vh/0cY/xpRpcrETSDyhmdb8F6M5MtixOLHaW4WcgenZTpImZ9ZDQuuM2maj3 +0hUsv/uClqcKy6wUwGfNU/EljaXEDIg= X-Gm-Gg: ATEYQzw6f2qLkV5iVHer7r1H+3ThP8l41OAxNl61G329utyFEbMVdqF6YhTxV7qNR7z mX/7tBUXD0Nb94jvS6+xNNi9wQNw3ib9h2ReVk7QR+pg1T9MtvCYrwAz7RGRaL/Rgf7/3mwCzuf ICLerrsxYcqPBB0FAvb4pQbINmBTrkL9ExiPK0UInP1koi9Nk62YZ8ClpmYO9zZh3wWs4XIe6r2 xgjNiocAOK1Z6W27zDvvpBXxGIDgHnchP4+oXFLkwZ753Wzejao96UGPblYODvOGmHBWPDRBT6f vnffbf0cOMc3ljXy1v/LzImd6kwPWNYtsOb+pjP+d3CFu4e8mA== X-Received: by 2002:a05:6820:2206:b0:67d:e619:b722 with SMTP id 006d021491bc7-67e18705baamr5669281eaf.45.1774834511404; Sun, 29 Mar 2026 18:35:11 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Sun, 29 Mar 2026 18:35:00 -0700 X-Gm-Features: AQROBzDo5GcX-uQ1JnrHbC9LsU2Z4-zrKzQw6UG21vhJmD_ia8x0VNXBEskuEyw Message-ID: Subject: Re: Introduce XID age based replication slot invalidation To: Srinath Reddy Sadipiralla Cc: Masahiko Sawada , SATYANARAYANA NARLAPURAM , "Hayato Kuroda (Fujitsu)" , John H , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000096b100064e33dc7a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000096b100064e33dc7a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sun, Mar 29, 2026 at 1:16=E2=80=AFPM Srinath Reddy Sadipiralla wrote: > > Hello, > > Thanks for the v5 patch set, I have reviewed and did initial testing on > v5 patch set, and it LGTM, except these Thank you for reviewing and testing. I appreciate it. > diff --git a/src/backend/replication/slot.c b/src/backend/replication/slo= t.c > index 286f0f46341..c2ff7e464f0 100644 > --- a/src/backend/replication/slot.c > +++ b/src/backend/replication/slot.c > @@ -1849,7 +1849,7 @@ ReportSlotInvalidation(ReplicationSlotInvalidationC= ause cause, > else > { > /* translator: %s is a GUC variab= le name */ > - appendStringInfo(&err_detail, _("= The slot's xmin %u is %d transactions old, which exceeds the configured \"%= s\" value of %d."), > + appendStringInfo(&err_detail, _("= The slot's catalog_xmin %u is %d transactions old, which exceeds the config= ured \"%s\" value of %d."), > = catalog_xmin, (int32) (recentXid - catalog_xmin), "max_slot_xid_age", max_s= lot_xid_age); > } Fixed the typo. > while testing the active slot XID age invalidation (SIGTERM path) , i > observed that slot got invalidated , walsender was killed because of > SIGTERM , then starts the infinite-retry-cycle problem where > walreceiver starts walsender and walsender will try to use an invalidated > slot and dies, will think more on this. I would like to clarify that once a slot is invalidated due to any of the reasons (ReplicationSlotInvalidationCause), it becomes unusable; the sender will error out if the receiver tries to use it. This is consistent with all existing slot invalidation mechanisms. Please find the attached v6 patches fixing the typo for further review. -- Bharath Rupireddy Amazon Web Services: https://aws.amazon.com --00000000000096b100064e33dc7a Content-Type: application/octet-stream; name="v6-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Disposition: attachment; filename="v6-0002-Add-more-tests-for-XID-age-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnci04i01 RnJvbSA1NjlmOGFjNjhlOWViZjM3MTQ5ZjgyZmY5YmI5MWIxNzg5NjllMzAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMDE6MTU6NDggKzAw MDAKU3ViamVjdDogW1BBVENIIHY2IDIvMl0gQWRkIG1vcmUgdGVzdHMgZm9yIFhJRCBhZ2Ugc2xv dCBpbnZhbGlkYXRpb24KCkNvbnN1bWUgWElEcyB1cCB0byB3cmFwYXJvdW5kIFdBUk5JTkcgbGlt aXRzIHdpdGgKbWF4X3Nsb3RfeGlkX2FnZSBtYXRjaGluZyB2YWN1dW1fZmFpbHNhZmVfYWdlICgx LjZCKS4gVmVyaWZ5IHRoYXQKYXV0b3ZhY3V1bSBpbnZhbGlkYXRlcyB0aGUgaW5hY3RpdmUgcmVw bGljYXRpb24gc2xvdAooWElELWFnZS1iYXNlZCBpbnZhbGlkYXRpb24pLCB1bmJsb2NrcyBkYXRm cm96ZW54aWQgYWR2YW5jZW1lbnQsCmFuZCBwcmV2ZW50cyB3cmFwYXJvdW5kIHdpdGhvdXQgYW55 IGludGVydmVudGlvbi4KLS0tCiBzcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSAgICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwg fCAxNjIgKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L01h a2VmaWxlIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUKaW5kZXggZDQxYWFhZjhhZTEuLjVj M2QyYzg5OTQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZQorKysgYi9z cmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZQpAQCAtMTIsNyArMTIsOCBAQAogRVhUUkFfSU5TVEFM TD1jb250cmliL3BnX3ByZXdhcm0gXAogCWNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzIFwKIAlj b250cmliL3Rlc3RfZGVjb2RpbmcgXAotCXNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cworCXNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cyBcCisJc3JjL3Rlc3QvbW9kdWxl cy94aWRfd3JhcGFyb3VuZAogCiBzdWJkaXIgPSBzcmMvdGVzdC9yZWNvdmVyeQogdG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxz bG90X2xpbWl0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwK aW5kZXggZDBmNThkODMxN2YuLjNhMWFkYTBhMDJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNv dmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAx OV9yZXBsc2xvdF9saW1pdC5wbApAQCAtNzE1LDQgKzcxNSwxNjYgQEAgJHByaW1hcnk1LT5zdG9w OwogIyBHVUMuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKyMgVGVzdGNhc2U6IFhJRC1hZ2UtYmFzZWQgc2xvdCBpbnZhbGlkYXRpb24gaW4gYSBwcm9k dWN0aW9uLWxpa2Ugc2NlbmFyaW8uCisjIFN0YW5kYnkgc2V0cyBzbG90IHhtaW4gdmlhIEhTIGZl ZWRiYWNrLCBkaXNjb25uZWN0cywgWElEcyBjb25zdW1lZC4KKyMgQXV0b3ZhY3V1bSBhdXRvbWF0 aWNhbGx5IGludmFsaWRhdGVzIHRoZSBzbG90IG9uY2UgaXRzIHhtaW4gYWdlIGV4Y2VlZHMKKyMg bWF4X3Nsb3RfeGlkX2FnZSwgYWR2YW5jZXMgZGF0ZnJvemVueGlkIGluIGFsbCBkYXRhYmFzZXMs IGFuZCBrZWVwcyB0aGUKKyMgc3lzdGVtIGhlYWx0aHkg4oCUIG5vIG1hbnVhbCBWQUNVVU0sIHZh Y3V1bWRiLCBvciBkb3dudGltZSBuZWVkZWQuCisKKyMgQ2hlY2sgaWYgYXV0b3ZhY3V1bSBoYXMg aW52YWxpZGF0ZWQgdGhlIHNsb3QgZHVlIHRvIHhpZF9hZ2VkLgorIyBSZXR1cm5zIDEgaWYgaW52 YWxpZGF0ZWQsIDAgb3RoZXJ3aXNlLiAgRWFybHkgZXhpdCB3aGVuIG1heF9zbG90X3hpZF9hZ2Ug PSAwLgorc3ViIGNoZWNrX3Nsb3RfaW52YWxpZGF0ZWQKK3sKKwlteSAoJG5vZGUsICRzbG90X25h bWUsICRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcykgPSBAXzsKKworCXJldHVybiAwIGlmICRtYXhf YWdlID09IDA7CisKKwlteSAkcmVhc29uID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGludmFsaWRhdGlvbl9yZWFzb24gRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBX SEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZSciKTsKKwlpZiAoJHJlYXNvbiBlcSAneGlkX2Fn ZWQnKQorCXsKKwkJZGlhZyAiU2xvdCBpbnZhbGlkYXRlZCBieSBhdXRvdmFjdXVtIGFmdGVyIGNv bnN1bWluZyAkY29uc3VtZWRfeGlkcyBYSURzIjsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAw OworfQorCisjIFZlcmlmeSBzZXJ2ZXIgbG9nIHNob3dzIHNsb3QgaW52YWxpZGF0aW9uIGJ5IGF1 dG92YWN1dW0gd29ya2VyIHdpdGgKKyMgY29ycmVjdCB4bWluLCBhZ2UsIGFuZCBuZXh0IHR4aWQg dmFsdWVzLgorc3ViIHZlcmlmeV9zbG90X3hpZF9hZ2VkX2ludmFsaWRhdGlvbgoreworCW15ICgk bm9kZSwgJHNsb3RfbmFtZSwgJHNsb3RfeG1pbiwgJG1heF9hZ2UsICRjb25zdW1lZF94aWRzKSA9 IEBfOworCisJbXkgJGxvZyA9IHNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCisJIyBWZXJp ZnkgdGhlIGludmFsaWRhdGlvbiB3YXMgcGVyZm9ybWVkIGJ5IGFuIGF1dG92YWN1dW0gd29ya2Vy LgorCWxpa2UoJGxvZywKKwkJcXIvYXV0b3ZhY3V1bSB3b3JrZXJcW1xkK1xdIExPRzpccytpbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCAiJHNsb3RfbmFtZSIvLAorCQkic2Vy dmVyIGxvZzogJHNsb3RfbmFtZSBpbnZhbGlkYXRlZCBieSBhdXRvdmFjdXVtIHdvcmtlciIpOwor CisJIyBWZXJpZnkgREVUQUlMIHNob3dzIHRoZSBjb3JyZWN0IHhtaW4gYW5kIG1heF9zbG90X3hp ZF9hZ2UuCisJbGlrZSgkbG9nLAorCQlxci9hdXRvdmFjdXVtIHdvcmtlclxbXGQrXF0gREVUQUlM OlxzK1RoZSBzbG90J3MgeG1pbiAkc2xvdF94bWluIGlzIChcZCspIHRyYW5zYWN0aW9ucyBvbGQs IHdoaWNoIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgIm1heF9zbG90X3hpZF9hZ2UiIHZhbHVlIG9m ICRtYXhfYWdlXC4vLAorCQkic2VydmVyIGxvZzogREVUQUlMIHNob3dzIHhtaW4gJHNsb3RfeG1p biBhbmQgYWdlICRtYXhfYWdlIik7CisKKwkjIEV4dHJhY3QgeGlkIGFnZSBmcm9tIHRoZSBsb2cg YW5kIHJlcG9ydCBmb3IgZGlhZ25vc3RpY3MuCisJJGxvZyA9fgorCSAgL1RoZSBzbG90J3MgeG1p biAkc2xvdF94bWluIGlzIChcZCspIHRyYW5zYWN0aW9ucyBvbGQvOworCW15ICRsb2dfeGlkX2Fn ZSA9ICQxIC8vICdOL0EnOworCWRpYWcgInhpZF9hZ2UgZnJvbSBzZXJ2ZXIgbG9nPSRsb2dfeGlk X2FnZSwgbWF4X3Nsb3RfeGlkX2FnZT0kbWF4X2FnZSwgY29uc3VtZWQ9JGNvbnN1bWVkX3hpZHMg WElEcyI7Cit9CisKKyMgVmVyaWZ5IHNsb3Qgd2FzIGludmFsaWRhdGVkIGFuZCB3YWl0IGZvciBh dXRvdmFjdXVtIHRvIGFkdmFuY2UgZGF0ZnJvemVueGlkCisjIGluIGFsbCBkYXRhYmFzZXMuICBF YXJseSBleGl0IHdoZW4gbWF4X3Nsb3RfeGlkX2FnZSA9IDAuCitzdWIgdmVyaWZ5X2ludmFsaWRh dGlvbl9hbmRfcmVjb3ZlcnkKK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUsICRzbG90X3htaW4s ICRtYXhfYWdlLCAkY29uc3VtZWRfeGlkcywgJHNsb3RfZ29uZSkgPSBAXzsKKworCXJldHVybiBp ZiAkbWF4X2FnZSA9PSAwOworCisJb2soJHNsb3RfZ29uZSwgJ2F1dG92YWN1dW0gaW52YWxpZGF0 ZWQgc2xvdCBkdWUgdG8geGlkX2FnZWQnKTsKKworCXZlcmlmeV9zbG90X3hpZF9hZ2VkX2ludmFs aWRhdGlvbigkbm9kZSwgJHNsb3RfbmFtZSwKKwkJJHNsb3RfeG1pbiwgJG1heF9hZ2UsICRjb25z dW1lZF94aWRzKTsKKworCSMgV2FpdCBmb3IgYXV0b3ZhY3V1bSB0byBhZHZhbmNlIGRhdGZyb3pl bnhpZCBpbiBhbGwgZGF0YWJhc2VzIHBhc3QgdGhlCisJIyB3cmFwYXJvdW5kIGRhbmdlciB6b25l IOKAlCBubyBtYW51YWwgaW50ZXJ2ZW50aW9uIHJlcXVpcmVkLgorCSRub2RlLT5wb2xsX3F1ZXJ5 X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIE5PVCBFWElTVFMgKAorCQkJU0VM RUNUIDEgRlJPTSBwZ19kYXRhYmFzZQorCQkJV0hFUkUgYWdlKGRhdGZyb3plbnhpZCkgPiAyMDAw MDAwMDAwCisJCSk7CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXV0b3ZhY3V1 bSB0byBhZHZhbmNlIGRhdGZyb3plbnhpZCBpbiBhbGwgZGF0YWJhc2VzIjsKK30KKworbXkgJHBy aW1hcnk2ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5NicpOworJHBy aW1hcnk2LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKworJG1heF9zbG90 X3hpZF9hZ2UgPSAxNjAwMDAwMDAwOyAgICAjIG1hdGNoZXMgdmFjdXVtX2ZhaWxzYWZlX2FnZSBk ZWZhdWx0CiskcHJpbWFyeTYtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsK K21heF9zbG90X3hpZF9hZ2UgPSAkbWF4X3Nsb3RfeGlkX2FnZQorYXV0b3ZhY3V1bV9uYXB0aW1l ID0gMXMKK30pOworCiskcHJpbWFyeTYtPnN0YXJ0OworJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBFWFRFTlNJT04geGlkX3dyYXBhcm91bmQiKTsKKworJGJhY2t1cF9u YW1lID0gJ2JhY2t1cDYnOworJHByaW1hcnk2LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworbXkg JHN0YW5kYnk2ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5NicpOwor JHN0YW5kYnk2LT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5NiwgJGJhY2t1cF9uYW1lLCBoYXNf c3RyZWFtaW5nID0+IDEpOworJHN0YW5kYnk2LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXsKK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiNl9zbG90JworaG90X3N0YW5kYnlfZmVl ZGJhY2sgPSBvbgord2FsX3JlY2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKK30pOworCiskcHJp bWFyeTYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJ3NiNl9zbG90JywgdHJ1ZSkiKTsKKworJHN0YW5kYnk2LT5zdGFy dDsKKworJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRh Yl9pbnQ2IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOworJHByaW1hcnk2 LT53YWl0X2Zvcl9jYXRjaHVwKCRzdGFuZGJ5Nik7CisKKyRwcmltYXJ5Ni0+cG9sbF9xdWVyeV91 bnRpbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1QgeG1pbiBJUyBOT1QgTlVMTCBGUk9NIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjZfc2xvdCc7CitdKSBv ciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzYjZfc2xvdCB4bWluIGZyb20gSFMgZmVlZGJh Y2siOworCiskcmVzdWx0ID0gJHByaW1hcnk2LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHhtaW4gSVMgTk9UIE5VTEwgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90 X25hbWUgPSAnc2I2X3Nsb3QnIik7CitpcygkcmVzdWx0LCAndCcsICdzbG90IGhhcyB4bWluIGZy b20gaG90X3N0YW5kYnlfZmVlZGJhY2snKTsKKworIyBDYXB0dXJlIHRoZSBzbG90J3MgeG1pbiBm b3IgbGF0ZXIgbG9nIHZlcmlmaWNhdGlvbi4KK215ICRzbG90X3htaW4gPSAkcHJpbWFyeTYtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgeG1pbiBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdzYjZfc2xvdCciKTsKKworIyBTdG9wIHN0YW5kYnk7IHNs b3QgeG1pbiBwZXJzaXN0cyBhbmQgaG9sZHMgYmFjayBkYXRmcm96ZW54aWQuCiskc3RhbmRieTYt PnN0b3A7CisKKyMgQ29uc3VtZSBYSURzIGluIDUwTSBjaHVua3MuICBPbmNlIHdlIGV4Y2VlZCBt YXhfc2xvdF94aWRfYWdlLCBhdXRvdmFjdXVtCisjIChuYXB0aW1lPTFzKSBzaG91bGQgYXV0b21h dGljYWxseSBpbnZhbGlkYXRlIHRoZSBzbG90LiAgS2VlcCBjb25zdW1pbmcKKyMgdW50aWwgd2Ug c2VlIHRoYXQgaGFwcGVuIOKAlCBubyBtYW51YWwgVkFDVVVNIG9yIGRvd250aW1lIG5lZWRlZC4K K215ICRsb2dzdGFydDYgPSAtcyAkcHJpbWFyeTYtPmxvZ2ZpbGU7CitteSAkY2h1bmsgPSA1MF8w MDBfMDAwOworbXkgJG1heF94aWRzID0gMl8yMDBfMDAwXzAwMDsKK215ICRjb25zdW1lZCA9IDA7 CitteSAkc2xvdF9nb25lID0gMDsKKword2hpbGUgKCRjb25zdW1lZCA8ICRtYXhfeGlkcykKK3sK KwkkcHJpbWFyeTYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvbnN1bWVfeGlkcygk Y2h1bmspIik7CisJJGNvbnN1bWVkICs9ICRjaHVuazsKKwlteSAkcmVtYWluaW5nID0gJG1heF94 aWRzIC0gJGNvbnN1bWVkOworCWRpYWcgIkNvbnN1bWVkICRjb25zdW1lZCAvICRtYXhfeGlkcyBY SURzICgkcmVtYWluaW5nIHJlbWFpbmluZykiOworCisJaWYgKCEkc2xvdF9nb25lICYmIGNoZWNr X3Nsb3RfaW52YWxpZGF0ZWQoJHByaW1hcnk2LCAnc2I2X3Nsb3QnLAorCQkJJG1heF9zbG90X3hp ZF9hZ2UsICRjb25zdW1lZCkpCisJeworCQkkc2xvdF9nb25lID0gMTsKKwl9Cit9CisKK3Zlcmlm eV9pbnZhbGlkYXRpb25fYW5kX3JlY292ZXJ5KCRwcmltYXJ5NiwgJ3NiNl9zbG90JywKKwkkc2xv dF94bWluLCAkbWF4X3Nsb3RfeGlkX2FnZSwgJGNvbnN1bWVkLCAkc2xvdF9nb25lKTsKKworIyBD b25zdW1lIDFCIG1vcmUgWElEcyDigJQgY29tYmluaW5nIHdpdGggdGhlIDIuMkIgY29uc3VtZWQg YWJvdmUsIHRoZSB0b3RhbAorIyBvZiAzLjJCIGV4Y2VlZHMgdGhlIDJeMzEgKH4yLjFCKSB1c2Fi bGUgWElEIHNwYWNlICh4aWRTdG9wTGltaXQpLCBpLmUuCisjIG1vcmUgdGhhbiBvbmUgZnVsbCB3 cmFwYXJvdW5kIGN5Y2xlLCBwcm92aW5nIHRoZSBzeXN0ZW0gaXMgaGVhbHRoeS4KKyRwcmltYXJ5 Ni0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY29uc3VtZV94aWRzKDEwMDAwMDAwMDAp Iik7CitvaygxLCAnd3JpdGVzIHN1Y2NlZWQgYWZ0ZXIgYXV0b3ZhY3V1bSBpbnZhbGlkYXRlZCB0 aGUgc2xvdCcpOworCiskcHJpbWFyeTYtPnN0b3A7CisKKyMgVGVzdGNhc2UgZW5kOiBYSUQtYWdl LWJhc2VkIHNsb3QgaW52YWxpZGF0aW9uIGluIGEgcHJvZHVjdGlvbi1saWtlIHNjZW5hcmlvLgor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMwoK --00000000000096b100064e33dc7a Content-Type: application/octet-stream; name="v6-0001-Add-XID-age-based-replication-slot-invalidation.patch" Content-Disposition: attachment; filename="v6-0001-Add-XID-age-based-replication-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnci04hp0 RnJvbSA1NzJkYWZiYWNmY2VlYjdhMzM0YTg2MGM5NzIzOTU4YzRlMmUwYWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMDE6MTI6NTYgKzAw MDAKU3ViamVjdDogW1BBVENIIHY2IDEvMl0gQWRkIFhJRCBhZ2UgYmFzZWQgcmVwbGljYXRpb24g c2xvdCBpbnZhbGlkYXRpb24KCkludHJvZHVjZSBtYXhfc2xvdF94aWRfYWdlLCBhIEdVQyB0aGF0 IGludmFsaWRhdGVzIHJlcGxpY2F0aW9uCnNsb3RzIHdob3NlIHhtaW4gb3IgY2F0YWxvZ194bWlu IGV4Y2VlZHMgdGhlIHNwZWNpZmllZCBhZ2UuCkRpc2FibGVkIGJ5IGRlZmF1bHQuCgpJZGxlIG9y IGZvcmdvdHRlbiByZXBsaWNhdGlvbiBzbG90cyBjYW4gaG9sZCBiYWNrIHZhY3V1bSwgbGVhZGlu Zwp0byBibG9hdCBhbmQgZXZlbnR1YWxseSBYSUQgd3JhcGFyb3VuZC4gSW4gdGhlIHdvcnN0IGNh c2UgdGhpcwpyZXF1aXJlcyBkcm9wcGluZyB0aGUgc2xvdCBhbmQgc2luZ2xlLXVzZXIgbW9kZSB2 YWN1dW1pbmcuIFRoaXMKc2V0dGluZyBhdm9pZHMgdGhhdCBieSBwcm9hY3RpdmVseSBpbnZhbGlk YXRpbmcgc2xvdHMgdGhhdCBoYXZlCmZhbGxlbiB0b28gZmFyIGJlaGluZC4KCkludmFsaWRhdGlv biBjaGVja3MgYXJlIHBlcmZvcm1lZCBvbmNlIHBlciByZWxhdGlvbiBkdXJpbmcgdmFjdXVtCihi b3RoIHZhY3V1bSBjb21tYW5kIGFuZCBhdXRvdmFjdXVtKSwgYW5kIGFsc28gYnkgdGhlIGNoZWNr cG9pbnRlcgpkdXJpbmcgY2hlY2twb2ludHMgYW5kIHJlc3RhcnRwb2ludHMuCi0tLQogZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDQwICsrKysKIGRvYy9z cmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMjAgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvY2x1c3Rlci5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8IDEyOCArKysrKysrKysrKystCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCAgMTkgKysKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA4ICsKIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMiArCiBzcmMvaW5j bHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3Jl Y292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsICAgICB8IDE3NSArKysrKysrKysrKysrKysr KysKIDE1IGZpbGVzIGNoYW5nZWQsIDQzNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKaW5kZXggMjI5ZjQxMzUzZWIuLjQ2YWFjNTljYjIwIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00 NzY0LDYgKzQ3NjQsNDYgQEAgcmVzdG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFy Y2hpdmVkaXJcXCVmIiAiJXAiJyAgIyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8 L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXNsb3QteGlk LWFnZSIgeHJlZmxhYmVsPSJtYXhfc2xvdF94aWRfYWdlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1l Pm1heF9zbG90X3hpZF9hZ2U8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAg IDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X3Nsb3RfeGlkX2FnZTwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgSW52YWxpZGF0ZSByZXBsaWNhdGlvbiBzbG90cyB3aG9zZSA8bGl0ZXJhbD54bWluPC9s aXRlcmFsPiAodGhlIG9sZGVzdAorICAgICAgICB0cmFuc2FjdGlvbiB0aGF0IHRoaXMgc2xvdCBu ZWVkcyB0aGUgZGF0YWJhc2UgdG8gcmV0YWluKSBvcgorICAgICAgICA8bGl0ZXJhbD5jYXRhbG9n X3htaW48L2xpdGVyYWw+ICh0aGUgb2xkZXN0IHRyYW5zYWN0aW9uIGFmZmVjdGluZyB0aGUKKyAg ICAgICAgc3lzdGVtIGNhdGFsb2dzIHRoYXQgdGhpcyBzbG90IG5lZWRzIHRoZSBkYXRhYmFzZSB0 byByZXRhaW4pIGhhcyByZWFjaGVkCisgICAgICAgIHRoZSBhZ2Ugc3BlY2lmaWVkIGJ5IHRoaXMg c2V0dGluZy4gVGhpcyBpbnZhbGlkYXRpb24gY2hlY2sgaGFwcGVucworICAgICAgICBkdXJpbmcg dmFjdXVtIChib3RoIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gY29tbWFuZCBhbmQgYXV0b3Zh Y3V1bSkKKyAgICAgICAgYW5kIGR1cmluZyBjaGVja3BvaW50cy4KKyAgICAgICAgQSB2YWx1ZSBv ZiB6ZXJvICh3aGljaCBpcyBkZWZhdWx0KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFVzZXJzIGNh biBzZXQKKyAgICAgICAgdGhpcyB2YWx1ZSBhbnl3aGVyZSBmcm9tIHplcm8gdG8gdHdvIGJpbGxp b24uIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlCisgICAgICAgIHNldCBpbiB0aGUgPGZpbGVu YW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlcgorICAg ICAgICBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAg ICAgIElkbGUgb3IgZm9yZ290dGVuIHJlcGxpY2F0aW9uIHNsb3RzIGNhbiBob2xkIGJhY2sgdmFj dXVtLCBsZWFkaW5nIHRvCisgICAgICAgIGJsb2F0IGFuZCBldmVudHVhbGx5IHRyYW5zYWN0aW9u IElEIHdyYXBhcm91bmQuIFRoaXMgc2V0dGluZyBhdm9pZHMKKyAgICAgICAgdGhhdCBieSBpbnZh bGlkYXRpbmcgc2xvdHMgdGhhdCBoYXZlIGZhbGxlbiB0b28gZmFyIGJlaGluZC4KKyAgICAgICAg U2VlIDx4cmVmIGxpbmtlbmQ9InJvdXRpbmUtdmFjdXVtaW5nIi8+IGZvciBtb3JlIGRldGFpbHMu CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIE5vdGUgdGhhdCB0aGlz IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90IGFwcGxpY2FibGUgZm9yIHNsb3RzCisgICAg ICAgIG9uIHRoZSBzdGFuZGJ5IHNlcnZlciB0aGF0IGFyZSBiZWluZyBzeW5jZWQgZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIKKyAgICAgICAgKGkuZS4sIHN0YW5kYnkgc2xvdHMgaGF2aW5nCisgICAg ICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBnX3JlcGxpY2F0 aW9uX3Nsb3RzPC9saW5rPi48c3RydWN0ZmllbGQ+c3luY2VkPC9zdHJ1Y3RmaWVsZD4KKyAgICAg ICAgdmFsdWUgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4pLiBTeW5jZWQgc2xvdHMgYXJlIGFsd2F5 cyBjb25zaWRlcmVkIHRvCisgICAgICAgIGJlIGluYWN0aXZlIGJlY2F1c2UgdGhleSBkb24ndCBw ZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZQorICAgICAgICBjaGFuZ2VzLgorICAg ICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy13YWwtc2VuZGVyLXRpbWVvdXQiIHhyZWZsYWJlbD0i d2FsX3NlbmRlcl90aW1lb3V0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPndhbF9zZW5kZXJfdGlt ZW91dDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA5ZWUxYTJiZmM2YS4uMWE1MDdiNDMwZjkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKQEAgLTMxMDIsNiArMzEwMiwxNCBAQCBTRUxFQ1QgKiBGUk9NIHBn X2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICAgICA8eHJl ZiBsaW5rZW5kPSJndWMtaWRsZS1yZXBsaWNhdGlvbi1zbG90LXRpbWVvdXQiLz4gZHVyYXRpb24u CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPnhpZF9hZ2VkPC9saXRlcmFs PiBtZWFucyB0aGF0IHRoZSBzbG90J3MKKyAgICAgICAgICA8bGl0ZXJhbD54bWluPC9saXRlcmFs PiBvciA8bGl0ZXJhbD5jYXRhbG9nX3htaW48L2xpdGVyYWw+CisgICAgICAgICAgaGFzIHJlYWNo ZWQgdGhlIGFnZSBzcGVjaWZpZWQgYnkKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4 LXNsb3QteGlkLWFnZSIvPiBwYXJhbWV0ZXIuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4K ICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZjY5OGMy ZDg5OWIuLjJlOGU2MWViMGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC0xNDcsNiArMTQ3LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCisj aW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCkBAIC02NDIsNiArNjQzLDggQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFj azsKIAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAJU2l6ZQkJZGVhZF9pdGVtc19tYXhfYnl0 ZXMgPSAwOworCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJVHJhbnNhY3Rpb25JZCBzbG90X2NhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCiAJdmVyYm9zZSA9IChwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9WRVJCT1NFKSAhPSAwOwog CWluc3RydW1lbnQgPSAodmVyYm9zZSB8fCAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYm CkBAIC03OTgsNyArODAxLDIyIEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0 IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJICogd2FudCB0byB0ZWFjaCBsYXp5X3NjYW5fcHJ1bmUg dG8gcmVjb21wdXRlIHZpc3Rlc3QgZnJvbSB0aW1lIHRvIHRpbWUsCiAJICogdG8gaW5jcmVhc2Ug dGhlIG51bWJlciBvZiBkZWFkIHR1cGxlcyBpdCBjYW4gcHJ1bmUgYXdheS4pCiAJICovCi0JdmFj cmVsLT5hZ2dyZXNzaXZlID0gdmFjdXVtX2dldF9jdXRvZmZzKHJlbCwgcGFyYW1zLCAmdmFjcmVs LT5jdXRvZmZzKTsKKwl2YWNyZWwtPmFnZ3Jlc3NpdmUgPSB2YWN1dW1fZ2V0X2N1dG9mZnMocmVs LCBwYXJhbXMsICZ2YWNyZWwtPmN1dG9mZnMsCisJCQkJCQkJCQkJCSZzbG90X3htaW4sICZzbG90 X2NhdGFsb2dfeG1pbik7CisKKwkvKgorCSAqIFRyeSB0byBpbnZhbGlkYXRlIFhJRC1hZ2VkIHJl cGxpY2F0aW9uIHNsb3RzLiBVc2UgdGhlIHNsb3QgeG1pbiB2YWx1ZXMKKwkgKiBvYnRhaW5lZCBm cm9tIHRoZSBzYW1lIGhvcml6b25zIGNvbXB1dGF0aW9uIHRoYXQgcHJvZHVjZWQgT2xkZXN0WG1p biwKKwkgKiBhdm9pZGluZyBhbiBleHRyYSBQcm9jQXJyYXlMb2NrIGFjcXVpc2l0aW9uLgorCSAq LworCWlmIChNYXliZUludmFsaWRhdGVYSURBZ2VkU2xvdHMoc2xvdF94bWluLCBzbG90X2NhdGFs b2dfeG1pbikpCisJeworCQkvKiBSZWNvbXB1dGUgY3V0b2ZmcyBhZnRlciBzbG90IGludmFsaWRh dGlvbi4gKi8KKwkJdmFjcmVsLT5hZ2dyZXNzaXZlID0gdmFjdXVtX2dldF9jdXRvZmZzKHJlbCwg cGFyYW1zLAorCQkJCQkJCQkJCQkJJnZhY3JlbC0+Y3V0b2ZmcywKKwkJCQkJCQkJCQkJCU5VTEws IE5VTEwpOworCX0KKwogCXZhY3JlbC0+cmVsX3BhZ2VzID0gb3JpZ19yZWxfcGFnZXMgPSBSZWxh dGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7CiAJdmFjcmVsLT52aXN0ZXN0ID0gR2xvYmFsVmlz VGVzdEZvcihyZWwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZjVjOWEzNDM3 NGQuLmNiOTQzYmRjMmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC03MDE5LDYg KzcwMTksNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rp b25JZCAqdnhpZHM7CiAJaW50CQkJbnZ4aWRzOwogCWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsK Kwl1aW50MzIJCXBvc3NpYmxlSW52YWxpZGF0aW9uQ2F1c2VzOwogCiAJLyoKIAkgKiBBbiBlbmQt b2YtcmVjb3ZlcnkgY2hlY2twb2ludCBpcyByZWFsbHkgYSBzaHV0ZG93biBjaGVja3BvaW50LCBq dXN0CkBAIC03NDQxLDggKzc0NDIsMTUgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJ ICovCiAJWExCeXRlVG9TZWcoUmVkb1JlY1B0ciwgX2xvZ1NlZ05vLCB3YWxfc2VnbWVudF9zaXpl KTsKIAlLZWVwTG9nU2VnKHJlY3B0ciwgJl9sb2dTZWdObyk7Ci0JaWYgKEludmFsaWRhdGVPYnNv bGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfV0FMX1JFTU9WRUQgfCBSU19JTlZBTF9JRExF X1RJTUVPVVQsCisKKwlwb3NzaWJsZUludmFsaWRhdGlvbkNhdXNlcyA9IFJTX0lOVkFMX1dBTF9S RU1PVkVEIHwgUlNfSU5WQUxfSURMRV9USU1FT1VUIHwKKwkJUlNfSU5WQUxfWElEX0FHRTsKKwor CWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKHBvc3NpYmxlSW52YWxpZGF0 aW9uQ2F1c2VzLAogCQkJCQkJCQkJCSAgIF9sb2dTZWdObywgSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJCQkgICBtYXhfc2xvdF94aWRfYWdl ID4gMCA/CisJCQkJCQkJCQkJICAgUmVhZE5leHRUcmFuc2FjdGlvbklkKCkgOgogCQkJCQkJCQkJ CSAgIEludmFsaWRUcmFuc2FjdGlvbklkKSkKIAl7CiAJCS8qCkBAIC03NzI0LDYgKzc3MzIsNyBA QCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCVhMb2dSZWNQdHIJZW5kcHRyOwogCVhM b2dTZWdObwlfbG9nU2VnTm87CiAJVGltZXN0YW1wVHogeHRpbWU7CisJdWludDMyCQlwb3NzaWJs ZUludmFsaWRhdGlvbkNhdXNlczsKIAogCS8qIENvbmN1cnJlbnQgY2hlY2twb2ludC9yZXN0YXJ0 cG9pbnQgY2Fubm90IGhhcHBlbiAqLwogCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIgfHwgTXlC YWNrZW5kVHlwZSA9PSBCX0NIRUNLUE9JTlRFUik7CkBAIC03ODk4LDggKzc5MDcsMTQgQEAgQ3Jl YXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAogCUlOSkVDVElPTl9QT0lOVCgicmVzdGFydHBv aW50LWJlZm9yZS1zbG90LWludmFsaWRhdGlvbiIsIE5VTEwpOwogCi0JaWYgKEludmFsaWRhdGVP YnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfV0FMX1JFTU9WRUQgfCBSU19JTlZBTF9J RExFX1RJTUVPVVQsCisJcG9zc2libGVJbnZhbGlkYXRpb25DYXVzZXMgPSBSU19JTlZBTF9XQUxf UkVNT1ZFRCB8IFJTX0lOVkFMX0lETEVfVElNRU9VVCB8CisJCVJTX0lOVkFMX1hJRF9BR0U7CisK KwlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhwb3NzaWJsZUludmFsaWRh dGlvbkNhdXNlcywKIAkJCQkJCQkJCQkgICBfbG9nU2VnTm8sIEludmFsaWRPaWQsCisJCQkJCQkJ CQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJICAgbWF4X3Nsb3RfeGlkX2Fn ZSA+IDAgPworCQkJCQkJCQkJCSAgIFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpIDoKIAkJCQkJCQkJ CQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCkpCiAJewogCQkvKgpAQCAtODc2NCw2ICs4Nzc5LDcg QEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCSAqLwogCQkJCUludmFs aWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfV0FMX0xFVkVMLAogCQkJCQkJ CQkJCQkJICAgMCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlv bklkLAogCQkJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCQkJfQogCQkJZWxz ZSBpZiAoc3luY19yZXBsaWNhdGlvbl9zbG90cykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NsdXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwppbmRleCAw OTA2NmRiMDk1Ni4uMTE4ZDVkMjhjMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NsdXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKQEAgLTkyNyw3 ICs5MjcsNyBAQCBjb3B5X3RhYmxlX2RhdGEoUmVsYXRpb24gTmV3SGVhcCwgUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gT2xkSW5kZXgsIGJvb2wgdmVyYgogCSAqIG5vdCB0byBiZSBhZ2dyZXNz aXZlIGFib3V0IHRoaXMuCiAJICovCiAJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihWYWN1dW1Q YXJhbXMpKTsKLQl2YWN1dW1fZ2V0X2N1dG9mZnMoT2xkSGVhcCwgcGFyYW1zLCAmY3V0b2Zmcyk7 CisJdmFjdXVtX2dldF9jdXRvZmZzKE9sZEhlYXAsIHBhcmFtcywgJmN1dG9mZnMsIE5VTEwsIE5V TEwpOwogCiAJLyoKIAkgKiBGcmVlemVYaWQgd2lsbCBiZWNvbWUgdGhlIHRhYmxlJ3MgbmV3IHJl bGZyb3plbnhpZCwgYW5kIHRoYXQgbXVzdG4ndCBnbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCBi Y2UzYTJkYWEyNC4uZTg1ZDUzYTBlY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMDk4LDcg KzEwOTgsOSBAQCBnZXRfYWxsX3ZhY3V1bV9yZWxzKE1lbW9yeUNvbnRleHQgdmFjX2NvbnRleHQs IGludCBvcHRpb25zKQogICovCiBib29sCiB2YWN1dW1fZ2V0X2N1dG9mZnMoUmVsYXRpb24gcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAotCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZz ICpjdXRvZmZzKQorCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAorCQkJCSAg IFRyYW5zYWN0aW9uSWQgKnNsb3RfeG1pbiwKKwkJCQkgICBUcmFuc2FjdGlvbklkICpzbG90X2Nh dGFsb2dfeG1pbikKIHsKIAlpbnQJCQlmcmVlemVfbWluX2FnZSwKIAkJCQltdWx0aXhhY3RfZnJl ZXplX21pbl9hZ2UsCkBAIC0xMTMzLDcgKzExMzUsOSBAQCB2YWN1dW1fZ2V0X2N1dG9mZnMoUmVs YXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCSAqIHRoYXQgb25seSBvbmUg dmFjdXVtIHByb2Nlc3MgY2FuIGJlIHdvcmtpbmcgb24gYSBwYXJ0aWN1bGFyIHRhYmxlIGF0CiAJ ICogYW55IHRpbWUsIGFuZCB0aGF0IGVhY2ggdmFjdXVtIGlzIGFsd2F5cyBhbiBpbmRlcGVuZGVu dCB0cmFuc2FjdGlvbi4KIAkgKi8KLQljdXRvZmZzLT5PbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9u UmVtb3ZhYmxlVHJhbnNhY3Rpb25JZChyZWwpOworCWN1dG9mZnMtPk9sZGVzdFhtaW4gPSBHZXRP bGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkRXh0KHJlbCwKKwkJCQkJCQkJCQkJCQkJCQlz bG90X3htaW4sCisJCQkJCQkJCQkJCQkJCQkJc2xvdF9jYXRhbG9nX3htaW4pOwogCiAJQXNzZXJ0 KFRyYW5zYWN0aW9uSWRJc05vcm1hbChjdXRvZmZzLT5PbGRlc3RYbWluKSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCBhOTA5MmZjMjM4Mi4uYzJmZjdlNDY0ZjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKQEAgLTExNyw2ICsxMTcsNyBAQCBzdGF0aWMgY29uc3QgU2xvdEludmFsaWRhdGlv bkNhdXNlTWFwIFNsb3RJbnZhbGlkYXRpb25DYXVzZXNbXSA9IHsKIAl7UlNfSU5WQUxfSE9SSVpP TiwgInJvd3NfcmVtb3ZlZCJ9LAogCXtSU19JTlZBTF9XQUxfTEVWRUwsICJ3YWxfbGV2ZWxfaW5z dWZmaWNpZW50In0sCiAJe1JTX0lOVkFMX0lETEVfVElNRU9VVCwgImlkbGVfdGltZW91dCJ9LAor CXtSU19JTlZBTF9YSURfQUdFLCAieGlkX2FnZWQifSwKIH07CiAKIC8qCkBAIC0xNTgsNiArMTU5 LDEyIEBAIGludAkJCW1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDEwOyAvKiB0aGUgbWF4aW11bSBu dW1iZXIgb2YgcmVwbGljYXRpb24KICAqLwogaW50CQkJaWRsZV9yZXBsaWNhdGlvbl9zbG90X3Rp bWVvdXRfc2VjcyA9IDA7CiAKKy8qCisgKiBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHRo YXQgaGF2ZSB4bWluIG9yIGNhdGFsb2dfeG1pbiBvbGRlcgorICogdGhhbiB0aGUgc3BlY2lmaWVk IGFnZTsgJzAnIGRpc2FibGVzIGl0LgorICovCitpbnQJCQltYXhfc2xvdF94aWRfYWdlID0gMDsK KwogLyoKICAqIFRoaXMgR1VDIGxpc3RzIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNl cnZlciBzbG90IG5hbWVzIHRoYXQKICAqIGxvZ2ljYWwgV0FMIHNlbmRlciBwcm9jZXNzZXMgd2ls bCB3YWl0IGZvci4KQEAgLTE3ODAsNyArMTc4NywxMCBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9u KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkgICBYTG9nUmVj UHRyIHJlc3RhcnRfbHNuLAogCQkJCQkgICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJCQkJICAg VHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJICAgbG9uZyBzbG90 X2lkbGVfc2Vjb25kcykKKwkJCQkJICAgbG9uZyBzbG90X2lkbGVfc2Vjb25kcywKKwkJCQkJICAg VHJhbnNhY3Rpb25JZCB4bWluLAorCQkJCQkgICBUcmFuc2FjdGlvbklkIGNhdGFsb2dfeG1pbiwK KwkJCQkJICAgVHJhbnNhY3Rpb25JZCByZWNlbnRYaWQpCiB7CiAJU3RyaW5nSW5mb0RhdGEgZXJy X2RldGFpbDsKIAlTdHJpbmdJbmZvRGF0YSBlcnJfaGludDsKQEAgLTE4MjUsNiArMTgzNSwzMCBA QCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNl IGNhdXNlLAogCQkJCQkJCQkgImlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0Iik7CiAJCQkJ YnJlYWs7CiAJCQl9CisKKwkJY2FzZSBSU19JTlZBTF9YSURfQUdFOgorCQkJeworCQkJCUFzc2Vy dChUcmFuc2FjdGlvbklkSXNWYWxpZCh4bWluKSB8fCBUcmFuc2FjdGlvbklkSXNWYWxpZChjYXRh bG9nX3htaW4pKTsKKworCQkJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4bWluKSkKKwkJCQl7 CisJCQkJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KKwkJCQkJ YXBwZW5kU3RyaW5nSW5mbygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QncyB4bWluICV1IGlzICVk IHRyYW5zYWN0aW9ucyBvbGQsIHdoaWNoIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgXCIlc1wiIHZh bHVlIG9mICVkLiIpLAorCQkJCQkJCQkJIHhtaW4sIChpbnQzMikgKHJlY2VudFhpZCAtIHhtaW4p LCAibWF4X3Nsb3RfeGlkX2FnZSIsIG1heF9zbG90X3hpZF9hZ2UpOworCQkJCX0KKwkJCQllbHNl CisJCQkJeworCQkJCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICov CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8oIlRoZSBzbG90J3MgY2F0YWxv Z194bWluICV1IGlzICVkIHRyYW5zYWN0aW9ucyBvbGQsIHdoaWNoIGV4Y2VlZHMgdGhlIGNvbmZp Z3VyZWQgXCIlc1wiIHZhbHVlIG9mICVkLiIpLAorCQkJCQkJCQkJIGNhdGFsb2dfeG1pbiwgKGlu dDMyKSAocmVjZW50WGlkIC0gY2F0YWxvZ194bWluKSwgIm1heF9zbG90X3hpZF9hZ2UiLCBtYXhf c2xvdF94aWRfYWdlKTsKKwkJCQl9CisKKwkJCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2 YXJpYWJsZSBuYW1lICovCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2hpbnQsIF8oIllvdSBt aWdodCBuZWVkIHRvIGluY3JlYXNlIFwiJXNcIi4iKSwKKwkJCQkJCQkJICJtYXhfc2xvdF94aWRf YWdlIik7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJcGdf dW5yZWFjaGFibGUoKTsKIAl9CkBAIC0xODYzLDYgKzE4OTcsMjUgQEAgQ2FuSW52YWxpZGF0ZUlk bGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcykKIAkJCSEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYg cy0+ZGF0YS5zeW5jZWQpKTsKIH0KIAorLyoKKyAqIENhbiB3ZSBpbnZhbGlkYXRlIGFuIFhJRC1h Z2VkIHJlcGxpY2F0aW9uIHNsb3Q/CisgKgorICogWElELWFnZWQgYmFzZWQgaW52YWxpZGF0aW9u IGlzIGFsbG93ZWQgdG8gdGhlIGdpdmVuIHNsb3Qgd2hlbjoKKyAqCisgKiAxLiBNYXggWElELWFn ZSBpcyBzZXQKKyAqIDIuIFNsb3QgaGFzIHZhbGlkIHhtaW4gb3IgY2F0YWxvZ194bWluCisgKiAz LiBUaGUgc2xvdCBpcyBub3QgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkgd2hpbGUgdGhl IHNlcnZlciBpcyBpbgorICoJICByZWNvdmVyeS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitD YW5JbnZhbGlkYXRlWGlkQWdlZFNsb3QoUmVwbGljYXRpb25TbG90ICpzKQoreworCXJldHVybiAo bWF4X3Nsb3RfeGlkX2FnZSAhPSAwICYmCisJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0 YS54bWluKSB8fAorCQkJIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWlu KSkgJiYKKwkJCSEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKTsKK30K KwogLyoKICAqIERldGVybWluZVNsb3RJbnZhbGlkYXRpb25DYXVzZSAtIERldGVybWluZSB0aGUg Y2F1c2UgZm9yIHdoaWNoIGEgc2xvdAogICogYmVjb21lcyBpbnZhbGlkIGFtb25nIHRoZSBnaXZl biBwb3NzaWJsZSBjYXVzZXMuCkBAIC0xODc0LDYgKzE5MjcsNyBAQCBzdGF0aWMgUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIERldGVybWluZVNsb3RJbnZhbGlkYXRpb25DYXVzZSh1 aW50MzIgcG9zc2libGVfY2F1c2VzLCBSZXBsaWNhdGlvblNsb3QgKnMsCiAJCQkJCQkJICAgWExv Z1JlY1B0ciBvbGRlc3RMU04sIE9pZCBkYm9pZCwKIAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgcmVjZW50WGlk LAogCQkJCQkJCSAgIFRpbWVzdGFtcFR6ICppbmFjdGl2ZV9zaW5jZSwgVGltZXN0YW1wVHogbm93 KQogewogCUFzc2VydChwb3NzaWJsZV9jYXVzZXMgIT0gUlNfSU5WQUxfTk9ORSk7CkBAIC0xOTQ1 LDYgKzE5OTksMjIgQEAgRGV0ZXJtaW5lU2xvdEludmFsaWRhdGlvbkNhdXNlKHVpbnQzMiBwb3Nz aWJsZV9jYXVzZXMsIFJlcGxpY2F0aW9uU2xvdCAqcywKIAkJfQogCX0KIAorCS8qIENoZWNrIGlm IHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGR1ZSB0byBtYXhfc2xvdF94aWRfYWdl IEdVQyAqLworCWlmICgocG9zc2libGVfY2F1c2VzICYgUlNfSU5WQUxfWElEX0FHRSkgJiYgQ2Fu SW52YWxpZGF0ZVhpZEFnZWRTbG90KHMpKQorCXsKKwkJVHJhbnNhY3Rpb25JZCB4aWRMaW1pdDsK KworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmVjZW50WGlkKSk7CisKKwkJeGlkTGlt aXQgPSBUcmFuc2FjdGlvbklkUmV0cmVhdGVkQnkocmVjZW50WGlkLCBtYXhfc2xvdF94aWRfYWdl KTsKKworCQlpZiAoKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1pbikgJiYKKwkJCSBU cmFuc2FjdGlvbklkUHJlY2VkZXMocy0+ZGF0YS54bWluLCB4aWRMaW1pdCkpIHx8CisJCQkoVHJh bnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pICYmCisJCQkgVHJhbnNhY3Rp b25JZFByZWNlZGVzKHMtPmRhdGEuY2F0YWxvZ194bWluLCB4aWRMaW1pdCkpKQorCQkJcmV0dXJu IFJTX0lOVkFMX1hJRF9BR0U7CisJfQorCiAJcmV0dXJuIFJTX0lOVkFMX05PTkU7CiB9CiAKQEAg LTE5NjcsNiArMjAzNyw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIg cG9zc2libGVfY2F1c2VzLAogCQkJCQkJCSAgIFJlcGxpY2F0aW9uU2xvdCAqcywKIAkJCQkJCQkg ICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJCQkJCQkgICBPaWQgZGJvaWQsIFRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCByZWNl bnRYaWQsCiAJCQkJCQkJICAgYm9vbCAqcmVsZWFzZWRfbG9ja19vdXQpCiB7CiAJaW50CQkJbGFz dF9zaWduYWxlZF9waWQgPSAwOwpAQCAtMjAxOSw2ICsyMDkwLDcgQEAgSW52YWxpZGF0ZVBvc3Np Ymx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkJCQkJCQkJCQkJCQkJ cywgb2xkZXN0TFNOLAogCQkJCQkJCQkJCQkJCQkJCWRib2lkLAogCQkJCQkJCQkJCQkJCQkJCXNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJCQkJCXJlY2VudFhpZCwKIAkJCQkJ CQkJCQkJCQkJCQkmaW5hY3RpdmVfc2luY2UsCiAJCQkJCQkJCQkJCQkJCQkJbm93KTsKIApAQCAt MjExMiw3ICsyMTg0LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBw b3NzaWJsZV9jYXVzZXMsCiAJCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25f Y2F1c2UsIHRydWUsIGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9s c24sCiAJCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJ CQkJCQkJICAgc2xvdF9pZGxlX3NlY3MpOworCQkJCQkJCQkJICAgc2xvdF9pZGxlX3NlY3MsIHMt PmRhdGEueG1pbiwKKwkJCQkJCQkJCSAgIHMtPmRhdGEuY2F0YWxvZ194bWluLCByZWNlbnRYaWQp OwogCiAJCQkJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogCQkJCQkodm9pZCkgU2ln bmFsUmVjb3ZlcnlDb25mbGljdChHZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyksCkBAIC0y MTY1LDcgKzIyMzgsOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBv c3NpYmxlX2NhdXNlcywKIAkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9uX2Nh dXNlLCBmYWxzZSwgYWN0aXZlX3BpZCwKIAkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNu LAogCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJ CQkgICBzbG90X2lkbGVfc2Vjcyk7CisJCQkJCQkJCSAgIHNsb3RfaWRsZV9zZWNzLCBzLT5kYXRh LnhtaW4sCisJCQkJCQkJCSAgIHMtPmRhdGEuY2F0YWxvZ194bWluLCByZWNlbnRYaWQpOwogCiAJ CQkvKiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJCWJyZWFrOwpAQCAtMjE5Miw2 ICsyMjY2LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJs ZV9jYXVzZXMsCiAgKiAgIGxvZ2ljYWwuCiAgKiAtIFJTX0lOVkFMX0lETEVfVElNRU9VVDogaGFz IGJlZW4gaWRsZSBsb25nZXIgdGhhbiB0aGUgY29uZmlndXJlZAogICogICAiaWRsZV9yZXBsaWNh dGlvbl9zbG90X3RpbWVvdXQiIGR1cmF0aW9uLgorICogLSBSU19JTlZBTF9YSURfQUdFOiBzbG90 IHhpZCBhZ2UgaXMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZAorICogICAibWF4X3Nsb3RfeGlk X2FnZSIgYWdlLgogICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gaW52YWxp ZGF0ZSB0aGUgc2xvdCBmb3IgbXVsdGlwbGUgcG9zc2libGUKICAqIGNhdXNlcyBpbiBhIHNpbmds ZSBwYXNzLCBtaW5pbWl6aW5nIHJlZHVuZGFudCBpdGVyYXRpb25zLiBUaGUgImNhdXNlIgpAQCAt MjIwNSw3ICsyMjgxLDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBw b3NzaWJsZV9jYXVzZXMsCiBib29sCiBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3Rz KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkJCQkJCSAgIFhMb2dTZWdObyBvbGRlc3RTZWdu bywgT2lkIGRib2lkLAotCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uKQorCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LAorCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHJlY2VudFhpZCkKIHsKIAlYTG9nUmVjUHRyCW9s ZGVzdExTTjsKIAlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNlOwpAQCAtMjI0NCw3ICsyMzIxLDcg QEAgcmVzdGFydDoKIAogCQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHBvc3Np YmxlX2NhdXNlcywgcywgb2xkZXN0TFNOLAogCQkJCQkJCQkJCSAgIGRib2lkLCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkgICAmcmVsZWFzZWRfbG9jaykpCisJCQkJCQkJCQkJ ICAgcmVjZW50WGlkLCAmcmVsZWFzZWRfbG9jaykpCiAJCXsKIAkJCUFzc2VydChyZWxlYXNlZF9s b2NrKTsKIApAQCAtMzI3NSwzICszMzUyLDQ0IEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9u KFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQogCiAJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVl cCgpOwogfQorCisvKgorICogSW52YWxpZGF0ZSByZXBsaWNhdGlvbiBzbG90cyB3aG9zZSBYSUQg YWdlIGV4Y2VlZHMgdGhlIG1heF9zbG90X3hpZF9hZ2UKKyAqIEdVQy4KKyAqCisgKiBUaGUgc2xv dF94bWluIGFuZCBzbG90X2NhdGFsb2dfeG1pbiBhcmUgdGhlIHJlcGxpY2F0aW9uIHNsb3QgeG1p biB2YWx1ZXMKKyAqIG9idGFpbmVkIGZyb20gdGhlIHNhbWUgQ29tcHV0ZVhpZEhvcml6b25zKCkg Y2FsbCB0aGF0IGNvbXB1dGVkIE9sZGVzdFhtaW4KKyAqIGR1cmluZyB2YWN1dW0uIFVzaW5nIHRo ZXNlIGF2b2lkcyBhIHNlcGFyYXRlIFByb2NBcnJheUxvY2sgYWNxdWlzaXRpb24uCisgKgorICog UmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4KKyAqLwor Ym9vbAorTWF5YmVJbnZhbGlkYXRlWElEQWdlZFNsb3RzKFRyYW5zYWN0aW9uSWQgc2xvdF94bWlu LAorCQkJCQkJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW4pCit7CisJVHJhbnNhY3Rp b25JZCByZWNlbnRYaWQ7CisJVHJhbnNhY3Rpb25JZCB4aWRMaW1pdDsKKwlib29sCQlpbnZhbGlk YXRlZCA9IGZhbHNlOworCisJaWYgKG1heF9zbG90X3hpZF9hZ2UgPT0gMCkKKwkJcmV0dXJuIGZh bHNlOworCisJcmVjZW50WGlkID0gUmVhZE5leHRUcmFuc2FjdGlvbklkKCk7CisJeGlkTGltaXQg PSBUcmFuc2FjdGlvbklkUmV0cmVhdGVkQnkocmVjZW50WGlkLCBtYXhfc2xvdF94aWRfYWdlKTsK KworCS8qCisJICogSW52YWxpZGF0ZSBwb3NzaWJseSBvYnNvbGV0ZSBzbG90cyBiYXNlZCBvbiBY SUQtYWdlLCBpZiBlaXRoZXIgc2xvdCdzCisJICogeG1pbiBvciBjYXRhbG9nX3htaW4gaXMgb2xk ZXIgdGhhbiB0aGUgY3V0b2ZmLgorCSAqLworCWlmICgoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xv dF94bWluKSAmJgorCQkgVHJhbnNhY3Rpb25JZFByZWNlZGVzKHNsb3RfeG1pbiwgeGlkTGltaXQp KSB8fAorCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4pICYmCisJCSBU cmFuc2FjdGlvbklkUHJlY2VkZXMoc2xvdF9jYXRhbG9nX3htaW4sIHhpZExpbWl0KSkpCisJCWlu dmFsaWRhdGVkID0gSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhSU19JTlZBTF9Y SURfQUdFLAorCQkJCQkJCQkJCQkJCQkgMCwKKwkJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsCisJ CQkJCQkJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHJlY2Vu dFhpZCk7CisKKwlyZXR1cm4gaW52YWxpZGF0ZWQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nh cnJheS5jCmluZGV4IGNjMjA3Y2I1NmUzLi4xODY4M2NlNWFlYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY2FycmF5LmMKQEAgLTE5NTAsMTEgKzE5NTAsMzAgQEAgR2xvYmFsVmlzSG9yaXpvbktp bmRGb3JSZWwoUmVsYXRpb24gcmVsKQogICovCiBUcmFuc2FjdGlvbklkCiBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKFJlbGF0aW9uIHJlbCkKK3sKKwlyZXR1cm4gR2V0T2xkZXN0 Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZEV4dChyZWwsIE5VTEwsIE5VTEwpOworfQorCisvKgor ICogU2FtZSBhcyBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCksIGJ1dCBhbHNv IHJldHVybnMgdGhlCisgKiByZXBsaWNhdGlvbiBzbG90IHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBm cm9tIHRoZSBzYW1lIENvbXB1dGVYaWRIb3Jpem9ucygpCisgKiBjYWxsLiAgVGhpcyBhdm9pZHMg YSBzZXBhcmF0ZSBQcm9jQXJyYXlMb2NrIGFjcXVpc2l0aW9uIHdoZW4gdGhlIGNhbGxlcgorICog bmVlZHMgYm90aCB2YWx1ZXMuCisgKi8KK1RyYW5zYWN0aW9uSWQKK0dldE9sZGVzdE5vblJlbW92 YWJsZVRyYW5zYWN0aW9uSWRFeHQoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkICpzbG90X3htaW4sCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgKnNsb3RfY2F0YWxvZ194 bWluKQogewogCUNvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCBob3Jpem9uczsKIAogCUNvbXB1dGVY aWRIb3Jpem9ucygmaG9yaXpvbnMpOwogCisJaWYgKHNsb3RfeG1pbikKKwkJKnNsb3RfeG1pbiA9 IGhvcml6b25zLnNsb3RfeG1pbjsKKwlpZiAoc2xvdF9jYXRhbG9nX3htaW4pCisJCSpzbG90X2Nh dGFsb2dfeG1pbiA9IGhvcml6b25zLnNsb3RfY2F0YWxvZ194bWluOworCiAJc3dpdGNoIChHbG9i YWxWaXNIb3Jpem9uS2luZEZvclJlbChyZWwpKQogCXsKIAkJY2FzZSBWSVNIT1JJWk9OX1NIQVJF RDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBkZTkwOTJmZGY1Yi4uZDYwZjM5ZWMw OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTUwNCw3ICs1MDQsOCBAQCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCSAqLwogCWlmIChJc0xvZ2ljYWxEZWNvZGluZ0VuYWJsZWQoKSAmJiBp c0NhdGFsb2dSZWwpCiAJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5W QUxfSE9SSVpPTiwgMCwgbG9jYXRvci5kYk9pZCwKLQkJCQkJCQkJCQkgICBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbik7CisJCQkJCQkJCQkJICAgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJ CQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCAwYTg2MjY5M2ZjZC4uY2EzY2M4NDE3ZGEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0Cisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0yMDg5LDYg KzIwODksMTQgQEAKICAgbWF4ID0+ICdNQVhfS0lMT0JZVEVTJywKIH0sCiAKK3sgbmFtZSA9PiAn bWF4X3Nsb3RfeGlkX2FnZScsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAn LCBncm91cCA9PiAnUkVQTElDQVRJT05fU0VORElORycsCisgIHNob3J0X2Rlc2MgPT4gJ0FnZSBv ZiB0aGUgdHJhbnNhY3Rpb24gSUQgYXQgd2hpY2ggYSByZXBsaWNhdGlvbiBzbG90IGdldHMgaW52 YWxpZGF0ZWQuJywKKyAgdmFyaWFibGUgPT4gJ21heF9zbG90X3hpZF9hZ2UnLAorICBib290X3Zh bCA9PiAnMCcsCisgIG1pbiA9PiAnMCcsCisgIG1heCA9PiAnMjAwMDAwMDAwMCcsCit9LAorCiAj IFdlIHVzZSB0aGUgaG9wZWZ1bGx5LXNhZmVseS1zbWFsbCB2YWx1ZSBvZiAxMDBrQiBhcyB0aGUg Y29tcGlsZWQtaW4KICMgZGVmYXVsdCBmb3IgbWF4X3N0YWNrX2RlcHRoLiAgSW5pdGlhbGl6ZUdV Q09wdGlvbnMgd2lsbCBpbmNyZWFzZSBpdAogIyBpZiBwb3NzaWJsZSwgZGVwZW5kaW5nIG9uIHRo ZSBhY3R1YWwgcGxhdGZvcm0tc3BlY2lmaWMgc3RhY2sgbGltaXQuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggY2YxNTU5NzM4NWIuLjA1NWVi YTU2YmRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC0zNTEsNiArMzUxLDggQEAKICN3YWxfa2VlcF9zaXplID0gMCAgICAgICAgICAgICAg IyBpbiBtZWdhYnl0ZXM7IDAgZGlzYWJsZXMKICNtYXhfc2xvdF93YWxfa2VlcF9zaXplID0gLTEg ICAgIyBpbiBtZWdhYnl0ZXM7IC0xIGRpc2FibGVzCiAjaWRsZV9yZXBsaWNhdGlvbl9zbG90X3Rp bWVvdXQgPSAwICAgICAgIyBpbiBzZWNvbmRzOyAwIGRpc2FibGVzCisjbWF4X3Nsb3RfeGlkX2Fn ZSA9IDAgICAgICAgICAgICMgbWF4aW11bSBYSUQgYWdlIGJlZm9yZSBhIHJlcGxpY2F0aW9uIHNs b3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXRzIGludmFsaWRhdGVkOyAw IGRpc2FibGVzCiAjd2FsX3NlbmRlcl90aW1lb3V0ID0gNjBzICAgICAgICMgaW4gbWlsbGlzZWNv bmRzOyAwIGRpc2FibGVzCiAjdHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9mZiAgICMgY29sbGVj dCB0aW1lc3RhbXAgb2YgdHJhbnNhY3Rpb24gY29tbWl0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApp bmRleCAxZjQ1YmNhMDE1Yy4uYzVhZTllZmU5NzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC0z ODQsNyArMzg0LDkgQEAgZXh0ZXJuIHZvaWQgdmFjX3VwZGF0ZV9yZWxzdGF0cyhSZWxhdGlvbiBy ZWxhdGlvbiwKIAkJCQkJCQkJYm9vbCAqbWlubXVsdGlfdXBkYXRlZCwKIAkJCQkJCQkJYm9vbCBp bl9vdXRlcl94YWN0KTsKIGV4dGVybiBib29sIHZhY3V1bV9nZXRfY3V0b2ZmcyhSZWxhdGlvbiBy ZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCi0JCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1 dG9mZnMgKmN1dG9mZnMpOworCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZz LAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnNsb3RfeG1pbiwKKwkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICpzbG90X2NhdGFsb2dfeG1pbik7CiBleHRlcm4gYm9vbCB2YWN1dW1feGlkX2ZhaWxz YWZlX2NoZWNrKGNvbnN0IHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzKTsKIGV4dGVybiB2 b2lkIHZhY191cGRhdGVfZGF0ZnJvemVueGlkKHZvaWQpOwogZXh0ZXJuIHZvaWQgdmFjdXVtX2Rl bGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggNGI0 NzA5ZjZlMmMuLjBiYWE3MTEyNTU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC02NiwxMCAr NjYsMTIgQEAgdHlwZWRlZiBlbnVtIFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiAJ UlNfSU5WQUxfV0FMX0xFVkVMID0gKDEgPDwgMiksCiAJLyogaWRsZSBzbG90IHRpbWVvdXQgaGFz IG9jY3VycmVkICovCiAJUlNfSU5WQUxfSURMRV9USU1FT1VUID0gKDEgPDwgMyksCisJLyogc2xv dCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIGhhcyByZWFjaGVkIG1heCB4aWQgYWdlICovCisJUlNf SU5WQUxfWElEX0FHRSA9ICgxIDw8IDQpLAogfSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0aW9uIGNhdXNlcyAqLwotI2Rl ZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIDQKKyNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyA1 CiAKIC8qCiAgKiBXaGVuIHRoZSBzbG90IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgaXMgcnVubmlu Zywgb3Igd2hlbgpAQCAtMzI2LDYgKzMyOCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNh dGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhf cmVwbGljYXRpb25fc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGlkbGVfcmVwbGljYXRpb25f c2xvdF90aW1lb3V0X3NlY3M7CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zbG90X3hpZF9h Z2U7CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUg UmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKQEAgLTM2Nyw3ICszNzAsMTAgQEAgZXh0 ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90c0Ryb3BEQlNsb3RzKE9pZCBkYm9pZCk7CiBleHRlcm4g Ym9vbCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKHVpbnQzMiBwb3NzaWJsZV9j YXVzZXMsCiAJCQkJCQkJCQkJCSAgIFhMb2dTZWdObyBvbGRlc3RTZWdubywKIAkJCQkJCQkJCQkJ ICAgT2lkIGRib2lkLAotCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uKTsKKwkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKKwkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCByZWNlbnRYaWQpOworZXh0ZXJu IGJvb2wgTWF5YmVJbnZhbGlkYXRlWElEQWdlZFNsb3RzKFRyYW5zYWN0aW9uSWQgc2xvdF94bWlu LAorCQkJCQkJCQkJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW4pOwogZXh0ZXJuIFJl cGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QoY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlSZXBsaWNhdGlvblNsb3RJbmRleChSZXBs aWNhdGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90TmFtZShpbnQg aW5kZXgsIE5hbWUgbmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nh cnJheS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBhYmRmMDIxZTY2 ZS4uYzE5OGZkMjI1MTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5 LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtNTMsNiArNTMsOSBA QCBleHRlcm4gUnVubmluZ1RyYW5zYWN0aW9ucyBHZXRSdW5uaW5nVHJhbnNhY3Rpb25EYXRhKHZv aWQpOwogCiBleHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkSXNJblByb2dyZXNzKFRyYW5zYWN0aW9u SWQgeGlkKTsKIGV4dGVybiBUcmFuc2FjdGlvbklkIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQoUmVsYXRpb24gcmVsKTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWRFeHQoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJCQkJCQkg ICBUcmFuc2FjdGlvbklkICpzbG90X3htaW4sCisJCQkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9u SWQgKnNsb3RfY2F0YWxvZ194bWluKTsKIGV4dGVybiBUcmFuc2FjdGlvbklkIEdldE9sZGVzdFRy YW5zYWN0aW9uSWRDb25zaWRlcmVkUnVubmluZyh2b2lkKTsKIGV4dGVybiBUcmFuc2FjdGlvbklk IEdldE9sZGVzdEFjdGl2ZVRyYW5zYWN0aW9uSWQoYm9vbCBpbkNvbW1pdE9ubHksCiAJCQkJCQkJ CQkJCQkgIGJvb2wgYWxsRGJzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5 X3JlcGxzbG90X2xpbWl0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGlt aXQucGwKaW5kZXggN2IyNTNlNjRkOWMuLmQwZjU4ZDgzMTdmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbApAQCAtNTQwLDQgKzU0MCwxNzkgQEAgaXMoICRwdWJs aXNoZXI0LT5zYWZlX3BzcWwoCiAkcHVibGlzaGVyNC0+c3RvcDsKICRzdWJzY3JpYmVyNC0+c3Rv cDsKIAorIyBBZHZhbmNlIFhJRHMsIHJ1biBWQUNVVU0sIGFuZCB3YWl0IGZvciBhIHNsb3QgdG8g YmUgaW52YWxpZGF0ZWQgZHVlIHRvIFhJRCBhZ2UuCitzdWIgaW52YWxpZGF0ZV9zbG90X2J5X3hp ZF9hZ2UKK3sKKwlteSAoJG5vZGUsICR0YWJsZV9uYW1lLCAkc2xvdF9uYW1lLCAkc2xvdF90eXBl LCAkbnhpZHMsICR0cmlnZ2VyKSA9IEBfOworCisJIyBEbyBzb21lIHdvcmsgdG8gYWR2YW5jZSB4 aWRzCisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCWRvIFwkXCQKKwkJ YmVnaW4KKwkJZm9yIGkgaW4gMS4uJG54aWRzIGxvb3AKKwkJCS0tIHVzZSBhbiBleGNlcHRpb24g YmxvY2sgc28gdGhhdCBlYWNoIGl0ZXJhdGlvbiBlYXRzIGFuIFhJRAorCQkJYmVnaW4KKwkJCWlu c2VydCBpbnRvICR0YWJsZV9uYW1lIHZhbHVlcyAoaSk7CisJCQlleGNlcHRpb24KKwkJCXdoZW4g ZGl2aXNpb25fYnlfemVybyB0aGVuIG51bGw7CisJCQllbmQ7CisJCWVuZCBsb29wOworCQllbmRc JFwkOworCV0pOworCisJaWYgKCR0cmlnZ2VyIGVxICdjaGVja3BvaW50JykKKwl7CisJCSRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKwl9CisJZWxzZQorCXsKKwkJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVkFDVVVNIik7CisJfQorCisJIyBXYWl0IGZv ciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZSBpbnZhbGlkYXRlZCBkdWUgdG8gWElEIGFnZS4K Kwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBD T1VOVChzbG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBz bG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5ECisJCQlhY3RpdmUgPSBmYWxzZSBBTkQKKwkJCWlu dmFsaWRhdGlvbl9yZWFzb24gPSAneGlkX2FnZWQnOworCV0pCisJICBvciBkaWUKKwkgICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc2xvdCAkc2xvdF9uYW1lIHRvIGJlIGludmFsaWRhdGVk IjsKKworCW9rKDEsICIkc2xvdF90eXBlIHJlcGxpY2F0aW9uIHNsb3QgaW52YWxpZGF0ZWQgZHVl IHRvIFhJRCBhZ2UgKHZpYSAkdHJpZ2dlcikiKTsKK30KKworIyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3Qg ZHVlIHRvIG1heF9zbG90X3hpZF9hZ2UKKyMgR1VDLgorCisjIEluaXRpYWxpemUgcHJpbWFyeSBu b2RlIGZvciBYSUQgYWdlIHRlc3RzCitteSAkcHJpbWFyeTUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3ByaW1hcnk1Jyk7CiskcHJpbWFyeTUtPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOworCisjIENvbmZpZ3VyZSBwcmltYXJ5IHdpdGggWElEIGFnZSBzZXR0 aW5ncy4gU2V0IGF1dG92YWN1dW1fbmFwdGltZSBoaWdoIHNvCisjIHRoYXQgdGhlIGNoZWNrcG9p bnRlciAobm90IHZhY3V1bSkgdHJpZ2dlcnMgdGhlIGludmFsaWRhdGlvbi4KK215ICRtYXhfc2xv dF94aWRfYWdlID0gNTAwOworJHByaW1hcnk1LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXF7CittYXhfc2xvdF94aWRfYWdlID0gJG1heF9zbG90X3hpZF9hZ2UKK2F1dG92YWN1 dW1fbmFwdGltZSA9ICcxaCcKK30pOworCiskcHJpbWFyeTUtPnN0YXJ0OworCisjIFRha2UgYSBi YWNrdXAgZm9yIGNyZWF0aW5nIHN0YW5kYnkKKyRiYWNrdXBfbmFtZSA9ICdiYWNrdXA1JzsKKyRw cmltYXJ5NS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RhbmRieSBsaW5r aW5nIHRvIHRoZSBwcmltYXJ5IHVzaW5nIHRoZSByZXBsaWNhdGlvbiBzbG90CitteSAkc3RhbmRi eTUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnk1Jyk7Ciskc3RhbmRi eTUtPmluaXRfZnJvbV9iYWNrdXAoJHByaW1hcnk1LCAkYmFja3VwX25hbWUsIGhhc19zdHJlYW1p bmcgPT4gMSk7CisKKyMgRW5hYmxlIEhTIGZlZWRiYWNrLiBUaGUgc2xvdCBzaG91bGQgZ2FpbiBh biB4bWluLiBXZSBzZXQgdGhlIHN0YXR1cyBpbnRlcnZhbAorIyBzbyB3ZSdsbCBzZWUgdGhlIHJl c3VsdHMgcHJvbXB0bHkuCiskc3RhbmRieTUtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNv bmYnLCBxeworcHJpbWFyeV9zbG90X25hbWUgPSAnc2I1X3Nsb3QnCitob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorfSk7CisKKyRwcmlt YXJ5NS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBwZ19jcmVhdGVf cGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdChzbG90X25hbWUgOj0gJ3NiNV9zbG90JywgaW1tZWRp YXRlbHlfcmVzZXJ2ZSA6PSB0cnVlKTsKK10pOworCiskc3RhbmRieTUtPnN0YXJ0OworCisjIENy ZWF0ZSBzb21lIGNvbnRlbnQgb24gcHJpbWFyeSB0byBtb3ZlIHhtaW4KKyRwcmltYXJ5NS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfaW50NSBBUyBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKKworIyBXYWl0IHVudGlsIHN0YW5kYnkgaGFzIHJl cGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeTUtPndhaXRfZm9yX2NhdGNodXAoJHN0YW5kYnk1 KTsKKworIyBXYWl0IGZvciB0aGUgc2xvdCB0byBnZXQgeG1pbiBmcm9tIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrCiskcHJpbWFyeTUtPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJ U0VMRUNUIHhtaW4gSVMgTk9UIE5VTEwKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9u X3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjVfc2xvdCc7CitdKSBvciBkaWUgIlRpbWVk IG91dCB3YWl0aW5nIGZvciBzbG90IHNiNV9zbG90IHhtaW4gZnJvbSBIUyBmZWVkYmFjayI7CisK KyMgU3RvcCBzdGFuZGJ5IHRvIG1ha2UgdGhlIHJlcGxpY2F0aW9uIHNsb3Qgb24gcHJpbWFyeSBp bmFjdGl2ZS4KKyMgVGhlIHNsb3QncyB4bWluIHBlcnNpc3RzIGFuZCBob2xkcyBiYWNrIGRhdGZy b3plbnhpZC4KKyRzdGFuZGJ5NS0+c3RvcDsKKworIyBBZHZhbmNlIFhJRHMgYW5kIHdhaXQgZm9y IHRoZSBzbG90IHRvIGJlIGludmFsaWRhdGVkIGR1ZSB0byBYSUQgYWdlLgorIyBVc2UgMnggdGhl IG1heF9zbG90X3hpZF9hZ2UgdG8gZW5zdXJlIHRoZSBzbG90J3MgeG1pbiBhZ2UgY29tZm9ydGFi bHkKKyMgZXhjZWVkcyB0aGUgY29uZmlndXJlZCBsaW1pdC4KK2ludmFsaWRhdGVfc2xvdF9ieV94 aWRfYWdlKCRwcmltYXJ5NSwgJ3RhYl9pbnQ1JywgJ3NiNV9zbG90JywgJ3BoeXNpY2FsJywKKwky ICogJG1heF9zbG90X3hpZF9hZ2UsICdjaGVja3BvaW50Jyk7CisKKyMgVGVzdGNhc2UgZW5kOiBJ bnZhbGlkYXRlIHN0cmVhbWluZyBzdGFuZGJ5J3Mgc2xvdCBkdWUgdG8gbWF4X3Nsb3RfeGlkX2Fn ZQorIyBHVUMgKHZpYSBjaGVja3BvaW50KS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2Fs IHN1YnNjcmliZXIncyBzbG90IGR1ZSB0byBtYXhfc2xvdF94aWRfYWdlCisjIEdVQyAodmlhIHZh Y3V1bSkuCisKKyMgUmVzZXQgYXV0b3ZhY3V1bV9uYXB0aW1lIHNvIHRoYXQgVkFDVVVNLXRyaWdn ZXJlZCBpbnZhbGlkYXRpb24gd29ya3Mgbm9ybWFsbHkKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFNZU1RFTSBSRVNFVCBhdXRvdmFjdXVtX25hcHRpbWU7IFNFTEVD VCBwZ19yZWxvYWRfY29uZigpOyIpOworCisjIENyZWF0ZSBhIHN1YnNjcmliZXIgbm9kZQorbXkg JHN1YnNjcmliZXI1ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVy NScpOworJHN1YnNjcmliZXI1LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK KyRzdWJzY3JpYmVyNS0+c3RhcnQ7CisKKyMgQ3JlYXRlIHRhYmxlcyBvbiBib3RoIHByaW1hcnkg YW5kIHN1YnNjcmliZXIKKyRwcmltYXJ5NS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg VEFCTEUgdGVzdF90Ymw1IChpZCBpbnQpIik7Ciskc3Vic2NyaWJlcjUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsNSAoaWQgaW50KSIpOworCisjIEluc2VydCBz b21lIGluaXRpYWwgZGF0YQorJHByaW1hcnk1LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gdGVzdF90Ymw1IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsIDUpKTsiKTsKKwor IyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHJpbWFyeTVfY29ubnN0ciA9ICRwcmlt YXJ5NS0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRwcmltYXJ5NS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBwdWI1IEZPUiBUQUJMRSB0ZXN0X3Ri bDUiKTsKKworJHN1YnNjcmliZXI1LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNV QlNDUklQVElPTiBzdWI1IENPTk5FQ1RJT04gJyRwcmltYXJ5NV9jb25uc3RyJyBQVUJMSUNBVElP TiBwdWI1IFdJVEggKHNsb3RfbmFtZSA9ICdsc3ViNV9zbG90JykiCispOworCisjIFdhaXQgZm9y IGluaXRpYWwgc3luYyB0byBjb21wbGV0ZQorJHN1YnNjcmliZXI1LT53YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkcHJpbWFyeTUsICdzdWI1Jyk7CisKKyRyZXN1bHQgPSAkc3Vic2NyaWJlcjUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90Ymw1Iik7 CitpcygkcmVzdWx0LCBxcSg1KSwgImNoZWNrIGluaXRpYWwgY29weSB3YXMgZG9uZSBmb3IgbG9n aWNhbCByZXBsaWNhdGlvbiAoWElEIGFnZSB0ZXN0KSIpOworCisjIFdhaXQgZm9yIHRoZSBsb2dp Y2FsIHNsb3QgdG8gZ2V0IGNhdGFsb2dfeG1pbiAobG9naWNhbCBzbG90cyB1c2UgY2F0YWxvZ194 bWluLCBub3QgeG1pbikKKyRwcmltYXJ5NS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMn LCBxcVsKKwlTRUxFQ1QgeG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwK KwlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUg PSAnbHN1YjVfc2xvdCc7CitdKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxz dWI1X3Nsb3QgY2F0YWxvZ194bWluIHRvIGFkdmFuY2UiOworCisjIFN0b3Agc3Vic2NyaWJlciB0 byBtYWtlIHRoZSByZXBsaWNhdGlvbiBzbG90IG9uIHByaW1hcnkgaW5hY3RpdmUKKyRzdWJzY3Jp YmVyNS0+c3RvcDsKKworIyBBZHZhbmNlIFhJRHMgYW5kIHdhaXQgZm9yIHRoZSBzbG90IHRvIGJl IGludmFsaWRhdGVkIGR1ZSB0byBYSUQgYWdlLgorIyBVc2UgMnggdGhlIG1heF9zbG90X3hpZF9h Z2UgdG8gZW5zdXJlIHRoZSBzbG90J3MgY2F0YWxvZ194bWluIGFnZQorIyBjb21mb3J0YWJseSBl eGNlZWRzIHRoZSBjb25maWd1cmVkIGxpbWl0LgoraW52YWxpZGF0ZV9zbG90X2J5X3hpZF9hZ2Uo JHByaW1hcnk1LCAndGVzdF90Ymw1JywgJ2xzdWI1X3Nsb3QnLCAnbG9naWNhbCcsCisJMiAqICRt YXhfc2xvdF94aWRfYWdlLCAndmFjdXVtJyk7CisKKyRwcmltYXJ5NS0+c3RvcDsKKworIyBUZXN0 Y2FzZSBlbmQ6IEludmFsaWRhdGUgbG9naWNhbCBzdWJzY3JpYmVyJ3Mgc2xvdCBkdWUgdG8gbWF4 X3Nsb3RfeGlkX2FnZQorIyBHVUMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKIGRvbmVfdGVz dGluZygpOwotLSAKMi40Ny4zCgo= --00000000000096b100064e33dc7a--