From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2115.outbound.protection.outlook.com [40.107.220.115]) by sourceware.org (Postfix) with ESMTPS id 01DF33858D20 for ; Tue, 29 Aug 2023 08:59:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01DF33858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U0O4oCGRGF2PvbIuF/mG+Mu0Ar+qzVcFPlK9ZbzDPSJZK8M2bA+dS3MjHZDclUbdpusquax0zVKZgot6fYLPdlrN4m6NBZYvIzowliz/cLtBPQgAr+WwP6AKQl6Or5oSBVSQLakN47F3wr96jEM+IIuOzuMPRKcPQ/dltiOZAMZa6XF10omoSJuTdyAtggtpMVyh8aiNd2dOxaHRA//cNMNRXRwweKdi5P+FQHHrfqixsoKbNGacFpGD088T57OByi9zk5Y+5KKK29T/GvAftmTyBHCWjkOuUhxo7+ANI3Z0syUoa4HbNVoZi9uKeA68MNt43C4zY/uhbw/XnR3YtA== 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=9PML6GwlPfI9GTq6elCwMQ0Tjs+NA4FVx/pZjJXrxl0=; b=HgJx6FCbzZgJ91905zfPOzeK2Ox+tJ9qXKFMektjq7u85JtgZZ6Z9Ucz9rnW7jZ93XrIle5l8m3mMyX/K2AVGnTWtOKxGiP2SpPjwLeHi7Ruy8nEySkj8ynd5k5PVvcoPSUGe69Yi0ns8rfKx5D8liZF4PG4Kf0EYvsBKp7RP0YlqlhSjA+Ft6qHOaaaNYTuc4pGHLVsOA3ITeLFwGU2MvQ8pX0fe/cNxQj5MmBrPKkUsYd+WT6S4Aqu5/EMiR12SbHB0C0Ae7VbIzY4DnbiwAwwxlVSMl/dK/lfE6w2k6gEwukEc1TS6LWe1JRfX41Pmazx5FnCPmyBrKfUNEagOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9PML6GwlPfI9GTq6elCwMQ0Tjs+NA4FVx/pZjJXrxl0=; b=EDJPi8sa96odkKT//O+LAM0ACyBVfiUMi8PZGdEbO0FoYAOKq9s/eQ5oTuwq8W4Uz0jx40U+hdVF7cgCP6hDMFlTvuQoRJMbXJDXUHbgDy6D+FOIKXz3oRVeYPr8YDcP8AaipssTg/dW9d27oE6iXeWh40O/GGEDvKnTCXxEb9M= Received: from SN6PR01MB4240.prod.exchangelabs.com (2603:10b6:805:ae::22) by SJ0PR01MB7526.prod.exchangelabs.com (2603:10b6:a03:3db::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.34; Tue, 29 Aug 2023 08:58:57 +0000 Received: from SN6PR01MB4240.prod.exchangelabs.com ([fe80::44ff:531:6d29:85a]) by SN6PR01MB4240.prod.exchangelabs.com ([fe80::44ff:531:6d29:85a%7]) with mapi id 15.20.6699.034; Tue, 29 Aug 2023 08:58:57 +0000 From: Di Zhao OS To: Richard Biener CC: Jeff Law , Martin Jambor , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] [tree-optimization/110279] swap operands in reassoc to reduce cross backedge FMA Thread-Topic: [PATCH] [tree-optimization/110279] swap operands in reassoc to reduce cross backedge FMA Thread-Index: AdnZh/Le9F594Tc5S4ekqukOGNY+CgAfpPqAABFqbYAAABuGoAAA3x2AAAAt8pA= Date: Tue, 29 Aug 2023 08:58:56 +0000 Message-ID: References: <4c3c9a1c-e182-30a9-342d-525adfb8cffd@gmail.com> In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ActionId=b083c4af-27f8-449f-b222-dd016a177f76;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=true;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential (Default);MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2023-08-29T08:14:25Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR01MB4240:EE_|SJ0PR01MB7526:EE_ x-ms-office365-filtering-correlation-id: d5e90118-c7ed-4ce8-55aa-08dba86e2dba x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lDfX2ZijCD/gcgygTbfq8X+PgZpTqVgJ5ZDSFGrW/C89Jzll18HuGpDn4QTEHWmSkbguRxdP4GKz9ZlB97FHGyVskPUNlHCbZXNeXvjtNBDKToqMUboPFnMyNMO2Bybeca/ujKK6Hw9Kj1rVHaa0dH6pabxAScHgBKRUf3LF6/cYPH4dVmj/m69oGMclHbcYJ0lPxg2BFuK49Wcg46jFRCQH9SjTSLLSyWms4In6KNH+doPLaXaFn5Ac72ZrY9Gr6piPSkp66Fhc8E84wr8ZshFB3CPprWRPWqTSTCTYWdUlqnJeQvAHt3/OYsZFufTH7dPuxcwZ2e2NaCjZh0KaGgGBQ8bD3o0oo42+6QY2Vwouzpahxhq2jAgw+RVjdseFNVJzfrinWPaUv6pcGRuSoZZVW1aqkJqFCZP7UYo08mdiA30vAKdA2KcotEpAFV6dgm6M5Hq48Dpj2gThpG6F1U53wa7/tIXXc0iKOiM3Jv+vXiZkJWj8vQdTxpzhE0mAwny4POWoQ/Iy+iEdO/KPX2ailKopKYILeBsXfLhX4kWwO80CoZaipWD/AcASQ78v3kuYgXnpmYuwOFEmn1fCCXnAavZBqhsmidny8r7hKwM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR01MB4240.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(346002)(396003)(39850400004)(366004)(376002)(186009)(451199024)(1800799009)(84970400001)(66899024)(7696005)(71200400001)(6506007)(52536014)(66946007)(53546011)(38100700002)(86362001)(33656002)(38070700005)(55016003)(122000001)(2906002)(83380400001)(76116006)(26005)(9686003)(966005)(6916009)(8676002)(66556008)(4326008)(5660300002)(66446008)(66476007)(478600001)(8936002)(316002)(54906003)(41300700001)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WFBqTllMdmZmOEU4TVFJUTlocEpvWDAzTW5IUnZRSXJtcXdVeGVWby95cGha?= =?utf-8?B?TUVCVENJajh1Z21QT25pWlJKTThtcjlvaUxnUFFQYTB2NHd3V2VGclE4UzFj?= =?utf-8?B?QnlZK2I1Ymtpck9pSjZzMDljcWJwdjFrMTFSL2Q3S09DNEFkd2gxYjlmWmNX?= =?utf-8?B?d3V2L3owZzFwdGM0dERPVEtVNzMrQTNVcFczekpuVVJmOTV5d203Ym96dHpz?= =?utf-8?B?dlhGcVdmalJnemJ6Ly82LytzRWh1cUFwaUx2SDZkK2FoUHZEL0dCa2Q3YmZS?= =?utf-8?B?ZE1kNGt4b0JJVkFRSTFNWVF4V2VqcWszWVZtMXFBclhqMG5vL3BjTGNlNSts?= =?utf-8?B?TktUbmExclVMS1JRSXNKWUxZU0E1QWdLODJ3czZVTUhDcFVTclIwZG8yMEFG?= =?utf-8?B?Sm5jWE1aRVg3OHlVR0puZGF5OUZKYlBpT1JFeGZkMXNTZzEwakcyRGEyY1lD?= =?utf-8?B?UDFVMDVUVTZiK2lROS9QbURYU3RyWE1xbkJNdWdPWjdCLzNtQTAzbFVkQlRl?= =?utf-8?B?YmNGeGZCb0hOdmliVk9GUTZhbEttRkdzdldiSXhVZmxobnZDVldJd2kwZ3Zt?= =?utf-8?B?ejR0VzBKWVJTZXdnam1sWjliVDdma095ai85cndEU1JUWm1xWmdUbkFDdWVD?= =?utf-8?B?Zm9hMitnQlREMWxVbDlVajVYdEIrUSt6VTJwMTV3QktTRG1yVW5ZNnhXcW93?= =?utf-8?B?NGxOMWZvQ0cyTTl6SEVlVWcydi9nelR0Um16UlBwSkxITnByMnJadXFoWWZO?= =?utf-8?B?MEp0cDlMcHNkTUNLMDJ2SVJIN1oxNm1pMlM2V3YzVGtmMStsZWRyNEgxdjFy?= =?utf-8?B?MXlkYnFWVWdOSGVEdm1iZ25Bbmt2SzlNamJDL1htYmxJWG9Mem55OVZwNjNr?= =?utf-8?B?WWtPN2ErZWJLTkhQTkVzZ2sybjQ2OFVsWENtd1Q5c0I5dUJRTDkrRk9ka2Iy?= =?utf-8?B?TEo3WlkzNHJRMDAzSUNQM1NXeXdsTnBvaXVIVHYzNUF4Q0pJaGNRWXpXa0Fm?= =?utf-8?B?SUFXYTlrNTIzUndjcCtOc1VVSWxYUFVMQnBWTGhIMWNhSTB4WlpoVjAxaUNl?= =?utf-8?B?RytYWG94ZlhDb0hEbXdNWGRTalBlK2J3dHlCaHlEdGVXNWx6MjFuOGdtaEV0?= =?utf-8?B?Y1dzTzVQVU95QXl4VzI5VWZZS2RtQy9YclBjYmRZY2xCUkI4YjZCeVQ5OEZI?= =?utf-8?B?Z1FzcDN0MUthV3NFcGt3WFhBbUl3UHYxZVk4TTJLT1UzVElIdEVZZXB5bzE1?= =?utf-8?B?dFArOElXdlVFQ3JpQ3kzNUdDT1Rqb1lkblh5aHBYbndUTXA5U2ZVaTl5dWVV?= =?utf-8?B?Zk5KR0xWTDNRNm5seVdvRDg2MDc0YllWSEJlMXhvYmhhalFjaEtmSjNmcWh1?= =?utf-8?B?MGJVa1I1ODhKeGJpWDlycHlLWHRuRVNXU2VuZHV2ejJTbC9iU2g3d0xLVHhK?= =?utf-8?B?KzVMcFBGTW1nVVRSd0dJL3VXYWxUVXhHM3gzZjAxRngvbCthT2RzV0NQVGtk?= =?utf-8?B?SWFHcVo5VFZpOVlQbHhRTE9nUThsYVVUZ0Q1UjNTUDMrc1JjY0lzOU04RWJF?= =?utf-8?B?TmFMRzVTVTJCVjhBcDhsYS92engwd0djMGhadDZBOStUWTBkbDhHZkJnOUlo?= =?utf-8?B?NU1oRXhyanU2L1pvVE9xYi9PL21rellLMjB4RDNTUEdjZ2l4TVJzWWNEbUxX?= =?utf-8?B?SDRUellKK3dqTTlrSjdPdzRSUU1QNytta1ExbWtNL1NXWlpWMHFKLzdrOUk1?= =?utf-8?B?b3ZudmhJZ0dTOEx1djl5MkMyN0dWSFY0anRIamxuSC9YOTJrZ2FydGR5ei8x?= =?utf-8?B?WitqSUJUNy9jSVB4U0QxcC9iZnNsRDhObDlFWldxdC80bE9xdUJtYldwTldP?= =?utf-8?B?SnZnR3F6ckppRmxsMktTTUFucnAvZVl3ZllvK2JDTUNTYnFoSE82UEpoR1JK?= =?utf-8?B?UEJHMFR6SGpxV25sTWNsd0R6dmdMenlDNW5aMlRuUVlOVzNDQ3ZRYXFvcDVQ?= =?utf-8?B?LzArNUhXakpqRGhjQVhkb2pKd0p2RkVDbHpucTNnUGUwNUwyallFVDVYbnd2?= =?utf-8?B?bDQxRGZsU3VLVHFaUW5ZMmc3QmN4Z3N3dnBQRytrd3FSZWU4L0I5bWxoZVlh?= =?utf-8?B?cWJIL0pRNE1DaUl1Q3krMDBjN1EvTWh2VXpNeUJLeDA2MjQwem5BOHBlVWJV?= =?utf-8?B?VWc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR01MB4240.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5e90118-c7ed-4ce8-55aa-08dba86e2dba X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2023 08:58:56.9679 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vmpKMtKNNG3OHgYmLYAtiPFFrGA1yjO7weeb6BrMrs+y67a1+prpsQMjpxAjxouNI0lZfmUP51/JwRpUh62kyDH5hZBAQ+alN/WyKvECiexI0k+UAmUxesmqoLG0TYx6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR01MB7526 X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBCaWVu ZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MjksIDIwMjMgNDowOSBQTQ0KPiBUbzogRGkgWmhhbyBPUyA8ZGl6aGFvQG9zLmFtcGVyZWNvbXB1 dGluZy5jb20+DQo+IENjOiBKZWZmIExhdyA8amVmZnJleWFsYXdAZ21haWwuY29tPjsgTWFydGlu IEphbWJvciA8bWphbWJvckBzdXNlLmN6PjsgZ2NjLQ0KPiBwYXRjaGVzQGdjYy5nbnUub3JnDQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIFt0cmVlLW9wdGltaXphdGlvbi8xMTAyNzldIHN3YXAgb3Bl cmFuZHMgaW4gcmVhc3NvYyB0bw0KPiByZWR1Y2UgY3Jvc3MgYmFja2VkZ2UgRk1BDQo+IA0KPiBP biBUdWUsIEF1ZyAyOSwgMjAyMyBhdCA5OjQ54oCvQU0gRGkgWmhhbyBPUw0KPiA8ZGl6aGFvQG9z LmFtcGVyZWNvbXB1dGluZy5jb20+IHdyb3RlOg0KPiA+DQo+ID4gSGksDQo+ID4NCj4gPiA+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmlj aGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjks IDIwMjMgMzo0MSBQTQ0KPiA+ID4gVG86IEplZmYgTGF3IDxqZWZmcmV5YWxhd0BnbWFpbC5jb20+ OyBNYXJ0aW4gSmFtYm9yIDxtamFtYm9yQHN1c2UuY3o+DQo+ID4gPiBDYzogRGkgWmhhbyBPUyA8 ZGl6aGFvQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+OyBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZw0K PiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gW3RyZWUtb3B0aW1pemF0aW9uLzExMDI3OV0gc3dh cCBvcGVyYW5kcyBpbiByZWFzc29jDQo+IHRvDQo+ID4gPiByZWR1Y2UgY3Jvc3MgYmFja2VkZ2Ug Rk1BDQo+ID4gPg0KPiA+ID4gT24gVHVlLCBBdWcgMjksIDIwMjMgYXQgMToyM+KAr0FNIEplZmYg TGF3IHZpYSBHY2MtcGF0Y2hlcw0KPiA+ID4gPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90 ZToNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gT24gOC8yOC8yMyAwMjoxNywg RGkgWmhhbyBPUyB2aWEgR2NjLXBhdGNoZXMgd3JvdGU6DQo+ID4gPiA+ID4gVGhpcyBwYXRjaCB0 cmllcyB0byBmaXggdGhlIDIlIHJlZ3Jlc3Npb24gaW4gNTEwLnBhcmVzdF9yIG9uDQo+ID4gPiA+ ID4gYW1wZXJlMSBpbiB0aGUgdHJhY2tlci4gKFByZXZpb3VzIGRpc2N1c3Npb24gaXMgaGVyZToN Cj4gPiA+ID4gPiBodHRwczovL2djYy5nbnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hlcy8yMDIz LUp1bHkvNjI0ODkzLmh0bWwpDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAxLiBBZGQgdGVzdGNhc2Vz IGZvciB0aGUgcHJvYmxlbS4gRm9yIGFuIG9wIGxpc3QgaW4gdGhlIGZvcm0gb2YNCj4gPiA+ID4g PiAiYWNjID0gYSAqIGIgKyBjICogZCArIGFjYyIsIGN1cnJlbnRseSByZWFzc29jaWF0aW9uIGRv ZXNuJ3QNCj4gPiA+ID4gPiBTd2FwIHRoZSBvcGVyYW5kcyBzbyB0aGF0IG1vcmUgRk1BcyBjYW4g YmUgZ2VuZXJhdGVkLg0KPiA+ID4gPiA+IEFmdGVyIHdpZGVuaW5nX211bCB0aGUgcmVzdWx0IGxv b2tzIGxpa2U6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICAgXzEgPSAuRk1BKGEsIGIsIGFjY18w KTsNCj4gPiA+ID4gPiAgICAgYWNjXzEgPSAuRk1BKGMsIGQsIF8xKTsNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IFdoaWxlIHByZXZpb3VzbHkgKGJlZm9yZSB0aGUgIkhhbmRsZSBGTUEgZnJpZW5kbHku Li4iIHBhdGNoKSwNCj4gPiA+ID4gPiB3aWRlbmluZ19tdWwncyByZXN1bHQgd2FzIGxpa2U6DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAgICAgXzEgPSBhICogYjsNCj4gPiA+ID4gPiAgICAgXzIgPSAu Rk1BIChjLCBkLCBfMSk7DQo+ID4gPiA+ID4gICAgIGFjY18xID0gYWNjXzAgKyBfMjsNCj4gPiA+ DQo+ID4gPiBIb3cgY2FuIHdlIGV4ZWN1dGUgdGhlIG11bHRpcGx5IGFuZCB0aGUgRk1BIGluIHBh cmFsbGVsPyAgVGhleQ0KPiA+ID4gZGVwZW5kIG9uIGVhY2ggb3RoZXIuICBPciBpcyBpdCB0aGUg dWFyY2ggY2FuIGhhbmRsZSBkZXBlbmRlbmNlDQo+ID4gPiBvbiB0aGUgYWRkIG9wZXJhbmQgYnV0 IG9ubHkgd2hlbiBpdCBpcyB3aXRoIGEgbXVsdGlwbGljYXRpb24gYW5kDQo+ID4gPiBub3QgYSBG TUEgaW4gc29tZSBiZXR0ZXIgd2F5cz8gIChJJ2QgZG91YnQgc28gbXVjaCBjb21wbGV4aXR5KQ0K PiA+ID4NCj4gPiA+IENhbiB5b3UgZXhwbGFpbiBpbiBtb3JlIGRldGFpbCBob3cgdGhlIHVhcmNo IGV4ZWN1dGVzIG9uZSB2cy4gdGhlDQo+ID4gPiBvdGhlciBjYXNlPw0KDQpIZXJlJ3MgbXkgdW5k ZXJzdGFuZGluZyBhZnRlciBjb25zdWx0ZWQgb3VyIGhhcmR3YXJlIHRlYW0uIEZvciB0aGUNCnNl Y29uZCBjYXNlLCB0aGUgdWFyY2ggb2Ygc29tZSBvdXQtb2Ytb3JkZXIgcHJvY2Vzc29ycyBjYW4g Y2FsY3VsYXRlDQoiXzIiIG9mIHNldmVyYWwgbG9vcHMgYXQgdGhlIHNhbWUgdGltZSwgc2luY2Ug dGhlcmUncyBubyBkZXBlbmRlbmN5DQphbW9uZyBkaWZmZXJlbnQgaXRlcmF0aW9ucy4gV2hpbGUg Zm9yIHRoZSBmaXJzdCBjYXNlIHRoZSBuZXh0IGl0ZXJhdGlvbg0KaGFzIHRvIHdhaXQgZm9yIHRo ZSBjdXJyZW50IGl0ZXJhdGlvbiB0byBmaW5pc2gsIHNvICJhY2NfMCIncyB2YWx1ZSBpcw0Ka25v d24uIEkgYXNzdW1lIGl0IGlzIGFsc28gdGhlIGNhc2UgaW4gc29tZSBpMzg2IHByb2Nlc3NvcnMs IHNpbmNlIEkNCnNhdyB0aGUgcGF0Y2ggIkRlZmVycmluZyBGTUEgdHJhbnNmb3JtYXRpb25zIGlu IHRpZ2h0IGxvb3BzIiBhbHNvDQpjaGFuZ2VkIGNvcnJlc3BvbmRpbmcgZmlsZXMuDQoNCj4gPiA+ DQo+ID4gPiA+ID4gSWYgdGhlIGNvZGUgZnJhZ21lbnQgaXMgaW4gYSBsb29wLCBzb21lIGFyY2hp dGVjdHVyZSBjYW4gZXhlY3V0ZQ0KPiA+ID4gPiA+IHRoZSBsYXR0ZXIgaW4gcGFyYWxsZWwsIHNv IHRoZSBwZXJmb3JtYW5jZSBjYW4gYmUgbXVjaCBmYXN0ZXIgdGhhbg0KPiA+ID4gPiA+IHRoZSBm b3JtZXIuIEZvciB0aGUgc21hbGwgdGVzdGNhc2UsIHRoZSBwZXJmb3JtYW5jZSBnYXAgaXMgb3Zl cg0KPiA+ID4gPiA+IDEwJSBvbiBib3RoIGFtcGVyZTEgYW5kIG5lb3ZlcnNlLW4xLiBTbyB0aGUg cG9pbnQgaGVyZSBpcyB0byBhdm9pZA0KPiA+ID4gPiA+IHR1cm5pbmcgdGhlIGxhc3Qgc3RhdGVt ZW50IGludG8gRk1BLCBhbmQga2VlcCBpdCBhIFBMVVNfRVhQUiBhcw0KPiA+ID4gPiA+IG11Y2gg YXMgcG9zc2libGUuIChJZiB3ZSBhcmUgcmV3cml0aW5nIHRoZSBvcCBsaXN0IGludG8gcGFyYWxs ZWwsDQo+ID4gPiA+ID4gbm8gc3BlY2lhbCB0cmVhdG1lbnQgaXMgbmVlZGVkLCBzaW5jZSB0aGUg bGFzdCBzdGF0ZW1lbnQgYWZ0ZXINCj4gPiA+ID4gPiByZXdyaXRlX2V4cHJfdHJlZV9wYXJhbGxl bCB3aWxsIGJlIFBMVVNfRVhQUiBhbnl3YXkuKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMi4gRnVu Y3Rpb24gcmVzdWx0X2ZlZWRzX2JhY2tfZnJvbV9waGlfcCBpcyB0byBjaGVjayBmb3IgY3Jvc3MN Cj4gPiA+ID4gPiBiYWNrZWRnZSBkZXBlbmRlbmN5LiBBZGRlZCBuZXcgZW51bSBmbWFfc3RhdGUg dG8gZGVzY3JpYmUgdGhlDQo+ID4gPiA+ID4gc3RhdGUgb2YgRk1BIGNhbmRpZGF0ZXMuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBXaXRoIHRoaXMgcGF0Y2gsIHRoZXJlJ3MgYSAzJSBpbXByb3ZlbWVu dCBpbiA1MTAucGFyZXN0X3IgMS1jb3B5DQo+ID4gPiA+ID4gcnVuIG9uIGFtcGVyZTEuIFRoZSBj b21waWxlIG9wdGlvbnMgYXJlOg0KPiA+ID4gPiA+ICItT2Zhc3QgLW1jcHU9YW1wZXJlMSAtZmx0 byAtLXBhcmFtIGF2b2lkLWZtYS1tYXgtYml0cz01MTIiLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g QmVzdCByZWdhcmRzLA0KPiA+ID4gPiA+IERpIFpoYW8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IC0t LS0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgICAgICAgIFBSIHRyZWUtb3B0aW1pemF0aW9uLzEx MDI3OQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+ICAgICAgICAgICogdHJlZS1zc2EtcmVhc3NvYy5jYyAoZW51bSBmbWFfc3RhdGUpOiBO ZXcgZW51bSB0bw0KPiA+ID4gPiA+ICAgICAgICAgIGRlc2NyaWJlIHRoZSBzdGF0ZSBvZiBGTUEg Y2FuZGlkYXRlcyBmb3IgYW4gb3AgbGlzdC4NCj4gPiA+ID4gPiAgICAgICAgICAocmV3cml0ZV9l eHByX3RyZWVfcGFyYWxsZWwpOiBDaGFuZ2VkIGJvb2xlYW4NCj4gPiA+ID4gPiAgICAgICAgICBw YXJhbWV0ZXIgdG8gZW51bSB0eXBlLg0KPiA+ID4gPiA+ICAgICAgICAgIChyZXN1bHRfZmVlZHNf YmFja19mcm9tX3BoaV9wKTogTmV3IGZ1bmN0aW9uIHRvIGNoZWNrDQo+ID4gPiA+ID4gICAgICAg ICAgZm9yIGNyb3NzIGJhY2tlZGdlIGRlcGVuZGVuY3kuDQo+ID4gPiA+ID4gICAgICAgICAgKHJh bmtfb3BzX2Zvcl9mbWEpOiBSZXR1cm4gZW51bSBmbWFfc3RhdGUuIEFkZGVkIG5ldw0KPiA+ID4g PiA+ICAgICAgICAgIHBhcmFtZXRlci4NCj4gPiA+ID4gPiAgICAgICAgICAocmVhc3NvY2lhdGVf YmIpOiBJZiB0aGVyZSdzIGJhY2tlZGdlIGRlcGVuZGVuY3kgaW4gYW4NCj4gPiA+ID4gPiAgICAg ICAgICBvcCBsaXN0LCBzd2FwIHRoZSBvcGVyYW5kcyBiZWZvcmUgcmV3cml0ZV9leHByX3RyZWUu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICAgICAgICAgICogZ2NjLmRnL3ByMTEwMjc5LmM6IE5ldyB0ZXN0Lg0KPiA+ ID4gPiBOb3QgYSByZXZpZXcsIGJ1dCBtb3JlIG9mIGEgcXVlc3Rpb24gLS0gaXNuJ3QgdGhpcyB0 cmFuc2Zvcm1hdGlvbidzDQo+ID4gPiA+IHByb2ZpdGFiaWxpdHkgdWFyY2ggc2Vuc2l0aXZlLiAg aWUsIGp1c3QgYmVjYXVzZSBpdCdzIGJhZCBmb3IgYSBzZXQgb2YNCj4gPiA+ID4gYWFyY2g2NCB1 YXJjaGVzLCBkb2Vzbid0IG1lYW4gaXQncyBiYWQgZXZlcnl3aGVyZS4NCj4gPiA+ID4NCj4gPiA+ ID4gQW5kIGluIGdlbmVyYWwgd2Ugc2h5IGF3YXkgZnJvbSB0cnlpbmcgdG8gYWRqdXN0IGdpbXBs ZSBjb2RlIGJhc2VkIG9uDQo+ID4gPiA+IHVhcmNoIHByZWZlcmVuY2VzLg0KPiA+ID4gPg0KPiA+ ID4gPiBJdCBzZWVtcyB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gdGhpcyBpcyBnaW1wbGUtPnJ0bCBl eHBhbnNpb24uDQo+ID4gPg0KPiA+ID4gQW5vdGhlciBjb21tZW50IGlzIHRoYXQgRk1BIGZvcm1p bmcgaGFzIHRoaXMgZGVmZXJyaW5nIGNvZGUgd2hpY2ggSQ0KPiA+ID4gdGhpbmsgZGVhbHMgZXhh Y3RseSB3aXRoIHRoaXMga2luZCBvZiB0aGluZz8gIENDaW5nIE1hcnRpbiB3aG8gZGlkIHRoaXMN Cj4gPiA+IHdvcmsgYmFzZWQgb24gQU1EIHVhcmNocyBhbHNvIG5vdCB3YW50aW5nIGNyb3NzLWxv b3AgZGVwZW5kZW5jZXMNCj4gPiA+IG9uIEZNQXMgKG9yIHNvKS4gIEluIHBhcnRpY3VsYXIgSSBz ZWUNCj4gPiA+DQo+ID4gPiAgIGlmIChmbWFfc3RhdGUubV9kZWZlcnJpbmdfcA0KPiA+ID4gICAg ICAgJiYgZm1hX3N0YXRlLm1faW5pdGlhbF9waGkpDQo+ID4gPiAgICAgew0KPiA+ID4gICAgICAg Z2NjX2NoZWNraW5nX2Fzc2VydCAoZm1hX3N0YXRlLm1fbGFzdF9yZXN1bHQpOw0KPiA+ID4gICAg ICAgaWYgKCFsYXN0X2ZtYV9jYW5kaWRhdGVfZmVlZHNfaW5pdGlhbF9waGkgKCZmbWFfc3RhdGUs DQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jm1fbGFzdF9yZXN1bHRfc2V0KSkNCj4gPiA+ICAgICAgICAgY2FuY2VsX2ZtYV9kZWZlcnJpbmcg KCZmbWFfc3RhdGUpOw0KPiA+ID4NCj4gPiA+IGFuZCBJIHRoaW5rIGNvZGUgdG8gYXZvaWQgRk1B cyBpbiBvdGhlci9yZWxhdGVkIGNhc2VzIHNob3VsZCBiZSBoZXJlDQo+ID4gPiBhcyB3ZWxsLCBs aWtlIGF2b2lkIGZvcm1pbmcgYmFjay10by1iYWNrIEZNQXMuDQo+ID4NCj4gPiBUaGUgY2hhbmdl cyBpbiB0aGlzIHBhdGNoIGlzIGNvbnRyb2xsZWQgYnkgInBhcmFtX2F2b2lkX2ZtYV9tYXhfYml0 cyIsIHNvDQo+ID4gSSB0aGluayBpdCBzaG91bGQgb25seSBhZmZlY3QgYXJjaGl0ZWN0dXJlcyB3 aXRoIHNpbWlsYXIgYmVoYXZpb3IuIChUaGUNCj4gPiBwYXJhbWV0ZXIgd2FzIGFkZGVkIGluIGEg cHJldmlvdXMgcGF0Y2ggIkRlZmVycmluZyBGTUEgdHJhbnNmb3JtYXRpb25zDQo+ID4gaW4gdGln aHQgbG9vcHMiLCB3aGljaCBzZWVtcyB0byBiZSBkZWFsaW5nIHdpdGggdGhlIHNhbWUgaXNzdWUu KQ0KPiANCj4gVGhhdCdzIHdoYXQgSSBzYWlkLiAgSXMgdGhlIHBpcGVsaW5lIGJlaGF2aW9yIHBy b3Blcmx5IG1vZGVsZWQgYnkgdGhlDQo+IHNjaGVkdWxlciBkZXNjcmlwdGlvbj8gIFlvdXIgcGF0 Y2ggc2VlbXMgdG8gbm90IG9ubHkgYWZmZWN0IGxvb3BzDQo+IGJ1dCB0aGUgRk1BIGZvcm1pbmcg Y2FzZSBhbHJlYWR5IHByZXNlbnQgZG9lcyAtIGlzIHRoZSBjYXNlIHlvdSBhcmUNCj4gYWZ0ZXIg bm90IGluIGEgdGlnaHQgbG9vcD8gIEluIHByaW5jaXBsZSB3aXRoIGEgbG9vcCB3aXRoIGVub3Vn aCBzY2hlZHVsaW5nDQo+IGZyZWVkb20gdGhpcyBzaG91bGQgYmUgYSBub24taXNzdWUgLSB1bmxl c3MgdGhlIHBpcGVsaW5lIG1vZGVsIGlzbid0DQo+IGFjY3VyYXRlIGFuZCB3ZSBwdXQgdGhlIEZN QXMgdG9vIGNsb3NlIHRvZ2V0aGVyPw0KDQpUaGUgY3VycmVudCBkZWZlcnJpbmcgRk1BIHNjaGVt ZSBkaXNjYXJkcyBhbGwgdGhlIEZNQSBjYW5kaWRhdGVzIGluIHRoZSBGTUENCmNoYWluIHRoYXQg aGFzIGxvb3AgZGVwZW5kZW5jeS4gU28gZm9yIHRoaXMgY2FzZSB0aGVyZSB3aWxsIGJlIHRvbyBs ZXNzICh6ZXJvKQ0KRk1BIGdlbmVyYXRlZDsgd2hpbGUgYmVmb3JlIHRoZSAiSGFuZGxlIEZNQSBm cmllbmRseS4uLiIgcGF0Y2ggb3IgYWZ0ZXIgdGhpcw0KcGF0Y2ggd2UgY2FuIHN0aWxsIGhhdmUg MSBGTUEuIEkgYWxzbyB0cmllZCB0byBjaGFuZ2UgdGhlIGRlZmVycmluZyBGTUEgc2NoZW1lDQpz byBvbmx5IHRoZSBsYXN0IEZNQSBpcyBkaXNjYXJkZWQsIGJ1dCBpdCBzdGlsbCBjYW4ndCBzb2x2 ZSB0aGUgcmVncmVzc2lvbi4NCkkgdGhpbmsgaXQncyBiZWNhdXNlIHRoaXMgZGVmZXJyaW5nIHNj aGVtZSBpcyBpbiB0aGUgbGF0ZXIgcGFzcyB3aWRlbmluZ19tdWwsDQp3aGljaCBvbmx5IGRlY2lk ZXMgd2hldGhlciB0byBmb3JtIEZNQSwgYnV0IGRvZXNuJ3QgbWFuaXB1bGF0ZSB0aGUgdHJlZSBm b3INCmJldHRlciBkYXRhIHBhcmFsbGVsaXNtLiBTbyBpdCBzZWVtcyBiZXR0ZXIgdG8gb3B0aW1p emUgZm9yIGRhdGEgcGFyYWxsZWxpc20gDQooc3dhcHBpbmcgdGhlIG9wZXJhbmRzKSBpbiByZWFz c29jIGlmIHdlIGtub3cgdGhlcmUgY2FuIGJlIEZNQXMgd2l0aCBsb29wDQpkZXBlbmRlbmN5LCBh bmQgbGVhdmUgdGhlIGN1cnJlbnQgZGVmZXJyaW5nIEZNQSBzY2hlbWUgYXMgdGhlIGxhc3QgcmVz b3J0Pw0KDQo+IA0KPiBSaWNoYXJkLg0KPiANCj4gPiA+IFJpY2hhcmQuDQo+ID4gPg0KPiA+ID4g PiBKZWZmDQo+ID4NCg0KDQpUaGFua3MsDQpEaSBaaGFvDQo=