From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 35062C7EE2A for ; Mon, 5 Jun 2023 09:49:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+iUjt2HYmwUUZ6SIGBytGlPJle7HbaejzY+QJ9iIPnQ=; b=KJo2jH6lNECm5M UbnNHhjfBYwsdklC1Ox/YMPEfgxx8aNPtrnNJasrIXEYfbtGnUS8jnCbV9+orjrznrt4Xeg59gr9l mS4s1LEp5vPlOgyfHnDAKWiR6cA63qi/g4q+WASS1W+KZESVxQ3AiEjTDN6p3fMeXesaVsH/906EV wyxTfpL0UW1G3REkWceHOO9QEF41/n6/5mwQaHUm98/XUYzTatxi+crNIehTSvvwLceYgrQn1fp1C ZKvfAE1I1QxWEpfzQGRC3YubVUqgykcIBNEwanNoBW3vpqGSWNp4tAHRi9fgcar5d3a1xh6fMvxLo FHX3VcueFqvFgjMoAlYA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q66pi-00Eu4S-0g; Mon, 05 Jun 2023 09:49:02 +0000 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q66pd-00Eu1j-26; Mon, 05 Jun 2023 09:49:00 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685958533; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ohIP4UENYaF4STUtOvq2eetQpzHXBV2udweqWvPJ+y0=; b=lL8yRGXWiBjV9d9tKXjSd9EI1oR1rW3+VJIAeF3PVVph9jcn2a7EVfs5pFmWARqTdJbor8 RpB5iLSpx+s1WXb93X+vpV7d6PuF+xlxw3Rw3LMY4R8Oz5cM4XzowyteUDrjicHAMXnU4w 4p3Qcdg8oc+tJZa6q8c4yZkvEDUxr0FRZhI6l/qzXRE+j5sJALXle4a6GClNZVaU8BXAVS 3hXnHRRgAalwEZQTr5nW3gJH8vwgT/voar7MPbQcWsHy+TTb24F98niqbDBi+AeYj7JAtB xcx1A6+2DJ9KATSNXUCn3zU9MgG5c8mlzBJ0Gq2oGvjBmqVcwls93PiedkyHmA== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id C307960018; Mon, 5 Jun 2023 09:48:51 +0000 (UTC) Date: Mon, 5 Jun 2023 11:48:50 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230605114850.77cf9197@xps-13> In-Reply-To: <8242530c-7b6b-29ce-581b-c5644a965b60@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> <20230601103111.6840acc0@xps-13> <8242530c-7b6b-29ce-581b-c5644a965b60@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230605_024858_149251_B044D799 X-CRM114-Status: GOOD ( 62.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCmF2a3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBGcmksIDIgSnVu IDIwMjMgMTE6NTM6NDcgKzAzMDA6Cgo+IEhlbGxvIE1pcXVlbCwgdGhhbmtzIGZvciByZXZpZXch Cj4gCj4gT24gMDEuMDYuMjAyMyAxMTozMSwgTWlxdWVsIFJheW5hbCB3cm90ZToKPiA+IEhpIEFy c2VuaXksCj4gPiAKPiA+IEFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUaHUsIDEg SnVuIDIwMjMgMDk6MTg6NDYgKzAzMDA6Cj4gPiAgIAo+ID4+IFRoaXMgbW92ZXMgZnJlZSBieXRl cyBvZiBPT0IgdG8gbm9uLXByb3RlY3RlZCBFQ0MgYXJlYS4gSXQgaXMgbmVlZGVkIHRvICAKPiA+ IAo+ID4gQXMgd2UgZGlzY3Vzc2VkLCBJIGV4cGVjdCB0aGlzIGNvbW1pdCB0byBqdXN0IGNoYW5n ZSB0aGUgT09CIGxheW91dCB0bwo+ID4gZXhwb3NlIHVucHJvdGVjdGVkIE9PQiBieXRlcyB0byB0 aGUgdXNlciwgdGhhdCBpcyB0aGUgb25seSBjaGFuZ2UgdGhpcwo+ID4gY29tbWl0IHNob3VsZCBj YXJyeS4gSWYgdGhhdCBkb2VzIG5vdCB3b3JrLCB5b3Ugc2hvdWxkIGFkZCBhCj4gPiBwcmVwYXJh dGlvbiBwYXRjaC4gIAo+IAo+IE9rLCBidXQgSSB0aG91Z2h0LCBpZiBpIGNoYW5nZSBvbmx5IE9P QiBsYXlvdXQsIGUuZy4gdXBkYXRlICdmcmVlJyBjYWxsYmFjayBvZgo+IG10ZF9vb2JsYXlvdXRf b3BzLCBJIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgY29kZSB3aGljaCBwZXJmb3JtcyByZWFkL3dy aXRlCj4gYWNjb3JkaW5nIG5ldyBsYXlvdXQgKGl0IG11c3QgYmUgZG9uZSBpbiBhIHNpbmdsZSBw YXRjaCk/CgpObywgdGhpcyBpcyBvcnRob2dvbmFsLgoKVGhlIGRyaXZlciBtdXN0IHJlYWQgdGhl IHRoZSB3aG9sZSBPT0IgYXJlYSAoYW5kIHBlcmhhcHMgcmVvcmRlciB0aGUKZGF0YSksIGJ1dCB5 b3Ugc2hvdWxkIG5vdCBtYWtlIGFueSBkZWNpc2lvbiByZWdhcmRpbmcgd2hhdCBieXRlcyB5b3UK d2FudCBvciBub3Qgd2FudCB0byBleHBvc2UuCgpUaGVuLCB0aGUgdXNlciAobm8gbWF0dGVyIHdo YXQgInVzZXIiIGlzIGhlcmUpIHdpbGwgZGVjaWRlIGhvdyB0byBkZWFsCndpdGggdGhlIGRhdGEu Cgo+IE1haW4gdGhpbmcgaXM6Cj4gCj4gSSBndWVzcyB0aGF0IGdlbmVyYWwgY29uZnVzZSB3aXRo IHRoaXMgcGF0Y2ggaXMgdGhhdCBZb3UgY29uc2lkZXIKPiB0aGF0IHdlIGNoYW5nZSBvbmx5IE9P QiBsYXlvdXQgYnkgbW92aW5nIHVzZXIgYnl0ZXMgb3V0IG9mIEVDQyBhcmVhLCBidXQgYXQgdGhl IHNhbWUKPiB0aW1lIEkgYWxzbyBpbmNyZWFzZWQgc2l6ZSBvZiBPT0IgZnJvbSA0IGJ5dGVzIChl LmcuIDIgeCAyIGJ5dGVzIGNsZWFuIG1hcmtlcnMpCj4gdG8gMzIgYnl0ZXMgKGUuZy4gdGFpbCBv ZiBwYWdlIGFmdGVyIGRhdGEgYW5kIEVDQyBjb2RlcyksIHNvIGlmIHRoaXMKPiBhc3N1bXB0aW9u IGlzIGNvcnJlY3QsIGluIHRoZSBuZXh0IHZlcnNpb24gSSB3b24ndCBjaGFuZ2Ugc2l6ZSBvZiB1 c2VyIGFyZWEgaW4KPiBPT0IsIHRodXMgdGhpcyBwYXRjaCB3aWxsIGJlIHJlZHVjZWQgYXMgc29t ZSBjb21tZW50cyBmcm9tIHRoaXMgcmV2aWV3LgoKRXhwb3Npbmcgb25seSA0IGJ5dGVzIHdhcyBh IG1pc3Rha2UgaW4gdGhlIGZpcnN0IHBsYWNlLCBwbGVhc2UgZml4IHRoaXMKaW4gYSBkZWRpY2F0 ZWQgcGF0Y2guCgo+ID4+IG1ha2UgSkZGUzIgd29ya3MgY29ycmVjdGx5IHdpdGggdGhpcyBOQU5E IGNvbnRyb2xsZXIuIFByb2JsZW0gZmlyZXMgd2hlbgo+ID4+IEpGRlMyIGRyaXZlciB3cml0ZXMg Y2xlYW5tYXJrZXIgdG8gc29tZSBwYWdlIGFuZCBsYXRlciBpdCB0cmllcyB0byB3cml0ZQo+ID4+ IHRvIHRoaXMgcGFnZSAtIHdyaXRlIHdpbGwgYmUgZG9uZSBzdWNjZXNzZnVsbHksIGJ1dCBhZnRl ciB0aGF0IHN1Y2ggcGFnZQo+ID4+IGJlY29tZXMgdW5yZWFkYWJsZSBkdWUgdG8gaW52YWxpZCBF Q0MgY29kZXMuIFRoaXMgaGFwcGVucyBiZWNhdXNlIHNlY29uZAo+ID4+IHdyaXRlIG5lZWRzIHRv IHVwZGF0ZSBFQ0MgY29kZXMsIGJ1dCBpdCBpcyBpbXBvc3NpYmxlIHRvIGRvIGl0IGNvcnJlY3Rs eQo+ID4+IHdpdGhvdXQgYmxvY2sgZXJhc2UuIFNvIGlkZWEgb2YgdGhpcyBwYXRjaCBpcyB0byB1 c2UgdGhlIHVucHJvdGVjdGVkIE9PQgo+ID4+IGFyZWEgdG8gc3RvcmUgdGhlIGNsZWFubWFya2Vy cywgc28gdGhhdCB0aGV5IGNhbiBiZSB3cml0dGVuIGJ5IHRoZQo+ID4+IGZpbGVzeXN0ZW0gd2l0 aG91dCBjYXJpbmcgbXVjaCBhYm91dCB0aGUgcGFnZSBiZWluZyBlbXB0eSBvciBub3Q6IHRoZQo+ ID4+IEVDQyBjb2RlcyB3aWxsIG5vdCBiZSB3cml0dGVuIGFueXdheS4KPiA+Pgo+ID4+IEpGRlMy IGlzIG9ubHkgdXNlZnVsIG9uIHRpbnkgTkFORCBkZXZpY2VzLCB3aGVyZSBVQkkgZG9lcyBub3Qg Zml0LCB3aGljaAo+ID4+IGFyZSB1c3VhbGx5IHRydWUgU0xDIGZsYXNoZXMsIHdpdGggdGhlIGNh cGFiaWxpdHkgb2Ygd3JpdGluZyBhIHBhZ2Ugd2l0aAo+ID4+IGVtcHR5ICgweEZGKSBkYXRhLCBh bmQgc3RpbGwgYmUgYWJsZSB0byB3cml0ZSBhY3R1YWwgZGF0YSB0byBpdCBsYXRlciBpbgo+ID4+ IGEgc2Vjb25kIHdyaXRlLgo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92 IDxBVktyYXNub3ZAc2JlcmRldmljZXMucnU+Cj4gPj4gLS0tCj4gPj4gIENoYW5nZWxvZyB2NC0+ djU6Cj4gPj4gICogRHJvcCBjb3NtZXRpYyBjaGFuZ2VzIGZyb20gdGhpcyBwYXRjaC4KPiA+PiAg KiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNlciBieXRlcyBwcm92aWRlZCBieSBody4g RXZlbiB0aGVzZQo+ID4+ICAgIGJ5dGVzIGFyZSBvdXQgb2YgdXNlciBhcmVhIG9mIE9PQiwgaXRz IHZhbHVlcyBhcmUgc3RpbGwgcmVhZCBmcm9tCj4gPj4gICAgdGhlIHByb3ZpZGVkIE9PQiBidWZm ZXIgYW5kIHdyaXR0ZW4gYnkgaGFyZHdhcmUuIFNhbWUgYmVoYXZpb3VyIGlzCj4gPj4gICAgcHJl c2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0ZXMgYXJlIHJlYWQgZnJvbSBETUEgYnVm ZmVyIGFuZAo+ID4+ICAgIHBsYWNlZCB0byBPT0IgYnVmZmVyLgo+ID4+ICAqIE9PQiByZWFkIGFu ZCB3cml0ZSBiZWNvbWUgbW9yZSBsaWdodHdlaWdodCBiZWNhdXNlIEkgcmVtb3ZlZCBoZWF2eQo+ ID4+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBjb21tYW5kIGZyb20gaXQgKGJvdGggY29tbWFuZHMg YXJlIHN0aWxsIHNlbnQKPiA+PiAgICB3aGVuIE9PQiBhY2Nlc3MgaXMgcGVyZm9ybWVkIHVzaW5n IE9PQiBjYWxsYmFja3MpLiBJbiBjYXNlIG9mIHBhZ2UKPiA+PiAgICByZWFkL3dyaXRlIE9PQiBk YXRhIGlzIGhhbmRsZWQgaW4gdGhlIGludGVybmFsIFNSQU0gb2YgdGhlIGNvbnRyb2xsZXIuCj4g Pj4gICogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlZC4KPiA+PiAgKiBUZW1wb3JhcnkgYnVmZmVyIGZv ciBPT0IgcmVhZC93cml0ZSBpcyByZW1vdmVkLiBTZWVtcyBldmVyeXRoaW5nCj4gPj4gICAgd29y a3MgY29ycmVjdGx5IHdpdGhvdXQgaXQuCj4gPj4KPiA+PiAgZHJpdmVycy9tdGQvbmFuZC9yYXcv bWVzb25fbmFuZC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ID4+ICAx IGZpbGUgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+ID4+Cj4g Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyBiL2RyaXZl cnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+ID4+IGluZGV4IDgyYTYyOTAyNWFkYy4uZTQy YzI4YmUwMmYzIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25h bmQuYwo+ID4+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+ID4+IEBA IC0zNTgsOCArMzU4LDExIEBAIHN0YXRpYyB1OCAqbWVzb25fbmZjX2RhdGFfcHRyKHN0cnVjdCBu YW5kX2NoaXAgKm5hbmQsIGludCBpKQo+ID4+ICBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfZ2V0X2Rh dGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gPj4gIAkJCQkgICB1OCAqYnVmLCB1OCAq b29iYnVmKQo+ID4+ICB7Cj4gPj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25f Y2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gPj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9 IG5hbmRfdG9fbXRkKG5hbmQpOwo+ID4+ICAJaW50IGksIG9vYl9sZW4gPSAwOwo+ID4+ICAJdTgg KmRzcmMsICpvc3JjOwo+ID4+ICsJdTggKm9vYnRhaWw7Cj4gPj4gIAo+ID4+ICAJb29iX2xlbiA9 IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gPj4gIAlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0 ZXBzOyBpKyspIHsKPiA+PiBAQCAtMzY4LDE3ICszNzEsMjcgQEAgc3RhdGljIHZvaWQgbWVzb25f bmZjX2dldF9kYXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ID4+ICAJCQltZW1jcHko YnVmLCBkc3JjLCBuYW5kLT5lY2Muc2l6ZSk7Cj4gPj4gIAkJCWJ1ZiArPSBuYW5kLT5lY2Muc2l6 ZTsKPiA+PiAgCQl9Cj4gPj4gKwo+ID4+ICAJCW9zcmMgPSBtZXNvbl9uZmNfb29iX3B0cihuYW5k LCBpKTsKPiA+PiAgCQltZW1jcHkob29iYnVmLCBvc3JjLCBvb2JfbGVuKTsKPiA+PiAgCQlvb2Ji dWYgKz0gb29iX2xlbjsKPiA+PiAgCX0KPiA+PiArCj4gPj4gKwlvb2J0YWlsID0gbWVzb25fY2hp cC0+ZGF0YV9idWYgKyBuYW5kLT5lY2Muc3RlcHMgKgo+ID4+ICsJCSAgKG5hbmQtPmVjYy5zaXpl ICsgb29iX2xlbik7Cj4gPj4gKwo+ID4+ICsJLyogJ29vYmJ1ZicgcG9pbnRzIHRvIHRoZSBzdGFy dCBvZiB1c2VyIGFyZWEuICovCj4gPj4gKwltZW1jcHkob29iYnVmLCBvb2J0YWlsLCBtdGQtPm9v YnNpemUgLSBuYW5kLT5lY2Muc3RlcHMgKiBvb2JfbGVuKTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAg c3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF9kYXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5k LAo+ID4+ICAJCQkJICAgY29uc3QgdTggKmJ1ZiwgdTggKm9vYmJ1ZikKPiA+PiAgewo+ID4+ICsJ c3RydWN0IG1lc29uX25mY19uYW5kX2NoaXAgKm1lc29uX2NoaXAgPSB0b19tZXNvbl9uYW5kKG5h bmQpOwo+ID4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChuYW5kKTsKPiA+ PiAgCWludCBpLCBvb2JfbGVuID0gMDsKPiA+PiAgCXU4ICpkc3JjLCAqb3NyYzsKPiA+PiArCXU4 ICpvb2J0YWlsOwo+ID4+ICAKPiA+PiAgCW9vYl9sZW4gPSBuYW5kLT5lY2MuYnl0ZXMgKyAyOwo+ ID4+ICAJZm9yIChpID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrKSB7Cj4gPj4gQEAgLTM5 MSw2ICs0MDQsMTIgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF9kYXRhX29vYihzdHJ1Y3Qg bmFuZF9jaGlwICpuYW5kLAo+ID4+ICAJCW1lbWNweShvc3JjLCBvb2JidWYsIG9vYl9sZW4pOwo+ ID4+ICAJCW9vYmJ1ZiArPSBvb2JfbGVuOwo+ID4+ICAJfQo+ID4+ICsKPiA+PiArCW9vYnRhaWwg PSBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIG5hbmQtPmVjYy5zdGVwcyAqCj4gPj4gKwkJICAobmFu ZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsgIAo+ID4gCj4gPiBUaGlzIGlzIGFsd2F5cyB0YXJnZXRp bmcgdGhlIHNhbWUgYXJlYSwgc28gaXQgbG9va3Mgc3RyYW5nZSB0byBtZS4KPiA+ICAgCj4gPj4g Kwo+ID4+ICsJLyogJ29vYmJ1ZicgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB1c2VyIGFyZWEuICov Cj4gPj4gKwltZW1jcHkob29idGFpbCwgb29iYnVmLCBtdGQtPm9vYnNpemUgLSBuYW5kLT5lY2Mu c3RlcHMgKiBvb2JfbGVuKTsgIAo+ID4gCj4gPiBUQkggSSBkb24ndCBnZXQgd2hhdCB5b3UgZG8g aGVyZS4gIAo+IAo+IFRoaXMgY29kZSB3b3JrcyBpbiByYXcgbW9kZSBhbmQgcGxhY2VzIE9PQiBk YXRhIGZyb20gcHJvdmlkZWQgT09CIGJ1ZmZlciB0byBETUEgYnVmZmVyLgo+IFRoaXMgaXMgYmVj YXVzZSBudW1iZXIgb2YgdXNlciBieXRlcyBpcyBpbmNyZWFzZWQgaW4gdGhpcyBwYXRjaC4KPiAK PiA+ICAgCj4gPj4gIH0KPiA+PiAgCj4gPj4gIHN0YXRpYyBpbnQgbWVzb25fbmZjX3F1ZXVlX3Ji KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCB0aW1lb3V0X21zKQo+ID4+IEBAIC00MzMsNyAr NDUyLDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF91c2VyX2J5dGUoc3RydWN0IG5hbmRf Y2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gPj4gIAlfX2xlNjQgKmluZm87Cj4gPj4gIAlpbnQg aSwgY291bnQ7Cj4gPj4gIAo+ID4+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiA+PiArCWZvciAoaSA9IDAsIGNvdW50ID0g MDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsg MikpIHsKPiA+PiAgCQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ID4+ICAJCSpp bmZvIHw9IG9vYl9idWZbY291bnRdOwo+ID4+ICAJCSppbmZvIHw9IG9vYl9idWZbY291bnQgKyAx XSA8PCA4Owo+ID4+IEBAIC00NDYsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX2dl dF91c2VyX2J5dGUoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gPj4gIAlf X2xlNjQgKmluZm87Cj4gPj4gIAlpbnQgaSwgY291bnQ7Cj4gPj4gIAo+ID4+IC0JZm9yIChpID0g MCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiA+ PiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3Vu dCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsKPiA+PiAgCQlpbmZvID0gJm1lc29uX2NoaXAt PmluZm9fYnVmW2ldOwo+ID4+ICAJCW9vYl9idWZbY291bnRdID0gKmluZm87Cj4gPj4gIAkJb29i X2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPiA+PiBAQCAtNjM4LDYgKzY1Nyw4NCBAQCBz dGF0aWMgaW50IG1lc29uX25mY19yd19jbWRfcHJlcGFyZV9hbmRfZXhlY3V0ZShzdHJ1Y3QgbmFu ZF9jaGlwICpuYW5kLAo+ID4+ICAJcmV0dXJuIDA7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gK3N0YXRp YyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4g Pj4gK3sKPiA+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4g Pj4gKwo+ID4+ICsJcmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIChuYW5k LT5lY2MuYnl0ZXMgKyAyKTsgIAo+ID4gCj4gPiBUaGlzIGxvb2tzIGxpa2UgYSBzdGF0aWMgdmFs dWUsIGp1c3Qgc2F2ZSBpdCBzb21ld2hlcmUgaW5zdGVhZCBvZgo+ID4gcmVjb21wdXRpbmcgaXQ/ ICAKPiAKPiBBY2sKPiAKPiA+ICAgCj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQgbWVz b25fbmZjX3dyaXRlX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiA+PiAr ewo+ID4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChuYW5kKTsKPiA+PiAr CXUzMiBwYWdlX3NpemUgPSBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZTsKPiA+PiArCXUz MiBvb2JfYnl0ZXMgPSBtZXNvbl9uZmNfb29iX2ZyZWVfYnl0ZXMobmFuZCk7Cj4gPj4gKwl1OCAq b29iX2J1ZjsKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJaWYgKCFvb2JfYnl0ZXMpCj4g Pj4gKwkJcmV0dXJuIDA7ICAKPiA+IAo+ID4gQ2FuIHRoaXMgaGFwcGVuPyAgCj4gCj4gQWNrLCBz ZWVtcyBmb3JnZXQgdG8gcmVtb3ZlIGl0Cj4gCj4gPiAgIAo+ID4+ICsKPiA+PiArCS8qIENhbGxl ZCBhcyBPT0Igd3JpdGUgaGVscGVyLCB3aWxsIHNlbmQgTkFORF9DTURfUEFHRVBST0cuICovCj4g Pj4gKwlpZiAocGFnZSAhPSAtMSkgewo+ID4+ICsJCXJldCA9IG5hbmRfcHJvZ19wYWdlX2JlZ2lu X29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+ID4+ICsJCWlmIChyZXQpCj4gPj4gKwkJCXJl dHVybiByZXQ7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJb29iX2J1ZiA9IG5hbmQtPm9vYl9wb2k7 Cj4gPj4gKwo+ID4+ICsJcmV0ID0gbmFuZF9jaGFuZ2Vfd3JpdGVfY29sdW1uX29wKG5hbmQsIHBh Z2Vfc2l6ZSAtIG9vYl9ieXRlcywKPiA+PiArCQkJCQkgIG9vYl9idWYgKyAobXRkLT5vb2JzaXpl IC0gb29iX2J5dGVzKSwKPiA+PiArCQkJCQkgIG9vYl9ieXRlcywgZmFsc2UpOwo+ID4+ICsJaWYg KHJldCkKPiA+PiArCQlyZXR1cm4gcmV0Owo+ID4+ICsKPiA+PiArCXJldHVybiAocGFnZSAhPSAt MSkgPyBuYW5kX3Byb2dfcGFnZV9lbmRfb3AobmFuZCkgOiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ ICtzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBp bnQgcGFnZSkKPiA+PiArewo+ID4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210 ZChuYW5kKTsKPiA+PiArCXU4ICpvb2JfYnVmID0gbmFuZC0+b29iX3BvaTsKPiA+PiArCXUzMiBv b2JfYnl0ZXM7Cj4gPj4gKwl1MzIgcGFnZV9zaXplOwo+ID4+ICsJaW50IHJldDsKPiA+PiArCWlu dCBpOwo+ID4+ICsKPiA+PiArCS8qIENhbGxlZCBhcyBPT0IgcmVhZCBoZWxwZXIsIHNlbmQgTkFO RF9DTURfUkVBRDAuICovCj4gPj4gKwlpZiAocGFnZSAhPSAtMSkgeyAgCj4gPiAKPiA+IEkgZG9u J3QgbGlrZSB0aGlzIGxvZ2ljIHdpdGggdGhlICItMSIsIGl0IHJlYWxseSBoaWRlcyB3aGF0IHRo ZQo+ID4gY29udHJvbGxlciBuZWVkcyB0byBkbywgaWYgeW91IG5lZWQgYSBoZWxwZXIgdG8gc2Vu ZCBhIGNvbW1hbmQsIHRoZW4KPiA+IGNyZWF0ZSB0aGF0IGhlbHBlciBhbmQgZ2l2ZSBpdCBhIGRl Y2VudCBuYW1lLiAgCj4gCj4gSSBzZWUsIHNvIEkgdGhpbmsgSSBuZWVkIHRvIGltcGxlbWVudCB0 aGlzIGluIHRoZSBmb2xsb3dpbmcgd2F5Ogo+IDEpIEZvciBPT0IgY2FsbGJhY2sgaXQgYWx3YXlz IHNlbmRzIE5BTkRfQ01EX1JFQUQwIChlLmcuIHdpdGhvdXQgYW55ICdpZicpCj4gMikgRm9yIHJl YWQgT09CIHdpdGggZGF0YSBwYWdlIHdlIGRvbid0IG5lZWQgdG8gc2VuZCBOQU5EX0NNRF9SRUFE MC4gKGFsc28gd2l0aG91dCBhbnkgJ2lmJykKPiAKPiA+ICAgCj4gPj4gKwkJcmV0ID0gbmFuZF9y ZWFkX3BhZ2Vfb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwgMCk7Cj4gPj4gKwkJaWYgKHJldCkKPiA+ PiArCQkJcmV0dXJuIHJldDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwkvKiBSZWFkIEVDQyBjb2Rl cyBhbmQgdXNlciBieXRlcy4gKi8KPiA+PiArCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3Rl cHM7IGkrKykgewo+ID4+ICsJCXUzMiBlY2Nfb2ZmcyA9IG5hbmQtPmVjYy5zaXplICogKGkgKyAx KSArCj4gPj4gKwkJCSAgICAgICAobmFuZC0+ZWNjLmJ5dGVzICsgMikgKiBpOwo+ID4+ICsKPiA+ PiArCQlyZXQgPSBuYW5kX2NoYW5nZV9yZWFkX2NvbHVtbl9vcChuYW5kLCBlY2Nfb2ZmcywKPiA+ PiArCQkJCQkJIG9vYl9idWYgKyBpICogKG5hbmQtPmVjYy5ieXRlcyArIDIpLAo+ID4+ICsJCQkJ CQkgKG5hbmQtPmVjYy5ieXRlcyArIDIpLCBmYWxzZSk7Cj4gPj4gKwkJaWYgKHJldCkKPiA+PiAr CQkJcmV0dXJuIHJldDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlvb2JfYnl0ZXMgPSBtZXNvbl9u ZmNfb29iX2ZyZWVfYnl0ZXMobmFuZCk7Cj4gPj4gKwo+ID4+ICsJaWYgKCFvb2JfYnl0ZXMpCj4g Pj4gKwkJcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ICsJcGFnZV9zaXplID0gbXRkLT53cml0ZXNpemUg KyBtdGQtPm9vYnNpemU7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gbmFuZF9jaGFuZ2VfcmVhZF9jb2x1 bW5fb3AobmFuZCwgcGFnZV9zaXplIC0gb29iX2J5dGVzLAo+ID4+ICsJCQkJCSBvb2JfYnVmICsg KG10ZC0+b29ic2l6ZSAtIG9vYl9ieXRlcyksCj4gPj4gKwkJCQkJIG9vYl9ieXRlcywgZmFsc2Up Owo+ID4+ICsKPiA+PiArCXJldHVybiByZXQ7Cj4gPj4gK30KPiA+PiArCj4gPj4gIHN0YXRpYyBp bnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3ViKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gPj4g IAkJCQkgICAgaW50IHBhZ2UsIGludCByYXcpCj4gPj4gIHsKPiA+PiBAQCAtNjc0LDYgKzc3MSwx MiBAQCBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1YihzdHJ1Y3QgbmFuZF9jaGlw ICpuYW5kLAo+ID4+ICAJCQkJICAgICBORkNfQ01EX1NDUkFNQkxFUl9ESVNBQkxFKTsKPiA+PiAg CX0KPiA+PiAgCj4gPj4gKwlpZiAoIXJhdykgeyAgCj4gPiAKPiA+IFdoeSB0aGlzIGNoZWNrPwo+ ID4gCj4gPiBZb3Ugc2hvdWxkIGluc3RlYWQgcHJvcGFnYXRlIHRoZSBvb2JfcmVxdWlyZWQgZmll bGQgYW5kIGNoZWNrIHRoYXQKPiA+IHZhbHVlIEkgYmVsaWV2ZS4gIAo+IAo+IAo+IFRoaXMgY2hl Y2sgaXMgZm9yIEVDQyBtb2RlLCBiZWNhdXNlIGluIHRoaXMgbW9kZSB3ZSB3cml0ZSB1c2VyIGJ5 dGVzIG9mIE9PQi4KPiBFQ0MgYnl0ZXMgb2YgT09CIGFyZSB3cml0dGVuIGJ5IGhhcmR3YXJlLgoK SnVzdCBwcm92aWRlIHRoZSBidWZmZXIuIFRoZSBFQ0MgZW5naW5lIHdpbGwgc21hc2ggZGF0YSBp ZiB0aGVyZSB3YXMKYW55IHRoZXJlLiBPdGhlcndpc2UgaXQgd2lsbCBmaWxsIHRoZSBob2xlcy4g SXQncyBleHBlY3RlZC4gRG9uJ3QgdHJ5CnRvIGJlIHNtYXJ0ZXIgdGhhbiB5b3Ugc2hvdWxkIDop Cgo+IEkgdGhpbmsgSSBtYWRlIGEgbWlzdGFrZSwgYmVjYXVzZQo+IEkgbmVlZCBuZXcgY2FsbGJh Y2sgdG8gd3JpdGUgT09CIGluIHJhdyBtb2RlIC0gaXQgd2lsbCB3cml0ZSBib3RoIEVDQyBhbmQg dXNlcgo+IHBhcnRzLAoKVGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyB1c2VyIGFuZCBFQ0MgcGFy dCBhdCB0aGUgZHJpdmVyIGxldmVsLiBZb3UKZ2V0IGEgYnVmZmVyLCB5b3UgbmVlZCB0byB3cml0 ZSBpdCB0byB0aGUgZmxhc2guCgpUaGUgdXNlciBleHBlY3RzOgoKfCBkYXRhIHwgT09CIHwKClRo ZSBjb250cm9sbGVyIGV4cGVjdHMgc29tZXRoaW5nIGxpa2U6Cgp8IGRhdGExIHwgT09CMSB8IGRh dGEyIHwgT09CMiB8CgpTbyBqdXN0IHBlcmZvcm0gdGhlIHJlb3JkZXJpbmcgYmV0d2VlbiBkYXRh IGFuZCBPT0IgaW4gdGhlIERNQSBidWZmZXIsCnRoYXQgaXMgX2FsbF8uCgo+IGluIGN1cnJlbnQg dmVyc2lvbiBJIHdyaXRlIG9ubHkgdXNlciBwYXJ0IGluIHJhdyBtb2RlLgo+IAo+ID4gICAKPiA+ PiArCQlyZXQgPSBtZXNvbl9uZmNfd3JpdGVfb29iKG5hbmQsIC0xKTsKPiA+PiArCQlpZiAocmV0 KQo+ID4+ICsJCQlyZXR1cm4gcmV0Owo+ID4+ICsJfQo+ID4+ICsKPiA+PiAgCWNtZCA9IG5mYy0+ cGFyYW0uY2hpcF9zZWxlY3QgfCBORkNfQ01EX0NMRSB8IE5BTkRfQ01EX1BBR0VQUk9HOwo+ID4+ ICAJd3JpdGVsKGNtZCwgbmZjLT5yZWdfYmFzZSArIE5GQ19SRUdfQ01EKTsKPiA+PiAgCW1lc29u X25mY19xdWV1ZV9yYihuYW5kLCBQU0VDX1RPX01TRUMoc2RyLT50UFJPR19tYXgpKTsKPiA+PiBA QCAtODM0LDE3ICs5MzcsMTAgQEAgc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9wYWdlX2h3ZWNj KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHU4ICpidWYsCj4gPj4gIAkJbWVtY3B5KGJ1ZiwgbWVz b25fY2hpcC0+ZGF0YV9idWYsIG10ZC0+d3JpdGVzaXplKTsKPiA+PiAgCX0KPiA+PiAgCj4gPj4g LQlyZXR1cm4gYml0ZmxpcHM7Cj4gPj4gLX0KPiA+PiAtCj4gPj4gLXN0YXRpYyBpbnQgbWVzb25f bmZjX3JlYWRfb29iX3JhdyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiA+PiAt ewo+ID4+IC0JcmV0dXJuIG1lc29uX25mY19yZWFkX3BhZ2VfcmF3KG5hbmQsIE5VTEwsIDEsIHBh Z2UpOwo+ID4+IC19Cj4gPj4gKwlpZiAob29iX3JlcXVpcmVkICYmIHJldCkgIAo+ID4gCj4gPiBV bmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhlcmU/CgpJbiBnZW5lcmFsLCBpZiAocmV0KSBtZWFu cyB0aGVyZSBpcyBhbiBlcnJvci4KClBsZWFzZSBjb25zaWRlciB1c2luZzoKCmlmIChyZXQpCgln b3RvIGVycm9yIHBhdGg7CgpkbyBzb21ldGhpbmcgZWxzZTsKCj4gPiAgIAo+IAo+IElmIHJlYWQg d2FzIHN1Y2Nlc3NmdWwsIHdlIHJlYWQgT09CLiBJZiBub3QgLSB0aGVyZSBpcyBubyBzZW5zZSBp biBpdC4KPiAKPiA+PiArCQltZXNvbl9uZmNfcmVhZF9vb2IobmFuZCwgLTEpOwo+ID4+ICAKPiA+ PiAtc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwg aW50IHBhZ2UpCj4gPj4gLXsKPiA+PiAtCXJldHVybiBtZXNvbl9uZmNfcmVhZF9wYWdlX2h3ZWNj KG5hbmQsIE5VTEwsIDEsIHBhZ2UpOwo+ID4+ICsJcmV0dXJuIGJpdGZsaXBzOwo+ID4+ICB9Cj4g Pj4gIAo+ID4+ICBzdGF0aWMgYm9vbCBtZXNvbl9uZmNfaXNfYnVmZmVyX2RtYV9zYWZlKGNvbnN0 IHZvaWQgKmJ1ZmZlcikKPiA+PiBAQCAtOTg3LDEyICsxMDgzLDE2IEBAIHN0YXRpYyBpbnQgbWVz b25fb29ibGF5b3V0X2ZyZWUoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBzZWN0aW9uLAo+ID4+ ICAJCQkJc3RydWN0IG10ZF9vb2JfcmVnaW9uICpvb2JyZWdpb24pCj4gPj4gIHsKPiA+PiAgCXN0 cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSBtdGRfdG9fbmFuZChtdGQpOwo+ID4+ICsJdTMyIG9vYl9i eXRlcyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPiA+PiAgCj4gPj4gIAlpZiAo c2VjdGlvbiA+PSBuYW5kLT5lY2Muc3RlcHMpCj4gPj4gIAkJcmV0dXJuIC1FUkFOR0U7Cj4gPj4g IAo+ID4+IC0Jb29icmVnaW9uLT5vZmZzZXQgPSBzZWN0aW9uICogKDIgKyBuYW5kLT5lY2MuYnl0 ZXMpOyAgCj4gPiAKPiA+IFRoZSBmaXJzdCB0d28gYnl0ZXMgb2YgT09CIGFyZSByZXNlcnZlZCBm b3IgdGhlIGJhZCBibG9jayBtYXJrZXJzLiBUaGlzCj4gPiBpcyBub3QgcmVsYXRlZCB0byB5b3Vy IGNvbnRyb2xsZXIuICAKPiAKPiBJIHRoaW5rIGZpcnN0IHR3byBieXRlcyAoaW4gZmFjdCB0aGVy ZSBhcmUgNCBieXRlcyBhdCBwb3NpdGlvbnMgMCwgMSwgMTYgYW5kIDE3KQo+IGlzIGNvbnNpZGVy ZWQgYnkgaGFyZHdhcmUgYXMgdXNlciBieXRlcyBjb3ZlcmVkIGJ5IEVDQy4KClRoZSB0d28gZmly c3QgYnl0ZXMgc2hvdWxkIG5vdCBiZSBhdmFpbGFibGUuIFRoZXkgYXJlIG5vdCAiRUNDIiBieXRl cywKdGhleSBhcmUgbm90ICJmcmVlIiBieXRlcy4gTm9uZSBvZiB0aGVzZSB0d28gY2FsbGJhY2tz IHNob3VsZCBnaXZlCmFjY2VzcyB0byB0aGVzZSB0d28gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGJhZCBi bG9jayBtYXJrZXJzLgoKSnVzdCB0byBiZSBjbGVhcjogIkVDQyBieXRlcyIgYXMgaW4gIm1lc29u X29vYmxheW91dF9lY2MiIGRvICpub3QqIG1lYW4KInRoZXNlIGFyZSB0aGUgcHJvdGVjdGVkIGJ5 dGVzIi4gVGhleSBtZWFuICJ0aGVzZSBhcmUgdGhlIGJ5dGVzIGluIE9PQgp0aGUgaGFyZHdhcmUg RUNDIGVuZ2luZSB3aWxsIHVzZSB0byBwbGFjZSBpdHMgb3duIGRhdGEgdG8gbWFrZSB0aGUKcmVj b3ZlcnkgcHJvY2VzcyB3b3JrIi4KClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=