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 B5D46A034E; Mon, 21 Feb 2022 15:33:49 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 512E44068C; Mon, 21 Feb 2022 15:33:49 +0100 (CET) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2056.outbound.protection.outlook.com [40.107.223.56]) by mails.dpdk.org (Postfix) with ESMTP id 15AE44013F for ; Mon, 21 Feb 2022 15:33:48 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RQklTRxWx60XEadtf5P+6+Kd5I4us515IuvuIR2mKxphDIaec1pekY3kodUsMWp0zjfMhBrXPkm2dv8Qj6XnFjcnYo4vybuJlJFJjR6XfRcYZ12qWxb+awjewmq7pM00jIrJp+29zmGaiBsUKJWWN6w0pumo8cnZSlKwarOA3jRTv0NB5G0JMwoA819kuKC3YekWvcO9ns5dnaS1lyqdzj7NHmd0BnBI5ncq/GdEstXlZ2nIQYfafR66x6LxQxlM/dVVPie5BQV+YMV7J40puVW5BmuSE/q3QbgHmRVcx38zjcu75XwcYStWDwQ2Tyv2uZoVPznR62o4pv0ZHRMc3A== 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=WB0PjUTk7iR+67la5awRK3ZPl7hmyjKlbc0bzBuEb+g=; b=Rzbg7O8TnpHYzrvzPy+jJ90AEtDkjh35TDm1psc5EFQtkxuRX0QldJEhxF8naq0lQsnO9RmhrftByIChJWKMfwYjuRtGqzrmUgHujpzJLQXu7M042Vmhw1JU6+wPURrI9ssxglmMnymX/YK9ycoad8ZP5bYSZF9RSG0IBxP3b5Am128inBA/vfPf8KjlZKJYIDOCkJ3NiBp/8Uo/ebjFPpSAf/X8lWxfsJiz35poeIXQuXpwTGGwKOhZT6a27lF3aNfzIV75JuxrcJ8ZCBxOir48XI5Lf2tGruE1FAAMkjs5xtyy4ORFBEXJx2+fNA/RX37mU/vxpLVh52vfEJkvkw== 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=WB0PjUTk7iR+67la5awRK3ZPl7hmyjKlbc0bzBuEb+g=; b=n/jr0K6cYBYjMyb0ZmTvtBXpWQgJXIFG0Mj9nDI5z6Pfvp73xNfe++YOEtbypqF54KQaTsEYX4OEkwO0cgxskWmec67tW4zClrbB1t9e+mV9UqEfqKoEVBxyIkac+7kz586t2N04bn/Gn9AUbdfUKwbrB8fVokVg9YtdBmgpYy7DnMBSR6ciRKYas94+A0uPil82qDisSN7kpQBrZRUMNdWIcX/9Cd3FnWqDBWGskexqCx5dEWqMpxwx3jXIpeFofr/nahLZxoyPHSwuhXZqoT6EVGbEiEKECL2JxYqXRidla87TkvkI3TpI1NxbU/JRvJLEE+3XZAZkXb7ShSpUSQ== Received: from LV2PR12MB5800.namprd12.prod.outlook.com (2603:10b6:408:178::12) by CY4PR1201MB0070.namprd12.prod.outlook.com (2603:10b6:910:18::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 14:33:45 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com (2603:10b6:4:b2::20) by LV2PR12MB5800.namprd12.prod.outlook.com (2603:10b6:408:178::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Mon, 21 Feb 2022 14:33:40 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::cd5b:cd8d:cd38:8c31]) by DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::cd5b:cd8d:cd38:8c31%6]) with mapi id 15.20.4995.027; Mon, 21 Feb 2022 14:33:40 +0000 From: Alexander Kozyrev To: Ori Kam , Andrew Rybchenko , "dev@dpdk.org" CC: "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "ivan.malov@oktetlabs.ru" , "ferruh.yigit@intel.com" , "mohammad.abdul.awal@intel.com" , "qi.z.zhang@intel.com" , "jerinj@marvell.com" , "ajit.khaparde@broadcom.com" , "bruce.richardson@intel.com" Subject: RE: [PATCH v8 01/11] ethdev: introduce flow engine configuration Thread-Topic: [PATCH v8 01/11] ethdev: introduce flow engine configuration Thread-Index: AQHYJgw2IrmndKrKAkatDwSPHKtwUqydxBiAgAABbYCAADJvAIAAEb/g Date: Mon, 21 Feb 2022 14:33:40 +0000 Message-ID: References: <20220219041144.2145380-1-akozyrev@nvidia.com> <20220220034409.2226860-1-akozyrev@nvidia.com> <20220220034409.2226860-2-akozyrev@nvidia.com> <5ab364fc-8ba0-bad8-3aed-5810cce4bde7@oktetlabs.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0fc4b2f8-b62a-42fd-6e0d-08d9f547278d x-ms-traffictypediagnostic: LV2PR12MB5800:EE_|CY4PR1201MB0070:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UjQkclG4U03qIEo7+3WLMddqf78xYgDwbF3vULhJkHrud95rjCHo5q11Oy5YpZmjcysby83KDM4P+anNizywXz8D+OGx89I3NmY4/hy3PLy/tmOFaHal775FIP6Qdd/iCbcRUaay5HOt1UxHud+C7cylUyFztIiw8LYCbC1xkmBYVeaIeu+Nk3kC3bTWo5m9hBVcAxd84NjzvrrBdhzzhKBtd+42SSWP9zF8eNXC93ljA+TdnaKz8yjgESCJ79yT7pxMi6KNVBj3Vz22ni+Hcqur/cVk+k3HxH6IuOuolFRIc3gbDFvBKJ24LjnCIxrJsm+RV7nFK5/kdSdNDGiALxgY3qTB+bAJFYIaoq5bgRhMmlB/9DnVnqBs4UzzRTzxv4EKr+nW9x6jseWRVZToUNKSf8NNel4dGDTPNolza/cOQcCrWE+hmVQgb1rXcLAUZgze2nC3CpmVSvQyigWTtR+bZMWHOTkzAI536soeJPjzd44Ut15HOuZxBbHkPZxve7zIKRzwK9LQX9CyYontUD/LM2G0O/CU0kyH1/bgMGKkxSb/SFI+51+VjXar8al/wnejIy08ZdbzY6ZuLXb8LwNzrnP2vHNhBwaJJNEGbQcWJXUuK0HDJq/Wsr/CDs1aHwMhZYayhscqPQnZQwZpZbtQv6U6HbRgjD8D3Ghh6mRIF536l3fGxOtR5vAlgIF0M+0fbXYllCSyFhU6WVGUzA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LV2PR12MB5800.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38070700005)(4326008)(76116006)(66556008)(66946007)(66476007)(64756008)(66446008)(8676002)(508600001)(186003)(122000001)(9686003)(33656002)(71200400001)(38100700002)(86362001)(316002)(6506007)(52536014)(110136005)(53546011)(54906003)(7416002)(2906002)(83380400001)(7696005)(8936002)(5660300002)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VGlncERKUXBiZVg5eWZ5bmRXd2ZPTjZianhaTVQrZHhmenBmOUNxM0xUOFdm?= =?utf-8?B?cUFYR29wZXNaOVpjYXNycGcrV2NIMG91Lzl2dDlMaktVWGk3K2cyQW93dEVI?= =?utf-8?B?Y3RuallIUlNtSTBIaWVSV3NNNDJSYXJQWFJJNlBJaWk2dkdRTnFRT1BvU3d0?= =?utf-8?B?UWhIb080NmpFNGM2ZjBjR21PbHVNbDZjRmpBeW0rSjNRR0FGRUhneVNHcTJh?= =?utf-8?B?SnEwY2xpd2pidzB6LzBKVWxaRkpvaXVBc0hzZk9tcjk2Y3ZkWkpGejZOdW94?= =?utf-8?B?VWFPSjlzaHJlbTQ5dzZvOXZpRFI1MzdhNFBDUlIxc0dENjVBQzJWbEt3bitH?= =?utf-8?B?aVptdml2UEEwRWhUUkVaU2NVelV5aFRYUTFjRHBtN0hyVlpQN3owOXprNHc4?= =?utf-8?B?aU1hblBwcUdsSlI5VTcxRk1ETU1laUpEcmx1NysyUEFMTUV4RURZcVRGaUp0?= =?utf-8?B?UEdYTEdOZ1dJOVZlaW5BRmJNSG5KWHJLTkVBY0QzZ1FSVmQyelZzVFYxNzV1?= =?utf-8?B?elJUaEVUck1uTHRUMkVCVlZ4NWFsSXk5WnRpL0MvKzY1TUJrMUlNcXBRNmY0?= =?utf-8?B?d3hYbmtsaElWNG02QWZWZzR2ZVl3WjB0ZDA4UnFtWEh3VWx0NERGcUU5U2ta?= =?utf-8?B?WkVMcy9VTzlDckV5L2NFSE1UcnphVVFaQzNwNEFZbXdoamJnZUEwRmlkK1Nq?= =?utf-8?B?VExEQkNVYWNRV0ZXTktOQVlzaUNWU0IxQkpFWXBPQ3hETGhrUVIwaDZjZytn?= =?utf-8?B?MlpKV3V4UGhGRzBDM1NSQm1iSWg2c2pKeUxQNXJwbFVTZUx6Q25HY1ROTG1k?= =?utf-8?B?R2tHMDdUVXVRN2hRSEdhNzBjVW1wMUNXb3RwTzBWWmRvOWlacVllMXB5cWsr?= =?utf-8?B?ZCs0OFE2YytBc2haTkZocFV5YVNHN05wRnRWQ1BIS3RTbVNiOTNqYk50MXFl?= =?utf-8?B?b3RmL3UxK3QrT2ZhRFdRN1daYVM0UW9nR2VOeDVaYlFsdmd3Z3pUbTkxR2pR?= =?utf-8?B?NmUrT082cE5Xd0ZNOVp0Vk1hU0VMY2YvZEU0UEY5M2pKWVlKYVlzOXNyTkJO?= =?utf-8?B?cktkNTNOYmNvYWZ2d1pTRlVqV1NPaGt2TVVuOElyU1ozZDNscWw1andkVlhW?= =?utf-8?B?YzhvV1d5TERUMTN4VlJaeW1QZzhFWG9OcU9tTXdMS1JoRWtzMUFQVElVa1pm?= =?utf-8?B?MUNvY2NZMEhMQi90NjZhcWkzWmtWOTFpTENRb3JValRWYStXclpNTmNFNlRS?= =?utf-8?B?a3ZoUk94ZmJjR0lZNjdwR2padnRRWVp0dTJ3RmJPdXFQQUVSdFpoTnZEU1Ev?= =?utf-8?B?SEZDQTlWcWZFSjl5QjVzVHBCamNEamU5MTE4SXVidzROSDdyc2hsbzI5enlo?= =?utf-8?B?ZGNhTEZWZWlvR3dyLzhhNldSbzVSL2F5eURybThBZlowK0toTWl1MW9kdW1y?= =?utf-8?B?SGJKaHZZQUJIbWZoelRrMWFkSC9JL1RsMjRWL1FhWjVNc1ZSb3VvWDU0aEs2?= =?utf-8?B?S2F1YndkcDFxVGJkaW5sVkUxcXoxV2JTMEV4NVEvWTZLODQ4V2I1bHJGQ25p?= =?utf-8?B?c09CcXdGOXJnSHM2SDNyTFBLS1QrY2RSOFVwM1dqMSt3eVhUTlVvUWZTZE8w?= =?utf-8?B?eDNabHFLc0p6Q25tOUl6ZTZLSXhNcmg2dFRHYmlOWmpNZHF3NDk1QndQTXJS?= =?utf-8?B?d2oxTWFuV0RwU09TdTQxSXNyMFBNVklVemcrSUZDekkyd09iS0c1bVkrYitN?= =?utf-8?B?UG5VaWIzUDVxNXVDeExmczFqb2YvSUJzZXdWQ081R09HWTBRakswQTZNaEhC?= =?utf-8?B?T0VRTlNyclVQSHNWRDBYUWZvTzlOZzZDc1ZEcTB4aDlhSEdub3hmR2NVOW9M?= =?utf-8?B?Uk1TSXorWW9XbzlYaFI3VDFtN0lyTzQvRkZ3ZHJOSDhJM0xJODlsRms0cjIy?= =?utf-8?B?aGFpemdDMmhhVjNqdXpDTERJWW4zbks5Z1YvTjV5dUlLSC80Tkl6THRhekg5?= =?utf-8?B?N25ub0ViaENEZFUzOXozSnFaRS93MGdMTVkzZk5PcCtvOWN2N2xNYWNYQmpT?= =?utf-8?B?VHREUktDWDdkSkJYZGdVZ3dodnZTSjlYTkVwTHBQbDFLVEQySXdVRWVFaDRF?= =?utf-8?B?dENWVWNMa1lEYlJYM0ZOK1N0Tm1RelgwcWtEMnlLUWwxNHM2eVI0NnJaTHJ4?= =?utf-8?B?akptMitZRzdSV2h5V2pqdTlQbW82SDRVZGJtRmtXMUpsanFhaWh1bks3TXZm?= =?utf-8?Q?zDbI9hHiKsHWZuEb59O9IuIyl7ctOpesMyPH9bCW3I=3D?= 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: DM5PR12MB2405.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fc4b2f8-b62a-42fd-6e0d-08d9f547278d X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2022 14:33:40.4074 (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: GEAOmcEU0yk9JUtrtWdSBBf6JI37Xt93nCXnsxYFd1rL79Tak8fYX94Du4XCmO4oJIKqVHMoVASG10tpsKalJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1201MB0070 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 T24gTW9uZGF5LCBGZWJydWFyeSAyMSwgMjAyMiA3OjU0IE9yaSBLYW0gPG9yaWthQG52aWRpYS5j b20+IHdyb3RlOg0KPiBIaSBBbmRyZXcgYW5kIEFsZXhhbmRlciwNCj4gDQo+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnli Y2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDIxLCAyMDIy IDExOjUzIEFNDQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2OCAwMS8xMV0gZXRoZGV2OiBpbnRy b2R1Y2UgZmxvdyBlbmdpbmUgY29uZmlndXJhdGlvbg0KPiA+DQo+ID4gT24gMi8yMS8yMiAxMjo0 NywgQW5kcmV3IFJ5YmNoZW5rbyB3cm90ZToNCj4gPiA+IE9uIDIvMjAvMjIgMDY6NDMsIEFsZXhh bmRlciBLb3p5cmV2IHdyb3RlOg0KPiA+ID4+IFRoZSBmbG93IHJ1bGVzIGNyZWF0aW9uL2Rlc3Ry dWN0aW9uIGF0IGEgbGFyZ2Ugc2NhbGUgaW5jdXJzIGEgcGVyZm9ybWFuY2UNCj4gPiA+PiBwZW5h bHR5IGFuZCBtYXkgbmVnYXRpdmVseSBpbXBhY3QgdGhlIHBhY2tldCBwcm9jZXNzaW5nIHdoZW4g dXNlZA0KPiA+ID4+IGFzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIGxvZ2ljLiBUaGlzIGlzIG1haW5s eSBiZWNhdXNlIHNvZnR3YXJlL2hhcmR3YXJlDQo+ID4gPj4gcmVzb3VyY2VzIGFyZSBhbGxvY2F0 ZWQgYW5kIHByZXBhcmVkIGR1cmluZyB0aGUgZmxvdyBydWxlIGNyZWF0aW9uLg0KPiA+ID4+DQo+ ID4gPj4gSW4gb3JkZXIgdG8gb3B0aW1pemUgdGhlIGluc2VydGlvbiByYXRlLCBQTUQgbWF5IHVz ZSBzb21lIGhpbnRzIHByb3ZpZGVkDQo+ID4gPj4gYnkgdGhlIGFwcGxpY2F0aW9uIGF0IHRoZSBp bml0aWFsaXphdGlvbiBwaGFzZS4gVGhlIHJ0ZV9mbG93X2NvbmZpZ3VyZSgpDQo+ID4gPj4gZnVu Y3Rpb24gYWxsb3dzIHRvIHByZS1hbGxvY2F0ZSBhbGwgdGhlIG5lZWRlZCByZXNvdXJjZXMgYmVm b3JlaGFuZC4NCj4gPiA+PiBUaGVzZSByZXNvdXJjZXMgY2FuIGJlIHVzZWQgYXQgYSBsYXRlciBz dGFnZSB3aXRob3V0IGNvc3RseSBhbGxvY2F0aW9ucy4NCj4gPiA+PiBFdmVyeSBQTUQgbWF5IHVz ZSBvbmx5IHRoZSBzdWJzZXQgb2YgaGludHMgYW5kIGlnbm9yZSB1bnVzZWQgb25lcyBvcg0KPiA+ ID4+IGZhaWwgaW4gY2FzZSB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHN1cHBv cnRlZC4NCj4gPiA+Pg0KPiA+ID4+IFRoZSBydGVfZmxvd19pbmZvX2dldCgpIGlzIGF2YWlsYWJs ZSB0byByZXRyaWV2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQNCj4gPiA+PiBzdXBwb3J0ZWQgcHJl LWNvbmZpZ3VyYWJsZSByZXNvdXJjZXMuIEJvdGggdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgY2Fs bGVkDQo+ID4gPj4gYmVmb3JlIGFueSBvdGhlciB1c2FnZSBvZiB0aGUgZmxvdyBBUEkgZW5naW5l Lg0KPiA+ID4+DQo+ID4gPj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEtvenlyZXYgPGFrb3p5 cmV2QG52aWRpYS5jb20+DQo+ID4gPj4gQWNrZWQtYnk6IE9yaSBLYW0gPG9yaWthQG52aWRpYS5j b20+DQo+ID4gPg0KPiA+ID4gW3NuaXBdDQo+ID4gPg0KPiA+ID4+IGRpZmYgLS1naXQgYS9saWIv ZXRoZGV2L2V0aGRldl9kcml2ZXIuaCBiL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4g Pj4gaW5kZXggNmQ2OTdhODc5YS4uMDZmMDg5NmUxZSAxMDA2NDQNCj4gPiA+PiAtLS0gYS9saWIv ZXRoZGV2L2V0aGRldl9kcml2ZXIuaA0KPiA+ID4+ICsrKyBiL2xpYi9ldGhkZXYvZXRoZGV2X2Ry aXZlci5oDQo+ID4gPj4gQEAgLTEzOCw3ICsxMzgsMTIgQEAgc3RydWN0IHJ0ZV9ldGhfZGV2X2Rh dGEgew0KPiA+ID4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhl IGRldmljZSBpcyBjb25maWd1cmVkOg0KPiA+ID4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogQ09O RklHVVJFRCgxKSAvIE5PVCBDT05GSUdVUkVEKDApDQo+ID4gPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqAgKi8NCj4gPiA+PiAtwqDCoMKgwqDCoMKgwqAgZGV2X2NvbmZpZ3VyZWQgOiAxOw0KPiA+ID4+ ICvCoMKgwqDCoMKgwqDCoCBkZXZfY29uZmlndXJlZDoxLA0KPiA+ID4NCj4gPiA+IEFib3ZlIGlz IHVucmVsYXRlZCB0byB0aGUgcGF0Y2guIE1vcmVvdmVyLCBpdCBicmVha3Mgc3R5bGUgdXNlZA0K PiA+ID4gZmV3IGxpbmVzIGFib3ZlLg0KPiA+ID4NCj4gKzENCg0KSXQgaXMgcmVsYXRlZCwgSSBo YWQgdG8gY2hhbmdlIHRoaXMgbGluZSB0byBhZGQgZmxvd19jb25maWd1cmVkIG1lbWJlci4NCkFu ZCB0aGVyZSBpcyBhIHdhcmluZyBpZiBJIGtlZXAgb2xkIHN0eWxlOg0KRVJST1I6U1BBQ0lORzog c3BhY2UgcHJvaGliaXRlZCBiZWZvcmUgdGhhdCAnOicgKGN0eDpXeFcpDQpTaG91bGQgSSBrZWVw IHRoZSBvbGQgc3R5bGUgd2l0aCB3YXJuaW5ncyBvciBjaGFuZ2UgYWxsIG1lbWJlcnMgdG8gZml4 IGl0Pw0KDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgIC8qKg0KPiA+ID4+ICvCoMKgwqDCoMKgwqDC oMKgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZsb3cgZW5naW5lIGlzIGNvbmZpZ3VyZWQ6DQo+ ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBDT05GSUdVUkVEKDEpIC8gTk9UIENPTkZJR1VSRUQo MCkNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCBm bG93X2NvbmZpZ3VyZWQ6MTsNCj4gPiA+DQo+ID4gPiBJJ2QgbGlrZSB0byB1bmRlcnN0YW5kIHdo eSB3ZSBuZWVkIHRoZSBpbmZvcm1hdGlvbi4gSXQgaXMNCj4gPiA+IHVuY2xlYXIgZnJvbSB0aGUg cGF0Y2guIFJpZ2h0IG5vdyBpdCBpcyB3cml0ZS1vbmx5LiBOb2JvZHkNCj4gPiA+IGNoZWNrcyBp dC4gSXMgZmxvdyBlbmdpbmUgY29uZmlndXJhdGlvbiBiZWNvbWUgYSBtYW5kYXRvcnkNCj4gPiA+ IHN0ZXA/IEFsd2F5cz8gSnVzdCBpbiBzb21lIGNhc2VzPw0KPiA+ID4NCj4gDQo+IFNlZSBteSBj b21tZXRzIGJlbG93LA0KPiBJIGNhbiBzZWUgdHdvIHdheXMgb3IgcmVtb3ZlIHRoaXMgbWVtYmVy IG9yIGNoZWNrIGluIGVhY2ggY29udHJvbCBmdW5jdGlvbg0KPiB0aGF0IHRoZSBjb25maWd1cmF0 aW9uIGZ1bmN0aW9uIHdhcyBkb25lLg0KDQpJdCBpcyB3cml0ZS1vbmx5IGluIHRoaXMgcGF0Y2gs IHJ0ZV9mbG93X2NvbmZpZ3VyZSgpIHNldHMgaXQgd2hlbiBjb25maWd1cmF0aW9uIGlzIGRvbmUu DQpUaGUgaXQgaXMgY2hlY2tlZCBpbiB0aGUgdGVtcGxhdGVzL3RhYmxlcyBjcmVhdGlvbiBpbiBw YXRjaCAyLg0KV2UgZG8gbm90IGFsbG93IHRhbXBsYXRlcy90YWJsZXMgY3JlYXRpb24gd2l0aG91 dCBpbnZva2luZyBjb25maWd1cmUgZmlyc3QuDQogDQo+ID4gPj4gwqDCoMKgwqDCoCAvKiogUXVl dWVzIHN0YXRlOiBIQUlSUElOKDIpIC8gU1RBUlRFRCgxKSAvIFNUT1BQRUQoMCkgKi8NCj4gPiA+ PiDCoMKgwqDCoMKgIHVpbnQ4X3QgcnhfcXVldWVfc3RhdGVbUlRFX01BWF9RVUVVRVNfUEVSX1BP UlRdOw0KPiA+ID4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9mbG93LmMgYi9saWIvZXRo ZGV2L3J0ZV9mbG93LmMNCj4gPiA+PiBpbmRleCA3ZjkzOTAwYmM4Li5mZmQ0OGU0MGQ1IDEwMDY0 NA0KPiA+ID4+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2Zsb3cuYw0KPiA+ID4+ICsrKyBiL2xpYi9l dGhkZXYvcnRlX2Zsb3cuYw0KPiA+ID4+IEBAIC0xMzkyLDMgKzEzOTIsNzIgQEAgcnRlX2Zsb3df ZmxleF9pdGVtX3JlbGVhc2UodWludDE2X3QgcG9ydF9pZCwNCj4gPiA+PiDCoMKgwqDCoMKgIHJl dCA9IG9wcy0+ZmxleF9pdGVtX3JlbGVhc2UoZGV2LCBoYW5kbGUsIGVycm9yKTsNCj4gPiA+PiDC oMKgwqDCoMKgIHJldHVybiBmbG93X2Vycihwb3J0X2lkLCByZXQsIGVycm9yKTsNCj4gPiA+PiDC oCB9DQo+ID4gPj4gKw0KPiA+ID4+ICtpbnQNCj4gPiA+PiArcnRlX2Zsb3dfaW5mb19nZXQodWlu dDE2X3QgcG9ydF9pZCwNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfZmxv d19wb3J0X2luZm8gKnBvcnRfaW5mbywNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gPj4gK3sNCj4gPiA+PiArwqDCoMKgIHN0cnVj dCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiA+PiAr wqDCoMKgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQo cG9ydF9pZCwgZXJyb3IpOw0KPiA+ID4+ICsNCj4gPiA+PiArwqDCoMKgIGlmIChwb3J0X2luZm8g PT0gTlVMTCkgew0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCBSVEVfRkxPV19MT0coRVJSLCAiUG9y dCAlIlBSSXUxNiIgaW5mbyBpcyBOVUxMLlxuIiwgcG9ydF9pZCk7DQo+ID4gPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPiA+ID4+ICvCoMKgwqAgfQ0KPiA+ID4+ICvCoMKgwqAg aWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmZpZ3VyZWQgPT0gMCkgew0KPiA+ID4+ICvCoMKgwqDCoMKg wqDCoCBSVEVfRkxPV19MT0coSU5GTywNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi RGV2aWNlIHdpdGggcG9ydF9pZD0lIlBSSXUxNiIgaXMgbm90IGNvbmZpZ3VyZWQuXG4iLA0KPiA+ ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnRfaWQpOw0KPiA+ID4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gLUVJTlZBTDsNCj4gPiA+PiArwqDCoMKgIH0NCj4gPiA+PiArwqDCoMKgIGlm ICh1bmxpa2VseSghb3BzKSkNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1ydGVfZXJy bm87DQo+ID4gPg0KPiA+ID4gT3JkZXIgb2YgY2hlY2tzIGlzIG5vdCBhbHdheXMgb2J2aW91cywg YnV0IHJlcXVpcmVzIGF0DQo+ID4gPiBsZWFzdCBzb21lIHJ1bGVzIHRvIGZvbGxvdy4gV2hlbiB0 aGVyZSBpcyBubyBhbnkgZ29vZA0KPiA+ID4gcmVhc29uIHRvIGRvIG90aGVyd2lzZSwgSSdkIHN1 Z2dlc3QgdG8gY2hlY2sgYXJndW1lbnRzDQo+ID4gPiBpbiB0aGVyZSBvcmRlci4gSS5lLiBjaGVj ayBwb3J0X2lkIGFuZCBpdHMgZGlyZWN0DQo+ID4gPiBkZXJpdmF0aXZlcyBmaXJzdDoNCj4gPiA+ IDEuIG9wcyAoc2luY2UgaXQgaXMgTlVMTCBpZiBwb3J0X2lkIGlzIGludmFsaWQpDQo+ID4gPiAy LiBkZXZfY29uZmlndXJlZCAoc2luY2Ugb25seSBwb3J0X2lkIGlzIHJlcXVpcmVkIHRvIGNoZWNr IGl0KQ0KPiA+ID4gMy4gcG9ydF9pbmZvIChzaW5jZSBpdCBnb2VzIGFmdGVyIHBvcnRfaWQpDQo+ ID4gPg0KPiANCj4gQWdyZWUsDQoNCk9rLg0KDQo+ID4gPj4gK8KgwqDCoCBpZiAobGlrZWx5KCEh b3BzLT5pbmZvX2dldCkpIHsNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZsb3dfZXJy KHBvcnRfaWQsDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcHMtPmlu Zm9fZ2V0KGRldiwgcG9ydF9pbmZvLCBlcnJvciksDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlcnJvcik7DQo+ID4gPj4gK8KgwqDCoCB9DQo+ID4gPj4gK8KgwqDCoCBy ZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ID4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJ RUQsDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwgcnRl X3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAraW50DQo+ ID4gPj4gK3J0ZV9mbG93X2NvbmZpZ3VyZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ID4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfcG9ydF9hdHRyICpwb3J0X2F0 dHIsDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IpDQo+ID4gPj4gK3sNCj4gPiA+PiArwqDCoMKgIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiA+PiArwqDCoMKgIGNvbnN0IHN0cnVj dCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0K PiA+ID4+ICvCoMKgwqAgaW50IHJldDsNCj4gPiA+PiArDQo+ID4gPj4gK8KgwqDCoCBkZXYtPmRh dGEtPmZsb3dfY29uZmlndXJlZCA9IDA7DQo+IA0KPiBJIGRvbid0IHRoaW5rIHRoZXJlIGlzIG1l YW5pbmcgdG8gYWRkIHRoaXMgc2V0IGhlcmUuDQo+IEkgd291bGQgcmVtb3ZlIHRoaXMgZmllbGQu DQo+IFVubGVzcyB5b3Ugd2FudCB0byBjaGVjayBpdCBmb3IgYWxsIGNvbnRyb2wgZnVuY3Rpb25z Lg0KDQpJIGRvIGNoZWNrIGl0IGluIHRlbXBsYXRlcy90YWJsZXMgY3JlYXRpb24gQVBJIGFzIEkg bWVudGlvbmVkIGFib3ZlLg0KDQo+ID4gPj4gK8KgwqDCoCBpZiAocG9ydF9hdHRyID09IE5VTEwp IHsNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqAgUlRFX0ZMT1dfTE9HKEVSUiwgIlBvcnQgJSJQUkl1 MTYiIGluZm8gaXMgTlVMTC5cbiIsIHBvcnRfaWQpOw0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVJTlZBTDsNCj4gPiA+PiArwqDCoMKgIH0NCj4gPiA+PiArwqDCoMKgIGlmIChkZXYt PmRhdGEtPmRldl9jb25maWd1cmVkID09IDApIHsNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqAgUlRF X0ZMT1dfTE9HKElORk8sDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkRldmljZSB3 aXRoIHBvcnRfaWQ9JSJQUkl1MTYiIGlzIG5vdCBjb25maWd1cmVkLlxuIiwNCj4gPiA+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0X2lkKTsNCj4gPiA+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gPj4gK8KgwqDCoCB9DQo+ID4NCj4gPiBJbiBmYWN0IHRoZXJlIGlz IG9uZSBtb3JlIGludGVyZXN0aW5nIHF1ZXN0aW9uIHJlbGF0ZWQNCj4gPiB0byBkZXZpY2Ugc3Rh dGVzLiBOZWNlc3NpdHkgdG8gY2FsbCBmbG93IGluZm8gYW5kIGZsb3cNCj4gPiBjb25maWd1cmUg aW4gY29uZmlndXJlZCBzdGF0ZSBhbGxvd3MgY29uZmlndXJlIHRvIHJlbHkNCj4gPiBvbiBkZXZp Y2UgY29uZmlndXJhdGlvbi4gVGhlIHF1ZXN0aW9uIGlzOiB3aGF0IHNob3VsZA0KPiA+IGhhcHBl biB3aXRoIHRoZSBkZXZpY2UgZmxvdyBlbmdpbmUgY29uZmlndXJhdGlvbiBpZg0KPiA+IHRoZSBk ZXZpY2UgaXMgcmVjb25maWd1cmVkPw0KPiA+DQo+IA0KPiBUaGF04oCZcyBkZXBlbmRlcyBvbiBQ TUQuDQo+IFBNRCBtYXkgc3VwcG9ydCByZWNvbmZpZ3VyaW5nLCBwYXJ0aWFsIHJlY29uZmlndXJl IChmb3IgZXhhbXBsZSBvbmx5IG51bWJlcg0KPiBvZiBvYmplY3RzDQo+IGJ1dCBub3QgY2hhbmdp bmcgdGhlIG51bWJlciBvZiBxdWV1ZXMpIG9yIGl0IHdpbGwgbm90IHN1cHBvcnQgYW55IHJlY29u ZmlndXJlLg0KPiBJdCBtYXkgYWxzbyBiZSBkZXBlbmRlbnQgaWYgdGhlIHBvcnQgaXMgc3RhcnRl ZCBvciBub3QuDQo+IEN1cnJlbnRseSB3ZSBkb24ndCBwbGFuIHRvIHN1cHBvcnQgcmVjb25maWd1 cmUgYnV0IGluIGZ1dHVyZSB3ZSBtYXkgc3VwcG9ydA0KPiBjaGFuZ2luZyB0aGUNCj4gbnVtYmVy IG9mIG9iamVjdHMuDQo+ID4gPj4gK8KgwqDCoCBpZiAoZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCAh PSAwKSB7DQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgIFJURV9GTE9XX0xPRyhJTkZPLA0KPiA+ID4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJEZXZpY2Ugd2l0aCBwb3J0X2lkPSUiUFJJdTE2IiBh bHJlYWR5IHN0YXJ0ZWQuXG4iLA0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnRf aWQpOw0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsNCj4gPiA+PiArwqDC oMKgIH0NCj4gPiA+PiArwqDCoMKgIGlmICh1bmxpa2VseSghb3BzKSkNCj4gPiA+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gPg0KPiA+ID4gU2FtZSBsb2dpYyBoZXJl Og0KPiA+ID4gMS4gb3BzDQo+ID4gPiAyLiBkZXZfY29uZmlndXJlZA0KPiA+ID4gMy4gZGV2X3N0 YXJ0ZWQNCj4gPiA+IDQuIHBvcnRfYXR0cg0KPiA+ID4gNS4gb3BzLT5jb25maWd1cmUgc2luY2Ug d2Ugd2FudCB0byBiZSBzdXJlIHRoYXQgc3RhdGUgYW5kIGlucHV0DQo+ID4gPiAgwqDCoCBhcmd1 bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBjYWxsaW5nIGl0DQo+ID4gPg0KPiA+ID4+ICvCoMKgwqAg aWYgKGxpa2VseSghIW9wcy0+Y29uZmlndXJlKSkgew0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCBy ZXQgPSBvcHMtPmNvbmZpZ3VyZShkZXYsIHBvcnRfYXR0ciwgZXJyb3IpOw0KPiA+ID4+ICvCoMKg wqDCoMKgwqDCoCBpZiAocmV0ID09IDApDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2LT5kYXRhLT5mbG93X2NvbmZpZ3VyZWQgPSAxOw0KPiA+ID4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZmxvd19lcnIocG9ydF9pZCwgcmV0LCBlcnJvcik7DQo+ID4gPj4gK8KgwqDCoCB9DQo+ ID4gPj4gK8KgwqDCoCByZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0K PiA+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJURV9GTE9XX0VSUk9S X1RZUEVfVU5TUEVDSUZJRUQsDQo+ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiA+PiArfQ0KPiA+ID4NCj4g PiA+IFtzbmlwXQ0KPiA+ID4NCj4gPiA+PiArLyoqDQo+ID4gPj4gKyAqIEB3YXJuaW5nDQo+ID4g Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9y IG5vdGljZS4NCj4gPiA+PiArICoNCj4gPiA+PiArICogR2V0IGluZm9ybWF0aW9uIGFib3V0IGZs b3cgZW5naW5lIHJlc291cmNlcy4NCj4gPiA+PiArICoNCj4gPiA+PiArICogQHBhcmFtIHBvcnRf aWQNCj4gPiA+PiArICrCoMKgIFBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ ID4gPj4gKyAqIEBwYXJhbVtvdXRdIHBvcnRfaW5mbw0KPiA+ID4+ICsgKsKgwqAgQSBwb2ludGVy IHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9mbG93X3BvcnRfaW5mbyoNCj4gPiA+PiArICrC oMKgIHRvIGJlIGZpbGxlZCB3aXRoIHRoZSByZXNvdXJjZXMgaW5mb3JtYXRpb24gb2YgdGhlIHBv cnQuDQo+ID4gPj4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gPj4gKyAqwqDCoCBQZXJmb3Jt IHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiA+ID4+ICsgKsKgwqAgUE1E cyBpbml0aWFsaXplIHRoaXMgc3RydWN0dXJlIGluIGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPiA+ PiArICoNCj4gPiA+PiArICogQHJldHVybg0KPiA+ID4+ICsgKsKgwqAgMCBvbiBzdWNjZXNzLCBh IG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzDQo+ID4gPj4g c2V0Lg0KPiA+ID4NCj4gPiA+IElmIEknbSBub3QgbWlzdGFrZXMgd2Ugc2hvdWxkIGJlIGV4cGxp Y2l0IHdpdGgNCj4gPiA+IG5lZ2F0aXZlIHJlc3VsdCB2YWx1ZXMgbWVudGluZw0KPiA+ID4NCj4g SSdtIG5vdCBzdXJlLCB1bnRpbCBub3cgd2UgZGlkbid0IGhhdmUgYW55IGVycm9ycyB2YWx1ZXMg ZGVmaW5lZCBpbiBSVEUgZmxvdy4NCj4gSSBkb24ndCB3YW50IHRvIGVuZm9yY2UgUE1EIHdpdGgg dGhlIGVycm9yIHR5cGVzLg0KPiBJZiBQTUQgY2FuIHNheSB0aGF0IGl0IGNhbiBnaXZlIGJldHRl ciBlcnJvciBjb2RlIG9yIGFkZCBhIGNhc2UgdGhhdCBtYXkgcmVzdWx0IGluDQo+IGVycm9yLCBJ IGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBBUEkuDQo+IFNvIEkgdGhpbmsgd2UgYmV0dGVyIGxl YXZlIHRoZSBlcnJvciBjb2RlcyBvdXQgb2YgZG9jdW1lbnRhdGlvbiB1bmxlc3MgdGhleSBhcmUN Cj4gZmluYWwgYW5kIGNhbiBvbmx5DQo+IGJlIHJlc3VsdGVkIGZyb20gdGhlIHJ0ZV9sZXZlbC4N Cj4gDQo+ID4gPj4gKyAqLw0KPiA+ID4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+PiAraW50 DQo+ID4gPj4gK3J0ZV9mbG93X2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcnRlX2Zsb3dfcG9ydF9pbmZvICpwb3J0X2luZm8sDQo+ ID4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsN Cj4gPiA+DQo+ID4gPiBbc25pcF0NCj4gPiA+DQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgKiBAd2Fy bmluZw0KPiA+ID4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0 aG91dCBwcmlvciBub3RpY2UuDQo+ID4gPj4gKyAqDQo+ID4gPj4gKyAqIENvbmZpZ3VyZSB0aGUg cG9ydCdzIGZsb3cgQVBJIGVuZ2luZS4NCj4gPiA+PiArICoNCj4gPiA+PiArICogVGhpcyBBUEkg Y2FuIG9ubHkgYmUgaW52b2tlZCBiZWZvcmUgdGhlIGFwcGxpY2F0aW9uDQo+ID4gPj4gKyAqIHN0 YXJ0cyB1c2luZyB0aGUgcmVzdCBvZiB0aGUgZmxvdyBsaWJyYXJ5IGZ1bmN0aW9ucy4NCj4gPiA+ PiArICoNCj4gPiA+PiArICogVGhlIEFQSSBjYW4gYmUgaW52b2tlZCBtdWx0aXBsZSB0aW1lcyB0 byBjaGFuZ2UgdGhlDQo+ID4gPj4gKyAqIHNldHRpbmdzLiBUaGUgcG9ydCwgaG93ZXZlciwgbWF5 IHJlamVjdCB0aGUgY2hhbmdlcy4NCj4gPiA+PiArICoNCj4gPiA+PiArICogUGFyYW1ldGVycyBp biBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgbXVzdCBub3QgZXhjZWVkDQo+ID4gPj4gKyAqIG51 bWJlcnMgb2YgcmVzb3VyY2VzIHJldHVybmVkIGJ5IHRoZSBydGVfZmxvd19pbmZvX2dldCBBUEku DQo+ID4gPj4gKyAqDQo+ID4gPj4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gPj4gKyAqwqDCoCBQ b3J0IGlkZW50aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNlLg0KPiA+ID4+ICsgKiBAcGFyYW1baW5d IHBvcnRfYXR0cg0KPiA+ID4+ICsgKsKgwqAgUG9ydCBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMu DQo+ID4gPj4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gPj4gKyAqwqDCoCBQZXJmb3JtIHZl cmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiA+ID4+ICsgKsKgwqAgUE1EcyBp bml0aWFsaXplIHRoaXMgc3RydWN0dXJlIGluIGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPiA+PiAr ICoNCj4gPiA+PiArICogQHJldHVybg0KPiA+ID4+ICsgKsKgwqAgMCBvbiBzdWNjZXNzLCBhIG5l Z2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzDQo+ID4gPj4gc2V0 Lg0KPiA+ID4NCj4gPiA+IFNhbWUgaGVyZS4NCj4gPiA+DQo+IFNhbWUgYXMgYWJvdmUuDQo+IA0K PiA+ID4gW3NuaXBdDQo+IA0KPiBCZXN0LA0KPiBPUmkNCg==