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.94.2) (envelope-from ) id 1uMRaE-00Bpdo-9u for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Jun 2025 13:21:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uMRaC-000HSY-9P for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Jun 2025 13:21:36 +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.94.2) (envelope-from ) id 1uMRaB-000HS8-SE for pgsql-hackers@lists.postgresql.org; Tue, 03 Jun 2025 13:21:36 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uMRaA-0000V2-1Y for pgsql-hackers@postgresql.org; Tue, 03 Jun 2025 13:21:36 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-addcea380eeso382602366b.0 for ; Tue, 03 Jun 2025 06:21:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748956891; x=1749561691; 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=j3HnqAj85ouoycLeNxr2Kkx6+E4NQvoidCFAY7Uc3XU=; b=OaomQSKB3hS277Yv93WcvBTroY2QfvqiAO0LPfkMo977ekFsZi/ksXlABma258iVi/ LArHdKUebgUQXH0jzQvjjKFnqLUv+fB879Se8oiAboZyax6KgQKTM8bYoD5o8+MA17Ge ql5EGbxzBJCR0l3m8TvuyFw/RkRjjO2RbQwvLoz/8SkvZjeckQb7bHbT0MzU9M4UcbW3 URd8j9Sz5sfsOEn+rYD7HYSx+0b8R+han8IGhxgQy+g4ELKcBJGpIRZwXsVFSY2F3Hpt TbkcY7EuI/17Z4snegMRGbk5sTgQj3u6Gm3yP3pfwXJZtZhjb0vnrYZqTjDUM2drVw9G SJ2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748956891; x=1749561691; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=j3HnqAj85ouoycLeNxr2Kkx6+E4NQvoidCFAY7Uc3XU=; b=n6PpP8AK5wIFk94+pzoVry+6ScL/1m1P21TnRCgC5fYd5HlxXnSe6swZrm2xcO2FMU 28TM74E/LB9Ip3sATjitWLgpWAWdx+vAbycQKgZ/iZmeK8EB8Uxb5Ja8jGW/QNcBshmw 1t3HLaO8zCf0MP0QYV/xwKUk8VuumxS/lRvEKirb8uFRkRRvJPF2ZPbTLs6V3ikN7MoN gAoUqVx2Nas7WMOK0spSzIYlLSoGCiUfiZWQnzriin9KLcl3a3g/4l0UL+WiMuG/KLsW iQptZq61kq6Lqzfc4XDb70cDN4RzOh1nXNbDSnHolibxgJ8YDr5ISB8t0yQeoGXCB/vz T6xQ== X-Forwarded-Encrypted: i=1; AJvYcCVueWUiAxkM+uxeIF5HUOM9IK8mcnB4zKZ4CRRRCeAVNG/npdECXFBCI4mT2kQDgGi/zs+b7Y9kpaw38sba@postgresql.org X-Gm-Message-State: AOJu0YwR2RRVl9wCib0BR8JoDeHN7xuBnA4quDbVWvTlvgO9lDe5kQlx iuP5et62DxcNIkdlifHpRnCBuvVtcVJNlbLwE7hz6IX+e4gr6yd4gCy61sMFGg/bm+UeKo5ifcc Zqbf3ZC38TZdLen+PDq63sEhq0n1KGIg= X-Gm-Gg: ASbGncuPxhPxtEERuWXHLLqMDxWcXIOvJb62L6LVheH/eczh3UCFdmpZRiwiDbuVIUM KmmRSwXyWjXuUx/JiGO3XkEk8kPQrT5CK6w3edLpM91Qwv8WvXBy6j3mYQ31GmTpJHcreRsEMx2 9mPkzezZsWuGdVeg2hNF3rLhvgr06THhMioCH9U0FA9K8= X-Google-Smtp-Source: AGHT+IGqW6Xyc7Uz2/v03jzswbl73YWWySlfIYOydmEQ/M897yWY7Hn01HijdL6ypGq9Zbj5uC+HpFUUfVVz46IGTx8= X-Received: by 2002:a17:907:97c5:b0:adb:2bb2:ee3 with SMTP id a640c23a62f3a-adb4954948bmr1185638766b.46.1748956890983; Tue, 03 Jun 2025 06:21:30 -0700 (PDT) MIME-Version: 1.0 References: <1d12d2-67235980-35-19a406a0@63439497> <683f3c82-d38e-436d-88fd-27722af62005@vondra.me> <8679fea7-94ce-4a52-8e48-1a8cd0857fcb@vondra.me> <135e8-675c4600-21-304d7f40@228322535> <1538a2-67c5c700-7-77ec5a80@179382871> <27589a-680a4b80-6d-6e07880@117064404> <3ea6a1-68150580-1-7b53be0@80017081> <309f08-682ca380-25-139bf240@62751029> <2c1d-68344100-b7-3411b8c0@256938178> In-Reply-To: From: Alexander Korotkov Date: Tue, 3 Jun 2025 16:21:19 +0300 X-Gm-Features: AX0GCFuY0dOL0vsjkTulRABEv3SBcgA2x05LAbwEcPqHE0VZNcLRVLgRBJcHIIw Message-ID: Subject: Re: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly To: Amit Kapila Cc: Vitaly Davydov , pgsql-hackers , Masahiko Sawada , tomas@vondra.me Content-Type: multipart/mixed; boundary="0000000000003754560636aac274" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003754560636aac274 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 2, 2025 at 2:53=E2=80=AFPM Amit Kapila wrote: > > On Thu, May 29, 2025 at 5:29=E2=80=AFPM Alexander Korotkov wrote: > > > > On Tue, May 27, 2025 at 2:26=E2=80=AFPM Amit Kapila wrote: > > > Yeah, we should be able to change ABI during beta, but I can't commen= t > > > on the idea of effective_restart_lsn without seeing the patch or a > > > detailed explanation of this idea. > > > > Could you, please, check the patch [1]. It implements this idea > > except it names new field restart_lsn_flushed instead of > > effective_restart_lsn. > > > > This appears to be a better direction than the other patch, at least > for HEAD. I noticed a few points while looking at the patch. > > 1. restart_lsn_flushed: Can we name it as last_saved_restart_lsn based > on existing variable last_saved_confirmed_flush? Good point, renamed. > 2. There are no comments as to why this is considered only for > persistent slots when CheckPointReplicationSlots doesn't have any such > check. Relevant comments added. > 3. Please see if it makes sense to copy it in the copy_replication_slot. Thank you for pointing, but I don't think this is necessary. copy_replication_slot() calls ReplicationSlotSave(), which updates last_saved_restart_lsn. Also, I've changed ReplicationSlotsComputeRequiredLSN() call to CheckPointReplicationSlots() to update required LSN after SaveSlotToPath() updated last_saved_restart_lsn. This helps to pass checks in 001_stream_rep.pl without additional hacks. > Apart from these, I am not sure if there are still any pending > comments in the thread to be handled for this patch, so please see to > avoid missing anything. > > > > Now, you see my point related to restart_lsn computation for logical > > > slots, it is better to also do some analysis of the problem related t= o > > > xmin I have highlighted in one of my previous emails [1]. I see your > > > response to it, but I feel someone needs to give it a try by writing = a > > > test and see the behavior. I am saying because logical slots took > > > precaution of flushing to disk before updating shared values of xmin > > > for a reason, whereas similar precautions are not taken for physical > > > slots, so there could be a problem with that computation as well. > > > > I see LogicalConfirmReceivedLocation() performs correctly while > > updating effective_catalog_xmin only after syncing the slot to the > > disk. I don't see how effective_xmin gets updates with the logical > > replication progress though. Could you get me some clue on this, > > please? > > > > As per my understanding, for logical slots, effective_xmin is only set > during the initial copy phase (or say if one has to export a > snapshot), after that, its value won't change. Please read the > comments in CreateInitDecodingContext() where we set its value. If you > still have questions about it, we can discuss further. OK, thank you for the clarification. I've read the comments in CreateInitDecodingContext() as you suggested. All of above makes me think *_xmin fields are handled properly. ------ Regards, Alexander Korotkov Supabase --0000000000003754560636aac274 Content-Type: application/octet-stream; name="v2-0001-Keep-WAL-segments-by-slot-s-flushed-restart-LSN.patch" Content-Disposition: attachment; filename="v2-0001-Keep-WAL-segments-by-slot-s-flushed-restart-LSN.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbgjrnbj0 RnJvbSAwZmUyNWVjZjg5Mzk2YzI2ODQyZDU4ODlhMWM0NjI1MDAyZDA4YTNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBNb24sIDMgTWFyIDIwMjUgMTc6MDI6MTUgKzAzMDAKU3ViamVjdDogW1BBVENI IHYyIDEvMl0gS2VlcCBXQUwgc2VnbWVudHMgYnkgc2xvdCdzIGZsdXNoZWQgcmVzdGFydCBMU04K ClRoZSBzbG90IGRhdGEgaXMgZmx1c2hlZCB0byB0aGUgZGlzayBhdCB0aGUgYmVnaW5uaW5nIG9m IGNoZWNrcG9pbnQuIElmCmFuIGV4aXN0aW5nIHNsb3QgaXMgYWR2YW5jZWQgaW4gdGhlIG1pZGRs ZSBvZiBjaGVja3BvaW50IGV4ZWN1dGlvbiwgaXRzCmFkdmFuY2VkIHJlc3RhcnQgTFNOIGlzIHRh a2VuIHRvIGNhbGN1bGF0ZSB0aGUgb2xkZXN0IExTTiBmb3IgV0FMCnNlZ21lbnRzIHJlbW92YWwg YXQgdGhlIGVuZCBvZiBjaGVja3BvaW50LiBJZiB0aGUgbm9kZSBpcyByZXN0YXJ0ZWQganVzdAph ZnRlciB0aGUgY2hlY2twb2ludCwgdGhlIHNsb3RzIGRhdGEgd2lsbCBiZSByZWFkIGZyb20gdGhl IGRpc2sgYXQKcmVjb3Zlcnkgd2l0aCB0aGUgb2xkZXN0IHJlc3RhcnQgTFNOIHdoaWNoIGNhbiBy ZWZlciB0byByZW1vdmVkIFdBTApzZWdtZW50cy4KClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3 IGluLW1lbW9yeSBzdGF0ZSBmb3Igc2xvdHMgLQpmbHVzaGVkX3Jlc3RhcnRfbHNuIHdoaWNoIGlz IHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBvbGRlc3QgTFNOIGZvciBXQUwKc2VnbWVudHMgcmVtb3Zh bC4gVGhpcyBzdGF0ZSBpcyB1cGRhdGVkIGV2ZXJ5IHRpbWUgd2l0aCB0aGUgY3VycmVudApyZXN0 YXJ0X2xzbiBhdCB0aGUgbW9tZW50LCB3aGVuIHRoZSBzbG90IGlzIHNhdmluZyB0byBkaXNrLgot LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyB8IDU3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCB8ICA3ICsr KysrCiAyIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKaW5kZXggNjAwYjg3ZmE5Y2IuLmM2NGYwMjA3NDJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5j CkBAIC00MjQsNiArNDI0LDcgQEAgUmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0IGNoYXIgKm5h bWUsIGJvb2wgZGJfc3BlY2lmaWMsCiAJc2xvdC0+Y2FuZGlkYXRlX3Jlc3RhcnRfdmFsaWQgPSBJ bnZhbGlkWExvZ1JlY1B0cjsKIAlzbG90LT5jYW5kaWRhdGVfcmVzdGFydF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKIAlzbG90LT5sYXN0X3NhdmVkX2NvbmZpcm1lZF9mbHVzaCA9IEludmFsaWRY TG9nUmVjUHRyOworCXNsb3QtPmxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKIAlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IDA7CiAKIAkvKgpAQCAtMTE2NSwyMCArMTE2 Niw0MSBAQCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKHZvaWQpCiAJewogCQlS ZXBsaWNhdGlvblNsb3QgKnMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90 c1tpXTsKIAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsKKwkJWExvZ1JlY1B0cglsYXN0X3NhdmVk X3Jlc3RhcnRfbHNuOwogCQlib29sCQlpbnZhbGlkYXRlZDsKKwkJUmVwbGljYXRpb25TbG90UGVy c2lzdGVuY3kgcGVyc2lzdGVuY3k7CiAKIAkJaWYgKCFzLT5pbl91c2UpCiAJCQljb250aW51ZTsK IAogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKKwkJcGVyc2lzdGVuY3kgPSBzLT5kYXRh LnBlcnNpc3RlbmN5OwogCQlyZXN0YXJ0X2xzbiA9IHMtPmRhdGEucmVzdGFydF9sc247CiAJCWlu dmFsaWRhdGVkID0gcy0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FOworCQlsYXN0 X3NhdmVkX3Jlc3RhcnRfbHNuID0gcy0+bGFzdF9zYXZlZF9yZXN0YXJ0X2xzbjsKIAkJU3Bpbkxv Y2tSZWxlYXNlKCZzLT5tdXRleCk7CiAKIAkJLyogaW52YWxpZGF0ZWQgc2xvdHMgbmVlZCBub3Qg YXBwbHkgKi8KIAkJaWYgKGludmFsaWRhdGVkKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICog Rm9yIHBlcnNpc3RlbnQgc2xvdCB1c2UgbGFzdF9zYXZlZF9yZXN0YXJ0X2xzbiB0byBjb21wdXRl IHRoZQorCQkgKiBvbGRlc3QgTFNOIGZvciByZW1vdmFsIG9mIFdBTCBzZWdtZW50cy4gIFRoZSBz ZWdtZW50cyBiZXR3ZWVuCisJCSAqIGxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gYW5kIHJlc3RhcnRf bHNuIG1pZ2h0IGJlIG5lZWRlZCBieSBhCisJCSAqIHBlcnNpc3RlbnQgc2xvdCBpbiB0aGUgY2Fz ZSBvZiBkYXRhYmFzZSBjcmFzaC4gIE5vbi1wZXJzaXN0ZW50CisJCSAqIHNsb3RzIGNhbid0IHN1 cnZpdmUgdGhlIGRhdGFiYXNlIGNyYXNoLCBzbyB3ZSBkb24ndCBjYXJlIGFib3V0CisJCSAqIGxh c3Rfc2F2ZWRfcmVzdGFydF9sc24gZm9yIHRoZW0uCisJCSAqLworCQlpZiAocGVyc2lzdGVuY3kg PT0gUlNfUEVSU0lTVEVOVCkKKwkJeworCQkJaWYgKGxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gIT0g SW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlyZXN0YXJ0X2xzbiA+IGxhc3Rfc2F2ZWRfcmVzdGFy dF9sc24pCisJCQl7CisJCQkJcmVzdGFydF9sc24gPSBsYXN0X3NhdmVkX3Jlc3RhcnRfbHNuOwor CQkJfQorCQl9CisKIAkJaWYgKHJlc3RhcnRfbHNuICE9IEludmFsaWRYTG9nUmVjUHRyICYmCiAJ CQkobWluX3JlcXVpcmVkID09IEludmFsaWRYTG9nUmVjUHRyIHx8CiAJCQkgcmVzdGFydF9sc24g PCBtaW5fcmVxdWlyZWQpKQpAQCAtMTIxNiw3ICsxMjM4LDkgQEAgUmVwbGljYXRpb25TbG90c0Nv bXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKQogCXsKIAkJUmVwbGljYXRpb25TbG90ICpzOwog CQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuOworCQlYTG9nUmVjUHRyCWxhc3Rfc2F2ZWRfcmVzdGFy dF9sc247CiAJCWJvb2wJCWludmFsaWRhdGVkOworCQlSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW5j eSBwZXJzaXN0ZW5jeTsKIAogCQlzID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+cmVwbGljYXRpb25f c2xvdHNbaV07CiAKQEAgLTEyMzAsMTQgKzEyNTQsMzMgQEAgUmVwbGljYXRpb25TbG90c0NvbXB1 dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKQogCiAJCS8qIHJlYWQgb25jZSwgaXQncyBvayBpZiBp dCBpbmNyZWFzZXMgd2hpbGUgd2UncmUgY2hlY2tpbmcgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZz LT5tdXRleCk7CisJCXBlcnNpc3RlbmN5ID0gcy0+ZGF0YS5wZXJzaXN0ZW5jeTsKIAkJcmVzdGFy dF9sc24gPSBzLT5kYXRhLnJlc3RhcnRfbHNuOwogCQlpbnZhbGlkYXRlZCA9IHMtPmRhdGEuaW52 YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORTsKKwkJbGFzdF9zYXZlZF9yZXN0YXJ0X2xzbiA9IHMt Pmxhc3Rfc2F2ZWRfcmVzdGFydF9sc247CiAJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwog CiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICovCiAJCWlmIChpbnZhbGlk YXRlZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIEZvciBwZXJzaXN0ZW50IHNsb3QgdXNl IGxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gdG8gY29tcHV0ZSB0aGUKKwkJICogb2xkZXN0IExTTiBm b3IgcmVtb3ZhbCBvZiBXQUwgc2VnbWVudHMuICBUaGUgc2VnbWVudHMgYmV0d2VlbgorCQkgKiBs YXN0X3NhdmVkX3Jlc3RhcnRfbHNuIGFuZCByZXN0YXJ0X2xzbiBtaWdodCBiZSBuZWVkZWQgYnkg YQorCQkgKiBwZXJzaXN0ZW50IHNsb3QgaW4gdGhlIGNhc2Ugb2YgZGF0YWJhc2UgY3Jhc2guICBO b24tcGVyc2lzdGVudAorCQkgKiBzbG90cyBjYW4ndCBzdXJ2aXZlIHRoZSBkYXRhYmFzZSBjcmFz aCwgc28gd2UgZG9uJ3QgY2FyZSBhYm91dAorCQkgKiBsYXN0X3NhdmVkX3Jlc3RhcnRfbHNuIGZv ciB0aGVtLgorCQkgKi8KKwkJaWYgKHBlcnNpc3RlbmN5ID09IFJTX1BFUlNJU1RFTlQpCisJCXsK KwkJCWlmIChsYXN0X3NhdmVkX3Jlc3RhcnRfbHNuICE9IEludmFsaWRYTG9nUmVjUHRyICYmCisJ CQkJcmVzdGFydF9sc24gPiBsYXN0X3NhdmVkX3Jlc3RhcnRfbHNuKQorCQkJeworCQkJCXJlc3Rh cnRfbHNuID0gbGFzdF9zYXZlZF9yZXN0YXJ0X2xzbjsKKwkJCX0KKwkJfQorCiAJCWlmIChyZXN0 YXJ0X2xzbiA9PSBJbnZhbGlkWExvZ1JlY1B0cikKIAkJCWNvbnRpbnVlOwogCkBAIC0xNDU1LDYg KzE0OTgsNyBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAKIAlBc3NlcnQoc2xv dCAhPSBOVUxMKTsKIAlBc3NlcnQoc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9PSBJbnZhbGlkWExv Z1JlY1B0cik7CisJQXNzZXJ0KHNsb3QtPmxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gPT0gSW52YWxp ZFhMb2dSZWNQdHIpOwogCiAJLyoKIAkgKiBUaGUgcmVwbGljYXRpb24gc2xvdCBtZWNoYW5pc20g aXMgdXNlZCB0byBwcmV2ZW50IHJlbW92YWwgb2YgcmVxdWlyZWQKQEAgLTE3NjYsNiArMTgxMCw4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2Vz LAogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKKwkJQXNzZXJ0KHMtPmRh dGEucmVzdGFydF9sc24gPj0gcy0+bGFzdF9zYXZlZF9yZXN0YXJ0X2xzbik7CisKIAkJcmVzdGFy dF9sc24gPSBzLT5kYXRhLnJlc3RhcnRfbHNuOwogCiAJCS8qIHdlIGRvIG5vdGhpbmcgaWYgdGhl IHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkICovCkBAIC0xODM1LDcgKzE4ODEsMTAgQEAgSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkgKiBq dXN0IHJlbHkgb24gLmludmFsaWRhdGVkLgogCQkJICovCiAJCQlpZiAoaW52YWxpZGF0aW9uX2Nh dXNlID09IFJTX0lOVkFMX1dBTF9SRU1PVkVEKQorCQkJewogCQkJCXMtPmRhdGEucmVzdGFydF9s c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJCQlzLT5sYXN0X3NhdmVkX3Jlc3RhcnRfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisJCQl9CiAKIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJ KmludmFsaWRhdGVkID0gdHJ1ZTsKQEAgLTIwNzksNiArMjEyOCwxMiBAQCBDaGVja1BvaW50UmVw bGljYXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKQogCQlTYXZlU2xvdFRvUGF0aChzLCBwYXRo LCBMT0cpOwogCX0KIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2Nr KTsKKworCS8qCisJICogUmVjb21wdXRlIHRoZSByZXF1aXJlZCBMU04gYXMgU2F2ZVNsb3RUb1Bh dGgoKSB1cGRhdGVkCisJICogbGFzdF9zYXZlZF9yZXN0YXJ0X2xzbiBmb3Igc2xvdHMuCisJICov CisJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogfQogCiAvKgpAQCAtMjM1 NCw2ICsyNDA5LDcgQEAgU2F2ZVNsb3RUb1BhdGgoUmVwbGljYXRpb25TbG90ICpzbG90LCBjb25z dCBjaGFyICpkaXIsIGludCBlbGV2ZWwpCiAJaWYgKCFzbG90LT5qdXN0X2RpcnRpZWQpCiAJCXNs b3QtPmRpcnR5ID0gZmFsc2U7CiAJc2xvdC0+bGFzdF9zYXZlZF9jb25maXJtZWRfZmx1c2ggPSBj cC5zbG90ZGF0YS5jb25maXJtZWRfZmx1c2g7CisJc2xvdC0+bGFzdF9zYXZlZF9yZXN0YXJ0X2xz biA9IGNwLnNsb3RkYXRhLnJlc3RhcnRfbHNuOwogCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0 ZXgpOwogCiAJTFdMb2NrUmVsZWFzZSgmc2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9jayk7CkBAIC0y NTY5LDYgKzI2MjUsNyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJ CXNsb3QtPmVmZmVjdGl2ZV94bWluID0gY3Auc2xvdGRhdGEueG1pbjsKIAkJc2xvdC0+ZWZmZWN0 aXZlX2NhdGFsb2dfeG1pbiA9IGNwLnNsb3RkYXRhLmNhdGFsb2dfeG1pbjsKIAkJc2xvdC0+bGFz dF9zYXZlZF9jb25maXJtZWRfZmx1c2ggPSBjcC5zbG90ZGF0YS5jb25maXJtZWRfZmx1c2g7CisJ CXNsb3QtPmxhc3Rfc2F2ZWRfcmVzdGFydF9sc24gPSBjcC5zbG90ZGF0YS5yZXN0YXJ0X2xzbjsK IAogCQlzbG90LT5jYW5kaWRhdGVfY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CiAJCXNsb3QtPmNhbmRpZGF0ZV94bWluX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vc2xvdC5oCmluZGV4IGViMGI5M2IxMTE0Li5lNmZhOWE0YjVhYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaApAQCAtMjE1LDYgKzIxNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlv blNsb3QKIAkgKiByZWNlbnRseSBzdG9wcGVkLgogCSAqLwogCVRpbWVzdGFtcFR6IGluYWN0aXZl X3NpbmNlOworCisJLyogTGF0ZXN0IHJlc3RhcnRfbHNuIHRoYXQgaGFzIGJlZW4gZmx1c2hlZCB0 byBkaXNrLiBGb3IgcGVyc2lzdGVudCBzbG90cworCSAqIHRoZSBmbHVzaGVkIExTTiBzaG91bGQg YmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgdGhlIG9sZGVzdAorCSAqIExT TiBmb3IgV0FMIHNlZ21lbnRzIHJlbW92YWwuCisJICovCisJWExvZ1JlY1B0ciBsYXN0X3NhdmVk X3Jlc3RhcnRfbHNuOworCiB9IFJlcGxpY2F0aW9uU2xvdDsKIAogI2RlZmluZSBTbG90SXNQaHlz aWNhbChzbG90KSAoKHNsb3QpLT5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCi0tIAoyLjM5 LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000003754560636aac274 Content-Type: application/octet-stream; name="v2-0002-Add-TAP-tests-to-check-replication-slot-advance-d.patch" Content-Disposition: attachment; filename="v2-0002-Add-TAP-tests-to-check-replication-slot-advance-d.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbgjrnbt1 RnJvbSA1YWEwNjMzMmQyY2NjYWU0NGUyNTU4MzYzODc5Njc0MjM0NmRkNDYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyNCBNYXkgMjAyNSAxMzoyNjoyOCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMi8yXSBBZGQgVEFQIHRlc3RzIHRvIGNoZWNrIHJlcGxpY2F0aW9uIHNsb3QgYWR2 YW5jZSBkdXJpbmcKIHRoZSBjaGVja3BvaW50CgpUaGUgbmV3IHRlc3RzIHZlcmlmeSB0aGF0IGxv Z2ljYWwgYW5kIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGFyZSBzdGlsbAp2YWxpZCBhZnRl ciBhbiBpbW1lZGlhdGUgcmVzdGFydCBvbiBjaGVja3BvaW50IGNvbXBsZXRpb24gd2hlbiB0aGUg c2xvdCB3YXMKYWR2YW5jZWQgZHVyaW5nIHRoZSBjaGVja3BvaW50LgoKVGhpcyBjb21taXQgaW50 cm9kdWNlcyB0d28gbmV3IGluamVjdGlvbiBwb2ludHMgdG8gbWFrZSB0aGVzZSB0ZXN0cyBwb3Nz aWJsZToKCiogY2hlY2twb2ludC1iZWZvcmUtb2xkLXdhbC1yZW1vdmFsIC0gdHJpZ2dlcmVkIGlu IHRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcwogIGp1c3QgYmVmb3JlIG9sZCBXQUwgc2VnbWVudHMg Y2xlYW51cDsKKiBsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50IC0gdHJp Z2dlcmVkIGluCiAgTG9naWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9uKCkgd2hlbiByZXN0YXJ0 X2xzbiB3YXMgY2hhbmdlZCBlbm91Z2ggdG8KICBwb2ludCB0byB0aGUgbmV4dCBXQUwgc2VnbWVu dC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC8xZDEyZDItNjcyMzU5ODAt MzUtMTlhNDA2YTAlNDA2MzQzOTQ5NwpBdXRob3I6IFZpdGFseSBEYXZ5ZG92IDx2LmRhdnlkb3ZA cG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+ClJl dmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpCYWNr cGF0Y2gtdGhyb3VnaDogMTcKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMg ICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMgICAgIHwgIDE4ICsrKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAgICAg ICAgICAgICAgIHwgICAyICsKIC4uLi9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxf c2xvdC5wbCB8IDEzOSArKysrKysrKysrKysrKysrKysKIC4uLi90LzA0N19jaGVja3BvaW50X3Bo eXNpY2FsX3Nsb3QucGwgICAgICAgICB8IDEzMyArKysrKysrKysrKysrKysrKwogNSBmaWxlcyBj aGFuZ2VkLCAyOTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9naWNhbF9zbG90LnBsCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDE5MTQ4NTliMmVlLi40N2ZmYzBhMjMwNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzQ5OCw2ICs3NDk4LDEwIEBAIENyZWF0 ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCWlmIChQcmlvclJlZG9QdHIgIT0gSW52YWxpZFhMb2dS ZWNQdHIpCiAJCVVwZGF0ZUNoZWNrUG9pbnREaXN0YW5jZUVzdGltYXRlKFJlZG9SZWNQdHIgLSBQ cmlvclJlZG9QdHIpOwogCisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlJTkpFQ1RJT05f UE9JTlQoImNoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCIsIE5VTEwpOworI2VuZGlm CisKIAkvKgogCSAqIERlbGV0ZSBvbGQgbG9nIGZpbGVzLCB0aG9zZSBubyBsb25nZXIgbmVlZGVk IGZvciBsYXN0IGNoZWNrcG9pbnQgdG8KIAkgKiBwcmV2ZW50IHRoZSBkaXNrIGhvbGRpbmcgdGhl IHhsb2cgZnJvbSBncm93aW5nIGZ1bGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bG9naWNhbC5jCmluZGV4IDFkNTZkMGM0ZWYzLi5mMWViNzk4ZjNlOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJhY2Nl c3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNs dWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC00MSw2ICs0Miw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKIApAQCAtMTgyNSw5ICsxODI3LDEzIEBAIExvZ2ljYWxDb25maXJtUmVjZWl2ZWRMb2Nh dGlvbihYTG9nUmVjUHRyIGxzbikKIAl7CiAJCWJvb2wJCXVwZGF0ZWRfeG1pbiA9IGZhbHNlOwog CQlib29sCQl1cGRhdGVkX3Jlc3RhcnQgPSBmYWxzZTsKKwkJWExvZ1JlY1B0cglyZXN0YXJ0X2xz biBwZ19hdHRyaWJ1dGVfdW51c2VkKCk7CiAKIAkJU3BpbkxvY2tBY3F1aXJlKCZNeVJlcGxpY2F0 aW9uU2xvdC0+bXV0ZXgpOwogCisJCS8qIHJlbWVtYmVyIHRoZSBvbGQgcmVzdGFydCBsc24gKi8K KwkJcmVzdGFydF9sc24gPSBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbjsKKwog CQkvKgogCQkgKiBQcmV2ZW50IG1vdmluZyB0aGUgY29uZmlybWVkX2ZsdXNoIGJhY2t3YXJkcywg YXMgdGhpcyBjb3VsZCBsZWFkIHRvCiAJCSAqIGRhdGEgZHVwbGljYXRpb24gaXNzdWVzIGNhdXNl ZCBieSByZXBsaWNhdGluZyBhbHJlYWR5IHJlcGxpY2F0ZWQKQEAgLTE4ODEsNiArMTg4NywxOCBA QCBMb2dpY2FsQ29uZmlybVJlY2VpdmVkTG9jYXRpb24oWExvZ1JlY1B0ciBsc24pCiAJCS8qIGZp cnN0IHdyaXRlIG5ldyB4bWluIHRvIGRpc2ssIHNvIHdlIGtub3cgd2hhdCdzIHVwIGFmdGVyIGEg Y3Jhc2ggKi8KIAkJaWYgKHVwZGF0ZWRfeG1pbiB8fCB1cGRhdGVkX3Jlc3RhcnQpCiAJCXsKKyNp ZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCQkJWExvZ1NlZ05vCXNlZzEsCisJCQkJCQlzZWcy OworCisJCQlYTEJ5dGVUb1NlZyhyZXN0YXJ0X2xzbiwgc2VnMSwgd2FsX3NlZ21lbnRfc2l6ZSk7 CisJCQlYTEJ5dGVUb1NlZyhNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiwgc2Vn Miwgd2FsX3NlZ21lbnRfc2l6ZSk7CisKKwkJCS8qIHRyaWdnZXIgaW5qZWN0aW9uIHBvaW50LCBi dXQgb25seSBpZiBzZWdtZW50IGNoYW5nZXMgKi8KKwkJCWlmIChzZWcxICE9IHNlZzIpCisJCQkJ SU5KRUNUSU9OX1BPSU5UKCJsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50 IiwgTlVMTCk7CisjZW5kaWYKKwogCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCQlS ZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQllbG9nKERFQlVHMSwgInVwZGF0ZWQgeG1pbjogJXUg cmVzdGFydDogJXUiLCB1cGRhdGVkX3htaW4sIHVwZGF0ZWRfcmVzdGFydCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29u LmJ1aWxkCmluZGV4IGNiOTgzNzY2YzY3Li45MjQyOWQyODQwMiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVp bGQKQEAgLTU0LDYgKzU0LDggQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDQzX25vX2NvbnRyZWNv cmRfc3dpdGNoLnBsJywKICAgICAgICd0LzA0NF9pbnZhbGlkYXRlX2luYWN0aXZlX3Nsb3RzLnBs JywKICAgICAgICd0LzA0NV9hcmNoaXZlX3Jlc3RhcnRwb2ludC5wbCcsCisgICAgICAndC8wNDZf Y2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwnLAorICAgICAgJ3QvMDQ3X2NoZWNrcG9pbnRfcGh5 c2ljYWxfc2xvdC5wbCcKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYjQyNjVjNGE2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbApAQCAtMCwwICsxLDEz OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisjCisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgY2FzZSB3aGVuIHRoZSBsb2dpY2Fs IHNsb3QgaXMgYWR2YW5jZWQgZHVyaW5nCisjIGNoZWNrcG9pbnQuIFRoZSB0ZXN0IGNoZWNrcyB0 aGF0IHRoZSBsb2dpY2FsIHNsb3QncyByZXN0YXJ0X2xzbiBzdGlsbCByZWZlcnMKKyMgdG8gYW4g ZXhpc3RlZCBXQUwgc2VnbWVudCBhZnRlciBpbW1lZGlhdGUgcmVzdGFydC4KKyMKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9y ZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBs YW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1 aWxkJzsKK30KKworbXkgKCRub2RlLCAkcmVzdWx0KTsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ21pa2UnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAnaW5q ZWN0aW9uX3BvaW50cyciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg IndhbF9sZXZlbCA9ICdsb2dpY2FsJyIpOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50cykpOworCisj IENyZWF0ZSBhIHNpbXBsZSB0YWJsZSB0byBnZW5lcmF0ZSBkYXRhIGludG8uCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtjcmVhdGUgdGFibGUgdCAoaWQgc2VyaWFsIHByaW1hcnkg a2V5LCBiIHRleHQpfSk7CisKKyMgQ3JlYXRlIHRoZSB0d28gc2xvdHMgd2UnbGwgbmVlZC4KKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdzbG90X2xvZ2ljYWwnLCAndGVzdF9kZWNvZGluZycpfQorKTsKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19jcmVhdGVfcGh5c2ljYWxf cmVwbGljYXRpb25fc2xvdCgnc2xvdF9waHlzaWNhbCcsIHRydWUpfSk7CisKKyMgQWR2YW5jZSBi b3RoIHNsb3RzIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uIGp1c3QgdG8gaGF2ZSBldmVyeXRoaW5n ICJ2YWxpZCIuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgY291bnQo KikgZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Nsb3RfbG9naWNhbCcsIG51bGws IG51bGwpfQorKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19y ZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Nsb3RfcGh5c2ljYWwnLCBwZ19jdXJyZW50X3dhbF9s c24oKSl9CispOworCisjIFJ1biBjaGVja3BvaW50IHRvIGZsdXNoIGN1cnJlbnQgc3RhdGUgdG8g ZGlzayBhbmQgc2V0IGEgYmFzZWxpbmUuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 Y2hlY2twb2ludH0pOworCisjIEdlbmVyYXRlIHNvbWUgdHJhbnNhY3Rpb25zIHRvIGdldCBSVU5O SU5HX1hBQ1RTLgorbXkgJHhhY3RzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKKyR4YWN0cy0+cXVlcnlfdW50aWwoCisJcXIvcnVuX3hhY3RzLywKKwlxKFxlY2hvIHJ1bl94 YWN0cworU0VMRUNUIDEgXHdhdGNoIDAuMQorXHEKKykpOworCisjIEluc2VydCAyTSByb3dzOyB0 aGF0J3MgYWJvdXQgMjYwTUIgKH4yMCBzZWdtZW50cykgd29ydGggb2YgV0FMLgorJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7aW5zZXJ0IGludG8gdCAoYikgc2VsZWN0IG1kNShpOjp0 ZXh0KSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMDApIHMoaSl9CispOworCisjIFJ1biBh bm90aGVyIGNoZWNrcG9pbnQgdG8gc2V0IGEgbmV3IHJlc3RvcmUgTFNOLgorJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxe2NoZWNrcG9pbnR9KTsKKworIyBBbm90aGVyIDJNIHJvd3M7IHRo YXQncyBhYm91dCAyNjBNQiAofjIwIHNlZ21lbnRzKSB3b3J0aCBvZiBXQUwuCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtpbnNlcnQgaW50byB0IChiKSBzZWxlY3QgbWQ1KGk6OnRl eHQpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAwMCkgcyhpKX0KKyk7CisKKyMgUnVuIGFu b3RoZXIgY2hlY2twb2ludCwgdGhpcyB0aW1lIGluIHRoZSBiYWNrZ3JvdW5kLCBhbmQgbWFrZSBp dCB3YWl0CisjIG9uIHRoZSBpbmplY3Rpb24gcG9pbnQpIHNvIHRoYXQgdGhlIGNoZWNrcG9pbnQg c3RvcHMgcmlnaHQgYmVmb3JlCisjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCitub3RlKCdz dGFydGluZyBjaGVja3BvaW50XG4nKTsKKworbXkgJGNoZWNrcG9pbnQgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOworJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCisJcShzZWxl Y3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVt b3ZhbCcsJ3dhaXQnKSkKKyk7CiskY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCisJcXIvc3RhcnRp bmdfY2hlY2twb2ludC8sCisJcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50CitjaGVja3BvaW50 OworXHEKKykpOworCisjIFdhaXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVm b3JlIHJlbW92aW5nIFdBTCBzZWdtZW50cy4KK25vdGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9w b2ludFxuJyk7Ciskbm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2NoZWNrcG9pbnRlcicsICdjaGVja3Bv aW50LWJlZm9yZS1vbGQtd2FsLXJlbW92YWwnKTsKK25vdGUoJ2luamVjdGlvbl9wb2ludCBpcyBy ZWFjaGVkJyk7CisKKyMgVHJ5IHRvIGFkdmFuY2UgdGhlIGxvZ2ljYWwgc2xvdCwgYnV0IG1ha2Ug aXQgc3RvcCB3aGVuIGl0IG1vdmVzIHRvIHRoZSBuZXh0CisjIFdBTCBzZWdtZW50ICh0aGlzIGhh cyB0byBoYXBwZW4gaW4gdGhlIGJhY2tncm91bmQsIHRvbykuCitteSAkbG9naWNhbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CiskbG9naWNhbC0+cXVlcnlfc2FmZSgKKwlx e3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1yZXBsaWNhdGlvbi1zbG90 LWFkdmFuY2Utc2VnbWVudCcsJ3dhaXQnKTt9CispOworJGxvZ2ljYWwtPnF1ZXJ5X3VudGlsKAor CXFyL2dldF9jaGFuZ2VzLywKKwlxKAorXGVjaG8gZ2V0X2NoYW5nZXMKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwg bnVsbCkgXHdhdGNoIDEKK1xxCispKTsKKworIyBXYWl0IHVudGlsIHRoZSBzbG90J3MgcmVzdGFy dF9sc24gcG9pbnRzIHRvIHRoZSBuZXh0IFdBTCBzZWdtZW50Lgorbm90ZSgnd2FpdGluZyBmb3Ig aW5qZWN0aW9uX3BvaW50XG4nKTsKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tl bmQnLAorCSdsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50Jyk7Citub3Rl KCdpbmplY3Rpb25fcG9pbnQgaXMgcmVhY2hlZCcpOworCisjIE9LLCB3ZSdyZSBpbiB0aGUgcmln aHQgc2l0dWF0aW9uOiB0aW1lIHRvIGFkdmFuY2UgdGhlIHBoeXNpY2FsIHNsb3QsIHdoaWNoCisj IHJlY2FsY3VsYXRlcyB0aGUgcmVxdWlyZWQgTFNOLCBhbmQgdGhlbiB1bmJsb2NrIHRoZSBjaGVj a3BvaW50LCB3aGljaAorIyByZW1vdmVzIHRoZSBXQUwgc3RpbGwgbmVlZGVkIGJ5IHRoZSBsb2dp Y2FsIHNsb3QuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCdzbG90X3BoeXNpY2FsJywgcGdfY3VycmVudF93YWxfbHNu KCkpfQorKTsKKworIyBDb250aW51ZSB0aGUgY2hlY2twb2ludC4KKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2twb2lu dC1iZWZvcmUtb2xkLXdhbC1yZW1vdmFsJyl9KTsKKworIyBBYnJ1cHRseSBzdG9wIHRoZSBzZXJ2 ZXIgKDEgc2Vjb25kIHNob3VsZCBiZSBlbm91Z2ggZm9yIHRoZSBjaGVja3BvaW50CisjIHRvIGZp bmlzaDsgaXQgd291bGQgYmUgYmV0dGVyKS4KKyRub2RlLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwor JG5vZGUtPnN0YXJ0OworCitldmFsIHsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CXF7c2VsZWN0IGNvdW50KCopIGZyb20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdzbG90 X2xvZ2ljYWwnLCBudWxsLCBudWxsKTt9CisJKTsKK307CitpcygkQCwgJycsICJMb2dpY2FsIHNs b3Qgc3RpbGwgdmFsaWQiKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS90LzA0N19jaGVja3BvaW50X3BoeXNpY2FsX3Nsb3QucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0N19jaGVja3BvaW50X3BoeXNpY2FsX3Nsb3QucGwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1NGU1NmI5YmQyCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCkBAIC0w LDAgKzEsMTMzIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyMKKyMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBjYXNlIHdoZW4gdGhl IHBoeXNpY2FsIHNsb3QgaXMgYWR2YW5jZWQgZHVyaW5nCisjIGNoZWNrcG9pbnQuIFRoZSB0ZXN0 IGNoZWNrcyB0aGF0IHRoZSBwaHlzaWNhbCBzbG90J3MgcmVzdGFydF9sc24gc3RpbGwgcmVmZXJz CisjIHRvIGFuIGV4aXN0ZWQgV0FMIHNlZ21lbnQgYWZ0ZXIgaW1tZWRpYXRlIHJlc3RhcnQuCisj Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKKwordXNl IFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVz JykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQg YnkgdGhpcyBidWlsZCc7Cit9CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtaWtlJyk7Ciskbm9kZS0+aW5pdDsKKyRub2Rl LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkic2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzID0gJ2luamVjdGlvbl9wb2ludHMnIik7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICJ3YWxfbGV2ZWwgPSAncmVwbGljYSciKTsKKyRub2RlLT5zdGFydDsKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHMpKTsKKworIyBDcmVhdGUgYSBzaW1wbGUgdGFibGUgdG8gZ2VuZXJhdGUgZGF0YSBpbnRvLgor JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Y3JlYXRlIHRhYmxlIHQgKGlkIHNlcmlh bCBwcmltYXJ5IGtleSwgYiB0ZXh0KX0pOworCisjIENyZWF0ZSBhIHBoeXNpY2FsIHJlcGxpY2F0 aW9uIHNsb3QuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgcGdfY3Jl YXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Nsb3RfcGh5c2ljYWwnLCB0cnVlKX0pOwor CisjIEFkdmFuY2Ugc2xvdCB0byB0aGUgY3VycmVudCBwb3NpdGlvbiwganVzdCB0byBoYXZlIGV2 ZXJ5dGhpbmcgInZhbGlkIi4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVj dCBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Nsb3RfcGh5c2ljYWwnLCBwZ19jdXJyZW50 X3dhbF9sc24oKSl9CispOworCisjIFJ1biBjaGVja3BvaW50IHRvIGZsdXNoIGN1cnJlbnQgc3Rh dGUgdG8gZGlzayBhbmQgc2V0IGEgYmFzZWxpbmUuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7Y2hlY2twb2ludH0pOworCisjIEluc2VydCAyTSByb3dzOyB0aGF0J3MgYWJvdXQgMjYw TUIgKH4yMCBzZWdtZW50cykgd29ydGggb2YgV0FMLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCXF7aW5zZXJ0IGludG8gdCAoYikgc2VsZWN0IG1kNShpOjp0ZXh0KSBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDEwMDAwMCkgcyhpKX0KKyk7CisKKyMgQWR2YW5jZSBzbG90IHRvIHRoZSBj dXJyZW50IHBvc2l0aW9uLCBqdXN0IHRvIGhhdmUgZXZlcnl0aGluZyAidmFsaWQiLgorJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7c2VsZWN0IHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2 YW5jZSgnc2xvdF9waHlzaWNhbCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKX0KKyk7CisKKyMgUnVu IGFub3RoZXIgY2hlY2twb2ludCB0byBzZXQgYSBuZXcgcmVzdG9yZSBMU04uCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2ludH0pOworCisjIEFub3RoZXIgMk0gcm93czsg dGhhdCdzIGFib3V0IDI2ME1CICh+MjAgc2VnbWVudHMpIHdvcnRoIG9mIFdBTC4KKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe2luc2VydCBpbnRvIHQgKGIpIHNlbGVjdCBtZDUoaTo6 dGV4dCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDAwKSBzKGkpfQorKTsKKworbXkgJHJl c3RhcnRfbHNuX2luaXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3Qg cmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyB3aGVyZSBzbG90X25hbWUgPSAn c2xvdF9waHlzaWNhbCd9CispOworY2hvbXAoJHJlc3RhcnRfbHNuX2luaXQpOworbm90ZSgicmVz dGFydCBsc24gYmVmb3JlIGNoZWNrcG9pbnQ6ICRyZXN0YXJ0X2xzbl9pbml0Iik7CisKKyMgUnVu IGFub3RoZXIgY2hlY2twb2ludCwgdGhpcyB0aW1lIGluIHRoZSBiYWNrZ3JvdW5kLCBhbmQgbWFr ZSBpdCB3YWl0CisjIG9uIHRoZSBpbmplY3Rpb24gcG9pbnQpIHNvIHRoYXQgdGhlIGNoZWNrcG9p bnQgc3RvcHMgcmlnaHQgYmVmb3JlCisjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCitub3Rl KCdzdGFydGluZyBjaGVja3BvaW50Jyk7CisKK215ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKyRjaGVja3BvaW50LT5xdWVyeV9zYWZlKAorCXF7c2Vs ZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja3BvaW50LWJlZm9yZS1vbGQtd2FsLXJl bW92YWwnLCd3YWl0Jyl9CispOworJGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0 aW5nX2NoZWNrcG9pbnQvLAorCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2twb2ludAorY2hlY2twb2lu dDsKK1xxCispKTsKKworIyBXYWl0IHVudGlsIHRoZSBjaGVja3BvaW50IHN0b3BzIHJpZ2h0IGJl Zm9yZSByZW1vdmluZyBXQUwgc2VnbWVudHMuCitub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25f cG9pbnQnKTsKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2hlY2twb2ludGVyJywgJ2NoZWNrcG9p bnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcpOworbm90ZSgnaW5qZWN0aW9uX3BvaW50IGlzIHJl YWNoZWQnKTsKKworIyBPSywgd2UncmUgaW4gdGhlIHJpZ2h0IHNpdHVhdGlvbjogdGltZSB0byBh ZHZhbmNlIHRoZSBwaHlzaWNhbCBzbG90LCB3aGljaAorIyByZWNhbGN1bGF0ZXMgdGhlIHJlcXVp cmVkIExTTiBhbmQgdGhlbiB1bmJsb2NrIHRoZSBjaGVja3BvaW50LCB3aGljaAorIyByZW1vdmVz IHRoZSBXQUwgc3RpbGwgbmVlZGVkIGJ5IHRoZSBwaHlzaWNhbCBzbG90LgorJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCXF7c2VsZWN0IHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgn c2xvdF9waHlzaWNhbCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKX0KKyk7CisKKyMgQ29udGludWUg dGhlIGNoZWNrcG9pbnQuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3Qg aW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3Zh bCcpfSk7CisKK215ICRyZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtzZWxlY3QgcmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyB3aGVy ZSBzbG90X25hbWUgPSAnc2xvdF9waHlzaWNhbCd9CispOworY2hvbXAoJHJlc3RhcnRfbHNuX29s ZCk7Citub3RlKCJyZXN0YXJ0IGxzbiBiZWZvcmUgc3RvcDogJHJlc3RhcnRfbHNuX29sZCIpOwor CisjIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlciAoMSBzZWNvbmQgc2hvdWxkIGJlIGVub3VnaCBm b3IgdGhlIGNoZWNrcG9pbnQKKyMgdG8gZmluaXNoOyBpdCB3b3VsZCBiZSBiZXR0ZXIpLgorJG5v ZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOworCiskbm9kZS0+c3RhcnQ7CisKKyMgR2V0IHRoZSByZXN0 YXJ0X2xzbiBvZiB0aGUgc2xvdCByaWdodCBhZnRlciByZXN0YXJ0aW5nLgorbXkgJHJlc3RhcnRf bHNuID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7c2VsZWN0IHJlc3RhcnRfbHNu IGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHMgd2hlcmUgc2xvdF9uYW1lID0gJ3Nsb3RfcGh5c2lj YWwnfQorKTsKK2Nob21wKCRyZXN0YXJ0X2xzbik7Citub3RlKCJyZXN0YXJ0IGxzbjogJHJlc3Rh cnRfbHNuIik7CisKKyMgR2V0IHRoZSBXQUwgc2VnbWVudCBuYW1lIGZvciB0aGUgc2xvdCdzIHJl c3RhcnRfbHNuLgorbXkgJHJlc3RhcnRfbHNuX3NlZ21lbnQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ193YWxmaWxlX25hbWUoJyRyZXN0YXJ0X2xzbic6OnBnX2xz bikiKTsKK2Nob21wKCRyZXN0YXJ0X2xzbl9zZWdtZW50KTsKKworIyBDaGVjayBpZiB0aGUgcmVx dWlyZWQgd2FsIHNlZ21lbnQgZXhpc3RzLgorbm90ZSgicmVxdWlyZWQgYnkgc2xvdCBzZWdtZW50 IG5hbWU6ICRyZXN0YXJ0X2xzbl9zZWdtZW50Iik7CitteSAkZGF0YWRpciA9ICRub2RlLT5kYXRh X2RpcjsKK29rKCAtZiAiJGRhdGFkaXIvcGdfd2FsLyRyZXN0YXJ0X2xzbl9zZWdtZW50IiwKKwki V0FMIHNlZ21lbnQgJHJlc3RhcnRfbHNuX3NlZ21lbnQgZm9yIHBoeXNpY2FsIHNsb3QncyByZXN0 YXJ0X2xzbiAkcmVzdGFydF9sc24gZXhpc3RzIgorKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoy LjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000003754560636aac274--