From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2A5CE41DF1; Mon, 6 Mar 2023 07:13:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B99AF40ED6; Mon, 6 Mar 2023 07:13:50 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2056.outbound.protection.outlook.com [40.107.21.56]) by mails.dpdk.org (Postfix) with ESMTP id 360304067B for ; Mon, 6 Mar 2023 07:13:48 +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=7a1XsOuasNRumNwWw3WYhvoguW4sf4kv+LbZNIhjEyo=; b=rhbue1b6K7XPU5cuXLsreI+nPaNWs0cqJXxU8j0bImSgP59GLHr1wtzMWD2jz0lB2GM6CRtiBEg3S6LHgRqEE0Z7r8L9vFCz/KsJr6R6FXRBR6q9LN4/T1sVUlVUjT6V552qv7cSoWwt1uFPWswgqJxXvgH+SUlQqJ8TbUGXimE= Received: from DB8PR09CA0001.eurprd09.prod.outlook.com (2603:10a6:10:a0::14) by DU0PR08MB8907.eurprd08.prod.outlook.com (2603:10a6:10:47f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.27; Mon, 6 Mar 2023 06:13:42 +0000 Received: from DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:a0:cafe::1f) by DB8PR09CA0001.outlook.office365.com (2603:10a6:10:a0::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28 via Frontend Transport; Mon, 6 Mar 2023 06:13:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT007.mail.protection.outlook.com (100.127.142.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28 via Frontend Transport; Mon, 6 Mar 2023 06:13:42 +0000 Received: ("Tessian outbound 0df938784972:v135"); Mon, 06 Mar 2023 06:13:42 +0000 X-CR-MTA-TID: 64aa7808 Received: from 0b1756c2f80c.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C0AD997B-D7E2-4719-A447-55BBB19AE62B.1; Mon, 06 Mar 2023 06:13:32 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0b1756c2f80c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 06 Mar 2023 06:13:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PqeI+6ntCmS+48W4m/cvRSvKN41HjGaRUPatTH6Oe7LgWA5atyOotnTL027L8yMDGcmO++oP0JO8ajr0js3cI/DGvQfzK3aaG/uaTUMUdiA8d+vRYITLlOa2+HcpgIhAGTLjkRnaW7HSn3BD6is5KP8tJTQx8civMf/Wce0Xqc7B2E0B6t9MpKGr4/sMGydVWE3dNFSycRiWvJirBegTmiLptKvMYynNrh5hxBVha3mWZ2L+pIkCfWQkdKPHRyRoNuBRDWb/nwvsrNsgit4OjjG5a7cdalkduwpwFu4yimNMY77dwn3Lj/E5sbWgonvvkjAKc80CXNoj9bLyljcjBw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7a1XsOuasNRumNwWw3WYhvoguW4sf4kv+LbZNIhjEyo=; b=UR1zuPmqb3+MRf/MsDbc7wuclWBRhdAyz9P6gXdb2oAmxBbRfD4yZ4yzWK9R22uNWw5ofgK8lRTth2FaJo5byAv3RWCLBXUQI45uDkyU8+5C/0BE65Ha/VBa6DN0QhLplsBx77yFZC0tOAgLlNRgtrMVtlknukj9DcBHUhkt/nQXt3pEORqbHWOh7FkqX2CwGIIcLzxQKRfRvQ/S1xDDzJkc8+JGRyQw5MwPM/S7I4M/l1yiXBiEjacHjmPPCtzCTugb4G7xCI1kIHoYSKlcXWBeruwXZ3yx2T1NVQspcUD67DXXEXQAwp8RkAg2dYVB3igLX+YDyVErO8kXAXNfBQ== 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=7a1XsOuasNRumNwWw3WYhvoguW4sf4kv+LbZNIhjEyo=; b=rhbue1b6K7XPU5cuXLsreI+nPaNWs0cqJXxU8j0bImSgP59GLHr1wtzMWD2jz0lB2GM6CRtiBEg3S6LHgRqEE0Z7r8L9vFCz/KsJr6R6FXRBR6q9LN4/T1sVUlVUjT6V552qv7cSoWwt1uFPWswgqJxXvgH+SUlQqJ8TbUGXimE= Received: from AS8PR08MB7080.eurprd08.prod.outlook.com (2603:10a6:20b:401::19) by DB5PR08MB10312.eurprd08.prod.outlook.com (2603:10a6:10:3c1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28; Mon, 6 Mar 2023 06:13:29 +0000 Received: from AS8PR08MB7080.eurprd08.prod.outlook.com ([fe80::3e2c:a99c:db5b:601f]) by AS8PR08MB7080.eurprd08.prod.outlook.com ([fe80::3e2c:a99c:db5b:601f%6]) with mapi id 15.20.6156.028; Mon, 6 Mar 2023 06:13:29 +0000 From: Ruifeng Wang To: Ferruh Yigit , Konstantin Ananyev , "dev@dpdk.org" , fengchengwen , Konstantin Ananyev , Honnappa Nagarahalli , Stephen Hemminger , "Ajit Khaparde (ajit.khaparde@broadcom.com)" CC: nd Subject: RE: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Topic: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Index: AQHZRPHSKAOhGJtmykGYr/7I8+jOva7XZ1EAgAF+GTCAALzPgIAAh9OAgACgagCAAQUYsIAAZrmAgABWEgCAAlvVAIACm6aAgAfazgCAA/ng8A== Date: Mon, 6 Mar 2023 06:13:29 +0000 Message-ID: References: <20230220060839.1267349-1-ashok.k.kaladi@intel.com> <20230220060839.1267349-2-ashok.k.kaladi@intel.com> <4786db4b-63dc-5329-522d-77eb58d4cff4@huawei.com> <20230221090053.14d653bf@hermes.local> <3cd97a71-b32f-b33b-dce1-46fabad182f6@huawei.com> <54fbf4e55cd44477b1e956f98a7a3c50@huawei.com> <3dc3b3d3-c80f-a361-8780-b1b3e48d843e@yandex.ru> <52296fe2-d9f6-1a24-e577-e5271a69a053@amd.com> In-Reply-To: <52296fe2-d9f6-1a24-e577-e5271a69a053@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 90CC482826303141A85FF929F17F7A55.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS8PR08MB7080:EE_|DB5PR08MB10312:EE_|DBAEUR03FT007:EE_|DU0PR08MB8907:EE_ X-MS-Office365-Filtering-Correlation-Id: 37dfc6cd-2bf4-4878-32cf-08db1e09efa1 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: MMUyaEEtLr1Ur409oPQBzlGCbDsdnNm2/nqAfNI21WFQltyPAghUTwD6xuv5zKnKY1rrXiMvVz3XhKjovD3lNa6REF+6oNw4XU2RygWtwbyJqPxAy8LcOf19AGrfMikUb1SNbD08sLWY6xaZBT2pr5T5acJr/PpDQWHFwsKLcusfagHHEy0LrbNJLwxgQ8MgcRrp9+t7irS9EYpLLttwg3AlRpYNY4/JRB+U65L/2whZPplOFBoVs3UMKRItpV1W+TfJBUXOq40O/8/RQ3xMNBiy9fcSwDjcDkNNnAvG+s0SYtfDChtWv4JWB94F6fBSc5k8wqpf3qdpCcZ1+04FB+WVoOeX0uct2o2pIpqIl3tLs0e0D7n1BpsAg1xyaXUsoB8Oi1SN+3PR+t0m2CmhjWw4QBCtPMombCRF9nX/aEO3BV/XXCkzGwMHhChjhZkMGxLW3tFRSSpNcHl7ezS1CaGIdsZn2qhXuH0GXWnSxwDAiznxnuQTpxLkGB654pVUOcjbD/khclhkDcbj1bBVQNTBAnMJ8Jk+tnyeyDWPhQGLt2gAHCH1msxPlju1uLVhlZA/2Gvc6MYfnPWXyo0PmaPT2e9+gmfWvK0NXyM0Yjxf8r139doxGPdC1F/vrA9lP4OF5xNIdP6sazVrZbDSo6++cupDkgFaDBlPh1iOv5Sxlh7MMPMNfpOsS2QRl8uTS+TY23G/9zJFQxFoG/sO6A== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7080.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(39850400004)(136003)(346002)(366004)(396003)(376002)(451199018)(9686003)(186003)(122000001)(38100700002)(38070700005)(52536014)(8936002)(66556008)(66446008)(4326008)(8676002)(66946007)(41300700001)(66476007)(2906002)(5660300002)(76116006)(30864003)(71200400001)(7696005)(478600001)(64756008)(53546011)(6506007)(26005)(316002)(110136005)(55016003)(86362001)(33656002)(83380400001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10312 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f15f9e62-b30f-4a30-332b-08db1e09e77f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iSqerqsxDzCq+8U635Vedrut9CJmYTHsbEZWdAX4RPrEGOAYO8+N7cKJOKmkXDebR7LwdKjOhqHLI48JPUluhVKEDiomhThWrIOPXNGCCR8qD4/QIJf/cSDgbWjjc7s02zaBzLVSO4rSu7CWkFahMg5coQaVldxrABLDaxPLsgSCN/zGJrrYlaPJgwWLb6J4nvtVrDB6YG9IrSo8IgWOpHF9xO9MqvDpiONiL9JZDzmA7b3qJmEHoMcCWKbqaWf7AhDrhVyzWesLW3tRZbVi5i5GPf3FKaQErRLRAq+QIU16HLx5Kq5pmMC7dUyCkAfNL8BDFfk/wRHjNzvfkuuWYZmwkbCy82SUF7gkz1Aw47vX4zZiuh02nJNkxGnhILDkZGd6K4JuVTSMa5cD+jYGuALwgXAt016fVc9RvRD0BYceAHC30+ExEtq179dsJUHPf8Yb3fTy0m8yoV5s9ErFSJ6xYrjoLKJx9XG59Dg+aqjLZLOnBuqcZEb1L/56ygVDaGSBv4sSj+MkSloO49rqOBv2psdUAxyRA4wZHFx6bZ/oBP+swhQlGF+enkQhQYFS+hLt3KI7/E/dQ+2pA2wRdwo/TnnqDyDISQpA99LGUggP7PRmOF5dGi/TPodyQ8EaDypiUgfHPU6FargBts750YFhYgHWIlQup9QXlfwITNJXP1OSGjsZ0hHfTNF9xUswWsXaNuMo8skALG4K3aEGwKDfwHmdPJDa5JIGbWfYBb0= 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:(13230025)(4636009)(376002)(396003)(346002)(136003)(39860400002)(451199018)(46966006)(40470700004)(36840700001)(6506007)(53546011)(36860700001)(47076005)(83380400001)(82310400005)(356005)(55016003)(40460700003)(86362001)(33656002)(81166007)(40480700001)(82740400003)(336012)(9686003)(186003)(26005)(41300700001)(70206006)(70586007)(8676002)(4326008)(2906002)(8936002)(52536014)(30864003)(5660300002)(478600001)(7696005)(110136005)(316002)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2023 06:13:42.6758 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37dfc6cd-2bf4-4878-32cf-08db1e09efa1 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: DBAEUR03FT007.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8907 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1 aC55aWdpdEBhbWQuY29tPg0KPiBTZW50OiBTYXR1cmRheSwgTWFyY2ggNCwgMjAyMyAxOjE5IEFN DQo+IFRvOiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRleC5y dT47IGRldkBkcGRrLm9yZzsgZmVuZ2NoZW5nd2VuDQo+IDxmZW5nY2hlbmd3ZW5AaHVhd2VpLmNv bT47IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20+OyBI b25uYXBwYQ0KPiBOYWdhcmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFN0 ZXBoZW4gSGVtbWluZ2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz47DQo+IFJ1aWZlbmcg V2FuZyA8UnVpZmVuZy5XYW5nQGFybS5jb20+OyBBaml0IEtoYXBhcmRlIChhaml0LmtoYXBhcmRl QGJyb2FkY29tLmNvbSkNCj4gPGFqaXQua2hhcGFyZGVAYnJvYWRjb20uY29tPg0KPiBTdWJqZWN0 OiBSZTogW1BBVENIIDIvMl0gZXRoZGV2OiBmaXggcmFjZSBjb25kaXRpb24gaW4gZmFzdC1wYXRo IG9wcyBzZXR1cA0KPiANCj4gT24gMi8yNi8yMDIzIDU6MjIgUE0sIEtvbnN0YW50aW4gQW5hbnll diB3cm90ZToNCj4gPg0KPiA+Pj4+Pj4+Pj4+PiBJZiBldGhkZXYgZW5xdWV1ZSBvciBkZXF1ZXVl IGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcNCj4gPj4+Pj4+Pj4+Pj4gZXRoX2Rldl9mcF9vcHNf c2V0dXAoKSwgaXQgbWF5IGdldCBwcmUtZW1wdGVkIGFmdGVyIHNldHRpbmcNCj4gPj4+Pj4+Pj4+ Pj4gdGhlIGZ1bmN0aW9uIHBvaW50ZXJzLCBidXQgYmVmb3JlIHNldHRpbmcgdGhlIHBvaW50ZXIg dG8gcG9ydCBkYXRhLg0KPiA+Pj4+Pj4+Pj4+PiBJbiB0aGlzIGNhc2UgdGhlIG5ld2x5IHJlZ2lz dGVyZWQgZW5xdWV1ZS9kZXF1ZXVlIGZ1bmN0aW9uDQo+ID4+Pj4+Pj4+Pj4+IHdpbGwgdXNlIGR1 bW15IHBvcnQgZGF0YSBhbmQgZW5kIHVwIGluIHNlZyBmYXVsdC4NCj4gPj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4gVGhpcyBwYXRjaCBtb3ZlcyB0aGUgdXBkYXRpb24gb2YgZWFjaCBkYXRhIHBv aW50ZXJzIGJlZm9yZQ0KPiA+Pj4+Pj4+Pj4+PiB1cGRhdGluZyBjb3JyZXNwb25kaW5nIGZ1bmN0 aW9uIHBvaW50ZXJzLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBGaXhlczogYzg3ZDQz NWE0ZDc5ICgiZXRoZGV2OiBjb3B5IGZhc3QtcGF0aCBBUEkgaW50bw0KPiA+Pj4+Pj4+Pj4+PiBz ZXBhcmF0ZQ0KPiA+Pj4+Pj4+Pj4+PiBzdHJ1Y3R1cmUiKQ0KPiA+Pj4+Pj4+Pj4+PiBDYzogc3Rh YmxlQGRwZGsub3JnDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFdoeSBpcyBzb21ldGhpbmcgY2Fs bGluZyBlbnF1ZXVlL2RlcXVldWUgd2hlbiBkZXZpY2UgaXMgbm90DQo+ID4+Pj4+Pj4+IGZ1bGx5 DQo+ID4+Pj4+PiBzdGFydGVkLg0KPiA+Pj4+Pj4+PiBBIGNvcnJlY3RseSB3cml0dGVuIGFwcGxp Y2F0aW9uIHdvdWxkIG5vdCBjYWxsIHJ4L3R4IGJ1cnN0DQo+ID4+Pj4+Pj4+IHVudGlsIGFmdGVy IGV0aGRldiBzdGFydCBoYWQgZmluaXNoZWQuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBQbGVhc2Ug cmVmZXIgdGhlIGViMGQ0NzFhODk0IChldGhkZXY6IGFkZCBwcm9hY3RpdmUgZXJyb3INCj4gPj4+ Pj4+PiBoYW5kbGluZyBtb2RlKSwgd2hlbiBkcml2ZXIgcmVjb3ZlciBpdHNlbGYsIHRoZSBhcHBs aWNhdGlvbiBtYXkNCj4gPj4+Pj4+PiBzdGlsbCBpbnZva2UNCj4gPj4+Pj4+IGVucXVldWUvZGVx dWV1ZSBBUEkuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUmlnaHQgbm93IERQREsgZXRoZGV2IGxheWVy ICpkb2VzIG5vdCogcHJvdmlkZSBzeW5jaHJvbml6YXRpb24NCj4gPj4+Pj4+IG1lY2hhbmlzbXMg YmV0d2VlbiBkYXRhLXBhdGggYW5kIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMuDQo+ID4+Pj4+PiBU aGF0IHdhcyBhIGRlbGliZXJhdGUgZGVpc2duIGNob2ljZS4gSWYgd2Ugd2FudCB0byBjaGFuZ2Ug dGhhdA0KPiA+Pj4+Pj4gcnVsZSwgdGhlbiBJIHN1cHBvc2Ugd2UgbmVlZCBhIGNvbW11bml0eSBj b25zZW5zdXMgZm9yIGl0Lg0KPiA+Pj4+Pj4gSSB0aGluayB0aGF0IGlmIHRoZSBkcml2ZXIgd2Fu dHMgdG8gcHJvdmlkZSBzb21lIHNvcnQgb2YgZXJyb3INCj4gPj4+Pj4+IHJlY292ZXJ5IHByb2Nl ZHVyZSwgdGhlbiBpdCBoYXMgdG8gcHJvdmlkZSBzb21lIHN5bmNocm9uaXphdGlvbg0KPiA+Pj4+ Pj4gbWVjaGFuaXNtIGluc2lkZSBpdCBiZXR3ZWVuIGRhdGEtcGF0aCBhbmQgY29udHJvbC1wYXRo IGZ1bmN0aW9ucy4NCj4gPj4+Pj4+IEFjdHVhbGx5IGxvb2tpbmcgYXQgZWIwZDQ3MWE4OTQgKGV0 aGRldjogYWRkIHByb2FjdGl2ZSBlcnJvcg0KPiA+Pj4+Pj4gaGFuZGxpbmcgbW9kZSksIGFuZCBm b2xsb3dpbmcgcGF0Y2hlcyBJIHdvbmRlciBob3cgaXQgY3JlZXBlZCBpbj8NCj4gPj4+Pj4+IEl0 IHNlZW1zIHdlIGp1c3QgaW50cm9kdWNlZCBhIGxvb3Bob2xlIGZvciByYWNlIGNvbmRpdGlvbiB3 aXRoDQo+ID4+Pj4+PiB0aGlzIGFwcHJvYWNoLi4uDQo+ID4+Pj4NCj4gPj4+PiBDb3VsZCB5b3Ug dHJ5IHRvIGRlc2NyaWJlIHRoZSBzcGVjaWZpYyBzY2VuYXJpbyBvZiBsb29waG9sZSA/DQo+ID4+ Pg0KPiA+Pj4gT2ssIGFzIEkgdW5kZXJzdGFuZCB0aGUgZXhpc3RpbmcgbWVjaGFuaXNtOg0KPiA+ Pj4NCj4gPj4+IFdoZW4gUE1EIHdhbnRzIHRvIHN0YXJ0IGEgcmVjb3ZlcnkgaXQgaGFzIHRvOg0K PiA+Pj4gwqAgLSBpbnZva2UNCj4gPj4+IHJ0ZV9ldGhfZGV2X2NhbGxiYWNrX3Byb2Nlc3MoUlRF X0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyk7DQo+ID4+PiDCoMKgwqAgVGhhdCBzdXBwb3NlZCB0 byBjYWxsIHVzZXIgcHJvdmlkZWQgY2FsbGJhY2suIEFmdGVyIGNhbGxiYWNrIGlzDQo+ID4+PiBm aW5pc2hlZCBQTUQgYXNzdW1lcw0KPiA+Pj4gwqDCoMKgIHRoYXQgdXNlciBpcyBhd2FyZSB0aGF0 IHJlY292ZXJ5IGlzIGFib3V0IHRvIHN0YXJ0IGFuZCBzaG91bGQNCj4gPj4+IG1ha2Ugc29tZSBw cmVjYXV0aW9ucy4NCj4gPj4+IC0gd2hlbiByZWNvdmVyeSBpcyBmaW5pc2hlZCBpdCBpbnZva2Vz IGFub3RoZXIgY2FsbGJhY2s6DQo+ID4+PiDCoMKgIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfKFNV Q0NFU1MvRkFJTEVEKS4gQWZ0ZXIgdGhhdCB1c2VyIGVpdGhlcg0KPiA+Pj4gY2FuIGNvbnRpbnVl IHRvDQo+ID4+PiDCoMKgIHVzZSBwb3J0IG9yIGhhdmUgdG8gdHJlYXQgaXMgYXMgZmF1bHR5Lg0K PiA+Pj4NCj4gPj4+IFRoZSBpZGVhIGlzIG9rIGluIHByaW5jaXBsZSwgYnV0IHRoZXJlIGlzIGEg cHJvYmxlbS4NCj4gPj4+DQo+ID4+PiBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaDoNCj4gPj4+IMKg IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiogUG9ydCByZWNvdmVyaW5nIGZyb20gYSBoYXJkd2FyZSBv ciBmaXJtd2FyZSBlcnJvci4NCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqIElmIFBNRCBzdXBw b3J0cyBwcm9hY3RpdmUgZXJyb3IgcmVjb3ZlcnksDQo+ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg KiBpdCBzaG91bGQgdHJpZ2dlciB0aGlzIGV2ZW50IHRvIG5vdGlmeSBhcHBsaWNhdGlvbg0KPiA+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogdGhhdCBpdCBkZXRlY3RlZCBhbiBlcnJvciBhbmQgdGhl IHJlY292ZXJ5IGlzIGJlaW5nIHN0YXJ0ZWQuDQo+ID4+Pg0KPiA+Pj4gPDw8ICEhISEhDQo+ID4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBs aWNhdGlvbiBzaG91bGQgbm90DQo+ID4+PiBpbnZva2UgYW55IGNvbnRyb2wgcGF0aCBBUEkNCj4g Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqIChzdWNoIGFzIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZS9y dGVfZXRoX2Rldl9zdG9wLi4uKQ0KPiA+Pj4gdW50aWwgcmVjZWl2aW5nDQo+ID4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgKiBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1Mgb3INCj4gPj4+IFJU RV9FVEhfRVZFTlRfUkVDT1ZFUllfRkFJTEVEIGV2ZW50Lg0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICogVGhlIFBNRCB3aWxsIHNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15DQo+ ID4+PiBmdW5jdGlvbnMsDQo+ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgcmUtc2V0IHRo ZSBkYXRhIHBhdGggcG9pbnRlcnMgdG8gbm9uLWR1bW15IGZ1bmN0aW9ucw0KPiA+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgICogYmVmb3JlIHJlcG9ydGluZyBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NV Q0NFU1MgZXZlbnQuDQo+ID4+PiA8PDwgISEhISENCj4gPj4+DQo+ID4+PiBUaGF0IHBhcnQgaXMg anVzdCB3cm9uZyBJIGJlbGlldmUuDQo+ID4+PiBJdCBzaG91bGQgYmU6DQo+ID4+PiBVcG9uIHJl Y2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnkN Cj4gPj4+ICpib3RoIGNvbnRyb2wgYW5kIGRhdGEtcGF0aCogQVBJIHVudGlsIHJlY2VpdmluZw0K PiA+Pj4gUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9TVUNDRVNTIG9yIFJURV9FVEhfRVZFTlRfUkVD T1ZFUllfRkFJTEVEDQo+ID4+PiBldmVudC4NCj4gPj4+IFJlc2V0dGluZyBkYXRhIHBhdGggcG9p bnRlcnMgdG8gZHVtbXkgZnVuY3Rpb25zIGJ5IFBNRCAqYmVmb3JlKg0KPiA+Pj4gaW52b2tpbmcg cnRlX2V0aF9kZXZfY2FsbGJhY2tfcHJvY2VzcyhSVEVfRVRIX0VWRU5UX0VSUl9SRUNPVkVSSU5H KTsNCj4gPj4+IGludHJvZHVjZXMgYSByYWNlLWNvbmRpdGlvbiB3aXRoIGRhdGEtcGF0aCB0aHJl YWRzLCBhcyBzdWNoIHRocmVhZA0KPiA+Pj4gY291bGQgYWxyZWFkeSBiZSBpbnNpZGUgUlgvVFgg ZnVuY3Rpb24gb3IgY2FuIGFscmVhZHkgcmVhZCBSWC9UWA0KPiA+Pj4gZnVuY3Rpb24vZGF0YSBw b2ludGVycyBhbmQgYmUgYWJvdXQgdG8gdXNlIHRoZW0uDQo+ID4+DQo+ID4+IEN1cnJlbnQgcHJh Y3RpY2VzOiB0aGUgUE1EcyBhbHJlYWR5IGFkZCBzb21lIGRlbGF5IGFmdGVyIHNldCBSeC9UeA0K PiA+PiBjYWxsYmFjayB0byBkdW1teSwgYW5kIHBsdXMgdGhlIERQREsgd29ya2VyIHRocmVhZCBp cyBidXN5cG9sbGluZywNCj4gPj4gdGhlIHByb2JhYmlsaXR5IG9mIG9jY3VyZW5jZSBpbiByZWFs aXR5IGlzIHplcm8uIEJ1dCBpbiB0aGVvcmV0aWNhbGx5DQo+ID4+IGV4aXN0IHRoZSBhYm92ZSBy YWNlLWNvbmRpdGlvbi4NCj4gPg0KPiA+DQo+ID4gQWRkaW5nIGRlbGF5IG1pZ2h0IG1ha2UgYSBw cm9ibGVtIGEgYml0IGxlc3MgcmVwcm9kdWNpYmxlLCBidXQgaXQNCj4gPiBkb2Vzbid0IGZpeCBp dC4NCj4gPiBUaGUgYnVnIGlzIHN0aWxsIHRoZXJlLg0KPiA+DQo+ID4NCj4gPj4NCj4gPj4+IEFu ZCByaWdodCBub3cgcnRlX2V0aGRldiBsYXllciBkb2Vzbid0IHByb3ZpZGUgYW55IG1lY2hhbmlz bSB0bw0KPiA+Pj4gY2hlY2sgaXQgb3Igd2FpdCB3aGVuIHRoZXknbGwgZmluaXNoLCBldGMuDQo+ ID4+DQo+ID4+IFllcw0KPiA+Pg0KPiA+Pj4NCj4gPj4+IFNvLCBwcm9iYWJseSB0aGUgc2ltcGxl c3Qgd2F5IHRvIGZpeCBpdCB3aXRoIGV4aXN0aW5nIERQREsgZGVzaWduOg0KPiA+Pj4gLSB1c2Vy IGxldmVsIGNhbGxiYWNrwqAgUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyBzaG91bGQgcmV0 dXJuDQo+ID4+PiBvbmx5IGFmdGVyIGl0IGVuc3VyZXMgdGhhdCAqYWxsKg0KPiA+Pj4gwqDCoCBh cHBsaWNhdGlvbiB0aHJlYWRzIChhbmQgcHJvY2Vzc2VzKSBzdG9wcGVkIHVzaW5nIGVpdGhlciBj b250cm9sDQo+ID4+PiBvciBkYXRhLXBhdGggZnVuY3Rpb25zIGZvciB0aGF0IHBvcnQNCj4gPj4N Cj4gPj4gQWdyZWUNCj4gPj4NCj4gPj4+IMKgwqAgKHllcyBpdCBtZWFucyB0aGF0IGFwcGxpY2F0 aW9uIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgZmVhdHVyZSBoYXMNCj4gPj4+IHRvIHByb3ZpZGUg aXRzIG93biBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtDQo+ID4+PiDCoMKgIGFyb3VuZCBkYXRh LXBhdGggZnVuY3Rpb25zIChSWC9UWCkgdGhhdCBpdCBpcyBnb2luZyB0byB1c2UpLg0KPiA+Pj4g LSBhZnRlciB0aGF0IFBNRCBpcyBzYWZlIHRvIHJlc2V0IHJ0ZV9ldGhfZnBfb3BzW10gdmFsdWVz IHRvIGR1bW15IG9uZXMuDQo+ID4+Pg0KPiA+Pj4gQW5kIG1lc3NhZ2UgdG8gYWxsIFBNRCBkZXZl bG9wZXJzOg0KPiA+Pj4gKnBsZWFzZSBzdG9wIHVwZGF0aW5nIHJ0ZV9ldGhfZnBfb3BzW10gb24g eW91ciBvd24qLg0KPiA+Pj4gVGhhdCdzIGEgYmFkIHByYWN0aWNlIGFuZCBpdCBpcyBub3Qgc3Vw cG9zZWQgdG8gZG8gdGhpbmdzIHRoYXQgd2F5Lg0KPiA+Pj4gVGhlcmUgaXMgYSBzcGVjaWFsIEFQ SSBwcm92aWRlZCBmb3IgdGhlc2UgcHVycG9zZXM6DQo+ID4+PiBldGhfZGV2X2ZwX29wc19yZXNl dCgpLCBldGhfZGV2X2ZwX29wc19zZXR1cCgpLCBzbyB1c2UgaXQuDQo+ID4+DQo+ID4+IFRoaXMg dHdvIGZ1bmN0aW9uIGlzIGluIHByaXZhdGUuaCwgc28gaXQgc2hvdWxkIGJlIGV4cG9zZSB0byBw dWJsaWMNCj4gPj4gaGVhZGVyIGZpbGUuDQo+ID4NCj4gPiBZb3UgbWVhbiB3ZSBuZWVkIHRvIG1v dmUgdGhlc2UgZnVuY3Rpb25zIGRlY2xhcmF0aW9ucyBpbnRvIGV0aGRldl9kcml2ZXIuaD8NCj4g PiBJZiBzbywgdGhlbiB5ZXMsIEkgdGhpbmsgd2UgcHJvYmFibHkgZG8uDQo+ID4NCj4gPg0KPiAN Cj4gDQo+IFdoYXQgYWJvdXQgbWFraW5nIHNsaWdodGx5IGRpZmZlcmVudCB2ZXJzaW9uIGF2YWls YWJsZSB0byBkcml2ZXJzLCB3aGljaCBvbmx5IHVwZGF0ZXMNCj4gZnVuY3Rpb24gcG9pbnRlcnMs IGJ1dCBub3QgICdmcG8tPnJ4cScgLyAnZnBvLT50eHEnLg0KPiANCj4gVGhpcyB3YXkgZHJpdmVy IGNhbiBzd2l0Y2ggdG8gYmV0d2VlbiBkdW1teSBhbmQgcmVhbCBidXJzdCBmdW5jdGlvbiB3aXRo b3V0IHdvcnJ5aW5nIFJ4L1R4DQo+IHF1ZXVlIHZhbGlkaXR5Lg0KPiANCj4gQENoZW5nd2VuLCBA UnVpZmVuZywgY2FuIHRoaXMgc29sdmUgdGhlIGlzc3VlIGZvciByZWxheGVkIG1lbW9yeSBvcmRl cmluZyBzeXN0ZW1zPw0KDQpZZXMsIHVwZGF0aW5nIG9ubHkgZnVuY3Rpb24gcG9pbnRlcnMgcmVt b3ZlcyB0aGUgc3luY2hyb25pemF0aW9uIHJlcXVpcmVtZW50IGJldHdlZW4gZnVuY3Rpb24NCnBv aW50ZXIgYW5kIHFkYXRhLiANCg0KPiANCj4gDQo+IA0KPiA+Pj4NCj4gPj4+IEJUVyzCoCBJIGRv bid0IHNlZSBhbnkgaW1wbGVtZW50YXRpb24gZm9yDQo+ID4+PiBSVEVfRVRIX0VWRU5UX0VSUl9S RUNPVkVSSU5HIHdpdGhpbiBlaXRoZXIgdGVzdHBtZCBvciBhbnkgb3RoZXINCj4gPj4+IGV4YW1w bGUgYXBwcy4NCj4gPj4+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQo+ID4+DQo+ID4+IEN1cnJl bnRseSBpdCBqdXN0IHByb21vdGUgdGhlIGV2ZW50Lg0KPiA+DQo+ID4NCj4gPiBPaywgY2FuIEkg c3VnZ2VzdCB0aGVuIHRvIGFkZCBhIHByb3BlciB1c2FnZSBmb3IgaW50byBpbiB0ZXN0cG1kPw0K PiA+IEl0IGxvb2tzIHJlYWxseSBzdHJhbmdlIHRoYXQgd2UgYWRkIG5ldyBmZWF0dXJlIGludG8g ZXRoZGV2IChhbmQgMg0KPiA+IFBNRHMpLCBidXQgZGlkbid0IHByb3ZpZGUgYW55IHdheSBmb3Ig dXNlcnMgdG8gdGVzdCBpdC4NCj4gPg0KPiA+Pg0KPiA+Pj4gSWYgbm90LCB0aGVuIHByb2JhYmx5 IGl0IGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCAtIGxldCdzDQo+ID4+PiBpbmNvcnBv cmF0ZSBpdCBpbnNpZGUgdGVzdHBtZCAobmV3IGZvcndhcmRpbmcgZW5naW5lIHByb2JhYmx5KSBz bw0KPiA+Pj4gZXZlcnlvbmUgY2FuIHRlc3QvdHJ5IGl0Lg0KPiA+Pj4NCj4gPj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAqIEl0IG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBzZW5kIG9y IHJlY2VpdmUgYW55DQo+ID4+PiBwYWNrZXRzDQo+ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBk dXJpbmcgdGhpcyBwZXJpb2QuDQo+ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiBAbm90ZSBCZWZv cmUgdGhlIFBNRCByZXBvcnRzIHRoZSByZWNvdmVyeSByZXN1bHQsDQo+ID4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgKiB0aGUgUE1EIG1heSByZXBvcnQgdGhlIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09W RVJJTkcNCj4gPj4+IGV2ZW50IGFnYWluLA0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogYmVj YXVzZSBhIGxhcmdlciBlcnJvciBtYXkgb2NjdXIgZHVyaW5nIHRoZSByZWNvdmVyeS4NCj4gPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoCBSVEVfRVRIX0VW RU5UX0VSUl9SRUNPVkVSSU5HLA0KPiA+Pj4NCj4gPj4+Pj4+IEl0IHByb2JhYmx5IG5lZWRzIHRv IGJlIGVpdGhlciBkZXByZWNhdGVkIG9yIHJld29ya2VkLg0KPiA+Pj4+PiBMb29raW5nIGF0IHRo ZSBjb21taXQsIGl0IGRvZXMgbm90IHNheSBhbnl0aGluZyBhYm91dCB0aGUgZGF0YQ0KPiA+Pj4+ PiBwbGFuZSBmdW5jdGlvbnMgd2hpY2ggcHJvYmFibHkgbWVhbnMsIHRoZSBlcnJvciByZWNvdmVy eSBpcw0KPiA+Pj4+IGhhcHBlbmluZyB3aXRoaW4gdGhlIGRhdGEgcGxhbmUgdGhyZWFkLiBXaGF0 IGhhcHBlbnMgdG8gb3RoZXIgZGF0YQ0KPiA+Pj4+IHBsYW5lIHRocmVhZHMgdGhhdCBhcmUgcG9s bGluZyB0aGUgc2FtZSBwb3J0IG9uIHdoaWNoIHRoZSBlcnJvcg0KPiA+Pj4+IHJlY292ZXJ5IGlz IGhhcHBlbmluZz8NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBjb21taXQgbG9nIHNheXM6ICJ0aGUgUE1E IHNldHMgdGhlIGRhdGEgcGF0aCBwb2ludGVycyB0byBkdW1teQ0KPiA+Pj4+IGZ1bmN0aW9ucyIu DQo+ID4+Pj4NCj4gPj4+PiBTbyB0aGUgZGF0YSBwbGFuZSB0aHJlYWRzIHdpbGwgcmVjZWl2ZSBu b24tcGFja2V0IGFuZCBzZW5kIHplcm8NCj4gPj4+PiB3aXRoIHBvcnQgd2hpY2ggaW4gZXJyb3Ig cmVjb3ZlcnkuDQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gQWxzbywgdGhlIGNvbW1pdCBsb2cg c2F5cyB0aGF0IHdoaWxlIHRoZSBlcnJvciByZWNvdmVyeSBpcyB1bmRlcg0KPiA+Pj4+PiBwcm9n cmVzcywgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgY2FsbCBhbnkgY29udHJvbCBwbGFuZSBB UElzLg0KPiA+Pj4+PiBEb2VzDQo+ID4+Pj4gdGhhdCBtZWFuLCB0aGUgYXBwbGljYXRpb24gaGFz IHRvIGNoZWNrIGZvciBlcnJvciBjb25kaXRpb24gZXZlcnkNCj4gPj4+PiB0aW1lIGl0IGNhbGxz IGEgY29udHJvbCBwbGFuZSBBUEk/DQo+ID4+Pj4NCj4gPj4+PiBJZiBhcHBsaWNhdGlvbiBoYXMg bm90IHJlZ2lzdGVyIGV2ZW50DQo+ID4+Pj4gKFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcp IGNhbGxiYWNrLCBpdCBjb3VsZCBjYWxscyBjb250cm9sDQo+ID4+Pj4gcGxhbmUgQVBJLCBidXQg aXQgd2lsbCByZXR1cm4gZmFpbGVkLg0KPiA+Pj4+IElmIGFwcGxpY2F0aW9uIGhhcyByZWdpc3Rl ciBhYm92ZSBjYWxsYmFjaywgaXQgY2FuIHdhaXQgZm9yDQo+ID4+Pj4gcmVjb3ZlcnkgcmVzdWx0 LCBvciBkaXJlY3QgY2FsbCB3aXRob3V0IHdhaXQgYnV0IHRoaXMgd2lsbCByZXR1cm4gZmFpbGVk Lg0KPiA+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZSBjb21taXQgbWVzc2FnZSBhbHNvIHNheXMg dGhhdCAiUE1EIG1ha2VzIHN1cmUgdGhlIGNvbnRyb2wgcGF0aA0KPiA+Pj4+PiBvcGVyYXRpb25z IGZhaWxlZCB3aXRoIHJldGNvZGUgLUVCVVNZIi4gSXQgZG9lcyBub3Qgc2F5IGhvdyBpdA0KPiA+ Pj4+IGRvZXMgdGhpcy4gQnV0LCBhbnkgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBQTUQgdGhyZWFk IHRvIGNvbnRyb2wNCj4gPj4+PiBwbGFuZSB0aHJlYWQgbWF5IGludHJvZHVjZSByYWNlIGNvbmRp dGlvbnMgaWYgbm90IGRvbmUgY29ycmVjdGx5Lg0KPiA+Pj4+DQo+ID4+Pj4gRmlyc3QgdGhlcmUg YXJlIG5vIFBNRCB0aHJlYWQsIGRvIHlvdSBtZWFuIGVhbC1pbnRyLXRocmVhZCA/DQo+ID4+Pj4N Cj4gPj4+PiBBcyBmb3IgdGhpcyBxdWVzdGlvbiwgeW91IGNhbiBzZWUgUE1EcyB3aGljaCBhbHJl YWR5IGltcGxlbWVudCBpdCwNCj4gPj4+PiB0aGV5IGJvdGggcHJvdmlkZXMgbXV0dWFsIGV4Y2x1 c2lvbiBwcm90ZWN0aW9uLg0KPiA+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFdvdWxkIHNvbWV0aGluZyBsaWtlIHRoaXMgd29yayBiZXR0 ZXI/DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IE5vdGU6IHRoZXJlIGlzIGFub3RoZXIgYnVnIGlu IGN1cnJlbnQgY29kZS4gVGhlIGNoZWNrIGZvciBsaW5rDQo+ID4+Pj4+Pj4+IHN0YXRlIGludGVy cnVwdCBhbmQgbGlua19vcHMgY291bGQgcmV0dXJuIC1FTk9UU1VQIGFuZCBsZWF2ZQ0KPiA+Pj4+ Pj4+PiBkZXZpY2UgaW4NCj4gPj4+Pj4+IGluZGV0ZXJtaW5hdGUgc3RhdGUuDQo+ID4+Pj4+Pj4+ IFRoZSBjaGVjayBzaG91bGQgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyBQTUQuDQo+ID4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9l dGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+Pj4+Pj4+IGluZGV4DQo+ID4+Pj4+Pj4+IDAyNjZjYzgy YWNiNi4uZDZjMTYzZWQ4NWU3IDEwMDY0NA0KPiA+Pj4+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L3J0 ZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+PiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ Pj4+Pj4+PiBAQCAtMTU4Miw2ICsxNTgyLDE0IEBAIHJ0ZV9ldGhfZGV2X3N0YXJ0KHVpbnQxNl90 IHBvcnRfaWQpDQo+ID4+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4gPj4+ Pj4+Pj4gwqDCoMKgwqDCoCB9DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICvCoMKgwqAgaWYgKGRl di0+ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyA9PSAwICYmDQo+ID4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBkZXYtPmRldl9vcHMtPmxpbmtfdXBkYXRlID09IE5VTEwpIHsNCj4gPj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIFJURV9FVEhERVZfTE9HKElORk8sDQo+ID4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkRldmljZSB3aXRoIHBvcnRfaWQ9JSJQ Ukl1MTYiIGxpbmsgdXBkYXRlDQo+ID4+Pj4+Pj4+ICtub3QNCj4gPj4+Pj4+IHN1cHBvcnRlZFxu IiwNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0 X2lkKTsNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9UU1VQ Ow0KPiA+Pj4+Pj4+PiArwqDCoMKgIH0NCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiDCoMKgwqDC oMKgIHJldCA9IHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4+ Pj4+Pj4+IMKgwqDCoMKgwqAgaWYgKHJldCAhPSAwKQ0KPiA+Pj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHJldDsNCj4gPj4+Pj4+Pj4gQEAgLTE1OTEsOSArMTU5OSw3IEBAIHJ0ZV9l dGhfZGV2X3N0YXJ0KHVpbnQxNl90IHBvcnRfaWQpDQo+ID4+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBldGhfZGV2X21hY19yZXN0b3JlKGRldiwgJmRldl9pbmZvKTsNCj4gPj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4gwqDCoMKgwqDCoCBkaWFnID0gKCpkZXYtPmRldl9vcHMtPmRldl9zdGFydCkoZGV2 KTsNCj4gPj4+Pj4+Pj4gLcKgwqDCoCBpZiAoZGlhZyA9PSAwKQ0KPiA+Pj4+Pj4+PiAtwqDCoMKg wqDCoMKgwqAgZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCA9IDE7DQo+ID4+Pj4+Pj4+IC3CoMKgwqAg ZWxzZQ0KPiA+Pj4+Pj4+PiArwqDCoMKgIGlmIChkaWFnICE9IDApDQo+ID4+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gZXRoX2Vycihwb3J0X2lkLCBkaWFnKTsNCj4gPj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4gwqDCoMKgwqDCoCByZXQgPSBldGhfZGV2X2NvbmZpZ19yZXN0b3JlKGRldiwg JmRldl9pbmZvLCBwb3J0X2lkKTsgQEANCj4gPj4+Pj4+Pj4gLTE2MTEsMTYNCj4gPj4+Pj4+Pj4g KzE2MTcsMTggQEAgcnRlX2V0aF9kZXZfc3RhcnQodWludDE2X3QgcG9ydF9pZCkNCj4gPj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ID4+Pj4+Pj4+IMKgwqDCoMKgwqAg fQ0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiAtwqDCoMKgIGlmIChkZXYtPmRhdGEtPmRldl9jb25m LmludHJfY29uZi5sc2MgPT0gMCkgew0KPiA+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKCpk ZXYtPmRldl9vcHMtPmxpbmtfdXBkYXRlID09IE5VTEwpDQo+ID4+Pj4+Pj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAtRU5PVFNVUDsNCj4gPj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKg ICgqZGV2LT5kZXZfb3BzLT5saW5rX3VwZGF0ZSkoZGV2LCAwKTsNCj4gPj4+Pj4+Pj4gLcKgwqDC oCB9DQo+ID4+Pj4+Pj4+IC0NCj4gPj4+Pj4+Pj4gwqDCoMKgwqDCoCAvKiBleHBvc2Ugc2VsZWN0 aW9uIG9mIFBNRCBmYXN0LXBhdGggZnVuY3Rpb25zICovDQo+ID4+Pj4+Pj4+IMKgwqDCoMKgwqAg ZXRoX2Rldl9mcF9vcHNfc2V0dXAocnRlX2V0aF9mcF9vcHMgKyBwb3J0X2lkLCBkZXYpOw0KPiA+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiArwqDCoMKgIC8qIGVuc3VyZSBzdGF0ZSBpcyBzZXQgYmVmb3Jl IG1hcmtpbmcgZGV2aWNlIHJlYWR5ICovDQo+ID4+Pj4+Pj4+ICvCoMKgwqAgcnRlX3NtcF93bWIo KTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiDCoMKgwqDCoMKgIHJ0ZV9ldGhkZXZfdHJhY2Vf c3RhcnQocG9ydF9pZCk7DQo+ID4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCAvKiBVcGRh dGUgY3VycmVudCBsaW5rIHN0YXRlICovDQo+ID4+Pj4+Pj4+ICvCoMKgwqAgaWYgKGRldi0+ZGF0 YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyA9PSAwKQ0KPiA+Pj4+Pj4+PiArwqDCoMKgwqDCoMKg wqAgKCpkZXYtPmRldl9vcHMtPmxpbmtfdXBkYXRlKShkZXYsIDApOw0KPiA+Pj4+Pj4+PiArDQo+ ID4+Pj4+Pj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+ID4+Pj4+Pj4+IMKgIH0NCj4gPj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pg0KPiA+DQoN Cg==