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 59760C47DD9 for ; Mon, 22 Jan 2024 00:23:29 +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:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LXQCj/0iL1IipCU6P1Tf+8eOHhqb69344ct9OpAVVVM=; b=nO233i94XiaSSM Qj+G7Mvhj/tiqwUmErmgAW+zXMThYxnHhr016yhJkareAiAA2JR984GeepFlmkus9Ly9+xXdWthYf RGLu2sr2H4aarUNjK4Wssiobz+YHAe5PvFmo1wtsiDPkKZaAxIhnMUHaTFdlxrVgNaypTa32Uj5+h XxEsgWufPCfGf2PVSpMEW1rLxm45iYJtbA6leaN6C9CZuvfX8bdbmG96NmCNZ4F8pv27qEV0ciULA 30/UdKwZV0KphX4+Q0T+CTXUrUCi9QtNOLYr3Ycqy1xesZjWJTB5KNsoKNFCcD/TAYHM45xc33VnF nVbO+vWpADT/v3YDTysg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rRi5m-00AFpA-0D; Mon, 22 Jan 2024 00:23:10 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rRi5f-00AFnA-36 for linux-riscv@lists.infradead.org; Mon, 22 Jan 2024 00:23:07 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 6C67B6101F; Mon, 22 Jan 2024 00:23:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8803C433C7; Mon, 22 Jan 2024 00:23:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705882983; bh=4Ha/UV6gXKRUBFjdEe89uT+I/5SkE6jha5EbdgOOn5U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aGYbGawkUAdSFn9eetZab427ugWpSngzAKn39zb/KfV0XD35hogsVid+QQonJvgsK K0YdhH0oPCyaCVHqUxdXPwuH3li57cij0WEl1XaA6qD7en8IFZfig4L3rqw8LDWgA7 +OhxhLYQ/f7Vjh8KCEqO0A9WiIZElIP/YYOggv526y74v399aDUUbNjuvCW1m+5bHO Klu8x56fG7z87ncgV9tGHnhF6UERjgInPkywTwmBB7n+iYI6yGkwVNGAb3MD/kzOrQ nfZ63HyeV+OX71/NdB8x62D32KKP5afaS1hzQvlb7yWYXwJTrm50zjdjd1R5ZCv26b oibqtwzpM5k8Q== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Albert Ou , Andy Chiu , Ard Biesheuvel , =?UTF-8?q?Christoph=20M=C3=BCllner?= , Heiko Stuebner , Jerry Shih , Palmer Dabbelt , Paul Walmsley , Phoebe Chen , hongrong.hsu@sifive.com, Charalampos Mitrodimas , Heiko Stuebner Subject: [PATCH v3 08/10] crypto: riscv - add vector crypto accelerated SHA-{512,384} Date: Sun, 21 Jan 2024 16:19:19 -0800 Message-ID: <20240122002024.27477-9-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240122002024.27477-1-ebiggers@kernel.org> References: <20240122002024.27477-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240121_162304_085034_D00944CA X-CRM114-Status: GOOD ( 31.02 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgoKQWRkIGFuIGltcGxlbWVu dGF0aW9uIG9mIFNIQS01MTIgYW5kIFNIQS0zODQgdXNpbmcgdGhlIFp2a25oYiBleHRlbnNpb24u ClRoZSBhc3NlbWJseSBjb2RlIGlzIGRlcml2ZWQgZnJvbSBPcGVuU1NMIGNvZGUgKG9wZW5zc2wv b3BlbnNzbCMyMTkyMykKdGhhdCB3YXMgZHVhbC1saWNlbnNlZCBzbyB0aGF0IGl0IGNvdWxkIGJl IHJldXNlZCBpbiB0aGUga2VybmVsLgpOZXZlcnRoZWxlc3MsIHRoZSBhc3NlbWJseSBoYXMgYmVl biBzaWduaWZpY2FudGx5IHJld29ya2VkIGZvcgppbnRlZ3JhdGlvbiB3aXRoIHRoZSBrZXJuZWws IGZvciBleGFtcGxlIGJ5IHVzaW5nIGEgcmVndWxhciAuUyBmaWxlCmluc3RlYWQgb2YgdGhlIHNv LWNhbGxlZCBwZXJsYXNtLCB1c2luZyB0aGUgYXNzZW1ibGVyIGluc3RlYWQgb2YgYmFyZQonLmlu c3QnLCBhbmQgZ3JlYXRseSByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uLgoKQ28tZGV2ZWxvcGVk LWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxjaGFyYWxhbXBvcy5taXRyb2RpbWFzQHZydWxs LmV1PgpTaWduZWQtb2ZmLWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxjaGFyYWxhbXBvcy5t aXRyb2RpbWFzQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlr by5zdHVlYm5lckB2cnVsbC5ldT4KU2lnbmVkLW9mZi1ieTogSGVpa28gU3R1ZWJuZXIgPGhlaWtv LnN0dWVibmVyQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IFBob2ViZSBDaGVuIDxwaG9lYmUu Y2hlbkBzaWZpdmUuY29tPgpTaWduZWQtb2ZmLWJ5OiBQaG9lYmUgQ2hlbiA8cGhvZWJlLmNoZW5A c2lmaXZlLmNvbT4KU2lnbmVkLW9mZi1ieTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUu Y29tPgpDby1kZXZlbG9wZWQtYnk6IEVyaWMgQmlnZ2VycyA8ZWJpZ2dlcnNAZ29vZ2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUuY29tPgotLS0KIGFy Y2gvcmlzY3YvY3J5cHRvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAxMSArCiBhcmNo L3Jpc2N2L2NyeXB0by9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9y aXNjdi9jcnlwdG8vc2hhNTEyLXJpc2N2NjQtZ2x1ZS5jICAgICAgIHwgMTMzICsrKysrKysrKysr KwogLi4uL3Jpc2N2L2NyeXB0by9zaGE1MTItcmlzY3Y2NC16dmtuaGItenZrYi5TIHwgMjAzICsr KysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3YvY3J5cHRvL3NoYTUxMi1yaXNjdjY0LWdsdWUuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3YvY3J5cHRvL3NoYTUxMi1yaXNjdjY0LXp2a25o Yi16dmtiLlMKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnIGIvYXJjaC9y aXNjdi9jcnlwdG8vS2NvbmZpZwppbmRleCA2ODdkYmI3MWY3ZDUwLi4wZmQwYmY0NmM5MDk5IDEw MDY0NAotLS0gYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnCisrKyBiL2FyY2gvcmlzY3YvY3J5 cHRvL0tjb25maWcKQEAgLTQzLDExICs0MywyMiBAQCBjb25maWcgQ1JZUFRPX1NIQTI1Nl9SSVND VjY0CiAJdHJpc3RhdGUgIkhhc2ggZnVuY3Rpb25zOiBTSEEtMjI0IGFuZCBTSEEtMjU2IgogCWRl cGVuZHMgb24gNjRCSVQgJiYgUklTQ1ZfSVNBX1YgJiYgVE9PTENIQUlOX0hBU19WRUNUT1JfQ1JZ UFRPCiAJc2VsZWN0IENSWVBUT19TSEEyNTYKIAloZWxwCiAJICBTSEEtMjI0IGFuZCBTSEEtMjU2 IHNlY3VyZSBoYXNoIGFsZ29yaXRobSAoRklQUyAxODApCiAKIAkgIEFyY2hpdGVjdHVyZTogcmlz Y3Y2NCB1c2luZzoKIAkgIC0gWnZrbmhhIG9yIFp2a25oYiB2ZWN0b3IgY3J5cHRvIGV4dGVuc2lv bnMKIAkgIC0gWnZrYiB2ZWN0b3IgY3J5cHRvIGV4dGVuc2lvbgogCitjb25maWcgQ1JZUFRPX1NI QTUxMl9SSVNDVjY0CisJdHJpc3RhdGUgIkhhc2ggZnVuY3Rpb25zOiBTSEEtMzg0IGFuZCBTSEEt NTEyIgorCWRlcGVuZHMgb24gNjRCSVQgJiYgUklTQ1ZfSVNBX1YgJiYgVE9PTENIQUlOX0hBU19W RUNUT1JfQ1JZUFRPCisJc2VsZWN0IENSWVBUT19TSEE1MTIKKwloZWxwCisJICBTSEEtMzg0IGFu ZCBTSEEtNTEyIHNlY3VyZSBoYXNoIGFsZ29yaXRobSAoRklQUyAxODApCisKKwkgIEFyY2hpdGVj dHVyZTogcmlzY3Y2NCB1c2luZzoKKwkgIC0gWnZrbmhiIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9u CisJICAtIFp2a2IgdmVjdG9yIGNyeXB0byBleHRlbnNpb24KKwogZW5kbWVudQpkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmls ZQppbmRleCA1NjA2NGVhNmUzZWZlLi4zNTZhOTMxZGIwZWI3IDEwMDY0NAotLS0gYS9hcmNoL3Jp c2N2L2NyeXB0by9NYWtlZmlsZQorKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZQpAQCAt NSwxMCArNSwxMyBAQCBhZXMtcmlzY3Y2NC15IDo9IGFlcy1yaXNjdjY0LWdsdWUubyBhZXMtcmlz Y3Y2NC16dmtuZWQubyBcCiAJCSBhZXMtcmlzY3Y2NC16dmtuZWQtenZiYi16dmtnLm8gYWVzLXJp c2N2NjQtenZrbmVkLXp2a2IubwogCiBvYmotJChDT05GSUdfQ1JZUFRPX0NIQUNIQV9SSVNDVjY0 KSArPSBjaGFjaGEtcmlzY3Y2NC5vCiBjaGFjaGEtcmlzY3Y2NC15IDo9IGNoYWNoYS1yaXNjdjY0 LWdsdWUubyBjaGFjaGEtcmlzY3Y2NC16dmtiLm8KIAogb2JqLSQoQ09ORklHX0NSWVBUT19HSEFT SF9SSVNDVjY0KSArPSBnaGFzaC1yaXNjdjY0Lm8KIGdoYXNoLXJpc2N2NjQteSA6PSBnaGFzaC1y aXNjdjY0LWdsdWUubyBnaGFzaC1yaXNjdjY0LXp2a2cubwogCiBvYmotJChDT05GSUdfQ1JZUFRP X1NIQTI1Nl9SSVNDVjY0KSArPSBzaGEyNTYtcmlzY3Y2NC5vCiBzaGEyNTYtcmlzY3Y2NC15IDo9 IHNoYTI1Ni1yaXNjdjY0LWdsdWUubyBzaGEyNTYtcmlzY3Y2NC16dmtuaGFfb3JfenZrbmhiLXp2 a2IubworCitvYmotJChDT05GSUdfQ1JZUFRPX1NIQTUxMl9SSVNDVjY0KSArPSBzaGE1MTItcmlz Y3Y2NC5vCitzaGE1MTItcmlzY3Y2NC15IDo9IHNoYTUxMi1yaXNjdjY0LWdsdWUubyBzaGE1MTIt cmlzY3Y2NC16dmtuaGItenZrYi5vCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0by9zaGE1 MTItcmlzY3Y2NC1nbHVlLmMgYi9hcmNoL3Jpc2N2L2NyeXB0by9zaGE1MTItcmlzY3Y2NC1nbHVl LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNDNiNTZhMDhhZWI1 MQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL3NoYTUxMi1yaXNjdjY0LWds dWUuYwpAQCAtMCwwICsxLDEzMyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb3ItbGF0ZXIKKy8qCisgKiBTSEEtNTEyIGFuZCBTSEEtMzg0IHVzaW5nIHRoZSBSSVNDLVYg dmVjdG9yIGNyeXB0byBleHRlbnNpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIzIFZSVUxM IEdtYkgKKyAqIEF1dGhvcjogSGVpa28gU3R1ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1 PgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBTaUZpdmUsIEluYy4KKyAqIEF1dGhvcjogSmVy cnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgorICovCisKKyNpbmNsdWRlIDxhc20vc2lt ZC5oPgorI2luY2x1ZGUgPGFzbS92ZWN0b3IuaD4KKyNpbmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwv aGFzaC5oPgorI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9zaW1kLmg+CisjaW5jbHVkZSA8Y3J5 cHRvL3NoYTUxMl9iYXNlLmg+CisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgorCisvKgorICogTm90ZTogdGhlIGFzbSBmdW5jdGlvbiBvbmx5IHVz ZXMgdGhlICdzdGF0ZScgZmllbGQgb2Ygc3RydWN0IHNoYTUxMl9zdGF0ZS4KKyAqIEl0IGlzIGFz c3VtZWQgdG8gYmUgdGhlIGZpcnN0IGZpZWxkLgorICovCithc21saW5rYWdlIHZvaWQgc2hhNTEy X3RyYW5zZm9ybV96dmtuaGJfenZrYigKKwlzdHJ1Y3Qgc2hhNTEyX3N0YXRlICpzdGF0ZSwgY29u c3QgdTggKmRhdGEsIGludCBudW1fYmxvY2tzKTsKKworc3RhdGljIGludCByaXNjdjY0X3NoYTUx Ml91cGRhdGUoc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAorCQkJCSB1 bnNpZ25lZCBpbnQgbGVuKQoreworCS8qCisJICogRW5zdXJlIHN0cnVjdCBzaGE1MTJfc3RhdGUg YmVnaW5zIGRpcmVjdGx5IHdpdGggdGhlIFNIQS01MTIKKwkgKiA1MTItYml0IGludGVybmFsIHN0 YXRlLCBhcyB0aGlzIGlzIHdoYXQgdGhlIGFzbSBmdW5jdGlvbiBleHBlY3RzLgorCSAqLworCUJV SUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2hhNTEyX3N0YXRlLCBzdGF0ZSkgIT0gMCk7CisK KwlpZiAoY3J5cHRvX3NpbWRfdXNhYmxlKCkpIHsKKwkJa2VybmVsX3ZlY3Rvcl9iZWdpbigpOwor CQlzaGE1MTJfYmFzZV9kb191cGRhdGUoZGVzYywgZGF0YSwgbGVuLAorCQkJCSAgICAgIHNoYTUx Ml90cmFuc2Zvcm1fenZrbmhiX3p2a2IpOworCQlrZXJuZWxfdmVjdG9yX2VuZCgpOworCX0gZWxz ZSB7CisJCWNyeXB0b19zaGE1MTJfdXBkYXRlKGRlc2MsIGRhdGEsIGxlbik7CisJfQorCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IHJpc2N2NjRfc2hhNTEyX2ZpbnVwKHN0cnVjdCBzaGFzaF9k ZXNjICpkZXNjLCBjb25zdCB1OCAqZGF0YSwKKwkJCQl1bnNpZ25lZCBpbnQgbGVuLCB1OCAqb3V0 KQoreworCWlmIChjcnlwdG9fc2ltZF91c2FibGUoKSkgeworCQlrZXJuZWxfdmVjdG9yX2JlZ2lu KCk7CisJCWlmIChsZW4pCisJCQlzaGE1MTJfYmFzZV9kb191cGRhdGUoZGVzYywgZGF0YSwgbGVu LAorCQkJCQkgICAgICBzaGE1MTJfdHJhbnNmb3JtX3p2a25oYl96dmtiKTsKKwkJc2hhNTEyX2Jh c2VfZG9fZmluYWxpemUoZGVzYywgc2hhNTEyX3RyYW5zZm9ybV96dmtuaGJfenZrYik7CisJCWtl cm5lbF92ZWN0b3JfZW5kKCk7CisKKwkJcmV0dXJuIHNoYTUxMl9iYXNlX2ZpbmlzaChkZXNjLCBv dXQpOworCX0KKworCXJldHVybiBjcnlwdG9fc2hhNTEyX2ZpbnVwKGRlc2MsIGRhdGEsIGxlbiwg b3V0KTsKK30KKworc3RhdGljIGludCByaXNjdjY0X3NoYTUxMl9maW5hbChzdHJ1Y3Qgc2hhc2hf ZGVzYyAqZGVzYywgdTggKm91dCkKK3sKKwlyZXR1cm4gcmlzY3Y2NF9zaGE1MTJfZmludXAoZGVz YywgTlVMTCwgMCwgb3V0KTsKK30KKworc3RhdGljIGludCByaXNjdjY0X3NoYTUxMl9kaWdlc3Qo c3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MsIGNvbnN0IHU4ICpkYXRhLAorCQkJCSB1bnNpZ25lZCBp bnQgbGVuLCB1OCAqb3V0KQoreworCXJldHVybiBzaGE1MTJfYmFzZV9pbml0KGRlc2MpID86CisJ ICAgICAgIHJpc2N2NjRfc2hhNTEyX2ZpbnVwKGRlc2MsIGRhdGEsIGxlbiwgb3V0KTsKK30KKwor c3RhdGljIHN0cnVjdCBzaGFzaF9hbGcgcmlzY3Y2NF9zaGE1MTJfYWxnc1tdID0geworCXsKKwkJ LmluaXQgPSBzaGE1MTJfYmFzZV9pbml0LAorCQkudXBkYXRlID0gcmlzY3Y2NF9zaGE1MTJfdXBk YXRlLAorCQkuZmluYWwgPSByaXNjdjY0X3NoYTUxMl9maW5hbCwKKwkJLmZpbnVwID0gcmlzY3Y2 NF9zaGE1MTJfZmludXAsCisJCS5kaWdlc3QgPSByaXNjdjY0X3NoYTUxMl9kaWdlc3QsCisJCS5k ZXNjc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2hhNTEyX3N0YXRlKSwKKwkJLmRpZ2VzdHNpemUgPSBT SEE1MTJfRElHRVNUX1NJWkUsCisJCS5iYXNlID0geworCQkJLmNyYV9ibG9ja3NpemUgPSBTSEE1 MTJfQkxPQ0tfU0laRSwKKwkJCS5jcmFfcHJpb3JpdHkgPSAzMDAsCisJCQkuY3JhX25hbWUgPSAi c2hhNTEyIiwKKwkJCS5jcmFfZHJpdmVyX25hbWUgPSAic2hhNTEyLXJpc2N2NjQtenZrbmhiLXp2 a2IiLAorCQkJLmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwKKwkJfSwKKwl9LCB7CisJCS5pbml0 ID0gc2hhMzg0X2Jhc2VfaW5pdCwKKwkJLnVwZGF0ZSA9IHJpc2N2NjRfc2hhNTEyX3VwZGF0ZSwK KwkJLmZpbmFsID0gcmlzY3Y2NF9zaGE1MTJfZmluYWwsCisJCS5maW51cCA9IHJpc2N2NjRfc2hh NTEyX2ZpbnVwLAorCQkuZGVzY3NpemUgPSBzaXplb2Yoc3RydWN0IHNoYTUxMl9zdGF0ZSksCisJ CS5kaWdlc3RzaXplID0gU0hBMzg0X0RJR0VTVF9TSVpFLAorCQkuYmFzZSA9IHsKKwkJCS5jcmFf YmxvY2tzaXplID0gU0hBMzg0X0JMT0NLX1NJWkUsCisJCQkuY3JhX3ByaW9yaXR5ID0gMzAwLAor CQkJLmNyYV9uYW1lID0gInNoYTM4NCIsCisJCQkuY3JhX2RyaXZlcl9uYW1lID0gInNoYTM4NC1y aXNjdjY0LXp2a25oYi16dmtiIiwKKwkJCS5jcmFfbW9kdWxlID0gVEhJU19NT0RVTEUsCisJCX0s CisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHJpc2N2NjRfc2hhNTEyX21vZF9pbml0KHZv aWQpCit7CisJaWYgKHJpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFpWS05IQikg JiYKKwkgICAgcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgWlZLQikgJiYKKwkg ICAgcmlzY3ZfdmVjdG9yX3ZsZW4oKSA+PSAxMjgpCisJCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJf c2hhc2hlcyhyaXNjdjY0X3NoYTUxMl9hbGdzLAorCQkJCQkgICAgICAgQVJSQVlfU0laRShyaXNj djY0X3NoYTUxMl9hbGdzKSk7CisKKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIHZvaWQg X19leGl0IHJpc2N2NjRfc2hhNTEyX21vZF9leGl0KHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0 ZXJfc2hhc2hlcyhyaXNjdjY0X3NoYTUxMl9hbGdzLAorCQkJCSAgQVJSQVlfU0laRShyaXNjdjY0 X3NoYTUxMl9hbGdzKSk7Cit9CisKK21vZHVsZV9pbml0KHJpc2N2NjRfc2hhNTEyX21vZF9pbml0 KTsKK21vZHVsZV9leGl0KHJpc2N2NjRfc2hhNTEyX21vZF9leGl0KTsKKworTU9EVUxFX0RFU0NS SVBUSU9OKCJTSEEtNTEyIChSSVNDLVYgYWNjZWxlcmF0ZWQpIik7CitNT0RVTEVfQVVUSE9SKCJI ZWlrbyBTdHVlYm5lciA8aGVpa28uc3R1ZWJuZXJAdnJ1bGwuZXU+Iik7CitNT0RVTEVfTElDRU5T RSgiR1BMIik7CitNT0RVTEVfQUxJQVNfQ1JZUFRPKCJzaGE1MTIiKTsKK01PRFVMRV9BTElBU19D UllQVE8oInNoYTM4NCIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9jcnlwdG8vc2hhNTEyLXJp c2N2NjQtenZrbmhiLXp2a2IuUyBiL2FyY2gvcmlzY3YvY3J5cHRvL3NoYTUxMi1yaXNjdjY0LXp2 a25oYi16dmtiLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uM2E5 YWUyMTBmOTE1OAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL3NoYTUxMi1y aXNjdjY0LXp2a25oYi16dmtiLlMKQEAgLTAsMCArMSwyMDMgQEAKKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBBcGFjaGUtMi4wIE9SIEJTRC0yLUNsYXVzZSAqLworLy8KKy8vIFRoaXMgZmls ZSBpcyBkdWFsLWxpY2Vuc2VkLCBtZWFuaW5nIHRoYXQgeW91IGNhbiB1c2UgaXQgdW5kZXIgeW91 cgorLy8gY2hvaWNlIG9mIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHR3byBsaWNlbnNlczoKKy8v CisvLyBDb3B5cmlnaHQgMjAyMyBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIu MCAodGhlICJMaWNlbnNlIikuIFlvdSBjYW4gb2J0YWluCisvLyBhIGNvcHkgaW4gdGhlIGZpbGUg TElDRU5TRSBpbiB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBvciBhdAorLy8gaHR0cHM6Ly93d3cu b3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorLy8KKy8vIG9yCisvLworLy8gQ29weXJp Z2h0IChjKSAyMDIzLCBDaHJpc3RvcGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVsbG5lckB2cnVs bC5ldT4KKy8vIENvcHlyaWdodCAoYykgMjAyMywgUGhvZWJlIENoZW4gPHBob2ViZS5jaGVuQHNp Zml2ZS5jb20+CisvLyBDb3B5cmlnaHQgMjAyNCBHb29nbGUgTExDCisvLyBBbGwgcmlnaHRzIHJl c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8g MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIFRoZSBnZW5lcmF0ZWQgY29kZSBvZiB0aGlzIGZp bGUgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIFJJU0MtViBleHRlbnNpb25zOgorLy8gLSBSVjY0 SQorLy8gLSBSSVNDLVYgVmVjdG9yICgnVicpIHdpdGggVkxFTiA+PSAxMjgKKy8vIC0gUklTQy1W IFZlY3RvciBTSEEtMiBTZWN1cmUgSGFzaCBleHRlbnNpb24gKCdadmtuaGInKQorLy8gLSBSSVND LVYgVmVjdG9yIENyeXB0b2dyYXBoeSBCaXQtbWFuaXB1bGF0aW9uIGV4dGVuc2lvbiAoJ1p2a2In KQorCisjaW5jbHVkZSA8bGludXgvY2ZpX3R5cGVzLmg+CisKKy50ZXh0Cisub3B0aW9uIGFyY2gs ICt6dmtuaGIsICt6dmtiCisKKyNkZWZpbmUgU1RBVEVQCQlhMAorI2RlZmluZSBEQVRBCQlhMQor I2RlZmluZSBOVU1fQkxPQ0tTCWEyCisKKyNkZWZpbmUgU1RBVEVQX0MJYTMKKyNkZWZpbmUgSwkJ YTQKKworI2RlZmluZSBNQVNLCQl2MAorI2RlZmluZSBJTkRJQ0VTCQl2MQorI2RlZmluZSBXMAkJ djEwCS8vIExNVUw9MgorI2RlZmluZSBXMQkJdjEyCS8vIExNVUw9MgorI2RlZmluZSBXMgkJdjE0 CS8vIExNVUw9MgorI2RlZmluZSBXMwkJdjE2CS8vIExNVUw9MgorI2RlZmluZSBWVE1QCQl2MjAJ Ly8gTE1VTD0yCisjZGVmaW5lIEZFQkEJCXYyMgkvLyBMTVVMPTIKKyNkZWZpbmUgSEdEQwkJdjI0 CS8vIExNVUw9MgorI2RlZmluZSBQUkVWX0ZFQkEJdjI2CS8vIExNVUw9MgorI2RlZmluZSBQUkVW X0hHREMJdjI4CS8vIExNVUw9MgorCisvLyBEbyA0IHJvdW5kcyBvZiBTSEEtNTEyLiAgdzAgY29u dGFpbnMgdGhlIGN1cnJlbnQgNCBtZXNzYWdlIHNjaGVkdWxlIHdvcmRzLgorLy8KKy8vIElmIG5v dCBhbGwgdGhlIG1lc3NhZ2Ugc2NoZWR1bGUgd29yZHMgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldCwg dGhlbiB0aGlzIGFsc28KKy8vIGNvbXB1dGVzIDQgbW9yZSBtZXNzYWdlIHNjaGVkdWxlIHdvcmRz LiAgdzEtdzMgY29udGFpbiB0aGUgbmV4dCAzIGdyb3VwcyBvZiA0CisvLyBtZXNzYWdlIHNjaGVk dWxlIHdvcmRzOyB0aGlzIG1hY3JvIGNvbXB1dGVzIHRoZSBncm91cCBhZnRlciB3MyBhbmQgd3Jp dGVzIGl0CisvLyB0byB3MC4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgbmV4dCAodzAsIHcxLCB3Miwg dzMpIGlzIHRoZSBjdXJyZW50ICh3MSwgdzIsIHczLAorLy8gdzApLCBzbyB0aGUgY2FsbGVyIG11 c3QgY3ljbGUgdGhyb3VnaCB0aGUgcmVnaXN0ZXJzIGFjY29yZGluZ2x5LgorLm1hY3JvCXNoYTUx Ml80cm91bmRzCWxhc3QsIHcwLCB3MSwgdzIsIHczCisJdmxlNjQudgkJVlRNUCwgKEspCisJYWRk aQkJSywgSywgMzIKKwl2YWRkLnZ2CQlWVE1QLCBWVE1QLCBcdzAKKwl2c2hhMmNsLnZ2CUhHREMs IEZFQkEsIFZUTVAKKwl2c2hhMmNoLnZ2CUZFQkEsIEhHREMsIFZUTVAKKy5pZiAhXGxhc3QKKwl2 bWVyZ2UudnZtCVZUTVAsIFx3MiwgXHcxLCBNQVNLCisJdnNoYTJtcy52dglcdzAsIFZUTVAsIFx3 MworLmVuZGlmCisuZW5kbQorCisubWFjcm8Jc2hhNTEyXzE2cm91bmRzCWxhc3QKKwlzaGE1MTJf NHJvdW5kcwlcbGFzdCwgVzAsIFcxLCBXMiwgVzMKKwlzaGE1MTJfNHJvdW5kcwlcbGFzdCwgVzEs IFcyLCBXMywgVzAKKwlzaGE1MTJfNHJvdW5kcwlcbGFzdCwgVzIsIFczLCBXMCwgVzEKKwlzaGE1 MTJfNHJvdW5kcwlcbGFzdCwgVzMsIFcwLCBXMSwgVzIKKy5lbmRtCisKKy8vIHZvaWQgc2hhNTEy X3RyYW5zZm9ybV96dmtuaGJfenZrYih1NjQgc3RhdGVbOF0sIGNvbnN0IHU4ICpkYXRhLAorLy8J CQkJICAgICBpbnQgbnVtX2Jsb2Nrcyk7CitTWU1fVFlQRURfRlVOQ19TVEFSVChzaGE1MTJfdHJh bnNmb3JtX3p2a25oYl96dmtiKQorCisJLy8gU2V0dXAgbWFzayBmb3IgdGhlIHZtZXJnZSB0byBy ZXBsYWNlIHRoZSBmaXJzdCB3b3JkIChpZHg9PTApIGluCisJLy8gbWVzc2FnZSBzY2hlZHVsaW5n LiAgVGhlcmUgYXJlIDQgd29yZHMsIHNvIGFuIDgtYml0IG1hc2sgc3VmZmljZXMuCisJdnNldGl2 bGkJemVybywgMSwgZTgsIG0xLCB0YSwgbWEKKwl2bXYudi5pCQlNQVNLLCAweDAxCisKKwkvLyBM b2FkIHRoZSBzdGF0ZS4gIFRoZSBzdGF0ZSBpcyBzdG9yZWQgYXMge2EsYixjLGQsZSxmLGcsaH0s IGJ1dCB3ZQorCS8vIG5lZWQge2YsZSxiLGF9LHtoLGcsZCxjfS4gIFRoZSBkc3QgdnR5cGUgaXMg ZTY0bTIgYW5kIHRoZSBpbmRleCB2dHlwZQorCS8vIGlzIGU4bWY0LiAgV2UgdXNlIGluZGV4LWxv YWQgd2l0aCB0aGUgaTggaW5kaWNlcyB7NDAsIDMyLCA4LCAwfSwKKwkvLyBsb2FkZWQgdXNpbmcg dGhlIDMyLWJpdCBsaXR0bGUgZW5kaWFuIHZhbHVlIDB4MDAwODIwMjguCisJbGkJCXQwLCAweDAw MDgyMDI4CisJdnNldGl2bGkJemVybywgMSwgZTMyLCBtMSwgdGEsIG1hCisJdm12LnYueAkJSU5E SUNFUywgdDAKKwlhZGRpCQlTVEFURVBfQywgU1RBVEVQLCAxNgorCXZzZXRpdmxpCXplcm8sIDQs IGU2NCwgbTIsIHRhLCBtYQorCXZsdXhlaTgudglGRUJBLCAoU1RBVEVQKSwgSU5ESUNFUworCXZs dXhlaTgudglIR0RDLCAoU1RBVEVQX0MpLCBJTkRJQ0VTCisKKy5MbmV4dF9ibG9jazoKKwlsYQkJ SywgSzUxMgorCWFkZGkJCU5VTV9CTE9DS1MsIE5VTV9CTE9DS1MsIC0xCisKKwkvLyBTYXZlIHRo ZSBwcmV2aW91cyBzdGF0ZSwgYXMgaXQncyBuZWVkZWQgbGF0ZXIuCisJdm12LnYudgkJUFJFVl9G RUJBLCBGRUJBCisJdm12LnYudgkJUFJFVl9IR0RDLCBIR0RDCisKKwkvLyBMb2FkIHRoZSBuZXh0 IDEwMjQtYml0IG1lc3NhZ2UgYmxvY2sgYW5kIGVuZGlhbi1zd2FwIGVhY2ggNjQtYml0IHdvcmQK Kwl2bGU2NC52CQlXMCwgKERBVEEpCisJdnJldjgudgkJVzAsIFcwCisJYWRkaQkJREFUQSwgREFU QSwgMzIKKwl2bGU2NC52CQlXMSwgKERBVEEpCisJdnJldjgudgkJVzEsIFcxCisJYWRkaQkJREFU QSwgREFUQSwgMzIKKwl2bGU2NC52CQlXMiwgKERBVEEpCisJdnJldjgudgkJVzIsIFcyCisJYWRk aQkJREFUQSwgREFUQSwgMzIKKwl2bGU2NC52CQlXMywgKERBVEEpCisJdnJldjgudgkJVzMsIFcz CisJYWRkaQkJREFUQSwgREFUQSwgMzIKKworCS8vIERvIHRoZSA4MCByb3VuZHMgb2YgU0hBLTUx Mi4KKwlzaGE1MTJfMTZyb3VuZHMgMAorCXNoYTUxMl8xNnJvdW5kcyAwCisJc2hhNTEyXzE2cm91 bmRzIDAKKwlzaGE1MTJfMTZyb3VuZHMgMAorCXNoYTUxMl8xNnJvdW5kcyAxCisKKwkvLyBBZGQg dGhlIHByZXZpb3VzIHN0YXRlLgorCXZhZGQudnYJCUZFQkEsIEZFQkEsIFBSRVZfRkVCQQorCXZh ZGQudnYJCUhHREMsIEhHREMsIFBSRVZfSEdEQworCisJLy8gUmVwZWF0IGlmIG1vcmUgYmxvY2tz IHJlbWFpbi4KKwlibmV6CQlOVU1fQkxPQ0tTLCAuTG5leHRfYmxvY2sKKworCS8vIFN0b3JlIHRo ZSBuZXcgc3RhdGUgYW5kIHJldHVybi4KKwl2c3V4ZWk4LnYJRkVCQSwgKFNUQVRFUCksIElORElD RVMKKwl2c3V4ZWk4LnYJSEdEQywgKFNUQVRFUF9DKSwgSU5ESUNFUworCXJldAorU1lNX0ZVTkNf RU5EKHNoYTUxMl90cmFuc2Zvcm1fenZrbmhiX3p2a2IpCisKKy5zZWN0aW9uICIucm9kYXRhIgor LnAyYWxpZ24gMworLnR5cGUgSzUxMiwgQG9iamVjdAorSzUxMjoKKwkuZHdvcmQJCTB4NDI4YTJm OThkNzI4YWUyMiwgMHg3MTM3NDQ5MTIzZWY2NWNkCisJLmR3b3JkCQkweGI1YzBmYmNmZWM0ZDNi MmYsIDB4ZTliNWRiYTU4MTg5ZGJiYworCS5kd29yZAkJMHgzOTU2YzI1YmYzNDhiNTM4LCAweDU5 ZjExMWYxYjYwNWQwMTkKKwkuZHdvcmQJCTB4OTIzZjgyYTRhZjE5NGY5YiwgMHhhYjFjNWVkNWRh NmQ4MTE4CisJLmR3b3JkCQkweGQ4MDdhYTk4YTMwMzAyNDIsIDB4MTI4MzViMDE0NTcwNmZiZQor CS5kd29yZAkJMHgyNDMxODViZTRlZTRiMjhjLCAweDU1MGM3ZGMzZDVmZmI0ZTIKKwkuZHdvcmQJ CTB4NzJiZTVkNzRmMjdiODk2ZiwgMHg4MGRlYjFmZTNiMTY5NmIxCisJLmR3b3JkCQkweDliZGMw NmE3MjVjNzEyMzUsIDB4YzE5YmYxNzRjZjY5MjY5NAorCS5kd29yZAkJMHhlNDliNjljMTllZjE0 YWQyLCAweGVmYmU0Nzg2Mzg0ZjI1ZTMKKwkuZHdvcmQJCTB4MGZjMTlkYzY4YjhjZDViNSwgMHgy NDBjYTFjYzc3YWM5YzY1CisJLmR3b3JkCQkweDJkZTkyYzZmNTkyYjAyNzUsIDB4NGE3NDg0YWE2 ZWE2ZTQ4MworCS5kd29yZAkJMHg1Y2IwYTlkY2JkNDFmYmQ0LCAweDc2Zjk4OGRhODMxMTUzYjUK KwkuZHdvcmQJCTB4OTgzZTUxNTJlZTY2ZGZhYiwgMHhhODMxYzY2ZDJkYjQzMjEwCisJLmR3b3Jk CQkweGIwMDMyN2M4OThmYjIxM2YsIDB4YmY1OTdmYzdiZWVmMGVlNAorCS5kd29yZAkJMHhjNmUw MGJmMzNkYTg4ZmMyLCAweGQ1YTc5MTQ3OTMwYWE3MjUKKwkuZHdvcmQJCTB4MDZjYTYzNTFlMDAz ODI2ZiwgMHgxNDI5Mjk2NzBhMGU2ZTcwCisJLmR3b3JkCQkweDI3YjcwYTg1NDZkMjJmZmMsIDB4 MmUxYjIxMzg1YzI2YzkyNgorCS5kd29yZAkJMHg0ZDJjNmRmYzVhYzQyYWVkLCAweDUzMzgwZDEz OWQ5NWIzZGYKKwkuZHdvcmQJCTB4NjUwYTczNTQ4YmFmNjNkZSwgMHg3NjZhMGFiYjNjNzdiMmE4 CisJLmR3b3JkCQkweDgxYzJjOTJlNDdlZGFlZTYsIDB4OTI3MjJjODUxNDgyMzUzYgorCS5kd29y ZAkJMHhhMmJmZThhMTRjZjEwMzY0LCAweGE4MWE2NjRiYmM0MjMwMDEKKwkuZHdvcmQJCTB4YzI0 YjhiNzBkMGY4OTc5MSwgMHhjNzZjNTFhMzA2NTRiZTMwCisJLmR3b3JkCQkweGQxOTJlODE5ZDZl ZjUyMTgsIDB4ZDY5OTA2MjQ1NTY1YTkxMAorCS5kd29yZAkJMHhmNDBlMzU4NTU3NzEyMDJhLCAw eDEwNmFhMDcwMzJiYmQxYjgKKwkuZHdvcmQJCTB4MTlhNGMxMTZiOGQyZDBjOCwgMHgxZTM3NmMw ODUxNDFhYjUzCisJLmR3b3JkCQkweDI3NDg3NzRjZGY4ZWViOTksIDB4MzRiMGJjYjVlMTliNDhh OAorCS5kd29yZAkJMHgzOTFjMGNiM2M1Yzk1YTYzLCAweDRlZDhhYTRhZTM0MThhY2IKKwkuZHdv cmQJCTB4NWI5Y2NhNGY3NzYzZTM3MywgMHg2ODJlNmZmM2Q2YjJiOGEzCisJLmR3b3JkCQkweDc0 OGY4MmVlNWRlZmIyZmMsIDB4NzhhNTYzNmY0MzE3MmY2MAorCS5kd29yZAkJMHg4NGM4NzgxNGEx ZjBhYjcyLCAweDhjYzcwMjA4MWE2NDM5ZWMKKwkuZHdvcmQJCTB4OTBiZWZmZmEyMzYzMWUyOCwg MHhhNDUwNmNlYmRlODJiZGU5CisJLmR3b3JkCQkweGJlZjlhM2Y3YjJjNjc5MTUsIDB4YzY3MTc4 ZjJlMzcyNTMyYgorCS5kd29yZAkJMHhjYTI3M2VjZWVhMjY2MTljLCAweGQxODZiOGM3MjFjMGMy MDcKKwkuZHdvcmQJCTB4ZWFkYTdkZDZjZGUwZWIxZSwgMHhmNTdkNGY3ZmVlNmVkMTc4CisJLmR3 b3JkCQkweDA2ZjA2N2FhNzIxNzZmYmEsIDB4MGE2MzdkYzVhMmM4OThhNgorCS5kd29yZAkJMHgx MTNmOTgwNGJlZjkwZGFlLCAweDFiNzEwYjM1MTMxYzQ3MWIKKwkuZHdvcmQJCTB4MjhkYjc3ZjUy MzA0N2Q4NCwgMHgzMmNhYWI3YjQwYzcyNDkzCisJLmR3b3JkCQkweDNjOWViZTBhMTVjOWJlYmMs IDB4NDMxZDY3YzQ5YzEwMGQ0YworCS5kd29yZAkJMHg0Y2M1ZDRiZWNiM2U0MmI2LCAweDU5N2Yy OTljZmM2NTdlMmEKKwkuZHdvcmQJCTB4NWZjYjZmYWIzYWQ2ZmFlYywgMHg2YzQ0MTk4YzRhNDc1 ODE3Cisuc2l6ZSBLNTEyLCAuIC0gSzUxMgotLSAKMi40My4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0Cmxp bnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=