From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-eopbgr760041.outbound.protection.outlook.com [40.107.76.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 15B266E11C for ; Thu, 11 Jul 2019 17:19:42 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Thu, 11 Jul 2019 17:19:39 +0000 Message-ID: <5a71efb3-98db-6fdf-d438-d1f748c56d13@amd.com> References: <20190527171924.19493-1-nicholas.kazlauskas@amd.com> <933a82fd-730a-70f3-6d70-01053bf696a4@amd.com> In-Reply-To: Content-Language: en-US Content-ID: <1E8CAF3544194F49BCCA929C670A6CFB@namprd12.prod.outlook.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/amdgpu: Add color tests for amdgpu List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter , "Li, Sun peng (Leo)" , "Wentland, Harry" Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gNy8xMS8xOSAxOjE1IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiBPbiBXZWQsIE1heSAy OSwgMjAxOSBhdCA4OjQzIFBNIExpLCBTdW4gcGVuZyAoTGVvKSA8U3VucGVuZy5MaUBhbWQuY29t PiB3cm90ZToNCj4+DQo+Pg0KPj4NCj4+IE9uIDIwMTktMDUtMjcgMToxOSBwLm0uLCBOaWNob2xh cyBLYXpsYXVza2FzIHdyb3RlOg0KPj4+IFRoZSBEUk0gY29sb3IgbWFuYWdlbWVudCBwaXBlbGlu ZSBkb2Vzbid0IGRpcmVjdGx5IG1hcCB0byBBTUQgaGFyZHdhcmUNCj4+PiBzbyBjcmVhdGl2ZSBz b2x1dGlvbnMgdG8gaW1wbGVtZW50aW5nIENSVEMgcmVnYW1tYSwgQ1RNIGFuZCBnYW1tYSB3ZXJl DQo+Pj4gbmVlZGVkIGZvciBib3RoIERDRSBhbmQgRENOLiBBIGZldyBtaXN0YWtlcyB3ZXJlIG1h ZGUgaW4gdGhlIHByb2Nlc3MNCj4+PiB0aGF0IHdlcmVuJ3QgY2F1Z2h0IGJ5IGttc19jb2xvckAg dGVzdHM6DQo+Pj4NCj4+PiAtIENhbid0IGdldCBsaW5lYXIgZGVnYW1tYSBvdXRwdXQgd2l0aG91 dCBzZXR0aW5nIGEgY3VzdG9tIGRlZ2FtbWENCj4+PiAtIENhbid0IHNwZWNpZnkgYSBub24tbGlu ZWFyIGRlZ2FtbWEgdGhhdCBwcm9kdWNlcyBjb3JyZWN0IG91dHB1dA0KPj4+IC0gQ2FuJ3Qgc3Bl Y2lmeSBhIGNvcnJlY3QgZ2FtbWEgd2hlbiBhIGxpbmVhciBkZWdhbW1hIGlzIHVzZWQNCj4+Pg0K Pj4+IFRoZXNlIGFyZSBjYXVzZWQgYnkgdXNpbmcgaW1wbGljaXQgc1JHQiBkZWdhbW1hIHRoZW4g c1JHQiBnYW1tYSB3aGVuIG5vDQo+Pj4gbWF0cmljZXMgYXJlIHNldC4gVGhpcyBwcm9kdWNlcyB2 aXN1YWxseSBjb3JyZWN0IG91dHB1dCB3aGVuIHVzaW5nIGENCj4+PiBDVE0gd2l0aCBubyBtYXRy aWNlcyBzZXQsIGJ1dCBpdCdzIGFsc28gdGVjaG5pY2FsbHkgdGhlIGluY29ycmVjdA0KPj4+IG91 dHB1dCBhY2NvcmRpbmcgdG8gdGhlIERSTSBBUEkgZG9jdW1lbnRhdGlvbi4NCj4+Pg0KPj4+IFRo ZXNlIHRlc3RzIGhlbHAgdmVyaWZ5IHRoYXQgQU1ER1BVIGZvbGxvd3MgdGhlIERSTSBzcGVjIHdo ZW4gaXQgY29tZXMNCj4+PiB0byBzZXR0aW5nIGxpbmVhci9ieXBhc3MgZ2FtbWEgYW5kIHJlZ2Ft bWEgTFVULg0KPj4+DQo+Pj4gVGhlIGV4aXN0aW5nIGttc19jb2xvckAgdGVzdHMgYXJlIHdyaXR0 ZW4gY29ycmVjdGx5IGFscmVhZHksIHNvDQo+Pj4gYW55dGhpbmcgdGhhdCBsb29rcyBzaGFyZWQg aW4gdGhlc2UgaXMgcmVhbGx5IGp1c3QgdG8gdmVyaWZ5IHRoYXQgd2UncmUNCj4+PiBubyBsb25n ZXIgZG9pbmcgYW55IHN0cmFuZ2UgdGVzdCBzcGVjaWZpYyB3b3JrYXJvdW5kcyBvdXRzaWRlIG9m IHRoZQ0KPj4+IHNwZWMgb3IgZG9jdW1lbnRhdGlvbi4NCj4+Pg0KPj4+IENjOiBMZW8gTGkgPHN1 bnBlbmcubGlAYW1kLmNvbT4NCj4+PiBDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5k QGFtZC5jb20+DQo+Pj4gU2lnbmVkLW9mZi1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9s YXMua2F6bGF1c2thc0BhbWQuY29tPg0KPj4NCj4+IExHVE0sIHRoYW5rcyBmb3IgdGhlIHRlc3Qh DQo+Pg0KPj4gUmV2aWV3ZWQtYnk6IExlbyBMaSA8c3VucGVuZy5saUBhbWQuY29tPg0KPiANCj4g YnR3IHdoeSBpcyB0aGlzIG5vdCBhIG5ldyBzdWJ0ZXN0IGZvciBrbXNfY29sb3I/IEZyb20gYSBx dWljayBsb29rDQo+IGl0J3MgYWxsIGdlbmVyaWMuIFRoZSBzcGVjaWZpYyB0ZXN0c2Nhc2UgZm9y IGFtZHBncHUgKGxpa2UNCj4gYW1kX2J5cGFzcy5jKSBhbGwgbWFrZSBzZW5zZSwgc2luY2UgdGhl eSB1c2Ugc3BlY2lmaWMgY3JjIHRhcCBwb2ludHMNCj4gYW5kIGNoZWNrIGh3IGltcGxlbWVudGF0 aW9uIGRldGFpbHMuIEJ1dCB0aGlzIGxvb2tzIGxpa2UgYSBnZW5lcmljDQo+IGlzc3VlIHdpdGgg dGhlIGNvbG9yIGNvcnJlY3Rpb24ga21zIHNwZWMgLi4uIEFsc28gYWRkaW5nIEhhcnJ5Lg0KPiAt RGFuaWVsDQoNClRoZSB0ZXN0X2NydGNfbHV0X2FjY3VyYWN5IHRlc3QgaXMgc3BlY2lmaWMgdG8g b3VyIERDTiBoYXJkd2FyZSBpbiB0ZXJtcyANCm9mIHdoYXQgd2UgZXhwZWN0IGFuZCB0aGF0IGl0 IHJlcXVpcmVzIGEgaW5kZXBlbmRlbnQgcGVyIGNoYW5uZWwgQ1JDLg0KDQpUaGUgb3RoZXIgdHdv IHRlc3RzIGNvdWxkIHByb2JhYmx5IGJlIGFkZGVkIHRvIGttc19jb2xvciB3aXRoIHRoZSANCmV4 cGVjdGF0aW9uIHRoYXQgYSBsaW5lYXIgTFVUIGlzIGdvaW5nIHRvIGJlIHRoZSBzYW1lIGFzIG5v dCBzZXR0aW5nIGFueSANCkxVVCBhdCBhbGwgb24gdGhlIGhhcmR3YXJlLg0KDQpJIGRvbid0IHRo aW5rIHRoZXJlJ3MgYW55IGlzc3VlIGhlcmUgd2l0aCB0aGUga21zIHNwZWMsIGl0J3MgY2xlYXJs eSANCmRlZmluZWQgLSB3ZSB3ZXJlIHByZXZpb3VzbHkgYnJlYWtpbmcgdGhlIHNwZWMgYnkgbm90 IGFjdHVhbGx5IHVzaW5nIA0KYnlwYXNzIGZvciBhIE5VTEwgTFVULg0KDQpOaWNob2xhcyBLYXps YXVza2FzDQoNCj4gDQo+Pg0KPj4+IC0tLQ0KPj4+ICAgIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMg ICB8ICAgMSArDQo+Pj4gICAgdGVzdHMvYW1kZ3B1L2FtZF9jb2xvci5jIHwgNDA1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4+ICAgIHRlc3RzL2FtZGdwdS9tZXNv bi5idWlsZCB8ICAgMSArDQo+Pj4gICAgMyBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0aW9ucygr KQ0KPj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMNCj4+ Pg0KPj4+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZp bGUuc291cmNlcw0KPj4+IGluZGV4IDJkNWM5MjllLi5lZjNjMDNmMiAxMDA2NDQNCj4+PiAtLS0g YS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+Pj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cw0KPj4+IEBAIC02LDYgKzYsNyBAQCBOT1VWRUFVX1RFU1RTID0gXA0KPj4+DQo+Pj4gICAgQU1E R1BVX1RFU1RTID0gXA0KPj4+ICAgICAgICBhbWRncHUvYW1kX2Jhc2ljIFwNCj4+PiArICAgICBh bWRncHUvYW1kX2NvbG9yIFwNCj4+PiAgICAgICAgYW1kZ3B1L2FtZF9jc19ub3AgXA0KPj4+ICAg ICAgICBhbWRncHUvYW1kX3ByaW1lIFwNCj4+PiAgICAgICAgYW1kZ3B1L2FtZF9hYm0gXA0KPj4+ IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMgYi90ZXN0cy9hbWRncHUvYW1k X2NvbG9yLmMNCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAwLi4w YmJlZTQzZA0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysgYi90ZXN0cy9hbWRncHUvYW1kX2Nv bG9yLmMNCj4+PiBAQCAtMCwwICsxLDQwNSBAQA0KPj4+ICsvKg0KPj4+ICsgKiBDb3B5cmlnaHQg MjAxOSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+Pj4gKyAqDQo+Pj4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhDQo+Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+Pj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24NCj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsDQo+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPj4+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOg0KPj4+ICsgKg0KPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPj4+ ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4N Cj4+PiArICoNCj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4+PiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksDQo+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTA0KPj4+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERF UihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1INCj4+ PiArICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsDQo+Pj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KPj4+ICsgKiBPVEhFUiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+Pj4gKyAqLw0KPj4+ICsNCj4+PiArI2luY2x1ZGUg ImlndC5oIg0KPj4+ICsNCj4+PiArLyogKERlKWdhbW1hIExVVC4gKi8NCj4+PiArdHlwZWRlZiBz dHJ1Y3QgbHV0IHsNCj4+PiArICAgICBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZGF0YTsNCj4+PiAr ICAgICB1aW50MzJfdCBzaXplOw0KPj4+ICt9IGx1dF90Ow0KPj4+ICsNCj4+PiArLyogUkdCIGNv bG9yLiAqLw0KPj4+ICt0eXBlZGVmIHN0cnVjdCBjb2xvciB7DQo+Pj4gKyAgICAgZG91YmxlIHI7 DQo+Pj4gKyAgICAgZG91YmxlIGc7DQo+Pj4gKyAgICAgZG91YmxlIGI7DQo+Pj4gK30gY29sb3Jf dDsNCj4+PiArDQo+Pj4gKy8qIENvbW1vbiB0ZXN0IGRhdGEuICovDQo+Pj4gK3R5cGVkZWYgc3Ry dWN0IGRhdGEgew0KPj4+ICsgICAgIGlndF9kaXNwbGF5X3QgZGlzcGxheTsNCj4+PiArICAgICBp Z3RfcGxhbmVfdCAqcHJpbWFyeTsNCj4+PiArICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsNCj4+ PiArICAgICBpZ3RfcGlwZV90ICpwaXBlOw0KPj4+ICsgICAgIGlndF9waXBlX2NyY190ICpwaXBl X2NyYzsNCj4+PiArICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGU7DQo+Pj4gKyAgICAgZW51bSBw aXBlIHBpcGVfaWQ7DQo+Pj4gKyAgICAgaW50IGZkOw0KPj4+ICsgICAgIGludCB3Ow0KPj4+ICsg ICAgIGludCBoOw0KPj4+ICsgICAgIHVpbnQzMl90IHJlZ2FtbWFfbHV0X3NpemU7DQo+Pj4gKyAg ICAgdWludDMyX3QgZGVnYW1tYV9sdXRfc2l6ZTsNCj4+PiArfSBkYXRhX3Q7DQo+Pj4gKw0KPj4+ ICtzdGF0aWMgdm9pZCBsdXRfaW5pdChsdXRfdCAqbHV0LCB1aW50MzJfdCBzaXplKQ0KPj4+ICt7 DQo+Pj4gKyAgICAgaWd0X2Fzc2VydChzaXplID4gMCk7DQo+Pj4gKw0KPj4+ICsgICAgIGx1dC0+ c2l6ZSA9IHNpemU7DQo+Pj4gKyAgICAgbHV0LT5kYXRhID0gbWFsbG9jKHNpemUgKiBzaXplb2Yo c3RydWN0IGRybV9jb2xvcl9sdXQpKTsNCj4+PiArICAgICBpZ3RfYXNzZXJ0KGx1dCk7DQo+Pj4g K30NCj4+PiArDQo+Pj4gKy8qIEdlbmVyYXRlcyB0aGUgbGluZWFyIGdhbW1hIExVVC4gKi8NCj4+ PiArc3RhdGljIHZvaWQgbHV0X2dlbl9saW5lYXIobHV0X3QgKmx1dCwgdWludDE2X3QgbWFzaykN Cj4+PiArew0KPj4+ICsgICAgIHVpbnQzMl90IG4gPSBsdXQtPnNpemUgLSAxOw0KPj4+ICsgICAg IHVpbnQzMl90IGk7DQo+Pj4gKw0KPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBsdXQtPnNpemU7 ICsraSkgew0KPj4+ICsgICAgICAgICAgICAgdWludDMyX3QgdiA9IChpICogMHhmZmZmIC8gbikg JiBtYXNrOw0KPj4+ICsNCj4+PiArICAgICAgICAgICAgIGx1dC0+ZGF0YVtpXS5yZWQgPSB2Ow0K Pj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRhW2ldLmJsdWUgPSB2Ow0KPj4+ICsgICAgICAgICAg ICAgbHV0LT5kYXRhW2ldLmdyZWVuID0gdjsNCj4+PiArICAgICB9DQo+Pj4gK30NCj4+PiArDQo+ Pj4gKy8qIEdlbmVyYXRlcyB0aGUgc1JHQiBkZWdhbW1hIExVVC4gKi8NCj4+PiArc3RhdGljIHZv aWQgbHV0X2dlbl9kZWdhbW1hX3NyZ2IobHV0X3QgKmx1dCwgdWludDE2X3QgbWFzaykNCj4+PiAr ew0KPj4+ICsgICAgIGRvdWJsZSByYW5nZSA9IGx1dC0+c2l6ZSAtIDE7DQo+Pj4gKyAgICAgdWlu dDMyX3QgaTsNCj4+PiArDQo+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGx1dC0+c2l6ZTsgKytp KSB7DQo+Pj4gKyAgICAgICAgICAgICBkb3VibGUgdSwgY29lZmY7DQo+Pj4gKyAgICAgICAgICAg ICB1aW50MzJfdCB2Ow0KPj4+ICsNCj4+PiArICAgICAgICAgICAgIHUgPSBpIC8gcmFuZ2U7DQo+ Pj4gKyAgICAgICAgICAgICBjb2VmZiA9IHUgPD0gMC4wNDA0NDk5MzYgPyAodSAvIDEyLjkyKQ0K Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHBvdygodSArIDAu MDU1KSAvIDEuMDU1LCAyLjQpKTsNCj4+PiArICAgICAgICAgICAgIHYgPSAodWludDMyX3QpKGNv ZWZmICogMHhmZmZmKSAmIG1hc2s7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRh W2ldLnJlZCA9IHY7DQo+Pj4gKyAgICAgICAgICAgICBsdXQtPmRhdGFbaV0uYmx1ZSA9IHY7DQo+ Pj4gKyAgICAgICAgICAgICBsdXQtPmRhdGFbaV0uZ3JlZW4gPSB2Ow0KPj4+ICsgICAgIH0NCj4+ PiArfQ0KPj4+ICsNCj4+PiArLyogR2VuZXJhdGVzIHRoZSBzUkdCIGdhbW1hIExVVC4gKi8NCj4+ PiArc3RhdGljIHZvaWQgbHV0X2dlbl9yZWdhbW1hX3NyZ2IobHV0X3QgKmx1dCwgdWludDE2X3Qg bWFzaykNCj4+PiArew0KPj4+ICsgICAgIGRvdWJsZSByYW5nZSA9IGx1dC0+c2l6ZSAtIDE7DQo+ Pj4gKyAgICAgdWludDMyX3QgaTsNCj4+PiArDQo+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGx1 dC0+c2l6ZTsgKytpKSB7DQo+Pj4gKyAgICAgICAgICAgICBkb3VibGUgdSwgY29lZmY7DQo+Pj4g KyAgICAgICAgICAgICB1aW50MzJfdCB2Ow0KPj4+ICsNCj4+PiArICAgICAgICAgICAgIHUgPSBp IC8gcmFuZ2U7DQo+Pj4gKyAgICAgICAgICAgICBjb2VmZiA9IHUgPD0gMC4wMDMxMzA4MCA/ICgx Mi45MiAqIHUpDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgx LjA1NSAqIHBvdyh1LCAxLjAgLyAyLjQpIC0gMC4wNTUpOw0KPj4+ICsgICAgICAgICAgICAgdiA9 ICh1aW50MzJfdCkoY29lZmYgKiAweGZmZmYpICYgbWFzazsNCj4+PiArDQo+Pj4gKyAgICAgICAg ICAgICBsdXQtPmRhdGFbaV0ucmVkID0gdjsNCj4+PiArICAgICAgICAgICAgIGx1dC0+ZGF0YVtp XS5ibHVlID0gdjsNCj4+PiArICAgICAgICAgICAgIGx1dC0+ZGF0YVtpXS5ncmVlbiA9IHY7DQo+ Pj4gKyAgICAgfQ0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBsdXRfZnJlZShsdXRf dCAqbHV0KQ0KPj4+ICt7DQo+Pj4gKyAgICAgaWYgKGx1dC0+ZGF0YSkgew0KPj4+ICsgICAgICAg ICAgICAgZnJlZShsdXQtPmRhdGEpOw0KPj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRhID0gTlVM TDsNCj4+PiArICAgICB9DQo+Pj4gKw0KPj4+ICsgICAgIGx1dC0+c2l6ZSA9IDA7DQo+Pj4gK30N Cj4+PiArDQo+Pj4gKy8qIEZpbGxzIGEgRkIgd2l0aCB0aGUgc29saWQgY29sb3IgZ2l2ZW4uICov DQo+Pj4gK3N0YXRpYyB2b2lkIGRyYXdfY29sb3IoaWd0X2ZiX3QgKmZiLCBkb3VibGUgciwgZG91 YmxlIGcsIGRvdWJsZSBiKQ0KPj4+ICt7DQo+Pj4gKyAgICAgY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0 X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsNCj4+PiArDQo+Pj4gKyAgICAgY2Fpcm9fc2V0X29wZXJh dG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOw0KPj4+ICsgICAgIGlndF9wYWludF9jb2xv cihjciwgMCwgMCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCByLCBnLCBiKTsNCj4+PiArICAgICBp Z3RfcHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8q IEdlbmVyYXRlcyB0aGUgZ2FtbWEgdGVzdCBwYXR0ZXJuLiAqLw0KPj4+ICtzdGF0aWMgdm9pZCBk cmF3X2dhbW1hX3Rlc3QoaWd0X2ZiX3QgKmZiKQ0KPj4+ICt7DQo+Pj4gKyAgICAgY2Fpcm9fdCAq Y3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsNCj4+PiArICAgICBpbnQgZ2ggPSBm Yi0+aGVpZ2h0IC8gNDsNCj4+PiArDQo+Pj4gKyAgICAgaWd0X3BhaW50X2NvbG9yX2dyYWRpZW50 KGNyLCAwLCAwLCBmYi0+d2lkdGgsIGdoLCAxLCAxLCAxKTsNCj4+PiArICAgICBpZ3RfcGFpbnRf Y29sb3JfZ3JhZGllbnQoY3IsIDAsIGdoLCBmYi0+d2lkdGgsIGdoLCAxLCAwLCAwKTsNCj4+PiAr ICAgICBpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAsIGdoICogMiwgZmItPndpZHRoLCBn aCwgMCwgMSwgMCk7DQo+Pj4gKyAgICAgaWd0X3BhaW50X2NvbG9yX2dyYWRpZW50KGNyLCAwLCBn aCAqIDMsIGZiLT53aWR0aCwgZ2gsIDAsIDAsIDEpOw0KPj4+ICsNCj4+PiArICAgICBpZ3RfcHV0 X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qIFNldHMg dGhlIGRlZ2FtbWEgTFVULiAqLw0KPj4+ICtzdGF0aWMgdm9pZCBzZXRfZGVnYW1tYV9sdXQoZGF0 YV90ICpkYXRhLCBsdXRfdCBjb25zdCAqbHV0KQ0KPj4+ICt7DQo+Pj4gKyAgICAgc2l6ZV90IHNp emUgPSBsdXQgPyBzaXplb2YobHV0LT5kYXRhWzBdKSAqIGx1dC0+c2l6ZSA6IDA7DQo+Pj4gKyAg ICAgY29uc3Qgdm9pZCAqcHRyID0gbHV0ID8gbHV0LT5kYXRhIDogTlVMTDsNCj4+PiArDQo+Pj4g KyAgICAgaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBpcGUsIElHVF9DUlRD X0RFR0FNTUFfTFVULCBwdHIsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemUpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKiBTZXRzIHRoZSByZWdhbW1hIExVVC4g Ki8NCj4+PiArc3RhdGljIHZvaWQgc2V0X3JlZ2FtbWFfbHV0KGRhdGFfdCAqZGF0YSwgbHV0X3Qg Y29uc3QgKmx1dCkNCj4+PiArew0KPj4+ICsgICAgIHNpemVfdCBzaXplID0gbHV0ID8gc2l6ZW9m KGx1dC0+ZGF0YVswXSkgKiBsdXQtPnNpemUgOiAwOw0KPj4+ICsgICAgIGNvbnN0IHZvaWQgKnB0 ciA9IGx1dCA/IGx1dC0+ZGF0YSA6IE5VTEw7DQo+Pj4gKw0KPj4+ICsgICAgIGlndF9waXBlX29i al9yZXBsYWNlX3Byb3BfYmxvYihkYXRhLT5waXBlLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIHB0ciwN Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7DQo+Pj4gK30N Cj4+PiArDQo+Pj4gKy8qIENvbW1vbiB0ZXN0IHNldHVwLiAqLw0KPj4+ICtzdGF0aWMgdm9pZCB0 ZXN0X2luaXQoZGF0YV90ICpkYXRhKQ0KPj4+ICt7DQo+Pj4gKyAgICAgaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Ow0KPj4+ICsNCj4+PiArICAgICAvKiBJdCBkb2Vzbid0 IG1hdHRlciB3aGljaCBwaXBlIHdlIGNob29zZSBvbiBhbWRwZ3UuICovDQo+Pj4gKyAgICAgZGF0 YS0+cGlwZV9pZCA9IFBJUEVfQTsNCj4+PiArICAgICBkYXRhLT5waXBlID0gJmRhdGEtPmRpc3Bs YXkucGlwZXNbZGF0YS0+cGlwZV9pZF07DQo+Pj4gKw0KPj4+ICsgICAgIGlndF9kaXNwbGF5X3Jl c2V0KGRpc3BsYXkpOw0KPj4+ICsNCj4+PiArICAgICBkYXRhLT5vdXRwdXQgPSBpZ3RfZ2V0X3Np bmdsZV9vdXRwdXRfZm9yX3BpcGUoZGlzcGxheSwgZGF0YS0+cGlwZV9pZCk7DQo+Pj4gKyAgICAg aWd0X3JlcXVpcmUoZGF0YS0+b3V0cHV0KTsNCj4+PiArDQo+Pj4gKyAgICAgZGF0YS0+bW9kZSA9 IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsNCj4+PiArICAgICBpZ3RfYXNzZXJ0 KGRhdGEtPm1vZGUpOw0KPj4+ICsNCj4+PiArICAgICBkYXRhLT5wcmltYXJ5ID0NCj4+PiArICAg ICAgICAgICAgIGlndF9waXBlX2dldF9wbGFuZV90eXBlKGRhdGEtPnBpcGUsIERSTV9QTEFORV9U WVBFX1BSSU1BUlkpOw0KPj4+ICsNCj4+PiArICAgICBkYXRhLT5waXBlX2NyYyA9IGlndF9waXBl X2NyY19uZXcoZGF0YS0+ZmQsIGRhdGEtPnBpcGVfaWQsDQo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsNCj4+PiAr DQo+Pj4gKyAgICAgaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBpcGVf aWQpOw0KPj4+ICsNCj4+PiArICAgICBkYXRhLT5kZWdhbW1hX2x1dF9zaXplID0NCj4+PiArICAg ICAgICAgICAgIGlndF9waXBlX29ial9nZXRfcHJvcChkYXRhLT5waXBlLCBJR1RfQ1JUQ19ERUdB TU1BX0xVVF9TSVpFKTsNCj4+PiArICAgICBpZ3RfYXNzZXJ0X2x0KDAsIGRhdGEtPmRlZ2FtbWFf bHV0X3NpemUpOw0KPj4+ICsNCj4+PiArICAgICBkYXRhLT5yZWdhbW1hX2x1dF9zaXplID0NCj4+ PiArICAgICAgICAgICAgIGlndF9waXBlX29ial9nZXRfcHJvcChkYXRhLT5waXBlLCBJR1RfQ1JU Q19HQU1NQV9MVVRfU0laRSk7DQo+Pj4gKyAgICAgaWd0X2Fzc2VydF9sdCgwLCBkYXRhLT5yZWdh bW1hX2x1dF9zaXplKTsNCj4+PiArDQo+Pj4gKyAgICAgZGF0YS0+dyA9IGRhdGEtPm1vZGUtPmhk aXNwbGF5Ow0KPj4+ICsgICAgIGRhdGEtPmggPSBkYXRhLT5tb2RlLT52ZGlzcGxheTsNCj4+PiAr fQ0KPj4+ICsNCj4+PiArLyogQ29tbW9uIHRlc3QgY2xlYW51cC4gKi8NCj4+PiArc3RhdGljIHZv aWQgdGVzdF9maW5pKGRhdGFfdCAqZGF0YSkNCj4+PiArew0KPj4+ICsgICAgIGlndF9waXBlX2Ny Y19mcmVlKGRhdGEtPnBpcGVfY3JjKTsNCj4+PiArICAgICBpZ3RfZGlzcGxheV9yZXNldCgmZGF0 YS0+ZGlzcGxheSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIE9sZGVyIHZlcnNp b25zIG9mIGFtZGdwdSB3b3VsZCBwdXQgdGhlIHBpcGUgaW50byBieXBhc3MgbW9kZSBmb3IgZGVn YW1tYQ0KPj4+ICsgKiB3aGVuIHBhc3NlZCBhIGxpbmVhciBzUkdCIG1hdHJpeCBidXQgd291bGQg c3RpbGwgdXNlIGFuIHNSR0IgcmVnYW1tYQ0KPj4+ICsgKiBtYXRyaXggaWYgbm90IHBhc3NlZCBh bnkuIFRoZSB3aG9sZSBwaXBlIHNob3VsZCBiZSBpbiBsaW5lYXIgYnlwYXNzIG1vZGUNCj4+PiAr ICogd2hlbiBhbGwgdGhlIG1hdHJpY2VzIGFyZSBOVUxMIC0gQ1JDcyBmb3IgYSBsaW5lYXIgZGVn YW1tYSBtYXRyaXggYW5kDQo+Pj4gKyAqIGEgTlVMTCBvbmUgc2hvdWxkIG1hdGNoLg0KPj4+ICsg Ki8NCj4+PiArc3RhdGljIHZvaWQgdGVzdF9jcnRjX2xpbmVhcl9kZWdhbW1hKGRhdGFfdCAqZGF0 YSkNCj4+PiArew0KPj4+ICsgICAgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlz cGxheTsNCj4+PiArICAgICBpZ3RfY3JjX3QgcmVmX2NyYywgbmV3X2NyYzsNCj4+PiArICAgICBp Z3RfZmJfdCBhZmI7DQo+Pj4gKyAgICAgbHV0X3QgbHV0X2xpbmVhcjsNCj4+PiArDQo+Pj4gKyAg ICAgdGVzdF9pbml0KGRhdGEpOw0KPj4+ICsNCj4+PiArICAgICBsdXRfaW5pdCgmbHV0X2xpbmVh ciwgZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSk7DQo+Pj4gKyAgICAgbHV0X2dlbl9saW5lYXIoJmx1 dF9saW5lYXIsIDB4ZmZmZik7DQo+Pj4gKw0KPj4+ICsgICAgIGlndF9jcmVhdGVfZmIoZGF0YS0+ ZmQsIGRhdGEtPncsIGRhdGEtPmgsIERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsICZhZmIpOw0KPj4+ ICsgICAgIGRyYXdfZ2FtbWFfdGVzdCgmYWZiKTsNCj4+PiArDQo+Pj4gKyAgICAgLyogRHJhdyB0 aGUgcmVmZXJlbmNlIGltYWdlLiAqLw0KPj4+ICsgICAgIGlndF9wbGFuZV9zZXRfZmIoZGF0YS0+ cHJpbWFyeSwgJmFmYik7DQo+Pj4gKyAgICAgc2V0X3JlZ2FtbWFfbHV0KGRhdGEsIE5VTEwpOw0K Pj4+ICsgICAgIHNldF9kZWdhbW1hX2x1dChkYXRhLCBOVUxMKTsNCj4+PiArICAgICBpZ3RfZGlz cGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VU LCBOVUxMKTsNCj4+PiArDQo+Pj4gKyAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEt PnBpcGVfY3JjLCAmcmVmX2NyYyk7DQo+Pj4gKw0KPj4+ICsgICAgIC8qIEFwcGx5IGEgbGluZWFy IGRlZ2FtbWEuIFRoZSByZXN1bHQgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4gKi8NCj4+PiArICAg ICBzZXRfZGVnYW1tYV9sdXQoZGF0YSwgJmx1dF9saW5lYXIpOw0KPj4+ICsgICAgIGlndF9kaXNw bGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwgTlVMTCk7DQo+Pj4gKw0KPj4+ICsgICAgIGln dF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJm5ld19jcmMpOw0KPj4+ICsg ICAgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmbmV3X2NyYyk7DQo+Pj4gKw0KPj4+ ICsgICAgIHRlc3RfZmluaShkYXRhKTsNCj4+PiArICAgICBpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmZk LCAmYWZiKTsNCj4+PiArICAgICBsdXRfZnJlZSgmbHV0X2xpbmVhcik7DQo+Pj4gK30NCj4+PiAr DQo+Pj4gKy8qDQo+Pj4gKyAqIE9sZGVyIHZlcnNpb25zIG9mIGFtZGdwdSB3b3VsZCBhcHBseSB0 aGUgQ1JUQyByZWdhbW1hIG9uIHRvcCBvZiBhIGN1c3RvbQ0KPj4+ICsgKiBzUkdCIHJlZ2FtbWEg bWF0cml4IHdpdGggaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyBvciByb3VuZGluZyBlcnJvcnMuDQo+ Pj4gKyAqIElmIHdlIHB1dCB0aGUgcGlwZSBpbnRvIGJ5cGFzcyBvciB1c2UgdGhlIGhhcmR3YXJl IGRlZmluZWQgc1JHQiByZWdhbW1hDQo+Pj4gKyAqIG9uIHRoZSBwbGFuZSB0aGVuIHdlIGNhbiBh bmQgc2hvdWxkIGdldCB0aGUgY29ycmVjdCBDUlRDIHdoZW4gcGFzc2luZyBhDQo+Pj4gKyAqIGxp bmVyIHJlZ2FtbWEgbWF0cml4IHRvIERSTS4NCj4+PiArICovDQo+Pj4gK3N0YXRpYyB2b2lkIHRl c3RfY3J0Y19saW5lYXJfcmVnYW1tYShkYXRhX3QgKmRhdGEpDQo+Pj4gK3sNCj4+PiArICAgICBp Z3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+Pj4gKyAgICAgaWd0X2Ny Y190IHJlZl9jcmMsIG5ld19jcmM7DQo+Pj4gKyAgICAgaWd0X2ZiX3QgYWZiOw0KPj4+ICsgICAg IGx1dF90IGx1dF9saW5lYXI7DQo+Pj4gKw0KPj4+ICsgICAgIHRlc3RfaW5pdChkYXRhKTsNCj4+ PiArDQo+Pj4gKyAgICAgbHV0X2luaXQoJmx1dF9saW5lYXIsIGRhdGEtPnJlZ2FtbWFfbHV0X3Np emUpOw0KPj4+ICsgICAgIGx1dF9nZW5fbGluZWFyKCZsdXRfbGluZWFyLCAweGZmZmYpOw0KPj4+ ICsNCj4+PiArICAgICBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmZkLCBkYXRhLT53LCBkYXRhLT5oLCBE Uk1fRk9STUFUX1hSR0I4ODg4LCAwLCAmYWZiKTsNCj4+PiArICAgICBkcmF3X2dhbW1hX3Rlc3Qo JmFmYik7DQo+Pj4gKw0KPj4+ICsgICAgIC8qIERyYXcgdGhlIHJlZmVyZW5jZSBpbWFnZS4gKi8N Cj4+PiArICAgICBpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZhZmIpOw0KPj4+ICsg ICAgIHNldF9yZWdhbW1hX2x1dChkYXRhLCBOVUxMKTsNCj4+PiArICAgICBzZXRfZGVnYW1tYV9s dXQoZGF0YSwgTlVMTCk7DQo+Pj4gKyAgICAgaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNw bGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7DQo+Pj4gKw0KPj4+ICsg ICAgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJnJlZl9jcmMpOw0K Pj4+ICsNCj4+PiArICAgICAvKiBBcHBseSBhIGxpbmVhciBkZWdhbW1hLiBUaGUgcmVzdWx0IHNo b3VsZCByZW1haW4gdGhlIHNhbWUuICovDQo+Pj4gKyAgICAgc2V0X3JlZ2FtbWFfbHV0KGRhdGEs ICZsdXRfbGluZWFyKTsNCj4+PiArICAgICBpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3Bs YXksIDAsIE5VTEwpOw0KPj4+ICsNCj4+PiArICAgICBpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMo ZGF0YS0+cGlwZV9jcmMsICZuZXdfY3JjKTsNCj4+PiArICAgICBpZ3RfYXNzZXJ0X2NyY19lcXVh bCgmcmVmX2NyYywgJm5ld19jcmMpOw0KPj4+ICsNCj4+PiArICAgICB0ZXN0X2ZpbmkoZGF0YSk7 DQo+Pj4gKyAgICAgaWd0X3JlbW92ZV9mYihkYXRhLT5mZCwgJmFmYik7DQo+Pj4gKyAgICAgbHV0 X2ZyZWUoJmx1dF9saW5lYXIpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBUZXN0 cyBMVVQgYWNjdXJhY3kuIENSVEMgcmVnYW1tYSBhbmQgQ1JUQyBkZWdhbW1hIHNob3VsZCBwcm9k dWNlIGEgdmlzdWFsbHkNCj4+PiArICogY29ycmVjdCBpbWFnZSB3aGVuIHVzZWQuIEhhcmR3YXJl IGxpbWl0YXRpb25zIG9uIGRlZ2FtbWEgcHJldmVudCB0aGlzIGZyb20NCj4+PiArICogYmVpbmcg Q1JDIGxldmVsIGFjY3VyYXRlIGFjcm9zcyBhIGZ1bGwgdGVzdCBncmFkaWVudCBidXQgbW9zdCB2 YWx1ZXMgc2hvdWxkDQo+Pj4gKyAqIHN0aWxsIG1hdGNoLg0KPj4+ICsgKg0KPj4+ICsgKiBUaGlz IHRlc3QgY2FuJ3QgcGFzcyBvbiBEQ0UgYmVjYXVzZSBpdCBkb2Vzbid0IHN1cHBvcnQgbm9uLWxp bmVhciBkZWdhbW1hLg0KPj4+ICsgKi8NCj4+PiArc3RhdGljIHZvaWQgdGVzdF9jcnRjX2x1dF9h Y2N1cmFjeShkYXRhX3QgKmRhdGEpDQo+Pj4gK3sNCj4+PiArICAgICAvKg0KPj4+ICsgICAgICAq IENoYW5uZWxzIGFyZSBpbmRlcGVuZGVudCwgc28gd2UgY2FuIHZlcmlmeSBtdWx0aXBsZSBjb2xv cnMgYXQgdGhlDQo+Pj4gKyAgICAgICogc2FtZSB0aW1lIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5j ZS4NCj4+PiArICAgICAgKi8NCj4+PiArICAgICBzdGF0aWMgY29uc3QgY29sb3JfdCBjb2xvcnNb XSA9IHsNCj4+PiArICAgICAgICAgICAgIHsgMS4wMCwgMS4wMCwgMS4wMCB9LA0KPj4+ICsgICAg ICAgICAgICAgeyAwLjkwLCAwLjg1LCAwLjc1IH0sIC8qIDAuOTUgZmFpbHMgKi8NCj4+PiArICAg ICAgICAgICAgIHsgMC43MCwgMC42NSwgMC42MCB9LA0KPj4+ICsgICAgICAgICAgICAgeyAwLjU1 LCAwLjUwLCAwLjQ1IH0sDQo+Pj4gKyAgICAgICAgICAgICB7IDAuNDAsIDAuMzUsIDAuMzAgfSwN Cj4+PiArICAgICAgICAgICAgIHsgMC4yNSwgMC4yMCwgMC4xNSB9LA0KPj4+ICsgICAgICAgICAg ICAgeyAwLjEwLCAwLjA0LCAwLjAyIH0sIC8qIDAuMDUgZmFpbHMgKi8NCj4+PiArICAgICAgICAg ICAgIHsgMC4wMCwgMC4wMCwgMC4wMCB9LA0KPj4+ICsgICAgIH07DQo+Pj4gKyAgICAgaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Ow0KPj4+ICsgICAgIGlndF9jcmNfdCBy ZWZfY3JjLCBuZXdfY3JjOw0KPj4+ICsgICAgIGlndF9mYl90IGFmYjsNCj4+PiArICAgICBsdXRf dCBsdXRfZGVnYW1tYSwgbHV0X3JlZ2FtbWE7DQo+Pj4gKyAgICAgaW50IGksIHcsIGg7DQo+Pj4g Kw0KPj4+ICsgICAgIHRlc3RfaW5pdChkYXRhKTsNCj4+PiArDQo+Pj4gKyAgICAgbHV0X2luaXQo Jmx1dF9kZWdhbW1hLCBkYXRhLT5kZWdhbW1hX2x1dF9zaXplKTsNCj4+PiArICAgICBsdXRfZ2Vu X2RlZ2FtbWFfc3JnYigmbHV0X2RlZ2FtbWEsIDB4ZmZmZik7DQo+Pj4gKw0KPj4+ICsgICAgIGx1 dF9pbml0KCZsdXRfcmVnYW1tYSwgZGF0YS0+cmVnYW1tYV9sdXRfc2l6ZSk7DQo+Pj4gKyAgICAg bHV0X2dlbl9yZWdhbW1hX3NyZ2IoJmx1dF9yZWdhbW1hLCAweGZmZmYpOw0KPj4+ICsNCj4+PiAr ICAgICAvKiBEb24ndCBkcmF3IGFjcm9zcyB0aGUgd2hvbGUgc2NyZWVuIHRvIGltcHJvdmUgcGVy Zi4gKi8NCj4+PiArICAgICB3ID0gNjQ7DQo+Pj4gKyAgICAgaCA9IDY0Ow0KPj4+ICsNCj4+PiAr ICAgICBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmZkLCB3LCBoLCBEUk1fRk9STUFUX1hSR0I4ODg4LCAw LCAmYWZiKTsNCj4+PiArICAgICBpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZhZmIp Ow0KPj4+ICsgICAgIGlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgRFJNX01PREVf QVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOw0KPj4+ICsNCj4+PiArICAgICAvKiBUZXN0IGNv bG9ycy4gKi8NCj4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyAr K2kpIHsNCj4+PiArICAgICAgICAgICAgIGNvbG9yX3QgY29sID0gY29sb3JzW2ldOw0KPj4+ICsN Cj4+PiArICAgICAgICAgICAgIGlndF9pbmZvKCJUZXN0aW5nIGNvbG9yICglLjJmLCAlLjJmLCAl LjJmKSAuLi5cbiIsIGNvbC5yLCBjb2wuZywNCj4+PiArICAgICAgICAgICAgICAgICAgICAgIGNv bC5iKTsNCj4+PiArDQo+Pj4gKyAgICAgICAgICAgICBkcmF3X2NvbG9yKCZhZmIsIGNvbC5yLCBj b2wuZywgY29sLmIpOw0KPj4+ICsNCj4+PiArICAgICAgICAgICAgIHNldF9yZWdhbW1hX2x1dChk YXRhLCBOVUxMKTsNCj4+PiArICAgICAgICAgICAgIHNldF9kZWdhbW1hX2x1dChkYXRhLCBOVUxM KTsNCj4+PiArICAgICAgICAgICAgIGlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwg MCwgTlVMTCk7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3Rf Y3JjKGRhdGEtPnBpcGVfY3JjLCAmcmVmX2NyYyk7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAgICAg c2V0X2RlZ2FtbWFfbHV0KGRhdGEsICZsdXRfZGVnYW1tYSk7DQo+Pj4gKyAgICAgICAgICAgICBz ZXRfcmVnYW1tYV9sdXQoZGF0YSwgJmx1dF9yZWdhbW1hKTsNCj4+PiArICAgICAgICAgICAgIGln dF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwgTlVMTCk7DQo+Pj4gKw0KPj4+ICsg ICAgICAgICAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmbmV3 X2NyYyk7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAgICAgaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJl Zl9jcmMsICZuZXdfY3JjKTsNCj4+PiArICAgICB9DQo+Pj4gKw0KPj4+ICsgICAgIHRlc3RfZmlu aShkYXRhKTsNCj4+PiArICAgICBpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmZkLCAmYWZiKTsNCj4+PiAr ICAgICBsdXRfZnJlZSgmbHV0X3JlZ2FtbWEpOw0KPj4+ICsgICAgIGx1dF9mcmVlKCZsdXRfZGVn YW1tYSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK2lndF9tYWluDQo+Pj4gK3sNCj4+PiArICAgICBk YXRhX3QgZGF0YTsNCj4+PiArDQo+Pj4gKyAgICAgaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOw0K Pj4+ICsNCj4+PiArICAgICBtZW1zZXQoJmRhdGEsIDAsIHNpemVvZihkYXRhKSk7DQo+Pj4gKw0K Pj4+ICsgICAgIGlndF9maXh0dXJlDQo+Pj4gKyAgICAgew0KPj4+ICsgICAgICAgICAgICAgZGF0 YS5mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FNREdQVSk7DQo+Pj4gKw0KPj4+ ICsgICAgICAgICAgICAga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0KPj4+ICsNCj4+ PiArICAgICAgICAgICAgIGlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5m ZCk7DQo+Pj4gKyAgICAgICAgICAgICBpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWlj KTsNCj4+PiArICAgICAgICAgICAgIGlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0KCZkYXRhLmRp c3BsYXkpOw0KPj4+ICsgICAgIH0NCj4+PiArDQo+Pj4gKyAgICAgaWd0X3N1YnRlc3QoImNydGMt bGluZWFyLWRlZ2FtbWEiKSB0ZXN0X2NydGNfbGluZWFyX2RlZ2FtbWEoJmRhdGEpOw0KPj4+ICsg ICAgIGlndF9zdWJ0ZXN0KCJjcnRjLWxpbmVhci1yZWdhbW1hIikgdGVzdF9jcnRjX2xpbmVhcl9y ZWdhbW1hKCZkYXRhKTsNCj4+PiArICAgICBpZ3Rfc3VidGVzdCgiY3J0Yy1sdXQtYWNjdXJhY3ki KSB0ZXN0X2NydGNfbHV0X2FjY3VyYWN5KCZkYXRhKTsNCj4+PiArDQo+Pj4gKyAgICAgaWd0X2Zp eHR1cmUNCj4+PiArICAgICB7DQo+Pj4gKyAgICAgICAgICAgICBpZ3RfZGlzcGxheV9maW5pKCZk YXRhLmRpc3BsYXkpOw0KPj4+ICsgICAgIH0NCj4+PiArfQ0KPj4+IGRpZmYgLS1naXQgYS90ZXN0 cy9hbWRncHUvbWVzb24uYnVpbGQgYi90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQNCj4+PiBpbmRl eCAxYWZlY2U4Ni4uNDIwODYzNzQgMTAwNjQ0DQo+Pj4gLS0tIGEvdGVzdHMvYW1kZ3B1L21lc29u LmJ1aWxkDQo+Pj4gKysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkDQo+Pj4gQEAgLTQsNiAr NCw3IEBAIGFtZGdwdV9kZXBzID0gdGVzdF9kZXBzDQo+Pj4gICAgaWYgbGliZHJtX2FtZGdwdS5m b3VuZCgpDQo+Pj4gICAgICAgIGFtZGdwdV9wcm9ncyArPSBbICdhbWRfYWJtJywNCj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2FtZF9iYXNpYycsDQo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgJ2FtZF9jb2xvcicsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICdhbWRfY3Nf bm9wJywNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FtZF9wcmltZScsDQo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICBdDQo+Pj4NCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fDQo+PiBpZ3QtZGV2IG1haWxpbmcgbGlzdA0KPj4gaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldg0KPiANCj4gDQo+IA0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=