Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752053AbeADIbc (ORCPT + 1 other); Thu, 4 Jan 2018 03:31:32 -0500 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:45272 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751408AbeADIba (ORCPT ); Thu, 4 Jan 2018 03:31:30 -0500 X-Amazon-filename: 0001-x86-Add-initial-retpoline-support-with-mindirect-bra.patch, 0002-x86-Replace-indirect-branches-in-asm-with-CALL_THUNK.patch, 0003-x86-Use-retpoline-for-calls-in-inline-asm.patch, smime.p7s X-IronPort-AV: E=Sophos;i="5.45,506,1508803200"; d="p7s'?scan'208,223";a="713323269" Message-ID: <1515053753.12987.70.camel@amazon.co.uk> Subject: Re: Avoid speculative indirect calls in kernel To: Andi Kleen , Thomas Gleixner CC: Alan Cox , Linus Torvalds , Greg Kroah-Hartman , Tim Chen , "Linux Kernel Mailing List" , Dave Hansen In-Reply-To: <20180104004034.wouy454tjmitkm5g@two.firstfloor.org> References: <20180103230934.15788-1-andi@firstfloor.org> <20180104000927.co5umvfzfwliqvqt@two.firstfloor.org> <20180104001501.3jof7zkrfkehnd3r@two.firstfloor.org> <20180104002916.3ff66581@alans-desktop> <20180104004034.wouy454tjmitkm5g@two.firstfloor.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEUHBwcUFBQpKSlGRkZhYWF9fX2Xl5eysrLMzMxFF+rXAAACaElEQVQ4y21UQXbbIBQE9wJALmAg6ToWON22FrhZthHgbvssUPathC7QWMful2JHSmtWwGg+zPxBCE0DU4QoJQgRgsg4w2gJjBNE8PjFBZgnQMBs+uZ1NQNQjZO3BV4AGDFC0f+l4DBG0VUAM4yv7SO8IgRdHXQ+A78HKL5OAeCfNQV5cHX8DsBUyIJKtYbt98BKaGNCKjfgFVkqYVLbkHKsRsbSCSa0T6npIqLrpRBgQKHUpQmgs9eEKaiUcooE8WWfCGVnBiUcn1uF2XhbfmN9apKnmMP2K4kizKkQWxuaVNOpU2cACIyxO1Po8ETHcXEDMVnozcejkAYA9iaD4pU0ZvNQ8VurNnTuFAYVtuIPUZW25PjDIjQAlGyffIiRQxoWAZBmJ0LTdW2Nyc0iP3DqRhxizvGJkBWZmyFVyZkddWzmBoIBVMpCCJ1CFzl98xav4VJKSSD45KbUT75ixikTphDSRh8+Uz7JLgUTAgAFwzqzjxc/nDY7WUApqY0OMdTwCKZSXplSKkgIRCHElCp8ZnhnKqXuwcNbk1L0VXE+I9alUXoHlLHl3mv7/dWQlJwtjREC7mu9L/U2jQyMUuO2EDS4q9Kl2ddm232bxIE5pjJuVwiljNn/Cfv25/T0cu5cZbwHGVq7h/zp0B4n3S99V/utD+Uo8BiGx9xCsOAV5z7/tjo4Z4z1Lvb90KZ7eFOoOeXOukqF2seo234YYuaQPpRP+cVZU5adT1Edun5Iz3z8fTz3+eSDh0Ip1c7zx1MaijGzTd/3MbRuBHz8cvcVgCMBRpOHvgu59WDhoat+nIZm+LWm9C/aaaGq5DCP9QAAAABJRU5ErkJggg== Organization: Amazon Content-Type: multipart/signed; micalg=sha-256; protocol="application/x-pkcs7-signature"; boundary="=-70iMX8rOnxvzWodoPJwP" Date: Thu, 4 Jan 2018 08:15:53 +0000 X-Mailer: Evolution 3.18.5.2-0ubuntu3.2 MIME-Version: 1.0 From: "Woodhouse, David" X-Evolution-Source: 1481217574.17989.4@uc8d3ff76b9bc5848a9cc Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: --=-70iMX8rOnxvzWodoPJwP Content-Type: multipart/mixed; boundary="=-eNvG+pcmOQIhIT9P9mb4" --=-eNvG+pcmOQIhIT9P9mb4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2018-01-03 at 16:40 -0800, Andi Kleen wrote: > >=20 > > So you say, that we finally need a perl interpreter in the kernel > > to do > > alternative patching? > I don't think perl or objtool makes sense. That would be just > incredibly > fragile because compilers can reorder and mix code.=C2=A0 >=20 > It could be done with a gcc change I suppose. That should be > reliable. >=20 > But that would need to be developed first. We don't have it right > now. >=20 > As the first step a compile time approach should be sufficient. > We can add a CONFIG option so people can chose at compile time. >=20 > Then later we can investigate run time patching. My original code, that Intel had included in the osv_v7.1 patch set, already did runtime patching for all the explicit call sites: +.macro JMP_THUNK reg:req +#ifdef RETPOLINE +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ALTERNATIVE __stringify(jmp __x8= 6.indirect_thunk.\reg), __stringify(jmp *%\reg), X86_FEATURE_IBRS_ATT +#else +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0jmp *\reg +#endif +.endm .. and the thunks themselves were also using alternatives: +ENTRY(__x86.indirect_thunk.\reg) +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0CFI_STARTPROC +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ALTERNATIVE "call 2f", __stringi= fy(jmp *%\reg), X86_FEATURE_IBRS_ATT +1: +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0lfence +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0jmp=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A01b +2: +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mov=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0%\reg, (%\sp) +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ret +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0CFI_ENDPROC +ENDPROC(__x86.indirect_thunk.\reg) So all you were left with was the single static jump in the call sites which GCC emitted, which are basically harmless. It's not clear that it makes sense to post-process GCC output just to eliminate those.=C2=A0 Andi, you seem to have made a lot of changes, some cosmetic and some make it look like you were working on an older version of the code. For reference, here's my original version. --=-eNvG+pcmOQIhIT9P9mb4 Content-Description: Content-Disposition: inline; filename*0=0001-x86-Add-initial-retpoline-support-with-mindirect-bra.pat; filename*1=ch Content-Type: text/x-patch; name="0001-x86-Add-initial-retpoline-support-with-mindirect-bra.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5NzA2ODdhNGMxOGFjNWFkYjIxMjRjNjczZTMxZmJmZTA3OTIyMGNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+ CkRhdGU6IFNhdCwgMjMgRGVjIDIwMTcgMDA6NTE6MjQgKzAwMDAKU3ViamVjdDogW1BBVENIIDEv OF0geDg2OiBBZGQgaW5pdGlhbCByZXRwb2xpbmUgc3VwcG9ydCB3aXRoCiAtbWluZGlyZWN0LWJy YW5jaD10aHVuay1leHRlcm4KClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0Bh bWF6b24uY28udWs+Ci0tLQogYXJjaC94ODYvTWFrZWZpbGUgICAgICAgICAgIHwgIDcgKysrKysr KwogYXJjaC94ODYva2VybmVsL01ha2VmaWxlICAgIHwgIDEgKwogYXJjaC94ODYva2VybmVsL3Jl dHBvbGluZS5TIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94 ODYva2VybmVsL3JldHBvbGluZS5TCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvTWFrZWZpbGUgYi9h cmNoL3g4Ni9NYWtlZmlsZQppbmRleCBhMjBlYWNkLi5hNmQ1ZDM5IDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9NYWtlZmlsZQorKysgYi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtMjM1LDYgKzIzNSwxMyBA QCBLQlVJTERfQ0ZMQUdTICs9IC1Xbm8tc2lnbi1jb21wYXJlCiAjCiBLQlVJTERfQ0ZMQUdTICs9 IC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKIAorIworUkVUUE9MSU5FX0NGTEFHUyAr PSAkKGNhbGwgY2Mtb3B0aW9uLC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWluZGly ZWN0LWJyYW5jaC1yZWdpc3RlcikKK2lmbmVxICgkKFJFVFBPTElORV9DRkxBR1MpLCkKKwlLQlVJ TERfQ0ZMQUdTICs9ICQoUkVUUE9MSU5FX0NGTEFHUykgLURSRVRQT0xJTkUKKwlLQlVJTERfQUZM QUdTICs9IC1EUkVUUE9MSU5FCitlbmRpZgorCiBhcmNoc2NyaXB0czogc2NyaXB0c19iYXNpYwog CSQoUSkkKE1BS0UpICQoYnVpbGQpPWFyY2gveDg2L3Rvb2xzIHJlbG9jcwogCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUKaW5k ZXggMjk1YWJhYS4uZDFhZjU1MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL01ha2VmaWxl CisrKyBiL2FyY2gveDg2L2tlcm5lbC9NYWtlZmlsZQpAQCAtNDksNiArNDksNyBAQCBvYmotJChD T05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMKQkrPSBsZHQubwogb2JqLXkJCQkrPSBzZXR1cC5vIHg4 Nl9pbml0Lm8gaTgyNTkubyBpcnFpbml0Lm8ganVtcF9sYWJlbC5vCiBvYmotJChDT05GSUdfSVJR X1dPUkspICArPSBpcnFfd29yay5vCiBvYmoteQkJCSs9IHByb2JlX3JvbXMubworb2JqLXkJCQkr PSByZXRwb2xpbmUubwogb2JqLSQoQ09ORklHX1g4Nl82NCkJKz0gc3lzX3g4Nl82NC5vCiBvYmot JChDT05GSUdfWDg2X0VTUEZJWDY0KQkrPSBlc3BmaXhfNjQubwogb2JqLSQoQ09ORklHX1NZU0ZT KQkrPSBrc3lzZnMubwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3JldHBvbGluZS5TIGIv YXJjaC94ODYva2VybmVsL3JldHBvbGluZS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmIyYjE3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3g4Ni9rZXJuZWwvcmV0cG9s aW5lLlMKQEAgLTAsMCArMSwzNyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgKi8KKworI2lmZGVmIFJFVFBPTElORQorCisjaW5jbHVkZSA8bGludXgvc3RyaW5naWZ5Lmg+ CisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGFzbS9kd2FyZjIuaD4KKyNp bmNsdWRlIDxhc20vY3B1ZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxhc20vYWx0ZXJuYXRpdmUtYXNt Lmg+CisKKy5tYWNybyBUSFVOSyBzcCByZWcKKwkuc2VjdGlvbiAudGV4dC5fX3g4Ni5pbmRpcmVj dF90aHVuay5ccmVnCisKK0VOVFJZKF9feDg2LmluZGlyZWN0X3RodW5rLlxyZWcpCisJQ0ZJX1NU QVJUUFJPQworCUFMVEVSTkFUSVZFICJjYWxsIDJmIiwgX19zdHJpbmdpZnkoam1wIColXHJlZyks IFg4Nl9GRUFUVVJFX0lCUlNfQVRUCisxOgorCWxmZW5jZQorCWptcAkxYgorMjoKKwltb3YJJVxy ZWcsICglXHNwKQorCXJldAorCUNGSV9FTkRQUk9DCitFTkRQUk9DKF9feDg2LmluZGlyZWN0X3Ro dW5rLlxyZWcpCisuZW5kbQorCisjaWZkZWYgQ09ORklHXzY0QklUCisuaXJwIHJlZyByYXggcmJ4 IHJjeCByZHggcnNpIHJkaSByYnAgcjggcjkgcjEwIHIxMSByMTIgcjEzIHIxNCByMTUKKwlUSFVO SyByc3AgXHJlZworLmVuZHIKKyNlbHNlCisuaXJwIHJlZyBlYXggZWJ4IGVjeCBlZHggZXNpIGVk aSBlYnAKKwlUSFVOSyBlc3AgXHJlZworLmVuZHIKKyNlbmRpZgorCisjZW5kaWYgLyogUkVUUE9M SU5FICovCi0tIAoyLjcuNAoK --=-eNvG+pcmOQIhIT9P9mb4 Content-Description: Content-Disposition: inline; filename*0=0002-x86-Replace-indirect-branches-in-asm-with-CALL_THUNK.pat; filename*1=ch Content-Type: text/x-patch; name="0002-x86-Replace-indirect-branches-in-asm-with-CALL_THUNK.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2ODUyMWRhODhkNmQwNWVkMmI5YWQ1ZTU3YTc0NzVlOGQzZmRjOTA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+ CkRhdGU6IFNhdCwgMjMgRGVjIDIwMTcgMDE6NTk6MDQgKzAwMDAKU3ViamVjdDogW1BBVENIIDIv OF0geDg2OiBSZXBsYWNlIGluZGlyZWN0IGJyYW5jaGVzIGluIGFzbSB3aXRoCiBDQUxMX1RIVU5L L0pNUF9USFVOSyBtYWNybwoKVGhpcyB1c2VzIHRoZSBzYW1lIHJldHBvbGluZSB0aHVua3MgdGhh dCB0aGUgLW1pbmRpcmVjdC1icmFuY2g9IEdDQyBvcHRpb24KdXNlcywgdG8gYXZvaWQgc3BlY3Vs YXRpdmUgYnJhbmNoIHByZWRpY3Rpb24gcHJvYmxlbXMuCgpPcGVuLWNvZGUgYSB2ZXJzaW9uIG9m IHRoZSB0aHVuayBpbiB0aGUgc3lzY2FsbCB0cmFtcG9saW5lIGJlY2F1c2Ugd2UKY2FuJ3QganVz dCBqdW1wIHRvIHRoZSBleGlzdGluZyBvbmVzLgoKU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhv dXNlIDxkd213QGFtYXpvbi5jby51az4KLS0tCiBhcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxf YXNtLlMgICAgICAgICAgICB8ICA1ICsrKy0tCiBhcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEtYWVz bmktYXZ4LWFzbV82NC5TICB8ICAzICsrLQogYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25p LWF2eDItYXNtXzY0LlMgfCAgMyArKy0KIGFyY2gveDg2L2NyeXB0by9jcmMzMmMtcGNsLWludGVs LWFzbV82NC5TICAgIHwgIDMgKystCiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV8zMi5TICAgICAgICAg ICAgICAgICAgICB8ICA0ICsrLS0KIGFyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMgICAgICAgICAg ICAgICAgICAgIHwgMTkgKysrKysrKysrKysrKysrLS0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20v c3BlY19jdHJsLmggICAgICAgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9r ZXJuZWwvZnRyYWNlXzMyLlMgICAgICAgICAgICAgICAgICB8ICA2ICsrKystLQogYXJjaC94ODYv a2VybmVsL2Z0cmFjZV82NC5TICAgICAgICAgICAgICAgICAgfCAgNyArKysrLS0tCiBhcmNoL3g4 Ni9saWIvY2hlY2tzdW1fMzIuUyAgICAgICAgICAgICAgICAgICB8ICA1ICsrKy0tCiAxMCBmaWxl cyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMgYi9hcmNoL3g4Ni9jcnlwdG8vYWVz bmktaW50ZWxfYXNtLlMKaW5kZXggMTY2MjdmZS4uNTIxNjBkMSAxMDA2NDQKLS0tIGEvYXJjaC94 ODYvY3J5cHRvL2Flc25pLWludGVsX2FzbS5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9hZXNuaS1p bnRlbF9hc20uUwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4K ICNpbmNsdWRlIDxhc20vaW5zdC5oPgogI2luY2x1ZGUgPGFzbS9mcmFtZS5oPgorI2luY2x1ZGUg PGFzbS9zcGVjX2N0cmwuaD4KIAogLyoKICAqIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSB1c2Vk IHRvIG1vdmUgYW4gKHVuKWFsaWduZWQgMTYgYnl0ZSB2YWx1ZSB0by9mcm9tCkBAIC0yODg0LDcg KzI4ODUsNyBAQCBFTlRSWShhZXNuaV94dHNfY3J5cHQ4KQogCXB4b3IgSU5DLCBTVEFURTQKIAlt b3ZkcXUgSVYsIDB4MzAoT1VUUCkKIAotCWNhbGwgKiVyMTEKKwlDQUxMX1RIVU5LIHIxMQogCiAJ bW92ZHF1IDB4MDAoT1VUUCksIElOQwogCXB4b3IgSU5DLCBTVEFURTEKQEAgLTI5MjksNyArMjkz MCw3IEBAIEVOVFJZKGFlc25pX3h0c19jcnlwdDgpCiAJX2Flc25pX2dmMTI4bXVsX3hfYmxlKCkK IAltb3Z1cHMgSVYsIChJVlApCiAKLQljYWxsIColcjExCisJQ0FMTF9USFVOSyByMTEKIAogCW1v dmRxdSAweDQwKE9VVFApLCBJTkMKIAlweG9yIElOQywgU1RBVEUxCmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9jcnlwdG8vY2FtZWxsaWEtYWVzbmktYXZ4LWFzbV82NC5TIGIvYXJjaC94ODYvY3J5cHRv L2NhbWVsbGlhLWFlc25pLWF2eC1hc21fNjQuUwppbmRleCBmN2M0OTVlLi4zYmYyM2RiIDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEtYWVzbmktYXZ4LWFzbV82NC5TCisrKyBi L2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMKQEAgLTE3LDYgKzE3 LDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KICNpbmNsdWRlIDxhc20vZnJhbWUu aD4KKyNpbmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAKICNkZWZpbmUgQ0FNRUxMSUFfVEFCTEVf QllURV9MRU4gMjcyCiAKQEAgLTEyMjcsNyArMTIyOCw3IEBAIGNhbWVsbGlhX3h0c19jcnlwdF8x NndheToKIAl2cHhvciAxNCAqIDE2KCVyYXgpLCAleG1tMTUsICV4bW0xNDsKIAl2cHhvciAxNSAq IDE2KCVyYXgpLCAleG1tMTUsICV4bW0xNTsKIAotCWNhbGwgKiVyOTsKKwlDQUxMX1RIVU5LIHI5 OwogCiAJYWRkcSAkKDE2ICogMTYpLCAlcnNwOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlw dG8vY2FtZWxsaWEtYWVzbmktYXZ4Mi1hc21fNjQuUyBiL2FyY2gveDg2L2NyeXB0by9jYW1lbGxp YS1hZXNuaS1hdngyLWFzbV82NC5TCmluZGV4IGVlZTViMzkuLjFmMDZjOTggMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngyLWFzbV82NC5TCisrKyBiL2FyY2gv eDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngyLWFzbV82NC5TCkBAIC0xMiw2ICsxMiw3IEBA CiAKICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CiAjaW5jbHVkZSA8YXNtL2ZyYW1lLmg+Cisj aW5jbHVkZSA8YXNtL3NwZWNfY3RybC5oPgogCiAjZGVmaW5lIENBTUVMTElBX1RBQkxFX0JZVEVf TEVOIDI3MgogCkBAIC0xMzQzLDcgKzEzNDQsNyBAQCBjYW1lbGxpYV94dHNfY3J5cHRfMzJ3YXk6 CiAJdnB4b3IgMTQgKiAzMiglcmF4KSwgJXltbTE1LCAleW1tMTQ7CiAJdnB4b3IgMTUgKiAzMigl cmF4KSwgJXltbTE1LCAleW1tMTU7CiAKLQljYWxsIColcjk7CisJQ0FMTF9USFVOSyByOTsKIAog CWFkZHEgJCgxNiAqIDMyKSwgJXJzcDsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2Ny YzMyYy1wY2wtaW50ZWwtYXNtXzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vY3JjMzJjLXBjbC1pbnRl bC1hc21fNjQuUwppbmRleCA3YTdkZTI3Li5mZDg5NzQ1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9j cnlwdG8vY3JjMzJjLXBjbC1pbnRlbC1hc21fNjQuUworKysgYi9hcmNoL3g4Ni9jcnlwdG8vY3Jj MzJjLXBjbC1pbnRlbC1hc21fNjQuUwpAQCAtNDUsNiArNDUsNyBAQAogCiAjaW5jbHVkZSA8YXNt L2luc3QuaD4KICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjaW5jbHVkZSA8YXNtL3NwZWNf Y3RybC5oPgogCiAjIyBJU0NTSSBDUkMgMzIgSW1wbGVtZW50YXRpb24gd2l0aCBjcmMzMiBhbmQg cGNsbXVscWRxIEluc3RydWN0aW9uCiAKQEAgLTE3Miw3ICsxNzMsNyBAQCBjb250aW51ZV9ibG9j azoKIAltb3Z6eHcgIChidWZwLCAlcmF4LCAyKSwgbGVuCiAJbGVhCWNyY19hcnJheSglcmlwKSwg YnVmcAogCWxlYSAgICAgKGJ1ZnAsIGxlbiwgMSksIGJ1ZnAKLQlqbXAgICAgICpidWZwCisJSk1Q X1RIVU5LIGJ1ZnAKIAogCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAkjIyAyYSkgUFJPQ0VTUyBGVUxMIEJMT0NLUzoKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2VudHJ5L2VudHJ5XzMyLlMgYi9hcmNoL3g4Ni9lbnRyeS9lbnRy eV8zMi5TCmluZGV4IGFjZThmMzIuLjYwOGQxOTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2VudHJ5 L2VudHJ5XzMyLlMKKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfMzIuUwpAQCAtMjkwLDcgKzI5 MCw3IEBAIEVOVFJZKHJldF9mcm9tX2ZvcmspCiAKIAkvKiBrZXJuZWwgdGhyZWFkICovCiAxOglt b3ZsCSVlZGksICVlYXgKLQljYWxsCSolZWJ4CisJQ0FMTF9USFVOSyBlYngKIAkvKgogCSAqIEEg a2VybmVsIHRocmVhZCBpcyBhbGxvd2VkIHRvIHJldHVybiBoZXJlIGFmdGVyIHN1Y2Nlc3NmdWxs eQogCSAqIGNhbGxpbmcgZG9fZXhlY3ZlKCkuICBFeGl0IHRvIHVzZXJzcGFjZSB0byBjb21wbGV0 ZSB0aGUgZXhlY3ZlKCkKQEAgLTkxOSw3ICs5MTksNyBAQCBjb21tb25fZXhjZXB0aW9uOgogCW1v dmwJJWVjeCwgJWVzCiAJVFJBQ0VfSVJRU19PRkYKIAltb3ZsCSVlc3AsICVlYXgJCQkjIHB0X3Jl Z3MgcG9pbnRlcgotCWNhbGwJKiVlZGkKKwlDQUxMX1RIVU5LIGVkaQogCWptcAlyZXRfZnJvbV9l eGNlcHRpb24KIEVORChjb21tb25fZXhjZXB0aW9uKQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9l bnRyeS9lbnRyeV82NC5TIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwppbmRleCBjNmRiMTBm Li4wZDNmZjdmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TCisrKyBiL2Fy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKQEAgLTE4OSw3ICsxODksMTcgQEAgRU5UUlkoZW50cnlf U1lTQ0FMTF82NF90cmFtcG9saW5lKQogCSAqLwogCXB1c2hxCSVyZGkKIAltb3ZxCSRlbnRyeV9T WVNDQUxMXzY0X3N0YWdlMiwgJXJkaQotCWptcAkqJXJkaQorCS8qCisJICogT3Blbi1jb2RlIHRo ZSByZXRwb2xpbmUgZnJvbSByZXRwb2xpbmUuUywgYmVjYXVzZSB3ZSBjYW4ndAorCSAqIGp1c3Qg anVtcCB0byBpdCBkaXJlY3RseS4KKwkgKi8KKwlBTFRFUk5BVElWRSAiY2FsbCAyZiIsICJqbXAg KiVyZGkiLCBYODZfRkVBVFVSRV9JQlJTX0FUVAorMToKKwlsZmVuY2UKKwlqbXAJMWIKKzI6CisJ bW92CSVyZGksICglcnNwKQorCXJldAogRU5EKGVudHJ5X1NZU0NBTExfNjRfdHJhbXBvbGluZSkK IAogCS5wb3BzZWN0aW9uCkBAIC0yNzYsNyArMjg2LDggQEAgZW50cnlfU1lTQ0FMTF82NF9mYXN0 cGF0aDoKIAkgKiBJdCBtaWdodCBlbmQgdXAganVtcGluZyB0byB0aGUgc2xvdyBwYXRoLiAgSWYg aXQganVtcHMsIFJBWAogCSAqIGFuZCBhbGwgYXJndW1lbnQgcmVnaXN0ZXJzIGFyZSBjbG9iYmVy ZWQuCiAJICovCi0JY2FsbAkqc3lzX2NhbGxfdGFibGUoLCAlcmF4LCA4KQorCW1vdnEJc3lzX2Nh bGxfdGFibGUoLCAlcmF4LCA4KSwgJXJheAorCUNBTExfVEhVTksgcmF4CiAuTGVudHJ5X1NZU0NB TExfNjRfYWZ0ZXJfZmFzdHBhdGhfY2FsbDoKIAogCW1vdnEJJXJheCwgUkFYKCVyc3ApCkBAIC00 NDksNyArNDYwLDcgQEAgRU5UUlkoc3R1Yl9wdHJlZ3NfNjQpCiAJam1wCWVudHJ5X1NZU0NBTEw2 NF9zbG93X3BhdGgKIAogMToKLQlqbXAJKiVyYXgJCQkJLyogQ2FsbGVkIGZyb20gQyAqLworCUpN UF9USFVOSyByYXgJCQkJLyogQ2FsbGVkIGZyb20gQyAqLwogRU5EKHN0dWJfcHRyZWdzXzY0KQog CiAubWFjcm8gcHRyZWdzX3N0dWIgZnVuYwpAQCAtNTI4LDcgKzUzOSw3IEBAIEVOVFJZKHJldF9m cm9tX2ZvcmspCiAxOgogCS8qIGtlcm5lbCB0aHJlYWQgKi8KIAltb3ZxCSVyMTIsICVyZGkKLQlj YWxsCSolcmJ4CisJQ0FMTF9USFVOSyByYngKIAkvKgogCSAqIEEga2VybmVsIHRocmVhZCBpcyBh bGxvd2VkIHRvIHJldHVybiBoZXJlIGFmdGVyIHN1Y2Nlc3NmdWxseQogCSAqIGNhbGxpbmcgZG9f ZXhlY3ZlKCkuICBFeGl0IHRvIHVzZXJzcGFjZSB0byBjb21wbGV0ZSB0aGUgZXhlY3ZlKCkKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwZWNfY3RybC5oIGIvYXJjaC94ODYvaW5j bHVkZS9hc20vc3BlY19jdHJsLmgKaW5kZXggZThlZDZmZC4uNTliNjY0ZSAxMDA2NDQKLS0tIGEv YXJjaC94ODYvaW5jbHVkZS9hc20vc3BlY19jdHJsLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9h c20vc3BlY19jdHJsLmgKQEAgLTE4MCw1ICsxODAsMjEgQEAgQUxURVJOQVRJVkUgIiIsIF9fc3Ry aW5naWZ5KF9fQVNNX0RJU0FCTEVfSUJSU19DTE9CQkVSKSwgWDg2X0ZFQVRVUkVfU1BFQ19DVFJM CiBBTFRFUk5BVElWRSBfX3N0cmluZ2lmeShfX0FTTV9TVFVGRl9SU0IpLCAiIiwgWDg2X0ZFQVRV UkVfU01FUAogLmVuZG0KIAorLm1hY3JvIEpNUF9USFVOSyByZWc6cmVxCisjaWZkZWYgUkVUUE9M SU5FCisJQUxURVJOQVRJVkUgX19zdHJpbmdpZnkoam1wIF9feDg2LmluZGlyZWN0X3RodW5rLlxy ZWcpLCBfX3N0cmluZ2lmeShqbXAgKiVccmVnKSwgWDg2X0ZFQVRVUkVfSUJSU19BVFQKKyNlbHNl CisJam1wICpccmVnCisjZW5kaWYKKy5lbmRtCisKKy5tYWNybyBDQUxMX1RIVU5LIHJlZzpyZXEK KyNpZmRlZiBSRVRQT0xJTkUKKwlBTFRFUk5BVElWRSBfX3N0cmluZ2lmeShjYWxsIF9feDg2Lmlu ZGlyZWN0X3RodW5rLlxyZWcpLCBfX3N0cmluZ2lmeShjYWxsIColXHJlZyksIFg4Nl9GRUFUVVJF X0lCUlNfQVRUCisjZWxzZQorCWptcCAqXHJlZworI2VuZGlmCisuZW5kbQorCiAjZW5kaWYgLyog X19BU1NFTUJMWV9fICovCiAjZW5kaWYgLyogX0FTTV9YODZfU1BFQ19DVFJMX0ggKi8KZGlmZiAt LWdpdCBhL2FyY2gveDg2L2tlcm5lbC9mdHJhY2VfMzIuUyBiL2FyY2gveDg2L2tlcm5lbC9mdHJh Y2VfMzIuUwppbmRleCBiNmM2NDY4Li5lODljNmJlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJu ZWwvZnRyYWNlXzMyLlMKKysrIGIvYXJjaC94ODYva2VybmVsL2Z0cmFjZV8zMi5TCkBAIC04LDYg KzgsNyBAQAogI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+CiAjaW5jbHVkZSA8YXNtL2V4cG9ydC5o PgogI2luY2x1ZGUgPGFzbS9mdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAK ICNpZmRlZiBDQ19VU0lOR19GRU5UUlkKICMgZGVmaW5lIGZ1bmN0aW9uX2hvb2sJX19mZW50cnlf XwpAQCAtMTk3LDcgKzE5OCw4IEBAIGZ0cmFjZV9zdHViOgogCW1vdmwJMHg0KCVlYnApLCAlZWR4 CiAJc3VibAkkTUNPVU5UX0lOU05fU0laRSwgJWVheAogCi0JY2FsbAkqZnRyYWNlX3RyYWNlX2Z1 bmN0aW9uCisJbW92bAlmdHJhY2VfdHJhY2VfZnVuY3Rpb24sICVlY3gKKwlDQUxMX1RIVU5LIGVj eAogCiAJcG9wbAklZWR4CiAJcG9wbAklZWN4CkBAIC0yNDEsNSArMjQzLDUgQEAgcmV0dXJuX3Rv X2hhbmRsZXI6CiAJbW92bAklZWF4LCAlZWN4CiAJcG9wbAklZWR4CiAJcG9wbAklZWF4Ci0Jam1w CSolZWN4CisJSk1QX1RIVU5LIGVjeAogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvZnRyYWNlXzY0LlMgYi9hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlXzY0LlMKaW5kZXggYzgzMjI5 MS4uNmM5NzQ2MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2Z0cmFjZV82NC5TCisrKyBi L2FyY2gveDg2L2tlcm5lbC9mdHJhY2VfNjQuUwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlIDxh c20vcHRyYWNlLmg+CiAjaW5jbHVkZSA8YXNtL2Z0cmFjZS5oPgogI2luY2x1ZGUgPGFzbS9leHBv cnQuaD4KKyNpbmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAKIAogCS5jb2RlNjQKQEAgLTI4Niw4 ICsyODcsOCBAQCB0cmFjZToKIAkgKiBpcCBhbmQgcGFyZW50IGlwIGFyZSB1c2VkIGFuZCB0aGUg bGlzdCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbgogCSAqIGZ1bmN0aW9uIHRyYWNpbmcgaXMgZW5h YmxlZC4KIAkgKi8KLQljYWxsICAgKmZ0cmFjZV90cmFjZV9mdW5jdGlvbgotCisJbW92cSBmdHJh Y2VfdHJhY2VfZnVuY3Rpb24sICVyOAorCUNBTExfVEhVTksgcjgKIAlyZXN0b3JlX21jb3VudF9y ZWdzCiAKIAlqbXAgZmdyYXBoX3RyYWNlCkBAIC0zMjksNSArMzMwLDUgQEAgR0xPQkFMKHJldHVy bl90b19oYW5kbGVyKQogCW1vdnEgOCglcnNwKSwgJXJkeAogCW1vdnEgKCVyc3ApLCAlcmF4CiAJ YWRkcSAkMjQsICVyc3AKLQlqbXAgKiVyZGkKKwlKTVBfVEhVTksgcmRpCiAjZW5kaWYKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2xpYi9jaGVja3N1bV8zMi5TIGIvYXJjaC94ODYvbGliL2NoZWNrc3Vt XzMyLlMKaW5kZXggNGQzNGJiNS4uODZkZjc0YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbGliL2No ZWNrc3VtXzMyLlMKKysrIGIvYXJjaC94ODYvbGliL2NoZWNrc3VtXzMyLlMKQEAgLTI5LDcgKzI5 LDggQEAKICNpbmNsdWRlIDxhc20vZXJybm8uaD4KICNpbmNsdWRlIDxhc20vYXNtLmg+CiAjaW5j bHVkZSA8YXNtL2V4cG9ydC5oPgotCQkJCQorI2luY2x1ZGUgPGFzbS9zcGVjX2N0cmwuaD4KKwog LyoKICAqIGNvbXB1dGVzIGEgcGFydGlhbCBjaGVja3N1bSwgZS5nLiBmb3IgVENQL1VEUCBmcmFn bWVudHMKICAqLwpAQCAtMTU2LDcgKzE1Nyw3IEBAIEVOVFJZKGNzdW1fcGFydGlhbCkKIAluZWds ICVlYngKIAlsZWEgNDVmKCVlYngsJWVieCwyKSwgJWVieAogCXRlc3RsICVlc2ksICVlc2kKLQlq bXAgKiVlYngKKwlKTVBfVEhVTksgZWJ4CiAKIAkjIEhhbmRsZSAyLWJ5dGUtYWxpZ25lZCByZWdp b25zCiAyMDoJYWRkdyAoJWVzaSksICVheAotLSAKMi43LjQKCm== --=-eNvG+pcmOQIhIT9P9mb4 Content-Description: Content-Disposition: inline; filename="0003-x86-Use-retpoline-for-calls-in-inline-asm.patch" Content-Type: text/x-patch; name="0003-x86-Use-retpoline-for-calls-in-inline-asm.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwNDQxZjZjZjdmNTkzNTAyZWNmZWMwZGE5NTRlZjNlMTVjYWU3YjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+ CkRhdGU6IFNhdCwgMjMgRGVjIDIwMTcgMDI6MTE6MTggKzAwMDAKU3ViamVjdDogW1BBVENIIDMv OF0geDg2OiBVc2UgcmV0cG9saW5lIGZvciBjYWxscyBpbiBpbmxpbmUgYXNtCgpGaXggdXAgUFYg b3BlcmF0aW9ucyBhbmQgaHlwZXJjYWxscyB0byBhdm9pZCBpbmRpcmVjdCBjYWxscy4KClRoZXJl IGlzIHBlcmhhcHMgc2NvcGUgZm9yIG9wdGltaXNpbmcgdGhlIHB2b3BzIGNhc2UuIEZvciBvcHMg d2hpY2ggYXJlbid0CmdvaW5nIHRvIGJlIGNoYW5nZWQgYXQgcnVudGltZSAoYWxsIG9mIHRoZW0/ KSwgd2UgY291bGQganVzdCBwYXRjaCB0aGUgY29kZQp0byBtYWtlIGl0IHVzZSAqZGlyZWN0KiBq dW1wcyBpbnN0ZWFkIG9mIGluZGlyZWN0LgoKU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhvdXNl IDxkd213QGFtYXpvbi5jby51az4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc2h5cGVydi5o ICAgICAgIHwgMTggKysrKysrKysrKy0tLS0tLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJh dmlydF90eXBlcy5oIHwgMTUgKysrKysrKysrKysrLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9z cGVjX2N0cmwuaCAgICAgIHwgMTMgKysrKysrKysrKysrKwogYXJjaC94ODYvaW5jbHVkZS9hc20v eGVuL2h5cGVyY2FsbC5oICB8ICA1ICsrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlv bnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L21zaHlwZXJ2LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc2h5cGVydi5oCmluZGV4IDU4MWJi NTQuLmNhNzQ2M2IgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zaHlwZXJ2LmgK KysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbXNoeXBlcnYuaApAQCAtNyw2ICs3LDcgQEAKICNp bmNsdWRlIDxsaW51eC9ubWkuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20v aHlwZXJ2Lmg+CisjaW5jbHVkZSA8YXNtL3NwZWNfY3RybC5oPgogCiAvKgogICogVGhlIGJlbG93 IENQVUlEIGxlYXZlcyBhcmUgcHJlc2VudCBpZiBWZXJzaW9uQW5kRmVhdHVyZXMuSHlwZXJ2aXNv clByZXNlbnQKQEAgLTE4NiwxMCArMTg3LDExIEBAIHN0YXRpYyBpbmxpbmUgdTY0IGh2X2RvX2h5 cGVyY2FsbCh1NjQgY29udHJvbCwgdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCkKIAkJcmV0dXJu IFU2NF9NQVg7CiAKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygibW92ICU0LCAlJXI4XG4iCi0JCQkg ICAgICJjYWxsIColNSIKKwkJCSAgICAgQ0FMTF9USFVOSwogCQkJICAgICA6ICI9YSIgKGh2X3N0 YXR1cyksIEFTTV9DQUxMX0NPTlNUUkFJTlQsCiAJCQkgICAgICAgIitjIiAoY29udHJvbCksICIr ZCIgKGlucHV0X2FkZHJlc3MpCi0JCQkgICAgIDogICJyIiAob3V0cHV0X2FkZHJlc3MpLCAibSIg KGh2X2h5cGVyY2FsbF9wZykKKwkJCSAgICAgOiAgInIiIChvdXRwdXRfYWRkcmVzcyksCisJCQkJ VEhVTktfVEFSR0VUKGh2X2h5cGVyY2FsbF9wZykKIAkJCSAgICAgOiAiY2MiLCAibWVtb3J5Iiwg InI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsKICNlbHNlCiAJdTMyIGlucHV0X2FkZHJlc3NfaGkg PSB1cHBlcl8zMl9iaXRzKGlucHV0X2FkZHJlc3MpOwpAQCAtMjAwLDEzICsyMDIsMTMgQEAgc3Rh dGljIGlubGluZSB1NjQgaHZfZG9faHlwZXJjYWxsKHU2NCBjb250cm9sLCB2b2lkICppbnB1dCwg dm9pZCAqb3V0cHV0KQogCWlmICghaHZfaHlwZXJjYWxsX3BnKQogCQlyZXR1cm4gVTY0X01BWDsK IAotCV9fYXNtX18gX192b2xhdGlsZV9fKCJjYWxsIColNyIKKwlfX2FzbV9fIF9fdm9sYXRpbGVf XyhDQUxMX1RIVU5LCiAJCQkgICAgIDogIj1BIiAoaHZfc3RhdHVzKSwKIAkJCSAgICAgICAiK2Mi IChpbnB1dF9hZGRyZXNzX2xvKSwgQVNNX0NBTExfQ09OU1RSQUlOVAogCQkJICAgICA6ICJBIiAo Y29udHJvbCksCiAJCQkgICAgICAgImIiIChpbnB1dF9hZGRyZXNzX2hpKSwKIAkJCSAgICAgICAi RCIob3V0cHV0X2FkZHJlc3NfaGkpLCAiUyIob3V0cHV0X2FkZHJlc3NfbG8pLAotCQkJICAgICAg ICJtIiAoaHZfaHlwZXJjYWxsX3BnKQorCQkJICAgICAgIFRIVU5LX1RBUkdFVChodl9oeXBlcmNh bGxfcGcpCiAJCQkgICAgIDogImNjIiwgIm1lbW9yeSIpOwogI2VuZGlmIC8qICF4ODZfNjQgKi8K IAlyZXR1cm4gaHZfc3RhdHVzOwpAQCAtMjI3LDEwICsyMjksMTAgQEAgc3RhdGljIGlubGluZSB1 NjQgaHZfZG9fZmFzdF9oeXBlcmNhbGw4KHUxNiBjb2RlLCB1NjQgaW5wdXQxKQogCiAjaWZkZWYg Q09ORklHX1g4Nl82NAogCXsKLQkJX19hc21fXyBfX3ZvbGF0aWxlX18oImNhbGwgKiU0IgorCQlf X2FzbV9fIF9fdm9sYXRpbGVfXyhDQUxMX1RIVU5LCiAJCQkJICAgICA6ICI9YSIgKGh2X3N0YXR1 cyksIEFTTV9DQUxMX0NPTlNUUkFJTlQsCiAJCQkJICAgICAgICIrYyIgKGNvbnRyb2wpLCAiK2Qi IChpbnB1dDEpCi0JCQkJICAgICA6ICJtIiAoaHZfaHlwZXJjYWxsX3BnKQorCQkJCSAgICAgOiBU SFVOS19UQVJHRVQoaHZfaHlwZXJjYWxsX3BnKQogCQkJCSAgICAgOiAiY2MiLCAicjgiLCAicjki LCAicjEwIiwgInIxMSIpOwogCX0KICNlbHNlCkBAIC0yMzgsMTMgKzI0MCwxMyBAQCBzdGF0aWMg aW5saW5lIHU2NCBodl9kb19mYXN0X2h5cGVyY2FsbDgodTE2IGNvZGUsIHU2NCBpbnB1dDEpCiAJ CXUzMiBpbnB1dDFfaGkgPSB1cHBlcl8zMl9iaXRzKGlucHV0MSk7CiAJCXUzMiBpbnB1dDFfbG8g PSBsb3dlcl8zMl9iaXRzKGlucHV0MSk7CiAKLQkJX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjYWxs IColNSIKKwkJX19hc21fXyBfX3ZvbGF0aWxlX18gKENBTExfVEhVTksKIAkJCQkgICAgICA6ICI9 QSIoaHZfc3RhdHVzKSwKIAkJCQkJIitjIihpbnB1dDFfbG8pLAogCQkJCQlBU01fQ0FMTF9DT05T VFJBSU5UCiAJCQkJICAgICAgOgkiQSIgKGNvbnRyb2wpLAogCQkJCQkiYiIgKGlucHV0MV9oaSks Ci0JCQkJCSJtIiAoaHZfaHlwZXJjYWxsX3BnKQorCQkJCQlUSFVOS19UQVJHRVQoaHZfaHlwZXJj YWxsX3BnKQogCQkJCSAgICAgIDogImNjIiwgImVkaSIsICJlc2kiKTsKIAl9CiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmggYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oCmluZGV4IDZlYzU0ZDAuLmRmZmYxMWUgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgKKysrIGIvYXJj aC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaApAQCAtMzM2LDExICszMzYsMTcgQEAg ZXh0ZXJuIHN0cnVjdCBwdl9sb2NrX29wcyBwdl9sb2NrX29wczsKICNkZWZpbmUgUEFSQVZJUlRf UEFUQ0goeCkJCQkJCVwKIAkob2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRl LCB4KSAvIHNpemVvZih2b2lkICopKQogCisjZGVmaW5lIHBhcmF2aXJ0X2Nsb2JiZXIoY2xvYmJl cikJCVwKKwlbcGFyYXZpcnRfY2xvYmJlcl0gImkiIChjbG9iYmVyKQorI2lmZGVmIFJFVFBPTElO RQorI2RlZmluZSBwYXJhdmlydF90eXBlKG9wKQkJCQlcCisJW3BhcmF2aXJ0X3R5cGVudW1dICJp IiAoUEFSQVZJUlRfUEFUQ0gob3ApKSwJXAorCVtwYXJhdmlydF9vcHB0cl0gInIiICgob3ApKQor I2Vsc2UKICNkZWZpbmUgcGFyYXZpcnRfdHlwZShvcCkJCQkJXAogCVtwYXJhdmlydF90eXBlbnVt XSAiaSIgKFBBUkFWSVJUX1BBVENIKG9wKSksCVwKIAlbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihv cCkpCi0jZGVmaW5lIHBhcmF2aXJ0X2Nsb2JiZXIoY2xvYmJlcikJCVwKLQlbcGFyYXZpcnRfY2xv YmJlcl0gImkiIChjbG9iYmVyKQorI2VuZGlmCiAKIC8qCiAgKiBHZW5lcmF0ZSBzb21lIGNvZGUs IGFuZCBtYXJrIGl0IGFzIHBhdGNoYWJsZSBieSB0aGUKQEAgLTM5Miw4ICszOTgsMTEgQEAgaW50 IHBhcmF2aXJ0X2Rpc2FibGVfaW9zcGFjZSh2b2lkKTsKICAqIG9mZnNldCBpbnRvIHRoZSBwYXJh dmlydF9wYXRjaF90ZW1wbGF0ZSBzdHJ1Y3R1cmUsIGFuZCBjYW4gdGhlcmVmb3JlIGJlCiAgKiBm cmVlbHkgY29udmVydGVkIGJhY2sgaW50byBhIHN0cnVjdHVyZSBvZmZzZXQuCiAgKi8KKyNpZmRl ZiBSRVRQT0xJTkUKKyNkZWZpbmUgUEFSQVZJUlRfQ0FMTAkiY2FsbCBfX3g4Ni5pbmRpcmVjdF90 aHVuay4lVltwYXJhdmlydF9vcHB0cl07IgorI2Vsc2UKICNkZWZpbmUgUEFSQVZJUlRfQ0FMTAki Y2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIKLQorI2VuZGlmCiAvKgogICogVGhlc2UgbWFjcm9z IGFyZSBpbnRlbmRlZCB0byB3cmFwIGNhbGxzIHRocm91Z2ggb25lIG9mIHRoZSBwYXJhdmlydAog ICogb3BzIHN0cnVjdHMsIHNvIHRoYXQgdGhleSBjYW4gYmUgbGF0ZXIgaWRlbnRpZmllZCBhbmQg cGF0Y2hlZCBhdApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3BlY19jdHJsLmgg Yi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjX2N0cmwuaAppbmRleCA1OWI2NjRlLi41OGE0OWEy IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjX2N0cmwuaAorKysgYi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9zcGVjX2N0cmwuaApAQCAtMTk2LDUgKzE5NiwxOCBAQCBBTFRFUk5B VElWRSBfX3N0cmluZ2lmeShfX0FTTV9TVFVGRl9SU0IpLCAiIiwgWDg2X0ZFQVRVUkVfU01FUAog I2VuZGlmCiAuZW5kbQogCisjZWxzZSAvKiBfX0FTU0VNQkxZX18gKi8KKworI2lmZGVmIFJFVFBP TElORQorI2RlZmluZSBDQUxMX1RIVU5LIEFMVEVSTkFUSVZFKAkJCQkJXAorICAgICAgICAiY2Fs bCBfX3g4Ni5pbmRpcmVjdF90aHVuay4lVlt0aHVua190YXJnZXRdIiwJCVwKKwkiY2FsbCAqJVt0 aHVua190YXJnZXRdIiwgWDg2X0ZFQVRVUkVfSUJSU19BVFQpCisjZGVmaW5lIFRIVU5LX1RBUkdF VChhZGRyKSBbdGh1bmtfdGFyZ2V0XSAiciIgKGFkZHIpCisjZWxzZQorI2RlZmluZSBDQUxMX1RI VU5LICJjYWxsIColW3RodW5rX3RhcmdldF0iCisjZGVmaW5lIFRIVU5LX1RBUkdFVChhZGRyKSBb dGh1bmtfdGFyZ2V0XSAicm0iIChhZGRyKQorI2VuZGlmCisKICNlbmRpZiAvKiBfX0FTU0VNQkxZ X18gKi8KKwogI2VuZGlmIC8qIF9BU01fWDg2X1NQRUNfQ1RSTF9IICovCmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaHlwZXJjYWxsLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS94ZW4vaHlwZXJjYWxsLmgKaW5kZXggN2NiMjgyZS4uOTBkZjgzMiAxMDA2NDQKLS0tIGEvYXJj aC94ODYvaW5jbHVkZS9hc20veGVuL2h5cGVyY2FsbC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL3hlbi9oeXBlcmNhbGwuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPGFzbS9wYWdl Lmg+CiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KICNpbmNsdWRlIDxhc20vc21hcC5oPgorI2lu Y2x1ZGUgPGFzbS9zcGVjX2N0cmwuaD4KIAogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+ CiAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9zY2hlZC5oPgpAQCAtMjE3LDkgKzIxOCw5IEBAIHBy aXZjbWRfY2FsbCh1bnNpZ25lZCBjYWxsLAogCV9fSFlQRVJDQUxMXzVBUkcoYTEsIGEyLCBhMywg YTQsIGE1KTsKIAogCXN0YWMoKTsKLQlhc20gdm9sYXRpbGUoImNhbGwgKiVbY2FsbF0iCisJYXNt IHZvbGF0aWxlKENBTExfVEhVTksKIAkJICAgICA6IF9fSFlQRVJDQUxMXzVQQVJBTQotCQkgICAg IDogW2NhbGxdICJhIiAoJmh5cGVyY2FsbF9wYWdlW2NhbGxdKQorCQkgICAgIDogW3RodW5rX3Rh cmdldF0gImEiICgmaHlwZXJjYWxsX3BhZ2VbY2FsbF0pCiAJCSAgICAgOiBfX0hZUEVSQ0FMTF9D TE9CQkVSNSk7CiAJY2xhYygpOwogCi0tIAoyLjcuNAoK --=-eNvG+pcmOQIhIT9P9mb4-- --=-70iMX8rOnxvzWodoPJwP Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEE4w ggUuMIIEFqADAgECAhEApEtL31g6H7ROXdOiQnA9RjANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhl bnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwHhcNMTcxMjIxMDAwMDAwWhcNMTgxMjIxMjM1 OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFkd213QGFtYXpvbi5jby51azCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAKdGKgXuwKMg2r+i/4BZZC0ddRxNq3xIKTakie/VCSzoO7P17A36ZzUc VMEYPfqDt/65xoc6Tdih+qkY2pNDppZ1DZ8mVrAX6O2O60ZhmXB60wMoDvXPZInvkMOW4drqnje/ 7/NOypn/XQAY+ln4KT+3tHG3TfryyJFMedqC/r29KJlCeeCxIzdtq2j5mN42tvPVv4+p+Kr77uui GOASNdFJbNdgx7UGF+il6kRGSle17LJZKMgRiLJXYjECwnGwdfLdN5SINWD5IC3yXY8d14Bq6DyD jNts1DFw+SKhW8kVFYRZpv7TE3/42QJKQVL6YWka5T4EJO7AD3gy2ypRsd8CAwEAAaOCAecwggHj MB8GA1UdIwQYMBaAFIKvbIz4xf6WYXzoHz0rcUhexIvAMB0GA1UdDgQWBBT/vhvBExl2wDr8f50u b+0yzFyZRjAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcD BAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQEC AQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFoGA1UdHwRT MFEwT6BNoEuGSWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRp Y2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYsGCCsGAQUFBwEBBH8wfTBVBggrBgEFBQcwAoZJ aHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRT ZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMBwG A1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUAA4IBAQCK2HofespbCaDu udwwfh8GxDpVUnVbZZVWScpZMxfYpXzLot7L6iZrr16oMQ+UOiDDAK6/D3+u2QN8u0lJ6yLKVmvh lGOzDywGsyG2Ohy8Dt5jcEK5sz84OsPtrRH7ahZHLxYPhWlUKOjOPN6sb9h6uMYlXmG/KmAr2rwF exN6Zrwh6YwF7ukuMs175YcNyYRdB8kVYq3WikfbTHOoRbJiu9Unw7LqnvPTfx+xUvD6aN2CKLtr mactWbk98swNgbI18UWjfEpugvAqw09CDLjeq7N1v0SkUkQEDqGSUE+hKFryTNXtZ6zOfl+MQfD8 U7T5oJa34DmWXK9+x7dl+MrqMIIFLjCCBBagAwIBAgIRAKRLS99YOh+0Tl3TokJwPUYwDQYJKoZI hvcNAQELBQAwgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQDEzRDT01P RE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTE3MTIy MTAwMDAwMFoXDTE4MTIyMTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnRioF7sCjINq/ov+AWWQtHXUcTat8 SCk2pInv1Qks6Duz9ewN+mc1HFTBGD36g7f+ucaHOk3YofqpGNqTQ6aWdQ2fJlawF+jtjutGYZlw etMDKA71z2SJ75DDluHa6p43v+/zTsqZ/10AGPpZ+Ck/t7Rxt0368siRTHnagv69vSiZQnngsSM3 bato+ZjeNrbz1b+Pqfiq++7rohjgEjXRSWzXYMe1BhfopepERkpXteyyWSjIEYiyV2IxAsJxsHXy 3TeUiDVg+SAt8l2PHdeAaug8g4zbbNQxcPkioVvJFRWEWab+0xN/+NkCSkFS+mFpGuU+BCTuwA94 MtsqUbHfAgMBAAGjggHnMIIB4zAfBgNVHSMEGDAWgBSCr2yM+MX+lmF86B89K3FIXsSLwDAdBgNV HQ4EFgQU/74bwRMZdsA6/H+dLm/tMsxcmUYwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw IAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNV HSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v ZG8ubmV0L0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01P RE9SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcB AQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVu dEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v Y3NwLmNvbW9kb2NhLmNvbTAcBgNVHREEFTATgRFkd213QGFtYXpvbi5jby51azANBgkqhkiG9w0B AQsFAAOCAQEAith6H3rKWwmg7rncMH4fBsQ6VVJ1W2WVVknKWTMX2KV8y6Ley+oma69eqDEPlDog wwCuvw9/rtkDfLtJSesiylZr4ZRjsw8sBrMhtjocvA7eY3BCubM/ODrD7a0R+2oWRy8WD4VpVCjo zjzerG/YerjGJV5hvypgK9q8BXsTema8IemMBe7pLjLNe+WHDcmEXQfJFWKt1opH20xzqEWyYrvV J8Oy6p7z038fsVLw+mjdgii7a5mnLVm5PfLMDYGyNfFFo3xKboLwKsNPQgy43quzdb9EpFJEBA6h klBPoSha8kzV7Weszn5fjEHw/FO0+aCWt+A5llyvfse3ZfjK6jCCBeYwggPOoAMCAQICEGqb4Tg7 /ytrnwHV2binUlYwDQYJKoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDEx MDAwMDAwMFoXDTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk MT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVt YWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2 IVDzJXkLTLWg0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeX IoymMv6pQHJGNcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0 wsGtkGWC+eQKiz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFN e1VXj9XB1rHvbRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0B OSxSxt8kCvsUtQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQw HQYDVR0OBBYEFIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E CDAGAQH/AgEAMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3Js LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEF BQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFk ZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI hvcNAQEMBQADggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh 42awGGsma65u/ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZBy WPQedXLL1OdK8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN 543j/Q6qqgCWgWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6 ryEhNhzf+enm0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9v WPoqNSGDt87b3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunw wH3fciPjviDDAI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln 9icgc7CwaxpNSCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiR mjVzmehoMof06r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81r gzdEZOofSlZHynoSMYIDyjCCA8YCAQEwga0wgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl IEVtYWlsIENBAhEApEtL31g6H7ROXdOiQnA9RjANBglghkgBZQMEAgEFAKCCAe0wGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwMTA0MDgxNTUzWjAvBgkqhkiG9w0B CQQxIgQgJjB9daxa8tsadLckWH2n20l5n0L9TGneowo5BI9Hv78wgb4GCSsGAQQBgjcQBDGBsDCB rTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0Eg Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQCkS0vfWDoftE5d06JC cD1GMIHABgsqhkiG9w0BCRACCzGBsKCBrTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUg RW1haWwgQ0ECEQCkS0vfWDoftE5d06JCcD1GMA0GCSqGSIb3DQEBAQUABIIBACc7lPvdzY3aJkjD 7I3QK59LEIA2S4Lydno2l+6J6gwfEk7YBefhW+LH+Pmnlih62KJWR4+SFeS5PKY6T0GWsrZahUx/ UaCoX3fZ6VmMJb5KP2Bp5Te3Fe5AgP1k9c4MJZ5BSdiYYIQ/RveHOqrUGMrGHh2Te3rszam/wrYk 0FUDGxR1p/3+uu1ym9XL6BT3LV9ZJvhg1T/3p2LrAgq0W6hYhWHF5gU5QsyAaK0G4rQ09j/5IgEj bbsVxokMtVOOmptQWxlgdIYAHRUV+O9MtAv0tMO28x3T5yWCqvYGwPPGkA9P2Q6CHbqL+t9AonwA NfM0+sJukF3cLBIfBqkY6gAAAAAAAAA= --=-70iMX8rOnxvzWodoPJwP--