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 1oXh8S-0008HQ-Ad for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Sep 2022 10:57:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oXh8R-00019B-48 for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Sep 2022 10:57:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oXh8Q-000192-Le for pgsql-hackers@lists.postgresql.org; Mon, 12 Sep 2022 10:57:50 +0000 Received: from esa3.fujitsucc.c3s2.iphmx.com ([68.232.151.212]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oXh8O-0007D1-HZ for pgsql-hackers@lists.postgresql.org; Mon, 12 Sep 2022 10:57:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1662980268; x=1694516268; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=DuoEqXqfsrengJ6UedsA9lr7cwlCdv1BcSBkwc5/Z8Y=; b=g0wvdAUd/UP/orx50rMzhRN6vow1Wt60FzvWT3B8MPQ574lhOIPAQTab 6Is/906mXy21Y0TPVtA9PeasioEyyADy22PBRA1UQ+oN1aVw9DfJV/6ju 9veDiZornqJ8RX/zx3PMQGln1mxVWKTvW4did8Qj4lzwB2keRftJzIC0f KDGQrVznhwUJ4mbceH6/rupA0Cer5P2iItZpIiTlG1OFxnm2ZR8Eu1tS4 Iz57+cW5X0G22Kz1gc7H9egCgu8DF+djSLM2QJHzruvT8qV8tcaodxhMa GIkREpmx9ym/42Y2JDhlgMrdu7VAqTLycyDBfs7a6DECkOueNlo6/Ofz8 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10467"; a="72986670" X-IronPort-AV: E=Sophos;i="5.93,310,1654527600"; d="scan'208";a="72986670" Received: from mail-tycjpn01lp2170.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.170]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Sep 2022 19:57:45 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q+ipEOvx7aYLic3++ZK82gZc9un2SqINaIzHT5fefQL+OGiR1Txtc7BOCoQ/M6fy2NcFFyzTM6kS6/Iq87+NNl2+YFIOkUUfH3WBpXCK7eZCL7PI/BDT36BTrS3hryBfA4ML/JmMUVmxJ4KSrGmsYplT1goY3DLU5u9DehJKgWDOTW4cb9nI5NJLktqn74e/bvipHet2CuUISuI5gOn2taaBqHoQ5izyvAiOYfPs9KmzTXtSp7kJ+GYU8TYCUhDRbrukQW5JyqqjjZEEKHA9bghhOJtB91mdBmwy29tnazft2SyFZWmx9OllDKw5i9TGSwWb6mZBC6BXEiGU9Ldjbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DuoEqXqfsrengJ6UedsA9lr7cwlCdv1BcSBkwc5/Z8Y=; b=nGactGuyzr+1oqq4LaW8RgHwM69pOd4dMKfqNtGWQQgKiJfMWwoYklGrU24ZqwjL+WMSokGuDq2Rt4xD7F+mwz0ItkH+kDMt3PvBQWSsMdz+d1MZut9gW4fg2YCFAKnmlPUetx+P0b+l/xSFA6+pa4dKMmQQGcdjcNZM2GbFsuPJKGx1ynTZNuwKr542XGKjFl4e1e6nMFZ/Y8Qkhvtztqj979ja6cVmRn9x3MAYVciMTFVZ8ZVWhvdm7AA2gsT1tGunJNBvDfs3EpwPTPn+pb6kLQlET+4Hh7duV3Q4BdMx4Ul+42bhsYJRndZn7sTm9HK4NERmp8WAJH3RINHPMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com (2603:1096:404:8056::13) by OSYPR01MB5495.jpnprd01.prod.outlook.com (2603:1096:604:81::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.12; Mon, 12 Sep 2022 10:57:42 +0000 Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::a58d:5541:ebc8:3ef7]) by TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::a58d:5541:ebc8:3ef7%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 10:57:42 +0000 From: "kuroda.hayato@fujitsu.com" To: "houzj.fnst@fujitsu.com" , Amit Kapila CC: "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX67NoYEfdPmEWsDniEZU+Lb6zlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACmRgIAB78qAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgvEYCAAWyzgIAGSRYAgAFBqICAAFYagIABchmAgAGqzwCAATq/gIAFJCcAgAAGs4CACtsZ4A== Date: Mon, 12 Sep 2022 10:57:42 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9Y2Q0ZTI1MjMtMzY1NC00MWUxLTg2YTMtYmY3Nzk1MjVj?= =?utf-8?B?OGQ3O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOS0wNVQwNzoyMTo1Nlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYAPR01MB5866:EE_|OSYPR01MB5495:EE_ x-ms-office365-filtering-correlation-id: e2e3f200-11b4-40e3-3504-08da94ad9dfb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P2BprIW0Zgqo6bNUdEFFEFE/q0HI3QNSE/qfpQob+4QN5SqmQQqY6g4L1rSfche1RS7OyT9rHfzw85cV7jnAJUnbC9iRl2IFdGen0jbmVOP3s2JgzFS1pyKMuqNx3h3rppy75CJeBrsWun4IlZkoVj43GfHZgtzKTo1pzu4Ng6wcyHsZqRwB96wo7rKeRPGzl04cULj7p49k1PC3IekBDdzUniKfSsCMkpsMcZDOzg8O5IYIZhG48bYbyVk3grmyHgKkAF4Aqe66HrJ4edghV9R6AVSAMwSV30VEWaX14HSn4oeFEFnVgQWeQp/Fozg67mu2QFlbq40G/DJ48azLPCfHvUZ4+Er8PrYfxUm+IebxBrhIX4PnrfS7Rvy+41ud0UhHjgG4u1v37ZcHYDhy8kfxFixfIXJIezmACsye5yKD9tvuPsBNjAklrpG4L5sa/Jhb7narbs1v1Uq6KomF/dSNsiw5CbRnn9mew7UqWutAjp6chjrm7IvHXqgpBbcOthuQ1o+aJe4MUcEyvWDd2a5g44R14ifMgGRW5g7GyzCfNIclUp4FZ1El488/oHcoFGgQxRsWW24W7CEc0CjSy6RWAMwHS2mj+FB0/nRkBSpQLF2U1V884zNxw+Yv5xJ6ojUbLKbAISMiY+0pc7cOQvn/vaaMFIqmckWqyg1N7HdoqtQeVXuFwZn7h4LBl1pcpvpSpugw/Okkte03e7BuLNF8K5blsCRdvi0FFxXFJrurOrkGbPI2UUTq2/hhnuHn/QfwGQfP+17tlgFq9p6PtolNL7DsJ08EYf+szpSLixQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB5866.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(396003)(39860400002)(136003)(376002)(366004)(1590799006)(38070700005)(9686003)(26005)(1580799003)(7696005)(86362001)(71200400001)(122000001)(41300700001)(478600001)(6506007)(83380400001)(186003)(54906003)(82960400001)(38100700002)(66946007)(33656002)(66476007)(55016003)(64756008)(66446008)(8676002)(4326008)(85182001)(76116006)(8936002)(66556008)(5660300002)(110136005)(52536014)(316002)(2906002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VWk1NmZsWFVNZGhCZ3pUbnFDQnpCd00zalVhRXRreHNxOXJLSjNDMWxYeE43?= =?utf-8?B?NkhCSzdON0dlaUVYRXJ2RVZ3TEVGYVdvMmJOL3o3aDlQM1c2KzVTYXROSDJU?= =?utf-8?B?MnRwNWtyOTE0NGJXMFd5dlUybEt1ZGFTNnhaZzlmM0UyU2E0TldGN2liRUVU?= =?utf-8?B?N2V0eUhVMC8weFBwNUZiZG9ZMVpoTXpMdFlzcjF2V3NzV2xLUTZHU0dSVkk0?= =?utf-8?B?K0R6NmFWWmVneXNHUzh1UEVqcDhIVEg3c3ZPVzc3TlVPcEEySTlBMDZEZ25a?= =?utf-8?B?eUplMVFUSnlLL1hMb1IyR0tGUGs2UUNSTEVzWDNDU2tpSm9ZT1FrQkRwZHFq?= =?utf-8?B?SVpIeGp5UjNVRVk4NkJjLytQNGU2UFBocU5LYU5VMm42LzRtZE9CZ0hvd0VM?= =?utf-8?B?eEFaWHdpbm5DNWc4VW9pRm5OM0hUUXV3SDRjTktOMFZicUFlUzdpVHd4SjAw?= =?utf-8?B?MHRpWGtCMWVZUGdYbFZBYkt3cEFxRjRLVk9UdWFQQ0szTXUzbUV1eFNuZzV0?= =?utf-8?B?N3F0Qks4bjc3NG1rZTc4Q3VvMXFnTWFtaExIYWgvdGFTTE1PYUczejY4UVA4?= =?utf-8?B?UUhONVI2NTlGRFhqT1hnTmVJOW1MQjViTjlQdDZHY3plSGV4eUtvRXU1K3Bz?= =?utf-8?B?QkhjVC9ERFgySkd6bzdGNXkvTlZYUmJtSmZITVlDUHZ2QWUwNnRRbWNUdWhk?= =?utf-8?B?aG50OUFvbWJNZlVVMWpyT2VLeS91N1VXTHAxR2RxdE8rUUlkWWpnY2dYRG9j?= =?utf-8?B?T1RhR2RGam5ydlhoaGxyMUdmR3A0QVhZZmtSaEkwT1llMjNOdDFFM3VaYmV3?= =?utf-8?B?SDA0RUNHMmYwL2Y5RGlvTERNamNOOUFBbmpxM0dLOXJPR3BRdkl5clZNc21F?= =?utf-8?B?Y0FxeE1PdURBb0wzMEtYdGhCSEorL05yUzNXc04vM0Y5MnY1NXFldjVCSklR?= =?utf-8?B?TVYvM3hRNEtEazZka05rMTdMeWhjVFhDdFhLVTBEWTVVSWNMU0F1WDNnbnRM?= =?utf-8?B?WVZNOVdDMXc3cHlHWVJXQW9sZVpVeHBPMm5HOUFQYy9NalM5TitIOXIzdktR?= =?utf-8?B?K1dRNXRudk02aVcxQUtjbnBlUHJEbG16T093TTdLRlhxV2JINVZpK3hxakxi?= =?utf-8?B?ZGdkb2ZsL2F2UmhJZDlHYmt2WXVNN1krMHkwUm9Tb1hPWmlsdlFkQXZsVVhZ?= =?utf-8?B?RVJEVk9mV2JjK2ZCRW1wd0JNV0lxcU1vYlNMczB3QmJQTzFEODgvV2hrNnZ0?= =?utf-8?B?NnRERTNGN3VKbkpqNjN6TFl4SlUwYjRiMW54SkExWE9pOFVWRUp3SXBjL3Nk?= =?utf-8?B?djRHQlp4UkhIS1UwWHFNRjRzNGtzbStmQitNVzQzcng3UEpvWUlVcXJHMXc5?= =?utf-8?B?aXB2M3dJYzU1b1RzaUlwWjdEQ2V1cWVuWml4M3g2Wm00SHE2R0hNSFlrK2FB?= =?utf-8?B?MkVMWHFBRHFNQU1KalRTTE9KOUk0c3VoTDAwQ1R0NTdQMHJmMmEwQ2pMQllk?= =?utf-8?B?TUFYbWVndTFMdDZwT0tBcE9FMGZPeHEyUXFoMWhXbGwyVkpvdjAwbzArUHp2?= =?utf-8?B?Sk9naFRJdHdSOGFaM0pHTEVMMThVclozbThESkFNbVF6Kysrc0s0ZHVSaGRk?= =?utf-8?B?ZnJZQ1FlTDJEc3ZnMGNHK3A2MlBCVWRPZmlPaFdGN2NjSy9hYnBId2ErOGk5?= =?utf-8?B?b2paNytRdmYySVgrbUJ6Y1NpUEpxSTc4TiszUEZNU3pyNEJBN0FLK0tUSXJl?= =?utf-8?B?Yk9qOGV3R2Q1YWRIeWZjWER1OVVwdHlQRDRMb0FBQ2V4ZjJkVWMvODArSEIr?= =?utf-8?B?VW1ZTGw2alBZUVVOUUZLaWdxenRVOHZjdGlqTWdRNmtaZjNKM0h2OU10RFFU?= =?utf-8?B?U2pyM2oya3BpVnNaL1hQUDJGQVNnNUFOOTUzZnV0ZXk3OThyMWV0OTJEV1Nn?= =?utf-8?B?ZFIrUFljaHpEcWRtZU5jLzYwVkQ2YzV1MDlMN2VSNU1ncXJsbkdsSWMwWDhz?= =?utf-8?B?bnFVMnBoN0pzZW13NFFvV3VYcGlXZmZLRFlIZGNMZlAvbU1udGJNSTFUVmEr?= =?utf-8?B?MCtQVWdGZlFVd0JhSVlPQ3RUcnptYURuejFSQXVJa0VlYnBoS0RoWGxKd2ps?= =?utf-8?B?emNuMzVEdzUrdW1MSnpYOEkxRjFIUWZxeE9laUJBOUpwdWhjd3psWUxZYjNP?= =?utf-8?B?K3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5866.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2e3f200-11b4-40e3-3504-08da94ad9dfb X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2022 10:57:42.6460 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 91xgxgKJompDDM0GpgXsk/gtzZV2e5auYMkcre8qmsO86IUICZOoSTPULqV8w0+/Hkce6BaqGMlInGWORpOgPqUFEE97Kjqee2C+pR6jOGg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSYPR01MB5495 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk RGVhciBIb3Utc2FuLA0KDQpUaGFuayB5b3UgZm9yIHVwZGF0aW5nIHRoZSBwYXRjaCEgRm9sbG93 aW5ncyBhcmUgY29tbWVudHMgZm9yIHYyOC0wMDAxLg0KSSB3aWxsIGRpZyB5b3VyIHBhdGNoIG1v cmUsIGJ1dCBJIHNlbmQgcGFydGlhbGx5IHRvIGtlZXAgdGhlIGFjdGl2aXR5IG9mIHRoZSB0aHJl YWQuDQoNCj09PQ0KRm9yIGFwcGx5cGFyYWxsZWx3b3JrZXIuYw0KDQowMS4gZmlsZW5hbWUNClRo ZSB3b3JkLW9yZGVyaW5nIG9mIGZpbGVuYW1lIHNlZW1zIG5vdCBnb29kDQpiZWNhdXNlIHlvdSBk ZWZpbmVkIHRoZSBuZXcgd29ya2VyIGFzICJwYXJhbGxlbCBhcHBseSB3b3JrZXIiLg0KDQowMi4g Z2xvYmFsIHZhcmlhYmxlDQoNCmBgYA0KKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCB0 YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3QgdXNlKS4gKi8NCitzdGF0aWMgSFRBQiAqUGFyYWxs ZWxBcHBseVdvcmtlcnNIYXNoID0gTlVMTDsNCisNCisvKg0KKyAqIExpc3QgdGhhdCBzdG9yZXMg dGhlIGluZm9ybWF0aW9uIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdGhhdCB3ZXJlDQorICog c3RhcnRlZC4gTmV3bHkgYWRkZWQgd29ya2VyIGluZm9ybWF0aW9uIHdpbGwgYmUgcmVtb3ZlZCBm cm9tIHRoZSBsaXN0IGF0IHRoZQ0KKyAqIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hlbiB0aGVy ZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuIEJlc2lkZXMsDQorICogZXhpdGVkIHdv cmtlcnMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3QgYWZ0ZXIgYmVpbmcgZGV0ZWN0ZWQu DQorICovDQorc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9IE5JTDsNCmBg YA0KDQpDb3VsZCB5b3UgYWRkIGRlc2NyaXB0aW9ucyBhYm91dCBkaWZmZXJlbmNlIGJldHdlZW4g dGhlIGxpc3QgYW5kIGhhc2ggdGFibGU/DQpJSVVDIHRoZSBIYXNoIHN0b3JlcyB0aGUgcGFyYWxs ZWwgd29ya2VycyB0aGF0DQphcmUgYXNzaWduZWQgdG8gdHJhbnNhY2l0b25zLCBhbmQgdGhlIGxp c3Qgc3RvcmVzIGFsbCBhbGl2ZSBvbmVzLg0KDQoNCjAzLiBwYXJhbGxlbF9hcHBseV9maW5kX3dv cmtlcg0KDQpgYGANCisgICAgICAgLyogUmV0dXJuIHRoZSBjYWNoZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGlmIHZhbGlkLiAqLw0KKyAgICAgICBpZiAoc3RyZWFtX2FwcGx5X3dvcmtlciAhPSBO VUxMKQ0KKyAgICAgICAgICAgICAgIHJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOw0KYGBgDQoN ClRoaXMgaXMganVzdCBhIHF1ZXN0aW9uIC0NCldoeSB0aGUgZ2l2ZW4geGlkIGFuZCB0aGUgYXNz aWduZWQgeGlkIHRvIHRoZSB3b3JrZXIgYXJlIG5vdCBjaGVja2VkIGhlcmU/DQpJcyB0aGVyZSBj aGFuY2UgdG8gZmluZCB3cm9uZyB3b3JrZXI/IA0KDQoNCjA0LiBwYXJhbGxlbF9hcHBseV9zdGFy dF93b3JrZXINCg0KYGBgDQorLyoNCisgKiBTdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0 aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuDQorICoNCisgKiBJZiBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBpcyBub3QgaW4gdXNlIHRoZW4gcmUtdXNlIGl0LCBvdGhlcndp c2Ugc3RhcnQgYQ0KKyAqIGZyZXNoIG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBp biBQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2gga2V5ZWQgYnkNCisgKiB0aGUgc3BlY2lmaWVkIHhp ZC4NCisgKi8NCit2b2lkDQorcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKFRyYW5zYWN0aW9u SWQgeGlkKQ0KYGBgDQoNCiJwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIiIHNob3VsZCBiZSAi c3RhcnRfcGFyYWxsZWxfYXBwbHlfd29ya2VyIiwgSSB0aGluaw0KDQoNCjA1LiBwYXJhbGxlbF9h cHBseV9zdHJlYW1fYWJvcnQNCg0KYGBgDQoJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3Rs aXN0KSAtIDE7IGkgPj0gMDsgaS0tKQ0KCQl7DQoJCQl4aWQgPSBsaXN0X250aF94aWQoc3VieGFj dGxpc3QsIGkpOw0KCQkJaWYgKHhpZCA9PSBzdWJ4aWQpDQoJCQl7DQoJCQkJZm91bmQgPSB0cnVl Ow0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQpgYGANCg0KUGxlYXNlIG5vdCByZXVzZSB0aGUgeGlk LCBkZWNsYXJlIGFuZCB1c2UgYW5vdGhlciB2YXJpYWJsZSBpbiB0aGUgZWxzZSBibG9jayBvciBz b21ldGhpbmcuDQoNCjA2LiBwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcg0KDQpgYGANCisgICAg ICAgaWYgKG5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiAvIDIpKQ0KKyAgICAgICB7DQpgYGANCg0KUGxlYXNlIGFkZCBhIGNvbW1lbnQg bGlrZTogIkRvIHdlIGhhdmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2w/IiBvciBzb21ldGhp bmcuDQoNCj09PQ0KRm9yIHdvcmtlci5jDQoNCjA3LiBnZW5lcmFsDQoNCkluIG1hbnkgbGluZXMg aWYtZWxzZSBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgYXBwbHlfYWN0aW9uLCBidXQgSSB0aGluayB0 aGV5IHNob3VsZCByZXdyaXRlIGFzIHN3aXRjaC1jYXNlIHN0YXRlbWVudC4NCg0KMDguIGdsb2Jh bCB2YXJpYWJsZQ0KDQpgYGANCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9 IGZhbHNlOw0KK2Jvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsNCmBgYA0KDQph Lg0KDQpJdCBzZWVtcyB0aGF0IGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIGlzIHVzZWQgb25seSBp biB0aGUgd29ya2VyLmMsIHNvIHdlIGNhbiBjaGFuZ2UgdG8gc3RhdGkgdmFyaWFibGUuDQoNCmIu DQoNClRoYXQgZmxhZyBpcyBzZXQgb25seSB3aGVuIGFuIGFwcGx5IHdvcmtlciBzcGlsbCB0aGUg dHJhbnNhY3Rpb24gdG8gdGhlIGRpc2suDQpIb3cgYWJvdXQgImluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uIiAtPiAiaW5fc3BpbGxlZF90cmFuc2FjdGlvbiI/DQoNCjA5LiAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9wcmVwYXJlDQoNCmBgYA0KLSAgICAgICBlbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBh cmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7DQpgYGAN Cg0KSSB0aGluayB0aGlzIGRlYnVnIG1lc3NhZ2UgaXMgc3RpbGwgdXNlZnVsLg0KDQoxMC4gYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wDQoNCmBgYA0KKyAgICAgICBpZiAoYXBwbHlfYWN0aW9uID09 IFRBX0FQUExZX0lOX1BBUkFMTEVMX1dPUktFUikNCisgICAgICAgew0KKyAgICAgICAgICAgICAg IHBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOw0K KyAgICAgICB9DQorICAgICAgIGVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRU5EX1RPX1BB UkFMTEVMX1dPUktFUikNCisgICAgICAgew0KYGBgDQoNClRoZSBvcmRlcmluZyBvZiB0aGUgU1RS RUFNIHtTVE9QLCBTVEFSVH0gaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYXBwbHkgd29ya2VyIHNw aWxsIHRoZSB0cmFuc2FjdGlvbiB0byB0aGUgZGlzay4NCihUaGlzIGlzIGRvbmUgdmlhIGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQ0KSSB0aGluayBjaGVja3Mgc2hvdWxkIGJlIGFkZGVkIGhlcmUs IGxpa2UgaWYgKCFzdHJlYW1fYXBwbHlfd29ya2VyKSBvciBzb21ldGhpbmcuDQoNCjExLiBhcHBs eV9oYW5kbGVfc3RyZWFtX2Fib3J0DQoNCmBgYA0KKyAgICAgICBpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pDQorICAgICAgICAgICAgICAgZXJlcG9ydChFUlJPUiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnX2ludGVybmFsKCJTVFJFQU0g QUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsNCmBgYA0KDQpJIHRoaW5rIHRo ZSBjaGVjayBieSBzdHJlYW1fYXBwbHlfd29ya2VyIHNob3VsZCBiZSBhZGRlZC4NCg0KMTIuIGFw cGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0DQoNCmEuDQoNCmBgYA0KCWlmIChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikNCgkJZXJlcG9ydChFUlJPUiwNCgkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksDQoJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIENPTU1JVCBtZXNz YWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOw0KYGBgDQoNCkkgdGhpbmsgdGhlIGNoZWNrIGJ5 IHN0cmVhbV9hcHBseV93b3JrZXIgc2hvdWxkIGJlIGFkZGVkLg0KDQpiLiANCg0KYGBgDQotICAg ICAgIGVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlv biAldSIsIHhpZCk7DQpgYGANCg0KSSB0aGluayB0aGlzIGRlYnVnIG1lc3NhZ2UgaXMgc3RpbGwg dXNlZnVsLg0KDQo9PT0NCkZvciBsYXVuY2hlci5jDQoNCjEzLiBsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2J5X3Nsb3QNCg0KYGBgDQorICAgICAgIExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9ICZM b2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3Rfbm9dOw0KKw0KKyAgICAgICBMV0xvY2tBY3F1aXJl KExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOw0KKw0KKyAgICAgICAvKiBSZXR1cm4g aWYgdGhlIGdlbmVyYXRpb24gZG9lc24ndCBtYXRjaCBvciB0aGUgd29ya2VyIGlzIG5vdCBhbGl2 ZS4gKi8NCisgICAgICAgaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uIHx8DQor ICAgICAgICAgICAgICAgd29ya2VyLT5wcm9jID09IE5VTEwpDQorICAgICAgICAgICAgICAgcmV0 dXJuOw0KKw0KYGBgDQoNCmEuDQoNCkxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2sp IGlzIG5lZWRlZCBiZWZvcmUgcmVhZGluZyBzbG90cy4NCg0KYi4gDQoNCkxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spIGlzIG5lZWRlZCBldmVuIGlmIHdvcmtlciBpcyBub3QgZm91 bmQuDQoNCg0KDQpCZXN0IFJlZ2FyZHMsDQpIYXlhdG8gS3Vyb2RhDQpGVUpJVFNVIExJTUlURUQN Cg0K