This message generated a parse failure. Raw output follows here. Please use 'back' to navigate. From devnull@lkml.org Thu Apr 25 21:32:16 2024 >From mailfetcher Thu Jan 18 12:41:31 2018 Envelope-to: lkml@grols.ch Delivery-date: Thu, 18 Jan 2018 12:41:31 +0100 Received: from srv.grols.ch [5.172.41.101] by 1eb738dfd482 with IMAP (fetchmail-6.3.26) for (single-drop); Thu, 18 Jan 2018 12:41:31 +0100 (CET) Received: from vger.kernel.org ([209.132.180.67]) by home.grols.ch with esmtp (Exim 4.89) (envelope-from ) id 1ec8ZV-0002Ge-MZ for lkml@grols.ch; Thu, 18 Jan 2018 12:41:31 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754932AbeARLl1 (ORCPT ); Thu, 18 Jan 2018 06:41:27 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:49082 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754915AbeARLl0 (ORCPT ); Thu, 18 Jan 2 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w0IBcpk8008397; Thu, 18 Jan 2018 12:40:51 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2fgyb7m3k7-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 18 Jan 2018 12:40:51 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id BAE4C31; Thu, 18 Jan 2018 11:40:48 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 78A8523E3; Thu, 18 Jan 2018 11:40:48 +0000 (GMT) Received: from SFHDAG6NODE3.st.com (10.75.127.18) by SFHDAG6NODE2.st.com (10.75.127.17) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 18 Jan 2018 12:40:48 +0100 Received: from SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6]) by SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6%20]) with mapi id 15.00.1347.000; Thu, 18 Jan 2018 12:40:48 +0100 From: Philippe CORNU To: Brian Norris Cc: Archit Taneja , Andrzej Hajda , Laurent Pinchart , David Airlie , Yannick FERTRE , Vincent ABR Subject: Re: [PATCH] drm/bridge/synopsys: dsi: use common mipi_dsi_create_packet() Thread-Topic: [PATCH] drm/bridge/synopsys: dsi: use common mipi_dsi_create_packet() Thread-Index: AQHThoap1QCkJ49j+0ukvgxd0HhaQKNrUQSAgACH7YCAAqSDgIALBxiA Date: Thu, 18 Jan 2018 11:40:48 +0000 Message-Id: <023c159e-0a7f-7d1b-a2d8-8ef19033a1b3@st.com> References: <20180106003813.4816-1-briannorris@chromium.org> <715bb58c-efa6-7944-f186-c186d7fae569@st.com> <20180109185512.GA73309@google.com> In-Reply-To: Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted X-Originating-IP: [10.75.127.46] Content-Type: text/plain; charset="utf-8" Content-ID: <51C9894F7993B34F8C1470E81454CEC6@st.com> Content-Transfer-Encoding: base64 Mime-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-18_05:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-Id: X-Mailing-List: linux-kernel@vger.kernel.org Received-SPF: none client-ip=209.132.180.67; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org X-Spam-Score: 4.8 X-Spam-Score-Bar: ++++ X-Spam-Action: no action X-Spam-Report: Action: no action Symbol: AUTH_NA(1.00) Symbol: BAYES_SPAM(4.00) Symbol: TO_DN_SOME(0.00) Symbol: DMARC_NA(0.00) Symbol: ASN(0.00) Symbol: MIME_GOOD(-0.10) Symbol: RCVD_COUNT_SEVEN(0.00) Symbol: FROM_HAS_DN(0.00) Symbol: R_SPF_NA(0.00) Symbol: TO_DN_EQ_A SGkgQnJpYW4sDQoNCk9uIDAxLzExLzIwMTggMTI6MTYgUE0sIFBoaWxpcHBlIENPUk5VIHdyb3Rl Og0KPiBIaSBCcmlhbiwNCj4gDQo+IE9uIDAxLzA5LzIwMTggMDc6NTUgUE0sIEJyaWFuIE5vcnJp cyB3cm90ZToNCj4+IEhpIFBoaWxpcHBlLA0KPj4NCj4+IE9uIFR1ZSwgSmFuIDA5LCAyMDE4IGF0 IDEwOjQ4OjQzQU0gKzAwMDAsIFBoaWxpcHBlIENPUk5VIHdyb3RlOg0KPj4+IEhpIEJyaWFuLA0K Pj4+DQo+Pj4gQW5kIG1hbnkgdGhhbmtzIGZvciBpbXBsZW1lbnRpbmcgdGhlc2UgVE9ET3MuDQo+ Pg0KPj4gQW5kIHRoYW5rcyBmb3IgYWRkaW5nIHRoZW07IGl0IGdhdmUgbWUgYSBiZXR0ZXIgb3B0 aW9uIHRoYW4ganVzdCBhZGRpbmcNCj4+IHlldCBhbm90aGVyIHN3aXRjaCBjYXNlIChNSVBJX0RT SV9HRU5FUklDX0xPTkdfV1JJVEUpIDspDQo+Pg0KPj4+IE9uIDAxLzA2LzIwMTggMDE6MzggQU0s IEJyaWFuIE5vcnJpcyB3cm90ZToNCj4+Pj4gVGhpcyB0YWtlcyBjYXJlIG9mIDIgVE9ET3MgaW4g dGhpcyBkcml2ZXIsIGJ5IHVzaW5nIHRoZSBjb21tb24gRFNJDQo+Pj4+IHBhY2tldC1tYXJzaGFs bGluZyBjb2RlIGluc3RlYWQgb2Ygb3VyIGN1c3RvbSBzaG9ydC9sb25nIHdyaXRlIGNvZGUuDQo+ Pj4+IFRoaXMgYm90aCBzYXZlcyB1cyBzb21lIGR1cGxpY2F0ZWQgY29kZSBhbmQgZ2V0cyB1cyBm cmVlIHN1cHBvcnQgZm9yDQo+Pj4+IGNvbW1hbmQgdHlwZXMgdGhhdCB3ZXJlbid0IGFscmVhZHkg cGFydCBvZiBvdXIgc3dpdGNoIGJsb2NrIChlLmcuLA0KPj4+PiBNSVBJX0RTSV9HRU5FUklDX0xP TkdfV1JJVEUpLg0KPj4+Pg0KPj4+PiBUaGUgY29kZSBsb2dpYyBzdGF5cyBtb3N0bHkgaW50YWN0 LCBleGNlcHQgdGhhdCBpdCBiZWNvbWVzIHVubmVjZXNzYXJ5DQo+Pj4+IHRvIHNwbGl0IHRoZSBz aG9ydC9sb25nIHdyaXRlIGZ1bmN0aW9ucywgYW5kIHdlIGhhdmUgdG8gY29weSBkYXRhIGEgYml0 DQo+Pj4+IG1vcmUuDQo+Pj4+DQo+Pj4+IEFsb25nIHRoZSB3YXksIEkgbm90aWNlZCB0aGF0IGxv b3AgYm91bmRzIHdlcmUgYSBsaXR0bGUgb2RkOg0KPj4+Pg0KPj4+PiDCoMKgwqDCoHdoaWxlIChE SVZfUk9VTkRfVVAobGVuLCBwbGRfZGF0YV9ieXRlcykpDQo+Pj4+DQo+Pj4+IFRoaXMgcmVhbGx5 IHdhcyBqdXN0IHN1cHBvc2VkIHRvIGJlICdsZW4gIT0gMCcsIHNvIEkgbWFkZSB0aGF0IG1vcmUN Cj4+Pj4gY2xlYXIuDQo+Pj4+DQo+Pj4+IFRlc3RlZCBvbiBSSzMzOTkgd2l0aCBzb21lIHBlbmRp bmcgcmVmYWN0b3JpbmcgcGF0Y2hlcyBieSBOaWNrZXkgWWFuZywNCj4+Pj4gdG8gbWFrZSB0aGUg Um9ja2NoaXAgRFNJIGRyaXZlciB3cmFwIHRoaXMgY29tbW9uIGRyaXZlci4NCj4+Pj4NCj4+Pj4g U2lnbmVkLW9mZi1ieTogQnJpYW4gTm9ycmlzIDxicmlhbm5vcnJpc0BjaHJvbWl1bS5vcmc+DQo+ Pj4+IC0tLQ0KPj4+PiBDb3VsZCB1c2UgYW4gZXh0cmEgbG9vayBmcm9tIGZvbGtzLiBUaGlzIGxv b2tzIGxpa2UgdGhlIGNvcnJlY3QgdHJpdmlhbA0KPj4+PiB0cmFuc2Zvcm1hdGlvbiwgYnV0IEkn bSBub3QgdGhhdCBmYW1pbGlhciB3aXRoIERTSS4NCj4+Pj4NCj4+Pj4gwqDCoCBkcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgfCA3OCANCj4+Pj4gKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+IMKgwqAgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlv bnMoKyksIDYyIGRlbGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jIA0KPj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYw0KPj4+PiBpbmRleCBkOWNjYTRmZDY2 ZWMuLjJmZWQyMGU0NGRmZSAxMDA2NDQNCj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jDQo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYw0KPj4+PiBAQCAtMTM2LDEwICsxMzYsNiBAQA0KPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTl9TV18w UF9UWF9MUCkNCj4+Pj4gwqDCoCAjZGVmaW5lIERTSV9HRU5fSERSwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDZjDQo+Pj4+IC0vKiBUT0RPIFRoZXNlIDIgZGVmaW5lcyB3aWxsIGJlIHJld29ya2Vk IHRoYW5rcyB0byANCj4+Pj4gbWlwaV9kc2lfY3JlYXRlX3BhY2tldCgpICovDQo+Pj4+IC0jZGVm aW5lIEdFTl9IREFUQShkYXRhKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCgoZGF0YSkgJiAweGZm ZmYpIDw8IDgpDQo+Pj4+IC0jZGVmaW5lIEdFTl9IVFlQRSh0eXBlKcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKCgodHlwZSkgJiAweGZmKSA8PCAwKQ0KPj4+PiAtDQo+Pj4+IMKgwqAgI2RlZmluZSBE U0lfR0VOX1BMRF9EQVRBwqDCoMKgwqDCoMKgwqAgMHg3MA0KPj4+PiDCoMKgICNkZWZpbmUgRFNJ X0NNRF9QS1RfU1RBVFVTwqDCoMKgwqDCoMKgwqAgMHg3NA0KPj4+PiBAQCAtMzU5LDQ0ICszNTUs MTUgQEAgc3RhdGljIGludCANCj4+Pj4gZHdfbWlwaV9kc2lfZ2VuX3BrdF9oZHJfd3JpdGUoc3Ry dWN0IGR3X21pcGlfZHNpICpkc2ksIHUzMiBoZHJfdmFsKQ0KPj4+PiDCoMKgwqDCoMKgwqAgcmV0 dXJuIDA7DQo+Pj4+IMKgwqAgfQ0KPj4+PiAtc3RhdGljIGludCBkd19taXBpX2RzaV9kY3Nfc2hv cnRfd3JpdGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksDQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICpt c2cpDQo+Pj4+IC17DQo+Pj4+IC3CoMKgwqAgY29uc3QgdTggKnR4X2J1ZiA9IG1zZy0+dHhfYnVm Ow0KPj4+PiAtwqDCoMKgIHUxNiBkYXRhID0gMDsNCj4+Pj4gLcKgwqDCoCB1MzIgdmFsOw0KPj4+ PiAtDQo+Pj4+IC3CoMKgwqAgaWYgKG1zZy0+dHhfbGVuID4gMCkNCj4+Pj4gLcKgwqDCoMKgwqDC oMKgIGRhdGEgfD0gdHhfYnVmWzBdOw0KPj4+PiAtwqDCoMKgIGlmIChtc2ctPnR4X2xlbiA+IDEp DQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBkYXRhIHw9IHR4X2J1ZlsxXSA8PCA4Ow0KPj4+PiAtDQo+ Pj4+IC3CoMKgwqAgaWYgKG1zZy0+dHhfbGVuID4gMikgew0KPj4+PiAtwqDCoMKgwqDCoMKgwqAg ZGV2X2Vycihkc2ktPmRldiwgInRvbyBsb25nIHR4IGJ1ZiBsZW5ndGggJXp1IGZvciBzaG9ydCAN Cj4+Pj4gd3JpdGVcbiIsDQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zZy0+dHhfbGVu KTsNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPj4+PiAtwqDCoMKgIH0N Cj4+Pj4gLQ0KPj4+PiAtwqDCoMKgIHZhbCA9IEdFTl9IREFUQShkYXRhKSB8IEdFTl9IVFlQRSht c2ctPnR5cGUpOw0KPj4+PiAtwqDCoMKgIHJldHVybiBkd19taXBpX2RzaV9nZW5fcGt0X2hkcl93 cml0ZShkc2ksIHZhbCk7DQo+Pj4+IC19DQo+Pj4+IC0NCj4+Pj4gLXN0YXRpYyBpbnQgZHdfbWlw aV9kc2lfZGNzX2xvbmdfd3JpdGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksDQo+Pj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IG1pcGlf ZHNpX21zZyAqbXNnKQ0KPj4+PiArc3RhdGljIGludCBkd19taXBpX2RzaV9kY3Nfd3JpdGUoc3Ry dWN0IGR3X21pcGlfZHNpICpkc2ksDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfcGFja2V0ICpwYWNrZXQpDQo+Pj4NCj4+PiBCb3Ro IERDUyBhbmQgR2VuZXJpYyBkc2kgdHJhbnNmZXJzIGFyZSBtYW5hZ2VkIGJ5IGRybV9taXBpX2Rz aS5jDQo+Pj4gaGVscGVycy4gU28gbWF5YmUgZHdfbWlwaV9kc2lfZGNzX3dyaXRlKCkgc2hvdWxk IGJlIHJlbmFtZWQNCj4+PiBkd19taXBpX2RzaV93cml0ZSgpLi4uDQo+Pg0KPj4gQWgsIGdvb2Qg cG9pbnQuIEkgcmVhbGx5IG1lYW50IHRvIHJlbW92ZSB0aGUgX2RjcyBuYW1pbmcgdG9vLCBidXQg SQ0KPj4gZ3Vlc3MgSSBtaXNzZWQgaXQuIFdpbGwgZm9sbG93IHVwLg0KPj4NCj4+Pj4gwqDCoCB7 DQo+Pj4+IC3CoMKgwqAgY29uc3QgdTggKnR4X2J1ZiA9IG1zZy0+dHhfYnVmOw0KPj4+PiAtwqDC oMKgIGludCBsZW4gPSBtc2ctPnR4X2xlbiwgcGxkX2RhdGFfYnl0ZXMgPSBzaXplb2YodTMyKSwg cmV0Ow0KPj4+PiAtwqDCoMKgIHUzMiBoZHJfdmFsID0gR0VOX0hEQVRBKG1zZy0+dHhfbGVuKSB8 IEdFTl9IVFlQRShtc2ctPnR5cGUpOw0KPj4+PiArwqDCoMKgIGNvbnN0IHU4ICp0eF9idWYgPSBw YWNrZXQtPnBheWxvYWQ7DQo+Pj4+ICvCoMKgwqAgaW50IGxlbiA9IHBhY2tldC0+cGF5bG9hZF9s ZW5ndGgsIHBsZF9kYXRhX2J5dGVzID0gc2l6ZW9mKHUzMiksIA0KPj4+PiByZXQ7DQo+Pj4+IMKg wqDCoMKgwqDCoCB1MzIgcmVtYWluZGVyOw0KPj4+PiDCoMKgwqDCoMKgwqAgdTMyIHZhbDsNCj4+ Pj4gLcKgwqDCoCBpZiAobXNnLT50eF9sZW4gPCAzKSB7DQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBk ZXZfZXJyKGRzaS0+ZGV2LCAid3JvbmcgdHggYnVmIGxlbmd0aCAlenUgZm9yIGxvbmcgd3JpdGVc biIsDQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zZy0+dHhfbGVuKTsNCj4+Pj4gLcKg wqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPj4+PiAtwqDCoMKgIH0NCj4+Pj4gLQ0KPj4+ PiAtwqDCoMKgIHdoaWxlIChESVZfUk9VTkRfVVAobGVuLCBwbGRfZGF0YV9ieXRlcykpIHsNCj4+ Pj4gK8KgwqDCoCB3aGlsZSAobGVuKSB7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChs ZW4gPCBwbGRfZGF0YV9ieXRlcykgew0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJlbWFpbmRlciA9IDA7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5 KCZyZW1haW5kZXIsIHR4X2J1ZiwgbGVuKTsNCj4+Pj4gQEAgLTQxOSw0MCArMzg2LDI3IEBAIHN0 YXRpYyBpbnQgZHdfbWlwaV9kc2lfZGNzX2xvbmdfd3JpdGUoc3RydWN0IA0KPj4+PiBkd19taXBp X2RzaSAqZHNpLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+IMKgwqDCoMKgwqDC oCB9DQo+Pj4+IC3CoMKgwqAgcmV0dXJuIGR3X21pcGlfZHNpX2dlbl9wa3RfaGRyX3dyaXRlKGRz aSwgaGRyX3ZhbCk7DQo+Pj4+ICvCoMKgwqAgcmVtYWluZGVyID0gMDsNCj4+Pj4gK8KgwqDCoCBt ZW1jcHkoJnJlbWFpbmRlciwgcGFja2V0LT5oZWFkZXIsIHNpemVvZihwYWNrZXQtPmhlYWRlcikp Ow0KPj4NCj4+IEJ5IHRoZSB3YXk6IEkgZG9uJ3QgdGhpbmsgaXQncyBhbiBpc3N1ZSB0aGF0IHNo b3VsZCBibG9jayB0aGlzIHBhdGNoLA0KPj4gc2luY2UgaWYgSSdtIHJpZ2h0LCB0aGlzIGZ1bmN0 aW9uIGFscmVhZHkgaXMgImJyb2tlbiIsIGJ1dCBpc24ndCB0aGlzDQo+PiBhY3R1YWxseSBhIGJh ZCB3YXkgdG8gaGFuZGxlIGJ5dGUtdG8td29yZCBtYXJzaGFsbGluZz8gUGFydGljdWxhcmx5LA0K Pj4gd2UncmUgY29weWluZyBieXRlcyBpbnRvIGEgd29yZCBpbiBMRSBvcmRlcmluZywgYnV0IHRo ZW4gd2UgbGF0ZXIgd3JpdGUNCj4+IHRoZW0gdG8gSU8gcmVnaXN0ZXJzIHdpdGggd3JpdGVsKCkg KHdoaWNoIGRvZXMgZW5kaWFuIHN3YXBwaW5nKS4NCj4+DQo+PiBTbyBJIHRoaW5rIHdlIGhhdmUg YW4gZW5kaWFubmVzcyBwcm9ibGVtIG9uIEJFIHN5c3RlbXMuDQo+Pg0KPj4gT25lIHNvbHV0aW9u IHdvdWxkIGJlIHRvIHdyaXRlIHRoZXNlIHRvIElPIHJlZ2lzdGVycyB3aXRoIGEgbm9uLXN3YXBw ZWQNCj4+IHdyaXRlbCgpIChlLmcuLCBfX3Jhd193cml0ZWwoKT8gYnV0IHRoYXQncyBub3QgdmVy eSBuaWNlLi4uKS4gQW5vdGhlcg0KPj4gd291bGQgYmUgdG8gYXZvaWQgbWVtY3B5LCBhbmQganVz dCByZWFkIHRoaXMgb3V0IGEgd29yZCBhdCBhIHRpbWUgLS0NCj4+IHRoYXQgd29ya3MgZmluZSBm b3IgdGhlIGFsaWduZWQgcGllY2VzLCBidXQgbm90IHNvIHdlbGwgZm9yIGFueQ0KPj4gbm9uLWFs aWduZWQgYml0cyAoJ2lmIChsZW4gPCBwbGRfZGF0YV9ieXRlcyknIGFib3ZlKSBJIHRoaW5rPw0K Pj4NCj4+IFdEWVQ/DQo+Pg0KPiANCj4gVG8gYmUgaG9uZXN0LCBJIGRvIG5vdCByZWFsbHkgbGlr ZSB0aGUgbWVtY3B5IGhlcmUgdG9vIGFuZCBJIGFncmVlIHdpdGggDQo+IHlvdSByZWdhcmRpbmcg dGhlIEJFIGlzc3VlLg0KPiANCj4gTXkgZmlyc3QgInN0bSIgZHJpdmVyIChpZS4gYmVmb3JlIHVz aW5nIHRoaXMgImZyZWVzY2FsZS9yb2NrY2hpcCIgDQo+IGR3LW1pcGktZHNpIGRyaXZlciB3aXRo IHRoZSBtZW1jcHkpIHVzZWQgdGhlICJleGFjdCIgc2FtZSBjb2RlIGFzIHRoZSANCj4gVGVncmEg ZHNpIHRlZ3JhX2RzaV93cml0ZXNsKCkgZnVuY3Rpb24gd2l0aCB0aGUgMiBsb29wcy4NCj4gDQo+ IGh0dHBzOi8vZWxpeGlyLmZyZWUtZWxlY3Ryb25zLmNvbS9saW51eC92NC4xNC9zb3VyY2UvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2RzaS5jI0wxMjQ4IA0KPiANCj4gDQo+IElNSE8sIGl0IGlzIGJl dHRlciB0aGFuIG1lbWNweS4uLg0KPiBJIGFkZGVkIHRoZXNlIDMgImRvY3VtZW50YXRpb24iIGxp bmVzLCBtYXliZSB3ZSBtYXkgcmV1c2UgdGhlbSBvciANCj4gc29tZXRoaW5nIHNpbWlsYXIuLi4N Cj4gDQo+IC8qDQo+ICDCoCogV3JpdGUgOC1iaXQgcGF5bG9hZCBkYXRhIGludG8gdGhlIDMyLWJp dCBwYXlsb2FkIGRhdGEgcmVnaXN0ZXIuDQo+ICDCoCogZXg6IHBheWxvYWQgZGF0YSAiMHgwMSwg MHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiIgd2lsbCBiZWNvbWUNCj4gIMKgKiAiMHgwNDAz MDIwMSAweDAwMDAwNjA1IiAzMi1iaXQgd3JpdGVzDQo+ICDCoCovDQo+IA0KPiBOb3Qgc3VyZSBp dCBoZWxwcyB0byBmaXggdGhlIEJFIGlzc3VlIGJ1dCB3ZSBtYXkgYWRkIGEgVE9ETyBzdGF0aW5n IHRoYXQgDQo+ICJ0aGlzIGxvb3AgaGFzIG5vdCBiZWVuIHRlc3RlZCBvbiBCRSIuLi4NCj4gDQo+ IFdoYXQgaXMgeW91ciBvcGluaW9uPw0KDQoNCkFzIHlvdXIgcGF0Y2ggaGFzIGJlZW4gbWVyZ2Vk LCBJIGhhdmUgZmV3IHNob3J0IHF1ZXN0aW9ucyBhbmQgZm9yIGVhY2ggDQpyZWxhdGVkIG5ldyBw YXRjaCwgSSB3b3VsZCBsaWtlIHRvIGtub3cgaWYgeW91IHByZWZlciB0aGF0IEkgaW1wbGVtZW50 IA0KaXQgb3IgaWYgeW91IHByZWZlciB0byBkbyBpdCBieSB5b3Vyc2VsZiwgaXQncyByZWFsbHkg bGlrZSB5b3Ugd2FudCwgb24gDQpteSBzaWRlLCBubyBwcm9ibGVtIHRvIG1ha2UgdGhlbSBhbGws IHNvbWUgb3Igbm9uZSwgSSBkb24ndCB3YW50IHVzIHRvIA0KaW1wbGVtZW50IHRoZXNlIGluIHBh cmFsbGVsIDotKQ0KDQoqIERvIHlvdSBoYXZlIGFueSBvcGluaW9uIHJlZ2FyZGluZyBUZWdyYS1s aWtlIGxvb3BzIHZzIHRoZSBtZW1jcHk/IChzZWUgDQpteSBjb21tZW50IGFib3ZlKSBJZiB5b3Ug dGhpbmsgdGhlIFRlZ3JhLWxpa2UgbG9vcHMgaXMgYSBiZXR0ZXIgYXBwcm9hY2ggDQp0aGFuIG1l bWNweSwgdGhlcmUgaXMgYSBzbWFsbCBwYXRjaCB0byB3cml0ZS4NCg0KKiBSZXR1cm5lZCB2YWx1 ZSB3aXRoIG51bWJlciBvZiBieXRlcyByZWNlaXZlZC90cmFuc2ZlcnJlZDogdGhlcmUgaXMgYSAN CnNtYWxsIHBhdGNoIHRvIHdyaXRlDQoNCiogUmVnYXJkaW5nIHJlYWQgb3BlcmF0aW9uczogSSBw cm9wb3NlIHRvIGFkZCBhIFRPRE8gKyBEUk1fV0FSTiBpbiBjYXNlIA0Kc29tZW9uZSB3YW50IHRv IHVzZSB0aGUgQVBJIGZvciByZWFkIG9wZXJhdGlvbnMuIE5vdGUgdGhhdCBJIHBsYW4gdG8gDQpp bXBsZW1lbnQgdGhlIHJlYWQgZmVhdHVyZSBidXQgSSBkbyBub3Qga25vdyB5ZXQgd2hlbiBhbmQg bWF5YmUgUm9ja2NoaXAgDQpwZW9wbGUgYWxyZWFkeSBoYXZlIHNvbWV0aGluZyB+cmVhZHk/DQoN Ck1hbnkgdGhhbmtzLA0KUGhpbGlwcGUgOi0pDQoNCj4gDQo+IE1hbnkgdGhhbmtzDQo+IFBoaWxp cHBlIDotKQ0KPiANCj4gDQo+Pj4+ICvCoMKgwqAgcmV0dXJuIGR3X21pcGlfZHNpX2dlbl9wa3Rf aGRyX3dyaXRlKGRzaSwgcmVtYWluZGVyKTsNCj4+Pj4gwqDCoCB9DQo+Pj4+IMKgwqAgc3RhdGlj IHNzaXplX3QgZHdfbWlwaV9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAq aG9zdCwNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpDQo+Pj4+IMKgwqAgew0KPj4+PiDCoMKg wqDCoMKgwqAgc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsNCj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgbWlwaV9kc2lfcGFja2V0IHBhY2tldDsNCj4+Pj4gwqDCoMKgwqDC oMKgIGludCByZXQ7DQo+Pj4+IC3CoMKgwqAgLyoNCj4+Pj4gLcKgwqDCoMKgICogVE9ETyBkdyBk cnYgaW1wcm92ZW1lbnRzDQo+Pj4+IC3CoMKgwqDCoCAqIHVzZSBtaXBpX2RzaV9jcmVhdGVfcGFj a2V0KCkgaW5zdGVhZCBvZiBhbGwgZm9sbG93aW5nDQo+Pj4+IC3CoMKgwqDCoCAqIGZ1bmN0aW9u cyBhbmQgY29kZSAobm8gc3dpdGNoIGNhc2VzLCBubw0KPj4+PiAtwqDCoMKgwqAgKiBkd19taXBp X2RzaV9kY3Nfc2hvcnRfd3JpdGUoKSwgb25seSB0aGUgbG9vcCBpbiBsb25nX3dyaXRlLi4uKQ0K Pj4+PiAtwqDCoMKgwqAgKiBhbmQgdXNlIHBhY2tldC5oZWFkZXIuLi4NCj4+Pj4gLcKgwqDCoMKg ICovDQo+Pj4+IC3CoMKgwqAgZHdfbWlwaV9tZXNzYWdlX2NvbmZpZyhkc2ksIG1zZyk7DQo+Pj4+ IC0NCj4+Pj4gLcKgwqDCoCBzd2l0Y2ggKG1zZy0+dHlwZSkgew0KPj4+PiAtwqDCoMKgIGNhc2Ug TUlQSV9EU0lfRENTX1NIT1JUX1dSSVRFOg0KPj4+PiAtwqDCoMKgIGNhc2UgTUlQSV9EU0lfRENT X1NIT1JUX1dSSVRFX1BBUkFNOg0KPj4+PiAtwqDCoMKgIGNhc2UgTUlQSV9EU0lfU0VUX01BWElN VU1fUkVUVVJOX1BBQ0tFVF9TSVpFOg0KPj4+PiAtwqDCoMKgwqDCoMKgwqAgcmV0ID0gZHdfbWlw aV9kc2lfZGNzX3Nob3J0X3dyaXRlKGRzaSwgbXNnKTsNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGJy ZWFrOw0KPj4+PiAtwqDCoMKgIGNhc2UgTUlQSV9EU0lfRENTX0xPTkdfV1JJVEU6DQo+Pj4+IC3C oMKgwqDCoMKgwqDCoCByZXQgPSBkd19taXBpX2RzaV9kY3NfbG9uZ193cml0ZShkc2ksIG1zZyk7 DQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pj4gLcKgwqDCoCBkZWZhdWx0Og0KPj4+ PiAtwqDCoMKgwqDCoMKgwqAgZGV2X2Vycihkc2ktPmRldiwgInVuc3VwcG9ydGVkIG1lc3NhZ2Ug dHlwZSAweCUwMnhcbiIsDQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zZy0+dHlwZSk7 DQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOw0KPj4+PiArwqDCoMKgIHJldCA9 IG1pcGlfZHNpX2NyZWF0ZV9wYWNrZXQoJnBhY2tldCwgbXNnKTsNCj4+Pj4gK8KgwqDCoCBpZiAo cmV0KSB7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRv IGNyZWF0ZSBwYWNrZXQ6ICVkXG4iLCByZXQpOw0KPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHJldDsNCj4+Pj4gwqDCoMKgwqDCoMKgIH0NCj4+Pj4gLcKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+ PiArwqDCoMKgIGR3X21pcGlfbWVzc2FnZV9jb25maWcoZHNpLCBtc2cpOw0KPj4+PiArDQo+Pj4+ ICvCoMKgwqAgcmV0dXJuIGR3X21pcGlfZHNpX2Rjc193cml0ZShkc2ksICZwYWNrZXQpOw0KPj4+ PiDCoMKgIH0NCj4+Pj4gwqDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3Bz IGR3X21pcGlfZHNpX2hvc3Rfb3BzID0gew0KPj4+Pg0KPj4+DQo+Pj4gSSBwZXJmb3JtZWQgc29t ZSB0ZXN0cyB0cmFjaW5nIGFsbCBEU0lfR0VOX0hEUiAmIERTSV9HRU5fUExEX0RBVEEgcmVnDQo+ Pj4gd3JpdGVzIHdpdGggcGFuZWwvcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLmMgKHVzaW5nIGxv bmcgZGNzIGNvbW1hbmRzKQ0KPj4+IGJlZm9yZSBhbmQgYWZ0ZXIgeW91ciBwYXRjaCBhbmQgdGhp cyBpcyAiMTAwJSBwZXJmZWN0IiENCj4+Pg0KPj4+IFNvLCBhcGFydCB0aGUgdW4taW1wb3J0YW50 ICJkY3MiIGluIGR3X21pcGlfZHNpX2Rjc193cml0ZSgpIGZ1bmN0aW9uIA0KPj4+IG5hbWU6DQo+ Pj4NCj4+PiBSZXZpZXdlZC1ieTogUGhpbGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNv bT4NCj4+PiBUZXN0ZWQtYnk6IFBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+ DQo+Pj4NCj4+PiBUaGlzIGNsZWFuLXVwIHdpbGwgaGVscCBhIGxvdCB0byBhZGQgdGhlIGRzaSBy ZWFkIGZlYXR1cmUgaW4gdGhlIGZ1dHVyZS4NCj4+Pg0KPj4+IFZlcnkgZ29vZCBwYXRjaCBCcmlh biBhbmQgYmlnICJ0aGFuayB5b3UiICENCj4+DQo+PiBUaGFua3MgZm9yIHRoZSByZXZpZXcgYW5k IHRlc3QhIEknbGwgbGlrZWx5IHNlbmQgYSB2MiB3aXRoIG9ubHkgdGhlDQo+PiBuYW1pbmcgY2hh bmdlICsgeW91ciB0YWdzLCBhbmQgSSdsbCBzZWUgYWJvdXQgd2hhdCBkbyBhYm91dCB0aGUNCj4+ IGVuZGlhbm5lc3MgaXNzdWVzIEkgbm90aWNlZCBhcyBhIGZvbGxvdy11cC4NCj4+DQo+PiBCcmlh bg0KPj4=