From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2067.outbound.protection.outlook.com [40.107.104.67]) by sourceware.org (Postfix) with ESMTPS id CB7DE3857354 for ; Mon, 16 May 2022 15:29:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CB7DE3857354 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=RvzaBStlQul/KbzLIxVS+5O/UyA5llQctGqK87zXqYnBv7kh7E2+1k+fotkTsMgoS2SHn6OjniEN7eKxFg7t/0/D8d/GfWfdMB1Al01/rloRQ23rCizgTyYVUDfOtxAwiP4Q9GpiYCQyf+KLXNqQB3cCr7a6+4jXvWu76c0z5GsISHUSsUEONmC00//Y9G4/otiOu/YYoQi5KH/06PTzDCr/9aqVVHQQE+0gFpl7ZoogZx/pCykXISE0zKso9eDPuE4HBLL6KUoS5kLkeyiez8Fihh1CtBH+CVi8FFA5WLa7R71VqRdTbVvmvrn6mynCzidgDt5TgSuPg6eZsi604w== 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=PdOPPaV82f0KmqF5y0zOz0nbX1+kNFY1ywro5fMRxpU=; b=D13M/eK9hTkUbwQc67uN+ywDSWhlFs+MAUAOWcOUP4sHaQ9TOccO2gn8XWxSswZp6gZ3EH2Ob0TZX2qHnKYZ+PPVyKTtr4NwaY4kV9zAEQ2DnBZOPc+bjMXAdCQ0xVPObVZ+2J9MWN29jKSj6SEFvGk9lb3hLX5EaVy8XjIccu04ML0CWrcSrOS6x4KKroZ95+T/7EFE+zpLUnbGW9cWKWsvgeQRK66kAlC2Gud2atAFJPaGirdobNyej61dzPqbiIFJaR/QnbrKAHe6JOW3O8Z5wG4L+s8w4qEzjmjGKRB+ed9u/ap1kUiYm+am9VMCnP6UKRez+PDdKrPwk+kwmw== 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 AM7PR04CA0013.eurprd04.prod.outlook.com (2603:10a6:20b:110::23) by AS8PR08MB6599.eurprd08.prod.outlook.com (2603:10a6:20b:332::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Mon, 16 May 2022 15:29:19 +0000 Received: from AM5EUR03FT020.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:110:cafe::76) by AM7PR04CA0013.outlook.office365.com (2603:10a6:20b:110::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18 via Frontend Transport; Mon, 16 May 2022 15:29:19 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT020.mail.protection.outlook.com (10.152.16.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13 via Frontend Transport; Mon, 16 May 2022 15:29:19 +0000 Received: ("Tessian outbound 6580ae46f51e:v119"); Mon, 16 May 2022 15:29:19 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5c48cf450440.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 73C465E9-A3D8-4F8E-9865-B7A354F5407E.1; Mon, 16 May 2022 15:29:18 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5c48cf450440.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 16 May 2022 15:29:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CL2V4x6/FwGSAM6Cic42h3lWiRO91F2R618AKZPsF3JpSxDmuX2DCSxtJcHNzmDaSPhWPALZQk7xAfpn+yaXwNjdpTapqAbh0TwggBJ7gWniEEmJAy7wMBEZ6mt/nJFKe4+ga7VXK/jG/DLUbY2P+JLzRk2roWSSX/Mshk4jyWJ9Q2v3pfFswdTfeip1zCzJGDgnYjbkCzQwb0dDDiBgFBgYiYJNSQH6oaClXKP3N+FUAULbL3U3v6HFIbxXT8q8Fdhweaw/KbpFSsj2u/ca/+M4zcRRqDkTtU6nU9OlpZzVjY/kC9u372OERlIYpANf7Qog9hXNgEsvJ2+2tYAVVg== 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=PdOPPaV82f0KmqF5y0zOz0nbX1+kNFY1ywro5fMRxpU=; b=nwCJRIgwFZQQZUebPmqFDIPU7nyTB49YIo6f850acGX1XvN8YUk+ovUZJgMsdTkIrW2U+IpxLa7bYcOYbwJv9ZZc/YDXeToYKq7/1ClY2wUJd7HeC+PJRcJwUst96uavnq+AzwuBqKhaFxwe2v/8zEbGX3ZChFFeC6scsfrGS26eKmCWno8a2UfT9604tyOx1GVD84mYjxQaM2gdxaQK5ZODvH0VGuZLsw3osTs9OqVk2DaUmXiumaWnZM3ZgHc1GH6IVdP70YeLipu3lMUIGlGE/YGJ4iob4xXNUPunuJT3oeXu4fLytObDmcAWZqap1/NcUXrMgJ2Gmd7fMaWmDQ== 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 DB7PR08MB4586.eurprd08.prod.outlook.com (2603:10a6:10:34::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.17; Mon, 16 May 2022 15:29:09 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::7c18:b406:6441:f7a3]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::7c18:b406:6441:f7a3%5]) with mapi id 15.20.5250.018; Mon, 16 May 2022 15:29:09 +0000 From: Tamar Christina To: Richard Sandiford CC: "gcc-patches@gcc.gnu.org" , nd , "rguenther@suse.de" , "jeffreyalaw@gmail.com" Subject: RE: [PATCH 1/3]middle-end: Add the ability to let the target decide the method of argument promotions. Thread-Topic: [PATCH 1/3]middle-end: Add the ability to let the target decide the method of argument promotions. Thread-Index: AQHYZuxzuLWtQiH2q0mgDU4IQ30vYq0hZKQ4gAABndCAAAkTYIAAAQLXgAAGXhCAAAvsNYAAB9ag Date: Mon, 16 May 2022 15:29:09 +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: 7533E3B1B6C36E488391AFE3F94A5FA2.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: 48b2609f-c4b3-43e3-8821-08da3750d899 x-ms-traffictypediagnostic: DB7PR08MB4586:EE_|AM5EUR03FT020:EE_|AS8PR08MB6599: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: OVC47tqze0ZypfgI8YSA4kPPH2i2T1Mtpq/Ab018MxQWJpgQaxzcaA6kejpvhfZcuzsWb4NMNANHLOvmmnhhFPgRr9GtTvmsgg5sLZeFt5NQn1crjyE9QVV37dxHatne+kFVJH+zSNN6fIFcFKymjjoj0Rd7gb7FaT6PNoYBYrAqnpbYmZIYflm1W3V/NQu5tXc8TMXA+ptUiey26WlWKJ1XEGMk4k5LBzfCwMhI7vbKWzUGObE/esiTVmbrF5VLkyq4jGhuKRsSQueau6wBUwINqgg3FyaUMDBIJd+vba2vrGzmvsWg6ogv1r/m3Ga8GkMKajEuh+mnwEYqKgR1sTuQpXgN8Mch1hj2qNhoQ4MI0m9ZtDZXLouXT1ZL7IA7+Ew7NvqhPnWMNzY5lWl6aOc3RUD62oxA+A+kUiVjXiW3s7DQcHBua+m4OP78tWUdlTWhAaOcUbccMA8iXjvxNY2h6bj89nhtN3bc8tbAipa7TPqAVxt80xNfEdiy3SM3TbaXtl897v5950GNOCP2zqBEn9uIYNJM+AsCKGPelj58APcA5tLrsWwqvJ+irEo4mVZFzK5jpfqjsijOpxo/D33uv1T1BN92HiLyFCrYvLo1EFO8/MYoKIe7gQ8wuzal00CXGrlf8yO++VYlJaW6ziNVUJbtQieYQWi+sz/gHhlSsEaW+ByVnorR80AwRcmYcGavUrNFGZicNLqjhtUb+laVo6HXEPwqgoeHFxDVS0wqr0xWH4yYuNxwGEEpBIwN 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:(13230001)(4636009)(366004)(122000001)(2906002)(38100700002)(38070700005)(7696005)(54906003)(316002)(6636002)(9686003)(83380400001)(186003)(5660300002)(508600001)(86362001)(71200400001)(64756008)(66476007)(66556008)(66946007)(76116006)(52536014)(6862004)(66446008)(4326008)(30864003)(8936002)(8676002)(6506007)(53546011)(26005)(55016003)(33656002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB4586 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: AM5EUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ca35f1f3-eff6-4bc0-ce80-08da3750d28f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jkAXdZvCtj7MUQog8RxITDpnrNb3WVv7KvaSoCG7yEVI9xAfh7kJRtTRvw5v5+hZheqayw6YIFB5OZNo9SK49VJsUmePLWONv6Z/GRFcoQVMeliDJ2/B7uxoVrxRJZzh9nd2mdjSSt4+fRjVNcWB0rKbGPt4CLsiwW4u9oIxrZIrCMM/U0CBEtOUv1s54llUuF3dDqZK8w7ohWbKrtCS7VXrWl04niro8Pr1NRfugz57DX5mojRbD7GT4colF30OgLbG5tPIktGU673GUV8WMVxB0y1F+O4OBAjLw+lRyLFkmsomvuOEMqC2TQz/prwYlzslvBe5QbpDgZuhgc9rU3sD6tkI3IJKVaqJM5uqev2P03lbRFkoxQYGoDmsqwiMdtuf8gHxXAd8WIpeAuq3y+hxwgCMod+tyTddHiWBwgU/AU6Dp6wKIAYccRlpSsQO6rLPrEIbCvbTEYL2FCQJ7GV7Bvpjgq1q9UGPJQqiIKolPZgOwrTi7gld8wkrS84M1F2S5quA6rbyRR0VauRibsaAI7RdsVM0nijx3+wGg5AX1k2UrahQctvWIZPT3b1Nwk+f/Q7sRDbJJsdK4ygYY93TJAiCFXejVk8UiNSCb2lAgahx9jdC5iwOK+Pst8OicSs9c+Gle/UuzrvtTAB9f0OyrRPYozcV+jo+VJYsNeU63eUBOVM/h92mcvbF5pGg 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:(13230001)(4636009)(46966006)(40470700004)(36840700001)(5660300002)(86362001)(52536014)(9686003)(54906003)(81166007)(6862004)(33656002)(7696005)(356005)(186003)(47076005)(107886003)(6636002)(83380400001)(2906002)(8676002)(508600001)(53546011)(70206006)(30864003)(82310400005)(55016003)(36860700001)(8936002)(336012)(26005)(40460700003)(316002)(6506007)(4326008)(70586007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2022 15:29:19.6417 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48b2609f-c4b3-43e3-8821-08da3750d899 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: AM5EUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6599 X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, 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, 16 May 2022 15:29:26 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIFNhbmRpZm9yZCA8 cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT4NCj4gU2VudDogTW9uZGF5LCBNYXkgMTYsIDIwMjIg MjoyNCBQTQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4N Cj4gQ2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IHJndWVudGhl ckBzdXNlLmRlOw0KPiBqZWZmcmV5YWxhd0BnbWFpbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRD SCAxLzNdbWlkZGxlLWVuZDogQWRkIHRoZSBhYmlsaXR5IHRvIGxldCB0aGUgdGFyZ2V0IGRlY2lk ZQ0KPiB0aGUgbWV0aG9kIG9mIGFyZ3VtZW50IHByb21vdGlvbnMuDQo+IA0KPiBUYW1hciBDaHJp c3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPiB3cml0ZXM6DQo+ID4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFJpY2hhcmQgU2FuZGlmb3JkIDxyaWNoYXJkLnNh bmRpZm9yZEBhcm0uY29tPg0KPiA+PiBTZW50OiBNb25kYXksIE1heSAxNiwgMjAyMiAxOjE4IFBN DQo+ID4+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPg0KPiA+ PiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IG5kIDxuZEBhcm0uY29tPjsgcmd1ZW50aGVy QHN1c2UuZGU7DQo+ID4+IGplZmZyZXlhbGF3QGdtYWlsLmNvbQ0KPiA+PiBTdWJqZWN0OiBSZTog W1BBVENIIDEvM11taWRkbGUtZW5kOiBBZGQgdGhlIGFiaWxpdHkgdG8gbGV0IHRoZSB0YXJnZXQN Cj4gPj4gZGVjaWRlIHRoZSBtZXRob2Qgb2YgYXJndW1lbnQgcHJvbW90aW9ucy4NCj4gPj4NCj4g Pj4gUmljaGFyZCBTYW5kaWZvcmQgdmlhIEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251 Lm9yZz4gd3JpdGVzOg0KPiA+PiA+IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5hQGFy bS5jb20+IHdyaXRlczoNCj4gPj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ ID4+PiBGcm9tOiBSaWNoYXJkIFNhbmRpZm9yZCA8cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT4N Cj4gPj4gPj4+IFNlbnQ6IE1vbmRheSwgTWF5IDE2LCAyMDIyIDEyOjM2IFBNDQo+ID4+ID4+PiBU bzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gPj4gPj4+IENj OiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsgbmQgPG5kQGFybS5jb20+Ow0KPiByZ3VlbnRoZXJA c3VzZS5kZTsNCj4gPj4gPj4+IGplZmZyZXlhbGF3QGdtYWlsLmNvbQ0KPiA+PiA+Pj4gU3ViamVj dDogUmU6IFtQQVRDSCAxLzNdbWlkZGxlLWVuZDogQWRkIHRoZSBhYmlsaXR5IHRvIGxldCB0aGUN Cj4gPj4gPj4+IHRhcmdldCBkZWNpZGUgdGhlIG1ldGhvZCBvZiBhcmd1bWVudCBwcm9tb3Rpb25z Lg0KPiA+PiA+Pj4NCj4gPj4gPj4+IFRhbWFyIENocmlzdGluYSA8dGFtYXIuY2hyaXN0aW5hQGFy bS5jb20+IHdyaXRlczoNCj4gPj4gPj4+ID4gSGkgQWxsLA0KPiA+PiA+Pj4gPg0KPiA+PiA+Pj4g PiBTb21lIHRhcmdldHMgcmVxdWlyZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIHRvIGJlIHByb21vdGVk IHRvIGENCj4gPj4gPj4+ID4gZGlmZmVyZW50IHR5cGUgb24gZXhwYW5kIHRpbWUgYmVjYXVzZSB0 aGUgdGFyZ2V0IG1heSBub3QgaGF2ZQ0KPiA+PiA+Pj4gPiBuYXRpdmUgaW5zdHJ1Y3Rpb25zIHRv IHdvcmsgb24gc3VjaCB0eXBlcy4gIEFzIGFuIGV4YW1wbGUgdGhlDQo+ID4+ID4+PiA+IEFBcmNo NjQgcG9ydCBkb2VzIG5vdCBoYXZlIG5hdGl2ZSBpbnN0cnVjdGlvbnMgd29ya2luZyBvbg0KPiA+ PiA+Pj4gPiBpbnRlZ2VyDQo+ID4+ID4+PiA+IDgtIG9yIDE2LWJpdCB2YWx1ZXMuICBBcyBzdWNo IGl0IHByb21vdGVzIGV2ZXJ5IHBhcmFtZXRlciBvZg0KPiA+PiA+Pj4gPiB0aGVzZQ0KPiA+PiB0 eXBlcyB0byAzMi1iaXRzLg0KPiA+PiA+Pj4NCj4gPj4gPj4+IFRoaXMgZG9lc24ndCBzZWVtIHNw ZWNpZmljIHRvIHBhcmFtZXRlcnMgdGhvdWdoLiAgSXQgYXBwbGllcyB0bw0KPiA+PiA+Pj4gYW55 DQo+ID4+ID4+PiA4LSBvciAxNi1iaXQgdmFyaWFibGUuICBFLmcuOg0KPiA+PiA+Pj4NCj4gPj4g Pj4+ICNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPj4gPj4+IHVpbnQ4X3QgZm9vKHVpbnQzMl90IHgs IHVpbnQzMl90IHkpIHsNCj4gPj4gPj4+ICAgICB1aW50OF90IHogPSB4ICE9IDAgPyB4IDogeTsN Cj4gPj4gPj4+ICAgICByZXR1cm4geiArIDE7DQo+ID4+ID4+PiB9DQo+ID4+ID4+Pg0KPiA+PiA+ Pj4gZ2VuZXJhdGVzOg0KPiA+PiA+Pj4NCj4gPj4gPj4+IGZvbzoNCj4gPj4gPj4+ICAgICAgICAg Y21wICAgICB3MCwgMA0KPiA+PiA+Pj4gICAgICAgICBhbmQgICAgIHcxLCB3MSwgMjU1DQo+ID4+ ID4+PiAgICAgICAgIGFuZCAgICAgdzAsIHcwLCAyNTUNCj4gPj4gPj4+ICAgICAgICAgY3NlbCAg ICB3MCwgdzEsIHcwLCBlcQ0KPiA+PiA+Pj4gICAgICAgICBhZGQgICAgIHcwLCB3MCwgMQ0KPiA+ PiA+Pj4gICAgICAgICByZXQNCj4gPj4gPj4+DQo+ID4+ID4+PiBTbyBJIHRoaW5rIHRoZSBuZXcg YmVoYXZpb3VyIGlzIHJlYWxseSBhIG1vZGlmaWNhdGlvbiBvZiB0aGUNCj4gPj4gPj4+IFBST01P VEVfTU9ERSBiZWhhdmlvdXIgcmF0aGVyIHRoYW4gdGhlDQo+ID4+IFBST01PVEVfRlVOQ1RJT05f TU9ERSBiZWhhdmlvdXIuDQo+ID4+ID4+Pg0KPiA+PiA+Pj4gRldJVywgSSBhZ3JlZSB3aXRoIFJp Y2hhcmQgdGhhdCBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGFkZCBhDQo+ID4+ID4+PiBuZXcN Cj4gPj4gaG9vay4NCj4gPj4gPj4+IEkgdGhpbmsgd2UncmUgcmVhbGx5IG1ha2luZyBQUk9NT1RF X01PREUgY2hvb3NlIGJldHdlZW4NCj4gPj4gU0lHTl9FWFRFTkQsDQo+ID4+ID4+PiBaRVJPX0VY VEVORCBvciBTVUJSRUcgKHdoYXQgTExWTSB3b3VsZCBjYWxsIOKAnGFueQ0KPiA+PiA+Pj4gZXh0 ZW5k4oCdKSByYXRoZXIgdGhhbiB0aGUgY3VycmVudCBTSUdOX0VYVEVORCB2cy4gWkVST19FWFRF TkQNCj4gPj4gY2hvaWNlLg0KPiA+PiA+Pg0KPiA+PiA+PiBBaCwgSSBoYWRuJ3QgcmVhbGl6ZWQg dGhpcyBhbHNvIGFwcGxpZWQgdG8gbG9jYWxzLi4gb2sgSSBjYW4NCj4gPj4gPj4gbW9kaWZ5IFBS T01PVEVfTU9ERSB0aGVuLCBidXQgSSBhbHNvIG5lZWQgdGhlIGFjdHVhbCBTU0FfTkFNRQ0KPiBh bmQNCj4gPj4gPj4gbm90IGp1c3QNCj4gPj4gdGhlIHR5cGUgc28gd2lsbCBoYXZlIHRvIHBhc3Mg dGhpcyBhbG9uZy4NCj4gPj4gPj4NCj4gPj4gPj4gRnJvbSBhIHByYWN0aWNhbCBwb2ludCBvZiB2 aWV3Li4gdGhlIGFjdHVhbCBob29rIGhvd2V2ZXIgaXMNCj4gPj4gPj4gaW1wbGVtZW50ZWQgYnkg MzQgdGFyZ2V0cywgd291bGQgSSBuZWVkIHRvIENDIG1haW50YWluZXJzIGZvciBlYWNoDQo+ID4+ ID4+IG9mIHRoZW0gb3Igd291bGQgZ2xvYmFsIG1haW50YWluZXIgYXBwcm92YWwgc3VmZmljZSBm b3IgdGhlc2UNCj4gPj4gPj4gbW9zdGx5DQo+ID4+IG1lY2hhbmljYWwgY2hhbmdlcz8NCj4gPj4g Pg0KPiA+PiA+IFllYWgsIHNpbmdsZSBhcHByb3ZhbCBzaG91bGQgYmUgZW5vdWdoIG1lY2hhbmlj YWwgY2hhbmdlcy4gIEl0DQo+ID4+ID4gd291bGQgYmUgZ29vZCB0byBkbyB0aGUgaW50ZXJmYWNl IGNoYW5nZSBhbmQgbWVjaGFuaWNhbCB0YXJnZXQNCj4gPj4gPiBjaGFuZ2VzIGFzIGEgc2VwYXJh dGUgcHJlcGF0Y2ggaWYgcG9zc2libGUgdGhvdWdoLg0KPiA+PiA+DQo+ID4+ID4gSSdtIG5vdCBz dXJlIGFib3V0IHBhc3NpbmcgdGhlIFNTQSBuYW1lIHRvIHRoZSB0YXJnZXQgdGhvdWdoLCBvcg0K PiA+PiA+IHRoZSB3YXkgdGhhdCB0aGUgYWFyY2g2NCBob29rIHVzZXMgdGhlIGluZm8uICBJdCBs b29rcyBsaWtlIGENCj4gPj4gPiBzaW5nbGUgY29sZCBjb21wYXJpc29uIGNvdWxkIGRlZmVhdCB0 aGUgb3B0aW1pc2F0aW9uIGZvciBob3QgY29kZS4NCj4gPg0KPiA+IEknbSBub3Qgc3VyZSBJIGZv bGxvdyB3aHkgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGNvbXBhcmlzb24gbWF0dGVycyBpbiB0aGlz DQo+IGNhc2UuLg0KPiA+IEknbGwgZXhwYW5kIG9uIGl0IGJlbG93Li4NCj4gDQo+IEkgbWVhbnQg dGhlIGxpa2VsaWhvb2QgdGhhdCB0aGUgY29tcGFyaXNvbiBpcyBleGVjdXRlZCBhdCBhbGwsIG5v dCB3aGljaA0KPiBvdXRjb21lIGlzIG1vcmUgbGlrZWx5LiAgRS5nLiBzdXBwb3NlIHRoZSBvbmx5 IGNvbXBhcmlzb24gb2NjdXJzIG9uIGEgZmFpbHVyZQ0KPiBwYXRoIHRoYXQgZXZlbnR1YWxseSBj YWxscyBhYm9ydCwgYW5kIHRoYXQgdGhlcmUgYXJlIG90aGVyIHBhdGhzICh3aXRob3V0DQo+IGNv bXBhcmlzb25zIG9mIHRoZSBzYW1lIHZhbHVlKSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0aGUg YW55LWV4dGVuZA0KPiBvcHRpbWlzYXRpb24uICBXZSdkIHByaW9yaXRpc2UgdGhlIGNvbGQgY29t cGFyaXNvbiBvdmVyIG9wdGltaXNpbmcgdGhlIG90aGVyDQo+IChob3QpIGNvZGUuDQo+IA0KPiBJ J20ganVzdCBzdXNwaWNpb3VzIG9mIGhldXJpc3RpY3MgYWxvbmcgdGhlIGxpbmVzIG9mIOKAnGRv bid0IGRvIFggaWYgdGhlcmUgaXMgYQ0KPiBzaW5nbGUgaW5zdGFuY2Ugb2YgWeKAnS4gOi0pDQoN CkknbSBwcm9iYWJseSB2ZXJ5IGRlbnNlIGhlcmUgc29ycnkuLiBidXQgaWYgdGhlcmUncw0KDQox IHVzZTogdGhlIHplcm8gZXh0ZW5kIGdldHMgcHVzaGVkIGRvd24gaW50byB0aGUgYnJhbmNoIHdo aWNoIG5lZWRzIGl0Lg0KDQppLmUuIGluOg0KDQpleHRlcm4gdm9pZCBmb28gKCk7DQpleHRlcm4g dm9pZCBiYXIgKCk7DQoNCnVpbnQ4X3QgZiAodWludDhfdCBhLCB1aW50OF90IGIpDQp7DQogIGlm IChiKSB7DQogICAgaWYgKGEpDQogICAgICBmb28gKCk7DQogICAgZWxzZQ0KICAgICAgcmV0dXJu IGYgKGEsIGIpOw0KICB9IGVsc2Ugew0KICAgICAgYmFyICgpOw0KICB9DQogIHJldHVybiBiOw0K fQ0KDQpUaGUgemVybyBleHRlbmQgb2YgYSBpcyBvbmx5IGRvbmUgaW4gdGhlIHRydWUgYnJhbmNo IGZvciBpZiAoYikuICBTZWNvbmRseSB0aGUgemVybw0KZXh0ZW5kZWQgZm9ybSBpcyB0aGUgYmFz aXMgZm9yIGFsbCBvdGhlciBwYXR0ZXJucyB3ZSBmb3JtLCBzdWNoIGFzIGFuZHMsIHdoaWNoIGlz DQp0aGUgY29tYmluYXRpb24gb2YgdGhlIHplcm8gZXh0ZW5kIGFuZCBjb21wYXJlLg0KDQoyIHVz ZXMsIGJvdGggbGl2ZToNCg0KZXh0ZXJuIHZvaWQgZm9vICgpOw0KZXh0ZXJuIHZvaWQgYmFyICh1 aW50OF90KTsNCg0KdWludDhfdCBmICh1aW50OF90IGEsIHVpbnQ4X3QgYikNCnsNCiAgaWYgKGIp IHsNCiAgICBpZiAoYSkNCiAgICAgIGZvbyAoKTsNCiAgICBlbHNlDQogICAgICByZXR1cm4gZiAo YSwgYik7DQogIH0gZWxzZSB7DQogICAgICBiYXIgKGEpOw0KICB9DQogIHJldHVybiBiOw0KfQ0K DQpJbiB3aGljaCBjYXNlIHRoZSBleHRlbmQgb2YgYSBpcyBkb25lIGJlZm9yZSB0aGUgaWYgKGIp IGFuZCBvbmx5IHRoZSBleHRlbmRlZCB2YWx1ZXMNCnVzZWQuDQoNCkV2ZW4gaWYgeW91IGhhZCBt dWx0aXBsZSBjb2xkL3VudXNlZCBicmFuY2hlcywgSSBzdHJ1Z2dsZSB0byBzZWUgYW55IGNhc2Ug d2hlcmUgdGhlDQphbnktZXh0ZW5kIHdvdWxkIGJlIGJldHRlci4gIFJlbG9hZCBtdXN0IGtlZXAg dGhlIHZhbHVlIGxpdmUgYXMgaXQncyBhIHBhcmFtLiBFaXRoZXIgeW91Og0KDQoxLiBoYXZlIGVu b3VnaCByZWdpc3RlcnMgdG8ga2VlcCB0aGUgdmFsdWUgbGl2ZSwgaW4gd2hpY2ggY2FzZSwgaW5z dGVhZCBvZiBkb2luZyBhICJtb3YiIHRvDQogICAgIFRvIGNvcHkgdGhlIHZhbHVlIGFuZCB0aGVu IGxhdGVyIGFuIEFORCBvciBUU1QsIGl0J3MgYmV0dGVyIHRvIGp1c3QgZG8gYW4gYW5kIGluc3Rl YWQgb2YgdGhlIG1vdi4NCiAgICAgIFlvdSBrZWVwIHRoZSBzYW1lIG51bWJlciBvZiByZWdpc3Rl cnMgbGl2ZSBidXQgaW4gdGhlIGJlc3QgY2FzZSB5b3UgaGF2ZSAxIGluc3RydWN0aW9uIGxlc3Ms IGFuZA0KICAgICAgIFRoZSB3b3JzZSBjYXNlIHlvdSBoYXZlIDAgaW5zdHJ1Y3Rpb25zIG1vcmUu DQoyLiBZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIGtlZXAgdGhlIHZhbHVlIGxp dmUsIGluIHdoaWNoIGNhc2UgdGhlIHplcm8gZXh0ZW5kZWQgdmFsdWUgaXMNCiAgICAgU3RpbGwg YmV0dGVyIGJlY2F1c2Ugb24gdGhlIHJlbG9hZCBpdCBjYW4gc2ltcGx5IHVzZSBsZHJiIC4uLiwg Y2J6IGFzIHdlIHVzZSB0aGUgbG9hZCBmb3IgYW4gaW1wbGljaXQNCiAgICAgemVybyBleHRlbmQu IFdoaWNoIGlzIHN0aWxsIGJldHRlciB0aGFuIGxkcmIgLi4uLCB0c3QsIGNibnogZm9yIGFuIGFu eS1leHRlbmQuDQoNClNvIEkgYW0gZ2VudWluZWx5IHN0cnVnZ2xpbmcgdG8gc2VlIGEgY2FzZSB3 aGVyZSBhbnktZXh0ZW5kIGlzIGJldHRlciBmb3IgY29tcGFyaXNvbi4gQW5kIHRoZSBvbmx5DQpy ZWFzb24gSSBhbSBzaW5nbGluZyBvdXQgY29tcGFyaXNvbnMgaXMgYmVjYXVzZSBpbiBHSU1QTEUg aW50ZWdlciBjb25zdGFudHMgZG9uJ3QgZ2V0IGFuIGV4cGxpY2l0DQpwcm9tb3Rpb24gdG8gaW50 LiAgT3RoZXJ3aXNlIEkgd291bGRuJ3QgaGF2ZSBuZWVkZWQgdG8gYXMgaXQgd291bGQgaGF2ZSBh bHdheXMgcmVxdWlyZWQgYW4gZXh0ZW5kDQpoZXJlLg0KDQo+IA0KPiA+PiA+IElmIHdlIGRvIHRy eSB0byBtYWtlIHRoZSBkZWNpc2lvbiBiYXNlZCBvbiB1c2VzIGF0IGV4cGFuZCB0aW1lLCBpdA0K PiA+PiA+IG1pZ2h0IGJlIGJldHRlciBmb3IgdGhlIGFuYWx5c2lzIHRvIGJlIGluIHRhcmdldC1p bmRlcGVuZGVudCBjb2RlLA0KPiA+PiA+IHdpdGggaGVscCBmcm9tIHRoZSB0YXJnZXQgdG8gZGVj aWRlIHdoZXJlIGV4dGVuc2lvbnMgYXJlIGNoZWFwLiAgSXQNCj4gPj4gPiBzdGlsbCBmZWVscyBh IGJpdCBoYWNreSB0aG91Z2guDQo+ID4NCj4gPiBJIHRob3VnaHQgYWJvdXQgaXQgYnV0IGNhbid0 IHNlZSBtb3N0IHRhcmdldCBoYXZpbmcgdGhpcyBwcm9ibGVtLiBJDQo+ID4gZGlkIGdvIHdpdGgg YW4gb3B0aW1pc3RpYyBoZXVyaXN0aWNzLiBUaGVyZSBhcmUgb2YgY291cnNlIHZhcmlvdXMgd2F5 cw0KPiA+IHRvIGRlZmVhdCBpdCBidXQgbG9va2luZyB0aHJvdWdoIHRoZSBjb3JwdXMgb2YgY29k ZSBJIGRvbid0IHNlZSBhbnkNCj4gPiBidXQgdGhlIHNpbXBsZSBjYXNlcyBpbiBwcmFjdGljZS4g KG1vcmUgYmVsb3cpLg0KPiA+DQo+ID4+ID4NCj4gPj4gPiBXaGF0IHN0b3BzIHVzIGZyb20gZm9y bWluZyBjYnovY2JueiB3aGVuIHRoZSBleHRlbnNpb24gaXMgZG9uZQ0KPiA+PiA+IGNsb3NlIHRv IHRoZSBjb21wYXJpc29uIChmcm9tIHRoZSBjb21tZW50IGluIDIvMyk/ICBJZiB3ZSBjYW4gc29s dmUNCj4gPj4gPiB0aGF0LCBjb3VsZCB3ZSBzaW1wbHkgZG8gYW4gYW55LWV4dGVuZCBhbGwgdGhl IHRpbWUsIGFuZCB0cmVhdA0KPiA+PiA+IHJlbW92aW5nIHJlZHVuZGFudCBleHRlbnNpb25zIGFz IGEgZ2xvYmFsIGF2YWlsYWJpbGl0eSBwcm9ibGVtPw0KPiA+Pg0KPiA+DQo+ID4gSW4gc3VjaCBj YXNlcyB0aGVyZSdzIG5vIGdhaW4gZnJvbSBkb2luZyB0aGUgZXh0ZW5zaW9uIGF0IGFsbCwgZS5n Lg0KPiA+IGFuZCB3MCwgdzAsIDI1NQ0KPiA+IGNtcCB3MCwgMA0KPiA+IGIuZXEgLkxmb28NCj4g Pg0KPiA+IHdpbGwgYmUgb3B0aW1pemVkIHRvDQo+ID4NCj4gPiB0c3QgdzAsIDB4ZmYNCj4gPiBi Lm5lIC5MZm9vDQo+ID4NCj4gPiBhbHJlYWR5Lg0KPiA+DQo+ID4gSW4gUlRMIHRoZSBwcm9ibGVt IG9jY3VycyB3aGVuIHlvdSBoYXZlIG5lc3RlZCBjb250cm9sIGZsb3cgbGlrZQ0KPiA+IG5lc3Rl ZCBpZiBhbmQgc3dpdGNoIHN0YXRlbWVudHMgVGhlIGV4YW1wbGUgaW4gMi8zIHdhcyBpbnRlbmRl ZCB0bw0KPiA+IHNob3cgdGhhdCBiZWZvcmUgd2hhdCB3ZSdkIGRvIGlzDQo+ID4NCj4gPiBhbmQg dzIyLCB3MCwgMjU1DQo+ID4gLi4uLiA8Y29kZSB0aGF0IGNsb2JiZXJzIGNjIGFuZCBjYWxsZXIg c2F2ZXM+IDxzd2l0Y2gxPiBjYnogdzIyLA0KPiA+IC5MZm9vMSAuLi4uDQo+ID4gPHN3aXRjaDI+ DQo+ID4gY2J6IHcyMiwgLkxmb28yDQo+ID4NCj4gPiBJZiB3ZSBoYXZlIGEgc2luZ2xlIGNvbXBh cmlzb24gd2UgYWxyZWFkeSBzaW5rIHRoZSB6ZXJvX2V4dGVuZCB0b2RheS4NCj4gPg0KPiA+IE5v dyBpZiB3ZSBpbnN0ZWFkIGFueS1leHRlbmQgdzAgd2UgZW5kIHVwIHdpdGg6DQo+ID4NCj4gPiBt b3YgdzIyLCB3MA0KPiA+IC4uLi4gPGNvZGUgdGhhdCBjbG9iYmVycyBjYyBhbmQgY2FsbGVyIHNh dmVzPiA8c3dpdGNoMT4gdHN0IHcyMiwgMHhmZg0KPiA+IGIubmUgLkxmb28xIC4uLi4NCj4gPiA8 c3dpdGNoMj4NCj4gPiB0c3QgdzIyLCAweGZmDQo+ID4gYi5uZSAuTGZvbzINCj4gPg0KPiA+IFNv IHlvdSBnZXQgYW4gYWRkaXRpb25hbCB0c3QgYmVmb3JlIGVhY2ggYnJhbmNoLiBZb3UgYWxzbyBj YW4ndCBwZXJmb3JtIHRoZQ0KPiB0c3QgaGlnaGVyIHNpbmNlIENDIGlzIGNsb2JiZXJlZC4NCj4g PiBUaGUgY2J6IGlzIG5pY2UgYmVjYXVzZSB0aGUgemVybyBleHRlbmQgZG9lc24ndCB1c2UgQ0Mg b2YgY291cnNlIGFuZA0KPiA+IHNvIGhhdmluZyB0aGUgdmFsdWUgbGl2ZSBhbGxvd3MgdXMgdG8g b3B0aW1pemUgVGhlIGJyYW5jaC4NCj4gDQo+IE9uY2UgdGhlIGNieiBoYXMgYmVlbiBmb3JtZWQg KGluIGNvbWJpbmUpLCB3aGVyZSBkb2VzIHRoZSBvcHRpbWlzYXRpb24gb2YNCj4gaXQgaGFwcGVu Pw0KDQpUaGVyZSdzIG5vIHJlYWwgIm9wdGltaXphdGlvbiIuIENvbWJpbmUgY29tYmluZXMgdGhl IGNtcCAwIGFuZCBiciBsZWF2aW5nIHRoZSBBTkQNCmJlaGluZC4gIEJlY2F1c2Ugb2YgdGhlIGxp dmUgcmFuZ2UgcmVxdWlyZWQgZm9yIHRoZSB2YWx1ZSByZWxvYWQgbXVzdCBjb3B5IGl0IGF3YXkg ZnJvbQ0KYSBjYWxsZXIgc2F2ZS4gIEl0IGNob29zZXMgdG8gbW92ZSBpdCB0byB3MjIgaW4gdGhp cyBjYXNlLg0KDQphbmQgdzAsIHcwLCAyNTUNCm1vdiB3MjIsIHcwDQoNCnRoaXMgc2ltcGx5IGdl dHMgc2ltcGxpZmllZCBpbnRvIGFuZCB3MjIsIHcwLCAyNTUgYnkgYSB6ZXJvIGV4dGVuZGluZyBt b3ZlIHBhdHRlcm4uDQpUaGUgb25seSBvcHRpbWl6YXRpb24gaGVyZSBpcyB3aGVuIHRoZSBwYXR0 ZXJuIGlzbid0IHNpbmdsZSB1c2UsIGl0J3Mgc2ltcGx5IG5vdCBtb3ZlZC9mb2xkZWQuDQoNClRo ZSBvbmx5IG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNvbWJpbmUgYXJlDQoNCmNtcCwgYnIgPSB0c3Qg KyBiciAoaW4gdGhlIGNhc2Ugb2YgYSBzdWJyZWcgd2hlcmUgaXQgY2FuJ3QgdGVsbCB3aGF0IHRo ZSB0b3AgYml0cyBhcmUpDQphbmQsIGNtcCwgYnIgPSBhbmRzICsgYnIgKGlmIHZhbHVlIGlzIHNp bmdsZSB1c2UpDQpjbXAsIGJyID0gY2J6IChpbiB0aGUgY2FzZSBpdCBrbm93cyB0aGF0IHRoZSB0 b3AgYml0cyBhcmUgMCkuDQoNCklmIHdlIGVtaXQgYSB6ZXJvIGV4dGVuZCBib3RoIG9wZXJhdGlv bnMgYWJvdmUgYXJlIHBvc3NpYmxlLCBhbmQgd2UgZW1pdCB0aGVtIGRlcGVuZGluZyBvbg0KdmFs dWUgYmVpbmcgc2luZ2xlIHVzZSBvciBub3QuICBJZiB3ZSBlbWl0IGEgcGFyYWRveGljYWwgc3Vi cmVnLCB3ZSBuZXZlciBmb3JtIGNieiB1bmxlc3MgdGhlIHZhbHVlDQpjb21lcyBmcm9tIGFuIG9w ZXJhdGlvbiB3aGVyZSBHSU1QTEUgaGFzIG1haW50YWluZWQgQyBzZW1hbnRpY3MuDQoNCkJ1dCBJ IGFtIHByb2JhYmx5IG1pc3Npbmcgc29tZXRoaW5nLi4gc28gSSdsbCBqdXN0IG1ha2UgdGhlIGNo YW5nZXMgYW5kIHNlZSB3aGVyZSB3ZSBsYW5kIPCfmIoNCg0KPiANCj4gPiBJIGRvbid0IHRoaW5r IGJyYW5jaCBsaWtlbGluZXNzIG1hdHRlcnMgaGVyZSBhcyB5b3UgbXVzdCBrZWVwIHcyMiBsaXZl DQo+ID4gaW4gYm90aCBjYXNlcyBzb21laG93LiBJbiB0aGUgU1BFQ0NQVSAyMDE3IEJlbmNobWFy ayBwZXJsYmVuY2ggKHdoaWNoDQo+ID4gdXNlcyBhIGxvdCBvZiBuZXN0ZWQgc3dpdGNoZXMpIHRo aXMgcGF0dGVybiBpcyByZXNwb25zaWJsZSBmb3IgYW4gZXh0cmEgMC4zJQ0KPiBjb2Rlc2l6ZSBp bmNyZWFzZSB3aGljaCB0aGUgYXBwcm9hY2ggaW4gMi8zIHByZXZlbnRzLg0KPiA+DQo+ID4+ICh3 aGljaCB3b3VsZCBydW4gYWZ0ZXIgY29tYmluZSkNCj4gPj4NCj4gPj4gPg0KPiA+PiA+IFdoYXQg a2luZCBvZiBjb2RlIGRvIHdlIGVtaXQgd2hlbiBkbyBhbiBleHRlbnNpb24ganVzdCBiZWZvcmUg YW4NCj4gPj4gPiBvcGVyYXRpb24/ICBJZiB0aGUgREVDTF9SVEwgaXMgKHN1YnJlZzpRSSAocmVn OlNJIFIpIDApLCBzYXksIHRoZW4NCj4gPj4gPiBpdCBzaG91bGQgYmUgc2FmZSB0byBkbyB0aGUg ZXh0ZW5zaW9uIGRpcmVjdGx5IGludG8gUjoNCj4gPj4gPg0KPiA+PiA+ICAgKHNldCAocmVnOlNJ IFgpICh6ZXJvX2V4dGVuZDpTSSAoc3VicmVnOlFJIChyZWc6U0kgWCkpKSkNCj4gPj4NCj4gPj4g T29wcywgdGhhdCBzaG91bGQgb2YgY291cnNlIGJlOg0KPiA+Pg0KPiA+PiAgIChzZXQgKHJlZzpT SSBSKSAoemVyb19leHRlbmQ6U0kgKHN1YnJlZzpRSSAocmVnOlNJIFIpKSkpDQo+ID4+DQo+ID4+ ID4gd2hpY2ggYXZvaWRzIHRoZSBwcm9ibGVtIG9mIGhhdmluZyB0d28gdmFsdWVzIGxpdmUgYXQg b25jZSAodGhlDQo+ID4+ID4gemVyby1leHRlbmRlZCB2YWx1ZSBhbmQgdGhlIGFueS1leHRlbmRl ZCB2YWx1ZSkNCg0KSSdtIGFzc3VtaW5nIFIgaGVyZSBpcyB0aGUgaGFyZHJlZyB3aGljaCBoYXMg dGhlIHBhcmFtZXRlcj8gSW4gd2hpY2ggY2FzZQ0Kd291bGRuJ3QgdGhlIHN1YnJlZyBiZSBmb2xk ZWQgYXdheT8gSS5lIHlvdSBlbmQgdXAgd2l0aA0KDQooc2V0IChyZWc6U0kgUikgKHplcm9fZXh0 ZW5kOlNJIChyZWc6UUkgUikpKQ0KDQo/IEJ1dCB0aGF0IFNFVCBpc27igJl0IHBhcmFkb3hpY2Fs LCB3ZSB3b3VsZG4ndCBnZW5lcmF0ZSBpdC4NCg0KV2UgZ2VuZXJhdGUgZm9yIGUuZy46DQoNCiNp bmNsdWRlIDxzdGRpbnQuaD4NCg0KdWludDE2X3QgZjggKHVpbnQ4X3QgeHIsIHVpbnQ4X3QgeGMp ew0KICAgIHJldHVybiAodWludDhfdCkoeHIgKiB4Yyk7DQp9DQoNCihpbnNuIDkgNiAxMCAyIChz ZXQgKHJlZzpISSAxMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoemVyb19leHRlbmQ6SEkgKHJlZy92OlFJ IDk2IFsgeHIgXSkpKSAicHJvbS5jIjo0OjE2IC0xICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChuaWwpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNuIDEw IDkgMTEgMiAoc2V0IChyZWc6SEkgMTAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoemVyb19leHRlbmQ6SEkg KHJlZy92OlFJIDk4IFsgeGMgXSkpKSAicHJvbS5jIjo0OjE2IC0xICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChuaWwpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpbnNuIDExIDEwIDEyIDIgKHNldCAocmVnOlNJIDEwMykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXVsdDpT SSAoc3VicmVnOlNJIChyZWc6SEkgMTAxKSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VicmVnOlNJIChyZWc6SEkg MTAyKSAwKSkpICJwcm9tLmMiOjQ6MTYgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5pbCkpDQoNCk91dCBvZiBleHBhbmQuIFRoZSBwYXJhZG94aWNhbCBz dWJyZWcgaXNuJ3QgZ2VuZXJhdGVkIGF0IGFsbCBvdXQgb2YgZXhwYW5kDQp1bmxlc3MgaXQncyBu ZWVkZWQuIEl0IGRvZXMga2VlcCB0aGUgb3JpZ2luYWwgcGFyYW1zIGFyb3VuZCBhcyB1bnVzZWQ6 DQoNCihpbnNuIDIgNyA0IDIgKHNldCAocmVnOlFJIDk3KSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVn OlFJIDAgeDAgWyB4ciBdKSkgInByb20uYyI6MzozNyAtMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuaWwpKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnNuIDQgMiAzIDIgKHNldCAocmVnOlFJIDk5KSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVnOlFJIDEgeDEgWyB4YyBdKSkgInByb20uYyI6MzozNyAtMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuaWwpKSAgDQoNCkFu ZCB0aGUgcGFyYWRveGljYWwgc3VicmVnIGlzIG1vdmVkIGludG8gdGhlIGZpcnN0IG9wZXJhdGlv biByZXF1aXJpbmcgaXQ6DQoNCihpbnNuIDExIDEwIDEyIDIgKHNldCAocmVnOlNJIDEwMykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobXVsdDpTSSAoc3VicmVnOlNJIChyZWc6SEkgMTAxKSAwKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3VicmVnOlNJIChyZWc6SEkgMTAyKSAwKSkpICJwcm9tLmMiOjQ6MTYgLTEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5pbCkpDQoNCkluIGFueSBjYXNlLCBJ J20gc3RpbGwgbm90IHRvdGFsbHkgc3VyZSB3aGF0IHRoZSBvYmplY3Rpb24gaGVyZSBpcy4gIEFm YWlrLA0KY29tcGFyZXMgbmVlZCB0byBiZSB0cmVhdGVkIHNwZWNpYWxseSBiZWNhdXNlIGluIEdJ TVBMRSB0aGV5IGFscmVhZHkNCmFyZS4gIEFmYWlrLCBDIGludGVnZXIgcHJvbW90aW9uIHJ1bGVz IHN0YXRlIHRoYXQgaW4gdGhlIGNvbXBhcmlzb24gMCBzaG91bGQNCmhhdmUgYmVlbiBwcm9tb3Rl ZCB0byBhbiBpbnRlZ2VyIGNvbnN0YW50IG9mIHJhbmsgaW50IGFuZCBzbyB0aGUgY29tcGFyaXNv biBpdHNlbGYNCnNob3VsZCBoYXZlIGJlZW4gZG9uZSBhcyBpbnRlZ2VyLiBpLmUuIGV4dGVuZGVk LiAgQW5kIG1vc3Qgb2Ygb3VyIHBhdHRlcm5zDQphcmUgYmFzZWQgYXJvdW5kIHRoaXMuDQoNCkdp bXBsZSBob3dldmVyIGRvZXNuJ3QgZG8gdGhpcywgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSBpbiB0 aGUgcmFuayBvZiB0aGUNCnZhcmlhYmxlIGFuZCB0aGVyZSBpcyBubyBleHBsaWNpdCBjb252ZXJz aW9uLiAgVGhpcyBoYXBwZW5lZCB0byBiZSBmaXhlZCB1cA0KYmVmb3JlIGR1cmluZyB0aGUgZm9y Y2VkIHByb21vdGlvbi4gIFNvIHRvIG1lIHRoZSBoZXVyaXN0aWMgZG9lc24ndCBzZWVtDQp0byBi ZSB0aGF0IGNyYXp5Li4NCg0KQnV0IEknbGwgcmVzcGluIHRoZSBwYXRjaCB3aXRob3V0IHRoZSBo b29rIGFuZCBzZWUgd2hlcmUgdGhpbmdzIGxhbmQuDQoNClRoYW5rcywNClRhbWFyDQoNCj4gPg0K PiA+IEknbSBub3Qgc3VyZSBpdCBkb2VzLCBhcyB0aGUgYW55LWV4dGVuZGVkIHZhbHVlIG11c3Qg cmVtYWluIGxpdmUuIGkuZS4NCj4gPiBhYm92ZSB5b3UgY2FuJ3QgZ2V0IHJpZCBvZiB3MjIsIHlv dSBjYW4gb25seSBjaG9vc2UgYmV0d2VlbiBoYXZpbmcgaXQNCj4gPiBiZSB6ZXJvIG9mIGFueSBl eHRlbmRlZC4gIEJ1dCBJIGFtIG5vdCBzdXJlIGhvdyB5b3Ugd291bGQgZG8gdGhhdCBhZnRlcg0K PiBleHBhbmQuDQo+IA0KPiBUaGVzZSBwZXItb3BlcmF0aW9uIGV4dGVuZHMgYXJlIGVtaXR0ZWQg ZHVyaW5nIGV4cGFuZC4gIFRoZSBxdWVzdGlvbiBpcw0KPiB3aGV0aGVyIHdlIGRvIHRoZW0gaW50 byBmcmVzaCByZWdpc3RlcnM6DQo+IA0KPiAgICAoc2V0IChyZWc6U0kgUnRtcCkgKHplcm9fZXh0 ZW5kOlNJIChzdWJyZWc6UUkgKHJlZzpTSSBSKSkpKQ0KPiANCj4gd2hpY2ggbGVhdmVzIGJvdGgg UiBhbmQgUnRtcCBsaXZlIGF0IHRoZSBzYW1lIHRpbWUsIG9yIHdoZXRoZXIgd2UgZG8gdGhlbQ0K PiBpbi1zaXR1Og0KPiANCj4gICAgKHNldCAocmVnOlNJIFIpICh6ZXJvX2V4dGVuZDpTSSAoc3Vi cmVnOlFJIChyZWc6U0kgUikpKSkNCj4gDQo+IEV4cGFuZCBzaG91bGQga25vdyB0aGF0IHRoZSBs YXR0ZXIgaXMgdmFsaWQsIGdpdmVuIHRoZSBERUNMX1JUTC4NCj4gDQo+IFRoYW5rcywNCj4gUmlj aGFyZA0K