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 1nwhg8-0007jR-1d for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 10:03:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nwhg7-0008Kc-0Z for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 10:03:43 +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 1nwhg6-0008KT-EO for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 10:03:42 +0000 Received: from esa7.fujitsucc.c3s2.iphmx.com ([68.232.159.87]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwhg3-0003HC-3I for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 10:03:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1654164220; x=1685700220; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=D6y/GhIB+5d6kLtYF/l40YrfQK/s8Go4+lHLIIriJlQ=; b=DvV3APolA/1ORZRbcjib5fJdB6JcjOyn8RVDARze9o4U1mo9QjtIQ8Tv NoBPlpQKTymMImyMfNZ0SbRmIN7NsqInGfvlUFfsucuC4tDmJKBmqGaPP x+1tX6xC1Pab3YmEhPcnzZO8h6M7Fd49dpnBNfwpP73NStQI6xn6zLPCe oqgS1xyZWFgQC934dOOGjiHh7i4/H3fqMKaDGX+oy9aCawBU+vusSCItJ lWs8Ok0k/bIG+pfl/1nMcgES28E2dyVGb35Z0hQhYohwmpfVFr6f7KfH3 lBNDABQ4BFbVyfjoFBe7fbo83kR7CatZtde3Ld6ShyNM69C+aSs6QqSvq g==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="57250090" X-IronPort-AV: E=Sophos;i="5.91,270,1647270000"; d="scan'208";a="57250090" Received: from mail-os0jpn01lp2104.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.104]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2022 19:03:36 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XHOfZDdM3j4RDD7/GvxDgFVXRVstHdmqrOK/cnjWX9QlNphjQHkkyspuWRmcuvdduzJne82A2Dfq+unSd5Ln1bhXXfvVzQfHtmfnIuZHGQuD6QBm8ux2bSmHk+A3NCJoPcyrNScN8Oir32FKe2QkKezmBzUUOuaBFLsLjHbXA7VyPgJDoxPbQDYwfmVyYSUdH2vaMMRjIonxwxBWReBF+a8B5PUOb+4sZDu/YZpTaeri10fSfJgFnUSNHRlWN1Z8oyLQCw27nf39WgHSLcCTFeeVFx4DXLMlYosl3Sv2vCskK+mKK15qeSoFKJmsWctAEuKb/rp5QcORWGLVGa4bzg== 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=D6y/GhIB+5d6kLtYF/l40YrfQK/s8Go4+lHLIIriJlQ=; b=mKZ+aOrO5Bh5tdhYLO/KN8Pyc8F+M/yLo8pRH38Tu3yB9PnDlChh3jSza1zD//+tYalMSWYjRoBzezA373nS9np8kdADQTfuC7LGUPvLnndgao3piMjSVT61TNPGqwIgPdgZFKfKuYZ65n2yuPGQfvJG7rIF9U31lm6xvr3YoMIAbkfh4yP/ECBlBjsntmlDm9VBGlCJyEHugXqNp3VgTBEGVUSzM2xsPzaOky8IQVbSAGKveQGczt3cmfdnBnDhrlzAN2SL9EHTp6JEUjNfhnOpgE8Bx6GLQ7FpybzbcDog/0AnVqgFG7jLpZjJ2yWkSLftH1eZORTVgwLexwe7oQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D6y/GhIB+5d6kLtYF/l40YrfQK/s8Go4+lHLIIriJlQ=; b=CrwiuvH0s4Y000LxHAI2b8q00dNIadc1daJ+XgStmBJdvtpg7jhoQxvzFOqeLhQG28NE4md/acOaBmlo0P5atOcZRcKXicMMlVB6ewb91fnAcm3iuk2Gczhr70KSnsvZaZZ+pUaNYci+S6rEh9HF/M3u1rGRD0Nc+ZuyrPbuyCc= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TY2PR01MB2108.jpnprd01.prod.outlook.com (2603:1096:404:c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.16; Thu, 2 Jun 2022 10:03:32 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%9]) with mapi id 15.20.5314.012; Thu, 2 Jun 2022 10:03:32 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila CC: Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.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: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CABJxA0A== Date: Thu, 2 Jun 2022 10:03:32 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 96d50eae-c596-4c43-fc47-08da447f26a8 x-ms-traffictypediagnostic: TY2PR01MB2108:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: J1fsGthgVS/g+qH0FhZr41jjPM5my9vpQLcz7+Y5+LkhB+SRHLHm/n9fRiDTiySQC8wICJaC3LxApAfVGsPPsbQs03GoCQ8yis4az45Q4pfHj8KungXWdMmN2EK7DWPOZoDeJdlamvWBtyki8fFkk/OV2C4oCNKbYMbq25ChL2zlJWVkzMzs+cAPg/JGUWupFXM/gct2Zteuwayo/zjEcLo6G6cIfjvMUyYp2If3yl0bAIz37uz1j60RgoWX/IHCwYPhMYB0gFjOvRJDi75M7cwxjlqNQHj55VpbmpbXHPOuE1vHiWLvLfRcQid/r36mr9zNKi2nBS3nuEY3ggdXvcIpC2I9hJ3sfeokmMChrzmbu2MjlDz9WjG4oPuXNV7KBTUyi/4CjXaek6Q2QPLI3rLzYQmyILD6yKHmfpXCgby8u9Bio9PIG0Ol3MVXMjHzenapvkMWz7KZCuBtMorn6xvlRddeNSShKuZYYbHkYHMEucA6UQWkUteR6yB5RXqe53MpasdWw3zeQWGtbPGXQzfVYZYUcPa9fUHU8iiCn/IhCfPFiyZrDrRmebjTm+4QyghwsE0H1bzkM8FaseIsZDy2m9yKxuEkT6ud/rnaGs+C3vFzlhs0OY67NpnSmydCQP02Zpw3HNdC7K4/j3mNQTJURskHJNFSaQUf+IXwjoHBgJcawtv2nzqjBq/meJvltPbcImXPi1UyKEw8ZXLn7rHfzit8/fQrjMbnpLJtu8Gg8FuSvX5sTr3Lc0fK1sApyz7nTYiKbkdDiimYltH/QqdoZG8uuiZnYHXwOcbcgrSVzerpVeM5vxf/wNvizttA x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(66446008)(122000001)(33656002)(64756008)(55016003)(83380400001)(8676002)(6916009)(316002)(66476007)(26005)(186003)(38100700002)(9686003)(85182001)(6506007)(4326008)(54906003)(76116006)(66556008)(7696005)(66946007)(82960400001)(53546011)(2906002)(86362001)(5660300002)(71200400001)(38070700005)(966005)(508600001)(45080400002)(8936002)(52536014)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VG9OTXo4WTRVV05zYU9BQU9Na1FFTFBFaFp4SVZ4dE5NU0pzUjhUY0o1UXRm?= =?utf-8?B?allYVEhENzBrMGxSbTNjMWRZM0xRa1VFYkllOXZ3OTJKZ0JrRTBIRm4wSjhG?= =?utf-8?B?bmdUZ0VOYmdlQlZrTmJ3MHB5TXdYam1hV211ZHFSbkxQb0NNdk5GMnEyNmxy?= =?utf-8?B?MHFNdi8zT042R2lZaGpzR2JZYU9FeTd0SW1YYVZXcVpiNU9kN21uR3k2ald4?= =?utf-8?B?UzB2SVNrNUpMaWNud0prdUFhZklNWThtM3BkeWJGOWFjOU5BV1NhWkhkclNP?= =?utf-8?B?NlZmaXhSL2cvZDNBdkRWNWFmRVFmeW9rN3pSNkdGdzhBYytJRzF4UVIwRG81?= =?utf-8?B?azVtS1g2OFlLN2wzSVZEVE1PcWgwTmozUERLVmMvWVRWS0VvZ0o1UHMrLzh4?= =?utf-8?B?U3orcW4zQTh2M2xoSFowSnIwTk1VbVNpbHl2N0ozbWpqRTMwOXovTmFhcmZE?= =?utf-8?B?NEduaWR0VGxKdHdIckt3VnVOczhydmVPWnU2Q3MyYVBuQjVTcEprdGNTY2ZR?= =?utf-8?B?NWw4bEpvWHhaSmtoTnlldmZPVGNGK3VxdSswd0p5amIvRGNjT01pdE4vWXZv?= =?utf-8?B?THAvUVFlK28vbVJtc2tKQ1JMTGdpYjd1K21DdGdoN1FwdGF6VHIzMElSa0N0?= =?utf-8?B?cHZRbC92N0JKNlRPVlpUSUFvYVl6cnZNNGRzVlRHWFFRQVFoQmQ1eUNhSk1C?= =?utf-8?B?aCtkbndDQ3lnRE55eHJwZTJzZFdhVHhQWEw4Wk1jOCtRQ0tsK0k3NEJXSDVZ?= =?utf-8?B?bEFKWFR3bXlHMDJRd0VQMG81L0V6Q1gySDU1bmlweWQ1TkkvbC9VUTRFWXFF?= =?utf-8?B?dHJuUzNDZ0o0OWdOKzdQSTVzQnVCdmY4a2VBRVFLUjJBN3JvZXB5QUNsT2I0?= =?utf-8?B?b2syNk05L1NzZjZTMXpMTTQxQlJDL1pSUUFvQUFmeFNpTU1qSWx6RUd2VzNL?= =?utf-8?B?UGVxQUNaRnNVMGRWc0Y5R3h2WU9hUE5kZkxjRE5nVVB2WVdiRWJiVnVHS0tF?= =?utf-8?B?WmcyS3gzZHZyRkQ3RmRoWWFHelFYZ3dpM2R2UHdIM2UvRzZ3Z25ibXBLWXE2?= =?utf-8?B?WHNybVZVY3JaTDZiQnh0NWlmVXl3eTlNMlpMTEExd2h2T294c1ZlZE5tbnVq?= =?utf-8?B?MmhMaHRPRC8yczdtVTFUMkQvR0FJeW5RVkNUNjVodHZXUytiTEN3b0d5b2d5?= =?utf-8?B?cGpDendCdVg0eENCUnc3alI1QmtsWXVhYUdaUUJ0ZVRiUkR0RzNRN1V1dmE1?= =?utf-8?B?ai8xQlljd3h1WENZTWdIcVlZNWtoUXZVTVRQZk9aemoxT3R2RnNwWTVUckJo?= =?utf-8?B?YldaQXlKU1lhdGdjV3FiSERReWEzM0JaZ2Y2YlU3YmFRTjR2ZXQ0a2g0ZjFn?= =?utf-8?B?bFZ4Sk9oRVdoaVBSdXlWYlRZNHF1aWY4R2VBaXVOWDNqM2kyOW9oaUZGK0ZQ?= =?utf-8?B?NW5aL2ZuK1RuNnNBVUNHeVNDbVNUOVdncUVBdDNxcURrYUJZK0wwdFZIYXRk?= =?utf-8?B?ajlvZkNkVXQ1dHRaQVQwL2VpREV2elppWFlvNlZ6VUFvL0dOa1JaQWk5b3Qx?= =?utf-8?B?RDg1VUpNcmhaUkVFNG9acExNWXdoVnVVdlk1L3ZmTWtiWTNKbVFCR3pYSUlj?= =?utf-8?B?MXY3YnZyTUNvVURqbnZ0c0ozOUJWNVN5ak5vNU9KbW9vOWR1U2cwUkNPQTh6?= =?utf-8?B?MUlzc0xyU1Q1aEtEcWR0bjNsczFUOHo2VGlqZlJXMEhRRkV1QkcyS1d6UHZ1?= =?utf-8?B?alc1T3ZFK0ozaGU1Q0plS0x2VWJyaDl3SUlTakU0TTU4VG02VURrRFNENS9N?= =?utf-8?B?eVhYRmQxR3diWVE0cU0zRzdQZ2tOTjNLbVVTL2RpOGxzTHd2NlJVRlpsY2pZ?= =?utf-8?B?T25RSGc2dUF3bHpYalhqVkVkZDNOek5YdWwyWmhYVkRYRkErRXp2UUxXeUFJ?= =?utf-8?B?Z1oyb1c2RUFYOGprTGNzNXZhWVdxWUVzdFhsYUs3R1NNeDNhbUJzcitjVWZC?= =?utf-8?B?ZXJXRUZaVWNQZTg2aUQ2WXE4QU1ydmxRNDhhN1lvUzVjQWN2YXM0V0RxdlE5?= =?utf-8?B?ekNXUklQNVViRTZ1VHo2eXgzVzhRR2xHTXdNMnZOT21tYkNraFRCdXVkRVBm?= =?utf-8?B?dGVINkJ1SjZWeUgvdEk3K1piZHJ4YmlSTlUvQ0ZmN0Q3RldjcnVmclY5N3Rk?= =?utf-8?B?TVREcHhYd3NqbWJBSnlDVjZoaUxrNmQ1b0VmYkZQT0RoU0ZhSWRBc3ZvRUJU?= =?utf-8?B?akxyZlhNcWZTcmxEa0hIKzBtTE5KNkY4RjJoWGdldHlmMkpqS2RVeWllUUF3?= =?utf-8?B?VGFwVVh1dFVmY1FMdVo2bjFnV3RzRUgzcUowTVJPY0RqY0ZCUW9pZz09?= 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: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96d50eae-c596-4c43-fc47-08da447f26a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2022 10:03:32.6021 (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: oN2Bxie2per0OApHsFQ2YXOGSykGBvATFf0QNsU8AKC5yyu7an1IbqtIlKjQ7F1WqwFy8Rj0qfH2pMcWZAFsog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR01MB2108 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gTW9uLCBNYXkgMzAsIDIwMjIgNzozOCBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBn bWFpbC5jb20+IHdyb3RlOg0KPiBGZXcgY29tbWVudHMvc3VnZ2VzdGlvbnMgZm9yIDAwMDEgYW5k IDAwMDMNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAwMDAxDQo+ IC0tLS0tLS0tDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoNCj4gMS4NCj4gKyBlbHNlDQo+ ICsgc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLA0KPiArICJsb2dpY2FsIHJlcGxp Y2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOw0KPiANCj4g Q2FuIHdlIHNsaWdodGx5IGNoYW5nZSB0aGUgbWVzc2FnZSB0bzogImxvZ2ljYWwgcmVwbGljYXRp b24gYmFja2dyb3VuZA0KPiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSI/DQpJbXBy b3ZlIHRoZSBtZXNzYWdlIGFzIHN1Z2dlc3RlZC4NCg0KPiAyLiBDYW4gd2UgdGhpbmsgb2Ygc2Vw YXJhdGluZyB0aGUgbmV3IGxvZ2ljIGZvciBhcHBseWluZyB0aGUgeGFjdCBieQ0KPiBiZ3dvcmtl ciBpbnRvIGEgbmV3IGZpbGUgbGlrZSBhcHBseWJnd3Jva2VyIG9yIGFwcGx5cGFyYWxsZWw/IFdl IGhhdmUNCj4gcHJldmlvdXNseSBkb25lIHRoZSBzYW1lIGluIHRoZSBjYXNlIG9mIHZhY3V1bSAo c2VlIHZhY3V1bXBhcmFsbGVsLmMpLg0KSW1wcm92ZSB0aGUgcGF0Y2ggYXMgc3VnZ2VzdGVkLiBJ IHNlcGFyYXRlZCB0aGUgbmV3IGxvZ2ljIHJlbGF0ZWQgdG8gYXBwbHkNCmJhY2tncm91bmQgd29y a2VyIHRvIG5ldyBmaWxlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dy b2tlci5jLg0KDQo+IDMuDQo+ICsgLyoNCj4gKyAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9l c24ndCBhbHdheXMgc2VuZCByZWxhdGlvbiB1cGRhdGUgbWVzc2FnZXMNCj4gKyAqIGFmdGVyIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIHVwZGF0ZSB0aGUgcmVsYXRpb24gaW4gbWFpbg0K PiArICogYXBwbHkgd29ya2VyIGhlcmUuDQo+ICsgKi8NCj4gKyBpZiAoYWN0aW9uID09IExPR0lD QUxfUkVQX01TR19SRUxBVElPTikNCj4gKyB7DQo+ICsgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwg PSBsb2dpY2FscmVwX3JlYWRfcmVsKHMpOw0KPiArIGxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShy ZWwpOw0KPiArIH0NCj4gDQo+IEkgdGhpbmsgdGhlIHB1Ymxpc2hlciBzaWRlIHdvbid0IHNlbmQg dGhlIHJlbGF0aW9uIHVwZGF0ZSBtZXNzYWdlDQo+IGFmdGVyIHN0cmVhbWluZyB0cmFuc2FjdGlv biBvbmx5IGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2VudCBmb3IgYQ0KPiBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhlDQo+ IGxvY2FsIGNhY2hlIGhlcmUuIFRoaXMgaXMgYXMgcGVyIG15IHVuZGVyc3RhbmRpbmcgb2YNCj4g bWF5YmVfc2VuZF9zY2hlbWEoKSwgZG8gbGV0IG1lIGtub3cgaWYgSSBhbSBtaXNzaW5nIHNvbWV0 aGluZz8gSWYgbXkNCj4gdW5kZXJzdGFuZGluZyBpcyBjb3JyZWN0IHRoZW4gd2UgZG9uJ3QgbmVl ZCB0aGlzIGNoYW5nZS4NCkkgdGhpbmsgd2UgbmVlZCB0aGlzIGNoYW5nZSBiZWNhdXNlIHRoZSBw dWJsaXNoZXIgd2lsbCBpbnZva2UgZnVuY3Rpb24NCmNsZWFudXBfcmVsX3N5bmNfY2FjaGUgd2hl biBjb21taXR0aW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGVuIGl0IHdpbGwNCnNldCAi c2NoZW1hX3NlbnQiIHRvIHRydWUgZm9yIHJlbGF0ZWQgZW50cnkuIExhdGVyLCBwdWJsaXNoZXIg bWF5IG5vdCBzZW5kIHRoaXMNCnNjaGVtYSBpbiBmdW5jdGlvbiBtYXliZV9zZW5kX3NjaGVtYSBi ZWNhdXNlIHdlIGFscmVhZHkgc2VudCB0aGlzIHNjaGVtYQ0KKHNjaGVtYV9zZW50ID0gdHJ1ZSku DQpJZiB3ZSBkbyBub3QgaGF2ZSB0aGlzIGNoYW5nZSwgSXQgd291bGQgY2F1c2UgYW4gZXJyb3Ig aW4gdGhlIGZvbGxvd2luZyBjYXNlOg0KU3VwcG9zZSB0aGF0IGFmdGVyIHdhbHNlbmRlciB3b3Jr ZXIgc3RhcnRzLCBmaXJzdCB3ZSBjb21taXQgYSBzdHJlYW1pbmcNCnRyYW5zYWN0aW9uLiBXYWxz ZW5kZXIgc2VuZHMgcmVsYXRpb24gdXBkYXRlIG1lc3NhZ2UsIGFuZCBvbmx5IGFwcGx5IGJhY2tn cm91bmQNCndvcmtlciBjYW4gdXBkYXRlIHJlbGF0aW9uIG1hcCBjYWNoZSBieSB0aGlzIG1lc3Nh Z2UuIEFmdGVyIHRoaXMsIGlmIHdlIGNvbW1pdA0KYSBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb24g dGhhdCBjb250YWlucyBzYW1lIHJlcGxpY2F0ZWQgdGFibGUsIHdhbHNlbmRlciB3aWxsDQpub3Qg c2VuZCByZWxhdGlvbiB1cGRhdGUgbWVzc2FnZSwgc28gbWFpbiBhcHBseSB3b3JrZXIgd291bGQg bm90IGdldCByZWxhdGlvbg0KdXBkYXRlIG1lc3NhZ2UuDQpJIHRoaW5rIHdlIG5lZWQgdGhpcyBj aGFuZ2UgdG8gdXBkYXRlIHJlbGF0aW9uIG1hcCBjYWNoZSBub3Qgb25seSBpbiBhcHBseQ0KYmFj a2dyb3VuZCB3b3JrZXIgYnV0IGFsc28gaW4gYXBwbHkgbWFpbiB3b3JrZXIuDQpJbiBhZGRpdGlv biwgd2Ugc2hvdWxkIGFsc28gaGFuZGxlIHRoZSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBtZXNzYWdl IGp1c3QgbGlrZQ0KTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OLiBTbyBpbXByb3ZlIHRoZSBjb2Rl IHlvdSBtZW50aW9uZWQuIEJUVywgSSBzaW1wbGlmeQ0KdGhlIGZ1bmN0aW9uIGhhbmRsZV9zdHJl YW1lZF90cmFuc2FjdGlvbigpLg0KDQo+IDQuDQo+ICsgKiBGb3IgdGhlIG1haW4gYXBwbHkgd29y a2VyLCBpZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2YNCj4gKyAqIHN0 cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2Ugc2VuZCB0aGUgZGF0YSB0byB0aGUgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuDQo+ICAgKg0KPiAtICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2Vpdmlu ZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UNCj4gLSAqIHNpbXBseSByZWRp cmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uDQo+ IA0KPiBUaGlzIGNvbW1lbnQgaXMgc2xpZ2h0bHkgY29uZnVzaW5nLiBDYW4gd2UgY2hhbmdlIGl0 IHRvIHNvbWV0aGluZw0KPiBsaWtlOiAiSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJs b2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwNCj4gZm9yIFNVQlNUUkVBTV9PTiBtb2RlLCB3 ZSBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyDQo+IHRvcGxldmVs IHRyYW5zYWN0aW9uLCBhbmQgZm9yIFNVQlNUUkVBTV9BUFBMWSBtb2RlLCB3ZSBzZW5kIHRoZQ0K PiBjaGFuZ2VzIHRvIGJhY2tncm91bmQgYXBwbHkgd29ya2VyLiI/DQpJbXByb3ZlIHRoZSBjb21t ZW50cyBhcyBzdWdnZXN0ZWQuDQoNCj4gNS4NCj4gK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQ0KPiAgew0KPiAuLi4NCj4gLi4uDQo+ICsgLyoNCj4gKyAqIElmIHRoZSB0 d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0 LA0KPiArICogc28ganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4NCj4gKyAqLw0KPiArIGlmIChz dWJ4aWQgPT0geGlkKQ0KPiArIHsNCj4gKyBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1 YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOw0KPiANCj4gLSBmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNl dChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLA0KPiBPX1JET05MWSwN Cj4gLSBmYWxzZSk7DQo+ICsgQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsNCj4gDQo+IC0gYnVm ZmVyID0gcGFsbG9jKEJMQ0tTWik7DQo+ICsgRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7DQo+ ICsgQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7DQo+ICsNCj4gKyBpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsNCj4gLi4uDQo+IC4uLg0KPiB9DQo+IA0KPiBIZXJlLCBjYW4gd2UgdXBk YXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gYXMgd2UgYXJlIGRvaW5nIGluDQo+IGFwcGx5X2hh bmRsZV9yb2xsYmFja19wcmVwYXJlZD8gQ3VycmVudGx5LCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNl IHdlDQo+IGFyZSBqdXN0IGNsZWFuaW5nIHVwIHRlbXBvcmFyeSBmaWxlcyBmb3Igd2hpY2ggd2Ug ZG9uJ3QgZXZlbiBoYXZlIGENCj4gdHJhbnNhY3Rpb24uIEFsc28sIHdlIGRvbid0IGhhdmUgdGhl IHJlcXVpcmVkIGluZnJhc3RydWN0dXJlIHRvDQo+IGFkdmFuY2Ugb3JpZ2lucyBmb3IgYWJvcnRz IGFzIHdlIGhhdmUgZm9yIGFib3J0IHByZXBhcmVkLiBTZWUgY29tbWl0cw0KPiBbMWViNmQ2NTI3 YV1bOGE4MTJlNTEwNl0uIElmIHdlIHRoaW5rIGl0IGlzIGEgZ29vZCBpZGVhIHRoZW4gSSB0aGlu aw0KPiB3ZSBuZWVkIHRvIHNlbmQgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZyb20gdGhlIHB1 Ymxpc2hlciBhbmQgd2UNCj4gbmVlZCB0byBiZSBjYXJlZnVsIHRvIG1ha2UgaXQgd29yayB3aXRo IGxvd2VyIHN1YnNjcmliZXIgdmVyc2lvbnMgdGhhdA0KPiBkb24ndCBoYXZlIHRoZSBmYWNpbGl0 eSB0byBwcm9jZXNzIHRoZXNlIGFkZGl0aW9uYWwgdmFsdWVzLg0KSSB0aGluayBpdCBpcyBhIGdv b2QgaWRlYS4gSSB3aWxsIGNvbnNpZGVyIHRoaXMgYW5kIGFkZCB0aGlzIHBhcnQgaW4gbmV4dA0K dmVyc2lvbi4NCg0KPiAwMDAzDQo+IC0tLS0tLS0tDQo+IDYuDQo+ICsgLyoNCj4gKyAqIElmIGFu eSB1bmlxdWUgaW5kZXggZXhpc3QsIGNoZWNrIHRoYXQgdGhleSBhcmUgc2FtZSBhcyByZW1vdGVy ZWwuDQo+ICsgKi8NCj4gKyBpZiAoIXJlbC0+c2FtZXVuaXF1ZSkNCj4gKyBlcmVwb3J0KEVSUk9S LA0KPiArIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwNCj4gKyBlcnJt c2coImNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0aCBkaWZmZXJlbnQgdW5pcXVlIGluZGV4 IiksDQo+ICsgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAn b24nIGluc3RlYWQgb2YgJ2FwcGx5Jy4iKSkpOw0KPiANCj4gSSB0aGluayB3ZSBjYW4gZG8gYmV0 dGVyIGhlcmUuIEluc3RlYWQgb2Ygc2ltcGx5IGVycm9yaW5nIG91dCBhbmQNCj4gYXNraW5nIHRo ZSB1c2VyIHRvIGNoYW5nZSBzdHJlYW1pbmcgbW9kZSwgd2UgY2FuIHJlbWVtYmVyIHRoaXMgaW4g dGhlDQo+IHN5c3RlbSBjYXRhbG9nIHByb2JhYmx5IGluIHBnX3N1YnNjcmlwdGlvbiwgYW5kIHRo ZW4gb24gcmVzdGFydCwgd2UNCj4gY2FuIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gJ29u JywgcGVyZm9ybSB0aGUgdHJhbnNhY3Rpb24sIGFuZA0KPiBhZ2FpbiBjaGFuZ2UgdGhlIHN0cmVh bWluZyBtb2RlIHRvIGFwcGx5LiBJIGFtIG5vdCBzdXJlIHdoZXRoZXIgd2UNCj4gd2FudCB0byBk byBpdCBpbiB0aGUgZmlyc3QgdmVyc2lvbiBvciBub3QsIHNvIGlmIHlvdSBhZ3JlZSB3aXRoIHRo aXMsDQo+IGRldmVsb3BpbmcgaXQgYXMgYSBzZXBhcmF0ZSBwYXRjaCB3b3VsZCBiZSBhIGdvb2Qg aWRlYS4NCj4gDQo+IEFsc28sIHBsZWFzZSB1cGRhdGUgY29tbWVudHMgaGVyZSBhcyB0byB3aHkg d2UgZG9uJ3QgaGFuZGxlIHN1Y2ggY2FzZXMuDQpZZXMsIEkgdGhpbmsgaXQgaXMgYSBnb29kIGlk ZWEuIEkgd2lsbCBkZXZlbG9wIGl0IGFzIGEgc2VwYXJhdGUgcGF0Y2ggbGF0ZXIuDQpBbmQgSSBh ZGRlZCB0aGUgY29tbWVudHMgYXRvcCBmdW5jdGlvbiBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9j aGVjayBhcw0KYmVsb3c6DQpgYGANCiAqIEFsdGhvdWdoIHdlIG1haW50YWlucyB0aGUgY29tbWl0 IG9yZGVyIGJ5IGFsbG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8NCiAqIGNvbW1pdCBhdCBhIHRp bWUsIG91ciBhY2Nlc3Mgb3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhhcyBjaGFuZ2VkLg0KICogVGhp cyBjb3VsZCBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1zIGlmIHRoZSB1bmlxdWUgY29sdW1uIG9u IHRoZSByZXBsaWNhdGVkDQogKiB0YWJsZSBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcHVibGlz aGVyLXNpZGUgb3IgY29udGFpbnMgbm9uLWltbXV0YWJsZQ0KICogZnVuY3Rpb25zIHdoZW4gYXBw bHlpbmcgdHJhbnNhY3Rpb25zIGluIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4NCmBgYA0K DQpJIGFsc28gbWFkZSBzb21lIG90aGVyIGNoYW5nZXMuIFRoZSBuZXcgcGF0Y2hlcyBhbmQgdGhl IG1vZGlmaWNhdGlvbiBkZXRhaWxzDQp3ZXJlIGF0dGFjaGVkIGluIFsxXS4NCg0KWzFdIC0gaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9PUzNQUjAxTUI2Mjc1OEE4ODFGRjMy NDAxNzFCN0IyMUI5RURFOSU0ME9TM1BSMDFNQjYyNzUuanBucHJkMDEucHJvZC5vdXRsb29rLmNv bQ0KDQpSZWdhcmRzLA0KV2FuZyB3ZWkNCg==