From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: Re: [PATCH] drm: atmel_hlcdc: Add support for get_timings Date: Thu, 28 May 2015 13:13:28 +0200 Message-ID: <1432811608.3228.43.camel@pengutronix.de> References: <1432199216-1139-1-git-send-email-davidcdueck@googlemail.com> <20150526112853.688d26b7@bbrezillon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id A42C66EB6E for ; Thu, 28 May 2015 04:13:35 -0700 (PDT) In-Reply-To: <20150526112853.688d26b7@bbrezillon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon Cc: David Dueck , daniel.vetter@ffwll.ch, nicolas.ferre@atmel.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org SGkgQm9yaXMsCgpBbSBEaWVuc3RhZywgZGVuIDI2LjA1LjIwMTUsIDExOjI4ICswMjAwIHNjaHJp ZWIgQm9yaXMgQnJlemlsbG9uOgo+IEhpIERhdmlkLAo+IAo+IE9uIFRodSwgMjEgTWF5IDIwMTUg MTE6MDY6NTYgKzAyMDAKPiBEYXZpZCBEdWVjayA8ZGF2aWRjZHVlY2tAZ29vZ2xlbWFpbC5jb20+ IHdyb3RlOgo+IAo+ID4gZHJtX3BhbmVsIHN1cHBvcnRzIHF1ZXJ5aW5nIHRpbWluZyByYW5nZXMu IElmIHRoZSBzdXBwbGllZCBtb2RlIGRvZXMKPiA+IG5vdCB3b3JrIHdpdGggdGhlIGhsY2RjIHdl IHF1ZXJ5IHRoZSBwYW5lbCBhbmQgdHJ5IHRvIGZpbmQgYSBzdWl0YWJsZQo+ID4gbW9kZS4KPiAK PiBUaGlzIHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUuCj4gCj4gUGhpbGlwLCBUaGllcnJ5LCBjb3Vs ZCB5b3UgY29uZmlybSB0aGlzIGlzIHRoZSBjb3JyZWN0IHdheSBvZiBkZWFsaW5nCj4gd2l0aCB0 aW1pbmcgcmFuZ2VzLgoKSSB3b25kZXIgYWJvdXQgdHdvIHRoaW5nczoKClRoaXMgaW1wbGVtZW50 YXRpb24gbWluaW1pemVzIHRoZSBzdW0gb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2Vlbgpj aG9zZW4gYW5kIHR5cGljYWwgdmFsdWVzLiBJIHdvbmRlciBpZiBpdCB3b3VsZCBiZSBiZXR0ZXIg dG8gdHJ5IGFuZAptaW5pbWl6ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBjaG9zZW4gYW5k IG5vbWluYWwgdmVydGljYWwgcmVmcmVzaApyYXRlLgoKSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBz aG91bGQgYmUgZG9uZSBlYXJsaWVyLCBpbiBjcmVhdGVfcGFuZWxfb3V0cHV0LApzbyB0aGF0IHRo ZSBjb25uZWN0b3IncyBtb2RlcyBhbHJlYWR5IGNvbnRhaW4gdGhlIGNvcnJlY3RlZCBzZXR0aW5n cz8KCnJlZ2FyZHMKUGhpbGlwcAoKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgRHVlY2sg PGRhdmlkY2R1ZWNrQGdvb2dsZW1haWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJt L2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX291dHB1dC5jIHwgMTE4ICsrKysrKysrKysrKysrKysr KystLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0 bWVsX2hsY2RjX291dHB1dC5jIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hs Y2RjX291dHB1dC5jCj4gPiBpbmRleCA5YzQ1MTMwLi5lYTM2YzI0IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX291dHB1dC5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfb3V0cHV0LmMKPiA+IEBA IC0yMCw2ICsyMCw3IEBACj4gPiAgICovCj4gPiAgCj4gPiAgI2luY2x1ZGUgPGxpbnV4L29mX2dy YXBoLmg+Cj4gPiArI2luY2x1ZGUgPHZpZGVvL2Rpc3BsYXlfdGltaW5nLmg+Cj4gPiAgCj4gPiAg I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiA+ IEBAIC03OCw2ICs3OSw4IEBAIGRybV9lbmNvZGVyX3RvX2F0bWVsX2hsY2RjX3JnYl9vdXRwdXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ID4gIHN0cnVjdCBhdG1lbF9obGNkY19wYW5l bCB7Cj4gPiAgCXN0cnVjdCBhdG1lbF9obGNkY19yZ2Jfb3V0cHV0IGJhc2U7Cj4gPiAgCXN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsOwo+ID4gKwlzdHJ1Y3QgZGlzcGxheV90aW1pbmcgKnRpbWluZ3M7 Cj4gPiArCXVuc2lnbmVkIGludCBudW1fdGltaW5nczsKPiA+ICB9Owo+ID4gIAo+ID4gIHN0YXRp YyBpbmxpbmUgc3RydWN0IGF0bWVsX2hsY2RjX3BhbmVsICoKPiA+IEBAIC0xMDQsMTQgKzEwNyw2 IEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BhbmVsX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gPiAgCWRybV9wYW5lbF9kaXNhYmxlKHBhbmVsLT5wYW5l bCk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBib29sCj4gPiAtYXRtZWxfaGxjZGNfcGFuZWxf ZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+IC0JCQkJ ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+IC0JCQkJICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWQpCj4gPiAtewo+ID4gLQlyZXR1cm4gdHJ1 ZTsKPiA+IC19Cj4gPiAtCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBhdG1lbF9obGNkY19yZ2JfZW5j b2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJCSBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+IEBAIC0xNDIsOCArMTM3LDg2IEBAIGF0bWVs X2hsY2RjX3JnYl9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK PiA+ICAJCQkgICBjZmcpOwo+ID4gIH0KPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBhdG1lbF9obGNk Y19jaG9vc2VfcGFyYW1ldGVyIC0gY2hvb3NlIHRpbWluZyBwYXJhbWV0ZXIKPiA+ICsgKiBAZGNf bWluOiBtaW5pbXVtIHBhcmFtZXRlciB2YWx1ZSBhbGxvd2VkIGJ5IGRjCj4gPiArICogQGRjX21h eDogbWF4aW11bSBwYXJhbWV0ZXIgdmFsdWUgYWxsb3dlZCBieSBkYwo+ID4gKyAqIEB0ZTogcGFy YW1ldGVyIHJhbmdlIGFsbG93ZWQgYnkgcGFuZWwKPiA+ICsgKiBAcmVzdWx0OiBjaG9zZW4gcGFy YW1ldGVyCj4gPiArICoKPiA+ICsgKiBERVNDUklQVElPTjoKPiA+ICsgKiBJZiB0aGVyZSBpcyBv dmVybGFwIGluIHRoZSBhbGxvd2VkIHJhbmdlcywgd2Ugd2lsbCBwaWNrIGEgcGFyYW1ldGVyCj4g PiArICogbWluaW1pemluZyB0aGUgZGlzdGFuY2UgdG8gdGUudHlwLiBJZiBub3QsIHdlIHJldHVy biB0ZS5taW4gb3IgdGUubWF4Lgo+ID4gKyAqKi8KPiA+ICtzdGF0aWMgdTMyIGF0bWVsX2hsY2Rj X2Nob29zZV9wYXJhbWV0ZXIodTMyIGRjX21pbiwgdTMyIGRjX21heCwKPiA+ICsJCQkJCXN0cnVj dCB0aW1pbmdfZW50cnkgdGUpCj4gPiArewo+ID4gKwlpZiAodGUudHlwIDw9IGRjX21heCAmJiB0 ZS50eXAgPj0gZGNfbWluKQo+ID4gKwkJcmV0dXJuIHRlLnR5cDsKPiA+ICsJZWxzZSBpZiAodGUu dHlwID4gZGNfbWF4KQo+ID4gKwkJcmV0dXJuIG1heChkY19tYXgsIHRlLm1pbik7Cj4gPiArCWVs c2UKPiA+ICsJCXJldHVybiBtaW4oZGNfbWluLCB0ZS5tYXgpOwo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgdm9pZCBhdG1lbF9obGNkY19jYWxjdWxhdGVfbW9kZShzdHJ1Y3QgZGlzcGxheV90aW1p bmcgKnRpbWluZ3MsCj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSkKPiA+ICt7Cj4gPiArCXUzMiBoc3luY19sZW4sIGhmcm9udF9wb3JjaCwgaGJh Y2tfcG9yY2g7Cj4gPiArCXUzMiB2c3luY19sZW4sIHZmcm9udF9wb3JjaCwgdmJhY2tfcG9yY2g7 Cj4gPiArCj4gPiArCWhzeW5jX2xlbiA9IGF0bWVsX2hsY2RjX2Nob29zZV9wYXJhbWV0ZXIoMSwg MHg0MCwgdGltaW5ncy0+aHN5bmNfbGVuKTsKPiA+ICsJdnN5bmNfbGVuID0gYXRtZWxfaGxjZGNf Y2hvb3NlX3BhcmFtZXRlcigxLCAweDQwLCB0aW1pbmdzLT52c3luY19sZW4pOwo+ID4gKwo+ID4g KwloZnJvbnRfcG9yY2ggPSBhdG1lbF9obGNkY19jaG9vc2VfcGFyYW1ldGVyKDEsIDB4MjAwLAo+ ID4gKwkJCQkJCSAgICB0aW1pbmdzLT5oZnJvbnRfcG9yY2gpOwo+ID4gKwloYmFja19wb3JjaCA9 IGF0bWVsX2hsY2RjX2Nob29zZV9wYXJhbWV0ZXIoMSwgMHgyMDAsCj4gPiArCQkJCQkJICAgdGlt aW5ncy0+aGJhY2tfcG9yY2gpOwo+ID4gKwl2ZnJvbnRfcG9yY2ggPSBhdG1lbF9obGNkY19jaG9v c2VfcGFyYW1ldGVyKDEsIDB4NDAsCj4gPiArCQkJCQkJICAgIHRpbWluZ3MtPnZmcm9udF9wb3Jj aCk7Cj4gPiArCXZiYWNrX3BvcmNoID0gYXRtZWxfaGxjZGNfY2hvb3NlX3BhcmFtZXRlcigwLCAw eDQwLAo+ID4gKwkJCQkJCSAgIHRpbWluZ3MtPnZiYWNrX3BvcmNoKTsKPiA+ICsKPiA+ICsJYWRq dXN0ZWRfbW9kZS0+aHN5bmNfc3RhcnQgPSBhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSArIGhmcm9u dF9wb3JjaDsKPiA+ICsJYWRqdXN0ZWRfbW9kZS0+aHN5bmNfZW5kID0gYWRqdXN0ZWRfbW9kZS0+ aHN5bmNfc3RhcnQgKyBoc3luY19sZW47Cj4gPiArCWFkanVzdGVkX21vZGUtPmh0b3RhbCA9IGFk anVzdGVkX21vZGUtPmhzeW5jX2VuZCArIGhiYWNrX3BvcmNoOwo+ID4gKwo+ID4gKwlhZGp1c3Rl ZF9tb2RlLT52c3luY19zdGFydCA9IGFkanVzdGVkX21vZGUtPnZkaXNwbGF5ICsgdmZyb250X3Bv cmNoOwo+ID4gKwlhZGp1c3RlZF9tb2RlLT52c3luY19lbmQgPSBhZGp1c3RlZF9tb2RlLT52c3lu Y19zdGFydCArIHZzeW5jX2xlbjsKPiA+ICsJYWRqdXN0ZWRfbW9kZS0+dnRvdGFsID0gYWRqdXN0 ZWRfbW9kZS0+dnN5bmNfZW5kICsgdmJhY2tfcG9yY2g7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBpbnQKPiA+ICthdG1lbF9obGNkY19wYW5lbF9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBhdG1lbF9obGNkY19yZ2Jfb3V0cHV0 ICpyZ2IgPQo+ID4gKwkJCWRybV9lbmNvZGVyX3RvX2F0bWVsX2hsY2RjX3JnYl9vdXRwdXQoZW5j b2Rlcik7Cj4gPiArCXN0cnVjdCBhdG1lbF9obGNkY19wYW5lbCAqcGFuZWwgPSBhdG1lbF9obGNk Y19yZ2Jfb3V0cHV0X3RvX3BhbmVsKHJnYik7Cj4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlID0gJmNydGNfc3RhdGUtPm1vZGU7Cj4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gPiArCWludCBp Owo+ID4gKwo+ID4gKwlpZiAoYXRtZWxfaGxjZGNfZGNfbW9kZV92YWxpZChyZ2ItPmRjLCBtb2Rl KSA9PSBNT0RFX09LKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkg PCBwYW5lbC0+bnVtX3RpbWluZ3M7IGkrKykgewo+ID4gKwkJaWYgKHBhbmVsLT50aW1pbmdzLT5o YWN0aXZlLnR5cCAhPSBtb2RlLT5oZGlzcGxheSB8fAo+ID4gKwkJICAgIHBhbmVsLT50aW1pbmdz LT52YWN0aXZlLnR5cCAhPSBtb2RlLT52ZGlzcGxheSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsK PiA+ICsJCWF0bWVsX2hsY2RjX2NhbGN1bGF0ZV9tb2RlKHBhbmVsLT50aW1pbmdzLCBhZGp1c3Rl ZF9tb2RlKTsKPiA+ICsJCWlmIChhdG1lbF9obGNkY19kY19tb2RlX3ZhbGlkKHJnYi0+ZGMsIGFk anVzdGVkX21vZGUpID09Cj4gPiArCQkgICAgTU9ERV9PSykKPiA+ICsJCQlyZXR1cm4gMDsKPiA+ ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gLUVJTlZBTDsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGlj IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgYXRtZWxfaGxjZGNfcGFuZWxfZW5jb2Rl cl9oZWxwZXJfZnVuY3MgPSB7Cj4gPiAtCS5tb2RlX2ZpeHVwID0gYXRtZWxfaGxjZGNfcGFuZWxf ZW5jb2Rlcl9tb2RlX2ZpeHVwLAo+ID4gKwkuYXRvbWljX2NoZWNrID0gYXRtZWxfaGxjZGNfcGFu ZWxfZW5jb2Rlcl9hdG9taWNfY2hlY2ssCj4gPiAgCS5tb2RlX3NldCA9IGF0bWVsX2hsY2RjX3Jn Yl9lbmNvZGVyX21vZGVfc2V0LAo+ID4gIAkuZGlzYWJsZSA9IGF0bWVsX2hsY2RjX3BhbmVsX2Vu Y29kZXJfZGlzYWJsZSwKPiA+ICAJLmVuYWJsZSA9IGF0bWVsX2hsY2RjX3BhbmVsX2VuY29kZXJf ZW5hYmxlLAo+ID4gQEAgLTE2OCwxNiArMjQxLDYgQEAgc3RhdGljIGludCBhdG1lbF9obGNkY19w YW5lbF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAJcmV0 dXJuIHBhbmVsLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcyhwYW5lbC0+cGFuZWwpOwo+ID4gIH0K PiA+ICAKPiA+IC1zdGF0aWMgaW50IGF0bWVsX2hsY2RjX3JnYl9tb2RlX3ZhbGlkKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAtCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGF0bWVsX2hsY2RjX3JnYl9vdXRwdXQg KnJnYiA9Cj4gPiAtCQkJZHJtX2Nvbm5lY3Rvcl90b19hdG1lbF9obGNkY19yZ2Jfb3V0cHV0KGNv bm5lY3Rvcik7Cj4gPiAtCj4gPiAtCXJldHVybiBhdG1lbF9obGNkY19kY19tb2RlX3ZhbGlkKHJn Yi0+ZGMsIG1vZGUpOwo+ID4gLX0KPiA+IC0KPiA+IC0KPiA+ICAKPiA+ICBzdGF0aWMgc3RydWN0 IGRybV9lbmNvZGVyICoKPiA+ICBhdG1lbF9obGNkY19yZ2JfYmVzdF9lbmNvZGVyKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiBAQCAtMTkwLDcgKzI1Myw2IEBAIGF0bWVsX2hs Y2RjX3JnYl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ICAKPiA+ICBzdGF0aWMgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGF0bWVsX2hs Y2RjX3BhbmVsX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4gPiAgCS5nZXRfbW9kZXMgPSBh dG1lbF9obGNkY19wYW5lbF9nZXRfbW9kZXMsCj4gPiAtCS5tb2RlX3ZhbGlkID0gYXRtZWxfaGxj ZGNfcmdiX21vZGVfdmFsaWQsCj4gPiAgCS5iZXN0X2VuY29kZXIgPSBhdG1lbF9obGNkY19yZ2Jf YmVzdF9lbmNvZGVyLAo+ID4gIH07Cj4gPiAgCj4gPiBAQCAtMjczLDYgKzMzNSwyMiBAQCBzdGF0 aWMgaW50IGF0bWVsX2hsY2RjX2NyZWF0ZV9wYW5lbF9vdXRwdXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiA+ICAJZHJtX3BhbmVsX2F0dGFjaChwLCAmcGFuZWwtPmJhc2UuY29ubmVjdG9yKTsK PiA+ICAJcGFuZWwtPnBhbmVsID0gcDsKPiA+ICAKPiA+ICsJaWYgKCFwYW5lbC0+cGFuZWwtPmZ1 bmNzLT5nZXRfdGltaW5ncykKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlwYW5lbC0+bnVt X3RpbWluZ3MgPQo+ID4gKwkJcGFuZWwtPnBhbmVsLT5mdW5jcy0+Z2V0X3RpbWluZ3MocGFuZWwt PnBhbmVsLCAwLCBOVUxMKTsKPiA+ICsJcGFuZWwtPnRpbWluZ3MgPQo+ID4gKwkJZGV2bV9remFs bG9jKGRldi0+ZGV2LAo+ID4gKwkJCSAgICAgcGFuZWwtPm51bV90aW1pbmdzICogc2l6ZW9mKHN0 cnVjdCBkaXNwbGF5X3RpbWluZyksCj4gPiArCQkJICAgICBHRlBfS0VSTkVMKTsKPiA+ICsKPiA+ ICsJaWYgKCFwYW5lbC0+dGltaW5ncykKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlwYW5l bC0+cGFuZWwtPmZ1bmNzLT5nZXRfdGltaW5ncyhwYW5lbC0+cGFuZWwsIHBhbmVsLT5udW1fdGlt aW5ncywKPiA+ICsJCQkJCSBwYW5lbC0+dGltaW5ncyk7Cj4gPiArCj4gPiAgCXJldHVybiAwOwo+ ID4gIAo+ID4gIGVycl9lbmNvZGVyX2NsZWFudXA6Cj4gCj4gCj4gCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK