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 39C59C46CD2 for ; Tue, 2 Jan 2024 06:50:43 +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=aTEedZCIH5AhqjENAWwdr7LYbiSZbpj7Ik89/Ka2oCA=; b=g3i++/6zboEEYN icFXPz/nAor6xA4YVO0vvVfUj8qwXcvSaWLDexLncYl8lpR/XIq86i732sh8hwVy4pnyS55H0vZx2 vZzSRJXOEIOJYCcGX/ThJ7FIP0lDHGlaBglR3mipPdWK8wtLbmclivDY78cwQ8VmfQOpUOFKXPYCp 4N2QJRur4rJ0mc3UCym7isK8X1KtsYYUkl1+p7ZAqdwHCCp82tVB9yJf+mP7PYVdwvCrsgSjNYAth Mt/WZ0GFDb2w1vhrAlPGLyO4lVKH3g5+8N4hTJtkjpICea0mTZxmehrp+KH8nrbr/8mfSSuiqdntY wGXX+YcUD97npIULF+wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbj-007CMW-28; Tue, 02 Jan 2024 06:50:35 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbe-007CJM-2U for linux-riscv@lists.infradead.org; Tue, 02 Jan 2024 06:50:33 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id 55635B80C03; Tue, 2 Jan 2024 06:50:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 67E95C433CA; Tue, 2 Jan 2024 06:50:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704178228; bh=X7OG37lToaBZiUGTXBzftTxzjeutlpdLOxmdbsOOHvw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pUB2cCR64ITW8HUmuUBto7jF5ROLBzoEsGsEJMKMDpkPTrLUHBmiGyr9fEAaWsx74 Zua97nqZpeCNVgGhfuCmrmxE9yp1Ztu72/JwKhmsd6/OWO2Wp91XeCWzULVomiRHJN tu/VNPSeXcNgvg0VRDfURhRzExxxaiVDYtEzTsUFzc4E8RKAwIHpFEjTtTVaCeT6yl GcmMDCclrM4jAFmT50Nt5RUc9XPLLlpaHRtpQpDkKy58ZvWl1QNNqs60Ccy9Cae+1X sU1a/NQBJR4uBvQRpGIMb2fv3BALUhr7MykvbChT9srXbfl5Ek4+wRets5Aaaaqssh ja6RhtnldPKyg== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org, Jerry Shih Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel , Heiko Stuebner , Phoebe Chen , hongrong.hsu@sifive.com, Paul Walmsley , Palmer Dabbelt , Albert Ou , Andy Chiu , =?UTF-8?q?Christoph=20M=C3=BCllner?= , Heiko Stuebner Subject: [RFC PATCH 06/13] crypto: riscv - add vector crypto accelerated AES Date: Tue, 2 Jan 2024 00:47:32 -0600 Message-ID: <20240102064743.220490-7-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240102064743.220490-1-ebiggers@kernel.org> References: <20240102064743.220490-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240101_225031_083808_D6D4EDA6 X-CRM114-Status: GOOD ( 31.06 ) 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 dGF0aW9uIG9mIEFFUyB1c2luZyB0aGUgWnZrbmVkIGV4dGVuc2lvbi4gIFRoZSBhc3NlbWJseQpj b2RlIGlzIGRlcml2ZWQgZnJvbSBPcGVuU1NMIGNvZGUgKG9wZW5zc2wvb3BlbnNzbCMyMTkyMykg dGhhdCB3YXMKZHVhbC1saWNlbnNlZCBzbyB0aGF0IGl0IGNvdWxkIGJlIHJldXNlZCBpbiB0aGUg a2VybmVsLiAgTmV2ZXJ0aGVsZXNzLAp0aGUgYXNzZW1ibHkgaGFzIGJlZW4gc2lnbmlmaWNhbnRs eSByZXdvcmtlZCBmb3IgaW50ZWdyYXRpb24gd2l0aCB0aGUKa2VybmVsLCBmb3IgZXhhbXBsZSBi eSB1c2luZyBhIHJlZ3VsYXIgLlMgZmlsZSBpbnN0ZWFkIG9mIHRoZSBzby1jYWxsZWQKcGVybGFz bSwgdXNpbmcgdGhlIGFzc2VtYmxlciBpbnN0ZWFkIG9mIGJhcmUgJy5pbnN0JywgZ3JlYXRseSBy ZWR1Y2luZwpjb2RlIGR1cGxpY2F0aW9uLCBzdXBwb3J0aW5nIEFFUy0xOTIsIGFuZCBtYWtpbmcg dGhlIGNvZGUgdXNlIHRoZSBzYW1lCkFFUyBrZXkgc3RydWN0dXJlIGFzIHRoZSBDIGNvZGUuCgpD by1kZXZlbG9wZWQtYnk6IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZy dWxsLmV1PgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVs bG5lckB2cnVsbC5ldT4KQ28tZGV2ZWxvcGVkLWJ5OiBIZWlrbyBTdHVlYm5lciA8aGVpa28uc3R1 ZWJuZXJAdnJ1bGwuZXU+ClNpZ25lZC1vZmYtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrby5zdHVl Ym5lckB2cnVsbC5ldT4KQ28tZGV2ZWxvcGVkLWJ5OiBQaG9lYmUgQ2hlbiA8cGhvZWJlLmNoZW5A c2lmaXZlLmNvbT4KU2lnbmVkLW9mZi1ieTogUGhvZWJlIENoZW4gPHBob2ViZS5jaGVuQHNpZml2 ZS5jb20+ClNpZ25lZC1vZmYtYnk6IEplcnJ5IFNoaWggPGplcnJ5LnNoaWhAc2lmaXZlLmNvbT4K Q28tZGV2ZWxvcGVkLWJ5OiBFcmljIEJpZ2dlcnMgPGViaWdnZXJzQGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IEVyaWMgQmlnZ2VycyA8ZWJpZ2dlcnNAZ29vZ2xlLmNvbT4KLS0tCiBhcmNoL3Jp c2N2L2NyeXB0by9LY29uZmlnICAgICAgICAgICAgICB8ICAxMSArKwogYXJjaC9yaXNjdi9jcnlw dG8vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9yaXNjdi9jcnlwdG8vYWVzLW1h Y3Jvcy5TICAgICAgICAgfCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9yaXNj di9jcnlwdG8vYWVzLXJpc2N2NjQtZ2x1ZS5jICAgfCAxMjMgKysrKysrKysrKysrKysrKysrKwog YXJjaC9yaXNjdi9jcnlwdG8vYWVzLXJpc2N2NjQtZ2x1ZS5oICAgfCAgMTUgKysrCiBhcmNoL3Jp c2N2L2NyeXB0by9hZXMtcmlzY3Y2NC16dmtuZWQuUyB8ICA4NCArKysrKysrKysrKysrCiA2IGZp bGVzIGNoYW5nZWQsIDM5MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9y aXNjdi9jcnlwdG8vYWVzLW1hY3Jvcy5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9j cnlwdG8vYWVzLXJpc2N2NjQtZ2x1ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9j cnlwdG8vYWVzLXJpc2N2NjQtZ2x1ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9j cnlwdG8vYWVzLXJpc2N2NjQtenZrbmVkLlMKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0 by9LY29uZmlnIGIvYXJjaC9yaXNjdi9jcnlwdG8vS2NvbmZpZwppbmRleCAxMGQ2MGVkYzAxMTBh Li4yYTdjMzY1ZjJhODZjIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnCisr KyBiL2FyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcKQEAgLTEsNSArMSwxNiBAQAogIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogCiBtZW51ICJBY2NlbGVyYXRlZCBDcnlwdG9ncmFw aGljIEFsZ29yaXRobXMgZm9yIENQVSAocmlzY3YpIgogCitjb25maWcgQ1JZUFRPX0FFU19SSVND VjY0CisJdHJpc3RhdGUgIkNpcGhlcnM6IEFFUyIKKwlkZXBlbmRzIG9uIDY0QklUICYmIFJJU0NW X0lTQV9WICYmIFRPT0xDSEFJTl9IQVNfVkVDVE9SX0NSWVBUTworCXNlbGVjdCBDUllQVE9fQUxH QVBJCisJc2VsZWN0IENSWVBUT19MSUJfQUVTCisJaGVscAorCSAgQmxvY2sgY2lwaGVyczogQUVT IGNpcGhlciBhbGdvcml0aG1zIChGSVBTLTE5NykKKworCSAgQXJjaGl0ZWN0dXJlOiByaXNjdjY0 IHVzaW5nOgorCSAgLSBadmtuZWQgdmVjdG9yIGNyeXB0byBleHRlbnNpb24KKwogZW5kbWVudQpk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L2NyeXB0 by9NYWtlZmlsZQppbmRleCBiM2I2MzMyYzlmNmQwLi5kY2E2OThjNWNiYTNlIDEwMDY0NAotLS0g YS9hcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZQorKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9NYWtl ZmlsZQpAQCAtMSw0ICsxLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seQogIwogIyBsaW51eC9hcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZQogIworCitvYmotJChD T05GSUdfQ1JZUFRPX0FFU19SSVNDVjY0KSArPSBhZXMtcmlzY3Y2NC5vCithZXMtcmlzY3Y2NC15 IDo9IGFlcy1yaXNjdjY0LWdsdWUubyBhZXMtcmlzY3Y2NC16dmtuZWQubwpkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9jcnlwdG8vYWVzLW1hY3Jvcy5TIGIvYXJjaC9yaXNjdi9jcnlwdG8vYWVzLW1h Y3Jvcy5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjJhZGEwYzcw ZjRhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9hZXMtbWFjcm9zLlMK QEAgLTAsMCArMSwxNTYgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4w IE9SIEJTRC0yLUNsYXVzZSAqLworLy8KKy8vIFRoaXMgZmlsZSBpcyBkdWFsLWxpY2Vuc2VkLCBt ZWFuaW5nIHRoYXQgeW91IGNhbiB1c2UgaXQgdW5kZXIgeW91cgorLy8gY2hvaWNlIG9mIGVpdGhl ciBvZiB0aGUgZm9sbG93aW5nIHR3byBsaWNlbnNlczoKKy8vCisvLyBDb3B5cmlnaHQgMjAyMyBU aGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8g TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMCAodGhlICJMaWNlbnNlIikuIFlv dSBjYW4gb2J0YWluCisvLyBhIGNvcHkgaW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUgc291cmNl IGRpc3RyaWJ1dGlvbiBvciBhdAorLy8gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xp Y2Vuc2UuaHRtbAorLy8KKy8vIG9yCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDIzLCBDaHJpc3Rv cGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVsbG5lckB2cnVsbC5ldT4KKy8vIENvcHlyaWdodCAo YykgMjAyMywgUGhvZWJlIENoZW4gPHBob2ViZS5jaGVuQHNpZml2ZS5jb20+CisvLyBDb3B5cmln aHQgKGMpIDIwMjMsIEplcnJ5IFNoaWggPGplcnJ5LnNoaWhAc2lmaXZlLmNvbT4KKy8vIENvcHly aWdodCAyMDI0IEdvb2dsZSBMTEMKKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOUCBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOUCBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTlAgQU5ZIFdBWSBPVVRQIE9GIFRIRSBVU0UKKy8vIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBtYWNyb3MgdGhhdCBhcmUgc2hhcmVkIGJ5 IHRoZSBvdGhlciBhZXMtKi5TIGZpbGVzLiAgVGhlCisvLyBnZW5lcmF0ZWQgY29kZSBvZiB0aGVz ZSBtYWNyb3MgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIFJJU0MtViBleHRlbnNpb25zOgorLy8g LSBSVjY0SQorLy8gLSBSSVNDLVYgVmVjdG9yICgnVicpIHdpdGggVkxFTiA+PSAxMjgKKy8vIC0g UklTQy1WIFZlY3RvciBBRVMgYmxvY2sgY2lwaGVyIGV4dGVuc2lvbiAoJ1p2a25lZCcpCisKKy8v IExvYWRzIHRoZSBBRVMgcm91bmQga2V5cyBmcm9tIFxrZXlwIGludG8gdmVjdG9yIHJlZ2lzdGVy cyBhbmQganVtcHMgdG8gY29kZQorLy8gc3BlY2lmaWMgdG8gdGhlIGxlbmd0aCBvZiB0aGUga2V5 LiAgU3BlY2lmaWNhbGx5OgorLy8gICAtIElmIEFFUy0xMjgsIGxvYWRzIHJvdW5kIGtleXMgaW50 byB2MS12MTEgYW5kIGp1bXBzIHRvIFxsYWJlbDEyOC4KKy8vICAgLSBJZiBBRVMtMTkyLCBsb2Fk cyByb3VuZCBrZXlzIGludG8gdjEtdjEzIGFuZCBqdW1wcyB0byBcbGFiZWwxOTIuCisvLyAgIC0g SWYgQUVTLTI1NiwgbG9hZHMgcm91bmQga2V5cyBpbnRvIHYxLXYxNSBhbmQgY29udGludWVzIG9u d2FyZHMuCisvLworLy8gQWxzbyBzZXRzIHZsPTQgYW5kIHZ0eXBlPWUzMixtMSx0YSxtYS4gIENs b2JiZXJzIHQwIGFuZCB0MS4KKy5tYWNybwlhZXNfYmVnaW4Ja2V5cCwgbGFiZWwxMjgsIGxhYmVs MTkyCisJbHd1CQl0MCwgNDgwKFxrZXlwKQkvLyB0MCA9IGtleSBsZW5ndGggaW4gYnl0ZXMKKwls aQkJdDEsIDI0CQkvLyB0MSA9IGtleSBsZW5ndGggZm9yIEFFUy0xOTIKKwl2c2V0aXZsaQl6ZXJv LCA0LCBlMzIsIG0xLCB0YSwgbWEKKwl2bGUzMi52CQl2MSwgKFxrZXlwKQorCWFkZGkJCVxrZXlw LCBca2V5cCwgMTYKKwl2bGUzMi52CQl2MiwgKFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5cCwg MTYKKwl2bGUzMi52CQl2MywgKFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2bGUz Mi52CQl2NCwgKFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2bGUzMi52CQl2NSwg KFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2bGUzMi52CQl2NiwgKFxrZXlwKQor CWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2bGUzMi52CQl2NywgKFxrZXlwKQorCWFkZGkJCVxr ZXlwLCBca2V5cCwgMTYKKwl2bGUzMi52CQl2OCwgKFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5 cCwgMTYKKwl2bGUzMi52CQl2OSwgKFxrZXlwKQorCWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2 bGUzMi52CQl2MTAsIChca2V5cCkKKwlhZGRpCQlca2V5cCwgXGtleXAsIDE2CisJdmxlMzIudgkJ djExLCAoXGtleXApCisJYmx0CQl0MCwgdDEsIFxsYWJlbDEyOAkvLyBJZiBBRVMtMTI4LCBnb3Rv IGxhYmVsMTI4LgorCWFkZGkJCVxrZXlwLCBca2V5cCwgMTYKKwl2bGUzMi52CQl2MTIsIChca2V5 cCkKKwlhZGRpCQlca2V5cCwgXGtleXAsIDE2CisJdmxlMzIudgkJdjEzLCAoXGtleXApCisJYmVx CQl0MCwgdDEsIFxsYWJlbDE5MgkvLyBJZiBBRVMtMTkyLCBnb3RvIGxhYmVsMTkyLgorCS8vIEVs c2UsIGl0J3MgQUVTLTI1Ni4KKwlhZGRpCQlca2V5cCwgXGtleXAsIDE2CisJdmxlMzIudgkJdjE0 LCAoXGtleXApCisJYWRkaQkJXGtleXAsIFxrZXlwLCAxNgorCXZsZTMyLnYJCXYxNSwgKFxrZXlw KQorLmVuZG0KKworLy8gRW5jcnlwdHMgXGRhdGEgdXNpbmcgenZrbmVkIGluc3RydWN0aW9ucywg dXNpbmcgdGhlIHJvdW5kIGtleXMgbG9hZGVkIGludG8KKy8vIHYxLXYxMSAoZm9yIEFFUy0xMjgp LCB2MS12MTMgKGZvciBBRVMtMTkyKSwgb3IgdjEtdjE1IChmb3IgQUVTLTI1NikuICBca2V5bGVu CisvLyBpcyB0aGUgQUVTIGtleSBsZW5ndGggaW4gYml0cy4gIHZsIGFuZCB2dHlwZSBtdXN0IGFs cmVhZHkgYmUgc2V0CisvLyBhcHByb3ByaWF0ZWx5LiAgTm90ZSB0aGF0IGlmIHZsID4gNCwgbXVs dGlwbGUgYmxvY2tzIGFyZSBlbmNyeXB0ZWQuCisubWFjcm8JYWVzX2VuY3J5cHQJZGF0YSwga2V5 bGVuCisJdmFlc3oudnMJXGRhdGEsIHYxCisJdmFlc2VtLnZzCVxkYXRhLCB2MgorCXZhZXNlbS52 cwlcZGF0YSwgdjMKKwl2YWVzZW0udnMJXGRhdGEsIHY0CisJdmFlc2VtLnZzCVxkYXRhLCB2NQor CXZhZXNlbS52cwlcZGF0YSwgdjYKKwl2YWVzZW0udnMJXGRhdGEsIHY3CisJdmFlc2VtLnZzCVxk YXRhLCB2OAorCXZhZXNlbS52cwlcZGF0YSwgdjkKKwl2YWVzZW0udnMJXGRhdGEsIHYxMAorLmlm IFxrZXlsZW4gPT0gMTI4CisJdmFlc2VmLnZzCVxkYXRhLCB2MTEKKy5lbHNlaWYgXGtleWxlbiA9 PSAxOTIKKwl2YWVzZW0udnMJXGRhdGEsIHYxMQorCXZhZXNlbS52cwlcZGF0YSwgdjEyCisJdmFl c2VmLnZzCVxkYXRhLCB2MTMKKy5lbHNlCisJdmFlc2VtLnZzCVxkYXRhLCB2MTEKKwl2YWVzZW0u dnMJXGRhdGEsIHYxMgorCXZhZXNlbS52cwlcZGF0YSwgdjEzCisJdmFlc2VtLnZzCVxkYXRhLCB2 MTQKKwl2YWVzZWYudnMJXGRhdGEsIHYxNQorLmVuZGlmCisuZW5kbQorCisvLyBTYW1lIGFzIGFl c19lbmNyeXB0LCBidXQgZGVjcnlwdHMgaW5zdGVhZCBvZiBlbmNyeXB0cy4KKy5tYWNybwlhZXNf ZGVjcnlwdAlkYXRhLCBrZXlsZW4KKy5pZiBca2V5bGVuID09IDEyOAorCXZhZXN6LnZzCVxkYXRh LCB2MTEKKy5lbHNlaWYgXGtleWxlbiA9PSAxOTIKKwl2YWVzei52cwlcZGF0YSwgdjEzCisJdmFl c2RtLnZzCVxkYXRhLCB2MTIKKwl2YWVzZG0udnMJXGRhdGEsIHYxMQorLmVsc2UKKwl2YWVzei52 cwlcZGF0YSwgdjE1CisJdmFlc2RtLnZzCVxkYXRhLCB2MTQKKwl2YWVzZG0udnMJXGRhdGEsIHYx MworCXZhZXNkbS52cwlcZGF0YSwgdjEyCisJdmFlc2RtLnZzCVxkYXRhLCB2MTEKKy5lbmRpZgor CXZhZXNkbS52cwlcZGF0YSwgdjEwCisJdmFlc2RtLnZzCVxkYXRhLCB2OQorCXZhZXNkbS52cwlc ZGF0YSwgdjgKKwl2YWVzZG0udnMJXGRhdGEsIHY3CisJdmFlc2RtLnZzCVxkYXRhLCB2NgorCXZh ZXNkbS52cwlcZGF0YSwgdjUKKwl2YWVzZG0udnMJXGRhdGEsIHY0CisJdmFlc2RtLnZzCVxkYXRh LCB2MworCXZhZXNkbS52cwlcZGF0YSwgdjIKKwl2YWVzZGYudnMJXGRhdGEsIHYxCisuZW5kbQor CisvLyBFeHBhbmRzIHRvIGFlc19lbmNyeXB0IG9yIGFlc19kZWNyeXB0IGFjY29yZGluZyB0byBc ZW5jLCB3aGljaCBpcyAxIG9yIDAuCisubWFjcm8JYWVzX2NyeXB0CWRhdGEsIGVuYywga2V5bGVu CisuaWYgXGVuYworCWFlc19lbmNyeXB0CVxkYXRhLCBca2V5bGVuCisuZWxzZQorCWFlc19kZWNy eXB0CVxkYXRhLCBca2V5bGVuCisuZW5kaWYKKy5lbmRtCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2 L2NyeXB0by9hZXMtcmlzY3Y2NC1nbHVlLmMgYi9hcmNoL3Jpc2N2L2NyeXB0by9hZXMtcmlzY3Y2 NC1nbHVlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjljN2Ix YTYzOGYyZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL2Flcy1yaXNjdjY0 LWdsdWUuYwpAQCAtMCwwICsxLDEyMyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQorLyoKKyAqIEFFUyB1c2luZyB0aGUgUklTQy1WIHZlY3RvciBjcnlwdG8gZXh0 ZW5zaW9ucworICoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBWUlVMTCBHbWJICisgKiBBdXRob3I6 IEhlaWtvIFN0dWVibmVyIDxoZWlrby5zdHVlYm5lckB2cnVsbC5ldT4KKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMjMgU2lGaXZlLCBJbmMuCisgKiBBdXRob3I6IEplcnJ5IFNoaWggPGplcnJ5LnNo aWhAc2lmaXZlLmNvbT4KKyAqLworCisjaW5jbHVkZSA8YXNtL3NpbWQuaD4KKyNpbmNsdWRlIDxh c20vdmVjdG9yLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2Flcy5oPgorI2luY2x1ZGUgPGNyeXB0by9p bnRlcm5hbC9jaXBoZXIuaD4KKyNpbmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwvc2ltZC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworI2lu Y2x1ZGUgImFlcy1yaXNjdjY0LWdsdWUuaCIKKworYXNtbGlua2FnZSB2b2lkIGFlc19lbmNyeXB0 X3p2a25lZChjb25zdCBzdHJ1Y3QgY3J5cHRvX2Flc19jdHggKmtleSwKKwkJCQkgICBjb25zdCB1 OCBpbltBRVNfQkxPQ0tfU0laRV0sCisJCQkJICAgdTggb3V0W0FFU19CTE9DS19TSVpFXSk7Cith c21saW5rYWdlIHZvaWQgYWVzX2RlY3J5cHRfenZrbmVkKGNvbnN0IHN0cnVjdCBjcnlwdG9fYWVz X2N0eCAqa2V5LAorCQkJCSAgIGNvbnN0IHU4IGluW0FFU19CTE9DS19TSVpFXSwKKwkJCQkgICB1 OCBvdXRbQUVTX0JMT0NLX1NJWkVdKTsKKworaW50IF9fcmlzY3Y2NF9hZXNfc2V0a2V5KHN0cnVj dCBjcnlwdG9fYWVzX2N0eCAqY3R4LCBjb25zdCB1OCAqa2V5LAorCQkJIHVuc2lnbmVkIGludCBr ZXlsZW4pCit7CisJLyoKKwkgKiBBbHdheXMgdXNlIHRoZSBnZW5lcmljIGtleSBleHBhbnNpb24g cm91dGluZSwgZm9yIHR3byByZWFzb25zOgorCSAqCisJICogLSB6dmtuZWQncyBrZXkgZXhwYW5z aW9uIGluc3RydWN0aW9ucyBkb24ndCBzdXBwb3J0IEFFUy0xOTIuCisJICoKKwkgKiAtIGN0eC0+ a2V5X2RlYyBhbHdheXMgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgcm91bmQga2V5 cyBmb3IKKwkgKiAgIHRoZSBFcXVpdmFsZW50IEludmVyc2UgQ2lwaGVyLCBpbiBjYXNlIHRoZSBu by1TSU1EIGZhbGxiYWNrIGlzCisJICogICB0YWtlbiBkdXJpbmcgZGVjcnlwdGlvbi4gIEJ1dCB0 aGUgenZrbmVkIGNvZGUgZG9lcyBub3QgdXNlIHRoaXMuCisJICovCisJcmV0dXJuIGFlc19leHBh bmRrZXkoY3R4LCBrZXksIGtleWxlbik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChfX3Jpc2N2NjRf YWVzX3NldGtleSk7CisKK3ZvaWQgX19yaXNjdjY0X2Flc19lbmNyeXB0KGNvbnN0IHN0cnVjdCBj cnlwdG9fYWVzX2N0eCAqY3R4LAorCQkJICAgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwlp ZiAoY3J5cHRvX3NpbWRfdXNhYmxlKCkpIHsKKwkJa2VybmVsX3ZlY3Rvcl9iZWdpbigpOworCQlh ZXNfZW5jcnlwdF96dmtuZWQoY3R4LCBzcmMsIGRzdCk7CisJCWtlcm5lbF92ZWN0b3JfZW5kKCk7 CisJfSBlbHNlIHsKKwkJYWVzX2VuY3J5cHQoY3R4LCBkc3QsIHNyYyk7CisJfQorfQorRVhQT1JU X1NZTUJPTF9HUEwoX19yaXNjdjY0X2Flc19lbmNyeXB0KTsKKworc3RhdGljIGludCByaXNjdjY0 X2Flc19zZXRrZXkoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwKKwkJCSAgICAgIGNvbnN0IHU4ICpr ZXksIHVuc2lnbmVkIGludCBrZXlsZW4pCit7CisJc3RydWN0IGNyeXB0b19hZXNfY3R4ICpjdHgg PSBjcnlwdG9fdGZtX2N0eCh0Zm0pOworCisJcmV0dXJuIF9fcmlzY3Y2NF9hZXNfc2V0a2V5KGN0 eCwga2V5LCBrZXlsZW4pOworfQorCitzdGF0aWMgdm9pZCByaXNjdjY0X2Flc19lbmNyeXB0KHN0 cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJY29uc3Qg c3RydWN0IGNyeXB0b19hZXNfY3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0Zm0pOworCisJX19y aXNjdjY0X2Flc19lbmNyeXB0KGN0eCwgZHN0LCBzcmMpOworfQorCitzdGF0aWMgdm9pZCByaXNj djY0X2Flc19kZWNyeXB0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHU4ICpkc3QsIGNvbnN0IHU4 ICpzcmMpCit7CisJY29uc3Qgc3RydWN0IGNyeXB0b19hZXNfY3R4ICpjdHggPSBjcnlwdG9fdGZt X2N0eCh0Zm0pOworCisJaWYgKGNyeXB0b19zaW1kX3VzYWJsZSgpKSB7CisJCWtlcm5lbF92ZWN0 b3JfYmVnaW4oKTsKKwkJYWVzX2RlY3J5cHRfenZrbmVkKGN0eCwgc3JjLCBkc3QpOworCQlrZXJu ZWxfdmVjdG9yX2VuZCgpOworCX0gZWxzZSB7CisJCWFlc19kZWNyeXB0KGN0eCwgZHN0LCBzcmMp OworCX0KK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHJpc2N2NjRfYWVzX2FsZyA9IHsK KwkuY3JhX2ZsYWdzID0gQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZSA9 IEFFU19CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZSA9IHNpemVvZihzdHJ1Y3QgY3J5cHRvX2Fl c19jdHgpLAorCS5jcmFfcHJpb3JpdHkgPSAzMDAsCisJLmNyYV9uYW1lID0gImFlcyIsCisJLmNy YV9kcml2ZXJfbmFtZSA9ICJhZXMtcmlzY3Y2NC16dmtuZWQiLAorCS5jcmFfY2lwaGVyID0gewor CQkuY2lhX21pbl9rZXlzaXplID0gQUVTX01JTl9LRVlfU0laRSwKKwkJLmNpYV9tYXhfa2V5c2l6 ZSA9IEFFU19NQVhfS0VZX1NJWkUsCisJCS5jaWFfc2V0a2V5ID0gcmlzY3Y2NF9hZXNfc2V0a2V5 LAorCQkuY2lhX2VuY3J5cHQgPSByaXNjdjY0X2Flc19lbmNyeXB0LAorCQkuY2lhX2RlY3J5cHQg PSByaXNjdjY0X2Flc19kZWNyeXB0LAorCX0sCisJLmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwK K307CisKK3N0YXRpYyBpbnQgX19pbml0IHJpc2N2NjRfYWVzX21vZF9pbml0KHZvaWQpCit7CisJ aWYgKHJpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFpWS05FRCkgJiYKKwkgICAg cmlzY3ZfdmVjdG9yX3ZsZW4oKSA+PSAxMjgpCisJCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxn KCZyaXNjdjY0X2Flc19hbGcpOworCisJcmV0dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyB2b2lk IF9fZXhpdCByaXNjdjY0X2Flc19tb2RfZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVy X2FsZygmcmlzY3Y2NF9hZXNfYWxnKTsKK30KKworbW9kdWxlX2luaXQocmlzY3Y2NF9hZXNfbW9k X2luaXQpOworbW9kdWxlX2V4aXQocmlzY3Y2NF9hZXNfbW9kX2ZpbmkpOworCitNT0RVTEVfREVT Q1JJUFRJT04oIkFFUyAoUklTQy1WIGFjY2VsZXJhdGVkKSIpOworTU9EVUxFX0FVVEhPUigiSGVp a28gU3R1ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1PiIpOworTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOworTU9EVUxFX0FMSUFTX0NSWVBUTygiYWVzIik7CmRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2NyeXB0by9hZXMtcmlzY3Y2NC1nbHVlLmggYi9hcmNoL3Jpc2N2L2NyeXB0by9hZXMtcmlz Y3Y2NC1nbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMGQz ODYxMzM4MDc4NAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL2Flcy1yaXNj djY0LWdsdWUuaApAQCAtMCwwICsxLDE1IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCAqLworCisjaWZuZGVmIEFFU19SSVNDVjY0X0dMVUVfSAorI2RlZmluZSBBRVNfUklT Q1Y2NF9HTFVFX0gKKworI2luY2x1ZGUgPGNyeXB0by9hZXMuaD4KKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorCitpbnQgX19yaXNjdjY0X2Flc19zZXRrZXkoc3RydWN0IGNyeXB0b19hZXNfY3R4 ICpjdHgsCisJCQkgY29uc3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbik7CisKK3ZvaWQg X19yaXNjdjY0X2Flc19lbmNyeXB0KGNvbnN0IHN0cnVjdCBjcnlwdG9fYWVzX2N0eCAqY3R4LAor CQkJICAgdTggKmRzdCwgY29uc3QgdTggKnNyYyk7CisKKyNlbmRpZiAvKiBBRVNfUklTQ1Y2NF9H TFVFX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRvL2Flcy1yaXNjdjY0LXp2a25l ZC5TIGIvYXJjaC9yaXNjdi9jcnlwdG8vYWVzLXJpc2N2NjQtenZrbmVkLlMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMzM0Njk3OGI4OWQ2YQotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL2Flcy1yaXNjdjY0LXp2a25lZC5TCkBAIC0wLDAgKzEs ODQgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIE9SIEJTRC0yLUNs YXVzZSAqLworLy8KKy8vIFRoaXMgZmlsZSBpcyBkdWFsLWxpY2Vuc2VkLCBtZWFuaW5nIHRoYXQg eW91IGNhbiB1c2UgaXQgdW5kZXIgeW91cgorLy8gY2hvaWNlIG9mIGVpdGhlciBvZiB0aGUgZm9s bG93aW5nIHR3byBsaWNlbnNlczoKKy8vCisvLyBDb3B5cmlnaHQgMjAyMyBUaGUgT3BlblNTTCBQ cm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisvLworLy8gTGljZW5zZWQgdW5k ZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMCAodGhlICJMaWNlbnNlIikuIFlvdSBjYW4gb2J0YWlu CisvLyBhIGNvcHkgaW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUgc291cmNlIGRpc3RyaWJ1dGlv biBvciBhdAorLy8gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAor Ly8KKy8vIG9yCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDIzLCBDaHJpc3RvcGggTcO8bGxuZXIg PGNocmlzdG9waC5tdWVsbG5lckB2cnVsbC5ldT4KKy8vIENvcHlyaWdodCAoYykgMjAyMywgUGhv ZWJlIENoZW4gPHBob2ViZS5jaGVuQHNpZml2ZS5jb20+CisvLyBDb3B5cmlnaHQgKGMpIDIwMjMs IEplcnJ5IFNoaWggPGplcnJ5LnNoaWhAc2lmaXZlLmNvbT4KKy8vIENvcHlyaWdodCAyMDI0IEdv b2dsZSBMTEMKKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuIElOUCBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOUCBDT05UUkFDVCwgU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTlAgQU5ZIFdBWSBPVVRQIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v IFRoZSBnZW5lcmF0ZWQgY29kZSBvZiB0aGlzIGZpbGUgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5n IFJJU0MtViBleHRlbnNpb25zOgorLy8gLSBSVjY0SQorLy8gLSBSSVNDLVYgVmVjdG9yICgnVicp IHdpdGggVkxFTiA+PSAxMjgKKy8vIC0gUklTQy1WIFZlY3RvciBBRVMgYmxvY2sgY2lwaGVyIGV4 dGVuc2lvbiAoJ1p2a25lZCcpCisKKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisKKy50ZXh0 Cisub3B0aW9uIGFyY2gsICt6dmtuZWQKKworI2luY2x1ZGUgImFlcy1tYWNyb3MuUyIKKworI2Rl ZmluZSBLRVlQCQlhMAorI2RlZmluZSBJTlAJCWExCisjZGVmaW5lIE9VVFAJCWEyCisjZGVmaW5l IExFTgkJYTMKKyNkZWZpbmUgSVZQCQlhNAorCisubWFjcm8JX19hZXNfY3J5cHRfenZrbmVkCWVu Yywga2V5bGVuCisJdmxlMzIudgkJdjE2LCAoSU5QKQorCWFlc19jcnlwdAl2MTYsIFxlbmMsIFxr ZXlsZW4KKwl2c2UzMi52CQl2MTYsIChPVVRQKQorCXJldAorLmVuZG0KKworLm1hY3JvCWFlc19j cnlwdF96dmtuZWQJZW5jCisJYWVzX2JlZ2luCUtFWVAsIDExMWYsIDIyMmYKKwlfX2Flc19jcnlw dF96dmtuZWQJXGVuYywgMjU2CisxMTE6CisJX19hZXNfY3J5cHRfenZrbmVkCVxlbmMsIDEyOAor MjIyOgorCV9fYWVzX2NyeXB0X3p2a25lZAlcZW5jLCAxOTIKKy5lbmRtCisKKy8vIHZvaWQgYWVz X2VuY3J5cHRfenZrbmVkKGNvbnN0IHN0cnVjdCBjcnlwdG9fYWVzX2N0eCAqa2V5LAorLy8JCQkg ICBjb25zdCB1OCBpblsxNl0sIHU4IG91dFsxNl0pOworU1lNX0ZVTkNfU1RBUlQoYWVzX2VuY3J5 cHRfenZrbmVkKQorCWFlc19jcnlwdF96dmtuZWQJMQorU1lNX0ZVTkNfRU5EKGFlc19lbmNyeXB0 X3p2a25lZCkKKworLy8gU2FtZSBwcm90b3R5cGUgYW5kIGNhbGxpbmcgY29udmVudGlvbiBhcyB0 aGUgZW5jcnlwdGlvbiBmdW5jdGlvbgorU1lNX0ZVTkNfU1RBUlQoYWVzX2RlY3J5cHRfenZrbmVk KQorCWFlc19jcnlwdF96dmtuZWQJMAorU1lNX0ZVTkNfRU5EKGFlc19kZWNyeXB0X3p2a25lZCkK LS0gCjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlz Y3YK