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 C9BD3A04B5; Thu, 29 Oct 2020 05:31:56 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1F70D6889; Thu, 29 Oct 2020 05:31:54 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2069.outbound.protection.outlook.com [40.107.22.69]) by dpdk.org (Postfix) with ESMTP id 857385B30 for ; Thu, 29 Oct 2020 05:31:51 +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=gNsv2cgxFzP0go9jaALfQeMJSVNZ0A01E11Co1Pcj+Y=; b=S+Y/aeIINHm2e+BzSO5kp8TWOjUrEbr+74RJznWbIbGq7sMf0WpFIrf39X3gxGe+RA3xmOAafLYVJ4h7h+iaNx/UkPqmQ2sBey81fCcGNsrq48Rod84aRiZKRoTOgzT+oCp3cjf0ewdoS1pIJoEeTBvfe5yYMQH5XSX29dGhBRA= Received: from AM5PR0202CA0016.eurprd02.prod.outlook.com (2603:10a6:203:69::26) by VE1PR08MB4864.eurprd08.prod.outlook.com (2603:10a6:802:aa::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21; Thu, 29 Oct 2020 04:31:48 +0000 Received: from VE1EUR03FT014.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:69:cafe::f) by AM5PR0202CA0016.outlook.office365.com (2603:10a6:203:69::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18 via Frontend Transport; Thu, 29 Oct 2020 04:31:48 +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 VE1EUR03FT014.mail.protection.outlook.com (10.152.19.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3520.15 via Frontend Transport; Thu, 29 Oct 2020 04:31:47 +0000 Received: ("Tessian outbound a64c3afb6fc9:v64"); Thu, 29 Oct 2020 04:31:47 +0000 X-CR-MTA-TID: 64aa7808 Received: from c6e82d5e4732.4 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 3B3970E2-A982-473B-89B5-9B3032C56C6D.1; Thu, 29 Oct 2020 04:31:42 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c6e82d5e4732.4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 29 Oct 2020 04:31:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fhKaRO1KEhvLxH/TT2pntPBvRMS3bE9j+wfvm4CoN7T54CVkPosLUxCjNpdQb+dzhdwxRj5oFHCLEAxtQJWY6ojelqTBhENOhMn+7wHfmgmQKlRffU2pBSFkEPOYs3RnQq4762tSjJAlwrQHSrr2eJsPs88lBnTS/5azZ2T1BtZgKFCHCWZA0ap1GpLiF+Ed/M+S0Evx1AVVJyX5+25L5maYiQV3XH+Ljl1m+yLsO7sRFVfnsdt35AhCRWe2kxfOJNYOwTWsaSUszbRh/wG2wDGq180Nl3VWf1YdX+mWYIfnNrMZF6cxIAUh3qsUZvh/SFw9Id8cyt4Xt5sw90aTVA== 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=gNsv2cgxFzP0go9jaALfQeMJSVNZ0A01E11Co1Pcj+Y=; b=AFHOnO6JZ74poa715drnMIzxKC7vsCnOzVWeRQ1Aq1pkalDqmoxl3BaJdDME7TGIsiBMJ/K2U/MfhG0VkrzkqijefHIVHbWScBqar+dNQOkq/HVDd/QN0TBvGm2FEXZ02SpHeL9HiuCs4fEKaHkMp/nQlIHmSvLG2/YbdVerYS6CJpTxydrsqoFBLBEDfXrfocoYm1VYz3HTMFe1tt0J3r37GTq2NTFeK+HwnyZCn7GHR1hhtw0f0yNzJ7Fqlo1QQXWPfylHpvBpjWSwpewgtkCQZVZ6++UnPkTz4B3nhtJoKMOCLWOynMFYaAGjvhEBsHC6TL3oIhf/Y+gq4NhM7g== 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=gNsv2cgxFzP0go9jaALfQeMJSVNZ0A01E11Co1Pcj+Y=; b=S+Y/aeIINHm2e+BzSO5kp8TWOjUrEbr+74RJznWbIbGq7sMf0WpFIrf39X3gxGe+RA3xmOAafLYVJ4h7h+iaNx/UkPqmQ2sBey81fCcGNsrq48Rod84aRiZKRoTOgzT+oCp3cjf0ewdoS1pIJoEeTBvfe5yYMQH5XSX29dGhBRA= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB7PR08MB4220.eurprd08.prod.outlook.com (2603:10a6:10:7f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.27; Thu, 29 Oct 2020 04:31:33 +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.027; Thu, 29 Oct 2020 04:31:33 +0000 From: Honnappa Nagarahalli To: Bruce Richardson , =?utf-8?B?SnVyYWogTGlua2XFoQ==?= CC: 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+ae4A== Date: Thu, 29 Oct 2020 04:31:33 +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> In-Reply-To: <20201021141319.GD592@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: 7BA4FE0FBFB49D449E5737E30BBA22B1.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: [217.140.110.7] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 61ceda08-433b-4c22-4d2d-08d87bc38c7f x-ms-traffictypediagnostic: DB7PR08MB4220:|VE1PR08MB4864: 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: FSPa6OisjU5d8E65EUW8+Igz2gQrHyjx2Isa2rw7XsIQBcXK0aMzI1hfDUIwKKuvyNjtUxoFXBPcldXLkYrG/ImBxxU3rcj7cGVErLcTmUWZ+oNOgqYZrPyS+36sdAF3K05cRye70xEgfRf/n2e79mzLMmeTnhXq3jey5EzIE3+zWchfSJXAmHMEcbR7BU8fRsqtsoDA0RFM2vi/Ifr5zpfhtUq96Fk9iMeNgehg41GSt6fXs9QagC4DK8ooUFFIZk6Ru+uvKPWvdPdsLLYfvCULrcWmLXGjrdhSlAFeQHyOoMvlr8agTdmIbvV7gwcn87i/35imwDQoJOHCbden68bToFz1SrkvbezS+hD+TSNTiaD/2bRbXkRSx6G19PLIhkxvBE1PDN1UIZ2k5ci6fQ== 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)(39850400004)(376002)(366004)(136003)(396003)(966005)(478600001)(8676002)(8936002)(2906002)(4326008)(9686003)(76116006)(33656002)(52536014)(86362001)(66556008)(66476007)(71200400001)(66946007)(64756008)(66446008)(7696005)(26005)(6506007)(186003)(30864003)(316002)(55016002)(83380400001)(54906003)(110136005)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: Tnl48plBSXWvG4ZQ7bWtJrnD60hmIOqHKibgVJzr3SVabEC1Is7jrdth+Py401r+/ke7X7CXm0iETxdcvsny2Bn5cKIHi3CGfEE4eKPuMdFlBKCfgIAmyQwn6MmZRWfQYsul7FsfdRMzLxJXSw3aEj25peaEL30POkNp/ElZkFGUwYCBwiRwt+las/Hg00O8GP6iDQ+AvJ+rEEQOgwcVg5dKU2XxHvejqb39ldP2mR91gHcse3vyZjrmCP10Fi5ygNcL9S6tHkjV6x2dW25aMlWR/OCr7Uc2llznCY70+Dy5M7YxA+LmS6x9ob4Q0l3bwbWd77uCtuy6w99uYbdSsFYE+Fcx+dvVgG7+oWm7xsbMftTv52rUmlpE0JSlax+MH2XBzbb1AO+TO8/e2BXIYtubIvgai1Ij+zy8aMokY8MUsPMNCYck4h/udC1+2xRyH+7IyqNk9NGRjoE5lcDDitgPNNqXtP5n7Yq3y5XI4KhkJtCZ0QxlHm4tUd1Gr3qMb3OUwtFAI306KgDr+72LnkG+d5Z26TZsjrKcCRuyLC5m1dagpFPBDiOkxDkXa609TAcBwBLj29khx/nkiwPvjIIb7kARqk2gsEzzx/zpTF3TowvvxIZDhzCOWdd6rxxjK+3Qj1DKL8LO/gaM98a6ug== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB4220 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: VE1EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f7513cb0-468b-4f6a-aa09-08d87bc383e7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cFJYBzk2n0J9pG3tP/Y+Mp7KU0+uAoLWVz8avTxgx7R8CtpbwTjZg+L401fksF8DItI+eH1NrG9wK0+loZECbKumZLSYXdc7DozYRDRzkl3S0QwHZ0QeQHxH0BXQDgVAJ07RXjEMRDcb2/9R1Hrf00dur/1p3/tWmoHb6E1+R2BqBcSsHE/EQhgc9UK+TZao61rIeJmcLG0uPJL8pqJTLSaklqne9PAXh81doJgHhImmMOnNnGPYyaOhLyl/B6hXdATKcu9cPeEBQC50sncvnDGm0kC+Oy6Wy8lnVumXydBmEUkzmN0KEQcYMtsQEKv9LMJyf29v2TASjI2m87JDDaoGOVq4waYWUUpxYk7rcROQcWrrxabGPm3lX4vI98FrydcUQ0+WKbanhmNVrzOAiqlLJvkPUUN2gQpGM9iTP2kjmlnTuVp9EqSPWrGOp1rC5bHnXv4S7bNuBD8XytJkrllRDe54/wXVlAh6dfAMYFw= 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)(39850400004)(346002)(396003)(46966005)(82740400003)(55016002)(8676002)(36906005)(86362001)(83380400001)(8936002)(47076004)(966005)(54906003)(5660300002)(81166007)(356005)(478600001)(336012)(7696005)(33656002)(316002)(4326008)(9686003)(2906002)(70586007)(30864003)(6506007)(110136005)(82310400003)(186003)(52536014)(26005)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2020 04:31:47.7538 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61ceda08-433b-4c22-4d2d-08d87bc38c7f 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: VE1EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4864 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+DQoNCj4gPiA+DQo+ID4gPiBPbiBXZWQsIE9jdCAyMSwgMjAyMCBhdCAwMTozNzozOFBN ICswMjAwLCBKdXJhaiBMaW5rZcWhIHdyb3RlOg0KPiA+ID4gPiBUaGUgYnVpbGQgbWFjaGluZSdz IG51bWJlciBvZiBjcHVzIGFuZCBudW1hIG5vZGVzIHZhcnksIHJlc3VsdGluZw0KPiA+ID4gPiBp biBtaXNtYXRjaGVkIGNvdW50cyBvZiBSVEVfTUFYX0xDT1JFIGFuZA0KPiBSVEVfTUFYX05VTUFf Tk9ERVMgZm9yDQo+ID4gPiBtYW55DQo+ID4gPiA+IGJ1aWxkcy4gQXV0b21hdGljYWxseSBkaXNj b3ZlciB0aGUgaG9zdCdzIG51bWEgYW5kIGNwdSBjb3VudHMgdG8NCj4gPiA+ID4gcmVtb3ZlIHRo aXMgbWlzbWF0Y2ggZm9yIG5hdGl2ZSBidWlsZHMuIFVzZSBjdXJyZW50IGRlZmF1bHRzIGZvciBk ZWZhdWx0DQo+IGJ1aWxkcy4NCj4gPiA+ID4gRm9yY2UgdGhlIHVzZXJzIHRvIHNwZWNpZnkgdGhl IGNvdW50cyBmb3IgY3Jvc3MgYnVpbGQgaW4gY3Jvc3MNCj4gPiA+ID4gZmlsZXMgb3Igb24gdGhl IGNvbW1hbmQgbGluZS4NCj4gPiA+ID4gR2l2ZSB1c2VycyB0aGUgb3B0aW9uIHRvIG92ZXJyaWRl IHRoZSBkaXNjb3Zlcnkgb3IgdmFsdWVzIGZyb20NCj4gPiA+ID4gY3Jvc3MgZmlsZXMgYnkgc3Bl Y2lmeWluZyB0aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aA0KPiA+ID4gPiAtRG1heF9sY29y ZXMgYW5kIC1EbWF4X251bWFfbm9kZXMuDQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IEp1cmFqIExpbmtlxaEgPGp1cmFqLmxpbmtlc0BwYW50aGVvbi50ZWNoPg0KPiA+ID4gPiAtLS0N Cj4gPiA+ID4gIGJ1aWxkdG9vbHMvZ2V0X2NwdV9jb3VudC5weSAgfCAgNyArKysrKysNCj4gPiA+ ID4gYnVpbGR0b29scy9nZXRfbnVtYV9jb3VudC5weSB8IDIyICsrKysrKysrKysrKysrKysrKysN Cj4gPiA+ID4gIGJ1aWxkdG9vbHMvbWVzb24uYnVpbGQgICAgICAgfCAgMiArKw0KPiA+ID4gPiAg Y29uZmlnL21lc29uLmJ1aWxkICAgICAgICAgICB8IDQyDQo+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLQ0KPiA+ID4gPiAgbWVzb25fb3B0aW9ucy50eHQgICAgICAgICAgICB8 ICA4ICsrKy0tLS0NCj4gPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlDQo+ID4gPiA+IDEwMDY0NCBidWlsZHRvb2xzL2dl dF9jcHVfY291bnQucHkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBidWlsZHRvb2xzL2dl dF9udW1hX2NvdW50LnB5DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9idWlsZHRvb2xz L2dldF9jcHVfY291bnQucHkNCj4gPiA+ID4gYi9idWlsZHRvb2xzL2dldF9jcHVfY291bnQucHkg bmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiA+ID4gMDAwMDAwMDAwLi4zODZmODVmOGIN Cj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9idWlsZHRvb2xzL2dldF9jcHVf Y291bnQucHkNCj4gPiA+ID4gQEAgLTAsMCArMSw3IEBADQo+ID4gPiA+ICsjIS91c3IvYmluL3B5 dGhvbjMNCj4gPiA+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAj IENvcHlyaWdodCAoYykgMjAyMA0KPiA+ID4gPiArUEFOVEhFT04udGVjaCBzLnIuby4NCj4gPiA+ ID4gKw0KPiA+ID4gPiAraW1wb3J0IG9zDQo+ID4gPiA+ICsNCj4gPiA+ID4gK3ByaW50KG9zLmNw dV9jb3VudCgpKQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvYnVpbGR0b29scy9nZXRfbnVtYV9jb3Vu dC5weQ0KPiA+ID4gPiBiL2J1aWxkdG9vbHMvZ2V0X251bWFfY291bnQucHkgbmV3IGZpbGUgbW9k ZSAxMDA2NDQgaW5kZXgNCj4gPiA+ID4gMDAwMDAwMDAwLi5mMGM0OTk3M2ENCj4gPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9idWlsZHRvb2xzL2dldF9udW1hX2NvdW50LnB5DQo+ ID4gPiA+IEBAIC0wLDAgKzEsMjIgQEANCj4gPiA+ID4gKyMhL3Vzci9iaW4vcHl0aG9uMw0KPiA+ ID4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0 IChjKSAyMDIwDQo+ID4gPiA+ICtQQU5USEVPTi50ZWNoIHMuci5vLg0KPiA+ID4gPiArDQo+ID4g PiA+ICtpbXBvcnQgY3R5cGVzDQo+ID4gPiA+ICtpbXBvcnQgZ2xvYg0KPiA+ID4gPiAraW1wb3J0 IG9zDQo+ID4gPiA+ICtpbXBvcnQgc3VicHJvY2Vzcw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiBv cy5uYW1lID09ICdwb3NpeCc6DQo+ID4gPiA+ICsgICAgaWYgb3MucGF0aC5pc2RpcignL3N5cy9k ZXZpY2VzL3N5c3RlbS9ub2RlJyk6DQo+ID4gPiA+ICsgICAgICAgIHByaW50KGxlbihnbG9iLmds b2IoJy9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlKicpKSkNCj4gPiA+ID4gKyAgICBlbHNl Og0KPiA+ID4gPiArICAgICAgICBwcmludChzdWJwcm9jZXNzLnJ1bihbJ3N5c2N0bCcsICd2bS5u ZG9tYWlucyddLA0KPiA+ID4gPiArY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkuc3Rkb3V0KQ0KPiA+ID4g PiArDQo+ID4gPiA+ICtlbGlmIG9zLm5hbWUgPT0gJ250JzoNCj4gPiA+ID4gKyAgICBsaWJrZXJu ZWwzMiA9IGN0eXBlcy53aW5kbGwua2VybmVsMzINCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGNv dW50ID0gY3R5cGVzLmNfdWxvbmcoKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgbGlia2VybmVs MzIuR2V0TnVtYUhpZ2hlc3ROb2RlTnVtYmVyKGN0eXBlcy5wb2ludGVyKGNvdW50KSkNCj4gPiA+ ID4gKyAgICBwcmludChjb3VudC52YWx1ZSArIDEpDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9idWls ZHRvb2xzL21lc29uLmJ1aWxkIGIvYnVpbGR0b29scy9tZXNvbi5idWlsZCBpbmRleA0KPiA+ID4g PiAwNDgwOGRhYmMuLjkyNWU3MzNiMSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvYnVpbGR0b29scy9t ZXNvbi5idWlsZA0KPiA+ID4gPiArKysgYi9idWlsZHRvb2xzL21lc29uLmJ1aWxkDQo+ID4gPiA+ IEBAIC0xNywzICsxNyw1IEBAIGVsc2UNCj4gPiA+ID4gIGVuZGlmDQo+ID4gPiA+ICBtYXBfdG9f d2luX2NtZCA9IHB5MyArIGZpbGVzKCdtYXBfdG9fd2luLnB5JykgIHNwaGlueF93cmFwcGVyID0N Cj4gPiA+ID4gcHkzICsNCj4gPiA+ID4gZmlsZXMoJ2NhbGwtc3BoaW54LWJ1aWxkLnB5JykNCj4g PiA+ID4gK2dldF9jcHVfY291bnRfY21kID0gcHkzICsgZmlsZXMoJ2dldF9jcHVfY291bnQucHkn KQ0KPiA+ID4gPiArZ2V0X251bWFfY291bnRfY21kID0gcHkzICsgZmlsZXMoJ2dldF9udW1hX2Nv dW50LnB5JykNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2NvbmZpZy9tZXNvbi5idWlsZCBiL2NvbmZp Zy9tZXNvbi5idWlsZCBpbmRleA0KPiA+ID4gPiBhNTdjOGFlOWUuLmM0NDc3Zjk3NyAxMDA2NDQN Cj4gPiA+ID4gLS0tIGEvY29uZmlnL21lc29uLmJ1aWxkDQo+ID4gPiA+ICsrKyBiL2NvbmZpZy9t ZXNvbi5idWlsZA0KPiA+ID4gPiBAQCAtNzQsNyArNzQsMTEgQEAgZW5kaWYNCj4gPiA+ID4gICMg c3RpbGwgYmVpbmcgYWJsZSB0byBzdXBwb3J0IHRoZSBDUFUgZmVhdHVyZXMgcmVxdWlyZWQgZm9y IERQREsuDQo+ID4gPiA+ICAjIFRoaXMgY2FuIGJlIGJ1bXBlZCB1cCBieSB0aGUgRFBESyBwcm9q ZWN0LCBidXQgaXQgY2FuIG5ldmVyIGJlDQo+ID4gPiA+IGFuICMgaW52YXJpYW50IGxpa2UgJ25h dGl2ZScNCj4gPiA+ID4gK21heF9sY29yZXMgPSBnZXRfb3B0aW9uKCdtYXhfbGNvcmVzJykgbWF4 X251bWFfbm9kZXMgPQ0KPiA+ID4gPiArZ2V0X29wdGlvbignbWF4X251bWFfbm9kZXMnKQ0KPiA+ ID4gPiAgaWYgbWFjaGluZSA9PSAnZGVmYXVsdCcNCj4gPiA+ID4gKwltYXhfbnVtYV9ub2RlcyA9 IDQNCj4gPiA+ID4gKwltYXhfbGNvcmVzID0gMTI4DQo+ID4gPg0KPiA+ID4gVGhpcyBkb2Vzbid0 IHNlZW0gcmlnaHQsIHNpbmNlIHlvdSBhcmUgb3ZlcnJpZGluZyB0aGUgdXNlci1zcGVjaWZpZWQN Cj4gPiA+IHZhbHVlcyB3aXRoIGhhcmQtY29kZWQgb25lcy4NCj4gPiA+DQo+ID4NCj4gPiBJIHVu ZGVyc3RhbmQgd2UncmUgdXNpbmcgdGhlIGRlZmF1bHQgYnVpbGQvZ2VuZXJpYyB0byBidWlsZCBw b3J0YWxiZSBkcGRrDQo+IGRpc3RybyBwYWNrYWdlcywgbWVhbmluZyB0aGUgc2V0dGluZ3MgZm9y IHRob3NlIHBhY2thZ2VzIHNob3VsZCBhbHdheXMgYmUNCj4gdGhlIHNhbWUsIG5vPyBJZiBub3Qs IHdoYXQgc2hvdWxkIHRoZSBkZWZhdWx0L2dlbmVyaWMgYnVpbGQgYmU/IEFuZCB3aGVuDQo+IHdv dWxkIHNvbWVvbmUgZG8gYSBkZWZhdWx0L2dlbmVyaWMgYnVpbGQgd2l0aCB0aGVpciB2YWx1ZXM/ IEl0IHdvdWxkbid0IGJlIGENCj4gZGVmYXVsdC9nZW5lcmljIGFueW1vcmUsIHJpZ2h0Pw0KPiA+ DQo+ID4gPiA+ICAJaWYgaG9zdF9tYWNoaW5lLmNwdV9mYW1pbHkoKS5zdGFydHN3aXRoKCd4ODYn KQ0KPiA+ID4gPiAgCQkjIG1hdGNoZXMgdGhlIG9sZCBwcmUtbWVzb24gYnVpbGQgc3lzdGVtcyBk ZWZhdWx0DQo+ID4gPiA+ICAJCW1hY2hpbmUgPSAnY29yZWk3Jw0KPiA+ID4gPiBAQCAtODMsNiAr ODcsMjIgQEAgaWYgbWFjaGluZSA9PSAnZGVmYXVsdCcNCj4gPiA+ID4gIAllbGlmIGhvc3RfbWFj aGluZS5jcHVfZmFtaWx5KCkuc3RhcnRzd2l0aCgncHBjJykNCj4gPiA+ID4gIAkJbWFjaGluZSA9 ICdwb3dlcjgnDQo+ID4gPiA+ICAJZW5kaWYNCj4gPiA+ID4gK2VsaWYgbm90IG1lc29uLmlzX2Ny b3NzX2J1aWxkKCkNCj4gPiA+ID4gKwkjIGZpbmQgaG9zdCBjb3JlIGNvdW50IGFuZCBudW1hIG5v ZGUgY291bnQgZm9yIG5hdGl2ZSBidWlsZHMNCj4gPiA+ID4gKwlpZiBtYXhfbGNvcmVzID09IDAN Cj4gPiA+ID4gKwkJbWF4X2xjb3JlcyA9DQo+ID4gPiBydW5fY29tbWFuZChnZXRfY3B1X2NvdW50 X2NtZCkuc3Rkb3V0KCkudG9faW50KCkNCj4gPiA+ID4gKwkJbWluX2xjb3JlcyA9IDINCj4gPiA+ ID4gKwkJaWYgbWF4X2xjb3JlcyA8IG1pbl9sY29yZXMNCj4gPiA+ID4gKwkJCW1lc3NhZ2UoJ0Zv dW5kIGxlc3MgdGhhbiBAMEAgY29yZXMsIGJ1aWxkaW5nIGZvcg0KPiA+ID4gQDBAIGNvcmVzJy5m b3JtYXQobWluX2xjb3JlcykpDQo+ID4gPiA+ICsJCQltYXhfbGNvcmVzID0gbWluX2xjb3Jlcw0K PiA+ID4gPiArCQllbHNlDQo+ID4gPiA+ICsJCQltZXNzYWdlKCdGb3VuZCBAMEAgY29yZXMnLmZv cm1hdChtYXhfbGNvcmVzKSkNCj4gPiA+ID4gKwkJZW5kaWYNCj4gPiA+ID4gKwllbmRpZg0KPiA+ ID4gPiArCWlmIG1heF9udW1hX25vZGVzID09IDANCj4gPiA+ID4gKwkJbWF4X251bWFfbm9kZXMg PQ0KPiA+ID4gcnVuX2NvbW1hbmQoZ2V0X251bWFfY291bnRfY21kKS5zdGRvdXQoKS50b19pbnQo KQ0KPiA+ID4gPiArCQltZXNzYWdlKCdGb3VuZCBAMEAgbnVtYQ0KPiBub2RlcycuZm9ybWF0KG1h eF9udW1hX25vZGVzKSkNCj4gPiA+ID4gKwllbmRpZg0KPiA+ID4gPiAgZW5kaWYNCj4gPiA+ID4N Cj4gPiA+ID4gIGRwZGtfY29uZi5zZXQoJ1JURV9NQUNISU5FJywgbWFjaGluZSkgQEAgLTIyNyw4 ICsyNDcsMTAgQEANCj4gPiA+ID4gZm9yZWFjaA0KPiA+ID4gPiBhcmc6IHdhcm5pbmdfZmxhZ3Mg IGVuZGZvcmVhY2gNCj4gPiA+ID4NCj4gPiA+ID4gICMgc2V0IG90aGVyIHZhbHVlcyBwdWxsZWQg ZnJvbSB0aGUgYnVpbGQgb3B0aW9ucw0KPiA+ID4gPiAtZHBka19jb25mLnNldCgnUlRFX01BWF9M Q09SRScsIGdldF9vcHRpb24oJ21heF9sY29yZXMnKSkNCj4gPiA+ID4gLWRwZGtfY29uZi5zZXQo J1JURV9NQVhfTlVNQV9OT0RFUycsDQo+IGdldF9vcHRpb24oJ21heF9udW1hX25vZGVzJykpDQo+ ID4gPiA+ICtpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQ0KPiA+ID4gPiArCWRwZGtfY29u Zi5zZXQoJ1JURV9NQVhfTENPUkUnLCBtYXhfbGNvcmVzKQ0KPiA+ID4gPiArCWRwZGtfY29uZi5z ZXQoJ1JURV9NQVhfTlVNQV9OT0RFUycsIG1heF9udW1hX25vZGVzKQ0KPiBlbmRpZg0KPiA+ID4N Cj4gPiA+IFJhdGhlciB0aGFuIGNvbmRpdGlvbmFsbHkgc2V0dGluZyB0aGUgdmFsdWUgaGVyZSwg eW91IHNob3VsZCBtb3ZlDQo+ID4gPiB0aGUgY2hlY2tzIGJlbG93IHVwIGFib3ZlIHRoaXMgdG8g c2ltcGxpZnkgdGhpbmdzLg0KPiA+ID4NCj4gPg0KPiA+IERvIHlvdSBtZWFuIHRoZSBjcm9zcyBi dWlsZCBjaGVja3M/IFRob3NlIGhhdmUgdG8gYmUgYWZ0ZXINCj4gc3ViZGlyKGFyY2hfc3ViZGly KSBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSB0aGUgdmFsdWVzIGZyb20gY3Jvc3MgZmlsZXMgKGFz DQo+IHRoZSBjb21taXQgbWVzc2FnZSBzYXlzKS4NCj4gPg0KPiA+ID4gPiAgZHBka19jb25mLnNl dCgnUlRFX01BWF9FVEhQT1JUUycsIGdldF9vcHRpb24oJ21heF9ldGhwb3J0cycpKQ0KPiA+ID4g PiBkcGRrX2NvbmYuc2V0KCdSVEVfTElCRUFMX1VTRV9IUEVUJywgZ2V0X29wdGlvbigndXNlX2hw ZXQnKSkNCj4gPiA+ID4gZHBka19jb25mLnNldCgnUlRFX0VOQUJMRV9UUkFDRV9GUCcsDQo+ID4g PiA+IGdldF9vcHRpb24oJ2VuYWJsZV90cmFjZV9mcCcpKSBAQA0KPiA+ID4gPiAtMjQ3LDYgKzI2 OSwyMiBAQCBjb21waWxlX3RpbWVfY3B1ZmxhZ3MgPSBbXQ0KPiA+ID4gPiAgc3ViZGlyKGFyY2hf c3ViZGlyKQ0KPiA+ID4gPiAgZHBka19jb25mLnNldCgnUlRFX0NPTVBJTEVfVElNRV9DUFVGTEFH UycsDQo+ID4gPiA+ICcsJy5qb2luKGNvbXBpbGVfdGltZV9jcHVmbGFncykpDQo+ID4gPiA+DQo+ ID4gPiA+ICsjIGNoZWNrIHRoYXQgY3B1IGFuZCBudW1hIGNvdW50IGlzIHNldCBpbiBjcm9zcyBi dWlsZHMgaWYNCj4gPiA+ID4gK21lc29uLmlzX2Nyb3NzX2J1aWxkKCkNCj4gPiA+ID4gKyAgICAJ aWYgbWF4X2xjb3JlcyA+IDANCj4gPiA+ID4gKwkJIyBzcGVjaWZpZWQgb24gdGhlIGNtZGxpbmUN Cj4gPiA+ID4gKwkJZHBka19jb25mLnNldCgnUlRFX01BWF9MQ09SRScsIG1heF9sY29yZXMpDQo+ ID4gPiA+ICsJZWxpZiBub3QgZHBka19jb25mLmhhcygnUlRFX01BWF9MQ09SRScpDQo+ID4gPiA+ ICsJCWVycm9yKCdOdW1iZXIgb2YgY29yZXMgZm9yIGNyb3NzIGJ1aWxkIG5vdCBzcGVjaWZpZWQg aW4gQDBADQo+ID4gPiBzdWJkaXIgKGUuZy4gaW4gYSBjcm9zcy1maWxlKSBub3Igb24gdGhlDQo+ ID4gPiBjbWRsaW5lJy5mb3JtYXQoYXJjaF9zdWJkaXIpKQ0KPiA+ID4gPiArCWVuZGlmDQo+ID4g PiA+ICsJaWYgbWF4X251bWFfbm9kZXMgPiAwDQo+ID4gPiA+ICsJCSMgc3BlY2lmaWVkIG9uIHRo ZSBjbWRsaW5lDQo+ID4gPiA+ICsJCWRwZGtfY29uZi5zZXQoJ1JURV9NQVhfTlVNQV9OT0RFUycs DQo+IG1heF9udW1hX25vZGVzKQ0KPiA+ID4gPiArCWVsaWYgbm90IGRwZGtfY29uZi5oYXMoJ1JU RV9NQVhfTlVNQV9OT0RFUycpDQo+ID4gPiA+ICsJCWVycm9yKCdOdW1iZXIgb2YgbnVtYSBub2Rl cyBmb3IgY3Jvc3MgYnVpbGQgbm90IHNwZWNpZmllZCBpbg0KPiA+ID4gQDBAIHN1YmRpciAoZS5n LiBpbiBhIGNyb3NzLWZpbGUpIG5vciBvbiB0aGUNCj4gPiA+IGNtZGxpbmUnLmZvcm1hdChhcmNo X3N1YmRpcikpDQo+ID4gPiA+ICsJZW5kaWYNCj4gPiA+ID4gK2VuZGlmDQo+ID4gPiA+ICsNCj4g PiA+ID4gICMgc2V0IHRoZSBpbnN0YWxsIHBhdGggZm9yIHRoZSBkcml2ZXJzDQo+ID4gPiA+IGRw ZGtfY29uZi5zZXRfcXVvdGVkKCdSVEVfRUFMX1BNRF9QQVRIJywgZWFsX3BtZF9wYXRoKQ0KPiA+ ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRp b25zLnR4dCBpbmRleA0KPiA+ID4gPiA5YmYxOGFiNmIuLjAxYjBjNDVjMyAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvbWVzb25fb3B0aW9ucy50eHQNCj4gPiA+ID4gKysrIGIvbWVzb25fb3B0aW9ucy50 eHQNCj4gPiA+ID4gQEAgLTI2LDEwICsyNiwxMCBAQCBvcHRpb24oJ21hY2hpbmUnLCB0eXBlOiAn c3RyaW5nJywgdmFsdWU6ICduYXRpdmUnLA0KPiA+ID4gPiAgCWRlc2NyaXB0aW9uOiAnc2V0IHRo ZSB0YXJnZXQgbWFjaGluZSB0eXBlJykNCj4gPiA+ID4gb3B0aW9uKCdtYXhfZXRocG9ydHMnLA0K PiA+ID4gPiB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAzMiwNCj4gPiA+ID4gIAlkZXNjcmlwdGlv bjogJ21heGltdW0gbnVtYmVyIG9mIEV0aGVybmV0IGRldmljZXMnKQ0KPiA+ID4gPiAtb3B0aW9u KCdtYXhfbGNvcmVzJywgdHlwZTogJ2ludGVnZXInLCB2YWx1ZTogMTI4LA0KPiA+ID4gPiAtCWRl c2NyaXB0aW9uOiAnbWF4aW11bSBudW1iZXIgb2YgY29yZXMvdGhyZWFkcyBzdXBwb3J0ZWQgYnkg RUFMJykNCj4gPiA+ID4gLW9wdGlvbignbWF4X251bWFfbm9kZXMnLCB0eXBlOiAnaW50ZWdlcics IHZhbHVlOiA0LA0KPiA+ID4gPiAtCWRlc2NyaXB0aW9uOiAnbWF4aW11bSBudW1iZXIgb2YgTlVN QSBub2RlcyBzdXBwb3J0ZWQgYnkgRUFMJykNCj4gPiA+ID4gK29wdGlvbignbWF4X2xjb3Jlcycs IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6IDAsDQo+ID4gPiA+ICsJZGVzY3JpcHRpb246ICdtYXhp bXVtIG51bWJlciBvZiBjb3Jlcy90aHJlYWRzIHN1cHBvcnRlZCBieSBFQUwuDQo+ID4gPiA+ICtW YWx1ZSAwIG1lYW5zIHRoZSBudW1iZXIgb2YgY3B1cyBvbiB0aGUgaG9zdCB3aWxsIGJlIHVzZWQu IEZvcg0KPiA+ID4gPiArY3Jvc3MgYnVpbGQsDQo+ID4gPiBzZXQgdG8gbm9uLXplcm8gdG8gb3Zl cndyaXRlIHRoZSBjcm9zcy1maWxlIHZhbHVlLicpDQo+ID4gPiBvcHRpb24oJ21heF9udW1hX25v ZGVzJywNCj4gPiA+IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6IDAsDQo+ID4gPiA+ICsJZGVzY3Jp cHRpb246ICdtYXhpbXVtIG51bWJlciBvZiBOVU1BIG5vZGVzIHN1cHBvcnRlZCBieSBFQUwuDQo+ ID4gPiA+ICtWYWx1ZQ0KPiA+ID4gMA0KPiA+ID4gPiArbWVhbnMgdGhlIG51bWJlciBvZiBudW1h IG5vZGVzIG9uIHRoZSBob3N0IHdpbGwgYmUgdXNlZC4gRm9yDQo+ID4gPiA+ICtjcm9zcyBidWls ZCwgc2V0IHRvIG5vbi16ZXJvIHRvIG92ZXJ3cml0ZSB0aGUgY3Jvc3MtZmlsZSB2YWx1ZS4nKQ0K PiA+ID4NCj4gPiA+IEkgZG9uJ3QgbGlrZSB0aGlzIGNoYW5nZSwgYmVjYXVzZSBpdCB2ZXJ5IG11 Y2ggYXNzdW1lcyBmb3INCj4gPiA+IG5vbi1jcm9zcy1jb21waWxlcyB0aGF0IHBlb3BsZSB3aWxs IGJlIHJ1bm5pbmcgRFBESyBvbiB0aGUgc3lzdGVtDQo+ID4gPiB0aGV5IGJ1aWxkIGl0IG9uLiBU aGF0J3MgYSB2ZXJ5LCB2ZXJ5IGJpZyBhc3N1bXB0aW9uIQ0KPiA+DQo+ID4gSSdsbCBiZSB1c2lu ZyBkZWZpbml0aW9ucyBmcm9tIGh0dHBzOi8vbWVzb25idWlsZC5jb20vQ3Jvc3MtDQo+IGNvbXBp bGF0aW9uLmh0bWwuDQo+ID4gSSB1bmRlcnN0YW5kIGNyb3NzIGNvbXBpbGF0aW9uIHRvIGJlIGJ1 aWxkaW5nIGZvciBhIGRpZmZlbnQgaG9zdCBtYWNoaW5lDQo+IHRoYW4gdGhlIGJ1aWxkIG1hY2hp bmUgKHdoaWNoIGlzIGFsaWduZWQgd2l0aCBwcmV0dHkgbXVjaCBldmVyeSBkZWZpbml0aW9uIEkN Cj4gZm91bmQpLiBJIHVuZGVyc3RhbmQgdGhpcyB0byBiZSB0cnVlIG5vdCBvbmx5IGZvciBidWls ZHMgYmV0d2Vlbg0KPiBhcmNoaXRlY3R1cmVzLCBidXQgYWxzbyB3aXRoaW4gYW4gYXJjaGl0ZWN0 dXJlIChlLmcuIHg4Nl82NCBidWlsZCBtYWNoaW5lDQo+IGJ1aWxkaW5nIGZvciB4ODZfNjQgaG9z dCBtYWNoaW5lKS4NCj4gPiBTbyB5ZXMsIHdoZW4gc29tZW9uZSBkb2VzIGEgbmF0aXZlIGJ1aWxk LCBpdCBzdGFuZHMgdG8gcmVhc29uIHRoZXkgd2FudCB0bw0KPiB1c2UgaXQgb24gdGhlIGJ1aWxk IG1hY2hpbmUuIElmIHRoZXkgd2FudGVkIHRvIHVzZSBpdCBlbHNld2hlcmUsIHRoZXkgd291bGQN Cj4gY3Jvc3MgY29tcGlsZS4NCj4gPiBBbm90aGVyIHRoaW5nIGlzIHRoZSBjdXJyZW50IGJ1aWxk IHBoaWxvc29waHkgaXMgdG8gZGV0ZWN0IGFzIG11Y2ggYXMNCj4gcG9zc2libGUgKG5vdCBoYXZp bmcgc3RhdGljYWxseSBkZWZpbmVkIGNvbmZpZ3VyYXRpb24sIGFzIHlvdSBtZW50aW9uZWQgaW4g dGhlDQo+IHBhc3QpLiBEZXRlY3RpbmcgdGhlIG51bWJlciBvZiBjb3JlcyBhbmQgbnVtYSBub2Rl cyBmaXRzIHRoaXMgcGVyZmVjdGx5Lg0KPiA+IEFuZCB5ZXQgYW5vdGhlciB0aGluZyBpcyB0aGF0 IHRoZSBhc3N1bXB0aW9uIHNlZW1zIHRvIGJlIGFscmVhZHkgcHJlc2VudA0KPiBpbiB0aGUgYnVp bGQgc3lzdGVtIC0gaXQgYWxyZWFkeSBkZXRlY3RzIGEgbG90IHRoaW5ncywgc29tZSBvZiB3aGlj aCBtYXkgbm90IGJlDQo+IHNhdGlzZmllZCBvbiBtYWNoaW5lcyBvdGhlciB0aGFuIHRoZSBidWls ZCBtYWNoaW5lLiBJIG1heSBiZSB3cm9uZyBhYm91dA0KPiB0aGlzLg0KPiA+DQo+ID4gPiBJJ20g b2sgd2l0aCBoYXZpbmcgemVybyBhcyBhICJkZXRlY3QiIG9wdGlvbiwgYW5kIGhhdmluZyB0aGUg dmFsdWVzDQo+ID4gPiBvdmVycmlkZGVuIGZyb20gY3Jvc3MtZmlsZXMsIGJ1dCBub3Qgd2l0aCBk ZXRlY3Rpb24gYXMgdGhlIGRlZmF1bHQNCj4gPiA+IG91dC0gb2YtdGhlLWJveCBvcHRpb24hIExv dHMgb2YgdXNlcnMgbWF5IHB1bGwgYnVpbGRzIGZyb20gYSBDSQ0KPiA+ID4gYmFzZWQgb24gVk1z IHdpdGgganVzdCBhIGZldyBjb3JlcywgZm9yIGluc3RhbmNlLg0KPiA+DQo+ID4gSWYgbm90IGhh dmluZyB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBpcyBhIGNvbmNlcm4gYmVjYXVzZSBvZiB1c2Vy cyB1c2luZyBDSQ0KPiBidWlsZHMsIHRoZW4gd2UgKGlmIGl0J3MgZnJvbSBvdXIgQ0kpIGNhbiBj aGFuZ2Ugd2hhdCB3ZSdyZSBidWlsZGluZyBpbiBDSSAtIHRoZQ0KPiBkZWZhdWx0L2dlbmVyaWMg YnVpbGQgc2VlbXMgbGlrZSBhIGdvb2QgZml0IGJlY2F1c2UgaXQncyBzdXBwb3NlZCB0byB3b3Jr IG9uDQo+IGEgdmFyaWV0eSBvZiBzeXN0ZW1zLiBFeHBlY3RpbmcgdGhhdCBuYXRpdmUgYnVpbGQg ZnJvbSByYW5kb20gVk1zIHdvdWxkDQo+IHdvcmsgYW55d2hlcmUgZG9lc24ndCBzZWVuIHZlcnkg cmVhbGlzdGljIC0gaXQncyBiZWVuIGJ1aWxkIGZvciB0aGF0IFZNDQo+IGVudmlyb25tZW50IChi ZWNhdXNlIGl0J3MgYSBuYXRpdmUgYnVpbGQpLg0KPiA+DQo+ID4gSGVyZSdzIG15IHVuZGVyc3Rh bmRpbmcgb24gd2hpY2ggdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBiYXNlZDoNCj4gPiAxLiBTaW5j ZSB3ZSB3YW50IHRvIGdldCBhd2F5IGZyb20gaGF2aW5nIHN0YXRpY2FsbHkgZGVmaW5lZCBjb25m aWd1cmF0aW9uLA0KPiBudW1hIGFuZCBjb3JlIGNvdW50IGRpc2NvdmVyeSBpcyBleGFjdGx5IHdo YXQgd2Ugc2hvdWxkIGhhdmUgaW4gdGhlIGJ1aWxkDQo+IHN5c3RlbS4gU2luY2UgZGlzY29yZXJ5 IGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCBmb3IgbGliL2RyaXZlcnMsIGl0IHN0YW5kcyB0bw0K PiByZWFzb24gaXQgc2hvdWxkIGJlIGRlZmF1bHQgZm9yIGV2ZXJ5dGhpbmcgZWxzZSwgaWYgcG9z c2libGUuDQo+ID4gMi4gTmF0aXZlIGJ1aWxkIHNob3VsZCBwcm9kdWNlIGJpbmFyaWVzIG1hdGNo aW5nIHRoZSBidWlsZCBtYWNoaW5lIGFzIHdlbGwNCj4gYXMgcG9zc2libGUuDQo+ID4gMy4gRGVm YXVsdC9nZW5lcmljIGJ1aWxkIHNob3VsZCBwcm9kdWNlIGJpbmFyaWVzIGV4ZWN1dGFibGUgb24g YSByYW5nZSBvZg0KPiBzeXN0ZW1zIChpZGVhbGx5IGFsbCBzeXN0ZW1zIG9mIGEgZ2l2ZW4gYXJj aGl0ZWN0dXJlKS4NCj4gPiA0LiBPdGhlciBidWlsZHMsIHRoYXQgaXMgbm9uLW5hdGl2ZSBidWls ZHMsIGFyZSBjcm9zcy1jb21waWxhdGlvbiwgc2luY2Ugd2UncmUNCj4gYnVpbGRpbmcgZm9yIGhv c3QgbWFjaGluZSBvdGhlciB0aGF0IHRoZSBidWlsZCBtYWNoaW5lLg0KPiA+DQo+ID4gV2hhdCBJ IGhhdmVuJ3QgdGFrZW4gaW50byBhY2NvdW50IGlzIHVzZXJzIHVzaW5nIENJIGJ1aWxkcy4gVGhh dCBjb3VsZCBiZQ0KPiByZW1lZGllZCBieSBtb2RpZnlpbmcgdGhlIENJIGEgYml0IHdoaWxlIGJl aW5nIGNvbnNpc3RlbnQgd2l0aCB3aGF0DQo+IG5hdGl2ZS9kZWZhdWx0L2dlbmVyaWMvY3Jvc3Mg YnVpbGRzIGFyZSAob3Igc2hvdWxkIGJlKS4gQW5kIGluIGFueSBjYXNlLCBpZg0KPiB3ZSdyZSBu b3QgaW50ZXJlc3RlZCBpbiB0ZXN0aW5nIHRoZSBleGFjdCBDSSBlbnZpcm9ubWVudCAod2hpY2gg d2UgYXJlbid0LA0KPiBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIHVzZSAyIGNvcmVzIHdpdGggMSBu dW1hKSwgd2UgcmVhbGx5IHNob3VsZG4ndCBiZSBkb2luZw0KPiBuYXRpdmUgYnVpbGRzIHRoZXJl Lg0KPiA+DQo+ID4gSSdtIGludGVyZXN0ZWQgaW4gaGVhcmluZyB3aGVyZSBteSB0aGlua2luZyBk ZXZpYXRlcyBmcm9tIHlvdXJzLg0KPiA+DQo+IA0KPiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcG9p bnRzIGluIHdoaWNoIHdlIGRpZmZlciwgSSB0aGluay4NCj4gDQo+IEZpcnN0bHksIHRoZSB1c2Ug b2YgIm5hdGl2ZSIgYW5kICJkZWZhdWx0L2dlbmVyaWMiIGZvciB0aGUgIm1hY2hpbmUiDQo+IHBh cmFtZXRlciByZWZlcnMgb25seSB0byB0aGUgaW5zdHJ1Y3Rpb24tc2V0IGxldmVsIGZyb20gdGhl IGNvbXBpbGVyLCBhbmQNCj4gc2hvdWxkIG5vdCBhZmZlY3QgYW55IG90aGVyIHNldHRpbmdzLCBz aW5jZSBhbGwgc2V0dGluZ3MgYXJlIGluZGVwZW5kZW50Lg0KPiBUaGVyZWZvcmUsIHNldHRpbmcg Im1hY2hpbmUiIHRvICJuYXRpdmUiIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBzaG91bGQNCj4gZGV0 ZWN0IGNvcmVzIGFuZCBudW1hIG5vZGVzLCBhbmQgc2ltaWxhcmx5IHNldHRpbmcgaXQgdG8gImRl ZmF1bHQiIGRvZXMgbm90DQo+IG1lYW4gdGhhdCB3ZSBzaG91bGQgaWdub3JlIHRoZSBzZXR0aW5n cyBmb3IgdGhlc2UgdmFsdWVzIGFuZCBwaWNrIG91ciBvd24NCj4gY2hvc2VuIGRlZmF1bHQgdmFs dWVzLg0KQXBvbG9naWVzIHRvIGdvIHRvIGFuIG9sZGVyIGRpc2N1c3Npb24uDQpJIGFtIHRyeWlu ZyB0byB1bmRlcnN0YW5kIHRoZSBkZWZpbml0aW9ucy9leHBlY3RhdGlvbnMgZm9yICduYXRpdmUn IGFuZCAnZ2VuZXJpYycgYnVpbGRzLg0KQXMgeW91IHNheSwgaW5zdHJ1Y3Rpb24tc2V0IGxldmVs IGlzIGRlZmluaXRlbHkgb25lIHBhcmFtZXRlci4gQnV0LCBJIHRoaW5rIG90aGVyIERQREsgc3Bl Y2lmaWMgcGFyYW1ldGVycyBzaG91bGQgYWxzbyBiZSBjb25zaWRlcmVkLg0KRm9yIGV4OiBSVEVf TUFYX0xDT1JFIHNob3VsZCBoYXZlIGEgcGFydGljdWxhciB2YWx1ZSBmb3IgJ2dlbmVyaWMnIGJ1 aWxkIGluIGFsbCB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuIFRoZSB2YWx1ZSBjb3VsZCBi ZSBkaWZmZXJlbnQgZm9yIGVhY2ggYXJjaGl0ZWN0dXJlLCBidXQgaXQgaXMgZml4ZWQgZm9yIHRo ZSAnZ2VuZXJpYycgYnVpbGQgZm9yIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLiBPdGhlcndpc2UsIHRo ZSAnZ2VuZXJpYycgYnVpbGQgbWlnaHQgbm90IHJ1biBvbiBhbGwgdGhlIG1hY2hpbmVzIG9mIHRo YXQgYXJjaGl0ZWN0dXJlLg0KDQpTaW1pbGFybHksIGZvciAnbmF0aXZlJyBidWlsZCwgaXMgdGhl cmUgYW55IHJlYXNvbiBub3QgdG8gaW5jbHVkZSBvdGhlciBEUERLIHBhcmFtZXRlcnMgYXMgcGFy dCBvZiB0aGUgZGVmaW5pdGlvbj8gSU1PLCAnbmF0aXZlJyBzaG91bGQgcmVmZXIgdG8gdGhlIGVu dGlyZSBidWlsZCBtYWNoaW5lLCBub3QganVzdCB0aGUgSVNBLiBpLmUuIGJ1aWxkIG9uIHRoZSB0 YXJnZXQgbWFjaGluZS4NCg0KPiANCj4gU2Vjb25kbHksIHRoZSB1c2Ugb2YgY3Jvc3MtY29tcGls YXRpb24gb25seSBhcHBsaWVzIHdoZW4geW91IGFyZSBjb21waWxpbmcNCj4gZm9yIGEgZGlmZmVy ZW50IGFyY2hpdGVjdHVyZSBvciBlbnZpcm9ubWVudCAoZS5nLiBPUykgdG8gd2hhdCB5b3UgYXJl IGJ1aWxkaW5nDQo+IG9uLiBCdWlsZGluZyBvbiBhIDQtY29yZSB4ODYgbWFjaGluZSB0byBydW4g b24gYSBkdWFsLXNvY2tldCwgMzItY29yZSB4ODYNCj4gbWFjaGluZSBpcyBub3QgY3Jvc3MtY29t cGlsaW5nLCBidXQgc3RpbGwgbmVlZHMgdG8gd29yayBieSBkZWZhdWx0LiBTb21ldGhpbmcNCj4g bGlrZSBidWlsZGluZyBhIDMyLWJpdCBiaW5hcnkgb24gYSA2NC1iaXQgT1MgaXMgaW4gbW9zdCBj YXNlcyBub3QgZG9uZSBieSBjcm9zcy0NCj4gY29tcGlsYXRpb24gZWl0aGVyLCBidXQgaXMgcmF0 aGVyIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBkaXNjdXNzaW9uLCBleGNlcHQNCj4gYXMgYSBy ZWZlcmVuY2UgcG9pbnQgdG8gc2hvdyB0aGUgc2NvcGUgb2YgZGlmZmVyZW5jZXMgd2hpY2ggY2Fu IGJlDQo+IGFjY29tb2RhdGVkIGFzICJuYXRpdmUgYnVpbGRzIi4NCj4gDQo+IEluIHRlcm1zIG9m IGR5bmFtaWMgY29uZmlndXJhdGlvbiBmb3IgdGhpbmdzIGxpa2UgY29yZXMgYW5kIG51bWEgbm9k ZXMsIHRoZQ0KPiBpZGVhbCBlbmQgc3RhdGUgaGVyZSBpcyBub3QgdG8gaGF2ZSB0aGVtIGRldGVj dGVkIGF0IGJ1aWxkIHRpbWUgb24gdGhlIGhvc3QNCj4gc3lzdGVtLCBidXQgaW5zdGVhZCB0byBo YXZlIHRoZW0gZGV0ZWN0ZWQgYXQgcnVudGltZSBhbmQgc2l6ZWQgZHluYW1pY2FsbHkuDQo+IElu IHRoZSBhYnNlbnNlIG9mIHRoYXQsIHRoZXNlIHZhbHVlcyBzaG91bGQgYmUgc2V0IHRvIHJlYXNv bmFibGUgZGVmYXVsdHMgc28NCj4gdGhhdCB3aGVuIGEgdXNlciBjb21waWxlcyB1cCBhIGJpbmFy eSB3aXRob3V0IHNldHRpbmdzIHRoZXNlIGV4cGxpY2l0bHkgaXQNCj4gc2hvdWxkIHJ1biBvbiA5 NSUrIG9mIHN5c3RlbXMgb2YgdGhhdCB0eXBlLg0KRm9yIHRoZSAnZ2VuZXJpYycgYnVpbGQgKHdo aWNoIEkgYWxzbyByZWFkIGl0IGFzIERQREsgYmluYXJpZXMgcGFja2FnZWQgd2l0aCBkaXN0cm9z KSwgdGhpcyBzaG91bGQgYmUgMTAwJS4NCg0KPiANCj4gVGhpcyBpcyBteSB1bmRlcnN0YW5kaW5n IG9mIHRoZSBpc3N1ZXMsIGFueXdheS4gOi0pDQo+IA0KPiBSZWdhcmRzLA0KPiAvQnJ1Y2UNCg==