From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDA42606A33B for ; Tue, 3 Nov 2026 15:05:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=eYpIwE2Y; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=XcJdAJxC 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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=Bc/R3NBCCrcCcYddNj2Nxq75aOXYcLKF+9NrND81TrE=; b=eYpIwE2YTGbWMDMFy/zP0LeE2j 3uzlrTg5gdBUryjESY8nq/Ks7bDfuvXkGxxt1TeQ2Lg8pavGcmywN6o3Dwx22r6pdEPsAo/TtlAHg Oiw5zWtvyjo96iBWkgX1pHKx01ZoZ27Wocq6SubApfxDfLJaGzb2UwqSYiUl2Fbu9/OAfOzswYR9i OZ/FBgMEcfYiDwcrWNSWSMIZB+Ybt8/4HYUCBOetClq697v3CjljxPKeIlYvhEvSUaUfJYzhmMFAo VL54Lf7YQcpDlFFWH0Rh6O6WOiK1ZmkPYO/dQJz2ArJPJy9UfPxPpEb+HJoefXHkliPsKGpcvo/an iqgvM14Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOG4b-00000002qU1-3T1j; Tue, 03 Nov 2026 15:05:17 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOG4a-00000002qTl-1cwn for linux-mtd@lists.infradead.org; Tue, 03 Nov 2026 15:05:16 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 77137609FE; Tue, 3 Nov 2026 15:05:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB29C1F00919; Tue, 3 Nov 2026 15:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793718315; bh=dDjea0I4wjxSN6qykW9v/88L/Skx9mnGP1GbHWc3uWQ=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=XcJdAJxCC+ZgL83mXehuccZjUuqgdxQOfR2jQbYxQ24ES88XeHQCc6uFyElgP7Z5l O7N1bkDtZUq4+977XBj4of3w6OMIdilv49aRWQ+Up8n5cylZBX0EK552edn6/0J6UL Lsp0usig6797LmrEPoPZd2I3cIzY7rpBSMK4eG6k1mCNQFY5a1vHfa/D8HEDUbC8Uy yUIH5vo+SV1MRq6vW5NwsdKZslai60Uc2tIx+wDFK3q5HDfRywG/sieeSgqDn32Cs4 K5XF58bFHaxditq/pomg+U9yADixUmxbDKhcMCZDYvWGGUNah/VcTyR5sAMu524tgC 8muDnfODJq10Q== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v3] mtd: virt-concat: Tear the concat down when its master goes away To: "Yuqiang Sun" , miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com Cc: amit.kumar-mahapatra@amd.com, luca.ceresoli@bootlin.com, harshit.m.mogalapalli@oracle.com, linux-mtd@lists.infradead.org In-Reply-To: <20261103143953.69642-1-izaiahsun@gmail.com> References: <20261103143953.69642-1-izaiahsun@gmail.com> Date: Tue, 03 Nov 2026 15:05:14 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG10ZDogdmlydC1jb25j YXQ6IGRhbmdsaW5nIHN1YmRldiBwb2ludGVycyBvbiByZWdpc3RyYXRpb24gZmFpbHVyZQotIFtI aWdoXSBtdGQ6IHZpcnQtY29uY2F0OiB1bmxvY2tlZCBjb25jdXJyZW50IGFjY2VzcyB0byBjb25j YXRfbm9kZV9saXN0IGFuZCBpdGVtIHN0YXRlCi0gW0hpZ2hdIG10ZDogdmlydC1jb25jYXQ6IG9w ZW4gY29uY2F0IGRldmljZSBsYWNrcyBtYXN0ZXIgcmVmIGFuZCBzdGF5cyBsaXZlIG9uIHVuYmlu ZAotLQoKY29tbWl0IGQ0YmViMGNkMmY5OGQ4ZTRmZDA1YzdlZjdkZWRmNjIzZDc1YzEyZTgKQXV0 aG9yOiBZdXFpYW5nIFN1biA8aXphaWFoc3VuQGdtYWlsLmNvbT4KCm10ZDogdmlydC1jb25jYXQ6 IFRlYXIgdGhlIGNvbmNhdCBkb3duIHdoZW4gaXRzIG1hc3RlciBnb2VzIGF3YXkKClRoaXMgY29t bWl0IHVwZGF0ZXMgdmlydHVhbCBNVEQgY29uY2F0ZW5hdGlvbiB0ZWFyZG93biB0byBtYXRjaCBw YXJ0aXRpb25zCmJ5IHRoZWlyIG1hc3RlciBkZXZpY2UgcmF0aGVyIHRoYW4gRFQgbm9kZSwgcmVn aXN0ZXJzIHRoZSBkZXZpY2UgcmV0dXJuZWQKYnkgbXRkX2NvbmNhdF9jcmVhdGUoKSBkaXJlY3Rs eSwgYW5kIHRyYWNrcyByZWZlcmVuY2VzIG9uIGJvdGggdGhlCmNvbmNhdGVuYXRlZCBkZXZpY2Ug YW5kIGl0cyBzdWJkZXZpY2UgcGFydGl0aW9ucyBhY3Jvc3MgbWFzdGVyIHVuYmluZCBhbmQKcmUt YmluZCBjeWNsZXMuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRfdmlydF9jb25jYXQu YyBiL2RyaXZlcnMvbXRkL210ZF92aXJ0X2NvbmNhdC5jCj4gaW5kZXggNDBiMzAwMDIxZGRhYS4u ODRkMDQ0YmQwMGU5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9tdGRfdmlydF9jb25jYXQu Ywo+ICsrKyBiL2RyaXZlcnMvbXRkL210ZF92aXJ0X2NvbmNhdC5jClsgLi4uIF0KPiArc3RhdGlj IGludCBtdGRfdmlydF9jb25jYXRfZ2V0X2RldmljZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKPiAr ewo+ICsJc3RydWN0IG10ZF92aXJ0X2NvbmNhdF9kZXYgKnZkZXYgPSBtdGQtPnByaXY7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGNvbmNhdC0+bnVtX3N1YmRldjsgaSsrKQo+IC0JCXB1dF9tdGRf ZGV2aWNlKGNvbmNhdC0+c3ViZGV2W2ldKTsKPiArCWtyZWZfZ2V0KCZ2ZGV2LT5yZWZzKTsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGRfdmlydF9jb25jYXRfcHV0X2Rl dmljZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKPiArewo+ICsJc3RydWN0IG10ZF92aXJ0X2NvbmNh dF9kZXYgKnZkZXYgPSBtdGQtPnByaXY7Cj4gKwo+ICsJa3JlZl9wdXQoJnZkZXYtPnJlZnMsIG10 ZF92aXJ0X2NvbmNhdF9yZWxlYXNlKTsKPiArfQo+ICsKPiArLyogVW5yZWdpc3RlciB0aGUgY29u Y2F0ZW5hdGVkIGRldmljZSBvZiBAaXRlbSwgaWYgaXQgaXMgcmVnaXN0ZXJlZCAqLwo+ICtzdGF0 aWMgdm9pZCBtdGRfdmlydF9jb25jYXRfdW5yZWdpc3RlcihzdHJ1Y3QgbXRkX3ZpcnRfY29uY2F0 X25vZGUgKml0ZW0pCj4gK3sKPiArCXN0cnVjdCBtdGRfdmlydF9jb25jYXRfZGV2ICp2ZGV2ID0g aXRlbS0+dmRldjsKPiArCj4gKwlpZiAodmRldikgewo+ICsJCWl0ZW0tPnZkZXYgPSBOVUxMOwo+ ICsJCWRlbF9tdGRfZGV2aWNlKHZkZXYtPm10ZCk7Cj4gKwkJa3JlZl9wdXQoJnZkZXYtPnJlZnMs IG10ZF92aXJ0X2NvbmNhdF9yZWxlYXNlKTsKPiArCX0KPiAgfQoKW1NldmVyaXR5OiBIaWdoXQpB cyByZXBvcnRlZCBieSBTYXNoaWtvIG9uIHYxIFsxXSwgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGNv bmNhdGVuYXRlZCBNVEQKZGV2aWNlIGlzIG9wZW4gd2hpbGUgb25lIG9mIGl0cyB1bmRlcmx5aW5n IGZsYXNoIG1hc3RlcnMgaXMgdW5ib3VuZD8KCkNPTkZJR19NVERfVklSVF9DT05DQVQgZGVwZW5k cyBvbiBDT05GSUdfTVREX1BBUlRJVElPTkVEX01BU1RFUi4gSW4KbXRkX3ZpcnRfY29uY2F0X2Ny ZWF0ZV9qb2luKCksIHZkZXYtPm10ZCBpcyBjcmVhdGVkIGJ5IG10ZF9jb25jYXRfY3JlYXRlKCkK d2l0aCB2ZGV2LT5tdGQtPnBhcmVudCA9PSBOVUxMLCB3aGlsZSBtdGQtPmRldiA9IGNvbmNhdC0+ c3ViZGV2WzBdLT5kZXYKc2V0cyB2ZGV2LT5tdGQtPmRldi5wYXJlbnQgPSAmbWFzdGVyMC0+ZGV2 IGFuZCB2ZGV2LT5tdGQtPmRldi5vZl9ub2RlID0Kc3ViZGV2WzBdLT5kZXYub2Zfbm9kZS4KCldo ZW4gYSB1c2VyIG9wZW5zIHZkZXYtPm10ZCwgX19nZXRfbXRkX2RldmljZSgpIGNhbGxzCm10ZF92 aXJ0X2NvbmNhdF9nZXRfZGV2aWNlKCkgYW5kIGluY3JlbWVudHMgdmRldi0+bXRkLT5yZWZjbnQg ZnJvbSAxIHRvIDIsCmJ1dCBiZWNhdXNlIHZkZXYtPm10ZC0+cGFyZW50IGlzIE5VTEwsIGl0IGRv ZXMgbm90IGluY3JlbWVudAptYXN0ZXIwLT5yZWZjbnQuCgpXaGVuIGEgbWFzdGVyIGlzIHVuYm91 bmQgd2hpbGUgdmRldi0+bXRkIGlzIG9wZW4sCm10ZF92aXJ0X2NvbmNhdF91bnJlZ2lzdGVyKCkg Y2FsbHMgZGVsX210ZF9kZXZpY2UodmRldi0+bXRkKSwgd2hpY2ggb25seQpkZWNyZW1lbnRzIHZk ZXYtPm10ZC0+cmVmY250IGZyb20gMiB0byAxIHdpdGhvdXQgcnVubmluZwptdGRfZGV2aWNlX3Jl bGVhc2UoKS4gVGhhdCBsZWF2ZXMgdmRldi0+bXRkIGluIG10ZF9pZHIgYW5kIHN5c2ZzIHVudGls IGl0CmlzIGNsb3NlZCwgYW5kIGJlY2F1c2UgbXRkX3ZpcnRfY29uY2F0X2dldF9kZXZpY2UoKSB1 bmNvbmRpdGlvbmFsbHkKaW5jcmVtZW50cyB2ZGV2LT5yZWZzIGFuZCByZXR1cm5zIDAsIG5ldyBj YWxsZXJzIGNhbiBzdGlsbCBvcGVuIHRoZQp1bnJlZ2lzdGVyZWQgdmRldi0+bXRkLiBJZiB0aGUg dW5ib3VuZCBtYXN0ZXIgaXMgYm91bmQgYWdhaW4gd2hpbGUgdGhlIG9sZAp2ZGV2LT5tdGQgaXMg c3RpbGwgb3BlbiwgbXRkX3ZpcnRfY29uY2F0X2NyZWF0ZV9qb2luKCkgcmVnaXN0ZXJzIGEgbmV3 CnZkZXYtPm10ZCB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIHN1YmRldlswXS0+ZGV2Lm9mX25vZGU6 IGlmIHRoYXQgRFQgbm9kZQpoYXMgYW4gbXRkIGFsaWFzLCBhZGRfbXRkX2RldmljZSgpIGZhaWxz IGlkcl9hbGxvYygpIHdpdGggLUVOT1NQQywgYW5kCm90aGVyd2lzZSBnZXRfbXRkX2RldmljZV9u bSgpIGFuZCBvZl9nZXRfbXRkX2RldmljZV9ieV9ub2RlKCkgcmV0dXJuIHRoZQpvbGQgdW5yZWdp c3RlcmVkIHZkZXYtPm10ZCBhdCB0aGUgbG93ZXIgbXRkX2lkciBpbmRleC4KCkluIGFkZGl0aW9u LCB3aGVuIG1hc3RlcjAgKHN1YmRldlswXSdzIG1hc3RlcikgaXMgdW5ib3VuZCB3aGlsZSB2ZGV2 LT5tdGQKaXMgb3BlbiwgZGVsX210ZF9kZXZpY2UobWFzdGVyMCkgZHJvcHMgbWFzdGVyMC0+cmVm Y250IGZyb20gMSB0byAwIGFuZAppbW1lZGlhdGVseSBpbnZva2VzIG10ZF9kZXZpY2VfcmVsZWFz ZShtYXN0ZXIwKSB3aGlsZSB2ZGV2LT5tdGQtPmRldiBpcwpzdGlsbCByZWdpc3RlcmVkIHdpdGgg dmRldi0+bXRkLT5kZXYucGFyZW50ID09ICZtYXN0ZXIwLT5kZXY6Cgpkcml2ZXJzL210ZC9tdGRj b3JlLmM6bXRkX2RldmljZV9yZWxlYXNlKCkgewogICAgLi4uCiAgICBkZXZpY2VfdW5yZWdpc3Rl cigmbXRkLT5kZXYpOwoKICAgIGlkcl9yZW1vdmUoJm10ZF9pZHIsIG10ZC0+aW5kZXgpOwogICAg b2Zfbm9kZV9wdXQobXRkX2dldF9vZl9ub2RlKG10ZCkpOwoKICAgIC8qIENsZWFyIGRldiBzbyBt dGQgY2FuIGJlIHNhZmVseSByZS1yZWdpc3RlcmVkIGxhdGVyIGlmIGRlc2lyZWQgKi8KICAgIG1l bXNldCgmbXRkLT5kZXYsIDAsIHNpemVvZihtdGQtPmRldikpOwogICAgLi4uCn0KCkJlY2F1c2Ug dmRldi0+bXRkLT5kZXYgaG9sZHMgYSBwYXJlbnQga29iamVjdCByZWZlcmVuY2Ugb24gbWFzdGVy MC0+ZGV2LApkZXZpY2VfdW5yZWdpc3RlcigmbWFzdGVyMC0+ZGV2KSBvbmx5IGRyb3BzIG1hc3Rl cjAtPmRldi5rb2JqLmtyZWYgZnJvbSAyCnRvIDEgKHNvIG10ZF9yZWxlYXNlKCkgZG9lcyBub3Qg cnVuKSwgYW5kIG1lbXNldCgmbWFzdGVyMC0+ZGV2LCAwLCAuLi4pCnRoZW4gemVyb2VzIG1hc3Rl cjAtPmRldiB3aGlsZSB2ZGV2LT5tdGQtPmRldiBzdGlsbCBwb2ludHMgdG8gaXQsIGxlYWRpbmcK dG8gYSBrb2JqZWN0IHJlZmNvdW50IHVuZGVyZmxvdyBhbmQgdXNlLWFmdGVyLWZyZWUgd2hlbiB2 ZGV2LT5tdGQgaXMKY2xvc2VkLgoKWyAuLi4gXQo+ICBpbnQgbXRkX3ZpcnRfY29uY2F0X2Rlc3Ry b3koc3RydWN0IG10ZF9pbmZvICptdGQpCj4gIHsKPiAtCXN0cnVjdCBtdGRfaW5mbyAqY2hpbGQs ICptYXN0ZXIgPSBtdGRfZ2V0X21hc3RlcihtdGQpOwo+IC0Jc3RydWN0IG10ZF92aXJ0X2NvbmNh dF9ub2RlICppdGVtLCAqdG1wOwo+ICsJc3RydWN0IG10ZF9pbmZvICpwYXJ0LCAqbWFzdGVyID0g bXRkX2dldF9tYXN0ZXIobXRkKTsKPiArCXN0cnVjdCBtdGRfdmlydF9jb25jYXRfbm9kZSAqaXRl bTsKPiAgCXN0cnVjdCBtdGRfY29uY2F0ICpjb25jYXQ7Cj4gLQlpbnQgaWR4LCByZXQgPSAwOwo+ IC0JYm9vbCBpc19tdGRfZm91bmQ7Cj4gLQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0 ZW0sIHRtcCwgJmNvbmNhdF9ub2RlX2xpc3QsIGhlYWQpIHsKPiAtCQlpc19tdGRfZm91bmQgPSBm YWxzZTsKPiArCWludCBpZHg7Cj4gIAo+IC0JCS8qIEZpbmQgdGhlIGNvbmNhdCBpdGVtIHRoYXQg aG9sZCB0aGUgbXRkIGRldmljZSAqLwo+IC0JCWZvciAoaWR4ID0gMDsgaWR4IDwgaXRlbS0+Y291 bnQ7IGlkeCsrKSB7Cj4gLQkJCWlmIChpdGVtLT5ub2Rlc1tpZHhdID09IG10ZC0+ZGV2Lm9mX25v ZGUpIHsKPiAtCQkJCWlzX210ZF9mb3VuZCA9IHRydWU7Cj4gLQkJCQlicmVhazsKPiAtCQkJfQo+ IC0JCX0KPiAtCQlpZiAoIWlzX210ZF9mb3VuZCkKPiAtCQkJY29udGludWU7Cj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGl0ZW0sICZjb25jYXRfbm9kZV9saXN0LCBoZWFkKSB7Cj4gIAkJY29uY2F0 ID0gaXRlbS0+Y29uY2F0Owo+ICAKPiAtCQkvKgo+IC0JCSAqIFNpbmNlIHRoaXMgY29uY2F0ZW5h dGVkIGRldmljZSBpcyBiZWluZyByZW1vdmVkLCByZXRyaWV2ZQo+IC0JCSAqIGFsbCBNVEQgZGV2 aWNlcyB0aGF0IGFyZSBwYXJ0IG9mIGl0IGFuZCByZWdpc3RlciB0aGVtCj4gLQkJICogaW5kaXZp ZHVhbGx5Lgo+IC0JCSAqLwo+IC0JCWZvciAoaWR4ID0gMDsgaWR4IDwgY29uY2F0LT5udW1fc3Vi ZGV2OyBpZHgrKykgewo+IC0JCQljaGlsZCA9IGNvbmNhdC0+c3ViZGV2W2lkeF07Cj4gLQkJCWlm IChjaGlsZC0+ZGV2Lm9mX25vZGUgIT0gbXRkLT5kZXYub2Zfbm9kZSkgewo+IC0JCQkJcmV0ID0g YWRkX210ZF9kZXZpY2UoY2hpbGQpOwo+IC0JCQkJaWYgKHJldCkKPiAtCQkJCQlnb3RvIG91dDsK PiAtCQkJfQo+IC0JCX0KPiAtCQkvKiBEZXN0cm95IHRoZSBjb25jYXQgKi8KPiAtCQlpZiAoY29u Y2F0LT5tdGQubmFtZSkgewo+IC0JCQlkZWxfbXRkX2RldmljZSgmY29uY2F0LT5tdGQpOwo+IC0J CQlrZnJlZShjb25jYXQtPm10ZC5uYW1lKTsKPiAtCQkJbXRkX3ZpcnRfY29uY2F0X3B1dF9tdGRf ZGV2aWNlcyhpdGVtLT5jb25jYXQpOwo+IC0JCQltdGRfY29uY2F0X2Rlc3Ryb3koJmNvbmNhdC0+ bXRkKTsKPiArCQlmb3IgKGlkeCA9IDA7IGlkeCA8IGl0ZW0tPmNvdW50OyBpZHgrKykgewo+ICsJ CQlwYXJ0ID0gY29uY2F0LT5zdWJkZXZbaWR4XTsKPiArCQkJaWYgKCFwYXJ0IHx8IG10ZF9nZXRf bWFzdGVyKHBhcnQpICE9IG1hc3RlcikKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJbXRkX3Zp cnRfY29uY2F0X3VucmVnaXN0ZXIoaXRlbSk7Cj4gKwkJCWNvbmNhdC0+c3ViZGV2W2lkeF0gPSBO VUxMOwo+ICsJCQljb25jYXQtPm51bV9zdWJkZXYtLTsKPiArCQkJbXRkX3ZpcnRfY29uY2F0X3B1 dF9wYXJ0KHBhcnQpOwo+ICAJCX0KPiAtCj4gLQkJbGlzdF9kZWwoJml0ZW0tPmhlYWQpOwo+IC0J CWZvciAoaWR4ID0gMDsgaWR4IDwgaXRlbS0+Y291bnQ7IGlkeCsrKQo+IC0JCQlvZl9ub2RlX3B1 dChpdGVtLT5ub2Rlc1tpZHhdKTsKPiAtCj4gLQkJa2ZyZWUoaXRlbSk7Cj4gIAl9Cj4gLQlyZXR1 cm4gMDsKPiAtb3V0Ogo+IC0JbXV0ZXhfbG9jaygmbWFzdGVyLT5tYXN0ZXIucGFydGl0aW9uc19s b2NrKTsKPiAtCWxpc3RfZGVsKCZjaGlsZC0+cGFydC5ub2RlKTsKPiAtCW11dGV4X3VubG9jaygm bWFzdGVyLT5tYXN0ZXIucGFydGl0aW9uc19sb2NrKTsKPiAtCWtmcmVlKG10ZC0+bmFtZSk7Cj4g LQlrZnJlZShtdGQpOwo+ICAKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQoKW1Nl dmVyaXR5OiBIaWdoXQpXaGVuIGEgY29uY2F0ZW5hdGVkIE1URCBkZXZpY2Ugc3BhbnMgcGFydGl0 aW9ucyBhY3Jvc3MgdHdvIHNlcGFyYXRlIG1hc3RlcgpkZXZpY2VzLCB3aGF0IHNlcmlhbGl6ZXMg Y29uY3VycmVudCBjYWxscyB0byBtdGRfdmlydF9jb25jYXRfYWRkKCksCm10ZF92aXJ0X2NvbmNh dF9jcmVhdGVfam9pbigpLCBhbmQgbXRkX3ZpcnRfY29uY2F0X2Rlc3Ryb3koKSBhY3Jvc3MgdGhl CnR3byBpbmRlcGVuZGVudCBtYXN0ZXIgZGV2aWNlcz8KCk5vbmUgb2YgdGhlIGNhbGxlcnMgaW4g bXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpLCBhZGRfbXRkX3BhcnRpdGlvbnMoKSwKb3IgbXRk X2RldmljZV91bnJlZ2lzdGVyKCkgaG9sZCBtdGRfdGFibGVfbXV0ZXggb3IgYW5vdGhlciBzaGFy ZWQgbG9jaywgYW5kCnRoZXJlIGlzIG5vIGxvY2sgaW4gZHJpdmVycy9tdGQvbXRkX3ZpcnRfY29u Y2F0LmMgcHJvdGVjdGluZwpjb25jYXRfbm9kZV9saXN0LCBpdGVtLT52ZGV2LCBjb25jYXQtPnN1 YmRldltdLCBvciBjb25jYXQtPm51bV9zdWJkZXY6CgoxLiBJZiBDUFUgMCBydW5zIG10ZF92aXJ0 X2NvbmNhdF9jcmVhdGVfam9pbigpIHdoZW4gdGhlIHNlY29uZCBtYXN0ZXIKcHJvYmVzLCBzZWVz IGl0ZW0tPmNvdW50ID09IGNvbmNhdC0+bnVtX3N1YmRldiBhbmQgIWl0ZW0tPnZkZXYsIGFuZCBi bG9ja3MKaW4ga21hbGxvYygpLCBremFsbG9jX2ZsZXgoKSwgb3IgbXRkX2NvbmNhdF9jcmVhdGUo KSBiZWZvcmUgaW5jcmVtZW50aW5nCnZkZXYtPnBhcnRzW2lkeF0tPnJlZmNudCBhbmQgc2V0dGlu ZyBpdGVtLT52ZGV2ID0gdmRldiwgQ1BVIDEgY2FuCmNvbmN1cnJlbnRseSB1bmJpbmQgdGhlIGZp cnN0IG1hc3RlciBpbiBtdGRfdmlydF9jb25jYXRfZGVzdHJveSgpLiBDUFUgMQpzZWVzIGl0ZW0t PnZkZXYgPT0gTlVMTCBpbiBtdGRfdmlydF9jb25jYXRfdW5yZWdpc3RlcihpdGVtKSwgY2xlYXJz CmNvbmNhdC0+c3ViZGV2WzBdLCBkZWNyZW1lbnRzIGNvbmNhdC0+bnVtX3N1YmRldiwgYW5kIGNh bGxzCm10ZF92aXJ0X2NvbmNhdF9wdXRfcGFydChwYXJ0KSwgZnJlZWluZyBwYXJ0IGFuZCBwYXJ0 LT5uYW1lIHdoaWxlIENQVSAwIGlzCnN0aWxsIHJlYWRpbmcgY29uY2F0LT5zdWJkZXZbMF0gaW4g c3ByaW50ZigpLCBtdGRfY29uY2F0X2NyZWF0ZSgpLCBhbmQKa3JlZl9nZXQoJnZkZXYtPnBhcnRz WzBdLT5yZWZjbnQpLgoKMi4gSWYgYm90aCBtYXN0ZXJzIGFyZSB1bmJvdW5kIGNvbmN1cnJlbnRs eSBvbiB0d28gQ1BVcywgYm90aCBjYW4gZW50ZXIKbXRkX3ZpcnRfY29uY2F0X3VucmVnaXN0ZXIo aXRlbSkgYW5kIHJlYWQgdGhlIHNhbWUgbm9uLU5VTEwgdmRldiA9Cml0ZW0tPnZkZXYgYmVmb3Jl IGl0ZW0tPnZkZXYgPSBOVUxMIGlzIHdyaXR0ZW4sIGNhdXNpbmcgYm90aCBDUFVzIHRvIGNhbGwK ZGVsX210ZF9kZXZpY2UodmRldi0+bXRkKSBhbmQga3JlZl9wdXQoJnZkZXYtPnJlZnMsCm10ZF92 aXJ0X2NvbmNhdF9yZWxlYXNlKSBhbmQgZHJvcCB0aGUgcmVnaXN0cmF0aW9uIHJlZmVyZW5jZSBv biB2ZGV2LT5yZWZzCnR3aWNlLgoKMy4gQ29uY3VycmVudCBwcm9iZXMgb2YgdHdvIG1hc3RlcnMg cGVyZm9ybSB1bnN5bmNocm9uaXplZApjb25jYXQtPm51bV9zdWJkZXYrKyB1cGRhdGVzIGluIG10 ZF92aXJ0X2NvbmNhdF9hZGQoKSBhbmQgY2FuIGJvdGggb2JzZXJ2ZQohaXRlbS0+dmRldiBhY3Jv c3MgdGhlIHNsZWVwaW5nIGFsbG9jYXRpb25zIGluCm10ZF92aXJ0X2NvbmNhdF9jcmVhdGVfam9p bigpLCByZWdpc3RlcmluZyB0d28gY29uY2F0ZW5hdGVkIGRldmljZXMgYW5kCm92ZXJ3cml0aW5n IGl0ZW0tPnZkZXYuCgpTaG91bGQgYWNjZXNzZXMgdG8gY29uY2F0X25vZGVfbGlzdCBhbmQgaXRl bSBzdGF0ZSBiZSBzZXJpYWxpemVkIHdpdGggYQptdXRleD8KCj4gQEAgLTIyNiw3ICsyNzEsMTEg QEAgYm9vbCBtdGRfdmlydF9jb25jYXRfYWRkKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJCWNv bmNhdCA9IGl0ZW0tPmNvbmNhdDsKPiAgCQlmb3IgKGlkeCA9IDA7IGlkeCA8IGl0ZW0tPmNvdW50 OyBpZHgrKykgewo+ICAJCQlpZiAoaXRlbS0+bm9kZXNbaWR4XSA9PSBtdGQtPmRldi5vZl9ub2Rl KSB7Cj4gLQkJCQljb25jYXQtPnN1YmRldltjb25jYXQtPm51bV9zdWJkZXYrK10gPSBtdGQ7Cj4g KwkJCQlpZiAoY29uY2F0LT5zdWJkZXZbaWR4XSkKPiArCQkJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJ CQlrcmVmX2luaXQoJm10ZC0+cmVmY250KTsKPiArCQkJCWNvbmNhdC0+c3ViZGV2W2lkeF0gPSBt dGQ7Cj4gKwkJCQljb25jYXQtPm51bV9zdWJkZXYrKzsKPiAgCQkJCXJldHVybiB0cnVlOwo+ICAJ CQl9Cj4gIAkJfQo+IEBAIC0yODcsNiArMzM2LDcgQEAgaW50IG10ZF92aXJ0X2NvbmNhdF9ub2Rl X2NyZWF0ZSh2b2lkKQo+ICBpbnQgbXRkX3ZpcnRfY29uY2F0X2NyZWF0ZV9qb2luKHZvaWQpCj4g IHsKPiAgCXN0cnVjdCBtdGRfdmlydF9jb25jYXRfbm9kZSAqaXRlbTsKPiArCXN0cnVjdCBtdGRf dmlydF9jb25jYXRfZGV2ICp2ZGV2Owo+ICAJc3RydWN0IG10ZF9jb25jYXQgKmNvbmNhdDsKPiAg CXN0cnVjdCBtdGRfaW5mbyAqbXRkOwo+ICAJc3NpemVfdCBuYW1lX3N6Owo+IEBAIC0zMDEsNyAr MzUxLDcgQEAgaW50IG10ZF92aXJ0X2NvbmNhdF9jcmVhdGVfam9pbih2b2lkKQo+ICAJCSAqIGNv bmNhdGVuYXRpb24gYXJlIG5vdCBoYW5keSwgY29uY2F0IE1URCBkZXZpY2UgY2FuJ3QgYmUKPiAg CQkgKiBjcmVhdGVkIGhlbmNlIHN3aXRjaCB0byBuZXh0IGNvbmNhdCBkZXZpY2UuCj4gIAkJICov Cj4gLQkJaWYgKGl0ZW0tPmNvdW50ICE9IGNvbmNhdC0+bnVtX3N1YmRldiB8fCBpdGVtLT52ZGV2 KSB7Cj4gKwkJaWYgKGl0ZW0tPmNvdW50ICE9IGNvbmNhdC0+bnVtX3N1YmRldiB8fCBpdGVtLT52 ZGV2KSB7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCS8qIENhbGN1bGF0ZSB0 aGUgbGVndGggb2YgdGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgZGV2aWNlICovCj4gQEAgLTMwOSwx MCArMzU5LDggQEAgaW50IG10ZF92aXJ0X2NvbmNhdF9jcmVhdGVfam9pbih2b2lkKQo+ICAJCQkJ bmFtZV9zeiArPSAoc3RybGVuKGNvbmNhdC0+c3ViZGV2W2lkeF0tPm5hbWUpICsgMSk7Cj4gIAkJ CW5hbWVfc3ogKz0gc3RybGVuKENPTkNBVF9QT1NURklYKTsKPiAgCQkJbmFtZSA9IGttYWxsb2Mo bmFtZV9zeiArIDEsIEdGUF9LRVJORUwpOwo+IC0JCQlpZiAoIW5hbWUpIHsKPiAtCQkJCW10ZF92 aXJ0X2NvbmNhdF9wdXRfbXRkX2RldmljZXMoY29uY2F0KTsKPiArCQkJaWYgKCFuYW1lKQo+ICAJ CQkJcmV0dXJuIC1FTk9NRU07Cj4gLQkJCX0KPiAgCj4gIAkJCXJldCA9IDA7Cj4gIAkJCWZvciAo aWR4ID0gMDsgaWR4IDwgY29uY2F0LT5udW1fc3ViZGV2OyBpZHgrKykgewo+IEBAIC0zMjEsMzQg KzM2OSw0MCBAQCBpbnQgbXRkX3ZpcnRfY29uY2F0X2NyZWF0ZV9qb2luKHZvaWQpCj4gIAkJCX0K PiAgCQkJc3ByaW50ZigobmFtZSArIHJldCksIENPTkNBVF9QT1NURklYKTsKPiAgCj4gLQkJCWlm IChjb25jYXQtPm10ZC5uYW1lKSB7Cj4gLQkJCQlyZXQgPSBtZW1jbXAoY29uY2F0LT5tdGQubmFt ZSwgbmFtZSwgbmFtZV9zeik7Cj4gLQkJCQlpZiAocmV0ID09IDApIHsKPiAtCQkJCQlrZnJlZShu YW1lKTsKPiAtCQkJCQljb250aW51ZTsKPiAtCQkJCX0KPiArCQkJdmRldiA9IGt6YWxsb2NfZmxl eCgqdmRldiwgcGFydHMsIGl0ZW0tPmNvdW50KTsKPiArCQkJaWYgKCF2ZGV2KSB7Cj4gKwkJCQlr ZnJlZShuYW1lKTsKPiArCQkJCXJldHVybiAtRU5PTUVNOwo+ICAJCQl9Cj4gKwkJCXZkZXYtPm51 bV9wYXJ0cyA9IGl0ZW0tPmNvdW50Owo+ICsKPiAgCQkJbXRkID0gbXRkX2NvbmNhdF9jcmVhdGUo Y29uY2F0LT5zdWJkZXYsIGNvbmNhdC0+bnVtX3N1YmRldiwgbmFtZSk7Cj4gIAkJCWlmICghbXRk KSB7Cj4gKwkJCQlrZnJlZSh2ZGV2KTsKPiAgCQkJCWtmcmVlKG5hbWUpOwo+ICAJCQkJcmV0dXJu IC1FTlhJTzsKPiAgCQkJfQo+IC0JCQljb25jYXQtPm10ZCA9ICptdGQ7Cj4gIAkJCS8qIEFyYml0 cmFyeSBzZXQgdGhlIGZpcnN0IGRldmljZSBhcyBwYXJlbnQgKi8KPiAtCQkJY29uY2F0LT5tdGQu ZGV2LnBhcmVudCA9IGNvbmNhdC0+c3ViZGV2WzBdLT5kZXYucGFyZW50Owo+IC0JCQljb25jYXQt Pm10ZC5kZXYgPSBjb25jYXQtPnN1YmRldlswXS0+ZGV2Owo+ICsJCQltdGQtPmRldiA9IGNvbmNh dC0+c3ViZGV2WzBdLT5kZXY7Cj4gKwkJCW10ZC0+cHJpdiA9IHZkZXY7Cj4gKwkJCW10ZC0+X2dl dF9kZXZpY2UgPSBtdGRfdmlydF9jb25jYXRfZ2V0X2RldmljZTsKPiArCQkJbXRkLT5fcHV0X2Rl dmljZSA9IG10ZF92aXJ0X2NvbmNhdF9wdXRfZGV2aWNlOwo+ICsJCQl2ZGV2LT5tdGQgPSBtdGQ7 Cj4gKwkJCWtyZWZfaW5pdCgmdmRldi0+cmVmcyk7Cj4gKwkJCWZvciAoaWR4ID0gMDsgaWR4IDwg aXRlbS0+Y291bnQ7IGlkeCsrKSB7Cj4gKwkJCQl2ZGV2LT5wYXJ0c1tpZHhdID0gY29uY2F0LT5z dWJkZXZbaWR4XTsKPiArCQkJCWtyZWZfZ2V0KCZ2ZGV2LT5wYXJ0c1tpZHhdLT5yZWZjbnQpOwo+ ICsJCQl9Cj4gIAo+ICAJCQkvKiBBZGQgdGhlIG10ZCBkZXZpY2UgKi8KPiAtCQkJcmV0ID0gYWRk X210ZF9kZXZpY2UoJmNvbmNhdC0+bXRkKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJCWdvdG8gZGVz dHJveV9jb25jYXQ7Cj4gKwkJCXJldCA9IGFkZF9tdGRfZGV2aWNlKG10ZCk7Cj4gKwkJCWlmIChy ZXQpIHsKPiArCQkJCWtyZWZfcHV0KCZ2ZGV2LT5yZWZzLCBtdGRfdmlydF9jb25jYXRfcmVsZWFz ZSk7Cj4gKwkJCQlyZXR1cm4gcmV0Owo+ICsJCQl9Cj4gKwkJCWl0ZW0tPnZkZXYgPSB2ZGV2Owo+ ICAJCX0KPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiAtCj4gLWRlc3Ryb3lfY29uY2F0Ogo+IC0J bXRkX2NvbmNhdF9kZXN0cm95KG10ZCk7Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAgfQoKW1NldmVy aXR5OiBIaWdoXQpBcyByZXBvcnRlZCBieSBTYXNoaWtvIG9uIHYyIFsyXSwgaWYgcGFydGl0aW9u IHJlZ2lzdHJhdGlvbiBvcgptdGRfdmlydF9jb25jYXRfY3JlYXRlX2pvaW4oKSBmYWlscyBkdXJp bmcgbXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpLApjYW4gaXRlbS0+Y29uY2F0LT5zdWJkZXZb aWR4XSBiZSBsZWZ0IHBvaW50aW5nIHRvIGEgcGFydGl0aW9uIHdob3NlIG1hc3RlcgptdGRfaW5m byBpcyBhYm91dCB0byBiZSBmcmVlZD8KCkR1cmluZyBtdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVy KCksIGFkZF9tdGRfcGFydGl0aW9ucygpIHBhc3NlcyBtYXRjaGluZwpwYXJ0aXRpb25zIHRvIG10 ZF92aXJ0X2NvbmNhdF9hZGQoY2hpbGQpLCB3aGljaCBzdG9yZXMgY2hpbGQgaW4KaXRlbS0+Y29u Y2F0LT5zdWJkZXZbaWR4XSwgaW5jcmVtZW50cyBjb25jYXQtPm51bV9zdWJkZXYsIGFuZCBza2lw cyBhZGRpbmcKY2hpbGQgdG8gcGFyZW50LT5wYXJ0aXRpb25zOgoKZHJpdmVycy9tdGQvbXRkcGFy dC5jOmFkZF9tdGRfcGFydGl0aW9ucygpIHsKICAgIC4uLgogICAgaWYgKElTX1JFQUNIQUJMRShD T05GSUdfTVREX1ZJUlRfQ09OQ0FUKSkgewogICAgICAgIGlmIChtdGRfdmlydF9jb25jYXRfYWRk KGNoaWxkKSkKICAgICAgICAgICAgY29udGludWU7CiAgICB9CiAgICAuLi4KZXJyX2RlbF9wYXJ0 aXRpb25zOgogICAgZGVsX210ZF9wYXJ0aXRpb25zKG1hc3Rlcik7CiAgICByZXR1cm4gcmV0Owp9 CgpJZiBhIHN1YnNlcXVlbnQgcGFydGl0aW9uIGluIGFkZF9tdGRfcGFydGl0aW9ucygpIGZhaWxz LCBlcnJfZGVsX3BhcnRpdGlvbnMKb25seSBjYWxscyBkZWxfbXRkX3BhcnRpdGlvbnMobWFzdGVy KSB3aXRob3V0IGNhbGxpbmcKbXRkX3ZpcnRfY29uY2F0X2Rlc3Ryb3kobWFzdGVyKS4gTGlrZXdp c2UsIGlmIGFkZF9tdGRfcGFydGl0aW9ucygpCnN1Y2NlZWRzIGFuZCBtdGRfdmlydF9jb25jYXRf Y3JlYXRlX2pvaW4oKSBmYWlscyBpbgptdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKCkgKGZvciBl eGFtcGxlIG9uIGttYWxsb2MoKSwga3phbGxvY19mbGV4KCksCm10ZF9jb25jYXRfY3JlYXRlKCks IG9yIGFkZF9tdGRfZGV2aWNlKCkpLCBtdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKCkKanVtcHMg dG8gb3V0OiB3aXRob3V0IGNhbGxpbmcgbXRkX3ZpcnRfY29uY2F0X2Rlc3Ryb3kobXRkKSBvcgpk ZWxfbXRkX3BhcnRpdGlvbnMobXRkKToKCmRyaXZlcnMvbXRkL210ZGNvcmUuYzptdGRfZGV2aWNl X3BhcnNlX3JlZ2lzdGVyKCkgewogICAgLi4uCiAgICBpZiAoSVNfUkVBQ0hBQkxFKENPTkZJR19N VERfVklSVF9DT05DQVQpKSB7CiAgICAgICAgcmV0ID0gbXRkX3ZpcnRfY29uY2F0X2NyZWF0ZV9q b2luKCk7CiAgICAgICAgaWYgKHJldCA8IDApCiAgICAgICAgICAgIGdvdG8gb3V0OwogICAgfQog ICAgLi4uCm91dDoKICAgIGlmIChyZXQgJiYgZGV2aWNlX2lzX3JlZ2lzdGVyZWQoJm10ZC0+ZGV2 KSkKICAgICAgICBkZWxfbXRkX2RldmljZShtdGQpOwoKICAgIHJldHVybiByZXQ7Cn0KClVubGlr ZSBwaHlzbWFwX2ZsYXNoX3Byb2JlKCkgKHdoaWNoIGNhbGxzIHBoeXNtYXBfZmxhc2hfcmVtb3Zl KCkgYW5kCm10ZF9kZXZpY2VfdW5yZWdpc3RlcigpIG9uIHByb2JlIGZhaWx1cmUpLCBtb3N0IE1U RCBkcml2ZXJzIChzdWNoIGFzCnNwaV9ub3JfcHJvYmUoKSwgc3BpbmFuZF9wcm9iZSgpLCBvciBi cmNtbmFuZF9pbml0X2NzKCkpIGRvIG5vdCBjYWxsCm10ZF9kZXZpY2VfdW5yZWdpc3RlcigpIHdo ZW4gbXRkX2RldmljZV9wYXJzZV9yZWdpc3RlcigpIHJldHVybnMgYW4gZXJyb3IsCmFuZCBpbW1l ZGlhdGVseSBmcmVlIHRoZSBtYXN0ZXIgbXRkX2luZm8uIFRoYXQgbGVhdmVzCml0ZW0tPmNvbmNh dC0+c3ViZGV2W2lkeF0gcG9pbnRpbmcgdG8gYSBwYXJ0aXRpb24gd2hvc2UgcGFydC0+cGFyZW50 CnJlZmVyZW5jZXMgdGhlIGZyZWVkIG1hc3RlciBtdGRfaW5mbzoKCjEuIFdoZW4gYW55IG90aGVy IE1URCBtYXN0ZXIgaXMgbGF0ZXIgdW5yZWdpc3RlcmVkLAptdGRfdmlydF9jb25jYXRfZGVzdHJv eSgpIGNhbGxzIG10ZF9nZXRfbWFzdGVyKHBhcnQpIG9uIGV2ZXJ5IG5vbi1OVUxMCmNvbmNhdC0+ c3ViZGV2W2lkeF0sIGRlcmVmZXJlbmNpbmcgdGhlIGZyZWVkIG1hc3RlciBtdGRfaW5mbyB2aWEK cGFydC0+cGFyZW50LgoKMi4gSWYgdGhlIGZhaWxlZCBkcml2ZXIgaXMgYm91bmQgYWdhaW4sIHRo ZSBuZXcgY2hlY2sgaWYKKGNvbmNhdC0+c3ViZGV2W2lkeF0pIHJldHVybiBmYWxzZSBpbiBtdGRf dmlydF9jb25jYXRfYWRkKCkgcmVqZWN0cyB0aGUKbmV3IHBhcnRpdGlvbiAoY2F1c2luZyBhZGRf bXRkX3BhcnRpdGlvbnMoKSB0byByZWdpc3RlciBpdCBzdGFuZGFsb25lKSBhbmQKbXRkX3ZpcnRf Y29uY2F0X2NyZWF0ZV9qb2luKCkgdGhlbiBydW5zIG10ZF9jb25jYXRfY3JlYXRlKCkgb24gdGhl IHN0YWxlCmNvbmNhdC0+c3ViZGV2W2lkeF0gd2hvc2UgbWFzdGVyIHdhcyBmcmVlZC4KCjMuIElm IG10ZF92aXJ0X2NvbmNhdF9jcmVhdGVfam9pbigpIHN1Y2NlZWRzIGZvciBhbiBlYXJsaWVyIGl0 ZW0gaW4KY29uY2F0X25vZGVfbGlzdCBhbmQgZmFpbHMgb24gYSBzdWJzZXF1ZW50IGl0ZW0sIHRo ZSBlYXJsaWVyIGl0ZW0ncwppdGVtLT52ZGV2IHJlbWFpbnMgcmVnaXN0ZXJlZCBldmVuIHRob3Vn aCBtdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKCkKZmFpbHMuCgpbMV0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvci9zYXNoaWtvLW91dGJveC0xOTMxMzVAa2VybmVsLm9yZwpbMl0gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvci8yMDI2MTEwMzA4MDMyNy45MDE5My0xLWl6YWlhaHN1bkBnbWFpbC5j b20KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hz ZXQvMjAyNjExMDMxNDM5NTMuNjk2NDItMS1pemFpYWhzdW5AZ21haWwuY29tP3BhcnQ9MQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K