From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.86]) by mx.groups.io with SMTP id smtpd.web12.30225.1657553532116080916 for ; Mon, 11 Jul 2022 08:32:12 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=A5lcjK7L; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.93.86, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZZTdAgcddD7S4RUnPW39SdTdtR9wTe+N5JIwbcxddk+6PUHbf9DhiJ/sDNAHwn9yniihV7Fvu2Ii4G3kWFJU8zsny1ICONiX6SWUyQUlbyEyaaQfVEO3yGI5awwcZgVBgbuWfO1IiyJtd9v0wfoOtI9R3004rDHr2QhO6swBBmXn6uq4u/0ohPk58lch3M95uNH9UWhtlaB1a5/2JRyHecTZGhwVcqoQg5+oB6Bffst1ELIfuBa57BSfc6OhN1dalRACJD/VPfgDhq4mUvAzup7EPg/mvyM4aA1eaqSxBb7r6JYIJItkOVQOEMcDoZcqdfJgycb+kjpjlV4HeITnhQ== 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=5jYlwP9nCHDyjtbxWjKs291ujNO8JRB7enOzWvaOu38=; b=ml8+VploxKbKgmlkcCU7at5LL44gi1KFdrmM7XF6R/3CWTKYYGJPXwwGAiLn/OcgeNDG3abzyY8mqOdMmJG6cRuwjkLhdgJXfk3Y+L/6mxvA+mY3Z9+2eVLUF5zHO6KKiBczpvxkCQvfKjbJ6FqXk2QoWkVccH0tywtnCKHycjeuTc3xIQDK9AKf4KkbmHa07ayVs+6LKkJUshLfTof1gOS+eI97Oann8PbzI0M2b3a/Mn0rN7p61HxRfLN6e7aXvi8NmC+vbXEfE9sr34GRbLnsIc3trk9qMWS0YAbJzzrRRNAe6srMTx/ngUqBbwiJDp38gSMUKHkO8NPUP1cWNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5jYlwP9nCHDyjtbxWjKs291ujNO8JRB7enOzWvaOu38=; b=A5lcjK7LJDlX3c00KZ/goxayNCGqCcJvmUD2zP7SYqRPLzssm5VQQNvSMvlSFDl8OoBeDZuWoA4qbm4GFRFzNf5+0HjgsP4ms7U1iPU5CPtBVGb0juOufhn/N0OWzfLRGvAr48u0E7gJSy8cBSju7+uIDSvOVHeScmA/6c5aKhZJjCv86FcFcAKaXKLYlkJCQWu/ylbzxc+kvnUA8j2i3uzbPDitemY+4mP1Mxc136/tmakbOYaQFWtqgi0Qb+SAjVvVmwoQVD5WguDnaEbnxJ9CC1QuHZPUJzZEc8crmGjd2ml4tU57M+/DoFHN0fYrQqzkPEZ7snla+eNnP56hfQ== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by BY5PR12MB3780.namprd12.prod.outlook.com (2603:10b6:a03:1a2::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.23; Mon, 11 Jul 2022 15:32:05 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::d94:9d75:d614:372]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::d94:9d75:d614:372%8]) with mapi id 15.20.5417.020; Mon, 11 Jul 2022 15:32:05 +0000 From: "Jeff Brasen" To: Pierre Gondois , "devel@edk2.groups.io" CC: "Sami.Mujawar@arm.com" , "Alexei.Fedorov@arm.com" Subject: Re: [PATCH 4/4] DynamicTablesPkg: AcpiSsdtPcieLibArm: Add support for override protocol Thread-Topic: [PATCH 4/4] DynamicTablesPkg: AcpiSsdtPcieLibArm: Add support for override protocol Thread-Index: AQHYjUfDP1zhR9Gb8EiYN5lFv8RPlK1pqYRAgARBXgCABrg8AIAEsKUAgAAHuQA= Date: Mon, 11 Jul 2022 15:32:05 +0000 Message-ID: References: <45abcaa79586b025205269d17957537d613c9bc2.1656603839.git.jbrasen@nvidia.com> <40d296fe-1208-c217-8a48-6a37cf242c46@arm.com> In-Reply-To: <40d296fe-1208-c217-8a48-6a37cf242c46@arm.com> Accept-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=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9c81a91d-cfa6-48c2-e7b5-08da635282b5 x-ms-traffictypediagnostic: BY5PR12MB3780:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xZVqMIKhWYjih37g8VKw9sNp1GU4QPHmn3/ru2t37X/1wjniHJr2BmdIctofamAfglfFL0Of/4iPGoRAPIFgN3ovWetd611uQidixlfMtCjxvlV8ZCpda8bTzqvdy/F+siKbk6QqNyDiXAkkZH0L3bQruZAXmCMDaOmzD26LN33fJmkoELsGzm2U8b5WXe+xRa5+k+4ZqLJQMXyebPHDMLQ8VYe+ChqXT4w9gO+JrM9xWOtqNPe2mwGaIoZOFahX81oF6dUZNZUvqzV0jG6Ts1YUMugNt7x0+QW3GBEA/A1dI9ov7DK2jtmGeF0KNppINkX/pU3bzcmgpbLvPlZ8WEYs1OeOuAMe3lXx6pqsw1HptfBE4l3Sbj/ThXbuJYECX6DDX9S9o9WKoZTIxBKp44BP1xOnOaNP8V1J1hDZtagOE1knlQtUlbGxPQJFfOpfUHvOf3vyd8xhgjNrq7Hm7G/AWrVwNg+kSIp7FTl1jQZhiheBfEbhewrAmp0dmYNDy48aIaqkA6S+GayL6m1Gs6jeERycUm4wKkamdWznpziUq9CzGSrKc1K2u676oD/yUW4iJPHbc0S+xr4kBfMmpa4OwhT5Bp1Mppa/5aYBUn8FfHrACNfG3a0P3lcmSn5lRJQY8b7mXHttcbaA//2g3AMqSTI6p75T1jDhb0GhoAOImcefaWcC683rOyNjdFE8F+DdirctvWe5lMiBZWs4zK/zksoRZK1/RIvTReGBHyAgM3NhvxbMpU7n/vXUeJJWO7mprIWXuoe3XiPWoeICm/RultHRcjZIK6gNRDP0/tuM7ZMvqJm1KYKJntQhbhY+jzI6E59lt87ZYI61EaZbkOZbVbl8E2V/FXt88242z7w= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(136003)(376002)(39860400002)(346002)(396003)(52536014)(4326008)(8936002)(6506007)(7696005)(30864003)(54906003)(71200400001)(55016003)(41300700001)(33656002)(38100700002)(110136005)(9686003)(38070700005)(66476007)(2906002)(66446008)(316002)(66946007)(76116006)(66556008)(64756008)(8676002)(53546011)(5660300002)(122000001)(186003)(83380400001)(86362001)(26005)(478600001)(213903007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UU4wR2d6WWtBbjBEOG54Tk03VzJHWUY2WGNsMUxwSWc2cHkzdGNyZ29oaUFE?= =?utf-8?B?M1E1Mkx4cTFuYjZKWDUxNzZIN2JmRDV1VU54M1c1L1poMkZJZ3Q0b3d3c1JJ?= =?utf-8?B?NmJiekNUODJIK2hZSHowZGZ0TkJUeVgzR2lINURTUlM2VlFTcXRwdmRVbUcw?= =?utf-8?B?NDkzQXVGSzRLRThIS3hyV3c2QTIzSWZqVDBucWRkcDlwU0xhK1YvUUZ5SUNr?= =?utf-8?B?OU9TWEpOS3g4MG5aMVhSSGw3ZUo1YVBiazVLZ2JkSnZFZHFvMGRYSCtRVlZu?= =?utf-8?B?b3I4TFoyOFhvV2ZHK1VMMFd0QmdxUzNzaUV0Tyt0M05uK3RvRUF1NXNvanR1?= =?utf-8?B?UkNyc20yRFlXalppTUhRN0RBKzBzT0twdndTWDcwRXJnOTZyNkJ6VFFHejVO?= =?utf-8?B?TzNGUVN0cWtveFQyT01TYmlDWEdDU1BOdWtHYWhOMUwzTzUvcG4zSGtGTXBx?= =?utf-8?B?c1AzZEY4YlpnNFZDcUxEYzgwUFZ4eDk4RWdaOEZyVXNJTGxQTU9LbTRnclFl?= =?utf-8?B?bytBSUZzZkw1SnRCbVNHeStDTUFqTzgzN3hCcnAvV055WWdiZ1lWU2NmaTVS?= =?utf-8?B?eDlEQi8wUS92UDhHbkxKYWRsazBqNk4rNS9jRGhKbktabVo1VldzUktndjRm?= =?utf-8?B?RU5INEFZNzlnTFJHTkRvWElaVCtVR0IyNE52anNYNU1VMkxpSnJBVllMNWVk?= =?utf-8?B?WkpYdVJtVVRoRFFlYnBNSnp0OHIwWnJoNUVhdFR1alE1WkxjekpUcFcraTZD?= =?utf-8?B?MzVmdzVQVC9ac1lIakx4U2wzZTdUYThtSXQyUUEvVnJ0ZmFSMmpjNDFidzBV?= =?utf-8?B?clRrU2RYVHJ5NVY4bDNrWXlaOEtmbFVMVFdPdXVkbU9Yc3VOakg3SXNjQUgr?= =?utf-8?B?Z0tYQ0lZZjVSeWd0aWdpSlo4VUdDcjdyQXBTejBCcFhvUUswdnY3YjJWUTRL?= =?utf-8?B?bmFNOWE4bDRRUW5BTWorNGg0NEFPclNxcklJSHJhU3lPOW1iZC9DWDRMQ05W?= =?utf-8?B?eDFlLzVhc1c4dnErYjBEUWhhTkRGRWNUM0xFS2NkM2dnSzhpQzJpRmhlVmxG?= =?utf-8?B?YUZzeFdONE9DYVppQ0l2a2k1NXNRV1NHYUo3amUwSFc5eG9nSGU1SGpoRUFo?= =?utf-8?B?emFLeit1SGZ1UDNobE5UYS9vcXk2dGRIcnIrZW4veXdvVjh1bFlIeGFKSzUr?= =?utf-8?B?QWtDdjdVNzZmaFJUTmJoOWp5QjViUnJOTGxMRi9hSkNjMmx1andJancxZVFs?= =?utf-8?B?NlZ5ZXlUUmMvTENCemxGc0I1UGdVTWhXUVlnQ1JNRTVCUDdxNGs2bGVFeWlz?= =?utf-8?B?MmNMejUwUmtHSGNRL1pyTjZnVisyd2E1KzRFbUsyZkNrWElOMWJOYUhFdFFN?= =?utf-8?B?eE81eHJqVlFSWlFvME55ZkU0SUdTUS9xRzhGNWZ5TTZPZFh1ZUN0TEQ3azZh?= =?utf-8?B?b3pMaTdibzIwNnRFenZpd1ArM0E0YVNkYkhLSVhZTzV4VmNXSHVlRVRhbGtS?= =?utf-8?B?b0gycEw3SzNySWpZSm9xaEpHenZGZkJBZzF1RjVzelR6eEpLdTk5WDBJU3lM?= =?utf-8?B?TkxLcUNmME95b2I1Snp6Y3N0OHRtRjFvZHVrNFdNUUdRU1JUbGJYNmljYlda?= =?utf-8?B?SWJWVk5DUmhoaklmcXZ0Z3d2Z3lqNndVNVpBVzd1UWZmR0JZbjIvZzBITk1x?= =?utf-8?B?T2xRSE9jcHRCUEF2UDJhTmU4eklIQ2tDYU12VVFnelB1cFlhQXpSNUpUZGFs?= =?utf-8?B?MzdFKzBMWWMzNE5wMzM5M3RMdGlGNXJzVzRPb056MzJRd1BJZFBDeUkzNjB3?= =?utf-8?B?d2FMcmdyb2lteTQ3MXYzckpROG9SS0ZMbmhUeUJLSldJZjE5ZjJEbkZ6MUVr?= =?utf-8?B?QkVpMGZzQzZEUEYxZTluWDcyVSs4SXg3U3ZzaVcrQWdzbUhRVnZZdEUrWnlW?= =?utf-8?B?TUNoZlRReW1VSG51SWJmYkIrMW5rSVZHY2J0em5RS1NpQkR4djRQZmlMdnBv?= =?utf-8?B?d1hmRFRCeWVWVnc4d0o0dVg1MStRVnJJcnNsTE5MYSt2cW9NYk56ek5LdThW?= =?utf-8?B?dktlbTZuT2VhZmhaVW5tc3VXc09iZU9XSEV3b0dpOG9rQUhoQ2QxOUd6aisz?= =?utf-8?Q?WRJq4oebxrwkad/9Tm3c1pWQ7?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c81a91d-cfa6-48c2-e7b5-08da635282b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jul 2022 15:32:05.7305 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: L43eYZOe4eAYkfLrxYjz9guC9G0uzSAV0ue/G0o3HSEyKh8eQT2fmyC3XbjOeFLTE1rFe3Hbk8RVBrKy8FfHdw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3780 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 V2UgYWxzbyBvbiBzb21lIFBDSWUgZGV2aWNlcyBhZGQgYSBkZXZpY2UgZW50cnkgdW5kZXIgRE9P XyB3LyBpdCdzIG93biBfUlNUIGFuZCBfRFNELiBJZiB5b3Ugc2VlIHRoZSB2MyB2ZXJzaW9uIG9m IHRoZSBwYXRjaCB3aGVyZSBJIGFkZCBhIHN1cHBvcnQgbGlicmFyeSB0aGF0IHdlIGNhbiBvdmVy cmlkZSBhbGxvd3MgdXMgdG8gY3VzdG9taXplIHRoZSBkZXZpY2UgYXMgd2UgbmVlZC4gDQoNCi1K ZWZmDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQaWVycmUgR29u ZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gU2VudDogTW9uZGF5LCBKdWx5IDExLCAy MDIyIDk6MDIgQU0NCj4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogU2FtaS5NdWphd2FyQGFybS5jb207IEFsZXhlaS5GZWRv cm92QGFybS5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCA0LzRdIER5bmFtaWNUYWJsZXNQa2c6 IEFjcGlTc2R0UGNpZUxpYkFybTogQWRkDQo+IHN1cHBvcnQgZm9yIG92ZXJyaWRlIHByb3RvY29s DQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRh Y2htZW50cw0KPiANCj4gDQo+IEhlbGxvIEplZmYsDQo+IFRvIGJlIHN1cmUgSSB1bmRlcnN0YW5k IGNvcnJlY3RseSwgdGhlIFNzZHRQY2llR2VuZXJhdG9yIGN1cnJlbnRseSBhbGxvd3MgdG8NCj4g Z2VuZXJhdGUgc29tZXRoaW5nIGxpa2UgdGhpczoNCj4gDQo+IFNjb3BlKF9TQikgew0KPiAgICBE ZXZpY2UoUENJMCkgew0KPiAgICAgIERldmljZSAoRDAwXykgeyAvLyBEZXZpY2UgMA0KPiAgICAg ICAgTmFtZShfQURSLCAweDAwMDBGRkZGKQ0KPiAgICAgIH0NCj4gICAgICBNZXRob2QoX09TQyw0 KSB7DQo+ICAgICAgICBbLi4uXSAvLyBHZW5lcmljIF9PU0MgbWV0aG9kDQo+ICAgICAgfQ0KPiAg ICB9DQo+IH0NCj4gDQo+IFdoYXQgeW91IHdhbnQgdG8gZG8gaXM6DQo+IDEuIFVzZSBhbm90aGVy IF9PU0MgbWV0aG9kDQo+IDIuIEFkZCBtb3JlIGluZm9ybWF0aW9uIGluIHRoZSBEMDBfIG9iamVj dCwgaS5lLjoNCj4gICAgLSBhIF9EU0Qgb2JqZWN0DQo+ICAgIC0gYSBfUlNUIG1ldGhvZA0KPiAz LiBBcyBfUlNUIGlzIGFkZGVkIGluIDIuLCBhbHNvIGFkZCBhIF9SU1QgbWV0aG9kIHRvIFBDSTAN Cj4gDQo+IElzIGl0IGNvcnJlY3QgPyBPciBpcyB0aGVyZSBzb21lIG90aGVyIGluZm9ybWF0aW9u IHlvdSB3YW50IHRvIGFkZCA/DQo+IA0KPiBSZWdhcmRzLA0KPiBQaWVycmUNCj4gDQo+IE9uIDcv OC8yMiAxNzozNiwgSmVmZiBCcmFzZW4gd3JvdGU6DQo+ID4gSSB0aGluayB0aGlzIHdvdWxkIHdv cmsuIEluc3RlYWQgb2YgR2VuZXJhdGVQY2lEZXZpY2VJbmZvIHRoZSBmdW5jdGlvbg0KPiA+IHdl IHdvdWxkIHdhbnQgdG8gYnJlYWsgb3V0IHdvdWxkIGJlIEdlbmVyYXRlUGNpU2xvdHMuIEknbGwg d29yayBvbg0KPiA+IGNoYW5naW5nIG15IHBhdGNoIHNlcmllcyB0byB0aGlzLiBVbmxlc3MgeW91 IGhhdmUgYSBiZXR0ZXIgbmFtZSB3aWxsDQo+ID4gY2FsbCB0aGlzIGxpYnJhcnkgU3NkdFBjaVN1 cHBvcnRMaWIgYW5kIHBsYWNlIGluIHVuZGVyIExpYnJhcnkvQ29tbW9uDQo+ID4NCj4gPiBHb2lu ZyB0byBhbHNvIHBhc3MgUGNpSW5mbyBpbnRvIEFkZE9zY01ldGhvZCBpbiB0aGlzIG5ldyBhcHBy b2FjaCBpbiBjYXNlDQo+IGNsaWVudCBuZWVkcyB0byBoYXZlIGRpZmZlcmVudCBfT1NDIHBlciBj b250cm9sbGVyIChBbmQgdG8gR2VuZXJhdGVQY2lTbG90cw0KPiBhcyB3ZWxsKS4NCj4gPg0KPiA+ IFRoYW5rcywNCj4gPiBKZWZmDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPj4gRnJvbTogUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+DQo+ID4+ IFNlbnQ6IE1vbmRheSwgSnVseSA0LCAyMDIyIDI6NDggQU0NCj4gPj4gVG86IEplZmYgQnJhc2Vu IDxqYnJhc2VuQG52aWRpYS5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogU2Ft aS5NdWphd2FyQGFybS5jb207IEFsZXhlaS5GZWRvcm92QGFybS5jb20NCj4gPj4gU3ViamVjdDog UmU6IFtQQVRDSCA0LzRdIER5bmFtaWNUYWJsZXNQa2c6IEFjcGlTc2R0UGNpZUxpYkFybTogQWRk DQo+ID4+IHN1cHBvcnQgZm9yIG92ZXJyaWRlIHByb3RvY29sDQo+ID4+DQo+ID4+IEV4dGVybmFs IGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4+DQo+ ID4+DQo+ID4+IEhlbGxvIEplZmYsDQo+ID4+IEkgdGhpbmsgaXQgd291bGQgaWRlYWxseSBiZSBi ZXR0ZXIgdG8gaGF2ZSB0aGUgY29kZSBhZGRpbmcvcmVwbGFjaW5nDQo+ID4+IHRoZSBtZXRob2Rz L29iamVjdHMgeW91IG5vdGVkIGluc2lkZSB0aGUgZWRrMi9lZGsyLXBsYXRmb21zDQo+ID4+IHJl cG9zaXRvcmllcy4gVGhlIG1ldGhvZHMvb2JqZWN0cyB0aGF0IHlvdSB3YW50IHRvIHJlcGxhY2Ug c2VlbSB0byBvbmx5DQo+IGNvbmNlcm46DQo+ID4+IC10aGUgb2JqZWN0cyBhdmFpbGFibGUgaW4g dGhlICdEZXZpY2UgKFBDSXgpJyBub2RlIC10aGUgX09TQyBtZXRob2QNCj4gPj4NCj4gPj4gSWYg YSBsaWJyYXJ5IHdpdGggdGhlIGZvbGxvd2luZyB0d28gbWV0aG9kcyAoZXh0cmFjdGVkIGZyb20N Cj4gPj4gU3NkdFBjaWVMaWJBcm0uaW5mKSB3YXMgY3JlYXRlZCwgd291bGQgaXQgYmUgc3VmZmlj aWVudCBmb3IgYWxsIHRoZQ0KPiA+PiByZXBsYWNlbWVudHMgeW91IHdhbnQgdG8gZG8gPw0KPiA+ PiBMaWtlIHRoaXMgd2Ugd291bGQgaGF2ZSBhIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gYW5kIHNw ZWNpZmljIG9uZXMuDQo+ID4+DQo+ID4+IEVGSV9TVEFUVVMNCj4gPj4gRUZJQVBJDQo+ID4+IEdl bmVyYXRlUGNpRGV2aWNlSW5mbyAoDQo+ID4+ICAgICBJTiAgICAgIENPTlNUIENNX0FSTV9QQ0lf Q09ORklHX1NQQUNFX0lORk8gICpQY2lJbmZvLA0KPiA+PiAgICAgSU4gICAgICAgICAgICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICBVaWQsDQo+ID4+ICAgICBJTiAgT1VUICAgICAgIEFN TF9PQkpFQ1RfTk9ERV9IQU5ETEUgICAgICAgIFBjaU5vZGUNCj4gPj4gICAgICkNCj4gPj4NCj4g Pj4gRUZJX1NUQVRVUw0KPiA+PiBFRklBUEkNCj4gPj4gQWRkT3NjTWV0aG9kICgNCj4gPj4gICAg IElOICBPVVQgICBBTUxfT0JKRUNUX05PREVfSEFORExFICBQY2lOb2RlDQo+ID4+ICAgICApDQo+ ID4+DQo+ID4+IFJlZ2FyZHMsDQo+ID4+IFBpZXJyZQ0KPiA+Pg0KPiA+PiBPbiA3LzEvMjIgMTc6 NTIsIEplZmYgQnJhc2VuIHdyb3RlOg0KPiA+Pj4gQ3VycmVudGx5IHdlIGRvIHRoZSBmb2xsb3dp bmcgaW4gdGhpcyBjYWxsLg0KPiA+Pj4NCj4gPj4+IFJlbW92ZSBhbmQgcmVwbGFjZSB0aGUgX09T QyBtZXRob2Qgb24gY2VydGFpbiB0YXJnZXRzLiBJIG9yaWdpbmFsbHkNCj4gPj4+IGhhZCB0aGlz IHBhc3MgdGhlIHRlbXBsYXRlIG92ZXIgYnV0IHJlbW92ZWQgdGhhdCB3aGVuIEkgYWRkZWQgdGhp cw0KPiA+Pj4gbW9yZSBnZW5lcmljIG92ZXJyaWRlIHN1cHBvcnQgQWRkIGEgX1JTVCBtZXRob2Qg dG8gdGhlIHJvb3QgcG9ydA0KPiA+Pj4gZGV2aWNlIHN1YiBub2RlIEFkZCBhIF9EU0QgZm9yIGRl dmljZSBwcm9wZXJ0aWVzIENvbmRpdGlvbmFsbHkgYWRkDQo+ID4+PiBhbiBlbnRyeSBmb3IgdGhl IGRldmljZSBhdHRhY2hlZCB0byB0aGUgUENJZSBidXMgaWYgd2UgbmVlZCB0byBhZGQNCj4gPj4+ IHByb3BlcnRpZXMgb3IgX1JTVCBtZXRob2RzLiBUaGlzIHdpbGwgbGlrZWx5IGV2ZW50dWFsbHkg bW92ZSB0bw0KPiA+Pj4gYW5vdGhlciBkcml2ZXIgKHdoaWNoIGlzIHRoZSBwdXJwb3NlIG9mIHBh dGNoIDIvNCBpbiB0aGlzIHNlcmllcykNCj4gPj4+DQo+ID4+PiBJIGZpZ3VyZWQgdHJ5aW5nIHRv IGdldCB0aGUgZ2VuZXJhdG9yIHRvIGhhbmRsZSB0aGF0IHdvdWxkIGJlIG1vcmUNCj4gPj4+IGRp ZmZpY3VsdA0KPiA+PiBhcyB0aGVzZSB3b3VsZCBiZSBoYXJkIHRvIGdlbmVyYWxpemUuDQo+ID4+ Pg0KPiA+Pj4NCj4gPj4+IFRoYW5rcywNCj4gPj4+IEplZmYNCj4gPj4+DQo+ID4+Pj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJl LmdvbmRvaXNAYXJtLmNvbT4NCj4gPj4+PiBTZW50OiBGcmlkYXksIEp1bHkgMSwgMjAyMiA2OjQw IEFNDQo+ID4+Pj4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+IENjOiBTYW1pLk11amF3YXJAYXJtLmNvbTsgQWxleGVpLkZl ZG9yb3ZAYXJtLmNvbQ0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggNC80XSBEeW5hbWljVGFi bGVzUGtnOiBBY3BpU3NkdFBjaWVMaWJBcm06IEFkZA0KPiA+Pj4+IHN1cHBvcnQgZm9yIG92ZXJy aWRlIHByb3RvY29sDQo+ID4+Pj4NCj4gPj4+PiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24g b3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBIZWxs byBKZWZmLA0KPiA+Pj4+IElzIGl0IHBvc3NpYmxlIHRvIGtub3cgd2hhdCB0aGUgVXBkYXRlVGFi bGUoKSBmdW5jdGlvbiB3b3VsZCBkbyA/DQo+ID4+Pj4gTWF5YmUgaXQgd291bGQgYmUgcG9zc2li bGUgdG8gaW50ZWdyYXRlIHRoZSBhbHRlcm5hdGl2ZQ0KPiA+Pj4+IGltcGxlbWVudGF0aW9uIHdp dGhvdXQgYWRkaW5nIGEgbmV3IHByb3RvY29sLg0KPiA+Pj4+DQo+ID4+Pj4gUmVnYXJkcywNCj4g Pj4+PiBQaWVycmUNCj4gPj4+Pg0KPiA+Pj4+IE9uIDYvMzAvMjIgMTc6NDgsIEplZmYgQnJhc2Vu IHdyb3RlOg0KPiA+Pj4+PiBTb21lIHBsYXRmb21zIG1heSB3YW50IHRvIG1vZGlmeSB0aGUgQUNQ SSB0YWJsZSBjcmVhdGVkLg0KPiA+Pj4+PiBBZGQgc3VwcG9ydCBmb3IgcHJvdG9jb2wgdGhhdCBj YW4gcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZQ0KPiA+PiBpbXBsZW1lbnRhdGlvbi4NCj4gPj4+Pj4N Cj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4N Cj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ICAgICBEeW5hbWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQ a2cuZGVjICAgICAgICAgfCAgMyArDQo+ID4+Pj4+ICAgICAuLi4vUHJvdG9jb2wvU3NkdFBjaWVP dmVycmlkZVByb3RvY29sLmggICAgICAgfCA2Mw0KPiA+PiArKysrKysrKysrKysrKysrKysrDQo+ ID4+Pj4+ICAgICAuLi4vQWNwaVNzZHRQY2llTGliQXJtL1NzZHRQY2llR2VuZXJhdG9yLmMgICAg fCAzMSArKysrKysrKy0NCj4gPj4+Pj4gICAgIC4uLi9Bcm0vQWNwaVNzZHRQY2llTGliQXJtL1Nz ZHRQY2llTGliQXJtLmluZiB8ICA0ICsrDQo+ID4+Pj4+ICAgICA0IGZpbGVzIGNoYW5nZWQsIDk4 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ID4+Pj4+ICAgICBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gPj4+Pj4gRHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL1Byb3RvY29sL1NzZHRQY2ll T3ZlcnJpZGVQcm90b2NvbC5oDQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9EeW5hbWlj VGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ID4+Pj4+IGIvRHluYW1pY1RhYmxlc1Br Zy9EeW5hbWljVGFibGVzUGtnLmRlYw0KPiA+Pj4+PiBpbmRleCBhODkwYTA0OGJlLi5iYjY2YmRh ZjE0IDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9EeW5hbWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQ a2cuZGVjDQo+ID4+Pj4+ICsrKyBiL0R5bmFtaWNUYWJsZXNQa2cvRHluYW1pY1RhYmxlc1BrZy5k ZWMNCj4gPj4+Pj4gQEAgLTQzLDYgKzQzLDkgQEANCj4gPj4+Pj4gICAgICAgIyBEeW5hbWljIFRh YmxlIEZhY3RvcnkgUHJvdG9jb2wgR1VJRA0KPiA+Pj4+PiAgICAgICBnRWRraWlEeW5hbWljVGFi bGVGYWN0b3J5UHJvdG9jb2xHdWlkID0geyAweDkxZDFlMzI3LA0KPiA+Pj4+PiAweGZlNWEsIDB4 NDliOCwgeyAweGFiLCAweDY1LCAweGUsIDB4Y2UsIDB4MmQsIDB4ZGIsIDB4NDUsIDB4ZWMgfQ0K PiA+Pj4+PiB9DQo+ID4+Pj4+DQo+ID4+Pj4+ICsgICMgUHJvdG9jb2wgdG8gb3ZlcnJpZGUgUENJ IFNTRFQgdGFibGUgZ2VuZXJhdGlvbg0KPiA+Pj4+PiArIGdFZGtpaUR5bmFtaWNUYWJsZVNzZHRQ Y2llT3ZlcnJpZGVQcm90b2NvbEd1aWQgPSB7IDB4OTYyZThiNDQsDQo+ID4+Pj4+ICsgMHgyM2Iz LCAweDQxZGEsIHsgMHg5ZiwgMHgzNiwgMHhjYSwgMHhkZSwgMHg2OCwgMHg0OSwgMHhmYiwgMHhm Ng0KPiA+Pj4+PiArIH0gfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgICBbUGNkc0ZpeGVkQXRCdWls ZF0NCj4gPj4+Pj4NCj4gPj4+Pj4gICAgICAgIyBNYXhpbXVtIG51bWJlciBvZiBDdXN0b20gQUNQ SSBHZW5lcmF0b3JzIGRpZmYgLS1naXQNCj4gPj4+Pj4gYS9EeW5hbWljVGFibGVzUGtnL0luY2x1 ZGUvUHJvdG9jb2wvU3NkdFBjaWVPdmVycmlkZVByb3RvY29sLmgNCj4gPj4+Pj4gYi9EeW5hbWlj VGFibGVzUGtnL0luY2x1ZGUvUHJvdG9jb2wvU3NkdFBjaWVPdmVycmlkZVByb3RvY29sLmgNCj4g Pj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAwMC4uMjk1 NjhhMDE1OQ0KPiA+Pj4+PiAtLS0gL2Rldi9udWxsDQo+ID4+Pj4+ICsrKw0KPiBiL0R5bmFtaWNU YWJsZXNQa2cvSW5jbHVkZS9Qcm90b2NvbC9Tc2R0UGNpZU92ZXJyaWRlUHJvdG9jb2wuaA0KPiA+ Pj4+PiBAQCAtMCwwICsxLDYzIEBADQo+ID4+Pj4+ICsvKiogQGZpbGUNCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArI2lmbmRlZiBTU0RUX1BDSUVfT1ZFUlJJREVfUFJPVE9DT0xfSF8gI2RlZmlu ZQ0KPiA+Pj4+PiArU1NEVF9QQ0lFX09WRVJSSURFX1BST1RPQ09MX0hfDQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyNpbmNsdWRlIDxBcm1OYW1lU3BhY2VPYmplY3RzLmg+DQo+ID4+Pj4+ICsjaW5jbHVk ZSA8TGlicmFyeS9BbWxMaWIvQW1sTGliLmg+DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKiBUaGlz IG1hY3JvIGRlZmluZXMgdGhlIFNTRFQgUENJIE92ZXJyaWRlIFByb3RvY29sIEdVSUQuDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyAgR1VJRDoge0Q4NUE0ODM1LTVBODItNDg5NC1BQzAyLTcwNkY0M0Q1 OTc4RX0NCj4gPj4+Pj4gKyovDQo+ID4+Pj4+ICsjZGVmaW5lIEVES0lJX1NTRFRfUENJX09WRVJS SURFX1BST1RPQ09MX0dVSUQgICAgICAgICAgIFwNCj4gPj4+Pj4gKyAgeyAweDk2MmU4YjQ0LCAw eDIzYjMsIDB4NDFkYSwgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+Pj4+PiArICAgIHsg MHg5ZiwgMHgzNiwgMHhjYSwgMHhkZSwgMHg2OCwgMHg0OSwgMHhmYiwgMHhmNiB9ICBcDQo+ID4+ Pj4+ICsgIH07DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBGb3J3YXJkIGRl Y2xhcmF0aW9uczoNCj4gPj4+Pj4gKyovDQo+ID4+Pj4+ICt0eXBlZGVmIHN0cnVjdCBTc2R0T3Zl cnJpZGVQY2lQcm90b2NvbA0KPiA+Pj4+PiArRURLSUlfU1NEVF9QQ0lfT1ZFUlJJREVfUFJPVE9D T0w7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKiBUaGUgVXBkYXRlVGFibGUgZnVuY3Rpb24gYWxs b3dzIHRoZSBvdmVycmlkZSBwcm90b2NvbCB0bw0KPiA+Pj4+PiArdXBkYXRlDQo+ID4+IHRoZQ0K PiA+Pj4+PiArICogICBQQ0llIFNTRFQgdGFibGUgcHJpb3IgdG8gYmVpbmcgY3JlYXRlZC4NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW0gW2luXSAgICAgIFRoaXMgICAgUG9pbnRlciB0byB0 aGUgU1NEVCBQQ0kgT3ZlcnJpZGUgUHJvdG9jb2wuDQo+ID4+Pj4+ICsgIEBwYXJhbSBbaW5dICAg ICAgUGNpSW5mbyBUaGUgUENJZSBjb25maWd1cmF0aW9uIGluZm8gZm9yIHRoaXMgbm9kZS4NCj4g Pj4+Pj4gKyAgQHBhcmFtIFtpbl0gICAgICBVaWQgICAgIFVJRCB0aGF0IHdhcyBzZWxlY3RlZCBm b3IgdGhpcyBQQ0llIG5vZGUuDQo+ID4+Pj4+ICsgIEBwYXJhbSBbaW4sIG91dF0gUGNpTm9kZSBQ b2ludGVyIHRvIHRoZSBQQ0kgbm9kZSBvZiB0aGlzIEFDUEkNCj4gdGFibGUuDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCj4gPj4+ Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxp ZC4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgRmFpbGVkIHRvIHVw ZGF0ZSB0aGUgdGFibGUuDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4gK3R5cGVkZWYNCj4gPj4+Pj4g K0VGSV9TVEFUVVMNCj4gPj4+Pj4gKyhFRklBUEkgKkVES0lJX1NTRFRfUENJX09WRVJSSURFX1BS T1RPQ09MX1VQREFURV9UQUJMRSkoDQo+ID4+Pj4+ICsgIElOICAgICAgQ09OU1QgRURLSUlfU1NE VF9QQ0lfT1ZFUlJJREVfUFJPVE9DT0wgICpDT05TVCAgVGhpcywNCj4gPj4+Pj4gKyAgSU4gICAg ICBDT05TVCBDTV9BUk1fUENJX0NPTkZJR19TUEFDRV9JTkZPICAgICAgICAgICAgICAqUGNpSW5m bywNCj4gPj4+Pj4gKyAgSU4gICAgICAgICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBVaWQsDQo+ID4+Pj4+ICsgIElOICBPVVQgICAgICAgQU1MX1JPT1RfTk9E RV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgKlBjaU5vZGUNCj4gPj4+Pj4gKyAgKTsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArLyoqIFRoZSBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJP VE9DT0wgc3RydWN0dXJlDQo+ID4+Pj4gZGVzY3JpYmVzIHRoZQ0KPiA+Pj4+PiArICAgIENvbmZp Z3VyYXRpb24gTWFuYWdlciBQcm90b2NvbCBpbnRlcmZhY2UuDQo+ID4+Pj4+ICsqLw0KPiA+Pj4+ PiArdHlwZWRlZiBzdHJ1Y3QgU3NkdE92ZXJyaWRlUGNpUHJvdG9jb2wgew0KPiA+Pj4+PiArICAv KiogVGhlIGludGVyZmFjZSB1c2VkIHRvIHVwZGF0ZSB0aGUgQUNQSSB0YWJsZSBmb3IgUENJLg0K PiA+Pj4+PiArICAqLw0KPiA+Pj4+PiArICBFREtJSV9TU0RUX1BDSV9PVkVSUklERV9QUk9UT0NP TF9VUERBVEVfVEFCTEUNCj4gPj4gVXBkYXRlVGFibGU7DQo+ID4+Pj4+ICt9IEVES0lJX1NTRFRf UENJX09WRVJSSURFX1BST1RPQ09MOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKiogVGhlIFNTRFQg UENJIE92ZXJyaWRlIFByb3RvY29sIEdVSUQuDQo+ID4+Pj4+ICsqLw0KPiA+Pj4+PiArZXh0ZXJu IEVGSV9HVUlEICBnRWRraWlEeW5hbWljVGFibGVTc2R0UGNpZU92ZXJyaWRlUHJvdG9jb2xHdWlk Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjZW5kaWYgLy8gU1NEVF9QQ0lFX09WRVJSSURFX1BST1RP Q09MX0hfDQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pg0KPiBhL0R5 bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdFBjaWVMaWJBcm0vU3NkdFBj aWVHZW5lcmENCj4gPj4+PiB0DQo+ID4+Pj4+IG9yLmMNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pg0K PiBiL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdFBjaWVMaWJBcm0v U3NkdFBjaWVHZW5lcmENCj4gPj4+PiB0DQo+ID4+Pj4+IG9yLmMNCj4gPj4+Pj4gaW5kZXggYzVi MjNkOTFkMC4uZDU5ODJjMjRmZiAxMDA2NDQNCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+DQo+ID4+Pj4N Cj4gPj4NCj4gYS9EeW5hbWljVGFibGVzUGtnL0xpYnJhcnkvQWNwaS9Bcm0vQWNwaVNzZHRQY2ll TGliQXJtL1NzZHRQY2llR2VuZXJhDQo+ID4+Pj4gdA0KPiA+Pj4+PiBvci5jDQo+ID4+Pj4+ICsr Kw0KPiA+Pj4+DQo+IGIvRHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0 UGNpZUxpYkFybS9Tc2R0UGNpZUdlbg0KPiA+Pj4+PiArKysgZXJhdG9yLmMNCj4gPj4+Pj4gQEAg LTIwLDYgKzIwLDcgQEANCj4gPj4+Pj4gICAgICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlM aWIuaD4NCj4gPj4+Pj4gICAgICNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4+Pj4+ ICAgICAjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4+Pj4+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPj4+Pj4gICAg ICNpbmNsdWRlIDxQcm90b2NvbC9BY3BpVGFibGUuaD4NCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIC8v IE1vZHVsZSBzcGVjaWZpYyBpbmNsdWRlIGZpbGVzLg0KPiA+Pj4+PiBAQCAtMzAsNiArMzEsNyBA QA0KPiA+Pj4+PiAgICAgI2luY2x1ZGUgPExpYnJhcnkvVGFibGVIZWxwZXJMaWIuaD4NCj4gPj4+ Pj4gICAgICNpbmNsdWRlIDxMaWJyYXJ5L0FtbExpYi9BbWxMaWIuaD4NCj4gPj4+Pj4gICAgICNp bmNsdWRlIDxQcm90b2NvbC9Db25maWd1cmF0aW9uTWFuYWdlclByb3RvY29sLmg+DQo+ID4+Pj4+ ICsjaW5jbHVkZSA8UHJvdG9jb2wvU3NkdFBjaWVPdmVycmlkZVByb3RvY29sLmg+DQo+ID4+Pj4+ DQo+ID4+Pj4+ICAgICAjaW5jbHVkZSAiU3NkdFBjaWVHZW5lcmF0b3IuaCINCj4gPj4+Pj4NCj4g Pj4+Pj4gQEAgLTc5OCw5ICs4MDAsMTAgQEAgR2VuZXJhdGVQY2lEZXZpY2UgKA0KPiA+Pj4+PiAg ICAgew0KPiA+Pj4+PiAgICAgICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4+Pj4+DQo+ID4+Pj4+ IC0gIENIQVI4ICAgICAgICAgICAgICAgICAgIEFzbE5hbWVbQU1MX05BTUVfU0VHX1NJWkUgKyAx XTsNCj4gPj4+Pj4gLSAgQU1MX09CSkVDVF9OT0RFX0hBTkRMRSAgU2NvcGVOb2RlOw0KPiA+Pj4+ PiAtICBBTUxfT0JKRUNUX05PREVfSEFORExFICBQY2lOb2RlOw0KPiA+Pj4+PiArICBDSEFSOCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNsTmFtZVtBTUxfTkFNRV9TRUdfU0laRSArIDFd Ow0KPiA+Pj4+PiArICBBTUxfT0JKRUNUX05PREVfSEFORExFICAgICAgICAgICAgU2NvcGVOb2Rl Ow0KPiA+Pj4+PiArICBBTUxfT0JKRUNUX05PREVfSEFORExFICAgICAgICAgICAgUGNpTm9kZTsN Cj4gPj4+Pj4gKyAgRURLSUlfU1NEVF9QQ0lfT1ZFUlJJREVfUFJPVE9DT0wgICpPdmVycmlkZVBy b3RvY29sOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgICBBU1NFUlQgKEdlbmVyYXRvciAhPSBOVUxM KTsNCj4gPj4+Pj4gICAgICAgQVNTRVJUIChDZmdNZ3JQcm90b2NvbCAhPSBOVUxMKTsgQEAgLTg2 MCw2ICs4NjMsMjggQEANCj4gPj4+Pj4gR2VuZXJhdGVQY2lEZXZpY2UgKA0KPiA+Pj4+Pg0KPiA+ Pj4+PiAgICAgICAvLyBBZGQgdGhlIHRlbXBsYXRlIF9PU0MgbWV0aG9kLg0KPiA+Pj4+PiAgICAg ICBTdGF0dXMgPSBBZGRPc2NNZXRob2QgKFBjaU5vZGUpOw0KPiA+Pj4+PiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgQVNTRVJUICgwKTsNCj4gPj4+Pj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgU3RhdHVz ID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAmZ0Vk a2lpRHluYW1pY1RhYmxlU3NkdFBjaWVPdmVycmlkZVByb3RvY29sR3VpZCwNCj4gPj4+Pj4gKyAg ICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAq KikmT3ZlcnJpZGVQcm90b2NvbA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+ Pj4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICBTdGF0dXMgPSBP dmVycmlkZVByb3RvY29sLT5VcGRhdGVUYWJsZSAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdmVycmlkZVByb3RvY29sLA0KPiA+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUGNpSW5mbywNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFVpZCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBjaU5vZGUNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICk7ICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgIC8vIE5vdCBhbiBlcnJvciBpZiBvdmVycmlkZSBw cm90b2NvbCBpcyBub3QgZm91bmQNCj4gPj4+Pj4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsN Cj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgICAgIEFTU0VSVF9FRklfRVJST1Ig KFN0YXR1cyk7DQo+ID4+Pj4+ICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+ICAgICB9DQo+ ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pg0KPiBhL0R5bmFtaWNUYWJs ZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdFBjaWVMaWJBcm0vU3NkdFBjaWVMaWJBcm0u DQo+ID4+Pj4+IGluZg0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+DQo+IGIvRHluYW1pY1RhYmxlc1Br Zy9MaWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0UGNpZUxpYkFybS9Tc2R0UGNpZUxpYkFybS4NCj4g Pj4+Pj4gaW5mDQo+ID4+Pj4+IGluZGV4IDQzMWUzMmE3NzcuLjhlOTE2ZjE1ZTkgMTAwNjQ0DQo+ ID4+Pj4+IC0tLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+DQo+IGEvRHluYW1pY1RhYmxlc1BrZy9M aWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0UGNpZUxpYkFybS9Tc2R0UGNpZUxpYkFybS4NCj4gPj4+ Pj4gaW5mDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+DQo+IGIvRHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5 L0FjcGkvQXJtL0FjcGlTc2R0UGNpZUxpYkFybS9Tc2R0UGNpZUxpYg0KPiA+Pj4+PiArKysgQXJt LmluZg0KPiA+Pj4+PiBAQCAtMzAsNiArMzAsMTAgQEANCj4gPj4+Pj4gICAgICAgQWNwaUhlbHBl ckxpYg0KPiA+Pj4+PiAgICAgICBBbWxMaWINCj4gPj4+Pj4gICAgICAgQmFzZUxpYg0KPiA+Pj4+ PiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIFtQY2Rd DQo+ID4+Pj4+ICAgICAgIGdFZGtpaUR5bmFtaWNUYWJsZXNQa2dUb2tlblNwYWNlR3VpZC5QY2RQ Y2lVc2VTZWdtZW50QXNVaWQNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArW1Byb3RvY29sc10NCj4gPj4+ Pj4gKyAgZ0Vka2lpRHluYW1pY1RhYmxlU3NkdFBjaWVPdmVycmlkZVByb3RvY29sR3VpZA0K