From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [PATCH v1 00/27] x86: PIE support and option to extend KASLR randomization Date: Wed, 11 Oct 2017 13:30:00 -0700 Message-ID: <20171011203027.11248-1-thgarnie__42318.3976825841$1507753926$gmane$org@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e2Nek-0000EK-7J for xen-devel@lists.xenproject.org; Wed, 11 Oct 2017 20:31:06 +0000 Received: by mail-pf0-f173.google.com with SMTP id d28so1958086pfe.2 for ; Wed, 11 Oct 2017 13:31:04 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Arnd Bergmann , Thomas Garnier , Kees Cook , Andrey Ryabinin , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org Q2hhbmdlczoKIC0gcGF0Y2ggdjE6CiAgIC0gU2ltcGxpZnkgZnRyYWNlIGltcGxlbWVudGF0aW9u LgogICAtIFVzZSBnY2MgbXN0YWNrLXByb3RlY3Rvci1ndWFyZC1yZWc9JWdzIHdpdGggUElFIHdo ZW4gcG9zc2libGUuCiAtIHJmYyB2MzoKICAgLSBVc2UgLS1lbWl0LXJlbG9jcyBpbnN0ZWFkIG9m IC1waWUgdG8gcmVkdWNlIGR5bmFtaWMgcmVsb2NhdGlvbiBzcGFjZSBvbgogICAgIG1hcHBlZCBt ZW1vcnkuIEl0IGFsc28gc2ltcGxpZmllcyB0aGUgcmVsb2NhdGlvbiBwcm9jZXNzLgogICAtIE1v dmUgdGhlIHN0YXJ0IHRoZSBtb2R1bGUgc2VjdGlvbiBuZXh0IHRvIHRoZSBrZXJuZWwuIFJlbW92 ZSB0aGUgbmVlZCBmb3IKICAgICAtbWNtb2RlbD1sYXJnZSBvbiBtb2R1bGVzLiBFeHRlbmRzIG1v ZHVsZSBzcGFjZSBmcm9tIDEgdG8gMkcgbWF4aW11bS4KICAgLSBTdXBwb3J0IGZvciBYRU4gUFZI IGFzIDMyLWJpdCByZWxvY2F0aW9ucyBjYW4gYmUgaWdub3JlZCB3aXRoCiAgICAgLS1lbWl0LXJl bG9jcy4KICAgLSBTdXBwb3J0IGZvciBHT1QgcmVsb2NhdGlvbnMgcHJldmlvdXNseSBkb25lIGF1 dG9tYXRpY2FsbHkgd2l0aCAtcGllLgogICAtIFJlbW92ZSBuZWVkIGZvciBkeW5hbWljIFBMVCBp biBtb2R1bGVzLgogICAtIFN1cHBvcnQgZHltYW1pYyBHT1QgZm9yIG1vZHVsZXMuCiAtIHJmYyB2 MjoKICAgLSBBZGQgc3VwcG9ydCBmb3IgZ2xvYmFsIHN0YWNrIGNvb2tpZSB3aGlsZSBjb21waWxl ciBkZWZhdWx0IHRvIGZzIHdpdGhvdXQKICAgICBtY21vZGVsPWtlcm5lbAogICAtIENoYW5nZSBw YXRjaCA3IHRvIGNvcnJlY3RseSBqdW1wIG91dCBvZiB0aGUgaWRlbnRpdHkgbWFwcGluZyBvbiBr ZXhlYyBsb2FkCiAgICAgcHJlc2VydmUuCgpUaGVzZSBwYXRjaGVzIG1ha2UgdGhlIGNoYW5nZXMg bmVjZXNzYXJ5IHRvIGJ1aWxkIHRoZSBrZXJuZWwgYXMgUG9zaXRpb24KSW5kZXBlbmRlbnQgRXhl Y3V0YWJsZSAoUElFKSBvbiB4ODZfNjQuIEEgUElFIGtlcm5lbCBjYW4gYmUgcmVsb2NhdGVkIGJl bG93CnRoZSB0b3AgMkcgb2YgdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gSXQgYWxsb3dzIHRv IG9wdGlvbmFsbHkgZXh0ZW5kIHRoZQpLQVNMUiByYW5kb21pemF0aW9uIHJhbmdlIGZyb20gMUcg dG8gM0cuCgpUaGFua3MgYSBsb3QgdG8gQXJkIEJpZXNoZXV2ZWwgJiBLZWVzIENvb2sgb24gdGhl aXIgZmVlZGJhY2sgb24gY29tcGlsZXIKY2hhbmdlcywgUElFIHN1cHBvcnQgYW5kIEtBU0xSIGlu IGdlbmVyYWwuIFRoYW5rcyB0byBSb2xhbmQgTWNHcmF0aCBvbiBoaXMKZmVlZGJhY2sgZm9yIHVz aW5nIC1waWUgdmVyc3VzIC0tZW1pdC1yZWxvY3MgYW5kIGRldGFpbHMgb24gY29tcGlsZXIgY29k ZQpnZW5lcmF0aW9uLgoKVGhlIHBhdGNoZXM6CiAtIDEtMywgNS0xIywgMTctMTg6IENoYW5nZSBp biBhc3NlbWJseSBjb2RlIHRvIGJlIFBJRSBjb21wbGlhbnQuCiAtIDQ6IEFkZCBhIG5ldyBfQVNN X0dFVF9QVFIgbWFjcm8gdG8gZmV0Y2ggYSBzeW1ib2wgYWRkcmVzcyBnZW5lcmljYWxseS4KIC0g MTQ6IEFkYXB0IHBlcmNwdSBkZXNpZ24gdG8gd29yayBjb3JyZWN0bHkgd2hlbiBQSUUgaXMgZW5h YmxlZC4KIC0gMTU6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGRlZmF1bHQgdmlzaWJpbGl0eSB0byBo aWRkZW4gZXhjZXB0IGZvciBrZXkgc3ltYm9scy4KICAgICAgIEl0IHJlbW92ZXMgZXJyb3JzIGJl dHdlZW4gY29tcGlsYXRpb24gdW5pdHMuCiAtIDE2OiBBZGFwdCByZWxvY2F0aW9uIHRvb2wgdG8g aGFuZGxlIFBJRSBiaW5hcnkgY29ycmVjdGx5LgogLSAxOTogQWRkIHN1cHBvcnQgZm9yIGdsb2Jh bCBjb29raWUuCiAtIDIwOiBTdXBwb3J0IGZ0cmFjZSB3aXRoIFBJRSAodXNlZCBvbiBVYnVudHUg Y29uZmlnKS4KIC0gMjE6IEZpeCBpbmNvcnJlY3QgYWRkcmVzcyBtYXJrZXIgb24gZHVtcF9wYWdl dGFibGVzLgogLSAyMjogQWRkIG9wdGlvbiB0byBtb3ZlIHRoZSBtb2R1bGUgc2VjdGlvbiBqdXN0 IGFmdGVyIHRoZSBrZXJuZWwuCiAtIDIzOiBBZGFwdCBtb2R1bGUgbG9hZGluZyB0byBzdXBwb3J0 IFBJRSB3aXRoIGR5bmFtaWMgR09ULgogLSAyNDogTWFrZSB0aGUgR09UIHJlYWQtb25seS4KIC0g MjU6IEFkZCB0aGUgQ09ORklHX1g4Nl9QSUUgb3B0aW9uIChvZmYgYnkgZGVmYXVsdCkuCiAtIDI2 OiBBZGFwdCByZWxvY2F0aW9uIHRvb2wgdG8gZ2VuZXJhdGUgYSA2NC1iaXQgcmVsb2NhdGlvbiB0 YWJsZS4KIC0gMjc6IEFkZCB0aGUgQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFIG9wdGlvbiB0 byBpbmNyZWFzZSByZWxvY2F0aW9uIHJhbmdlCiAgICAgICBmcm9tIDFHIHRvIDNHIChvZmYgYnkg ZGVmYXVsdCkuCgpQZXJmb3JtYW5jZS9TaXplIGltcGFjdDoKClNpemUgb2Ygdm1saW51eCAoRGVm YXVsdCBjb25maWd1cmF0aW9uKToKIEZpbGUgc2l6ZToKIC0gUElFIGRpc2FibGVkOiArMC4wMDAw MzElCiAtIFBJRSBlbmFibGVkOiAtMy4yMTAlIChsZXNzIHJlbG9jYXRpb25zKQogLnRleHQgc2Vj dGlvbjoKIC0gUElFIGRpc2FibGVkOiArMC4wMDA2NDQlCiAtIFBJRSBlbmFibGVkOiArMC44Mzcl CgpTaXplIG9mIHZtbGludXggKFVidW50dSBjb25maWd1cmF0aW9uKToKIEZpbGUgc2l6ZToKIC0g UElFIGRpc2FibGVkOiAtMC4yMDElCiAtIFBJRSBlbmFibGVkOiAtMC4wODIlCiAudGV4dCBzZWN0 aW9uOgogLSBQSUUgZGlzYWJsZWQ6IHNhbWUKIC0gUElFIGVuYWJsZWQ6ICsxLjMxOSUKClNpemUg b2Ygdm1saW51eCAoRGVmYXVsdCBjb25maWd1cmF0aW9uICsgT1JDKToKIEZpbGUgc2l6ZToKIC0g UElFIGVuYWJsZWQ6IC0zLjE2NyUKIC50ZXh0IHNlY3Rpb246CiAtIFBJRSBlbmFibGVkOiArMC44 MTQlCgpTaXplIG9mIHZtbGludXggKFVidW50dSBjb25maWd1cmF0aW9uICsgT1JDKToKIEZpbGUg c2l6ZToKIC0gUElFIGVuYWJsZWQ6IC0zLjE2NyUKIC50ZXh0IHNlY3Rpb246CiAtIFBJRSBlbmFi bGVkOiArMS4yNiUKClRoZSBzaXplIGluY3JlYXNlIGlzIG1haW5seSBkdWUgdG8gbm90IGhhdmlu ZyBhY2Nlc3MgdG8gdGhlIDMyLWJpdCBzaWduZWQKcmVsb2NhdGlvbiB0aGF0IGNhbiBiZSB1c2Vk IHdpdGggbWNtb2RlbD1rZXJuZWwuIEEgc21hbGwgcGFydCBpcyBkdWUgdG8gcmVkdWNlZApvcHRp bWl6YXRpb24gZm9yIFBJRSBjb2RlLiBUaGlzIGJ1ZyBbMV0gd2FzIG9wZW5lZCB3aXRoIGdjYyB0 byBwcm92aWRlIGEgYmV0dGVyCmNvZGUgZ2VuZXJhdGlvbiBmb3Iga2VybmVsIFBJRS4KCkhhY2ti ZW5jaCAoNTAlIGFuZCAxNjAwJSBvbiB0aHJlYWQvcHJvY2VzcyBmb3IgcGlwZS9zb2NrZXRzKToK IC0gUElFIGRpc2FibGVkOiBubyBzaWduaWZpY2FudCBjaGFuZ2UgKGF2ZyArMC4xJSBvbiBsYXRl c3QgdGVzdCkuCiAtIFBJRSBlbmFibGVkOiBiZXR3ZWVuIC0wLjUwJSB0byArMC44NiUgaW4gYXZl cmFnZSAoZGVmYXVsdCBhbmQgVWJ1bnR1IGNvbmZpZykuCgpzbGFiX3Rlc3QgKGF2ZXJhZ2Ugb2Yg MTAgcnVucyk6CiAtIFBJRSBkaXNhYmxlZDogbm8gc2lnbmlmaWNhbnQgY2hhbmdlICgtMiUgb24g bGF0ZXN0IHJ1biwgbGlrZWx5IG5vaXNlKS4KIC0gUElFIGVuYWJsZWQ6IGJldHdlZW4gLTElIGFu ZCArMC44JSBvbiBsYXRlc3QgcnVucy4KCktlcm5iZW5jaCAoYXZlcmFnZSBvZiAxMCBIYWxmIGFu ZCBPcHRpbWFsIHJ1bnMpOgogRWxhcHNlZCBUaW1lOgogLSBQSUUgZGlzYWJsZWQ6IG5vIHNpZ25p ZmljYW50IGNoYW5nZSAoYXZnIC0wLjIzOSUpCiAtIFBJRSBlbmFibGVkOiBhdmVyYWdlICswLjA3 JQogU3lzdGVtIFRpbWU6CiAtIFBJRSBkaXNhYmxlZDogbm8gc2lnbmlmaWNhbnQgY2hhbmdlIChh dmcgLTAuMjc3JSkKIC0gUElFIGVuYWJsZWQ6IGF2ZXJhZ2UgKzAuNyUKClsxXSBodHRwczovL2dj Yy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD04MjMwMwoKZGlmZnN0YXQ6CiBEb2N1 bWVudGF0aW9uL3g4Ni94ODZfNjQvbW0udHh0ICAgICAgICAgICAgICB8ICAgIDMgCiBhcmNoL3g4 Ni9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDMgKysrKysrCiBhcmNo L3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDAgKysrKysKIGFy Y2gveDg2L2Jvb3QvYm9vdC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKIGFyY2gv eDg2L2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZSAgICAgICAgICAgIHwgICAgNSAKIGFyY2gveDg2 L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMgICAgICAgICAgICAgIHwgICAxMCArCiBhcmNoL3g4Ni9j cnlwdG8vYWVzLXg4Nl82NC1hc21fNjQuUyAgICAgICAgICB8ICAgNDUgKysrKy0tCiBhcmNoL3g4 Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMgICAgICAgICAgICB8ICAgMTQgKy0KIGFyY2gveDg2 L2NyeXB0by9hZXNuaS1pbnRlbF9hdngteDg2XzY0LlMgICAgIHwgICAgNiAKIGFyY2gveDg2L2Ny eXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMgIHwgICA0MiArKystLS0KIGFyY2gveDg2 L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngyLWFzbV82NC5TIHwgICA0NCArKystLS0KIGFyY2gv eDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQtYXNtXzY0LlMgICAgIHwgICAgOCAtCiBhcmNoL3g4 Ni9jcnlwdG8vY2FzdDUtYXZ4LXg4Nl82NC1hc21fNjQuUyAgICB8ICAgNTAgKysrKy0tLQogYXJj aC94ODYvY3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMgICAgfCAgIDQ0ICsrKy0tLQog YXJjaC94ODYvY3J5cHRvL2RlczNfZWRlLWFzbV82NC5TICAgICAgICAgICAgfCAgIDk2ICsrKysr KysrKy0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vZ2hhc2gtY2xtdWxuaS1pbnRlbF9hc20uUyAgICB8 ICAgIDQgCiBhcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eC5TICAgICAgICB8ICAg IDQgCiBhcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUyAgICAgICB8ICAgIDYg CiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV8zMi5TICAgICAgICAgICAgICAgICAgICB8ICAgIDMgCiBh cmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKystLQog YXJjaC94ODYvaW5jbHVkZS9hc20vYXNtLmggICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIGFy Y2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5oICAgICAgICAgICAgICAgICAgIHwgICAgMiAKIGFyY2gv eDg2L2luY2x1ZGUvYXNtL2Z0cmFjZS5oICAgICAgICAgICAgICAgIHwgICAgNiAKIGFyY2gveDg2 L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCAgICAgICAgICAgIHwgICAgOCAtCiBhcmNoL3g4Ni9p bmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAgICAgICAgICB8ICAgIDYgCiBhcmNoL3g4Ni9pbmNs dWRlL2FzbS9tb2R1bGUuaCAgICAgICAgICAgICAgICB8ICAgMTEgKwogYXJjaC94ODYvaW5jbHVk ZS9hc20vcGFnZV82NF90eXBlcy5oICAgICAgICAgfCAgICA5ICsKIGFyY2gveDg2L2luY2x1ZGUv YXNtL3BhcmF2aXJ0X3R5cGVzLmggICAgICAgIHwgICAxMiArCiBhcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZXJjcHUuaCAgICAgICAgICAgICAgICB8ICAgMjUgKystCiBhcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZ3RhYmxlXzY0X3R5cGVzLmggICAgICB8ICAgIDYgCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9w bS10cmFjZS5oICAgICAgICAgICAgICB8ICAgIDIgCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9j ZXNzb3IuaCAgICAgICAgICAgICB8ICAgMTIgKwogYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjdGlv bnMuaCAgICAgICAgICAgICAgfCAgICA4ICsKIGFyY2gveDg2L2luY2x1ZGUvYXNtL3NldHVwLmgg ICAgICAgICAgICAgICAgIHwgICAgMiAKIGFyY2gveDg2L2luY2x1ZGUvYXNtL3N0YWNrcHJvdGVj dG9yLmggICAgICAgIHwgICAxOSArKwogYXJjaC94ODYva2VybmVsL2FjcGkvd2FrZXVwXzY0LlMg ICAgICAgICAgICAgfCAgIDMxICsrLS0KIGFyY2gveDg2L2tlcm5lbC9hc20tb2Zmc2V0cy5jICAg ICAgICAgICAgICAgIHwgICAgMyAKIGFyY2gveDg2L2tlcm5lbC9hc20tb2Zmc2V0c18zMi5jICAg ICAgICAgICAgIHwgICAgMyAKIGFyY2gveDg2L2tlcm5lbC9hc20tb2Zmc2V0c182NC5jICAgICAg ICAgICAgIHwgICAgMyAKIGFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgICAgICAgICAgICAg ICAgIHwgICAgNyAtCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L21pY3JvY29kZS9jb3JlLmMgICAgICAg ICB8ICAgIDQgCiBhcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMgICAgICAgICAgICAgICAgICAgICB8 ICAgNDIgKysrKystCiBhcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMgICAgICAgICAgICAgICAgICAg ICB8ICAgMzIgKysrLQogYXJjaC94ODYva2VybmVsL2hlYWRfMzIuUyAgICAgICAgICAgICAgICAg ICAgfCAgICAzIAogYXJjaC94ODYva2VybmVsL2hlYWRfNjQuUyAgICAgICAgICAgICAgICAgICAg fCAgIDQxICsrKysrLQogYXJjaC94ODYva2VybmVsL2t2bS5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA2IAogYXJjaC94ODYva2VybmVsL21vZHVsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrLQogYXJjaC94ODYva2VybmVsL21vZHVs ZS5sZHMgICAgICAgICAgICAgICAgICAgfCAgICAzIAogYXJjaC94ODYva2VybmVsL3Byb2Nlc3Mu YyAgICAgICAgICAgICAgICAgICAgfCAgICA1IAogYXJjaC94ODYva2VybmVsL3JlbG9jYXRlX2tl cm5lbF82NC5TICAgICAgICAgfCAgICA4IC0KIGFyY2gveDg2L2tlcm5lbC9zZXR1cF9wZXJjcHUu YyAgICAgICAgICAgICAgIHwgICAgMiAKIGFyY2gveDg2L2tlcm5lbC92bWxpbnV4Lmxkcy5TICAg ICAgICAgICAgICAgIHwgICAxMyArCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDQgCiBhcmNoL3g4Ni9saWIvY21weGNoZzE2Yl9lbXUuUyAgICAgICAg ICAgICAgICB8ICAgIDggLQogYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMgICAgICAgICAg ICAgICAgfCAgIDExICsKIGFyY2gveDg2L3Bvd2VyL2hpYmVybmF0ZV9hc21fNjQuUyAgICAgICAg ICAgIHwgICAgNCAKIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5jICAgICAgICAgICAgICAgICAgICAg IHwgIDE3MCArKysrKysrKysrKysrKysrKysrKysrKy0tCiBhcmNoL3g4Ni90b29scy9yZWxvY3Mu aCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgCiBhcmNoL3g4Ni90b29scy9yZWxvY3NfY29t bW9uLmMgICAgICAgICAgICAgICB8ICAgMTUgKy0KIGFyY2gveDg2L3hlbi94ZW4tYXNtLlMgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxMiAtCiBhcmNoL3g4Ni94ZW4veGVuLWhlYWQuUyAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDkgLQogYXJjaC94ODYveGVuL3hlbi1wdmguUyAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEzICsKIGRyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jICAg ICAgICAgICAgICAgIHwgICAgNCAKIGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCAgICAg ICAgICAgICAgIHwgICAgNiAKIGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaCAgICAg ICAgICAgIHwgICAxMiArCiBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggICAgICAgICAgICAgICAg ICAgICB8ICAgIDggKwogaW5pdC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA5ICsKIGtlcm5lbC9rYWxsc3ltcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxNiArLQoga2VybmVsL3RyYWNlL3RyYWNlLmggICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA0IAogbGliL2R5bmFtaWNfZGVidWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA0IAogNzAgZmlsZXMgY2hhbmdlZCwgMTAzMiBpbnNlcnRpb25zKCspLCAzMDggZGVsZXRpb25z KC0pCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==