From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH igt] gem_concurrent_blit: Don't call igt_require() outside of a subtest/fixture Date: Mon, 11 Jan 2016 09:00:13 +0100 Message-ID: <20160111080013.GJ8076@phenom.ffwll.local> References: <1452244238-3882-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2CA306E20B for ; Mon, 11 Jan 2016 00:00:13 -0800 (PST) Received: by mail-wm0-f67.google.com with SMTP id u188so25027063wmu.0 for ; Mon, 11 Jan 2016 00:00:13 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452244238-3882-1-git-send-email-chris@chris-wilson.co.uk> 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: Daniel Vetter , intel-gfx@lists.freedesktop.org, Thomas Wood List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMDgsIDIwMTYgYXQgMDk6MTA6MzhBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IGdlbV9jb25jdXJyZW50X2JsaXQgdHJpZXMgdG8gZW5zdXJlIHRoYXQgaXQgZG9lc24n dCB0cnkgYW5kIHJ1biBhIHRlc3QKPiB0aGF0IHdvdWxkIGdyaW5kIHRoZSBzeXN0ZW0gdG8gYSBo YWx0LCBpLmUuIHVuZXhwZWN0ZWRseSBjYXVzZSBzd2FwCj4gdGhyYXNoaW5nLiBJdCBjdXJyZW50 bHkgY2FsbHMgaW50ZWxfcmVxdWlyZV9tZW1vcnkoKSwgYnV0IG91dHNpZGUgb2YKPiB0aGUgc3Vi dGVzdCAoYXMgdGhlIHRlc3RzIHVzZSBmb3JrLCBpdCBjYW5ub3QgZG8gcmVxdWlyZW1lbnQgdGVz dGluZwo+IHdpdGhpbiB0aGUgdGVzdCBjaGlsZHJlbikgLSBidXQgaW50ZWxfcmVxdWlyZV9tZW1v cnkoKSBjYWxscwo+IGlndF9yZXF1aXJlKCkgYW5kIHRyaWdnZXJzIGFuZCBhYm9ydC4gV3JhcHBp bmcgdGhhdCBpbml0aWFsIHJlcXVpcmUKPiB3aXRoaW4gYW4gaWd0X2ZpeHR1cmUoKSBzdG9wcyB0 aGUgYWJvcnQoKSwgYnV0IGFsc28gcHJldmVudHMgYW55IGZ1cnRoZXIKPiB0ZXN0aW5nLgo+IAo+ IFRoaXMgcGF0Y2ggcmVzdHJ1Y3R1cmVzIHRoZSByZXF1aXJlbWVudCBjaGVja2luZyB0byBvcmRp bmFyeSBjb25kaXRpb25zLAo+IHdoaWNoIHRob3VnaCBhbGxvd2luZyB0aGUgdGVzdCB0byBydW4s IGFsc28gcHJldmVudHMgbGlzdGluZyBvZiBzdWJ0ZXN0cwo+IG9uIG1hY2hpbmVzIHdoaWNoIGNh bm5vdCBoYW5kbGUgdGhlbS4KCgo+IC0tLQo+ICBsaWIvaWd0X2F1eC5oICAgICAgICAgICAgICB8 ICAyICsrCj4gIGxpYi9pbnRlbF9vcy5jICAgICAgICAgICAgIHwgNTMgKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tCj4gIHRlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jIHwgNjcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVz IGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9saWIvaWd0X2F1eC5oIGIvbGliL2lndF9hdXguaAo+IGluZGV4IDZlMTFlZTYuLjVhODhj MmEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9hdXguaAo+ICsrKyBiL2xpYi9pZ3RfYXV4LmgKPiBA QCAtODgsNiArODgsOCBAQCB1aW50NjRfdCBpbnRlbF9nZXRfdG90YWxfc3dhcF9tYih2b2lkKTsK PiAgCj4gICNkZWZpbmUgQ0hFQ0tfUkFNIDB4MQo+ICAjZGVmaW5lIENIRUNLX1NXQVAgMHgyCj4g K2ludCBfX2ludGVsX2NoZWNrX21lbW9yeSh1aW50MzJfdCBjb3VudCwgdWludDY0X3Qgc2l6ZSwg dW5zaWduZWQgbW9kZSwKPiArCQkJIHVpbnQ2NF90ICpvdXRfcmVxdWlyZWQsIHVpbnQ2NF90ICpv dXRfdG90YWwpOwo+ICB2b2lkIGludGVsX3JlcXVpcmVfbWVtb3J5KHVpbnQzMl90IGNvdW50LCB1 aW50NjRfdCBzaXplLCB1bnNpZ25lZCBtb2RlKTsKPiAgaW50IGludGVsX251bV9vYmplY3RzX2Zv cl9tZW1vcnkodWludDMyX3Qgc2l6ZSwgdW5zaWduZWQgbW9kZSk7Cj4gIAo+IGRpZmYgLS1naXQg YS9saWIvaW50ZWxfb3MuYyBiL2xpYi9pbnRlbF9vcy5jCj4gaW5kZXggZGJhOWUxNy4uOTBmOWJi MyAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfb3MuYwo+ICsrKyBiL2xpYi9pbnRlbF9vcy5jCj4g QEAgLTE5Miw2ICsxOTIsMzggQEAgaW50ZWxfZ2V0X3RvdGFsX3N3YXBfbWIodm9pZCkKPiAgCXJl dHVybiByZXR2YWwgLyAoMTAyNCoxMDI0KTsKPiAgfQo+ICAKClBsZWFzZSBhZGQgdGhlIHVzdWFs IGd0a2RvYyBib2lsZXJwbGF0ZSBoZXJlIHdpdGggYSBtZW50aW9uIG9mCmludGVsX2NoZWNrX21l bW9yeS4gQWNrIHdpdGggdGhhdC4KLURhbmllbAoKPiAraW50IF9faW50ZWxfY2hlY2tfbWVtb3J5 KHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBtb2RlLAo+ICsJCQkgdWlu dDY0X3QgKm91dF9yZXF1aXJlZCwgdWludDY0X3QgKm91dF90b3RhbCkKPiArewo+ICsvKiByb3Vn aCBlc3RpbWF0ZSBvZiBob3cgbWFueSBieXRlcyB0aGUga2VybmVsIHJlcXVpcmVzIHRvIHRyYWNr IGVhY2ggb2JqZWN0ICovCj4gKyNkZWZpbmUgS0VSTkVMX0JPX09WRVJIRUFEIDUxMgo+ICsJdWlu dDY0X3QgcmVxdWlyZWQsIHRvdGFsOwo+ICsKPiArCXJlcXVpcmVkID0gY291bnQ7Cj4gKwlyZXF1 aXJlZCAqPSBzaXplICsgS0VSTkVMX0JPX09WRVJIRUFEOwo+ICsJcmVxdWlyZWQgPSBBTElHTihy ZXF1aXJlZCwgNDA5Nik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJDaGVja2luZyAlJ3Ugc3VyZmFjZXMg b2Ygc2l6ZSAlJ2xsdSBieXRlcyAodG90YWwgJSdsbHUpIGFnYWluc3QgJXMlc1xuIiwKPiArCQkg IGNvdW50LCAobG9uZyBsb25nKXNpemUsIChsb25nIGxvbmcpcmVxdWlyZWQsCj4gKwkJICBtb2Rl ICYgKENIRUNLX1JBTSB8IENIRUNLX1NXQVApID8gIlJBTSIgOiAiIiwKPiArCQkgIG1vZGUgJiBD SEVDS19TV0FQID8gIiArIHN3YXAiOiAiIik7Cj4gKwo+ICsJdG90YWwgPSAwOwo+ICsJaWYgKG1v ZGUgJiAoQ0hFQ0tfUkFNIHwgQ0hFQ0tfU1dBUCkpCj4gKwkJdG90YWwgKz0gaW50ZWxfZ2V0X2F2 YWlsX3JhbV9tYigpOwo+ICsJaWYgKG1vZGUgJiBDSEVDS19TV0FQKQo+ICsJCXRvdGFsICs9IGlu dGVsX2dldF90b3RhbF9zd2FwX21iKCk7Cj4gKwl0b3RhbCAqPSAxMDI0ICogMTAyNDsKPiArCj4g KwlpZiAob3V0X3JlcXVpcmVkKQo+ICsJCSpvdXRfcmVxdWlyZWQgPSByZXF1aXJlZDsKPiArCj4g KwlpZiAob3V0X3RvdGFsKQo+ICsJCSpvdXRfdG90YWwgPSB0b3RhbDsKPiArCj4gKwlyZXR1cm4g cmVxdWlyZWQgPCB0b3RhbDsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGludGVsX3JlcXVpcmVfbWVt b3J5Ogo+ICAgKiBAY291bnQ6IG51bWJlciBvZiBzdXJmYWNlcyB0aGF0IHdpbGwgYmUgY3JlYXRl ZAo+IEBAIC0yMTcsMjcgKzI0OSwxMCBAQCBpbnRlbF9nZXRfdG90YWxfc3dhcF9tYih2b2lkKQo+ ICAgKi8KPiAgdm9pZCBpbnRlbF9yZXF1aXJlX21lbW9yeSh1aW50MzJfdCBjb3VudCwgdWludDY0 X3Qgc2l6ZSwgdW5zaWduZWQgbW9kZSkKPiAgewo+IC0vKiByb3VnaCBlc3RpbWF0ZSBvZiBob3cg bWFueSBieXRlcyB0aGUga2VybmVsIHJlcXVpcmVzIHRvIHRyYWNrIGVhY2ggb2JqZWN0ICovCj4g LSNkZWZpbmUgS0VSTkVMX0JPX09WRVJIRUFEIDUxMgo+ICAJdWludDY0X3QgcmVxdWlyZWQsIHRv dGFsOwo+ICAKPiAtCXJlcXVpcmVkID0gY291bnQ7Cj4gLQlyZXF1aXJlZCAqPSBzaXplICsgS0VS TkVMX0JPX09WRVJIRUFEOwo+IC0JcmVxdWlyZWQgPSBBTElHTihyZXF1aXJlZCwgNDA5Nik7Cj4g LQo+IC0JaWd0X2RlYnVnKCJDaGVja2luZyAlJ3Ugc3VyZmFjZXMgb2Ygc2l6ZSAlJ2xsdSBieXRl cyAodG90YWwgJSdsbHUpIGFnYWluc3QgJXMlc1xuIiwKPiAtCQkgIGNvdW50LCAobG9uZyBsb25n KXNpemUsIChsb25nIGxvbmcpcmVxdWlyZWQsCj4gLQkJICBtb2RlICYgKENIRUNLX1JBTSB8IENI RUNLX1NXQVApID8gIlJBTSIgOiAiIiwKPiAtCQkgIG1vZGUgJiBDSEVDS19TV0FQID8gIiArIHN3 YXAiOiAiIik7Cj4gLQo+IC0JdG90YWwgPSAwOwo+IC0JaWYgKG1vZGUgJiAoQ0hFQ0tfUkFNIHwg Q0hFQ0tfU1dBUCkpCj4gLQkJdG90YWwgKz0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpOwo+IC0J aWYgKG1vZGUgJiBDSEVDS19TV0FQKQo+IC0JCXRvdGFsICs9IGludGVsX2dldF90b3RhbF9zd2Fw X21iKCk7Cj4gLQl0b3RhbCAqPSAxMDI0ICogMTAyNDsKPiAtCj4gLQlpZ3Rfc2tpcF9vbl9mKHRv dGFsIDw9IHJlcXVpcmVkLAo+ICsJaWd0X3NraXBfb25fZighX19pbnRlbF9jaGVja19tZW1vcnko Y291bnQsIHNpemUsIG1vZGUsCj4gKwkJCQkJICAgICZyZXF1aXJlZCwgJnRvdGFsKSwKPiAgCQkg ICAgICAiRXN0aW1hdGVkIHRoYXQgd2UgbmVlZCAlJ2xsdSBieXRlcyBmb3IgdGhlIHRlc3QsIGJ1 dCBvbmx5IGhhdmUgJSdsbHUgYnl0ZXMgYXZhaWxhYmxlICglcyVzKVxuIiwKPiAgCQkgICAgICAo bG9uZyBsb25nKXJlcXVpcmVkLCAobG9uZyBsb25nKXRvdGFsLAo+ICAJCSAgICAgIG1vZGUgJiAo Q0hFQ0tfUkFNIHwgQ0hFQ0tfU1dBUCkgPyAiUkFNIiA6ICIiLAo+IGRpZmYgLS1naXQgYS90ZXN0 cy9nZW1fY29uY3VycmVudF9hbGwuYyBiL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCj4gaW5k ZXggMGU4NzNjNC4uOWEyZmI2ZCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9nZW1fY29uY3VycmVudF9h bGwuYwo+ICsrKyBiL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCj4gQEAgLTE1NSw5ICsxNTUs OSBAQCBzdGF0aWMgYm9vbCBjYW5fY3JlYXRlX3N0b2xlbih2b2lkKQo+ICBzdGF0aWMgZHJtX2lu dGVsX2JvICoKPiAgKCpjcmVhdGVfZnVuYykoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50 NjRfdCBzaXplKTsKPiAgCj4gLXN0YXRpYyB2b2lkIGNyZWF0ZV9jcHVfcmVxdWlyZSh2b2lkKQo+ ICtzdGF0aWMgYm9vbCBjcmVhdGVfY3B1X3JlcXVpcmUodm9pZCkKPiAgewo+IC0JaWd0X3JlcXVp cmUoY3JlYXRlX2Z1bmMgIT0gY3JlYXRlX3N0b2xlbl9ibyk7Cj4gKwlyZXR1cm4gY3JlYXRlX2Z1 bmMgIT0gY3JlYXRlX3N0b2xlbl9ibzsKPiAgfQo+ICAKPiAgc3RhdGljIGRybV9pbnRlbF9ibyAq Cj4gQEAgLTM3NSw3ICszNzUsNyBAQCBncHVfY21wX2JvKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQz Ml90IHZhbCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkcm1faW50ZWxfYm8gKgo+ICAKPiAgY29u c3Qgc3RydWN0IGFjY2Vzc19tb2RlIHsKPiAgCWNvbnN0IGNoYXIgKm5hbWU7Cj4gLQl2b2lkICgq cmVxdWlyZSkodm9pZCk7Cj4gKwlib29sICgqcmVxdWlyZSkodm9pZCk7Cj4gIAl2b2lkICgqc2V0 X2JvKShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwsIGludCB3LCBpbnQgaCk7Cj4gIAl2 b2lkICgqY21wX2JvKShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwsIGludCB3LCBpbnQg aCwgZHJtX2ludGVsX2JvICp0bXApOwo+ICAJZHJtX2ludGVsX2JvICooKmNyZWF0ZV9ibykoZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwo+IEBAIC0xMjk0 LDIzICsxMjk0LDIyIEBAIHJ1bl9iYXNpY19tb2Rlcyhjb25zdCBjaGFyICpwcmVmaXgsCj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkCj4gLXJ1bl9tb2Rlcyhjb25zdCBjaGFyICpzdHlsZSwgY29uc3Qg c3RydWN0IGFjY2Vzc19tb2RlICptb2RlKQo+ICtydW5fbW9kZXMoY29uc3QgY2hhciAqc3R5bGUs IGNvbnN0IHN0cnVjdCBhY2Nlc3NfbW9kZSAqbW9kZSwgdW5zaWduZWQgYWxsb3dfbWVtKQo+ICB7 Cj4gLQlpZiAobW9kZS0+cmVxdWlyZSkKPiAtCQltb2RlLT5yZXF1aXJlKCk7Cj4gKwlpZiAobW9k ZS0+cmVxdWlyZSAmJiAhbW9kZS0+cmVxdWlyZSgpKQo+ICsJCXJldHVybjsKPiAgCj4gLQlpZ3Rf ZGVidWcoIiVzOiB1c2luZyAyeCVkIGJ1ZmZlcnMsIGVhY2ggMU1pQlxuIiwgc3R5bGUsIG51bV9i dWZmZXJzKTsKPiAtCWludGVsX3JlcXVpcmVfbWVtb3J5KDIqbnVtX2J1ZmZlcnMsIDEwMjQqMTAy NCwgQ0hFQ0tfUkFNKTsKPiArCWlndF9kZWJ1ZygiJXM6IHVzaW5nIDJ4JWQgYnVmZmVycywgZWFj aCAxTWlCXG4iLAo+ICsJCQlzdHlsZSwgbnVtX2J1ZmZlcnMpOwo+ICsJaWYgKCFfX2ludGVsX2No ZWNrX21lbW9yeSgyKm51bV9idWZmZXJzLCAxMDI0KjEwMjQsIGFsbG93X21lbSwKPiArCQkJCSAg TlVMTCwgTlVMTCkpCj4gKwkJcmV0dXJuOwo+ICAKPiAtCWlmIChhbGwpIHsKPiAtCQlydW5fYmFz aWNfbW9kZXMoc3R5bGUsIG1vZGUsICIiLCBydW5fc2luZ2xlKTsKPiAtCj4gLQkJaWd0X2Zvcmtf c2lnbmFsX2hlbHBlcigpOwo+IC0JCXJ1bl9iYXNpY19tb2RlcyhzdHlsZSwgbW9kZSwgIi1pbnRl cnJ1cHRpYmxlIiwgcnVuX2ludGVycnVwdGlibGUpOwo+IC0JCWlndF9zdG9wX3NpZ25hbF9oZWxw ZXIoKTsKPiAtCX0KPiArCXJ1bl9iYXNpY19tb2RlcyhzdHlsZSwgbW9kZSwgIiIsIHJ1bl9zaW5n bGUpOwo+ICAKPiAgCWlndF9mb3JrX3NpZ25hbF9oZWxwZXIoKTsKPiArCXJ1bl9iYXNpY19tb2Rl cyhzdHlsZSwgbW9kZSwgIi1pbnRlcnJ1cHRpYmxlIiwKPiArCQkJcnVuX2ludGVycnVwdGlibGUp Owo+ICAJcnVuX2Jhc2ljX21vZGVzKHN0eWxlLCBtb2RlLCAiLWZvcmtlZCIsIHJ1bl9mb3JrZWQp Owo+ICAJcnVuX2Jhc2ljX21vZGVzKHN0eWxlLCBtb2RlLCAiLWJvbWIiLCBydW5fYm9tYik7Cj4g IAlpZ3Rfc3RvcF9zaWduYWxfaGVscGVyKCk7Cj4gQEAgLTEzMjgsNiArMTMyNyw4IEBAIGlndF9t YWluCj4gIAkJeyAic3RvbGVuLSIsIGNyZWF0ZV9zdG9sZW5fYm8sIGNhbl9jcmVhdGVfc3RvbGVu IH0sCj4gIAkJeyBOVUxMLCBOVUxMIH0KPiAgCX0sICpjOwo+ICsJdm9pZCAqcGlubmVkOwo+ICsJ dWludDY0X3QgcGluX3N6Owo+ICAJaW50IGk7Cj4gIAo+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlv bigpOwo+IEBAIC0xMzU0LDcgKzEzNTUsNyBAQCBpZ3RfbWFpbgo+ICAJCWlmIChjLT5yZXF1aXJl KCkpIHsKPiAgCQkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMlcyIsIGMtPm5hbWUs ICJzbWFsbCIpOwo+ICAJCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhY2Nlc3NfbW9kZXMp OyBpKyspCj4gLQkJCQlydW5fbW9kZXMobmFtZSwgJmFjY2Vzc19tb2Rlc1tpXSk7Cj4gKwkJCQly dW5fbW9kZXMobmFtZSwgJmFjY2Vzc19tb2Rlc1tpXSwgQ0hFQ0tfUkFNKTsKPiAgCQl9Cj4gIAo+ ICAJCWlndF9maXh0dXJlIHsKPiBAQCAtMTM2NCw3ICsxMzY1LDcgQEAgaWd0X21haW4KPiAgCQlp ZiAoYy0+cmVxdWlyZSgpKSB7Cj4gIAkJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgIiVz JXMiLCBjLT5uYW1lLCAidGhyYXNoIik7Cj4gIAkJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGFjY2Vzc19tb2Rlcyk7IGkrKykKPiAtCQkJCXJ1bl9tb2RlcyhuYW1lLCAmYWNjZXNzX21vZGVz W2ldKTsKPiArCQkJCXJ1bl9tb2RlcyhuYW1lLCAmYWNjZXNzX21vZGVzW2ldLCBDSEVDS19SQU0p Owo+ICAJCX0KPiAgCj4gIAkJaWd0X2ZpeHR1cmUgewo+IEBAIC0xMzc0LDcgKzEzNzUsMzcgQEAg aWd0X21haW4KPiAgCQlpZiAoYy0+cmVxdWlyZSgpKSB7Cj4gIAkJCXNucHJpbnRmKG5hbWUsIHNp emVvZihuYW1lKSwgIiVzJXMiLCBjLT5uYW1lLCAiZnVsbCIpOwo+ICAJCQlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShhY2Nlc3NfbW9kZXMpOyBpKyspCj4gLQkJCQlydW5fbW9kZXMobmFtZSwg JmFjY2Vzc19tb2Rlc1tpXSk7Cj4gKwkJCQlydW5fbW9kZXMobmFtZSwgJmFjY2Vzc19tb2Rlc1tp XSwgQ0hFQ0tfUkFNKTsKPiArCQl9Cj4gKwo+ICsJCWlndF9maXh0dXJlIHsKPiArCQkJbnVtX2J1 ZmZlcnMgPSBnZW1fbWFwcGFibGVfYXBlcnR1cmVfc2l6ZSgpIC8gKDEwMjQgKiAxMDI0KTsKPiAr CQkJcGluX3N6ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIC0gbnVtX2J1ZmZlcnM7Cj4gKwo+ ICsJCQlpZ3RfZGVidWcoIlBpbm5pbmcgJWxkIE1pQlxuIiwgcGluX3N6KTsKPiArCQkJcGluX3N6 ICo9IDEwMjQgKiAxMDI0Owo+ICsKPiArCQkJaWYgKHBvc2l4X21lbWFsaWduKCZwaW5uZWQsIDQw OTYsIHBpbl9zeikgfHwKPiArCQkJICAgIG1sb2NrKHBpbm5lZCwgcGluX3N6KSB8fAo+ICsJCQkg ICAgbWFkdmlzZShwaW5uZWQsIHBpbl9zeiwgTUFEVl9ET05URk9SSykpIHsKPiArCQkJCWZyZWUo cGlubmVkKTsKPiArCQkJCXBpbm5lZCA9IE5VTEw7Cj4gKwkJCX0KPiArCQkJaWd0X3JlcXVpcmUo cGlubmVkKTsKPiArCQl9Cj4gKwo+ICsJCWlmIChjLT5yZXF1aXJlKCkpIHsKPiArCQkJc25wcmlu dGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMlcyIsIGMtPm5hbWUsICJzd2FwIik7Cj4gKwkJCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFjY2Vzc19tb2Rlcyk7IGkrKykKPiArCQkJCXJ1bl9t b2RlcyhuYW1lLCAmYWNjZXNzX21vZGVzW2ldLCBDSEVDS19SQU0gfCBDSEVDS19TV0FQKTsKPiAr CQl9Cj4gKwo+ICsJCWlndF9maXh0dXJlIHsKPiArCQkJaWYgKHBpbm5lZCkgewo+ICsJCQkJbXVu bG9jayhwaW5uZWQsIHBpbl9zeik7Cj4gKwkJCQlmcmVlKHBpbm5lZCk7Cj4gKwkJCQlwaW5uZWQg PSBOVUxMOwo+ICsJCQl9Cj4gIAkJfQo+ICAJfQo+ICB9Cj4gLS0gCj4gMi43LjAucmMzCj4gCgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK