From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67884C433B4 for ; Thu, 15 Apr 2021 01:59:57 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id B396A61107 for ; Thu, 15 Apr 2021 01:59:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B396A61107 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0F103161EEA; Thu, 15 Apr 2021 03:59:56 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2040.outbound.protection.outlook.com [40.107.93.40]) by mails.dpdk.org (Postfix) with ESMTP id 81828161EE9 for ; Thu, 15 Apr 2021 03:59:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WFthePfuHtyYlsylp+XUP3lMgZyfijn3E+5YN9f73ZgKPkJUPH5RyhipyjbOYwKsTqqCENekJ20o4MTb4dG2sTVv7Lx+rLejuOhNhfqVVH6FMKqfIwrUFBz38ktoGZhqoaCcJwVrjf0cSdBV9sHR66tVelDw8e+s+/IVguLtSggovKQOdUxFPwdXoJ3h+D/oSCGEf1hqc8G81b3tG9dYwyOUAyybr4oRKk3tZNVuVZdZEb37t8Ehp+iI9ZnZ3GmyWE0PbRrGSYSpOaoeLZsLVRCiapHNBIG7Y6Z8G3xoOiVddpCL3TQachoN2psaCM3O3qBZxyYE8FBaxSe5HvhLWg== 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=fd6kngVkSUwf90gvYSF61F++Z68ze4Hmwlcw442/7hE=; b=LSxhQ+ZfwCCl3Ihy9UXgvaE4s+gu3qGzaKclCd3/XXE+hrt2Zx8WbEHmKYaFWoDYp1kBqsJwaEALlSfVxj930Fr870IgxeDCif5cWy4JYTKCZQALN0ZExtgNa+qFtY54hdg0x0rMR+Ga1d2YczCXsjJ/cCU2eR4kk8CBOVEhwDQaorhPpo4M015lLczFv9Ew425n2/eZWDza/dJPR1bEXZjvNqlC4U4B2+NbA8cE+vo3WTifB2U/1i8lKB5T015VsgfVEDFM2ymU4mU9h1IoEQU3cfsgoABCKwOwCZf5WKz5LJ+BcdpE/SxBVrPpqJyqyBcybJtpGqMGWg17NqJAcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fd6kngVkSUwf90gvYSF61F++Z68ze4Hmwlcw442/7hE=; b=Yb0YmNKrHsGH02lgP9dXsm/+It2PzXoP7bGYHN1uxfDHlvxqCtTS0yXWFOfxqY6GNo7OotuhmtEQ4KVskivshPiiudcPp7Hv0lE4sJt6E3rXtGuy7G7wwqPUx3+JUMiyK8d119ueMLCgQRDI/vH0pZVytiqSjebbeEymWZPGHZE7tQ+6DzYwUiKdNXZnjf79va8jXnsVntkDlNjM5WYa3x9QCFVdbid/boJYti2kfgUaFfDEmQDonQWlohgwaTI0Vr3Sl1+BtBS4kLTnfw3W8Y2bMab/ydBUmFQ6It6bgu9kA/Y5V+iUbWW6GQZ8QoqkWg2CgosKhqTWHu64581WZQ== Received: from DM6PR12MB4090.namprd12.prod.outlook.com (2603:10b6:5:217::11) by DM5PR12MB1276.namprd12.prod.outlook.com (2603:10b6:3:79::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.16; Thu, 15 Apr 2021 01:59:52 +0000 Received: from DM6PR12MB4090.namprd12.prod.outlook.com ([fe80::fd19:da7e:347b:87da]) by DM6PR12MB4090.namprd12.prod.outlook.com ([fe80::fd19:da7e:347b:87da%4]) with mapi id 15.20.4020.023; Thu, 15 Apr 2021 01:59:52 +0000 From: Li Zhang To: "Dumitrescu, Cristian" , "dekelp@nvidia.com" , Ori Kam , Slava Ovsiienko , Matan Azrad , Shahaf Shuler , "lironh@marvell.com" , "jerinj@marvell.com" , "Yigit, Ferruh" , "ajit.khaparde@broadcom.com" , Wisam Monther , "Li, Xiaoyun" , "Singh, Jasvinder" , NBU-Contact-Thomas Monjalon , Andrew Rybchenko , Ray Kinsella , Neil Horman , Jerin Jacob , Hemant Agrawal CC: "dev@dpdk.org" , Raslan Darawsheh , Roni Bar Yanai , Haifei Luo , "Jiawei(Jonny) Wang" Thread-Topic: [PATCH v6 1/2] ethdev: add pre-defined meter policy API Thread-Index: AQHXMUn2jJAIK/IxeEKY5zTc9aByoKq00z6A Date: Thu, 15 Apr 2021 01:59:52 +0000 Message-ID: References: <20210318085815.804896-1-lizh@nvidia.com> <20210414085800.2051439-1-lizh@nvidia.com> <20210414085800.2051439-2-lizh@nvidia.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [139.227.253.12] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d6318443-9d57-4b65-fea5-08d8ffb22892 x-ms-traffictypediagnostic: DM5PR12MB1276: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hyn3SgAFXF/vEUlN1Hhk/qBgpl3j0sPhNrXQuqz7sfjQIu8A0XTfYS2VDtw4Y+rK5LADpeoqAk78owSWyYNZZaAeUY39UtwiiYExjKn7fAfIwIZYqhB5Gq/RQ5l2qzuMmW/fS4N/nN5dyBG04wnX0kt+6j3gBElrGHLcgQm/njRFNF+NSISD7Po/HVhBTnw7MttSBvnI+iqDvzh0LWIiObHqc+1zgQWwd7uJx+u4DuOALcOB9CP/SNiWOAyZ840Pwb4wQWPUSpruQhC+fI3MErSsQi+NyaBWFy1wm5yz7VgFDXIvFFZZZjkMsJP+PRK7SRFceL86Z09z6bXEhYCfDop1sSAuFvJtH8VcVpY4N4DGtPry38GFBCwxcwBhKYusvfEhulA1K3AGxViYDDOBLGcMY/p1kFZ6SRUx47ncvW8f832RQ6/2i8x9dTVJE8fackHgWabBl7B2VJTodo2ZMSdFeOFWcyllEgYFewgEAYrm6X+Qo2fWx8pPraR1bbcBB79rmg+Ydo75+DaAWp2auivWQaE8qA0+61OcVYUxYCR4azC5LrrKJolVchHgCK/z7easgEQeRV6Hz62IAallO0/Dtpu9+Djz2X3B4qZ/KE6lJhsatLtaR8Z3K5OT9d468mgCBoVs58UY2FT4p/b0dQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4090.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(136003)(39860400002)(376002)(366004)(396003)(83380400001)(9686003)(66476007)(316002)(66556008)(76116006)(38100700002)(107886003)(7696005)(5660300002)(66446008)(122000001)(7416002)(53546011)(66946007)(52536014)(64756008)(71200400001)(26005)(8676002)(54906003)(55016002)(921005)(478600001)(186003)(110136005)(4326008)(33656002)(6506007)(8936002)(86362001)(2906002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?TnVLR1lmVEVEWmNuVUc5VHhibHQrUDcxQjFpVFhMb1p6YWRRU05ta01YYzQv?= =?utf-8?B?aHdJZGl3MkxuS2hxai85NElHZ2pUVlNia3dOSTNYVHZoVy9yS21NVzFoZXRx?= =?utf-8?B?dFE3eXQ5UFdZWURtaDVUMFdWaXo0UUhXMm5FcVNSL2doakgzYlk2cjRyZHF2?= =?utf-8?B?c3F1ZG45QVBaN1RUV2pGbnZmSVJjRzJBckhMbTJUQklGdFhPNk81dHh5d0RF?= =?utf-8?B?VVk5L2poWVI2SzN3Uit5OTdGMWJSTVpqeU1GaWFnWkF0SFhrTjdoVXJFa2Vz?= =?utf-8?B?dHEyQ2hmaEFhQ0JHMjViVTRocHdRSDhNdHM2NVJZdmNyS2FaUkhvZUlnR0pr?= =?utf-8?B?eHBWc2U1OVhkWnBlVW1aS0FXZHdhbVpZb29LbmNZclRzaHRFUFlLS0k5U0dv?= =?utf-8?B?S2NEaHZFZEcxY2pMQmtOQXM5LzNMVW96QmdzWGhPOGk2R00yK3FnYStJbUw5?= =?utf-8?B?TVliK3VuVW8vM1l1MlFoMG94cmc1dG85Z08yZitIaUh2N3JZUWxiNW8yalpm?= =?utf-8?B?VVdaZmRldThyY1JuZzE2aW9jbERDZHFBZ0cwZFJiWDdVaDdGQzZTK3BEY3gx?= =?utf-8?B?M20xYUdUV2wwOEpiSFV6b3VFQTN2djgvblovcUxjeFVoQlB4cW5RYmVkeDRG?= =?utf-8?B?ZDI1b1J1WDFReGlyM0tqak83ZUF2MllRUXE0K1BHMGNNWXNzK0M0bU4zQUVv?= =?utf-8?B?eFFxdDd6UzZGUk1QM2xrY1dKUFA4bHVHV2RKR1B3UnQwVHM1a1ROSDBZbWNj?= =?utf-8?B?QlJhblRkQUxTamtCOHNvVXNTRWRSVVRDM0VJZGd4NGo0OG16RisvaEdGRldP?= =?utf-8?B?enFsaEp6OEIrZjdBdUZ5ODVsZnpFYWg4OHgwN2xneTdoaHZDaDBOenp5OE9n?= =?utf-8?B?QlhGUTBiRGI3b01GVjB4S0ZwRjlJaDJBbHdvUU1IMkd2L3AwYzRiWXh4U2ZQ?= =?utf-8?B?S1lHNVBtODAydFhGVGdodEdXcHY3N2JxeDRwMXBNNk1pRFd1Nm9DbWdiakt4?= =?utf-8?B?MU5sZTlBamMrK3YrOHlGMkpMb2dld0RGdVkzSklLOUdabFpybEtidnJRZDJP?= =?utf-8?B?eS93akw1NmFoNnpWTjBFRXJlUjZPZTdrVzRzck9KVnc3S1FaMk9UTTgvOUxa?= =?utf-8?B?a1Y2dkhJQndVcmNSakRUb0pzUFZ4ZE1xUTg4ZjN6NDc0ZXNYWXBnU1dBT0NQ?= =?utf-8?B?elNxWCs4SnltVzdIVTNldnNEUnhvaWFHRDV1cENRM1F1Y0pZZlNhSTM3ZndC?= =?utf-8?B?SlRFUkRkLzB2WDhEUUthSWg4dnpkUlV6ZnNtUnVUSGRXQVlmdFRBLzBUMjlr?= =?utf-8?B?QkZ5elBuRDFYYmpyZmp4N1NiNDE5cXdGTExXL2lWOGtxMVB6OHo0UWxVellG?= =?utf-8?B?c3RSNW1GSHFjMVZNL3VWUnZmaENabjFtcFJFV0s3UXE3bmZmbjFWSmk1aExE?= =?utf-8?B?WU00VEwrMTFjY3pZVkdja1VNYVdRMUdQdjMyT0lIaVgrakg2MGpPZkUzTlkv?= =?utf-8?B?emhvU1prL1h5OVZSRFNNd0RWWGp5MUhYbWpuNGY3L2ZUdlVVekRZdkVIU3BH?= =?utf-8?B?ZTZEdUlWYUVMdGI2eDBvQ0xXb2wzUGNzcnhsYjRIbDJyQnllS0VTWU5kcGNZ?= =?utf-8?B?eUdrVXlKZjVmWDBXMkhPMllJZUlxY1pHR2IwTERTZHkzMld5N00zT0w3OHhv?= =?utf-8?B?YWQwVjFzbS8vNUpRcXBhNURRNjF2UHlpZ1lBdG05cVJRU0ZRZFNLMXBpQ1VV?= =?utf-8?Q?x0Q6CxG4k/7iE9LTzaDtYxApRavbTh1GPrqTU7J?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4090.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6318443-9d57-4b65-fea5-08d8ffb22892 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2021 01:59:52.1455 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: L03eNJusSo+s2GI8x6acXmIIGKYvKyCck7l2X+CIO4x+CFlZWlDQI6w/SfvE+GlJ X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1276 Subject: Re: [dpdk-dev] [PATCH v6 1/2] ethdev: add pre-defined meter policy API 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 Sender: "dev" VGhhbmtzIENyaXN0aWFuLg0KV2lsbCBjaGFuZ2UgaXQgaW4gVjcgcGF0Y2guDQoNClJlZ2FyZHMs DQpMaSBaaGFuZw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IER1bWl0 cmVzY3UsIENyaXN0aWFuIDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCj4gU2VudDog VGh1cnNkYXksIEFwcmlsIDE1LCAyMDIxIDEyOjE2IEFNDQo+IFRvOiBMaSBaaGFuZyA8bGl6aEBu dmlkaWEuY29tPjsgZGVrZWxwQG52aWRpYS5jb207IE9yaSBLYW0NCj4gPG9yaWthQG52aWRpYS5j b20+OyBTbGF2YSBPdnNpaWVua28gPHZpYWNoZXNsYXZvQG52aWRpYS5jb20+OyBNYXRhbg0KPiBB enJhZCA8bWF0YW5AbnZpZGlhLmNvbT47IFNoYWhhZiBTaHVsZXIgPHNoYWhhZnNAbnZpZGlhLmNv bT47DQo+IGxpcm9uaEBtYXJ2ZWxsLmNvbTsgamVyaW5qQG1hcnZlbGwuY29tOyBZaWdpdCwgRmVy cnVoDQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgYWppdC5raGFwYXJkZUBicm9hZGNvbS5j b207IFdpc2FtIE1vbnRoZXINCj4gPHdpc2FtbUBudmlkaWEuY29tPjsgTGksIFhpYW95dW4gPHhp YW95dW4ubGlAaW50ZWwuY29tPjsgU2luZ2gsDQo+IEphc3ZpbmRlciA8amFzdmluZGVyLnNpbmdo QGludGVsLmNvbT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmph bG9uLm5ldD47IEFuZHJldyBSeWJjaGVua28NCj4gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJz LnJ1PjsgUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1PjsgTmVpbA0KPiBIb3JtYW4gPG5ob3Jt YW5AdHV4ZHJpdmVyLmNvbT47IEplcmluIEphY29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+Ow0K PiBIZW1hbnQgQWdyYXdhbCA8aGVtYW50LmFncmF3YWxAbnhwLmNvbT4NCj4gQ2M6IGRldkBkcGRr Lm9yZzsgUmFzbGFuIERhcmF3c2hlaCA8cmFzbGFuZEBudmlkaWEuY29tPjsgUm9uaSBCYXIgWWFu YWkNCj4gPHJvbmliYUBudmlkaWEuY29tPjsgSGFpZmVpIEx1byA8aGFpZmVpbEBudmlkaWEuY29t PjsgSmlhd2VpKEpvbm55KSBXYW5nDQo+IDxqaWF3ZWl3QG52aWRpYS5jb20+DQo+IFN1YmplY3Q6 IFJFOiBbUEFUQ0ggdjYgMS8yXSBldGhkZXY6IGFkZCBwcmUtZGVmaW5lZCBtZXRlciBwb2xpY3kg QVBJDQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBh dHRhY2htZW50cw0KPiANCj4gDQo+IEhpIExpLA0KPiANCj4gRm9sbG93aW5nIHRoZSBBUEkgY2hh bmdlcywgdGhlcmUgYXJlIGxvdHMgb2YgY2hhbmdlcyBpbiB0aGUgZHJpdmVycywgYXMNCj4gZXhw ZWN0ZWQsIHNvIHdlJ2xsIGhhdmUgdG8gdGFrZSB0aGUgbmVjZXNzYXJ5IHRpbWUgdG8gcmV2aWV3 IHRoZW0uDQo+IA0KPiBIZXJlIGFyZSBqdXN0IGEgZmV3IGNvbW1lbnRzIGJlbG93LCBwbGVhc2Ug ZXhwZWN0IG1vcmUgZHVyaW5nIHRoZSBuZXh0DQo+IGZldyBkYXlzLg0KPiANCj4gPHNuaXA+DQo+ IA0KPiA+ICsNCj4gPiArLyogTVRSIG1ldGVyIHBvbGljeSBhZGQgKi8NCj4gPiArc3RhdGljIGlu dA0KPiA+ICtwbWRfbXRyX21ldGVyX3BvbGljeV9hZGQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs DQo+ID4gKyAgICAgdWludDMyX3QgbWV0ZXJfcG9saWN5X2lkLA0KPiA+ICsgICAgIHN0cnVjdCBy dGVfbXRyX21ldGVyX3BvbGljeV9wYXJhbXMgKnBvbGljeSwNCj4gPiArICAgICBzdHJ1Y3QgcnRl X210cl9lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgcG1kX2ludGVybmFs cyAqcCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKyAgICAgc3RydWN0IHNvZnRuaWNf bXRyX21ldGVyX3BvbGljeV9saXN0ICptcGwgPSAmcC0NCj4gPiA+bXRyLm1ldGVyX3BvbGljaWVz Ow0KPiA+ICsgICAgIHN0cnVjdCBzb2Z0bmljX210cl9tZXRlcl9wb2xpY3kgKm1wOw0KPiA+ICsg ICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdDsNCj4gPiArICAgICBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21ldGVyX2NvbG9yICpyZWNvbG9yOw0KPiA+ICsgICAgIHVp bnQzMl90IGk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIE1ldGVyIHBvbGljeSBJRCBtdXN0IGJlIHZh bGlkLiAqLw0KPiA+ICsgICAgIGlmIChtZXRlcl9wb2xpY3lfaWQgPT0gVUlOVDMyX01BWCkNCj4g PiArICAgICAgICAgICAgIHJldHVybiAtcnRlX210cl9lcnJvcl9zZXQoZXJyb3IsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIEVJTlZBTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgUlRF X01UUl9FUlJPUl9UWVBFX01FVEVSX1BPTElDWV9JRCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIk1ldGVyIHBvbGljeSBpZCBub3Qg dmFsaWQiKTsNCj4gDQo+IFRoaXMgaXMgb2J2aW91c2x5IG5vdCBjb3JyZWN0LCB3ZSBuZWVkIHRv IGNoZWNrIHdoZXRoZXIgdGhlIG1ldGVyX3BvbGljeV9pZA0KPiBwcm92aWRlZCBieSB0aGUgdXNl ciBpcyBhbHJlYWR5IGluIHVzZSAoYnkgYSBwb2xpY3kgcHJldmlvdXNseSBhZGRlZCkgb3Igbm90 Lg0KPiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgcG9saWN5IGZpbmQgZnVuY3Rpb24gdGhhdCB5 b3UgaGF2ZSBhbHJlYWR5DQo+IGltcGxlbWVudGVkLg0KPiANCj4gPiArDQo+ID4gKyAgICAgZm9y IChpID0gMDsgaSA8IFJURV9DT0xPUlM7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgYWN0ID0g cG9saWN5LT5hY3Rpb25zW2ldOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGFjdCAmJiBhY3QtPnR5 cGUgIT0NCj4gPiBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9DT0xPUiAmJg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBhY3QtPnR5cGUgIT0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfRFJPUCkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1ydGVfbXRyX2Vycm9yX3NldChlcnJv ciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSU5WQUwsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUlRFX01UUl9FUlJPUl9UWVBFX01FVEVSX1BPTElDWSwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJBY3Rpb24gaW52YWxpZCIpOw0KPiA+ICsgICAgIH0NCj4gDQo+ IFRoaXMgY2hlY2sgZG9lcyBub3QgbG9vayByaWdodCBlaXRoZXI6IG9idmlvdXNseSB3ZSBjYW5u b3QgYWNjZXB0IGEgbnVsbA0KPiBhY3Rpb24gbGlzdCBmb3IgYW55IGNvbG9yLCBwbHVzIHRoZSBh Y3Rpb24gbGlzdCBzaG91bGQgY29udGFpbiBvbmx5IHRob3NlIGFjdGlvbg0KPiB0eXBlcyB3ZSBz dXBwb3J0IChSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9DT0xPUiBvcg0KPiBSVEVfRkxPV19B Q1RJT05fVFlQRV9EUk9QKS4NCj4gDQo+IEkgYWdyZWUsIGZpc3QgeW91IG5lZWQgdG8gY2hlY2sg dGhhdCB0aGUgbGlua2VkIGxpc3Qgb2YgcG9saWN5IGFjdGlvbnMgZm9yIGVhY2gNCj4gY29sb3Ig aXMgbm9uLU5VTEwsIHRoZW4geW91IG5lZWQgdG8gdHJhdmVyc2UgaXQgdW50aWwgeW91IG1lZXQg dGhlIEVORA0KPiBhY3Rpb24sIHNraXAgYW55IFBBRCBhY3Rpb25zLCB0aGVuIGNoZWNrIHRoYXQg ZXhhY3RseSBvbmUgKGFuZCBvbmUgb25seSkgb2YNCj4gTUVURVJfQ09MT1Igb3IgRFJPUCBleGlz dCwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCBhbHNvIHdlDQo+IGRvbid0IGhh dmUgdGhlIHNhbWUgYWN0aW9uIHNob3dpbmcgdXAgbXVsdGlwbGUgdGltZXMuIE1ha2VzIHNlbnNl Pw0KPiANCj4gUmVnYXJkcywNCj4gQ3Jpc3RpYW4NCg==