From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juha-Pekka Heikkila Subject: Re: [PATCH 3/4] drm/i915: preparations for enabling P010, P012, P016 formats Date: Mon, 27 Aug 2018 13:21:56 +0300 Message-ID: <772afa2f-570c-b66c-e218-dc0180f4632f@gmail.com> References: <1534424122-32209-1-git-send-email-juhapekka.heikkila@gmail.com> <1534424122-32209-3-git-send-email-juhapekka.heikkila@gmail.com> Reply-To: juhapekka.heikkila@gmail.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: "Sharma, Swati2" , intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMjEuMDguMjAxOCAxNzoyNiwgU2hhcm1hLCBTd2F0aTIgd3JvdGU6Cj4gT24gMTYtQXVnLTE4 IDY6MjUgUE0sIEp1aGEtUGVra2EgSGVpa2tpbGEgd3JvdGU6Cj4+IFByZXBhcmF0aW9ucyBmb3Ig ZW5hYmxpbmcgUDAxMCwgUDAxMiBhbmQgUDAxNiBmb3JtYXRzLiBUaGVzZQo+PiBmb3JtYXRzIHdp bGwgZXh0ZW5kIE5WMTIgZm9yIGxhcmdlciBiaXQgZGVwdGhzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBKdWhhLVBla2thIEhlaWtraWxhIDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPgo+PiBS ZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5j wqDCoMKgwqDCoMKgIHzCoCAzICstCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pY19wbGFuZS5jIHzCoCAyICstCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuY8KgwqDCoMKgwqAgfCA0NiAKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgwqDCoMKgwqDC oCB8wqAgMSArCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDE5ICsrKysrKy0tLS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmPCoMKgwqDCoMKgwqAgfCAxOCArKysrKysrKysrKy0KPj4gwqAgNiBmaWxl cyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIAo+PiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+IGluZGV4IGIwNDk1MmIuLmFiNzZiNzIgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+IEBAIC0zMzQsOCArMzM0LDcg QEAgaW50IGludGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBzZXQgc2NhbGVyIG1vZGUg Ki8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSAm Jgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0 ZS0+YmFzZS5mYiAmJgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5mb3JtYXQgPT0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZP Uk1BVF9OVjEyKSB7Cj4+ICsgICAgICAgICAgICAKPj4gaXNfcGxhbmFyX3l1dl9mb3JtYXQocGxh bmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0KSkgewo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSA5ICYmCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpICYmCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIUlTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMg Cj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPj4gaW5kZXgg ZGNiYTY0NS4uNThiMmZjNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljX3BsYW5lLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRv bWljX3BsYW5lLmMKPj4gQEAgLTE4Miw3ICsxODIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NoZWNrX3dpdGhfc3RhdGUoY29uc3QgCj4+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y18KPj4gwqDCoMKgwqDCoCBlbHNlCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjcnRjX3N0YXRl LT5hY3RpdmVfcGxhbmVzICY9IH5CSVQoaW50ZWxfcGxhbmUtPmlkKTsKPj4gLcKgwqDCoCBpZiAo c3RhdGUtPnZpc2libGUgJiYgc3RhdGUtPmZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFU X05WMTIpCj4+ICvCoMKgwqAgaWYgKHN0YXRlLT52aXNpYmxlICYmIAo+PiBpc19wbGFuYXJfeXV2 X2Zvcm1hdChzdGF0ZS0+ZmItPmZvcm1hdC0+Zm9ybWF0KSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGNydGNfc3RhdGUtPm52MTJfcGxhbmVzIHw9IEJJVChpbnRlbF9wbGFuZS0+aWQpOwo+PiDCoMKg wqDCoMKgIGVsc2UKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNydGNfc3RhdGUtPm52MTJfcGxhbmVz ICY9IH5CSVQoaW50ZWxfcGxhbmUtPmlkKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPj4gaW5kZXggNjkwZTFlOC4uODBjZTc0MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMjY2Nyw2ICsyNjY3LDEyIEBAIGludCBza2xfZm9y bWF0X3RvX2ZvdXJjYyhpbnQgZm9ybWF0LCBib29sIAo+PiByZ2Jfb3JkZXIsIGJvb2wgYWxwaGEp Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRFJNX0ZPUk1BVF9SR0I1NjU7Cj4+IMKgwqDC oMKgwqAgY2FzZSBQTEFORV9DVExfRk9STUFUX05WMTI6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gRFJNX0ZPUk1BVF9OVjEyOwo+PiArwqDCoMKgIGNhc2UgUExBTkVfQ1RMX0ZPUk1BVF9Q MDEwOgo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9GT1JNQVRfUDAxMDsKPj4gK8KgwqDC oCBjYXNlIFBMQU5FX0NUTF9GT1JNQVRfUDAxMjoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBE Uk1fRk9STUFUX1AwMTI7Cj4+ICvCoMKgwqAgY2FzZSBQTEFORV9DVExfRk9STUFUX1AwMTY6Cj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRFJNX0ZPUk1BVF9QMDE2Owo+PiDCoMKgwqDCoMKgIGRl ZmF1bHQ6Cj4+IMKgwqDCoMKgwqAgY2FzZSBQTEFORV9DVExfRk9STUFUX1hSR0JfODg4ODoKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZ2Jfb3JkZXIpIHsKPj4gQEAgLTMxODIsNyArMzE4OCw3 IEBAIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShjb25zdCBzdHJ1Y3QgCj4+IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+IMKgwqDCoMKgwqDCoCAqIEhhbmRsZSB0aGUgQVVYIHN1 cmZhY2UgZmlyc3Qgc2luY2UKPj4gwqDCoMKgwqDCoMKgICogdGhlIG1haW4gc3VyZmFjZSBzZXR1 cCBkZXBlbmRzIG9uIGl0Lgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCBpZiAoZmItPmZv cm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+PiArwqDCoMKgIGlmIChpc19wbGFu YXJfeXV2X2Zvcm1hdChmYi0+Zm9ybWF0LT5mb3JtYXQpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXQgPSBza2xfY2hlY2tfbnYxMl9zdXJmYWNlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4+IEBAIC0zNTA3LDYgKzM1MTMsMTIgQEAgc3RhdGljIHUzMiBza2xf cGxhbmVfY3RsX2Zvcm1hdCh1aW50MzJfdCAKPj4gcGl4ZWxfZm9ybWF0KQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyIHwgUExBTkVfQ1RMX1lVVjQy Ml9WWVVZOwo+PiDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIFBMQU5FX0NUTF9GT1JNQVRfTlYxMjsKPj4gK8KgwqDCoCBjYXNlIERS TV9GT1JNQVRfUDAxMDoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBQTEFORV9DVExfRk9STUFU X1AwMTA7Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gUExBTkVfQ1RMX0ZPUk1BVF9QMDEyOwo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1B VF9QMDE2Ogo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBMQU5FX0NUTF9GT1JNQVRfUDAxNjsK Pj4gwqDCoMKgwqDCoCBkZWZhdWx0Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgTUlTU0lOR19DQVNF KHBpeGVsX2Zvcm1hdCk7Cj4+IMKgwqDCoMKgwqAgfQo+PiBAQCAtNDgwOCw4ICs0ODIwLDcgQEAg c2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgCj4+ICpjcnRjX3N0YXRl LCBib29sIGZvcmNlX2RldGFjaCwKPj4gwqDCoMKgwqDCoCBuZWVkX3NjYWxpbmcgPSBzcmNfdyAh PSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaDsKPj4gwqDCoMKgwqDCoCBpZiAocGxhbmVfc2NhbGVy X2NoZWNrKQo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFU X05WMTIpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5lZWRfc2NhbGluZyA9IHRydWU7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBuZWVkX3NjYWxpbmcgPSBpc19wbGFuYXJfeXV2X2Zvcm1hdChwaXhl bF9mb3JtYXQpOwo+PiDCoMKgwqDCoMKgIGlmIChjcnRjX3N0YXRlLT55Y2JjcjQyMCAmJiBzY2Fs ZXJfdXNlciA9PSBTS0xfQ1JUQ19JTkRFWCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG5lZWRfc2Nh bGluZyA9IHRydWU7Cj4+IEBAIC00ODUwLDcgKzQ4NjEsNyBAQCBza2xfdXBkYXRlX3NjYWxlcihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAKPj4gKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNo LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgwqDCoMKgwqAgfQo+PiAtwqDC oMKgIGlmIChwbGFuZV9zY2FsZXJfY2hlY2sgJiYgcGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRf TlYxMiAmJgo+PiArwqDCoMKgIGlmIChwbGFuZV9zY2FsZXJfY2hlY2sgJiYgaXNfcGxhbmFyX3l1 dl9mb3JtYXQocGl4ZWxfZm9ybWF0KSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKHNyY19oIDwg U0tMX01JTl9ZVVZfNDIwX1NSQ19IIHx8IHNyY193IDwgCj4+IFNLTF9NSU5fWVVWXzQyMF9TUkNf VykpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVR19LTVMoIk5WMTI6IHNyYyBkaW1l bnNpb25zIG5vdCBtZXRcbiIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7 Cj4+IEBAIC00OTU1LDYgKzQ5NjYsOSBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfc2NhbGVyX3Bs YW5lKHN0cnVjdCAKPj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gwqDCoMKgwqDC oCBjYXNlIERSTV9GT1JNQVRfVVlWWToKPj4gwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfVllV WToKPj4gwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfTlYxMjoKPj4gK8KgwqDCoCBjYXNlIERS TV9GT1JNQVRfUDAxMDoKPj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMjoKPj4gK8KgwqDC oCBjYXNlIERSTV9GT1JNQVRfUDAxNjoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDC oMKgwqDCoMKgIGRlZmF1bHQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fREVCVUdfS01TKCJb UExBTkU6JWQ6JXNdIEZCOiVkIHVuc3VwcG9ydGVkIHNjYWxpbmcgCj4+IGZvcm1hdCAweCV4XG4i LAo+PiBAQCAtMTMxNzksNyArMTMxOTMsNyBAQCBza2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjLAo+PiDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg b3IKPj4gwqDCoMKgwqDCoMKgICrCoMKgwqAgY2RjbGsvY3J0Y19jbG9jawo+PiDCoMKgwqDCoMKg wqAgKi8KPj4gLcKgwqDCoCBtdWx0ID0gcGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiA/ IDIgOiAzOwo+PiArwqDCoMKgIG11bHQgPSBpc19wbGFuYXJfeXV2X2Zvcm1hdChwaXhlbF9mb3Jt YXQpID8gMiA6IDM7Cj4+IMKgwqDCoMKgwqAgdG1wY2xrMSA9ICgxIDw8IDE2KSAqIG11bHQgLSAx Owo+PiDCoMKgwqDCoMKgIHRtcGNsazIgPSAoMSA8PCA4KSAqICgobWF4X2RvdGNsayA8PCA4KSAv IGNydGNfY2xvY2spOwo+PiDCoMKgwqDCoMKgIG1heF9zY2FsZSA9IG1pbih0bXBjbGsxLCB0bXBj bGsyKTsKPj4gQEAgLTEzNDExLDYgKzEzNDI1LDkgQEAgc3RhdGljIGJvb2wgCj4+IHNrbF9wbGFu ZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4+IMKgwqDC oMKgwqAgY2FzZSBEUk1fRk9STUFUX1VZVlk6Cj4+IMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFU X1ZZVVk6Cj4+IMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4+ICvCoMKgwqAgY2Fz ZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4+ICvC oMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGZhbGwgdGhyb3Vn aCAqLwo+PiBAQCAtMTQ1NTYsNiArMTQ1NzMsMjMgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1 ZmZlcl9pbml0KHN0cnVjdCAKPj4gaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0K Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9Q MDEwOgo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKgIGNhc2UgRFJN X0ZPUk1BVF9QMDE2Ogo+IEhpIEp1aGEsCj4gRG8gd2UgbmVlZCB0aGlzIFkvWWYgdGlsZWQgY2Nz IGNoZWNrIGhlcmU/IEl0cyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIAo+IGJlZ2lubmluZyB3aGVy ZSBpdHMgd3JpdHRlbiBSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODggZm9ybWF0cy4KCllv dSdyZSByaWdodC4gSSB0aGluayB1bmRlcmx5aW5nIGNvZGUgaGFzIGNoYW5nZWQgaW4gcGFzdCBt b250aHMgc2luY2UgCnRoaXMgd2FzIHdyaXR0ZW4uIEknbGwgbWFrZSBhbm90aGVyIHZlcnNpb24u Cgo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG1vZGVfY21kLT5tb2RpZmllclswXSA9PSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9kZV9j bWQtPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1MpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0tNUygiUkMgbm90IHRvIGJlIGVuYWJsZWQg d2l0aCAlc1xuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmZvcm1hdF9uYW1lKSk7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKCFJU19HRU1JTklMQUtFKGRldl9wcml2KSAmJiAhSVNfQ0FOTk9O TEFLRShkZXZfcHJpdikpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0tN UygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5w aXhlbF9mb3JtYXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgJmZvcm1hdF9uYW1lKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+ PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKg wqAgZGVmYXVsdDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVR19LTVMoInVuc3VwcG9y dGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgCj4+ ICZmb3JtYXRfbmFtZSkpOwo+PiBAQCAtMTQ1NjgsNyArMTQ2MDIsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IAo+PiBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxf ZmIsCj4+IMKgwqDCoMKgwqAgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KCZkZXZfcHJp di0+ZHJtLCBmYiwgbW9kZV9jbWQpOwo+PiAtwqDCoMKgIGlmIChmYi0+Zm9ybWF0LT5mb3JtYXQg PT0gRFJNX0ZPUk1BVF9OVjEyICYmCj4+ICvCoMKgwqAgaWYgKGlzX3BsYW5hcl95dXZfZm9ybWF0 KGZiLT5mb3JtYXQtPmZvcm1hdCkgJiYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIChmYi0+d2lkdGgg PCBTS0xfTUlOX1lVVl80MjBfU1JDX1cgfHwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPmhl aWdodCA8IFNLTF9NSU5fWVVWXzQyMF9TUkNfSCB8fAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo ZmItPndpZHRoICUgNCkgIT0gMCB8fCAoZmItPmhlaWdodCAlIDQpICE9IDApKSB7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCA3Yjk4NGFlLi4yMGFmNTc3IDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtMjA5Nyw2ICsyMDk3LDcgQEAgYm9vbCBp bnRlbF9zZHZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgCj4+ICpkZXZfcHJpdiwKPj4g wqAgLyogaW50ZWxfc3ByaXRlLmMgKi8KPj4gK2Jvb2wgaXNfcGxhbmFyX3l1dl9mb3JtYXQodWlu dDMyX3QgcGl4ZWxmb3JtYXQpOwo+PiDCoCBpbnQgaW50ZWxfdXNlY3NfdG9fc2NhbmxpbmVzKGNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIAo+PiAqYWRqdXN0ZWRfbW9kZSwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB1c2Vjcyk7Cj4+IMKgIHN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgCj4+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+IGluZGV4 IGQ5OWU1ZmEuLmUxMjkyYjIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBAQCAt Mzk0Miw3ICszOTQyLDcgQEAgc2tsX2RkYl9nZXRfaHdfcGxhbmVfc3RhdGUoc3RydWN0IAo+PiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gwqDCoMKgwqDCoCBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDExKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsMiA9IEk5MTVfUkVBRChQTEFO RV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpKTsKPj4gLcKgwqDCoCBpZiAoZm91cmNjID09 IERSTV9GT1JNQVRfTlYxMikgewo+PiArwqDCoMKgIGlmIChpc19wbGFuYXJfeXV2X2Zvcm1hdChm b3VyY2MpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9o dyhkZXZfcHJpdiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwgdmFsMik7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odyhkZXZfcHJpdiwKPj4gQEAgLTQxNTAs NyArNDE1MCw3IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IAo+ PiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4+IMKgwqDCoMKgwqAgaWYgKGludGVsX3BsYW5l LT5pZCA9PSBQTEFORV9DVVJTT1IpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4g LcKgwqDCoCBpZiAocGxhbmUgPT0gMSAmJiBmb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQo+PiAr wqDCoMKgIGlmIChwbGFuZSA9PSAxICYmICFpc19wbGFuYXJfeXV2X2Zvcm1hdChmb3JtYXQpKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgwqDCoMKgwqAgLyoKPj4gQEAgLTQx NjIsNyArNDE2Miw3IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0 IAo+PiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4+IMKgwqDCoMKgwqAgaGVpZ2h0ID0gZHJt X3JlY3RfaGVpZ2h0KCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPj4gwqDCoMKgwqDC oCAvKiBVViBwbGFuZSBkb2VzIDEvMiBwaXhlbCBzdWItc2FtcGxpbmcgKi8KPj4gLcKgwqDCoCBp ZiAocGxhbmUgPT0gMSAmJiBmb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7Cj4+ICvCoMKgwqAg aWYgKHBsYW5lID09IDEgJiYgaXNfcGxhbmFyX3l1dl9mb3JtYXQoZm9ybWF0KSkgewo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgd2lkdGggLz0gMjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGhlaWdodCAv PSAyOwo+PiDCoMKgwqDCoMKgIH0KPj4gQEAgLTQyMjksNyArNDIyOSw3IEBAIHNrbF9kZGJfbWlu X2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgCj4+ICpwc3RhdGUsIGNvbnN0IGlu dCBwbGFuZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoMKgwqDCoMKgIC8q IEZvciBwYWNrZWQgZm9ybWF0cywgYW5kIHV2LXBsYW5lLCByZXR1cm4gMCAqLwo+PiAtwqDCoMKg IGlmIChwbGFuZSA9PSAxICYmIGZiLT5mb3JtYXQtPmZvcm1hdCAhPSBEUk1fRk9STUFUX05WMTIp Cj4+ICvCoMKgwqAgaWYgKHBsYW5lID09IDEgJiYgIWlzX3BsYW5hcl95dXZfZm9ybWF0KGZiLT5m b3JtYXQtPmZvcm1hdCkpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqDCoMKg wqDCoCAvKiBGb3IgTm9uIFktdGlsZSByZXR1cm4gOC1ibG9ja3MgKi8KPj4gQEAgLTQyNDcsNyAr NDI0Nyw3IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Cj4+ICpwc3RhdGUsIGNvbnN0IGludCBwbGFuZSkKPj4gwqDCoMKgwqDCoCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPj4gwqDCoMKgwqDCoCBz cmNfaCA9IGRybV9yZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4+ IC3CoMKgwqAgLyogSGFsdmUgVVYgcGxhbmUgd2lkdGggYW5kIGhlaWdodCBmb3IgTlYxMiAqLwo+ PiArwqDCoMKgIC8qIEhhbHZlIFVWIHBsYW5lIHdpZHRoIGFuZCBoZWlnaHQgZm9yIE5WMTIgYW5k IG90aGVyIHBsYW5hciB5dXYgKi8KPj4gwqDCoMKgwqDCoCBpZiAocGxhbmUgPT0gMSkgewo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgc3JjX3cgLz0gMjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNyY19o IC89IDI7Cj4+IEBAIC00NTI2LDggKzQ1MjYsOCBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJh bXMoY29uc3Qgc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoMKgwqDCoMKgIC8qIG9ubHkgTlYxMiBmb3JtYXQg aGFzIHR3byBwbGFuZXMgKi8KPj4gLcKgwqDCoCBpZiAocGxhbmVfaWQgPT0gMSAmJiBmYi0+Zm9y bWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBEUk1f REVCVUdfS01TKCJOb24gTlYxMiBmb3JtYXQgaGF2ZSBzaW5nbGUgcGxhbmVcbiIpOwo+PiArwqDC oMKgIGlmIChwbGFuZV9pZCA9PSAxICYmICFpc19wbGFuYXJfeXV2X2Zvcm1hdChmYi0+Zm9ybWF0 LT5mb3JtYXQpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBEUk1fREVCVUdfS01TKCJOb24gcGxhbmFy IGZvcm1hdCBoYXZlIHNpbmdsZSBwbGFuZVxuIik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVJTlZBTDsKPj4gwqDCoMKgwqDCoCB9Cj4+IEBAIC00NTM4LDcgKzQ1MzgsNyBAQCBza2xf Y29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPj4gwqDCoMKgwqDCoCB3cC0+eF90aWxlZCA9IGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPj4gwqDCoMKgwqDCoCB3cC0+cmNfc3VyZmFjZSA9IGZi LT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEX0NDUzsKPj4gLcKgwqDCoCB3cC0+aXNfcGxhbmFyID0gZmItPmZvcm1hdC0+Zm9ybWF0ID09 IERSTV9GT1JNQVRfTlYxMjsKPj4gK8KgwqDCoCB3cC0+aXNfcGxhbmFyID0gaXNfcGxhbmFyX3l1 dl9mb3JtYXQoZmItPmZvcm1hdC0+Zm9ybWF0KTsKPj4gwqDCoMKgwqDCoCBpZiAocGxhbmUtPmlk ID09IFBMQU5FX0NVUlNPUikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgd3AtPndpZHRoID0gaW50 ZWxfcHN0YXRlLT5iYXNlLmNydGNfdzsKPj4gQEAgLTQ4MTMsOCArNDgxMyw3IEBAIHNrbF9jb21w dXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoMKgwqDCoMKg IH0KPj4gLcKgwqDCoCBpZiAoaW50ZWxfcHN0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmZvcm1hdCA9 PSBEUk1fRk9STUFUX05WMTIpCj4+IC3CoMKgwqDCoMKgwqDCoCB3bS0+aXNfcGxhbmFyID0gdHJ1 ZTsKPj4gK8KgwqDCoCB3bS0+aXNfcGxhbmFyID0gCj4+IGlzX3BsYW5hcl95dXZfZm9ybWF0KGlu dGVsX3BzdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5mb3JtYXQpOwo+PiDCoMKgwqDCoMKgIHJldHVy biAwOwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiBpbmRl eCBmNzAyNmU4Li42OGRiMDI2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+PiBAQCAtNDEsNiArNDEsMTkgQEAKPj4gwqAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ PiDCoCAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gK2Jvb2wgaXNfcGxhbmFyX3l1dl9mb3JtYXQo dWludDMyX3QgcGl4ZWxmb3JtYXQpCj4+ICt7Cj4+ICvCoMKgwqAgc3dpdGNoIChwaXhlbGZvcm1h dCkgewo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+PiArwqDCoMKgIGNhc2UgRFJN X0ZPUk1BVF9QMDEwOgo+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEyOgo+PiArwqDCoMKg IGNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4+ ICvCoMKgwqAgZGVmYXVsdDoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK8Kg wqDCoCB9Cj4+ICt9Cj4+ICsKPj4gwqAgaW50IGludGVsX3VzZWNzX3RvX3NjYW5saW5lcyhjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAKPj4gKmFkanVzdGVkX21vZGUsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdXNlY3MpCj4+IMKgIHsKPj4gQEAgLTEw MzksNyArMTA1Miw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjLT55MiA9IChzcmNfeSArIHNyY19o KSA8PCAxNjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYi0+Zm9ybWF0LT5mb3JtYXQgIT0g RFJNX0ZPUk1BVF9OVjEyICYmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICFpc19wbGFuYXJf eXV2X2Zvcm1hdChmYi0+Zm9ybWF0LT5mb3JtYXQpICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIChzcmNfeCAlIDIgfHwgc3JjX3cgJSAyKSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBEUk1fREVCVUdfS01TKCJzcmMgeC93ICgldSwgJXUpIG11c3QgYmUgYSBtdWx0aXBs ZSBvZiAyIAo+PiBmb3IgWVVWIHBsYW5lc1xuIiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcmNfeCwgc3JjX3cpOwo+PiBAQCAtMTQxOSw2ICsxNDMy LDkgQEAgc3RhdGljIGJvb2wgCj4+IHNrbF9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1 Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4+IMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1VZVlk6 Cj4+IMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1ZZVVk6Cj4+IMKgwqDCoMKgwqAgY2FzZSBE Uk1fRk9STUFUX05WMTI6Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICvCoMKg wqAgY2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIC8qIGZhbGwgdGhyb3VnaCAqLwo+IAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==