From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [PATCH 02/12] drm/i915/bdw: Abstract PDP usage Date: Wed, 18 Mar 2015 10:16:21 +0000 Message-ID: <55095075.6040006@intel.com> References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> <1424454366-19006-3-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 3CE176E7E8 for ; Wed, 18 Mar 2015 03:16:24 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: akash goel Cc: intel-gfx@lists.freedesktop.org, "Goel, Akash" List-Id: intel-gfx@lists.freedesktop.org T24gMy8zLzIwMTUgMTI6MTYgUE0sIGFrYXNoIGdvZWwgd3JvdGU6Cj4gT24gRnJpLCBGZWIgMjAs IDIwMTUgYXQgMTE6MTUgUE0sIE1pY2hlbCBUaGllcnJ5Cj4gPG1pY2hlbC50aGllcnJ5QGludGVs LmNvbT4gIHdyb3RlOgo+PiBGcm9tOiBCZW4gV2lkYXdza3k8YmVuamFtaW4ud2lkYXdza3lAaW50 ZWwuY29tPgo+Pgo+PiBVcCB1bnRpbCBub3csIHBwZ3R0LT5wZHAgaGFzIGFsd2F5cyBiZWVuIHRo ZSByb290IG9mIG91ciBwYWdlIHRhYmxlcy4KPj4gTGVnYWN5IDMyYiBhZGRyZXNzZXMgYWN0ZWQg bGlrZSBpdCBoYWQgMSBQRFAgd2l0aCA0IFBEUEVzLgo+Pgo+PiBJbiBwcmVwYXJhdGlvbiBmb3Ig NCBsZXZlbCBwYWdlIHRhYmxlcywgd2UgbmVlZCB0byBzdG9wIHVzZSBwcGd0dC0+cGRwCj4+IGRp cmVjdGx5IHVubGVzcyB3ZSBrbm93IGl0J3Mgd2hhdCB3ZSB3YW50LiBUaGUgZnV0dXJlIHN0cnVj dHVyZSB3aWxsIHVzZQo+PiBwcGd0dC0+cG1sNCBmb3IgdGhlIHRvcCBsZXZlbCwgYW5kIHRoZSBw ZHAgaXMganVzdCBvbmUgb2YgdGhlIGVudHJpZXMKPj4gYmVpbmcgcG9pbnRlZCB0byBieSBhIHBt bDRlLgo+Pgo+PiB2MjogVXBkYXRlZCBhZnRlciBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbiBjaGFu Z2VzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3k8YmVuQGJ3aWRhd3NrLm5ldD4K Pj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnk8bWljaGVsLnRoaWVycnlAaW50ZWwuY29t PiAgKHYyKQo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8 IDEyMyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPj4gICAxIGZpbGUgY2hh bmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4+IGluZGV4IDQ4OWY4ZGIuLmQzYWQ1MTcgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+IEBAIC01NjAsNiArNTYwLDcgQEAgc3RhdGlj IHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4+ICAg ICAgICAgICAgICAgICAgY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFz ZSk7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAq cGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KPj4gICAgICAgICAgZ2VuOF9ndHRf cHRlX3QgKnB0X3ZhZGRyLCBzY3JhdGNoX3B0ZTsKPj4gICAgICAgICAgdW5zaWduZWQgcGRwZSA9 IHN0YXJ0ID4+IEdFTjhfUERQRV9TSElGVCAmIEdFTjhfUERQRV9NQVNLOwo+PiAgICAgICAgICB1 bnNpZ25lZCBwZGUgPSBzdGFydCA+PiBHRU44X1BERV9TSElGVCAmIEdFTjhfUERFX01BU0s7Cj4+ IEBAIC01NzUsMTAgKzU3NiwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3Jhbmdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+PiAgICAgICAgICAgICAgICAgIHN0cnVj dCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0Owo+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBw YWdlICpwYWdlX3RhYmxlOwo+Pgo+PiAtICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0 LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV0pKQo+PiArICAgICAgICAgICAgICAgaWYgKFdBUk5f T04oIXBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0pKQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Cj4+Cj4+IC0gICAgICAgICAgICAgICBwZCA9IHBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbcGRwZV07Cj4+ICsgICAgICAgICAgICAgICBwZCA9IHBkcC0+cGFnZV9kaXJlY3Rv cnlbcGRwZV07Cj4+Cj4+ICAgICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBkLT5wYWdlX3Rh Ymxlc1twZGVdKSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiBAQCAt NjIwLDYgKzYyMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+ICAgewo+PiAgICAgICAgICBzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQgPQo+PiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZih2bSwg c3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+PiArICAgICAgIHN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBGSVhNRTogNDhi ICovCj4+ICAgICAgICAgIGdlbjhfZ3R0X3B0ZV90ICpwdF92YWRkcjsKPj4gICAgICAgICAgdW5z aWduZWQgcGRwZSA9IHN0YXJ0ID4+IEdFTjhfUERQRV9TSElGVCAmIEdFTjhfUERQRV9NQVNLOwo+ PiAgICAgICAgICB1bnNpZ25lZCBwZGUgPSBzdGFydCA+PiBHRU44X1BERV9TSElGVCAmIEdFTjhf UERFX01BU0s7Cj4+IEBAIC02MzAsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9p bnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4KPj4gICAgICAg ICAgZm9yX2VhY2hfc2dfcGFnZShwYWdlcy0+c2dsLCAmc2dfaXRlciwgcGFnZXMtPm5lbnRzLCAw KSB7Cj4+ICAgICAgICAgICAgICAgICAgaWYgKHB0X3ZhZGRyID09IE5VTEwpIHsKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkID0g cHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkID0gcGRwLT5wYWdlX2RpcmVj dG9yeVtwZHBlXTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2Vf dGFibGVfZW50cnkgKnB0ID0gcGQtPnBhZ2VfdGFibGVzW3BkZV07Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZV90YWJsZSA9IHB0LT5wYWdlOwo+Pgo+PiBAQCAt NzA4LDE2ICs3MTAsMTcgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCwgc3RydWN0IGQKPj4gICBzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPj4g ICB7Cj4+ICAgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpod2RldiA9IHBwZ3R0LT5iYXNlLmRldi0+ cGRldjsKPj4gKyAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5 ICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwo+PiAgICAgICAgICBpbnQgaSwg ajsKPj4KPj4gLSAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBl cywKPj4gKyAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBkcC0+dXNlZF9wZHBlcywKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgIEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYp KSB7Cj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkg KnBkOwo+Pgo+PiAtICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbaV0pKQo+PiArICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBkcC0+cGFnZV9k aXJlY3RvcnlbaV0pKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+Cj4+ IC0gICAgICAgICAgICAgICBwZCA9IHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV07Cj4+ICsg ICAgICAgICAgICAgICBwZCA9IHBkcC0+cGFnZV9kaXJlY3RvcnlbaV07Cj4+ICAgICAgICAgICAg ICAgICAgaWYgKCFwZC0+ZGFkZHIpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfdW5t YXBfcGFnZShod2RldiwgcGQtPmRhZGRyLCBQQUdFX1NJWkUsCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUENJX0RNQV9CSURJUkVDVElPTkFMKTsKPj4gQEAgLTc0 MywxNSArNzQ2LDIxIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfZnJlZShzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQpCj4+ICAgewo+PiAgICAgICAgICBpbnQgaTsKPj4KPj4gLSAgICAgICBm b3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KSkg ewo+PiAtICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rv cnlbaV0pKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKyAgICAgICBp ZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4+ICsgICAgICAg ICAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5i YXNlLmRldikpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0 LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwo+Pgo+PiAtICAgICAgICAgICAgICAgZ2VuOF9mcmVlX3BhZ2VfdGFibGVz KHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sIHBwZ3R0LT5iYXNlLmRldik7Cj4+IC0gICAg ICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wZChwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ld LCBwcGd0dC0+YmFzZS5kZXYpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBnZW44X2ZyZWVf cGFnZV90YWJsZXMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwZ3R0LT5iYXNlLmRldik7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHVubWFwX2FuZF9mcmVlX3BkKHBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbaV0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBwZ3R0LT5iYXNlLmRldik7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAg ICB1bm1hcF9hbmRfZnJlZV9wZHAoJnBwZ3R0LT5wZHAsIHBwZ3R0LT5iYXNlLmRldik7Cj4+ICsg ICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIEJVRygpOyAvKiB0byBiZSBpbXBsZW1l bnRlZCBsYXRlciAqLwo+PiAgICAgICAgICB9Cj4+IC0gICAgICAgdW5tYXBfYW5kX2ZyZWVfcGRw KCZwcGd0dC0+cGRwLCBwcGd0dC0+YmFzZS5kZXYpOwo+PiAgIH0KPj4KPj4gICBzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4+IEBA IC03NjUsNyArNzc0LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+Pgo+PiAgIC8qKgo+PiAgICAqIGdlbjhfcHBndHRfYWxs b2NfcGFnZXRhYnMoKSAtIEFsbG9jYXRlIHBhZ2UgdGFibGVzIGZvciBWQSByYW5nZS4KPj4gLSAq IEBwcGd0dDogICAgIE1hc3RlciBwcGd0dCBzdHJ1Y3R1cmUuCj4+ICsgKiBAdm06ICAgICAgICAg ICAgICAgIE1hc3RlciB2bSBzdHJ1Y3R1cmUuCj4+ICAgICogQHBkOiAgICAgICAgICAgICAgICBQ YWdlIGRpcmVjdG9yeSBmb3IgdGhpcyBhZGRyZXNzIHJhbmdlLgo+PiAgICAqIEBzdGFydDogICAg IFN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyB0byBiZWdpbiBhbGxvY2F0aW9ucy4KPj4gICAgKiBA bGVuZ3RoICAgICBTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KPj4gQEAgLTc4MSwxMiArNzkwLDEz IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSkKPj4gICAgKgo+PiAgICAqIFJldHVybjogMCBpZiBzdWNjZXNzOyBuZWdhdGl2ZSBl cnJvciBjb2RlIG90aGVyd2lzZS4KPj4gICAgKi8KPj4gLXN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9h bGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4+ICtzdGF0aWMgaW50 IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfZW50cnkgKnBkLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IHN0YXJ0LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IGxlbmd0aCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nICpuZXdfcHRzKQo+PiAgIHsKPj4gKyAgICAgICBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKPj4gICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV90 YWJsZV9lbnRyeSAqcHQ7Cj4+ICAgICAgICAgIHVpbnQ2NF90IHRlbXA7Cj4+ICAgICAgICAgIHVp bnQzMl90IHBkZTsKPj4gQEAgLTc5OSw3ICs4MDksNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRf YWxsb2NfcGFnZXRhYnMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4+ICAgICAgICAgICAgICAgICAgfQo+Pgo+PiAtICAg ICAgICAgICAgICAgcHQgPSBhbGxvY19wdF9zaW5nbGUocHBndHQtPmJhc2UuZGV2KTsKPj4gKyAg ICAgICAgICAgICAgIHB0ID0gYWxsb2NfcHRfc2luZ2xlKGRldik7Cj4+ICAgICAgICAgICAgICAg ICAgaWYgKElTX0VSUihwdCkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVud2lu ZF9vdXQ7Cj4+Cj4+IEBAIC04MTEsMTQgKzgyMSwxNCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRf YWxsb2NfcGFnZXRhYnMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+Pgo+PiAgIHVud2lu ZF9vdXQ6Cj4+ICAgICAgICAgIGZvcl9lYWNoX3NldF9iaXQocGRlLCBuZXdfcHRzLCBHRU44X1BE RVNfUEVSX1BBR0UpCj4+IC0gICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wdChwZC0+cGFn ZV90YWJsZXNbcGRlXSwgcHBndHQtPmJhc2UuZGV2KTsKPj4gKyAgICAgICAgICAgICAgIHVubWFw X2FuZF9mcmVlX3B0KHBkLT5wYWdlX3RhYmxlc1twZGVdLCBkZXYpOwo+Pgo+PiAgICAgICAgICBy ZXR1cm4gLUVOT01FTTsKPj4gICB9Cj4+Cj4+ICAgLyoqCj4+ICAgICogZ2VuOF9wcGd0dF9hbGxv Y19wYWdlX2RpcmVjdG9yaWVzKCkgLSBBbGxvY2F0ZSBwYWdlIGRpcmVjdG9yaWVzIGZvciBWQSBy YW5nZS4KPj4gLSAqIEBwcGd0dDogICAgIE1hc3RlciBwcGd0dCBzdHJ1Y3R1cmUuCj4+ICsgKiBA dm06ICAgICAgICAgICAgICAgIE1hc3RlciB2bSBzdHJ1Y3R1cmUuCj4+ICAgICogQHBkcDogICAg ICAgUGFnZSBkaXJlY3RvcnkgcG9pbnRlciBmb3IgdGhpcyBhZGRyZXNzIHJhbmdlLgo+PiAgICAq IEBzdGFydDogICAgIFN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyB0byBiZWdpbiBhbGxvY2F0aW9u cy4KPj4gICAgKiBAbGVuZ3RoICAgICBTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KPj4gQEAgLTgz OSwxNiArODQ5LDE3IEBAIHVud2luZF9vdXQ6Cj4+ICAgICoKPj4gICAgKiBSZXR1cm46IDAgaWYg c3VjY2VzczsgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4+ICAgICovCj4+IC1zdGF0 aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsCj4+ICtzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3Rv cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2Vu dHJ5ICpwZHAsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3Qgc3RhcnQsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgbGVuZ3RoLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgKm5ld19wZHMpCj4+ICAgewo+PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSB2bS0+ZGV2Owo+PiAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRy eSAqcGQ7Cj4+ICAgICAgICAgIHVpbnQ2NF90IHRlbXA7Cj4+ICAgICAgICAgIHVpbnQzMl90IHBk cGU7Cj4+IC0gICAgICAgc2l6ZV90IHBkcGVzID0gIEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+ YmFzZS5kZXYpOwo+PiArICAgICAgIHNpemVfdCBwZHBlcyA9ICBJOTE1X1BEUEVTX1BFUl9QRFAo dm0tPmRldik7Cj4+Cj4+ICAgICAgICAgIEJVR19PTighYml0bWFwX2VtcHR5KG5ld19wZHMsIHBk cGVzKSk7Cj4+Cj4+IEBAIC04NTksNyArODcwLDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2Fs bG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+PiAgICAg ICAgICAgICAgICAgIGlmIChwZCkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+Pgo+PiAtICAgICAgICAgICAgICAgcGQgPSBhbGxvY19wZF9zaW5nbGUocHBndHQtPmJhc2Uu ZGV2KTsKPj4gKyAgICAgICAgICAgICAgIHBkID0gYWxsb2NfcGRfc2luZ2xlKGRldik7Cj4+ICAg ICAgICAgICAgICAgICAgaWYgKElTX0VSUihwZCkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIHVud2luZF9vdXQ7Cj4+Cj4+IEBAIC04NzEsNyArODgyLDcgQEAgc3RhdGljIGludCBn ZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LAo+Pgo+PiAgIHVud2luZF9vdXQ6Cj4+ICAgICAgICAgIGZvcl9lYWNoX3NldF9iaXQocGRw ZSwgbmV3X3BkcywgcGRwZXMpCj4+IC0gICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wZChw ZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdLCBwcGd0dC0+YmFzZS5kZXYpOwo+PiArICAgICAgICAg ICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgZGV2KTsK Pj4KPj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICAgfQo+PiBAQCAtOTI2LDEzICs5Mzcs MTMgQEAgZXJyX291dDoKPj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICAgfQo+Pgo+PiAt c3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnQsCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsZW5ndGgpCj4+ICtzdGF0 aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBzdGFydCwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgbGVuZ3RoKQo+PiAgIHsKPj4gLSAgICAgICBzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQgPQo+PiAtICAgICAgICAgICAgICAgY29udGFpbmVyX29mKHZt LCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4+ICAgICAgICAgIHVuc2lnbmVkIGxvbmcg Km5ld19wYWdlX2RpcnMsICoqbmV3X3BhZ2VfdGFibGVzOwo+PiArICAgICAgIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSB2bS0+ZGV2Owo+PiAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeV9lbnRyeSAqcGQ7Cj4+ICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IG9yaWdfc3RhcnQgPSBz dGFydDsKPj4gICAgICAgICAgY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5ndGg7Cj4+ IEBAIC05NjEsMTcgKzk3MiwxNSBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPj4KPj4gICAgICAgICAgLyogRG8gdGhlIGFsbG9jYXRpb25zIGZpcnN0IHNvIHdlIGNhbiBl YXNpbHkgYmFpbCBvdXQgKi8KPj4gLSAgICAgICByZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2Vf ZGlyZWN0b3JpZXMocHBndHQsICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoLAo+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BhZ2VfZGlycyk7Cj4+ICsgICAg ICAgcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHZtLCBwZHAsIHN0YXJ0 LCBsZW5ndGgsIG5ld19wYWdlX2RpcnMpOwo+PiAgICAgICAgICBpZiAocmV0KSB7Cj4+ICAgICAg ICAgICAgICAgICAgZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFn ZV90YWJsZXMsIHBkcGVzKTsKPj4gICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiAgICAg ICAgICB9Cj4+Cj4+IC0gICAgICAgLyogRm9yIGV2ZXJ5IHBhZ2UgZGlyZWN0b3J5IHJlZmVyZW5j ZWQsIGFsbG9jYXRlIHBhZ2UgdGFibGVzICovCj4+IC0gICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBl KHBkLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRwZSkgewo+PiArICAgICAg IGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7 Cj4+ICAgICAgICAgICAgICAgICAgYml0bWFwX3plcm8obmV3X3BhZ2VfdGFibGVzW3BkcGVdLCBH RU44X1BERVNfUEVSX1BBR0UpOwo+PiAtICAgICAgICAgICAgICAgcmV0ID0gZ2VuOF9wcGd0dF9h bGxvY19wYWdldGFicyhwcGd0dCwgcGQsIHN0YXJ0LCBsZW5ndGgsCj4+ICsgICAgICAgICAgICAg ICByZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHZtLCBwZCwgc3RhcnQsIGxlbmd0aCwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19w YWdlX3RhYmxlc1twZHBlXSk7Cj4+ICAgICAgICAgICAgICAgICAgaWYgKHJldCkKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKPj4gQEAgLTk4MCwxMCArOTg5LDcgQEAg c3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+PiAgICAgICAgICBzdGFydCA9IG9yaWdfc3RhcnQ7Cj4+ICAgICAgICAgIGxlbmd0aCA9 IG9yaWdfbGVuZ3RoOwo+Pgo+PiAtICAgICAgIC8qIEFsbG9jYXRpb25zIGhhdmUgY29tcGxldGVk IHN1Y2Nlc3NmdWxseSwgc28gc2V0IHRoZSBiaXRtYXBzLCBhbmQgZG8KPj4gLSAgICAgICAgKiB0 aGUgbWFwcGluZ3MuICovCj4+IC0gICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCAmcHBndHQt PnBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRwZSkgewo+PiAtICAgICAgICAgICAgICAgZ2Vu OF9wcGd0dF9wZGVfdCAqY29uc3QgcGFnZV9kaXJlY3RvcnkgPSBrbWFwX2F0b21pYyhwZC0+cGFn ZSk7Cj4+ICsgICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgs IHRlbXAsIHBkcGUpIHsKPj4gICAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxl X2VudHJ5ICpwdDsKPj4gICAgICAgICAgICAgICAgICB1aW50NjRfdCBwZF9sZW4gPSBnZW44X2Ns YW1wX3BkKHN0YXJ0LCBsZW5ndGgpOwo+PiAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHBkX3N0 YXJ0ID0gc3RhcnQ7Cj4+IEBAIC0xMDA1LDIwICsxMDExLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9h bGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIE91ciBwZGUgaXMgbm93IHBvaW50aW5nIHRvIHRoZSBwYWdl dGFibGUsIHB0ICovCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0KHBkZSwgcGQt PnVzZWRfcGRlcyk7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgLyogTWFwIHRoZSBQ REUgdG8gdGhlIHBhZ2UgdGFibGUgKi8KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgX19nZW44 X2RvX21hcF9wdChwYWdlX2RpcmVjdG9yeSArIHBkZSwgcHQsIHZtLT5kZXYpOwo+PiAtCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgIC8qIE5COiBXZSBoYXZlbid0IHlldCBtYXBwZWQgcHRlcyB0 byBwYWdlcy4gQXQgdGhpcwo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgKiBwb2ludCB3ZSdy ZSBzdGlsbCByZWx5aW5nIG9uIGluc2VydF9lbnRyaWVzKCkgKi8KPj4gICAgICAgICAgICAgICAg ICB9Cj4+Cj4+IC0gICAgICAgICAgICAgICBpZiAoIUhBU19MTEModm0tPmRldikpCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgIGRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UocGFnZV9kaXJlY3Rvcnks IFBBR0VfU0laRSk7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgIGt1bm1hcF9hdG9taWMocGFnZV9k aXJlY3RvcnkpOwo+PiAtCj4+IC0gICAgICAgICAgICAgICBzZXRfYml0KHBkcGUsIHBwZ3R0LT5w ZHAudXNlZF9wZHBlcyk7Cj4+ICsgICAgICAgICAgICAgICBzZXRfYml0KHBkcGUsIHBkcC0+dXNl ZF9wZHBlcyk7Cj4+ICsgICAgICAgICAgICAgICBnZW44X21hcF9wYWdldGFibGVfcmFuZ2UocGQs IHN0YXJ0LCBsZW5ndGgsIGRldik7Cj4+ICAgICAgICAgIH0KPj4KPj4gICAgICAgICAgZnJlZV9n ZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsK Pj4gQEAgLTEwMjcsMTYgKzEwMjMsMzYgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3Jhbmdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+PiAgIGVycl9vdXQ6Cj4+ICAgICAgICAg IHdoaWxlIChwZHBlLS0pIHsKPj4gICAgICAgICAgICAgICAgICBmb3JfZWFjaF9zZXRfYml0KHRl bXAsIG5ld19wYWdlX3RhYmxlc1twZHBlXSwgR0VOOF9QREVTX1BFUl9QQUdFKQo+PiAtICAgICAg ICAgICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wdChwZC0+cGFnZV90YWJsZXNbdGVtcF0s IHZtLT5kZXYpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wdChw ZC0+cGFnZV90YWJsZXNbdGVtcF0sIGRldik7Cj4gU29ycnkgdGhlIHJldmlldyBjb21tZW50IG1h eSBub3QgYmUgY29tcGxldGVseSBwZXJ0aW5lbnQgdG8gdGhpcyB2ZXJ5IHBhdGNoLgo+IEluIHRo ZSB3aGlsZSBsb29wLCBvbiB0aGUgY2hhbmdlIG9mICdwZHBlJyB2YWx1ZSwgdGhlICdwZCcgaXMg bm90Cj4gYmVpbmcgdXBkYXRlZCBhY2NvcmRpbmdseS4KPiBUaGUgYWJvdmUgY2FsbCB0byAndW5t YXBfYW5kX2ZyZWVfcHQocGQtPnBhZ2VfdGFibGVbdGVtcF0sIGRldik7Jwo+IHNob3VsZCBiZSBy ZXBsYWNlZCB3aXRoCj4gICAgICAndW5tYXBfYW5kX2ZyZWVfcHQocGRwLT5wYWdlX2RpcmVjdG9y eVtwZHBlXS0+cGFnZV90YWJsZVt0ZW1wXSwgZGV2KTsnCj4gVGhpcyB3aWxsIGdpdmUgdGhlIHJp Z2h0IHBhZ2UgZGlyZWN0b3J5LgpGaXhlZCBpbiB0aGUgcGF0Y2ggdGhhdCBicmluZ3MgdGhpcyBj b2RlIChkcm0vaTkxNS9iZHc6IER5bmFtaWMgcGFnZSAKdGFibGUgYWxsb2NhdGlvbnMpLgoKPj4g ICAgICAgICAgfQo+Pgo+PiAgICAgICAgICBmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdl X2RpcnMsIHBkcGVzKQo+PiAtICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocHBndHQt PnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgdm0tPmRldik7Cj4+ICsgICAgICAgICAgICAgICB1 bm1hcF9hbmRfZnJlZV9wZChwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdLCBkZXYpOwo+Pgo+PiAg ICAgICAgICBmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19wYWdlX2RpcnMsIG5ld19wYWdlX3Rh YmxlcywgcGRwZXMpOwo+PiAgICAgICAgICByZXR1cm4gcmV0Owo+PiAgIH0KPj4KPj4gK3N0YXRp YyBpbnQgX19ub3JldHVybiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzdGFydCwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsZW5ndGgpCj4+ICt7 Cj4+ICsgICAgICAgQlVHKCk7IC8qIHRvIGJlIGltcGxlbWVudGVkIGxhdGVyICovCj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHN0 YXJ0LCB1aW50NjRfdCBsZW5ndGgpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0KPj4gKyAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5 MTVfaHdfcHBndHQsIGJhc2UpOwo+PiArCj4+ICsgICAgICAgaWYgKCFVU0VTX0ZVTExfNDhCSVRf UFBHVFQodm0tPmRldikpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gZ2VuOF9hbGxvY192YV9y YW5nZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7Cj4+ICsgICAgICAgZWxz ZQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bCh2bSwg JnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyB2b2lk IGdlbjhfcHBndHRfZmluaV9jb21tb24oc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+PiAg IHsKPj4gICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcHQocHBndHQtPnNjcmF0Y2hfcGQsIHBwZ3R0 LT5iYXNlLmRldik7Cj4+IEBAIC0xMDc5LDEyICsxMDk1LDEzIEBAIHN0YXRpYyBpbnQgZ2VuOF9h bGlhc2luZ19wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPj4gICB7Cj4+ ICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7Cj4+ICAg ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAq cGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KPj4gICAgICAgICAgc3RydWN0IGk5 MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkOwo+PiAgICAgICAgICB1aW50NjRfdCB0ZW1wLCBz dGFydCA9IDAsIHNpemUgPSBkZXZfcHJpdi0+Z3R0LmJhc2UudG90YWw7Cj4+ICAgICAgICAgIHVp bnQzMl90IHBkcGU7Cj4+ICAgICAgICAgIGludCByZXQ7Cj4+Cj4+IC0gICAgICAgcmV0ID0gZ2Vu OF9wcGd0dF9pbml0X2NvbW1vbihwcGd0dCwgZGV2X3ByaXYtPmd0dC5iYXNlLnRvdGFsKTsKPj4g KyAgICAgICByZXQgPSBnZW44X3BwZ3R0X2luaXRfY29tbW9uKHBwZ3R0LCBzaXplKTsKPj4gICAg ICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pgo+PiBAQCAt MTA5Nyw4ICsxMTE0LDggQEAgc3RhdGljIGludCBnZW44X2FsaWFzaW5nX3BwZ3R0X2luaXQoc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+ICAgICAgICAgIH0KPj4KPj4gLSAgICAgICBnZW44X2Zvcl9lYWNoX3BkcGUocGQsICZwcGd0 dC0+cGRwLCBzdGFydCwgc2l6ZSwgdGVtcCwgcGRwZSkKPj4gLSAgICAgICAgICAgICAgIGdlbjhf bWFwX3BhZ2V0YWJsZV9yYW5nZShwZCwgc3RhcnQsIHNpemUsIHBwZ3R0LT5iYXNlLmRldik7Cj4+ ICsgICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBzaXplLCB0ZW1wLCBw ZHBlKQo+PiArICAgICAgICAgICAgICAgZ2VuOF9tYXBfcGFnZXRhYmxlX3JhbmdlKHBkLCBzdGFy dCwgc2l6ZSwgZGV2KTsKPiBTb3JyeSwgYWdhaW4gdGhpcyBjb21tZW50IG1heSBub3QgYmUgcmVs ZXZhbnQgZm9yIHRoaXMgcGF0Y2guCj4gSXMgdGhlIGV4cGxpY2l0IGNhbGwgdG8gbWFwIHRoZSBw YWdlIG9mIHBhZ2UgdGFibGVzIHJlYWxseSBuZWVkZWQgaGVyZSA/Cj4gQXMgcHJpb3IgdG8gdGhp cywgYWxyZWFkeSB0aGVyZSBpcyBhIGNhbGwgdG8gZ2VuOF9hbGxvY192YV9yYW5nZSwKPiB3aGlj aCB3aWxsIG1hcCB0aGUgcGFnZSBvZiBwYWdlIHRhYmxlcyBpbnRvIHRoZSBwZGVzLCBmb3IgdGhl IGVudGlyZQo+IHZpcnR1YWwgcmFuZ2UuClRoYW5rcywgaXQgd2FzIGEgbGVmdCBvdmVyIGZyb20g YSBwcmV2aW91cyByZWJhc2UgKGJlZm9yZSBhbGlhc2luZyBhbmQgCmZ1bGwgcHBndHQgaW5pdHMg c3BsaXQpLiBBcyB5b3Ugc2F5IGl0IGlzbid0IG5lZWRlZC4KRml4ZWQgaW4gc2FtZSBwYXRjaCBh cyB5b3VyIHByZXYgY29tbWVudCAoZHJtL2k5MTUvYmR3OiBEeW5hbWljIHBhZ2UgCnRhYmxlIGFs bG9jYXRpb25zKS4KCj4+ICAgICAgICAgIHBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3JhbmdlID0g TlVMTDsKPj4gICAgICAgICAgcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBnZW44X3BwZ3R0X2Ns ZWFyX3JhbmdlOwo+PiAtLQo+PiAyLjEuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=