From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (unknown [192.55.52.93]) by sourceware.org (Postfix) with ESMTPS id 64B19385840E for ; Sat, 29 Jul 2023 11:03:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 64B19385840E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690628589; x=1722164589; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=tx1LNeZlT5IquuqCDGbEMQCjeZWduEVxlnmnXUcjYXo=; b=crYNaqw4m7W6ksfSzn47Uoa+Jv2jU5IZwHS/584Oe2viWFwO7HwHaVJe LLBpn4I7+Vhrrpu+54LCGsZEr1gSaOBcTrQKiWYs0EjuhpDoRqOAuPqhr sNpAG+kZV/TSMkXsKsOHZAmCSLkAmqi/FoY05xeNIhh4wzrajyKi2vEBj ZG0yv35FYCQ+FOFAG+TgyChHauFNFg14AFICNcWR/M9iTViJDAm+4Na3y SwIVb6hLk/OT8ogHrY0OQHyJq66BnZAkK6vTy5N81egl7pcb9asv+iooD lvDcYKSk46879yaws5d++MtCb5V1UNXwxGAlCKj7X8Ir37vAsOu+HR05R A==; X-IronPort-AV: E=McAfee;i="6600,9927,10785"; a="366220649" X-IronPort-AV: E=Sophos;i="6.01,240,1684825200"; d="scan'208";a="366220649" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2023 04:03:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10785"; a="731053770" X-IronPort-AV: E=Sophos;i="6.01,240,1684825200"; d="scan'208";a="731053770" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga007.fm.intel.com with ESMTP; 29 Jul 2023 04:03:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Sat, 29 Jul 2023 04:03:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Sat, 29 Jul 2023 04:03:05 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Sat, 29 Jul 2023 04:03:05 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.46) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Sat, 29 Jul 2023 04:03:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b533RMqvK72kvBCQWtibxz/mDD8hM32SVxyMsCQmk1jL7zj6fmVSlGVCZ76NU5aNdRB16ZEqGTQCJm3aVTkrv6gq0LCGAafOYrOqr3dPQRrmTdmAG/2zzHUGrTiMkJslpyBl3S2Voz4nWObjyWe8lPoMxbs2KZZ78nBPP7SgiZXYi4L6gZJWpiEgIW6fgJzKRWCsaEhQBltfQF30ZRLTjf39nYd3Va4yi98SaQ9yquTVQg7b9IMheYwIfSgGXytQMVl9QrZTzTkbl4hszJ7XSmamRy4xX+isEqi3exbP7L7Zp/9m+Z7fOWtgACnlQVZwDw6rJqaKVFcYgqTFg/Zp/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=71iNxTapEabwvpkxAh+zrztd3IwPDx9nt+G0arRYOBI=; b=D7YehuY9PFP0REfL4Ue82HsJ3U4dRB4nXMUapehL54sY1WuvVfG+4mi8DoqpxfhVeBOpSkuyExnVp3h9VtCBghpozzMZIBwtXFlwjRFDh//ysjPT2DGv9TdxGga2T8+Eo+gzgh998YAmLhPQ/ETojj66rfg7JClQAJXA0kITgUjKET7+21ItAawXVRs+4PnizfVNojWR/g0wlTwGtzs2qE5OAG0jfXdn9i9y05TgV+WuPZ/2+CMrj1G6qQI76QfWKswY9PgK9fid54lWmN291SDPbBJv4HAZyPv03ZUFUvglTHg9PetlVwkfG7JdoNmc/l8cPSOrXbtYF6jMaRQ3BQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SA1PR11MB6846.namprd11.prod.outlook.com (2603:10b6:806:2b0::6) by SA1PR11MB8595.namprd11.prod.outlook.com (2603:10b6:806:3a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29; Sat, 29 Jul 2023 11:03:02 +0000 Received: from SA1PR11MB6846.namprd11.prod.outlook.com ([fe80::6d4:532:8a7c:c801]) by SA1PR11MB6846.namprd11.prod.outlook.com ([fe80::6d4:532:8a7c:c801%3]) with mapi id 15.20.6631.039; Sat, 29 Jul 2023 11:03:02 +0000 From: "Ijaz, Abdul B" To: Bruno Larsen , "gdb-patches@sourceware.org" CC: "JiniSusan.George@amd.com" , "tom@tromey.com" , "eliz@gnu.org" Subject: RE: [PATCH v3 3/4] gdb/infrun: handle stepping through functions with DW_AT_trampoline Thread-Topic: [PATCH v3 3/4] gdb/infrun: handle stepping through functions with DW_AT_trampoline Thread-Index: AQHZs4HxooNLn75OVU+0XL8OksI2Xa/NmQEAgAMW99A= Date: Sat, 29 Jul 2023 11:03:01 +0000 Message-ID: References: <20230710225643.32280-1-abdul.b.ijaz@intel.com> <20230710225643.32280-4-abdul.b.ijaz@intel.com> <3a9e7a38-3326-f7f2-b90b-b7286560debf@redhat.com> In-Reply-To: <3a9e7a38-3326-f7f2-b90b-b7286560debf@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR11MB6846:EE_|SA1PR11MB8595:EE_ x-ms-office365-filtering-correlation-id: e38a8577-f5b7-424c-cce5-08db9023605c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P/eItrWALG6y0lt3URxaOVGNkrtoyX+aUpGwbME+8ee5Q4BLOTbfaYrROZRtqvyEFjztDWlJvqjKJUw8wtX7Erhc8FuF2IcfCSOJZcpAAKnQBNWGgPCwEXZROH17EqYAEswXNICC/qzwqIg9jl2srrTI/JMT2AACHXPF++HYZkvtviEzrNt8WRodbG77pT+qxZLh9NUM92kD/3HF6z9FvZ+vtz/Zw0NpopR1jzzIWIQhJbK6fkDhCTHUPo8U/NrvVd2EJ6L1RfUoWjT2zliH6OianB+gbSQhnePqJVrzs4l4I9Glygy8yPxlgyochlA3IBdc0WNKjwoFANy74gOVa/Wgx4mA3aTVFRPMQryYoS2AFYF7wPNOIwIe2aCRPEc61bcE9YT6jrpDiO3WOpYJSh9Ccy0gL6nB8srlBfADPWJG9Ee2aihIp9lexforV5eGEOAfe9buMomCRQPObKCu1TIXXcvSbFUBjV7J10/JizNeA9xcn3O1t6/BGsYgfyuIBY9nmK0Bj4ny3BaCYoQnLOm5RibEN+1XJJp3TXaDOuJ2hqCWIdrVfl0aHqQVG4LP8xbR1NviWeeg/ybs/WyZO5p75qZANt9WFCLLSR3sCIs+3RLXcoPLSkFXqZcd+5h4 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR11MB6846.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(366004)(376002)(39860400002)(346002)(451199021)(38070700005)(2906002)(83380400001)(71200400001)(30864003)(7696005)(38100700002)(186003)(52536014)(5660300002)(86362001)(55016003)(316002)(26005)(6506007)(53546011)(8676002)(41300700001)(8936002)(66476007)(33656002)(478600001)(64756008)(66556008)(4326008)(66446008)(76116006)(9686003)(82960400001)(66946007)(110136005)(54906003)(122000001)(2004002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SDVRME1nWjQ1RkR1WXpyRm9jaTFpcXRZQzR3MDNSaFNSU21jblh2WmtBRG53?= =?utf-8?B?dXRZOEt6MXE4YW5pZW84TGpRTEo1bi8yaHlyN1BzTzJtb2pmdDJVSUV4SkFj?= =?utf-8?B?QXlsTkdJcW9QZmN5YWhJNW40N3pSeGY0N3grM24wSFdocGRGVUFOV3M2dlo5?= =?utf-8?B?cHNLSjQ4ZUd2aVFjME5qcHJ2WTF5QnVMN3p2Y29GeC9jMWsvM2p5WmRrbkhh?= =?utf-8?B?REl0QzdTdU1WSDBHbkMyUVRNdkVuVEI2MkJ5c3RJZmpVSlVvZ0NrQWlNd0xp?= =?utf-8?B?VFYxQjdoeDBKT3hBL0lGbUFlZ2o5M05BS1hRU0JoVlJqY20xRU9QcXlOVUlj?= =?utf-8?B?WmkzSzFkb0pNZVdXUEJqWnhuVzQ1c0xpcVZHeW5TTEtkWFNWeWpQekNNWHhE?= =?utf-8?B?TTVXVndmR2hWK1JwM0UrU1Q5WVl3cWNnWU01eWZIdnJOOXJZeVVZTXZqUkly?= =?utf-8?B?UXBwN0dabU9MRFB3a3VYdCsrbUtYSWtTYWNOQm1LVzE0OXMzV1JFK1NUbmdp?= =?utf-8?B?NThYNnFzOHY5VTFzSjhQMWdkR01aeW9zMDdkQXhvSjVXcitoU0htcEg2bXNH?= =?utf-8?B?N0VkVGN5YWxOY2oxSmVmVENDUjdodUptSy9aSzdINHRDUHVzY1FXZmdsdGcy?= =?utf-8?B?bG40TUxTZHJLTEp4dGxZMVFLMmJvbXdhbE1nTk9rNzdJU01FcDduVTd6RldJ?= =?utf-8?B?UU5KaXErUHFtUW03L3ozZ05JNm4zd1dDTnR4ZWNDZVJkdklPRmZnUk9JTFc5?= =?utf-8?B?eWtPd0dLd3ZGbXFQQzFtZld3RE9pVWN3aStDNTQyQ0xicnNRZEN1NHNzUE5n?= =?utf-8?B?M04yOFdzTGZvRXh5L3pLQ3U3a3dxUUR6bmQzVjY3WXluTjZseGtNdjR3N3dL?= =?utf-8?B?d3dxUjFwbmRCTjdDRTVDU1IzNk1KWmx4ck1RTFR1d3MzQ1hMSEZzOVFaS3V3?= =?utf-8?B?WVBLM05Jam9pU1FmOWRLZzVpd3VwVElTR2txUFlxRy84MGlRUXIyemVOdURE?= =?utf-8?B?NTE1bGpFNWpxWHV1Z05GRURtd3Vya21WYlZ3OW55QUpWWVRrbUZPZkhKZTdT?= =?utf-8?B?VHpDZnV3bFFwdnUvUzRvTUc4YWdzTVpkVlpUZlVPS1NxZXVnQ01QQWNlQUdN?= =?utf-8?B?YmxaTmFWdUE2NWl6ay81d05hRUtGOTV0MDBXYWROS0FlVFhPMHdaSmZIQzl4?= =?utf-8?B?OFZnVk0rdDUvaGYyUHA0Slp3M0pmNkhwNHJZUTV0Q2NoenYxV3hQVG1yRXdI?= =?utf-8?B?UUJZSzlBY2NidWxDU3V5Y2ZNRFRqNlczWFExcU14NFlxZDV1THgwdmNOV0gy?= =?utf-8?B?Y283YmZSMUlaMkVGUExQU3dqYkdoWDhua3ZpZ0owY3ZuRnNzQUJLN3NVNUdL?= =?utf-8?B?VnBQU2JWc01KRy9mS0NjQ1kxN1NYNkx5OWdMR3BpL09mZGFDM29teU5wTjhh?= =?utf-8?B?ZHlHVzdPNU5HdHNjWmtHTzJBdWk0SkZwbHBzZTdEUnoxR3R3OGxFVEIydnhh?= =?utf-8?B?SWRuVWUvVklLTEl5N2pxZTVTV3BoVWovTmtxOFZHZm1FbC9ucmxJcWJmMy9V?= =?utf-8?B?WHd2ek9iZzF6WDNxLzlQQjF0b09ZL21iQ1QyLzcxdnBXeEcrcjFzc2VYRE0x?= =?utf-8?B?SVBQL09BQmVDVDIrN29lZFg5MVdiRlYwd1QxZFptN0VQRmlYN092QXplQm9R?= =?utf-8?B?SHA4SloxaUZYS0lsaWFmNEVWSWR3UkZRTFRyWWJMR1ROai9pVXQ4cEdXUVhj?= =?utf-8?B?dFpqc0JCd3RGZXNWeG5hRTFFakMrajZnMFQrM2FVZm5YWGU5dGt4cDhLVGRx?= =?utf-8?B?RG1EbUpzQWFKQzNNOVFoa1J6bndSUnEvbUNQUEtLTCtzcVZMdXpSWGZTRWZR?= =?utf-8?B?Vy9aK09MWllXNkV0ZVdRUWtHK3FRd1c5TkZscDlRVGltcjhCaDVGM3NmVk5R?= =?utf-8?B?OEhHV2RUQXRpZ1l6OW9KY044bmU2azJ5Rk9wTCtkSnd2NjhrRWQrOVozRDRX?= =?utf-8?B?MXpGN3FIdHVLKzQvd0lGYVZpZHdTZm5LQlV0azlIMHQ4dmhRd0xodlNjQTZW?= =?utf-8?B?Z1A4b1F5OExndTUrRDF2SlBqTUFxMmd2SmQ3d0VVN2Q3VjFTMmt3czJxeG0r?= =?utf-8?Q?Vi9HEiPot7h9oBJxWD7z8PE79?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR11MB6846.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e38a8577-f5b7-424c-cce5-08db9023605c X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2023 11:03:01.7756 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: J7gYSjPFVraOBqQQV+pNlkGNz82PBWiFyafIjdBreHoAww38kj6gQOnWqCHlqkwgiBSHPK2BUoqflyEHfOvCyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB8595 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: VGhhbmtzIGEgbG90IEJydW5vIGZvciB0aGUgZmVlZGJhY2sgYW5kIGNhdGNoaW5nIHRoZSBwcm9i bGVtIGluIHJldmVyc2Ugc3RlcHBpbmcgZm9yIHRyYW1wb2xpbmVzLg0KDQo+IEkgcmVhbGx5IGxp a2UgdGhpcyBmZWF0dXJlLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzbid0IHdvcmtpbmcgd2hlbiBm aXJzdCBlbnRlcmluZyBhIHRyYW1wb2xpbmUgaW4gcmV2ZXJzZSBzdGVwcGluZy4gaWU6DQpXaWxs IGZpeCB0aGUgcHJvYmxlbSBpbiBWNCBwYXRjaCBzZXJpZXMuIFdlIHNob3VsZCBhdm9pZCBwcm9j ZXNzaW5nIHRoZSB0YXJnZXRzIGZvciB0cmFtcG9saW5lIGNhbGxzIGluIHRoZSByZXZlcnNlIGRp cmVjdGlvbiBhbmQganVzdCBrZWVwIGdvaW5nIGluICJpbmZydW5jLmNccHJvY2Vzc19ldmVudF9z dG9wX3Rlc3QgZnVuY3Rpb24iLiBTbyBob3BlZnVsbHkgdGhpcyBzaG91bGQgYmUgZml4ZWQgYnkg dGhlIFY0IHNlcmllcyBvZiBwYXRjaC4gU28gd2lsbCB0ZXN0IGl0IHRoZW4gaG9wZWZ1bGx5IHNv b24gSSB3aWxsIHB1c2ggaXQgZm9yIHJldmlldy4NCg0KVGhhbmtzICYgQmVzdCBSZWdhcmRzDQpB YmR1bCBCYXNpdA0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBCcnVubyBM YXJzZW4gPGJsYXJzZW5AcmVkaGF0LmNvbT4gDQpTZW50OiBUaHVyc2RheSwgSnVseSAyNywgMjAy MyAxOjQ3IFBNDQpUbzogSWpheiwgQWJkdWwgQiA8YWJkdWwuYi5pamF6QGludGVsLmNvbT47IGdk Yi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQpDYzogSmluaVN1c2FuLkdlb3JnZUBhbWQuY29tOyB0 b21AdHJvbWV5LmNvbTsgZWxpekBnbnUub3JnOyBOaWxzLUNocmlzdGlhbiBLZW1wa2UgPG5pbHMt Y2hyaXN0aWFuLmtlbXBrZUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW1BBVENIIHYzIDMvNF0g Z2RiL2luZnJ1bjogaGFuZGxlIHN0ZXBwaW5nIHRocm91Z2ggZnVuY3Rpb25zIHdpdGggRFdfQVRf dHJhbXBvbGluZQ0KDQpPbiAxMS8wNy8yMDIzIDAwOjU2LCBBYmR1bCBCYXNpdCBJamF6IHZpYSBH ZGItcGF0Y2hlcyB3cm90ZToNCj4gRnJvbTogTmlscy1DaHJpc3RpYW4gS2VtcGtlIDxuaWxzLWNo cmlzdGlhbi5rZW1wa2VAaW50ZWwuY29tPg0KPg0KPiBUaGlzIHBhdGNoIG1ha2VzIGluZnJ1biBj b250aW51ZSBzdGVwcGluZyBpbnRvIGFuZCB0aHJvdWdoIHRyYW1wb2xpbmUgDQo+IGZ1bmN0aW9u cyBtYXJrZWQgdmlhIHRoZSBEV19BVF90cmFtcG9saW5lIGluIERXQVJGLiAgVGhlIGF0dHJpYnV0 ZSBjYW4gDQo+IGJlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjZXJ0YWluIHN1YnJvdXRp bmVzL2lubGluZWQgc3Vicm91dGluZXMgDQo+IHRoYXQgYXJlIGNvbXBpbGVyIGdlbmVyYXRlZCBh bmQgc2hvdWxkIGJlIGhpZGRlbiBmcm9tIGEgdXNlci4NCj4NCj4gTWFpbmx5LCBpbmZydW4gaXMg bW9kaWZpZWQgaW4gMyB3YXlzLg0KPg0KPiBGaXJzdCwgR0RCIHdpbGwgbm93IGF0dGVtcHQgdG8g c3RlcCB0aHJvdWdoIHRyYW1wb2xpbmUgZnVuY3Rpb25zLg0KPiBXaGVuZXZlciB3ZSBpc3N1ZWQg YSBzdGVwIGNvbW1hbmQgdGhhdCB3b3VsZCBtYWtlIEdEQiBzdGVwIGludG8gYSANCj4gZnVuY3Rp b24gdGhhdCBpcyBtYXJrZWQgdHJhbXBvbGluZSwgR0RCIHdpbGwgdHJ5IHRvIHN0ZXAgZGlyZWN0 bHkgDQo+IHRvd2FyZHMgdGhlIHRyYW1wb2xpbmUncyAndGFyZ2V0JyBpbnN0ZWFkIGFuZCwgZS5n Liwgbm90IHN0b3AgYXQgdGhlIA0KPiBmaXJzdCBpbnN0cnVjdGlvbiBvZiB0aGUgdHJhbXBvbGlu ZS4NCj4gVGhlIHRhcmdldCBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSBjb21waWxlciBieSB0aGUg dmFsdWUgb2YgDQo+IERXX0FUX3RyYW1wb2xpbmUgaWYgaXRzIGZvcm0gaXMgZWl0aGVyIGFuIGFk ZHJlc3MsIGEgbmFtZSwgb3IgYSBESUUgDQo+IHJlZmVyZW5jZS4gIERXX0FUX3RyYW1wb2xpbmUg aXMgYWxzbyBhbGxvd2VkIHRvIGJlIHNwZWNpZmllZCBhcyBhIGZsYWcgDQo+IChjb250YWluaW5n IHRydWUgb3IgZmFsc2UpLCBpbiB3aGljaCBjYXNlIHRoZSB0YXJnZXQgaXMgYXNzdW1lZCB0byBi ZSANCj4gdW5rbm93bi4gIElmIEdEQiBzdWNjZXNzZnVsbHkgZmluZHMgYSB0YXJnZXQsIHNvIGlm IHRoZSB2YWx1ZSBvZiANCj4gRFdfQVRfdHJhbXBvbGluZSB3YXMgbm90IGEgZmxhZyBhbmQgY291 bGQgYmUgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5LCANCj4gR0RCIHN0ZXBzIGRpcmVjdGx5IHRvd2Fy ZHMgdGhlIHRhcmdldCBhbmQgdGhyb3VnaCB0aGUgdHJhbXBvbGluZSwgDQo+IGhpZGluZyB0aGUg dHJhbXBvbGluZSBmcm9tIHRoZSB1c2VyLiAgSWYgR0RCIGNhbm5vdCwgaG93ZXZlciBkZWR1Y2Ug YSANCj4gdGFyZ2V0LCBtb3N0IGxpa2VseSBiZWNhdXNlIHRoZSBEV19BVF90cmFtcG9saW5lIHdh cyBnaXZlbiBhcyBhIGZsYWcgDQo+IG9yIGJlY2F1c2Ugb2YgYnJva2VuIGRlYnVnIGluZm8sIGl0 IHdpbGwgaW5zdGVhZCBjb250aW51ZSBpbnNpZGUgDQo+IGV4ZWN1dGlvbiBpbiB0aGUgdHJhbXBv bGluZSBmdW5jdGlvbiB1bnRpbCBpdCByZWFjaGVzIGFuIGluc3RydWN0aW9uIA0KPiB0aGF0IGlz IG5vdCBhc3NvY2lhdGVkIHdpdGggYSB0cmFtcG9saW5lIGZ1bmN0aW9uLCB3aGljaCBpcyB1c3Vh bGx5IA0KPiB0aGUgdGFyZ2V0IGZ1bmN0aW9uLiAgSXQgd2lsbCB0aGVuIHN0b3AgYW5kIGdpdmUg Y29udHJvbCBiYWNrIHRvIHRoZSB1c2VyLg0KPiBJdCBzaG91bGQgYmUgbm90ZWQsIHRoYXQgdGhl cmUgbWlnaHQgYmUgdGhlIGNhc2VzLCB3aGVyZSB0cmFtcG9saW5lcyANCj4gY2FsbCBmdW5jdGlv bnMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGJlZm9yZSB0aGUgYWN0dWFsIHRhcmdldCBjYWxsLiAg DQo+IElmLCBpbiBzdWNoIGEgc2l0dWF0aW9uLCBHREIgZmFpbHMgdG8gcmVzb2x2ZSB0aGUgdGFy Z2V0LCBpdCB3b3VsZCANCj4gcmVzdW1lIGV4ZWN1dGlvbiB1bnRpbCBzdGVwcGluZyBpbnRvIHRo aXMgb3RoZXIgZnVuY3Rpb24gY2FsbCwgYW5kIA0KPiBoYW5kIGJhY2sgY29udHJvbCB0byB0aGUg dXNlciwgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgcmVhY2hlZCB0aGUgDQo+IHRhcmdldC4gIEEg c2Vjb25kIHN0ZXAgd291bGQgaGF2ZSB0byBiZSBpc3N1ZWQgYnkgdGhlIHVzZXIgdG8gYXJyaXZl IGEgDQo+IHRoZSB0YXJnZXQgKGJ5IHJlc3VtaW5nIGluIHRoZSB0cmFtcG9saW5lIGFuZCB0aGVu IHVudGlsIGxlYXZpbmcgaXQgYSBzZWNvbmQgdGltZSkuDQo+IEFzIHRoaXMgaXMgYSByYXRoZXIg cGF0aG9sb2dpY2FsIGNhc2UgYW5kIG5vIHJlYWwgaW5zdGFuY2Ugb2YgdGhpcyBpcyANCj4ga25v d24sIEkgdGhpbmsgdGhlIGN1cnJlbnQgYmVoYXZpb3IgaGVyZSBpcyBnb29kIGVub3VnaCBhbmQg c2VlbXMgdG8gDQo+IGJlIHRoZSBiZXN0IEdEQiBjYW4gZG8gaW4gc3VjaCBhIHNpdHVhdGlvbi4N Cj4NCj4gU2Vjb25kbHksIGFzIHRyYW1wb2xpbmUgZnVuY3Rpb25zIG5vcm1hbGx5IGRvIG5vdCBo YXZlIGFueSByZWFsIHNvdXJjZSANCj4gY29kZSBjb3JyZWxhdGlvbiwgaXQgaXMgbGlrZWx5IHRo YXQgdGhleSBtb3N0bHkgYXBwZWFyIHdpdGhvdXQgbGluZSANCj4gaW5mby4NCj4gTm9ybWFsbHks IEdEQiB3b3VsZCBza2lwIGNvbXBsZXRlbHkgb3ZlciBhIGZ1bmN0aW9uIGNhbGwgdG8gYSBmdW5j dGlvbiANCj4gdGhhdCBoYXMgbm8gc291cmNlIGxpbmUgaW5mb3JtYXRpb24sIHNvIHdlIHdvdWxk IG5ldmVyIGdldCB0byB0aGUgDQo+IGFmb3JlbWVudGlvbmVkIHN0ZXBwaW5nIHRocm91Z2ggYSB0 cmFtcG9saW5lIGFuZCB0YXJnZXQgcmVzb2x1dGlvbi4gIA0KPiBUbyByZW1lZHkgdGhpcywgZm9y IGRlYnVnIGluZm8gdHJhbXBvbGluZXMsIEdEQiBub3cgYXR0ZW1wdHMgdG8gc3RlcCANCj4gdGhy b3VnaCB0aGVtIHJlZ2FyZGxlc3Mgb2YgdGhlbSBoYXZpbmcgc291cmNlIGxpbmUgaW5mb3JtYXRp b24gb3Igbm90LiAgDQo+IFNvIGlzc3VpbmcgYSBzdGVwIGF0IGEgZnVuY3Rpb24gY2FsbCB3cmFw cGVkIGJ5IGEgdHJhbXBvbGluZSB3aXRob3V0IA0KPiBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3 aWxsIG5vIGxvbmdlciBza2lwIHRoZSB3aG9sZSBmdW5jdGlvbiBjYWxsLCANCj4gYnV0IG5vdyBz dGVwIHRocm91Z2ggdGhlIHRyYW1wb2xpbmUgYW5kIGF0dGVtcHQgdG8gcmVzb2x2ZSB0aGUgDQo+ IHRyYW1wb2xpbmUgdGFyZ2V0IGFzIGRlc2NyaWJlZCBhYm92ZSAoc28gdXN1YWxseSwgYSBzaW5n bGUgc3RlcCBhdCB0aGUgDQo+IGNhbGwgc2l0ZSB3aWxsIHN0ZXAgdGhyb3VnaCB0aGUgdHJhbXBv bGluZSBhbmQgdG93YXJkcyB0aGUgdGFyZ2V0LCANCj4gZXZlbiBpZiB0aGUgdHJhbXBvbGluZSBo YWQgbm90IHNvdXJjZSBsaW5lIGluZm8pLg0KPg0KPiBMYXN0LCBpbiBhbGwgb3RoZXIgY2FzZXMg d2hlbiBHREIgaXMgYWJvdXQgdG8gc3RvcCBhdCBhIGxvY2F0aW9uIHRoYXQgDQo+IGlzIGluY2x1 ZGVkIGluIGEgdHJhbXBvbGluZSByZWdpb24gKGUuZy4gYWZ0ZXIgYSBzdGVwIGZyb20gdGhlIHRh cmdldCANCj4gYmFjayBpbnRvIHRoZSB0cmFtcG9saW5lKSBHREIgd2lsbCBpbnN0ZWFkIGNvbnRp bnVlIHVudGlsIHRoZSANCj4gdHJhbXBvbGluZSByZWdpb24gaXMgbGVmdCBhZ2FpbiBhbmQgb25s eSB0aGVuIGdpdmUgY29udHJvbCBiYWNrIHRvIHRoZSANCj4gdXNlci4gIFRoaXMgY2hhbmdlIHNl cnZlcyB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyBzdGVwcGluZyBiYWNrIGZyb20gYSANCj4gdGFy Z2V0IGNhbGwgdGhyb3VnaCB0aGUgdHJhbXBvbGluZSB3aXRob3V0IHRoZSB1c2VyIG5vdGljaW5n IHRoZSANCj4gYXJ0aWZpY2lhbCBmdW5jdGlvbiBjYWxsIGluYmV0d2VlbiBjYWxsIHNpdGUgYW5k IHRhcmdldC4NCj4NCj4gVG9nZXRoZXIsIHRoZXNlIGNoYW5nZXMgYXR0ZW1wdCB0byBoaWRlIHRo ZSB0cmFtcG9saW5lIGZ1bmN0aW9uIGZyb20gDQo+IHRoZSB1c2VyIHdoaWxlIHN0ZXBwaW5nLiAg QWRkaXRpb25hbGx5LCB0aGUgc2tpcC10cmFtcG9saW5lLWZ1bmN0aW9ucyANCj4gb3B0aW9uIGhh cyBiZWVuIGludHJvZHVjZWQgaW4gaW5mcnVuLiAgSXQgaXMgc2V0IGJ5IGRlZmF1bHQsIGFuZCwg d2hlbiANCj4gdHVybmVkIG9mZiwgR0RCIHdpbGwgcmV0dXJuIHRvIGl0cyAnbm9ybWFsJyBzdGVw cGluZyBiZWhhdmlvciBhbmQgDQo+IGlnbm9yZSBhbnkgcG9zc2libGUgRFdfQVRfdHJhbXBvbGlu ZS4NCg0KSSByZWFsbHkgbGlrZSB0aGlzIGZlYXR1cmUuIFVuZm9ydHVuYXRlbHksIHRoaXMgaXNu J3Qgd29ya2luZyB3aGVuIGZpcnN0IGVudGVyaW5nIGEgdHJhbXBvbGluZSBpbiByZXZlcnNlIHN0 ZXBwaW5nLiBpZToNCg0K4p6cwqAgZ2RiIC4vZ2RiIC1xDQp0ZXN0c3VpdGUvb3V0cHV0cy9nZGIu ZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy9kdzItZnVuY3Rpb24tdHJhbXBvbGluZXMN ClJlYWRpbmcgc3ltYm9scyBmcm9tDQp0ZXN0c3VpdGUvb3V0cHV0cy9nZGIuZHdhcmYyL2R3Mi1m dW5jdGlvbi10cmFtcG9saW5lcy9kdzItZnVuY3Rpb24tdHJhbXBvbGluZXMuLi4NCihnZGIpIHN0 YXJ0DQpUZW1wb3JhcnkgYnJlYWtwb2ludCAxLCBtYWluICgpDQogwqDCoMKgIGF0DQovaG9tZS9i bGFyc2VuL0RvY3VtZW50cy9mc2ZfYnVpbGQvZ2RiL3Rlc3RzdWl0ZS8uLi8uLi8uLi9iaW51dGls cy1nZGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5j OjY5DQp3YXJuaW5nOiBTb3VyY2UgZmlsZSBpcyBtb3JlIHJlY2VudCB0aGFuIGV4ZWN1dGFibGUu DQo2OcKgwqDCoMKgwqDCoMKgIGdsb2JhbF92YXIgPSAwO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBtYWluIHNldCBnbG9iYWxf dmFyICovDQooZ2RiKSByZWNvcmQNCihnZGIpIG4NCjczwqDCoMKgwqDCoMKgwqAgYW5zID0gdHJh bXBvbGluZSAoKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKiBtYWluIGNhbGwgdHJhbXBvbGluZSAqLw0KKGdkYikgbg0KNzXCoMKgwqDCoMKgwqDC oCBhbnMgPSBjaGFpbmVkX3RyYW1wb2xpbmUgKCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiBtYWluIGNhbGwgY2hhaW5lZF90cmFtcG9saW5lICovDQooZ2RiKSBycw0KMHgw MDAwMDAwMDAwNDAxMTRiIGluIHRyYW1wb2xpbmUgKCkNCihnZGIpDQpTaW5nbGUgc3RlcHBpbmcg dW50aWwgZXhpdCBmcm9tIGZ1bmN0aW9uIHRyYW1wb2xpbmUsIHdoaWNoIGhhcyBubyBsaW5lIG51 bWJlciBpbmZvcm1hdGlvbi4NCnRhcmdldCAoKQ0KIMKgwqDCoCBhdA0KL2hvbWUvYmxhcnNlbi9E b2N1bWVudHMvZnNmX2J1aWxkL2dkYi90ZXN0c3VpdGUvLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZnVuY3Rpb24tdHJhbXBvbGluZXMuYzoyOA0KMjjC oMKgwqDCoMKgwqDCoCByZXR1cm4gOSArIDEwO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHRhcmdldCByZXR1cm4gKi8NCihn ZGIpDQoyNsKgwqDCoMKgwqDCoMKgICsrZ2xvYmFsX3ZhcjvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHRhcmdldCBhZGQg Ki8NCihnZGIpDQptYWluICgpDQogwqDCoMKgIGF0DQovaG9tZS9ibGFyc2VuL0RvY3VtZW50cy9m c2ZfYnVpbGQvZ2RiL3Rlc3RzdWl0ZS8uLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5jOjczDQo3M8KgwqDCoMKgwqDC oMKgIGFucyA9IHRyYW1wb2xpbmUgKCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLyogbWFpbiBjYWxsIHRyYW1wb2xpbmUgKi8NCihnZGIpDQoNCkkg dGhpbmsgdGhpcyBzaG91bGQgYmUgZml4ZWQgYmVmb3JlIHRoaXMgcGF0Y2ggd2VudCBpbi4NCg0K LS0NCkNoZWVycywNCkJydW5vDQoNCj4NCj4gQXMgY3VycmVudGx5IG9ubHkgaWZ4IGVtaXRzIHRo ZSBEV19BVF90cmFtcG9saW5lIHRhZywgYSB0ZXN0IGhhcyBiZWVuIA0KPiBhZGRlZCB0byBnZGIu ZHdhcmYyIHRoYXQgYXJ0aWZpY2lhbGx5IGNyZWF0ZXMgYSBzZXQgb2YgdHJhbXBvbGluZSANCj4g ZnVuY3Rpb25zLg0KPg0KPiAyMDIzLTA3LTEwIE5pbHMtQ2hyaXN0aWFuIEtlbXBrZSA8bmlscy1j aHJpc3RpYW4ua2VtcGtlQGludGVsLmNvbT4NCj4gLS0tDQo+ICAgZ2RiL05FV1MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrDQo+ICAgZ2RiL2RvYy9nZGIudGV4 aW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKw0KPiAgIGdkYi9pbmZydW4u YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MSArKysrKy0NCj4gICBnZGIv aW5mcnVuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KPiAgIC4u Li9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5jICAgICB8ICA4MCArKysrKysN Cj4gICAuLi4vZ2RiLmR3YXJmMi9kdzItZnVuY3Rpb24tdHJhbXBvbGluZXMuZXhwICAgfCAyNDUg KysrKysrKysrKysrKysrKysrDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA0NTcgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5jDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IA0KPiBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWZ1bmN0aW9uLXRyYW1wb2xpbmVz LmV4cA0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUw0KPiBpbmRleCBiOTI0 ODM0ZDNkNy4uOGJjYTU1NDBmNTggMTAwNjQ0DQo+IC0tLSBhL2dkYi9ORVdTDQo+ICsrKyBiL2dk Yi9ORVdTDQo+IEBAIC01NzEsNiArNTcxLDIxIEBAIHBsYXRmb3JtLg0KPiAgIA0KPiAgICogTmV3 IGNvbW1hbmRzDQo+ICAgDQo+ICtzZXQgc2tpcC10cmFtcG9saW5lLWZ1bmN0aW9ucyBvbnxvZmYN Cj4gK3Nob3cgc2tpcC10cmFtcG9saW5lLWZ1bmN0aW9ucw0KPiArICBUaGlzIHNldHRpbmcgaXMg J29uJyBieSBkZWZhdWx0LiAgV2hlbiAnb24nIGl0IGNvbnRyb2xzIHdoZXRoZXIgDQo+ICtHREIn cw0KPiArICBzdGVwcGluZyBiZWhhdmlvciB3aWxsIHJlY29nbml6ZSBmdW5jdGlvbiBjYWxscyB0 aGF0IGhhdmUgYmVlbiANCj4gK21hcmtlZCBhcw0KPiArICB0cmFtcG9saW5lcyBpbiB0aGUgZGVi dWcgaW5mby4gIEl0IGltcHJvdmVzIHN0ZXBwaW5nIGJlaGF2aW9yIGluIA0KPiArdGhhdCBpdA0K PiArICBzdGVwcyB0aHJvdWdoIHRyYW1wb2xpbmUgY29kZSBhbmQgaGlkZXMgaXQgZnJvbSB0aGUg dXNlci4gIEdEQiBjYW4gDQo+ICtub3cgc3RlcA0KPiArICB0aHJvdWdoIHRyYW1wb2xpbmVzIHRo YXQgYXJlIGNvcnJlY3RseSBtYXJrZWQgYXMgc3VjaCBpbiB0aGUgDQo+ICtjb21waWxlcidzDQo+ ICsgIGRlYnVnIGluZm8uICBJZiB0aGUgdGFyZ2V0IG9mIGEgdHJhbXBvbGluZSBpcyB1bmtub3du LCBHREIgd2lsbCANCj4gK2NvbnRpbnVlDQo+ICsgIHVudGlsIHRoZSB0cmFtcG9saW5lIHNlY3Rp b24gaXMgbGVmdCBhZ2FpbiBhbmQgb25seSB0aGVuIGhhbmQgDQo+ICtjb250cm9sIGJhY2sNCj4g KyAgdG8gdGhlIHVzZXIuICBHREIgZG9lcyB0aGlzIGV2ZW4gaWYgdGhlIHRyYW1wb2xpbmUgaGFz IG5vIA0KPiArYXNzb2NpYXRlZCBsaW5lDQo+ICsgIGluZm8uICBJZiB0aGlzIGlzIHR1cm5lZCBv ZmYsIEdEQiB3aWxsIHN0ZXAgaW50byB0cmFtcG9saW5lcyBpZiANCj4gK3RoZXJlIGlzDQo+ICsg IGxpbmUgdGFibGUgaW5mb3JtYXRpb24gZm9yIHRoZW0gb3Igc3RlcCBvdmVyIHRoZSB0cmFtcG9s aW5lIGNhbGxzIA0KPiAraWYgdGhlcmUNCj4gKyAgaXMgbm8gbGluZSB0YWJsZSBpbmZvcm1hdGlv bi4gIEN1cnJlbnRseSwgb25seSBEV0FSRiB0cmFtcG9saW5lcyANCj4gK2FyZQ0KPiArICBzdXBw b3J0ZWQuDQo+ICsNCj4gICBtYWludCBzZXQgYmFja3RyYWNlLW9uLWZhdGFsLXNpZ25hbCBvbnxv ZmYNCj4gICBtYWludCBzaG93IGJhY2t0cmFjZS1vbi1mYXRhbC1zaWduYWwNCj4gICAgIFRoaXMg c2V0dGluZyBpcyAnb24nIGJ5IGRlZmF1bHQuICBXaGVuICdvbicgR0RCIHdpbGwgcHJpbnQgYSAN Cj4gbGltaXRlZCBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8gaW5kZXggDQo+IGIxMGMwNmFlOTFmLi44MzljM2U2YTBmOCAxMDA2NDQNCj4gLS0t IGEvZ2RiL2RvYy9nZGIudGV4aW5mbw0KPiArKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvDQo+IEBA IC02MzkxLDYgKzYzOTEsNDIgQEAgZGVidWcgaW5mb3JtYXRpb24uICBUaGlzIGlzIHRoZSBkZWZh dWx0Lg0KPiAgIFNob3cgd2hldGhlciBAdmFsdWV7R0RCTn0gd2lsbCBzdG9wIGluIG9yIHN0ZXAg b3ZlciBmdW5jdGlvbnMgd2l0aG91dA0KPiAgIHNvdXJjZSBsaW5lIGRlYnVnIGluZm9ybWF0aW9u Lg0KPiAgIA0KPiArQGtpbmRleCBzZXQgc2tpcC10cmFtcG9saW5lLWZ1bmN0aW9ucyBAY2luZGV4 IHRyYW1wb2xpbmUgZnVuY3Rpb25zIA0KPiArQGNpbmRleCBzdGVwcGluZyB0aHJvdWdoIHRyYW1w b2xpbmUgZnVuY3Rpb25zIEBpdGVtIHNldCANCj4gK3NraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMg QGl0ZW14IHNldCBza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25zIG9uIA0KPiArV2hlbiBjYWxsaW5n IGEgZnVuY3Rpb24gaW4gYW55IGxhbmd1YWdlLCBzb21lIGNvbXBpbGVycyBtaWdodCANCj4gK2dl bmVyYXRlIHNvLWNhbGxlZCBAZGZue3RyYW1wb2xpbmUgZnVuY3Rpb25zfSwgd2hpY2ggd3JhcCB0 aGUgYWN0dWFsIA0KPiArZnVuY3Rpb24gY2FsbCAodGhlIHRhcmdldCBvZiB0aGUgdHJhbXBvbGlu ZSkuICBUaGUgY29tcGlsZXIgbWlnaHQgDQo+ICttYXJrIHN1Y2ggYSB0cmFtcG9saW5lIGluIGl0 cyBkZWJ1ZyBpbmZvcm1hdGlvbi4gIE9mdGVuLCBzdWNoIA0KPiArdHJhbXBvbGluZXMgZG8gbm90 IGhhdmUgYW55IHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCANCj4gK3Ro ZW0gd2hpY2ggd2lsbCBsZWFkIHRoZSBAY29kZXtzdGVwfSBjb21tYW5kIHRvIGJlaGF2ZSBsaWtl IGEgQGNvZGV7bmV4dH0gYW5kIHNraXAgdGhlIGZ1bmN0aW9uIGNhbGwgY29tcGxldGVseS4NCj4g Kw0KPiArVGhlIGRlZmF1bHQgaXMgQGNvZGV7c2V0IHNraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMg b259IGFuZCBpdCB3aWxsIA0KPiArY2F1c2UgdGhlIEBjb2Rle3N0ZXB9IGNvbW1hbmQgdG8gdHJl YXQgdGhlc2UgdHJhbXBvbGluZXMgZGlmZmVyZW50bHkuICANCj4gK1doZW4gaXNzdWluZyBhIEBj b2Rle3N0ZXB9IGF0IHRoZSBjYWxsIHNpdGUgb2YgYSB0cmFtcG9saW5lIGZ1bmN0aW9uIA0KPiAr aWYgQGNvZGV7c2tpcC10cmFtcG9saW5lLWZ1bmN0aW9uc30gaXMgc2V0IEB2YWx1ZXtHREJOfSB3 aWxsIGF0dGVtcHQgDQo+ICt0byBkZXRlcm1pbmUgdGhlIHRhcmdldCBvZiB0aGUgdHJhbXBvbGlu ZSBhbmQgdGhlbiBzdGVwIHRocm91Z2ggdGhlIA0KPiArdHJhbXBvbGluZSBzdG9wcGluZyBhdCB0 aGUgdGFyZ2V0LiAgSWYgdGhlIHRhcmdldCBjb3VsZCBub3QgYmUgZm91bmQgDQo+ICtvciB3YXMg bm90IGdpdmVuIGluIHRoZSBkZWJ1ZyBpbmZvLCBAdmFsdWV7R0RCTn0gd2lsbCBzaW1wbHkgY29u dGludWUgDQo+ICtleGVjdXRpb24gdW50aWwgaXQgbGVhdmVzIHRoZSB0cmFtcG9saW5lIGNvZGUg YWdhaW4sIGV2ZW4gaWYgdGhlIA0KPiArdHJhbXBvbGluZSBoYXMgbm8gbGluZSBpbmZvIGFzc29j aWF0ZWQgd2l0aCBpdC4gIFdoZW4gcmV0dXJuaW5nIGZyb20gDQo+ICthIHRhcmdldCBmdW5jdGlv biBjYWxsIGFuZCBzdGVwcGluZyBiYWNrIGludG8gdGhlIHRyYW1wb2xpbmUsIA0KPiArQHZhbHVl e0dEQk59IHdpbGwgYWdhaW4gc3RlcCB0aHJvdWdoIHRoZSB0cmFtcG9saW5lIHRvd2FyZHMgdGhl IGNhbGwgDQo+ICtzaXRlLiAgQWRkaXRpb25hbGx5LCBldmVuIGlmIHN0b3BwZWQgaW4gYSB0cmFt cG9saW5lIGZ1bmN0aW9uIHdpdGggDQo+ICtzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiwgaXNzdWlu ZyBhIEBjb2Rle3N0ZXB9IHdpbGwgcHJvbXB0IA0KPiArQHZhbHVle0dEQk59IHRvIHJlc3VtZSBl eGVjdXRpb24gdW50aWwgbGVhdmluZyB0aGUgdHJhbXBvbGluZSByZWdpb24gDQo+ICthZ2Fpbi4g IFRoZSBAY29kZXtzdGVwaX0gY29tbWFuZCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIHNldHRpbmcg d2hpY2ggaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAgQ3VycmVudGx5LCBvbmx5IERXQVJGIHRyYW1w b2xpbmVzIG1hcmtlZCB2aWEgRFdfQVRfdHJhbXBvbGluZSBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMu DQo+ICsNCj4gK0BpdGVtIHNldCBza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25zIG9mZiBDYXVzZXMg dGhlIEBjb2Rle3N0ZXB9IA0KPiArY29tbWFuZCB0byBjb21wbGV0ZWx5IGlnbm9yZSBhbnkgdHJh bXBvbGluZSBpbmZvcm1hdGlvbiBhIGNvbXBpbGVyIA0KPiArbWlnaHQgaGF2ZSBlbWl0dGVkIGlu IGl0cyBkZWJ1ZyBpbmZvLiAgVHJhbXBvbGluZXMgd2lsbCBiZSB0cmVhdGVkIA0KPiArbGlrZSBh bnkgb3RoZXIgZnVuY3Rpb24gd2hlbiBzdGVwcGluZy4NCj4gKw0KPiArQGl0ZW0gc2hvdyBza2lw LXRyYW1wb2xpbmUtZnVuY3Rpb25zDQo+ICtTaG93IHdoZXRoZXIgQHZhbHVle0dEQk59IHRyaWVz IHRvIHNraXAgdHJhbXBvbGluZXMgb3Igbm90Lg0KPiArDQo+ICAgQGtpbmRleCBmaW5pc2gNCj4g ICBAa2luZGV4IGZpbiBAcnsoQGNvZGV7ZmluaXNofSl9DQo+ICAgQGl0ZW0gZmluaXNoDQo+IGRp ZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMgaW5kZXggDQo+IDU4ZGExY2Vm MjllLi5kZmFmZTdjZGM3NCAxMDA2NDQNCj4gLS0tIGEvZ2RiL2luZnJ1bi5jDQo+ICsrKyBiL2dk Yi9pbmZydW4uYw0KPiBAQCAtMTg0LDYgKzE4NCwxMiBAQCBnZXRfcHJldmlvdXNfdGhyZWFkICgp DQo+ICAgDQo+ICAgc3RhdGljIGJvb2wgZGV0YWNoX2ZvcmsgPSB0cnVlOw0KPiAgIA0KPiArLyog SWYgc2V0IChkZWZhdWx0KSBHREIgd2lsbCBzdGVwIHRocm91Z2ggZnVuY3Rpb25zL2lubGluZWQg c3Vicm91dGluZXMgbWFya2VkDQo+ICsgICBEV19BVF90cmFtcG9saW5lIGJ5IHRoZSBjb21waWxl ci4gIElmIGZhbHNlLCBHREIgd2lsbCBpZ25vcmUgdGhlDQo+ICsgICBhdHRyaWJ1dGUuICAqLw0K PiArDQo+ICtzdGF0aWMgYm9vbCBza2lwX3RyYW1wb2xpbmVfZnVuY3Rpb25zID0gdHJ1ZTsNCj4g Kw0KPiAgIGJvb2wgZGVidWdfaW5mcnVuID0gZmFsc2U7DQo+ICAgc3RhdGljIHZvaWQNCj4gICBz aG93X2RlYnVnX2luZnJ1biAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwgQEAg LTcyNjUsNyANCj4gKzcyNzEsNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdCAoc3RydWN0IGV4 ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpDQo+ICAgCQkgICE9IGZpbmRfcGNfZnVuY3Rpb24g KGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3BjICgpKSkpKSkNCj4gICAgICAgew0KPiAgICAgICAg IENPUkVfQUREUiBzdG9wX3BjID0gZWNzLT5ldmVudF90aHJlYWQtPnN0b3BfcGMgKCk7DQo+IC0g ICAgICBDT1JFX0FERFIgcmVhbF9zdG9wX3BjOw0KPiAgIA0KPiAgICAgICAgIGluZnJ1bl9kZWJ1 Z19wcmludGYgKCJzdGVwcGVkIGludG8gc3Vicm91dGluZSIpOw0KPiAgIA0KPiBAQCAtNzMzNyw4 ICs3MzQyLDQxIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykNCj4gICAJIGNhbGxpbmcgcm91dGluZSBhbmQgdGhlIHJlYWwgZnVu Y3Rpb24pLCBsb2NhdGUgdGhlIHJlYWwNCj4gICAJIGZ1bmN0aW9uLiAgVGhhdCdzIHdoYXQgdGVs bHMgdXMgKGEpIHdoZXRoZXIgd2Ugd2FudCB0byBzdGVwDQo+ICAgCSBpbnRvIGl0IGF0IGFsbCwg YW5kIChiKSB3aGF0IHByb2xvZ3VlIHdlIHdhbnQgdG8gcnVuIHRvIHRoZQ0KPiAtCSBlbmQgb2Ys IGlmIHdlIGRvIHN0ZXAgaW50byBpdC4gICovDQo+IC0gICAgICByZWFsX3N0b3BfcGMgPSBza2lw X2xhbmd1YWdlX3RyYW1wb2xpbmUgKGZyYW1lLCBzdG9wX3BjKTsNCj4gKwkgZW5kIG9mLCBpZiB3 ZSBkbyBzdGVwIGludG8gaXQuICBGb3IgZnVuY3Rpb25zIG1hcmtlZCBhcw0KPiArCSB0cmFtcG9s aW5lIGZ1bmN0aW9ucyB3ZSB0cnkgdG8gZmluZCB0aGVpciB0YXJnZXQgYW5kIHN0ZXANCj4gKwkg dG93YXJkcyBpdCAoaWYgc2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucyBpcyBub3Qgc2V0IHRvIGZh bHNlIGJ5IHRoZQ0KPiArCSB1c2VyKS4gIElmIG5vIHRhcmdldCBjYW4gYmUgZGV0ZXJtaW5lZCB3 ZSBqdXN0IHN0ZXAgaW50byB0aGUNCj4gKwkgdHJhbXBvbGluZSBhbmQgaGFuZCBjb250cm9sIGJh Y2sgdG8gdGhlIHVzZXIuICAqLw0KPiArICAgICAgQ09SRV9BRERSIHJlYWxfc3RvcF9wYyA9IDA7 DQo+ICsgICAgICBib29sIGluX3RyYW1wb2xpbmUgPSBza2lwX3RyYW1wb2xpbmVfZnVuY3Rpb25z DQo+ICsJCQkgICAmJiBpbl90cmFtcG9saW5lX2Z1bmN0aW9uIChzdG9wX3BjKTsNCj4gKw0KPiAr ICAgICAgaWYgKGluX3RyYW1wb2xpbmUpDQo+ICsJew0KPiArCSAgcmVhbF9zdG9wX3BjID0gZmlu ZF9mdW5jdGlvbl90cmFtcG9saW5lX3RhcmdldCAoc3RvcF9wYyk7DQo+ICsNCj4gKwkgIGZvciAo aW50IGkgPSAwOyBpIDwgTUFYX1RSQU1QT0xJTkVfQ0hBSU5fU0laRQ0KPiArCQkJICAmJiBpbl90 cmFtcG9saW5lX2Z1bmN0aW9uIChyZWFsX3N0b3BfcGMpOyArK2kpDQo+ICsJICAgIHsNCj4gKwkJ cmVhbF9zdG9wX3BjID0gZmluZF9mdW5jdGlvbl90cmFtcG9saW5lX3RhcmdldCAocmVhbF9zdG9w X3BjKTsNCj4gKwkJLyogRXhpdCBpZiBmaW5kX2Z1bmN0aW9uX3RyYW1wb2xpbmVfdGFyZ2V0IGZh aWxlZCB0byBmaW5kIHRoZQ0KPiArCQkgICB0cmFtcG9saW5lIHRhcmdldC4gIERvIG5vdCB0cnkg dG8gcmVzb2x2ZSB0aGUgdHJhbXBvbGluZXMNCj4gKwkJICAgaW4gdGhpcyBjYXNlLiAgKi8NCj4g KwkJaWYgKHJlYWxfc3RvcF9wYyA9PSAweDApDQo+ICsJCSAgYnJlYWs7DQo+ICsJICAgIH0NCj4g Kw0KPiArCSAgLyogSWYgd2UgZmFpbGVkIHRvIGZpbmQgYSB0YXJnZXQgd2Ugd2lsbCBqdXN0IHNp bmdsZSBzdGVwIGluIHRoZQ0KPiArCSAgICAgaG9wZSBvZiBsZWF2aW5nIHRoZSB0cmFtcG9saW5l IGFnYWluIHNvb24uICAqLw0KPiArCSAgaWYgKHJlYWxfc3RvcF9wYyA9PSAweDApDQo+ICsJICAg IHsNCj4gKwkgICAgICBrZWVwX2dvaW5nIChlY3MpOw0KPiArCSAgICAgIHJldHVybjsNCj4gKwkg ICAgfQ0KPiArCX0NCj4gKw0KPiArICAgICAgaWYgKHJlYWxfc3RvcF9wYyA9PSAwKQ0KPiArCXJl YWxfc3RvcF9wYyA9IHNraXBfbGFuZ3VhZ2VfdHJhbXBvbGluZSAoZnJhbWUsIHN0b3BfcGMpOw0K PiAgICAgICAgIGlmIChyZWFsX3N0b3BfcGMgPT0gMCkNCj4gICAJcmVhbF9zdG9wX3BjID0gZ2Ri YXJjaF9za2lwX3RyYW1wb2xpbmVfY29kZSAoZ2RiYXJjaCwgZnJhbWUsIHN0b3BfcGMpOw0KPiAg ICAgICAgIGlmIChyZWFsX3N0b3BfcGMgIT0gMCkNCj4gQEAgLTczNTksNiArNzM5Nyw4IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cykNCj4gICAgICAgICAvKiBJZiB3ZSBoYXZlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGZvciB0 aGUgZnVuY3Rpb24gd2UgYXJlDQo+ICAgCSB0aGlua2luZyBvZiBzdGVwcGluZyBpbnRvIGFuZCB0 aGUgZnVuY3Rpb24gaXNuJ3Qgb24gdGhlIHNraXANCj4gICAJIGxpc3QsIHN0ZXAgaW50byBpdC4N Cj4gKwkgSWYgd2UgYXJlIGFib3V0IHRvIHN0ZXAgaW50byBhIGZ1bmN0aW9uIG1hcmtlZCB0cmFt cG9saW5lIHdpdGggbm8NCj4gKwkgbGluZSBudW1iZXIgaW5mb3JtYXRpb24sIHdlIHN0aWxsIHdh bnQgdG8gZW50ZXIgaXQgaGVyZS4NCj4gICANCj4gICAJIElmIHRoZXJlIGFyZSBzZXZlcmFsIHN5 bXRhYnMgYXQgdGhhdCBQQyAoZS5nLiB3aXRoIGluY2x1ZGUNCj4gICAJIGZpbGVzKSwganVzdCB3 YW50IHRvIGtub3cgd2hldGhlciAqYW55KiBvZiB0aGVtIGhhdmUgbGluZSBAQCANCj4gLTczNjcs NyArNzQwNyw5IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykNCj4gICAJc3RydWN0IHN5bXRhYl9hbmRfbGluZSB0bXBfc2FsOw0K PiAgIA0KPiAgIAl0bXBfc2FsID0gZmluZF9wY19saW5lIChlY3MtPnN0b3BfZnVuY19zdGFydCwg MCk7DQo+IC0JaWYgKHRtcF9zYWwubGluZSAhPSAwDQo+ICsJaWYgKCh0bXBfc2FsLmxpbmUgIT0g MA0KPiArCSAgICAgfHwgKHNraXBfdHJhbXBvbGluZV9mdW5jdGlvbnMNCj4gKwkJICYmIGluX3Ry YW1wb2xpbmVfZnVuY3Rpb24gKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KSkpDQo+ICAgCSAgICAmJiAh ZnVuY3Rpb25fbmFtZV9pc19tYXJrZWRfZm9yX3NraXAgKGVjcy0+c3RvcF9mdW5jX25hbWUsDQo+ ICAgCQkJCQkJICB0bXBfc2FsKQ0KPiAgIAkgICAgJiYgIWlubGluZV9mcmFtZV9pc19tYXJrZWRf Zm9yX3NraXAgKHRydWUsIGVjcy0+ZXZlbnRfdGhyZWFkKSkgDQo+IEBAIC03NTIwLDYgKzc1NjIs MTkgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9z dGF0ZSAqZWNzKQ0KPiAgICAgICAgIHJldHVybjsNCj4gICAgICAgfQ0KPiAgIA0KPiArICAvKiBJ ZiB3ZSBlbmRlZCB1cCBpbiBhIGZ1bmN0aW9uIHRyYW1wb2xpbmUgd2l0aG91dCBzdGVwcGluZyBp bnRvIGEgbmV3DQo+ICsgICAgIGZ1bmN0aW9uIHdlIGFyZSBlaXRoZXIgaW4gc29tZSBpbmxpbmVk IHRyYW1wb2xpbmUgb3IgcmV0dXJuaW5nIHRocm91Z2ggYQ0KPiArICAgICB0cmFtcG9saW5lIGZ1 bmN0aW9uLiAgSW4gZWl0aGVyIGNhc2Ugd2UgY29udGludWUgdG8gc2luZ2xlIHN0ZXAgdW50aWwg d2UNCj4gKyAgICAgYXJlIG91dCBvZiB0aGUgdHJhbXBvbGluZSBjb2RlIGFnYWluLiAgVGhpcyBj aGVjayBoYXMgdG8gYmUgZG9uZSBiZWZvcmUNCj4gKyAgICAgc3RvcF9wY19zYWwubGluZSA9PSAw IGJlbG93LCBhcyB0cmFtcG9saW5lcyB1c3VhbGx5IGRvbid0IGhhdmUgc291cmNlDQo+ICsgICAg IGxpbmUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZW0uICAqLyAgaWYgDQo+ICsgKHNr aXBfdHJhbXBvbGluZV9mdW5jdGlvbnMgJiYgaW5fdHJhbXBvbGluZV9mdW5jdGlvbiAoc3RvcF9w Y19zYWwucGMpKQ0KPiArICAgIHsNCj4gKyAgICAgIGluZnJ1bl9kZWJ1Z19wcmludGYgKCJzdGVw cGVkIGludG8gdHJhbXBvbGluZSBjb2RlIik7DQo+ICsgICAgICBrZWVwX2dvaW5nIChlY3MpOw0K PiArICAgICAgcmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiAgICAgaWYgKHN0b3BfcGNfc2FsLmxp bmUgPT0gMCkNCj4gICAgICAgew0KPiAgICAgICAgIC8qIFdlIGhhdmUgbm8gbGluZSBudW1iZXIg aW5mb3JtYXRpb24uICBUaGF0IG1lYW5zIHRvIHN0b3AgQEAgDQo+IC05NzMxLDYgKzk3ODYsMTQg QEAgc2hvd19leGVjX2RpcmVjdGlvbl9mdW5jIChzdHJ1Y3QgdWlfZmlsZSAqb3V0LCBpbnQgZnJv bV90dHksDQo+ICAgICB9DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGljIHZvaWQNCj4gK3Nob3dfc2tp cF90cmFtcG9saW5lX2Z1bmN0aW9ucyAodWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LA0KPiAr CQkJCWNtZF9saXN0X2VsZW1lbnQgKmMsDQo+ICsJCQkJY29uc3QgY2hhciAqdmFsdWUpDQo+ICt7 DQo+ICsgIGdkYl9wcmludGYgKGZpbGUsIF8oIlNraXBwaW5nIHRyYW1wb2xpbmUgZnVuY3Rpb25z IGlzICVzLlxuIiksIA0KPiArdmFsdWUpOyB9DQo+ICsNCj4gICBzdGF0aWMgdm9pZA0KPiAgIHNo b3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks DQo+ICAgCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKSBA QCAtMTAwNzYsNiANCj4gKzEwMTM5LDE2IEBAIE9wdGlvbnMgYXJlICdmb3J3YXJkJyBvciAncmV2 ZXJzZScuIiksDQo+ICAgCQkJc2V0X2V4ZWNfZGlyZWN0aW9uX2Z1bmMsIHNob3dfZXhlY19kaXJl Y3Rpb25fZnVuYywNCj4gICAJCQkmc2V0bGlzdCwgJnNob3dsaXN0KTsNCj4gICANCj4gKyAgYWRk X3NldHNob3dfYm9vbGVhbl9jbWQgKCJza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25zIiwgY2xhc3Nf cnVuLA0KPiArCQkJICAmc2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucywgXygiXCBTZXQgd2hldGhl ciBnZGIgYXR0ZW1wdHMgdG8gDQo+ICtoaWRlIHRyYW1wb2xpbmVzIG1hcmtlZCBpbiB0aGUgZGVi dWcgaW5mby4iKSwgXygiXCBTaG93IHdoZXRoZXIgZ2RiIA0KPiArYXR0ZW1wdHMgdG8gaGlkZSB0 cmFtcG9saW5lcyBtYXJrZWQgaW4gdGhlIGRlYnVnIGluZm8uIiksIF8oIlwgSWYgb24sIA0KPiAr d2hpbGUgc3RlcHBpbmcgZ2RiIHdpbGwgc2tpcCB0aHJvdWdoIGZ1bmN0aW9ucyBhbmQgaW5saW5l ZCANCj4gK2Z1bmN0aW9uc1xuXCBtYXJrZWQgYXMgdHJhbXBvbGluZXMgYnkgdGhlIGNvbXBpbGVy LiAgSWYgb2ZmLCBnZGIgd2lsbCANCj4gK2lnbm9yZSBzdWNoIGZ1bmN0aW9uXG5cIHRyYW1wb2xp bmVzLiIpLA0KPiArCQkJICBudWxscHRyLCBzaG93X3NraXBfdHJhbXBvbGluZV9mdW5jdGlvbnMs ICZzZXRsaXN0LA0KPiArCQkJICAmc2hvd2xpc3QpOw0KPiArDQo+ICAgICAvKiBTZXQvc2hvdyBk ZXRhY2gtb24tZm9yazogdXNlci1zZXR0YWJsZSBtb2RlLiAgKi8NCj4gICANCj4gICAgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgiZGV0YWNoLW9uLWZvcmsiLCBjbGFzc19ydW4sIA0KPiAmZGV0 YWNoX2ZvcmssIF8oIlwgZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uaCBiL2dkYi9pbmZydW4uaCBp bmRleCANCj4gYTM0M2QyN2Y3MmQuLmQ0YTZiNzg5MmI1IDEwMDY0NA0KPiAtLS0gYS9nZGIvaW5m cnVuLmgNCj4gKysrIGIvZ2RiL2luZnJ1bi5oDQo+IEBAIC03Niw2ICs3NiwxMCBAQCBpbmZydW5f ZGVidWdfc2hvd190aHJlYWRzIChjb25zdCBjaGFyICp0aXRsZSwgVGhyZWFkUmFuZ2UgdGhyZWFk cykNCj4gICB9DQo+ICAgDQo+ICAgDQo+ICsvKiBNYXhpbXVtIHNpemUgb2YgdHJhbXBvbGluZSBj aGFpbiB0byBwcm9jZXNzIHdoaWxlIHJlc29sdmluZw0KPiArICAgdHJhbXBvbGluZXMuICAqLw0K PiArI2RlZmluZSBNQVhfVFJBTVBPTElORV9DSEFJTl9TSVpFIDEwDQo+ICsNCj4gICAvKiBOb256 ZXJvIGlmIHdlIHdhbnQgdG8gZ2l2ZSBjb250cm9sIHRvIHRoZSB1c2VyIHdoZW4gd2UncmUgbm90 aWZpZWQNCj4gICAgICBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMgYnkgdGhlIGR5bmFtaWMgbGlu a2VyLiAgKi8NCj4gICBleHRlcm4gaW50IHN0b3Bfb25fc29saWJfZXZlbnRzOw0KPiBkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5j IA0KPiBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZnVuY3Rpb24tdHJhbXBvbGluZXMu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMWYwZWIyZTBl ZmENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWZ1bmN0aW9uLXRyYW1wb2xpbmVzLmMNCj4gQEAgLTAsMCArMSw4MCBAQA0KPiArLyogQ29weXJp Z2h0IDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICsNCj4gKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5DQo+ICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiArICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4gKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ICsNCj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiArICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YNCj4gKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUNCj4gKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuDQo+ICsNCj4gKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ICsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIA0KPiArIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovDQo+ICsNCj4gKy8qIFRoaXMgdGVzdCByZWxpZXMgb24gaW5saW5lZF90cmFtcG9saW5lIGJl aW5nIGlubGluZWQgaW50byBtYWluIGFuZCB0aGUgb3RoZXINCj4gKyAgIGZ1bmN0aW9ucyBub3Qu ICBBbGwgZnVuY3Rpb25zIGV4Y2VwdCB0YXJnZXQgd2lsbCBiZSBtYXJrZWQgdmlhDQo+ICsgICBE V19BVF90cmFtcG9saW5lIGluIHRoZSBkZWJ1ZyBpbmZvIGFuZCB3ZSdsbCBjaGVjayB3aGV0aGVy IG9uZSBjYW4gc3RlcA0KPiArICAgdGhyb3VnaCB0aGUgdHJhbXBvbGluZXMgdG93YXJkcyB0YXJn ZXQuICAqLyB2b2xhdGlsZSBpbnQgDQo+ICtnbG9iYWxfdmFyOw0KPiArDQo+ICtpbnQgX19hdHRy aWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gK3RhcmdldCAoKQkJCQkJLyogdGFyZ2V0IGRlY2wgbGlu ZSAqLw0KPiArewkJCQkJCS8qIHRhcmdldCBwcm9sb2d1ZSAqLw0KPiArICBhc20gKCJ0YXJnZXRf bGFiZWw6IC5nbG9ibCB0YXJnZXRfbGFiZWwiKTsNCj4gKyAgKytnbG9iYWxfdmFyOwkJCQkJLyog dGFyZ2V0IGFkZCAqLw0KPiArICBhc20gKCJ0YXJnZXRfbGFiZWwyOiAuZ2xvYmwgdGFyZ2V0X2xh YmVsMiIpOw0KPiArICByZXR1cm4gOSArIDEwOwkJCQkvKiB0YXJnZXQgcmV0dXJuICovDQo+ICt9 CQkJCQkJLyogdGFyZ2V0IGVuZCAqLw0KPiArDQo+ICtpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaW5s aW5lKSkNCj4gK3RyYW1wb2xpbmUgKCkNCj4gK3sJCQkJCQkvKiB0cmFtcG9saW5lIHByb2xvZ3Vl ICovDQo+ICsgIGFzbSAoInRyYW1wb2xpbmVfbGFiZWw6IC5nbG9ibCB0cmFtcG9saW5lX2xhYmVs Iik7DQo+ICsgICsrZ2xvYmFsX3ZhcjsNCj4gKyAgcmV0dXJuIHRhcmdldCAoKTsJCQkJLyogdHJh bXBvbGluZSB0YXJnZXQgY2FsbCAqLw0KPiArfQkJCQkJCS8qIHRyYW1wb2xpbmUgZW5kICovDQo+ ICsNCj4gK3N0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkg aW5saW5lZF90cmFtcG9saW5lIA0KPiArKCkNCj4gK3sJCQkJCQkvKiBpbmxpbmVkX3RyYW1wb2xp bmUgcHJvbG9ndWUgKi8NCj4gKyAgYXNtICgiaW5saW5lZF90cmFtcG9saW5lX2xhYmVsOiAuZ2xv YmwgaW5saW5lZF90cmFtcG9saW5lX2xhYmVsIik7DQo+ICsgICsrZ2xvYmFsX3ZhcjsJCQkJCS8q IGlubGluZWRfdHJhbXBvbGluZSBhZGQgKi8NCj4gKyAgYXNtICgiaW5saW5lZF90cmFtcG9saW5l X2xhYmVsMjogLmdsb2JsIGlubGluZWRfdHJhbXBvbGluZV9sYWJlbDIiKTsNCj4gKyAgcmV0dXJu IHRhcmdldCAoKTsJCQkJLyogaW5saW5lZF90cmFtcG9saW5lIHRhcmdldCBjYWxsICovDQo+ICt9 CQkJCQkJLyogaW5saW5lZF90cmFtcG9saW5lIGVuZCAqLw0KPiArDQo+ICtpbnQgX19hdHRyaWJ1 dGVfXyAoKG5vaW5saW5lKSkNCj4gK2NoYWluZWRfdHJhbXBvbGluZSAoKQ0KPiArewkJCQkJCS8q IGNoYWluZWRfdHJhbXBvbGluZSBwcm9sb2d1ZSAqLw0KPiArICBhc20gKCJjaGFpbmVkX3RyYW1w b2xpbmVfbGFiZWw6IC5nbG9ibCBjaGFpbmVkX3RyYW1wb2xpbmVfbGFiZWwiKTsNCj4gKyAgKytn bG9iYWxfdmFyOw0KPiArICByZXR1cm4gdHJhbXBvbGluZSAoKTsJCQkJLyogY2hhaW5lZF90cmFt cG9saW5lIHRyYW1wb2xpbmUgY2FsbCAqLw0KPiArfQkJCQkJCS8qIGNoYWluZWRfdHJhbXBvbGlu ZSBlbmQgKi8NCj4gKw0KPiAraW50IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ICtkb3Vi bHlfY2hhaW5lZF90cmFtcG9saW5lICgpDQo+ICt7CQkJCQkJLyogZG91Ymx5X2NoYWluZWRfdHJh bXBvbGluZSBwcm9sb2d1ZSAqLw0KPiArICBhc20gKCJkb3VibHlfY2hhaW5lZF90cmFtcG9saW5l X2xhYmVsOiAuZ2xvYmwgDQo+ICtkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lX2xhYmVsIik7DQo+ ICsgICsrZ2xvYmFsX3ZhcjsNCj4gKyAgcmV0dXJuIGNoYWluZWRfdHJhbXBvbGluZSAoKTsJCQkv KiBkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lIGNoYWluZWRfdHJhbXBvbGluZSBjYWxsICovDQo+ ICt9CQkJCQkJLyogZG91Ymx5X2NoYWluZWRfdHJhbXBvbGluZSBlbmQgKi8NCj4gKw0KPiAraW50 DQo+ICttYWluICgpCQkJCQkJLyogbWFpbiBkZWNsIGxpbmUgKi8NCj4gK3sJCQkJCQkvKiBtYWlu IHByb2xvZ3VlICovDQo+ICsgIGludCBhbnM7DQo+ICsgIGFzbSAoIm1haW5fbGFiZWw6IC5nbG9i bCBtYWluX2xhYmVsIik7DQo+ICsgIGdsb2JhbF92YXIgPSAwOwkJCQkvKiBtYWluIHNldCBnbG9i YWxfdmFyICovDQo+ICsgIGFzbSAoIm1haW5fbGFiZWwyOiAuZ2xvYmwgbWFpbl9sYWJlbDIiKTsN Cj4gKyAgYW5zID0gaW5saW5lZF90cmFtcG9saW5lICgpOwkJCS8qIG1haW4gY2FsbCBpbmxpbmVk X3RyYW1wb2xpbmUgKi8NCj4gKyAgYXNtICgibWFpbl9sYWJlbDM6IC5nbG9ibCBtYWluX2xhYmVs MyIpOw0KPiArICBhbnMgPSB0cmFtcG9saW5lICgpOwkJCQkvKiBtYWluIGNhbGwgdHJhbXBvbGlu ZSAqLw0KPiArICBhc20gKCJtYWluX2xhYmVsNDogLmdsb2JsIG1haW5fbGFiZWw0Iik7DQo+ICsg IGFucyA9IGNoYWluZWRfdHJhbXBvbGluZSAoKTsJCQkvKiBtYWluIGNhbGwgY2hhaW5lZF90cmFt cG9saW5lICovDQo+ICsgIGFzbSAoIm1haW5fbGFiZWw1OiAuZ2xvYmwgbWFpbl9sYWJlbDUiKTsN Cj4gKyAgYW5zID0gZG91Ymx5X2NoYWluZWRfdHJhbXBvbGluZSAoKTsJCS8qIG1haW4gY2FsbCBk b3VibHlfY2hhaW5lZF90cmFtcG9saW5lICovDQo+ICsgIGFzbSAoIm1haW5fbGFiZWw2OiAuZ2xv YmwgbWFpbl9sYWJlbDYiKTsNCj4gKyAgcmV0dXJuIGFuczsJCQkJCS8qIG1haW4gY2FsbCByZXR1 cm4gKi8NCj4gK30JCQkJCQkvKiBtYWluIGVuZCAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5leHAgDQo+IGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10cmFtcG9saW5lcy5leHANCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjY3ZWVjMmI1NTQwDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1mdW5jdGlvbi10 cmFtcG9saW5lcy5leHANCj4gQEAgLTAsMCArMSwyNDUgQEANCj4gKyMgQ29weXJpZ2h0IDIwMjMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICsNCj4gKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciANCj4gK21vZGlm eSAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgDQo+ICtwdWJsaXNoZWQgYnkgIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSANCj4gK0xpY2Vuc2UsIG9yICMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyMNCj4gKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICMgDQo+ICtidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAjIA0KPiAr TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSAjIEdOVSANCj4gK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4gKyMNCj4gKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgIyANCj4gK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KPiArDQo+ICsjIFRoaXMg dGVzdCBjaGVja3MgR0RCJ3MgaGFuZGxpbmcgb2YgZnVuY3Rpb25zL2lubGluZWQgZnVuY3Rpb25z IA0KPiArbWFya2VkICMgRFdfQVRfdHJhbXBvbGluZSBieSB0aGUgY29tcGlsZXIuICBBIGZ1bmN0 aW9uIG1hcmtlZCBhcyANCj4gK3RyYW1wb2xpbmUgc2hvdWxkICMgZ2VuZXJhbGx5IGJlIGhpZGRl biBmcm9tIHRoZSB1c2VyLiAgV2UgY2hlY2sgDQo+ICt3aGV0aGVyIHdlIGNhbiBzdGVwIHRocm91 Z2ggIyB0cmFtcG9saW5lcy4gIEV2ZXJ5IHRyYW1wb2xpbmUgaXMgDQo+ICtkZWZpbmVkIHVzaW5n IGEgZGlmZmVyZW50IHR5cGUgZm9yIGl0cyAjIHRhcmdldDogYSBzdHJpbmcsIGFuIGFkZHJlc3Ms IGEgRElFIHJlZmVyZW5jZSBvciBhIGZsYWcuDQo+ICsjIFNldHRpbmcgc2tpcC10cmFtcG9saW5l LWZ1bmN0aW9ucyB0byBmYWxzZSBpbnNpZGUgR0RCIHNob3VsZCBtYWtlIA0KPiAraXQgcmV0dXJu ICMgdG8gaXRzICdub3JtYWwnIGJlaGF2aW9yLCBpZ25vcmUgdGhlIERXX0FUX3RyYW1wb2xpbmUs IA0KPiArYW5kIHNraXAgYWxsIG9mIHRoZSAjIG5vbi1pbmxpbmVkIHRyYW1wb2xpbmUgY2FsbHMg KGFzIHRoZWlyIERJRXMgDQo+ICtkb24ndCBoYXZlIGFueSBzb3VyY2UgIyBpbmZvcm1hdGlvbiku DQo+ICsNCj4gK2xvYWRfbGliIGR3YXJmLmV4cA0KPiArDQo+ICsjIFRoaXMgdGVzdCBjYW4gb25s eSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuDQo+ ICtpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsNCj4gKyAgICByZXR1cm4gMA0KPiArfQ0KPiArDQo+ ICtzdGFuZGFyZF90ZXN0ZmlsZSAuYyAuUw0KPiArDQo+ICtzZXQgYXNtX2ZpbGUgW3N0YW5kYXJk X291dHB1dF9maWxlICRzcmNmaWxlMl0gRHdhcmY6OmFzc2VtYmxlIA0KPiArJGFzbV9maWxlIHsN Cj4gKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBzcmNmaWxlDQo+ICsgICAgZGVjbGFyZV9sYWJl bHMgbGluZXNfbGFiZWwgdHJhbXBvbGluZV9sYWJlbA0KPiArDQo+ICsgICAgZ2V0X2Z1bmNfaW5m byB0YXJnZXQNCj4gKyAgICBnZXRfZnVuY19pbmZvIHRyYW1wb2xpbmUNCj4gKyAgICBnZXRfZnVu Y19pbmZvIGNoYWluZWRfdHJhbXBvbGluZQ0KPiArICAgIGdldF9mdW5jX2luZm8gZG91Ymx5X2No YWluZWRfdHJhbXBvbGluZQ0KPiArICAgIGdldF9mdW5jX2luZm8gbWFpbg0KPiArDQo+ICsgICAg c2V0IHRhcmdldF9kZWNsX2xpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgInRhcmdldCBkZWNsIGxp bmUiXQ0KPiArICAgIHNldCBtYWluX2RlY2xfbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFp biBkZWNsIGxpbmUiXQ0KPiArICAgIHNldCBtYWluX2NhbGxfaW5saW5lZF90cmFtcG9saW5lX2xp bmUgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1haW4gDQo+ICsgY2FsbCBpbmxpbmVkX3RyYW1wb2xp bmUiXQ0KPiArDQo+ICsgICAgY3Uge30gew0KPiArCWNvbXBpbGVfdW5pdCB7DQo+ICsJICAgIHts YW5ndWFnZSBARFdfTEFOR19DfQ0KPiArCSAgICB7bmFtZSBkdzItZnVuY3Rpb24tdHJhbXBvbGlu ZXMuY30NCj4gKwkgICAge2xvd19wYyAwIGFkZHJ9DQo+ICsJICAgIHtzdG10X2xpc3QgJHtsaW5l c19sYWJlbH0gRFdfRk9STV9zZWNfb2Zmc2V0fQ0KPiArCX0gew0KPiArCSAgICBzdWJwcm9ncmFt IHsNCj4gKwkJe25hbWUgdGFyZ2V0fQ0KPiArCQl7bG93X3BjICR0YXJnZXRfc3RhcnQgYWRkcn0N Cj4gKwkJe2hpZ2hfcGMgIiR0YXJnZXRfc3RhcnQgKyAkdGFyZ2V0X2xlbiIgYWRkcn0NCj4gKwkJ e2RlY2xfZmlsZSAxIGRhdGExfQ0KPiArCQl7ZGVjbF9saW5lICR0YXJnZXRfZGVjbF9saW5lIGRh dGExfQ0KPiArCSAgICB9DQo+ICsJICAgICMgVGhlICd0cmFtcG9saW5lJyBzdWJwcm9ncmFtIGRl Y2xhcmVzIGl0cyB0YXJnZXQgYnkgbmFtZS4NCj4gKwkgICAgdHJhbXBvbGluZV9sYWJlbDogc3Vi cHJvZ3JhbSB7DQo+ICsJCSAgICB7bmFtZSB0cmFtcG9saW5lfQ0KPiArCQkgICAge2xvd19wYyAk dHJhbXBvbGluZV9zdGFydCBhZGRyfQ0KPiArCQkgICAge2hpZ2hfcGMgIiR0cmFtcG9saW5lX3N0 YXJ0ICsgJHRyYW1wb2xpbmVfbGVuIiBhZGRyfQ0KPiArCQkgICAge3RyYW1wb2xpbmUgdGFyZ2V0 IHN0cmluZ30NCj4gKwkJfQ0KPiArCSAgICAjIFRoZSAnY2hhaW5lZF90cmFtcG9saW5lJyBzdWJw cm9ncmFtIGRlY2xhcmVzIGl0cyB0YXJnZXQgYXMgZGllDQo+ICsJICAgICMgcmVmZXJlbmNlLg0K PiArCSAgICBzdWJwcm9ncmFtIHsNCj4gKwkJe25hbWUgY2hhaW5lZF90cmFtcG9saW5lfQ0KPiAr CQl7bG93X3BjICRjaGFpbmVkX3RyYW1wb2xpbmVfc3RhcnQgYWRkcn0NCj4gKwkJe2hpZ2hfcGMg IiRjaGFpbmVkX3RyYW1wb2xpbmVfc3RhcnQgKyAkY2hhaW5lZF90cmFtcG9saW5lX2xlbiIgYWRk cn0NCj4gKwkJe3RyYW1wb2xpbmUgJSR0cmFtcG9saW5lX2xhYmVsfQ0KPiArCSAgICB9DQo+ICsJ ICAgICMgVGhlICdkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lJyBzdWJwcm9ncmFtIGRlY2xhcmVz IG5vIHRhcmdldC4NCj4gKwkgICAgIyBJdHMgRFdfQVRfdHJhbXBvbGluZSBpcyBhIGZsYWcgc2V0 IHRvIHRydWUuDQo+ICsJICAgIHN1YnByb2dyYW0gew0KPiArCQl7bmFtZSBkb3VibHlfY2hhaW5l ZF90cmFtcG9saW5lfQ0KPiArCQl7bG93X3BjICRkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lX3N0 YXJ0IGFkZHJ9DQo+ICsJCXtoaWdoX3BjICIkZG91Ymx5X2NoYWluZWRfdHJhbXBvbGluZV9zdGFy dCArICRkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lX2xlbiIgYWRkcn0NCj4gKwkJe3RyYW1wb2xp bmUgMSBmbGFnfQ0KPiArCSAgICB9DQo+ICsJICAgIHN1YnByb2dyYW0gew0KPiArCQl7ZXh0ZXJu YWwgMSBmbGFnfQ0KPiArCQl7bmFtZSBtYWlufQ0KPiArCQl7bWFpbl9zdWJwcm9ncmFtIDEgZmxh Z30NCj4gKwkJe2xvd19wYyAkbWFpbl9zdGFydCBhZGRyfQ0KPiArCQl7aGlnaF9wYyAiJG1haW5f c3RhcnQgKyAkbWFpbl9sZW4iIGFkZHJ9DQo+ICsJCXtkZWNsX2ZpbGUgMSBkYXRhMX0NCj4gKwkJ e2RlY2xfbGluZSAkbWFpbl9kZWNsX2xpbmUgZGF0YTF9DQo+ICsJICAgIH0gew0KPiArCQkjIFRo ZSAnaW5saW5lZF90cmFtcG9saW5lJyBzdWJyb3V0aW5lIGRlY2xhcmVzIGl0cyB0YXJnZXQgYXMN Cj4gKwkJIyBhbiBhZGRyZXNzLg0KPiArCQlpbmxpbmVkX3N1YnJvdXRpbmUgew0KPiArCQkgICAg e25hbWUgaW5saW5lZF90cmFtcG9saW5lfQ0KPiArCQkgICAge2xvd19wYyBtYWluX2xhYmVsMiBh ZGRyfQ0KPiArCQkgICAge2hpZ2hfcGMgbWFpbl9sYWJlbDMgYWRkcn0NCj4gKwkJICAgIHt0cmFt cG9saW5lICR0YXJnZXRfc3RhcnQgYWRkcn0NCj4gKwkJICAgIHtjYWxsX2ZpbGUgMSBkYXRhMX0N Cj4gKwkJICAgIHtjYWxsX2xpbmUgJG1haW5fY2FsbF9pbmxpbmVkX3RyYW1wb2xpbmVfbGluZSBk YXRhMX0NCj4gKwkJfQ0KPiArCSAgICB9DQo+ICsJfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIGxp bmVzIHt2ZXJzaW9uIDJ9IGxpbmVzX2xhYmVsIHsNCj4gKwlpbmNsdWRlX2RpciAiJHtzcmNkaXJ9 LyR7c3ViZGlyfSINCj4gKwlmaWxlX25hbWUgIiRzcmNmaWxlIiAxDQo+ICsNCj4gKwlwcm9ncmFt IHsNCj4gKwkgICAgRFdfTE5FX3NldF9hZGRyZXNzICRtYWluX3N0YXJ0DQo+ICsJICAgIGxpbmUg W2dkYl9nZXRfbGluZV9udW1iZXIgIm1haW4gc2V0IGdsb2JhbF92YXIiXQ0KPiArCSAgICBEV19M TlNfY29weQ0KPiArCSAgICBEV19MTkVfc2V0X2FkZHJlc3MgbWFpbl9sYWJlbA0KPiArCSAgICBs aW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYWluIHNldCBnbG9iYWxfdmFyIl0NCj4gKwkgICAg RFdfTE5TX2NvcHkNCj4gKwkgICAgRFdfTE5FX3NldF9hZGRyZXNzIG1haW5fbGFiZWwyDQo+ICsJ ICAgIGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1haW4gY2FsbCBpbmxpbmVkX3RyYW1wb2xp bmUiXQ0KPiArCSAgICBEV19MTlNfY29weQ0KPiArCSAgICBEV19MTkVfc2V0X2FkZHJlc3MgaW5s aW5lZF90cmFtcG9saW5lX2xhYmVsDQo+ICsJICAgIGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIg ImlubGluZWRfdHJhbXBvbGluZSBhZGQiXQ0KPiArCSAgICBEV19MTlNfY29weQ0KPiArCSAgICBE V19MTkVfc2V0X2FkZHJlc3MgaW5saW5lZF90cmFtcG9saW5lX2xhYmVsMg0KPiArCSAgICBsaW5l IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpbmxpbmVkX3RyYW1wb2xpbmUgdGFyZ2V0IGNhbGwiXQ0K PiArCSAgICBEV19MTlNfY29weQ0KPiArCSAgICBEV19MTkVfc2V0X2FkZHJlc3MgbWFpbl9sYWJl bDMNCj4gKwkgICAgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFpbiBjYWxsIHRyYW1wb2xp bmUiXQ0KPiArCSAgICBEV19MTlNfY29weQ0KPiArCSAgICBEV19MTkVfc2V0X2FkZHJlc3MgbWFp bl9sYWJlbDQNCj4gKwkgICAgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFpbiBjYWxsIGNo YWluZWRfdHJhbXBvbGluZSJdDQo+ICsJICAgIERXX0xOU19jb3B5DQo+ICsJICAgIERXX0xORV9z ZXRfYWRkcmVzcyBtYWluX2xhYmVsNQ0KPiArCSAgICBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJtYWluIGNhbGwgZG91Ymx5X2NoYWluZWRfdHJhbXBvbGluZSJdDQo+ICsJICAgIERXX0xOU19j b3B5DQo+ICsJICAgIERXX0xORV9zZXRfYWRkcmVzcyBtYWluX2xhYmVsNg0KPiArCSAgICBsaW5l IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYWluIGNhbGwgcmV0dXJuIl0NCj4gKwkgICAgRFdfTE5T X2NvcHkNCj4gKwkgICAgRFdfTE5FX3NldF9hZGRyZXNzICRtYWluX2VuZA0KPiArCSAgICBEV19M TkVfZW5kX3NlcXVlbmNlDQo+ICsNCj4gKwkgICAgRFdfTE5FX3NldF9hZGRyZXNzICR0YXJnZXRf c3RhcnQNCj4gKwkgICAgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAidGFyZ2V0IHByb2xvZ3Vl Il0NCj4gKwkgICAgRFdfTE5TX25lZ2F0ZV9zdG10DQo+ICsJICAgIERXX0xOU19jb3B5DQo+ICsJ ICAgIERXX0xORV9zZXRfYWRkcmVzcyB0YXJnZXRfbGFiZWwNCj4gKwkgICAgbGluZSBbZ2RiX2dl dF9saW5lX251bWJlciAidGFyZ2V0IGFkZCJdDQo+ICsJICAgIERXX0xOU19uZWdhdGVfc3RtdA0K PiArCSAgICBEV19MTlNfY29weQ0KPiArCSAgICBEV19MTkVfc2V0X2FkZHJlc3MgdGFyZ2V0X2xh YmVsMg0KPiArCSAgICBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0YXJnZXQgcmV0dXJuIl0N Cj4gKwkgICAgRFdfTE5TX2NvcHkNCj4gKwkgICAgRFdfTE5FX3NldF9hZGRyZXNzICR0YXJnZXRf ZW5kDQo+ICsJICAgIERXX0xORV9lbmRfc2VxdWVuY2UNCj4gKwl9DQo+ICsgICAgfQ0KPiArfQ0K PiArDQo+ICtpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgImZhaWxlZCB0byBwcmVwYXJlIiAke3Rl c3RmaWxlfSBcDQo+ICsJW2xpc3QgJHNyY2ZpbGUgJGFzbV9maWxlXSB7bm9kZWJ1ZyBhZGRpdGlv bmFsX2ZsYWdzPS1PMH1dfSB7DQo+ICsgICAgcmV0dXJuIC0xDQo+ICt9DQo+ICsNCj4gK3NldCB0 YXJnZXRfZmlyc3RfbGluZV9wYXR0ZXJuICIuKnRhcmdldCBhZGQuKiINCj4gK3NldCB0YXJnZXRf c2Vjb25kX2xpbmVfcGF0dGVybiAiLip0YXJnZXQgcmV0dXJuLioiDQo+ICsNCj4gK2lmICFbcnVu dG9fbWFpbl0gew0KPiArICAgIHJldHVybiAtMQ0KPiArfQ0KPiArDQo+ICtnZGJfdGVzdCAic2hv dyBza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25zIiBcDQo+ICsgICAgIlNraXBwaW5nIHRyYW1wb2xp bmUgZnVuY3Rpb25zIGlzIG9uXC4iIFwNCj4gKyAgICAiY2hlY2sgc2tpcC10cmFtcG9saW5lLWZ1 bmN0aW9ucyBpcyBlbmFibGVkIg0KPiArDQo+ICt3aXRoX3Rlc3RfcHJlZml4ICJ3aXRoIHRyYW1w b2xpbmUgaGFuZGxpbmciIHsNCj4gKyAgICBmb3JlYWNoIHt0cmFtcG9saW5lIHJldHVybl9saW5l fSB7ICJpbmxpbmVkX3RyYW1wb2xpbmUiICJ0cmFtcG9saW5lIiBcDQo+ICsJInRyYW1wb2xpbmUi ICJjaGFpbmVkX3RyYW1wb2xpbmUiIFwNCj4gKwkiY2hhaW5lZF90cmFtcG9saW5lIiAiZG91Ymx5 X2NoYWluZWRfdHJhbXBvbGluZSIgfSB7DQo+ICsNCj4gKwlnZGJfdGVzdCAicyIgIiR0YXJnZXRf Zmlyc3RfbGluZV9wYXR0ZXJuIiAic3RlcCB0aHJvdWdoICR0cmFtcG9saW5lIg0KPiArCWdkYl90 ZXN0ICJzIiAiJHRhcmdldF9zZWNvbmRfbGluZV9wYXR0ZXJuIiBcDQo+ICsJICAgICJzdGVwIHRh cmdldCBzZWNvbmQgbGluZSBmcm9tICR0cmFtcG9saW5lIg0KPiArCWdkYl90ZXN0ICJzIiAiLipt YWluIGNhbGwgJHJldHVybl9saW5lLioiIFwNCj4gKwkgICAgInN0ZXAgYmFjayB0aHJvdWdoICR0 cmFtcG9saW5lIg0KPiArICAgIH0NCj4gKw0KPiArICAgICMgVGhlIGRvdWJseV9jaGFpbmVkX3Ry YW1wb2xpbmUgaGFzIG9ubHkgYmVlbiBtYXJrZWQgYXMgdHJhbXBvbGluZSBidXQgbm8NCj4gKyAg ICAjIHRhcmdldCB3YXMgZ2l2ZW4uICBJbiB0aGlzIGNhc2UgR0RCIHN0ZXBzIGludG8gdGhlIHRy YW1wb2xpbmUgYW5kIHRoZW4NCj4gKyAgICAjIGNvbnRpbnVlcyB1bnRpbCB0aGUgdHJhbXBvbGlu ZSBzZWN0aW9uIGlzIGxlZnQgYWdhaW4uDQo+ICsNCj4gKyAgICAjIFdoZW4gY29tcGlsZWQgd2l0 aCBnY2MgNy41IChhbmQgcG9zc2libHkgb3RoZXJzKSBvbiBhIDMyIGJpdCBzeXN0ZW0sIHRoZQ0K PiArICAgICMgdHJhbXBvbGluZSBmdW5jdGlvbiBjb250YWlucyBhIGNhbGwgdG8gX194ODYuZ2V0 X3BjX3RodW5rLmF4IGJlZm9yZSB0aGUNCj4gKyAgICAjIGFjdHVhbCB0YXJnZXQgY2FsbC4gIFNv LCB3ZSBlbmQgdXAgaW4gX194ODYuZ2V0X3BjX3RodW5rLmF4LiAgSXNzdWluZyBhDQo+ICsgICAg IyBzZWNvbmQgc3RlcCBjb21tYW5kIHdpbGwgcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uIGNhbGwg YmFjayBpbnRvIHRoZQ0KPiArICAgICMgdHJhbXBvbGluZSBhbmQgZ28gb24gaW5zaWRlIHRoZSB0 cmFtcG9saW5lIHRvd2FyZHMgdGhlIGFjdHVhbCB0YXJnZXQgY2FsbC4NCj4gKyAgICAjIE9uIG90 aGVyIHRhcmdldHMgd2Ugc3RlcCBkaXJlY3RseSB0b3dhcmRzIHRoZSB0YXJnZXQgY2FsbC4NCj4g KyAgICBnZGJfdGVzdF9tdWx0aXBsZSAicyIgInN0ZXAgdGhyb3VnaCBkb3VibGVfY2hhaW5lZF90 cmFtcG9saW5lIiB7DQo+ICsJLXJlIC13cmFwICIkdGFyZ2V0X2ZpcnN0X2xpbmVfcGF0dGVybiIg ew0KPiArCSAgICBwYXNzICRnZGJfdGVzdF9uYW1lDQo+ICsJfQ0KPiArCS1yZSAtd3JhcCAiLipf X3g4Ni5nZXRfcGNfdGh1bmsuYXguKiIgew0KPiArCSAgICBnZGJfdGVzdCAicyIgIiR0YXJnZXRf Zmlyc3RfbGluZV9wYXR0ZXJuIiBcDQo+ICsJCSJzdGVwIHRocm91Z2ggZG91YmxlX2NoYWluZWRf dHJhbXBvbGluZSAybmQgdHJ5Ig0KPiArCX0NCj4gKyAgICB9DQo+ICsgICAgZ2RiX3Rlc3QgInMi ICIkdGFyZ2V0X3NlY29uZF9saW5lX3BhdHRlcm4iIFwNCj4gKwkic3RlcCB0YXJnZXQgc2Vjb25k IGxpbmUgZnJvbWRvdWJseV9jaGFpbmVkX3RyYW1wb2xpbmUiDQo+ICsgICAgZ2RiX3Rlc3QgInMi ICIuKm1haW4gY2FsbCByZXR1cm4uKiIgXA0KPiArCSJzdGVwIGJhY2sgdGhyb3VnaCBkb3VibHlf Y2hhaW5lZF90cmFtcG9saW5lIg0KPiArfQ0KPiArDQo+ICtjbGVhbl9yZXN0YXJ0ICR7dGVzdGZp bGV9DQo+ICsNCj4gK2lmICFbcnVudG9fbWFpbl0gew0KPiArICAgIHJldHVybiAtMQ0KPiArfQ0K PiArDQo+ICtnZGJfdGVzdF9ub19vdXRwdXQgInNldCBza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25z IG9mZiIgXA0KPiArICAgICJkaXNhYmxlIHRyYW1wb2xpbmUgaGFuZGxpbmciDQo+ICtnZGJfdGVz dCAic2hvdyBza2lwLXRyYW1wb2xpbmUtZnVuY3Rpb25zIiBcDQo+ICsgICAgIlNraXBwaW5nIHRy YW1wb2xpbmUgZnVuY3Rpb25zIGlzIG9mZi4iIFwNCj4gKyAgICAiY2hlY2sgc2tpcC10cmFtcG9s aW5lLWZ1bmN0aW9ucyBpcyBkaXNhYmxlZCINCj4gKw0KPiArd2l0aF90ZXN0X3ByZWZpeCAid2l0 aG91dCB0cmFtcG9saW5lIGhhbmRsaW5nIiB7DQo+ICsgICAgZ2RiX3Rlc3QgInMiICIuKm1haW4g Y2FsbCBpbmxpbmVkX3RyYW1wb2xpbmUuKiINCj4gKyAgICBnZGJfdGVzdCAicyIgIi4qaW5saW5l ZF90cmFtcG9saW5lIGFkZC4qIiBcDQo+ICsJInN0ZXAgaW50byBpbmxpbmVkX3RyYW1wb2xpbmUg d2l0aCBza2lwLXRyYW1wb2xpbmUgb2ZmIg0KPiArICAgIGdkYl90ZXN0ICJzIiAiLippbmxpbmVk X3RyYW1wb2xpbmUgdGFyZ2V0IGNhbGwuKiIgXA0KPiArCSJzdGVwIGluIGlubGluZWRfdHJhbXBv bGluZSB3aXRoIHNraXAtdHJhbXBvbGluZSBvZmYiDQo+ICsgICAgZ2RiX3Rlc3QgInMiICIkdGFy Z2V0X2ZpcnN0X2xpbmVfcGF0dGVybiIgXA0KPiArCSJzdGVwIGludG8gdGFyZ2V0IHdpdGggc2tp cC10cmFtcG9saW5lIG9mZiINCj4gKyAgICBnZGJfdGVzdCAicyIgIiR0YXJnZXRfc2Vjb25kX2xp bmVfcGF0dGVybiIgXA0KPiArCSJzdGVwIHNlY29uZCBsaW5lIGluIHRhcmdldCB3aXRoIHNraXAt dHJhbXBvbGluZSBvZmYiDQo+ICsgICAgZ2RiX3Rlc3QgInMiICIuKm1haW4gY2FsbCB0cmFtcG9s aW5lLioiIFwNCj4gKwkic3RlcCBicmFjayBmcm9tIHRhcmdldCB3aXRoIHNraXAtdHJhbXBvbGlu ZSBvZmYiDQo+ICsgICAgZ2RiX3Rlc3QgInMiICIuKm1haW4gY2FsbCBjaGFpbmVkX3RyYW1wb2xp bmUuKiIgXA0KPiArCSJza2lwIHRyYW1wb2xpbmUgY2FsbCB3aXRoIG5vIGxpbmUgaW5mbyINCj4g KyAgICBnZGJfdGVzdCAicyIgIi4qbWFpbiBjYWxsIGRvdWJseV9jaGFpbmVkX3RyYW1wb2xpbmUu KiIgXA0KPiArCSJza2lwIGNoYWluZWRfdHJhbXBvbGluZSBjYWxsIHdpdGggbm8gbGluZSBpbmZv Ig0KPiArICAgIGdkYl90ZXN0ICJzIiAiLiptYWluIGNhbGwgcmV0dXJuLioiIFwNCj4gKwkic2tp cCBkb3VibHlfY2hhaW5lZF90cmFtcG9saW5lIGNhbGwgd2l0aCBubyBsaW5lIGluZm8iDQo+ICt9 DQoNCkludGVsIERldXRzY2hsYW5kIEdtYkgKUmVnaXN0ZXJlZCBBZGRyZXNzOiBBbSBDYW1wZW9u IDEwLCA4NTU3OSBOZXViaWJlcmcsIEdlcm1hbnkKVGVsOiArNDkgODkgOTkgODg1My0wLCB3d3cu aW50ZWwuZGUgPGh0dHA6Ly93d3cuaW50ZWwuZGU+Ck1hbmFnaW5nIERpcmVjdG9yczogQ2hyaXN0 aW4gRWlzZW5zY2htaWQsIFNoYXJvbiBIZWNrLCBUaWZmYW55IERvb24gU2lsdmEgIApDaGFpcnBl cnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUKUmVnaXN0ZXJlZCBPZmZp Y2U6IE11bmljaApDb21tZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIg MTg2OTI4Cg==