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 1vVpPY-008n5a-0k for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Dec 2025 11:09:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVpPX-00CIyF-0K for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Dec 2025 11:09:39 +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 1vVpPW-00CIy7-2V for pgsql-hackers@lists.postgresql.org; Wed, 17 Dec 2025 11:09:39 +0000 Received: from mail-japaneastazon11011009.outbound.protection.outlook.com ([52.101.125.9] helo=TYVP286CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVpPV-001DVo-0e for pgsql-hackers@lists.postgresql.org; Wed, 17 Dec 2025 11:09:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cl++udD9uB6TZqHFuXNIRm0qowYAu4eDl9StA3PYi5PTndqaTPE6nHPbF1BxGqsAvdn7v+Y5HEM/HW1eZqZdhcK8PTeGT0mal56KeWCENrqWTgIXhoC2ZI+rxsD7d+3BbYeBR8JhxF8MuRWW2vQx0vhAQs72R0WL5aLT+7bbSgue/Mxp+7L5o2zrtRNz6BZ+g3ZqnIYxXXGAMwEOR/CsQ9B38ptxEc86C1b7jUBciQoxm+cc2Gc/wi9UvugKKcTsHLcis1n6p/LVKeAf2pXLWdiLZ5rRNjKhZ/Avc/1g0zG0Byj8hAthMuSlZHIW1JUw99m9RfW0e2WhOk44i3WojQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=NAr2rI1yx9jqYsfljbS7gSLZCeUf53EykFi3CE6qNb8=; b=dIdjEijMEqt7r2fM6+ICKLaEdjHR6+7HAJT+imgcSI4aW+tD0OVkFxbcHLyoHcBUxSWXoNE+QSbFr2lqGv646begZy6VpossVpTdbzwgvu+mYDq0aF67a3k/MfT7dZzwEehMCkpX77MtKRrEOA1FA/26DREdVvT2GDVoHydGiXzYB/D0Cg6ZDOccPXpM3I3qgJB4je9aHPq+lUs11ndC1XpB+cD5VBtWQwwgGitoqVW/y97clZZyX6/A5MCRg0HfrQ83vyYs/OVZjmN/ETAGzUmT6HeBPLpatB6Zt2kYFWi7aPhK/CM9S1GcCf0o11o94nSdN7gFLf0MUlr4hnR83A== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NAr2rI1yx9jqYsfljbS7gSLZCeUf53EykFi3CE6qNb8=; b=jYdCvrr3i6HhvOVBGA6QPZgOr1UIsUofxW2mTdhhs5Hbi+MKTM/ceC33z5s//eONMu2JF0BkoRsTjeaSy0LZVQxUG7g8hL1Ap1bPhadIJ6XDnqNTiV0wXjydnBsW6H0XNg0UIv5lCTmGq55rkkCYP5PFXIN8ajHXAt/lqY/DbEQEeA7BGCWqh4dgc/72dPRODoDuwIGe2WWdB+iOi8tZlUKOW1zqHVkANp5ebMWKTNkGeOYxkK+lJZm+g0fyHcIode7CLopFab7TgNQ7e6mTBG/Hme/WXxz+rO9IbzbZM4hVunieV5jaOOXYtVKdqnHKfSkZA0ipHClaiPzFw4UTSg== Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com (2603:1096:405:338::22) by OS9PR01MB16224.jpnprd01.prod.outlook.com (2603:1096:604:3eb::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Wed, 17 Dec 2025 11:09:31 +0000 Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d]) by TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d%4]) with mapi id 15.20.9434.001; Wed, 17 Dec 2025 11:09:31 +0000 From: "Zhijie Hou (Fujitsu)" To: Chao Li , Amit Kapila CC: Dilip Kumar , Postgres hackers Subject: RE: Improve logical replication usability when tables lack primary keys Thread-Topic: Improve logical replication usability when tables lack primary keys Thread-Index: AQHcUhkGS3yb0622xUexN/YG9c5nabTtVbsAgAAW14CANNT0AIAAAgcAgAAlDwCAAaLfAIAB1Kww Date: Wed, 17 Dec 2025 11:09:30 +0000 Message-ID: References: <5ABD7727-CD22-4112-A186-0E788EE78109@gmail.com> <23A24BFF-18A7-4FE9-AAFA-13E1AA207DD0@gmail.com> In-Reply-To: Accept-Language: en-AS, 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?NTBfQWN0aW9uSWQ9NzEzZWRjOTItNjNiZi00ZmJjLWE4ZGEtNWU3MWY3NTdh?= =?utf-8?B?NDJkO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjUtMTItMTdUMTA6NDQ6NTJaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?B?ZC04MWUxLTQ4NTgtYTlkOC03MzZlMjY3ZmQ0Yzc7TVNJUF9MYWJlbF9hNzI5?= =?utf-8?B?NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfVGFnPTEwLCAzLCAw?= =?utf-8?Q?,_1;?= 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: TY4PR01MB16907:EE_|OS9PR01MB16224:EE_ x-ms-office365-filtering-correlation-id: 08367be0-0f43-4dbc-1dcd-08de3d5cc093 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|1580799027|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?UDRxYVRSL3padFp2TEV6aU0wRTdWWXg5TzRXYUQwbHAvcHh5T2dsOFY1enB6?= =?utf-8?B?T01jOWx3MEZuM2R0TWFvKzgrbStMQWpzaXdxbEpwYW1qbVVydU9SUyttTFRw?= =?utf-8?B?dWlJbTJRVjNERHh5VHowdU5VZCszWmo2ZkU4cFlEZ1UzQWhjbEV2TnNZdFNp?= =?utf-8?B?RlVIVThTT3pTMkxsZ29Yam42dGxxcXJtZXoyekJ1Q0w4QTBIQ0V2SytMckNm?= =?utf-8?B?Tm9KR1lueS9UNWlwY0dnWGxtQVNZVno0MHNuRVNNRFcwRlJqUC9FdEhQaGVr?= =?utf-8?B?eGVFN00vZGpxWUpMRFU3SjJ6Z0RXelM5aXpYNW9YQlhqMExicVhiMkdKY1R5?= =?utf-8?B?NU1BK2tKbm9scWhtakxkV0RSOXpvR0xQa3dsOGVMdS9rNnduaExrNlVnbHdE?= =?utf-8?B?M1poUFVaQkp0cWRQSlk4Wm5nTlRNWlpleFNNbExvVE9JcVB3dnpKNXYyZzF6?= =?utf-8?B?Y1FUY1diYThCR3NoVFl0aDcwSFpiTlgwUDVwVjRYU2dSWXdkdzAzZ0YrMnFp?= =?utf-8?B?UlVSSVAzeXZDNFVjRVd1a1cxd0VERFhRQzEzd3R4NGNISDZPeUxIaWxhdUtj?= =?utf-8?B?MnZrMUNEUWtvZGR3VEkweTBCMTQxcHh1dFhiSXFTRGFaM0RaamdTem9QemJQ?= =?utf-8?B?ZEJPYXducFlIQXlQbEVMTmxrNE9kZFlmaVpqQ0xoNytCaWhMRGZFZzRMWnNO?= =?utf-8?B?ODkzSVpLZWNsTHltQW5Gdm5vV0JXUnV2WnhvVzdpOU1pMG1GMW5hUFFnUkV0?= =?utf-8?B?Qkx4Q050SlZkYmxmRnV0Z1ZaK0NvNUs3MXRaYWJmUnVLWTNla1VwVVV2VER1?= =?utf-8?B?MFFWS3V4MHE4Sm1yZ1ZobktidG04ZnhkWFprT203UTlIazJUakNmTTRGNjY2?= =?utf-8?B?ZXljRjhWSUhielhiS3l3T1NYSENlMHZSYVVzdTRtNlFobnh0OEdEdkFNMlFK?= =?utf-8?B?Y3o4d25PVE4yTmFtbGpJdUdra09qQzZHcWZRMTFtbjhacWdSQUxscVcrYVJt?= =?utf-8?B?d2ZSR0J4VHVFYUZIUXU4aHJvZUhPb1d5SHEvVUdvNVJEdEZ3SFhWVFNnS2FX?= =?utf-8?B?TExXd1hia0J1dGRlMWErZ1BrUmkrdGVCay9VVERwZGRMNGVRZklqNTdraE1W?= =?utf-8?B?MVBKUzBtRnpKdGdCZDI1dEpwaUdSSFRFTnVHSjRjemwzTlFVVlowdVplT1V5?= =?utf-8?B?bElQVXU3QUw1NlVDeWpDNUNCN3Z4WnF3MjhISFZQRWhiNFZNWElXV2RIVmo0?= =?utf-8?B?alYwUm5oRjFNWjJoTDVIRW5hUEZqY3pFZmcxRUhkM3NpaE9xUnFiR1NIaXlq?= =?utf-8?B?UmVpSjlYeWRmaEI0SjlZSXY3Z0dxN0JrVW9LdHVTeEF2R3dMNi85Y2ZHaGdr?= =?utf-8?B?bXN1YUdacWVxa3VGSFZSRks0b1ZQZTJHclU4bTFKVytva2xxY2ljWkI2MHc4?= =?utf-8?B?WGJMNU5pMUxuYWUxK3FGbSs5RWRCTUdJY3N0aG9KOHdXbkNmUjlpTlZzTUhq?= =?utf-8?B?REwzNlJJRVFveWUvUUwvZ3hpTm9SWmpNaExTSitRRnFyZzVUWHlUSG9hREUz?= =?utf-8?B?R1JGOTNHVnpCMlUvTmZhcFlMMnpiaTR6Q1IrTDF2UWlPVzY1YkZXS0xxOStp?= =?utf-8?B?ZGc0K1dtenc1QWJjWGxhbTdiWStKdlgzUDhsNDRrNExobzRPVlVCMXZSMVg4?= =?utf-8?B?RktpQ1FTVkN5M2tGUlVGbWRVVDdXaHJpWmozNVRLYWxyOFBoREZuR2thcDRP?= =?utf-8?B?eGJvMTR4T20rSWNSamtJcjZ0aFEyZ05zT2lCMituU3poRmJldDlXdzdhWTZj?= =?utf-8?B?anFXcGJMSGF1a2RlSWI1ZU9ZRURHWmg0VTdvVmxxTDdyTzlNUjFtZVJPQkxk?= =?utf-8?B?V0Vhb2tzamdwbkVubHZzVk15VXZZU1M2bVZuU1hLR3VxbWp5b09CMXRtUUNr?= =?utf-8?B?eXA2cDE4TGR2dzFUYU5yS3p6TXQycklUdFhDM0p1OW1EU3VFdFE1aVBhamQ1?= =?utf-8?B?SStLSjAyVmg1WHhuc280OU5DODZPQTVkdUNURGtDeTlCMWM4ckhmUHM0WC9D?= =?utf-8?B?Tm9tdXJMT2ZxeVp3VWpleDNQRGhrbUIzV2s2aFhhWmhqdGdOQ29RYm9ZNEQy?= =?utf-8?Q?kj24=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY4PR01MB16907.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(1580799027)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Zy9WQUo4S1BLbzJFMk5ZV1hXZ1lDdWh3VW1zZG05emQ1cWE4c0tHbkswdmE4?= =?utf-8?B?RGxneXJiQVB4OVBuejQ3LzNJL1JjbWJVaXlqU2JOdTJHK2JLVWlXYW9rSnda?= =?utf-8?B?Rmo1S3RseXV3UWZqMXdKcHVMVEVtR3hBdERvVzkzWUE3anlJejdqTU0rS0VQ?= =?utf-8?B?ZVZEUDBHOXkxdUJKajBZSFV6dEZtdUMvZkF6OHRuSC9hVHhFUVBQYjgvWVJ2?= =?utf-8?B?VkU2SjFhQkF5NngwZVAzczh3UHh1UHpLVnh1ckFsRE4zN3Y3S3lkSzE1blBv?= =?utf-8?B?SVdRWXlNZ1JIV2hFTFFGb0Jjck9lZmJWajFXZ2NvbWNSS013cC84WmJ1enRU?= =?utf-8?B?Q3FJazMwZTM0Yi9IOUc1SHFyb2NBV3p4dmVJNmdwN2k2eUQvL0Vzdi9GMkZV?= =?utf-8?B?MmhYYjNKV2JBNytxbnBXNkEwY0hWT0JzWlovY3k4eStoOVpEMzB2K08wTU5v?= =?utf-8?B?WTVvNkVHMlU5UDUxK0l2YWsvc3B6SzYwWEtRT3RkSGt3UGowamZ0WFBHLzRB?= =?utf-8?B?OG5XWHJCSHljcWVXSUQ5RE5UVE1BNWdWQkdieklDS1dCYlhlRUwvR2EwS2JF?= =?utf-8?B?dUpPdTlGMWRla2Raa0FDOXB2b1QySGdlM0tFVHZ1OUFUakI1UjgyTWRrOXE0?= =?utf-8?B?YkljY0hqWWlVV1U0TG9jMHd5b2REWU9WS3NJb0pXRE9aOTlLVm9oTUwrS2pa?= =?utf-8?B?M0VwVTVEc1p5a2c5MmI1b0dhOCsyUjB4NUtDVHY1SHNBeFgwNy95bjdIcEhh?= =?utf-8?B?RnhSVmdWWkUreEM1S3VoNGp4Z3h5L3FITmx5MzJFWGExQnFsd1pzS0pBRDdW?= =?utf-8?B?Y2diNlRKZkV1Qm4wV1puTElDOVNwTHZYNHIxTlhWMFp2ZVMrUHV4NzRRWmZ4?= =?utf-8?B?Vm8xUnk2TTY5TDdxMS9wQnc5Tmh0QmZQWHFtZXJPU0xxNzBMZm1MZWt3NHpx?= =?utf-8?B?WUZyREdxYTdLWDVGWG0yVEcvV1U5NU1COEg3bmNYbnBteWh2V1E5UkYzK2xJ?= =?utf-8?B?NDRBK25PdnB1Q1dsdGgxTndHRElxNDNaSXhab3BUTDJseDhsNDJWRHV3NlRj?= =?utf-8?B?dDI2S3p1Tldoa2RGUUhMZm5yM1M5b2lXejhKTnlsUmVnY3FVcE9iUzdrRGx5?= =?utf-8?B?WnYwdGVYWkxYNVhYZTVEZWhNWE81eGwyNXdtRVBoMWdUTlQ5VTU3UWk5S3B6?= =?utf-8?B?Rm44ZGE2T3dVeUtGSzBjWGFGOXM3VzJhRkx1QnJQWVZ1WWVBSkN0QTl2anVB?= =?utf-8?B?VEtUSHg4RURxNUVuRk5MRXhlWnYxMFRZc2RFalgyaSt0eWc1RjNsN1F2RzAv?= =?utf-8?B?VmF1V0xKUWwvQ2NsaEJrMEtNamt4SVQ3aGpUamtZWXQ1c21VN1dYM25QN3Jz?= =?utf-8?B?OWVQaFU4ZDIwM01wOE5LTDBlMG5HWjd4WnF3ZjMvZEtGdW9OQWdmRUlnQkY5?= =?utf-8?B?aGphcVpXbWdSb0w4TllSY1V6d1o3b1E2d1VkcXVnWUxGSjV1cTR6dUl6OGJI?= =?utf-8?B?QzlaOG1QY0RWRndSRHFNbkluMVhEWWVLOTUzSCtkVW1obTlPOWRXTFkwTnJZ?= =?utf-8?B?TVFnelVhODR6Z3F5dUlLUldGeVhiajRmOExLak44ZzU2c1Z0bDd1c1lSazdw?= =?utf-8?B?U2J3aThxa2QyYTNNcFk0ZUNKSUsvM2hHMThsb3dueUVPUERMckN1WS9DSmRN?= =?utf-8?B?aTVkRmFsNzlvdU9oSDgyTkorSjI0LzNzRFZYQjJnZW8rOGJzZGpDckM0VFE1?= =?utf-8?B?L1dFNlMvMzQxL0lBa2dxSnNqY2RuR0d4UlUvV0xtRm5oRGk5Zk5UaHFHVGo3?= =?utf-8?B?T0tPUnBsd3Q3cUQ0RkVuc1Z2R01aaVJ1eEFVRkduc0c1YVF1eWJKU2lDWkFB?= =?utf-8?B?ZW1oNUgrTFRHczlCRmtla3NCV21rcmdRRWFqbEZTcG1vTElOdXNpVWh4UUpx?= =?utf-8?B?d1I0bktKdTBZOHQrcVJLNU51cHJrZnZzdlZ4R3NuWE5adTVhY0hYbEh2TkYy?= =?utf-8?B?WXBjYkhvempYQ1lSMUlPZFRvdURZdzlTNDd0VmxHaWkwbHlxQ0g3YXBOY0Yv?= =?utf-8?B?TGJ3L1JUbHRiSTVmSXI4OFZBQU9oZFEySXJWTk53aC92NE1aWmNBNmFnZ25s?= =?utf-8?Q?pPX5b0pIW7wgGBD+I6T0sjzYD?= 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: TY4PR01MB16907.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08367be0-0f43-4dbc-1dcd-08de3d5cc093 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Dec 2025 11:09:31.0111 (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: XNe/V18cujQHVC/MErDP0um6oiEdVYNGyW7a6QV1R5gRZcpUL55iQ4aGgowXl8anB1XJ5JN+xHyEBUwTuagbJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9PR01MB16224 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gVHVlc2RheSwgRGVjZW1iZXIgMTYsIDIwMjUgMjo0NyBQTSBDaGFvIExpIDxsaS5ldmFuLmNo YW9AZ21haWwuY29tPiB3cm90ZToNCj4gPiBPbiBEZWMgMTUsIDIwMjUsIGF0IDEzOjQ4LCBBbWl0 IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gU28sIHdp dGhvdXQgcGF0Y2gsIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gc2lsZW50bHkgcmVwbGljYXRlIHRo ZQ0KPiA+IFVQREFURS9ERUxFVEUuIElkZWFsbHksIHVzZXJzIHNob3VsZCBhbHRlciB0aGUgdGFi bGVzIGFuZCBtYWtlIFJJIGFzDQo+ID4gRlVMTCBpbiBzdWNoIGNhc2VzIGlmIHRoZXkgZG9uJ3Qg aGF2ZSBQSyBmb3Igc3VjaCB0YWJsZXMuIEZhbGxpbmcgYmFjaw0KPiA+IHRvIEZVTEwgZm9yIERF RkFVTFQgd2hlbiB0aGUgdGFibGUgZG9lc24ndCBoYXZlIFBLIGJhc2VkIG9uIEdVQyBoYXMgYQ0K PiA+IGRvd25zaWRlIHRoYXQgaXQgd2lsbCBpbmNyZWFzZSBXQUwgdm9sdW1lIGJ5IGEgbGFyZ2Ug YW1vdW50Lg0KPiANCj4gSSBhZ3JlZSB0aGF0IHRoaXMgZG93bnNpZGUgZXhpc3RzLCBidXQgaXQg aXMgYW4gaW5oZXJlbnQgY29zdCB0aGF0IHVzZXJzIG11c3QNCj4gYWNjZXB0IGlmIHRoZXkgY2hv b3NlIHRvIHJlcGxpY2F0ZSBhbGwgdGFibGVzLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIHBy aW1hcnkNCj4ga2V5LiBJbiBwcmFjdGljZSwgdXNlcnMgd2hvIG9wdCBpbnRvIHN1Y2ggYSBjb25m aWd1cmF0aW9uIGFyZSB0eXBpY2FsbHkgYXdhcmUgb2YNCj4gdGhlIFdBTCBvdmVyaGVhZCBhbmQg bWFrZSB0aGF0IHRyYWRlLW9mZiBjb25zY2lvdXNseS4NCj4gDQo+ID4gSSB0aGluayBpdCBzaG91 bGQgYmUgZG9uZSBzcGVjaWZpYyB0byB0YWJsZXMgdGhhdCB1c2VycyB3YW50IHRvIHJlcGxpY2F0 ZS4NCj4gDQo+IFRoYXQgaXMgd2h5IEkgbWVudGlvbmVkIGVhcmxpZXIgdGhhdCB0aGUgbmV3IEdV QyBzaG91bGQgb25seSBiZSBjb25maWd1cmFibGUNCj4gYXQgdGhlIGRhdGFiYXNlIGxldmVsICh2 aWEgQUxURVIgREFUQUJBU0UpLiBIb3dldmVyLCBJIGFncmVlIHRoYXQgdGhlcmUgaXMNCj4gc3Rp bGwgYSByaXNrIHRoYXQgYSB1c2VyIGNvdWxkIG1pc3Rha2VubHkgc2V0IGl0IGluIHBvc3RncmVz cWwuY29uZiwgdGhlcmVieQ0KPiBtYWtpbmcgaXQgZWZmZWN0aXZlIGZvciB0aGUgZW50aXJlIGNs dXN0ZXIuDQo+IA0KPiA+IEkgZG9uJ3Qga25vdyB3aGF0IGlzIGEgZ29vZCB3YXkgdG8gZ2l2ZSB0 byB1c2VycyB3aG8gZG9uJ3Qgd2FudCB0byBkbw0KPiA+IHRoZSByZXF1aXJlZCBzZXR1cCBidXQg aWYgd2UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSBzb21ldGhpbmcsIGl0IGlzDQo+ID4gYmV0dGVy IHRvIGFsbG93IHN1Y2ggYSB0aGluZyB2aWEgdGhlIHB1YmxpY2F0aW9uIG9wdGlvbiBpbnN0ZWFk Lg0KPiANCj4gVXNpbmcgYSBwdWJsaWNhdGlvbi1sZXZlbCBvcHRpb24gY291bGQgYWxzbyB3b3Jr LiBPbmUgY29tcGxpY2F0aW9uLCBob3dldmVyLA0KPiBpcyB0aGF0IGEgdGFibGUgY2FuIGJlbG9u ZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuIEZvciBleGFtcGxlLCBpZiB0YWJsZV9hDQo+IGJl bG9uZ3MgdG8gYm90aCBwdWJfYSBhbmQgcHViX2IsIGFuZCBvbmx5IHB1Yl9hIGlzIGNvbmZpZ3Vy ZWQgd2l0aA0KPiBmYWxsYmFja190b19mdWxsIHdoaWxlIHB1Yl9iIGtlZXBzIHRoZSBkZWZhdWx0 IGJlaGF2aW9yIChmYWxsYmFja190b19ub25lKSwNCj4gdGhlbiB0aGUgZWZmZWN0aXZlIGJlaGF2 aW9yIGZvciB0YWJsZV9hIHdvdWxkIG5lZWQgdG8gcmVtYWluDQo+IGZhbGxiYWNrX3RvX25vbmUs IG1lYW5pbmcgdGhhdCBVUERBVEUvREVMRVRFIHdvdWxkIHN0aWxsIG5vdCBiZSBhbGxvd2VkIGlm DQo+IHRhYmxlX2EgaGFzIG5vdCBhIHByaW1hcnkga2V5Lg0KDQpJIHRoaW5rIHRoZSBjb21tb24g YXBwcm9hY2ggZm9yIGNvbWJpbmluZyBvcHRpb25zIGJldHdlZW4gcHVibGljYXRpb25zIGlzIHRv DQp1c2UgYW4gIk9SIiBsb2dpYy4gRm9yIGV4YW1wbGUsIGlmIGF0IGxlYXN0IG9uZSBwdWJsaWNh dGlvbidzIG9wdGlvbiBpcyB0cnVlLCB3ZQ0KdHJlYXQgdGhlIG9wdGlvbiBhcyB0cnVlIGZvciBh IGdpdmVuIHRhYmxlLiBUaGlzIHBhdHRlcm4gaXMgZXZpZGVudCBpbg0KQ2hlY2tDbWRSZXBsaWNh SWRlbnRpdHkoKSwgd2hlcmUgd2UgY29uZHVjdCByZXBsaWNhIGlkZW50aXR5IGNoZWNrcyBpZiBh bnkNCnB1YmxpY2F0aW9uIHJlcGxpY2F0ZXMgSU5TRVJUcy9VUERBVEVzIGZvciB0aGUgdGFibGUg ZXZlbiBpZiBzb21lIG90aGVyIHB1YmxpY2F0aW9ucw0KZG8gbm90IHJlcGxpY2F0ZS4NCg0KQW5k IEkgYWxzbyBwcmVmZXIgdXNpbmcgYSBwdWJsaWNhdGlvbiBvcHRpb24gYXMgaXQncyBhbHdheXMg YmVuZWZpY2lhbCB0bw0KbWluaW1pemUgdW5uZWNlc3NhcnkgV0FMIGdlbmVyYXRpb24gd2hlbmV2 ZXIgcG9zc2libGUuDQoNCkJlc3QgUmVnYXJkcywNCkhvdSB6ag0KDQo=