From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v8 2/3] drm/panel: Add support for S6E3HA2 panel driver on TM2 board Date: Mon, 06 Feb 2017 10:12:41 +0100 Message-ID: References: <1484116439-7275-1-git-send-email-hoegeun.kwon@samsung.com> <1484116439-7275-3-git-send-email-hoegeun.kwon@samsung.com> <08c5d94b-c76f-af14-c08f-478e26a34a7c@samsung.com> <588FD3C3.7080508@samsung.com> <20170131085449.GA19348@ulmo.ba.sec> <20170202175817.GC9055@ulmo.ba.sec> <74940581-911f-ecdb-e503-6ec2ef8a5177@samsung.com> <20170203085823.ypw6sn26z6qb7tq5@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <20170203085823.ypw6sn26z6qb7tq5@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , linux-samsung-soc@vger.kernel.org, andi.shyti@samsung.com, devicetree@vger.kernel.org, Donghwa Lee , jh80.chung@samsung.com, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , cw00.choi@samsung.com, kgene@kernel.org, dri-devel@lists.freedesktop.org, Hyungwon Hwang , Hoegeun Kwon List-Id: devicetree@vger.kernel.org T24gMDMuMDIuMjAxNyAwOTo1OCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBGcmksIEZlYiAw MywgMjAxNyBhdCAwOTo1NDo0MkFNICswMTAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+PiBIaSBU aGllcnJ5LAo+Pgo+PiBGaW5hbGx5IHNvbWV0aGluZyB0ZWNobmljYWwgOikKPiBQbGVhc2UgcmVh ZCBUaGllcnJ5J3Mgb3RoZXIgcmVzcG9uc2UsIEkgdGhpbmsgYSB0aW1lLW91dCBvbiB0aGlzIHRo cmVhZAo+IHdvdWxkIGJlIGdvb2QgZm9yIGV2ZXJ5b25lLgo+Cj4gQWxzbyBJJ20gbm90IHN1cmUg eW91J3JlIGludHJvZHVjdG9yeSBjb21tZW50IHdhcyBnb29kIGhlcmUsIGl0IGNhbiBiZQo+IHJl YWQgYXMgZXh0cmVtZWx5IHNhcmNhc3RpYyBhbmQgZGlzbWlzc2l2ZSBvZiBUaGllcnJ5LiBUaGF0 IGRvZXNuJ3QgaGVscCwKPiBhbmQgd2UgZXhwZWN0IGV2ZXJ5b25lIHRvIGJlIHJlc3BlY3RpdmUg b2YgZWFjaCBhbm90aGVyIGhlcmUgb24gZHJpLWRldmVsLgoKSSBkbyBub3Qga25vdyB3aHkgZG8g eW91IHN1Z2dlc3QgdGhhdCBteSByZXNwb25zZSBjYW4gYmUgc2FyY2FzdGljLgpZb3UgY2FuIHNl ZSBvdXIgd2hvbGUgY29udmVyc2F0aW9uIGZyb20gdGhpcyB0aHJlYWQgZXZlbiBpbiB0aGlzIGVt YWlsLAp0aGVyZSBpcyBzZXJpb3VzIGRpc2FncmVlbWVudCBvbiB0aGUgbWF0dGVyIGFuZCB3ZSB0 cnkgdG8gZmlndXJlIGl0IG91dAphbmQgd2UgYXJlIGZvY3VzZWQgb24gdGVjaG5pY2FsIHNpZGUs IG5vIHdoaW5pbmcsIG5vIHBlcnNvbmFsIGF0dGFja3MuCkkgaG9wZSBUaGllcnJ5IHNlZXMgaXQg YWxzbyB0aGlzIHdheSwgaWYgbm90LCBJIGNsZWFybHkgc3RhdGUgdGhhdCB0aGlzCnBocmFzZSBo YXMgbm8gaGlkZGVuIG1lYW5pbmcuIEkgYW0ganVzdCBnbGFkIHdlIGNhbiBmb2N1cyBvbiB0ZWNo bmljYWwKc2lkZSBvZiB0aGUgcHJvYmxlbS4KSSBob3BlIHRoaXMgd2lsbCBlbmQgYW55IHBvc3Np YmxlIG1pc3JlYWRpbmdzLgoKUmVnYXJkcwpBbmRyemVqCgoKPgo+IFRoaWVycnksIHBsZWFzZSBr ZWVwIHlvdXIgbG9uZyB3L2UgYW5kIG9ubHkgcmVhZCB0aGlzIHdoZW4geW91J3JlIGJhY2sKPiBu ZXh0IHdlZWsgOi0pCj4KPiBDaGVlcnMsIERhbmllbAo+Cj4+IE9uIDAyLjAyLjIwMTcgMTg6NTgs IFRoaWVycnkgUmVkaW5nIHdyb3RlOgo+Pj4gT24gVHVlLCBKYW4gMzEsIDIwMTcgYXQgMDE6MDU6 MjBQTSArMDEwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPj4+PiBPbiAzMS4wMS4yMDE3IDA5OjU0 LCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+Pj4gT24gVHVlLCBKYW4gMzEsIDIwMTcgYXQgMDk6 MDE6MDdBTSArMDkwMCwgSW5raSBEYWUgd3JvdGU6Cj4+Pj4+PiAyMDE364WEIDAx7JuUIDI07J28 IDEwOjUw7JeQIEhvZWdldW4gS3dvbiDsnbQo6rCAKSDsk7Qg6riAOgo+Pj4+Pj4+IERlYXIgVGhp ZXJyeSwKPj4+Pj4+Pgo+Pj4+Pj4+IENvdWxkIHlvdSBwbGVhc2UgcmV2aWV3IHRoaXMgcGF0Y2g/ Cj4+Pj4+PiBUaGllcnJ5LCBJIHRoaW5rIHRoaXMgcGF0Y2ggaGFzIGJlZW4gcmV2aWV3ZWQgZW5v dWdoIGJ1dCBubyBjb21tZW50Cj4+Pj4+PiBmcm9tIHlvdS4gU2VlbXMgeW91IGFyZSBidXN5LiBJ IHdpbGwgcGljayB1cCB0aGlzLgo+Pj4+PiBTb3JyeSwgYnV0IHRoYXQncyBub3QgaG93IGl0IHdv cmtzLiBUaGlzIHBhdGNoIGhhcyBnb25lIHRocm91Z2ggOAo+Pj4+PiByZXZpc2lvbnMgd2l0aGlu IDQgd2Vla3MsIGFuZCBJIHRlbmQgdG8gaWdub3JlIHBhdGNoZXMgbGlrZSB0aGF0IHVudGlsCj4+ Pj4+IHRoZSBkdXN0IHNldHRsZXMuCj4+Pj4+Cj4+Pj4+IE90aGVyIHRoYW4gdGhhdCwgdGhpcyBj b250aW51ZXMgdGhlIHNhbWUgbWFkbmVzcyB0aGF0IEkndmUgcmVwZWF0ZWRseQo+Pj4+PiBjb21w bGFpbmVkIGFib3V0IGluIHRoZSBwYXN0LiBUaGUgd2hvbGUgbWVjaGFuaXNtIG9mIHJ1bm5pbmcg dGhyb3VnaCBhCj4+Pj4+IHNlcmllcyBvZiB3cml0ZXMgYW5kIG5vdCBjYXJpbmcgYWJvdXQgZXJy b3JzIHVudGlsIHRoZSB2ZXJ5IGVuZCBpcwo+Pj4+PiBzb21ldGhpbmcgd2UndmUgZGlzY3Vzc2Vk IGF0IGxlbmd0aCBpbiB0aGUgcGFzdC4gCj4+Pj4gWWVzLCB3ZSBoYXZlIGRpc2N1c3NlZCB0aGUg cGF0dGVybiwgYnV0IHdpdGhvdXQgYW55IGNvbmNsdXNpb24uIFRoZQo+Pj4+IHBhdHRlcm4gaXMg Y29ycmVjdCwgdXNlZCBpbiBkaWZmZXJlbnQgcGxhY2VzIGluIGtlcm5lbCAoc2VlIGJlbG93IGZv cgo+Pj4+IGV4YW1wbGVzKSBhbmQgc2lnbmlmaWNhbnRseSBkZWNyZWFzZXMgc291cmNlIGNvZGUg c2l6ZS4gRGlzYWxsb3dpbmcgaXQKPj4+PiBpbiBwYW5lbHMgc3Vic3lzdGVtIGp1c3QgYmVjYXVz ZSBvZiBwZXJzb25hbCBwcmVmZXJlbmNlcyBvZiB0aGUKPj4+PiBtYWludGFpbmVyIGRvZXMgbm90 IHNlZW0gdG8gYmUgcHJvcGVyLgo+Pj4+Cj4+Pj4+IEl0IGFsc28gaW4gbGFyZ2UgcGFydHMKPj4+ Pj4gZHVwbGljYXRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmcm9tIG90aGVyIFNhbXN1bmcgcGFu ZWwgZHJpdmVycyB0aGF0IEkKPj4+Pj4gYWxyZWFkeSBzYWlkIHNob3VsZCBldmVudHVhbGx5IGJl IG1vdmVkIHRvIHNvbWV0aGluZyBzYW5lci4KPj4+PiBDdXJyZW50bHkgdGhlcmUgYXJlIHR3byBT YW1zdW5nIHBhbmVsIGRyaXZlcnMsIG9uZSBpcyBvbiBTUEkgYnVzLAo+Pj4+IGFub3RoZXIgb25l IGlzIG9uIERTSS4KPj4+PiBJIGFtIChjby0pYXV0aG9yIG9mIGJvdGggZHJpdmVycywgdGhleSBo YXZlIHNvbWUgc2ltaWxhcml0aWVzIGJ1dCBJIGRpZAo+Pj4+IG5vdCBzZWUgYW55IGdhaW4gaW4g bWFraW5nIGFkZGl0aW9uYWwgYWJzdHJhY3Rpb25zIG92ZXIgdHJhbnNwb3J0IGxheWVyCj4+Pj4g anVzdCB0byBtYWtlIG9uZSBvciB0d28gc21hbGwgZnVuY3Rpb25zIGNvbW1vbi4KPj4+PiBDb3Vs ZCB5b3UgYmUgbW9yZSBwcmVjaXNlIHdoYXQgYXJlIHlvdSB0YWxraW5nIGFib3V0LCBvciBjb3Vs ZCB5b3UgZ2l2ZQo+Pj4+IGEgbGluayB0byB0aGUgbWFpbCB3aGVyZSB5b3Ugc2FpZCBpdC4gQW55 dGhpbmcgSSByZW1lbWJlciB3YXMgYQo+Pj4+IGRpc2N1c3Npb24gYWJvdXQgdWdseSBtYWdpYyBp bml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgZHVlIHRvIHBvb3IKPj4+PiBkb2N1bWVudGF0aW9uLgo+ Pj4+Cj4+Pj4gQW5kIGJlbG93IHByb21pc2VkIGV4YW1wbGVzIG9mIHRoZSBlcnJvciBwYXR0ZXJu LCBpdCB3YXMgdGltZSBjb25zdW1pbmcKPj4+PiB0byBmaW5kIHRoZW0sIHNvIHBsZWFzZSBhdCBs ZWFzdCByZWFkIHRoZW0gOikKPj4+IEkndmUgZG9uZSBiZXR0ZXIsIGJlbG93IGlzIHdoYXQgSSBo b3BlIGEgbGlzdCBvZiBnb29kIGFyZ3VtZW50cyB3aHkgdGhlCj4+PiBwYXR0ZXJuIGlzIGEgYmFk IGlkZWEsIGFuZCB3aHkgaW4gc29tZSBjYXNlcyBpdCBjYW4gYmUganVzdGlmaWVkLgo+Pj4KPj4+ PiBBbG1vc3QgZXhhY3RseSB0aGUgc2FtZSBwYXR0ZXJucyBmb3IgdGhlIHNhbWUgcHVycG9zZToK Pj4+Pgo+Pj4+IDEuIGh0dHA6Ly9seHIuZnJlZS1lbGVjdHJvbnMuY29tL3NvdXJjZS9kcml2ZXJz L25ldC9pZWVlODAyMTU0L2F0dXNiLmMjTDYzCj4+Pj4gICAgIENpdGF0aW9uIGZyb20gdGhlIGNv ZGU6Cj4+Pj4gICAgIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGVycm9yIGNoZWNrcyBpbiB0aGUg Y29kZSwgd2UgcmVjb3JkIHRoZQo+Pj4+IGZpcnN0IGVycm9yCj4+Pj4gICAgIGluIGF0dXNiLT5l cnIgYW5kIHJlamVjdCBhbGwgc3Vic2VxdWVudCByZXF1ZXN0cyB1bnRpbCB0aGUgZXJyb3IgaXMK Pj4+PiBjbGVhcmVkLgo+Pj4gVGhhdCdzIGFib3V0IHRoZSB3b3JzdCBleGFtcGxlIHlvdSBjb3Vs ZCd2ZSB1c2VkLiBIYXZlIHlvdSBldmVuIGxvb2tlZAo+Pj4gYXQgdGhlIGNvZGUgdGhhdCB1c2Vz IHRoaXM/IEl0J3MgY29tcGxldGVseSBjcmF6eS4gU28gaGVyZSB3ZSBoYXZlIHRoZQo+Pj4gYXR1 c2JfY29udHJvbF9tc2coKSBmdW5jdGlvbiB0aGF0IHN0b3JlcyB0aGlzIGVycm9yLCBidXQgdGhl biBhbHNvCj4+PiBwcm9wYWdhdGVzIGl0IHRvIGl0cyBjYWxsZXIuIE9uZSBvZiB0aGVzZSBjYWxs ZXJzIGlzIGF0dXNiX3JlYWRfcmVnKCksCj4+PiB3aGljaCBhbHNvIHByb3BhZ2F0ZXMgdGhlIGVy cm9yIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyIHZhbHVlIGlmIHRoZQo+Pj4gcmVhZCB3YXMgc3Vj Y2Vzc2Z1bC4KPj4+Cj4+PiBOb3cgdGhlIHJlYWxseSBpbnNhbmUgcGFydCBpcyBob3cgdGhpcyBp cyB0aGVuIHVzZWQgaW4gc29tZXRoaW5nIGxpa2UKPj4+IGF0dXNiX3dyaXRlX3N1YnJlZygpOgo+ Pj4KPj4+IAlvcmlnID0gYXR1c2JfcmVhZF9yZWcoYXR1c2IsIHJlZyk7Cj4+PiAJdG1wID0gb3Jp ZyAmIH5tYXNrOwo+Pj4gCXRtcCB8PSAodmFsdWUgPDwgc2hpZnQpICYgbWFzazsKPj4+IAkKPj4+ IAlpZiAodG1wICE9IG9yaWcpCj4+PiAJCXJldCA9IGF0dXNiX3dyaXRlX3JlZyhhdHVzYiwgcmVn LCB0bXApOwo+Pj4KPj4+IFNvIGxldCdzIGFzc3VtZSB0aGF0IGF0dXNiX2NvbnRyb2xfbXNnKCkg ZmFpbHMgaW4gdGhlIGNhbGwgdG8KPj4+IGF0dXNiX3JlYWRfcmVnKCkuIFlvdSdsbCBiZSByZXR1 cm5pbmcgYW4gZXJyb3IgY29kZSwgbWFzayBvdXQgc29tZSBiaXRzLAo+Pj4gT1IgaW4gbmV3IG9u ZXMgYW5kIHdyaXRlIHRoZSByZXN1bHQgdG8gdGhlIHJlZ2lzdGVyLiBTbyBub3Qgb25seSBkb2Vz Cj4+PiB0aGUgY29kZSBub3QgYm90aGVyIHRvIGNoZWNrIGZvciBlcnJvcnMsIGJ1dCBpdCB3aWxs IGFsc28gaGFwcGlseSBnbyBhbmQKPj4+IGNvcnJ1cHQgcmVnaXN0ZXJzIHdoZW4gYW4gZXJyb3Ig aGFzIG9jY3VycmVkIHdoaWxlIHJlYWRpbmcuCj4+IE5vdCB0cnVlLCBpbiBjYXNlIG9mIGVycm9y IGluIGF0dXNiX3JlYWRfcmVnIGF0dXNiX3dyaXRlX3JlZyB3aWxsIGRvCj4+IG5vdGhpbmcgYmVj YXVzZSBhdHVzYi0+ZXJyIGlzIHNldCAhCj4+IEFuZCB0aGlzIGlzIHN0cm9uZyBwb2ludCBvZiB0 aGUgaWRpb20gLSB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBwZXJmb3JtCj4+IHRyYW5zZmVyIHVu dGlsIHRoZSBlcnJvciBpcyBleHBsaWNpdGx5IGNsZWFyZWQuCj4+IFdpdGggdGhpcyBpZGlvbSBp dCBpcyBlbm91Z2ggdG8gcHV0IGd1YXJkcyBvbmx5IGluIG9uZS90d28vZmV3IHBsYWNlcywKPj4g aW4gdHJhZGl0aW9uYWwgZXJyb3IgaGFuZGxpbmcgeW91IGp1c3QgbmVlZCB0byBwdXQgY2hlY2tz IGFmdGVyIGV2ZXJ5Cj4+IGZ1bmN0aW9uIGNhbGwgYW5kIGl0IGlzIHF1aXRlIGNvbW1vbiBzaXR1 YXRpb24gdGhhdCBkZXZlbG9wZXJzIGZvcmdvdCB0bwo+PiBkbyB0aGF0LCBmb3IgZXhhbXBsZSBs b29rIGF0IG1pcGkgY2FsbHMgaGVyZSBbMV0gOikKPj4gWzFdOgo+PiBodHRwOi8vbHhyLmZyZWUt ZWxlY3Ryb25zLmNvbS9zb3VyY2UvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BhbmVs X3ZidC5jI0wxNjAKPj4KPj4gU28gdGhlIGZ1bmN0aW9uIGlzIGNvcnJlY3QsIGJ1dCB0byBhdm9p ZCBmb29saW5nIHVuYXdhcmUgcmVhZGVycyBJIHdvdWxkCj4+IGFkZCBlcnJvciBjaGVja2luZyBh ZnRlciByZWFkOgo+Pgo+PiAgICAgb3JpZyA9IGF0dXNiX3JlYWRfcmVnKGF0dXNiLCByZWcpOwo+ PiAgICAgaWYgKGF0dXNiLT5lcnIpCj4+ICAgICAgICAgcmV0dXJuIGVycjsKPj4KPj4KPj4+PiAy LiBodHRwOi8vbHhyLmZyZWUtZWxlY3Ryb25zLmNvbS9zb3VyY2UvZHJpdmVycy9tZC9kbS10aGlu LmM/dj00LjQjTDkxNwo+Pj4gVGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIHRoZSBw YW5lbCBkcml2ZXIgYmVjYXVzZSBpdCdzIHVzZWQgdG8KPj4+IHN0b3JlIGEgdmFsdWUgZnJvbSB3 aXRoaW4gY2FsbGJhY2tzIHRoYXQgY2FuJ3QgcmV0dXJuIG9uZS4KPj4gVGhpcyBpcyBpbnRlcm5h bCBmcmFtZXdvcmsgb2YgdGhlIGRyaXZlciwgc28gbm90aGluZyBwcmV2ZW50cyBkZXZlbG9wZXIK Pj4gZnJvbSBpbXBsZW1lbnRpbmcgY2FsbGJhY2tzIHRoYXQgcmV0dXJuIHZhbHVlLgo+PiBBcHBh cmVudGx5IHN0b3JpbmcgZXJyb3IgaW4gdGhlIG9iamVjdChzdHJ1Y3QgZG1fdGhpbl9uZXdfbWFw cGluZykgaXMKPj4gZ29vZCBhbmQgY29udmVuaWVudCAgOikKPj4KPj4+PiAzLiBodHRwOi8vbHhy LmZyZWUtZWxlY3Ryb25zLmNvbS9zb3VyY2UvbmV0LzlwL3RyYW5zX2ZkLmM/dj0zLjE4I0wyOTcK Pj4+IEVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nLgo+PiBUaGUgc2FtZSBoZXJlLgo+Pgo+Pj4+ IDQuCj4+Pj4gaHR0cDovL2x4ci5mcmVlLWVsZWN0cm9ucy5jb20vc291cmNlL2RyaXZlcnMvbWVk aWEvdjRsMi1jb3JlL3Y0bDItY3RybHMuYyNMMjIzNAo+Pj4gTG9va3MgbGlrZSB0aGlzIGNvdWxk IGJlIHJlcGxhY2VkIGJ5IHRoZSBtb3JlIGlkaW9tYXRpYyB1c2Ugb2YgRVJSX1BUUigpCj4+PiBl bmNvZGluZyBlcnJvciBjb2Rlcy4gQnV0IHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZmZlcmVuY2Ug aGVyZSBpcyB0aGF0Cj4+PiBlYWNoIHVzZSBvZiB0aGUgaGFuZGxlcl9zZXRfZXJyKCkgZnVuY3Rp b24gaXMgZm9sbG93ZWQgYnkgYSByZXR1cm4uIFNvCj4+PiBpbnN0ZWFkIG9mIGlnbm9yaW5nIGVy cm9ycyBsaWtlIHlvdSBkbyBpbiB0aGUgcGFuZWwgZHJpdmVycywgdGhpcyBkb2VzCj4+PiByZWNv Z25pemUgdGhlbSBhbmQgYWJvcnRzIGVhcmx5LCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gZ28gdGhy b3VnaCB0aGUKPj4+IHJlbWFpbmRlciBvZiB0aGUgY29kZSwgaXJyZXNwZWN0aXZlIG9mIGhvdyBz bWFsbCB0aGUgY2hhbmNlcyBhcmUgb2YgaXQKPj4+IHN1Y2NlZWRpbmcuIE9yIGlnbm9yaW5nIHRo YXQgL2V2ZW4gaWYvIHRoZSByZW1haW5kZXIgZGlkbid0IGZhaWwsIHRoZQo+Pj4gb25lIG9wZXJh dGlvbiB0aGF0IGZhaWwgbWlnaHQgaGF2ZSBiZWVuIGVzc2VudGlhbCB0byB0aGUgb3BlcmF0aW9u IG9mCj4+PiB0aGUgZGV2aWNlLgo+PiBJIGhhdmUgYW4gaW1wcmVzc2lvbiB0aGF0IHlvdSBkbyBu b3QgdW5kZXJzdGFuZCB0aGUgaWRpb20uIEl0IGRvZXMgbm90Cj4+IGFsbG93IHRvIGlnbm9yZSBl cnJvciAtIGFzIHNvb24gYXMgdGhlIGVycm9yIGlzIGRldGVjdGVkLCBndWFyZCBpcyBzZXQKPj4g YW5kIG5vIGZ1cnRoZXIgaGFybSBjYW4gYmUgZG9uZS4KPj4gR29pbmcgYmFjayB0byBWNEwyLCBs b29rIGF0IHRoZSB1c2FnZSBvZiB0aGUgaWRpb20gWzJdOgo+PiAgICAgICAgICAgICAgICAgIHY0 bDJfY3RybF9hZGRfaGFuZGxlcihoZGxfdmlkX2NhcCwgaGRsX3VzZXJfZ2VuLCBOVUxMKTsKPj4g ICAgICAgICAgICAgICAgICB2NGwyX2N0cmxfYWRkX2hhbmRsZXIoaGRsX3ZpZF9jYXAsIGhkbF91 c2VyX3ZpZCwgTlVMTCk7Cj4+ICAgICAgICAgICAgICAgICAgdjRsMl9jdHJsX2FkZF9oYW5kbGVy KGhkbF92aWRfY2FwLCBoZGxfdXNlcl9hdWQsIE5VTEwpOwo+PiAgICAgICAgICAgICAgICAgIHY0 bDJfY3RybF9hZGRfaGFuZGxlcihoZGxfdmlkX2NhcCwgaGRsX3N0cmVhbWluZywgTlVMTCk7Cj4+ ICAgICAgICAgICAgICAgICAgdjRsMl9jdHJsX2FkZF9oYW5kbGVyKGhkbF92aWRfY2FwLCBoZGxf c2R0dl9jYXAsIE5VTEwpOwo+PiAgICAgICAgICAgICAgICAgIHY0bDJfY3RybF9hZGRfaGFuZGxl cihoZGxfdmlkX2NhcCwgaGRsX2xvb3BfY2FwLCBOVUxMKTsKPj4gICAgICAgICAgICAgICAgICBp ZiAoaGRsX3ZpZF9jYXAtPmVycm9yKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGhkbF92aWRfY2FwLT5lcnJvcjsKPj4KPj4gQWdhaW4sIHRoZSBwb2ludCBpcyB5b3UgZG8gbm90 IG5lZWQgdG8gdXNlIG9sZCBjb25zdHJ1Y3QsIHdoaWNoIGVubGFyZ2VzCj4+IHRoZSBjb2RlIGFi b3V0IHRocmVlIHRpbWVzOgo+PiAgICAgZXJyID0gZnVuYyhvYmosLi4uKTsKPj4gICAgIGlmIChl cnIgPCAwKQo+PiAgICAgICAgIHJldHVybiBlcnI7Cj4+Cj4+IEluc3RlYWQgeW91IGp1c3QgY2Fs bCBmdW5jKG9iaiwuLi4pLCBhbmQgdGhlIGJ1cmRlbiBvZiBlcnJvciBjaGVja2luZyBpcwo+PiBw dXQgaW50byB0aGUgZnVuY3Rpb24sIGJ1dCBmb3IgdGhpcyBlcnIgbXVzdCBiZSBzdG9yZWQgaW4g b2JqZWN0Lgo+Pgo+PiBbMl06Cj4+IGh0dHA6Ly9seHIuZnJlZS1lbGVjdHJvbnMuY29tL3NvdXJj ZS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZpdmlkL3ZpdmlkLWN0cmxzLmMjTDE2MzAKPj4KPj4+ PiA1LiBodHRwOi8vbHhyLmZyZWUtZWxlY3Ryb25zLmNvbS9zb3VyY2UvZHJpdmVycy9tZWRpYS9p MmMvczVrNWJhZi5jI0w0NTEKPj4+IFRoYXQncyBhIHBhcnRpY3VsYXJseSBnb29kIGV4YW1wbGUg b2Ygd2h5IHlvdSBzaG91bGRuJ3QgYmUgZG9pbmcgdGhpcwo+Pj4ga2luZCBvZiB0aGluZy4gQ29u c2lkZXIgd2hhdCB3b3VsZCBoYXBwZW4gaW4gdGhlc2UgY2FzZXMgaWYgZm9yIGV4YW1wbGUKPj4+ IHRoZXJlIHdhcyBhIHByb2JsZW0gd2l0aCB0aGUgSTJDIGludGVyZmFjZS4gVGhlcmUncyBhIGJ1 bmNoIG9mIHJlYWQgYW5kCj4+PiB3cml0ZSBzZXF1ZW5jZXMgaW4gdGhhdCBkcml2ZXIgdGhhdCBn byBjb21wbGV0ZWx5IHdpdGhvdXQgY2hlY2tpbmcgZm9yCj4+PiBlcnJvcnMuIAo+PiBOb3QgdHJ1 ZSwgbm8gZnVydGhlciB0cmFuc2ZlciB3aWxsIGJlIHBlcmZvcm1lZC4KPj4KPj4+IEltYWdpbmUg aG93IHRoYXQgd2lsbCBsb29rIHRvIGEgdXNlciB3aGVuIHRoZSBjb21tdW5pY2F0aW9uIHRvIGEK Pj4+IGNoaXAgZG9lc24ndCB3b3JrLiBUaGV5J2xsIGdldCBhIGxvYWQgb2YgZXJyb3IgbWVzc2Fn ZXMgYWxsIHNheWluZyB0aGF0Cj4+PiBjb21tdW5pY2F0aW9uIHRpbWVkIG91dCwgb3IgdGhhdCB0 aGUgc2xhdmUgaXNuJ3QgcmVzcG9uZGluZyBvciB3aGF0IG5vdC4KPj4+IEFuZCB3b3JzZSBzdGls bCwgZm9yIHRpbWVvdXRzIHlvdSdyZSBhbHNvIGdvaW5nIHRvIGludHJvZHVjZSBhIGJ1bmNoIG9m Cj4+PiBlcnJvciBtZXNzYWdlcyBpbnRlcmxlYXZlZCB3aXRoIHBvdGVudGlhbGx5IG90aGVyIHVz ZWZ1bCBtZXNzYWdlcyBmcm9tCj4+PiBvdGhlciBkcml2ZXJzIG9yIHRoZSBjb3JlLiBEZXBlbmRp bmcgb24gdGhlIG51bWJlciBvZiBhY2Nlc3MgeW91IGhhdmUgaXQKPj4+IG1pZ2h0IHRha2Ugc2Vj b25kcyBmb3IgYWxsIG9mIHRoZSBlcnJvciBtZXNzYWdlcyB0byBkcmFpbiBiZWZvcmUgeW91Cj4+ PiBub3RpY2Ugc29tZXdoZXJlIGF0IHRoZSBlbmQgb2YgdGhlIGNvZGUgdGhhdCBzb21ldGhpbmcg d2VudCB3cm9uZyBhbmQKPj4+IGRlY2lkZSB0byBhYm9ydCB3aGF0ZXZlciB5b3Ugd2VyZSB0cnlp bmcgdG8gZG8uCj4+IEFnYWluLCBub3QgdHJ1ZSBhdCBhbGwuCj4+Cj4+Pj4gICAgIFRoaXMgaXMg bXkgZHJpdmVyLCBJIG1lbnRpb24gaXQgaGVyZSBqdXN0IHRvIHNob3cgaXQgd2FzIG5vdCBhCj4+ Pj4gcHJvYmxlbSB0byBtZXJnZSBpdCB0byBtZWRpYSBzdWJzeXN0ZW0uCj4+PiBUaGF0IGp1c3Qg c2hvd3Mgd2hhdCBldmVyeWJvZHkga25vd3M6IHRoYXQgbWFpbnRhaW5lcnMgY2FyZSBhYm91dAo+ Pj4gZGlmZmVyZW50IHRoaW5ncyBhdCBkaWZmZXJlbnQgbGV2ZWxzLgo+Pj4KPj4+PiBTaW1pbGFy IHBhdHRlcm5zOgo+Pj4+Cj4+Pj4gNi4gaHR0cDovL2x4ci5mcmVlLWVsZWN0cm9ucy5jb20vc291 cmNlL2ZzL3NlcV9maWxlLmMjTDM5OAo+Pj4+ICAgICBEbyBub3QgcHJvY2VzcyBvYmplY3QgaWYg YnVmZmVyIGlzIGZ1bGwsIGl0IGFsbG93cyB0byBkbyBub3QgY2hlY2sKPj4+PiBidWZmZXIgc2l6 ZSBhZnRlciBldmVyeSB3cml0ZSwgZm9yIGV4YW1wbGU6Cj4+Pj4+ICAgICBzZXFfcHJpbnRmKG0s ICIgaGFyZGlycS1zYWZlIGxvY2tzOiAgICAgICAgICAgICUxMWx1XG4iLAo+Pj4+PiAgICAgICAg ICAgICBucl9oYXJkaXJxX3NhZmUpOwo+Pj4+PiAgICAgc2VxX3ByaW50ZihtLCAiIGhhcmRpcnEt dW5zYWZlIGxvY2tzOiAgICAgICAgICAlMTFsdVxuIiwKPj4+Pj4gICAgICAgICAgICAgbnJfaGFy ZGlycV91bnNhZmUpOwo+Pj4+PiAgICAgc2VxX3ByaW50ZihtLCAiIHNvZnRpcnEtc2FmZSBsb2Nr czogICAgICAgICAgICAlMTFsdVxuIiwKPj4+Pj4gICAgICAgICAgICAgbnJfc29mdGlycV9zYWZl KTsKPj4+Pj4gICAgIHNlcV9wcmludGYobSwgIiBzb2Z0aXJxLXVuc2FmZSBsb2NrczogICAgICAg ICAgJTExbHVcbiIsCj4+Pj4+ICAgICAgICAgICAgIG5yX3NvZnRpcnFfdW5zYWZlKTsKPj4+Pj4g ICAgIHNlcV9wcmludGYobSwgIiBpcnEtc2FmZSBsb2NrczogICAgICAgICAgICAgICAgJTExbHVc biIsCj4+Pj4+ICAgICAgICAgICAgIG5yX2lycV9zYWZlKTsKPj4+Pj4gICAgIHNlcV9wcmludGYo bSwgIiBpcnEtdW5zYWZlIGxvY2tzOiAgICAgICAgICAgICAgJTExbHVcbiIsCj4+Pj4+ICAgICAg ICAgICAgIG5yX2lycV91bnNhZmUpOwo+Pj4+Pgo+Pj4+PiAgICAgc2VxX3ByaW50ZihtLCAiIGhh cmRpcnEtcmVhZC1zYWZlIGxvY2tzOiAgICAgICAlMTFsdVxuIiwKPj4+Pj4gICAgICAgICAgICAg bnJfaGFyZGlycV9yZWFkX3NhZmUpOwo+Pj4+PiAgICAgc2VxX3ByaW50ZihtLCAiIGhhcmRpcnEt cmVhZC11bnNhZmUgbG9ja3M6ICAgICAlMTFsdVxuIiwKPj4+Pj4gICAgICAgICAgICAgbnJfaGFy ZGlycV9yZWFkX3Vuc2FmZSk7Cj4+Pj4+ICAgICBzZXFfcHJpbnRmKG0sICIgc29mdGlycS1yZWFk LXNhZmUgbG9ja3M6ICAgICAgICUxMWx1XG4iLAo+Pj4+PiAgICAgICAgICAgICBucl9zb2Z0aXJx X3JlYWRfc2FmZSk7Cj4+Pj4+ICAgICBzZXFfcHJpbnRmKG0sICIgc29mdGlycS1yZWFkLXVuc2Fm ZSBsb2NrczogICAgICUxMWx1XG4iLAo+Pj4+PiAgICAgICAgICAgICBucl9zb2Z0aXJxX3JlYWRf dW5zYWZlKTsKPj4+Pj4gICAgIHNlcV9wcmludGYobSwgIiBpcnEtcmVhZC1zYWZlIGxvY2tzOiAg ICAgICAgICAgJTExbHVcbiIsCj4+Pj4+ICAgICAgICAgICAgIG5yX2lycV9yZWFkX3NhZmUpOwo+ Pj4+PiAgICAgc2VxX3ByaW50ZihtLCAiIGlycS1yZWFkLXVuc2FmZSBsb2NrczogICAgICAgICAl MTFsdVxuIiwKPj4+Pj4gICAgICAgICAgICAgbnJfaXJxX3JlYWRfdW5zYWZlKTsKPj4+Pj4KPj4+ Pj4gICAgIHNlcV9wcmludGYobSwgIiB1bmNhdGVnb3JpemVkIGxvY2tzOiAgICAgICAgICAgJTEx bHVcbiIsCj4+Pj4+ICAgICAgICAgICAgIG5yX3VuY2F0ZWdvcml6ZWQpOwo+Pj4+PiAgICAgc2Vx X3ByaW50ZihtLCAiIHVudXNlZCBsb2NrczogICAgICAgICAgICAgICAgICAlMTFsdVxuIiwKPj4+ Pj4gICAgICAgICAgICAgbnJfdW51c2VkKTsKPj4+Pj4gICAgIHNlcV9wcmludGYobSwgIiBtYXgg bG9ja2luZyBkZXB0aDogICAgICAgICAgICAgJTExdVxuIiwKPj4+Pj4gICAgICAgICAgICAgbWF4 X2xvY2tkZXBfZGVwdGgpOwo+Pj4+IE5vdyB0cnkgdG8gaW1hZ2luZSBob3cgaXQgd291bGQgbG9v ayBsaWtlIGlmIHlvdSBhZGQgZXJyb3IgY2hlY2tpbmcKPj4+PiBhZnRlciBlYWNoIGNhbGwuCj4+ PiBJIHRoaW5rIHRoYXQncyBhIGZhaXJseSBzYW5lIHVzZS1jYXNlIGZvciB0aGlzIGtpbmQgb2Yg cGF0dGVybi4gVGhlIGJpZwo+Pj4gZGlmZmVyZW5jZSBpcyB0aGF0IHRoaXMgY29uZGl0aW9uIGlz IGNoZWNrZWQgaW4gc3Vic2VxdWVudCBhY2Nlc3NlcyB0bwo+Pj4gc2hvcnRjdXQgZmFpbHVyZSBw YXRocy4gSXQncyBhbHNvIHZlcnkgZGlmZmVyZW50IGluIHRoYXQgaXQgcGVyZm9ybXMKPj4+IHdy aXRlcyB0byBtZW1vcnkgYW5kIHRob3NlIGFyZW4ndCBnb2luZyB0byBmYWlsLiBUaGUgcm9vdCBj YXVzZSBvZiB0aGlzCj4+PiBvdmVyZmxvdyB3b3VsZCBiZSBzdGF0aWMgaW4gbmF0dXJlIGFuZCBs aWtlbHkgZm91bmQgZG9pbmcgYmFzaWMgdGVzdGluZwo+Pj4gYW5kIGZpeGVkIGJ5IG1ha2luZyB0 aGUgYnVmZmVyIGxhcmdlci4KPj4+Cj4+PiBUaGF0J3MgY29udHJhcnkgdG8gYSBkcml2ZXIgZG9p bmcgSS9PIChJMkMsIFNQSSwgRFNJLCAuLi4pIHRoYXQgY2FuIGZhaWwKPj4+IHVuZXhwZWN0ZWRs eSBmb3IgYW55IG51bWJlciBvZiByZWFzb25zLgo+PiBUaGUgaWRpb20gaXMgc3RpbGwgdGhlIHNh bWUgLSBzdG9yaW5nIGVycm9yIHN0YXRlIGluIHRoZSBvYmplY3QgYWxsb3dzCj4+IHRvIG1vdmUg ZXJyb3IgY2hlY2tpbmcgaW5zaWRlIGNhbGxlZCBmdW5jdGlvbnMsIHJlbW92aW5nIG11Y2ggb2YK Pj4gcmVkdW5kYW50IGNvZGUgZnJvbSBjYWxsZXIuCj4+Cj4+Pj4gNy4gaHR0cDovL2x4ci5mcmVl LWVsZWN0cm9ucy5jb20vc291cmNlL2xpYi9kZXZyZXMuYyNMMTI5Cj4+Pj4gICAgIFBvc3Rwb25l ZCBlcnJvciBjaGVjazoKPj4+Pj4gKi9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwg SU9SRVNPVVJDRV9NRU0sIDApOy8qCj4+Pj4+IC8qYiovKi9hc2UgPSBkZXZtX2lvcmVtYXBfcmVz b3VyY2UoJnBkZXYtPmRldiwgcmVzKTsvKgo+Pj4+PiAqL2lmIChJU19FUlIoYmFzZSkpLyoKPj4+ Pj4gLyoqLyovcmV0dXJuIFBUUl9FUlIoYmFzZSk7LyoKPj4+IEhlaCwgSSB3cm90ZSB0aGF0ID0p Cj4+Pgo+Pj4gVGhpcyBpcyBhbHNvIHF1aXRlIGRpZmZlcmVudCBmcm9tIHlvdXIgdXNhZ2UgaW4g dGhlIHBhbmVsIGRyaXZlci4gV2UgZG8KPj4+IG5vdCBzaW1wbHkgaWdub3JlIGZhaWx1cmUgZnJv bSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UoKSwgaW5zdGVhZCB3ZSBsZWF2ZQo+Pj4gaXQgdXAgdG8g ZGV2bV9pb3JlbWFwX3Jlc291cmNlKCkgdG8gdHVybiBpdCBpbnRvIGEgbWVhbmluZ2Z1bCBlcnJv ciBjb2RlCj4+PiBhbmQgbWVzc2FnZS4gVGhlIGZ1bmN0aW9uIGRvZXMgdGhpcyB2ZXJ5IGVhcmx5 IG9uLCBzbyB0aGUgZXJyb3IKPj4+IGNvbmRpdGlvbiBpcyBub3QgaWdub3JlZCwgYXMgaXQgaXMg aW4gdGhlIHBhbmVsIGRyaXZlci4KPj4gQ2xhaW1zIGFib3V0IHRoZSBwYW5lbCBhZ2FpbiBub3Qg dHJ1ZSwgcmVhc29ucyBkZXNjcmliZWQgYWJvdmUuCj4+Cj4+IFRoZSBzaW1pbGFyaXR5IGhlcmUg aXMgdGhhdCB5b3UgZG8gbm90IHBlcmZvcm0gZXJyb3IgY2hlY2tpbmcgaW4gdGhlCj4+IGNhbGxl ciwgeW91IGp1c3QgYmxpbmRseSBwYXNzIHRoZSAnb2JqZWN0JyB0byB0aGUgbmV4dCBmdW5jdGlv biwgYW5kCj4+IHN0aWxsIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCj4+Cj4+PiBB bHNvIGRvaW5nIHRoaXMgaGVscHMgd2l0aCBwcm92aWRpbmcgdW5pZmllZCBlcnJvciBjb2RlcyBh bmQgbWVzc2FnZXMKPj4+IGFjcm9zcyBhbGwgY2FsbGVycywgYW5kIHJlbW92aW5nIGEgbG90IG9m IGJvaWxlciBwbGF0ZSBmcm9tIGRyaXZlcnMgdGhhdAo+Pj4gcHJldmlvdXNseSB1c2VkIHRvIGNv bWUgdXAgd2l0aCBhbGwgc29ydHMgb2YgbWVhbmluZ2xlc3MgZXJyb3IgY29kZXMgYW5kCj4+PiBj b21wbGV0ZWx5IGluY29uc2lzdGVudCBtZXNzYWdlcy4KPj4gSSBsaWtlIHRoaXMgcGF0dGVybiBh bmQgSSBhZ3JlZSB3aXRoIHRoaXMgcmVhc29uaW5nIEkganVzdCB3YW50IHRvIGFsbG93Cj4+IHVz YWdlIG9mIGl0IG1vcmUgd2lkZWx5LCBvciBhdCBsZWFzdCBub3QgdG8gYmxvY2sgcGF0Y2hlcyB1 c2luZyBpdCA6KQo+Pgo+Pgo+PiBSZWdhcmRzCj4+IEFuZHJ6ZWoKPj4KPj4KPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxp bmcgbGlzdAo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==