From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru-Cosmin Gheorghe Subject: Re: [RFC v4 7/8] drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms Date: Tue, 21 Aug 2018 10:56:01 +0100 Message-ID: <20180821095601.GG8465@e114479-lin.cambridge.arm.com> References: <1534515531-20599-1-git-send-email-uma.shankar@intel.com> <1534515531-20599-8-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1534515531-20599-8-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Uma Shankar Cc: dcastagna@chromium.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, ville.syrjala@intel.com, nd@arm.com, maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org SGkgVW1hLAoKT24gRnJpLCBBdWcgMTcsIDIwMTggYXQgMDc6NDg6NTBQTSArMDUzMCwgVW1hIFNo YW5rYXIgd3JvdGU6Cj4gSW1wbGVtZW50IFBsYW5lIEdhbW1hIGZlYXR1cmUgZm9yIEJEVyBhbmQg R2VuOSBwbGF0Zm9ybXMuCj4gCj4gdjI6IFVzZWQgbmV3bHkgYWRkZWQgZHJtX2NvbG9yX2x1dF9l eHQgc3RydWN0dXJlIGZvciBlbmhhbmNlZAo+IHByZWNpc2lvbiBmb3IgR2FtbWEgTFVUIGVudHJp ZXMuCj4gCj4gdjM6IFJlYmFzZQo+IAo+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEu c2hhbmthckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNp LmMgICAgICB8ICA1ICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAg IHwgMjUgKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xv ci5jICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDQgKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8ICA0ICsrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDk1IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiBp bmRleCBlOTMxYjQ4Li40MGRlNzhjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gQEAg LTU0LDcgKzU0LDEwIEBACj4gIAkuY3Vyc29yX29mZnNldHMgPSB7IENVUlNPUl9BX09GRlNFVCwg SVZCX0NVUlNPUl9CX09GRlNFVCwgSVZCX0NVUlNPUl9DX09GRlNFVCB9Cj4gIAo+ICAjZGVmaW5l IEJEV19DT0xPUlMgXAo+IC0JLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDUxMiwgLmdh bW1hX2x1dF9zaXplID0gNTEyIH0KPiArCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSA1 MTIsIC5nYW1tYV9sdXRfc2l6ZSA9IDUxMiB9LCBcCj4gKwkucGxhbmVfY29sb3IgPSB7IC5wbGFu ZV9kZWdhbW1hX2x1dF9zaXplID0gMCwgXAo+ICsJCQkgLnBsYW5lX2dhbW1hX2x1dF9zaXplID0g MTYgfQo+ICsKPiAgI2RlZmluZSBDSFZfQ09MT1JTIFwKPiAgCS5jb2xvciA9IHsgLmRlZ2FtbWFf bHV0X3NpemUgPSA2NSwgLmdhbW1hX2x1dF9zaXplID0gMjU3IH0KPiAgI2RlZmluZSBHTEtfQ09M T1JTIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCAwYzlmMDNkLi4yZGI2YTg0IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTE3Miw2ICsxNzIsMTAgQEAgc3RhdGlj IGlubGluZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCj4gICNkZWZp bmUgX1BIWTMocGh5LCAuLi4pIF9QSUNLKHBoeSwgX19WQV9BUkdTX18pCj4gICNkZWZpbmUgX01N SU9fUEhZMyhwaHksIGEsIGIsIGMpIF9NTUlPKF9QSFkzKHBoeSwgYSwgYiwgYykpCj4gIAo+ICsv KiBQbGFuZSBHYW1tYSBSZWdpc3RlcnMgKi8KPiArI2RlZmluZSBfTU1JT19QTEFORV9HQU1DKHBs YW5lLCBpLCBhLCBiKSAgX01NSU8oX1BJUEUocGxhbmUsIGEsIGIpICsgKGkpICogNCkKPiArI2Rl ZmluZSBfTU1JT19QTEFORV9HQU1DMTYocGxhbmUsIGksIGEsIGIpICBfTU1JTyhfUElQRShwbGFu ZSwgYSwgYikgKyAoaSkgKiA0KQo+ICsKPiAgI2RlZmluZSBfX01BU0tFRF9GSUVMRChtYXNrLCB2 YWx1ZSkgKChtYXNrKSA8PCAxNiB8ICh2YWx1ZSkpCj4gICNkZWZpbmUgX01BU0tFRF9GSUVMRCht YXNrLCB2YWx1ZSkgKHsJCQkJCSAgIFwKPiAgCWlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChtYXNr KSkJCQkJCSAgIFwKPiBAQCAtOTcxMyw2ICs5NzE3LDI3IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUg ewo+ICAjZGVmaW5lIFBSRV9DU0NfR0FNQ19JTkRFWChwaXBlKQlfTU1JT19QSVBFKHBpcGUsIF9Q UkVfQ1NDX0dBTUNfSU5ERVhfQSwgX1BSRV9DU0NfR0FNQ19JTkRFWF9CKQo+ICAjZGVmaW5lIFBS RV9DU0NfR0FNQ19EQVRBKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9QUkVfQ1NDX0dBTUNfREFU QV9BLCBfUFJFX0NTQ19HQU1DX0RBVEFfQikKPiAgCj4gKy8qIFBsYW5lIEdhbW1hIGluIEdlbjkr ICovCj4gKyNkZWZpbmUgX1BMQU5FX0dBTUNfMV9BCTB4NzAxZDAKPiArI2RlZmluZSBfUExBTkVf R0FNQ18xX0IJMHg3MTFkMAo+ICsjZGVmaW5lIF9QTEFORV9HQU1DXzJfQQkweDcwMmQwCj4gKyNk ZWZpbmUgX1BMQU5FX0dBTUNfMl9CCTB4NzEyZDAKPiArI2RlZmluZSBfUExBTkVfR0FNQ18xKHBp cGUpCV9QSVBFKHBpcGUsIF9QTEFORV9HQU1DXzFfQSwgX1BMQU5FX0dBTUNfMV9CKQo+ICsjZGVm aW5lIF9QTEFORV9HQU1DXzIocGlwZSkJX1BJUEUocGlwZSwgX1BMQU5FX0dBTUNfMl9BLCBfUExB TkVfR0FNQ18yX0IpCj4gKyNkZWZpbmUgUExBTkVfR0FNQyhwaXBlLCBwbGFuZSwgaSkJXAo+ICsJ X01NSU9fUExBTkVfR0FNQyhwbGFuZSwgaSwgX1BMQU5FX0dBTUNfMShwaXBlKSwgX1BMQU5FX0dB TUNfMihwaXBlKSkKPiArCj4gKyNkZWZpbmUgX1BMQU5FX0dBTUMxNl8xX0EJMHg3MDIxMAo+ICsj ZGVmaW5lIF9QTEFORV9HQU1DMTZfMV9CCTB4NzEyMTAKPiArI2RlZmluZSBfUExBTkVfR0FNQzE2 XzJfQQkweDcwMzEwCj4gKyNkZWZpbmUgX1BMQU5FX0dBTUMxNl8yX0IJMHg3MTMxMAo+ICsjZGVm aW5lIF9QTEFORV9HQU1DMTZfMShwaXBlKQlfUElQRShwaXBlLCBfUExBTkVfR0FNQzE2XzFfQSwg XAo+ICsJCQkJICAgICBfUExBTkVfR0FNQzE2XzFfQikKPiArI2RlZmluZSBfUExBTkVfR0FNQzE2 XzIocGlwZSkJX1BJUEUocGlwZSwgX1BMQU5FX0dBTUMxNl8yX0EsIFwKPiArCQkJCSAgICAgX1BM QU5FX0dBTUMxNl8yX0IpCj4gKyNkZWZpbmUgUExBTkVfR0FNQzE2KHBpcGUsIHBsYW5lLCBpKSBf TU1JT19QTEFORV9HQU1DMTYocGxhbmUsIGksIFwKPiArCQkJCV9QTEFORV9HQU1DMTZfMShwaXBl KSwgX1BMQU5FX0dBTUMxNl8yKHBpcGUpKQo+ICsKPiAgLyogcGlwZSBDU0MgJiBkZWdhbW1hL2dh bW1hIExVVHMgb24gQ0hWICovCj4gICNkZWZpbmUgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGMDEJKFZM Vl9ESVNQTEFZX0JBU0UgKyAweDY3OTAwKQo+ICAjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19DT0VG RjIzCShWTFZfRElTUExBWV9CQVNFICsgMHg2NzkwNCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bG9yLmMKPiBpbmRleCBmYjg0MDJmLi4yYjVjMGNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb2xvci5jCj4gQEAgLTQ5Miw2ICs0OTIsNTkgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xv YWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJSTkxNV9XUklURShQUkVD X1BBTF9JTkRFWChwaXBlKSwgMCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGJkd19sb2FkX3Bs YW5lX2dhbW1hX2x1dChjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwKPiArCQkJ CSAgICAgdTMyIG9mZnNldCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShzdGF0ZS0+cGxhbmUtPmRldik7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IHRv X2ludGVsX3BsYW5lKHN0YXRlLT5wbGFuZSktPnBpcGU7Cj4gKwllbnVtIHBsYW5lX2lkIHBsYW5l ID0gdG9faW50ZWxfcGxhbmUoc3RhdGUtPnBsYW5lKS0+aWQ7Cj4gKwl1aW50MzJfdCBpLCBsdXRf c2l6ZSA9Cj4gKwkJCUlOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGFuZV9jb2xvci5wbGFuZV9nYW1t YV9sdXRfc2l6ZTsKPiArCj4gKwlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgewo+ICsJCXN0cnVjdCBk cm1fY29sb3JfbHV0X2V4dCAqbHV0ID0KPiArCQkJKHN0cnVjdCBkcm1fY29sb3JfbHV0X2V4dCAq KSBzdGF0ZS0+Z2FtbWFfbHV0LT5kYXRhOwo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3Np emU7IGkrKykgewo+ICsJCQl1aW50MzJfdCB3b3JkID0KPiArCQkJKGRybV9jb2xvcl9sdXRfZXh0 cmFjdChsdXRbaV0ucmVkLCAxMCkgPDwgMjApIHwKPiArCQkJKGRybV9jb2xvcl9sdXRfZXh0cmFj dChsdXRbaV0uZ3JlZW4sIDEwKSA8PCAxMCkgfAo+ICsJCQlkcm1fY29sb3JfbHV0X2V4dHJhY3Qo bHV0W2ldLmJsdWUsIDEwKTsKCgpTaG91bGRuJ3QgeW91IGJlIHVzaW5nIGRybV9jb2xvcl9sdXRf ZXh0cmFjdF9leHQgPwoKCj4gKwo+ICsJCQlJOTE1X1dSSVRFKFBMQU5FX0dBTUMocGlwZSwgcGxh bmUsIGkpLCB3b3JkKTsKPiArCQl9Cj4gKwo+ICsJCS8qIFByb2dyYW0gdGhlIG1heCByZWdpc3Rl ciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuICovCj4gKwkJaSA9IGx1dF9zaXplIC0gMTsKPiArCQlJ OTE1X1dSSVRFKFBMQU5FX0dBTUMxNihwaXBlLCBwbGFuZSwgMCksCj4gKwkJCSAgIGRybV9jb2xv cl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxNikpOwo+ICsJCUk5MTVfV1JJVEUoUExBTkVfR0FN QzE2KHBpcGUsIHBsYW5lLCAxKSwKPiArCQkJICAgZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtp XS5ncmVlbiwgMTYpKTsKPiArCQlJOTE1X1dSSVRFKFBMQU5FX0dBTUMxNihwaXBlLCBwbGFuZSwg MiksCj4gKwkJCSAgIGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTYpKTsKPiAr CX0gZWxzZSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiArCQkJdWlu dDMyX3QgdiA9IChpICogKCgxIDw8IDEwKSAtIDEpKSAvIChsdXRfc2l6ZSAtIDEpOwo+ICsKPiAr CQkJSTkxNV9XUklURShQTEFORV9HQU1DKHBpcGUsIHBsYW5lLCBpKSwKPiArCQkJCSAgICh2IDw8 IDIwKSB8ICh2IDw8IDEwKSB8IHYpOwo+ICsJCX0KPiArCj4gKwkJSTkxNV9XUklURShQTEFORV9H QU1DMTYocGlwZSwgcGxhbmUsIDApLCAoMSA8PCAxNikgLSAxKTsKPiArCQlJOTE1X1dSSVRFKFBM QU5FX0dBTUMxNihwaXBlLCBwbGFuZSwgMSksICgxIDw8IDE2KSAtIDEpOwo+ICsJCUk5MTVfV1JJ VEUoUExBTkVfR0FNQzE2KHBpcGUsIHBsYW5lLCAyKSwgKDEgPDwgMTYpIC0gMSk7Cj4gKwl9Cj4g K30KPiArCj4gKy8qIExvYWRzIHRoZSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9u IEJyb2Fkd2VsbCsuICovCj4gK3N0YXRpYyB2b2lkIGJyb2Fkd2VsbF9sb2FkX3BsYW5lX2x1dHMo Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPnBsYW5lLT5kZXYpOwo+ICsK PiArCWJkd19sb2FkX3BsYW5lX2dhbW1hX2x1dChzdGF0ZSwKPiArCQlJTlRFTF9JTkZPKGRldl9w cml2KS0+cGxhbmVfY29sb3IucGxhbmVfZGVnYW1tYV9sdXRfc2l6ZSk7Cj4gK30KPiArCj4gIHN0 YXRpYyB2b2lkIGdsa19sb2FkX2RlZ2FtbWFfbHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3Rh dGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo c3RhdGUtPmNydGMtPmRldik7Cj4gQEAgLTY0OCw2ICs3MDEsMTEgQEAgdm9pZCBpbnRlbF9wbGFu ZV9jb2xvcl9pbml0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ICAKPiAgCWRybV9wbGFuZV9j b2xvcl9jcmVhdGVfcHJvcChwbGFuZS0+ZGV2LCBwbGFuZSk7Cj4gIAo+ICsJaWYgKElTX0JST0FE V0VMTChkZXZfcHJpdikgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwKPiArCQlJU19CUk9YVE9O KGRldl9wcml2KSkgewo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfcGxhbmVfbHV0cyA9IGJy b2Fkd2VsbF9sb2FkX3BsYW5lX2x1dHM7Cj4gKwl9Cj4gKwo+ICAJLyogRW5hYmxlIGNvbG9yIG1h bmFnZW1lbnQgc3VwcG9ydCB3aGVuIHdlIGhhdmUgZGVnYW1tYSAmIGdhbW1hIExVVHMuICovCj4g IAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPnBsYW5lX2NvbG9yLnBsYW5lX2RlZ2FtbWFfbHV0 X3NpemUgIT0gMCAmJgo+ICAJICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGFuZV9jb2xvci5w bGFuZV9nYW1tYV9sdXRfc2l6ZSAhPSAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCA2OTBlMWU4Li4yZDE1YWMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0xMzgwMyw2ICsxMzgwMywxMCBAQCBib29sIHNrbF9wbGFuZV9oYXNf cGxhbmFyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQkJICBEUk1f Q09MT1JfWUNCQ1JfQlQ3MDksCj4gIAkJCQkJCSAgRFJNX0NPTE9SX1lDQkNSX0xJTUlURURfUkFO R0UpOwo+ICAKPiArCS8qIEFkZCBQbGFuZSBDb2xvciBwcm9wZXJ0aWVzICovCj4gKwlpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwkJaW50 ZWxfcGxhbmVfY29sb3JfaW5pdCgmcHJpbWFyeS0+YmFzZSk7Cj4gKwo+ICAJZHJtX3BsYW5lX2hl bHBlcl9hZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAK PiAgCXJldHVybiBwcmltYXJ5Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5k ZXggZjcwMjZlOC4uMGVlYjFkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gQEAgLTE2NTAsNiArMTY1MCwxMCBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKgo+ICAJCQkJCSAg RFJNX0NPTE9SX1lDQkNSX0JUNzA5LAo+ICAJCQkJCSAgRFJNX0NPTE9SX1lDQkNSX0xJTUlURURf UkFOR0UpOwo+ICAKPiArCS8qIEFkZCBQbGFuZSBDb2xvciBwcm9wZXJ0aWVzICovCj4gKwlpZiAo SVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwkJ aW50ZWxfcGxhbmVfY29sb3JfaW5pdCgmaW50ZWxfcGxhbmUtPmJhc2UpOwo+ICsKPiAgCWRybV9w bGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9wbGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9m dW5jcyk7Cj4gIAo+ICAJcmV0dXJuIGludGVsX3BsYW5lOwo+IC0tIAo+IDEuOS4xCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwg bWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKQ2hl ZXJzLApBbGV4IEcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==