From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/2] drm/amdgpu: cleanup VCN IB generation Date: Fri, 9 Feb 2018 13:31:10 +0100 Message-ID: <6262040a-ef05-bda4-904e-d8a5954239bc@gmail.com> References: <20180207194822.7878-1-christian.koenig@amd.com> <20180207194822.7878-2-christian.koenig@amd.com> <839e2b57-edf4-d389-56ab-1a97dd84c832@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <839e2b57-edf4-d389-56ab-1a97dd84c832-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Andrey Grodzovsky , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMDkuMDIuMjAxOCB1bSAxMzoyMCBzY2hyaWViIEFuZHJleSBHcm9kem92c2t5Ogo+Cj4KPiBP biAwMi8wNy8yMDE4IDAyOjQ4IFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBTdGFydCB0 byB1c2UgYW1kZ3B1X2JvX2NyZWF0ZV9yZXNlcnZlZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+PiAtLS0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jIHwgOTEgCj4+ICsrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKSwgNzAgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdmNuLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3Zjbi5jCj4+IGluZGV4IGU4NmQwYjJlOWI3YS4uOTdiZGRlOWE3MzllIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4+IEBAIC0yNzAsNDMgKzI3 MCwyOCBAQCBpbnQgYW1kZ3B1X3Zjbl9kZWNfcmluZ190ZXN0X3Jpbmcoc3RydWN0IAo+PiBhbWRn cHVfcmluZyAqcmluZykKPj4gwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqAgfQo+PiDCoCAtc3Rh dGljIGludCBhbWRncHVfdmNuX2RlY19zZW5kX21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs IAo+PiBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBib29sIGRpcmVjdCwgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiArc3Rh dGljIGludCBhbWRncHVfdmNuX2RlY19zZW5kX21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9i byAqYm8sIGJvb2wgZGlyZWN0LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB0 dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IHRydWUsIGZhbHNlIH07Cj4+IC3CoMKgwqAgc3RydWN0 IHR0bV92YWxpZGF0ZV9idWZmZXIgdHY7Cj4+IC3CoMKgwqAgc3RydWN0IHd3X2FjcXVpcmVfY3R4 IHRpY2tldDsKPj4gLcKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7Cj4+ICvCoMKgwqAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiArwqDCoMKgIHN0cnVjdCBk bWFfZmVuY2UgKmYgPSBOVUxMOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfam9iICpqb2I7 Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9pYiAqaWI7Cj4+IC3CoMKgwqAgc3RydWN0IGRt YV9mZW5jZSAqZiA9IE5VTEw7Cj4+IC3CoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSByaW5nLT5hZGV2Owo+PiDCoMKgwqDCoMKgIHVpbnQ2NF90IGFkZHI7Cj4+IMKgwqDCoMKgwqAg aW50IGksIHI7Cj4+IMKgIC3CoMKgwqAgbWVtc2V0KCZ0diwgMCwgc2l6ZW9mKHR2KSk7Cj4+IC3C oMKgwqAgdHYuYm8gPSAmYm8tPnRibzsKPj4gLQo+PiAtwqDCoMKgIElOSVRfTElTVF9IRUFEKCZo ZWFkKTsKPj4gLcKgwqDCoCBsaXN0X2FkZCgmdHYuaGVhZCwgJmhlYWQpOwo+PiAtCj4+IC3CoMKg wqAgciA9IHR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMoJnRpY2tldCwgJmhlYWQsIHRydWUsIE5VTEwp Owo+PiAtwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IC0KPj4g LcKgwqDCoCByID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAmYm8tPnBsYWNlbWVudCwgJmN0 eCk7Cj4+IC3CoMKgwqAgaWYgKHIpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGVycjsKPj4gLQo+ PiDCoMKgwqDCoMKgIHIgPSBhbWRncHVfam9iX2FsbG9jX3dpdGhfaWIoYWRldiwgNjQsICZqb2Ip Owo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+ IMKgIMKgwqDCoMKgwqAgaWIgPSAmam9iLT5pYnNbMF07Cj4+IMKgwqDCoMKgwqAgYWRkciA9IGFt ZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPj4gLcKgwqDCoCBpYi0+cHRyWzBdID0gUEFDS0VUMChT T0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgCj4+IG1tVVZEX0dQQ09NX1ZDUFVfREFUQTApLCAwKTsK Pj4gK8KgwqDCoCBpYi0+cHRyWzBdID0gUEFDS0VUMChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwg Cj4+IG1tVVZEX0dQQ09NX1ZDUFVfREFUQTApLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMCk7Cj4KPiBsYXN0IGFyZ3VtZW50wqAgc2xpcHBlZCB0byBuZXcgbGluZQo+Cj4+ IMKgwqDCoMKgwqAgaWItPnB0clsxXSA9IGFkZHI7Cj4+IC3CoMKgwqAgaWItPnB0clsyXSA9IFBB Q0tFVDAoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIAo+PiBtbVVWRF9HUENPTV9WQ1BVX0RBVEEx KSwgMCk7Cj4+ICvCoMKgwqAgaWItPnB0clsyXSA9IFBBQ0tFVDAoU09DMTVfUkVHX09GRlNFVChV VkQsIDAsIAo+PiBtbVVWRF9HUENPTV9WQ1BVX0RBVEExKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDApOwo+Cj4gU2FtZSBhcyBhYm92ZQoKTWhtLCBhY3R1YWxseSBjb3Jy ZWN0IGFjY29yZGluZyB0byB0aGUgY29kaW5nIHN0eWxlIChpdCBtYWtlcyB0aGUgbGluZSAKbGVz cyB0aGFuIDgwIGNoYXJzIGxvbmcpLCBidXQgSSBhZ3JlZSB0aGF0IGl0IGxvb2tzIHVnbHkuIEkn bSBnb2luZyB0byAKcmVtb3ZlIGl0LgoKUXVlc3Rpb24gaXMgcmF0aGVyIGNhbiBzb21lYm9keSBw bGVhc2UgdGVzdCB0aGlzIG9uIFJhdmVuPwoKVGhhbmtzLApDaHJpc3RpYW4uCgo+Cj4gVGhhbmtz LAo+IEFuZHJleQo+Cj4+IMKgwqDCoMKgwqAgaWItPnB0clszXSA9IGFkZHIgPj4gMzI7Cj4+IMKg wqDCoMKgwqAgaWItPnB0cls0XSA9IFBBQ0tFVDAoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIAo+ PiBtbVVWRF9HUENPTV9WQ1BVX0NNRCksIDApOwo+PiDCoMKgwqDCoMKgIGliLT5wdHJbNV0gPSAw Owo+PiBAQCAtMzMwLDExICszMTUsMTIgQEAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19zZW5k X21zZyhzdHJ1Y3QgCj4+IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2JvICpiCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2ZyZWU7Cj4+IMKgwqDCoMKgwqAg fQo+PiDCoCAtwqDCoMKgIHR0bV9ldV9mZW5jZV9idWZmZXJfb2JqZWN0cygmdGlja2V0LCAmaGVh ZCwgZik7Cj4+ICvCoMKgwqAgYW1kZ3B1X2JvX2ZlbmNlKGJvLCBmLCBmYWxzZSk7Cj4+ICvCoMKg wqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+ICvCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZi byk7Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKGZlbmNlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKmZl bmNlID0gZG1hX2ZlbmNlX2dldChmKTsKPj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsK Pj4gwqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGYpOwo+PiDCoCDCoMKgwqDCoMKgIHJldHVybiAw Owo+PiBAQCAtMzQzLDcgKzMyOSw4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2VuZF9t c2coc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV9ibyAqYgo+PiDC oMKgwqDCoMKgIGFtZGdwdV9qb2JfZnJlZShqb2IpOwo+PiDCoCDCoCBlcnI6Cj4+IC3CoMKgwqAg dHRtX2V1X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnRpY2tldCwgJmhlYWQpOwo+PiArwqDCoMKgIGFt ZGdwdV9ib191bnJlc2VydmUoYm8pOwo+PiArwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+ PiDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoCB9Cj4+IMKgIEBAIC0zNTEsMzEgKzMzOCwxNiBA QCBzdGF0aWMgaW50IAo+PiBhbWRncHVfdmNuX2RlY19nZXRfY3JlYXRlX21zZyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGhhbmQKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiDCoCB7Cj4+IMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiAtwqDCoMKg IHN0cnVjdCBhbWRncHVfYm8gKmJvOwo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKmJvID0g TlVMTDsKPj4gwqDCoMKgwqDCoCB1aW50MzJfdCAqbXNnOwo+PiDCoMKgwqDCoMKgIGludCByLCBp Owo+PiDCoCAtwqDCoMKgIHIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsIDEwMjQsIFBBR0VfU0la RSwgdHJ1ZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1f RE9NQUlOX1ZSQU0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVf R0VNX0NSRUFURV9DUFVfQUNDRVNTX1JFUVVJUkVEIHwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUywKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwsIE5VTEwsICZibyk7Cj4+ICvCoMKgwqAg ciA9IGFtZGdwdV9ib19jcmVhdGVfcmVzZXJ2ZWQoYWRldiwgMTAyNCwgUEFHRV9TSVpFLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fRE9N QUlOX1ZSQU0sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JmJvLCBOVUxMLCAodm9pZCAqKikmbXNnKTsKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoCAtwqDCoMKgIHIgPSBhbWRncHVfYm9fcmVzZXJ2 ZShibywgZmFsc2UpOwo+PiAtwqDCoMKgIGlmIChyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRn cHVfYm9fdW5yZWYoJmJvKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiAtwqDCoMKg IH0KPj4gLQo+PiAtwqDCoMKgIHIgPSBhbWRncHVfYm9fa21hcChibywgKHZvaWQgKiopJm1zZyk7 Cj4+IC3CoMKgwqAgaWYgKHIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlc2Vy dmUoYm8pOwo+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+IC3CoMKg wqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gwqDCoMKgwqDCoCBtc2db MF0gPSBjcHVfdG9fbGUzMigweDAwMDAwMDI4KTsKPj4gwqDCoMKgwqDCoCBtc2dbMV0gPSBjcHVf dG9fbGUzMigweDAwMDAwMDM4KTsKPj4gwqDCoMKgwqDCoCBtc2dbMl0gPSBjcHVfdG9fbGUzMigw eDAwMDAwMDAxKTsKPj4gQEAgLTM5Myw5ICszNjUsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV92Y25f ZGVjX2dldF9jcmVhdGVfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90 IGhhbmQKPj4gwqDCoMKgwqDCoCBmb3IgKGkgPSAxNDsgaSA8IDEwMjQ7ICsraSkKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIG1zZ1tpXSA9IGNwdV90b19sZTMyKDB4MCk7Cj4+IMKgIC3CoMKgwqAgYW1k Z3B1X2JvX2t1bm1hcChibyk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+ IC0KPj4gwqDCoMKgwqDCoCByZXR1cm4gYW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2cocmluZywgYm8s IHRydWUsIGZlbmNlKTsKPj4gwqAgfQo+PiDCoCBAQCAtNDA3LDI3ICszNzYsMTIgQEAgc3RhdGlj IGludCAKPj4gYW1kZ3B1X3Zjbl9kZWNfZ2V0X2Rlc3Ryb3lfbXNnKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywgdWludDMyX3QgaGFuCj4+IMKgwqDCoMKgwqAgdWludDMyX3QgKm1zZzsKPj4gwqDC oMKgwqDCoCBpbnQgciwgaTsKPj4gwqAgLcKgwqDCoCByID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2 LCAxMDI0LCBQQUdFX1NJWkUsIHRydWUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQU1ER1BVX0dFTV9DUkVBVEVfQ1BVX0FDQ0VTU19SRVFVSVJFRCB8Cj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJ R1VPVVMsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMLCBOVUxMLCAm Ym8pOwo+PiArwqDCoMKgIHIgPSBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkKGFkZXYsIDEwMjQs IFBBR0VfU0laRSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICZibywgTlVMTCwgKHZvaWQgKiopJm1zZyk7Cj4+IMKgwqDCoMKgwqAg aWYgKHIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqAgLcKgwqDCoCByID0g YW1kZ3B1X2JvX3Jlc2VydmUoYm8sIGZhbHNlKTsKPj4gLcKgwqDCoCBpZiAocikgewo+PiAtwqDC oMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1 cm4gcjsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCByID0gYW1kZ3B1X2JvX2ttYXAoYm8s ICh2b2lkICoqKSZtc2cpOwo+PiAtwqDCoMKgIGlmIChyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBh bWRncHVfYm9fdW5yZXNlcnZlKGJvKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJl ZigmYm8pOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+ IMKgwqDCoMKgwqAgbXNnWzBdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAyOCk7Cj4+IMKgwqDCoMKg wqAgbXNnWzFdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAxOCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzJd ID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAwMCk7Cj4+IEBAIC00MzcsOSArMzkxLDYgQEAgc3RhdGlj IGludCBhbWRncHVfdmNuX2RlY19nZXRfZGVzdHJveV9tc2coc3RydWN0IAo+PiBhbWRncHVfcmlu ZyAqcmluZywgdWludDMyX3QgaGFuCj4+IMKgwqDCoMKgwqAgZm9yIChpID0gNjsgaSA8IDEwMjQ7 ICsraSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG1zZ1tpXSA9IGNwdV90b19sZTMyKDB4MCk7Cj4+ IMKgIC3CoMKgwqAgYW1kZ3B1X2JvX2t1bm1hcChibyk7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3Vu cmVzZXJ2ZShibyk7Cj4+IC0KPj4gwqDCoMKgwqDCoCByZXR1cm4gYW1kZ3B1X3Zjbl9kZWNfc2Vu ZF9tc2cocmluZywgYm8sIGRpcmVjdCwgZmVuY2UpOwo+PiDCoCB9Cj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=