Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q6VjF-0004X9-Jk for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jun 2023 12:24:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q6VjD-0005i6-6I for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jun 2023 12:23:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q6VjC-0005gK-OV for pgsql-hackers@lists.postgresql.org; Tue, 06 Jun 2023 12:23:58 +0000 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q6Vj8-000Wr8-35 for pgsql-hackers@lists.postgresql.org; Tue, 06 Jun 2023 12:23:57 +0000 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-4f6170b1486so4779905e87.0 for ; Tue, 06 Jun 2023 05:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686054232; x=1688646232; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=e79vD+0EXSBKQJMhs0XPW0sYt0WlQOpUL8ZdFeXwxbs=; b=ajJ0wleDjBmS+0icZYsH8lgWeQfeMg3A8Cv2H0+ICerFkngXmtpj/PBxMbS5gJrK22 SFjP//unhuJrByHsXkRDN7S7qRab1iaCBfYikhdOpEpkiTcunkgbHesMqAWXerpU4Q6w W73sY8XeKT/AArxlR6QTP6Xv9ldP10ywF3HJw47DtdyYE0vDcZkgAaAdTdpbtDeEZ0xx 3mPhc+sjUgWNJVYzOST4+GH/Ex8Hor9xoU5tLwsDwJPhIxavY4p/6eO/17P+W4QRGssg e9yuJoCMQCjBD/UfZVmFeiSsB66Vlb8EnKGMxbZ1LzK0QmPw+54hrZFPE8x1Xo9QEfpT diUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686054232; x=1688646232; 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=e79vD+0EXSBKQJMhs0XPW0sYt0WlQOpUL8ZdFeXwxbs=; b=Im4Z/yadpKdhNJUvHrgdWu1jFh91NiXmT//sea6JIrjJUb5unKHQKWGdC4KaM0AUtp ORhP/zNryeuYIcD0MNevYkSWAhutGEskFj8qkS84jbEFgq7ZoGGSeK/7jxAPpHHPNYfw ZnYZhmNpGa2H1xkRWPX5OYP+jFHccgDu+jptaeS56txYv7leXUSZP2Fngo2Ndr8ZSo3P fun3J2D/SqsrBiBV0UbrmPTXriNkwFR123chdpeXpJPF0r80R7q3QKKN77PD5gCPeYfl /zLRX/p4Tx11lgVO+diIe89mLntqPsaw4FXbpZHfp33Ivl4bINvFERzhnZibU00/bXAY CEIg== X-Gm-Message-State: AC+VfDz/e2AZcUOT0a1HN0q3dneacNIfBGrMwCQsjxU0bTaABZ7eTulq 6hPTVQRL0RQx570b5kXES4nBbyKvaWS4zOUlCKw= X-Google-Smtp-Source: ACHHUZ6H4DiUIa6Kp/WkOsEMvJIqxcQI7ZE2aDIiKc7hkxeyCxXCS7vas7D0WsXiellpJZe9RzavMj6pFOepSRUOl0M= X-Received: by 2002:a05:6512:acf:b0:4f6:2d47:274c with SMTP id n15-20020a0565120acf00b004f62d47274cmr1601258lfu.15.1686054232014; Tue, 06 Jun 2023 05:23:52 -0700 (PDT) MIME-Version: 1.0 References: <87cz2otiw3.fsf@wibble.ilmari.org> In-Reply-To: From: Bharath Rupireddy Date: Tue, 6 Jun 2023 17:53:40 +0530 Message-ID: Subject: Re: Implement generalized sub routine find_in_log for tap test To: Michael Paquier Cc: vignesh C , Andrew Dunstan , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009273d205fd7517b1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009273d205fd7517b1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jun 6, 2023 at 4:11=E2=80=AFPM Michael Paquier wrote: > > On Tue, Jun 06, 2023 at 10:00:00AM +0530, Bharath Rupireddy wrote: > > +1 for deduplicating find_in_log. How about deduplicating advance_wal > > too so that 019_replslot_limit.pl, 033_replay_tsp_drops.pl, > > 035_standby_logical_decoding.pl and 001_stream_rep.pl can benefit > > immediately? > > As in a small wrapper for pg_switch_wal() that generates N segments at > will? Yes. A simpler way of doing it would be to move advance_wal() in 019_replslot_limit.pl to Cluster.pm, something like the attached. CI members don't complain with it https://github.com/BRupireddy/postgres/tree/add_a_function_in_Cluster.pm_to= _generate_WAL. Perhaps, we can name it better instead of advance_wal, say generate_wal or some other? > I don't see why we could not do that if it proves useful in the > long run. Besides the beneficiaries listed above, the test case added by https://commitfest.postgresql.org/43/3663/ can use it. And, the test_table bits in 020_pg_receivewal.pl can use it (?). -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --0000000000009273d205fd7517b1 Content-Type: application/octet-stream; name="v1-0001-Add-a-function-in-Cluster.pm-to-generate-WAL" Content-Disposition: attachment; filename="v1-0001-Add-a-function-in-Cluster.pm-to-generate-WAL" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lik7wojm0 RnJvbSBmZGQ0NWQ4NzBiZmY5M2U3MGFlYWRjMjMxODk1NjdmMTY4ZWJhZDliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogQmhhcmF0aCBSdXBpcmVkZHkgPGJoYXJhdGgucnVwaXJlZGR5 Zm9ycG9zdGdyZXNAZ21haWwuY29tPg0KRGF0ZTogVHVlLCA2IEp1biAyMDIzIDExOjM0OjIzICsw MDAwDQpTdWJqZWN0OiBbUEFUQ0ggdjFdIEFkZCBhIGZ1bmN0aW9uIGluIENsdXN0ZXIucG0gdG8g Z2VuZXJhdGUgV0FMDQoNCi0tLQ0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0 ZXIucG0gICAgICB8IDIwICsrKysrKysrKysrKw0KIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDAxX3N0 cmVhbV9yZXAucGwgICAgICAgICB8ICA2ICstLS0NCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9y ZXBsc2xvdF9saW1pdC5wbCAgICAgfCAzMSArKysrKy0tLS0tLS0tLS0tLS0tDQogLi4uL3QvMDM1 X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDcgKystLS0NCiA0IGZpbGVz IGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0NCmluZGV4IGJhZWEwZmNkMWMuLjI5NmRiNWU4 NGUgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBt DQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtDQpAQCAtMzA5 NSw2ICszMDk1LDI2IEBAIHN1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkNCiANCiA9 cG9kDQogDQorPWl0ZW0gJG5vZGUtPmFkdmFuY2Vfd2FsKCRuKQ0KKw0KK0FkdmFuY2UgV0FMIG9m ICRub2RlIGJ5ICRuIHNlZ21lbnRzDQorDQorPWN1dA0KKw0KK3N1YiBhZHZhbmNlX3dhbA0KK3sN CisJbXkgKCRzZWxmLCAkbikgPSBAXzsNCisNCisJIyBBZHZhbmNlIGJ5ICRuIHNlZ21lbnRzICg9 ICh3YWxfc2VnbWVudF9zaXplICogJG4pIGJ5dGVzKS4NCisJZm9yIChteSAkaSA9IDA7ICRpIDwg JG47ICRpKyspDQorCXsNCisJCSRzZWxmLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCisJCQkiQ1JF QVRFIFRBQkxFIHR0ICgpOyBEUk9QIFRBQkxFIHR0OyBTRUxFQ1QgcGdfc3dpdGNoX3dhbCgpOyIp Ow0KKwl9DQorfQ0KKw0KKz1wb2QNCisNCiA9YmFjaw0KIA0KID1jdXQNCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWNvdmVyeS90LzAwMV9zdHJlYW1fcmVwLnBsIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMDFfc3RyZWFtX3JlcC5wbA0KaW5kZXggMGM3MmJhMDk0NC4uMGUyNTZkYWI4ZCAxMDA2NDQN Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDAxX3N0cmVhbV9yZXAucGwNCisrKyBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDAxX3N0cmVhbV9yZXAucGwNCkBAIC00OTYsMTEgKzQ5Niw3IEBAICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLA0KIG15ICRzZWdtZW50X3JlbW92ZWQg PSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCiAJJ1NFTEVDVCBwZ193YWxm aWxlX25hbWUocGdfY3VycmVudF93YWxfbHNuKCkpJyk7DQogY2hvbXAoJHNlZ21lbnRfcmVtb3Zl ZCk7DQotJG5vZGVfcHJpbWFyeS0+cHNxbCgNCi0JJ3Bvc3RncmVzJywgIg0KLQlDUkVBVEUgVEFC TEUgdGFiX3BoeXNfc2xvdCAoYSBpbnQpOw0KLQlJTlNFUlQgSU5UTyB0YWJfcGh5c19zbG90IFZB TFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsMTApKTsNCi0JU0VMRUNUIHBnX3N3aXRjaF93YWwoKTsi KTsNCiskbm9kZV9wcmltYXJ5LT5hZHZhbmNlX3dhbCgxKTsNCiBteSAkY3VycmVudF9sc24gPQ0K ICAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVu dF93YWxfbHNuKCk7Iik7DQogY2hvbXAoJGN1cnJlbnRfbHNuKTsNCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsDQppbmRleCBhMWFiYTE2ZTE0Li5kNGNjNDM4NDY0IDEw MDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwNCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsDQpAQCAtNTksNyAr NTksNyBAQCAkcmVzdWx0ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsDQog aXMoJHJlc3VsdCwgInJlc2VydmVkfHQiLCAnY2hlY2sgdGhlIGNhdGNoaW5nLXVwIHN0YXRlJyk7 DQogDQogIyBBZHZhbmNlIFdBTCBieSBmaXZlIHNlZ21lbnRzICg9IDVNQikgb24gcHJpbWFyeQ0K LWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnksIDEpOw0KKyRub2RlX3ByaW1hcnktPmFkdmFuY2Vf d2FsKDEpOw0KICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lO VDsiKTsNCiANCiAjIFRoZSBzbG90IGlzIGFsd2F5cyAic2FmZSIgd2hlbiBmaXR0aW5nIG1heF93 YWxfc2l6ZQ0KQEAgLTY5LDcgKzY5LDcgQEAgJHJlc3VsdCA9ICRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLA0KIGlzKCRyZXN1bHQsICJyZXNlcnZlZHx0IiwNCiAJJ2NoZWNrIHRo YXQgaXQgaXMgc2FmZSBpZiBXQUwgZml0cyBpbiBtYXhfd2FsX3NpemUnKTsNCiANCi1hZHZhbmNl X3dhbCgkbm9kZV9wcmltYXJ5LCA0KTsNCiskbm9kZV9wcmltYXJ5LT5hZHZhbmNlX3dhbCg0KTsN CiAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQ7Iik7DQog DQogIyBUaGUgc2xvdCBpcyBhbHdheXMgInNhZmUiIHdoZW4gbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6 ZSBpcyBub3Qgc2V0DQpAQCAtMTAwLDcgKzEwMCw3IEBAICRyZXN1bHQgPSAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCiBpcygkcmVzdWx0LCAicmVzZXJ2ZWQiLCAnY2hlY2sg dGhhdCBtYXhfc2xvdF93YWxfa2VlcF9zaXplIGlzIHdvcmtpbmcnKTsNCiANCiAjIEFkdmFuY2Ug V0FMIGFnYWluIHRoZW4gY2hlY2twb2ludCwgcmVkdWNpbmcgcmVtYWluIGJ5IDIgTUIuDQotYWR2 YW5jZV93YWwoJG5vZGVfcHJpbWFyeSwgMik7DQorJG5vZGVfcHJpbWFyeS0+YWR2YW5jZV93YWwo Mik7DQogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDSEVDS1BPSU5UOyIp Ow0KIA0KICMgVGhlIHNsb3QgaXMgc3RpbGwgd29ya2luZw0KQEAgLTExOCw3ICsxMTgsNyBAQCAk bm9kZV9zdGFuZGJ5LT5zdG9wOw0KICRyZXN1bHQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywNCiAJIkFMVEVSIFNZU1RFTSBTRVQgd2FsX2tlZXBfc2l6ZSB0byAnOE1CJzsg U0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Iik7DQogIyBBZHZhbmNlIFdBTCBhZ2FpbiB0aGVuIGNo ZWNrcG9pbnQsIHJlZHVjaW5nIHJlbWFpbiBieSA2IE1CLg0KLWFkdmFuY2Vfd2FsKCRub2RlX3By aW1hcnksIDYpOw0KKyRub2RlX3ByaW1hcnktPmFkdmFuY2Vfd2FsKDYpOw0KICRyZXN1bHQgPSAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCiAJIlNFTEVDVCB3YWxfc3RhdHVz IGFzIHJlbWFpbiBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdy ZXAxJyINCiApOw0KQEAgLTEzNCw3ICsxMzQsNyBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnkpOw0KICRub2RlX3N0YW5kYnktPnN0b3A7DQogDQogIyBBZHZh bmNlIFdBTCBhZ2FpbiB3aXRob3V0IGNoZWNrcG9pbnQsIHJlZHVjaW5nIHJlbWFpbiBieSA2IE1C Lg0KLWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnksIDYpOw0KKyRub2RlX3ByaW1hcnktPmFkdmFu Y2Vfd2FsKDYpOw0KIA0KICMgU2xvdCBnZXRzIGludG8gJ3Jlc2VydmVkJyBzdGF0ZQ0KICRyZXN1 bHQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCkBAIC0xNDUsNyArMTQ1 LDcgQEAgaXMoJHJlc3VsdCwgImV4dGVuZGVkIiwgJ2NoZWNrIHRoYXQgdGhlIHNsb3Qgc3RhdGUg Y2hhbmdlcyB0byAiZXh0ZW5kZWQiJyk7DQogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDSEVDS1BPSU5UOyIpOw0KIA0KICMgQWR2YW5jZSBXQUwgYWdhaW4gd2l0aG91dCBj aGVja3BvaW50OyByZW1haW4gZ29lcyB0byAwLg0KLWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnks IDEpOw0KKyRub2RlX3ByaW1hcnktPmFkdmFuY2Vfd2FsKDEpOw0KIA0KICMgU2xvdCBnZXRzIGlu dG8gJ3VucmVzZXJ2ZWQnIHN0YXRlIGFuZCBzYWZlX3dhbF9zaXplIGlzIG5lZ2F0aXZlDQogJHJl c3VsdCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLA0KQEAgLTE3NSw3ICsx NzUsNyBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywNCiANCiAjIEFkdmFu Y2UgV0FMIGFnYWluLiBUaGUgc2xvdCBsb3NlcyB0aGUgb2xkZXN0IHNlZ21lbnQgYnkgdGhlIG5l eHQgY2hlY2twb2ludA0KIG15ICRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9wcmltYXJ5 KTsNCi1hZHZhbmNlX3dhbCgkbm9kZV9wcmltYXJ5LCA3KTsNCiskbm9kZV9wcmltYXJ5LT5hZHZh bmNlX3dhbCg3KTsNCiANCiAjIE5vdyBjcmVhdGUgYW5vdGhlciBjaGVja3BvaW50IGFuZCB3YWl0 IHVudGlsIHRoZSBXQVJOSU5HIGlzIGlzc3VlZA0KICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLA0KQEAgLTM3NSw3ICszNzUsNyBAQCAkbG9nc3RhcnQgPSBnZXRfbG9nX3NpemUo JG5vZGVfcHJpbWFyeTMpOw0KICMgZnJlZXplIHdhbHNlbmRlciBhbmQgd2FscmVjZWl2ZXIuIFNs b3Qgd2lsbCBzdGlsbCBiZSBhY3RpdmUsIGJ1dCB3YWxyZWNlaXZlcg0KICMgd29uJ3QgZ2V0IGFu eXRoaW5nIGFueW1vcmUuDQoga2lsbCAnU1RPUCcsICRzZW5kZXJwaWQsICRyZWNlaXZlcnBpZDsN Ci1hZHZhbmNlX3dhbCgkbm9kZV9wcmltYXJ5MywgMik7DQorJG5vZGVfcHJpbWFyeTMtPmFkdmFu Y2Vfd2FsKDIpOw0KIA0KIG15ICRtc2dfbG9nZ2VkID0gMDsNCiBteSAkbWF4X2F0dGVtcHRzID0g JFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7DQpAQCAtNDIzLDIxICs0 MjMsNiBAQCBraWxsICdDT05UJywgJHJlY2VpdmVycGlkOw0KICRub2RlX3ByaW1hcnkzLT5zdG9w Ow0KICRub2RlX3N0YW5kYnkzLT5zdG9wOw0KIA0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMNCi0jIEFkdmFuY2UgV0FMIG9mICRub2RlIGJ5ICRuIHNlZ21lbnRzDQotc3Vi IGFkdmFuY2Vfd2FsDQotew0KLQlteSAoJG5vZGUsICRuKSA9IEBfOw0KLQ0KLQkjIEFkdmFuY2Ug YnkgJG4gc2VnbWVudHMgKD0gKHdhbF9zZWdtZW50X3NpemUgKiAkbikgYnl0ZXMpIG9uIHByaW1h cnkuDQotCWZvciAobXkgJGkgPSAwOyAkaSA8ICRuOyAkaSsrKQ0KLQl7DQotCQkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsDQotCQkJIkNSRUFURSBUQUJMRSB0ICgpOyBEUk9QIFRBQkxFIHQ7 IFNFTEVDVCBwZ19zd2l0Y2hfd2FsKCk7Iik7DQotCX0NCi0JcmV0dXJuOw0KLX0NCi0NCiAjIHJl dHVybiB0aGUgc2l6ZSBvZiBsb2dmaWxlIG9mICRub2RlIGluIGJ5dGVzDQogc3ViIGdldF9sb2df c2l6ZQ0KIHsNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xv Z2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwNCmluZGV4IDY0YmVlYzRiZDMuLjFmY2YzYmMyNDggMTAwNjQ0DQotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwNCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbA0K QEAgLTU0MCwxMSArNTQwLDggQEAgbXkgJHdhbGZpbGVfbmFtZSA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLA0KIGNob21wKCR3YWxmaWxlX25hbWUpOw0KIA0KICMgR2VuZXJh dGUgc29tZSBhY3Rpdml0eSBhbmQgc3dpdGNoIFdBTCBmaWxlIG9uIHRoZSBwcmltYXJ5DQotJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKA0KLQkncG9zdGdyZXMnLCAiY3JlYXRlIHRhYmxlIHJldGFp bl90ZXN0KGEgaW50KTsNCi0JCQkJCQkJCQkgc2VsZWN0IHBnX3N3aXRjaF93YWwoKTsNCi0JCQkJ CQkJCQkgaW5zZXJ0IGludG8gcmV0YWluX3Rlc3QgdmFsdWVzKDEpOw0KLQkJCQkJCQkJCSBjaGVj a3BvaW50OyIpOw0KKyRub2RlX3ByaW1hcnktPmFkdmFuY2Vfd2FsKDEpOw0KKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiY2hlY2twb2ludDsiKTsNCiANCiAjIFdhaXQgZm9y IHRoZSBzdGFuZGJ5IHRvIGNhdGNoIHVwDQogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5 X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7DQotLSANCjIuMzQuMQ0KDQo= --0000000000009273d205fd7517b1--