From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/i915: Support NV12 in rotated GGTT mapping Date: Mon, 28 Sep 2015 10:37:24 +0200 Message-ID: <20150928083724.GV3383@phenom.ffwll.local> References: <1442828735-9448-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1442828735-9448-4-git-send-email-tvrtko.ursulin@linux.intel.com> <20150924163556.GE26517@intel.com> <5605178C.4080304@linux.intel.com> <20150925112959.GN26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f179.google.com (mail-wi0-f179.google.com [209.85.212.179]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9786D6E0DF for ; Mon, 28 Sep 2015 01:34:31 -0700 (PDT) Received: by wicfx3 with SMTP id fx3so89944321wic.0 for ; Mon, 28 Sep 2015 01:34:30 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150925112959.GN26517@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBTZXAgMjUsIDIwMTUgYXQgMDI6Mjk6NTlQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIEZyaSwgU2VwIDI1LCAyMDE1IGF0IDEwOjQ0OjQ0QU0gKzAxMDAsIFR2cnRr byBVcnN1bGluIHdyb3RlOgo+ID4gCj4gPiBPbiAwOS8yNC8yMDE1IDA1OjM1IFBNLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIE1vbiwgU2VwIDIxLCAyMDE1IGF0IDEwOjQ1OjM0QU0g KzAxMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+ID4gPj4gRnJvbTogVHZydGtvIFVyc3VsaW4g PHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4+Cj4gPiA+PiBKdXN0IGFkZGluZyB0aGUg cm90YXRlZCBVViBwbGFuZSBhdCB0aGUgZW5kIG9mIHRoZSByb3RhdGVkIFkgcGxhbmUuCj4gPiA+ Pgo+ID4gPj4gdjI6IFJlYmFzZS4KPiA+ID4+Cj4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ID4gPj4gLS0tCj4gPiA+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICB8IDM3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLQo+ID4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCAgfCAgMyArKysKPiA+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgMTIgKysrKysrKysrKysrCj4gPiA+PiAgIDMgZmlsZXMgY2hhbmdlZCwgNDYgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+ID4+Cj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+ID4gPj4gaW5kZXggNTljOTM0ZmI5MjMwLi4yZGY5ZDE2ZGNlZmQgMTAw NjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+ID4+IEBAIC0z MjcyLDEwICszMjcyLDEzIEBAIGludGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoc3RydWN0IGk5MTVf Z2d0dF92aWV3ICpnZ3R0X3ZpZXcsCj4gPiA+PiAgIHsKPiA+ID4+ICAgCXN0cnVjdCBpbnRlbF9y b3RhdGlvbl9pbmZvICpyb3RfaW5mbyA9ICZnZ3R0X3ZpZXctPnJvdGF0aW9uX2luZm87Cj4gPiA+ PiAgIAl1bnNpZ25lZCBpbnQgc2l6ZV9wYWdlcyA9IHJvdF9pbmZvLT5zaXplID4+IFBBR0VfU0hJ RlQ7Cj4gPiA+PiArCXVuc2lnbmVkIGludCBzaXplX3BhZ2VzX3V2Owo+ID4gPj4gICAJc3RydWN0 IHNnX3BhZ2VfaXRlciBzZ19pdGVyOwo+ID4gPj4gICAJdW5zaWduZWQgbG9uZyBpOwo+ID4gPj4g ICAJZG1hX2FkZHJfdCAqcGFnZV9hZGRyX2xpc3Q7Cj4gPiA+PiAgIAlzdHJ1Y3Qgc2dfdGFibGUg KnN0Owo+ID4gPj4gKwl1bnNpZ25lZCBpbnQgdXZfc3RhcnRfcGFnZTsKPiA+ID4+ICsJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsKPiA+ID4+ICAgCWludCByZXQgPSAtRU5PTUVNOwo+ID4gPj4KPiA+ ID4+ICAgCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGxpc3Qgb2Ygc291cmNlIHBhZ2VzIGZvciBy YW5kb20gYWNjZXNzLiAqLwo+ID4gPj4gQEAgLTMyODQsMTIgKzMyODcsMTggQEAgaW50ZWxfcm90 YXRlX2ZiX29ial9wYWdlcyhzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKPiA+ID4+ ICAgCWlmICghcGFnZV9hZGRyX2xpc3QpCj4gPiA+PiAgIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsK PiA+ID4+Cj4gPiA+PiArCS8qIEFjY291bnQgZm9yIFVWIHBsYW5lIHdpdGggTlYxMi4gKi8KPiA+ ID4+ICsJaWYgKHJvdF9pbmZvLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKQo+ID4g Pj4gKwkJc2l6ZV9wYWdlc191diA9IHJvdF9pbmZvLT5zaXplX3V2ID4+IFBBR0VfU0hJRlQ7Cj4g PiA+PiArCWVsc2UKPiA+ID4+ICsJCXNpemVfcGFnZXNfdXYgPSAwOwo+ID4gPj4gKwo+ID4gPj4g ICAJLyogQWxsb2NhdGUgdGFyZ2V0IFNHIGxpc3QuICovCj4gPiA+PiAgIAlzdCA9IGttYWxsb2Mo c2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ID4gPj4gICAJaWYgKCFzdCkKPiA+ID4+ICAgCQln b3RvIGVycl9zdF9hbGxvYzsKPiA+ID4+Cj4gPiA+PiAtCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0 LCBzaXplX3BhZ2VzLCBHRlBfS0VSTkVMKTsKPiA+ID4+ICsJcmV0ID0gc2dfYWxsb2NfdGFibGUo c3QsIHNpemVfcGFnZXMgKyBzaXplX3BhZ2VzX3V2LCBHRlBfS0VSTkVMKTsKPiA+ID4+ICAgCWlm IChyZXQpCj4gPiA+PiAgIAkJZ290byBlcnJfc2dfYWxsb2M7Cj4gPiA+Pgo+ID4gPj4gQEAgLTMz MDEsMTUgKzMzMTAsMzAgQEAgaW50ZWxfcm90YXRlX2ZiX29ial9wYWdlcyhzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgKmdndHRfdmlldywKPiA+ID4+ICAgCX0KPiA+ID4+Cj4gPiA+PiAgIAkvKiBSb3Rh dGUgdGhlIHBhZ2VzLiAqLwo+ID4gPj4gLQlyb3RhdGVfcGFnZXMocGFnZV9hZGRyX2xpc3QsIDAs Cj4gPiA+PiArCXNnID0gcm90YXRlX3BhZ2VzKHBhZ2VfYWRkcl9saXN0LCAwLAo+ID4gPj4gICAJ CSAgICAgcm90X2luZm8tPndpZHRoX3BhZ2VzLCByb3RfaW5mby0+aGVpZ2h0X3BhZ2VzLAo+ID4g Pj4gICAJCSAgICAgc3QsIE5VTEwpOwo+ID4gPj4KPiA+ID4+ICsJLyogQXBwZW5kIHRoZSBVViBw bGFuZSBpZiBOVjEyLiAqLwo+ID4gPj4gKwlpZiAocm90X2luZm8tPnBpeGVsX2Zvcm1hdCA9PSBE Uk1fRk9STUFUX05WMTIpIHsKPiA+ID4+ICsJCXV2X3N0YXJ0X3BhZ2UgPSBzaXplX3BhZ2VzOwo+ ID4gPj4gKwo+ID4gPj4gKwkJLyogQ2hlY2sgZm9yIHRpbGUtcm93IHVuLWFsaWdubWVudC4gKi8K PiA+ID4+ICsJCWlmIChvZmZzZXRfaW5fcGFnZShyb3RfaW5mby0+dXZfb2Zmc2V0KSkKPiA+ID4+ ICsJCQl1dl9zdGFydF9wYWdlLS07Cj4gPiA+PiArCj4gPiA+PiArCQlyb3RhdGVfcGFnZXMocGFn ZV9hZGRyX2xpc3QsIHV2X3N0YXJ0X3BhZ2UsCj4gPiA+PiArCQkJICAgICByb3RfaW5mby0+d2lk dGhfcGFnZXNfdXYsCj4gPiA+PiArCQkJICAgICByb3RfaW5mby0+aGVpZ2h0X3BhZ2VzX3V2LAo+ ID4gPj4gKwkJCSAgICAgc3QsIHNnKTsKPiA+ID4+ICsJfQo+ID4gPj4gKwo+ID4gPj4gICAJRFJN X0RFQlVHX0tNUygKPiA+ID4+IC0JCSAgICAgICJDcmVhdGVkIHJvdGF0ZWQgcGFnZSBtYXBwaW5n IGZvciBvYmplY3Qgc2l6ZSAlenUgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVsX2Zvcm1hdD0w eCV4LCAldXgldSB0aWxlcywgJXUgcGFnZXMpLlxuIiwKPiA+ID4+ICsJCSAgICAgICJDcmVhdGVk IHJvdGF0ZWQgcGFnZSBtYXBwaW5nIGZvciBvYmplY3Qgc2l6ZSAlenUgKHBpdGNoPSV1LCBoZWln aHQ9JXUsIHBpeGVsX2Zvcm1hdD0weCV4LCAldXgldSB0aWxlcywgJXUgcGFnZXMgKCV1IHBsYW5l IDApKS5cbiIsCj4gPiA+PiAgIAkJICAgICAgb2JqLT5iYXNlLnNpemUsIHJvdF9pbmZvLT5waXRj aCwgcm90X2luZm8tPmhlaWdodCwKPiA+ID4+ICAgCQkgICAgICByb3RfaW5mby0+cGl4ZWxfZm9y bWF0LCByb3RfaW5mby0+d2lkdGhfcGFnZXMsCj4gPiA+PiAtCQkgICAgICByb3RfaW5mby0+aGVp Z2h0X3BhZ2VzLCBzaXplX3BhZ2VzKTsKPiA+ID4+ICsJCSAgICAgIHJvdF9pbmZvLT5oZWlnaHRf cGFnZXMsIHNpemVfcGFnZXMgKyBzaXplX3BhZ2VzX3V2LAo+ID4gPj4gKwkJICAgICAgc2l6ZV9w YWdlcyk7Cj4gPiA+Pgo+ID4gPj4gICAJZHJtX2ZyZWVfbGFyZ2UocGFnZV9hZGRyX2xpc3QpOwo+ ID4gPj4KPiA+ID4+IEBAIC0zMzIxLDEwICszMzQ1LDExIEBAIGVycl9zdF9hbGxvYzoKPiA+ID4+ ICAgCWRybV9mcmVlX2xhcmdlKHBhZ2VfYWRkcl9saXN0KTsKPiA+ID4+Cj4gPiA+PiAgIAlEUk1f REVCVUdfS01TKAo+ID4gPj4gLQkJICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcm90YXRlZCBtYXBw aW5nIGZvciBvYmplY3Qgc2l6ZSAlenUhICglZCkgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVs X2Zvcm1hdD0weCV4LCAldXgldSB0aWxlcywgJXUgcGFnZXMpXG4iLAo+ID4gPj4gKwkJICAgICAg IkZhaWxlZCB0byBjcmVhdGUgcm90YXRlZCBtYXBwaW5nIGZvciBvYmplY3Qgc2l6ZSAlenUhICgl ZCkgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVsX2Zvcm1hdD0weCV4LCAldXgldSB0aWxlcywg JXUgcGFnZXMgKCV1IHBsYW5lIDApKVxuIiwKPiA+ID4+ICAgCQkgICAgICBvYmotPmJhc2Uuc2l6 ZSwgcmV0LCByb3RfaW5mby0+cGl0Y2gsIHJvdF9pbmZvLT5oZWlnaHQsCj4gPiA+PiAgIAkJICAg ICAgcm90X2luZm8tPnBpeGVsX2Zvcm1hdCwgcm90X2luZm8tPndpZHRoX3BhZ2VzLAo+ID4gPj4g LQkJICAgICAgcm90X2luZm8tPmhlaWdodF9wYWdlcywgc2l6ZV9wYWdlcyk7Cj4gPiA+PiArCQkg ICAgICByb3RfaW5mby0+aGVpZ2h0X3BhZ2VzLCBzaXplX3BhZ2VzICsgc2l6ZV9wYWdlc191diwK PiA+ID4+ICsJCSAgICAgIHNpemVfcGFnZXMpOwo+ID4gPj4gICAJcmV0dXJuIEVSUl9QVFIocmV0 KTsKPiA+ID4+ICAgfQo+ID4gPj4KPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o Cj4gPiA+PiBpbmRleCA4Mjc1MDA3M2Q1YjMuLjE5NzE4M2Q1YzU0MyAxMDA2NDQKPiA+ID4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gPiA+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ID4gPj4gQEAgLTEzOCwxMCArMTM4LDEz IEBAIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB7Cj4gPiA+PiAgIHN0cnVjdCBpbnRlbF9yb3Rh dGlvbl9pbmZvIHsKPiA+ID4+ICAgCXVuc2lnbmVkIGludCBoZWlnaHQ7Cj4gPiA+PiAgIAl1bnNp Z25lZCBpbnQgcGl0Y2g7Cj4gPiA+PiArCXVuc2lnbmVkIGludCB1dl9vZmZzZXQ7Cj4gPiA+PiAg IAl1aW50MzJfdCBwaXhlbF9mb3JtYXQ7Cj4gPiA+PiAgIAl1aW50NjRfdCBmYl9tb2RpZmllcjsK PiA+ID4+ICAgCXVuc2lnbmVkIGludCB3aWR0aF9wYWdlcywgaGVpZ2h0X3BhZ2VzOwo+ID4gPj4g ICAJdWludDY0X3Qgc2l6ZTsKPiA+ID4+ICsJdW5zaWduZWQgaW50IHdpZHRoX3BhZ2VzX3V2LCBo ZWlnaHRfcGFnZXNfdXY7Cj4gPiA+PiArCXVpbnQ2NF90IHNpemVfdXY7Cj4gPiA+PiAgIH07Cj4g PiA+Pgo+ID4gPj4gICBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgewo+ID4gPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPj4gaW5kZXggZTE5YjhlNjk5YzAwLi4yZGI3Y2M0MjUz OWMgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g Pj4gQEAgLTIyNjMsNiArMjI2Myw3IEBAIGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBp OTE1X2dndHRfdmlldyAqdmlldywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiA+PiAg IAlpbmZvLT5oZWlnaHQgPSBmYi0+aGVpZ2h0Owo+ID4gPj4gICAJaW5mby0+cGl4ZWxfZm9ybWF0 ID0gZmItPnBpeGVsX2Zvcm1hdDsKPiA+ID4+ICAgCWluZm8tPnBpdGNoID0gZmItPnBpdGNoZXNb MF07Cj4gPiA+PiArCWluZm8tPnV2X29mZnNldCA9IGZiLT5vZmZzZXRzWzFdOwo+ID4gPgo+ID4g PiBPSywgc28gdGhpcyBhbHJlYWR5IGNhbWUgdXAgYSBiaXQgd2hlbiBJIHdhcyBsb29raW5nIGF0 IENoYW5kcmEncyBzdHVmZiwKPiA+ID4gYnV0IHdlIHJlYWxseSBoYXZlIHRvIGRlZmluZSB3aGF0 IGZiLT5vZmZzZXRzW10gbWVhbnMgbm93Lgo+ID4gPgo+ID4gPiBPbiBvbmUgaGFuZCwgaXQgd291 bGQgYmUgdmVyeSBsb2dpY2FsIGZvciBpdCB0byBiZSBhIHJhdyBieXRlIG9mZnNldAo+ID4gPiBp bnRvIHRoZSBvYmplY3Qgd2hlcmUgdGhlIGZiIHN0YXJ0cy4gQnV0IG9uIHRoZSBvdGhlciBoYW5k IHRoYXQgcGVyaGFwcwo+ID4gPiBtYWtlcyBpdCBhIGJpdCBtb3JlIGRpZmZpY3VsdCBmb3IgdXNl cnNwYWNlIHRvIGNvbXB1dGUgb2Zmc2V0c1sxXSBmb3IKPiA+ID4gdGhlIENiQ3IgcGxhbmUuIEFs c28gd2UgaGF2ZSBmZW5jZXMgdG8gY29uc2lkZXIsIGFuZCBjdXJyZW50bHkgd2UgZXZlbgo+ID4g PiByZXF1aXJlIHRoYXQgdGhlIGZlbmNlIHN0cmlkZSBtYXRjaGVzIHRoZSBmYiBzdHJpZGUsIGV2 ZW4gdGhvdWdoIHRoYXQKPiA+ID4gbWF5IG5vdCByZWFsbHkgYmUgbmVjZXNzYXJ5LiBTbyBtYXli ZSBpdCBzaG91bGQgYmUgdGhlIGxpbmVhciBvZmZzZXQKPiA+ID4gaW5zdGVhZC4KPiA+ID4KPiA+ ID4gU28gd2hpY2ggd2F5IHNob3VsZCB3ZSBnbz8KPiA+IAo+ID4gTm8gaWRlYSwgSSdtIGFmcmFp ZCBJIGRvbid0IGhhdmUgdGhlIHdpZGUgZW5vdWdoIGtub3dsZWRnZSBvbiB0aGlzIG9uZSAKPiA+ IHRvIGNvbnRyaWJ1dGUgaHVnZWx5Lgo+ID4gCj4gPiBXaHkgd291bGQgaXQgYmUgZGlmZmljdWx0 IGZvciB1c2Vyc3BhY2UgdG8gY29tcHV0ZSBhIGJ5dGUgb2Zmc2V0IHRvIHRoZSAKPiA+IFVWIHBs YW5lIHRob3VnaD8gUHJlc3VtYWJseSBpdCBoYWQgdG8ga25vdyBpdCBhbHJlYWR5IHRvIGhhdmUg cmVuZGVyZWQgCj4gPiBhbnl0aGluZyAtIG90aGVyd2lzZSB3aHkgYW5kIGhvdyB3b3VsZCBpdCBi ZSBnaXZpbmcgdGhpcyBmcmFtZSBidWZmZXIgdG8gCj4gPiB0aGUga2VybmVsPwo+IAo+IFdlbGws IGl0J3Mgbm90IGRpZmZpY3VsdCBwZXIgc2F5LCBidXQgaXQgd291bGQgaGF2ZSB0byBrbm93IHRo ZSB0aWxlCj4gZGltZW5zaW9ucyB0byBkbyBpdC4gV2hlbiB1c2luZyBhIGxpbmVhciBvZmZzZXQs IHRoZSB0aWxlIGRpbWVuc2lvbnMgYXJlCj4gbW9zdGx5IG1lYW5pbmdsZXNzLCBhbHRob3VnaCBz b21lIG9mIHRoZSBodyByZXN0cmljdGlvbnMgKHN0cmlkZSBtdXN0IGJlCj4gdGlsZSBhbGlnbmVk LCBhbmQgQ2JDciBwbGFuZSBtdXN0IHN0YXJ0IGF0IHNvbWV3aGF0IGFsaWduZWQgb2Zmc2V0Cj4g YXQgbGVhc3Qgc29tZXRpbWVzKSBkb2VzIGJsb3cgYSBob2xlIHRvIHRoYXQgdGhlb3J5IGEgYml0 Lgo+IAo+IEkgc3VwcG9zZSBpdCdzIG5vdCByZWFsbHkgYSBodWdlIGRlYWwgd2hpY2ggd2F5IHdl IGdvLCB3ZSBqdXN0IGhhdmUgdG8KPiBwaWNrIG9uZSBhbmQgc3RpY2sgd2l0aCBpdCwgYW5kIGRv Y3VtZW50IGl0LgoKSG0gSSBraW5kYSBhc3N1bWVkIHRoYXQgZm9yIHRpbGVkIGxheW91dHMgcGxh bmUgb2Zmc2V0cyBtdXN0IGJlCnRpbGUtYWxpZ25lZCBmb3IgZXZlcnlvbmUuIFNpbmNlIHRpbGlu ZyBpcyBub3cgYSBzZXBhcmF0ZSBwYXJ0IHdpdGggdGhlIGZiCm1vZGlmaWVycyBJJ2QgZ28gd2l0 aCB1c2luZyBpdCBhcyB0aGUgbGluZWFyIG9mZnNldC4gQnV0IGRlZmluaXRlbHkgbmVlZHMKdG8g YmUgZG9jdW1lbnRlZCB3aXRoIGEga2VybmVsZG9jIHBhdGhjIHNvbWV3aGVyZSAuLi4KLURhbmll bAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK