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 D550A42C91; Mon, 12 Jun 2023 05:06:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9C74042DA4; Mon, 12 Jun 2023 05:06:06 +0200 (CEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2086.outbound.protection.outlook.com [40.107.105.86]) by mails.dpdk.org (Postfix) with ESMTP id 1AFC442D8A for ; Mon, 12 Jun 2023 05:06:05 +0200 (CEST) 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=PEs3Vtf0p5LB7jKOsHsugYFcxOnsF4XBcfAoLNycI6E=; b=kfx7mWELx0cx+gr4KN3joT0b9lAf3sZj6LPHeIHKjGXi9pdqcPW8jDavBA6XxQqI7fnFSsroiwVOINzah5Ik0OWzw24W/COXSHBHvJzQpqbcxDFx1/zLRlteLFkSJPOlzZci8gK9SZJ3vsmPUBcri8ID0a6fjk+eRb3Hq4aQ0ro= Received: from DU2PR04CA0322.eurprd04.prod.outlook.com (2603:10a6:10:2b5::27) by AM9PR08MB6179.eurprd08.prod.outlook.com (2603:10a6:20b:2da::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Mon, 12 Jun 2023 03:05:58 +0000 Received: from DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b5:cafe::3e) by DU2PR04CA0322.outlook.office365.com (2603:10a6:10:2b5::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.33 via Frontend Transport; Mon, 12 Jun 2023 03:05:58 +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 DBAEUR03FT021.mail.protection.outlook.com (100.127.142.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.21 via Frontend Transport; Mon, 12 Jun 2023 03:05:58 +0000 Received: ("Tessian outbound 3570909035da:v136"); Mon, 12 Jun 2023 03:05:58 +0000 X-CR-MTA-TID: 64aa7808 Received: from f4b9b7455b3c.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E8670F4B-76CF-4B2F-A7F9-74B0BC05776E.1; Mon, 12 Jun 2023 03:05:47 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f4b9b7455b3c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 12 Jun 2023 03:05:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oT0rLAfeL6Li1ZKa1Qw93n7r3E7GGBmlIID63JewZ2nzthvwwgTfZR7nZKL9hD4a2jjY/CPQKgGqJ6VbgVSu7bS7h3SpgaF8WqyiYodDtiXSFe47C/UZFBbINnk18SYXHfi89V+DzEHOvXr2OWsPPtTv+hZ/Bn7AZSWRQv9NHhPSaY96Vqdy/WDyZ91zHH5vu+RIqhSs5jDx4QU2u14/kJrjWKmadOalFeJY7ZlUyCUsNsOH1KiREDTfooADeuB2RcIK0kuhUOfJjR6I9BYn9O7WSKZahFgULuWfDBsYdbld4mqJP9arPP++asa+Yte4ViWsxJnZTjb9x/Lm5y4Z1g== 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=PEs3Vtf0p5LB7jKOsHsugYFcxOnsF4XBcfAoLNycI6E=; b=DT9wj7h7wnWmMJjGZMKiTH1O1/WrO9GiyrVd5cNsRWPWO9iNJiFbMR8Ttj1lrAj+Wm5mOIuLPaLD4wRFW4k8N2FEHKiUpkmWWycBxtdUMk8EjVmdt7TAB/NRlnPhUpLshtDp3IyLvkOPMHJl+0P4a9v75sZjgpNrSjLoN7xKh3JETuOifoenzIK4k/w4u58fw1k4RVQ5b0t15iiWduWZwooMS/jiAkbQMReSpydZ38GWGURgG0dqxK3+LbTnhmy41atnH4vQyCKshvJb2LxHK182yLG9vmQOMV5+QKesPJp+8PwuVJoA68TqYh/UeoXmJFzftPnQa15Q+p2BaAoG1A== 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=PEs3Vtf0p5LB7jKOsHsugYFcxOnsF4XBcfAoLNycI6E=; b=kfx7mWELx0cx+gr4KN3joT0b9lAf3sZj6LPHeIHKjGXi9pdqcPW8jDavBA6XxQqI7fnFSsroiwVOINzah5Ik0OWzw24W/COXSHBHvJzQpqbcxDFx1/zLRlteLFkSJPOlzZci8gK9SZJ3vsmPUBcri8ID0a6fjk+eRb3Hq4aQ0ro= Received: from AS8PR08MB7718.eurprd08.prod.outlook.com (2603:10a6:20b:50a::22) by PA4PR08MB6032.eurprd08.prod.outlook.com (2603:10a6:102:e4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.38; Mon, 12 Jun 2023 03:05:45 +0000 Received: from AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::7878:ff5f:b10:d4a6]) by AS8PR08MB7718.eurprd08.prod.outlook.com ([fe80::7878:ff5f:b10:d4a6%5]) with mapi id 15.20.6455.037; Mon, 12 Jun 2023 03:05:45 +0000 From: Feifei Wang To: Konstantin Ananyev , =?utf-8?B?0JrQvtC90YHRgtCw0L3RgtC40L0g0JDQvdCw0L3RjNC10LI=?= , Yuying Zhang , Beilei Xing CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , Ruifeng Wang , nd , nd , nd Subject: RE: [PATCH v6 2/4] net/i40e: implement mbufs recycle mode Thread-Topic: [PATCH v6 2/4] net/i40e: implement mbufs recycle mode Thread-Index: AQHZju26BCWN8yrWhUufQwrmL+nGkq98PjcAgADrXGCAAEa4AIAACYGggAAJrgCACRKWQA== Date: Mon, 12 Jun 2023 03:05:45 +0000 Message-ID: References: <20211224164613.32569-1-feifei.wang2@arm.com> <20230525094541.331338-1-feifei.wang2@arm.com> <20230525094541.331338-3-feifei.wang2@arm.com> <1580121685969644@mail.yandex.ru> <83b9487385e04212847f7deea32efd82@huawei.com> In-Reply-To: <83b9487385e04212847f7deea32efd82@huawei.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C0DAFB3707C0974B9C04C37DD246CEED.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: AS8PR08MB7718:EE_|PA4PR08MB6032:EE_|DBAEUR03FT021:EE_|AM9PR08MB6179:EE_ X-MS-Office365-Filtering-Correlation-Id: 3675f7ea-096d-4d8e-82a3-08db6af1f22f 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: UINW/y2tfkmULO6MsDbXr//2ho71x2d7bNQ1uYQ5E+UNFh6oQgQ8hBo0gLvsJX5RyYNwKCm5a+ajJc2U/QoAS4jeLhQawGcsXqkid6dEAhY5w7Dxy5rYuQ3zNnGTzsgChNVLbYzQZMH9wSp3gory6UzmNeMhwiNyS6ItG9A+EBm9k6KYQo7xiQrFaHj5EbZJNvTWDrxu4QaTZdL1Ty7NpYfGnK72pXnRTid3B5uT+Go68k8gcEAMEKxq5aUyC4GacLQq7sazt2WkRw9D65BsL5TogGjFw8rII11z81G+gsgk+og1NxESBApkmmXCfC/c/u8Arq1JCD40yHHcT+q9w8fUmfoA7EAIruuTN9faPUxwylP1pbHNgWpLL37q8XZq29eipuIhQ+BCmTprpZk0fhUrEV3wnNHzdYrqk7yrh0WoNAU/5gxW9enVEO93KF0RKieKniasEQDMJgckOS68ix/Zuw7LieFXnipJ6qe1sQn8M9O5+6nmD8GNQZ4aw5mQ5du/f8f+II41KWvEjvgUprz846/xvBuL7dEp9qvUG9hxJcptUrfpX7O1qLsarVXO+pSqOfgy+luFyYEohixr+qxVdReiMUxcWCLmgTB3Wr+UpYsS6ZolRgloWrL3s+oU X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7718.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(376002)(346002)(366004)(396003)(39860400002)(451199021)(76116006)(55016003)(71200400001)(7696005)(110136005)(54906003)(478600001)(122000001)(38100700002)(66446008)(66556008)(83380400001)(64756008)(41300700001)(8676002)(4326008)(66476007)(316002)(66946007)(8936002)(186003)(26005)(9686003)(53546011)(6506007)(33656002)(52536014)(86362001)(5660300002)(2906002)(38070700005)(30864003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6032 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: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f699488a-8d56-4d71-3ccf-08db6af1ea3f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3J1MwPs4f0ua496Pj9l9WTzJ3duPbqDHQFeSFU6H/iExzL+OMPY5vzksTyCOUBcdoaM02EySB8zUrs9zHzzUU7ZnXA7Hpfy010/enz6cqjaaffK3iJuFTb3hMe8J3fwcOEycEiADvpgFXalWBM+WQeQXwfiN/JJE7Afpx2nU/SiYGZv9dS1EasgW5tR5VkcMy9cMPcKoxGAST2LSxNpRreKsgOcFiAkxNwHuM6ukeOtnYruAZr8eO+G0owLs+zruoKYjrN/XlLJJR/Fd8cGZM41anB+wTrfTFhVWidGirItvwMGt+RRULogcACKMmAeQKhCongG7vHfLSbkUUcP5uAC2qnjKCw5z+woeegmxCGnGZt3GU95EyPflLXt6ge2eK2M6QsXBHx+Ktc8CwStDWPz2sLBE9V/EVvkpvpj5O3IwcIVhJ0yJQNpc5/LtfX812UzkA4foxK7ccG/euHkDr6szVRz+ByixQCNXLK/WIl6vAptDEhf0iKQ7/NzR85QJgB1DMrizAPFRPr5s+tWioJOSoTHGkaE7kPjZKrENGxOC/kvm52okE9dR7aUyJHHeDf6TsZKghuX/C4KRnrvcCWP0OIyOArrj74m1ukh/eKifYzGIkTKiY5Xm7Vk5lK1DZeGHhooHyyJ/16P9EIGYD/0LN54AVdU2mSKmJu1HVEu7/ANWHEreK1OcVAsiUMeaGCZ9FTq3yb09t45lKx1Hpuh5PqQCQLEPIWvz9Jl3UFLq978Lbg06IaJKB5Mv+fPm605QgDqy5X5S2/onv2XyOA== 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:(13230028)(4636009)(39860400002)(376002)(136003)(346002)(396003)(451199021)(36840700001)(40470700004)(46966006)(54906003)(5660300002)(110136005)(4326008)(8936002)(8676002)(52536014)(41300700001)(316002)(30864003)(186003)(2906002)(478600001)(70206006)(70586007)(7696005)(40460700003)(53546011)(9686003)(33656002)(82740400003)(356005)(81166007)(6506007)(40480700001)(36860700001)(26005)(55016003)(83380400001)(336012)(47076005)(86362001)(82310400005)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2023 03:05:58.5919 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3675f7ea-096d-4d8e-82a3-08db6af1f22f 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: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6179 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS29uc3RhbnRpbiBBbmFu eWV2IDxrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT4NCj4gU2VudDogVHVlc2RheSwgSnVu ZSA2LCAyMDIzIDQ6MjcgUE0NCj4gVG86IEZlaWZlaSBXYW5nIDxGZWlmZWkuV2FuZzJAYXJtLmNv bT47INCa0L7QvdGB0YLQsNC90YLQuNC9INCQ0L3QsNC90YzQtdCyDQo+IDxrb25zdGFudGluLnYu YW5hbnlldkB5YW5kZXgucnU+OyBZdXlpbmcgWmhhbmcNCj4gPHl1eWluZy56aGFuZ0BpbnRlbC5j b20+OyBCZWlsZWkgWGluZyA8YmVpbGVpLnhpbmdAaW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsu b3JnOyBuZCA8bmRAYXJtLmNvbT47IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+IDxIb25uYXBwYS5O YWdhcmFoYWxsaUBhcm0uY29tPjsgUnVpZmVuZyBXYW5nDQo+IDxSdWlmZW5nLldhbmdAYXJtLmNv bT47IG5kIDxuZEBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFU Q0ggdjYgMi80XSBuZXQvaTQwZTogaW1wbGVtZW50IG1idWZzIHJlY3ljbGUgbW9kZQ0KPiANCj4g DQo+IA0KPiA+ID4gPiBEZWZpbmUgc3BlY2lmaWMgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9y IGk0MGUgZHJpdmVyLg0KPiA+ID4gPiBDdXJyZW50bHksIG1idWZzIHJlY3ljbGUgbW9kZSBjYW4g c3VwcG9ydCAxMjhiaXQgdmVjdG9yIHBhdGggYW5kDQo+ID4gPiA+IGF2eDIgcGF0aC4gQW5kIGNh biBiZSBlbmFibGVkIGJvdGggaW4gZmFzdCBmcmVlIGFuZCBubyBmYXN0IGZyZWUgbW9kZS4NCj4g PiA+ID4NCj4gPiA+ID4gU3VnZ2VzdGVkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA+ID4g PiA8bWFpbHRvOmhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gPiA+IFNpZ25lZC1v ZmYtYnk6IEZlaWZlaSBXYW5nIDxtYWlsdG86ZmVpZmVpLndhbmcyQGFybS5jb20+DQo+ID4gPiA+ IFJldmlld2VkLWJ5OiBSdWlmZW5nIFdhbmcgPG1haWx0bzpydWlmZW5nLndhbmdAYXJtLmNvbT4N Cj4gPiA+ID4gUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ID4gPiA+IDxtYWls dG86aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+ICBk cml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMgfCAxICsNCj4gPiA+ID4gZHJpdmVycy9uZXQv aTQwZS9pNDBlX2V0aGRldi5oIHwgMiArDQo+ID4gPiA+IC4uLi9uZXQvaTQwZS9pNDBlX3JlY3lj bGVfbWJ1ZnNfdmVjX2NvbW1vbi5jIHwgMTQwDQo+ID4gPiArKysrKysrKysrKysrKysrKysNCj4g PiA+ID4gZHJpdmVycy9uZXQvaTQwZS9pNDBlX3J4dHguYyB8IDMyICsrKysNCj4gPiA+ID4gZHJp dmVycy9uZXQvaTQwZS9pNDBlX3J4dHguaCB8DQo+ID4gPiA+IDQgKyAgZHJpdmVycy9uZXQvaTQw ZS9tZXNvbi5idWlsZCB8IDIgKw0KPiA+ID4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0 aW9ucygrKSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGRyaXZlcnMvbmV0L2k0MGUvaTQw ZV9yZWN5Y2xlX21idWZzX3ZlY19jb21tb24uYw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jDQo+ID4gPiA+IGIvZHJpdmVycy9uZXQv aTQwZS9pNDBlX2V0aGRldi5jIGluZGV4IGY5ZDhmOTc5MWYuLmQ0ZWVjZDE2Y2YNCj4gPiA+ID4g MTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+ ID4gPiArKysgYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMNCj4gPiA+ID4gQEAgLTQ5 Niw2ICs0OTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzDQo+ID4gPiA+IGk0 MGVfZXRoX2Rldl9vcHMgPQ0KPiA+ID4gew0KPiA+ID4gPiAgICAgICAgICAuZmxvd19vcHNfZ2V0 ID0gaTQwZV9kZXZfZmxvd19vcHNfZ2V0LA0KPiA+ID4gPiAgICAgICAgICAucnhxX2luZm9fZ2V0 ID0gaTQwZV9yeHFfaW5mb19nZXQsDQo+ID4gPiA+ICAgICAgICAgIC50eHFfaW5mb19nZXQgPSBp NDBlX3R4cV9pbmZvX2dldCwNCj4gPiA+ID4gKyAucmVjeWNsZV9yeHFfaW5mb19nZXQgPSBpNDBl X3JlY3ljbGVfcnhxX2luZm9fZ2V0LA0KPiA+ID4gPiAgICAgICAgICAucnhfYnVyc3RfbW9kZV9n ZXQgPSBpNDBlX3J4X2J1cnN0X21vZGVfZ2V0LA0KPiA+ID4gPiAgICAgICAgICAudHhfYnVyc3Rf bW9kZV9nZXQgPSBpNDBlX3R4X2J1cnN0X21vZGVfZ2V0LA0KPiA+ID4gPiAgICAgICAgICAudGlt ZXN5bmNfZW5hYmxlID0gaTQwZV90aW1lc3luY19lbmFibGUsIGRpZmYgLS1naXQNCj4gPiA+ID4g YS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmggYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVf ZXRoZGV2LmgNCj4gPiA+ID4gaW5kZXggOWI4MDZkMTMwZS4uYjViMmQ2Y2YyYiAxMDA2NDQNCj4g PiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oDQo+ID4gPiA+ICsrKyBi L2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaA0KPiA+ID4gPiBAQCAtMTM1NSw2ICsxMzU1 LDggQEAgdm9pZCBpNDBlX3J4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiA+ID4g KmRldiwNCj4gPiA+IHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ID4gPiAgICAgICAgICBzdHJ1Y3Qg cnRlX2V0aF9yeHFfaW5mbyAqcWluZm8pOyAgdm9pZA0KPiA+ID4gPiBpNDBlX3R4cV9pbmZvX2dl dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gPiA+ICAg ICAgICAgIHN0cnVjdCBydGVfZXRoX3R4cV9pbmZvICpxaW5mbyk7DQo+ID4gPiA+ICt2b2lkIGk0 MGVfcmVjeWNsZV9yeHFfaW5mb19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90 DQo+ID4gPiA+ICtxdWV1ZV9pZCwgIHN0cnVjdCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm8gKnJl Y3ljbGVfcnhxX2luZm8pOw0KPiA+ID4gPiAgaW50IGk0MGVfcnhfYnVyc3RfbW9kZV9nZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90DQo+IHF1ZXVlX2lkLA0KPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9ldGhfYnVyc3RfbW9kZSAqbW9kZSk7 ICBpbnQNCj4gPiA+ID4gaTQwZV90eF9idXJzdF9tb2RlX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9pNDBlL2k0MGVfcmVjeWNsZV9tYnVmc192ZWNfY29tbW9uLmMNCj4gPiA+ID4gYi9kcml2ZXJz L25ldC9pNDBlL2k0MGVfcmVjeWNsZV9tYnVmc192ZWNfY29tbW9uLmMNCj4gPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDhkNzA4ZmQ3ZA0KPiA+ ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9y ZWN5Y2xlX21idWZzX3ZlY19jb21tb24uYw0KPiA+ID4gPiBAQCAtMCwwICsxLDE0MCBAQA0KPiA+ ID4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ID4gPiAr ICogQ29weXJpZ2h0IChjKSAyMDIzIEFybSBMaW1pdGVkLg0KPiA+ID4gPiArICovDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxldGhk ZXZfZHJpdmVyLmg+DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlICJiYXNlL2k0MGVfcHJv dG90eXBlLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAiYmFzZS9pNDBlX3R5cGUuaCINCj4gPiA+ID4g KyNpbmNsdWRlICJpNDBlX2V0aGRldi5oIg0KPiA+ID4gPiArI2luY2x1ZGUgImk0MGVfcnh0eC5o Ig0KPiA+ID4gPiArDQo+ID4gPiA+ICsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X Y2FzdC1xdWFsIg0KPiA+ID4gPiArDQo+ID4gPiA+ICt2b2lkDQo+ID4gPiA+ICtpNDBlX3JlY3lj bGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3ZlYyh2b2lkICpyeF9xdWV1ZSwgdWludDE2X3QNCj4g PiA+ID4gK25iX21idWZzKSB7ICBzdHJ1Y3QgaTQwZV9yeF9xdWV1ZSAqcnhxID0gcnhfcXVldWU7 ICBzdHJ1Y3QNCj4gPiA+ID4gK2k0MGVfcnhfZW50cnkgKnJ4ZXA7ICB2b2xhdGlsZSB1bmlvbiBp NDBlX3J4X2Rlc2MgKnJ4ZHA7DQo+ID4gPiA+ICt1aW50MTZfdCByeF9pZDsgIHVpbnQ2NF90IHBh ZGRyOyAgdWludDY0X3QgZG1hX2FkZHI7ICB1aW50MTZfdCBpOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgcnhkcCA9IHJ4cS0+cnhfcmluZyArIHJ4cS0+cnhyZWFybV9zdGFydDsgcnhlcCA9DQo+ID4g PiA+ICsgJnJ4cS0+c3dfcmluZ1tyeHEtPnJ4cmVhcm1fc3RhcnRdOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsgZm9yIChpID0gMDsgaSA8IG5iX21idWZzOyBpKyspIHsNCj4gPiA+ID4gKyAvKiBJbml0 aWFsaXplIHJ4ZHAgZGVzY3MuICovDQo+ID4gPiA+ICsgcGFkZHIgPSAocnhlcFtpXS5tYnVmKS0+ YnVmX2lvdmEgKyBSVEVfUEtUTUJVRl9IRUFEUk9PTTsNCj4gPiA+IGRtYV9hZGRyID0NCj4gPiA+ ID4gKyBydGVfY3B1X3RvX2xlXzY0KHBhZGRyKTsNCj4gPiA+ID4gKyAvKiBmbHVzaCBkZXNjIHdp dGggcGEgZG1hX2FkZHIgKi8gcnhkcFtpXS5yZWFkLmhkcl9hZGRyID0gMDsNCj4gPiA+ID4gKyBy eGRwW2ldLnJlYWQucGt0X2FkZHIgPSBkbWFfYWRkcjsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsg LyogVXBkYXRlIHRoZSBkZXNjcmlwdG9yIGluaXRpYWxpemVyIGluZGV4ICovDQo+ID4gPiA+ICsg cnhxLT5yeHJlYXJtX3N0YXJ0ICs9IG5iX21idWZzOw0KPiA+ID4gPiArIHJ4X2lkID0gcnhxLT5y eHJlYXJtX3N0YXJ0IC0gMTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArIGlmICh1bmxpa2VseShyeHEt PnJ4cmVhcm1fc3RhcnQgPj0gcnhxLT5uYl9yeF9kZXNjKSkgew0KPiA+ID4gPiArIHJ4cS0+cnhy ZWFybV9zdGFydCA9IDA7DQo+ID4gPiA+ICsgcnhfaWQgPSByeHEtPm5iX3J4X2Rlc2MgLSAxOw0K PiA+ID4gPiArIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArIHJ4cS0+cnhyZWFybV9uYiAtPSBuYl9t YnVmczsNCj4gPiA+ID4gKw0KPiA+ID4gPiArIHJ0ZV9pb193bWIoKTsNCj4gPiA+ID4gKyAvKiBV cGRhdGUgdGhlIHRhaWwgcG9pbnRlciBvbiB0aGUgTklDICovDQo+ID4gPiA+ICtJNDBFX1BDSV9S RUdfV1JJVEVfUkVMQVhFRChyeHEtPnFyeF90YWlsLCByeF9pZCk7IH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArdWludDE2X3QNCj4gPiA+ID4gK2k0MGVfcmVjeWNsZV90eF9tYnVmc19yZXVzZV92ZWMo dm9pZCAqdHhfcXVldWUsICBzdHJ1Y3QNCj4gPiA+ID4gK3J0ZV9ldGhfcmVjeWNsZV9yeHFfaW5m byAqcmVjeWNsZV9yeHFfaW5mbykgeyAgc3RydWN0DQo+ID4gPiA+ICtpNDBlX3R4X3F1ZXVlICp0 eHEgPSB0eF9xdWV1ZTsgIHN0cnVjdCBpNDBlX3R4X2VudHJ5ICp0eGVwOw0KPiA+ID4gPiArc3Ry dWN0IHJ0ZV9tYnVmICoqcnhlcDsgIHN0cnVjdCBydGVfbWJ1Zg0KPiA+ID4gPiArKm1bUlRFX0k0 MEVfVFhfTUFYX0ZSRUVfQlVGX1NaXTsgIGludCBpLCBqLCBuOyAgdWludDE2X3QgYXZhaWwgPQ0K PiA+ID4gPiArMDsgIHVpbnQxNl90IG1idWZfcmluZ19zaXplID0gcmVjeWNsZV9yeHFfaW5mby0+ bWJ1Zl9yaW5nX3NpemU7DQo+ID4gPiA+ICt1aW50MTZfdCBtYXNrID0gcmVjeWNsZV9yeHFfaW5m by0+bWJ1Zl9yaW5nX3NpemUgLSAxOyAgdWludDE2X3QNCj4gPiA+ID4gK3JlZmlsbF9yZXF1aXJl bWVudCA9IHJlY3ljbGVfcnhxX2luZm8tPnJlZmlsbF9yZXF1aXJlbWVudDsNCj4gPiA+ID4gKyB1 aW50MTZfdCByZWZpbGxfaGVhZCA9ICpyZWN5Y2xlX3J4cV9pbmZvLT5yZWZpbGxfaGVhZDsgIHVp bnQxNl90DQo+ID4gPiA+ICtyZWNlaXZlX3RhaWwgPSAqcmVjeWNsZV9yeHFfaW5mby0+cmVjZWl2 ZV90YWlsOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgLyogR2V0IGF2YWlsYWJsZSByZWN5Y2xpbmcg UnggYnVmZmVycy4gKi8gYXZhaWwgPQ0KPiA+ID4gPiArIChtYnVmX3Jpbmdfc2l6ZSAtIChyZWZp bGxfaGVhZCAtIHJlY2VpdmVfdGFpbCkpICYgbWFzazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArIC8q IENoZWNrIFR4IGZyZWUgdGhyZXNoIGFuZCBSeCBhdmFpbGFibGUgc3BhY2UuICovIGlmDQo+ID4g PiA+ICsgKHR4cS0+bmJfdHhfZnJlZSA+IHR4cS0+dHhfZnJlZV90aHJlc2ggfHwgYXZhaWwgPD0N Cj4gPiA+ID4gKyB0eHEtPnR4X3JzX3RocmVzaCkgcmV0dXJuIDA7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAvKiBjaGVjayBERCBiaXRzIG9uIHRocmVzaG9sZCBkZXNjcmlwdG9yICovIGlmDQo+ID4g PiA+ICsgKCh0eHEtPnR4X3JpbmdbdHhxLT50eF9uZXh0X2RkXS5jbWRfdHlwZV9vZmZzZXRfYnN6 ICYNCj4gPiA+ID4gKyBydGVfY3B1X3RvX2xlXzY0KEk0MEVfVFhEX1FXMV9EVFlQRV9NQVNLKSkg IT0NCj4gPiA+ID4gKyBydGVfY3B1X3RvX2xlXzY0KEk0MEVfVFhfREVTQ19EVFlQRV9ERVNDX0RP TkUpKQ0KPiA+ID4gPiArIHJldHVybiAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgbiA9IHR4cS0+ dHhfcnNfdGhyZXNoOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgLyogTWJ1ZnMgcmVjeWNsZSBtb2Rl IGNhbiBvbmx5IHN1cHBvcnQgbm8gcmluZyBidWZmZXIgd3JhcHBpbmcNCj4gYXJvdW5kLg0KPiA+ ID4gPiArICogVHdvIGNhc2UgZm9yIHRoaXM6DQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogY2Fz ZSAxOiBUaGUgcmVmaWxsIGhlYWQgb2YgUnggYnVmZmVyIHJpbmcgbmVlZHMgdG8gYmUgYWxpZ25l ZA0KPiA+ID4gPiArIHdpdGgNCj4gPiA+ID4gKyAqIG1idWYgcmluZyBzaXplLiBJbiB0aGlzIGNh c2UsIHRoZSBudW1iZXIgb2YgVHggZnJlZWluZyBidWZmZXJzDQo+ID4gPiA+ICsgKiBzaG91bGQg YmUgZXF1YWwgdG8gcmVmaWxsX3JlcXVpcmVtZW50Lg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAq IGNhc2UgMjogVGhlIHJlZmlsbCBoZWFkIG9mIFJ4IHJpbmcgYnVmZmVyIGRvZXMgbm90IG5lZWQg dG8gYmUNCj4gPiA+ID4gKyBhbGlnbmVkDQo+ID4gPiA+ICsgKiB3aXRoIG1idWYgcmluZyBzaXpl LiBJbiB0aGlzIGNhc2UsIHRoZSB1cGRhdGUgb2YgcmVmaWxsIGhlYWQNCj4gPiA+ID4gKyBjYW4g bm90DQo+ID4gPiA+ICsgKiBleGNlZWQgdGhlIFJ4IG1idWYgcmluZyBzaXplLg0KPiA+ID4gPiAr ICovDQo+ID4gPiA+ICsgaWYgKHJlZmlsbF9yZXF1aXJlbWVudCAhPSBuIHx8DQo+ID4gPiA+ICsg KCFyZWZpbGxfcmVxdWlyZW1lbnQgJiYgKHJlZmlsbF9oZWFkICsgbiA+IG1idWZfcmluZ19zaXpl KSkpDQo+ID4gPiA+ICsgcmV0dXJuIDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAvKiBGaXJzdCBi dWZmZXIgdG8gZnJlZSBmcm9tIFMvVyByaW5nIGlzIGF0IGluZGV4DQo+ID4gPiA+ICsgKiB0eF9u ZXh0X2RkIC0gKHR4X3JzX3RocmVzaC0xKS4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArIHR4ZXAg PSAmdHhxLT5zd19yaW5nW3R4cS0+dHhfbmV4dF9kZCAtIChuIC0gMSldOyByeGVwID0NCj4gPiA+ ID4gKyByZWN5Y2xlX3J4cV9pbmZvLT5tYnVmX3Jpbmc7IHJ4ZXAgKz0gcmVmaWxsX2hlYWQ7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyBpZiAodHhxLT5vZmZsb2FkcyAmIFJURV9FVEhfVFhfT0ZGTE9B RF9NQlVGX0ZBU1RfRlJFRSkgew0KPiA+ID4gPiArIC8qIERpcmVjdGx5IHB1dCBtYnVmcyBmcm9t IFR4IHRvIFJ4LiAqLyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrLA0KPiA+ID4gPiArIHJ4ZXArKywg dHhlcCsrKSAqcnhlcCA9IHR4ZXBbMF0ubWJ1ZjsgfSBlbHNlIHsgZm9yIChpID0gMCwgaiA9DQo+ ID4gPiA+ICsgcnhlcCsrMDsgaQ0KPiA+ID4gPiArIDwgbjsgaSsrKSB7DQo+ID4gPiA+ICsgLyog QXZvaWQgdHhxIGNvbnRhaW5zIGJ1ZmZlcnMgZnJvbSBleHBlY3RlZCBtZW1wb29sLiAqLyBpZg0K PiA+ID4gPiArICh1bmxpa2VseShyZWN5Y2xlX3J4cV9pbmZvLT5tcCAhPSB0eGVwW2ldLm1idWYt PnBvb2wpKSByZXR1cm4gMDsNCj4gPiA+ID4gSSBkb24ndCB0aGluayB0aGF0IGl0IGlzIHBvc3Np YmxlIHRvIHNpbXBseSByZXR1cm4gMCBoZXJlOg0KPiA+ID4gPiB3ZSBtaWdodCBhbHJlYWR5IGhh dmUgc29tZSBtYnVmcyBpbnNpZGUgcnhlcFtdLCBzbyB3ZSBwcm9iYWJseQ0KPiA+ID4gPiBuZWVk IHRvIHJldHVybiB0aGF0IG51bWJlciAoaikuDQo+ID4gPiA+DQo+ID4gPiA+IE5vLCBoZXJlIGlz IGp1c3QgcHJlLWZyZWUsIG5vdCBhY3R1YWxseSBwdXQgbWJ1ZnMgaW50byByeGVxLg0KPiA+ID4N Cj4gPiA+IEkgdW5kZXJzdGFuZCB0aGF0Lg0KPiA+ID4gV2hhdCBJIGFtIHNheWluZzogYWZ0ZXIg eW91IGNhbGwgcGt0bWJ1Zl9wcmVmcmVlX3NlZyhtYnVmKSwgeW91DQo+ID4gPiBjYW7igJl0IGtl ZXAgaXQgaW4gdGhlIHR4cSBhbnltb3JlLg0KPiA+ID4gWW91IGhhdmUgZWl0aGVyIHRvIHB1dCBp dCBpbnRvIHJ4ZXBbXSwgb3IgYmFjayBpbnRvIG1lbXBvb2wuDQo+ID4gPiBBbHNvIHR4cSBzdGF0 ZSAobmJfdHhfZnJlZSwgZXRjLikgbmVlZCB0byBiZSB1cGRhdGVkLg0KPiA+ID4NCj4gPiA+ID4g QWZ0ZXIgcnVuIG91dCBvZiB0aGUgbG9vcCwgd2UgY2FsbCBydGVfbWVtY3B5IHRvIGFjdHVhbGx5 IGNvcHkNCj4gPiA+ID4gbWJ1ZnMgaW50byByeGVwLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgbVtq XSA9IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHR4ZXBbaV0ubWJ1Zik7DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAvKiBJbiBjYXNlIDEsIGVhY2ggb2YgVHggYnVmZmVycyBzaG91bGQgYmUgdGhlDQo+ ID4gPiA+ICsgKiBsYXN0IHJlZmVyZW5jZS4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArIGlmICh1 bmxpa2VseShtW2pdID09IE5VTEwgJiYgcmVmaWxsX3JlcXVpcmVtZW50KSkgcmV0dXJuIDA7DQo+ ID4gPiA+DQo+ID4gPiA+IHNhbWUgaGVyZSwgd2UgY2FuJ3Qgc2ltcGx5IHJldHVybiAwLCBpdCB3 aWxsIGludHJvZHVjZSBtYnVmIGxlYWthZ2UuDQo+ID4gPiA+ICsgLyogSW4gY2FzZSAyLCB0aGUg bnVtYmVyIG9mIHZhbGlkIFR4IGZyZWUNCj4gPiA+ID4gKyAqIGJ1ZmZlcnMgc2hvdWxkIGJlIHJl Y29yZGVkLg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICsgaisrOw0KPiA+ID4gPiArIH0NCj4gPiA+ ID4gKyBydGVfbWVtY3B5KHJ4ZXAsIG0sIHNpemVvZih2b2lkICopICogaik7DQo+ID4gPiA+IFdv bmRlciB3aHkgZG8geW91IG5lZWQgaW50ZXJtZWRpYXRlIGJ1ZmZlciBmb3IgcmVsZWFzZWQgbWJ1 ZnM/DQo+ID4gPiA+IFdoeSBjYW4ndCBqdXN0Og0KPiA+ID4gPiAuLi4NCj4gPiA+ID4gbSA9IHJ0 ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHR4ZXBbaV0ubWJ1Zik7DQo+ID4gPiA+IC4uLg0KPiA+ID4g PiByeGVwW2orK10gPSBtOw0KPiA+ID4gPiA/DQo+ID4gPiA+IE1pZ2h0IHNhdmUgeW91IGZldyBl eHRyYSBjeWNsZXMuDQo+ID4gPiA+IFNvbWV0aW1lcyDigJhydGVfcGt0bWJ1Zl9wcmVmcmVlX3Nl Z+KAmSBjYW4gcmV0dXJuIE5VTEwgZHVlIHRvDQo+ID4gPiA+IG1idWYtPnJlZmNudCA+IDEuIFNv IHdlIHNob3VsZCBmaXJzdGx5IGVuc3VyZSBhbGwg4oCYbeKAmSBhcmUgdmFsaWQNCj4gPiA+ID4g bWJ1Zi0+YW5kDQo+ID4gPiA+IHRoZW4gY29weSB0aGVtIGludG8gcnhlcC4NCj4gPiA+DQo+ID4g PiBJIHVuZGVyc3RhbmQgdGhhdCwgYnV0IHlvdSBjYW4gY2hlY2sgaXMgaXQgTlVMTCBvciBub3Qu DQo+ID4gRm9yIGk0MGUgcnhxLCBpdCBtdXN0IHJlYXJtICcgUlRFX0k0MEVfUlhRX1JFQVJNX1RI UkVTSCAnIHBrdHMgb25jZSBhDQo+ID4gdGltZSBiYXNlZCBvbiBpdHMgcmluZyB3cmFwcGluZyBt ZWNoYW5pc20uDQo+ID4NCj4gPiBGb3IgaTQwZSB0eHEsIGl0IG11c3QgZnJlZSAnIHR4cS0+dHhf cnNfdGhyZXNoJyBwa3RzIG9uY2UgYSB0aW1lLg0KPiA+DQo+ID4gU28gd2UgbmVlZCBmaXJzdGx5 IGVuc3VyZSBhbGwgdHggZnJlZSBtYnVmcyBhcmUgdmFsaWQsIGFuZCB0aGVuIGNvcHkgdGhlc2Ug aW50bw0KPiByeHEuDQo+ID4gSWYgbm90IGVub3VnaCB2YWxpZCBtYnVmcywgaXQgd2lsbCBicmVh ayByeHEncyByaW5nIHdyYXBwaW5nIG1lY2hhbmlzbS4NCj4gDQo+IEkgdGhpbmsgeW91IGNhbiBz dGlsbCBjb3B5IG1idWZzIGludG8gcnhlcFtdLCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBtYnVm cywgeW91DQo+IGNhbiBzdGlsbCByZXR1cm4gMCAob3Igd2hhdGV2ZXIgaXMgYSBwcm9wZXIgdmFs dWUgaGVyZSksIGFuZCB0aGF0IHdvdWxkIG1lYW4gYWxsDQo+IHRoZXNlIG5ldyByeGVwW10gZW50 cmllcyB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgaW52YWxpZC4NCj4gQW55d2F5IHRoYXQncyBqdXN0 IGEgc3VnZ2VzdGlvbiB0byBhdm9pZCBleHRyYSBjb3B5Lg0KDQpJZiBJIHVuZGVyc3RhbmQgY29y cmVjdGx5LCB5b3UgbWVhbnMgd2UgY2FuIGZpcnN0bHkgY29weSBtYnVmcyBpbnRvIHJ4ZXAuDQpJ ZiB0aGVyZSBhcmUgaW52YWxpZCBidWZmZXJzLCBwcmV2aW91cyBjb3BpZWQgYnVmZmVycyBhcmUg YWxzbyBjb25zaWRlcmVkIGFzIGludmFsaWQuDQoNClRodXMsIHRoaXMgY2FuIHNhdmUgQ1BVIGN5 Y2xlcyBpbiBtb3N0IG9mIHRoZSBjb3JyZWN0IGNhc2VzLiBBbmQganVzdCBpbiBmZXcgY2FzZSwN CldlIG5lZWQgdG8gZ2l2ZSB1cCB0aGUgY29waWVkIHJ4ZXBbXSBidWZmZXJzLg0KDQpUaGF0J3Mg YSBnb29kIGNvbW1lbnRzLCBJIGFncmVlIHRoYXQgd2UgY2FuIGRvIGxpa2UgdGhpcy4NCj4gDQo+ ID4NCj4gPiA+DQo+ID4gPiA+ICsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgLyogVXBkYXRlIGNv dW50ZXJzIGZvciBUeC4gKi8NCj4gPiA+ID4gKyB0eHEtPm5iX3R4X2ZyZWUgPSAodWludDE2X3Qp KHR4cS0+bmJfdHhfZnJlZSArDQo+ID4gPiA+ICsgdHhxLT50eHEtPnR4X3JzX3RocmVzaCk7IHR4 X25leHRfZGQgPSAodWludDE2X3QpKHR4cS0+dHhfbmV4dF9kZA0KPiA+ID4gPiArIHR4cS0+KyB0 eHEtPnR4X3JzX3RocmVzaCk7DQo+ID4gPiA+ICsgaWYgKHR4cS0+dHhfbmV4dF9kZCA+PSB0eHEt Pm5iX3R4X2Rlc2MpDQo+ID4gPiA+ICsgdHhxLT50eF9uZXh0X2RkID0gKHVpbnQxNl90KSh0eHEt PnR4X3JzX3RocmVzaCAtIDEpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgcmV0dXJuIG47DQo+ID4g PiA+ICt9DQo=