From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id UI6CEngrXWinFCAAWB0awg (envelope-from ) for ; Thu, 26 Jun 2025 07:14:00 -0400 Received: by simark.ca (Postfix, from userid 112) id 45CFC1E11E; Thu, 26 Jun 2025 07:14:00 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id F40A21E089 for ; Thu, 26 Jun 2025 07:13:58 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 98A93385B83D for ; Thu, 26 Jun 2025 11:13:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 98A93385B83D Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTP id 1BF16385B51A for ; Thu, 26 Jun 2025 11:13:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1BF16385B51A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1BF16385B51A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750936392; cv=none; b=Pa17RatT4nojurIyCpw9X8U77VFZwyhGXEOqmWB4pcoOjvtc8n5emUwSoP8b/FPY5On3iMi3XhcnT0lAc3tECNf+p0eX0vM2layqO0touDwJc1G4S76EoqyUf2UElzdg4FIFAdV7L5SVwO30CpC5h1rEkcZ+kpq/2dM3J4DPPJI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750936392; c=relaxed/simple; bh=ZMeYiRWwjbbTpRlkUmzuI/bzctwtH4bv1VviJBwpw4A=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Ti9LAujaSklegT3jiJHIkiDkLI+0Qj4Rhh4KLQorqyR9Q99Mo6g81+QhCShz1WeJtUsP66kOxsd0cQAL8D/3xeClEsyTANXLU8zZk+75PX/DJFOB3b6S50wUbHll5GNJZiH0apTY364RaWS4d3KjmD+I6xAo5VAMoFtxJe6ZttE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1BF16385B51A Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2135.outbound.protection.outlook.com [40.107.101.135]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-AH-9gPhuO2uClnRiwyTZvA-1; Thu, 26 Jun 2025 07:13:10 -0400 X-MC-Unique: AH-9gPhuO2uClnRiwyTZvA-1 X-Mimecast-MFC-AGG-ID: AH-9gPhuO2uClnRiwyTZvA_1750936389 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by MW4PR17MB5901.namprd17.prod.outlook.com (2603:10b6:303:1b4::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.25; Thu, 26 Jun 2025 11:13:08 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d%5]) with mapi id 15.20.8880.015; Thu, 26 Jun 2025 11:13:08 +0000 From: =?utf-8?B?SmFuIFZyYW7DvQ==?= To: "gdb-patches@sourceware.org" CC: "tom@tromey.com" Subject: Re: [RFC v5 05/18] gdb/python: add function () method to gdb.Type object Thread-Topic: [RFC v5 05/18] gdb/python: add function () method to gdb.Type object Thread-Index: AQHb5FlhaHRUwDAUf0+xNmQnhvop/rQSfL56gALRJYA= Date: Thu, 26 Jun 2025 11:13:08 +0000 Message-ID: <6d860753bc262423186ccbc434d4ede19690f096.camel@labware.com> References: <20250623161013.650814-1-jan.vrany@labware.com> <20250623161013.650814-6-jan.vrany@labware.com> <87y0thxgop.fsf@tromey.com> In-Reply-To: <87y0thxgop.fsf@tromey.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR17MB5365:EE_|MW4PR17MB5901:EE_ x-ms-office365-filtering-correlation-id: 2f3a0124-2937-4085-2c1c-08ddb4a26e0e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018 x-microsoft-antispam-message-info: =?utf-8?B?a3pXaGpjYjA3MXBKQnhHTk9oZWplWlFyUXM4Ymh4WTJIdFNLQVVXVmRxYlYv?= =?utf-8?B?cmR5NVdtdG5XU1NOWDV6bmRaYTRZN2Y0OTJiSWRRYkNqSld3WTJOdkhlNkNZ?= =?utf-8?B?VE1uNUNaU1J2citqWGxLaHJTSnd6V2o4YVIxUzc0Znc4S1hkQXdpQ0xsT3Rj?= =?utf-8?B?ZzFucVo3Y2JPYUJqekJZODI2NW5ldXYzeVZCZk92T3JVWEpET3VhbzJwV2dh?= =?utf-8?B?QWhzb0JEYlN3NVp3UG4zbUxDYnd3Q2NPT3dUa0xDSmNJWStGSHlTc2FpYkVs?= =?utf-8?B?ODZmODMySEo3ZnZNTTgzcmxSNTQ2N1c5RWg2blhLcUhDb3Zqa3M0OFZMVnRD?= =?utf-8?B?Zk1CbTBWT09HblZhc1R5MWFMUzBHTVJUYUJtQ0JTQVdMY1F0Zkxnd1BmVWFL?= =?utf-8?B?ZWU3MEg2UUFlL0s4L2MzWENiMTFlQXBSRm51a2VLK3pkQlJEc3FnMklJU1FP?= =?utf-8?B?REFqbkoxNFJXMCtVYlh3bHJVeSsrcjllSDZacVlmbGV0TmNBQTQ4S0pFdUxq?= =?utf-8?B?SFgzdzB0RUg3b2pPQVd6NWlhQi94WDRZeDFDMm5COFFTK2F6dC9MT0YzV3hq?= =?utf-8?B?L0thRnZ0czh4M21WVFgvU29WM1BJUDZhR3hySktOZm9FcHRyRGtWRWU3S0Ny?= =?utf-8?B?cVl0SzF6YTk5MUhBY0lFTXVweVZJR1ZQZkJJMWZycFB3bmJ1UE1YdEJsZXpM?= =?utf-8?B?TitxSzdFZW5rdndrOSs3WS9Vb1kyd2kxY1N4bVdrODk1QS8zbSs1K2FxUG5m?= =?utf-8?B?OVJVOVBwMW9aMG5mZWJEaGFjaWJFZ2tFYVhEQzJaYzBXVWFIYnMxaW9uaUp0?= =?utf-8?B?ZlBwUTFieTJjNWlQK2Uvb2FhemJsT2dLcStSL0RiNXFabjF6Rlc0amVoZTNL?= =?utf-8?B?dzlrQkpvczFVVkprSGpKbjJHa0dOK0JTcmpneXIrQTVlRDNtVE1JRUFNOE9O?= =?utf-8?B?NnYvZlA4YVpBU3pxMEMwRlFqNVliVUR6QXlUUzJkVGpNTmxndHFyaHpxM0xw?= =?utf-8?B?SDNzakRrSDN3N0gvYlY1UTJvcmVialRPWlZodzlub0kxV2w4dE9iSEUxVko5?= =?utf-8?B?K08rS3pQRzdNNExENUFTZEE2KzVZWWNLc3h6Ykp6bGlIWkZtbDZnVEdRS2hO?= =?utf-8?B?UGVodHhXQ0E5QUc4b2dwb2NQUzVqdC8xYm5qeFBNbTlENjVROUJlNDZ0K2dN?= =?utf-8?B?Q2kvd1RmMElzYUtmbHVKU3phN2RIVmNHY2dhd3JuWGhoNTBLb0EvblpSOVd2?= =?utf-8?B?N0t1T0xoSisvQjUvVzdTbUhZZFFpZkR6enNRYVdGVGxQelMrTkovNmZtdUN1?= =?utf-8?B?NS9hZWZ2VHFVNmJvRFVDdDdVWlBZQmZJY210TnYwY3pjcVI1a3FDand2S21s?= =?utf-8?B?MXRtam9mMzBFZytTTWFHTmo2K0tTR3hnMDdxYm01TXJnNXVoM2NKNHpwbTRw?= =?utf-8?B?d0lHQ3BlZFVOamhKZTYySzFkZlgwN1F5OURUVlJXSmhDWElSUXhkQ0J3QjZN?= =?utf-8?B?SnByVHdhZjc1andhYzRVbktPYXoveFIrWDhUdDVtcUcxUDNmRkJxMVBVczZv?= =?utf-8?B?aW5xVUFtVFFvbGhzOUJvRnlhWjNFV0VkamlYQVZibDEwbm9vYzJveitvelVm?= =?utf-8?B?bWxzSXk2aFZoVENxcVNJZGlFbXdicWFCQlJQb0NGNUVaaEJnTWFQaDBPVjd6?= =?utf-8?B?QkU5SEhQaWdpRENGUEhkSXNyRjh0S1VGZnduNnpwU0I1Ym92VDhHNTNPL09h?= =?utf-8?B?MGZhUUhjY1JHN0RNNlRRa3RkV3dpT2hOZlNIN1NmQjhkL0xzaklzT1Z4b1RQ?= =?utf-8?B?QXVmSkVZQ1NVcW9JYmdjbmFOL1V1NnlpTWZHQkJ5d1FnNld6WVg2WFBSU3dZ?= =?utf-8?B?NjlmTHU3eTNrdm9rRjR2TEVxenAzU2wwWlh5OTRCeVgrL084Q0hNcnRWYkts?= =?utf-8?Q?GIyuwth3TaY=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR17MB5365.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eU1MMzZOZlhSaUtvZEI2cUdLOGoraGt2YnVYMzNrdEVxd1gwVUhESnRvcmlM?= =?utf-8?B?TlJmYUYwL1I4SWNsbkpZdzNWeVRkOVRSVFEyYU13VmF6Tlc4T0JBeUhxSzNO?= =?utf-8?B?S2lHZnBoeWtuay82cnF2QlI4QmJzSjlUY3Z5T0o2OWNxT1JYN3dXbzhtTlVh?= =?utf-8?B?SHVHS1YwaDd2elN0R1c5YUpscFY5THMrOWo3eXpkUkk2NExkQ2JKbWplSm5t?= =?utf-8?B?WGRKSkRMNUp6TVRrWE80N1l0b0dpSFpkNW43aFJQblMrVHF6TXNKaklqU2o5?= =?utf-8?B?NVI4TUdJZ3FFelpXVUVrNkRLRzB6ZExDT1oxVDFZUjFhOXBZd09rM3hCTkp5?= =?utf-8?B?SFQwaG5zM09nWDZZbFU5bkkyNWxnS2h4eHFBS0VMM05OM2Y2Y2ZsUUZ1NFNP?= =?utf-8?B?dmNUVUxQbXRSTk9jZG5PNmc0eTdaaG1LTXBuUjJEVkQ0cmNVNkdTMFphcEpu?= =?utf-8?B?Umo2aERTNEg5U2dkdVVvU1AxMzl0ZXZLa0RWclJ3cXptSytSZDJZamNpNVFr?= =?utf-8?B?VFBJRmhPVkZwb1I5TlE4dHVPbGpmSXo3R2hqSmVSS1NoZjQ3SWE0dTVBbEpl?= =?utf-8?B?ZmY5QkhVNUh1MERNZm5MalZFNlgxQ1FmM2JHUkVVd0JNWlJxSTE3RGRLcEh4?= =?utf-8?B?bVZUNjc0TUVuUHNLM2dWbjA5dHRXQXZCWDVuVjBmSGtJdzhrVHdZU21YbVN3?= =?utf-8?B?U0hvY0FaU1FSM2dqblV5UlZsaCtlZEJrU0RmVWJsN0l0Mm1CUGFiSHRQODRh?= =?utf-8?B?Sm1DVFJCMlkwd3dwV0pacm5na3Z2Q3NVUVRIZkYxcFFVL1lNNzhHY1JXR2Ja?= =?utf-8?B?czdxbWpWSXVVY3pDNHF3dmpWM2J0TFRSK3F2SE1XVG51bUJPWUdUdHVLd2ZL?= =?utf-8?B?ZWNJdE9Md0x4UUNtd29iUzhHQjdPQUw2SHVGTGRYWGw1UHBzNlFEWFJvUmhJ?= =?utf-8?B?Z3M1cGlOQlBESnhiTmIxMkVjdDlNTTZRVnhRaWVmQmdzR3lFQk5OcUYwMGdZ?= =?utf-8?B?N0NwNGsvb1Z1S1d2dXF5Sy9BME0xbXF2Q0s2ZWNDeXhxMXhmeDBWdzdXZ28z?= =?utf-8?B?THBTRzlFenVKUXRLWWhuUXJReUpiWGlQdjZja2NtWURDdUxHcjU3TlBTWjVB?= =?utf-8?B?cm5zbXlGK3R0cUJuUlYyVDVDQUFNdVZWMXBzaUhyT0kzODAwS0RsMnlqSUZm?= =?utf-8?B?NXNzeGZKVU04MGYzMWp5Sis2OGtDK0swbElRa0V1TVc1R204NlNHUzBWc1ht?= =?utf-8?B?V2NETFNYajM5OEo2ano3dGg2VmxTWC81akFVS1ZtcnVtNTdIZHFScmZia2tq?= =?utf-8?B?Y29HY1FIbktRcjBIcUNEM3lWT1gzNjduZnFSQkpYMEJYaVE2QXJ1S3ZrRUpS?= =?utf-8?B?eWl6UGxNYi94SVQ2cEk4bFlSbVFNK0owMTBDQ0Jkbk0xbEp2YnorNlRzblBU?= =?utf-8?B?K1lHb3RORWIvRkdmcGZkQ05lekFjZm4wZnVCcDkzclhpZThKNVllYXJmdktP?= =?utf-8?B?OENMSjdFdW83U1UxTENpVnZWNkhRQmovL29FNGRJNEFHRkxOMjNseTlWNGMv?= =?utf-8?B?Z1N5SWpXakhOTncvKzd2b1A1N0RXV1o5cjBBM0tySTZ6b2V6eStFWjQ3Uytt?= =?utf-8?B?bTlKajJrYUFwRi9qdW5DVXdoVnFDVTVNMG04Sm52aElWQVQ3NTg1YzhwQ3cz?= =?utf-8?B?aDRqZUtkdmVDWWhCb204SHA5YjJCZk5KT0FPZlMzcmIzSys2NVlnSFJFSnhW?= =?utf-8?B?Vk4xUjFwM09vWVVvSkp0TFkvM1RITFNveDYvZDNzL0pBMUV6d09EZk5iMkZY?= =?utf-8?B?aWo3bmZSRWRrWUJnRW14Z2lzbS82b25xWFFnNldNU2JqVHF0N2lkazc0dWE2?= =?utf-8?B?bzZPMlpORGQ5cWN6WkdvV05uODlYY1NONDNKZlJXckpDT3BpakFNUmRSaGtj?= =?utf-8?B?d1VUUjZzUWNOeWFHaG12Ny9vTDdEVXhabm54NUg1elQxN0xYZVJLTzdSandw?= =?utf-8?B?UU5PRUVwbFZHWjU0dTA1VmRyYnlZbkJhNVdoSHVsL1RIL0VEL09henhLZHgz?= =?utf-8?B?MnozYVR6T1lSQUhTS0NzNkFhazdsYmtNZGVUV2dPN2t5dEJ6ZmFoSWZ4L2cy?= =?utf-8?Q?Prxqlx1tNMJO2gpvhbvax2h1Z?= MIME-Version: 1.0 X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f3a0124-2937-4085-2c1c-08ddb4a26e0e X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2025 11:13:08.0289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lt2TA8MfCrSSXcTSI9q6J/15198iIcXf2TCqWpue/4wzL6AKfac+tBLjm6cIzplK+5Th2/64ODY5CimgX3UCIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR17MB5901 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 9ZfoajARhs90f59sTTd8c0WK5i71CUkNpOsl5XfWkII_1750936389 X-Mimecast-Originator: labware.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-ID: Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org T24gVHVlLCAyMDI1LTA2LTI0IGF0IDEwOjExIC0wNjAwLCBUb20gVHJvbWV5IHdyb3RlOg0KPiA+ ID4gPiA+ID4gIkphbiIgPT0gSmFuIFZyYW55IDxqYW4udnJhbnlAbGFid2FyZS5jb20+IHdyaXRl czoNCj4gDQo+IEphbj4gKy8qIFNlZSBnZGJ0eXBlcy5oLsKgICovDQo+IEphbj4gKw0KPiBKYW4+ ICtib29sDQo+IEphbj4gK3R5cGU6OmlzX3ZvaWQgKCkNCj4gSmFuPiArew0KPiBKYW4+ICvCoCBy ZXR1cm4gY2hlY2tfdHlwZWRlZiAodGhpcyktPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1ZPSUQ7DQo+ IEphbj4gK30NCj4gDQo+IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBlYXJsaWVyIHBhdGNo IHRoYXQgY2FsbHMgaXQuDQo+IA0KDQpJIGRpZCBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCBzaW5j ZSB0aGlzIGNvbW1pdCBhY3R1YWxseSBtYWtlcw0KdXNlIG9mIGl0IGluIHR5cHlfZnVuY3Rpb24o KS4gDQoNCj4gSmFuPiArY29uc3Qgc3RkOjpzdHJpbmcNCj4gSmFuPiArdHlwZTo6cHJpbnRhYmxl X25hbWUgKCkgY29uc3QNCj4gSmFuPiArew0KPiANCj4gVGhpcyBpc24ndCBjYWxsZWQgaW4gdGhp cyBwYXRjaCBidXQgSSBkb24ndCB0aGluayBpdCByZWFsbHkgbWF0dGVycw0KPiBhcw0KPiBsb25n IGFzIGl0J3MgdXNlZCBldmVudHVhbGx5Lg0KDQpUaGUgcmVhc29uIGZvciB0aGlzIHdhcyB0byBw cm92aWRlIG5pY2VyIGVycm9yIG1lc3NhZ2UgaW4gZWFybGllciANCnZlcnNpb25zIG9mIHRoaXMg cGF0Y2ggYnV0IGl0IGlzIG5vdCB1c2VkIG5vdyB0aGF0IHRoaXMgY29waWVzIG9iamZpbGUtDQpv d25lZCB0eXBlcyB0byB0aGUgYXJjaC4gU28gSSdsbCBkcm9wIGl0IGZvciBub3cuIA0KDQo+IA0K PiBKYW4+ICvCoCBzdHJpbmdfZmlsZSB0aGV0eXBlOw0KPiBKYW4+ICsNCj4gSmFuPiArwqAgY3Vy cmVudF9sYW5ndWFnZS0+cHJpbnRfdHlwZSAoY29uc3RfY2FzdDx0eXBlKj4odGhpcyksICIiLA0K PiANCj4gU3BhY2UgYmVmb3JlICIodGhpcykiDQo+IA0KPiBKYW4+ICsgwqAgcGFyYW1fdHlwZXNb aV0gPSB0eXBlX29iamVjdF90b190eXBlIChwYXJhbV90eXBlX29iaik7DQo+IEphbj4gKyDCoCBp ZiAocGFyYW1fdHlwZXNbaV0gPT0gbnVsbHB0cikNCj4gSmFuPiArIMKgwqDCoCB7DQo+IEphbj4g KyDCoMKgwqDCoMKgIFB5RXJyX0Zvcm1hdCAoUHlFeGNfVHlwZUVycm9yLA0KPiBKYW4+ICsgwqDC oMKgIF8oIkFyZ3VtZW50IGF0IGluZGV4ICVkIGlzICVzLCBub3QgYSBnZGIuVHlwZSAiDQo+IEph bj4gKyDCoMKgwqDCoMKgICJvYmplY3QuIiksDQo+IEphbj4gKyDCoMKgwqAgaSwgUHlfVFlQRSAo cGFyYW1fdHlwZV9vYmopLT50cF9uYW1lKTsNCj4gSmFuPiArIMKgwqDCoMKgwqAgcmV0dXJuIG51 bGxwdHI7DQo+IA0KPiBJdCdzIGtpbmQgb2YgbGFtZSB0aGF0IHdlIGRvbid0IGhhdmUgYSB0eXBl X29iamVjdF90b190eXBlX2NoZWNrZWQNCj4gdmFyaWFudC4NCg0KSSdtIG5vdCBzdXJlIHdoYXQg ZG8geW91IG1lYW4gaGVyZSwgY2FuIHlvdSBwbGVhc2UgZWxhYm9yYXRlIGEgYml0Pw0KDQo+IA0K PiBKYW4+ICsgwqAgaWYgKHBhcmFtX3R5cGVzW2ldLT5pc192b2lkICgpKQ0KPiANCj4gQ2FuIGNo ZWNrX3R5cGVkZWYgdGhyb3cgYW4gZXhjZXB0aW9uP8KgIElmIHNvIHRoaXMgbXVzdCBiZSB3cmFw cGVkIGluDQo+IGENCj4gdHJ5L2NhdGNoLsKgIFRoYXQncyBhIGdvb2QgcHJhY3RpY2UgZm9yIGFs bCBjYWxscyBpbnRvIGdkYiBhbnl3YXksDQo+IGJlY2F1c2UgdGhpbmdzIGxpa2UgdGhpcyBtYXkg Y2hhbmdlIG92ZXIgdGltZS4NCj4gDQo+IEphbj4gK8KgIGlmIChrdyAhPSBudWxscHRyKQ0KPiBK YW4+ICvCoMKgwqAgew0KPiBKYW4+ICvCoMKgwqDCoMKgIGlmICghUHlEaWN0X0NoZWNrIChrdykp DQo+IEphbj4gKyB7DQo+IEphbj4gKyDCoCBQeUVycl9Gb3JtYXQgKFB5RXhjX1ZhbHVlRXJyb3Is DQo+IEphbj4gKyBfKCJBcmd1bWVudHMgaXMgJXMsIG5vdCBhIGRpY3QuIiksDQo+IEphbj4gKyBQ eV9UWVBFIChhcmdzKS0+dHBfbmFtZSk7DQo+IEphbj4gKyDCoCByZXR1cm4gbnVsbHB0cjsNCj4g SmFuPiArIH0NCj4gSmFuPiArDQo+IA0KPiBUaGlzIGNvZGUgc2hvdWxkIHByb2JhYmx5IGNhbGwg UHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzLg0KPiBJIGRvbid0IGtub3cgd2hldGhlciB0 aGF0IGluY2x1ZGVzIHRoZSBQeURpY3RfQ2hlY2sgb24gaXRzIG93bi4NCg0KTG9va2luZyBhdCB0 aGUgcHl0aG9uIHNvdXJjZSBjb2RlLCBpdCBkb2VzIFB5RGljdF9DaGVjaygpLg0KSSBjaGFuZ2Vk IHRoZSBjb2RlIHRvIG1ha2UgaXQgbGl0dGxlLCBtYWtlcyBjb2RlIGEgbGl0dGxlIHNob3J0ZXIu DQoNCj4gDQo+IEphbj4gK8KgIC8qIENvcHkgYWxsIG9iamZpbGUtb3duZWQgdHlwZXMgdG8gYXJj aC4gVGhpcyB3YXkgdXNlciBkb2VzDQo+IG5vdA0KPiBKYW4+ICvCoMKgwqDCoCBuZWVkIHRvIGNh cmUgYWJvdXQgbWl4aW5nIHR5cGVzIGZyb20gZGlmZmVyZW50IG9iamZpbGVzDQo+IGFuZA0KPiBK YW4+ICvCoMKgwqDCoCBhcmNoaXRlY3R1cmVzIGFuZCB3ZSBkbyBub3QgbmVlZCB0byBleHBvc2Ug dGhpcw0KPiBpbXBsZW1lbnRhdGlvbg0KPiBKYW4+ICvCoMKgwqDCoCBkZXRhaWwgdG8gdGhlIHVz ZXIuwqAgKi8NCj4gSmFuPiArDQo+IEphbj4gK8KgIGNvcGllZF90eXBlc19oYXNoX3QgY29waWVk X3R5cGVzOw0KPiBKYW4+ICvCoCByZXR1cm5fdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHJl dHVybl90eXBlLA0KPiBjb3BpZWRfdHlwZXMpOw0KPiANCj4gVGhpcyB3aG9sZSBibG9jayBzaG91 bGQgcHJvYmFibHkgYmUgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4NCj4gDQo+IEphbj4gKyBmdW5j dGlvbl90eXBlID0gbG9va3VwX2Z1bmN0aW9uX3R5cGVfd2l0aF9hcmd1bWVudHMNCj4gSmFuPiAr IMKgwqDCoMKgwqDCoCAocmV0dXJuX3R5cGUsIHBhcmFtX3R5cGVzLnNpemUgKCksIHBhcmFtX3R5 cGVzLmRhdGENCj4gKCkpOw0KPiANCj4gTWF5IGJlIG1pbGRseSBuaWNlciB0byB1c2UgYW4gYXJy YXlfdmlldyBoZXJlLg0KPiANCg0KWWVzLiBUaGlzIGlzIHByZS1leGlzdGluZyBmdW5jdGlvbiBz byBJIGRpZCBub3QgY2hhbmdlZCB0aGF0LiBMb29raW5nDQphdCB1c2VycywgYWxsIHVzZSBzdGQ6 OnZlY3RvciB0byBzdG9yZSB0eXBlcyBzbyBJIGNhbiBjaGFuZ2UgdGhlDQpmdW5jdGlvbiB0byBq dXN0IHRha2UgYSB2ZWN0b3IuIA0KDQo+IEphbj4gK8KgIGdkYl90ZXN0ICJweXRob24gcHJpbnQo cmVwcihpbnRfdC5mdW5jdGlvbih2YXJhcmdzPVRydWUpKSkiIFwNCj4gSmFuPiArwqDCoMKgwqDC oCAiPGdkYi5UeXBlIGNvZGU9VFlQRV9DT0RFX0ZVTkMgbmFtZT1pbnQgXFwodm9pZFxcKT4iDQo+ IEphbj4gKw0KPiBKYW4+ICvCoCBnZGJfdGVzdCAicHl0aG9uIHByaW50KHJlcHIoaW50X3QuZnVu Y3Rpb24odmFyYXJncz1GYWxzZSkpKSINCj4gXA0KPiBKYW4+ICvCoMKgwqDCoMKgICI8Z2RiLlR5 cGUgY29kZT1UWVBFX0NPREVfRlVOQyBuYW1lPWludCBcXCh2b2lkXFwpPiINCj4gDQo+IFNlZW1z IHdlaXJkIHRoYXQgdGhlc2UgcHJpbnQgdGhlIHNhbWUgdGhpbmcuDQoNClllcywgdGhpcyBpcyBw ZXJoYXBzIGJ1ZyBpbiB0eXBlIHByaW50aW5nLiBTZWXCoCMzMjQ1MiANCg0KaHR0cHM6Ly9zb3Vy Y2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzI0NTINCg0KYW5kIGFsc28gbXkg ZWFybGllciBjb252ZXJzYXRpb24gd2l0aCBBbmRyZXcNCg0KaHR0cHM6Ly9pbmJveC5zb3VyY2V3 YXJlLm9yZy9nZGItcGF0Y2hlcy9iYWUzMGNmMmUxOWIyMzZmNTVhZTM4Y2Y3ZGNmNGYxN2RhZDJj NGJlLmNhbWVsQGxhYndhcmUuY29tLw0KDQoNCg0KQmVsb3cgeW91IG1heSBmaW5kIHVwZGF0ZWQg cGF0Y2guIEknbGwgcmVzZW5kIHRoZSB3aG9sZSBzZXJpZXMgb25jZQ0KbW9yZSB1cGRhdGVzL2Nv bW1lbnRzIGFjY3VtdWxhdGUuIFRoYW5rcyBhIGxvdCEgSmFuDQoNCi0tID44IC0tDQpGcm9tIGZl MTY2YTIxODE2MWMwN2UwYWE5Y2VjOTA1OWE0NzI4MGVmZmYwN2UgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxDQpGcm9tOiBKYW4gVnJhbnkgPGphbi52cmFueUBsYWJ3YXJlLmNvbT4NCkRhdGU6IFdl ZCwgMjUgSnVuIDIwMjUgMTk6NTA6MTMgKzAxMDANClN1YmplY3Q6IFtQQVRDSCAwNi8xOV0gZ2Ri L3B5dGhvbjogYWRkIGZ1bmN0aW9uICgpIG1ldGhvZCB0byBnZGIuVHlwZQ0Kb2JqZWN0DQoNClRo aXMgY29tbWl0IGFkZHMgYSBuZXcgbWV0aG9kIHRvIFB5dGhvbiB0eXBlIG9iamVjdHMgdGhhdCBy ZXR1cm5zDQpwb3NzaWJseSBuZXcgZnVuY3Rpb24gdHlwZSByZXR1cm5pbmcgdGhhdCB0eXBlLiBQ YXJhbWV0ZXIgdHlwZXMgY2FuIGJlDQpzcGVjaWZpZWQgdG9vLiBUaGlzIHdpbGwgYmUgdXNlZnVs IGxhdGVyIHRvIGNyZWF0ZSB0eXBlcyBmb3IgZnVuY3Rpb24NCnN5bWJvbHMgY3JlYXRlZCB1c2lu ZyBQeXRob24gZXh0ZW5zaW9uIGNvZGUuDQoNClVubGlrZSBwcmV2aW91cyB2ZXJzaW9uLCB0aGlz IGNvbW1pdCBjb3BpZXMgYWxsIG9iamZpbGUtb3duZWQgdHlwZXMNCnBhc3NlZCB0byBnZGIuVHlw ZS5mdW5jdGlvbiB0byBtYWtlIHRoZW0gYXJjaC1vd25lZC4gVGhpcyB3YXkgd2UgZG8gbm90DQpo YXZlIHRvIGV4cG9zZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHR5cGUgb3duZXJzaGlwIHRv IHVzZXIuDQoNClJldmlld2VkLUJ5OiBFbGkgWmFyZXRza2lpIDxlbGl6QGdudS5vcmc+DQotLS0N CiBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKw0KIGdkYi9kb2Mv cHl0aG9uLnRleGkgICAgICAgICAgICAgICAgICB8ICAxMSArKysNCiBnZGIvZ2RidHlwZXMuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKystDQogZ2RiL2dkYnR5cGVzLmggICAgICAgICAg ICAgICAgICAgICAgIHwgICAzICsNCiBnZGIvcHl0aG9uL3B5LXR5cGUuYyAgICAgICAgICAgICAg ICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXR5cGUuZXhwIHwgIDM2ICsrKysrKysrDQogNiBmaWxlcyBjaGFuZ2VkLCAxODkg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIv Z2RiL05FV1MNCmluZGV4IDZjOGEwMDhkMzlkLi5lOGUzMmE1ZGQ1YyAxMDA2NDQNCi0tLSBhL2dk Yi9ORVdTDQorKysgYi9nZGIvTkVXUw0KQEAgLTMzMCw2ICszMzAsOSBAQCB2RmlsZTpzdGF0DQog ICAqKiBBZGRlZCBnZGIuQXJjaGl0ZWN0dXJlLnZvaWRfdHlwZS4gUmV0dXJucyBhIGdkYi5UeXBl IHJlcHJlc2VudGluZw0KInZvaWQiDQogICAgICB0eXBlIGZvciB0aGF0IGFyY2hpdGVjdHVyZS4N CiANCisgICoqIEFkZGVkIGdkYi5UeXBlLmZ1bmN0aW9uLiAgUmV0dXJucyBhIG5ldyBnZGIuVHlw ZSByZXByZXNlbnRpbmcgYQ0KZnVuY3Rpb24NCisgICAgIHJldHVybmluZyB0aGF0IHR5cGUuICBQ YXJhbWV0ZXIgdHlwZXMgY2FuIGJlIHNwZWNpZmllZCB0b28uDQorDQogKiBEZWJ1Z2dlciBBZGFw dGVyIFByb3RvY29sIGNoYW5nZXMNCiANCiAgICoqIFRoZSAic2NvcGVzIiByZXF1ZXN0IHdpbGwg bm93IHJldHVybiBhIHNjb3BlIGhvbGRpbmcgZ2xvYmFsDQpkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9w eXRob24udGV4aSBiL2dkYi9kb2MvcHl0aG9uLnRleGkNCmluZGV4IDZmYTIyODUxZjZhLi42MzM1 MjZkYzg3NSAxMDA2NDQNCi0tLSBhL2dkYi9kb2MvcHl0aG9uLnRleGkNCisrKyBiL2dkYi9kb2Mv cHl0aG9uLnRleGkNCkBAIC0xNTk0LDYgKzE1OTQsMTcgQEAgUmV0dXJuIGEgbmV3IEBjb2Rle2dk Yi5UeXBlfSBvYmplY3Qgd2hpY2gNCnJlcHJlc2VudHMgYSBwb2ludGVyIHRvIHRoaXMNCiB0eXBl Lg0KIEBlbmQgZGVmdW4NCiANCitAZGVmdW4gVHlwZS5mdW5jdGlvbiAoQHJ7W31wYXJhbV90eXBl QGRvdHN7fUBye119LCBAcntbfXZhcmFyZ3NAcntdfSkNCitSZXR1cm4gYSBuZXcgQGNvZGV7Z2Ri LlR5cGV9IG9iamVjdCB3aGljaCByZXByZXNlbnRzIGEgdHlwZSBvZg0KZnVuY3Rpb24NCityZXR1 cm5pbmcgdGhpcyB0eXBlLiAgUmV0dXJuZWQgZnVuY3Rpb24gdHlwZSBpcyBhbHdheXMgbWFya2Vk IGFzDQpwcm90b3R5cGVkLg0KKw0KK0B2YXJ7cGFyYW1fdHlwZUBkb3Rze319IHBvc2l0aW9uYWwt b25seSBhcmd1bWVudHMgc3BlY2lmeSBwYXJhbWV0ZXINCnR5cGVzLg0KK1Bhc3NpbmcgQGNvZGV7 dm9pZH0gdHlwZSBpcyBub3QgYWxsb3dlZC4NCisNCitUaGUgb3B0aW9uYWwgQHZhcnt2YXJhcmdz fSBrZXl3b3JkLW9ubHkgYXJndW1lbnQgc3BlY2lmaWVzIHdoZXRoZXIgdG8NCmNyZWF0ZQ0KK3Zh cmFyZyBmdW5jdGlvbiB0eXBlLiAgRGVmYXVsdHMgdG8gQGNvZGV7RmFsc2V9Lg0KK0BlbmQgZGVm dW4NCisNCiBAZGVmdW4gVHlwZS5zdHJpcF90eXBlZGVmcyAoKQ0KIFJldHVybiBhIG5ldyBAY29k ZXtnZGIuVHlwZX0gdGhhdCByZXByZXNlbnRzIHRoZSByZWFsIHR5cGUsDQogYWZ0ZXIgcmVtb3Zp bmcgYWxsIGxheWVycyBvZiB0eXBlZGVmcy4NCmRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBi L2dkYi9nZGJ0eXBlcy5jDQppbmRleCBhYzJkYzUyZjU1NS4uOTY0YTAzNjAyNTcgMTAwNjQ0DQot LS0gYS9nZGIvZ2RidHlwZXMuYw0KKysrIGIvZ2RiL2dkYnR5cGVzLmMNCkBAIC00NSw2ICs0NSw3 IEBADQogI2luY2x1ZGUgInJ1c3QtbGFuZy5oIg0KICNpbmNsdWRlICJhZGEtbGFuZy5oIg0KICNp bmNsdWRlICJleHRyYWN0LXN0b3JlLWludGVnZXIuaCINCisjaW5jbHVkZSAidHlwZXByaW50Lmgi DQogDQogLyogVGhlIHZhbHVlIG9mIGFuIGludmFsaWQgY29udmVyc2lvbiBiYWRuZXNzLiAgKi8N CiAjZGVmaW5lIElOVkFMSURfQ09OVkVSU0lPTiAxMDANCkBAIC01ODEsOCArNTgyLDcgQEAgY3Jl YXRlX2Z1bmN0aW9uX3R5cGUgKHR5cGVfYWxsb2NhdG9yICZhbGxvYywNCiAtLW5wYXJhbXM7DQog Zm4tPnNldF9oYXNfdmFyYXJncyAodHJ1ZSk7DQogfQ0KLSAgICAgIGVsc2UgaWYgKGNoZWNrX3R5 cGVkZWYgKHBhcmFtX3R5cGVzW25wYXJhbXMgLSAxXSktPmNvZGUgKCkNCi0gPT0gVFlQRV9DT0RF X1ZPSUQpDQorICAgICAgZWxzZSBpZiAoKHBhcmFtX3R5cGVzW25wYXJhbXMgLSAxXSktPmlzX3Zv aWQgKCkpDQogew0KIC0tbnBhcmFtczsNCiAvKiBDYWxsZXIgc2hvdWxkIGhhdmUgZW5zdXJlZCB0 aGlzLiAqLw0KQEAgLTU5NzYsNiArNTk3NiwxMyBAQCB0eXBlOjppc19hcnJheV9saWtlICgpDQog ICByZXR1cm4gZGVmbi0+aXNfYXJyYXlfbGlrZSAodGhpcyk7DQogfQ0KIA0KKy8qIFNlZSBnZGJ0 eXBlcy5oLiAgKi8NCisNCitib29sDQordHlwZTo6aXNfdm9pZCAoKQ0KK3sNCisgIHJldHVybiBj aGVja190eXBlZGVmICh0aGlzKS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfVk9JRDsNCit9DQogDA0K IA0KIHN0YXRpYyBjb25zdCByZWdpc3RyeTxnZGJhcmNoPjo6a2V5PHN0cnVjdCBidWlsdGluX3R5 cGU+DQpnZGJ0eXBlc19kYXRhOw0KZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dk YnR5cGVzLmgNCmluZGV4IGJhMjE2YzZkYjU0Li4zMjdjMjliZDNmZiAxMDA2NDQNCi0tLSBhL2dk Yi9nZGJ0eXBlcy5oDQorKysgYi9nZGIvZ2RidHlwZXMuaA0KQEAgLTE1MjYsNiArMTUyNiw5IEBA IHN0cnVjdCB0eXBlDQogICAgICByZXByZXNlbnRhdGlvbnMgb2YgYXJyYXlzIGJ5IHRoZSB0eXBl J3MgbGFuZ3VhZ2UuICAqLw0KICAgYm9vbCBpc19hcnJheV9saWtlICgpOw0KIA0KKyAgLyogUmV0 dXJuIHRydWUgaWYgdGhpcyB0eXBlIGlzICJ2b2lkIi4gIEZvbGxvd3MgdHlwZWRlZnMuICovDQor ICBib29sIGlzX3ZvaWQgKCk7DQorDQogICAvKiBSZXR1cm4gdGhlIGxhbmd1YWdlIHRoYXQgdGhp cyB0eXBlIGNhbWUgZnJvbS4gICovDQogICBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlICgpIGNvbnN0 DQogICB7IHJldHVybiBtYWluX3R5cGUtPm1fbGFuZzsgfQ0KZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMNCmluZGV4IGM1NDZhYTc1MzZhLi5j MmY3ZGVmNWRmYSAxMDA2NDQNCi0tLSBhL2dkYi9weXRob24vcHktdHlwZS5jDQorKysgYi9nZGIv cHl0aG9uL3B5LXR5cGUuYw0KQEAgLTc2OCw2ICs3NjgsMTMwIEBAIHR5cHlfdW5xdWFsaWZpZWQg KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykNCiAgIHJldHVybiB0eXBlX3RvX3R5cGVf b2JqZWN0ICh0eXBlKTsNCiB9DQogDQorLyogUmV0dXJuIGEgZnVuY3Rpb24gdHlwZS4gKi8NCisN CitzdGF0aWMgUHlPYmplY3QgKg0KK3R5cHlfZnVuY3Rpb24gKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqYXJncywgUHlPYmplY3QgKmt3KQ0KK3sNCisgIHN0cnVjdCB0eXBlICpyZXR1cm5fdHlw ZSA9ICgodHlwZV9vYmplY3QgKikgc2VsZiktPnR5cGU7DQorDQorICAvKiBQcm9jZXNzIGFyZ3Vt ZW50cy4gIFdlIGNhbm5vdCBzaW1wbHkgdXNlDQpQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMN CisgICAgIGJlY2F1c2UgdGhpcyBtZXRob2QgdGFrZSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1l bnRzLiAgKi8NCisgIGlmIChhcmdzID09IG51bGxwdHIgfHwgIVB5VHVwbGVfQ2hlY2sgKGFyZ3Mp KQ0KKyAgICB7DQorICAgICAgUHlFcnJfRm9ybWF0IChQeUV4Y19WYWx1ZUVycm9yLA0KKyBfKCJB cmd1bWVudHMgaXMgJXMsIG5vdCBhIHR1cGxlLiIpLA0KKyBQeV9UWVBFIChhcmdzKS0+dHBfbmFt ZSk7DQorICAgICAgcmV0dXJuIG51bGxwdHI7DQorICAgIH0NCisgIGludCBucGFyYW1fdHlwZXMg PSBQeVR1cGxlX1NpemUgKGFyZ3MpOw0KKyAgaWYgKG5wYXJhbV90eXBlcyA9PSAtMSkNCisgICAg ew0KKyAgICAgIC8qIENhbiB0aGlzIHJlYWxseSBoYXBwZW4/ICBBdCB0aGlzIHBvaW50IHdlIF9r bm93XyB0aGF0DQorIEFSR1MgaXMgYSB0dXBsZSAob3Igc3ViY2xhc3MpLiAqLw0KKyAgICAgIFB5 RXJyX0Zvcm1hdCAoUHlFeGNfVmFsdWVFcnJvciwNCisgXygiRmFpbGVkIHJldHJpZXZlIG51bWJl ciBvZiBwYXJhbWV0ZXJzLiIpKTsNCisgICAgICByZXR1cm4gbnVsbHB0cjsNCisgICAgfQ0KKyAg c3RkOjp2ZWN0b3I8c3RydWN0IHR5cGUgKj4gcGFyYW1fdHlwZXMgKG5wYXJhbV90eXBlcyk7DQor ICBmb3IgKGludCBpID0gMDsgaSA8IG5wYXJhbV90eXBlczsgaSsrKQ0KKyAgICB7DQorICAgICAg UHlPYmplY3QgKnBhcmFtX3R5cGVfb2JqID0gUHlTZXF1ZW5jZV9HZXRJdGVtIChhcmdzLCBpKTsN CisNCisgICAgICBpZiAocGFyYW1fdHlwZV9vYmogPT0gbnVsbHB0cikNCisgew0KKyBQeUVycl9G b3JtYXQgKFB5RXhjX1ZhbHVlRXJyb3IsDQorIF8oIkZhaWxlZCB0byByZXRyaWV2ZSBwYXJhbWV0 ZXIgYXQgaW5kZXggJWQuIiksIGkpOw0KKyByZXR1cm4gbnVsbHB0cjsNCisgfQ0KKyAgICAgIGVs c2UNCisgew0KKyBwYXJhbV90eXBlc1tpXSA9IHR5cGVfb2JqZWN0X3RvX3R5cGUgKHBhcmFtX3R5 cGVfb2JqKTsNCisgaWYgKHBhcmFtX3R5cGVzW2ldID09IG51bGxwdHIpDQorIHsNCisgUHlFcnJf Rm9ybWF0IChQeUV4Y19UeXBlRXJyb3IsDQorIF8oIkFyZ3VtZW50IGF0IGluZGV4ICVkIGlzICVz LCBub3QgYSBnZGIuVHlwZSAiDQorICJvYmplY3QuIiksDQorIGksIFB5X1RZUEUgKHBhcmFtX3R5 cGVfb2JqKS0+dHBfbmFtZSk7DQorIHJldHVybiBudWxscHRyOw0KKyB9DQorIHRyeQ0KKyB7DQor IGlmIChwYXJhbV90eXBlc1tpXS0+aXNfdm9pZCAoKSkNCisgew0KKyBQeUVycl9Gb3JtYXQgKFB5 RXhjX1ZhbHVlRXJyb3IsDQorIF8oIkFyZ3VtZW50IGF0IGluZGV4ICVkIGlzIGEgdm9pZCB0eXBl IGJ1dCAiDQorICJ2b2lkIGFzIHBhcmFtZXRlciB0eXBlIGlzIG5vdCBhbGxvd2VkLiIpLA0KKyBp KTsNCisgcmV0dXJuIG51bGxwdHI7DQorIH0NCisgfQ0KKyBjYXRjaCAoY29uc3QgZ2RiX2V4Y2Vw dGlvbiAmZXhjZXB0KQ0KKyB7DQorIHJldHVybiBnZGJweV9oYW5kbGVfZ2RiX2V4Y2VwdGlvbiAo bnVsbHB0ciwgZXhjZXB0KTsNCisgfQ0KKyB9DQorICAgIH0NCisNCisgIGlmIChrdyAhPSBudWxs cHRyKQ0KKyAgICB7DQorICAgICAgaWYgKCFQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMg KGt3KSkNCisgcmV0dXJuIG51bGxwdHI7DQorDQorICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVl Ow0KKyAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsNCisgICAgICB3aGlsZSAoUHlEaWN0X05leHQg KGt3LCAmcG9zLCAma2V5LCAmdmFsdWUpKQ0KKyB7DQorIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdp dGhBU0NJSVN0cmluZyAoa2V5LCAidmFyYXJncyIpICE9IDApDQorIHsNCisgUHlFcnJfRm9ybWF0 IChQeUV4Y19WYWx1ZUVycm9yLA0KKyBfKCJJbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgXCIlVVwi LiIpLA0KKyBrZXkpOw0KKyByZXR1cm4gbnVsbHB0cjsNCisgfQ0KKyBpZiAoIVB5Qm9vbF9DaGVj ayAodmFsdWUpKQ0KKyB7DQorIFB5RXJyX0Zvcm1hdCAoUHlFeGNfVmFsdWVFcnJvciwNCisgXygi VmFsdWUgb2YgXCJ2YXJhcmdzXCIgYXJndW1lbnQgaXMgXCIlc1wiLCAiDQorICJub3QgYSBib29s LiIpLA0KKyBQeV9UWVBFICh2YWx1ZSktPnRwX25hbWUpOw0KKyByZXR1cm4gbnVsbHB0cjsNCisg fQ0KKyBpZiAodmFsdWUgPT0gUHlfVHJ1ZSkNCisgew0KKyBwYXJhbV90eXBlcy5wdXNoX2JhY2sg KG51bGxwdHIpOw0KKyB9DQorIH0NCisgICAgfQ0KKw0KKyAgc3RydWN0IHR5cGUgKmZ1bmN0aW9u X3R5cGUgPSBudWxscHRyOw0KKyAgdHJ5DQorICAgIHsNCisgICAgICAvKiBDb3B5IGFsbCBvYmpm aWxlLW93bmVkIHR5cGVzIHRvIGFyY2guIFRoaXMgd2F5IHVzZXIgZG9lcyBub3QNCisgbmVlZCB0 byBjYXJlIGFib3V0IG1peGluZyB0eXBlcyBmcm9tIGRpZmZlcmVudCBvYmpmaWxlcyBhbmQNCisg YXJjaGl0ZWN0dXJlcyBhbmQgd2UgZG8gbm90IG5lZWQgdG8gZXhwb3NlIHRoaXMgaW1wbGVtZW50 YXRpb24NCisgZGV0YWlsIHRvIHRoZSB1c2VyLiAqLw0KKw0KKyAgICAgIGNvcGllZF90eXBlc19o YXNoX3QgY29waWVkX3R5cGVzOw0KKyAgICAgIHJldHVybl90eXBlID0gY29weV90eXBlX3JlY3Vy c2l2ZSAocmV0dXJuX3R5cGUsIGNvcGllZF90eXBlcyk7DQorICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBwYXJhbV90eXBlcy5zaXplICgpOyBpKyspDQorIHsNCisgaWYgKHBhcmFtX3R5cGVzW2ld ICE9IG51bGxwdHIpDQorIHBhcmFtX3R5cGVzW2ldID0gY29weV90eXBlX3JlY3Vyc2l2ZSAocGFy YW1fdHlwZXNbaV0sIGNvcGllZF90eXBlcyk7DQorIH0NCisNCisgICAgICBmdW5jdGlvbl90eXBl ID0gbG9va3VwX2Z1bmN0aW9uX3R5cGVfd2l0aF9hcmd1bWVudHMNCisgKHJldHVybl90eXBlLCBw YXJhbV90eXBlcy5zaXplICgpLCBwYXJhbV90eXBlcy5kYXRhICgpKTsNCisgICAgICBmdW5jdGlv bl90eXBlLT5zZXRfaXNfcHJvdG90eXBlZCAodHJ1ZSk7DQorICAgIH0NCisgIGNhdGNoIChjb25z dCBnZGJfZXhjZXB0aW9uICZleGNlcHQpDQorICAgIHsNCisgICAgICByZXR1cm4gZ2RicHlfaGFu ZGxlX2dkYl9leGNlcHRpb24gKG51bGxwdHIsIGV4Y2VwdCk7DQorICAgIH0NCisNCisgIHJldHVy biB0eXBlX3RvX3R5cGVfb2JqZWN0IChmdW5jdGlvbl90eXBlKTsNCit9DQorDQogLyogUmV0dXJu IHRoZSBzaXplIG9mIHRoZSB0eXBlIHJlcHJlc2VudGVkIGJ5IFNFTEYsIGluIGJ5dGVzLiAgKi8N CiBzdGF0aWMgUHlPYmplY3QgKg0KIHR5cHlfZ2V0X3NpemVvZiAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpDQpAQCAtMTYzMCw2ICsxNzU0LDkgQEAgUmV0dXJuIHRoZSB0eXBlIG9mIGEg dGVtcGxhdGUgYXJndW1lbnQuIiB9LA0KICAgeyAidW5xdWFsaWZpZWQiLCB0eXB5X3VucXVhbGlm aWVkLCBNRVRIX05PQVJHUywNCiAgICAgInVucXVhbGlmaWVkICgpIC0+IFR5cGVcblwNCiBSZXR1 cm4gYSB2YXJpYW50IG9mIHRoaXMgdHlwZSB3aXRob3V0IGNvbnN0IG9yIHZvbGF0aWxlIGF0dHJp YnV0ZXMuIg0KfSwNCisgIHsgImZ1bmN0aW9uIiwgKFB5Q0Z1bmN0aW9uKSB0eXB5X2Z1bmN0aW9u LCBNRVRIX1ZBUkFSR1MgfA0KTUVUSF9LRVlXT1JEUywNCisgICAgImZ1bmN0aW9uICgpIC0+IFR5 cGVcblwNCitSZXR1cm4gYSBmdW5jdGlvbiB0eXBlIHJldHVybmluZyB2YWx1ZSBvZiB0aGlzIHR5 cGUuIiB9LA0KICAgeyAidmFsdWVzIiwgdHlweV92YWx1ZXMsIE1FVEhfTk9BUkdTLA0KICAgICAi dmFsdWVzICgpIC0+IGxpc3RcblwNCiBSZXR1cm4gYSBsaXN0IGhvbGRpbmcgYWxsIHRoZSBmaWVs ZHMgb2YgdGhpcyB0eXBlLlxuXA0KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS10eXBlLmV4cA0KYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdHlwZS5leHANCmlu ZGV4IDBiYzQ1NTZjNjUzLi44NzZlZjQ3NGEzMiAxMDA2NDQNCi0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS10eXBlLmV4cA0KKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXR5cGUuZXhwDQpAQCAtMzc4LDYgKzM3OCw0MiBAQCBpZiB7IFtidWlsZF9pbmZlcmlvciAiJHti aW5maWxlfSIgImMiXSA9PSAwIH0gew0KICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChnZGIubG9v a3VwX3R5cGUoJ2ludCcpLm9wdGltaXplZF9vdXQoKSkiIFwNCiAgICAgICAiPG9wdGltaXplZCBv dXQ+Ig0KIA0KKyAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaW50X3QgPSBnZGIubG9va3Vw X3R5cGUoJ2ludCcpIg0KKyAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gdXVfdCA9IGdkYi5w YXJzZV9hbmRfZXZhbCAoJ3V1JykudHlwZSINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJpbnQo cmVwcihpbnRfdC5mdW5jdGlvbigpKSkiIFwNCisgICAgICAiPGdkYi5UeXBlIGNvZGU9VFlQRV9D T0RFX0ZVTkMgbmFtZT1pbnQgXFwodm9pZFxcKT4iDQorDQorICBnZGJfdGVzdCAicHl0aG9uIHBy aW50KHJlcHIoaW50X3QuZnVuY3Rpb24oaW50X3QsIGludF90LCBpbnRfdCkpKSIgXA0KKyAgICAg ICI8Z2RiLlR5cGUgY29kZT1UWVBFX0NPREVfRlVOQyBuYW1lPWludCBcXChpbnQsIGludCwgaW50 XFwpPiINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJpbnQocmVwcihpbnRfdC5mdW5jdGlvbihp bnRfdCwgdmFyYXJncz1UcnVlKSkpIiBcDQorICAgICAgIjxnZGIuVHlwZSBjb2RlPVRZUEVfQ09E RV9GVU5DIG5hbWU9aW50IFxcKGludCwgLi4uXFwpPiINCisNCisgIGdkYl90ZXN0ICJweXRob24g cHJpbnQocmVwcihpbnRfdC5mdW5jdGlvbih2YXJhcmdzPVRydWUpKSkiIFwNCisgICAgICAiPGdk Yi5UeXBlIGNvZGU9VFlQRV9DT0RFX0ZVTkMgbmFtZT1pbnQgXFwodm9pZFxcKT4iDQorDQorICBn ZGJfdGVzdCAicHl0aG9uIHByaW50KHJlcHIoaW50X3QuZnVuY3Rpb24odmFyYXJncz1GYWxzZSkp KSIgXA0KKyAgICAgICI8Z2RiLlR5cGUgY29kZT1UWVBFX0NPREVfRlVOQyBuYW1lPWludCBcXCh2 b2lkXFwpPiINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJpbnQocmVwcihpbnRfdC5mdW5jdGlv bigxMjMpKSkiIFwNCisgICAgICAiVHlwZUVycm9yLio6LioiDQorDQorICBnZGJfdGVzdCAicHl0 aG9uDQpwcmludChyZXByKGludF90LmZ1bmN0aW9uKGdkYi5sb29rdXBfdHlwZSgndm9pZCcpKSkp IiBcDQorICAgICAgIlZhbHVlRXJyb3IuKjouKiINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJp bnQocmVwcihpbnRfdC5mdW5jdGlvbihpbnRfdCwNCmdkYi5sb29rdXBfdHlwZSgndm9pZCcpKSkp IiBcDQorICAgICAgIlZhbHVlRXJyb3IuKjouKiINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJp bnQocmVwcihpbnRfdC5mdW5jdGlvbihpbnRfdCwNCnZhcmFyZ3M9XFsxLDIsM1xdKSkpIiBcDQor ICAgICAgIlZhbHVlRXJyb3IuKjouKiINCisNCisgIGdkYl90ZXN0ICJweXRob24gcHJpbnQocmVw cihpbnRfdC5mdW5jdGlvbihpbnRfdCwga3c9RmFsc2UpKSkiIFwNCisgICAgICAiVmFsdWVFcnJv ci4qOi4qIg0KKw0KKyAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChyZXByKGludF90LmZ1bmN0aW9u KGdkYi5sb29rdXBfdHlwZSgndm9pZCcpLA0KdmFyYXJncz1UcnVlKSkpIiBcDQorICAgICAgIlZh bHVlRXJyb3IuKjouKiINCisNCiAgIHNldCBzaW50IFtnZXRfc2l6ZW9mIGludCAwXQ0KICAgZ2Ri X3Rlc3QgInB5dGhvbg0KcHJpbnQoZ2RiLnBhcnNlX2FuZF9ldmFsKCdhbGlnbmNoZWNrJykudHlw ZS5hbGlnbm9mKSIgXA0KICAgICAgICRzaW50DQotLSANCjIuNDcuMg0KDQo=