From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2087.outbound.protection.outlook.com [40.107.21.87]) by sourceware.org (Postfix) with ESMTPS id F2A4E3857705 for ; Mon, 24 Apr 2023 09:06:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F2A4E3857705 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xbB1kPBVw4OFD8vokmGiFF0ammuMaxGZ+LCXTjzpFeI=; b=WyVSE5mFVgm78/qj1E3l104Qvn2MRSHsiz7JpMR+dJfOmpiZQwvP0LzXgLEkiA0CBjvuVa/sEJHpfPuuKZw8u65JDgZy3Kg9YAYK4eN6pLyn34hBgDb1OcN9b5BU1zVE9kcdkTyy8J5c15b3nSRTq5oPkGP2AGMisAsW6G7KG1A= Received: from DUZPR01CA0296.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::25) by DB3PR08MB8985.eurprd08.prod.outlook.com (2603:10a6:10:43f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.33; Mon, 24 Apr 2023 09:06:02 +0000 Received: from DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:4b7:cafe::d2) by DUZPR01CA0296.outlook.office365.com (2603:10a6:10:4b7::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.33 via Frontend Transport; Mon, 24 Apr 2023 09:06:02 +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 DBAEUR03FT049.mail.protection.outlook.com (100.127.142.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.19 via Frontend Transport; Mon, 24 Apr 2023 09:06:02 +0000 Received: ("Tessian outbound 945aec65ec65:v136"); Mon, 24 Apr 2023 09:06:02 +0000 X-CR-MTA-TID: 64aa7808 Received: from 8d6109981ca8.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1012A2A7-05AA-44E6-8BD8-C64304A207E0.1; Mon, 24 Apr 2023 09:06:01 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8d6109981ca8.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 24 Apr 2023 09:06:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X+Ucrgdio2Q4d+bML+2GpIEcTQeJqnSsBW+gDTa8x0aqdGOb+GP7H00Ud8ZkPcNKCWMRceNnczTQQefR9Q+Vf2DaW3lVtHdYxv/Z36hAnJEP4hB1/sVRFCCrYElsl1l9GAFl3p0KN8FNxnEiUp3B3hMHPCZUKoTFzboWmG3RgYGN48Vsa7gG7Fvn/RF+TjZxzNExB48kdRm+P6RHBQQ7HIGHkbia6RG0g+UDkG7sT64LuWKErvRSLwKZ6uUIZ7p+r6RQVdVKJOl2Uafwnod3KFnzpXErNd/moyqV+I3273NYiHz9QqsSulPo1qCxmnfnfbPYvZ1KhuF1pF+WisaK/Q== 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=xbB1kPBVw4OFD8vokmGiFF0ammuMaxGZ+LCXTjzpFeI=; b=BzBq26XDpWaBzQ4JXx2AV7t9k8Elbn5SA/ZbMRV5I5nGNQA/pDe/h/yc2yRXD0WbLt3eqATceF/M0k0FidAVgthpNkdryWTbo404I54NjC1TeWdT7VeNlbvsTsvkm3g6pX+BWUi8GMBeVl2qmFPTGasN7/JaEwEb73i6ThH7ZQX/iLnXiDlfEp1VMeT/pVbS0jksiPOp//tC1u+Id2fIXnxbQpF8WI97Z+VSMdez4FBo58PqPLzSVNWM+ZawEYWgz6n2tNbJho7T6hz8p+tb+feGqWYi2Y2FQ7dl3/6ON/83wYPMEPgMOu+gOYCKUFxFM4fsGkWX/qy6tz0GqnQ0sQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xbB1kPBVw4OFD8vokmGiFF0ammuMaxGZ+LCXTjzpFeI=; b=WyVSE5mFVgm78/qj1E3l104Qvn2MRSHsiz7JpMR+dJfOmpiZQwvP0LzXgLEkiA0CBjvuVa/sEJHpfPuuKZw8u65JDgZy3Kg9YAYK4eN6pLyn34hBgDb1OcN9b5BU1zVE9kcdkTyy8J5c15b3nSRTq5oPkGP2AGMisAsW6G7KG1A= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by GV1PR08MB7706.eurprd08.prod.outlook.com (2603:10a6:150:51::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.33; Mon, 24 Apr 2023 09:05:47 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::82f2:dba0:1f9b:c8f]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::82f2:dba0:1f9b:c8f%6]) with mapi id 15.20.6319.033; Mon, 24 Apr 2023 09:05:46 +0000 From: Tamar Christina To: Richard Sandiford CC: "gcc-patches@gcc.gnu.org" , nd , Richard Earnshaw Subject: RE: [PATCH] RFC: New compact syntax for insn and insn_split in Machine Descriptions Thread-Topic: [PATCH] RFC: New compact syntax for insn and insn_split in Machine Descriptions Thread-Index: AQHZchMboQNCIL/sZEab/kpOTmlN5K82BoQwgAQrudA= Date: Mon, 24 Apr 2023 09:05:42 +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: 52AD7D265C003D45AD0736EDC7A32375.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-traffictypediagnostic: VI1PR08MB5325:EE_|GV1PR08MB7706:EE_|DBAEUR03FT049:EE_|DB3PR08MB8985:EE_ X-MS-Office365-Filtering-Correlation-Id: af15e5f3-9a62-4891-cd1c-08db44a320e4 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: E+qrF35Ld8zMHH/wNncgXM4Gqk2cA93rbDJ36VEVhgG+p3pvsiqQQ3ovYpfX/CsmE5rJYqUOTw84t1IyTgQ2a8R15uVgItGccwCM+RHmJUGblvoTfof1bvtRAK35cSjMnRgI5trxEN/nth/IjBqCzB5REyMdc6uTp0565Dpo/YwwmY1ZvjHFKKGk8aitJ+lcPkJ7zAs3F4LN91fOBjbC1xoWnRX2R3KK3C26AySUmGx6+DPGGrGk7OAr6JZ6e+eakL9bacowc1GB+88vfEmOdJIbKsuvg7HOSwG/RkUGFVselRWG/ZnAA1mAUS8zRzKjPfkJmX0Is4b43QOlPFZZyRpxZcmopDgPxVA8ofzAk/7REs7FqjtcImUmrmpYCatdy1aPtHpzXyxbFLbi1Z2fdOlR37QYaa59+2lOg70+xfU5Yo5qnFvvS/u70WU2QSKAAlWqSFgtRkV37cUmh+XfeZalQboohuwX44Xm1s2eNg4eyXMh9R5VnUwB6RwEq2oAFl/tBlYjtR0E681GjGi12X8GrWLxyJ/MdspRt8nKkCkknzCKQp+zZ3jNPKnCnMlr32HyLoeA+wcbk3DVuLjEpt8ch9aM3JwFiG20NXJqCeLFLx6PvOBLM2RjhP6MqBop 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:(13230028)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(451199021)(2906002)(30864003)(7696005)(71200400001)(55016003)(6666004)(9686003)(6506007)(26005)(53546011)(186003)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(6862004)(8676002)(8936002)(316002)(41300700001)(4326008)(478600001)(5660300002)(52536014)(54906003)(6636002)(38070700005)(38100700002)(122000001)(86362001)(33656002)(83380400001)(66899021);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7706 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: DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fb47b12b-833a-45d2-32a3-08db44a31524 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lgU9YlaY/JuiS63N0xtJqkjR1WwIFGXaduwUKwR8XVR5wvjYmMqjbD5wp4BEUliyHTPXHVOkjhAxZVVaiSptLt5ATx6XpBvLiUUY5eNhR//02oJxQFEWtb0qbT1+H3tGqw/T7zDDLH49TuOOeYwgkq1WBCVGrYH3ev5n8n+vpTTxPdPO0g+uFAivGMTTCruGSPBYJRhA8ihv5rbmXmo2pOu5HXFTTO5hoYN6TkFrjno/LTGWfzpDunOuPa/ClA74DrMJvqJhFAb+rKFNR3vEtTjVQl4ZcCjcFMDU39GTRq9jOi91ry+7HRGhVNw4ixskrz5Pg8VW4FayY+8nTxNnCoVGYTKCe07793zbJNDaZSe+/YW3rfIHj5iNPWJv2wFqOVji37cNktSG0oz6NwR28XyYD0MTPUcCexhqd++H9yxw/ek0jSVKHeUCjmpvnibtrOZXlKrrPYFUyaxeZj3nysuv2erBiXb9dYawQ+guhQj1uLs4lRunPjqS0jIKRqbkK6pDem6fsuxOxg53GT1I7+pNcd2dZWUZ4R3R5kl01p/Kh5TVsKT0mWL79K6NA6Hu6KRk+OpH/zXB5mMTlIWi9IMH0TEt/yj90RVkF/gViidPNmK5ezxQp5Qr59H4PfkPCP35iwvm7fvbC6s0rdfUgX8xYIi+5P9lUmWEQF8ZNsE= 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:(13230028)(4636009)(136003)(39850400004)(376002)(346002)(396003)(451199021)(46966006)(36840700001)(30864003)(2906002)(70206006)(70586007)(316002)(4326008)(52536014)(6862004)(66899021)(8676002)(8936002)(5660300002)(41300700001)(33656002)(82310400005)(86362001)(55016003)(40480700001)(356005)(9686003)(26005)(186003)(81166007)(53546011)(478600001)(6666004)(7696005)(36860700001)(83380400001)(47076005)(336012)(6506007)(6636002)(82740400003)(54906003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2023 09:06:02.5124 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af15e5f3-9a62-4891-cd1c-08db44a320e4 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: DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8985 X-Spam-Status: No, score=-6.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBTYW5kaWZv cmQgPHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgQXByaWwgMjEs IDIwMjMgNjoxOSBQTQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJt LmNvbT4NCj4gQ2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IFJp Y2hhcmQgRWFybnNoYXcNCj4gPFJpY2hhcmQuRWFybnNoYXdAYXJtLmNvbT4NCj4gU3ViamVjdDog UmU6IFtQQVRDSF0gUkZDOiBOZXcgY29tcGFjdCBzeW50YXggZm9yIGluc24gYW5kIGluc25fc3Bs aXQgaW4NCj4gTWFjaGluZSBEZXNjcmlwdGlvbnMNCj4gDQo+IFRhbWFyIENocmlzdGluYSA8dGFt YXIuY2hyaXN0aW5hQGFybS5jb20+IHdyaXRlczoNCj4gPiBIaSBBbGwsDQo+ID4NCj4gPiBUaGlz IHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBjb21wYWN0IHN5bnRheCBmb3Igc3BlY2lmeWluZw0K PiA+IGNvbnN0cmFpbnRzIGluIGluc3RydWN0aW9uIHBhdHRlcm5zLiBDcmVkaXQgZm9yIHRoZSBp ZGVhIGdvZXMgdG8gUmljaGFyZA0KPiBFYXJuc2hhdy4NCj4gPg0KPiA+IEkgYW0gc2VuZGluZyB1 cCB0aGlzIFJGQyB0byBnZXQgZmVlZGJhY2sgZm9yIGl0J3MgaW5jbHVzaW9uIGluIEdDQyAxNC4N Cj4gPiBXaXRoIHRoaXMgbmV3IHN5bnRheCB3ZSB3YW50IGEgY2xlYW4gYnJlYWsgZnJvbSB0aGUg Y3VycmVudA0KPiA+IGxpbWl0YXRpb25zIHRvIG1ha2Ugc29tZXRoaW5nIHRoYXQgaXMgaG9wZWZ1 bGx5IGVhc2llciB0byB1c2UgYW5kIG1haW50YWluLg0KPiA+DQo+ID4gVGhlIGlkZWEgYmVoaW5k IHRoaXMgY29tcGFjdCBzeW50YXggaXMgdGhhdCBvZnRlbiB0aW1lcyBpdCdzIHF1aXRlDQo+ID4g aGFyZCB0byBjb3JyZWxhdGUgdGhlIGVudHJpZXMgaW4gdGhlIGNvbnN0cmFpbnMgbGlzdCwgYXR0 cmlidXRlcyBhbmQgaW5zdHJ1Y3Rpb24NCj4gbGlzdHMuDQo+ID4NCj4gPiBPbmUgaGFzIHRvIGNv dW50IGFuZCB0aGlzIG9mdGVuIGlzIHRlZGlvdXMuICBBZGRpdGlvbmFsbHkgd2hlbg0KPiA+IGNo YW5naW5nIGEgc2luZ2xlIGxpbmUgaW4gdGhlIGluc24gbXVsdGlwbGUgbGluZXMgaW4gYSBkaWZm IGNoYW5nZSwNCj4gPiBtYWtpbmcgaXQgaGFyZGVyIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24uDQo+ ID4NCj4gPiBUaGlzIG5ldyBzeW50YXggdGFrZXMgaW50byBhY2NvdW50IG1hbnkgb2YgdGhlIGNv bW1vbiB0aGluZ3MgdGhhdCBhcmUNCj4gZG9uZSBpbiBNRA0KPiA+IGZpbGVzLiAgIEl0J3MgYWxz byB3b3J0aCBzYXlpbmcgdGhhdCB0aGlzIHZlcnNpb24gaXMgaW50ZW5kZWQgdG8gZGVhbCB3aXRo IHRoZQ0KPiA+IGNvbW1vbiBjYXNlIG9mIGEgc3RyaW5nIGJhc2VkIGFsdGVybmF0aXZlcy4gICBG b3IgQyBjaHVua3Mgd2UgaGF2ZSBzb21lDQo+IGlkZWFzDQo+ID4gYnV0IHRob3NlIGFyZSBub3Qg aW50ZW5kZWQgdG8gYmUgYWRkcmVzc2VkIGhlcmUuDQo+ID4NCj4gPiBJdCdzIGVhc2llc3QgdG8g ZXhwbGFpbiB3aXRoIGFuIGV4YW1wbGU6DQo+ID4NCj4gPiBub3JtYWwgc3ludGF4Og0KPiA+DQo+ ID4gKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKm1vdnNpX2FhcmNoNjQiDQo+ID4gICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpTSSAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1yLGsscixyLHIsciwg cix3LCBtLCBtLA0KPiByLCAgciwgIHIsIHcscix3LCB3IikNCj4gPiAJKG1hdGNoX29wZXJhbmQ6 U0kgMSAiYWFyY2g2NF9tb3Zfb3BlcmFuZCIgICINCj4gcixyLGssTSxuLFVzdixtLG0sclosdyxV c3csVXNhLFVzaCxyWix3LHcsRHMiKSldDQo+ID4gICAiKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJh bmRzWzBdLCBTSW1vZGUpDQo+ID4gICAgIHx8IGFhcmNoNjRfcmVnX29yX3plcm8gKG9wZXJhbmRz WzFdLCBTSW1vZGUpKSINCj4gPiAgICJADQo+ID4gICAgbW92XFx0JXcwLCAldzENCj4gPiAgICBt b3ZcXHQldzAsICV3MQ0KPiA+ICAgIG1vdlxcdCV3MCwgJXcxDQo+ID4gICAgbW92XFx0JXcwLCAl MQ0KPiA+ICAgICMNCj4gPiAgICAqIHJldHVybiBhYXJjaDY0X291dHB1dF9zdmVfY250X2ltbWVk aWF0ZSAoXCJjbnRcIiwgXCIleDBcIiwNCj4gb3BlcmFuZHNbMV0pOw0KPiA+ICAgIGxkclxcdCV3 MCwgJTENCj4gPiAgICBsZHJcXHQlczAsICUxDQo+ID4gICAgc3RyXFx0JXcxLCAlMA0KPiA+ICAg IHN0clxcdCVzMSwgJTANCj4gPiAgICBhZHJwXFx0JXgwLCAlQTFcO2xkclxcdCV3MCwgWyV4MCwg JUwxXQ0KPiA+ICAgIGFkclxcdCV4MCwgJWMxDQo+ID4gICAgYWRycFxcdCV4MCwgJUExDQo+ID4g ICAgZm1vdlxcdCVzMCwgJXcxDQo+ID4gICAgZm1vdlxcdCV3MCwgJXMxDQo+ID4gICAgZm1vdlxc dCVzMCwgJXMxDQo+ID4gICAgKiByZXR1cm4gYWFyY2g2NF9vdXRwdXRfc2NhbGFyX3NpbWRfbW92 X2ltbWVkaWF0ZSAob3BlcmFuZHNbMV0sDQo+IFNJbW9kZSk7Ig0KPiA+ICAgIkNPTlNUX0lOVF9Q IChvcGVyYW5kc1sxXSkgJiYgIWFhcmNoNjRfbW92ZV9pbW0gKElOVFZBTA0KPiAob3BlcmFuZHNb MV0pLCBTSW1vZGUpDQo+ID4gICAgICYmIFJFR19QIChvcGVyYW5kc1swXSkgJiYgR1BfUkVHTlVN X1AgKFJFR05PIChvcGVyYW5kc1swXSkpIg0KPiA+ICAgIFsoY29uc3RfaW50IDApXQ0KPiA+ICAg ICJ7DQo+ID4gICAgICAgIGFhcmNoNjRfZXhwYW5kX21vdl9pbW1lZGlhdGUgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSk7DQo+ID4gICAgICAgIERPTkU7DQo+ID4gICAgIH0iDQo+ID4gICA7OyBU aGUgIm1vdl9pbW0iIHR5cGUgZm9yIENOVCBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuDQo+ID4gICBb KHNldF9hdHRyICJ0eXBlIg0KPiAibW92X3JlZyxtb3ZfcmVnLG1vdl9yZWcsbW92X2ltbSxtb3Zf aW1tLG1vdl9pbW0sbG9hZF80LA0KPiA+DQo+IGxvYWRfNCxzdG9yZV80LHN0b3JlXzQsbG9hZF80 LGFkcixhZHIsZl9tY3IsZl9tcmMsZm1vdixuZW9uX21vdmUiKQ0KPiA+ICAgIChzZXRfYXR0ciAi YXJjaCIgICAiKiwqLCosKiwqLHN2ZSwqLGZwLCosZnAsKiwqLCosZnAsZnAsZnAsc2ltZCIpDQo+ ID4gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDQsNCw0LCosICA0LDQsIDQsNCwgNCw4LDQsNCwg NCwgNCwgNCwgICA0IikNCj4gPiBdDQo+ID4gKQ0KPiA+DQo+ID4gTmV3IHN5bnRheDoNCj4gPg0K PiA+IChkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIiptb3ZzaV9hYXJjaDY0Ig0KPiA+ICAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6U0kgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQ0KPiA+IAkobWF0Y2hf b3BlcmFuZDpTSSAxICJhYXJjaDY0X21vdl9vcGVyYW5kIikpXQ0KPiA+ICAgIihyZWdpc3Rlcl9v cGVyYW5kIChvcGVyYW5kc1swXSwgU0ltb2RlKQ0KPiA+ICAgICB8fCBhYXJjaDY0X3JlZ19vcl96 ZXJvIChvcGVyYW5kc1sxXSwgU0ltb2RlKSkiDQo+ID4gICAiQEAgKGNvbnM6IDAgMTsgYXR0cnM6 IHR5cGUgYXJjaCBsZW5ndGgpDQo+ID4gICAgWz1yLCByICA7IG1vdl9yZWcgICwgKiAgICwgNF0g bW92XHQldzAsICV3MQ0KPiA+ICAgIFtrICwgciAgOyBtb3ZfcmVnICAsICogICAsIDRdIF4NCj4g PiAgICBbciAsIGsgIDsgbW92X3JlZyAgLCAqICAgLCA0XSBeDQo+ID4gICAgW3IgLCBNICA7IG1v dl9pbW0gICwgKiAgICwgNF0gbW92XHQldzAsICUxDQo+ID4gICAgW3IgLCBuICA7IG1vdl9pbW0g ICwgKiAgICwgKl0gIw0KPiA+ICAgIFtyICwgVXN2OyBtb3ZfaW1tICAsIHN2ZSAsIDRdIDw8IGFh cmNoNjRfb3V0cHV0X3N2ZV9jbnRfaW1tZWRpYXRlICgnY250JywNCj4gJyV4MCcsIG9wZXJhbmRz WzFdKTsNCj4gPiAgICBbciAsIG0gIDsgbG9hZF80ICAgLCAqICAgLCA0XSBsZHJcdCV3MCwgJTEN Cj4gPiAgICBbdyAsIG0gIDsgbG9hZF80ICAgLCBmcCAgLCA0XSBsZHJcdCVzMCwgJTENCj4gPiAg ICBbbSAsIHJaIDsgc3RvcmVfNCAgLCAqICAgLCA0XSBzdHJcdCV3MSwgJTANCj4gPiAgICBbbSAs IHcgIDsgc3RvcmVfNCAgLCBmcCAgLCA0XSBzdHJcdCVzMSwgJTANCj4gPiAgICBbciAsIFVzdzsg bG9hZF80ICAgLCAqICAgLCA4XSBhZHJwXHQleDAsICVBMTtsZHJcdCV3MCwgWyV4MCwgJUwxXQ0K PiA+ICAgIFtyICwgVXNhOyBhZHIgICAgICAsICogICAsIDRdIGFkclx0JXgwLCAlYzENCj4gPiAg ICBbciAsIFVzaDsgYWRyICAgICAgLCAqICAgLCA0XSBhZHJwXHQleDAsICVBMQ0KPiA+ICAgIFt3 ICwgclogOyBmX21jciAgICAsIGZwICAsIDRdIGZtb3ZcdCVzMCwgJXcxDQo+ID4gICAgW3IgLCB3 ICA7IGZfbXJjICAgICwgZnAgICwgNF0gZm1vdlx0JXcwLCAlczENCj4gPiAgICBbdyAsIHcgIDsg Zm1vdiAgICAgLCBmcCAgLCA0XSBmbW92XHQlczAsICVzMQ0KPiA+ICAgIFt3ICwgRHMgOyBuZW9u X21vdmUsIHNpbWQsIDRdIDw8DQo+IGFhcmNoNjRfb3V0cHV0X3NjYWxhcl9zaW1kX21vdl9pbW1l ZGlhdGUgKG9wZXJhbmRzWzFdLCBTSW1vZGUpOyINCj4gPiAgICJDT05TVF9JTlRfUCAob3BlcmFu ZHNbMV0pICYmICFhYXJjaDY0X21vdmVfaW1tIChJTlRWQUwNCj4gKG9wZXJhbmRzWzFdKSwgU0lt b2RlKQ0KPiA+ICAgICAmJiBSRUdfUCAob3BlcmFuZHNbMF0pICYmIEdQX1JFR05VTV9QIChSRUdO TyAob3BlcmFuZHNbMF0pKSINCj4gPiAgIFsoY29uc3RfaW50IDApXQ0KPiA+ICAgew0KPiA+ICAg ICBhYXJjaDY0X2V4cGFuZF9tb3ZfaW1tZWRpYXRlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0p Ow0KPiA+ICAgICBET05FOw0KPiA+ICAgfQ0KPiA+ICAgOzsgVGhlICJtb3ZfaW1tIiB0eXBlIGZv ciBDTlQgaXMganVzdCBhIHBsYWNlaG9sZGVyLg0KPiA+ICkNCj4gPg0KPiA+IFRoZSBwYXRjaCBj b250YWlucyBzb21lIG1vcmUgcmV3cml0dGVuIGV4YW1wbGVzIGZvciBib3RoIEFybSBhbmQNCj4g PiBBQXJjaDY0LiAgSSBoYXZlIGluY2x1ZGVkIHRoZW0gZm9yIGV4YW1wbGVzIGluIHRoaXMgUkZD IGJ1dCB0aGUgZmluYWwNCj4gPiB2ZXJzaW9uIHBvc3RlZCBpbiBHQ0MgMTQgd2lsbCBoYXZlIHRo ZXNlIHNwbGl0IG91dC4NCj4gPg0KPiA+IFRoZSBtYWluIHN5bnRheCBydWxlcyBhcmUgYXMgZm9s bG93cyAoU2VlIGRvY3MgZm9yIGZ1bGwgcnVsZXMpOg0KPiA+ICAgLSBUZW1wbGF0ZSBtdXN0IHN0 YXJ0IHdpdGggIkBAIiB0byB1c2UgdGhlIG5ldyBzeW50YXguDQo+ID4gICAtICJAQCIgaXMgZm9s bG93ZWQgYnkgYSBsYXlvdXQgaW4gcGFyZW50aGVzZXMgd2hpY2ggaXMgImNvbnM6IiBmb2xsb3dl ZCBieQ0KPiA+ICAgICBhIGxpc3Qgb2YgbWF0Y2hfb3BlcmFuZC9tYXRjaF9zY3JhdGNoIElEcywg dGhlbiBhIHNlbWljb2xvbiwgdGhlbiB0aGUNCj4gPiAgICAgc2FtZSBmb3IgYXR0cmlidXRlcyAo ImF0dHJzOiIpLiBCb3RoIHNlY3Rpb25zIGFyZSBvcHRpb25hbCAoc28geW91IGNhbg0KPiA+ICAg ICB1c2Ugb25seSBjb25zLCBvciBvbmx5IGF0dHJzLCBvciBib3RoKSwgYW5kIGNvbnMgbXVzdCBj b21lIGJlZm9yZSBhdHRycw0KPiA+ICAgICBpZiBwcmVzZW50Lg0KPiA+ICAgLSBFYWNoIGFsdGVy bmF0aXZlIGJlZ2lucyB3aXRoIGFueSBhbW91bnQgb2Ygd2hpdGVzcGFjZS4NCj4gPiAgIC0gRm9s bG93aW5nIHRoZSB3aGl0ZXNwYWNlIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29uc3Ry YWludHMgYW5kL29yDQo+ID4gICAgIGF0dHJpYnV0ZXMgd2l0aGluIGJyYWNrZXRzIFtdLCB3aXRo IHNlY3Rpb25zIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbi4NCj4gPiAgIC0gRm9sbG93aW5nIHRo ZSBjbG9zaW5nICddJyBpcyBhbnkgYW1vdW50IG9mIHdoaXRlc3BhY2UsIGFuZCB0aGVuIHRoZSBh Y3R1YWwNCj4gPiAgICAgYXNtIG91dHB1dC4NCj4gPiAgIC0gU3BhY2VzIGFyZSBhbGxvd2VkIGlu IHRoZSBsaXN0ICh0aGV5IHdpbGwgc2ltcGx5IGJlIHJlbW92ZWQpLg0KPiA+ICAgLSBBbGwgYWx0 ZXJuYXRpdmVzIHNob3VsZCBiZSBzcGVjaWZpZWQ6IGEgYmxhbmsgbGlzdCBzaG91bGQgYmUNCj4g PiAgICAgIlssLF0iLCAiWywsOyxdIiBldGMuLCBub3QgIltdIiBvciAiIiAoaG93ZXZlciBnZW5h dHRyIG1heSBzZWdmYXVsdCBpZg0KPiA+ICAgICB5b3UgbGVhdmUgY2VydGFpbiBhdHRyaWJ1dGVz IGVtcHR5LCBJIGhhdmUgZm91bmQpLg0KPiA+ICAgLSBUaGUgYWN0dWFsIGNvbnN0cmFpbnQgc3Ry aW5nIGluIHRoZSBtYXRjaF9vcGVyYW5kIG9yIG1hdGNoX3NjcmF0Y2gsIGFuZA0KPiA+ICAgICB0 aGUgYXR0cmlidXRlIHN0cmluZyBpbiB0aGUgc2V0X2F0dHIsIG11c3QgYmUgYmxhbmsgb3IgYW4g ZW1wdHkgc3RyaW5nDQo+ID4gICAgICh5b3UgY2FuJ3QgY29tYmluZSB0aGUgb2xkIGFuZCBuZXcg c3ludGF4ZXMpLg0KPiA+ICAgLSBUaGUgY29tbW9uIGlkaW9uICogcmV0dXJuIGNhbiBiZSBzaG9y dGVuZWQgYnkgdXNpbmcgPDwuDQo+ID4gICAtIEFueSB1bmV4cGFuZGVkIGl0ZXJhdG9ycyBsZWZ0 IGR1cmluZyBwcm9jZXNzaW5nIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yIGF0DQo+ID4gICAgIGNv bXBpbGUgdGltZS4gICBJZiBmb3Igc29tZSByZWFzb24gPD4gaXMgbmVlZGVkIGluIHRoZSBvdXRw dXQgdGhlbiB0aGVzZQ0KPiA+ICAgICBtdXN0IGJlIGVzY2FwZWQgdXNpbmcgXC4NCj4gPiAgIC0g SW5zaWRlIGEgQEAgYmxvY2sgJycgaXMgdHJlYXRlZCBhcyAiIiB3aGVuIHRoZXJlIGFyZSBtdWx0 aXBsZSBjaGFyYWN0ZXJzDQo+ID4gICAgIGluc2lkZSB0aGUgc2luZ2xlIHF1b3Rlcy4gIFRoaXMg dmVyc2lvbiBkb2VzIG5vdCBoYW5kbGUgbXVsdGkgYnl0ZSBsaXRlcmFscw0KPiA+ICAgICBsaWtl IHNwZWNpZnlpbmcgY2hhcmFjdGVycyBhcyB0aGVpciBudW1lcmljYWwgZW5jb2RpbmcsIGxpa2Ug XDAwMyBub3IgZG9lcw0KPiA+ICAgICBpdCBoYW5kbGUgdW5pY29kZSwgZXNwZWNpYWxseSBtdWx0 aWJ5dGUgZW5jb2RpbmdzLiAgVGhpcyBmZWF0dXJlIG1heSBiZQ0KPiBtb3JlDQo+ID4gICAgIHRy b3VibGUgdGhhbiBpdCdzIHdvcnRoIHNvIGhhdmUgbm8gZmluaXNoZWQgaXQgb2ZmLCBob3dldmVy IHRoaXMgbWVhbnMgb25lDQo+ID4gICAgIGNhbiB1c2UgJ2ZvbycgaW5zdGVhZCBvZiBcImZvb1wi IHRvIGRlbm90ZSBhIG11bHRpY2hhcmFjdGVyIHN0cmluZy4NCj4gPiAgIC0gSW5zaWRlIGFuIEBA IGJsb2NrIGFueSB1bmV4cGFuZGVkIGl0ZXJhdG9ycyB3aWxsIHJlc3VsdCBpbiBhIGNvbXBpbGUg dGltZQ0KPiA+ICAgICBmYXVsdCBpbnN0ZWFkIG9mIGluY29ycmVjdCBhc3NlbWJseSBiZWluZyBn ZW5lcmF0ZWQgYXQgcnVudGltZS4gIElmIHRoZQ0KPiA+ICAgICBsaXRlcmFsIDw+IGlzIG5lZWRl ZCBpbiB0aGUgb3V0cHV0IHRoaXMgbmVlZHMgdG8gYmUgZXNjYXBlZCB3aXRoIFw8XD4uDQo+ID4g ICAtIFRoaXMgY2hlY2sgaXMgbm90IHBlcmZvcm1lZCBpbnNpZGUgQyBibG9ja3MgKGxpbmVzIHN0 YXJ0aW5nIHdpdGggKikuDQo+ID4gICAtIEluc3RlYWQgb2YgY29weWluZyB0aGUgcHJldmlvdXMg aW5zdHJ1Y3Rpb24gYWdhaW4gaW4gdGhlIG5leHQgcGF0dGVybiwgb25lDQo+ID4gICAgIGNhbiB1 c2UgXiB0byByZWZlciB0byB0aGUgcHJldmlvdXMgYXNtIHN0cmluZy4NCj4gDQo+IFRoYW5rcyBm b3IgZG9pbmcgdGhpcy4gIFRoZSBuZXcgc3ludGF4IHNlZW1zIGxpa2UgYSBjbGVhciBpbXByb3Zl bWVudCBmb3INCj4gY29tcGxleCBwYXR0ZXJucyBsaWtlIG1vdnMuDQo+IA0KPiBTb21lIGNvbW1l bnRzL3N1Z2dlc3Rpb25zOg0KPiANCj4gLSBGcm9tIGEgc3R5bGUgcGVyc3BlY3RpdmUsIG91dC1v Zi1vcmRlciBjb25zdHJhaW50cyBzaG91bGQgSU1PIGJlIHN0cm9uZ2x5DQo+ICAgZGlzY291cmFn ZWQuICBUaGUgYXNtIHN0cmluZyB1c2VzICUwLCAlMSwgJTIgZXRjLiB0byByZWZlciB0byBvcGVy YW5kcywNCj4gICBhbmQgaGF2aW5nIHRoYXQgZGlyZWN0bHkgYWZ0ZXIgYSBsaXN0IHRoYXQgcHV0 cyB0aGUgY29uc3RyYWludHMgaW4NCj4gICBhIGRpZmZlcmVudCBvcmRlciAoc3VjaCBhcyBbJTIs ICUwLCAlMV0pIHdvdWxkIElNTyBiZSB2ZXJ5IGNvbmZ1c2luZy4NCj4gDQo+ICAgSSBhZ3JlZSB0 aGVyZSBtaWdodCBiZSBjYXNlcyB3aGVyZSBkcm9wcGluZyBjb25zdHJhaW50cyBtYWtlcyBzZW5z ZS4NCj4gICBCdXQgSSB0aGluayBpbiBnZW5lcmFsIHdlIHNob3VsZCBlbmNvdXJhZ2UgYWxsIGNv bnN0cmFpbnRzIHRvIGJlDQo+ICAgc3BlY2lmaWVkLCBhbmQgYmUgc3BlY2lmaWVkIGluIG9yZGVy LiAgQW5kIHRoYXQncyBsaWtlbHkgdG8gYmUgdGhlDQo+ICAgbmF0dXJhbCBjaG9pY2UgaW4gYW4g b3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGFueXdheS4NCj4gDQo+ICAgU28gaG93IGFi b3V0IGhhdmluZyBhIHNpbXBsZXIgc3ludGF4IGZvciB0aGUgZmlyc3QgbGluZSB3aGVuIGFsbA0K PiAgIGNvbnN0cmFpbnRzIGFyZSBzcGVjaWZpZWQgaW4gb3JkZXI/ICBNYXliZSBqdXN0ICJjb25z IiAod2l0aG91dCB0aGUNCj4gICBjb2xvbiBvciBudW1iZXJzKS4NCj4gDQo+IC0gSSdtIG5vdCB0 b28ga2VlbiBvbiB0aGUgJycgdGhpbmcuICBJdCBzb3VuZGVkIGZyb20gaW50ZXJuYWwNCj4gICBk aXNjdXNzaW9uIGxpa2UgYmFja3NsYXNoZXMgYW5kIHF1b3Rpbmcgd2VyZSBhIHByb2JsZW0gZ2Vu ZXJhbGx5Lg0KPiANCj4gICBXb3VsZCBpdCB3b3JrIHRvIHF1b3RlIHRoZSBuZXcgZm9ybSBpbiB7 QCAuLi4gfSBpbnN0ZWFkPyAgVGhlcmUgc2hvdWxkDQo+ICAgYmUgbm8gY29tcGF0aWJpbGl0eSBw cm9ibGVtIHdpdGggdGhhdCwgc2luY2UgQCBpc24ndCBhIHN0YW5kYXJkIEMrKw0KPiAgIGxleGlu ZyB0b2tlbi4NCg0KRmFpciBlbm91Z2gsIGRpZCB5b3UgbWVhbiB7QDxzdHJpbmc+fSBvciBAJ3N0 cmluZycgPyANCg0KSnVzdCBzbyBJIHVuZGVyc3RhbmQgYmVmb3JlIGltcGxlbWVudGluZyDwn5iK DQoNCj4gDQo+IC0gQ291bGQgd2Ugc3VwcG9ydCBhIGNvbW1lbnQgc3ludGF4PyAgRS5nLiBpZ25v cmUgbGluZXMgYmVnaW5uaW5nIHdpdGgNCj4gICA7OyBvciAvLyAob3IgYm90aCk/ICBJbiB0aGUg ZXhhbXBsZSBhYm92ZSwgaXQgd291bGQgYmUgZ29vZCB0byBrZWVwDQo+ICAgdGhlIGNvbW1lbnQg YWJvdXQgdGhlIENOVCB0eXBlIGF0dHJpYnV0ZSBuZWFyZXIgdG8gdGhlIGF0dHJpYnV0ZSBpdHNl bGYuDQoNCkZhaXIgcG9pbnQuIA0KDQo+IA0KPiAtIFZlcnkgbWlub3IsIGJ1dCB1c2luZyBbLi4u XSByYXRoZXIgdGhhbiAoLi4uKSBmb3IgdGhlIGZpcnN0IGxpbmUNCj4gICBtaWdodCBtYWtlIGl0 IG1vcmUgdmlzdWFsbHkgb2J2aW91cyB0aGF0IGl0J3MgYWN0aW5nIGFzIGEgdGFibGUNCj4gICBo ZWFkZXIgZm9yIHRoZSBbLi4uXSByb3dzLg0KDQpUaGFua3MsDQpXaWxsIHNlbmQgbmV3IHZlcnNp b24gb3V0IHNvb24uDQoNClRoYW5rcywNClRhbWFyDQo+IA0KPiBIYXZlbid0IGRvbmUgYSBkZXRh aWxlZCByZXZpZXcgb2YgdGhlIGdlbnN1cHBvcnQgYml0cywgYnV0Og0KPiANCj4gPiBbLi4uXQ0K PiA+IEBAIC03MDAsMTIgKzcwMiwzNyBAQCBwcm9jZXNzX3RlbXBsYXRlIChjbGFzcyBkYXRhICpk LCBjb25zdCBjaGFyDQo+ICp0ZW1wbGF0ZV9jb2RlKQ0KPiA+ICAJICBpZiAoc3AgIT0gZXApDQo+ ID4gIAkgICAgbWVzc2FnZV9hdCAoZC0+bG9jLCAidHJhaWxpbmcgd2hpdGVzcGFjZSBpbiBvdXRw dXQgdGVtcGxhdGUiKTsNCj4gPg0KPiA+IC0JICB3aGlsZSAoY3AgPCBzcCkNCj4gPiArCSAgLyog Q2hlY2sgZm9yIGFueSB1bmV4cGFuZGVkIGl0ZXJhdG9ycy4gICovDQo+ID4gKwkgIHN0ZDo6c3Ry aW5nIGJ1ZmYgKGNwLCBzcCAtIGNwKTsNCj4gPiArCSAgaWYgKGJwWzBdICE9ICcqJyAmJiBkLT5j b21wYWN0X3N5bnRheF9wKQ0KPiA+ICAJICAgIHsNCj4gPiAtCSAgICAgIHB1dGNoYXIgKCpjcCk7 DQo+ID4gLQkgICAgICBjcCsrOw0KPiA+ICsJICAgICAgc2l6ZV90IHN0YXJ0ID0gYnVmZi5maW5k ICgnPCcpOw0KPiA+ICsJICAgICAgc2l6ZV90IGVuZCA9IGJ1ZmYuZmluZCAoJz4nLCBzdGFydCAr IDEpOw0KPiA+ICsJICAgICAgaWYgKGVuZCAhPSBzdGQ6OnN0cmluZzo6bnBvcyB8fCBzdGFydCAh PSBzdGQ6OnN0cmluZzo6bnBvcykNCj4gPiArCQl7DQo+ID4gKwkJICBpZiAoZW5kID09IHN0ZDo6 c3RyaW5nOjpucG9zIHx8IHN0YXJ0ID09IHN0ZDo6c3RyaW5nOjpucG9zKQ0KPiA+ICsJCSAgICBm YXRhbF9hdCAoZC0+bG9jLCAidW5tYXRjaGVkIGFuZ2xlIGJyYWNrZXRzLCBsaWtlbHkgYW4gIg0K PiA+ICsJCQkgICAgICAiZXJyb3IgaW4gaXRlcmF0b3Igc3ludGF4IGluICVzIiwgYnVmZi5jX3N0 ciAoKSk7DQo+ID4gKw0KPiA+ICsJCSAgaWYgKHN0YXJ0ICE9IDANCj4gPiArCQkgICAgICAmJiBi dWZmW3N0YXJ0LTFdID09ICdcXCcNCj4gPiArCQkgICAgICAmJiBidWZmW2VuZC0xXSA9PSAnXFwn KQ0KPiA+ICsJCSAgICB7DQo+ID4gKwkJICAgICAgLyogRm91bmQgYSB2YWxpZCBlc2NhcGUgc2Vx dWVuY2UsIGVyYXNlIHRoZSBjaGFyYWN0ZXJzIGZvcg0KPiA+ICsJCQkgb3V0cHV0LiAgKi8NCj4g PiArCQkgICAgICBidWZmLmVyYXNlIChlbmQtMSwgMSk7DQo+ID4gKwkJICAgICAgYnVmZi5lcmFz ZSAoc3RhcnQtMSwgMSk7DQo+ID4gKwkJICAgIH0NCj4gPiArCQkgIGVsc2UNCj4gPiArCQkgICAg ZmF0YWxfYXQgKGQtPmxvYywgInVucmVzb2x2ZWQgaXRlcmF0b3IgJyVzJyBpbiAnJXMnIiwNCj4g PiArCQkJICAgICAgYnVmZi5zdWJzdHIoc3RhcnQrMSwgZW5kIC0gc3RhcnQtMSkuY19zdHIgKCks DQo+ID4gKwkJCSAgICAgIGJ1ZmYuY19zdHIgKCkpOw0KPiA+ICsJCX0NCj4gPiAgCSAgICB9DQo+ IA0KPiBBc20gc3RyaW5ncyB0aGF0IHdhbnQgdW5iYWxhbmNlZCBidXQgcXVvdGVkIDwgb3IgPiBz aG91bGQgYmUgYWJsZSB0byB1c2UNCj4gdGhlbSwgc28gdGhlIGNoZWNrIGZvciBiYWNrc2xhc2hl cyBzaG91bGQgcHJvYmFibHkgY29tZSBmaXJzdC4NCj4gSSBzdXBwb3NlIHRoaXMgYWxzbyBydW5z IGludG8gdGhlIGNsYXNzaWMgcHJvYmxlbSBvZiB3aGV0aGVyIHRoZSBwcmVjZWRpbmcNCj4gYmFj a3NsYXNoIHdhcyBpdHNlbGYgcXVvdGVkLCBldGMuDQo+IA0KPiBTbyBtYXliZSBpdCB3b3VsZCBt YWtlIHNlbnNlIHRvIHdhbGsgdGhyb3VnaCBjaGFyYWN0ZXItYnktY2hhcmFjdGVyLA0KPiBzb21l dGhpbmcgbGlrZToNCj4gDQo+ICAgICBjb25zdCBjaGFyICpwID0gY3A7DQo+ICAgICBjb25zdCBj aGFyICpsYXN0X2JyYWNrZXQgPSBudWxscHRyOw0KPiAgICAgd2hpbGUgKHAgPCBzcCkNCj4gICAg ICAgew0KPiAgICAgICAgIGlmICgqcCA9PSAnXFwnICYmIHAgKyAxIDwgc3ApDQo+ICAgICAgICAg ICB7DQo+ICAgICAgICAgICAgIHAgKz0gMjsNCj4gICAgICAgICAgICAgY29udGludWU7DQo+ICAg ICAgICAgICB9DQo+ICAgICAgICAgaWYgKCpwID09ICc+JyAmJiBsYXN0X2JyYWNrZXQgJiYgKmxh c3RfYnJhY2tldCA9PSAnPCcpDQo+ICAgICAgICAgICAuLi4gdW5leHBhbmRlZCBpdGVyYXRvciAu Li4NCj4gICAgICAgICBlbHNlIGlmICgqcCA9PSAnPCcgfHwgKnAgPT0gJz4nKQ0KPiAgICAgICAg ICAgbGFzdF9icmFja2V0ID0gcDsNCj4gICAgICAgICBwICs9IDE7DQo+ICAgICAgIH0NCj4gICAg IGlmIChsYXN0X2JyYWNrZXQpDQo+ICAgICAgIC4uLiBlcnJvciAuLi4NCj4gDQo+IFRoYXQgYWxz byBjb3BlcyB3aXRoIHVubGlrZWx5IHRoaW5ncyBsaWtlIFw8Li4uXD4uLi48Zm9vPiwgd2hlcmUg YW4gdW5leHBhbmRlZA0KPiBpdGVyYXRvciAob3IgaW5jb3JyZWN0bHkgcXVvdGVkIDwuLi4+KSBj b21lcyBhZnRlciBhIGNvcnJlY3RseS1xdW90ZWQgPC4uLj4uDQo+IA0KPiBUaGFua3MsDQo+IFJp Y2hhcmQNCg==