From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20078.outbound.protection.outlook.com [40.107.2.78]) by sourceware.org (Postfix) with ESMTPS id AFBF8385740F for ; Mon, 13 Jun 2022 10:09:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AFBF8385740F ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=nGPS0cfamGahLOAm+k35es+7VEa7pSekD94DPULGmGkEfABDkKCh1jEnQI70k75R52tNyei3cJPVK78vQ2ChWz+IognpG3FVrg8CoLP2Q7OitYyDOjRoF6Pl4Gj0NXh8olKKL6oTXbxWigotzr5JTvfHpCcQgQ9XmVq1omhGPcwQjqqp8Cy7BthhIp2noujVmW9WrfbMYqgO4w+0IyQdeSqy7LyYAq2XhMKDipFYUpTo2GxSB3Kii+eX1rmc5EtOKy2fLHxrKH9C/9heGSakl5Xp53Hspij8+fCZkY36I2pVg+SLs2j81gVyuQ6etOqISY1vamGbJOiRe9MUuglh/w== ARC-Message-Signature: i=2; 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=tnq/WnHY2+7G5ONO69v0WHjlaSyvac23Mb7NBkKEBuQ=; b=SgRl5kT9LtwCDm66DyQ6gPvG9Kjjn+cu/DDh3fED4tlOk1ou30ZHBUUhm5v8EFB7C1uSBnCzQ50Pn4jTZIWcIB+ONTDs/HVK0wVPDxhD3Ej+ylZx4wQM2fMkx7u9czcN+R1dAA1TtmV+C/t6ER8PdZzNnn4cRZXMzsTZuFygn852AKmgZZiA3RKD2efYQfXTVMl1tYGu7AY1VpOrwRwdVTyVOHUdXnc6W9NyGCkHnOzsD2LNofxSqy5/dWbMZkKuLa8c0TWaj6iH83Eya6roDqwO6lvlDVmDfiwHYQD0KeXHQ1OEuB+yBXd916qO/NDzaP0/Y6dvc5l0jIbINf+hTA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AM6PR02CA0019.eurprd02.prod.outlook.com (2603:10a6:20b:6e::32) by VI1PR0801MB1934.eurprd08.prod.outlook.com (2603:10a6:800:8a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.16; Mon, 13 Jun 2022 10:09:26 +0000 Received: from AM5EUR03FT008.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:6e:cafe::a3) by AM6PR02CA0019.outlook.office365.com (2603:10a6:20b:6e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20 via Frontend Transport; Mon, 13 Jun 2022 10:09:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT008.mail.protection.outlook.com (10.152.16.123) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12 via Frontend Transport; Mon, 13 Jun 2022 10:09:26 +0000 Received: ("Tessian outbound ff2e13d26e0f:v120"); Mon, 13 Jun 2022 10:09:25 +0000 X-CR-MTA-TID: 64aa7808 Received: from 2c73a54f10a8.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id ADEBB271-AB96-4A4C-827E-7FA521D118BF.1; Mon, 13 Jun 2022 10:09:15 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2c73a54f10a8.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 13 Jun 2022 10:09:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A5joVrTSeT8OUpAttr+zku6zc5SxkjXpBS4XspEWhOz0v0urM/UrfSrK14hxIUG/smJdGGgx5xueXNefNVsMIfhxmHOEMZJtaCrFj7NReBzXLsj9QX6gxuv2TvUjYQ4IooHVvpr+06suiyTOrx8pumTRQ5ufYaktDdquyr4OT4D9xEbhChE2GhiJ0bJ6ZHTg+QiByvl1i05F6aOFkTt6KD4wTO7vuBN34NC1nMMzHEHf6I/PdOWi4GOo2B3V68mYVWtmgAOB//22GO1Wp3de87eQjTTPpxaqc96TD7tr6RG8aedNh6GvPZp0duA06ekSOvThBJXZbV3fgxre54+TYQ== 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=tnq/WnHY2+7G5ONO69v0WHjlaSyvac23Mb7NBkKEBuQ=; b=nOi4muuaW4JEoXBXJXKLngvELR3ZPLylq8hsy0S9hsjqJO/i6V+BEu+IH4hM16ns+Lq0C3C9r+uVJwJEFr614lIU+D+k3DgyEcRjjQtyoMx4XKivEqaJZO/u3F6o+i72Rm5A+rKbY5sSpevdkf6a043bQ2ewRucDMouc8B30aqImEZrSf+QqCB6hVsrxwFACqHpGeNnDx5mX+3PQWO/lDrv9n7l9rhC+9hSbxvd3G4XJ6R9wIMD/eyBCVpGmLFexf9GWIOq09F6thnzhGCBMP5vN2tIFhKhGHlGbBspC1evtzJZOwfGvID4jb73n0cqZfNx78J9pmDcHI0CtXEwTOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DB9PR08MB6921.eurprd08.prod.outlook.com (2603:10a6:10:2a5::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Mon, 13 Jun 2022 10:09:12 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%8]) with mapi id 15.20.5332.020; Mon, 13 Jun 2022 10:09:12 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , Richard Sandiford Subject: RE: [PATCH 1/2]middle-end Support optimized division by pow2 bitmask Thread-Topic: [PATCH 1/2]middle-end Support optimized division by pow2 bitmask Thread-Index: AQHYe7rkG8mCfxiDnUegM0t31rGaD61NFy0AgAAEOACAAAPNUA== Date: Mon, 13 Jun 2022 10:09:12 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: A2E9A8545D23544687DA75630BC1655F.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: ca0644f4-48d6-46b2-607b-08da4d24cbf9 x-ms-traffictypediagnostic: DB9PR08MB6921:EE_|AM5EUR03FT008:EE_|VI1PR0801MB1934:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: NxasGG8d1MFPrz+9FRIA7w2wdKYfSL7wOQm9zwRFaoQX0SQYNW1wp/PhM83kDw+lWkw6gsNt8mE6uv7TcJjmoWvXuuAOnTNFU5ys5Rvs5+poE3z6206XwO5M9Vs5BJZKTy37ij76Alo824FT+Ezr15N7CgF+Y2Slq4tKi/Gh7E57KkXaclhZn0mCYRfgs1pcSmykITSRm1Zb7JJHTU7gi2n2UDA4YKr/jG0GGJGAjRRmbtRYjCK8eNfUOosMPriNs5oIGA/1YpVlXTfc154De5fuHNzsBPmcaLPAg5WA2aezIMAE252mZAXqvT+40e94utuxWUKAdwiZTopPynvA6CtKlV3CmUlHOIXZvohXZSRekSSVO8htoDzfxqVbk4vGTCt7ivyX+hZyo5Ydrei9gr4PA69+eFizWQ1y6j7hQKBTc9j4kRVckI1VeJxkEaJSJZoHOaMxcmFFtgKQ9YNMGLginKUqbd5ucoshUpd+IAdNO8KkjKd781rH/BMqzVnRD1PSW/G1i51u9sDf6sjx2KVV7Dv6QFq1UXPHXH9wWDbGFsuxdNG9N44a9DGRaH4fVAA1N6kDlpsNnsm7ghXYJ4neoAqE2HccP2s2+ImVkcnOJc5AQSQMpc0KuEytkaupk0Prb0Hs30iEjvkHOQ/swu5A0AdgQeLhdcuh0IEFO9ynPpGEVYvzN9lt+pM8rmUE2X+ED1lgOuvEzYNpazIFMXR6/qANZ39QLGwpKgI7bdHy2Ya/QBmGVG7dTo+u4EMTTxhAr9Yh8OX+40uWU1L1c48AjV9G08BTGPwZQpF0kgMzTWeQQyDn+fvP0LR4kCUD1jG+xxVAasIB3CtMHsQsSw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(366004)(38100700002)(26005)(9686003)(66574015)(316002)(7696005)(6506007)(53546011)(5660300002)(52536014)(55016003)(8936002)(30864003)(33656002)(8676002)(64756008)(66946007)(508600001)(122000001)(86362001)(2906002)(4326008)(66476007)(66446008)(83380400001)(38070700005)(66556008)(186003)(54906003)(6916009)(76116006)(71200400001)(84970400001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6921 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT008.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 014abfed-1118-4bc6-3c73-08da4d24c384 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NYzvDGQRgF8nxE8JRpHK77oVmeOCUbkiPQSaCm0evOnKekZswCg1aROXg6UfNKDd/XJqF8Ki+ddzadryZbuJ1312MCB5nySnoNNW6GWTVj7oU3BVv60sgwcfIp6znXxMzZn8j0HKsCR6/X2c3dCNQ44J0o5X2Fb2Ngv1d/R3tDO9ERxFyQtKBg3zXVmO8TnPm6m+11alLSz5kwwrfcb1ZNWUb7RH5QSbbhHZUISsWvVt5RMjGR/kI9H5DTnt4G0qt5yOscGH/7VE2C79Ryq060kdJ/D3v/Aoa0qnjfrq7lDAsRU2hCeu7VrVwKPPHCJf7j9qtTfvQfBXDcukJtzXXZJcE0zpTODq32/Tijlb7tcu0nb58TUNU6JYSnTDSqUjhI3hDb4DZtVXrBMNo9IeI+lvKzfNafQl46jshqoAVAfRGq2B2OUT4jOqKxnn4M49Fy3BOqYFT6ZQVBDduOgwcrmFkDnGTz4hs/W4gBrnJBbHPhYmjXW6kn9E3gxxfoez5PPePMdhVVnIb25gGW70Kc/TcVOREhORl3LIFur6EQB09TuPtDM47sHfYtdJVdgPe53yDjO9e54MQ9HsxwW76oKS3qSxhiaW1fotrlDSYGvLs0bDPL+DqmAq/Tdu2RWz83PsFekWgcaPRWNM7TY8HPiLXQDkILhcQuA0tUxNLgJMd6WrmvijbP8dCcv2Vnp9WUyRRabmu1R0WYP9PsBVtazwnFrPjZ79VBkbj7WSBRiJB7er8ph58POSle+GrzpWxL0wtNrny0F/KfNsyOLVs3eDLewevIybz+PKUI51i1LiQQW7KDOYl2HnynEe3p6w X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230016)(4636009)(40470700004)(46966006)(36840700001)(8676002)(4326008)(86362001)(33656002)(55016003)(82310400005)(36860700001)(52536014)(5660300002)(30864003)(81166007)(6862004)(8936002)(54906003)(2906002)(40460700003)(316002)(70206006)(66574015)(508600001)(26005)(186003)(70586007)(53546011)(7696005)(6506007)(84970400001)(83380400001)(9686003)(47076005)(356005)(336012); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2022 10:09:26.0438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ca0644f4-48d6-46b2-607b-08da4d24cbf9 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT008.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1934 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2022 10:09:33 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IE1vbmRheSwgSnVuZSAxMywgMjAyMiAxMDozOSBBTQ0K PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6IGdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IFJpY2hhcmQgU2FuZGlmb3Jk DQo+IDxSaWNoYXJkLlNhbmRpZm9yZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEv Ml1taWRkbGUtZW5kIFN1cHBvcnQgb3B0aW1pemVkIGRpdmlzaW9uIGJ5IHBvdzINCj4gYml0bWFz aw0KPiANCj4gT24gTW9uLCAxMyBKdW4gMjAyMiwgUmljaGFyZCBCaWVuZXIgd3JvdGU6DQo+IA0K PiA+IE9uIFRodSwgOSBKdW4gMjAyMiwgVGFtYXIgQ2hyaXN0aW5hIHdyb3RlOg0KPiA+DQo+ID4g PiBIaSBBbGwsDQo+ID4gPg0KPiA+ID4gSW4gcGxlbnR5IG9mIGltYWdlIGFuZCB2aWRlbyBwcm9j ZXNzaW5nIGNvZGUgaXQncyBjb21tb24gdG8gbW9kaWZ5DQo+ID4gPiBwaXhlbCB2YWx1ZXMgYnkg YSB3aWRlbmluZyBvcGVyYXRpb24gYW5kIHRoZW4gc2NhbGUgdGhlbSBiYWNrIGludG8gcmFuZ2UN Cj4gYnkgZGl2aWRpbmcgYnkgMjU1Lg0KPiA+ID4NCj4gPiA+IFRoaXMgcGF0Y2ggYWRkcyBhbiBv cHRhYiB0byBhbGxvdyB1cyB0byBlbWl0IGFuIG9wdGltaXplZCBzZXF1ZW5jZQ0KPiA+ID4gd2hl biBkb2luZyBhbiB1bnNpZ25lZCBkaXZpc2lvbiB0aGF0IGlzIGVxdWl2YWxlbnQgdG86DQo+ID4g Pg0KPiA+ID4gICAgeCA9IHkgLyAoMiBeIChiaXRzaXplICh5KS8yKS0xDQo+ID4gPg0KPiA+ID4g Qm9vdHN0cmFwcGVkIFJlZ3Rlc3RlZCBvbiBhYXJjaDY0LW5vbmUtbGludXgtZ251LA0KPiA+ID4g eDg2XzY0LXBjLWxpbnV4LWdudSBhbmQgbm8gaXNzdWVzLg0KPiA+ID4NCj4gPiA+IE9rIGZvciBt YXN0ZXI/DQo+ID4NCj4gPiBMb29raW5nIGF0IDIvMiBpdCBzZWVtcyB0aGF0IHRoaXMgaXMgdGhl IHdyb25nIHdheSB0byBhdHRhY2sgdGhlDQo+ID4gcHJvYmxlbS4gIFRoZSBJU0EgZG9lc24ndCBo YXZlIHN1Y2ggaW5zdHJ1Y3Rpb24gc28gYWRkaW5nIGFuIG9wdGFiDQo+ID4gbG9va3MgcHJlbWF0 dXJlLiAgSSBzdXBwb3NlIHRoYXQgdGhlcmUncyBubyB1bnNpZ25lZCB2ZWN0b3IgaW50ZWdlcg0K PiA+IGRpdmlzaW9uIGFuZCB0aHVzIHdlIG9wZW4tY29kZSB0aGF0IGluIGEgZGlmZmVyZW50IHdh eT8gIElzbid0IHRoZQ0KPiA+IGNvcnJlY3QgdGhpbmcgdGhlbiB0byBmaXh1cCB0aGF0IG9wZW4t Y29kaW5nIGlmIGl0IGlzIG1vcmUgZWZmaWNpZW50Pw0KPiANCg0KVGhlIHByb2JsZW0gaXMgdGhh dCBldmVuIGlmIHlvdSBmaXh1cCB0aGUgb3Blbi1jb2RpbmcgaXQgd291bGQgbmVlZCB0bw0KYmUg c29tZXRoaW5nIHRhcmdldCBzcGVjaWZpYz8gVGhlIHNlcXVlbmNlIG9mIGluc3RydWN0aW9ucyB3 ZSBnZW5lcmF0ZQ0KZG9uJ3QgaGF2ZSBhIEdJTVBMRSByZXByZXNlbnRhdGlvbi4gIFNvIHdoYXRl dmVyIGlzIGdlbmVyYXRlZCBJJ2QgaGF2ZSB0byBmaXh1cA0KaW4gUlRMIHRoZW4uDQoNClRoZSBw cm9ibGVtIHdpdGggdGhpcyBpcyB0aGF0IGl0IHNlZW1lZCBmcmFnaWxlLiBXZSBnZW5lcmF0ZSBm cm9tIHRoZQ0KVmVjdG9yaXplcjoNCg0KICB2ZWN0X18zLjhfMzUgPSBNRU0gPHZlY3RvcigxNikg dW5zaWduZWQgY2hhcj4gWyh1aW50OF90ICopXzIxXTsNCiAgdmVjdF9wYXR0XzI4LjlfMzcgPSBX SURFTl9NVUxUX0xPX0VYUFIgPHZlY3RfXzMuOF8zNSwgdmVjdF9jc3RfXzM2PjsNCiAgdmVjdF9w YXR0XzI4LjlfMzggPSBXSURFTl9NVUxUX0hJX0VYUFIgPHZlY3RfXzMuOF8zNSwgdmVjdF9jc3Rf XzM2PjsNCiAgdmVjdF9wYXR0XzE5LjEwXzQwID0gdmVjdF9wYXR0XzI4LjlfMzcgaCogeyAzMjg5 NywgMzI4OTcsIDMyODk3LCAzMjg5NywgMzI4OTcsIDMyODk3LCAzMjg5NywgMzI4OTcgfTsNCiAg dmVjdF9wYXR0XzE5LjEwXzQxID0gdmVjdF9wYXR0XzI4LjlfMzggaCogeyAzMjg5NywgMzI4OTcs IDMyODk3LCAzMjg5NywgMzI4OTcsIDMyODk3LCAzMjg5NywgMzI4OTcgfTsNCiAgdmVjdF9wYXR0 XzI1LjExXzQyID0gdmVjdF9wYXR0XzE5LjEwXzQwID4+IDc7DQogIHZlY3RfcGF0dF8yNS4xMV80 MyA9IHZlY3RfcGF0dF8xOS4xMF80MSA+PiA3Ow0KICB2ZWN0X3BhdHRfMTEuMTJfNDQgPSBWRUNf UEFDS19UUlVOQ19FWFBSIDx2ZWN0X3BhdHRfMjUuMTFfNDIsIHZlY3RfcGF0dF8yNS4xMV80Mz47 DQoNCmFuZCBpZiB0aGUgbWFnaWMgY29uc3RhbnRzIGNoYW5nZSB0aGVuIHdlIG1pc3MgdGhlIG9w dGltaXphdGlvbi4gSSBjb3VsZCByZXdyaXRlIHRoZSBvcGVuIGNvZGluZyB0byB1c2UNCnNoaWZ0 cyBhbG9uZSwgYnV0IHRoYXQgbWlnaHQgYmUgYSByZWdyZXNzaW9uIGZvciBzb21lIHVhcmNoZXMg SSB3b3VsZCBpbWFnaW5lLg0KDQo+IEJ0dywgb24geDg2IHdlIHVzZQ0KPiANCj4gdC5jOjM6MjE6 IG5vdGU6ICAgcmVwbGFjaW5nIGVhcmxpZXIgcGF0dGVybiBwYXR0XzI1ID0gcGF0dF8yOCAvIDI1 NTsNCj4gdC5jOjM6MjE6IG5vdGU6ICAgd2l0aCBwYXR0XzI1ID0gcGF0dF8xOSA+PiA3Ow0KPiB0 LmM6MzoyMTogbm90ZTogICBleHRyYSBwYXR0ZXJuIHN0bXQ6IHBhdHRfMTkgPSBwYXR0XzI4IGgq IDMyODk3Ow0KPiANCj4gd2hpY2ggdHJhbnNsYXRlcyB0bw0KPiANCj4gICAgICAgICB2cG11bGh1 dyAgICAgICAgJXltbTQsICV5bW0wLCAleW1tMA0KPiAgICAgICAgIHZwbXVsaHV3ICAgICAgICAl eW1tNCwgJXltbTEsICV5bW0xDQo+ICAgICAgICAgdnBzcmx3ICAkNywgJXltbTAsICV5bW0wDQo+ ICAgICAgICAgdnBzcmx3ICAkNywgJXltbTEsICV5bW0xDQo+IA0KPiB0aGVyZSdzIG9kZA0KPiAN Cj4gICAgICAgICB2cGFuZCAgICV5bW0wLCAleW1tMywgJXltbTANCj4gICAgICAgICB2cGFuZCAg ICV5bW0xLCAleW1tMywgJXltbTENCj4gDQo+IGJlZm9yZSAoJXltbTMgaXMgYWxsIDB4MDBmZikN Cj4gDQo+ICAgICAgICAgdnBhY2t1c3diICAgICAgICV5bW0xLCAleW1tMCwgJXltbTANCj4gDQo+ IHRoYXQncyBub3QgdmlzaWJsZSBpbiBHSU1QTEUuICBJIGd1ZXNzIGFhcmNoNjQgbGFja3MgYSBo aWdocGFydCBtdWx0aXBseSBoZXJlPw0KPiBJbiBhbnkgY2FzZSwgaXQgc2VlbXMgdGhhdCBnZW5l cmljIGRpdmlzaW9uIGV4cGFuc2lvbiBjb3VsZCBiZSBpbXByb3ZlZA0KPiBoZXJlPyAoY2hvb3Nl X211bHRpcGxpZXI/KQ0KDQpXZSBkbyBnZW5lcmF0ZSBtdWx0aXBseSBoaWdocGFydCBoZXJlLCBi dXQgdGhlIHBhdGNoIGNvbXBsZXRlbHkgYXZvaWRzIG11bHRpcGxpZXMNCmFuZCBzaGlmdHMgZW50 aXJlbHkgYnkgY3JlYXRpdmUgdXNlIG9mIHRoZSBJU0EuIEFub3RoZXIgcmVhc29uIEkgd2VudCBm b3IgYW4gb3B0YWIgaXMgY29zdGluZy4NClRoZSBjaG9zZW4gb3BlcmF0aW9ucyBhcmUgc2lnbmlm aWNhbnRseSBjaGVhcGVyIG9uIGFsbCBBcm0gdWFyY2hlcyB0aGFuIFNoaWZ0cyBhbmQgbXVsdGlw bHkuDQoNClRoaXMgbWVhbnMgd2UgZ2V0IHZlY3Rvcml6YXRpb24gaW4gc29tZSBjYXNlcyB3aGVy ZSB0aGUgY29zdCBtb2RlbCB3b3VsZCBjb3JyZWN0bHkgc2F5DQpJdCdzIHRvbyBleHBlbnNpdmUg dG8gdmVjdG9yaXplLiBQYXJ0aWN1bGFybHkgYXJvdW5kIGRvdWJsZSBwcmVjaXNpb24uDQoNClRo YW5rcywNClRhbWFyDQoNCj4gDQo+IFJpY2hhcmQuDQo+IA0KPiA+IFJpY2hhcmQuDQo+ID4NCj4g PiA+IFRoYW5rcywNCj4gPiA+IFRhbWFyDQo+ID4gPg0KPiA+ID4gZ2NjL0NoYW5nZUxvZzoNCj4g PiA+DQo+ID4gPiAJKiBpbnRlcm5hbC1mbi5kZWYgKERJVl9QT1cyX0JJVE1BU0spOiBOZXcuDQo+ ID4gPiAJKiBvcHRhYnMuZGVmICh1ZGl2X3BvdzJfYml0bWFza19vcHRhYik6IE5ldy4NCj4gPiA+ IAkqIGRvYy9tZC50ZXhpOiBEb2N1bWVudCBpdC4NCj4gPiA+IAkqIHRyZWUtdmVjdC1wYXR0ZXJu cy5jYyAodmVjdF9yZWNvZ19kaXZtb2RfcGF0dGVybik6IFJlY29nbml6ZQ0KPiBwYXR0ZXJuLg0K PiA+ID4NCj4gPiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+ID4NCj4gPiA+IAkqIGdj Yy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMS5jOiBOZXcgdGVzdC4NCj4gPiA+IAkqIGdjYy5k Zy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMi5jOiBOZXcgdGVzdC4NCj4gPiA+IAkqIGdjYy5kZy92 ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMy5jOiBOZXcgdGVzdC4NCj4gPiA+IAkqIGdjYy5kZy92ZWN0 L3ZlY3QtZGl2LWJpdG1hc2suaDogTmV3IGZpbGUuDQo+ID4gPg0KPiA+ID4gLS0tIGlubGluZSBj b3B5IG9mIHBhdGNoIC0tDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2Nj L2RvYy9tZC50ZXhpIGluZGV4DQo+ID4gPg0KPiBmMzYxOWM1MDVjMDI1ZjE1OGMyYmM2NDc1NjUz MTg3NzM3OGIyMmUxLi43ODRjNDlkN2QyNGNlZjc2MTllNGQ2MTNmNw0KPiA+ID4gYjRmNmU5NDU4 NjZjMzggMTAwNjQ0DQo+ID4gPiAtLS0gYS9nY2MvZG9jL21kLnRleGkNCj4gPiA+ICsrKyBiL2dj Yy9kb2MvbWQudGV4aQ0KPiA+ID4gQEAgLTU1ODgsNiArNTU4OCwxOCBAQCBzaWduZWQgb3AwLCBv cDE7DQo+ID4gPiAgb3AwID0gb3AxIC8gKDEgPDwgaW1tKTsNCj4gPiA+ICBAZW5kIHNtYWxsZXhh bXBsZQ0KPiA+ID4NCj4gPiA+ICtAY2luZGV4IEBjb2Rle3VkaXZfcG93Ml9iaXRtYXNrQHZhcntt Mn19IGluc3RydWN0aW9uIHBhdHRlcm4NCj4gQGl0ZW0NCj4gPiA+ICtAc2FtcHt1ZGl2X3BvdzJf Yml0bWFza0B2YXJ7bTJ9fSBAY2luZGV4DQo+ID4gPiArQGNvZGV7dWRpdl9wb3cyX2JpdG1hc2tA dmFye20yfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybiBAaXRlbXgNCj4gPiA+ICtAc2FtcHt1ZGl2X3Bv dzJfYml0bWFza0B2YXJ7bTJ9fSBVbnNpZ25lZCB2ZWN0b3IgZGl2aXNpb24gYnkgYW4NCj4gPiA+ ICtpbW1lZGlhdGUgdGhhdCBpcyBlcXVpdmFsZW50IHRvDQo+ID4gPiArQHNhbXB7Ml4oYml0c2l6 ZShtKSAvIDIpIC0gMX0uDQo+ID4gPiArQHNtYWxsZXhhbXBsZQ0KPiA+ID4gK3Vuc2lnbmVkIHNo b3J0IG9wMDsgb3AxOw0KPiA+ID4gK0Bkb3Rze30NCj4gPiA+ICtvcDAgPSBvcDEgLyAweGZmVTsN Cj4gPiA+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPiA+ID4gKw0KPiA+ID4gIEBjaW5kZXggQGNvZGV7 dmVjX3NobF9pbnNlcnRfQHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybiAgQGl0ZW0NCj4gPiA+ IEBzYW1we3ZlY19zaGxfaW5zZXJ0X0B2YXJ7bX19ICBTaGlmdCB0aGUgZWxlbWVudHMgaW4gdmVj dG9yIGlucHV0DQo+ID4gPiBvcGVyYW5kIDEgbGVmdCBvbmUgZWxlbWVudCAoaS5lLkA6DQo+ID4g PiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYg aW5kZXgNCj4gPiA+DQo+IGQyZDU1MGQzNTg2MDYwMjJiMWNiNDRmYTg0MmYwNmUwYmU1MDdiYzMu LmEzZTNjYzE1MjBmNzc2ODNlYmY2MjU2ODk4DQo+ID4gPiBmOTE2ZWQ0NWRlNDc1ZiAxMDA2NDQN Cj4gPiA+IC0tLSBhL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPiA+ICsrKyBiL2djYy9pbnRlcm5h bC1mbi5kZWYNCj4gPiA+IEBAIC0xNTksNiArMTU5LDggQEAgREVGX0lOVEVSTkFMX09QVEFCX0ZO IChWRUNfU0hMX0lOU0VSVCwNCj4gRUNGX0NPTlNUIHwgRUNGX05PVEhST1csDQo+ID4gPiAgCQkg ICAgICAgdmVjX3NobF9pbnNlcnQsIGJpbmFyeSkNCj4gPiA+DQo+ID4gPiAgREVGX0lOVEVSTkFM X09QVEFCX0ZOIChESVZfUE9XMiwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csDQo+ID4gPiBzZGl2 X3BvdzIsIGJpbmFyeSkNCj4gPiA+ICtERUZfSU5URVJOQUxfT1BUQUJfRk4gKERJVl9QT1cyX0JJ VE1BU0ssIEVDRl9DT05TVCB8DQo+IEVDRl9OT1RIUk9XLA0KPiA+ID4gKwkJICAgICAgIHVkaXZf cG93Ml9iaXRtYXNrLCB1bmFyeSkNCj4gPiA+DQo+ID4gPiAgREVGX0lOVEVSTkFMX09QVEFCX0ZO IChGTVMsIEVDRl9DT05TVCwgZm1zLCB0ZXJuYXJ5KQ0KPiA+ID4gREVGX0lOVEVSTkFMX09QVEFC X0ZOIChGTk1BLCBFQ0ZfQ09OU1QsIGZubWEsIHRlcm5hcnkpIGRpZmYgLS1naXQNCj4gPiA+IGEv Z2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZiBpbmRleA0KPiA+ID4NCj4gODAxMzEwZWJh YTdkNDY5NTIwODA5YmI3ZWZlZDY4MjBmOGViODY2Yi4uM2YwYWMwNWVmNWFkNWFlZDhkNmNhMzkx Zg0KPiA0DQo+ID4gPiBlZWQ3MWIwNDk0ZTE3ZiAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy9vcHRh YnMuZGVmDQo+ID4gPiArKysgYi9nY2Mvb3B0YWJzLmRlZg0KPiA+ID4gQEAgLTM3Miw2ICszNzIs NyBAQCBPUFRBQl9EIChzbXVsaHJzX29wdGFiLCAic211bGhycyRhMyIpDQo+IE9QVEFCX0QNCj4g PiA+ICh1bXVsaHNfb3B0YWIsICJ1bXVsaHMkYTMiKSAgT1BUQUJfRCAodW11bGhyc19vcHRhYiwg InVtdWxocnMkYTMiKQ0KPiA+ID4gT1BUQUJfRCAoc2Rpdl9wb3cyX29wdGFiLCAic2Rpdl9wb3cy JGEzIikNCj4gPiA+ICtPUFRBQl9EICh1ZGl2X3BvdzJfYml0bWFza19vcHRhYiwgInVkaXZfcG93 Ml9iaXRtYXNrJGEyIikNCj4gPiA+ICBPUFRBQl9EICh2ZWNfcGFja19zZml4X3RydW5jX29wdGFi LCAidmVjX3BhY2tfc2ZpeF90cnVuY18kYSIpDQo+ID4gPiBPUFRBQl9EICh2ZWNfcGFja19zc2F0 X29wdGFiLCAidmVjX3BhY2tfc3NhdF8kYSIpICBPUFRBQl9EDQo+ID4gPiAodmVjX3BhY2tfdHJ1 bmNfb3B0YWIsICJ2ZWNfcGFja190cnVuY18kYSIpIGRpZmYgLS1naXQNCj4gPiA+IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTEuYw0KPiA+ID4gYi9nY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMS5jDQo+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gaW5kZXgNCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLmE3ZWEzY2NlNDc2NDIzOWM1ZDI4MWE4ZjBiDQo+ID4gPiBlYWQx ZjZhNDUyZGUzZg0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTEuYw0KPiA+ID4gQEAgLTAsMCArMSwyNSBA QA0KPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8N Cj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gPiArI2luY2x1ZGUgInRy ZWUtdmVjdC5oIg0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgTiA1MA0KPiA+ID4gKyNkZWZpbmUg VFlQRSB1aW50OF90DQo+ID4gPiArDQo+ID4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEsIG5vaW5s aW5lLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMShUWVBFKg0KPiA+ID4gK3Jlc3RyaWN0IHBp eGVsLCBUWVBFIGxldmVsLCBpbnQgbikgew0KPiA+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBu OyBpKz0xKQ0KPiA+ID4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqIGxldmVsKSAvIDB4ZmY7 IH0NCj4gPiA+ICsNCj4gPiA+ICtfX2F0dHJpYnV0ZV9fKChub2lwYSwgbm9pbmxpbmUsIG9wdGlt aXplKCJPMyIpKSkgdm9pZCBmdW4yKFRZUEUqDQo+ID4gPiArcmVzdHJpY3QgcGl4ZWwsIFRZUEUg bGV2ZWwsIGludCBuKSB7DQo+ID4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEpDQo+ ID4gPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogbGV2ZWwpIC8gMHhmZjsgfQ0KPiA+ID4g Kw0KPiA+ID4gKyNpbmNsdWRlICJ2ZWN0LWRpdi1iaXRtYXNrLmgiDQo+ID4gPiArDQo+ID4gPiAr LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJu Og0KPiA+ID4gK2RldGVjdGVkIiAidmVjdCIgfSB9ICovDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTIuYw0KPiA+ID4gYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMi5jDQo+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXgNCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOWUxNmUxYjM2NDk3ZTU3MjQ0MTBkOTgNCj4gNA0KPiA+ ID4gM2YxY2UxMjJiMjZkZGENCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay0yLmMNCj4gPiA+IEBAIC0wLDAg KzEsMjUgQEANCj4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2lu dCB9ICovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ID4gKyNpbmNs dWRlICJ0cmVlLXZlY3QuaCINCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIE4gNTANCj4gPiA+ICsj ZGVmaW5lIFRZUEUgdWludDE2X3QNCj4gPiA+ICsNCj4gPiA+ICtfX2F0dHJpYnV0ZV9fKChub2lw YSwgbm9pbmxpbmUsIG9wdGltaXplKCJPMSIpKSkgdm9pZCBmdW4xKFRZUEUqDQo+ID4gPiArcmVz dHJpY3QgcGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7DQo+ID4gPiArICBmb3IgKGludCBpID0g MDsgaSA8IG47IGkrPTEpDQo+ID4gPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogbGV2ZWwp IC8gMHhmZmZmVTsgfQ0KPiA+ID4gKw0KPiA+ID4gK19fYXR0cmlidXRlX18oKG5vaXBhLCBub2lu bGluZSwgb3B0aW1pemUoIk8zIikpKSB2b2lkIGZ1bjIoVFlQRSoNCj4gPiA+ICtyZXN0cmljdCBw aXhlbCwgVFlQRSBsZXZlbCwgaW50IG4pIHsNCj4gPiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg bjsgaSs9MSkNCj4gPiA+ICsgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0gKiBsZXZlbCkgLyAweGZm ZmZVOyB9DQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgInZlY3QtZGl2LWJpdG1hc2suaCINCj4g PiA+ICsNCj4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInZlY3RfcmVjb2df ZGl2bW9kX3BhdHRlcm46DQo+ID4gPiArZGV0ZWN0ZWQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMy5j DQo+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay0zLmMN Cj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleA0KPiA+ID4NCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYzNWEwYmRhODMzM2M0MThlNjky ZDk0Mg0KPiAyDQo+ID4gPiAwZGY4NDljYzQ3OTMwYg0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTMuYw0K PiA+ID4gQEAgLTAsMCArMSwyNiBAQA0KPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LWZuby12ZWN0LWNvc3QtbW9kZWwiIHsgdGFyZ2V0DQo+ID4gPiArYWFyY2g2NCotKi0qIH0gfSAq Lw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiA+ICsjaW5jbHVkZSAi dHJlZS12ZWN0LmgiDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBOIDUwDQo+ID4gPiArI2RlZmlu ZSBUWVBFIHVpbnQzMl90DQo+ID4gPiArDQo+ID4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEsIG5v aW5saW5lLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMShUWVBFKg0KPiA+ID4gK3Jlc3RyaWN0 IHBpeGVsLCBUWVBFIGxldmVsLCBpbnQgbikgew0KPiA+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyBpKz0xKQ0KPiA+ID4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqICh1aW50NjRfdCls ZXZlbCkgLyAweGZmZmZmZmZmVUw7IH0NCj4gPiA+ICsNCj4gPiA+ICtfX2F0dHJpYnV0ZV9fKChu b2lwYSwgbm9pbmxpbmUsIG9wdGltaXplKCJPMyIpKSkgdm9pZCBmdW4yKFRZUEUqDQo+ID4gPiAr cmVzdHJpY3QgcGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7DQo+ID4gPiArICBmb3IgKGludCBp ID0gMDsgaSA8IG47IGkrPTEpDQo+ID4gPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogKHVp bnQ2NF90KWxldmVsKSAvIDB4ZmZmZmZmZmZVTDsgfQ0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRl ICJ2ZWN0LWRpdi1iaXRtYXNrLmgiDQo+ID4gPiArDQo+ID4gPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJ2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJuOg0KPiA+ID4gK2RldGVjdGVk IiAidmVjdCIgfSB9ICovDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dmVjdC92ZWN0LWRpdi1iaXRtYXNrLmgNCj4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWRpdi1iaXRtYXNrLmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBp bmRleA0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u MjlhMTY3MzlhYTRiNzA2NjE2MzY3YmZkMQ0KPiA4DQo+ID4gPiAzMmYyOGViZDA3OTkzZQ0KPiA+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LWRpdi1iaXRtYXNrLmgNCj4gPiA+IEBAIC0wLDAgKzEsNDMgQEANCj4gPiA+ICsjaW5jbHVk ZSA8c3RkaW8uaD4NCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVmIE4NCj4gPiA+ICsjZGVmaW5lIE4g NjUNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVmIFRZUEUNCj4gPiA+ICsj ZGVmaW5lIFRZUEUgdWludDMyX3QNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsjaWZu ZGVmIERFQlVHDQo+ID4gPiArI2RlZmluZSBERUJVRyAwDQo+ID4gPiArI2VuZGlmDQo+ID4gPiAr DQo+ID4gPiArI2RlZmluZSBCQVNFICgoVFlQRSkgLTEgPCAwID8gLTEyNiA6IDQpDQo+ID4gPiAr DQo+ID4gPiAraW50IG1haW4gKCkNCj4gPiA+ICt7DQo+ID4gPiArICBUWVBFIGFbTl07DQo+ID4g PiArICBUWVBFIGJbTl07DQo+ID4gPiArDQo+ID4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47 ICsraSkNCj4gPiA+ICsgICAgew0KPiA+ID4gKyAgICAgIGFbaV0gPSBCQVNFICsgaSAqIDEzOw0K PiA+ID4gKyAgICAgIGJbaV0gPSBCQVNFICsgaSAqIDEzOw0KPiA+ID4gKyAgICAgIGlmIChERUJV RykNCj4gPiA+ICsgICAgICAgIHByaW50ZiAoIiVkOiAweCV4XG4iLCBpLCBhW2ldKTsNCj4gPiA+ ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgZnVuMSAoYSwgTiAvIDIsIE4pOw0KPiA+ID4gKyAg ZnVuMiAoYiwgTiAvIDIsIE4pOw0KPiA+ID4gKw0KPiA+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBOOyArK2kpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBpZiAoREVCVUcpDQo+ID4gPiAr ICAgICAgICBwcmludGYgKCIlZCA9IDB4JXggPT0gMHgleFxuIiwgaSwgYVtpXSwgYltpXSk7DQo+ ID4gPiArDQo+ID4gPiArICAgICAgaWYgKGFbaV0gIT0gYltpXSkNCj4gPiA+ICsgICAgICAgIF9f YnVpbHRpbl9hYm9ydCAoKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgcmV0dXJuIDA7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMu Y2MgYi9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmNjDQo+ID4gPiBpbmRleA0KPiA+ID4NCj4gMjE3 YmRmZDcwNDVhMjI1NzhhMzViYjg5MWE0MzE4ZDc0MTA3MTg3Mi4uYTczODU1OGNiOGQxMjI5NmJm ZjQ2MmQ3MQ0KPiA2DQo+ID4gPiAzMTBjYThkODI5NTdiNSAxMDA2NDQNCj4gPiA+IC0tLSBhL2dj Yy90cmVlLXZlY3QtcGF0dGVybnMuY2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXZlY3QtcGF0dGVy bnMuY2MNCj4gPiA+IEBAIC0zNTU4LDYgKzM1NTgsMzMgQEAgdmVjdF9yZWNvZ19kaXZtb2RfcGF0 dGVybiAodmVjX2luZm8gKnZpbmZvLA0KPiA+ID4NCj4gPiA+ICAgICAgICByZXR1cm4gcGF0dGVy bl9zdG10Ow0KPiA+ID4gICAgICB9DQo+ID4gPiArICBlbHNlIGlmICgoVFlQRV9VTlNJR05FRCAo aXR5cGUpIHx8IHRyZWVfaW50X2NzdF9zZ24gKG9wcm5kMSkgIT0gMSkNCj4gPiA+ICsJICAgJiYg cmhzX2NvZGUgIT0gVFJVTkNfTU9EX0VYUFIpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICB3 aWRlX2ludCBpY3N0ID0gd2k6OnRvX3dpZGUgKG9wcm5kMSk7DQo+ID4gPiArICAgICAgd2lkZV9p bnQgdmFsID0gd2k6OmFkZCAoaWNzdCwgMSk7DQo+ID4gPiArICAgICAgaW50IHBvdyA9IHdpOjpl eGFjdF9sb2cyICh2YWwpOw0KPiA+ID4gKyAgICAgIGlmIChwb3cgPT0gKHByZWMgLyAyKSkNCj4g PiA+ICsJew0KPiA+ID4gKwkgIC8qIFBhdHRlcm4gZGV0ZWN0ZWQuICAqLw0KPiA+ID4gKwkgIHZl Y3RfcGF0dGVybl9kZXRlY3RlZCAoInZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm4iLCBsYXN0X3N0 bXQpOw0KPiA+ID4gKw0KPiA+ID4gKwkgICp0eXBlX291dCA9IHZlY3R5cGU7DQo+ID4gPiArDQo+ ID4gPiArCSAgLyogQ2hlY2sgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyB0aGlzIGludGVybmFsIGZ1 bmN0aW9uLiAgKi8NCj4gPiA+ICsJICBpbnRlcm5hbF9mbiBpZm4gPSBJRk5fRElWX1BPVzJfQklU TUFTSzsNCj4gPiA+ICsJICBpZiAoZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChpZm4s IHZlY3R5cGUsDQo+IE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ID4gPiArCSAgICB7DQo+ID4gPiAr CSAgICAgIHRyZWUgdmFyX2RpdiA9IHZlY3RfcmVjb2dfdGVtcF9zc2FfdmFyIChpdHlwZSwgTlVM TCk7DQo+ID4gPiArCSAgICAgIGdpbXBsZSAqZGl2X3N0bXQgPSBnaW1wbGVfYnVpbGRfY2FsbF9p bnRlcm5hbCAoaWZuLCAxLCBvcHJuZDApOw0KPiA+ID4gKwkgICAgICBnaW1wbGVfY2FsbF9zZXRf bGhzIChkaXZfc3RtdCwgdmFyX2Rpdik7DQo+ID4gPiArDQo+ID4gPiArCSAgICAgIGdpbXBsZV9z ZXRfbG9jYXRpb24gKGRpdl9zdG10LCBnaW1wbGVfbG9jYXRpb24gKGxhc3Rfc3RtdCkpOw0KPiA+ ID4gKw0KPiA+ID4gKwkgICAgICByZXR1cm4gZGl2X3N0bXQ7DQo+ID4gPiArCSAgICB9DQo+ID4g PiArCX0NCj4gPiA+ICsgICAgfQ0KPiA+ID4NCj4gPiA+ICAgIGlmIChwcmVjID4gSE9TVF9CSVRT X1BFUl9XSURFX0lOVA0KPiA+ID4gICAgICAgIHx8IGludGVnZXJfemVyb3AgKG9wcm5kMSkpDQo+ ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPg0KPiA+DQo+IA0KPiAtLQ0KPiBS aWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+IFNVU0UgU29mdHdhcmUgU29sdXRp b25zIEdlcm1hbnkgR21iSCwgRnJhbmtlbnN0cmHDn2UgMTQ2LCA5MDQ2MQ0KPiBOdWVybmJlcmcs IEdlcm1hbnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1jRG9uYWxkLA0K PiBCb3VkaWVuIE1vZXJtYW47IEhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K