From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Ser, Simon" Date: Thu, 18 Jul 2019 09:56:39 +0000 Message-ID: References: <296f249138cb4f55466294b07a7aba25801ff146.1560374714.git.rodrigosiqueiramelo@gmail.com> <7eca4f4def5f732d1f9269e2c75eca8da62a78b2.camel@intel.com> <20190712024435.bed52lodxms6rz7y@smtp.gmail.com> <20190716152207.GC13094@e110455-lin.cambridge.arm.com> <20190718094926.GB5942@e110455-lin.cambridge.arm.com> In-Reply-To: <20190718094926.GB5942@e110455-lin.cambridge.arm.com> Content-Language: en-US Content-ID: <2538D26D39D037498C4927134B520B8E@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH V6 i-g-t 2/6] kms_writeback: Add initial writeback tests 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: "Liviu.Dudau@arm.com" Cc: "Latvala, Petri" , "intel-gfx@lists.freedesktop.org" , "igt-dev@lists.freedesktop.org" , "daniel@ffwll.ch" , "nd@arm.com" , "Brian.Starkey@arm.com" List-ID: T24gVGh1LCAyMDE5LTA3LTE4IGF0IDEwOjQ5ICswMTAwLCBMaXZpdS5EdWRhdUBhcm0uY29tIHdy b3RlOg0KPiBPbiBXZWQsIEp1bCAxNywgMjAxOSBhdCAxMTo0NjozOUFNICswMDAwLCBTZXIsIFNp bW9uIHdyb3RlOg0KPiA+IFRoYW5rcyBmb3IgdGhlIGNsYXJpZmljYXRpb24hDQo+ID4gDQo+ID4g T24gVHVlLCAyMDE5LTA3LTE2IGF0IDE2OjIyICswMTAwLCBMaXZpdS5EdWRhdUBhcm0uY29tIHdy b3RlOg0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGludmFsaWRfb3V0X2ZlbmNlKGlndF9vdXRw dXRfdCAqb3V0cHV0LCBpZ3RfZmJfdCAqdmFsaWRfZmIsIGlndF9mYl90ICppbnZhbGlkX2ZiKQ0K PiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsJaW50IGksIHJldDsNCj4gPiA+ID4gPiA+ICsJ aW50MzJfdCBvdXRfZmVuY2U7DQo+ID4gPiA+ID4gPiArCXN0cnVjdCB7DQo+ID4gPiA+ID4gPiAr CQl1aW50MzJfdCBmYl9pZDsNCj4gPiA+ID4gPiA+ICsJCWJvb2wgcHRyX3ZhbGlkOw0KPiA+ID4g PiA+ID4gKwkJaW50MzJfdCAqb3V0X2ZlbmNlX3B0cjsNCj4gPiA+ID4gPiA+ICsJfSBpbnZhbGlk X3Rlc3RzW10gPSB7DQo+ID4gPiA+ID4gPiArCQl7DQo+ID4gPiA+ID4gPiArCQkJLyogTm8gb3V0 cHV0IGJ1ZmZlciwgYnV0IHRoZSBXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUiBzZXQuICovDQo+ID4g PiA+ID4gPiArCQkJLmZiX2lkID0gMCwNCj4gPiA+ID4gPiA+ICsJCQkucHRyX3ZhbGlkID0gdHJ1 ZSwNCj4gPiA+ID4gPiA+ICsJCQkub3V0X2ZlbmNlX3B0ciA9ICZvdXRfZmVuY2UsDQo+ID4gPiA+ ID4gPiArCQl9LA0KPiA+ID4gPiA+ID4gKwkJew0KPiA+ID4gPiA+ID4gKwkJCS8qIEludmFsaWQg b3V0cHV0IGJ1ZmZlci4gKi8NCj4gPiA+ID4gPiA+ICsJCQkuZmJfaWQgPSBpbnZhbGlkX2ZiLT5m Yl9pZCwNCj4gPiA+ID4gPiA+ICsJCQkucHRyX3ZhbGlkID0gdHJ1ZSwNCj4gPiA+ID4gPiA+ICsJ CQkub3V0X2ZlbmNlX3B0ciA9ICZvdXRfZmVuY2UsDQo+ID4gPiA+ID4gPiArCQl9LA0KPiA+ID4g PiA+IA0KPiA+ID4gPiA+IFRoaXMgZG9lc24ndCBiZWxvbmcgaW4gdGhpcyBmdW5jdGlvbiAoaW52 YWxpZF9vdXRfZmVuY2UpLCBzaW5jZSB0aGlzDQo+ID4gPiA+ID4gY2hlY2tzIGFuIGludmFsaWQg ZnJhbWVidWZmZXIsIG5vdCBhbiBpbnZhbGlkIGZlbmNlLiBXZSBzaG91bGQgcHJvYmFibHkNCj4g PiA+ID4gPiBtb3ZlIGl0IHRvIHdyaXRlYmFja19mYl9pZCAoYW5kIHJlbmFtZSB0aGF0IGZ1bmN0 aW9uIHRvIHRlc3RfZmI/KS4NCj4gPiA+IA0KPiA+ID4gSXQgdHJpZXMgdG8gdGVzdCB0aGF0IHlv dSBjYW4ndCB0cmljayB0aGUgZHJpdmVyIHRvIGRvIGFueSB3b3JrIG9uIGEgZmVuY2UgaWYNCj4g PiA+IHRoZSBmcmFtZWJ1ZmZlciBpcyBpbnZhbGlkLCBzbyB0aGUgc2V0IG9mIHRlc3RzIHRyaWVz OiBubyBmYiB3aXRoIHZhbGlkIGZlbmNlLA0KPiA+ID4gaW52YWxpZCBmYiB3aXRoIHZhbGlkIGZl bmNlLCB2YWxpZCBmYiBidXQgaW52YWxpZCBmZW5jZSBhbmQgYXNzdW1lcyB0aGF0IG5vDQo+ID4g PiBmYiB3aXRoIGludmFsaWQgZmVuY2UgaXMgYSBOT1AgYW55d2F5Lg0KPiA+IA0KPiA+IFllYWgs IHRoYXQgbWFrZXMgc2Vuc2UsIGl0J3MganVzdCBjb25mdXNpbmcgdG8gcHV0IGl0IGluIGEgZnVu Y3Rpb24NCj4gPiBuYW1lZCBpbnZhbGlkX291dF9mZW5jZS4gSGVyZSB0aGUgb3V0IGZlbmNlIGlz IHZhbGlkLCBidXQgdGhlIG91dHB1dA0KPiA+IGJ1ZmZlciBpc24ndCwgc28gaXQgc2hvdWxkIHBy b2JhYmx5IGJlIG1vdmVkIGF3YXkgKG9yIHRoaXMgZnVuY3Rpb24NCj4gPiBzaG91bGQgYmUgcmVu YW1lZCkuDQo+IA0KPiBEb24ndCB3YW50IHRvIG9mZmVuZCBvciBhbnl0aGluZywgYnV0IHRoaXMg ZG9lcyBzb3VuZCBsaWtlIGJpa2VzaGVkZGluZy4gWW91DQo+IGhhdmUgYSBjb3VwbGUgb2YgcGFy YW1ldGVycyB0aGF0IHlvdSB3YW50IHRvIGhhdmUgYSB0ZXN0IGZvciBiZWNhdXNlIHRoZXkgYXJl DQo+IGxpbmtlZCB0b2dldGhlciAob3V0cHV0IGZyYW1lYnVmZmVyIGFuZCBmZW5jZSkgYW5kIHlv dSBnbyB0aHJvdWdoIHRoZQ0KPiBjb21iaW5hdGlvbiBvZiBwb3NzaWJsZSBiYWQgb3B0aW9ucyBp biB0aGUgdGVzdC4gTm90IHN1cmUgd2hhdCBuYW1lIHdlIGNhbiB1c2UNCj4gZm9yIHRoZSBmdW5j dGlvbiwgb3RoZXIgdGhhbiBtYXliZSAndGVzdF9pbnZhbGlkX3BhcmFtZXRlcnMnPyBHaXZlbiB0 aGF0IDIvMw0KPiB0ZXN0cyBhbiBpbnZhbGlkIG91dCBmZW5jZSwgdGhlIG5hbWUgd2FzIHRob3Vn aHQgdG8gYmUgcmVsZXZhbnQuDQo+IA0KPiBIYXZpbmcgaW52YWxpZCBvdXQgYnVmZmVyIHRlc3Qg c2VwYXJhdGUgaW50byBpdHMgb3duIHRlc3QgYnJpbmdzIG5vIGJlbmVmaXRzLCBJTUhPLg0KDQpX ZWxsLCB0aGUgaXNzdWUgaXMgdGhhdCBJJ3ZlIGJlZW4gY29uZnVzZWQgd2hlbiByZXZpZXdpbmcg dGhlIHBhdGNoDQpzZXJpZXMuIEkgaGFkIHRyb3VibGUgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSB0 ZXN0IGRvZXMgYW5kIHdoeS4gSSBhbHNvDQpoYWQgdHJvdWJsZSB0byBpZGVudGlmeSB0aGF0IGRv X3dyaXRlYmFja190ZXN0IG5ldmVyIHN1Ym1pdHMgYQ0Kd3JpdGViYWNrIG9wZXJhdGlvbiAoc2Vl IG90aGVyIGUtbWFpbCkuDQoNCkEgbmFtZSB0aGF0IGlzIHJlbGV2YW50ICJhbGwgdGhlIHRpbWUs IG1vc3Qgb2YgdGhlIHRpbWUiLCBpcyBub3QNCnJlbGV2YW50IGF0IGFsbCBpbiBteSBvcGluaW9u LiBJdCBqdXN0IHRyaWNrcyB0aGUgcmVhZGVyIGludG8gdGhpbmtpbmcNCnRoZSB0ZXN0IGRvZXMg b25lIHRoaW5nLCB3aGlsZSBpdCBhbHNvIGRvZXMgc29tZXRoaW5nIGVsc2UuDQoNCklmIGl0IHdv dWxkIGJlIG9idmlvdXMsIEkgd291bGRuJ3QgbWluZC4gQnV0IGhlcmUgSU1ITyBpdCBodXJ0cw0K cmVhZGFiaWxpdHkuIFNvIEknZCBwcmVmZXIgdG8gcmVuYW1lIHRoZSBmdW5jdGlvbi4NCg0KSWYg eW91IHRoaW5rIGl0J3Mgb2J2aW91cywgdGhlbiBtYXliZSBpdCdzIGp1c3QgbWUuIEknZCBsb3Zl IHRvIGhlYXINCmZyb20gb3RoZXJzIGlmIHRoZXkgaGF2ZSBhIGRpZmZlcmVudCBvcGluaW9uLg0K DQooQXMgYSBzaWRlIG5vdGUsIEkgYWdyZWUgSSBoYXZlIGEgdGVuZGVuY3kgdG8gYmlrZXNoZWQs IEkgdHJ5IHRvIG1hcmsNCm15IGJpa2VzaGVkZGluZ3MgYmVoaW5kICJuaXQ6IiBmbGFncy4pDQoN Cj4gQmVzdCByZWdhcmRzLA0KPiBMaXZpdQ0KPiANCj4gPiA+ID4gPiA+ICsJCXsNCj4gPiA+ID4g PiA+ICsJCQkvKiBJbnZhbGlkIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSLiAqLw0KPiA+ID4gPiA+ ID4gKwkJCS5mYl9pZCA9IHZhbGlkX2ZiLT5mYl9pZCwNCj4gPiA+ID4gPiA+ICsJCQkucHRyX3Zh bGlkID0gZmFsc2UsDQo+ID4gPiA+ID4gPiArCQkJLm91dF9mZW5jZV9wdHIgPSAoaW50MzJfdCAq KTB4OCwNCj4gPiA+ID4gPiA+ICsJCX0sDQo+ID4gPiA+ID4gPiArCX07DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGludmFsaWRfdGVzdHMp OyBpKyspIHsNCj4gPiA+ID4gPiA+ICsJCXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwg RFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsDQo+ID4gPiA+ID4gPiArCQkJCQlpbnZhbGlk X3Rlc3RzW2ldLmZiX2lkLA0KPiA+ID4gPiA+ID4gKwkJCQkJaW52YWxpZF90ZXN0c1tpXS5vdXRf ZmVuY2VfcHRyLA0KPiA+ID4gPiA+ID4gKwkJCQkJaW52YWxpZF90ZXN0c1tpXS5wdHJfdmFsaWQp Ow0KPiA+ID4gPiA+ID4gKwkJaWd0X2Fzc2VydChyZXQgIT0gMCk7DQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gTWF5YmUgd2UgY2FuIGNoZWNrIGZvciAtcmV0ID09IEVJTlZBTD8NCj4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICtzdGF0aWMgdm9pZCB3cml0ZWJhY2tfZmJfaWQoaWd0X291dHB1dF90ICpvdXRwdXQsIGln dF9mYl90ICp2YWxpZF9mYiwgaWd0X2ZiX3QgKmludmFsaWRfZmIpDQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gaW52YWxpZF9mYiBkb2Vzbid0IHNlZW0gdG8gYmUgdXNlZCBoZXJlLiB2YWxpZF9mYiBz ZWVtcyB0byBiZSBzZXQgdG8NCj4gPiA+ID4gPiB0aGUgaW5wdXQgZnJhbWVidWZmZXIuIEl0J3Mg cHJvYmFibHkgbm90IGEgZ29vZCBpZGVhIHRvIHVzZSB0aGUgc2FtZSBGQg0KPiA+ID4gPiA+IGZv ciBpbnB1dCBhbmQgd3JpdGViYWNrIG91dHB1dC4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ICt7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCWludCByZXQ7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArCS8qIFZhbGlkIG91dHB1dCBidWZmZXIgKi8NCj4gPiA+ID4gPiA+ICsJcmV0 ID0gZG9fd3JpdGViYWNrX3Rlc3Qob3V0cHV0LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNF VCwNCj4gPiA+ID4gPiA+ICsJCQkJdmFsaWRfZmItPmZiX2lkLCBOVUxMLCBmYWxzZSk7DQo+ID4g PiA+ID4gPiArCWlndF9hc3NlcnQocmV0ID09IDApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKwkvKiBJbnZhbGlkIG9iamVjdCBmb3IgV1JJVEVCQUNLX0ZCX0lEICovDQo+ID4gPiA+ID4g PiArCXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FMTE9X X01PREVTRVQsDQo+ID4gPiA+ID4gPiArCQkJCW91dHB1dC0+aWQsIE5VTEwsIGZhbHNlKTsNCj4g PiA+ID4gPiA+ICsJaWd0X2Fzc2VydChyZXQgPT0gLUVJTlZBTCk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArCS8qIFplcm8gV1JJVEVCQUNLX0ZCX0lEICovDQo+ID4gPiA+ID4gPiArCXJl dCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVT RVQsDQo+ID4gPiA+ID4gPiArCQkJCTAsIE5VTEwsIGZhbHNlKTsNCj4gPiA+ID4gPiA+ICsJaWd0 X2Fzc2VydChyZXQgPT0gMCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gK2lndF9tYWluDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKwlpZ3RfZGlzcGxh eV90IGRpc3BsYXk7DQo+ID4gPiA+ID4gPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiA+ID4g PiA+ID4gKwlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+ID4gPiA+ID4gPiArCWlndF9mYl90IGlucHV0 X2ZiOw0KPiA+ID4gPiA+ID4gKwlkcm1Nb2RlTW9kZUluZm8gbW9kZTsNCj4gPiA+ID4gPiA+ICsJ aW50IHJldDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJbWVtc2V0KCZkaXNwbGF5LCAw LCBzaXplb2YoZGlzcGxheSkpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwlpZ3RfZml4 dHVyZSB7DQo+ID4gPiA+ID4gPiArCQlkaXNwbGF5LmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9t YXN0ZXIoRFJJVkVSX0FOWSk7DQo+ID4gPiA+ID4gPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZk aXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQlr bXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQlpZ3RfcmVxdWlyZShkaXNwbGF5LmlzX2F0b21pYyk7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQlvdXRwdXQgPSBrbXNfd3JpdGViYWNrX2dl dF9vdXRwdXQoJmRpc3BsYXkpOw0KPiA+ID4gPiA+ID4gKwkJaWd0X3JlcXVpcmUob3V0cHV0KTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJCWlmIChvdXRwdXQtPnVzZV9vdmVycmlkZV9t b2RlKQ0KPiA+ID4gPiA+ID4gKwkJCW1lbWNweSgmbW9kZSwgJm91dHB1dC0+b3ZlcnJpZGVfbW9k ZSwgc2l6ZW9mKG1vZGUpKTsNCj4gPiA+ID4gPiA+ICsJCWVsc2UNCj4gPiA+ID4gPiA+ICsJCQlt ZW1jcHkoJm1vZGUsICZvdXRwdXQtPmNvbmZpZy5kZWZhdWx0X21vZGUsIHNpemVvZihtb2RlKSk7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsNCj4gPiA+ID4gPiA+ICsJ CWlndF9yZXF1aXJlKHBsYW5lKTsNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBNYXliZSB3ZSBjYW4g YXNzZXJ0IG9uIHRoaXM/DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiArCQlyZXQgPSBpZ3RfY3Jl YXRlX2ZiKGRpc3BsYXkuZHJtX2ZkLCBtb2RlLmhkaXNwbGF5LA0KPiA+ID4gPiA+ID4gKwkJCQkg ICAgbW9kZS52ZGlzcGxheSwNCj4gPiA+ID4gPiA+ICsJCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsDQo+ID4gPiA+ID4gPiArCQkJCSAgICBpZ3RfZmJfbW9kX3RvX3RpbGluZygwKSwNCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiBUaGlzIGlzIHN1cHBvc2VkIHRvIHRha2UgYSBtb2RpZmllci4gRFJN X0ZPUk1BVF9NT0RfTElORUFSIHdvdWxkIGJlDQo+ID4gPiA+ID4gYmV0dGVyIHRvIG1ha2UgdGhp cyBjbGVhci4NCj4gPiA+IA0KPiA+ID4gQWdyZWUuIFRoZSBwYXRjaHNldCBwcmUtZGF0ZXMgdGhl IG1vZGlmaWVycyBzdXBwb3J0IChvciBoYXMgdGhlIHNhbWUgYWdlLCBJDQo+ID4gPiBmb3Jnb3Qp DQo+ID4gPiANCj4gPiA+ID4gPiAoQXBwbGllcyB0byBvdGhlciBsaW5lcyBvZiB0aGlzIHBhdGNo KQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgJmlucHV0X2ZiKTsNCj4gPiA+ID4g PiA+ICsJCWlndF9hc3NlcnQocmV0ID49IDApOw0KPiA+ID4gPiA+ID4gKwkJaWd0X3BsYW5lX3Nl dF9mYihwbGFuZSwgJmlucHV0X2ZiKTsNCj4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKwlpZ3Rfc3VidGVzdCgid3JpdGViYWNrLXBpeGVsLWZvcm1hdHMiKSB7DQo+ ID4gPiA+ID4gPiArCQlkcm1Nb2RlUHJvcGVydHlCbG9iUmVzICpmb3JtYXRzX2Jsb2IgPSBnZXRf d3JpdGViYWNrX2Zvcm1hdHNfYmxvYihvdXRwdXQpOw0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IE5l ZWQgdG8gZHJtTW9kZUZyZWVQcm9wZXJ0eUJsb2IgdGhpcy4NCj4gPiA+ID4gPiANCj4gPiA+ID4g PiA+ICsJCWNvbnN0IGNoYXIgKnZhbGlkX2NoYXJzID0gIjAxMjM0NTYgQUJDR05SVVZYWSI7DQo+ ID4gPiA+ID4gPiArCQl1bnNpZ25lZCBpbnQgaTsNCj4gPiA+ID4gPiA+ICsJCWNoYXIgKmM7DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQkvKg0KPiA+ID4gPiA+ID4gKwkJICogV2UgZG9u J3QgaGF2ZSBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiBmb3JtYXRzLCBzbyBqdXN0IGNoZWNrDQo+ ID4gPiA+ID4gPiArCQkgKiB0aGF0IHRoZSBibG9iIGxlbmd0aCBpcyBzZW5zaWJsZSBhbmQgdGhh dCBpdCBkb2Vzbid0IGNvbnRhaW4NCj4gPiA+ID4gPiA+ICsJCSAqIGFueSBvdXRsYW5kaXNoIGNo YXJhY3RlcnMNCj4gPiA+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiA+ID4gKwkJaWd0X2Fzc2VydCgh KGZvcm1hdHNfYmxvYi0+bGVuZ3RoICUgNCkpOw0KPiA+ID4gPiA+ID4gKwkJYyA9IGZvcm1hdHNf YmxvYi0+ZGF0YTsNCj4gPiA+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2Jsb2It Pmxlbmd0aDsgaSsrKQ0KPiA+ID4gPiA+ID4gKwkJCWlndF9hc3NlcnRfZihzdHJjaHIodmFsaWRf Y2hhcnMsIGNbaV0pLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgICJVbmV4cGVjdGVkIGNoYXJhY3Rl ciAlY1xuIiwgY1tpXSk7DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gSG9uZXN0bHksIEknbSBub3Qg YSBmYW4gb2YgdGhpcyBjaGVjay4gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBmb3VyY2MNCj4g PiA+ID4gPiBjb2RlcyB3aWxsIGJlIG1hZGUgZnJvbSBBU0NJSSBjaGFyYWN0ZXJzLCBpbiBmYWN0 IHNvbWUgZm9ybWF0cyBhbHJlYWR5DQo+ID4gPiA+ID4gaGF2ZSBub24tcHJpbnRhYmxlIGNoYXJz IGluIHRoZW0uIEkgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIHVwZGF0ZSB0aGlzDQo+ID4gPiA+ID4g dGVzdCB3aGVuIGEgbmV3IGZvdXJjYyBmb3JtYXQgaXMgYWRkZWQuDQo+ID4gPiANCj4gPiA+IExp a2UgdGhlIGNvbW1lbnRzIHNheXMsIHdlIGRvbid0IGhhdmUgYSBmdWxsIGxpc3Qgb2YgZm9ybWF0 cyB0byBjaGVjayBhZ2FpbnN0Lg0KPiA+ID4gU3VnZ2VzdGlvbnMgb24gaG93IHRvIGltcHJvdmUg YXJlIHdlbGNvbWUsIGJ1dCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBkZWxheQ0KPiA+ID4gKGFu eSBsb25nZXIpIHRoZSBwYXRjaHNldCBkdWUgdG8gdGhpcy4NCj4gPiANCj4gPiBBZ3JlZWQuDQo+ ID4gDQo+ID4gPiBCZXN0IHJlZ2FyZHMsDQo+ID4gPiBMaXZpdQ0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2