From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH 3/3] drm/i915: FB backing gem obj should reside in LMEM Date: Thu, 26 Sep 2019 14:44:09 +0530 Message-ID: <20190926091409.GC28487@intel.com> References: <20190926052135.29911-1-ramalingam.c@intel.com> <20190926052135.29911-3-ramalingam.c@intel.com> <1d52529c-9ecf-6525-43f5-1d2bd5f506a2@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 792986ECF5 for ; Thu, 26 Sep 2019 09:14:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1d52529c-9ecf-6525-43f5-1d2bd5f506a2@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx , Matthew Auld List-Id: intel-gfx@lists.freedesktop.org T24gMjAxOS0wOS0yNiBhdCAwOTo1MzowMyArMDEwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4g Cj4gT24gMjYvMDkvMjAxOSAwNjoyMSwgUmFtYWxpbmdhbSBDIHdyb3RlOgo+ID4gSWYgTG9jYWwg bWVtb3J5IGlzIHN1cHBvcnRlZCBieSBoYXJkd2FyZSwgd2Ugd2FudCBmcmFtZWJ1ZmZlciBiYWNr aW5nCj4gPiBnZW0gb2JqZWN0cyBvdXQgb2YgbG9jYWwgbWVtb3J5Lgo+ID4gCj4gPiBJZiBsb2Nh bCBtZW1vcnkgaXMgc3VwcG9ydGVkIGFuZCBnZW0gb2JqZWN0IGlmIG5vdCBmcm9tIGxvY2FsIG1l bW9yeSB3ZQo+ID4gbWlncmF0ZSB0aGUgb2JqIGludG8gbG9jYWwgbWVtb3J5LiBBbmQgb25jZSBm cmFtZWJ1ZmZlciBpcyBjcmVhdGVkIHdlCj4gPiBibG9jayB0aGUgbWlncmF0aW9uIG9mIHRoZSBh c3NvY2lhdGVkIG9iamVjdCBvdXQgb2YgbG9jYWwgbWVtb3J5Lgo+ID4gCj4gPiBUaGlzIGlzIGRl dmVsb3BlZCBvbiB0b3Agb2YgdjMgTE1FTSBzZXJpZXMKPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9zZXJpZXMvNTY2ODMvCj4gPiAKPiA+IGNjOiBNYXR0aGV3IEF1bGQgPG1h dHRoZXcuYXVsZEBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJh bWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAyNSArKysrKysrKysKPiA+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgfCA1OCArKysrKysrKysrKystLS0tLS0t LQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggICB8ICAz ICsKPiA+ICAgMyBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMo LSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMKPiA+IGluZGV4IDFjYzc0ODQ0ZDNlYS4uZDE5MjFhMzE3MDY2IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtNTYsNiAr NTYsOCBAQAo+ID4gICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF90di5oIgo+ID4gICAjaW5jbHVk ZSAiZGlzcGxheS9pbnRlbF92ZHNjLmgiCj4gPiArI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9vYmpl Y3QuaCIKPiA+ICsKPiA+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gPiAgICNpbmNsdWRlICJp OTE1X3RyYWNlLmgiCj4gPiAgICNpbmNsdWRlICJpbnRlbF9hY3BpLmgiCj4gPiBAQCAtMTU0OTYs NiArMTU0OTgsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgIHN0YXRpYyB2b2lkIGludGVsX3VzZXJfZnJh bWVidWZmZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPiA+ICAgewo+ID4g ICAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVm ZmVyKGZiKTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShmYi0+ZGV2KTsKPiA+ICsKPiA+ICsJLyogcmVtb3ZpbmcgdGhlIEZCIG1lbW9yeSByZWdpb24g cmVzdHJpY3Rpb24gb24gb2JqLCBpZiBhbnkgKi8KPiA+ICsJaW50ZWxfZmItPmZyb250X2J1ZmZl ci0+b2JqID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPm1lbW9yeV9yZWdpb25zOwo+IAo+IElzIHRo aXMgcmlnaHQsIGFzc2lnbmluZyBiaXRtYXNrIHRvIHNvbWV0aGluZyBjYWxsZWQgb2JqPwpPb3Bz LiB3YW50ZWQgdG8gYXNzaWduIGludG8gdGhlIG9iai0+bWVtb3J5X3JlZ2lvbnMuIFRoYW5rcyBm b3IKY2F0Y2hpbmcgaXQuCgo+IAo+ID4gICAJZHJtX2ZyYW1lYnVmZmVyX2NsZWFudXAoZmIpOwo+ ID4gICAJaW50ZWxfZnJvbnRidWZmZXJfcHV0KGludGVsX2ZiLT5mcm9udGJ1ZmZlcik7Cj4gPiBA QCAtMTU1NDMsMTEgKzE1NTQ5LDI2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAo+ID4gICB7Cj4gPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ ID4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAmaW50ZWxfZmItPmJhc2U7Cj4gPiAr CXUzMiAqcmVnaW9uX21hcDsKPiA+ICAgCXUzMiBtYXhfc3RyaWRlOwo+ID4gICAJdW5zaWduZWQg aW50IHRpbGluZywgc3RyaWRlOwo+ID4gICAJaW50IHJldCA9IC1FSU5WQUw7Cj4gPiAgIAlpbnQg aTsKPiA+ICsJLyogR0VNIE9iaiBmb3IgZnJhbWUgYnVmZmVyIGlzIGV4cGVjdGVkIHRvIGJlIGlu IExNRU0uICovCj4gPiArCWlmIChIQVNfTE1FTShkZXZfcHJpdikpCj4gPiArCQlpZiAob2JqLT5t bS5yZWdpb24tPnR5cGUgIT0gSU5URUxfTE1FTSkgewo+ID4gKwkJCXJlZ2lvbl9tYXAgPSAmaW50 ZWxfcmVnaW9uX21hcFtJTlRFTF9NRU1PUllfTE1FTV07Cj4gPiArCQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X21lbV9yZWdpb25fbWlncmF0ZShkZXZfcHJpdiwgb2JqLAo+ID4gKwkJCQkJCQkJIHJl Z2lvbl9tYXAsCj4gPiArCQkJCQkJCQkgMSk7Cj4gPiArCQkJaWYgKHJldCkgewo+ID4gKwkJCQlE Uk1fRVJST1IoIkZCIG1pZ3JhdGlvbiB0byBMTUVNIEZhaWxlZCglZClcbiIsCj4gPiArCQkJCQkg IHJldCk7Cj4gCj4gUHJvYmFibHkgc2hvdWxkIGJlIGp1c3QgZGVidWcgbGV2ZWwgc2luY2UgaXQg aXMgaW1hZ2luYWJseSB1c2VyIHRyaWdnZXJhYmxlCj4gYW5kIG5vdCByZWFsbHkgYW4gZXJyb3Ig Zm9yIHRoZSBrZXJuZWwgYXMgc3VjaC4KClN1cmUuCj4gCj4gPiArCQkJCXJldHVybiByZXQ7Cj4g PiArCQkJfQo+ID4gKwkJfQo+ID4gKwo+ID4gICAJaW50ZWxfZmItPmZyb250YnVmZmVyID0gaW50 ZWxfZnJvbnRidWZmZXJfZ2V0KG9iaik7Cj4gPiAgIAlpZiAoIWludGVsX2ZiLT5mcm9udGJ1ZmZl cikKPiA+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiA+IEBAIC0xNTY2Niw2ICsxNTY4NywxMCBAQCBz dGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1lYnVmZmVy ICppbnRlbF9mYiwKPiA+ICAgCQlnb3RvIGVycjsKPiA+ICAgCX0KPiA+ICsJLyogQmxvY2tpbmcg dGhlIG1pZ3JhdGlvbiBvZiBnZW0gb2JqIG91dCBvZiBMTUVNICovCj4gPiArCWlmIChIQVNfTE1F TShkZXZfcHJpdikpCj4gPiArCQlvYmotPm1lbW9yeV9yZWdpb25zID0gUkVHSU9OX0xNRU07Cj4g PiArCj4gPiAgIAlyZXR1cm4gMDsKPiA+ICAgZXJyOgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+ID4gaW5kZXggZTZmODQyNmRlZGZmLi42NWI0NzA1NDEz MGIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2Jq ZWN0LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu Ywo+ID4gQEAgLTUwMSwzMCArNTAxLDExIEBAIF9fcmVnaW9uX2lkKHUzMiByZWdpb24pCj4gPiAg IAlyZXR1cm4gSU5URUxfTUVNT1JZX1VLTk9XTjsKPiA+ICAgfQo+ID4gLXN0YXRpYyBpbnQgaTkx NV9nZW1fb2JqZWN0X3JlZ2lvbl9zZWxlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gLQkJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtICphcmdzLAo+ ID4gLQkJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiA+IC0JCQkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4gK2ludCBpOTE1X2dlbV9vYmplY3RfbWVtX3JlZ2lvbl9t aWdyYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJICAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPiArCQkJCSAgICAgICB1MzIgKnVy ZWdpb25zLCB1MzIgcmVnaW9uX2NvdW50KQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UgPSBkZXZfcHJpdi0+ZW5naW5lW0JDUzBdLT5rZXJuZWxfY29udGV4dDsKPiA+IC0J dTMyIF9fdXNlciAqdXJlZ2lvbnMgPSB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZGF0YSk7Cj4gPiAt CXUzMiB1cmVnaW9uc19jb3B5W0lOVEVMX01FTU9SWV9VS05PV05dOwo+ID4gLQlpbnQgaSwgcmV0 Owo+ID4gLQo+ID4gLQlpZiAoYXJncy0+c2l6ZSA+IElOVEVMX01FTU9SWV9VS05PV04pCj4gPiAt CQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0KPiA+IC0JbWVtc2V0KHVyZWdpb25zX2NvcHksIDAsIHNp emVvZih1cmVnaW9uc19jb3B5KSk7Cj4gPiAtCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5zaXplOyBp KyspIHsKPiA+IC0JCXUzMiByZWdpb247Cj4gPiAtCj4gPiAtCQlyZXQgPSBnZXRfdXNlcihyZWdp b24sIHVyZWdpb25zKTsKPiA+IC0JCWlmIChyZXQpCj4gPiAtCQkJcmV0dXJuIHJldDsKPiA+IC0K PiA+IC0JCXVyZWdpb25zX2NvcHlbaV0gPSByZWdpb247Cj4gPiAtCQkrK3VyZWdpb25zOwo+ID4g LQl9Cj4gPiAgIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gPiAg IAlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHJlcGFyZV9tb3ZlKG9iaik7Cj4gPiBAQCAtNTMzLDgg KzUxNCw4IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X3JlZ2lvbl9zZWxlY3Qoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gICAJICAgICAgICBnb3RvIGVycjsKPiA+ ICAgCX0KPiA+IC0JZm9yIChpID0gMDsgaSA8IGFyZ3MtPnNpemU7IGkrKykgewo+ID4gLQkJdTMy IHJlZ2lvbiA9IHVyZWdpb25zX2NvcHlbaV07Cj4gPiArCWZvciAoaSA9IDA7IGkgPCByZWdpb25f Y291bnQ7IGkrKykgewo+ID4gKwkJdTMyIHJlZ2lvbiA9IHVyZWdpb25zW2ldOwo+ID4gICAJCWVu dW0gaW50ZWxfcmVnaW9uX2lkIGlkID0gX19yZWdpb25faWQocmVnaW9uKTsKPiA+ICAgCQlpZiAo IShvYmotPm1lbW9yeV9yZWdpb24gJiByZWdpb24pKSB7Cj4gPiBAQCAtNTc2LDYgKzU1NywzNSBA QCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9yZWdpb25fc2VsZWN0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAgCXJldHVybiByZXQ7Cj4gPiAgIH0KPiA+ICtzdGF0 aWMgaW50IGk5MTVfZ2VtX29iamVjdF9yZWdpb25fc2VsZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9wYXJh bSAqYXJncywKPiA+ICsJCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiArCQkJCQkgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSA9IGRldl9wcml2LT5lbmdpbmVbQkNTMF0tPmtlcm5lbF9jb250ZXh0Owo+ID4g Kwl1MzIgX191c2VyICp1cmVnaW9ucyA9IHU2NF90b191c2VyX3B0cihhcmdzLT5kYXRhKTsKPiA+ ICsJdTMyIHVyZWdpb25zX2NvcHlbSU5URUxfTUVNT1JZX1VLTk9XTl07Cj4gPiArCWludCBpLCBy ZXQ7Cj4gPiArCj4gPiArCWlmIChhcmdzLT5zaXplID4gSU5URUxfTUVNT1JZX1VLTk9XTikKPiA+ ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKwltZW1zZXQodXJlZ2lvbnNfY29weSwgMCwg c2l6ZW9mKHVyZWdpb25zX2NvcHkpKTsKPiA+ICsJZm9yIChpID0gMDsgaSA8IGFyZ3MtPnNpemU7 IGkrKykgewo+ID4gKwkJdTMyIHJlZ2lvbjsKPiA+ICsKPiA+ICsJCXJldCA9IGdldF91c2VyKHJl Z2lvbiwgdXJlZ2lvbnMpOwo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4g Kwo+ID4gKwkJdXJlZ2lvbnNfY29weVtpXSA9IHJlZ2lvbjsKPiA+ICsJCSsrdXJlZ2lvbnM7Cj4g PiArCX0KPiAKPiBJIGRvIHVuZGVyc3RhbmQgdGhpcyBpcyBvbGQgY29kZSAobm90IHlvdXJzKSBi dXQgSSBmYWlsIHRvIHBlbmV0cmF0ZSB3aHkgaXMKPiB0aGlzIGEgbG9vcCBhbmQgbm90IGNvcHlf ZnJvbV91c2VyPwpXaGF0IGkgdW5kZXJzdG9vZCBpcywgbGlzdCBvZiBwb3NzaWJsZSByZWdpb25z X21hcHMgYXJlIHBhc3NlZCBoZXJlLiBhbmQKdGhleSBhcmUgcmVhZGluZyBpdCBvbmUgYWZ0ZXIg YW5vdGhlci4KPiAKPiA+ICsKPiA+ICsJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9tZW1fcmVnaW9u X21pZ3JhdGUoZGV2X3ByaXYsIG9iaiwgdXJlZ2lvbnNfY29weSwKPiA+ICsJCQkJCQkgIGFyZ3Mt PnNpemUpOwo+ID4gK30KPiA+ICsKPiA+ICAgaW50IGk5MTVfZ2VtX29iamVjdF9zZXRwYXJhbV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gICAJCQkJICAgc3Ry dWN0IGRybV9maWxlICpmaWxlKQo+ID4gICB7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5oCj4gPiBpbmRleCBhN2MwNzNhZWI3NzcuLmQwOWE5Yzc0MWI0MSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu aAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4g PiBAQCAtNDcsNiArNDcsOSBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ICAgCQkJICAgIGVudW0gaW50ZWxfcmVnaW9uX2lk IGlkKTsKPiA+ICAgdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+ID4gK2ludCBpOTE1X2dlbV9vYmplY3RfbWVtX3JlZ2lvbl9t aWdyYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJICAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPiArCQkJCSAgICAgICB1MzIgKnVy ZWdpb25zLCB1MzIgcmVnaW9uX2NvdW50KTsKPiA+ICAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9y ZXNldF9wYWdlX2l0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gPiAKPiAK PiBHZW5lcmFsIGFwcHJvYWNoIGxvb2tzIGZlYXNpYmxlIHRvIG1lLCBidXQgSSdsbCBsZWF2ZSBn dXlzIGRpcmVjdGx5IGludm9sdmVkCj4gd2l0aCBsb2NhbCBtZW1vcnkgdG8gY2FsbCBpdC4KPiAK PiBBbm90aGVyIG15IGNvbW1lbnQvcXVlc3Rpb24gd291bGQgYmUgLSBkbyB3ZSBoYXZlIGEgaG9v ayB3aGVuIG9iamVjdHMgYXJlCj4gcmVsZWFzZWQvZGlzYXNzb2NpYXRlZCBmcm9tIHRoZSBmcmFt ZWJ1ZmZlciBhbmQgc2hvdWxkIHdlIHJlc3RvcmUgdGhlCj4gYWxsb3dlZCBtZW1vcnkgcmVnaW9u IG1hc2sgdG8gZGVmYXVsdCBhdCB0aGF0IHBvaW50PwphdCBwcmVzZW50IEkgYW0gZG9pbmcgdGhp cyBhdCBpbnRlbF91c2VyX2ZyYW1lYnVmZmVyX2Rlc3Ryb3kuIE5vdCBzdXJlCmlmIHdlIGhhdmUg YW55IGJldHRlciBwbGFjZSBmb3IgdGhpcy4KCi1SYW0KPiAKPiBSZWdhcmRzLAo+IAo+IFR2cnRr bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=