From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH i-g-t 2/2] igt: Add VC4 purgeable BO tests Date: Wed, 27 Sep 2017 14:41:41 +0200 Message-ID: <20170927144141.5d9ea693@bbrezillon> References: <20170927115118.23170-1-boris.brezillon@free-electrons.com> <20170927115118.23170-3-boris.brezillon@free-electrons.com> <150651404896.4369.4400829087355747225@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 59E7B8938B for ; Wed, 27 Sep 2017 12:41:43 +0000 (UTC) In-Reply-To: <150651404896.4369.4400829087355747225@mail.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Intel GFX discussion List-Id: intel-gfx@lists.freedesktop.org SGkgQ2hyaXMsCgpPbiBXZWQsIDI3IFNlcCAyMDE3IDEzOjA3OjI4ICswMTAwCkNocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiB3cm90ZToKCj4gUXVvdGluZyBCb3JpcyBCcmV6 aWxsb24gKDIwMTctMDktMjcgMTI6NTE6MTgpCj4gPiBTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6 aWxsb24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+Cj4gPiAtLS0KPiA+ICB0 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgfCAgIDEgKwo+ID4gIHRlc3RzL3ZjNF9wdXJnZWFibGVf Ym8uYyB8IDI3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgdGVzdHMvdmM0X3B1cmdlYWJsZV9iby5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gaW5kZXgg MGFkYzI4YTAxNGQyLi5jNzhhYzlkMjc5MjEgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCj4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiBAQCAtOCw2ICs4 LDcgQEAgVkM0X1RFU1RTID0gXAo+ID4gICAgICAgICB2YzRfY3JlYXRlX2JvIFwKPiA+ICAgICAg ICAgdmM0X2RtYWJ1Zl9wb2xsIFwKPiA+ICAgICAgICAgdmM0X2xvb2t1cF9mYWlsIFwKPiA+ICsg ICAgICAgdmM0X3B1cmdlYWJsZV9ibyBcCj4gPiAgICAgICAgIHZjNF93YWl0X2JvIFwKPiA+ICAg ICAgICAgdmM0X3dhaXRfc2Vxbm8gXAo+ID4gICAgICAgICAkKE5VTEwpCj4gPiBkaWZmIC0tZ2l0 IGEvdGVzdHMvdmM0X3B1cmdlYWJsZV9iby5jIGIvdGVzdHMvdmM0X3B1cmdlYWJsZV9iby5jCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lM2VhZjBjMjQ1 NjMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rlc3RzL3ZjNF9wdXJnZWFibGVfYm8uYwo+ ID4gQEAgLTAsMCArMSwyNzQgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdodCDvv73vv70gMjAx NyBCcm9hZGNvbQo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0 d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK PiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiA+ICsg KiBJTiBUSEUgU09GVFdBUkUuCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImlndC5oIgo+ ID4gKyNpbmNsdWRlICJpZ3RfdmM0LmgiCj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gKyNp bmNsdWRlIDxzdGRsaWIuaD4KPiA+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiA+ICsjaW5jbHVkZSA8 c3RyaW5nLmg+Cj4gPiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gPiArI2luY2x1ZGUgPGludHR5cGVz Lmg+Cj4gPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4g PiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgo+ID4gKyNpbmNsdWRlICJ2YzRfZHJtLmgiCj4gPiAr Cj4gPiArc3RydWN0IGlndF92YzRfYm8gewo+ID4gKyAgICAgICBzdHJ1Y3QgaWd0X2xpc3Qgbm9k ZTsKPiA+ICsgICAgICAgaW50IGhhbmRsZTsKPiA+ICsgICAgICAgdm9pZCAqbWFwOwo+ID4gKyAg ICAgICBzaXplX3Qgc2l6ZTsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBqbXBfYnVmIGptcDsK PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpIHNpZ3RyYXAo aW50IHNpZykKPiA+ICt7Cj4gPiArICAgICAgIGxvbmdqbXAoam1wLCBzaWcpOwo+ID4gK30KPiA+ ICsKPiA+ICtzdGF0aWMgdm9pZCBpZ3RfdmM0X2FsbG9jX21tYXBfbWF4X2JvKGludCBmZCwgc3Ry dWN0IGlndF9saXN0ICpsaXN0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3Qgc2l6ZSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBpZ3RfdmM0X2JvICpi bzsKPiA+ICsgICAgICAgc3RydWN0IGRybV92YzRfY3JlYXRlX2JvIGNyZWF0ZSA9IHsKPiA+ICsg ICAgICAgICAgICAgICAuc2l6ZSA9IHNpemUsCj4gPiArICAgICAgIH07Cj4gPiArCj4gPiArICAg ICAgIHdoaWxlICh0cnVlKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGlndF9pb2N0bChmZCwg RFJNX0lPQ1RMX1ZDNF9DUkVBVEVfQk8sICZjcmVhdGUpKQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgYm8gPSBtYWxsb2Moc2l6ZW9m KCpibykpOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnQoYm8pOwo+ID4gKyAgICAgICAg ICAgICAgIGJvLT5oYW5kbGUgPSBjcmVhdGUuaGFuZGxlOwo+ID4gKyAgICAgICAgICAgICAgIGJv LT5zaXplID0gY3JlYXRlLnNpemU7Cj4gPiArICAgICAgICAgICAgICAgYm8tPm1hcCA9IGlndF92 YzRfbW1hcF9ibyhmZCwgYm8tPmhhbmRsZSwgYm8tPnNpemUsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKPiA+ICsg ICAgICAgICAgICAgICBpZ3RfbGlzdF9hZGRfdGFpbCgmYm8tPm5vZGUsIGxpc3QpOwo+ID4gKyAg ICAgICB9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGlndF92YzRfdW5tYXBfZnJlZV9i b19wb29sKGludCBmZCwgc3RydWN0IGlndF9saXN0ICpsaXN0KQo+ID4gK3sKPiA+ICsgICAgICAg c3RydWN0IGlndF92YzRfYm8gKmJvOwo+ID4gKwo+ID4gKyAgICAgICB3aGlsZSAoIWlndF9saXN0 X2VtcHR5KGxpc3QpKSB7Cj4gPiArICAgICAgICAgICAgICAgYm8gPSBpZ3RfbGlzdF9maXJzdF9l bnRyeShsaXN0LCBibywgbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgaWd0X2Fzc2VydChibyk7 Cj4gPiArICAgICAgICAgICAgICAgaWd0X2xpc3RfZGVsKCZiby0+bm9kZSk7Cj4gPiArICAgICAg ICAgICAgICAgbXVubWFwKGJvLT5tYXAsIGJvLT5zaXplKTsKPiA+ICsgICAgICAgICAgICAgICBn ZW1fY2xvc2UoZmQsIGJvLT5oYW5kbGUpOwo+ID4gKyAgICAgICAgICAgICAgIGZyZWUoYm8pOwo+ ID4gKyAgICAgICB9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGlndF92YzRfdHJpZ2dl cl9wdXJnZShpbnQgZmQpCj4gPiAreyAgCj4gCj4gTWF5IEkgc3VnZ2VzdCBhIC9wcm9jL3N5cy92 bS9kcm9wX2NhY2hlcy1lc3F1ZSBpbnRlcmZhY2U/Cj4gRm9yIHdoZW4geW91IHdhbnQgdG8gZXhw bGljaXRseSBjb250cm9sIHJlY2xhaW0uCgpFcmljIHN1Z2dlc3RlZCB0byBhZGQgYSBkZWJ1Z2Zz IGVudHJ5IHRvIGNvbnRyb2wgdGhlIHB1cmdlLCBJIGp1c3QKdGhvdWdodCBJIGRpZG4ndCByZWFs bHkgbmVlZCBpdCBzaW5jZSBJIGhhZCBhIHdheSB0byB0cmlnZ2VyIHRoaXMKbWVjaGFuaXNtIHdp dGhvdXQgYWRkaW5nIHlldCBhbm90aGVyIHVzZXJzcGFjZSAtPiBrZXJuZWwgaW50ZXJmYWNlIHRo YXQKd2lsbCBiZWNvbWUgcGFydCBvZiB0aGUgQUJJIGFuZCB3aWxsIGhhdmUgdG8gYmUgbWFpbnRh aW5lZCBmb3JldmVyLgoKSWYgeW91IHRoaW5rIHRoaXMgaXMgcHJlZmVyYWJsZSwgSSdsbCBnbyBm b3IgdGhlIGRlYnVnZnMgaG9vay4KCj4gCj4gPiArICAgICAgIHN0cnVjdCBpZ3RfbGlzdCBsaXN0 Owo+ID4gKwo+ID4gKyAgICAgICBpZ3RfbGlzdF9pbml0KCZsaXN0KTsKPiA+ICsKPiA+ICsgICAg ICAgLyogVHJ5IHRvIGFsbG9jYXRlIGFzIG11Y2ggYXMgd2UgY2FuIHRvIHRyaWdnZXIgYSBwdXJn ZS4gKi8KPiA+ICsgICAgICAgaWd0X3ZjNF9hbGxvY19tbWFwX21heF9ibyhmZCwgJmxpc3QsIDY0 ICogMTAyNCk7Cj4gPiArICAgICAgIGlndF9hc3NlcnQoIWlndF9saXN0X2VtcHR5KCZsaXN0KSk7 Cj4gPiArICAgICAgIGlndF92YzRfdW5tYXBfZnJlZV9ib19wb29sKGZkLCAmbGlzdCk7Cj4gPiAr fQo+ID4gKwo+ID4gK2lndF9tYWluCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgaWd0X3ZjNF9i byAqYm87Cj4gPiArICAgICAgIHN0cnVjdCBpZ3RfbGlzdCBsaXN0Owo+ID4gKyAgICAgICB1aW50 MzJfdCAqbWFwOwo+ID4gKyAgICAgICBpbnQgZmQsIHJldDsKPiA+ICsKPiA+ICsgICAgICAgaWd0 X2ZpeHR1cmUgewo+ID4gKyAgICAgICAgICAgICAgIGZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZF Ul9WQzQpOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9saXN0X2luaXQoJmxpc3QpOwo+ID4gKwo+ ID4gKyAgICAgICAgICAgICAgIGlndF92YzRfYWxsb2NfbW1hcF9tYXhfYm8oZmQsICZsaXN0LCA2 NCAqIDEwMjQpOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9hc3NlcnQoIWlndF9saXN0X2VtcHR5 KCZsaXN0KSk7Cj4gPiArICAgICAgIH0gIAo+IAo+IGlndF9zdWJ0ZXN0KCJtYXJrLXdpbGxuZWVk Iikgewo+IAkvKiBjaGVjayB0aGF0IHNldHRpbmcgd2lsbG5lZWQgb24gYSBuZXcgYm8gc2F5cyBy ZXRhaW5lZCAqLwo+IH0KCldpbGwgYWRkIHRoaXMgdGVzdCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgoK PiAKPiA+ICsKPiA+ICsgICAgICAgaWd0X3N1YnRlc3QoIm1hcmstcHVyZ2VhYmxlIikgewo+ID4g KyAgICAgICAgICAgICAgIGlndF9saXN0X2Zvcl9lYWNoKGJvLCAmbGlzdCwgbm9kZSkKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxl LCB0cnVlKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfbGlzdF9mb3JfZWFjaChibywg Jmxpc3QsIG5vZGUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZ3RfdmM0X3B1cmdlYWJs ZV9ibyhmZCwgYm8tPmhhbmRsZSwgZmFsc2UpOyAgCj4gCj4gSG1tLCBpZiB0aGlzIGZhaWxzIGVh cmx5LCB0aGUgc3RhdGUgb2YgdGhlIGxpc3QgaXMgdW5rbm93bi4gU3Vic2VxdWVudAo+IHRlc3Rz IGRlcGVuZCB1cG9uIHRoZSBzdGF0ZSBiZWluZyBrbm93bi4uLi4KCldlbGwsIHllcywgdGhhdCdz IG9uZSBvZiB0aGUgcHJvYmxlbSBJIGhhdmUgd2l0aCB0aGUgY3VycmVudAp2YzRfcHVyZ2VhYmxl X2JvIHRlc3RzdWl0ZS4gQXMgc29vbiBhcyBvbmUgc3VidGVzdCBmYWlscyBpdCdzIGxpa2VseSB0 bwppbXBhY3Qgb3RoZXIgc3VidGVzdHMuCgo+IAo+IEkgYW0gbm90IHN1cmUgaWYgeW91IHdhbnQg dG8gcHJlYWxsb2NhdGUgYWxsIHRoZSBibywgb3IgYXQgbGVhc3QgaWYgeW91Cj4gZG8geW91IHNo b3VsZCB3YWxrIHRoZSBsaXN0IGFuZCB2ZXJpZnkgdGhlbSBhdCB0aGUgc3RhcnQgb2YgZWFjaCBz dWJ0ZXN0LgoKT2theSwgSSdsbCBhbGxvY2F0ZSB0aGUgQk8gcG9vbCBhdCB0aGUgYmVnaW5uaW5n IG9mIGVhY2ggc3VidGVzdCBhbmQKcmVsZWFzZSBpdCBiZWZvcmUgbGVhdmluZyB0aGUgc3VidGVz dC4gTm90ZSB0aGF0IEknbSBub3QgZ3VhcmFudGVlZAp0aGF0IHRoZSByZWxlYXNlIG9wZXJhdGlv biB3b3Jrcywgd2hpY2ggbWVhbnMgdGhlIG5leHQgc3VidGVzdCBtaWdodApub3QgYmUgYWJsZSB0 byBhbGxvY2F0ZSBuZXcgQk9zIGFuZCB3aWxsIGZhaWwsIGJ1dCB0aGlzIGZhaWx1cmUgaXMKYWN0 dWFsbHkgY2F1c2VkIGJ5IHRoZSBwcmV2aW91cyBzdWJ0ZXN0IG5vdCB0aGUgb25lIHRoYXQgcmVw b3J0cyBhCmZhaWx1cmUgaW4gSUdULgoKPiAKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAg ICBpZ3Rfc3VidGVzdCgibWFyay1wdXJnZWFibGUtdHdpY2UiKSB7Cj4gPiArICAgICAgICAgICAg ICAgYm8gPSBpZ3RfbGlzdF9maXJzdF9lbnRyeSgmbGlzdCwgYm8sIG5vZGUpOwo+ID4gKyAgICAg ICAgICAgICAgIGlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxlLCB0cnVlKTsKPiA+ ICsgICAgICAgICAgICAgICBpZ3RfdmM0X3B1cmdlYWJsZV9ibyhmZCwgYm8tPmhhbmRsZSwgdHJ1 ZSk7Cj4gPiArICAgICAgICAgICAgICAgaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5k bGUsIGZhbHNlKTsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBpZ3Rfc3VidGVzdCgi bWFyay11bnB1cmdlYWJsZS10d2ljZSIpIHsKPiA+ICsgICAgICAgICAgICAgICBibyA9IGlndF9s aXN0X2ZpcnN0X2VudHJ5KCZsaXN0LCBibywgbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgaWd0 X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIHRydWUpOwo+ID4gKyAgICAgICAgICAg ICAgIGlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxlLCBmYWxzZSk7Cj4gPiArICAg ICAgICAgICAgICAgaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIGZhbHNlKTsK PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBpZ3Rfc3VidGVzdCgiYWNjZXNzLXB1cmdl YWJsZS1iby1tZW0iKSB7Cj4gPiArICAgICAgICAgICAgICAgYm8gPSBpZ3RfbGlzdF9maXJzdF9l bnRyeSgmbGlzdCwgYm8sIG5vZGUpOwo+ID4gKyAgICAgICAgICAgICAgIG1hcCA9ICh1aW50MzJf dCAqKWJvLT5tYXA7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgLyogTWFyayB0aGUgQk8gYXMg cHVyZ2VhYmxlLCBidXQgZG8gbm90IHRyeSB0byBhbGxvY2F0ZSBhIG5ldwo+ID4gKyAgICAgICAg ICAgICAgICAqIEJPLiBUaGlzIHNob3VsZCBsZWF2ZSB0aGUgQk8gaW4gYSBub24tcHVyZ2VkIHN0 YXRlIHVubGVzcwo+ID4gKyAgICAgICAgICAgICAgICAqIHNvbWVvbmUgZWxzZSB0cmllcyB0byBh bGxvY2F0ZWQgYSBuZXcgQk8uCj4gPiArICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAg ICAgICAgaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIHRydWUpOyAgCj4gCj4g RG8geW91IGRvIGltbWVkaWF0ZSByZWFwaW5nIG9mIGJhY2tpbmcgc3RvcmFnZSBhbmQgdm1hIG9u IHNldHRpbmcKPiBwdXJnZWFibGU/CgpOb3BlLgoKPiBJZiB0aGUgYm8gaGFzIGJlZW4gaW4gdXNl IGluIGVhcmxpZXIgdGVzdHMsIHRoZW4gaXQgd2lsbCBoYXZlCj4gcGFnZXMgdGhhdCBpdCBtYXkg bm90IGZyZWUgaW1tZWRpYXRlbHksIHNvIHRoZSBtYXBwaW5nIG1pZ2h0IHN1Y2NlZWQ/CgpJdCdz IGxpa2VseSB3aGF0IHdpbGwgaGFwcGVuLCBhbmQgdGhhdCdzIGFjdHVhbGx5IHdoYXQgSSBpbnRl bmRlZCB0bwp0ZXN0IGluaXRpYWxseS4gRXJpYyBqdXN0IHBvaW50ZWQgb3V0IHRoYXQgc29tZW9u ZSBlbHNlIChleHRlcm5hbCB0bwp0aGUgSUdUIHRlc3QpIG1pZ2h0IHRyaWdnZXIgYSBwdXJnZSBi ZXR3ZWVuIHRoZSBpZ3RfdmM0X3B1cmdlYWJsZV9ibygpCmFuZCB0aGUgKm1hcCBhY2Nlc3MuCgo+ IChTcG90cyB0aGUgcHVyZ2VkLWJvLW1lbSBsYXRlcikKPiAKPiBJIHBlcnNvbmFsbHkgaGF0ZSAi bWF5IiB0ZXN0cyB3aXRoIGEgcGFzc2lvbi4gSWYgdGhlIGV4cGVjdGVkIG91dGNvbWUgaXMKPiB1 bmNlcnRhaW4sIGhvdyBkbyB5b3Uga25vdyBpZiB3aGF0IGl0IGRpZCBtYXRjaGVzIGV4cGVjdGF0 aW9ucy4KCldlbGwsIGl0J3Mgbm90IGNvbXBsZXRlbHkgdW5jZXJ0YWluLCB3ZSBqdXN0IGhhdmUg MiB2YWxpZCByZXN1bHRzOgotIFNJR0JVUyBldmVudCBpcyByZWNlaXZlZCA9PiB0aGUgQk8gaGFz IGJlZW4gcHVyZ2VkCi0gbm90aGluZyBoYXBwZW5zIGFuZCB0aGUgKm1hcCBhc3NpZ25tZW50cyB3 b3JrcyA9PiB0aGUgQk8gaGFzIG5vdCBiZWVuCiAgcHVyZ2VkIHlldC4KCj4gCj4gPiArCj4gPiAr ICAgICAgICAgICAgICAgLyogQWNjZXNzaW5nIGEgcHVyZ2VhYmxlIEJPIG1heSBnZW5lcmF0ZSBh IFNJR0JVUyBldmVudCBpZiB0aGUKPiA+ICsgICAgICAgICAgICAgICAgKiBCTyBoYXMgYmVlbiBw dXJnZWQgYnkgdGhlIHN5c3RlbSBpbiB0aGUgbWVhbnRpbWUuCj4gPiArICAgICAgICAgICAgICAg ICovCj4gPiArICAgICAgICAgICAgICAgc2lnbmFsKFNJR1NFR1YsIHNpZ3RyYXApOwo+ID4gKyAg ICAgICAgICAgICAgIHNpZ25hbChTSUdCVVMsIHNpZ3RyYXApOwo+ID4gKyAgICAgICAgICAgICAg IHJldCA9IHNldGptcChqbXApOwo+ID4gKyAgICAgICAgICAgICAgIGlmICghcmV0KQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgKm1hcCA9IDB4ZGVhZGJlZWY7Cj4gPiArICAgICAgICAgICAg ICAgZWxzZQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydChyZXQgPT0gU0lH QlVTKTsKPiA+ICsgICAgICAgICAgICAgICBzaWduYWwoU0lHQlVTLCBTSUdfREZMKTsKPiA+ICsg ICAgICAgICAgICAgICBzaWduYWwoU0lHU0VHViwgU0lHX0RGTCk7Cj4gPiArICAgICAgIH0KPiA+ ICsgIAo+IAo+ID4gKyAgICAgICBpZ3Rfc3VidGVzdCgibWFyay11bnB1cmdlYWJsZS1ub3QtcHVy Z2VkIikgewo+ID4gKyAgICAgICAgICAgICAgIGlndF9saXN0X2Zvcl9lYWNoKGJvLCAmbGlzdCwg bm9kZSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gKHVpbnQzMl90ICopYm8t Pm1hcDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICptYXAgPSAweGRlYWRiZWVmOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5k bGUsIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIH0gIAo+IAo+IC8qIGxvdHMgb2YgaW50ZXJ2 ZW5pbmcgdGltZSBmb3IgdGhlIHN5c3RlbSB0byBjaGFuZ2Ugc3RhdGU/ICovCgpUaGF0J3MgdHJ1 ZS4KCj4gCj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWd0X2xpc3RfZm9yX2VhY2goYm8sICZs aXN0LCBub2RlKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtYXAgPSAodWludDMyX3Qg Kiliby0+bWFwOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydChpZ3RfdmM0 X3B1cmdlYWJsZV9ibyhmZCwgYm8tPmhhbmRsZSwgZmFsc2UpKTsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlndF9hc3NlcnQoKm1hcCA9PSAweGRlYWRiZWVmKTsKCkkgY2FuIGNoYW5nZSB0 aGUgYWJvdmUgMiBsaW5lcyBpbnRvOgoKCQkJaWYgKGlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBi by0+aGFuZGxlLCBmYWxzZSkpCgkJCQlpZ3RfYXNzZXJ0KCptYXAgPT0gMHhkZWFkYmVlZik7CgkJ CWVsc2UKCQkJCWlndF9hc3NlcnQoKm1hcCAhPSAweGRlYWRiZWVmKTsKCnNvIHRoYXQgaXQgd29y a3MgZXZlbiBpZiBzb21lb25lIHRyaWdnZXJlZCB0aGUgcHVyZ2UgYmV0d2VlbgppZ3RfdmM0X3B1 cmdlYWJsZV9ibyh0cnVlKSBhbmQgaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmFsc2UpLgoKPiA+ICsg ICAgICAgICAgICAgICB9Cj4gPiArICAgICAgIH0gIAoKClRoYW5rcyBmb3IgeW91ciByZXZpZXcu CgpCb3JpcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK