From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 25/33] drm/i915: Move object close under its own lock Date: Wed, 22 May 2019 17:32:34 +0300 Message-ID: <87mujepnjx.fsf@gaia.fi.intel.com> References: <20190520080127.18255-1-chris@chris-wilson.co.uk> <20190520080127.18255-25-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 35F8E89938 for ; Wed, 22 May 2019 14:33:29 +0000 (UTC) In-Reply-To: <20190520080127.18255-25-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVXNlIGk5 MTVfZ2VtX29iamVjdF9sb2NrKCkgdG8gZ3VhcmQgdGhlIExVVCBhbmQgYWN0aXZlIHJlZmVyZW5j ZSB0bwo+IGFsbG93IHVzIHRvIGJyZWFrIGZyZWUgb2Ygc3RydWN0X211dGV4IGZvciBoYW5kbGlu ZyBHRU1fQ0xPU0UuCj4KPiBUZXN0Y2FzZTogaWd0L2dlbV9jbG9zZV9yYWNlCj4gVGVzdGNhc2U6 IGlndC9nZW1fZXhlY19wYXJhbGxlbAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fY29udGV4dC5jICAgfCA3NiArKysrKysrKysrLS0tLS0tLS0tCj4gIC4uLi9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCB8IDEyICstLQo+ICAuLi4vZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAyMyArKysrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgIHwgMzggKysrKysrLS0t LQo+ICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCAgfCAgMSAt Cj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8ICAxIC0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDQgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAgfCAgMSArCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYyAgICAgICAgICB8IDEzICsrLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgICAgIHwgNDIgKysr KysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oICAgICAgICAgICAgICAg fCAxNyArKy0tLQo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2Uu YyAgfCAgMSArCj4gIDEzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA5OCBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQu Ywo+IGluZGV4IDUwMTZhM2UxZjg2My4uYTk2MDhkOWNlZDZhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTk1LDI0ICs5NSw0MiBAQCB2 b2lkIGk5MTVfbHV0X2hhbmRsZV9mcmVlKHN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmx1dCkKPiAg Cj4gIHN0YXRpYyB2b2lkIGx1dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlICpsdXQsICpsbjsKPiAgCXN0cnVjdCByYWRp eF90cmVlX2l0ZXIgaXRlcjsKPiAgCXZvaWQgX19yY3UgKipzbG90Owo+ICAKPiAtCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShsdXQsIGxuLCAmY3R4LT5oYW5kbGVzX2xpc3QsIGN0eF9saW5rKSB7 Cj4gLQkJbGlzdF9kZWwoJmx1dC0+b2JqX2xpbmspOwo+IC0JCWk5MTVfbHV0X2hhbmRsZV9mcmVl KGx1dCk7Cj4gLQl9Cj4gLQlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xpc3QpOwo+ICsJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT5tdXRleCk7Cj4gIAo+ICAJcmN1X3JlYWRfbG9jaygp Owo+ICAJcmFkaXhfdHJlZV9mb3JfZWFjaF9zbG90KHNsb3QsICZjdHgtPmhhbmRsZXNfdm1hLCAm aXRlciwgMCkgewo+ICAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gcmN1X2RlcmVmZXJlbmNlX3Jh dygqc2xvdCk7Cj4gLQo+IC0JCXJhZGl4X3RyZWVfaXRlcl9kZWxldGUoJmN0eC0+aGFuZGxlc192 bWEsICZpdGVyLCBzbG90KTsKPiAtCj4gLQkJdm1hLT5vcGVuX2NvdW50LS07Cj4gLQkJaTkxNV92 bWFfcHV0KHZtYSk7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+ b2JqOwo+ICsJCXN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmx1dDsKPiArCQlib29sIGZvdW5kID0g ZmFsc2U7Cj4gKwo+ICsJCXJjdV9yZWFkX3VubG9jaygpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9s b2NrKG9iaik7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShsdXQsICZvYmotPmx1dF9saXN0LCBv YmpfbGluaykgewo+ICsJCQlpZiAobHV0LT5jdHggIT0gY3R4KQo+ICsJCQkJY29udGludWU7Cj4g Kwo+ICsJCQlpZiAobHV0LT5oYW5kbGUgIT0gaXRlci5pbmRleCkKPiArCQkJCWNvbnRpbnVlOwo+ ICsKPiArCQkJbGlzdF9kZWwoJmx1dC0+b2JqX2xpbmspOwo+ICsJCQlpOTE1X2x1dF9oYW5kbGVf ZnJlZShsdXQpOwoKWW91IGNvdWxkIGZyZWUgdGhpcyBhZnRlciBvYmplY3RfdW5sb2NrIGlmIHlv dSB3YW50LiBTaHJ1Zy4KCj4gKwkJCWZvdW5kID0gdHJ1ZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ ICsJCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKPiArCQlyY3VfcmVhZF9sb2NrKCk7Cj4g Kwo+ICsJCWlmIChmb3VuZCkgewo+ICsJCQlyYWRpeF90cmVlX2l0ZXJfZGVsZXRlKCZjdHgtPmhh bmRsZXNfdm1hLCAmaXRlciwgc2xvdCk7Cj4gKwkJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZ2 bWEtPm9wZW5fY291bnQpICYmCj4gKwkJCSAgICAhaTkxNV92bWFfaXNfZ2d0dCh2bWEpKQo+ICsJ CQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwoK SSBhbSBzdHJ1Z2dpbmcgdG8gcGFpciB0aGlzIHdpdGggZ2V0LgoKPiArCQl9Cj4gIAl9Cj4gIAly Y3VfcmVhZF91bmxvY2soKTsKPiAgfQo+IEBAIC0yNTAsMTUgKzI2OCw5IEBAIHN0YXRpYyB2b2lk IGZyZWVfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZSkKPiAgCV9fZnJlZV9lbmdp bmVzKGUsIGUtPm51bV9lbmdpbmVzKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZnJlZV9lbmdp bmVzX3JjdShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndyaykKPiArc3RhdGljIHZvaWQgZnJlZV9lbmdp bmVzX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKPiAgewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2Vu Z2luZXMgKmUgPQo+IC0JCWNvbnRhaW5lcl9vZih3cmssIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVz LCByY3Uud29yayk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGUtPmk5MTU7 Cj4gLQo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlmcmVlX2Vu Z2luZXMoZSk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJ ZnJlZV9lbmdpbmVzKGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzLCBy Y3UpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICpkZWZhdWx0 X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiBAQCAtMjcxLDcgKzI4Myw3 IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAlpZiAoIWUpCj4gIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4gIAo+IC0JZS0+aTkxNSA9IGN0eC0+aTkxNTsKPiArCWluaXRfcmN1X2hlYWQo JmUtPnJjdSk7Cj4gIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBjdHgtPmk5MTUsIGlkKSB7Cj4g IAkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAKPiBAQCAtMzU5LDcgKzM3MSwxMCBAQCB2 b2lkIGk5MTVfZ2VtX2NvbnRleHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICAKPiAgc3Rh dGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICB7 Cj4gKwltdXRleF9sb2NrKCZjdHgtPm11dGV4KTsKPiArCj4gIAlpOTE1X2dlbV9jb250ZXh0X3Nl dF9jbG9zZWQoY3R4KTsKPiArCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJBREYpOwo+ICAK PiAgCS8qCj4gIAkgKiBUaGlzIGNvbnRleHQgd2lsbCBuZXZlciBhZ2FpbiBiZSBhc3NpbmdlZCB0 byBIVywgc28gd2UgY2FuCj4gQEAgLTM3NCw3ICszODksNyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0 X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAkgKi8KPiAgCWx1dF9jbG9z ZShjdHgpOwo+ICAKPiAtCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJBREYpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKPiAgCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4g IH0KPiAgCj4gQEAgLTQyOSw3ICs0NDQsNiBAQCBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCVJDVV9JTklUX1BPSU5URVIoY3R4LT5lbmdpbmVz LCBlKTsKPiAgCj4gIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJO RUwpOwo+IC0JSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKPiAgCUlOSVRfTElT VF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwo+ICAKPiAgCS8qIE5COiBNYXJrIGFsbCBzbGljZXMg YXMgbmVlZGluZyBhIHJlbWFwIHNvIHRoYXQgd2hlbiB0aGUgY29udGV4dCBmaXJzdAo+IEBAIC03 NzIsOSArNzg2LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfb3BlbihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKPiAgCXJldHVybiAwOwo+ICAKPiAgZXJyX2N0eDoKPiAtCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJY29udGV4dF9jbG9zZShjdHgpOwo+IC0J bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgZXJyOgo+ICAJaWRyX2Rl c3Ryb3koJmZpbGVfcHJpdi0+dm1faWRyKTsKPiAgCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPmNv bnRleHRfaWRyKTsKPiBAQCAtNzg3LDggKzc5OSw2IEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9j bG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9maWxl X3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICAKPiAtCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmZpbGVfcHJpdi0+ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0K PiAgCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY29udGV4dF9pZHJfY2xl YW51cCwgTlVMTCk7Cj4gIAlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2lkcik7Cj4g IAltdXRleF9kZXN0cm95KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyX2xvY2spOwo+IEBAIC0xMDkz LDcgKzExMDMsOSBAQCBzdGF0aWMgaW50IHNldF9wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYsCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+ICAJLyogVGVhcmRvd24g dGhlIGV4aXN0aW5nIG9iajp2bWEgY2FjaGUsIGl0IHdpbGwgaGF2ZSB0byBiZSByZWJ1aWx0LiAq Lwo+ICsJbXV0ZXhfbG9jaygmY3R4LT5tdXRleCk7Cj4gIAlsdXRfY2xvc2UoY3R4KTsKPiArCW11 dGV4X3VubG9jaygmY3R4LT5tdXRleCk7Cj4gIAo+ICAJb2xkID0gX19zZXRfcHBndHQoY3R4LCBw cGd0dCk7Cj4gIAo+IEBAIC0xNjEyLDcgKzE2MjQsNyBAQCBzZXRfZW5naW5lcyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICAJaWYgKCFzZXQuZW5naW5lcykKPiAgCQlyZXR1cm4gLUVO T01FTTsKPiAgCj4gLQlzZXQuZW5naW5lcy0+aTkxNSA9IGN0eC0+aTkxNTsKPiArCWluaXRfcmN1 X2hlYWQoJnNldC5lbmdpbmVzLT5yY3UpOwo+ICAJZm9yIChuID0gMDsgbiA8IG51bV9lbmdpbmVz OyBuKyspIHsKPiAgCQlzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgY2k7Cj4gIAkJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IEBAIC0xNjY2LDggKzE2NzgsNyBAQCBz ZXRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAJcmN1X3N3YXBfcHJv dGVjdGVkKGN0eC0+ZW5naW5lcywgc2V0LmVuZ2luZXMsIDEpOwo+ICAJbXV0ZXhfdW5sb2NrKCZj dHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICAKPiAtCUlOSVRfUkNVX1dPUksoJnNldC5lbmdpbmVzLT5y Y3UsIGZyZWVfZW5naW5lc19yY3UpOwo+IC0JcXVldWVfcmN1X3dvcmsoc3lzdGVtX3dxLCAmc2V0 LmVuZ2luZXMtPnJjdSk7Cj4gKwljYWxsX3JjdSgmc2V0LmVuZ2luZXMtPnJjdSwgZnJlZV9lbmdp bmVzX3JjdSk7CgpXaHkgY2FuIHdlIG9taXQgdGhlIHF1ZXVlIG5vdz8KCj4gIAo+ICAJcmV0dXJu IDA7Cj4gIH0KPiBAQCAtMTg2NSw3ICsxODc2LDcgQEAgc3RhdGljIGludCBjbG9uZV9lbmdpbmVz KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpkc3QsCj4gIAlpZiAoIWNsb25lKQo+ICAJCWdvdG8g ZXJyX3VubG9jazsKPiAgCj4gLQljbG9uZS0+aTkxNSA9IGRzdC0+aTkxNTsKPiArCWluaXRfcmN1 X2hlYWQoJmNsb25lLT5yY3UpOwo+ICAJZm9yIChuID0gMDsgbiA8IGUtPm51bV9lbmdpbmVzOyBu KyspIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAo+IEBAIC0yMTM3 LDkgKzIxNDgsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXJldHVybiAwOwo+ICAKPiAgZXJyX2N0eDoK PiAtCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWNvbnRleHRfY2xvc2UoZXh0 X2RhdGEuY3R4KTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0 dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtMjE2NCwxMCArMjE3Myw3IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgCWlmICghY3R4KQo+ICAJCXJldHVybiAtRU5PRU5UOwo+ICAKPiAtCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiAgCWNvbnRleHRfY2xvc2UoY3R4KTsKPiAtCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+IGlu ZGV4IGZiOTY1ZGVkMjUwOC4uM2RiNzQ0OGI5NzMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCj4gQEAgLTMwLDggKzMwLDcg QEAgc3RydWN0IGk5MTVfdGltZWxpbmU7Cj4gIHN0cnVjdCBpbnRlbF9yaW5nOwo+ICAKPiAgc3Ry dWN0IGk5MTVfZ2VtX2VuZ2luZXMgewo+IC0Jc3RydWN0IHJjdV93b3JrIHJjdTsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICsJc3RydWN0IHJjdV9oZWFkIHJjdTsKPiAgCXVu c2lnbmVkIGludCBudW1fZW5naW5lczsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICplbmdpbmVz W107Cj4gIH07Cj4gQEAgLTE5MiwxNyArMTkxLDEyIEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 IHsKPiAgCS8qKiByZW1hcF9zbGljZTogQml0bWFzayBvZiBjYWNoZSBsaW5lcyB0aGF0IG5lZWQg cmVtYXBwaW5nICovCj4gIAl1OCByZW1hcF9zbGljZTsKPiAgCj4gLQkvKiogaGFuZGxlc192bWE6 IHJidHJlZSB0byBsb29rIHVwIG91ciBjb250ZXh0IHNwZWNpZmljIG9iai92bWEgZm9yCj4gKwkv KioKPiArCSAqIGhhbmRsZXNfdm1hOiByYnRyZWUgdG8gbG9vayB1cCBvdXIgY29udGV4dCBzcGVj aWZpYyBvYmovdm1hIGZvcgo+ICAJICogdGhlIHVzZXIgaGFuZGxlLiAodXNlciBoYW5kbGVzIGFy ZSBwZXIgZmQsIGJ1dCB0aGUgYmluZGluZyBpcwo+ICAJICogcGVyIHZtLCB3aGljaCBtYXkgYmUg b25lIHBlciBjb250ZXh0IG9yIHNoYXJlZCB3aXRoIHRoZSBnbG9iYWwgR1RUKQo+ICAJICovCj4g IAlzdHJ1Y3QgcmFkaXhfdHJlZV9yb290IGhhbmRsZXNfdm1hOwo+IC0KPiAtCS8qKiBoYW5kbGVz X2xpc3Q6IHJldmVyc2UgbGlzdCBvZiBhbGwgdGhlIHJidHJlZSBlbnRyaWVzIGluIHVzZSBmb3IK PiAtCSAqIHRoaXMgY29udGV4dCwgd2hpY2ggYWxsb3dzIHVzIHRvIGZyZWUgYWxsIHRoZSBhbGxv Y2F0aW9ucyBvbgo+IC0JICogY29udGV4dCBjbG9zZS4KPiAtCSAqLwo+IC0Jc3RydWN0IGxpc3Rf aGVhZCBoYW5kbGVzX2xpc3Q7Cj4gIH07Cj4gIAo+ICAjZW5kaWYgLyogX19JOTE1X0dFTV9DT05U RVhUX1RZUEVTX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+IGluZGV4IDEzYWIyYTJlMDA5OS4uZmEwYTg4MGNhNGRlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAg LTgwMSw5ICs4MDEsNiBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4 ZWNidWZmZXIgKmViKQo+ICAJdW5zaWduZWQgaW50IGksIGJhdGNoOwo+ICAJaW50IGVycjsKPiAg Cj4gLQlpZiAodW5saWtlbHkoaTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoZWItPmdlbV9jb250 ZXh0KSkpCj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+ICAJaWYgKHVubGlrZWx5KGk5MTVfZ2Vt X2NvbnRleHRfaXNfYmFubmVkKGViLT5nZW1fY29udGV4dCkpKQo+ICAJCXJldHVybiAtRUlPOwo+ ICAKPiBAQCAtODEyLDYgKzgwOSwxMiBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICAKPiAgCWJhdGNoID0gZWJfYmF0Y2hfaW5kZXgoZWIp Owo+ICAKPiArCW11dGV4X2xvY2soJmViLT5nZW1fY29udGV4dC0+bXV0ZXgpOwo+ICsJaWYgKHVu bGlrZWx5KGk5MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGViLT5nZW1fY29udGV4dCkpKSB7Cj4g KwkJZXJyID0gLUVOT0VOVDsKPiArCQlnb3RvIGVycl9jdHg7Cj4gKwl9Cj4gKwo+ICAJZm9yIChp ID0gMDsgaSA8IGViLT5idWZmZXJfY291bnQ7IGkrKykgewo+ICAJCXUzMiBoYW5kbGUgPSBlYi0+ ZXhlY1tpXS5oYW5kbGU7Cj4gIAkJc3RydWN0IGk5MTVfbHV0X2hhbmRsZSAqbHV0Owo+IEBAIC04 NDYsMTIgKzg0OSwxNCBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4 ZWNidWZmZXIgKmViKQo+ICAJCX0KPiAgCj4gIAkJLyogdHJhbnNmZXIgcmVmIHRvIGN0eCAqLwo+ IC0JCWlmICghdm1hLT5vcGVuX2NvdW50KyspCj4gKwkJaWYgKCFhdG9taWNfZmV0Y2hfaW5jKCZ2 bWEtPm9wZW5fY291bnQpKQo+ICAJCQlpOTE1X3ZtYV9yZW9wZW4odm1hKTsKPiAtCQlsaXN0X2Fk ZCgmbHV0LT5vYmpfbGluaywgJm9iai0+bHV0X2xpc3QpOwo+IC0JCWxpc3RfYWRkKCZsdXQtPmN0 eF9saW5rLCAmZWItPmdlbV9jb250ZXh0LT5oYW5kbGVzX2xpc3QpOwo+IC0JCWx1dC0+Y3R4ID0g ZWItPmdlbV9jb250ZXh0Owo+ICAJCWx1dC0+aGFuZGxlID0gaGFuZGxlOwo+ICsJCWx1dC0+Y3R4 ID0gZWItPmdlbV9jb250ZXh0Owo+ICsKPiArCQlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+ ICsJCWxpc3RfYWRkKCZsdXQtPm9ial9saW5rLCAmb2JqLT5sdXRfbGlzdCk7Cj4gKwkJaTkxNV9n ZW1fb2JqZWN0X3VubG9jayhvYmopOwo+ICAKPiAgYWRkX3ZtYToKPiAgCQllcnIgPSBlYl9hZGRf dm1hKGViLCBpLCBiYXRjaCwgdm1hKTsKPiBAQCAtODY0LDYgKzg2OSw4IEBAIHN0YXRpYyBpbnQg ZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIAkJCSAgIGViX3Zt YV9taXNwbGFjZWQoJmViLT5leGVjW2ldLCB2bWEsIGViLT5mbGFnc1tpXSkpOwo+ICAJfQo+ICAK PiArCW11dGV4X3VubG9jaygmZWItPmdlbV9jb250ZXh0LT5tdXRleCk7Cj4gKwo+ICAJZWItPmFy Z3MtPmZsYWdzIHw9IF9fRVhFQ19WQUxJREFURUQ7Cj4gIAlyZXR1cm4gZWJfcmVzZXJ2ZShlYik7 Cj4gIAo+IEBAIC04NzEsNiArODc4LDggQEAgc3RhdGljIGludCBlYl9sb29rdXBfdm1hcyhzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAg ZXJyX3ZtYToKPiAgCWViLT52bWFbaV0gPSBOVUxMOwo+ICtlcnJfY3R4Ogo+ICsJbXV0ZXhfdW5s b2NrKCZlYi0+Z2VtX2NvbnRleHQtPm11dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IDliM2Jk OTM4N2I3MC4uOThkY2UwMjEwMTU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9vYmplY3QuYwo+IEBAIC0xMjYsMzkgKzEyNiw0NyBAQCB2b2lkIGk5MTVfZ2VtX29i amVjdF9zZXRfY2FjaGVfY29oZXJlbmN5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoZ2VtLT5kZXYpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGdlbSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICAJc3RydWN0IGk5MTVfbHV0X2hh bmRsZSAqbHV0LCAqbG47Cj4gKwlMSVNUX0hFQUQoY2xvc2UpOwo+ICAKPiAtCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiArCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9i aik7Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHV0LCBsbiwgJm9iai0+bHV0X2xpc3Qs IG9ial9saW5rKSB7Cj4gIAkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGx1dC0+Y3R4 Owo+IC0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAKPiAtCQlHRU1fQlVHX09OKGN0eC0+Zmls ZV9wcml2ID09IEVSUl9QVFIoLUVCQURGKSk7Cj4gIAkJaWYgKGN0eC0+ZmlsZV9wcml2ICE9IGZw cml2KQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJdm1hID0gcmFkaXhfdHJlZV9kZWxldGUoJmN0 eC0+aGFuZGxlc192bWEsIGx1dC0+aGFuZGxlKTsKPiAtCQlHRU1fQlVHX09OKHZtYS0+b2JqICE9 IG9iaik7Cj4gKwkJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4KTsKPiArCQlsaXN0X21vdmUoJmx1 dC0+b2JqX2xpbmssICZjbG9zZSk7Cj4gKwl9Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9i aik7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGx1dCwgbG4sICZjbG9zZSwgb2Jq X2xpbmspIHsKPiArCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gbHV0LT5jdHg7Cj4g KwkJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAo+IC0JCS8qIFdlIGFsbG93IHRoZSBwcm9jZXNz IHRvIGhhdmUgbXVsdGlwbGUgaGFuZGxlcyB0byB0aGUgc2FtZQo+ICsJCS8qCj4gKwkJICogV2Ug YWxsb3cgdGhlIHByb2Nlc3MgdG8gaGF2ZSBtdWx0aXBsZSBoYW5kbGVzIHRvIHRoZSBzYW1lCj4g IAkJICogdm1hLCBpbiB0aGUgc2FtZSBmZCBuYW1lc3BhY2UsIGJ5IHZpcnR1ZSBvZiBmbGluay9v cGVuLgo+ICAJCSAqLwo+IC0JCUdFTV9CVUdfT04oIXZtYS0+b3Blbl9jb3VudCk7Cj4gLQkJaWYg KCEtLXZtYS0+b3Blbl9jb3VudCAmJiAhaTkxNV92bWFfaXNfZ2d0dCh2bWEpKQo+IC0JCQlpOTE1 X3ZtYV9jbG9zZSh2bWEpOwo+ICAKPiAtCQlsaXN0X2RlbCgmbHV0LT5vYmpfbGluayk7Cj4gLQkJ bGlzdF9kZWwoJmx1dC0+Y3R4X2xpbmspOwo+ICsJCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOwo+ ICsJCXZtYSA9IHJhZGl4X3RyZWVfZGVsZXRlKCZjdHgtPmhhbmRsZXNfdm1hLCBsdXQtPmhhbmRs ZSk7Cj4gKwkJaWYgKHZtYSkgewo+ICsJCQlHRU1fQlVHX09OKHZtYS0+b2JqICE9IG9iaik7Cj4g KwkJCUdFTV9CVUdfT04oIWF0b21pY19yZWFkKCZ2bWEtPm9wZW5fY291bnQpKTsKPiArCQkJaWYg KGF0b21pY19kZWNfYW5kX3Rlc3QoJnZtYS0+b3Blbl9jb3VudCkgJiYKPiArCQkJICAgICFpOTE1 X3ZtYV9pc19nZ3R0KHZtYSkpCj4gKwkJCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwo+ICsJCX0KPiAr CQltdXRleF91bmxvY2soJmN0eC0+bXV0ZXgpOwo+ICAKPiArCQlpOTE1X2dlbV9jb250ZXh0X3B1 dChsdXQtPmN0eCk7Cj4gIAkJaTkxNV9sdXRfaGFuZGxlX2ZyZWUobHV0KTsKPiAgCQlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7Cj4gIAl9Cj4gLQo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0 b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gaW5kZXggNjdhOTkyZDZl ZTBjLi45YzE2MWJhNzM1NTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gQEAgLTI0LDcgKzI0LDYgQEAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3Q7Cj4gICAqLwo+ICBzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlIHsKPiAgCXN0 cnVjdCBsaXN0X2hlYWQgb2JqX2xpbms7Cj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGN0eF9saW5rOwo+ ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgCXUzMiBoYW5kbGU7Cj4gIH07Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250 ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5j Cj4gaW5kZXggNjhkNTBkYTAzNWU2Li42NTc4ZjJmNmMzZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBAQCAtMzAsNyAr MzAsNiBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAlS Q1VfSU5JVF9QT0lOVEVSKGN0eC0+ZW5naW5lcywgZSk7Cj4gIAo+ICAJSU5JVF9SQURJWF9UUkVF KCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKPiAtCUlOSVRfTElTVF9IRUFEKCZjdHgt PmhhbmRsZXNfbGlzdCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5od19pZF9saW5rKTsKPiAg CW11dGV4X2luaXQoJmN0eC0+bXV0ZXgpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCAyNWUyOWVlMDM5MzUuLjg0NDNlNThkYzE2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC0xOTkxLDEwICsxOTkxLDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK PiAgCQl9IHRpbWVsaW5lczsKPiAgCj4gIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfcmluZ3M7 Cj4gLQkJc3RydWN0IGxpc3RfaGVhZCBjbG9zZWRfdm1hOwo+ICAKPiAgCQlzdHJ1Y3QgaW50ZWxf d2FrZXJlZiB3YWtlcmVmOwo+ICAKPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGNsb3NlZF92bWE7Cj4g KwkJc3BpbmxvY2tfdCBjbG9zZWRfbG9jazsgLyogZ3VhcmRzIHRoZSBsaXN0IG9mIGNsb3NlZF92 bWEgKi8KPiArCj4gIAkJLyoqCj4gIAkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29uc2lkZXJl ZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwo+ICAJCSAqIHVzZXJzcGFjZSByZXF1ZXN0cz8gV2hp bHN0IGlkbGUsIHdlIGFsbG93IHJ1bnRpbWUgcG93ZXIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBpbmRleCAyYTllOGVjZjI5MjYuLjkwOTIzZmE2NjAzZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IEBAIC0xNzMyLDYgKzE3MzIsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9lYXJseShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJSU5JVF9MSVNUX0hFQUQo JmRldl9wcml2LT5ndC5hY3RpdmVfcmluZ3MpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2 LT5ndC5jbG9zZWRfdm1hKTsKPiArCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+Z3QuY2xvc2Vk X2xvY2spOwo+ICAKPiAgCWk5MTVfZ2VtX2luaXRfX21tKGRldl9wcml2KTsKPiAgCWk5MTVfZ2Vt X2luaXRfX3BtKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGlu ZGV4IDU2YmU0YjA5MWJjNy4uZjI2ZWFhODFlN2ZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiBAQCAtMTkyOSw2ICsxOTI5LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Zt YSAqcGRfdm1hX2NyZWF0ZShzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQsIGludCBzaXplKQo+ ICAJdm1hLT5nZ3R0X3ZpZXcudHlwZSA9IEk5MTVfR0dUVF9WSUVXX1JPVEFURUQ7IC8qIHByZXZl bnQgZmVuY2luZyAqLwo+ICAKPiAgCUlOSVRfTElTVF9IRUFEKCZ2bWEtPm9ial9saW5rKTsKPiAr CUlOSVRfTElTVF9IRUFEKCZ2bWEtPmNsb3NlZF9saW5rKTsKPiAgCj4gIAltdXRleF9sb2NrKCZ2 bWEtPnZtLT5tdXRleCk7Cj4gIAlsaXN0X2FkZCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+dW5i b3VuZF9saXN0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1l bGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCj4gaW5kZXggNWZi ZWEwODkyZjMzLi4wMDBlMWE5YjY3NTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1l bGluZS5jCj4gQEAgLTYxLDcgKzYxLDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQo+ICAKPiAgCUJVSUxEX0JVR19P TihCSVRTX1BFUl9UWVBFKHU2NCkgKiBDQUNIRUxJTkVfQllURVMgPiBQQUdFX1NJWkUpOwo+ICAK PiAtCXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZndC0+aHdz cF9sb2NrKTsKCldoeSBkbyB3ZSBuZWVkIHRoaXM/Cgo+ICAKPiAgCS8qIGh3c3BfZnJlZV9saXN0 IG9ubHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZhaWxhYmxlIGNhY2hlbGluZXMgKi8KPiAg CWh3c3AgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmd0LT5od3NwX2ZyZWVfbGlzdCwKPiBA QCAtNjksNyArNjksNyBAQCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSwgdW5zaWduZWQgaW50ICpjYWNoZWxpbmUpCj4gIAlpZiAoIWh3c3ApIHsKPiAgCQlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiAgCj4gLQkJc3Bpbl91bmxvY2soJmd0LT5od3NwX2xvY2spOwo+ICsJ CXNwaW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Cj4gIAo+ICAJCWh3c3AgPSBrbWFsbG9j KHNpemVvZigqaHdzcCksIEdGUF9LRVJORUwpOwo+ICAJCWlmICghaHdzcCkKPiBAQCAtODYsNyAr ODYsNyBAQCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwgdW5zaWdu ZWQgaW50ICpjYWNoZWxpbmUpCj4gIAkJaHdzcC0+ZnJlZV9iaXRtYXAgPSB+MHVsbDsKPiAgCQlo d3NwLT5ndCA9IGd0Owo+ICAKPiAtCQlzcGluX2xvY2soJmd0LT5od3NwX2xvY2spOwo+ICsJCXNw aW5fbG9ja19pcnEoJmd0LT5od3NwX2xvY2spOwo+ICAJCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xp bmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwo+ICAJfQo+ICAKPiBAQCAtOTYsNyArOTYsNyBAQCBo d3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwgdW5zaWduZWQgaW50ICpj YWNoZWxpbmUpCj4gIAlpZiAoIWh3c3AtPmZyZWVfYml0bWFwKQo+ICAJCWxpc3RfZGVsKCZod3Nw LT5mcmVlX2xpbmspOwo+ICAKPiAtCXNwaW5fdW5sb2NrKCZndC0+aHdzcF9sb2NrKTsKPiArCXNw aW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Cj4gIAo+ICAJR0VNX0JVR19PTihod3NwLT52 bWEtPnByaXZhdGUgIT0gaHdzcCk7Cj4gIAlyZXR1cm4gaHdzcC0+dm1hOwo+IEBAIC0xMDUsOCAr MTA1LDkgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsIHVuc2ln bmVkIGludCAqY2FjaGVsaW5lKQo+ICBzdGF0aWMgdm9pZCBfX2lkbGVfaHdzcF9mcmVlKHN0cnVj dCBpOTE1X3RpbWVsaW5lX2h3c3AgKmh3c3AsIGludCBjYWNoZWxpbmUpCj4gIHsKPiAgCXN0cnVj dCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSBod3NwLT5ndDsKPiArCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gIAo+IC0Jc3Bpbl9sb2NrKCZndC0+aHdzcF9sb2NrKTsKPiArCXNwaW5fbG9ja19pcnFz YXZlKCZndC0+aHdzcF9sb2NrLCBmbGFncyk7Cj4gIAo+ICAJLyogQXMgYSBjYWNoZWxpbmUgYmVj b21lcyBhdmFpbGFibGUsIHB1Ymxpc2ggdGhlIEhXU1Agb24gdGhlIGZyZWVsaXN0ICovCj4gIAlp ZiAoIWh3c3AtPmZyZWVfYml0bWFwKQo+IEBAIC0xMjIsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQg X19pZGxlX2h3c3BfZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwICpod3NwLCBpbnQgY2Fj aGVsaW5lKQo+ICAJCWtmcmVlKGh3c3ApOwo+ICAJfQo+ICAKPiAtCXNwaW5fdW5sb2NrKCZndC0+ aHdzcF9sb2NrKTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmd0LT5od3NwX2xvY2ssIGZs YWdzKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19pZGxlX2NhY2hlbGluZV9mcmVlKHN0cnVj dCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2wpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4g aW5kZXggMTZkNDdmMWY2NDVhLi4zOTJjMjc1N2MyMTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dm1hLmMKPiBAQCAtMTQzLDYgKzE0Myw4IEBAIHZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgCXZtYS0+c2l6ZSA9IG9iai0+YmFzZS5zaXplOwo+ICAJdm1hLT5k aXNwbGF5X2FsaWdubWVudCA9IEk5MTVfR1RUX01JTl9BTElHTk1FTlQ7Cj4gIAo+ICsJSU5JVF9M SVNUX0hFQUQoJnZtYS0+Y2xvc2VkX2xpbmspOwo+ICsKPiAgCWlmICh2aWV3ICYmIHZpZXctPnR5 cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKSB7Cj4gIAkJdm1hLT5nZ3R0X3ZpZXcgPSAqdmll dzsKPiAgCQlpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19QQVJUSUFMKSB7Cj4gQEAg LTc4NSwxMCArNzg3LDEwIEBAIGludCBfX2k5MTVfdm1hX2RvX3BpbihzdHJ1Y3QgaTkxNV92bWEg KnZtYSwKPiAgCj4gIHZvaWQgaTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4g IHsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB2bWEtPnZtLT5pOTE1Owo+ ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgCj4gIAlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2Ns b3NlZCh2bWEpKTsKPiAtCXZtYS0+ZmxhZ3MgfD0gSTkxNV9WTUFfQ0xPU0VEOwo+ICAKPiAgCS8q Cj4gIAkgKiBXZSBkZWZlciBhY3R1YWxseSBjbG9zaW5nLCB1bmJpbmRpbmcgYW5kIGRlc3Ryb3lp bmcgdGhlIFZNQSB1bnRpbAo+IEBAIC04MDIsMTcgKzgwNCwyNiBAQCB2b2lkIGk5MTVfdm1hX2Ns b3NlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJICogY2F1c2luZyB1cyB0byByZWJpbmQgdGhl IFZNQSBvbmNlIG1vcmUuIFRoaXMgZW5kcyB1cCBiZWluZyBhIGxvdAo+ICAJICogb2Ygd2FzdGVk IHdvcmsgZm9yIHRoZSBzdGVhZHkgc3RhdGUuCj4gIAkgKi8KPiAtCWxpc3RfYWRkX3RhaWwoJnZt YS0+Y2xvc2VkX2xpbmssICZ2bWEtPnZtLT5pOTE1LT5ndC5jbG9zZWRfdm1hKTsKPiArCXNwaW5f bG9ja19pcnFzYXZlKCZpOTE1LT5ndC5jbG9zZWRfbG9jaywgZmxhZ3MpOwo+ICsJbGlzdF9hZGQo JnZtYS0+Y2xvc2VkX2xpbmssICZpOTE1LT5ndC5jbG9zZWRfdm1hKTsKPiArCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmk5MTUtPmd0LmNsb3NlZF9sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gLXZv aWQgaTkxNV92bWFfcmVvcGVuKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICtzdGF0aWMgdm9pZCBf X2k5MTVfdm1hX3JlbW92ZV9jbG9zZWQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAtCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB2bWEtPnZtLT5pOTE1Owo+ICAKPiAtCWlm ICh2bWEtPmZsYWdzICYgSTkxNV9WTUFfQ0xPU0VEKSB7Cj4gLQkJdm1hLT5mbGFncyAmPSB+STkx NV9WTUFfQ0xPU0VEOwo+IC0JCWxpc3RfZGVsKCZ2bWEtPmNsb3NlZF9saW5rKTsKPiAtCX0KPiAr CWlmICghaTkxNV92bWFfaXNfY2xvc2VkKHZtYSkpCj4gKwkJcmV0dXJuOwoKQWZ0ZXIgaW5pdGlh bCByYWN5bmVzcyBhbGFybSwgaXQgc2VlbXMgdGhhdCBsaXN0X2VtcHR5CmhhcyBSRUFEX09OQ0Ug c28gdGhpcyBzaG91bGQgd29yay4KCi1NaWthCgo+ICsKPiArCXNwaW5fbG9ja19pcnEoJmk5MTUt Pmd0LmNsb3NlZF9sb2NrKTsKPiArCWxpc3RfZGVsX2luaXQoJnZtYS0+Y2xvc2VkX2xpbmspOwo+ ICsJc3Bpbl91bmxvY2tfaXJxKCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7Cj4gK30KPiArCj4gK3Zv aWQgaTkxNV92bWFfcmVvcGVuKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4gKwlfX2k5MTVf dm1hX3JlbW92ZV9jbG9zZWQodm1hKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19pOTE1X3Zt YV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IEBAIC04NDYsOCArODU3LDcgQEAgdm9p ZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAKPiAgCUdFTV9CVUdf T04oaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+ICAKPiAtCWlmIChpOTE1X3ZtYV9pc19jbG9z ZWQodm1hKSkKPiAtCQlsaXN0X2RlbCgmdm1hLT5jbG9zZWRfbGluayk7Cj4gKwlfX2k5MTVfdm1h X3JlbW92ZV9jbG9zZWQodm1hKTsKPiAgCj4gIAlXQVJOX09OKGk5MTVfdm1hX3VuYmluZCh2bWEp KTsKPiAgCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwo+IEBAIC04NTksMTIg Kzg2OSwxNiBAQCB2b2lkIGk5MTVfdm1hX3BhcmtlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKPiAgewo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWEsICpuZXh0Owo+ICAKPiArCXNwaW5f bG9ja19pcnEoJmk5MTUtPmd0LmNsb3NlZF9sb2NrKTsKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZSh2bWEsIG5leHQsICZpOTE1LT5ndC5jbG9zZWRfdm1hLCBjbG9zZWRfbGluaykgewo+IC0J CUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKTsKPiArCQlsaXN0X2RlbF9pbml0 KCZ2bWEtPmNsb3NlZF9saW5rKTsKPiArCQlzcGluX3VubG9ja19pcnEoJmk5MTUtPmd0LmNsb3Nl ZF9sb2NrKTsKPiArCj4gIAkJaTkxNV92bWFfZGVzdHJveSh2bWEpOwo+IC0JfQo+ICAKPiAtCUdF TV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUtPmd0LmNsb3NlZF92bWEpKTsKPiArCQlzcGluX2xv Y2tfaXJxKCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7Cj4gKwl9Cj4gKwlzcGluX3VubG9ja19pcnEo Jmk5MTUtPmd0LmNsb3NlZF9sb2NrKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19pOTE1X3Zt YV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+ IGluZGV4IDcxYWM3ZWU4NjIwYS4uZjA4ODRjYzhiMmQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3ZtYS5oCj4gQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgCSAqIGhhbmRs ZXMgKGJ1dCBzYW1lIGZpbGUpIGZvciBleGVjYnVmLCBpLmUuIHRoZSBudW1iZXIgb2YgYWxpYXNl cwo+ICAJICogdGhhdCBleGlzdCBpbiB0aGUgY3R4LT5oYW5kbGVfdm1hcyBMVVQgZm9yIHRoaXMg dm1hLgo+ICAJICovCj4gLQl1bnNpZ25lZCBpbnQgb3Blbl9jb3VudDsKPiArCWF0b21pY190IG9w ZW5fY291bnQ7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJLyoqCj4gIAkgKiBIb3cgbWFu eSB1c2VycyBoYXZlIHBpbm5lZCB0aGlzIG9iamVjdCBpbiBHVFQgc3BhY2UuCj4gQEAgLTEwNCwx MCArMTA0LDkgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgCj4gICNkZWZpbmUgSTkxNV9WTUFfR0dU VAkJQklUKDExKQo+ICAjZGVmaW5lIEk5MTVfVk1BX0NBTl9GRU5DRQlCSVQoMTIpCj4gLSNkZWZp bmUgSTkxNV9WTUFfQ0xPU0VECQlCSVQoMTMpCj4gLSNkZWZpbmUgSTkxNV9WTUFfVVNFUkZBVUxU X0JJVAkxNAo+ICsjZGVmaW5lIEk5MTVfVk1BX1VTRVJGQVVMVF9CSVQJMTMKPiAgI2RlZmluZSBJ OTE1X1ZNQV9VU0VSRkFVTFQJQklUKEk5MTVfVk1BX1VTRVJGQVVMVF9CSVQpCj4gLSNkZWZpbmUg STkxNV9WTUFfR0dUVF9XUklURQlCSVQoMTUpCj4gKyNkZWZpbmUgSTkxNV9WTUFfR0dUVF9XUklU RQlCSVQoMTQpCj4gIAo+ICAJc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKPiAgCXN0cnVjdCBp OTE1X2FjdGl2ZV9yZXF1ZXN0IGxhc3RfZmVuY2U7Cj4gQEAgLTE5MCwxMSArMTg5LDYgQEAgc3Rh dGljIGlubGluZSBib29sIGk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxlKGNvbnN0IHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQo+ICAJcmV0dXJuIHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9DQU5fRkVO Q0U7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3ZtYV9pc19jbG9zZWQoY29u c3Qgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gLXsKPiAtCXJldHVybiB2bWEtPmZsYWdzICYgSTkx NV9WTUFfQ0xPU0VEOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfc2V0 X3VzZXJmYXVsdChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+ICAJR0VNX0JVR19PTighaTkx NV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUodm1hKSk7Cj4gQEAgLTIxMSw2ICsyMDUsMTEgQEAg c3RhdGljIGlubGluZSBib29sIGk5MTVfdm1hX2hhc191c2VyZmF1bHQoY29uc3Qgc3RydWN0IGk5 MTVfdm1hICp2bWEpCj4gIAlyZXR1cm4gdGVzdF9iaXQoSTkxNV9WTUFfVVNFUkZBVUxUX0JJVCwg JnZtYS0+ZmxhZ3MpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaXNf Y2xvc2VkKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4gKwlyZXR1cm4gIWxpc3Rf ZW1wdHkoJnZtYS0+Y2xvc2VkX2xpbmspOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5saW5lIHUzMiBp OTE1X2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICB7Cj4gIAlHRU1f QlVHX09OKCFpOTE1X3ZtYV9pc19nZ3R0KHZtYSkpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCBlMjViNzRhMjdmODMuLmI3 ZjNmYmI0YWU4OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtMjAzLDYgKzIwMyw3IEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKPiAgCj4gIAlJTklUX0xJU1RfSEVBRCgmaTkx NS0+Z3QuYWN0aXZlX3JpbmdzKTsKPiAgCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC5jbG9zZWRf dm1hKTsKPiArCXNwaW5fbG9ja19pbml0KCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7Cj4gIAo+ICAJ bXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0tIAo+IDIuMjAuMQo+ Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==