From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (NAM12-MW2-obe.outbound.protection.outlook.com [40.107.244.57]) by mx.groups.io with SMTP id smtpd.web08.8424.1663777658328889524 for ; Wed, 21 Sep 2022 09:27:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=PK7SA75g; 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.244.57, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BP+qiewFhnxy7OnTFL4Vkgn7yjB3ZWmBohVty1QsF27XuioL4hOjr5R7zVd6njC3Npucpiz/DFNDSwQ9Gdy0JU4iFBhl8dWqGk7tykJtuIJbQJGOGhgioTu4+5oIjbJEhL0jXBWD9ZxOI3eWB6xX69MIMEsM0wtfq6GEwX4rsyS6ny1abL2DIAtiNcqiwVV+L8KBAhD0l9A6rmhDxgpw7DlbDm+h83o6GiYzFJTV+jQHIc/DDVEUC+4kRkLvEEqeS12wrSzFXAYegpqIP40+Y/5dEzfBiltFz3YNsqEt6UoH6WBGs1rAGWquYolXnqg80wAai4vNxIFt1IITny/gZA== 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=flKLWNWb88s7CvxRkBxnGGLM0KMcXbyVJuw7CdIoN8U=; b=DMjH9f0PnUb7iDHuaoJyzCWJVf1WAfuUseBXucQbzd+xFAcqIwDObEEgXSKniLMakYZgl+pSnBThDgMon7cuDjTXPIyG6ntmrq3HnnrESjwblnmOz8ewLFlpcrOLRDIS96jKJYqrlRng08/SSTVfC0EY7jwtJwot/dJzsdt/BZfXqxQVkWLOMfa9IxYaWrse+PQN4dhc2T2Zuq4wN8q+XKyR3yqBi8KOR+bkdi1+D7AnTleOpxsAvLvtu7WdXLZgVrM6EtF8ElRo0V/9pfeCrRWxo82xJDr5xRJ/voHW95OyRVMNZ40r3tb00/bDnRGNcSnWdHEfEDJ7PkQUkamfzw== 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=flKLWNWb88s7CvxRkBxnGGLM0KMcXbyVJuw7CdIoN8U=; b=PK7SA75gEmdRWfn4tPPxhVzOWHJbm7B63pwvzKpEBLWjkys7MU3ShgSj5KqQvIWSFAfCBgZ7dmhLnu/tGtXuHUXhT3kRLcAhUFOwhRodRRTF4mmMDeM88MXtRBfntclA6YLze7CbA3UbDzfaKTbcHzuDp7uJeLM9FjsKiTHF+84k2B0gVXWduBofLfKyy9gyM2Lqf3JfSK6cs9R81/hyBZzyk/cuJ7ENRSDlPw6UrHorwqzG36gdmxVrqzmSCLiHmyqe78GwQG7jdHwFCTvqFBHYfspcyTbOp2F2jGHsOxRV+tp+m0jOynpmyrIYJz5oQpHBJj61USt+y3nkMNNNYg== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by SJ1PR12MB6316.namprd12.prod.outlook.com (2603:10b6:a03:455::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.16; Wed, 21 Sep 2022 16:27:36 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::84f:b16e:729e:2eca%4]) with mapi id 15.20.5632.017; Wed, 21 Sep 2022 16:27:36 +0000 From: "Jeff Brasen" To: Ard Biesheuvel CC: "devel@edk2.groups.io" , "hao.a.wu@intel.com" , "ray.ni@intel.com" , "quic_llindhol@quicinc.com" , "ardb+tianocore@kernel.org" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Index: AQHYo2KYHmEPctI38EmivvRyAT6Lm62bwm0wgAAW6wCABLcLoIAPk0aAgCXGXHCAAAXLgIAUd0fw Date: Wed, 21 Sep 2022 16:27:36 +0000 Message-ID: References: In-Reply-To: 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-traffictypediagnostic: DS7PR12MB5789:EE_|SJ1PR12MB6316:EE_ x-ms-office365-filtering-correlation-id: 00417e2b-b754-4fc0-f6d3-08da9bee31aa x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pknHikfJ0xA/lTVtCR0yXzzG7O7gu0d1k232oeVDMh9JLssgvJFdkxV7J9MVTx52/dGGqfP2z1npzzbXHcveYD+VSGFgapfFTYIrXDNGN6TOQHHRpMRNKzTXTciqE5kbr9AwpBJbvLUbDlsylirBgSFZ8NZ+9ruBAZYeanK1GI8iPM5/ZBgbvo9mAo2XeCaFEEQ0dCVB6HPjExB/HgxDjO3VjRetJ9CEpdVzrg1LU/EXjQlXxEIciDEV9vuSgrWJnla1kxIOyhnM9lwkZ6nyqpFXwK5xtKW8ILgYn6CcJXMJnxHYXlGS8uEp27OpDXhX9yplessqOLNPb+T474HO47HCRpPxY4kZFmBDJ3vRT8nFw4YMcukuBUPytfKaxy8l0Kz4JbXXP4xNVkVUWwM0ax98giEFKHwRfImh9EGXUaBAGeKs5r83SpVebvpbR6rOdOpzKGsS7K2tv/iwNTKjU/CCAwhX/h2FlbqYnuYuLMWb7M/B05firy0I+yDupwPkpUye1oPOwq/N7I3JtkQT4VQsfKEYhwoGomimsmG7bsYqEgr68CDikeBizyqqugxsnzWnrWfpd8VKgSl2mC2++vPXIqA2X2Tcx8Ss95f/orSSwxehQrzKom63qBiHspu1ATyDlezJwLCa70zY1dRFgACdQZJ9yUBhfMzGQtJhCTvtwQwfp0Cq0fAhX/5m6reiDiFX21QnPIvfxbFdtC3i3VshGxw3RQ7BP24bGqrDQsCs/E+OHeLrFv9j7lyYS2gxRBiHHZjHFFlhtktzJBXg6ztxhFXRaMFqWu7j2SUmW1wEDtjFccjo5mPt1MNWANhcW2caJYY0UfaRxPgnKvUtow== 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:(13230022)(4636009)(136003)(396003)(39860400002)(346002)(376002)(366004)(451199015)(33656002)(55016003)(122000001)(38100700002)(64756008)(86362001)(54906003)(66556008)(66476007)(66446008)(8676002)(66946007)(76116006)(4326008)(41300700001)(6916009)(316002)(2906002)(8936002)(52536014)(186003)(83380400001)(5660300002)(478600001)(71200400001)(26005)(53546011)(9686003)(6506007)(7696005)(38070700005)(66899012)(213903007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZlZ1cFpNR3ZKNU96dlA1aEZ2VWF6c09qT0hMSkFuc1YzSTlkeFpkbVU1eWZG?= =?utf-8?B?cHIxQU0raXpoOS9nUmMyYmdsT0RhZnZJREMrSU03elFvRzkwYlp0dXdtK0xi?= =?utf-8?B?VkhhZXB4Sk9WSTQwVC9LSmNjLzNyUGhFUXpTWXBiTHlyZDkzZnk3cWkvZk9p?= =?utf-8?B?R2NNeFdlV1pRN3ZCQUdjS3BjRGZYQ2pJLzF1MDBqSHdDdkc4Wk5iVjdlNks3?= =?utf-8?B?b1pTSnc2bFJCdWpoS0poRDAxUmdwT2FRNHpRYXlOODNaZ0p6UVBvcUFmR2x2?= =?utf-8?B?L29WVTQ3cTZueTRZS3dqd25pU0JpNTdNdjdLT1JpK1dHam55Tyt2ZWRPcFg4?= =?utf-8?B?ZWZHRkNmWlN1c29EOGVhMU5jUHRPSm53cXVvbkd6cDBERVhKRi9YUzlOL3Zo?= =?utf-8?B?cmJwZEovSEQ0RzZSaU9PaWxWRk5uMWdPYTNIbXAyY0x4NEtnTnQ5QnljY2N1?= =?utf-8?B?YUZTclVBVHMxbjVaMC9Ld3RKN3hpVC9ZZ1JBNzNFcklycUZHWlNSemczOS9h?= =?utf-8?B?bnNWWDJMb2Q4V21jd1RLekRvb2lETS9oZkRnUlp4dDl1SFBLUFh4aEtnb3Vr?= =?utf-8?B?TmRYZ09XR0pUSFZJNHBRL1Z3MytlZWZheEFWajRRcm1xS3d0WHhFbFZPbGU3?= =?utf-8?B?bFhCaDFzVGhoTmVXRHhWaHhDcHhaWHpHL1RPQnlrU3RPSG1IOUFDTTJJMXpu?= =?utf-8?B?cVlhYzlSWHdrY2ZvSklYbVFkVlhldGYvOUN2ZlZNdXFkZVVrTS9HTXY3K1FG?= =?utf-8?B?d3EvUGpnZmc2cU9zUDU5TWdkMzZDVzgxTUpkWWJNdmZtUlhJTGVtc3YxK3h1?= =?utf-8?B?WGdtRzBpTkR0OHEzZi9QVmJMSHVvYXhZc2c0N2tlbFBVTGk0TDVxNmJ0TXEx?= =?utf-8?B?Mjd4VUx4YVdtdkxkaTY0MjNrb3hWTGxZcXlYWmZYMkdyYmlQTDV2RUJFRjVE?= =?utf-8?B?NlRIT1ZzRnVTUFF2VFhQejRMZWY2KzhoTVNMWTh4UlF1cWhkOEQwWHI5T1lm?= =?utf-8?B?VnFzOGdyeGVya05sNFozM0xZOVlIUkFyb1ZiQUdkaHRWRW00UVV0K3RQWlcv?= =?utf-8?B?SVN3NXQxS1pMejZQYnhIYkF5Tjl6NUw2amR5bnhkTFgzb2RhWm0xcmxhempI?= =?utf-8?B?OFpHcDRLQVc2by9mUjhORHlPSFRhVGt4K0pHNk5IcU1PZEEyMit0bUJzaTNO?= =?utf-8?B?UHBWRWlEaWRMNjZXczNTZnVhOGdYaG1jUEZ6YWhoL2dGYVpwK0gwbDk3bGxt?= =?utf-8?B?SEhvNmE2cW5ObzVsMVo5VFdVUDRzMmlLaHV5V2Z6emY5TDQ3ZWRvVXRQYWdP?= =?utf-8?B?dnpHKzl4Q1QvdExhMGI0Z3A4ZU5zTFBDUDN1ckM3dzV2VjlwdEFHNnNFK0Qx?= =?utf-8?B?OE85elZpYWdZdVNXVVgwMWxMMldnMWNNeXNkVy91V3pxN0VscWk4UkUwbnVZ?= =?utf-8?B?VlJmam1RZUVhYjdmVWM0WGdMSFhST3Jhbmxaa0kwUEtYVWlja3V2T2tPYTEv?= =?utf-8?B?KzBEZXd4MHhBdTR6ZExMVmJtYjNpcTkrTHR6MEtPa1R4R3d1a3BvL0d0b1Jy?= =?utf-8?B?ZmhqL1VpNkFmZndxdkI3UUxPRHVEdzJiKzJVa2dBWHdvckV6UDFXZXZOb1FK?= =?utf-8?B?U0NiQW1xMDcwUS9Cd3FNbzZtdHVGQUtuR0d1Q0hYSm1oR3o1UGxSYnZCWkpv?= =?utf-8?B?V2hWbW9vK2hMcGM4M1p3R0R6UVQ1UHJpMVV1Sm05ajZLOVBHQ3BGdG9SWjRQ?= =?utf-8?B?NnRycDgvdnZBSmt6ckRDak9KSWFMQUMxSXpKN3h6bCs2bDF3UG1qaXgrNUVz?= =?utf-8?B?MVppZVF0V3dCc1k3K2xqYSsycHowZmdpZDBEZUxrUEpFMVAwWlg3U0phdjRw?= =?utf-8?B?MWFyYm9GQXpFcE80bEMvcW5Ob25jVW9mRFUxNWN4ZlJENThJS2wrc1JUZjRi?= =?utf-8?B?bXVtRmZubmNXdkJqMzlDRmVyMlM5c1krWFg1anIxeXVGbi9WSDVXSExFc0t6?= =?utf-8?B?MDhZOGt3SStCcnpkQllDSUEzTU9MSjcrNzFUMHZkc3lxUlZHclJkR3lxbjdS?= =?utf-8?B?L2tHNEtzQ1ZTbXY5RVNGSnpCZ2VUZkFIaEFTTTdseXMyMlNVOEdYejRjSzNa?= =?utf-8?Q?Y3nJey3CEMhkuSmuZuXRCkA3L?= 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: 00417e2b-b754-4fc0-f6d3-08da9bee31aa X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2022 16:27:36.3843 (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: bqbFU3wCCp9bMLjEK362wvAAzG/gEZdvSvz8svENCcYqYepixl/thMsLZ8ENz8gJMeR57lEYyahPC7xJU2RrDQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6316 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QW55dGhpbmcgZWxzZSBuZWVkZWQgdG8gZ2V0IHRoaXMgbWVyZ2VkPw0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+ DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgOCwgMjAyMiA5OjU1IEFNDQo+IFRvOiBKZWZm IEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW87 IGhhby5hLnd1QGludGVsLmNvbTsgcmF5Lm5pQGludGVsLmNvbTsNCj4gcXVpY19sbGluZGhvbEBx dWljaW5jLmNvbTsgYXJkYit0aWFub2NvcmVAa2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW2Vk azItZGV2ZWxdIFtQQVRDSCB2Ml0NCj4gTWRlTW9kdWxlUGtnL05vbkRpc2NvdmVyYWJsZVBjaURl dmljZUR4ZTogQWxsb3cgcGFydGlhbCBGcmVlQnVmZmVyDQo+IA0KPiBFeHRlcm5hbCBlbWFpbDog VXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiANCj4gDQo+IE9uIFRo dSwgOCBTZXB0IDIwMjIgYXQgMTc6MzksIEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+ IHdyb3RlOg0KPiA+DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4gPiBTZW50 OiBNb25kYXksIEF1Z3VzdCAxNSwgMjAyMiA4OjQyIEFNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5n cm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiBDYzogaGFv LmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29tOyBxdWljX2xsaW5kaG9sQHF1aWNpbmMu Y29tOw0KPiA+ID4gYXJkYit0aWFub2NvcmVAa2VybmVsLm9yZw0KPiA+ID4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJdDQo+ID4gPiBNZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJh YmxlUGNpRGV2aWNlRHhlOiBBbGxvdyBwYXJ0aWFsIEZyZWVCdWZmZXINCj4gPiA+DQo+ID4gPiBF eHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0K PiA+ID4NCj4gPiA+DQo+ID4gPiBPbiBGcmksIDUgQXVnIDIwMjIgYXQgMTg6NTYsIEplZmYgQnJh c2VuIHZpYSBncm91cHMuaW8NCj4gPiA+IDxqYnJhc2VuPW52aWRpYS5jb21AZ3JvdXBzLmlvPiB3 cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5l bC5vcmc+DQo+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgQXVndXN0IDIsIDIwMjIgMTA6NTEgQU0N Cj4gPiA+ID4gPiBUbzogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiA+ID4g PiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGhhby5hLnd1QGludGVsLmNvbTsgcmF5Lm5pQGlu dGVsLmNvbTsNCj4gPiA+ID4gPiBxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tOyBhcmRiK3RpYW5v Y29yZUBrZXJuZWwub3JnDQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gTWRlTW9k dWxlUGtnL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZToNCj4gPiA+ID4gPiBBbGxvdyBwYXJ0 aWFsIEZyZWVCdWZmZXINCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEV4dGVybmFsIGVtYWlsOiBVc2Ug Y2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4gPiA+ID4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IE9uIFR1ZSwgMiBBdWcgMjAyMiBhdCAxNzozMiwgSmVmZiBCcmFzZW4gPGpi cmFzZW5AbnZpZGlhLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4gPiA+ID4g PiA+IFNlbnQ6IEZyaWRheSwgSnVseSAyOSwgMjAyMiA5OjQ4IEFNDQo+ID4gPiA+ID4gPiA+IFRv OiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gPiA+ID4gPiBDYzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IGhhby5hLnd1QGludGVsLmNvbTsNCj4gPiA+ID4gPiA+ID4gcmF5 Lm5pQGludGVsLmNvbTsgcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsNCj4gPiA+ID4gPiA+ID4g YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZw0KPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BB VENIIHYyXQ0KPiBNZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlOg0KPiA+ ID4gPiA+ID4gPiBBbGxvdyBwYXJ0aWFsIEZyZWVCdWZmZXINCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0 YWNobWVudHMNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT24g VGh1LCAyOCBKdWwgMjAyMiBhdCAxMzoyNSwgSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNv bT4NCj4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+IEFkZGluZyBMZWlmL0FyZCB0byBDQyBpbmNhc2UgdGhleSBoYXZlIGFueSBjb21tZW50 cyBvbiB0aGlzIHBhdGNoLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+IFRoaXMgZ2VuZXJhbGx5IGxvb2tzIG9rIHRvIG1lLiBJIGp1c3Qgd29uZGVyIGlmIGl0 IHdvdWxkbid0DQo+ID4gPiA+ID4gPiA+IGJlIHNpbXBsZXIgdG8gcmV1c2UgdGhlIGV4aXN0aW5n IGFsbG9jYXRpb24gZGVzY3JpcHRvciBpZiBpdA0KPiA+ID4gPiA+ID4gPiBpcyBub3QgYmVpbmcg ZnJlZWQgZW50aXJlbHkuIEdpdmVuIHRoZSBbcHJlc3VtYWJseV0gdGhlIG1vc3QNCj4gPiA+ID4g PiA+ID4gY29tbW9uIGNhc2UgaXMgdG8gYWxsb2NhdGUgYW5kIHRoZW4gZnJlZSBzb21lIHBhZ2Vz IGF0IHRoZQ0KPiA+ID4gPiA+ID4gPiBlbmQsIGxvd2VyaW5nIHRoZSBwYWdlIGNvdW50IG9uIHRo ZSBleGlzdGluZyBkZXNjcmlwdG9yDQo+ID4gPiA+ID4gPiA+IHdvdWxkIGNvdmVyIG1vc3QgY2Fz ZXMsIGFuZCB3ZSdkIG9ubHkgbmVlZCB0byBhbGxvY2F0ZSBuZXcNCj4gPiA+ID4gPiA+ID4gb25l cyBpZiBwYWdlcyBhcmUgYmVpbmcgZnJlZWQgYXQgdGhlIHN0YXJ0IG9yIGluDQo+ID4gPiA+ID4g dGhlIG1pZGRsZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGVyZSBpcyBvZnRlbiBmcmVl aW5nIGF0IHRoZSBiZWdpbm5pbmcgYXMgd2VsbCBhcyB0aGlzIGlzDQo+ID4gPiA+ID4gPiBiZWlu ZyB1c2VkIHRvIGNyZWF0ZQ0KPiA+ID4gPiA+IGEgNjRLIGFsaWduZWQgc2VjdGlvbiBvZiBtZW1v cnkgaW4gdGhlIGNhc2UuIFNvIGl0IG92ZXINCj4gPiA+ID4gPiBhbGxvY2F0ZXMgYW5kIHRoZSBm cmVlJ3Mgc29tZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGUgZW5kLiBJDQo+ID4gPiA+ID4gY291 bGQgcHJvYmFibHkgbWFrZSBpdCBkZXRlY3QgYW5kIHVzZSB0aGF0IGJ1dCBmaWd1cmVkIHRoaXMg Y29kZQ0KPiA+ID4gPiA+IHdvdWxkIHN1cHBvcnQgYWxsIGNhc2VzIGFuZCByZXF1aXJlZCBsZXNz IGNhc2Ugc3BlY2lmaWMgZGV0ZWN0aW9uLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IEFoIGludGVyZXN0aW5nLiBXb3VsZCBpdCBoZWxwIGlmIHRoZSBhbGxvY2F0ZSByb3V0aW5l IGFsaWduZWQNCj4gPiA+ID4gPiBhbGxvY2F0aW9ucyB0byB0aGVpciBzaXplPw0KPiA+ID4gPg0K PiA+ID4gPiBUaGUgUGNpSW8tPkFsbG9jYXRlQnVmZmVyIGZ1bmN0aW9uIGRvZXNuJ3Qgc3VwcG9y dCBwYXNzaW5nIHRoZQ0KPiA+ID4gPiByZXF1ZXN0IGluIHNvDQo+ID4gPiB3ZSB3b3VsZCBuZWVk IHRvIGtub3cgdGhhdCBpbmZvIGJlZm9yZWhhbmQuIFRoZSBjdXJyZW50IGNhbGxpbmcgaW4NCj4g PiA+IHRoZSBYSENJIGRyaXZlciBkb2VzIGEgZnJlZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVu IHRoZSBlbmQgb2YgdGhlDQo+ID4gPiBidWZmZXIgc28gd2UgY291bGQgdGhlIGV4aXN0aW5nIGFs bG9jYXRpb24gdHJhY2tlciBidXQgZmlndXJlZCBpdA0KPiA+ID4gd291bGQgYmUgYmV0dGVyIHRv IGNvcnJlY3QgdGhlIGZ1bmN0aW9uIGp1c3QgaW4gY2FzZSBzb21lb25lIGNhbGxlZCBpdCB0byBm cmVlDQo+IGluIHRoZSBtaWRkbGUuDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gV2hhdCBJIHdhcyB3 b25kZXJpbmcgaXMgd2hldGhlciBzdWNoIGFsbG9jYXRpb25zIGFyZSB0aGVtc2VsdmVzDQo+ID4g PiBtdWx0aXBsZXMgb2YgNjRrLiBUaGlzIGlzIHBlcmhhcHMgb3J0aG9nb25hbCB0byB0aGUgaXNz dWUgdGhpcyBwYXRjaA0KPiA+ID4gYWRkcmVzc2VzLCBhcyB3ZScnIHN0aWxsIG5lZWQgdG8gZGVh bCB3aXRoIHBhcnRpYWwgZnJlZSBjYWxscw0KPiA+ID4gcmVnYXJkbGVzcy4gQnV0IEkgd2FzIGN1 cmlvdXMgd2hldGhlciBYSENJIGluIHBhcnRpY3VsYXIsIGFuZA0KPiA+ID4gcGVyaGFwcyBtb3Jl IGdlbmVyYWxseSwgd2UgY291bGQgc3RyZWFtbGluZSB0aGlzIGJ5IGFsaWduaW5nIGFsbCBhbGxv Y2F0aW9ucw0KPiB0byBhIGxvZzIgdXBwZXIgYm91bmQgb2YgdGhlaXIgc2l6ZXMuDQo+ID4NCj4g PiBYaGNpIGNvZGUNCj4gKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21h c3Rlci9NZGVNb2R1bGVQa2cvQnVzL1BjaS9YaGNpDQo+IER4ZS9Vc2JIY01lbS5jI0w2MDQpIGlu IGFsbG9jYXRpb24gcmVxdWVzdGVkIGlzIGdyZWF0ZXIgdGhlIEVGSV9QQUdFX1NJWkUNCj4gYWxs b2NhdGVzIG51bWJlciBvZiByZXF1ZXN0ZWQgcGFnZXMgcGx1cyBwYWdlcyBmb3IgdGhlIGFsaWdu bWVudCBhbmQgdGhlbg0KPiBmcmVlcyBwYWdlcyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Yg dGhlIGFsbG9jYXRpb24uICBJIGFtIG5vdCBzdXJlIHdlIHJlYWxseQ0KPiBjb3VsZCBjaGFuZ2Ug dGhpcyB3aXRob3V0IGFkZGluZyBhbiBhbGlnbm1lbnQgZmllbGQgdG8gdGhlIFBjaUlvIHByb3Rv Y29sLg0KPiA+DQo+ID4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB5b3Ugd291bGQgbGlrZSB0byBj aGFuZ2Ugb24gdGhpcyBwYXRjaD8NCj4gPg0KPiANCj4gTm8uIFRoYW5rcyBmb3IgdGhlIGNsYXJp ZmljYXRpb24uDQo+IA0KPiBSZXZpZXdlZC1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVs Lm9yZz4NCg==