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 ED351C27C79 for ; Mon, 17 Jun 2024 20:30:12 +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:In-Reply-To:MIME-Version:References: 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=v0vVhwJ4NI0ZChVjv+k3qfPqq15F/Pk/tMQmEIEGo8w=; b=VPH42ZtjNVg4Qd 77RjdvASZR7WUCSjPe2xwJ+aLkY4WTFeuvxZSkG0xX2vI3DfUKPegLpSvn/JrqMLv81C4BKheJHUa SgKBUpasyobGdKsPw5gjcBFLtohI7xRzk0Tv/VG7SR/uHaIH5YTpeqBmsFH906Fk8AFKpaO1lLf/M 4zWWoBgF+wBGFjr6ASchCj5cv+aCSxnP+RWdcNK8/jdnLZusNyvCwTwlzMi1XVMChb3KrjK44njDp q6eMXrqVwD7KFNjxBE18TMkFF2Pae2SrU22Zxz4SR68r/8w3scy/wIlNoV9WyuqQSfTHhFD1dWYwr DvIz3KliNUSQPXT0ihlg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sJIzM-0000000CXB0-43Yf; Mon, 17 Jun 2024 20:30:04 +0000 Received: from pidgin.makrotopia.org ([2a07:2ec0:3002::65]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sJIzI-0000000CXA9-478S for linux-mtd@lists.infradead.org; Mon, 17 Jun 2024 20:30:03 +0000 Received: from local by pidgin.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.97.1) (envelope-from ) id 1sJIz2-000000001We-1tSz; Mon, 17 Jun 2024 20:29:44 +0000 Date: Mon, 17 Jun 2024 21:29:36 +0100 From: Daniel Golle To: Richard Weinberger Cc: Gagan Sidhu , ZhaoLong Wang , chengzhihao1 , dpervushin , linux-kernel , linux-mtd , Miquel Raynal , Vignesh Raghavendra , yangerkun , yi zhang Subject: Re: [PATCH v2] ubi: gluebi: Fix NULL pointer dereference caused by ftl notifier Message-ID: References: <48D8B89B-0402-4D8B-B045-86104C0C797F@mac.com> <303502000.252057.1718647746641.JavaMail.zimbra@nod.at> <90A90DA4-8B68-432D-9577-0D3635AF84BB@mac.com> <296007365.252185.1718649153090.JavaMail.zimbra@nod.at> <3841F21D-CA54-456C-9D9C-F06EEA332A30@mac.com> <136290141.252319.1718650375432.JavaMail.zimbra@nod.at> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <136290141.252319.1718650375432.JavaMail.zimbra@nod.at> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240617_133001_674212_1E17DFF2 X-CRM114-Status: GOOD ( 50.54 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgUmljaGFyZCwKCk9uIE1vbiwgSnVuIDE3LCAyMDI0IGF0IDA4OjUyOjU1UE0gKzAyMDAsIFJp Y2hhcmQgV2VpbmJlcmdlciB3cm90ZToKPiBbQ0MnaW5nIERhbmllbF0KPiAKPiAtLS0tLSBVcnNw csO8bmdsaWNoZSBNYWlsIC0tLS0tCj4gPiBWb246ICJHYWdhbiBTaWRodSIgPGJyb2x5QG1hYy5j b20+Cj4gPiBBbjogInJpY2hhcmQiIDxyaWNoYXJkQG5vZC5hdD4KPiA+IENDOiAiWmhhb0xvbmcg V2FuZyIgPHdhbmd6aGFvbG9uZzFAaHVhd2VpLmNvbT4sICJjaGVuZ3poaWhhbzEiIDxjaGVuZ3po aWhhbzFAaHVhd2VpLmNvbT4sICJkcGVydnVzaGluIgo+ID4gPGRwZXJ2dXNoaW5AZW1iZWRkZWRh bGxleS5jb20+LCAibGludXgta2VybmVsIiA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4s ICJsaW51eC1tdGQiCj4gPiA8bGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc+LCAiTWlxdWVs IFJheW5hbCIgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+LCAiVmlnbmVzaCBSYWdoYXZlbmRy YSIgPHZpZ25lc2hyQHRpLmNvbT4sCj4gPiAieWFuZ2Vya3VuIiA8eWFuZ2Vya3VuQGh1YXdlaS5j b20+LCAieWkgemhhbmciIDx5aS56aGFuZ0BodWF3ZWkuY29tPgo+ID4gR2VzZW5kZXQ6IE1vbnRh ZywgMTcuIEp1bmkgMjAyNCAyMDo0NjoxMAo+ID4gQmV0cmVmZjogUmU6IFtQQVRDSCB2Ml0gdWJp OiBnbHVlYmk6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgY2F1c2VkIGJ5IGZ0bCBub3Rp Zmllcgo+IAo+ID4+IE9uIEp1biAxNywgMjAyNCwgYXQgMTI6MzIgUE0sIFJpY2hhcmQgV2VpbmJl cmdlciA8cmljaGFyZEBub2QuYXQ+IHdyb3RlOgo+ID4+IAo+ID4+IC0tLS0tIFVyc3Byw7xuZ2xp Y2hlIE1haWwgLS0tLS0KPiA+Pj4gVm9uOiAiR2FnYW4gU2lkaHUiIDxicm9seUBtYWMuY29tPgo+ ID4+Pj4gQUZBSUNULCB0aGlzIGxvZyBsaW5lIGlzIG5vdCBwYXJ0IG9mIHRoZSBtYWlubGluZSBr ZXJuZWwuCj4gPj4+IAo+ID4+PiB0aGlzIGlzIG1haW5saW5lLiBpdOKAmXMganVzdCBub3QgNi54 LiBpdOKAmXMgNC4xNC4KPiA+PiAKPiA+PiBJJ3ZlIGRvdWJsZSBjaGVja2VkIGFuZCBkaXNhZ3Jl ZS4KPiA+PiBUaGlzIGxpbmUgY29tZXMgZnJvbToKPiA+PiBodHRwczovL2dpdC5vcGVud3J0Lm9y Zy8/cD1vcGVud3J0L29wZW53cnQuZ2l0O2E9YmxvYjtmPXRhcmdldC9saW51eC9nZW5lcmljL3Bl bmRpbmctNC4xNC80ODAtbXRkLXNldC1yb290ZnMtdG8tYmUtcm9vdC1kZXYucGF0Y2g7aD02Y2Rk YWYwMWI3NWNiNThjZmIzNzdmNTY4ZjJjMzc1YWY4N2UyZjFiO2hiPWMzYmQxMzIxZGUxZTBkODE0 ZjVjZmM0ZjQ5NGY2YjJmYjFmNTEzM2IKPiA+IAo+ID4gbm8gaSBrbm93IHRoYXQsIHRoYXTigJlz IHRoZSBwYXRjaCBpIHNob3dlZCB5b3UuIGkgbWVhbnQgdGhlIHJlc3Qgb2YgaXQgaXMKPiA+IG1h aW5saW5lLiB0aGUgcGF0Y2ggb2J2aW91c2x5IGlzIG5vdC4KPiA+PiAKPiA+PiBJbiByZWNlbnQg T3BlbldSVCBrZXJuZWxzIEkgc2VlOgo+ID4+IGh0dHBzOi8vZ2l0Lm9wZW53cnQub3JnLz9wPW9w ZW53cnQvb3BlbndydC5naXQ7YT1ibG9iO2Y9dGFyZ2V0L2xpbnV4L2dlbmVyaWMvcGVuZGluZy01 LjE1LzQ5My11Ymktc2V0LVJPT1RfREVWLXRvLXViaWJsb2NrLXJvb3Rmcy1pZi11bnNldC5wYXRj aDtoPTI2NmE2MzMxYzJhY2MwZjdjMTdkOWFjNzJmNTQ2NTlkMzFiNTYyNDk7aGI9SEVBRAo+ID4+ IAo+ID4+IExvb2tzIGxpa2UgaW4gcmVjZW50IHZlcnNpb25zIHRoZSBwYXRjaCBpbiBxdWVzdGlv biBkb2VzICpub3QqIGNhdXNlIGEKPiA+PiByZWdyZXNzaW9uLgo+ID4gCj4gPiB0aGF0IHBhdGNo IGlzIGFsc28gYXBwbGllZCBpbiBteSB2ZXJzaW9uIGFzIHdlbGwsIHNvIGkgZG9u4oCZdCBzZWUg aG93IHRoaXMgYXZvaWRzCj4gPiB0aGUgcmVncmVzc2lvbi4KPiA+IAo+ID4gaHR0cHM6Ly9naXRo dWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMvbXRkL210ZGNvcmUuYyNM Nzc0Cj4gPiAKPiA+IG1pbmUgc2F5cyAiWzYuMDUxNDI2XSBtdGQ6IGRldmljZSAxMiAocm9vdGZz KSBzZXQgdG8gYmUgcm9vdCBmaWxlc3lzdGVtIgo+ID4gCj4gPiB3aGljaCBpcyBzaW1wbHkgdGhl IGNhbGwgZnJvbSBkcml2ZXJzL210ZC9tdGRjb3JlLmMKPiA+IAo+ID4gc28gdGhlIHJvb3RmcyBk ZXZpY2UgaXMgc2V0IGNvcnJlY3RseS4gaXTigJlzIGp1c3Qgbm90IGJvb3RpbmcgZnJvbSBpdC4K PiA+IAo+ID4gdGhlIHJlZ3Jlc3Npb24gY29tZXMgZnJvbSBoYXZpbmcgR0xVRUJJK0JMT0NLIGVu YWJsZWQsIGl0IHNlZW1zLCBhcmUgdGhleQo+ID4gZmlnaHRpbmcgZm9yL29wZXJhdGluZyBvbiB0 aGUgc2FtZSBwYXJ0aXRpb24/Cj4gCj4gSSBkb24ndCBrbm93LiBMZXQncyBhc2sgRGFuaWVsLgoK SSd2ZSB0cmllZCB0byBmb2xsb3cgdXAgd2l0aCB0aGlzIHRocmVhZCBhbmQgdG8gdW5kZXJzdGFu ZCB3aGF0IHRoaXMgaXMgYWxsCmFib3V0LgoKTGV0IG1lIGFkZCBhIGZldyB0aGluZ3M6CgogKiBJ biBPcGVuV3J0IHdlIGFyZSB0cnlpbmcgdG8gZ2V0IHJpZCBvZiB0aGUgZG93bnN0cmVhbSBwYXRj aGVzCiAgIG1lbnRpb25lZCBoZXJlLiBUaGV5IHdlcmUgaW50cm9kdWNlZCBhdCBhIHRpbWUgd2hl biB3ZSBkaWQgbm90IGhhdmUKICAgRGV2aWNlIFRyZWUgYW5kIGhlbmNlIG5vIG9wdGlvbiB0byB1 c2Uga2VybmVsIGNtZGxpbmUgdG8gYXR0YWNoIFVCSSwKICAgb3IgdXNlIHJvb3Q9IHBhcmFtZXRl ci4gTm93YWRheXMgdGhleSBhcmUgbGVnYWN5IGFuZCB3ZSBzaG91bGQgbm90CiAgIHVzZSB0aGUg dmFyaW91cyBhdXRvLXJvb3RmcyBoYWNrcyBpbiBmYXZvciBvZiBkb2luZyB0aGUgc2FtZSB0aGlu ZwogICB1c2luZyAvY2hvc2VuL2Jvb3RhcmdzIGluIERUIGFuZCB0aGUgbGlrZS4KCiAqIFNob3J0 bHkgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiB1YmlibG9jayB3ZSBoYXBwaWx5IGdvdCByaWQg b2YgZ2x1ZWJpLgogICBJbiBPcGVuV3J0IGdsdWViaSBoYXMgbm90IGJlZW4gZW5hYmxlZCBmb3Ig YSB2ZXJ5IGxvbmcgdGltZSwgYW5kCiAgIGhlbmNlIEkgY2FuIHRlbGwgbGl0dGxlIGFib3V0IHBv dGVudGlhbCBwcm9ibGVtcyBpdCBtYXkgY2F1c2UsIG9yIGF0CiAgIGxlYXN0IEkgY2FuJ3QgZG8g bW9yZSB0aGFuIGFueW9uZSBlbHNlIGNhbiB3aGljaCBpcyByZWFkaW5nIHRoZSBjb2RlCiAgIGFu ZCB0aGUgbG9ncyBzdXBwbGllZCBieSB0aGUgdXNlci4KCkFsbCB0aGF0IGJlaW5nIHNhaWQgdGhl cmUgYXJlIG9mIGNvdXJzZSBjYXNlcyB3aGVyZSBvbmUgbWF5IHNpbXBseQpyZXF1aXJlIHRvIHVz ZSBhIHZlcnkgb2xkIGtlcm5lbCAoNC4xNCBoZXJlKSBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJ1 bgpwcm9wcmlldGFyeSBvdXQtb2YtdHJlZSBkcml2ZXJzIChydDI4NjAgd2lmaSBoZXJlKS4gQW5k LCBvZiBjb3Vyc2UsIGlmCnlvdSBjYW4gY29tcGlsZSBhIGtlcm5lbCB3aXRoIGdsdWViaSBhbmQg dWJpYmxvY2sgYm90aCBlbmFibGVkLCB0aGVuCnRoYXQgc2hvdWxkIHdvcmsgYXMgd2VsbCBhbmQg bm90IHJlc3VsdCBpbiBlaXRoZXIgb2YgdGhlbSBnb2luZyBzb3V0aC4KClNvIHJlYWRpbmcgdGhl IGxvZ3MgSSBkbyB1bmRlcnN0YW5kIHdoYXQgaGFzIGhhcHBlbmVkOgpOb3RlIHRoYXQgdGhlIGVy cm9yIGZvciB1bmtub3duLWJsb2NrKDMxLDEyKSBpcyBFTlhJTyAoIk5vIHN1Y2ggZGV2aWNlCm9y IGFkZHJlc3MiKSwgYW5kIHRoYXQgbWFrZXMgc2Vuc2UgYXMgdGhhdCBtdGRibG9jazEyIGRldmlj ZSBpbmRlZWQKZG9lc24ndCBleGlzdDoKCj4gWyAgICA2LjQ1NzUxOF0gMWYwYiAgICAgICAgICAg IDQ2MDggbXRkYmxvY2sxMQo+IFsgICAgNi40NTc1MjNdICAoZHJpdmVyPykKPiBbICAgIDYuNDcw NzIwXSBmZTAwICAgICAgICAgICAzMzYwNCB1YmlibG9jazBfMAo+IFsgICAgNi40NzA3MjRdICAo ZHJpdmVyPykKCkFuZCB5ZXMsIHRoYXQncyBkdWUgdG8gdGhlIGFkZGVkIHRlc3RzIGZvciBtdGQt PnR5cGUgIT0gTVREX1VCSVZPTFVNRQp3aGljaCBwcmV2ZW50IG10ZGJsb2NrIGZyb20gYmVpbmcg Y3JlYXRlZCBmb3IgZ2x1ZWJpIGRldmljZXMuCgpJIHVuZGVyc3RhbmQgdGhhdCB0aGUgYm9hcmQg ZGVwZW5kcyBvbiBPcGVuV3J0J3MgcGF0Y2hlcywgYXMgYmFjayBpbiB0aGUKZGF5cyBvZiBMaW51 eCA0LjE0IE1UNzYyMSB3YXMgc3RpbGwgdXNpbmcgcGxhdGZvcm0gQyBjb2RlIGZvciBlYWNoIGJv YXJkCmFuZCB0aGVyZSB3YXMgbm8gd2F5IHRvIHNldCwgYXBwZW5kIG9yIHJlcGxhY2UgYm9vdGFy Z3MgZnJvbSBEVCwgc2ltcGx5CmJlY2F1c2UgdGhlcmUgaXNuJ3QgRFQuCgpBcyBhdCB0aGUgdGlt ZSBhbHNvIHViaWJsb2NrIHdhc24ndCB1c2VkIGFuZCBhbHNvIG1vc3QgbGlrZWx5IHdvbid0IHdv cmsKd2l0aCB0aGF0IHNlbWktcHJvcHJpZXRhcnkgZmlybXdhcmUgYmFzZWQgTGludXggNC4xNCB3 aGljaCBleHBlY3RzIEpGRlMyCnRvIGJlIHVzZWQsIG15IHN1Z2dlc3Rpb24gaXMgdG8gZGlzYWJs ZWQgQ09ORklHX0ZUTCAoaWYgaXQgaXNuJ3QgYWxyZWFkeQpkaXNhYmxlZCBhbnl3YXkpIGFuZCBh cHBseSB0aGlzIHBhdGNoICh3aGljaCBzaG91bGQgYmUgZnVydGhlcgpkaXNjdXNzZWQpIGluIG9y ZGVyIHRvIGZpeCBjb21taXQgKCJtdGQ6IEZpeCBnbHVlYmkgTlVMTCBwb2ludGVyCmRlcmVmZXJl bmNlIGNhdXNlZCBieSBmdGwgbm90aWZpZXIiKToKCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9t dGRfYmxrZGV2cy5jIGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwppbmRleCAzY2FhMDcxN2Q0 NmMuLjNlZjU3ZGQ1NjI4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwor KysgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCkBAIC00NjEsNyArNDYxLDcgQEAgc3RhdGlj IHZvaWQgYmxrdHJhbnNfbm90aWZ5X2FkZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKIHsKIAlzdHJ1 Y3QgbXRkX2Jsa3RyYW5zX29wcyAqdHI7CiAKLQlpZiAobXRkLT50eXBlID09IE1URF9BQlNFTlQg fHwgbXRkLT50eXBlID09IE1URF9VQklWT0xVTUUpCisJaWYgKG10ZC0+dHlwZSA9PSBNVERfQUJT RU5UIHx8IChJU19FTkFCTEVEKENPTkZJR19GVEwpICYmIG10ZC0+dHlwZSA9PSBNVERfVUJJVk9M VU1FKSkKIAkJcmV0dXJuOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0ciwgJmJsa3RyYW5zX21h am9ycywgbGlzdCkKQEAgLTUwMSw3ICs1MDEsNyBAQCBpbnQgcmVnaXN0ZXJfbXRkX2Jsa3RyYW5z KHN0cnVjdCBtdGRfYmxrdHJhbnNfb3BzICp0cikKIAltdXRleF9sb2NrKCZtdGRfdGFibGVfbXV0 ZXgpOwogCWxpc3RfYWRkKCZ0ci0+bGlzdCwgJmJsa3RyYW5zX21ham9ycyk7CiAJbXRkX2Zvcl9l YWNoX2RldmljZShtdGQpCi0JCWlmIChtdGQtPnR5cGUgIT0gTVREX0FCU0VOVCAmJiBtdGQtPnR5 cGUgIT0gTVREX1VCSVZPTFVNRSkKKwkJaWYgKG10ZC0+dHlwZSAhPSBNVERfQUJTRU5UICYmICgh SVNfRU5BQkxFRChDT05GSUdfRlRMIHx8IG10ZC0+dHlwZSAhPSBNVERfVUJJVk9MVU1FKSkpCiAJ CQl0ci0+YWRkX210ZCh0ciwgbXRkKTsKIAltdXRleF91bmxvY2soJm10ZF90YWJsZV9tdXRleCk7 CiAJcmV0dXJuIDA7CgoKTGV0IG1lIGtub3cgaWYgdGhhdCBoZWxwcyBhbmQgbGV0cyBkaXNjdXNz IGlmIGl0IGNvdWxkIGJlIGNvbnNpZGVyZWQgZm9yCmJlaW5nIGFwcGxpZWQgaW4gdXBzdHJlYW0g TGludXguCgo+IAo+ID4gCj4gPj4gCj4gPj4+PiAoMzEsIDEyKSB3b3VsZCBiZSBtdGRibG9jazEy Lgo+ID4+Pj4gSG93IGRvZXMgeW91ciBrZXJuZWwga25vdyB0aGF0IG10ZGJsb2NrMTIgc2hhbGwg YmUgdGhlIHJvb3Rmcz8KPiA+Pj4gCj4gPj4+IHRoaXMgaXMgYW4gb3BlbndydCBhcHByb2FjaDog aHR0cHM6Ly9vcGVud3J0Lm9yZy9kb2NzL3RlY2hyZWYvZmlsZXN5c3RlbXMgKHVuZGVyCj4gPj4+ IOKAnHRlY2huaWNhbCBkZXRhaWxz4oCdLCB0aGlyZCBwYXJhZ3JhcGgpCj4gPj4+IAo+ID4+PiBl c3NlbnRpYWxseSB0aGVyZeKAmXMgYSBmZWF0dXJlIHRoZXkgYWRkIHRvIHRoZSBrZXJuZWwgKHZp YSBwYXRjaCkgd2hlcmUgeW91IGNhbgo+ID4+PiBlbmFibGUgYSBmZWF0dXJlIHRoYXQgc2V0cyB0 aGUgcm9vdCBkZXZpY2UgYmFzZWQgb24gdGhlIG5hbWUgb2YgdGhlIHBhcnRpdGlvbi4KPiA+PiAK PiA+PiBTbywgdGhpcyBpcyBhbGwgbm90IG1haW5saW5lLiA6LS8KPiA+IAo+ID4gaSBkaWQgc2F5 IG9wZW53cnQgYXQgdGhlIHN0YXJ0LCBhbmQgaSB0aGluayB0aGF04oCZcyBwcmV0dHkgY2xvc2Ug dG8gbWFpbmxpbmUgYXMKPiA+IGl0IGdldHMuCj4gPiAKPiA+IHNvbWV0aW1lcyB0aGVzZSBwYXRj aGVzIGFyZW7igJl0IGFwcHJvcHJpYXRlIHRvIHB1c2ggdXBzdHJlYW0uIHRoaXMgb25lIGlzIG5v dCB0aGUKPiA+IG9uZSBjYXVzaW5nIHRoZSBpc3N1ZS4KPiA+IAo+ID4gaXQgc2VlbXMgdG8gbWUg dGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCBHTFVFQkkrQkxPQ0sgcGxheWluZyB0b2dldGhl ci4KPiA+IAo+ID4gYXMgZmFyIGFzIGkgY2FuIHNlZSwgdGhlIHNldHRpbmcgb2YgdGhlIGRldmlj ZSBpcyBiZWluZyBkb2luZyBieSBtdGRjb3JlLmMKPiA+IAo+ID4gaXTigJlzIGp1c3Qgbm90IHdv cmtpbmcgd2l0aCBnbHVlYmkgYW5kIGJsb2NrIGFyZSBlbmFibGVkLCBhbmQgaSBuZWVkIHRvIGtu b3cKPiA+IHdoZXRoZXIgZGlzYWJsaW5nIGdsdWViaSB3aWxsIGFsbG93IGl0IHRvIHdvcmsuCj4g PiAKPiA+IGluIG90aGVyIHdvcmRzLCBpcyBpdCBwb3NzaWJsZSBmb3IgZ2x1ZWJpIHRvIHVzZSB0 aGUgcGFydGl0aW9uIGNyZWF0ZWQgYnkKPiA+IHViaV9ibG9jaywgYW5kIGFkZCB0aGUgTVREX1VC SVZPTFVNRSBmbGFnPwo+IAo+IE5vLiBVQklCbG9jayB3b3JrcyBvbiB0b3Agb2YgVUJJIHZvbHVt ZXMgYW5kIGNyZWF0ZXMgYSBibG9jayBkZXZpY2UuCj4gCj4gV2UnbGwgc29ydCB0aGlzIG91dC4g OikKPiAKPiBUaGFua3MsCj4gLy9yaWNoYXJkCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTGludXggTVREIGRpc2N1c3Npb24gbWFp bGluZyBsaXN0Cj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1tdGQvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=