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 A6F78C004D4 for ; Sat, 21 Jan 2023 18:05:39 +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:Message-ID:Date:References :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=t5ap6c+qnqR+penuoviSMEF/3mtl2FMhLL1YNoXZCDg=; b=etlcR8ByxQziBe KC7FgQ66mAXzxicKmVMk6JeidTzTiJVdWpyBp2KHkdgrEzVVeLqKg0+w0G/vzAFT+VvLnoSD2eUZI IceH1JR5hBeQL4XMdzga3KP/KoK9V4pKzVZOPin+/Sg4MeA0iVV66HcTv+KOFlA3fMo0iXN/USY2N 7R2b6z7CN0JADnVcUNual1GTs9DXT7iGqRydsmnNduysZDAGqxS7xCGpbB11bWZvPdDFQtlGgbHo5 MkR6Jilo8KfL/YUSFF8RyyGjNvSQyQpUjGZAIr3CIlgY6rgM5pS2DteMpe88qu42WaJ2EPMHSM2p4 83SWLvjBPs0vRN7L2KDw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pJIED-00EFrS-Ow; Sat, 21 Jan 2023 18:04:33 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pJIEA-00EFq2-Ju for linux-arm-kernel@lists.infradead.org; Sat, 21 Jan 2023 18:04:32 +0000 Received: by mail-ej1-x62d.google.com with SMTP id u19so21336020ejm.8 for ; Sat, 21 Jan 2023 10:04:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1gUlDI6v8VKTtaMxxZBnCUHzXRHq2WNi9uyLdu5nGAY=; b=GGDo6doU7wzIcOBqhbO7K0p5p6Aygeh0vlu/HrtwiOV0PCao7kpHWcwNWzfxu+iIAF qU7tj2e9v9B2FRPcF5VIoeFK1x09qja63eRS6TLg+SoVwG8huSykA3IBqrucNyBhN+5i EbuUWtAPE1nUpunFHOJ3eeBTrQEMbhU4jcOxnT2XedpNDBOkIW2/03S38nUifG4Ef9C9 WcPEb60QS5i250lCauKdh54JUf6mBInH/6U9THc2D4HjoZnywEuRkF4IYVZneKzqeRAb Y52t2RSu5rbVr418Wa6A8tvX3TXQkXaIjme1Kavz9ha57aY9q+7T2BlQat/04JnVh/25 21wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:subject:cc:to:from:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=1gUlDI6v8VKTtaMxxZBnCUHzXRHq2WNi9uyLdu5nGAY=; b=wz0W9GbF/73AAze5a+VLtU70nA1BrK9ModnKQYc5Cq9JpyVZOZkaVEmn86F58zuXT8 j54rPxMcSafMLzI4Vy8Cjusy4apm0xiWBRRirCBzIDyNjvmL9RGuKZ+/jWWQCs9UUwYH 7feMERYLVnn0wbGrvqRdDtbMJJM6/NZmF9E5yH20GMCan/yCoBPonJ3quZKhYd424gfh B4s3f6I/1HZ87/T07xhyvqUZv5nswckcthcjP/MJbR6pEs4XGwThRANZ30kjQOWlTiZ7 tuVUEDoLYIS0C0ttGsKNFWR0+eU7NhXwY4kAik1c25RwSp+NAAPWKRmLBAelMcxoj629 qZng== X-Gm-Message-State: AFqh2kqfzQT/gL3knsYWMQCZalVrmHBQJoGWBHKoSK0X/Zo0WiabJTz1 UOKWhkjd64Ey4jZLT1txuCIKNiUGbJs= X-Google-Smtp-Source: AMrXdXsyo7NAgz0UE5nMv1yReeP76ZOEOrdOk4E6pbjKafS+QNxSvabQa5BgrB8Sb4Jbl9Re/Dcq4Q== X-Received: by 2002:a17:906:1c51:b0:864:8ffe:135b with SMTP id l17-20020a1709061c5100b008648ffe135bmr18366470ejg.22.1674324267627; Sat, 21 Jan 2023 10:04:27 -0800 (PST) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id d7-20020a50fb07000000b0049cbd334b13sm11156896edq.29.2023.01.21.10.04.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jan 2023 10:04:27 -0800 (PST) From: Sergey Organov To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Fabio Estevam , Pengutronix Kernel Team , Richard Genoud , Greg Kroah-Hartman , Sascha Hauer , NXP Linux Team , linux-serial@vger.kernel.org, Shawn Guo , Tim Harvey , Jiri Slaby , Tomasz =?utf-8?Q?Mo=C5=84?= , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 7/8] serial: imx: use readl() to optimize FIFO reading loop References: <87bko4e65y.fsf@osv.gnss.ru> <20230113184334.287130-1-sorganov@gmail.com> <20230113184334.287130-8-sorganov@gmail.com> <20230117113205.l5byaz3srzpagzhz@pengutronix.de> <87bkmx47o4.fsf@osv.gnss.ru> <20230117212702.vvwe3rqjedivqbhn@pengutronix.de> <87ilh3zw9q.fsf@osv.gnss.ru> <20230119070114.e62pqb6ibousxgx7@pengutronix.de> Date: Sat, 21 Jan 2023 21:04:25 +0300 Message-ID: <87k01fwyqe.fsf@osv.gnss.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230121_100430_698133_A9E97534 X-CRM114-Status: GOOD ( 61.47 ) 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 SGVsbG8gVXdlLAoKVXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25p eC5kZT4gd3JpdGVzOgoKPiBIZWxsbyBTZXJnZXksCj4KPiBPbiBXZWQsIEphbiAxOCwgMjAyMyBh dCAwNjo0MDoxN1BNICswMzAwLCBTZXJnZXkgT3JnYW5vdiB3cm90ZToKPj4gVXdlIEtsZWluZS1L w7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25peC5kZT4gd3JpdGVzOgo+PiA+IE9uIFR1 ZSwgSmFuIDE3LCAyMDIzIGF0IDA0OjIyOjUxUE0gKzAzMDAsIFNlcmdleSBPcmdhbm92IHdyb3Rl Ogo+PiA+PiBVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRl PiB3cml0ZXM6Cj4+ID4+ID4gT24gRnJpLCBKYW4gMTMsIDIwMjMgYXQgMDk6NDM6MzNQTSArMDMw MCwgU2VyZ2V5IE9yZ2Fub3Ygd3JvdGU6Cj4+ID4+ID4+IFVzZSByZWFkbCgpIGluc3RlYWQgb2Yg aGVhdmllciBpbXhfdWFydF9yZWFkbCgpIGluIHRoZSBSeCBJU1IsIGFzIHdlIGtub3cKPj4gPj4g Pj4gd2UgcmVhZCByZWdpc3RlcnMgdGhhdCBtdXN0IG5vdCBiZSBjYWNoZWQuCj4+ID4+ID4+IAo+ PiA+PiA+PiBTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgT3JnYW5vdiA8c29yZ2Fub3ZAZ21haWwuY29t Pgo+PiA+PiA+PiAtLS0KPj4gPj4gPj4gIGRyaXZlcnMvdHR5L3NlcmlhbC9pbXguYyB8IDUgKysr LS0KPj4gPj4gPj4gIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4+ID4+ID4+IAo+PiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2lt eC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCj4+ID4+ID4+IGluZGV4IGJlMDAzNjJiOGI2 Ny4uZjQyMzZlODk5NWZhIDEwMDY0NAo+PiA+PiA+PiAtLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwv aW14LmMKPj4gPj4gPj4gKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCj4+ID4+ID4+IEBA IC04OTAsMTQgKzg5MCwxNSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgX19pbXhfdWFydF9yeGludChp bnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+ID4+ID4+ICAJc3RydWN0IGlteF9wb3J0ICpzcG9ydCA9 IGRldl9pZDsKPj4gPj4gPj4gIAl1bnNpZ25lZCBpbnQgcngsIGZsZzsKPj4gPj4gPj4gIAlzdHJ1 Y3QgdHR5X3BvcnQgKnBvcnQgPSAmc3BvcnQtPnBvcnQuc3RhdGUtPnBvcnQ7Cj4+ID4+ID4+ICsJ dHlwZW9mKHNwb3J0LT5wb3J0Lm1lbWJhc2UpIG1lbWJhc2UgPSBzcG9ydC0+cG9ydC5tZW1iYXNl Owo+PiA+PiA+PiAgCXUzMiB1c3IyOwo+PiA+PiA+PiAgCj4+ID4+ID4+ICAJLyogSWYgd2UgcmVj ZWl2ZWQgc29tZXRoaW5nLCBjaGVjayBmb3IgMHhmZiBmbG9vZCAqLwo+PiA+PiA+PiAtCXVzcjIg PSBpbXhfdWFydF9yZWFkbChzcG9ydCwgVVNSMik7Cj4+ID4+ID4+ICsJdXNyMiA9IHJlYWRsKG1l bWJhc2UgKyBVU1IyKTsKPj4gPj4gPj4gIAlpZiAodXNyMiAmIFVTUjJfUkRSKQo+PiA+PiA+PiAg CQlpbXhfdWFydF9jaGVja19mbG9vZChzcG9ydCwgdXNyMik7Cj4+ID4+ID4+ICAKPj4gPj4gPj4g LQl3aGlsZSAoKHJ4ID0gaW14X3VhcnRfcmVhZGwoc3BvcnQsIFVSWEQwKSkgJiBVUlhEX0NIQVJS RFkpIHsKPj4gPj4gPj4gKwl3aGlsZSAoKHJ4ID0gcmVhZGwobWVtYmFzZSArIFVSWEQwKSkgJiBV UlhEX0NIQVJSRFkpIHsKPj4gPj4gPj4gIAkJZmxnID0gVFRZX05PUk1BTDsKPj4gPj4gPj4gIAkJ c3BvcnQtPnBvcnQuaWNvdW50LnJ4Kys7Cj4+ID4+ID4KPj4gPj4gPiBPbmUgb2YgdGhlIG1vdGl2 YXRpb25zIHRvIGludHJvZHVjZSBpbXhfdWFydF9yZWFkbCB3YXMgdG8gaGF2ZSBhIHNpbmdsZQo+ PiA+PiA+IHBsYWNlIHRvIGFkZCBhIGRlYnVnIG91dHB1dCB0byBiZSBhYmxlIHRvIGluc3BlY3Qg d2hhdCB0aGUgZHJpdmVyIGlzCj4+ID4+ID4gZG9pbmcuCj4+ID4+ID4KPj4gPj4gPiBJIHdvbmRl ciB3aGVyZSB5b3VyIG5lZWQgZm9yIGhpZ2hlciBzcGVlZCBjb21lcyBmcm9tIGFuZCBpZiB0aGUg Y29tcGlsZXIKPj4gPj4gPiByZWFsbHkgZ2VuZXJhdGVzIG1vcmUgZWZmZWN0aXZlIGNvZGUgd2l0 aCB5b3VyIGNoYW5nZS4KPj4gPj4gCj4+ID4+IE1vc3RseSBpdCdzIGJlY2F1c2UgSSdtIG9idmlv dXNseSBzbG93aW5nIHRoaW5ncyBkb3duIGEgYml0IHdpdGggdGhlCj4+ID4+IHBhdGNoIHRvIGZp Z2h0IHRoZSBmbG9vZCwgc28gSSBmZWVsIG9ibGlnZWQgdG8gZ2V0IHRoaW5ncyBiYWNrIG9uIHBh cgo+PiA+PiB3aXRoIHRoZSBvcmlnaW4uIFRoZW4sIGhpZ2hlciBzcGVlZCwgbGV0IGFsb25lIHRo ZSB0aW1lIHNwZW50IHdpdGgKPj4gPj4gaW50ZXJydXB0cyBkaXNhYmxlZCBhbmQvb3Igc3Bpbmxv Y2tzIHRha2VuLCBpcyBhbHdheXMgb25lIG9mIGdlbmVyaWMKPj4gPj4gZ29hbHMgZm9yIG1lLgo+ PiA+PiAKPj4gPj4gQXMgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZSwgd2l0aCB0aGlzIHBhdGNoIEkg ZG9uJ3QgYWltIHRvIGFmZmVjdCBjb2RlCj4+ID4+IGdlbmVyYXRpb24sIEkgcmF0aGVyIGF2b2lk IGV4ZWN1dGlvbiBvZiBwYXJ0IG9mIGV4aXN0aW5nIGNvZGUgd2hpbGUKPj4gPj4gYmVpbmcgb24g dGhlIG1vc3QgY3JpdGljYWwgcGF0aC4gSXQgc2hvdWxkIGJlIHF1aXRlIG9idmlvdXMgdGhhdCBu b3QKPj4gPj4gZXhlY3V0aW5nIHNvbWUgY29kZSBpcyBhdCBsZWFzdCBub3Qgc2xvd2VyIHRoYW4g ZXhlY3V0aW5nIGl0Lgo+PiA+Cj4+ID4gVGhhdCdzIHRydWUsIGJ1dCBJIHRoaW5rIGl0IGRvZXNu J3QgYXBwbHkgaGVyZS4KPj4gCj4+IFdlbGwsICJhdCBsZWFzdCBub3Qgc2xvd2VyIiBzdGlsbCBh cHBsaWVzIDstKQo+PiAKPj4gPgo+PiA+IEkgd291bGQgZXhwZWN0IHRoYXQgdGhlIGNvbXBpbGVy ICJzZWVzIiBmb3IgdGhlIGNhbGwKPj4gPgo+PiA+IAlpbXhfdWFydF9yZWFkbChzcG9ydCwgVVNS MikKPj4gPgo+PiA+IHRoYXQgdGhlIDJuZCBhcmd1bWVudCBpcyBjb25zdGFudCBhbmQgdGhhdCBm b3IgdGhhdCB2YWx1ZSBvZiBvZmZzZXQgdGhlCj4+ID4gY2FsbCBpcyBlcXVpdmFsZW50IHRvIHJl YWRsKHNwb3J0LT5wb3J0Lm1lbWJhc2UgKyBvZmZzZXQpOwo+PiA+Cj4+ID4gU28gSSBkb3VidCB5 b3UncmUgbWFraW5nIGFueXRoaW5nIHF1aWNrZXIgaGVyZS4KPj4gCj4+IFllcCwgaXQncyBuaWNl IGNvbXBpbGVyIGlzIGNsZXZlciBlbm91Z2ggdG8gb3B0aW1pemUtb3V0IHRoZSBzd2l0Y2ggZm9y Cj4+IGNvbnN0YW50IGFyZ3VtZW50LCB0aG91Z2ggSSBzdGlsbCB0eXBpY2FsbHkgcHJlZmVyIHRv IGF2b2lkIG92ZXItcmVseWluZwo+PiBvbiBvcHRpbWl6YXRpb25zLiBUaGF0IHNhaWQsIEkgbm93 IHRlbmQgdG8gYWdyZWUgd2l0aCB5b3VyIFBPViBpbiB0aGlzCj4+IHBhcnRpY3VsYXIgY2FzZS4K Pj4gCj4+ID4KPj4gPiBJIHRyaWVkIHRoZSBmb2xsb3dpbmcgcGF0Y2ggb24gbWFpbmxpbmUgKHRo YXQgaXMgd2l0aG91dCB0aGUgcHJlY2VkaW5nCj4+ID4gcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyk6 Cj4+ID4KPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jIGIvZHJpdmVy cy90dHkvc2VyaWFsL2lteC5jCj4+ID4gaW5kZXggNzU3ODI1ZWRiMGNkLi5jZmMyZjcwNTczNDUg MTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCj4+ID4gKysrIGIvZHJp dmVycy90dHkvc2VyaWFsL2lteC5jCj4+ID4gQEAgLTgwNyw3ICs4MDcsNyBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgX19pbXhfdWFydF9yeGludChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+ID4gIAl1 bnNpZ25lZCBpbnQgcngsIGZsZywgaWdub3JlZCA9IDA7Cj4+ID4gIAlzdHJ1Y3QgdHR5X3BvcnQg KnBvcnQgPSAmc3BvcnQtPnBvcnQuc3RhdGUtPnBvcnQ7Cj4+ID4gIAo+PiA+IC0Jd2hpbGUgKGlt eF91YXJ0X3JlYWRsKHNwb3J0LCBVU1IyKSAmIFVTUjJfUkRSKSB7Cj4+ID4gKwl3aGlsZSAocmVh ZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVTUjIpICYgVVNSMl9SRFIpIHsKPj4gPiAgCQl1MzIg dXNyMjsKPj4gPiAgCj4+ID4gIAkJZmxnID0gVFRZX05PUk1BTDsKPj4gPgo+PiA+IGFuZCB0aGUg cmVzdWx0aW5nIGNvZGUgZGlkbid0IGNoYW5nZSBhdCBhbGwuIEZvciBhIGJpZ2dlciBjaGFuZ2Ug KGkuZS4KPj4gPiBhZGRpbmcgYSB2YXJpYWJsZSBmb3Igc3BvcnQtPnBvcnQubWVtYmFzZSBhbmQg cmVwbGFjaW5nIHR3bwo+PiA+IGlteF91YXJ0X3JlYWRsKSB0aGUgY29kZSBjaGFuZ2VkIHF1aXRl IGEgYml0IChpdCBnb3QgMjggYnl0ZXMgYmlnZ2VyIGZvcgo+PiA+IGlteF92Nl92N19kZWZjb25m aWcpIGFuZCBpbiB0aGUgc2hvcnQgdGltZSBJIHRyaWVkIEkgY291bGRuJ3QganVkZ2UgaWYKPj4g PiB0aGUgcmVzdWx0aW5nIGNvZGUgaXMgYmV0dGVyIG9yIG5vdC4KPj4gPgo+PiA+IFNvIGEgY2hh bmdlIHRoYXQgZXhwbGljaXRseSBkb2Vzbid0IGV4ZWN1dGUgdGhlIGNvZGUgdGhhdCB0aGUgY29t cGlsZXIKPj4gPiBvcHRpbWl6ZXMgYXdheSBhbnlob3cgaXNuJ3QgYSB3aW4uIFRvZ2V0aGVyIHdp dGggdGhlIGZhY3QgdGhhdCB5b3VyCj4+ID4gcGF0Y2ggbWFrZXMgcmVnaXN0ZXIgYWNjZXNzIHVz ZSBkaWZmZXJlbnQgaWRpb21zIGFuZCBzbyBtYWtlcyBpdCBoYXJkZXIKPj4gPiB0byB1bmRlcnN0 YW5kIGZvciBhIGh1bWFuIEknZCBzYXkgdGhlIG5ldCBiZW5lZml0IG9mIHlvdXIgcGF0Y2ggaXMK Pj4gPiBuZWdhdGl2ZS4KPj4gCj4+IE9LLCB5b3UgY29udmluY2VkIG1lIHRvIGRyb3AgaXQuCj4+ IAo+PiA+Cj4+ID4+ID4gUGxlYXNlIGVpdGhlciBkcm9wIHRoZSBwYXRjaCBmcm9tIHlvdXIgc2Vy aWVzIG9yIHByb3ZpZGUgdGhlIGRpZmZlcmVuY2VzCj4+ID4+ID4gdGhlIGNvbXBpbGVyIHByb2R1 Y2VzIGFuZCBhIGJlbmNobWFyay4KPj4gPj4gCj4+ID4+IElmIHlvdXIgb25seSBvYmplY3Rpb24g YWdhaW5zdCB0aGlzIHBhdGNoIGlzIHRoZSBkZXNpcmUgdG8ga2VlcCBhIHNpbmdsZQo+PiA+PiBw bGFjZSB0byBhZGQgZGVidWcgb3V0cHV0LCBJJ2xsIGJlIGhhcHB5IHRvIHR1bmUgdGhlIHJlc3Vs dGluZyBjb2RlIHRvCj4+ID4+IHN0aWxsIGhhdmUgb25lLgo+PiA+Cj4+ID4gSSBkb24ndCBzZWUg dGhlIG5lZWQgdG8gb3B0aW1pemUgaXQuCj4+ID4KPj4gPj4gVGhhdCBzYWlkLCBiZWZvcmUgd2Ug bWFrZSBhIGRlY2lzaW9uLCBjb3VsZCB5b3UgcGxlYXNlIHRlbGwgd2h5IHJlZ2lzdGVyCj4+ID4+ IHNoYWRvd3MgdGhhdCB0aGUgaW14X3VhcnRfcmVhZGwvd3JpdGVsIGFyZSBkZWFsaW5nIHdpdGgg YXJlIG5lZWRlZCBpbgo+PiA+PiB0aGUgZmlyc3QgcGxhY2U/IEl0IGxvb2tzIGxpa2UgYWxsIHRo ZSByZWdpc3RlcnMgdGhhdCBhcmUgc2hhZG93ZWQgYXJlCj4+ID4+IHJlYWRhYmxlIGFzIHdlbGwu IFdoYXQncyBnb2luZyBvbiBoZXJlLCBhbmQgaWYgaXQgaGFwcGVucyB0byBiZSBhCj4+ID4+IHNw ZWVkLXVwLCBkbyB3ZSBoYXZlIGFueSBiZW5jaG1hcmtzPwo+PiA+Cj4+ID4gTm90IHN1cmUgSSBk aWQgYmVuY2htYXJrcyBiYWNrIHRoZW4sIHByb2JhYmx5IG5vdC4gVGhlIG1haW4gbW90aXZhdGlv bgo+PiA+IHdhcyByZWFsbHkgdG8gaGF2ZSB0aGF0IHNpbmdsZSBhY2Nlc3MgZnVuY3Rpb24uIFNv IEkgYWRtaXQgYmVpbmcgZ3VpbHR5Cj4+ID4gdG8gaGF2ZSBpbXBsZW1lbnRlZCBhbiBvcHRpbWl6 YXRpb24gd2l0aG91dCBoYXJkIG51bWJlcnMganVzdCBhc3N1bWluZwo+PiA+IHRoYXQgYWNjZXNz IHRvIChjYWNoZWQpIFJBTSBpcyBxdWlja2VyIHRoYW4gdGhlIHJlZ2lzdGVyIHNwYWNlLgo+PiAK Pj4gV2VsbCwgZXZlbiBpZiBpdCBpcyBxdWlja2VyLCB3ZSBzdGlsbCBzcGVuZCB0aW1lIHdyaXRp bmcgdG8gYm90aCBSQU0gYW5kCj4+IHJlZ2lzdGVyLCBhbmQgdGhlbiB0aGVyZSBpcyBubyBnYWlu IGZvciB0aGUgZGF0YSBUeC9SeCByZWdpc3RlcnMgdGhhdAo+PiBhcmVuJ3QgY2FjaGVkLCB5ZXQg YXJlIG9uIG1vc3QgY3JpdGljYWwgcGF0aHMuCj4KPiBXZWxsLCBhc3N1bWluZyB3ZSdyZSBzYXZp bmcgc29tZSB0aW1lIGZvciB0aGUgY3RybCByZWdpc3RlcnMsIGl0J3Mgd29ydGgKPiBrZWVwaW5n IGl0IGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIGdhaW4gZm9yIFJYL1RYLCByaWdodD8gVGhlcmUg aXMgbm8KPiBvdmVyaGVhZCBmb3IgUlgvVFguCj4KPj4gU28sIGlmIHRoaXMgaXMganVzdCBjYWNo aW5nIGFuZCBkb2Vzbid0IGNoYW5nZSBiZWhhdmlvciwgSSdkIHN1Z2dlc3QgdG8KPj4gZ2V0IHJp ZCBvZiB0aGUgc2hhZG93aW5nIGFsdG9nZXRoZXIsIG1ha2luZyBjb2RlIHNpbXBsZXIgdG8gZm9s bG93Lgo+Cj4gS25vd2luZyBpdCdzIHN1YmplY3RpdmUgSSBkb24ndCB0aGluayB0aGUgc2hhZG93 aW5nIGlzIGNvbXBsaWNhdGVkLgo+IEZ1bmN0aW9ucyBhcmUgdXNpbmcgdGhlIGRyaXZlciBzcGVj aWZpYyByZWFkbCBhbmQgd3JpdGVsIGZ1bmN0aW9ucyBhbmQKPiBzaGFkb3dpbmcgaXMgbGltaXRl ZCB0byB0aGVzZSB0d28gZnVuY3Rpb25zLgoKSXQncyBub3QgY29tcGxpY2F0ZWQgaW5kZWVkLCBi dXQgaXQncyBzdGlsbCBjb2RlLCBhbmQgdGhlIGxlc3MgY29kZSwgLS0KdGhlIGJldHRlci4KCj4K PiBpbiBzdW0gdG9kYXkgSSB3b3VsZG4ndCBjaGFuZ2UgaWYgdGhlIGNvZGUgZG9lcyBzaGFkb3cg dGhlIHJlZ2lzdGVycwo+b3Igbm90IGlmIHRoZXJlIGlzbid0IGF0IGxlYXN0IGEgc3Ryb25nIGhp bnQgdGhhdCB0aGUgb25lIG9yIHRoZSBvdGhlcgo+dmFyaWFudCBpcyBiZXR0ZXIuIFNvIGlmIHlv dSBzdGlsbCB3YW50IHRvIHdvcmsgb24gdGhhdCB5b3UncmUgd2VsY29tZSwKPmJ1dCBJIGludml0 ZSB5b3UgdG8gZG8gc29tZSBiZW5jaG1hcmtzIGZpcnN0IGFuZCBub3Qgb25seSBhc3N1bWUgb25l IG9yCj50aGUgb3RoZXIgdmFyaWFudCBpcyBiZXR0ZXIuCgpObyBjb2RlIGlzIGJldHRlciBoYW5k cyBkb3duLCB1bmxlc3MgcHJvdmVkIG90aGVyd2lzZS4gSSBkdW5ubyBpZiBhIGNvZGUKdGhhdCBz b21laG93IHNuZWFrZWQgaW50byB0aGUga2VybmVsIGdldHMgYW55IHNwZWNpZmljIHNpZ25pZmlj YW5jZSBmcm9tCnRoZSBtYWludGVuYW5jZSBQT1YgdGhvdWdoLiBJZiBzbywgZm9yIG1lIGl0J2Qg YmUgdGhlIG9ubHkgc291bmQKYXJndW1lbnQgaW4gZmF2b3Igb2Yga2VlcGluZyB0aGUgY29kZSBp bnRhY3QuCgo+Cj4gTXkgKHVucHJvdmVkKSBhc3N1bXB0aW9uIGlzIHRoYXQgZm9yIGNvbnNvbGUg dXNhZ2UgdGhlcmUgaXMgaGFyZGx5IGEKPiBkaWZmZXJlbmNlIGFuZCB3aXRoIGEgd29ya2Zsb3cg dGhhdCBuZWVkcyBtb3JlIGNoYW5naW5nIG9mIGNvbnRyb2wKPiBzZXR0aW5ncyAobGlrZSBoYWxm IGR1cGxleCByczQ4NSkgc2hhZG93aW5nIGlzIHNsaWdodGx5IGJldHRlci4KCldlbGwsIGFsc28g dW5wcm92ZWQsIEkgdGVuZCB0byBkaXNhZ3JlZSBoZXJlLiBJJ20gYWZyYWlkIHlvdSdkIHJhdGhl cgpoYXZlIGhhcmQgdGltZSBmaW5kaW5nIGEgY2FzZSB3aGVyZSBpdCBpcyBub3RpY2VhYmx5IGJl dHRlciwgZXNwZWNpYWxseQphcyBvbiB0aGUgd3JpdGUgcGF0aCB0aGUgc2hhZG93aW5nIGlzIHB1 cmUgb3ZlcmhlYWQsIGFuZCBzbyB5b3UnZCBoYXZlCmhhcmQgdGltZSBnZXR0aW5nIHRoaXMgY29k ZSBpbnRvIHRoZSBrZXJuZWwgaW4gdGhlIGZpcnN0IHBsYWNlLCBwcm92aWRlZApzb21lYm9keSB3 b3VsZCBjYXJlIHRvIG9iamVjdC4KCkZvciB3aGF0IGl0J3Mgd29ydGgsIEkndmUgcmVtb3ZlZCB0 aGUgc2hhZG93aW5nIGluIG15IGtlcm5lbCB2ZXJzaW9uLAphbmQgaXQgZ2F2ZSBtZSBubyB0cm91 YmxlcyB5ZXQuIEZvciByZWZlcmVuY2UsIEkgdXNlIFJTMjMyIG9ubHkgd2l0aCBETUEKdHVybmVk IG9mZi4KCk92ZXJhbGwsIG15IGZlZWxpbmcgYWJvdXQgdGhlIGlzc3VlOiB0aGUgc2hhZG93aW5n IGNvZGUgaXMgY29uZnVzaW5nIGFuZApzaG91bGQgbm90IGhhdmUgYmVlbiBwdXQgdGhlcmUgaW4g dGhlIGZpcnN0IHBsYWNlLiBFc3NlbnRpYWxseSBpdCBsb29rcwpsaWtlIHB1cmUgY29kZSBibG9h dCwgc28gcmVtb3ZpbmcgaXQgd291bGQgYmUgYW4gaW1wcm92ZW1lbnQuIFRodXMgSQpmaWd1cmUg SSdsbCBzZW5kIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIHRoaXMsIGFuZCB5b3UgZ3V5cyBkZWNpZGUg aWYgdGhlCnBhdGNoIGdvZXMgaW4gKGFuZCB0aGUgY29kZSBpbiBxdWVzdGlvbiBnb2VzIG91dCkg b3Igbm90LgoKVGhhbmtzLAotLSBTZXJnZXkgT3JnYW5vdgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=