From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 945D4A04E7; Mon, 2 Nov 2020 20:02:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B5D5E2B89; Mon, 2 Nov 2020 20:02:01 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70070.outbound.protection.outlook.com [40.107.7.70]) by dpdk.org (Postfix) with ESMTP id ECC1D2986 for ; Mon, 2 Nov 2020 20:01:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=shjIEbrPdDDfKZAmpZt+tfv2NhwT7el1PppntVbWIPE=; b=Pb5JPVvX02pV/Bcv2nyCrRCCyfwyo3M02fLUQeNjzeDdTKXmm+MfBZSwN47FTu1Hh8JBDd89XDU7+ZD9o0uHq+pGcVmKEfS0FTuh8clww9/PHcppkyW/HefRl51s8R5DTLmBZntr72EJhS5dMvsF6cTW3L308wEd1DPMETgToDM= Received: from AM6PR0202CA0064.eurprd02.prod.outlook.com (2603:10a6:20b:3a::41) by AM6PR08MB3271.eurprd08.prod.outlook.com (2603:10a6:209:47::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Mon, 2 Nov 2020 19:01:55 +0000 Received: from VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:3a:cafe::44) by AM6PR0202CA0064.outlook.office365.com (2603:10a6:20b:3a::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18 via Frontend Transport; Mon, 2 Nov 2020 19:01:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT026.mail.protection.outlook.com (10.152.18.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3520.15 via Frontend Transport; Mon, 2 Nov 2020 19:01:55 +0000 Received: ("Tessian outbound c189680f801b:v64"); Mon, 02 Nov 2020 19:01:54 +0000 X-CR-MTA-TID: 64aa7808 Received: from 0e12c5a208fd.4 by 64aa7808-outbound-1.mta.getcheckrecipient.com id AC1A39FB-D0B9-4F2D-B6FB-F55B795999AA.1; Mon, 02 Nov 2020 19:01:49 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0e12c5a208fd.4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 02 Nov 2020 19:01:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FDCKowTxPhHGg437Sncb7tQDKv3ufmP7KPrORTN6CA/ofQ+D6Bj6vqH4zOXYHSDjZskCMjxrHr/3gdyA6P+8NLtkUlICIxvZ8LnjMbnULwdnC3hM5L4VmMXqr3typSc0qCZ1Cjr+yR1Ohs2ZxvH7ipz4/gumt7fimUyZbt2u4QmrfXswJcZ7bEv8b+M/mZbd0Q4GZUa/g2p7pWJVz2XbB252NWbhomGqT8ibgQffaac5Tw+Sx+kZ5l2oe4smMMo+uUlzT+k/YSiQNSqKsVMh/0sozapXnrUwFTDb5aNBh5EpjQ0iempvE6bByRzrw+lfJ/RMGquQSW/dJcedcxcmoQ== 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=shjIEbrPdDDfKZAmpZt+tfv2NhwT7el1PppntVbWIPE=; b=hXwOBsM+mWItmK1ZZ6MkWLYGjxq8L1BMVTaIcenAJXXD2smJWgvTZZxumAFhtF0MZcBxVFQQDyjMeWSZOpRipkCekwKrwmliXMMiAippJgd9lnf+OmGTQzC1baAcFJzo+QbsjHJIe6bxuXlXYmqmTRVHhEzeqrzpGOUzGk44+JHvKu9J/NXaXFhUVzmqWHD8gDFWXLBat34BY7gVAeNdrGquPZZ6K9MGfc4/B4FiQE4qJWYFj6iv90b+6RGHhK73TmGZlui72YUb8aZtRV8cgyXBoplELkN7Wvoj09UO1wdbwNJeB5xI/vobiLHiqHm9dl7ajJnjctExEz1ZzR8XOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=shjIEbrPdDDfKZAmpZt+tfv2NhwT7el1PppntVbWIPE=; b=Pb5JPVvX02pV/Bcv2nyCrRCCyfwyo3M02fLUQeNjzeDdTKXmm+MfBZSwN47FTu1Hh8JBDd89XDU7+ZD9o0uHq+pGcVmKEfS0FTuh8clww9/PHcppkyW/HefRl51s8R5DTLmBZntr72EJhS5dMvsF6cTW3L308wEd1DPMETgToDM= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB8PR08MB4121.eurprd08.prod.outlook.com (2603:10a6:10:aa::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.28; Mon, 2 Nov 2020 19:01:45 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d%4]) with mapi id 15.20.3499.030; Mon, 2 Nov 2020 19:01:45 +0000 From: Honnappa Nagarahalli To: Bruce Richardson CC: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= , Ruifeng Wang , Phil Yang , "vcchunga@amazon.com" , Dharmik Thakkar , "jerinjacobk@gmail.com" , "hemant.agrawal@nxp.com" , "dev@dpdk.org" , nd , Honnappa Nagarahalli , nd Thread-Topic: [RFC PATCH v3 3/6] build: automatic NUMA and cpu counts detection Thread-Index: AQHWp6IW878hzFF1g0GNj7nrgxEFCqmiBV+AgAAUA4CAC+ae4IAG8FYAgAAAwdA= Date: Mon, 2 Nov 2020 19:01:44 +0000 Message-ID: References: <1602600882-695-1-git-send-email-juraj.linkes@pantheon.tech> <1603280261-20206-1-git-send-email-juraj.linkes@pantheon.tech> <1603280261-20206-4-git-send-email-juraj.linkes@pantheon.tech> <20201021120220.GC592@bricha3-MOBL.ger.corp.intel.com> <54e20244e1e841148669eb93b6b8876c@pantheon.tech> <20201021141319.GD592@bricha3-MOBL.ger.corp.intel.com> <20201102135520.GA1454@bricha3-MOBL.ger.corp.intel.com> In-Reply-To: <20201102135520.GA1454@bricha3-MOBL.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 5AFE79BEF21A7249A3F6E5AD6746E8F0.0 x-checkrecipientchecked: true Authentication-Results-Original: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [70.113.13.105] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7cf3073f-6d39-4be7-fa60-08d87f61c425 x-ms-traffictypediagnostic: DB8PR08MB4121:|AM6PR08MB3271: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: I8iwJNpXMzo2KKYivcj03/3cjlgSj6OI8d/+HVppht3IGcxgL7rClPAviMnKFPcI0KtsjIk6efYkukWAhrDrEZHsMLAW2WW6evSiYna8ok8ZYkczw6G5LLbV5G61eY1AW1lxaQ7Nl+5O7OW6/3l3C8VcajTdt9t/VJg9TztLwrqzUfQLNReuyp0niz1zKYqKUDEoX/5kvUbDH1hBUz+X7xMDs8BrhEJ8TXLKOBBUzkjU09soOKWwUTNp6dPlX6EaD0/b/cpomksGmsVcAUtGXPE/lZAWG07c+Fljl1hO+PuxA88GX29H3PtiO4+YkDCdiLlErBB2b4I7+JylqHu5hCo3Xv7x0GCtiVJgIz5do8nleTnYEAdplJXbvtam96bimXgx2u35KC71aX6SpF2j+Q== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(136003)(366004)(396003)(39850400004)(966005)(316002)(8676002)(8936002)(4326008)(6916009)(2906002)(86362001)(478600001)(54906003)(55016002)(9686003)(76116006)(26005)(66476007)(6506007)(64756008)(66556008)(66946007)(83380400001)(5660300002)(186003)(33656002)(52536014)(30864003)(66446008)(71200400001)(7696005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: zGbV/nTVd/h/XShqTYdlfA9sT13dPPyThwJKE1BGtanbX8fiF7f5n5zaYKoKUV+nhOCUs+v6JjEGRqFxYZbPYQVlPlKcOsrXDmU6yAX5xPu8Cj7P6Mubu12EvN5uSyeFCA4BqI/yRbueLgyEESgdrMxPWNseUwLr9rSEcHRPNz2PIsi31Ddx8GVNyAJMJxvf3jAcKsXrF6GSSm+C6D4YiVMBQ4voxPJThAnXJEza/QUzBUqwpS8Mt2Xv6dhQ0Bia6bmvy8LlHbS5AMLIj0029ODEZzUsU33owmuQvhVE6LAtG6rPPiA5/A0h/I7mG6KCEADX08jQ2geaKCJmBZtROzO+kpebmCNjr1dnLrjfdp9DSgo3BaMaIjiJkuHr8ti4ZJSzTV0O9DjIGVhzcUeb9IMbYnc+3ZdAKUDhZmY+CESo49f60yDVxpfHukA5AHoMhEOTZy8NqJP0lm51bA4p9zpKMX62HL2i0ZkQiWC8+qmc+NLSvLPV6YgJe3ucJOH+Gc+MVc6dyIioNwv5erFZBonsGAeO8GnprCN92CZnL7QU5ib1l538gVzD+HdDL7tShoCFTUt3PVlEGiOLAIwiFu5b57DDoQzDSZbf7kAbMimOU1K2qMY4JZU1HCy70IYhjC9ghxGS+dYyyUND3bmlqQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4121 Original-Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 8525b677-2fe2-4398-7fdb-08d87f61be17 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iMF5Uy8TrUKzDUestGRFya/2GD/UwLDYsqOh/0iTSNCy9u/8BT5uVud+yD4QSKFDybyctxEF87SPiOB8b3hoQiyxZezu0ZidB9tC38rNSO0JeVxACkdXFuM3HHTHHyGimLODa5qbx/2RyU4rxVMjiocf8n3ebwFMh9d0HWtgDmjUlWak2Gs+aiBew68P6eRLS+AlZE2K5FbaiXM8Xeifq/TuWAekAvSkqgNi7moua7UuJsdhWa1+txZ3mTDqqug3qHii/74IBUrQmygDGsWDckScSlss7RENLnrHO0WF++EAZWVHAWHwmJXpiUWdd14iNiK7JpVc6qtAKrGytD1g24MnPUC+06vhpo+kVBfaR55qVmank/aY7yFG8q5AFfI0VHOLNpSinPYWe/yq/MrpHNXvqpGRBNNweLkiLKAefgS7HEQugmCgoJqRNo97e/ryN1SiN93ZT4cpAk3/eZD+ogISd10lSSXGs3osG8To0U8= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39850400004)(396003)(46966005)(81166007)(70206006)(26005)(55016002)(82740400003)(47076004)(8936002)(82310400003)(336012)(6862004)(5660300002)(6506007)(9686003)(8676002)(4326008)(316002)(966005)(52536014)(186003)(86362001)(36906005)(478600001)(30864003)(83380400001)(7696005)(70586007)(2906002)(54906003)(33656002)(356005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2020 19:01:55.1254 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7cf3073f-6d39-4be7-fa60-08d87f61c425 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3271 Subject: Re: [dpdk-dev] [RFC PATCH v3 3/6] build: automatic NUMA and cpu counts detection X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PHNuaXA+DQoNCj4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT24gV2VkLCBPY3QgMjEsIDIwMjAg YXQgMDE6Mzc6MzhQTSArMDIwMCwgSnVyYWogTGlua2XFoSB3cm90ZToNCj4gPiA+ID4gPiA+IFRo ZSBidWlsZCBtYWNoaW5lJ3MgbnVtYmVyIG9mIGNwdXMgYW5kIG51bWEgbm9kZXMgdmFyeSwNCj4g PiA+ID4gPiA+IHJlc3VsdGluZyBpbiBtaXNtYXRjaGVkIGNvdW50cyBvZiBSVEVfTUFYX0xDT1JF IGFuZA0KPiA+ID4gUlRFX01BWF9OVU1BX05PREVTIGZvcg0KPiA+ID4gPiA+IG1hbnkNCj4gPiA+ ID4gPiA+IGJ1aWxkcy4gQXV0b21hdGljYWxseSBkaXNjb3ZlciB0aGUgaG9zdCdzIG51bWEgYW5k IGNwdSBjb3VudHMNCj4gPiA+ID4gPiA+IHRvIHJlbW92ZSB0aGlzIG1pc21hdGNoIGZvciBuYXRp dmUgYnVpbGRzLiBVc2UgY3VycmVudA0KPiA+ID4gPiA+ID4gZGVmYXVsdHMgZm9yIGRlZmF1bHQN Cj4gPiA+IGJ1aWxkcy4NCj4gPiA+ID4gPiA+IEZvcmNlIHRoZSB1c2VycyB0byBzcGVjaWZ5IHRo ZSBjb3VudHMgZm9yIGNyb3NzIGJ1aWxkIGluIGNyb3NzDQo+ID4gPiA+ID4gPiBmaWxlcyBvciBv biB0aGUgY29tbWFuZCBsaW5lLg0KPiA+ID4gPiA+ID4gR2l2ZSB1c2VycyB0aGUgb3B0aW9uIHRv IG92ZXJyaWRlIHRoZSBkaXNjb3Zlcnkgb3IgdmFsdWVzIGZyb20NCj4gPiA+ID4gPiA+IGNyb3Nz IGZpbGVzIGJ5IHNwZWNpZnlpbmcgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGgNCj4gPiA+ ID4gPiA+IC1EbWF4X2xjb3JlcyBhbmQgLURtYXhfbnVtYV9ub2Rlcy4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKdXJhaiBMaW5rZcWhIDxqdXJhai5saW5rZXNAcGFu dGhlb24udGVjaD4NCj4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gIGJ1aWxkdG9vbHMvZ2V0 X2NwdV9jb3VudC5weSAgfCAgNyArKysrKysNCj4gPiA+ID4gPiA+IGJ1aWxkdG9vbHMvZ2V0X251 bWFfY291bnQucHkgfCAyMiArKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiAgYnVpbGR0 b29scy9tZXNvbi5idWlsZCAgICAgICB8ICAyICsrDQo+ID4gPiA+ID4gPiAgY29uZmlnL21lc29u LmJ1aWxkICAgICAgICAgICB8IDQyDQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0NCj4gPiA+ID4gPiA+ICBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgIHwgIDgg KysrLS0tLQ0KPiA+ID4gPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkgIGNyZWF0ZQ0KPiA+ID4gPiA+ID4gbW9kZQ0KPiA+ID4gPiA+ID4gMTAw NjQ0IGJ1aWxkdG9vbHMvZ2V0X2NwdV9jb3VudC5weSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+ID4gPiBidWlsZHRvb2xzL2dldF9udW1hX2NvdW50LnB5DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2J1aWxkdG9vbHMvZ2V0X2NwdV9jb3VudC5weQ0KPiA+ID4gPiA+ ID4gYi9idWlsZHRvb2xzL2dldF9jcHVfY291bnQucHkgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5k ZXgNCj4gPiA+ID4gPiA+IDAwMDAwMDAwMC4uMzg2Zjg1ZjhiDQo+ID4gPiA+ID4gPiAtLS0gL2Rl di9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9idWlsZHRvb2xzL2dldF9jcHVfY291bnQucHkNCj4g PiA+ID4gPiA+IEBAIC0wLDAgKzEsNyBAQA0KPiA+ID4gPiA+ID4gKyMhL3Vzci9iaW4vcHl0aG9u Mw0KPiA+ID4gPiA+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAj IENvcHlyaWdodCAoYykgMjAyMA0KPiA+ID4gPiA+ID4gK1BBTlRIRU9OLnRlY2ggcy5yLm8uDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraW1wb3J0IG9zDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArcHJpbnQob3MuY3B1X2NvdW50KCkpDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv YnVpbGR0b29scy9nZXRfbnVtYV9jb3VudC5weQ0KPiA+ID4gPiA+ID4gYi9idWlsZHRvb2xzL2dl dF9udW1hX2NvdW50LnB5IG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gPiA+ID4gPiAw MDAwMDAwMDAuLmYwYzQ5OTczYQ0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ ID4gKysrIGIvYnVpbGR0b29scy9nZXRfbnVtYV9jb3VudC5weQ0KPiA+ID4gPiA+ID4gQEAgLTAs MCArMSwyMiBAQA0KPiA+ID4gPiA+ID4gKyMhL3Vzci9iaW4vcHl0aG9uMw0KPiA+ID4gPiA+ID4g KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodCAoYykg MjAyMA0KPiA+ID4gPiA+ID4gK1BBTlRIRU9OLnRlY2ggcy5yLm8uDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiAraW1wb3J0IGN0eXBlcw0KPiA+ID4gPiA+ID4gK2ltcG9ydCBnbG9iDQo+ID4g PiA+ID4gPiAraW1wb3J0IG9zDQo+ID4gPiA+ID4gPiAraW1wb3J0IHN1YnByb2Nlc3MNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiBvcy5uYW1lID09ICdwb3NpeCc6DQo+ID4gPiA+ID4g PiArICAgIGlmIG9zLnBhdGguaXNkaXIoJy9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZScpOg0KPiA+ ID4gPiA+ID4gKyAgICAgICAgcHJpbnQobGVuKGdsb2IuZ2xvYignL3N5cy9kZXZpY2VzL3N5c3Rl bS9ub2RlL25vZGUqJykpKQ0KPiA+ID4gPiA+ID4gKyAgICBlbHNlOg0KPiA+ID4gPiA+ID4gKyAg ICAgICAgcHJpbnQoc3VicHJvY2Vzcy5ydW4oWydzeXNjdGwnLCAndm0ubmRvbWFpbnMnXSwNCj4g PiA+ID4gPiA+ICtjYXB0dXJlX291dHB1dD1UcnVlKS5zdGRvdXQpDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArZWxpZiBvcy5uYW1lID09ICdudCc6DQo+ID4gPiA+ID4gPiArICAgIGxpYmtl cm5lbDMyID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgICBjb3VudCA9IGN0eXBlcy5jX3Vsb25nKCkNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsNCj4gbGlia2VybmVsMzIuR2V0TnVtYUhpZ2hlc3ROb2RlTnVtYmVyKGN0eXBlcy5wb2lu dGVyKGNvdW50KSkNCj4gPiA+ID4gPiA+ICsgICAgcHJpbnQoY291bnQudmFsdWUgKyAxKQ0KPiA+ ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2J1aWxkdG9vbHMvbWVzb24uYnVpbGQgYi9idWlsZHRvb2xz L21lc29uLmJ1aWxkDQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+ID4gMDQ4MDhkYWJjLi45 MjVlNzMzYjEgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9idWlsZHRvb2xzL21lc29uLmJ1aWxk DQo+ID4gPiA+ID4gPiArKysgYi9idWlsZHRvb2xzL21lc29uLmJ1aWxkDQo+ID4gPiA+ID4gPiBA QCAtMTcsMyArMTcsNSBAQCBlbHNlDQo+ID4gPiA+ID4gPiAgZW5kaWYNCj4gPiA+ID4gPiA+ICBt YXBfdG9fd2luX2NtZCA9IHB5MyArIGZpbGVzKCdtYXBfdG9fd2luLnB5JykgIHNwaGlueF93cmFw cGVyDQo+ID4gPiA+ID4gPiA9DQo+ID4gPiA+ID4gPiBweTMgKw0KPiA+ID4gPiA+ID4gZmlsZXMo J2NhbGwtc3BoaW54LWJ1aWxkLnB5JykNCj4gPiA+ID4gPiA+ICtnZXRfY3B1X2NvdW50X2NtZCA9 IHB5MyArIGZpbGVzKCdnZXRfY3B1X2NvdW50LnB5JykNCj4gPiA+ID4gPiA+ICtnZXRfbnVtYV9j b3VudF9jbWQgPSBweTMgKyBmaWxlcygnZ2V0X251bWFfY291bnQucHknKQ0KPiA+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2NvbmZpZy9tZXNvbi5idWlsZCBiL2NvbmZpZy9tZXNvbi5idWlsZCBpbmRl eA0KPiA+ID4gPiA+ID4gYTU3YzhhZTllLi5jNDQ3N2Y5NzcgMTAwNjQ0DQo+ID4gPiA+ID4gPiAt LS0gYS9jb25maWcvbWVzb24uYnVpbGQNCj4gPiA+ID4gPiA+ICsrKyBiL2NvbmZpZy9tZXNvbi5i dWlsZA0KPiA+ID4gPiA+ID4gQEAgLTc0LDcgKzc0LDExIEBAIGVuZGlmDQo+ID4gPiA+ID4gPiAg IyBzdGlsbCBiZWluZyBhYmxlIHRvIHN1cHBvcnQgdGhlIENQVSBmZWF0dXJlcyByZXF1aXJlZCBm b3IgRFBESy4NCj4gPiA+ID4gPiA+ICAjIFRoaXMgY2FuIGJlIGJ1bXBlZCB1cCBieSB0aGUgRFBE SyBwcm9qZWN0LCBidXQgaXQgY2FuIG5ldmVyDQo+ID4gPiA+ID4gPiBiZSBhbiAjIGludmFyaWFu dCBsaWtlICduYXRpdmUnDQo+ID4gPiA+ID4gPiArbWF4X2xjb3JlcyA9IGdldF9vcHRpb24oJ21h eF9sY29yZXMnKSBtYXhfbnVtYV9ub2RlcyA9DQo+ID4gPiA+ID4gPiArZ2V0X29wdGlvbignbWF4 X251bWFfbm9kZXMnKQ0KPiA+ID4gPiA+ID4gIGlmIG1hY2hpbmUgPT0gJ2RlZmF1bHQnDQo+ID4g PiA+ID4gPiArCW1heF9udW1hX25vZGVzID0gNA0KPiA+ID4gPiA+ID4gKwltYXhfbGNvcmVzID0g MTI4DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGlzIGRvZXNuJ3Qgc2VlbSByaWdodCwgc2luY2Ug eW91IGFyZSBvdmVycmlkaW5nIHRoZQ0KPiA+ID4gPiA+IHVzZXItc3BlY2lmaWVkIHZhbHVlcyB3 aXRoIGhhcmQtY29kZWQgb25lcy4NCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBJIHVuZGVy c3RhbmQgd2UncmUgdXNpbmcgdGhlIGRlZmF1bHQgYnVpbGQvZ2VuZXJpYyB0byBidWlsZA0KPiA+ ID4gPiBwb3J0YWxiZSBkcGRrDQo+ID4gPiBkaXN0cm8gcGFja2FnZXMsIG1lYW5pbmcgdGhlIHNl dHRpbmdzIGZvciB0aG9zZSBwYWNrYWdlcyBzaG91bGQNCj4gPiA+IGFsd2F5cyBiZSB0aGUgc2Ft ZSwgbm8/IElmIG5vdCwgd2hhdCBzaG91bGQgdGhlIGRlZmF1bHQvZ2VuZXJpYw0KPiA+ID4gYnVp bGQgYmU/IEFuZCB3aGVuIHdvdWxkIHNvbWVvbmUgZG8gYSBkZWZhdWx0L2dlbmVyaWMgYnVpbGQg d2l0aA0KPiA+ID4gdGhlaXIgdmFsdWVzPyBJdCB3b3VsZG4ndCBiZSBhIGRlZmF1bHQvZ2VuZXJp YyBhbnltb3JlLCByaWdodD8NCj4gPiA+ID4NCj4gPiA+ID4gPiA+ICAJaWYgaG9zdF9tYWNoaW5l LmNwdV9mYW1pbHkoKS5zdGFydHN3aXRoKCd4ODYnKQ0KPiA+ID4gPiA+ID4gIAkJIyBtYXRjaGVz IHRoZSBvbGQgcHJlLW1lc29uIGJ1aWxkIHN5c3RlbXMgZGVmYXVsdA0KPiA+ID4gPiA+ID4gIAkJ bWFjaGluZSA9ICdjb3JlaTcnDQo+ID4gPiA+ID4gPiBAQCAtODMsNiArODcsMjIgQEAgaWYgbWFj aGluZSA9PSAnZGVmYXVsdCcNCj4gPiA+ID4gPiA+ICAJZWxpZiBob3N0X21hY2hpbmUuY3B1X2Zh bWlseSgpLnN0YXJ0c3dpdGgoJ3BwYycpDQo+ID4gPiA+ID4gPiAgCQltYWNoaW5lID0gJ3Bvd2Vy OCcNCj4gPiA+ID4gPiA+ICAJZW5kaWYNCj4gPiA+ID4gPiA+ICtlbGlmIG5vdCBtZXNvbi5pc19j cm9zc19idWlsZCgpDQo+ID4gPiA+ID4gPiArCSMgZmluZCBob3N0IGNvcmUgY291bnQgYW5kIG51 bWEgbm9kZSBjb3VudCBmb3IgbmF0aXZlIGJ1aWxkcw0KPiA+ID4gPiA+ID4gKwlpZiBtYXhfbGNv cmVzID09IDANCj4gPiA+ID4gPiA+ICsJCW1heF9sY29yZXMgPQ0KPiA+ID4gPiA+IHJ1bl9jb21t YW5kKGdldF9jcHVfY291bnRfY21kKS5zdGRvdXQoKS50b19pbnQoKQ0KPiA+ID4gPiA+ID4gKwkJ bWluX2xjb3JlcyA9IDINCj4gPiA+ID4gPiA+ICsJCWlmIG1heF9sY29yZXMgPCBtaW5fbGNvcmVz DQo+ID4gPiA+ID4gPiArCQkJbWVzc2FnZSgnRm91bmQgbGVzcyB0aGFuIEAwQCBjb3JlcywNCj4g YnVpbGRpbmcgZm9yDQo+ID4gPiA+ID4gQDBAIGNvcmVzJy5mb3JtYXQobWluX2xjb3JlcykpDQo+ ID4gPiA+ID4gPiArCQkJbWF4X2xjb3JlcyA9IG1pbl9sY29yZXMNCj4gPiA+ID4gPiA+ICsJCWVs c2UNCj4gPiA+ID4gPiA+ICsJCQltZXNzYWdlKCdGb3VuZCBAMEANCj4gY29yZXMnLmZvcm1hdCht YXhfbGNvcmVzKSkNCj4gPiA+ID4gPiA+ICsJCWVuZGlmDQo+ID4gPiA+ID4gPiArCWVuZGlmDQo+ ID4gPiA+ID4gPiArCWlmIG1heF9udW1hX25vZGVzID09IDANCj4gPiA+ID4gPiA+ICsJCW1heF9u dW1hX25vZGVzID0NCj4gPiA+ID4gPiBydW5fY29tbWFuZChnZXRfbnVtYV9jb3VudF9jbWQpLnN0 ZG91dCgpLnRvX2ludCgpDQo+ID4gPiA+ID4gPiArCQltZXNzYWdlKCdGb3VuZCBAMEAgbnVtYQ0K PiA+ID4gbm9kZXMnLmZvcm1hdChtYXhfbnVtYV9ub2RlcykpDQo+ID4gPiA+ID4gPiArCWVuZGlm DQo+ID4gPiA+ID4gPiAgZW5kaWYNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgZHBka19jb25m LnNldCgnUlRFX01BQ0hJTkUnLCBtYWNoaW5lKSBAQCAtMjI3LDggKzI0NywxMCBAQA0KPiA+ID4g PiA+ID4gZm9yZWFjaA0KPiA+ID4gPiA+ID4gYXJnOiB3YXJuaW5nX2ZsYWdzICBlbmRmb3JlYWNo DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICMgc2V0IG90aGVyIHZhbHVlcyBwdWxsZWQgZnJv bSB0aGUgYnVpbGQgb3B0aW9ucw0KPiA+ID4gPiA+ID4gLWRwZGtfY29uZi5zZXQoJ1JURV9NQVhf TENPUkUnLCBnZXRfb3B0aW9uKCdtYXhfbGNvcmVzJykpDQo+ID4gPiA+ID4gPiAtZHBka19jb25m LnNldCgnUlRFX01BWF9OVU1BX05PREVTJywNCj4gPiA+IGdldF9vcHRpb24oJ21heF9udW1hX25v ZGVzJykpDQo+ID4gPiA+ID4gPiAraWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkNCj4gPiA+ ID4gPiA+ICsJZHBka19jb25mLnNldCgnUlRFX01BWF9MQ09SRScsIG1heF9sY29yZXMpDQo+ID4g PiA+ID4gPiArCWRwZGtfY29uZi5zZXQoJ1JURV9NQVhfTlVNQV9OT0RFUycsDQo+IG1heF9udW1h X25vZGVzKQ0KPiA+ID4gZW5kaWYNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFJhdGhlciB0aGFuIGNv bmRpdGlvbmFsbHkgc2V0dGluZyB0aGUgdmFsdWUgaGVyZSwgeW91IHNob3VsZA0KPiA+ID4gPiA+ IG1vdmUgdGhlIGNoZWNrcyBiZWxvdyB1cCBhYm92ZSB0aGlzIHRvIHNpbXBsaWZ5IHRoaW5ncy4N Cj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBEbyB5b3UgbWVhbiB0aGUgY3Jvc3MgYnVpbGQg Y2hlY2tzPyBUaG9zZSBoYXZlIHRvIGJlIGFmdGVyDQo+ID4gPiBzdWJkaXIoYXJjaF9zdWJkaXIp IHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIHRoZSB2YWx1ZXMgZnJvbSBjcm9zcw0KPiA+ID4gZmls ZXMgKGFzIHRoZSBjb21taXQgbWVzc2FnZSBzYXlzKS4NCj4gPiA+ID4NCj4gPiA+ID4gPiA+ICBk cGRrX2NvbmYuc2V0KCdSVEVfTUFYX0VUSFBPUlRTJywNCj4gZ2V0X29wdGlvbignbWF4X2V0aHBv cnRzJykpDQo+ID4gPiA+ID4gPiBkcGRrX2NvbmYuc2V0KCdSVEVfTElCRUFMX1VTRV9IUEVUJywg Z2V0X29wdGlvbigndXNlX2hwZXQnKSkNCj4gPiA+ID4gPiA+IGRwZGtfY29uZi5zZXQoJ1JURV9F TkFCTEVfVFJBQ0VfRlAnLA0KPiA+ID4gPiA+ID4gZ2V0X29wdGlvbignZW5hYmxlX3RyYWNlX2Zw JykpIEBADQo+ID4gPiA+ID4gPiAtMjQ3LDYgKzI2OSwyMiBAQCBjb21waWxlX3RpbWVfY3B1Zmxh Z3MgPSBbXQ0KPiA+ID4gPiA+ID4gIHN1YmRpcihhcmNoX3N1YmRpcikNCj4gPiA+ID4gPiA+ICBk cGRrX2NvbmYuc2V0KCdSVEVfQ09NUElMRV9USU1FX0NQVUZMQUdTJywNCj4gPiA+ID4gPiA+ICcs Jy5qb2luKGNvbXBpbGVfdGltZV9jcHVmbGFncykpDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g KyMgY2hlY2sgdGhhdCBjcHUgYW5kIG51bWEgY291bnQgaXMgc2V0IGluIGNyb3NzIGJ1aWxkcyBp Zg0KPiA+ID4gPiA+ID4gK21lc29uLmlzX2Nyb3NzX2J1aWxkKCkNCj4gPiA+ID4gPiA+ICsgICAg CWlmIG1heF9sY29yZXMgPiAwDQo+ID4gPiA+ID4gPiArCQkjIHNwZWNpZmllZCBvbiB0aGUgY21k bGluZQ0KPiA+ID4gPiA+ID4gKwkJZHBka19jb25mLnNldCgnUlRFX01BWF9MQ09SRScsIG1heF9s Y29yZXMpDQo+ID4gPiA+ID4gPiArCWVsaWYgbm90IGRwZGtfY29uZi5oYXMoJ1JURV9NQVhfTENP UkUnKQ0KPiA+ID4gPiA+ID4gKwkJZXJyb3IoJ051bWJlciBvZiBjb3JlcyBmb3IgY3Jvc3MgYnVp bGQgbm90IHNwZWNpZmllZCBpbg0KPiBAMEANCj4gPiA+ID4gPiBzdWJkaXIgKGUuZy4gaW4gYSBj cm9zcy1maWxlKSBub3Igb24gdGhlDQo+ID4gPiA+ID4gY21kbGluZScuZm9ybWF0KGFyY2hfc3Vi ZGlyKSkNCj4gPiA+ID4gPiA+ICsJZW5kaWYNCj4gPiA+ID4gPiA+ICsJaWYgbWF4X251bWFfbm9k ZXMgPiAwDQo+ID4gPiA+ID4gPiArCQkjIHNwZWNpZmllZCBvbiB0aGUgY21kbGluZQ0KPiA+ID4g PiA+ID4gKwkJZHBka19jb25mLnNldCgnUlRFX01BWF9OVU1BX05PREVTJywNCj4gPiA+IG1heF9u dW1hX25vZGVzKQ0KPiA+ID4gPiA+ID4gKwllbGlmIG5vdCBkcGRrX2NvbmYuaGFzKCdSVEVfTUFY X05VTUFfTk9ERVMnKQ0KPiA+ID4gPiA+ID4gKwkJZXJyb3IoJ051bWJlciBvZiBudW1hIG5vZGVz IGZvciBjcm9zcyBidWlsZCBub3QNCj4gc3BlY2lmaWVkDQo+ID4gPiA+ID4gPiAraW4NCj4gPiA+ ID4gPiBAMEAgc3ViZGlyIChlLmcuIGluIGEgY3Jvc3MtZmlsZSkgbm9yIG9uIHRoZQ0KPiA+ID4g PiA+IGNtZGxpbmUnLmZvcm1hdChhcmNoX3N1YmRpcikpDQo+ID4gPiA+ID4gPiArCWVuZGlmDQo+ ID4gPiA+ID4gPiArZW5kaWYNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAjIHNldCB0aGUg aW5zdGFsbCBwYXRoIGZvciB0aGUgZHJpdmVycw0KPiA+ID4gPiA+ID4gZHBka19jb25mLnNldF9x dW90ZWQoJ1JURV9FQUxfUE1EX1BBVEgnLCBlYWxfcG1kX3BhdGgpDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50 eHQgaW5kZXgNCj4gPiA+ID4gPiA+IDliZjE4YWI2Yi4uMDFiMGM0NWMzIDEwMDY0NA0KPiA+ID4g PiA+ID4gLS0tIGEvbWVzb25fb3B0aW9ucy50eHQNCj4gPiA+ID4gPiA+ICsrKyBiL21lc29uX29w dGlvbnMudHh0DQo+ID4gPiA+ID4gPiBAQCAtMjYsMTAgKzI2LDEwIEBAIG9wdGlvbignbWFjaGlu ZScsIHR5cGU6ICdzdHJpbmcnLCB2YWx1ZToNCj4gJ25hdGl2ZScsDQo+ID4gPiA+ID4gPiAgCWRl c2NyaXB0aW9uOiAnc2V0IHRoZSB0YXJnZXQgbWFjaGluZSB0eXBlJykNCj4gPiA+ID4gPiA+IG9w dGlvbignbWF4X2V0aHBvcnRzJywNCj4gPiA+ID4gPiA+IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6 IDMyLA0KPiA+ID4gPiA+ID4gIAlkZXNjcmlwdGlvbjogJ21heGltdW0gbnVtYmVyIG9mIEV0aGVy bmV0IGRldmljZXMnKQ0KPiA+ID4gPiA+ID4gLW9wdGlvbignbWF4X2xjb3JlcycsIHR5cGU6ICdp bnRlZ2VyJywgdmFsdWU6IDEyOCwNCj4gPiA+ID4gPiA+IC0JZGVzY3JpcHRpb246ICdtYXhpbXVt IG51bWJlciBvZiBjb3Jlcy90aHJlYWRzIHN1cHBvcnRlZA0KPiBieSBFQUwnKQ0KPiA+ID4gPiA+ ID4gLW9wdGlvbignbWF4X251bWFfbm9kZXMnLCB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiA0LA0K PiA+ID4gPiA+ID4gLQlkZXNjcmlwdGlvbjogJ21heGltdW0gbnVtYmVyIG9mIE5VTUEgbm9kZXMg c3VwcG9ydGVkDQo+IGJ5IEVBTCcpDQo+ID4gPiA+ID4gPiArb3B0aW9uKCdtYXhfbGNvcmVzJywg dHlwZTogJ2ludGVnZXInLCB2YWx1ZTogMCwNCj4gPiA+ID4gPiA+ICsJZGVzY3JpcHRpb246ICdt YXhpbXVtIG51bWJlciBvZiBjb3Jlcy90aHJlYWRzIHN1cHBvcnRlZA0KPiBieSBFQUwuDQo+ID4g PiA+ID4gPiArVmFsdWUgMCBtZWFucyB0aGUgbnVtYmVyIG9mIGNwdXMgb24gdGhlIGhvc3Qgd2ls bCBiZSB1c2VkLg0KPiA+ID4gPiA+ID4gK0ZvciBjcm9zcyBidWlsZCwNCj4gPiA+ID4gPiBzZXQg dG8gbm9uLXplcm8gdG8gb3ZlcndyaXRlIHRoZSBjcm9zcy1maWxlIHZhbHVlLicpDQo+ID4gPiA+ ID4gb3B0aW9uKCdtYXhfbnVtYV9ub2RlcycsDQo+ID4gPiA+ID4gdHlwZTogJ2ludGVnZXInLCB2 YWx1ZTogMCwNCj4gPiA+ID4gPiA+ICsJZGVzY3JpcHRpb246ICdtYXhpbXVtIG51bWJlciBvZiBO VU1BIG5vZGVzIHN1cHBvcnRlZA0KPiBieSBFQUwuDQo+ID4gPiA+ID4gPiArVmFsdWUNCj4gPiA+ ID4gPiAwDQo+ID4gPiA+ID4gPiArbWVhbnMgdGhlIG51bWJlciBvZiBudW1hIG5vZGVzIG9uIHRo ZSBob3N0IHdpbGwgYmUgdXNlZC4gRm9yDQo+ID4gPiA+ID4gPiArY3Jvc3MgYnVpbGQsIHNldCB0 byBub24temVybyB0byBvdmVyd3JpdGUgdGhlIGNyb3NzLWZpbGUNCj4gPiA+ID4gPiA+ICt2YWx1 ZS4nKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBkb24ndCBsaWtlIHRoaXMgY2hhbmdlLCBiZWNh dXNlIGl0IHZlcnkgbXVjaCBhc3N1bWVzIGZvcg0KPiA+ID4gPiA+IG5vbi1jcm9zcy1jb21waWxl cyB0aGF0IHBlb3BsZSB3aWxsIGJlIHJ1bm5pbmcgRFBESyBvbiB0aGUNCj4gPiA+ID4gPiBzeXN0 ZW0gdGhleSBidWlsZCBpdCBvbi4gVGhhdCdzIGEgdmVyeSwgdmVyeSBiaWcgYXNzdW1wdGlvbiEN Cj4gPiA+ID4NCj4gPiA+ID4gSSdsbCBiZSB1c2luZyBkZWZpbml0aW9ucyBmcm9tIGh0dHBzOi8v bWVzb25idWlsZC5jb20vQ3Jvc3MtDQo+ID4gPiBjb21waWxhdGlvbi5odG1sLg0KPiA+ID4gPiBJ IHVuZGVyc3RhbmQgY3Jvc3MgY29tcGlsYXRpb24gdG8gYmUgYnVpbGRpbmcgZm9yIGEgZGlmZmVu dCBob3N0DQo+ID4gPiA+IG1hY2hpbmUNCj4gPiA+IHRoYW4gdGhlIGJ1aWxkIG1hY2hpbmUgKHdo aWNoIGlzIGFsaWduZWQgd2l0aCBwcmV0dHkgbXVjaCBldmVyeQ0KPiA+ID4gZGVmaW5pdGlvbiBJ IGZvdW5kKS4gSSB1bmRlcnN0YW5kIHRoaXMgdG8gYmUgdHJ1ZSBub3Qgb25seSBmb3INCj4gPiA+ IGJ1aWxkcyBiZXR3ZWVuIGFyY2hpdGVjdHVyZXMsIGJ1dCBhbHNvIHdpdGhpbiBhbiBhcmNoaXRl Y3R1cmUgKGUuZy4NCj4gPiA+IHg4Nl82NCBidWlsZCBtYWNoaW5lIGJ1aWxkaW5nIGZvciB4ODZf NjQgaG9zdCBtYWNoaW5lKS4NCj4gPiA+ID4gU28geWVzLCB3aGVuIHNvbWVvbmUgZG9lcyBhIG5h dGl2ZSBidWlsZCwgaXQgc3RhbmRzIHRvIHJlYXNvbiB0aGV5DQo+ID4gPiA+IHdhbnQgdG8NCj4g PiA+IHVzZSBpdCBvbiB0aGUgYnVpbGQgbWFjaGluZS4gSWYgdGhleSB3YW50ZWQgdG8gdXNlIGl0 IGVsc2V3aGVyZSwNCj4gPiA+IHRoZXkgd291bGQgY3Jvc3MgY29tcGlsZS4NCj4gPiA+ID4gQW5v dGhlciB0aGluZyBpcyB0aGUgY3VycmVudCBidWlsZCBwaGlsb3NvcGh5IGlzIHRvIGRldGVjdCBh cyBtdWNoDQo+ID4gPiA+IGFzDQo+ID4gPiBwb3NzaWJsZSAobm90IGhhdmluZyBzdGF0aWNhbGx5 IGRlZmluZWQgY29uZmlndXJhdGlvbiwgYXMgeW91DQo+ID4gPiBtZW50aW9uZWQgaW4gdGhlIHBh c3QpLiBEZXRlY3RpbmcgdGhlIG51bWJlciBvZiBjb3JlcyBhbmQgbnVtYSBub2Rlcw0KPiBmaXRz IHRoaXMgcGVyZmVjdGx5Lg0KPiA+ID4gPiBBbmQgeWV0IGFub3RoZXIgdGhpbmcgaXMgdGhhdCB0 aGUgYXNzdW1wdGlvbiBzZWVtcyB0byBiZSBhbHJlYWR5DQo+ID4gPiA+IHByZXNlbnQNCj4gPiA+ IGluIHRoZSBidWlsZCBzeXN0ZW0gLSBpdCBhbHJlYWR5IGRldGVjdHMgYSBsb3QgdGhpbmdzLCBz b21lIG9mIHdoaWNoDQo+ID4gPiBtYXkgbm90IGJlIHNhdGlzZmllZCBvbiBtYWNoaW5lcyBvdGhl ciB0aGFuIHRoZSBidWlsZCBtYWNoaW5lLiBJIG1heQ0KPiA+ID4gYmUgd3JvbmcgYWJvdXQgdGhp cy4NCj4gPiA+ID4NCj4gPiA+ID4gPiBJJ20gb2sgd2l0aCBoYXZpbmcgemVybyBhcyBhICJkZXRl Y3QiIG9wdGlvbiwgYW5kIGhhdmluZyB0aGUNCj4gPiA+ID4gPiB2YWx1ZXMgb3ZlcnJpZGRlbiBm cm9tIGNyb3NzLWZpbGVzLCBidXQgbm90IHdpdGggZGV0ZWN0aW9uIGFzDQo+ID4gPiA+ID4gdGhl IGRlZmF1bHQNCj4gPiA+ID4gPiBvdXQtIG9mLXRoZS1ib3ggb3B0aW9uISBMb3RzIG9mIHVzZXJz IG1heSBwdWxsIGJ1aWxkcyBmcm9tIGEgQ0kNCj4gPiA+ID4gPiBiYXNlZCBvbiBWTXMgd2l0aCBq dXN0IGEgZmV3IGNvcmVzLCBmb3IgaW5zdGFuY2UuDQo+ID4gPiA+DQo+ID4gPiA+IElmIG5vdCBo YXZpbmcgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24gaXMgYSBjb25jZXJuIGJlY2F1c2Ugb2YNCj4g PiA+ID4gdXNlcnMgdXNpbmcgQ0kNCj4gPiA+IGJ1aWxkcywgdGhlbiB3ZSAoaWYgaXQncyBmcm9t IG91ciBDSSkgY2FuIGNoYW5nZSB3aGF0IHdlJ3JlIGJ1aWxkaW5nDQo+ID4gPiBpbiBDSSAtIHRo ZSBkZWZhdWx0L2dlbmVyaWMgYnVpbGQgc2VlbXMgbGlrZSBhIGdvb2QgZml0IGJlY2F1c2UgaXQn cw0KPiA+ID4gc3VwcG9zZWQgdG8gd29yayBvbiBhIHZhcmlldHkgb2Ygc3lzdGVtcy4gRXhwZWN0 aW5nIHRoYXQgbmF0aXZlDQo+ID4gPiBidWlsZCBmcm9tIHJhbmRvbSBWTXMgd291bGQgd29yayBh bnl3aGVyZSBkb2Vzbid0IHNlZW4gdmVyeQ0KPiA+ID4gcmVhbGlzdGljIC0gaXQncyBiZWVuIGJ1 aWxkIGZvciB0aGF0IFZNIGVudmlyb25tZW50IChiZWNhdXNlIGl0J3MgYSBuYXRpdmUNCj4gYnVp bGQpLg0KPiA+ID4gPg0KPiA+ID4gPiBIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvbiB3aGljaCB0 aGUgY3VycmVudCB2ZXJzaW9uIGlzIGJhc2VkOg0KPiA+ID4gPiAxLiBTaW5jZSB3ZSB3YW50IHRv IGdldCBhd2F5IGZyb20gaGF2aW5nIHN0YXRpY2FsbHkgZGVmaW5lZA0KPiA+ID4gPiBjb25maWd1 cmF0aW9uLA0KPiA+ID4gbnVtYSBhbmQgY29yZSBjb3VudCBkaXNjb3ZlcnkgaXMgZXhhY3RseSB3 aGF0IHdlIHNob3VsZCBoYXZlIGluIHRoZQ0KPiA+ID4gYnVpbGQgc3lzdGVtLiBTaW5jZSBkaXNj b3JlcnkgaXMgY3VycmVudGx5IHRoZSBkZWZhdWx0IGZvcg0KPiA+ID4gbGliL2RyaXZlcnMsIGl0 IHN0YW5kcyB0byByZWFzb24gaXQgc2hvdWxkIGJlIGRlZmF1bHQgZm9yIGV2ZXJ5dGhpbmcgZWxz ZSwgaWYNCj4gcG9zc2libGUuDQo+ID4gPiA+IDIuIE5hdGl2ZSBidWlsZCBzaG91bGQgcHJvZHVj ZSBiaW5hcmllcyBtYXRjaGluZyB0aGUgYnVpbGQgbWFjaGluZQ0KPiA+ID4gPiBhcyB3ZWxsDQo+ ID4gPiBhcyBwb3NzaWJsZS4NCj4gPiA+ID4gMy4gRGVmYXVsdC9nZW5lcmljIGJ1aWxkIHNob3Vs ZCBwcm9kdWNlIGJpbmFyaWVzIGV4ZWN1dGFibGUgb24gYQ0KPiA+ID4gPiByYW5nZSBvZg0KPiA+ ID4gc3lzdGVtcyAoaWRlYWxseSBhbGwgc3lzdGVtcyBvZiBhIGdpdmVuIGFyY2hpdGVjdHVyZSku DQo+ID4gPiA+IDQuIE90aGVyIGJ1aWxkcywgdGhhdCBpcyBub24tbmF0aXZlIGJ1aWxkcywgYXJl IGNyb3NzLWNvbXBpbGF0aW9uLA0KPiA+ID4gPiBzaW5jZSB3ZSdyZQ0KPiA+ID4gYnVpbGRpbmcg Zm9yIGhvc3QgbWFjaGluZSBvdGhlciB0aGF0IHRoZSBidWlsZCBtYWNoaW5lLg0KPiA+ID4gPg0K PiA+ID4gPiBXaGF0IEkgaGF2ZW4ndCB0YWtlbiBpbnRvIGFjY291bnQgaXMgdXNlcnMgdXNpbmcg Q0kgYnVpbGRzLiBUaGF0DQo+ID4gPiA+IGNvdWxkIGJlDQo+ID4gPiByZW1lZGllZCBieSBtb2Rp ZnlpbmcgdGhlIENJIGEgYml0IHdoaWxlIGJlaW5nIGNvbnNpc3RlbnQgd2l0aCB3aGF0DQo+ID4g PiBuYXRpdmUvZGVmYXVsdC9nZW5lcmljL2Nyb3NzIGJ1aWxkcyBhcmUgKG9yIHNob3VsZCBiZSku IEFuZCBpbiBhbnkNCj4gPiA+IGNhc2UsIGlmIHdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluIHRlc3Rp bmcgdGhlIGV4YWN0IENJIGVudmlyb25tZW50DQo+ID4gPiAod2hpY2ggd2UgYXJlbid0LCBzaW5j ZSB3ZSBkb24ndCB3YW50IHRvIHVzZSAyIGNvcmVzIHdpdGggMSBudW1hKSwNCj4gPiA+IHdlIHJl YWxseSBzaG91bGRuJ3QgYmUgZG9pbmcgbmF0aXZlIGJ1aWxkcyB0aGVyZS4NCj4gPiA+ID4NCj4g PiA+ID4gSSdtIGludGVyZXN0ZWQgaW4gaGVhcmluZyB3aGVyZSBteSB0aGlua2luZyBkZXZpYXRl cyBmcm9tIHlvdXJzLg0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IFRoZXJlIGFyZSBhIG51bWJlciBv ZiBwb2ludHMgaW4gd2hpY2ggd2UgZGlmZmVyLCBJIHRoaW5rLg0KPiA+ID4NCj4gPiA+IEZpcnN0 bHksIHRoZSB1c2Ugb2YgIm5hdGl2ZSIgYW5kICJkZWZhdWx0L2dlbmVyaWMiIGZvciB0aGUgIm1h Y2hpbmUiDQo+ID4gPiBwYXJhbWV0ZXIgcmVmZXJzIG9ubHkgdG8gdGhlIGluc3RydWN0aW9uLXNl dCBsZXZlbCBmcm9tIHRoZQ0KPiA+ID4gY29tcGlsZXIsIGFuZCBzaG91bGQgbm90IGFmZmVjdCBh bnkgb3RoZXIgc2V0dGluZ3MsIHNpbmNlIGFsbCBzZXR0aW5ncyBhcmUNCj4gaW5kZXBlbmRlbnQu DQo+ID4gPiBUaGVyZWZvcmUsIHNldHRpbmcgIm1hY2hpbmUiIHRvICJuYXRpdmUiIGRvZXMgbm90 IG1lYW4gdGhhdCB3ZQ0KPiA+ID4gc2hvdWxkIGRldGVjdCBjb3JlcyBhbmQgbnVtYSBub2Rlcywg YW5kIHNpbWlsYXJseSBzZXR0aW5nIGl0IHRvDQo+ID4gPiAiZGVmYXVsdCIgZG9lcyBub3QgbWVh biB0aGF0IHdlIHNob3VsZCBpZ25vcmUgdGhlIHNldHRpbmdzIGZvciB0aGVzZQ0KPiA+ID4gdmFs dWVzIGFuZCBwaWNrIG91ciBvd24gY2hvc2VuIGRlZmF1bHQgdmFsdWVzLg0KPiA+IEFwb2xvZ2ll cyB0byBnbyB0byBhbiBvbGRlciBkaXNjdXNzaW9uLg0KPiA+IEkgYW0gdHJ5aW5nIHRvIHVuZGVy c3RhbmQgdGhlIGRlZmluaXRpb25zL2V4cGVjdGF0aW9ucyBmb3IgJ25hdGl2ZScgYW5kDQo+ICdn ZW5lcmljJyBidWlsZHMuDQo+ID4gQXMgeW91IHNheSwgaW5zdHJ1Y3Rpb24tc2V0IGxldmVsIGlz IGRlZmluaXRlbHkgb25lIHBhcmFtZXRlci4NCj4gDQo+IFBhcnQgb2YgdGhlIGNvbmZ1c2lvbiBh cmlzZXMgZnJvbSB0aGUgZmFjdCB0aGF0IG9yaWdpbmFsbHkgdGhhdCB3YXMgdGhlIG9ubHkNCj4g cGFyYW1ldGVyIHNldCBieSB0aGlzIC0gYW5kIG9uIHg4NiBpdCBzdGlsbCBpcy4gUGVyaGFwcyB0 aGlzIHBhcmFtZXRlciBuZWVkcyB0bw0KSnVzdCB3b25kZXJpbmcsIGZvciB4ODYsIHdoYXQgZG9l cyBpdCBtZWFuIGlmIHdlIHNldCB0aGUgbWF4X251bV9jb3JlcyBhbmQgbWF4X251bWFfbm9kZXMg YmFzZWQgb24gZHluYW1pYyBkZXRlY3Rpb24gZm9yICduYXRpdmUnIGJ1aWxkPw0KSVNBIHN0aWxs IHJlbWFpbnMgdGhlIHNhbWUgYXMgYmVmb3JlLiBCdXQsIHRoZSBidWlsZCBtaWdodCBub3Qgd29y ayBvbiBtYWNoaW5lcyB3aXRoIGhpZ2hlciBudW1iZXIgb2YgY29yZXMgYW5kIG51bWEgbm9kZXMu DQpBdCB0aGUgc2FtZSB0aW1lLCB0aGUgYnVpbGQgYWxzbyBtaWdodCBub3Qgd29yayBvbiBhIG1h Y2hpbmUgd2l0aCBhIGRpZmZlcmVudCBJU0EuIFRoZSB1c2VycyBuZWVkIHRvIGJlIGF3YXJlIHRo YXQgdGhlIHRhcmdldCBtYWNoaW5lIGhhcyB0aGUgc2FtZSBJU0EgYW5kIHNhbWUgbnVtYmVyIG9m IGNvcmVzL251bWEgbm9kZXMgYXMgdGhlIHRhcmdldCBtYWNoaW5lLg0KDQo+IGJlIHJlbmFtZWQg dG8gImlzYS1sZXZlbCIgb3IgImFyY2hpdGVjdHVyZS1mbGFnIiBvciBzaW1pbGFyIHRvIHJlZmxl Y3QgaXRzDQo+IG1lYW5pbmcuIFRoaXMgd291bGQgdGhlbiBhbGxvdyBhIG5ldyAibWFjaGluZSIg c2V0dGluZywgd2hpY2ggY2FuIGJlDQo+IGNvbnNpZGVyZWQgc2VwYXJhdGVseS4gVGhlIHF1ZXN0 aW9uIHRoZW4gaXMgaG93IG11Y2ggdGhhdCBoZWxwcyB3aXRoIHRoZQ0KPiBtYWluIGlzc3VlIHVu ZGVyIGRpc2N1c3Npb24sIHRoYXQgb2YgY29yZXMgYW5kIG51bWEgbm9kZSB2YWx1ZXMuDQpJZiB3 ZSByZW5hbWUgaXQsIHdlIHdpbGwgaGF2ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIChp LmUuICduYXRpdmUnIGJ1aWxkIG9uIHg4NiB3aWxsIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYW5k IHdob2V2ZXIgd2FudHMgdGhlIG9yaWdpbmFsIG1lYW5pbmcsIGhhdmUgdG8gY2hhbmdlIHRvIHVz aW5nIHRoaXMgbmV3IG5hbWUpLiBOb3Qgc3VyZSBhYm91dCB0aGUgY29tcGxleGl0eSBpbiBtZXNv biBzY3JpcHRzLg0KDQoNCj4gDQo+ID4gQnV0LCBJIHRoaW5rIG90aGVyIERQREsgc3BlY2lmaWMg cGFyYW1ldGVycyBzaG91bGQgYWxzbyBiZSBjb25zaWRlcmVkLg0KPiA+IEZvciBleDogUlRFX01B WF9MQ09SRSBzaG91bGQgaGF2ZSBhIHBhcnRpY3VsYXIgdmFsdWUgZm9yICdnZW5lcmljJyBidWls ZCBpbg0KPiBhbGwgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLiBUaGUgdmFsdWUgY291bGQg YmUgZGlmZmVyZW50IGZvciBlYWNoDQo+IGFyY2hpdGVjdHVyZSwgYnV0IGl0IGlzIGZpeGVkIGZv ciB0aGUgJ2dlbmVyaWMnIGJ1aWxkIGZvciBhIGdpdmVuIGFyY2hpdGVjdHVyZS4NCj4gT3RoZXJ3 aXNlLCB0aGUgJ2dlbmVyaWMnIGJ1aWxkIG1pZ2h0IG5vdCBydW4gb24gYWxsIHRoZSBtYWNoaW5l cyBvZiB0aGF0DQo+IGFyY2hpdGVjdHVyZS4NCj4gPg0KPiA+IFNpbWlsYXJseSwgZm9yICduYXRp dmUnIGJ1aWxkLCBpcyB0aGVyZSBhbnkgcmVhc29uIG5vdCB0byBpbmNsdWRlIG90aGVyIERQREsN Cj4gcGFyYW1ldGVycyBhcyBwYXJ0IG9mIHRoZSBkZWZpbml0aW9uPyBJTU8sICduYXRpdmUnIHNo b3VsZCByZWZlciB0byB0aGUgZW50aXJlDQo+IGJ1aWxkIG1hY2hpbmUsIG5vdCBqdXN0IHRoZSBJ U0EuIGkuZS4gYnVpbGQgb24gdGhlIHRhcmdldCBtYWNoaW5lLg0KPiA+DQo+IA0KPiBXaGlsZSBJ IHVuZGVyc3RhbmQgdGhlIGlkZWEgaGVyZSwgaXQgaXMgc29tZXdoYXQgY29tcGxpY2F0ZWQgYnkg dGhlIGZhY3QgdGhhdA0KPiB0aGUgbWVzb24gb3B0aW9ucyBnaXZlbiBpbiAibWVzb25fb3B0aW9u cy50eHQiIGNhbm5vdCBiZSBzZXQgYnkgbWVzb24NCj4gY29kZSwgd2hpY2ggbWVhbnMgdGhhdCB3 aGVuIHdlIGNoYW5nZSB0aGUgbWFjaGluZSBmbGFnIHRvICJuYXRpdmUiIHdlDQo+IGNhbiBvbmx5 IHVzZSBvciBpZ25vcmUgdGhlIHVzZXItcHJvdmlkZWQgbGNvcmVzIGFuZCBudW1hIG5vZGVzIHNl dHRpbmcgLSB3ZQ0KPiBoYXZlIG5vIHdheSB0byBjaGFuZ2UgdGhlbSBhbmQgcmVmbGVjdCB0aG9z ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIHVzZXIuIDotKA0KPiBUaGlzIGxlYWRzIHRvIHRoZSBzaXR1 YXRpb24gaW4gdGhlIGRpc2N1c3Npb24gaW4gdGhpcyB0aHJlYWQsIHdoZXJlIHdlIHN0YXJ0DQo+ IG5lZWRpbmcgYWxsIHNvcnRzIG9mIG1hZ2ljIHZhbHVlcyB0byBpbmRpY2F0ZSB1c2Ugb2YgbWFj aGluZS10eXBlIGRlZmF1bHRzIG9yDQo+IGRldGVjdGVkIGRlZmF1bHRzLg0KSSBhbSB3b25kZXJp bmcgd2h5IHdlIG5lZWQgdG8gdGFrZSB0aGUgbWF4X251bV9jb3JlcyBhbmQgbWF4X251bWFfbm9k ZXMgZnJvbSB0aGUgdXNlcj8gVGhpcyBvcHRpb24gd2FzIG5vdCBwcm92aWRlZCBpbiB0aGUgbWFr ZSBidWlsZCBzeXN0ZW0uIEkgYXNrIHRoaXMgcXVlc3Rpb24gYmVjYXVzZSBmb3IgJ2dlbmVyaWMn IHRoaXMgaGFzIHRvIGJlIGEgc3RhdGljL2tub3duIGNvbmZpZ3VyYXRpb24uIEZvciBjcm9zcyBi dWlsZHMsIHRoaXMgaW5mbyBjYW4gY29tZSAob3IgZGVyaXZlZCkgZnJvbSB0aGUgY3Jvc3MgYnVp bGQgZmlsZS4NCldhcyBpdCBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgg J25hdGl2ZScgYnVpbGQ/DQoNCj4gDQo+IFJlZ2FyZHMsDQo+IC9CcnVjZQ0K