From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 10/46] drm/i915: Make request allocation caches global Date: Mon, 11 Feb 2019 17:02:19 +0000 Message-ID: References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-11-chris@chris-wilson.co.uk> <154988883297.15715.7166932830295430368@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F97F6E273 for ; Mon, 11 Feb 2019 17:02:10 +0000 (UTC) In-Reply-To: <154988883297.15715.7166932830295430368@skylake-alporthouse-com> Content-Language: en-US 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 Ck9uIDExLzAyLzIwMTkgMTI6NDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTAyLTExIDExOjQzOjQxKQo+Pgo+PiBPbiAwNi8wMi8yMDE5IDEzOjAz LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBBcyBrbWVtX2NhY2hlcyBzaGFyZSB0aGUgc2FtZSBw cm9wZXJ0aWVzIChzaXplLCBhbGxvY2F0aW9uL2ZyZWUgYmVoYXZpb3VyKQo+Pj4gZm9yIGFsbCBw b3RlbnRpYWwgZGV2aWNlcywgd2UgY2FuIHVzZSBnbG9iYWwgY2FjaGVzLiBXaGlsZSB0aGlzCj4+ PiBwb3RlbnRpYWwgaGFzIHdvcnNlIGZyYWdtZW50YXRpb24gYmVoYXZpb3VyIChvbmUgY2FuIGFy Z3VlIHRoYXQKPj4+IGRpZmZlcmVudCBkZXZpY2VzIHdvdWxkIGhhdmUgZGlmZmVyZW50IGFjdGl2 aXR5IGxpZmV0aW1lcywgYnV0IHlvdSBjYW4KPj4+IGFsc28gYXJndWUgdGhhdCBhY3Rpdml0eSBp cyB0ZW1wb3JhbCBhY3Jvc3MgdGhlIHN5c3RlbSkgaXQgaXMgdGhlCj4+PiBkZWZhdWx0IGJlaGF2 aW91ciBvZiB0aGUgc3lzdGVtIGF0IGxhcmdlIHRvIGFtYWxnYW1hdGUgbWF0Y2hpbmcgY2FjaGVz Lgo+Pj4KPj4+IFRoZSBiZW5lZml0IGZvciB1cyBpcyBtdWNoIHJlZHVjZWQgcG9pbnRlciBkYW5j aW5nIGFsb25nIHRoZSBmcmVxdWVudAo+Pj4gYWxsb2NhdGlvbiBwYXRocy4KPj4+Cj4+PiB2Mjog RGVmZXIgc2hyaW5raW5nIHVudGlsIGFmdGVyIGEgZ2xvYmFsIGdyYWNlIHBlcmlvZCBmb3IgZnV0 dXJlcHJvb2ZpbmcKPj4+IG11bHRpcGxlIGNvbnN1bWVycyBvZiB0aGUgc2xhYiBjYWNoZXMsIHNp bWlsYXIgdG8gdGhlIGN1cnJlbnQgc3RyYXRlZ3kKPj4+IGZvciBhdm9pZGluZyBzaHJpbmtpbmcg dG9vIGVhcmx5Lgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgo+Pj4gLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9hY3RpdmUuYyAgICAgICAgICAgIHwgICA3ICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2FjdGl2ZS5oICAgICAgICAgICAgfCAgIDEgKwo+Pj4gICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAzIC0KPj4+ICAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAzNCArLS0tLS0KPj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jICAgICAgICAgICB8IDEwNSArKysr KysrKysrKysrKysrKysKPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5o ICAgICAgICAgICB8ICAxNSArKysKPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNp LmMgICAgICAgICAgICAgICB8ICAgOCArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDUzICsrKysrKystLQo+Pj4gICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDEwICsrCj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgICAgfCAgNjYgKysrKysrKystLS0K Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggICAgICAgICB8ICAz NCArKysrKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgICB8ICAgMyArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAg ICAgICAgICAgIHwgICA2ICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggICAgICAgfCAgMTcgLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbHJjLmMgICAgfCAgIDIgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jICB8ICA0OCArKysrLS0tLQo+Pj4gICAgLi4uL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgIDI2IC0tLS0tCj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMgfCAgMTIgKy0KPj4+ ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaCB8ICAgNyAt LQo+Pj4gICAgMjAgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlv bnMoLSkKPj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dsb2JhbHMuYwo+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2xvYmFscy5oCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+IGluZGV4IDE3ODdl MTI5OWIxYi4uYTFkODM0MDY4NzY1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4+PiBA QCAtNzcsNiArNzcsNyBAQCBpOTE1LXkgKz0gXAo+Pj4gICAgICAgICAgaTkxNV9nZW1fdGlsaW5n Lm8gXAo+Pj4gICAgICAgICAgaTkxNV9nZW1fdXNlcnB0ci5vIFwKPj4+ICAgICAgICAgIGk5MTVf Z2VtZnMubyBcCj4+PiArICAgICAgIGk5MTVfZ2xvYmFscy5vIFwKPj4+ICAgICAgICAgIGk5MTVf cXVlcnkubyBcCj4+PiAgICAgICAgICBpOTE1X3JlcXVlc3QubyBcCj4+PiAgICAgICAgICBpOTE1 X3NjaGVkdWxlci5vIFwKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2FjdGl2ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+Pj4gaW5kZXgg MjE1YjZmZjhhYTczLi45MDI2Nzg3ZWJkZjggMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2FjdGl2ZS5jCj4+PiBAQCAtMjgwLDcgKzI4MCwxMiBAQCBpbnQgX19pbml0IGk5MTVfZ2xvYmFs X2FjdGl2ZV9pbml0KHZvaWQpCj4+PiAgICAgICAgcmV0dXJuIDA7Cj4+PiAgICB9Cj4+PiAgICAK Pj4+IC12b2lkIF9fZXhpdCBpOTE1X2dsb2JhbF9hY3RpdmVfZXhpdCh2b2lkKQo+Pj4gK3ZvaWQg aTkxNV9nbG9iYWxfYWN0aXZlX3Nocmluayh2b2lkKQo+Pj4gK3sKPj4+ICsgICAgIGttZW1fY2Fj aGVfc2hyaW5rKGdsb2JhbC5zbGFiX2NhY2hlKTsKPj4+ICt9Cj4+PiArCj4+PiArdm9pZCBpOTE1 X2dsb2JhbF9hY3RpdmVfZXhpdCh2b2lkKQo+Pj4gICAgewo+Pj4gICAgICAgIGttZW1fY2FjaGVf ZGVzdHJveShnbG9iYWwuc2xhYl9jYWNoZSk7Cj4+PiAgICB9Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfYWN0aXZlLmgKPj4+IGluZGV4IDEyYjVjMWQyODdkMS4uNWZiZDkxMDIzODRiIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+Pj4gQEAgLTQyMCw2ICs0MjAsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZikgeyB9Cj4+PiAgICAjZW5kaWYKPj4+ICAgIAo+Pj4gICAgaW50IGk5MTVfZ2xvYmFsX2FjdGl2 ZV9pbml0KHZvaWQpOwo+Pj4gK3ZvaWQgaTkxNV9nbG9iYWxfYWN0aXZlX3Nocmluayh2b2lkKTsK Pj4+ICAgIHZvaWQgaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQodm9pZCk7Cj4+PiAgICAKPj4+ICAg ICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfSF8gKi8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ Pj4gaW5kZXggMzcyMzBhZTdmYmU2Li5hMzY1YjFhMmVhOWEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4+PiBAQCAtMTQ1OSw5ICsxNDU5LDYgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgewo+Pj4gICAgICAgIHN0cnVjdCBrbWVtX2NhY2hlICpvYmplY3RzOwo+Pj4gICAgICAg IHN0cnVjdCBrbWVtX2NhY2hlICp2bWFzOwo+Pj4gICAgICAgIHN0cnVjdCBrbWVtX2NhY2hlICps dXRzOwo+Pj4gLSAgICAgc3RydWN0IGttZW1fY2FjaGUgKnJlcXVlc3RzOwo+Pj4gLSAgICAgc3Ry dWN0IGttZW1fY2FjaGUgKmRlcGVuZGVuY2llczsKPj4+IC0gICAgIHN0cnVjdCBrbWVtX2NhY2hl ICpwcmlvcml0aWVzOwo+Pj4gICAgCj4+PiAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2Rldmlj ZV9pbmZvIF9faW5mbzsgLyogVXNlIElOVEVMX0lORk8oKSB0byBhY2Nlc3MuICovCj4+PiAgICAg ICAgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyBfX3J1bnRpbWU7IC8qIFVzZSBSVU5USU1FX0lO Rk8oKSB0byBhY2Nlc3MuICovCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4+IGluZGV4IDFl YjNhNWY4NjU0Yy4uZDE4YzRjY2ZmMzcwIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+Pj4gQEAgLTQyLDYgKzQyLDcgQEAKPj4+ICAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+Pj4g ICAgI2luY2x1ZGUgImk5MTVfZ2VtX2NsZmx1c2guaCIKPj4+ICAgICNpbmNsdWRlICJpOTE1X2dl bWZzLmgiCj4+PiArI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgo+Pj4gICAgI2luY2x1ZGUgImk5 MTVfcmVzZXQuaCIKPj4+ICAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4+PiAgICAjaW5jbHVk ZSAiaTkxNV92Z3B1LmgiCj4+PiBAQCAtMTg3LDYgKzE4OCw4IEBAIHZvaWQgaTkxNV9nZW1fdW5w YXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+Pj4gICAgICAgIGlmICh1bmxpa2Vs eSgrK2k5MTUtPmd0LmVwb2NoID09IDApKSAvKiBrZWVwIDAgYXMgaW52YWxpZCAqLwo+Pj4gICAg ICAgICAgICAgICAgaTkxNS0+Z3QuZXBvY2ggPSAxOwo+Pj4gICAgCj4+PiArICAgICBpOTE1X2ds b2JhbHNfdW5wYXJrKCk7Cj4+PiArCj4+PiAgICAgICAgaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2 ZShpOTE1KTsKPj4+ICAgICAgICBpOTE1X3VwZGF0ZV9nZnhfdmFsKGk5MTUpOwo+Pj4gICAgICAg IGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPj4+IEBAIC0yOTE2LDEyICsyOTE5LDExIEBAIHN0 YXRpYyB2b2lkIHNocmlua19jYWNoZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4+ PiAgICAgICAgICogZmlsbGVkIHNsYWJzIHRvIHByaW9yaXRpc2UgYWxsb2NhdGluZyBmcm9tIHRo ZSBtb3N0bHkgZnVsbCBzbGFicywKPj4+ICAgICAgICAgKiB3aXRoIHRoZSBhaW0gb2YgcmVkdWNp bmcgZnJhZ21lbnRhdGlvbi4KPj4+ICAgICAgICAgKi8KPj4+IC0gICAgIGttZW1fY2FjaGVfc2hy aW5rKGk5MTUtPnByaW9yaXRpZXMpOwo+Pj4gLSAgICAga21lbV9jYWNoZV9zaHJpbmsoaTkxNS0+ ZGVwZW5kZW5jaWVzKTsKPj4+IC0gICAgIGttZW1fY2FjaGVfc2hyaW5rKGk5MTUtPnJlcXVlc3Rz KTsKPj4+ICAgICAgICBrbWVtX2NhY2hlX3NocmluayhpOTE1LT5sdXRzKTsKPj4+ICAgICAgICBr bWVtX2NhY2hlX3NocmluayhpOTE1LT52bWFzKTsKPj4+ICAgICAgICBrbWVtX2NhY2hlX3Nocmlu ayhpOTE1LT5vYmplY3RzKTsKPj4+ICsKPj4+ICsgICAgIGk5MTVfZ2xvYmFsc19wYXJrKCk7Cj4+ Cj4+IFNsaWdodGx5IGNvbmZ1c2luZyB0aGF0IHRoZSBzaHJpbmsgY2FjaGVzIHBhdGggY2FsbHMg Z2xvYmFsc19wYXJrIC0gaWUKPj4gYWZ0ZXIgdGhlIGRldmljZSBoYXMgYmVlbiBwYXJrZWQuIFdv dWxkIGk5MTVfZ2xvYmFsc19zaHJpbmsgYW5kCj4+IF9faTkxNV9nbG9iYWxzX3NocmluayBiZSBj bGVhcmVyPyBOb3Qgc3VyZS4KPiAKPiBGaW5hbCBkZXN0aW5hdGlvbiBpcyBfX2k5MTVfZ2VtX3Bh cmsuIEkgY291bGQgc3RpY2sgaXQgdGhlcmUgbm93LCBidXQKPiBmZWx0IGl0IGNsZWFyZXIgdG8g aGF2ZSBpdCBhcyBhIHNpZGV3YXlzIG1vdmUgYXRtLgo+IAo+IFdpdGggdGhlIGxhc3QgMyBzbGFi IGNhY2hlcyBjb252ZXJ0ZWQgb3ZlciB0byBnbG9iYWxzLCB0aGV5IGFsbCBzaXQKPiBiZWhpbmQg dGhlIHNhbWUgcmN1X3dvcmsgYW5kIHdlIGNhbiByZW1vdmUgb3VyIG9wZW4tY29kZWQgdmFyaWFu dAo+IChyY3Vfd29yayBpcyBhIHJlY2VudCBpbnZlbnRpb24pLgoKSXMgdGhlcmUgc29tZSBkb3du c2lkZSB0byBjYWxsaW5nIGk5MTVfZ2xvYmFsc19wYXJrIGRpcmVjdGx5IGZyb20gdGhlIAppZGxl IHdvcmsgaGFuZGxlciBzdHJhaWdodCBhd2F5PyAoSSBtZWFuIGluIHRoaXMgcGF0Y2guKQoKQ29u dmVydGluZyB0aGUgaWRsZSBfX3NsZWVwX3JjdSBwYXRoIHRvIHF1ZXVlX3JjdV93b3JrIGlzIHRo ZW4gYSAKY29tcGxldGVseSBzZXBhcmF0ZSB0YXNrLgoKUmVnYXJkcywKClR2cnRrbwoKPj4+ICt2 b2lkIGk5MTVfZ2xvYmFsc19wYXJrKHZvaWQpCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IHBhcmtf d29yayAqd3JrOwo+Pj4gKwo+Pj4gKyAgICAgLyoKPj4+ICsgICAgICAqIERlZmVyIHNocmlua2lu ZyB0aGUgZ2xvYmFsIHNsYWIgY2FjaGVzIChhbmQgb3RoZXIgd29yaykgdW50aWwKPj4+ICsgICAg ICAqIGFmdGVyIGEgUkNVIGdyYWNlIHBlcmlvZCBoYXMgY29tcGxldGVkIHdpdGggbm8gYWN0aXZp dHkuIFRoaXMKPj4+ICsgICAgICAqIGlzIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSBsYXRlbmN5IGlt cGFjdCBvbiB0aGUgY29uc3VtZXJzIGNhdXNlZAo+Pj4gKyAgICAgICogYnkgdXMgc2hyaW5raW5n IHRoZSBjYWNoZXMgdGhlIHNhbWUgdGltZSBhcyB0aGV5IGFyZSB0cnlpbmcgdG8KPj4+ICsgICAg ICAqIGFsbG9jYXRlLCB3aXRoIHRoZSBhc3N1bXB0aW9uIGJlaW5nIHRoYXQgaWYgd2UgaWRsZSBs b25nIGVub3VnaAo+Pj4gKyAgICAgICogZm9yIGFuIFJDVSBncmFjZSBwZXJpb2QgdG8gZWxhcHNl IHNpbmNlIHRoZSBsYXN0IHVzZSwgaXQgaXMgbGlrZWx5Cj4+PiArICAgICAgKiB0byBiZSBsb25n ZXIgdW50aWwgd2UgbmVlZCB0aGUgY2FjaGVzIGFnYWluLgo+Pj4gKyAgICAgICovCj4+PiArICAg ICBpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJmFjdGl2ZSkpCj4+PiArICAgICAgICAgICAgIHJl dHVybjsKPj4+ICsKPj4+ICsgICAgIHdyayA9IGttYWxsb2Moc2l6ZW9mKCp3cmspLCBHRlBfS0VS TkVMKTsKPj4+ICsgICAgIGlmICghd3JrKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4+PiAr Cj4+PiArICAgICB3cmstPmVwb2NoID0gYXRvbWljX2luY19yZXR1cm4oJmVwb2NoKTsKPj4KPj4g RG8geW91IG5lZWQgdG8gYnVtcCB0aGUgZXBvY2ggaGVyZT8KPiAKPiBTdHJpY3RseSwgbm8uIEl0 IGRvZXNuJ3QgaGFybSwgcHJvdmlkZXMgYW4gZXhwbGljaXQgbWIgYW5kIGEga25vd24KPiB1bmlx dWVuZXNzIHRvIG91ciBzYW1wbGluZy4KPiAKPj4gVW5wYXJrIHdvdWxkIGJ1bXAgaXQgc28KPj4g YXV0b21hdGljYWxseSB3aGVuIHJjdSB3b3JrIGdldHMgdG8gcnVuIGl0IHdvdWxkIGZhaWwgYWxy ZWFkeS4gTGlrZSB0aGlzCj4+IGl0IHNvdW5kcyBsaWtlIGRvdWJsZSBpbmNyZW1lbnQuIEkgZG9u J3Qgc2VlIGEgcHJvYmxlbSB3aXRoIHRoZSBkb3VibGUKPj4gaW5jcmVtZW50IEkganVzdCBmYWls ZWQgdG8gc3BvdCBpZiBpdCBpcyBhY3R1YWxseSBuZWVkZWQgZm9yIHNvbWUgc3VidGxlCj4+IHJl YXNvbi4gVGhlcmUgd291bGQgYmUgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIG11bHRpcGxlIGRldmlj ZSBwYXJrCj4+IGNhbGxlcnMgc3RvcmluZyB0aGUgc2FtZSBlcG9jaCBidXQgaXMgdGhhdCByZWFs bHkgYSBwcm9ibGVtPyBBZ2FpbiwgYXMKPj4gc29vbiBhcyBzb21lb25lIHVucGFya3MgaXQgc2Vl bXMgbGlrZSBpdCB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcuCj4gCj4gSSBkaWQgd29uZGVyIGlm IHdlIGNvdWxkIG1ha2UgdXNlIG9mIGl0LCBidXQgZm9yIHRoZSBtb21lbnQsIGFsbCBJIGNhbgo+ IHNheSBpcyB0aGF0IGl0IG1heSBtYWtlIGRlYnVnZ2luZyBzbGlnaHRseSBlYXNpZXIuCj4gLUNo cmlzCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=