From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ANiyBhZP2l8BMAAAWB0awg (envelope-from ) for ; Wed, 16 Dec 2020 13:16:54 -0500 Received: by simark.ca (Postfix, from userid 112) id 125FA1F0AA; Wed, 16 Dec 2020 13:16:54 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=FORGED_MUA_MOZILLA, FREEMAIL_FROM,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 3EF331E552 for ; Wed, 16 Dec 2020 13:16:53 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 84BD23833010; Wed, 16 Dec 2020 18:16:52 +0000 (GMT) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072021.outbound.protection.outlook.com [40.92.72.21]) by sourceware.org (Postfix) with ESMTPS id D3BCE3840C33 for ; Wed, 16 Dec 2020 18:16:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D3BCE3840C33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=hotmail.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bernd.edlinger@hotmail.de ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RQd02Hrk1srLcU4zBfnFb8CCO4dtQNKi7+B+MDrZN5JBpPAQY9+BlxFpz7++QW7jxSzEUyhGpZuXAKUjxa5lwslvTA5vg0I1Xc2WxJiuY3uVnguuuJ03IRg66uSv9q9lWZxauY1tITlvHBVMv9I6DL7Mqg2dnqoZRbbrPhCyJ2gRyJveMrAi8gtvIT+XlQmcnui/fKr9GqqfaMaRvahkC1jxBftpo4ja9CdjgeEH/DWL6gspYHSPFzN9Q5KwT9aHcVWXm3q4vfB00NoZwLjTVWWuDsjFmq9t2bUpWZRHFZvQrSmeLGhH76wZ7T/zzjxicHDturEe3ofAg9+hCfl9dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tdE4aX0SrxL3yP8yYqB9ruB0iM7cvCXQ0mk4eX79qkE=; b=GnCIkbMhAL/vxNkUMpFTZoGdJK8XET5O8wk/7hPRHkh0i7g3JMpoTK0tpSaLbSjcpxIy2PR1TTeDcGHDPYHiQQpaJxtdF5fBN5JSL+hGdbgD2z7ndcnuDZOEvmww0+rQ5Dmy5NTwNslEYHI/VAkZHVGWY3dep6tfu5bL6HH8LPi0C+fMBbc7YPSl/MT4bTt7WkXTrnKTopSKBBzYbWq9reqO19AXvkf/OFXLvhXmTMBGK99Ue4vKCgTUmqafx/8n3fnmTBGsSXCkSUTjCKttn110u8rQGOqMF9/cUjr49kJFjYvoHHT7t9NQH51AKzAymfgCT+TrWWn3i7ALYkC7LQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DB5EUR03FT016.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e0a::42) by DB5EUR03HT025.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e0a::492) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12; Wed, 16 Dec 2020 18:16:45 +0000 Received: from AM6PR03MB5170.eurprd03.prod.outlook.com (2a01:111:e400:7e0a::4f) by DB5EUR03FT016.mail.protection.outlook.com (2a01:111:e400:7e0a::141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.22 via Frontend Transport; Wed, 16 Dec 2020 18:16:45 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:D3AC48D011D09369B50D293151BD88F1A2CAF16E9EA9E915D1632E19869D84E2; UpperCasedChecksum:743B42BEFF3398BDB8323E1DE7EF0CDB5B54A25C0F51C713A7D854FB4F4C01D3; SizeAsReceived:8638; Count:47 Received: from AM6PR03MB5170.eurprd03.prod.outlook.com ([fe80::184e:5e8c:db8f:a596]) by AM6PR03MB5170.eurprd03.prod.outlook.com ([fe80::184e:5e8c:db8f:a596%5]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 18:16:45 +0000 Subject: Re: [PATCH v2] Enable GDB build with in-tree GMP and MPFR To: Joel Brobecker , Simon Marchi References: <71f5437f-c4f5-b58d-06f7-67a4d0b31007@simark.ca> <214e9564-5dfd-65a2-c2d8-6e8398ebc913@simark.ca> <87o8iw9ilx.fsf@tromey.com> <20201215023315.GK3461@adacore.com> <4ea7575a-b727-d9b7-e510-5c8b942f77f9@polymtl.ca> <20201216073333.GA934694@adacore.com> From: Bernd Edlinger Message-ID: Date: Wed, 16 Dec 2020 19:16:43 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 In-Reply-To: <20201216073333.GA934694@adacore.com> Content-Type: multipart/mixed; boundary="------------78AB2C24AC6BCFF3ED592F49" Content-Language: en-US X-TMN: [CnEAa07q0Hz2/xopCnHFbylF8tiwpJ1N] X-ClientProxiedBy: AM0PR06CA0084.eurprd06.prod.outlook.com (2603:10a6:208:fa::25) To AM6PR03MB5170.eurprd03.prod.outlook.com (2603:10a6:20b:ca::23) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.101] (88.68.3.2) by AM0PR06CA0084.eurprd06.prod.outlook.com (2603:10a6:208:fa::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12 via Frontend Transport; Wed, 16 Dec 2020 18:16:43 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: e6ab3a37-6852-43f6-688b-08d8a1eebee9 X-MS-TrafficTypeDiagnostic: DB5EUR03HT025: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 05/WwRpo7PSApUoENrYHPyqXZ3J4LHBcPHBxPz5wnok4d24t+WkQhHKCxX6+DywVKY+eL3BbZ5vfTo9kL2cOPXdU8FMJyN18T4SV8Ljdl8Kf1SNshy4we/Ud8DnzC2d/7Mxl2IgM6cw93zQYa35rKkGZIJcBEEDUdRzZ3ngA38tlriGh2+/mNzvnjWyYen02SgDh52EGanJYL+uaSlKRiQ== X-MS-Exchange-AntiSpam-MessageData: Q7RbkCElnwtersIRlIq22nw1O5jMCb63stCyXUgOYq4ACSr/DCmj7rJuDnxo9IOT4pd5yXivQbGf4b87RX/+rPwREdCaT1vOY4ft15sK3el7Nn0m3/jR45vJzb3ZeiQUKsksavjrBMR+efvi1hOy4g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Dec 2020 18:16:44.9441 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-Network-Message-Id: e6ab3a37-6852-43f6-688b-08d8a1eebee9 X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR03HT025 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Pedro Alves , Simon Marchi , Tom Tromey , "gdb-patches@sourceware.org" Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" --------------78AB2C24AC6BCFF3ED592F49 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 12/16/20 8:33 AM, Joel Brobecker wrote: > Hi Simon, > >>> Here's a radical question: Do we really need to stay in sync with GCC, >>> at this point? What are the benefits and requirements of doing so? >>> Because GCC doesn't coordinate with us when they make changes to >>> the toplevel configury, we're only going to get into these problems >>> more. >> >> Indeed, it's a bit annoying that the burden of syncing is only on one >> side. >> >> What are the original reasons for staying in sync with gcc? > > I don't know. It was like that when I first joined the project > 20 years ago. I assumed it was convenient in the CVS days to > have everything under the same "roof", especially for those > who want to rebuild the works, knowing that CVS allowed partial > checkouts for those who diddn't. > >> Instead of manually syncing files, I know Pedro already mentioned the >> idea of having a single repo with binutils + gcc + gdb, a bit like >> LLVM have moved to a big mono repo. Especially with gcc being a C++ >> program as well, we want to share more. So desyncing from gcc would >> make such a move more difficult. But it's just an idea at this point, >> so maybe it's not that important. > > It'd be interesting in knowing more about what it is that we would > be sharing. GCC is absolutely huge (4.5GB), and GDB isn't bad either > (1.2GB). Both GCC and GDB move very fast, so reuniting them would be > causing a large burden both ways for everyone. If we do, I feel > it has to be for strong reasons. > >> Otherwise, just for convenience reasons, it would be nice to think more >> of gcc + binutils + gdb (an maybe others) as a single toolchain, and >> having consistency and no suprises in how you build them is a good thing >> for those build and integrate them. > > It would be nice, but is that a sufficiently strong reason to break > with the past? > >>> In fact, how much does the toplevel configure really need to do? >>> Intuitively, it doesn't really need to do very much, if we ignore >>> all the stuff that's GCC-specific. >> >> I know next to nothing about the top-level configure, because I never >> needed to dig into it. >> >>> A more relevant conundrum, for me, might be to look at keeping >>> binutils and GDB in sync in terms of the options being used. >>> >>> And then we have the question of how to provide users who want to >>> configure parts or all of binutils-gdb what options they can use, >>> and what they do. I don't know how easy we can do that via the >>> toplevel configure's --help. One interesting question is: Would >>> doing so help us avoid inconsistencies with binutils? >> >> I'm not sure I understand. Do you mean, how do users get to learn about >> the configure switches of all projects? >> >> All I know is that you can do "./configure --help=recursive" from the >> top-level, but that's not particularly convenient, it just dumps all >> the helps from all the configure scripts. It's good if you want to >> find / grep. > > I didn't know that! This answers my question. > > To recap where I am on this discussion: First, I need to be honest > and upfront in saying that I can't seem to be able to summon the energy > to motivate myself towards discussing reunification or even just making > GCC and binutils-gdb more consistent in the naming of the configure > options. > > In fact, pending more info, I would still prefer we break the minimal > tie we have left in terms of synchronization with GCC, and use that > to help ourselves simplify and clarify, without breaking the existing > option. > > In the meantime, if the group decides after discussion that the name > of the configure options in GDB for GMP are wrong, and must be changed > to follow GCC's lead, then so be it, I will change it. It'll be a bit > of a heartbreaker for me because: > - It breaks consistency with the way we have been handling dependencies > in GDB; > - We won't be able to use this nice macro to implement those options, > and will end up hand-writing them the same way toplevel configure > does (it seems like a lot of code, although I would hope I can > do this better and shorter). > Note that no one has complained about MPFR in the years we've had it... > That may be because this does not break anything if it is not available. I for one did not notice anything before I knew that mpfr could be missing... I looked at AC_LIB_HAVE_LINKFLAGS and I am surprised that it considers to look for *.la/*.a/*.so at $prefix/lib directory instead of for instance simply using pkg-config. Using prefix/lib and prefix/include is also a bit unexpected, because that is where I would normally expect the generated libraries from gdb to be installed, instead of used from to build the gdb package. And, it is also not clear if the user uses make install DESTDIR=X to install everyting in X/prefix/..., for instance when prefix=/ So I think the configure flags for GMP can still be changed if we want, but the AC_LIB_HAVE_LINKFLAGS-style configure flags for MPFR have already been there for too long to simply remove them now. But I still think that it would be nice to be more compatible with other configures, maybe at least understand the --with-gmp-include --with-gmp-lib where there is no equivalent for at the moment. However I think I found a way to fix the in-tree build issue without adding now configure options at all. How would you like this new patch? Thanks Bernd. --------------78AB2C24AC6BCFF3ED592F49 Content-Type: text/x-patch; name="0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Enable-GDB-build-with-in-tree-GMP-and-MPFR.patch" RnJvbSBmMTY1ZTYwZGFiMWQ2NzdmZTI3OTE1YmI0OWJjODk3NTI1ZDIyYTcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFp bC5kZT4KRGF0ZTogU3VuLCAxNSBOb3YgMjAyMCAxNTozNzoyMiArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIEVuYWJsZSBHREIgYnVpbGQgd2l0aCBpbi10cmVlIEdNUCBhbmQgTVBGUgoKV2l0aCB0aGlz IHBhdGNoIEdEQiBjYW4gYmUgYnVpbHQgd2l0aCBpbi10cmVlIEdNUCBhbmQvb3IKTVBGUi4gIFRo aXMgd29ya3MgYWxzbyBmb3IgY3Jvc3MtYnVpbGRzLgoKQWxsIHRoYXQgaXMgbmVlZGVkLCBpcyBh IHN5bS1saW5rIGluIHRoZSBzb3VyY2UgdHJlZSwKbGlrZSB0aGlzOgoKZ21wIC0+IC4uL2dtcC02 LjEuMAptcGZyIC0+IC4uL21wZnItMy4xLjQKCjIwMjAtMTItMTAgIEJlcm5kIEVkbGluZ2VyICA8 YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KCgkqIE1ha2VmaWxlLmRlZjogUHJlcGFyZSBmb3Ig R0RCIGJ1aWxkIHdpdGggaW50cmVlIEdNUC4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgpn ZGI6CjIwMjAtMTItMTAgIEJlcm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5k ZT4KCgkqIGNvbmZpZ3VyZS5hYzogRGV0ZWN0IGluLXRyZWUgR01QIGFuZCBNUEZSLgoJKiBjb25m aWd1cmU6IFJlZ2VuZXJhdGUuCgkqIFJFQURNRTogTWVudGlvbiAuL2NvbnRyaWIvZG93bmxvYWRf cHJlcmVxdWlzaXRlcy4KCmNvbnRyaWI6CjIwMjAtMTItMTAgIEJlcm5kIEVkbGluZ2VyICA8YmVy bmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KCgkqIGRvd25sb2FkX3ByZXJlcXVpc2l0ZXM6IE5ldyBo ZWxwZXIgc2NyaXB0LgoJKiBwcmVyZXF1aXNpdGVzLm1kNTogY2hlY2tzdW1zLgoJKiBwcmVyZXF1 aXNpdGVzLnNoYTUxMjogY2hlY2tzdW1zLgotLS0KIE1ha2VmaWxlLmRlZiAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBNYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogY29u dHJpYi9kb3dubG9hZF9wcmVyZXF1aXNpdGVzIHwgMjYzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBjb250cmliL3ByZXJlcXVpc2l0ZXMubWQ1ICAgICAgfCAgIDIg KwogY29udHJpYi9wcmVyZXF1aXNpdGVzLnNoYTUxMiAgIHwgICAyICsKIGdkYi9SRUFETUUgICAg ICAgICAgICAgICAgICAgICB8ICAxMiArKwogZ2RiL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAg IHwgIDIwICsrKy0KIGdkYi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICB8ICAyMCArKystCiA4 IGZpbGVzIGNoYW5nZWQsIDMxNSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNzU1IGNvbnRyaWIvZG93bmxvYWRfcHJlcmVxdWlzaXRlcwogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvcHJlcmVxdWlzaXRlcy5tZDUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL3ByZXJlcXVpc2l0ZXMuc2hhNTEyCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFr ZWZpbGUuZGVmCmluZGV4IDA4OWU3MGEuLmI2ODcyYzkgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmRl ZgorKysgYi9NYWtlZmlsZS5kZWYKQEAgLTM5MSw2ICszOTEsOCBAQCBkZXBlbmRlbmNpZXMgPSB7 IG1vZHVsZT1hbGwtaW50bDsgb249YWxsLWxpYmljb252OyB9OwogCiAvLyBIb3N0IG1vZHVsZXMg c3BlY2lmaWMgdG8gZ2RiLgogZGVwZW5kZW5jaWVzID0geyBtb2R1bGU9Y29uZmlndXJlLWdkYjsg b249YWxsLWludGw7IH07CitkZXBlbmRlbmNpZXMgPSB7IG1vZHVsZT1jb25maWd1cmUtZ2RiOyBv bj1hbGwtZ21wOyB9OworZGVwZW5kZW5jaWVzID0geyBtb2R1bGU9Y29uZmlndXJlLWdkYjsgb249 YWxsLW1wZnI7IH07CiBkZXBlbmRlbmNpZXMgPSB7IG1vZHVsZT1jb25maWd1cmUtZ2RiOyBvbj1j b25maWd1cmUtc2ltOyB9OwogZGVwZW5kZW5jaWVzID0geyBtb2R1bGU9Y29uZmlndXJlLWdkYjsg b249YWxsLWJmZDsgfTsKIGRlcGVuZGVuY2llcyA9IHsgbW9kdWxlPWNvbmZpZ3VyZS1nZGI7IG9u PWFsbC1nbnVsaWI7IH07CmRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCmlu ZGV4IGZlMzQxMzIuLmVhZDk0MzAgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmluCisrKyBiL01ha2Vm aWxlLmluCkBAIC01MjQ0OSw2ICs1MjQ0OSw4IEBAIGNvbmZpZ3VyZS1saWJjYzE6IG1heWJlLWNv bmZpZ3VyZS1nY2MKIGFsbC1saWJjYzE6IG1heWJlLWFsbC1nY2MKIGFsbC11dGlsczogbWF5YmUt YWxsLWxpYmliZXJ0eQogY29uZmlndXJlLWdkYjogbWF5YmUtYWxsLWludGwKK2NvbmZpZ3VyZS1n ZGI6IG1heWJlLWFsbC1nbXAKK2NvbmZpZ3VyZS1nZGI6IG1heWJlLWFsbC1tcGZyCiBjb25maWd1 cmUtZ2RiOiBtYXliZS1hbGwtYmZkCiBjb25maWd1cmUtZ2RiOiBtYXliZS1hbGwtbGliaWNvbnYK IGFsbC1nZGI6IG1heWJlLWFsbC1saWJpYmVydHkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZG93bmxv YWRfcHJlcmVxdWlzaXRlcyBiL2NvbnRyaWIvZG93bmxvYWRfcHJlcmVxdWlzaXRlcwpuZXcgZmls ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZDA0MDMwCi0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9kb3dubG9hZF9wcmVyZXF1aXNpdGVzCkBAIC0wLDAgKzEsMjYzIEBACisjISAvYmlu L3NoCisjISAtKi0gY29kaW5nOnV0Zi04OyBtb2RlOnNoZWxsLXNjcmlwdDsgLSotCisKKyMgRG93 bmxvYWQgc29tZSBwcmVyZXF1aXNpdGVzIG5lZWRlZCBieSBHREIuCisjIFJ1biB0aGlzIGZyb20g dGhlIHRvcCBsZXZlbCBvZiB0aGUgR0RCIHNvdXJjZSB0cmVlIGFuZCB0aGUgR0RCIGJ1aWxkIHdp bGwgZG8KKyMgdGhlIHJpZ2h0IHRoaW5nLiAgUnVuIGl0IHdpdGggdGhlIGAtLWhlbHBgIG9wdGlv biBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyMKKyMgKEMpIDIwMTAtMjAyMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAor IyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUg aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy4KKworcHJvZ3JhbT0nZG93bmxvYWRfcHJlcmVx dWlzaXRlcycKK3ZlcnNpb249Jyh1bnZlcnNpb25lZCknCisKKyMgTUFJTlRBSU5FUlM6IElmIHlv dSB1cGRhdGUgdGhlIHBhY2thZ2UgdmVyc2lvbnMgYmVsb3csIHBsZWFzZQorIyByZW1lbWJlciB0 byBhbHNvIHVwZGF0ZSB0aGUgZmlsZXMgYGNvbnRyaWIvcHJlcmVxdWlzaXRlcy5zaGE1MTJgIGFu ZAorIyBgY29udHJpYi9wcmVyZXF1aXNpdGVzLm1kNWAgd2l0aCB0aGUgbmV3IGNoZWNrc3Vtcy4K KworZ21wPSdnbXAtNi4xLjAudGFyLmJ6MicKK21wZnI9J21wZnItMy4xLjQudGFyLmJ6MicKKwor YmFzZV91cmw9J2h0dHA6Ly9nY2MuZ251Lm9yZy9wdWIvZ2NjL2luZnJhc3RydWN0dXJlLycKKwor ZWNob19hcmNoaXZlcygpIHsKKyAgICBlY2hvICIke2dtcH0iCisgICAgZWNobyAiJHttcGZyfSIK K30KKwordmVyaWZ5PTEKK2ZvcmNlPTAKK09TPSQodW5hbWUpCisKK2Nhc2UgJE9TIGluCisgICJE YXJ3aW4ifCJGcmVlQlNEInwiRHJhZ29uRmx5InwiQUlYIikKKyAgICBjaGtzdW09J3NoYXN1bSAt YSA1MTIgLS1jaGVjaycKKyAgOzsKKyAgIk9wZW5CU0QiKQorICAgIGNoa3N1bT0nc2hhNTEyIC1j JworICA7OworICAqKQorICAgIGNoa3N1bT0nc2hhNTEyc3VtIC1jJworICA7OworZXNhYworCitp ZiB0eXBlIHdnZXQgPiAvZGV2L251bGwgOyB0aGVuCisgIGZldGNoPSd3Z2V0JworZWxzZQorICBm ZXRjaD0nY3VybCAtTE8nCitmaQorY2hrc3VtX2V4dGVuc2lvbj0nc2hhNTEyJworZGlyZWN0b3J5 PScuJworCitoZWxwdGV4dD0idXNhZ2U6ICR7cHJvZ3JhbX0gW09QVElPTi4uLl0KKworRG93bmxv YWRzIHNvbWUgcHJlcmVxdWlzaXRlcyBuZWVkZWQgYnkgR0RCLiAgUnVuIHRoaXMgZnJvbSB0aGUg dG9wIGxldmVsIG9mIHRoZQorR0RCIHNvdXJjZSB0cmVlIGFuZCB0aGUgR0RCIGJ1aWxkIHdpbGwg ZG8gdGhlIHJpZ2h0IHRoaW5nLgorCitUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJs ZToKKworIC0tZGlyZWN0b3J5PURJUiAgZG93bmxvYWQgYW5kIHVucGFjayBwYWNrYWdlcyBpbnRv IERJUiBpbnN0ZWFkIG9mICcuJworIC0tZm9yY2UgICAgICAgICAgZG93bmxvYWQgYWdhaW4gb3Zl cndyaXRpbmcgZXhpc3RpbmcgcGFja2FnZXMKKyAtLW5vLWZvcmNlICAgICAgIGRvIG5vdCBkb3du bG9hZCBleGlzdGluZyBwYWNrYWdlcyBhZ2FpbiAoZGVmYXVsdCkKKyAtLXZlcmlmeSAgICAgICAg IHZlcmlmeSBwYWNrYWdlIGludGVncml0eSBhZnRlciBkb3dubG9hZCAoZGVmYXVsdCkKKyAtLW5v LXZlcmlmeSAgICAgIGRvbid0IHZlcmlmeSBwYWNrYWdlIGludGVncml0eQorIC0tc2hhNTEyICAg ICAgICAgdXNlIFNIQTUxMiBjaGVja3N1bSB0byB2ZXJpZnkgcGFja2FnZSBpbnRlZ3JpdHkgKGRl ZmF1bHQpCisgLS1tZDUgICAgICAgICAgICB1c2UgTUQ1IGNoZWNrc3VtIHRvIHZlcmlmeSBwYWNr YWdlIGludGVncml0eQorIC0taGVscCAgICAgICAgICAgc2hvdyB0aGlzIHRleHQgYW5kIGV4aXQK KyAtLXZlcnNpb24gICAgICAgIHNob3cgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorIgor Cit2ZXJzaW9udGV4dD0iJHtwcm9ncmFtfSAke3ZlcnNpb259CitDb3B5cmlnaHQgKEMpIDIwMjAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNl ZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFu dHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuIgorCitkaWUoKSB7CisgICAgZWNobyAiZXJyb3I6ICRAIiA+JjIKKyAgICBl eGl0IDEKK30KKworZm9yIGFyZyBpbiAiJEAiCitkbworICAgIGNhc2UgIiR7YXJnfSIgaW4KKyAg ICAgICAgLS1oZWxwKQorICAgICAgICAgICAgZWNobyAiJHtoZWxwdGV4dH0iCisgICAgICAgICAg ICBleGl0CisgICAgICAgICAgICA7OworICAgICAgICAtLXZlcnNpb24pCisgICAgICAgICAgICBl Y2hvICIke3ZlcnNpb250ZXh0fSIKKyAgICAgICAgICAgIGV4aXQKKyAgICAgICAgICAgIDs7Cisg ICAgZXNhYworZG9uZQordW5zZXQgYXJnCisKKyMgRW11bGF0ZSBMaW51eCdzICdtZDUgLS1jaGVj aycgb24gbWFjT1MKK21kNV9jaGVjaygpIHsKKyAgIyBTdG9yZSB0aGUgc3RhbmRhcmQgaW5wdXQ6 IGEgbGluZSBmcm9tIGNvbnRyaWIvcHJlcmVxdWlzaXRlcy5tZDU6CisgIG1kNV9jaGVja3N1bV9s aW5lPSQoY2F0IC0pCisgICMgR3JhYiB0aGUgdGV4dCBiZWZvcmUgdGhlIGZpcnN0IHNwYWNlCisg IG1kNV9jaGVja3N1bV9leHBlY3RlZD0iJHttZDVfY2hlY2tzdW1fbGluZSUlICp9IgorICAjIEdy YWIgdGhlIHRleHQgYWZ0ZXIgdGhlIGZpcnN0IHNwYWNlCisgIGZpbGVfdG9fY2hlY2s9IiR7bWQ1 X2NoZWNrc3VtX2xpbmUjIyogfSIKKyAgIyBDYWxjdWxhdGUgdGhlIG1kNSBjaGVja3N1bSBmb3Ig dGhlIGRvd25sb2FkZWQgZmlsZQorICBtZDVfY2hlY2tzdW1fb3V0cHV0PSQobWQ1IC1yICIke2Zp bGVfdG9fY2hlY2t9IikKKyAgIyBHcmFiIHRoZSB0ZXh0IGJlZm9yZSB0aGUgZmlyc3Qgc3BhY2UK KyAgbWQ1X2NoZWNrc3VtX2RldGVjdGVkPSIke21kNV9jaGVja3N1bV9vdXRwdXQlJSAqfSIKKyAg WyAiJHttZDVfY2hlY2tzdW1fZXhwZWN0ZWR9IiA9PSAiJHttZDVfY2hlY2tzdW1fZGV0ZWN0ZWR9 IiBdIFwKKyAgICB8fCBkaWUgIkNhbm5vdCB2ZXJpZnkgaW50ZWdyaXR5IG9mIHBvc3NpYmx5IGNv cnJ1cHRlZCBmaWxlICR7ZmlsZV90b19jaGVja30iCisgIGVjaG8gIiR7ZmlsZV90b19jaGVja306 IE9LIgorfQorCisKK2FyZ25leHQ9Citmb3IgYXJnIGluICIkQCIKK2RvCisgICAgaWYgWyAieCR7 YXJnbmV4dH0iID0geCBdCisgICAgdGhlbgorICAgICAgICBjYXNlICIke2FyZ30iIGluCisgICAg ICAgICAgICAtLWRpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBhcmduZXh0PSdkaXJlY3Rvcnkn CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIC0tZGlyZWN0b3J5PSopCisgICAgICAg ICAgICAgICAgZGlyZWN0b3J5PSIke2FyZyMtLWRpcmVjdG9yeT19IgorICAgICAgICAgICAgICAg IDs7CisgICAgICAgICAgICAtLWZvcmNlKQorICAgICAgICAgICAgICAgIGZvcmNlPTEKKyAgICAg ICAgICAgICAgICA7OworICAgICAgICAgICAgLS1uby1mb3JjZSkKKyAgICAgICAgICAgICAgICBm b3JjZT0wCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIC0tdmVyaWZ5KQorICAgICAg ICAgICAgICAgIHZlcmlmeT0xCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIC0tbm8t dmVyaWZ5KQorICAgICAgICAgICAgICAgIHZlcmlmeT0wCisgICAgICAgICAgICAgICAgOzsKKyAg ICAgICAgICAgIC0tc2hhNTEyKQorICAgICAgICAgICAgICAgIGNhc2UgJE9TIGluCisgICAgICAg ICAgICAgICAgICAiRGFyd2luIikKKyAgICAgICAgICAgICAgICAgICAgY2hrc3VtPSdzaGFzdW0g LWEgNTEyIC0tY2hlY2snCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAg KikKKyAgICAgICAgICAgICAgICAgICAgY2hrc3VtPSdzaGE1MTJzdW0gLS1jaGVjaycKKyAgICAg ICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgIGNo a3N1bV9leHRlbnNpb249J3NoYTUxMicKKyAgICAgICAgICAgICAgICB2ZXJpZnk9MQorICAgICAg ICAgICAgICAgIDs7CisgICAgICAgICAgICAtLW1kNSkKKyAgICAgICAgICAgICAgICBjYXNlICRP UyBpbgorICAgICAgICAgICAgICAgICAgIkRhcndpbiIpCisgICAgICAgICAgICAgICAgICAgIGNo a3N1bT0nbWQ1X2NoZWNrJworICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAg ICopCisgICAgICAgICAgICAgICAgICAgIGNoa3N1bT0nbWQ1IC0tY2hlY2snCisgICAgICAgICAg ICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICBjaGtzdW1f ZXh0ZW5zaW9uPSdtZDUnCisgICAgICAgICAgICAgICAgdmVyaWZ5PTEKKyAgICAgICAgICAgICAg ICA7OworICAgICAgICAgICAgLSopCisgICAgICAgICAgICAgICAgZGllICJ1bmtub3duIG9wdGlv bjogJHthcmd9IgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAg ICAgICAgIGRpZSAidG9vIG1hbnkgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgIDs7CisgICAg ICAgIGVzYWMKKyAgICBlbHNlCisgICAgICAgIGNhc2UgIiR7YXJnfSIgaW4KKyAgICAgICAgICAg IC0qKQorICAgICAgICAgICAgICAgIGRpZSAiTWlzc2luZyBhcmd1bWVudCBmb3Igb3B0aW9uIC0t JHthcmduZXh0fSIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIGNh c2UgIiR7YXJnbmV4dH0iIGluCisgICAgICAgICAgICBkaXJlY3RvcnkpCisgICAgICAgICAgICAg ICAgZGlyZWN0b3J5PSIke2FyZ30iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICop CisgICAgICAgICAgICAgICAgZGllICJUaGUgaW1wb3NzaWJsZSBoYXMgaGFwcGVuZWQiCisgICAg ICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBhcmduZXh0PQorICAgIGZpCitk b25lCitbICJ4JHthcmduZXh0fSIgPSB4IF0gfHwgZGllICJNaXNzaW5nIGFyZ3VtZW50IGZvciBv cHRpb24gLS0ke2FyZ25leHR9IgordW5zZXQgYXJnIGFyZ25leHQKKworWyAtZSAuL2dkYi92ZXJz aW9uLmluIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIHx8IGRpZSAiWW91IG11c3QgcnVuIHRoaXMgc2NyaXB0IGluIHRoZSB0b3At bGV2ZWwgR0RCIHNvdXJjZSBkaXJlY3RvcnkiCisKK1sgLWQgIiR7ZGlyZWN0b3J5fSIgXSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICB8fCBkaWUgIk5vIHN1Y2ggZGlyZWN0b3J5OiAke2RpcmVjdG9yeX0iCisKK2ZvciBhciBpbiAk KGVjaG9fYXJjaGl2ZXMpCitkbworICAgIGlmIFsgJHtmb3JjZX0gLWd0IDAgXTsgdGhlbiBybSAt ZiAiJHtkaXJlY3Rvcnl9LyR7YXJ9IjsgZmkKKyAgICBbIC1lICIke2RpcmVjdG9yeX0vJHthcn0i IF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgfHwgKCBjZCAiJHtkaXJlY3Rvcnl9IiAmJiAke2ZldGNofSAtLW5vLXZlcmJvc2UgIiR7YmFz ZV91cmx9JHthcn0iICkgIFwKKyAgICAgICAgfHwgZGllICJDYW5ub3QgZG93bmxvYWQgJHthcn0g ZnJvbSAke2Jhc2VfdXJsfSIKK2RvbmUKK3Vuc2V0IGFyCisKK2lmIFsgJHt2ZXJpZnl9IC1ndCAw IF0KK3RoZW4KKyAgICBjaGtzdW1maWxlPSJjb250cmliL3ByZXJlcXVpc2l0ZXMuJHtjaGtzdW1f ZXh0ZW5zaW9ufSIKKyAgICBbIC1yICIke2Noa3N1bWZpbGV9IiBdIHx8IGRpZSAiTm8gY2hlY2tz dW1zIGF2YWlsYWJsZSIKKyAgICBmb3IgYXIgaW4gJChlY2hvX2FyY2hpdmVzKQorICAgIGRvCisg ICAgICAgIGdyZXAgIiR7YXJ9IiAiJHtjaGtzdW1maWxlfSIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8ICggY2QgIiR7ZGlyZWN0b3J5fSIg JiYgJHtjaGtzdW19ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICB8fCBkaWUgIkNhbm5vdCB2ZXJpZnkgaW50ZWdyaXR5IG9mIHBvc3NpYmx5IGNvcnJ1cHRlZCBm aWxlICR7YXJ9IgorICAgIGRvbmUKKyAgICB1bnNldCBjaGtzdW1maWxlCitmaQordW5zZXQgYXIK KworZm9yIGFyIGluICQoZWNob19hcmNoaXZlcykKK2RvCisgICAgcGFja2FnZT0iJHthciUudGFy Kn0iCisgICAgaWYgWyAke2ZvcmNlfSAtZ3QgMCBdOyB0aGVuIHJtIC1yZiAiJHtkaXJlY3Rvcnl9 LyR7cGFja2FnZX0iOyBmaQorICAgIGNhc2UgJGFyIGluCisgICAgKi5neikKKwl1bmNvbXByZXNz PSdnemlwIC1kJworCTs7CisgICAgKi5iejIpCisJdW5jb21wcmVzcz0nYnppcDIgLWQnCisJOzsK KyAgICAqKQorCXVuY29tcHJlc3M9J2NhdCcKKwk7OworICAgIGVzYWMKKyAgICBbIC1lICIke2Rp cmVjdG9yeX0vJHtwYWNrYWdlfSIgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgfHwgKCBjZCAiJHtkaXJlY3Rvcnl9IiAmJiAkdW5jb21wcmVzcyA8 IiR7YXJ9IiB8IHRhciAteGYgLSApICAgICAgICAgIFwKKyAgICAgICAgfHwgZGllICJDYW5ub3Qg ZXh0cmFjdCBwYWNrYWdlIGZyb20gJHthcn0iCisgICAgdW5zZXQgcGFja2FnZQorZG9uZQordW5z ZXQgYXIKKworZm9yIGFyIGluICQoZWNob19hcmNoaXZlcykKK2RvCisgICAgdGFyZ2V0PSIke2Rp cmVjdG9yeX0vJHthciUudGFyKn0vIgorICAgIGxpbmtuYW1lPSIke2FyJS0qfSIKKyAgICBpZiBb ICR7Zm9yY2V9IC1ndCAwIF07IHRoZW4gcm0gLWYgIiR7bGlua25hbWV9IjsgZmkKKyAgICBbIC1l ICIke2xpbmtuYW1lfSIgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgbG4gLXMgIiR7dGFyZ2V0fSIgIiR7bGlua25hbWV9 IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgZGllICJD YW5ub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgJHtsaW5rbmFtZX0gLS0+ICR7dGFyZ2V0fSIKKyAg ICB1bnNldCB0YXJnZXQgbGlua25hbWUKK2RvbmUKK3Vuc2V0IGFyCisKK2VjaG8gIkFsbCBwcmVy ZXF1aXNpdGVzIGRvd25sb2FkZWQgc3VjY2Vzc2Z1bGx5LiIKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cHJlcmVxdWlzaXRlcy5tZDUgYi9jb250cmliL3ByZXJlcXVpc2l0ZXMubWQ1Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmN2JlMGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250 cmliL3ByZXJlcXVpc2l0ZXMubWQ1CkBAIC0wLDAgKzEsMiBAQAorODZlZTZlNTRlYmZjNGE5MGI2 NDNhNjVlNDAyYzQwNDggIGdtcC02LjEuMC50YXIuYnoyCitiOGEyZjZiMGU2OGJlZjQ2ZTUzZGEy YWM0MzllMWNmNCAgbXBmci0zLjEuNC50YXIuYnoyCmRpZmYgLS1naXQgYS9jb250cmliL3ByZXJl cXVpc2l0ZXMuc2hhNTEyIGIvY29udHJpYi9wcmVyZXF1aXNpdGVzLnNoYTUxMgpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA1YWZmCi0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9wcmVyZXF1aXNpdGVzLnNoYTUxMgpAQCAtMCwwICsxLDIgQEAKKzNjODJhZWFiOWMxNTk2 ZDRkYThhZmFjMmVlYzM4ZTQyOWU4NGYzMjExZTFhNTcyY2Y4ZmQyYjU0NjQ5M2M0NGMwMzliOTIy YTExMzNlYWFhNDhiZDdmM2UxMWRiZTc5NWEzODRlMjFlZDk1Y2JlM2VjYzU4ZDdhYzAyMjQ2MTE3 ICBnbXAtNi4xLjAudGFyLmJ6MgorNTEwNjYwNjZmZjJjMTJlZDIxOTg2MDVlY2Y2ODg0NmIwYzk2 YjU0OGFkYWZhNWI4MGUwYzc4NmQwZGY0ODg0MTFhNWU4OTczMzU4ZmNlNzE5MmRjOTc3YWQ0ZTY4 NDE0Y2YxNDUwMGUzYzM5NzQ2ZGU2MjQ2NWViMTQ1YmI4MTkgIG1wZnItMy4xLjQudGFyLmJ6Mgpk aWZmIC0tZ2l0IGEvZ2RiL1JFQURNRSBiL2dkYi9SRUFETUUKaW5kZXggZTY1YzVlYS4uMmI5YzM4 MiAxMDA2NDQKLS0tIGEvZ2RiL1JFQURNRQorKysgYi9nZGIvUkVBRE1FCkBAIC00ODgsNiArNDg4 LDEyIEBAIG1vcmUgb2JzY3VyZSBHREIgYGNvbmZpZ3VyZScgb3B0aW9ucyBhcmUgbm90IGxpc3Rl ZCBoZXJlLgogICAgICBCdWlsZCBHREIgdXNpbmcgdGhlIEdNUCBsaWJyYXJ5IGluc3RhbGxlZCBh dCB0aGUgZGlyZWN0b3J5IERJUi4KICAgICAgSWYgeW91ciBob3N0IGRvZXMgbm90IGhhdmUgR01Q IGluc3RhbGxlZCwgeW91IGNhbiBnZXQgdGhlIGxhdGVzdAogICAgICB2ZXJzaW9uIGF0IGBodHRw czovL2dtcGxpYi5vcmcvJy4KKyAgICAgWW91IGNhbiBhbHNvIGJ1aWxkIEdNUCBpbi10cmVlIHdo ZW4geW91IHVzZSB0aGUgc2NyaXB0CisgICAgIC4vY29udHJpYi9kb3dubG9hZF9wcmVyZXF1aXNp dGVzLgorICAgICBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgY29uZmlndXJlLiAgTm8gLS13aXRo LWdtcCBvcHRpb25zIG11c3QKKyAgICAgYmUgdXNlZCB3aGVuIGludm9raW5nIGNvbmZpZ3VyZSBp biB0aGlzIGNhc2UuCisgICAgIE5vdGUgaG93ZXZlciwgdGhhdCB0aGlzIGRvZXMgb25seSB3b3Jr IHdpdGggYSBzZXBhcmF0ZSBidWlsZAorICAgICBkaXJlY3RvcnkuCiAKIGAtLXdpdGgtbXBmcicK ICAgICAgQnVpbGQgR0RCIHdpdGggR05VIE1QRlIsIGEgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJl Y2lzaW9uCkBAIC00OTksNiArNTA1LDEyIEBAIG1vcmUgb2JzY3VyZSBHREIgYGNvbmZpZ3VyZScg b3B0aW9ucyBhcmUgbm90IGxpc3RlZCBoZXJlLgogICAgICBhdmFpbGFibGUsIEdEQiB3aWxsIGZh bGwgYmFjayB0byB1c2luZyBob3N0IGZsb2F0aW5nLXBvaW50CiAgICAgIGFyaXRobWV0aWMuICBJ ZiB5b3VyIGhvc3QgZG9lcyBub3QgaGF2ZSBHTlUgTVBGUiBpbnN0YWxsZWQsIHlvdQogICAgICBj YW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIGBodHRwczovL3d3dy5tcGZyLm9yZy8nLgor ICAgICBZb3UgY2FuIGFsc28gYnVpbGQgTVBGUiBpbi10cmVlIHdoZW4geW91IHVzZSB0aGUgc2Ny aXB0CisgICAgIC4vY29udHJpYi9kb3dubG9hZF9wcmVyZXF1aXNpdGVzLgorICAgICBUaGlzIG11 c3QgYmUgZG9uZSBiZWZvcmUgY29uZmlndXJlLiAgTm8gLS13aXRoLW1wZnIgb3B0aW9ucyBtdXN0 CisgICAgIGJlIHVzZWQgd2hlbiBpbnZva2luZyBjb25maWd1cmUgaW4gdGhpcyBjYXNlLgorICAg ICBOb3RlIGhvd2V2ZXIsIHRoYXQgdGhpcyBkb2VzIG9ubHkgd29yayB3aXRoIGEgc2VwYXJhdGUg YnVpbGQKKyAgICAgZGlyZWN0b3J5LgogCiBgLS13aXRoLXB5dGhvbls9UFlUSE9OXScKICAgICAg QnVpbGQgR0RCIHdpdGggUHl0aG9uIHNjcmlwdGluZyBzdXBwb3J0LiAgKERvbmUgYnkgZGVmYXVs dCBpZgpkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKaW5kZXggMjRl NmZiYy4uMmJmODAxNCAxMDA3NTUKLS0tIGEvZ2RiL2NvbmZpZ3VyZQorKysgYi9nZGIvY29uZmln dXJlCkBAIC05OTkxLDYgKzk5OTEsMTMgQEAgZG9uZQogZmkKIAogIyBWZXJpZnkgdGhhdCB3ZSBo YXZlIGEgdXNhYmxlIEdNUCBsaWJyYXJ5LgoraWYgdGVzdCAtZCAiLi4vZ21wIjsgdGhlbgorICBD UFBGTEFHUz0iJENQUEZMQUdTIC1JLi4vZ21wIgorICBMSUJHTVA9Ii4uL2dtcC8ubGlicy9saWJn bXAuYSIKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJHTVAgMSIgPj5jb25mZGVmcy5oCisK K2Vsc2UKIAogCiAKQEAgLTEwNDMxLDcgKzEwNDM4LDcgQEAgaW50CiBtYWluICgpCiB7CiBtcHpf dCBuOwotICAgICAgICAgICAgICAgICAgICAgICBtcHpfaW5pdCAobik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgbXB6X2luaXQgKG4pOwogICA7CiAgIHJldHVybiAwOwogfQpAQCAtMTA0Njks OCArMTA0NzYsOSBAQCAkYXNfZWNobyAiJExJQkdNUCIgPiY2OyB9CiAKIAogCi1pZiB0ZXN0ICIk SEFWRV9MSUJHTVAiICE9IHllczsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiR01QIGlzIG1pc3Np bmcgb3IgdW51c2FibGUiICIkTElORU5PIiA1CisgIGlmIHRlc3QgIiRIQVZFX0xJQkdNUCIgIT0g eWVzOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIkdNUCBpcyBtaXNzaW5nIG9yIHVudXNhYmxl IiAiJExJTkVOTyIgNQorICBmaQogZmkKIAogCkBAIC0xMDQ5MCw2ICsxMDQ5OCwxMiBAQCBpZiB0 ZXN0ICIke3dpdGhfbXBmcn0iID0gbm87IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBNUEZSIHN1cHBvcnQgZGlzYWJsZWQ7IHNvbWUgZmVh dHVyZXMgbWF5IGJlIHVuYXZhaWxhYmxlLiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5H OiBNUEZSIHN1cHBvcnQgZGlzYWJsZWQ7IHNvbWUgZmVhdHVyZXMgbWF5IGJlIHVuYXZhaWxhYmxl LiIgPiYyO30KICAgSEFWRV9MSUJNUEZSPW5vCitlbGlmIHRlc3QgLWQgIi4uL21wZnIiOyB0aGVu CisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke3NyY2Rpcn0vLi4vbXBmci9zcmMiCisgIExJQk1Q RlI9Ii4uL21wZnIvc3JjLy5saWJzL2xpYm1wZnIuYSIKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9MSUJNUEZSIDEiID4+Y29uZmRlZnMuaAorCiBlbHNlCiAKIApkaWZmIC0tZ2l0IGEvZ2RiL2Nv bmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKaW5kZXggMzJmMjVkOS4uMzc2NjQzYyAxMDA2 NDQKLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYworKysgYi9nZGIvY29uZmlndXJlLmFjCkBAIC02ODQs MTEgKzY4NCwxNyBAQCBlbHNlCiBmaQogCiAjIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSB1c2FibGUg R01QIGxpYnJhcnkuCi1BQ19MSUJfSEFWRV9MSU5LRkxBR1MoW2dtcF0sIFtdLCBbI2luY2x1ZGUg PGdtcC5oPl0sCi0gICAgICAgICAgICAgICAgICAgICAgW21wel90IG47Ci0gICAgICAgICAgICAg ICAgICAgICAgIG1wel9pbml0IChuKTtdKQotaWYgdGVzdCAiJEhBVkVfTElCR01QIiAhPSB5ZXM7 IHRoZW4KLSAgQUNfTVNHX0VSUk9SKFtHTVAgaXMgbWlzc2luZyBvciB1bnVzYWJsZV0pCitpZiB0 ZXN0IC1kICIuLi9nbXAiOyB0aGVuCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkuLi9nbXAiCisg IExJQkdNUD0iLi4vZ21wLy5saWJzL2xpYmdtcC5hIgorICBBQ19ERUZJTkUoSEFWRV9MSUJHTVAs IDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIEdNUCBsaWJyYXJ5Ll0pCitlbHNlCisgIEFDX0xJ Ql9IQVZFX0xJTktGTEFHUyhbZ21wXSwgW10sIFsjaW5jbHVkZSA8Z21wLmg+XSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIFttcHpfdCBuOworICAgICAgICAgICAgICAgICAgICAgICAgIG1wel9p bml0IChuKTtdKQorICBpZiB0ZXN0ICIkSEFWRV9MSUJHTVAiICE9IHllczsgdGhlbgorICAgIEFD X01TR19FUlJPUihbR01QIGlzIG1pc3Npbmcgb3IgdW51c2FibGVdKQorICBmaQogZmkKIAogQUNf QVJHX1dJVEgobXBmciwKQEAgLTcwMCw2ICs3MDYsMTAgQEAgQUNfTVNHX1JFU1VMVChbJHdpdGhf bXBmcl0pCiBpZiB0ZXN0ICIke3dpdGhfbXBmcn0iID0gbm87IHRoZW4KICAgQUNfTVNHX1dBUk4o W01QRlIgc3VwcG9ydCBkaXNhYmxlZDsgc29tZSBmZWF0dXJlcyBtYXkgYmUgdW5hdmFpbGFibGUu XSkKICAgSEFWRV9MSUJNUEZSPW5vCitlbGlmIHRlc3QgLWQgIi4uL21wZnIiOyB0aGVuCisgIENQ UEZMQUdTPSIkQ1BQRkxBR1MgLUkke3NyY2Rpcn0vLi4vbXBmci9zcmMiCisgIExJQk1QRlI9Ii4u L21wZnIvc3JjLy5saWJzL2xpYm1wZnIuYSIKKyAgQUNfREVGSU5FKEhBVkVfTElCTVBGUiwgMSwg W0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTVBGUiBsaWJyYXJ5Ll0pCiBlbHNlCiAgIEFDX0xJQl9I QVZFX0xJTktGTEFHUyhbbXBmcl0sIFtnbXBdLCBbI2luY2x1ZGUgPG1wZnIuaD5dLAogCQkJW21w ZnJfZXhwX3QgZXhwOyBtcGZyX3QgeDsKLS0gCjEuOS4xCgo= --------------78AB2C24AC6BCFF3ED592F49--