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 DF555A034E; Mon, 21 Feb 2022 14:12:34 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9435A40DF6; Mon, 21 Feb 2022 14:12:34 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08on2067.outbound.protection.outlook.com [40.107.102.67]) by mails.dpdk.org (Postfix) with ESMTP id B3DD24068C for ; Mon, 21 Feb 2022 14:12:32 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZkNCW1KL3Mex6UeQWFuI1h1p58b3igbPWzsZ7Ip7CGPmgncNChRuNZY/jTZM+F7tZXB0Y2fnrqq70JPCcDjyHql0rcOGbegGhE/QNFfmPozBWNxd5GxE88hlSKdNWc07gy7lFSXbKvfVmtt1dOiSbvu098avGfYjhY90g2JV4zFB4AbAwKROzCO3+f5CGiZxMQ95upmIcENUtcM5JbF0DNVRgSkqT8KiJW/rVmdHrDwslYfLrKbnoAED8fDmq7rCXPHKohDnjS4pIS34VizWomMVAaqFfnm3I+iXP6YAVS88giVcK5ciPJ80t2KFPeJJnAKP3GbXZhzMlQ1tHeDNcg== 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=Vif7t3iBY1dfpeqsKnq4d6haNYWzXqU5SGI8+TG5sm8=; b=P4teif627c6hSpZtP+sorBci3FcG0nJLJv6xh89J98RWXmOJWzooen70eW8L0s8A+5/gPWcouUdtwrJGc7MCFEeUDCMVPpSGbD9uKYRDHCdf0b/3SXX55GKIOcYGn6ap5RzMQXLmc26GFDSPvB9BV8h+GgqNfY+zhmqWNBG7ULm9YFoLVzXkKeImtMbWuPpkBGpqEJNFIwa5iUUugy8HTTvF1Jdt0b4tx+wJVvPaUjuc1Cwyc0MfT1VQhO4dsBgxDuWQ+vj+6dv2vBz+vgXImI1RJk+YRfwSDbBPEIWQ9rL6Pz905dBIdww7b3xFKCMQCD6fi0+EGlYDX5YRsGdnDg== 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=Vif7t3iBY1dfpeqsKnq4d6haNYWzXqU5SGI8+TG5sm8=; b=r0HYYcp4XgO1S0PCJ/2r1M6sO07Sm55Tbbf7CbMq69gRP2p2z8Odxstt8VAtOVfjZTZ6xQu3nT9eamJcBvMTaZAkSFYGyRJrBpgOOfk4KTy73mkkUwcQI9QhMfvCyLB+5+ChyEyFGHC7ui+4PUKUy0ueO49bG4JxLMmV8/5k+0rakAQiRCa8Y0jTsbGVkr7vlEULH9EyQwxI7bvp1RH833aVwW1sISPDT6FwFgRRNwaNFmq1e6/pFvf7LqWdClK8VEVWDt9Upx1MGQ0pN4dBnu8Z5X8YMpBGdxNPwkikQiZg7c9A8YNfAm0kNBHxpCKJa2sQjS1F4lko5NtCS79T+w== Received: from MWHPR12MB1663.namprd12.prod.outlook.com (2603:10b6:301:e::9) by BN8PR12MB3170.namprd12.prod.outlook.com (2603:10b6:408:98::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.15; Mon, 21 Feb 2022 13:12:30 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by MWHPR12MB1663.namprd12.prod.outlook.com (2603:10b6:301:e::9) 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 13:12:29 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9d4e:649c:c6b8:b353]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9d4e:649c:c6b8:b353%5]) with mapi id 15.20.4995.027; Mon, 21 Feb 2022 13:12:29 +0000 From: Ori Kam To: Andrew Rybchenko , Alexander Kozyrev , "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 02/11] ethdev: add flow item/action templates Thread-Topic: [PATCH v8 02/11] ethdev: add flow item/action templates Thread-Index: AQHYJgw2P+yKKMdPpkeFbyTvnWEoB6yd14kAgAAgifA= Date: Mon, 21 Feb 2022 13:12:29 +0000 Message-ID: References: <20220219041144.2145380-1-akozyrev@nvidia.com> <20220220034409.2226860-1-akozyrev@nvidia.com> <20220220034409.2226860-3-akozyrev@nvidia.com> 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: 9e1c2666-d253-45e1-ed33-08d9f53bd01c x-ms-traffictypediagnostic: MWHPR12MB1663:EE_|BN8PR12MB3170: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: vFmla1LspPnnMZ3j6yC6WtDSkHR0FMvX/ky2PcDo8HaZLaoLD/+A2sWHcmYV8JIKWAs0STYT02V/wSHEzR2Fgd7QW3vO4jkp3V9Fd2hgKXhPGTOAYmo43T8gvTdu4h+QYBp+EyRnsUAazegD59ovYGyqwEFLKKk30DBy03TQlMwxmlfoNiDAENOXxGBHaL81Mc8Tbi5/s8ibO4kZof8bXGSzcxiPaYHDWSL6Bl6Aejpd55bNlX5iuF8mbcusqNqcATj/aJeeEguQBDsdQzxdj5wKycY1kTJC0/l2lDWkdvIDmmsKk/MsNKm98z8tRKnPC3T1acjGKBBjNLnticb8yv0xsWn34QvB9REkkaLUv6z923j5m4CJp7sdo96/FwM7UrPZXpdePo0KjIMtRPBKChUbQ01PaN9To2lFDw1/0Yo1JVkhIbfpte+fnMPDCaWLreXq+K4edpxWN0UN06BcDZeZwkmZ4Nnnn9dh6H4rWewZPaI7+to0f9qIq/ezaG4qefTUtri+q0XfdnIXwoR848s+v/5cctksM+Na2pBRMjn/TYjWxlCbmMUs0Y8dv/8JBmuUTCunr+KqVKsx1btJD+V7esY0IpGGAIh4VcSRh1pIc1l1I+2S84M62BacKmTnoSKrVW1v4CRn47cRqpbKFsrgor5AC8KsUTmyaPNcRBKmtsjLdo6X3PfI2RU753uT3GQuwNgYNQXk0LdEJQdmrG2qqSP1TNYZhGqT4CfDSgA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR12MB1663.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(8676002)(4326008)(52536014)(66556008)(66446008)(76116006)(66476007)(64756008)(66946007)(54906003)(316002)(508600001)(55016003)(83380400001)(110136005)(33656002)(7416002)(30864003)(9686003)(8936002)(5660300002)(53546011)(2906002)(38070700005)(122000001)(186003)(86362001)(26005)(6506007)(7696005)(71200400001)(38100700002)(21314003)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TWhoZUYxYXhSd0V3cUV5NjJxRlFHUVR4N0xBdjFWUDFJVjhHVi9WUlF3RGlB?= =?utf-8?B?QTJjOGQzVnFTc2lxVjZFRy9wQkc0UmE5S2d0bTBUNE83S1RQdTd5RDlPUE1Y?= =?utf-8?B?dEVWQ0lRckVBZ0VDaXFoWnlvMW9hSkk1d0JjN1Fjc0k5dlZWSDljSllvK3VG?= =?utf-8?B?cFpKWTlTNlhrdWh0VEQ0TGpxTldwVEdZaE5langzS0JtZ3d5OFN1d1Q2dElN?= =?utf-8?B?TVRQM1JwaXhFZjN0WXVOYlRqSHROWDhmMURLZWRCZm92SFlWWEpmc0xYSk9k?= =?utf-8?B?amtpOHdhM29QU01rRHNiVW9UL3JsYi96QVZranZYWWtEUlNpdkUzTjhSb1Zo?= =?utf-8?B?a1M2anhtODBCSy83VjZMa0N2MXlxcmJEbzA3bUpjWHc4bnpLYXdvc3lWZ2VJ?= =?utf-8?B?MDN5bTUwYWlTamdBQ2REMExWRUovTzhoejl1OG0rbzI3U05LeFFOTk5QYXNH?= =?utf-8?B?NHBLTWFHN2NNSDFjRjBIWTVkd0JybUNTb1JRMUI1Vkl3WnBPNDVvMEh5S0J4?= =?utf-8?B?UXBJcGlmdVNJZXU1Z2lTa0VLZmNRdjh5WjVhcmY0TDRXa3I0ajBQYlN2eVVQ?= =?utf-8?B?MGljYnBPRHEvVlZ3VERCS2JpanIvWFdvTnV1Um8xN2VwYXp4WTlzQXNwN0Fp?= =?utf-8?B?RzJzaFdDOEhLem1YZE9MMUtyQWNMVno5OGNkN0dudVJzVnRiWVdhaFdQdjdq?= =?utf-8?B?b2pyQmNGalUvdXNoRFI4UEt2amZ6T0wvMmdRdGIxRkNYMHZtQjNDOXhmWGZL?= =?utf-8?B?cWpjTTV5RklQSm5xSGdQSDhVMCtOK0RlWVgxcnkwYkxtd205Y3B6NlhWQlAx?= =?utf-8?B?RHRTR0xNTGo3WDZHVUtmTHJLOXo2cG9jWDNibVhNMlgzampSdWVsTHpWQnMx?= =?utf-8?B?WU9JazhLWXV1VzY1NmM1aTFERExlNk1UazZ5ZlB3Q2FiYnFNYTU1SkpUUDVx?= =?utf-8?B?aFVpaUI4VGc5U1B4T0szZmVwMzlLQWNVaW81RUw3bC9XN3JReWE1TXVSNWtM?= =?utf-8?B?V2FZOTczN0tQcDF2YWVYY2pXUUc2TXRnK0xqVWtuVnNRSDhaMFBjQ3RqcUZo?= =?utf-8?B?c3d3Mm01WHFGU0JFeUt2cE42dDVIMERiSmhPVjlDZnJQaS91WEl5RmFWakdG?= =?utf-8?B?SG9iMVNmeDNoZ2k2VlVoeGpiY05ZN3hPQW1yTFJIT0w1Qm8yRXdvVmZ6WjVr?= =?utf-8?B?T2RjNllERU9lelR4Y1JRWXo2ckxYcE5hd2RRS2FUdTNERGxMSFpJQ2cyZEdG?= =?utf-8?B?NzJNbS91T3FyT1QyU04vbUh2dG1KTklLNHJPVnBueU5XV2NubWRsVXkrQ2h4?= =?utf-8?B?a3R0dG0xeUhDZnkyL0NncnN3cy9kMHhpWlI0Wm90cmFlUU1ybStzUGh1QjVh?= =?utf-8?B?Z2t4dVpzMUdvcDlDN1ZvS3VPZ1V1RFZUK0lWYWp0Y083UTJmYTNKaFRIc3Iw?= =?utf-8?B?ZEZJNjBxb2V6QXlTaUFGdHhiMkp6RWtteVF6TVRtRTNLRmhpVGpEUjNPSERT?= =?utf-8?B?U01LOHRCSXdGQ0d6ZmpXcU91TmpUNG5VYi92YndOMXlsNlhLYms1YWoyZ005?= =?utf-8?B?aEthWFJiamNXaGxydndMR0d3STNQb3RHNFJFVllrb1RNbEdETlVrN2MzcjZw?= =?utf-8?B?NmZhTkRmMTRRTlAvNTd3aDJsWjhIR3EwNllPNGozV2lGT2l4OVNrOVNOaTND?= =?utf-8?B?MUdTQjZPYWdNWHBVc0x4dk9kRjZkSXdtVWh1ZHN4U1pZK05taVdKS2lBalBF?= =?utf-8?B?czczUnBRcVZUNE1MZTdNeHBhbjFuc2xyWjZXVGVoS1FpT3VFL045dlNOeDN6?= =?utf-8?B?VFlJWUpWRk9aVzRkUEpETHFJMGdocGJmZTB6NmhUNG1wMStoVVg3SEJKVjFS?= =?utf-8?B?Y2FUbnVQZ0RYTUhndExhRzJ3djRYTE9FWTRaM3dlaUpITVVnYXQzeFhDOFNO?= =?utf-8?B?MkNKY0w5cE5HeXJMZjIxajZ1dHl6c1FrUzhuM2d3VWpxYXJCZm1kR2lkVlVS?= =?utf-8?B?MmVXSTcxNGlHT2NEV0J0NWZhWUx2Y0lvWjlvZFJ0aEN5aTRnY3F3cmQ1RmRC?= =?utf-8?B?STNQd1N4QjAyaXN4TTZuN081K2lsdGF1dS9lWEhRUEJ5QXBmZHpkVjkwUmh1?= =?utf-8?B?RG1VTzVwbkIvalhPR3Q4S0NDL3pmbmdUaTNRalhCMVJKZUtRenBVVCtVVmtj?= =?utf-8?B?cEE9PQ==?= 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: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e1c2666-d253-45e1-ed33-08d9f53bd01c X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2022 13:12:29.2130 (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: gPYClMcL9JDo2132z07iInJlUTuvniDWexajR6O4ruWBXu8kA9yjGdw77yuo7djtaBbJWVuYqHMZd+RRcNwADQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB3170 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBNb25k YXksIEZlYnJ1YXJ5IDIxLCAyMDIyIDEyOjU3IFBNDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjgg MDIvMTFdIGV0aGRldjogYWRkIGZsb3cgaXRlbS9hY3Rpb24gdGVtcGxhdGVzDQo+IA0KPiBPbiAy LzIwLzIyIDA2OjQ0LCBBbGV4YW5kZXIgS296eXJldiB3cm90ZToNCj4gPiBUcmVhdGluZyBldmVy eSBzaW5nbGUgZmxvdyBydWxlIGFzIGEgY29tcGxldGVseSBpbmRlcGVuZGVudCBhbmQgc2VwYXJh dGUNCj4gPiBlbnRpdHkgbmVnYXRpdmVseSBpbXBhY3RzIHRoZSBmbG93IHJ1bGVzIGluc2VydGlv biByYXRlLiBPZnRlbnRpbWVzIGluIGFuDQo+ID4gYXBwbGljYXRpb24sIG1hbnkgZmxvdyBydWxl cyBzaGFyZSBhIGNvbW1vbiBzdHJ1Y3R1cmUgKHRoZSBzYW1lIGl0ZW0gbWFzaw0KPiA+IGFuZC9v ciBhY3Rpb24gbGlzdCkgc28gdGhleSBjYW4gYmUgZ3JvdXBlZCBhbmQgY2xhc3NpZmllZCB0b2dl dGhlci4NCj4gPiBUaGlzIGtub3dsZWRnZSBtYXkgYmUgdXNlZCBhcyBhIHNvdXJjZSBvZiBvcHRp bWl6YXRpb24gYnkgYSBQTUQvSFcuDQo+ID4NCj4gPiBUaGUgcGF0dGVybiB0ZW1wbGF0ZSBkZWZp bmVzIGNvbW1vbiBtYXRjaGluZyBmaWVsZHMgKHRoZSBpdGVtIG1hc2spIHdpdGhvdXQNCj4gPiB2 YWx1ZXMuIFRoZSBhY3Rpb25zIHRlbXBsYXRlIGhvbGRzIGEgbGlzdCBvZiBhY3Rpb24gdHlwZXMg dGhhdCB3aWxsIGJlIHVzZWQNCj4gPiB0b2dldGhlciBpbiB0aGUgc2FtZSBydWxlLiBUaGUgc3Bl Y2lmaWMgdmFsdWVzIGZvciBpdGVtcyBhbmQgYWN0aW9ucyB3aWxsDQo+ID4gYmUgZ2l2ZW4gb25s eSBkdXJpbmcgdGhlIHJ1bGUgY3JlYXRpb24uDQo+ID4NCj4gPiBBIHRhYmxlIGNvbWJpbmVzIHBh dHRlcm4gYW5kIGFjdGlvbnMgdGVtcGxhdGVzIGFsb25nIHdpdGggc2hhcmVkIGZsb3cgcnVsZQ0K PiA+IGF0dHJpYnV0ZXMgKGdyb3VwIElELCBwcmlvcml0eSBhbmQgdHJhZmZpYyBkaXJlY3Rpb24p LiBUaGlzIHdheSBhIFBNRC9IVw0KPiA+IGNhbiBwcmVwYXJlIGFsbCB0aGUgcmVzb3VyY2VzIG5l ZWRlZCBmb3IgZWZmaWNpZW50IGZsb3cgcnVsZXMgY3JlYXRpb24gaW4NCj4gPiB0aGUgZGF0YXBh dGguIFRvIGF2b2lkIGFueSBoaWNjdXBzIGR1ZSB0byBtZW1vcnkgcmVhbGxvY2F0aW9uLCB0aGUg bWF4aW11bQ0KPiA+IG51bWJlciBvZiBmbG93IHJ1bGVzIGlzIGRlZmluZWQgYXQgdGhlIHRhYmxl IGNyZWF0aW9uIHRpbWUuDQo+ID4NCj4gPiBUaGUgZmxvdyBydWxlIGNyZWF0aW9uIGlzIGRvbmUg Ynkgc2VsZWN0aW5nIGEgdGFibGUsIGEgcGF0dGVybiB0ZW1wbGF0ZQ0KPiA+IGFuZCBhbiBhY3Rp b25zIHRlbXBsYXRlICh3aGljaCBhcmUgYm91bmQgdG8gdGhlIHRhYmxlKSwgYW5kIHNldHRpbmcg dW5pcXVlDQo+ID4gdmFsdWVzIGZvciB0aGUgaXRlbXMgYW5kIGFjdGlvbnMuDQo+ID4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS296eXJldiA8YWtvenlyZXZAbnZpZGlhLmNvbT4NCj4g PiBBY2tlZC1ieTogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNvbT4NCj4gDQo+IFtzbmlwXQ0KPiAN Cj4gPiArRm9yIGV4YW1wbGUsIHRvIGNyZWF0ZSBhbiBhY3Rpb25zIHRlbXBsYXRlIHdpdGggdGhl IHNhbWUgTWFyayBJRA0KPiA+ICtidXQgZGlmZmVyZW50IFF1ZXVlIEluZGV4IGZvciBldmVyeSBy dWxlOg0KPiA+ICsNCj4gPiArLi4gY29kZS1ibG9jazo6IGMNCj4gPiArDQo+ID4gKwlydGVfZmxv d19hY3Rpb25zX3RlbXBsYXRlX2F0dHIgYXR0ciA9IHsuaW5ncmVzcyA9IDF9Ow0KPiA+ICsJc3Ry dWN0IHJ0ZV9mbG93X2FjdGlvbiBhY3RbXSA9IHsNCj4gPiArCQkvKiBNYXJrIElEIGlzIDQgZm9y IGV2ZXJ5IHJ1bGUsIFF1ZXVlIEluZGV4IGlzIHVuaXF1ZSAqLw0KPiA+ICsJCVswXSA9IHsudHlw ZSA9IFJURV9GTE9XX0FDVElPTl9UWVBFX01BUkssDQo+ID4gKwkJICAgICAgIC5jb25mID0gJihz dHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21hcmspey5pZCA9IDR9fSwNCj4gPiArCQlbMV0gPSB7LnR5 cGUgPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9RVUVVRX0sDQo+ID4gKwkJWzJdID0gey50eXBlID0g UlRFX0ZMT1dfQUNUSU9OX1RZUEVfRU5ELH0sDQo+ID4gKwl9Ow0KPiA+ICsJc3RydWN0IHJ0ZV9m bG93X2FjdGlvbiBtc2tbXSA9IHsNCj4gPiArCQkvKiBBc3NpZ24gdG8gTUFSSyBtYXNrIGFueSBu b24temVybyB2YWx1ZSB0byBtYWtlIGl0IGNvbnN0YW50ICovDQo+ID4gKwkJWzBdID0gey50eXBl ID0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUFSSywNCj4gPiArCQkgICAgICAgLmNvbmYgPSAmKHN0 cnVjdCBydGVfZmxvd19hY3Rpb25fbWFyayl7LmlkID0gMX19LA0KPiANCj4gMSBsb29rcyB2ZXJ5 IHN0cmFuZ2UuIEkgY2FuIHVuZGVyc3RhbmQgaXQgaW4gdGhlIGNhc2Ugb2YNCj4gaW50ZWdlciBh bmQgYm9vbGVhbiBmaWVsZHMsIGJ1dCB3aGF0IHRvIGRvIGluIHRoZSBjYXNlIG9mDQo+IGFycmF5 cz8gSU1ITywgaXQgd291bGQgYmUgYmV0dGVyIHRvIHVzZSBhbGwgMHhmZidzIGluIHZhbHVlLg0K PiBBbnl3YXksIGl0IG11c3QgYmUgZGVmaW5lZCB2ZXJ5IGNhcmVmdWxseSBhbmQgbm9uLWFtYmln dW91cy4NCj4gDQpUaGVyZSBpcyBzb21lIGlzc3VlcyB3aXRoIGFsbCAweGZmIGZvciBleGFtcGxl IGluIGNhc2Ugb2YgcG9pbnRlcnMgb3INCmVudW1zIHRoaXMgaXQgd2lsbCByZXN1bHQgaW4gaW52 YWxpZCB2YWx1ZS4NClNvIEkgdm90ZSBmb3Igc2F2aW5nIGl0IGFzIGlzLg0KSSBmdWxseSBhZ3Jl ZSB0aGF0IGl0IHNob3VsZCBiZSBkZWZpbmVkIHZlcnkgY2xlYXJseS4NCkkgdGhpbmsgdGhhdCBm b3IgYXJyYXlzIHdpdGggcHJlZGVmaW5lZCBzaXplIChJIGRvbid0IHRoaW5rIHdlIGhhdmUgc3Vj aCBpbiBydGVfZmxvdykNCml0IHNob3VsZCBiZSBkZWNsYXJlZCB0aGF0IHRoYXQgdGhlIGZpcnN0 IGVsZW1lbnQgc2hvdWxkIG5vdCBiZSAwLg0KDQo+ID4gKwkJWzFdID0gey50eXBlID0gUlRFX0ZM T1dfQUNUSU9OX1RZUEVfUVVFVUV9LA0KPiA+ICsJCVsyXSA9IHsudHlwZSA9IFJURV9GTE9XX0FD VElPTl9UWVBFX0VORCx9LA0KPiA+ICsJfTsNCj4gPiArCXN0cnVjdCBydGVfZmxvd19lcnJvciBl cnI7DQo+ID4gKw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKmFjdGlv bnNfdGVtcGxhdGUgPQ0KPiA+ICsJCXJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGVfY3JlYXRlKHBv cnQsICZhdHRyLCAmYWN0LCAmbXNrLCAmZXJyKTsNCj4gPiArDQo+ID4gK1RoZSBjb25jcmV0ZSB2 YWx1ZSBmb3IgUXVldWUgSW5kZXggd2lsbCBiZSBwcm92aWRlZCBhdCB0aGUgcnVsZSBjcmVhdGlv bi4NCj4gDQo+IFtzbmlwXQ0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxv dy5jIGIvbGliL2V0aGRldi9ydGVfZmxvdy5jDQo+ID4gaW5kZXggZmZkNDhlNDBkNS4uZTlmNjg0 ZWVkYiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPiArKysgYi9s aWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPiBAQCAtMTQ2MSwzICsxNDYxLDI1NSBAQCBydGVfZmxv d19jb25maWd1cmUodWludDE2X3QgcG9ydF9pZCwNCj4gPiAgIAkJCQkgIFJURV9GTE9XX0VSUk9S X1RZUEVfVU5TUEVDSUZJRUQsDQo+ID4gICAJCQkJICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNV UCkpOw0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxh dGUgKg0KPiA+ICtydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2NyZWF0ZSh1aW50MTZfdCBwb3J0 X2lkLA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2F0dHIg KnRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gcGF0dGVy bltdLA0KPiA+ICsJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4g PiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9y dF9pZCwgZXJyb3IpOw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUgKnRl bXBsYXRlOw0KPiA+ICsNCj4gPiArCWlmICh0ZW1wbGF0ZV9hdHRyID09IE5VTEwpIHsNCj4gPiAr CQlSVEVfRkxPV19MT0coRVJSLA0KPiA+ICsJCQkgICAgICJQb3J0ICUiUFJJdTE2IiB0ZW1wbGF0 ZSBhdHRyIGlzIE5VTEwuXG4iLA0KPiA+ICsJCQkgICAgIHBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9m bG93X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICsJCQkJICAgUlRFX0ZMT1dfRVJST1Jf VFlQRV9BVFRSLA0KPiA+ICsJCQkJICAgTlVMTCwgcnRlX3N0cmVycm9yKEVJTlZBTCkpOw0KPiA+ ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHBhdHRlcm4gPT0gTlVMTCkgew0K PiA+ICsJCVJURV9GTE9XX0xPRyhFUlIsDQo+ID4gKwkJCSAgICAgIlBvcnQgJSJQUkl1MTYiIHBh dHRlcm4gaXMgTlVMTC5cbiIsDQo+ID4gKwkJCSAgICAgcG9ydF9pZCk7DQo+ID4gKwkJcnRlX2Zs b3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsDQo+ID4gKwkJCQkgICBSVEVfRkxPV19FUlJPUl9U WVBFX0FUVFIsDQo+ID4gKwkJCQkgICBOVUxMLCBydGVfc3RyZXJyb3IoRUlOVkFMKSk7DQo+ID4g KwkJcmV0dXJuIE5VTEw7DQo+ID4gKwl9DQo+ID4gKwlpZiAoZGV2LT5kYXRhLT5mbG93X2NvbmZp Z3VyZWQgPT0gMCkgew0KPiA+ICsJCVJURV9GTE9XX0xPRyhJTkZPLA0KPiA+ICsJCQkiRmxvdyBl bmdpbmUgb24gcG9ydF9pZD0lIlBSSXUxNiIgaXMgbm90IGNvbmZpZ3VyZWQuXG4iLA0KPiA+ICsJ CQlwb3J0X2lkKTsNCj4gPiArCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4g PiArCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfU1RBVEUsDQo+ID4gKwkJCQlOVUxMLCBydGVfc3Ry ZXJyb3IoRUlOVkFMKSk7DQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKwl9DQo+ID4gKwlpZiAo dW5saWtlbHkoIW9wcykpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+IA0KPiBTZWUgbm90ZXMgYWJv dXQgb3JkZXIgb2YgY2hlY2tzIGluIHByZXZpb3VzIHBhdGNoIHJldmlldyBub3Rlcy4NCj4gDQo+ ID4gKwlpZiAobGlrZWx5KCEhb3BzLT5wYXR0ZXJuX3RlbXBsYXRlX2NyZWF0ZSkpIHsNCj4gPiAr CQl0ZW1wbGF0ZSA9IG9wcy0+cGF0dGVybl90ZW1wbGF0ZV9jcmVhdGUoZGV2LCB0ZW1wbGF0ZV9h dHRyLA0KPiA+ICsJCQkJCQkJcGF0dGVybiwgZXJyb3IpOw0KPiA+ICsJCWlmICh0ZW1wbGF0ZSA9 PSBOVUxMKQ0KPiA+ICsJCQlmbG93X2Vycihwb3J0X2lkLCAtcnRlX2Vycm5vLCBlcnJvcik7DQo+ ID4gKwkJcmV0dXJuIHRlbXBsYXRlOw0KPiA+ICsJfQ0KPiA+ICsJcnRlX2Zsb3dfZXJyb3Jfc2V0 KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lG SUVELA0KPiA+ICsJCQkgICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICsJcmV0 dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfZmxvd19wYXR0ZXJu X3RlbXBsYXRlX2Rlc3Ryb3kodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQlzdHJ1Y3QgcnRlX2Zs b3dfcGF0dGVybl90ZW1wbGF0ZSAqcGF0dGVybl90ZW1wbGF0ZSwNCj4gPiArCQlzdHJ1Y3QgcnRl X2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0KHBvcnRfaWQsIGVycm9yKTsNCj4gPiArDQo+ ID4gKwlpZiAodW5saWtlbHkocGF0dGVybl90ZW1wbGF0ZSA9PSBOVUxMKSkNCj4gPiArCQlyZXR1 cm4gMDsNCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJu bzsNCj4gDQo+IFNhbWUgaGVyZS4gSSdtIGFmcmFpZCBpdCBpcyByZWFsbHkgaW1wb3J0YW50IGhl cmUgYXMgd2VsbCwNCj4gc2luY2UgcmVxdWVzdCBzaG91bGQgbm90IHJldHVybiBPSyBpZiBwb3J0 X2lkIGlzIGludmFsaWQuDQo+IA0KPiANCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPnBhdHRlcm5f dGVtcGxhdGVfZGVzdHJveSkpIHsNCj4gPiArCQlyZXR1cm4gZmxvd19lcnIocG9ydF9pZCwNCj4g PiArCQkJCW9wcy0+cGF0dGVybl90ZW1wbGF0ZV9kZXN0cm95KGRldiwNCj4gPiArCQkJCQkJCSAg ICAgIHBhdHRlcm5fdGVtcGxhdGUsDQo+ID4gKwkJCQkJCQkgICAgICBlcnJvciksDQo+ID4gKwkJ CQllcnJvcik7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9y LCBFTk9UU1VQLA0KPiA+ICsJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0K PiA+ICsJCQkJICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZSAqDQo+ID4gK3J0ZV9mbG93X2Fj dGlvbnNfdGVtcGxhdGVfY3JlYXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCWNvbnN0IHN0 cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2F0dHIgKnRlbXBsYXRlX2F0dHIsDQo+ID4g KwkJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gYWN0aW9uc1tdLA0KPiA+ICsJCQljb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIG1hc2tzW10sDQo+ID4gKwkJCXN0cnVjdCBydGVfZmxv d19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0g JnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19v cHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsJc3RydWN0 IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKnRlbXBsYXRlOw0KPiA+ICsNCj4gPiArCWlmICh0 ZW1wbGF0ZV9hdHRyID09IE5VTEwpIHsNCj4gPiArCQlSVEVfRkxPV19MT0coRVJSLA0KPiA+ICsJ CQkgICAgICJQb3J0ICUiUFJJdTE2IiB0ZW1wbGF0ZSBhdHRyIGlzIE5VTEwuXG4iLA0KPiA+ICsJ CQkgICAgIHBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRUlOVkFM LA0KPiA+ICsJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BVFRSLA0KPiA+ICsJCQkJICAgTlVM TCwgcnRlX3N0cmVycm9yKEVJTlZBTCkpOw0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0K PiA+ICsJaWYgKGFjdGlvbnMgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9GTE9XX0xPRyhFUlIsDQo+ ID4gKwkJCSAgICAgIlBvcnQgJSJQUkl1MTYiIGFjdGlvbnMgaXMgTlVMTC5cbiIsDQo+ID4gKwkJ CSAgICAgcG9ydF9pZCk7DQo+ID4gKwkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUws DQo+ID4gKwkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FUVFIsDQo+ID4gKwkJCQkgICBOVUxM LCBydGVfc3RyZXJyb3IoRUlOVkFMKSk7DQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKwl9DQo+ ID4gKwlpZiAobWFza3MgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9GTE9XX0xPRyhFUlIsDQo+ID4g KwkJCSAgICAgIlBvcnQgJSJQUkl1MTYiIG1hc2tzIGlzIE5VTEwuXG4iLA0KPiA+ICsJCQkgICAg IHBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ ICsJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BVFRSLA0KPiA+ICsJCQkJICAgTlVMTCwgcnRl X3N0cmVycm9yKEVJTlZBTCkpOw0KPiA+ICsNCj4gPiArCX0NCj4gPiArCWlmIChkZXYtPmRhdGEt PmZsb3dfY29uZmlndXJlZCA9PSAwKSB7DQo+ID4gKwkJUlRFX0ZMT1dfTE9HKElORk8sDQo+ID4g KwkJCSJGbG93IGVuZ2luZSBvbiBwb3J0X2lkPSUiUFJJdTE2IiBpcyBub3QgY29uZmlndXJlZC5c biIsDQo+ID4gKwkJCXBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwg RUlOVkFMLA0KPiA+ICsJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9TVEFURSwNCj4gPiArCQkJ CSAgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFSU5WQUwpKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4g PiArCX0NCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4g DQo+IHNhbWUgaGVyZQ0KPiANCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPmFjdGlvbnNfdGVtcGxh dGVfY3JlYXRlKSkgew0KPiA+ICsJCXRlbXBsYXRlID0gb3BzLT5hY3Rpb25zX3RlbXBsYXRlX2Ny ZWF0ZShkZXYsIHRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJCQkJCQlhY3Rpb25zLCBtYXNrcywgZXJy b3IpOw0KPiA+ICsJCWlmICh0ZW1wbGF0ZSA9PSBOVUxMKQ0KPiA+ICsJCQlmbG93X2Vycihwb3J0 X2lkLCAtcnRlX2Vycm5vLCBlcnJvcik7DQo+ID4gKwkJcmV0dXJuIHRlbXBsYXRlOw0KPiA+ICsJ fQ0KPiA+ICsJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkgICBS VEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ICsJCQkgICBOVUxMLCBydGVfc3Ry ZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4g K2ludA0KPiA+ICtydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2Rlc3Ryb3kodWludDE2X3QgcG9y dF9pZCwNCj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKmFjdGlvbnNf dGVtcGxhdGUsDQo+ID4gKwkJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lk XTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19n ZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseShhY3Rpb25zX3Rl bXBsYXRlID09IE5VTEwpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJaWYgKHVubGlrZWx5KCFv cHMpKQ0KPiA+ICsJCXJldHVybiAtcnRlX2Vycm5vOw0KPiANCj4gc2FtZSBoZXJlDQo+IA0KPiA+ ICsJaWYgKGxpa2VseSghIW9wcy0+YWN0aW9uc190ZW1wbGF0ZV9kZXN0cm95KSkgew0KPiA+ICsJ CXJldHVybiBmbG93X2Vycihwb3J0X2lkLA0KPiA+ICsJCQkJb3BzLT5hY3Rpb25zX3RlbXBsYXRl X2Rlc3Ryb3koZGV2LA0KPiA+ICsJCQkJCQkJICAgICAgYWN0aW9uc190ZW1wbGF0ZSwNCj4gPiAr CQkJCQkJCSAgICAgIGVycm9yKSwNCj4gPiArCQkJCWVycm9yKTsNCj4gPiArCX0NCj4gPiArCXJl dHVybiBydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gKwkJCQkgIFJURV9G TE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsDQo+ID4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJlcnJv cihFTk9UU1VQKSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBydGVfZmxvd190ZW1wbGF0 ZV90YWJsZSAqDQo+ID4gK3J0ZV9mbG93X3RlbXBsYXRlX3RhYmxlX2NyZWF0ZSh1aW50MTZfdCBw b3J0X2lkLA0KPiA+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfdGVtcGxhdGVfdGFibGVfYXR0 ciAqdGFibGVfYXR0ciwNCj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUg KnBhdHRlcm5fdGVtcGxhdGVzW10sDQo+ID4gKwkJCXVpbnQ4X3QgbmJfcGF0dGVybl90ZW1wbGF0 ZXMsDQo+ID4gKwkJCXN0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlICphY3Rpb25zX3Rl bXBsYXRlc1tdLA0KPiA+ICsJCQl1aW50OF90IG5iX2FjdGlvbnNfdGVtcGxhdGVzLA0KPiA+ICsJ CQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKwljb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0KHBvcnRfaWQsIGVycm9y KTsNCj4gPiArCXN0cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZSAqdGFibGU7DQo+ID4gKw0K PiA+ICsJaWYgKHRhYmxlX2F0dHIgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9GTE9XX0xPRyhFUlIs DQo+ID4gKwkJCSAgICAgIlBvcnQgJSJQUkl1MTYiIHRhYmxlIGF0dHIgaXMgTlVMTC5cbiIsDQo+ ID4gKwkJCSAgICAgcG9ydF9pZCk7DQo+ID4gKwkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBF SU5WQUwsDQo+ID4gKwkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FUVFIsDQo+ID4gKwkJCQkg ICBOVUxMLCBydGVfc3RyZXJyb3IoRUlOVkFMKSk7DQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4g Kwl9DQo+ID4gKwlpZiAocGF0dGVybl90ZW1wbGF0ZXMgPT0gTlVMTCkgew0KPiA+ICsJCVJURV9G TE9XX0xPRyhFUlIsDQo+ID4gKwkJCSAgICAgIlBvcnQgJSJQUkl1MTYiIHBhdHRlcm4gdGVtcGxh dGVzIGlzIE5VTEwuXG4iLA0KPiA+ICsJCQkgICAgIHBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9mbG93 X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICsJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQ RV9BVFRSLA0KPiA+ICsJCQkJICAgTlVMTCwgcnRlX3N0cmVycm9yKEVJTlZBTCkpOw0KPiA+ICsJ CXJldHVybiBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGFjdGlvbnNfdGVtcGxhdGVzID09IE5V TEwpIHsNCj4gPiArCQlSVEVfRkxPV19MT0coRVJSLA0KPiA+ICsJCQkgICAgICJQb3J0ICUiUFJJ dTE2IiBhY3Rpb25zIHRlbXBsYXRlcyBpcyBOVUxMLlxuIiwNCj4gPiArCQkJICAgICBwb3J0X2lk KTsNCj4gPiArCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArCQkJCSAg IFJURV9GTE9XX0VSUk9SX1RZUEVfQVRUUiwNCj4gPiArCQkJCSAgIE5VTEwsIHJ0ZV9zdHJlcnJv cihFSU5WQUwpKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArCWlmIChkZXYt PmRhdGEtPmZsb3dfY29uZmlndXJlZCA9PSAwKSB7DQo+ID4gKwkJUlRFX0ZMT1dfTE9HKElORk8s DQo+ID4gKwkJCSJGbG93IGVuZ2luZSBvbiBwb3J0X2lkPSUiUFJJdTE2IiBpcyBub3QgY29uZmln dXJlZC5cbiIsDQo+ID4gKwkJCXBvcnRfaWQpOw0KPiA+ICsJCXJ0ZV9mbG93X2Vycm9yX3NldChl cnJvciwgRUlOVkFMLA0KPiA+ICsJCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9TVEFURSwNCj4g PiArCQkJCSAgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFSU5WQUwpKTsNCj4gPiArCQlyZXR1cm4gTlVM TDsNCj4gPiArCX0NCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gTlVM TDsNCj4gDQo+IE9yZGVyIG9mIGNoZWNrcw0KPiANCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPnRl bXBsYXRlX3RhYmxlX2NyZWF0ZSkpIHsNCj4gPiArCQl0YWJsZSA9IG9wcy0+dGVtcGxhdGVfdGFi bGVfY3JlYXRlKGRldiwgdGFibGVfYXR0ciwNCj4gPiArCQkJCQlwYXR0ZXJuX3RlbXBsYXRlcywg bmJfcGF0dGVybl90ZW1wbGF0ZXMsDQo+ID4gKwkJCQkJYWN0aW9uc190ZW1wbGF0ZXMsIG5iX2Fj dGlvbnNfdGVtcGxhdGVzLA0KPiA+ICsJCQkJCWVycm9yKTsNCj4gPiArCQlpZiAodGFibGUgPT0g TlVMTCkNCj4gPiArCQkJZmxvd19lcnIocG9ydF9pZCwgLXJ0ZV9lcnJubywgZXJyb3IpOw0KPiA+ ICsJCXJldHVybiB0YWJsZTsNCj4gPiArCX0NCj4gPiArCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJv ciwgRU5PVFNVUCwNCj4gPiArCQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9VTlNQRUNJRklFRCwN Cj4gPiArCQkJICAgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiArCXJldHVybiBO VUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQNCj4gPiArcnRlX2Zsb3dfdGVtcGxhdGVfdGFi bGVfZGVzdHJveSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQkJc3RydWN0IHJ0ZV9mbG93X3Rl bXBsYXRlX3RhYmxlICp0ZW1wbGF0ZV90YWJsZSwNCj4gPiArCQkJCXN0cnVjdCBydGVfZmxvd19l cnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0 ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMg Km9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlm ICh1bmxpa2VseSh0ZW1wbGF0ZV90YWJsZSA9PSBOVUxMKSkNCj4gPiArCQlyZXR1cm4gMDsNCj4g PiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAr CWlmIChsaWtlbHkoISFvcHMtPnRlbXBsYXRlX3RhYmxlX2Rlc3Ryb3kpKSB7DQo+ID4gKwkJcmV0 dXJuIGZsb3dfZXJyKHBvcnRfaWQsDQo+ID4gKwkJCQlvcHMtPnRlbXBsYXRlX3RhYmxlX2Rlc3Ry b3koZGV2LA0KPiA+ICsJCQkJCQkJICAgIHRlbXBsYXRlX3RhYmxlLA0KPiA+ICsJCQkJCQkJICAg IGVycm9yKSwNCj4gPiArCQkJCWVycm9yKTsNCj4gPiArCX0NCj4gPiArCXJldHVybiBydGVfZmxv d19lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gKwkJCQkgIFJURV9GTE9XX0VSUk9SX1RZ UEVfVU5TUEVDSUZJRUQsDQo+ID4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9UU1VQKSk7 DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxvdy5oIGIvbGliL2V0 aGRldi9ydGVfZmxvdy5oDQo+ID4gaW5kZXggY2RiN2IyYmU2OC4uNzc2ZThjY2MxMSAxMDA2NDQN Cj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0 ZV9mbG93LmgNCj4gPiBAQCAtNDk4Myw2ICs0OTgzLDI4MCBAQCBydGVfZmxvd19jb25maWd1cmUo dWludDE2X3QgcG9ydF9pZCwNCj4gPiAgIAkJICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X3BvcnRf YXR0ciAqcG9ydF9hdHRyLA0KPiA+ICAgCQkgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9y KTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICogT3BhcXVlIHR5cGUgcmV0dXJuZWQgYWZ0ZXIgc3Vj Y2Vzc2Z1bCBjcmVhdGlvbiBvZiBwYXR0ZXJuIHRlbXBsYXRlLg0KPiA+ICsgKiBUaGlzIGhhbmRs ZSBjYW4gYmUgdXNlZCB0byBtYW5hZ2UgdGhlIGNyZWF0ZWQgcGF0dGVybiB0ZW1wbGF0ZS4NCj4g PiArICovDQo+ID4gK3N0cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBB UEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogRmxv dyBwYXR0ZXJuIHRlbXBsYXRlIGF0dHJpYnV0ZXMuDQo+IA0KPiBXb3VsZCBpdCBiZSB1c2VmdWwg dG8gbWVudGlvbmVkIHRoYXQgYXQgbGVhc3Qgb25lIGRpcmVjdGlvbg0KPiBiaXQgbXVzdCBiZSBz ZXQ/IE90aGVyd2lzZSByZXF1ZXN0IGRvZXMgbm90IG1ha2Ugc2Vuc2UuDQo+IA0KQWdyZWUgb25l IGRpcmVjdGlvbiBtdXN0IGJlIHNldC4NCg0KPiA+ICsgKi8NCj4gPiArX19leHRlbnNpb25fXw0K PiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZV9hdHRyIHsNCj4gPiArCS8qKg0K PiA+ICsJICogUmVsYXhlZCBtYXRjaGluZyBwb2xpY3kuDQo+ID4gKwkgKiAtIFBNRCBtYXkgbWF0 Y2ggb25seSBvbiBpdGVtcyB3aXRoIG1hc2sgbWVtYmVyIHNldCBhbmQgc2tpcA0KPiA+ICsJICog bWF0Y2hpbmcgb24gcHJvdG9jb2wgbGF5ZXJzIHNwZWNpZmllZCB3aXRob3V0IGFueSBtYXNrcy4N Cj4gPiArCSAqIC0gSWYgbm90IHNldCwgUE1EIHdpbGwgbWF0Y2ggb24gcHJvdG9jb2wgbGF5ZXJz DQo+ID4gKwkgKiBzcGVjaWZpZWQgd2l0aG91dCBhbnkgbWFza3MgYXMgd2VsbC4NCj4gPiArCSAq IC0gUGFja2V0IGRhdGEgbXVzdCBiZSBzdGFja2VkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQ0K PiA+ICsJICogcHJvdG9jb2wgbGF5ZXJzIHRvIG1hdGNoIGluc2lkZSBwYWNrZXRzLCBzdGFydGlu ZyBmcm9tIHRoZSBsb3dlc3QuDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQzMl90IHJlbGF4ZWRfbWF0 Y2hpbmc6MTsNCj4gDQo+IEkgc2hvdWxkIG5vdGljZSB0aGlzIGVhcmxpZXIsIGJ1dCBpdCBsb29r cyBsaWtlIGEgbmV3IGZlYXR1cmUNCj4gd2hpY2ggc291bmRzIHVucmVsYXRlZCB0byB0ZW1wbGF0 ZXMuIElmIHNvLCBpdCBtYWtlcyBhc3ltbWV0cnkNCj4gaW4gc3luYyBhbmQgYXN5bmMgZmxvdyBy dWxlcyBjYXBhYmlsaXRpZXMuDQo+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQo+IA0KPiBBbnl3 YXksIHRoZSBmZWF0dXJlIGxvb2tzIGhpZGRlbiBpbiB0aGUgcGF0Y2guDQo+DQpObyB0aGlzIGlz IG5vdCBoaWRkZW4gZmVhdHVyZS4NCkluIGN1cnJlbnQgQVBJIGFwcGxpY2F0aW9uIG11c3Qgc3Bl Y2lmeSBhbGwgdGhlIHByZWNpZGluZyBpdGVtcywNCkZvciBleGFtcGxlIGFwcGxpY2F0aW9uIHdh bnRzIHRvIG1hdGNoIG9uIHVkcCBzb3VyY2UgcG9ydC4NClRoZSBydGUgZmxvdyB3aWxsIGxvb2sg c29tZXRoaW5nIGxpa2UgZXRoIC8gaXB2NC8gdWRwIHNwb3J0ID0geHh4IC4uIA0KV2hlbiBQTUQg Z2V0cyB0aGlzIHBhdHRlcm4gaXQgbXVzdCBlbmZvcmNlIHRoZSBhZnRlciB0aGUgZXRoDQp0aGVy ZSB3aWxsIGJlIElQdjQgYW5kIHRoZW4gVURQIGFuZCB0aGVuIGFkZCB0aGUgbWF0Y2ggZm9yIHRo ZQ0Kc3BvcnQuDQpUaGlzIG1lYW5zIHRoYXQgdGhlIFBNRCBhZGRlcyBleHRyYSBtYXRjaGluZy4N CklmIHRoZSBhcHBsaWNhdGlvbiBhbHJlYWR5IHZhbGlkYXRlZCB0aGF0IHRoZXJlIGlzIHVkcCBp biB0aGUgcGFja2V0DQppbiBncm91cCAwIGFuZCB0aGVuIGp1bXAgdG8gZ3JvdXAgMSAgaXQgY2Fu IHNhdmUgdGhlIEhXIHRob3NlIGV4dHJhIG1hdGNoaW5nDQpieSBlbmFibGluZyB0aGlzIGJpdCB3 aGljaCBtZWFucyB0aGF0IHRoZSBIVyBzaG91bGQgb25seSBtYXRjaCBvbiBpbXBsaWNpdA0KbWFz a2VkIGZpZWxkcy4NCg0KPiA+ICsJLyoqIFBhdHRlcm4gdmFsaWQgZm9yIHJ1bGVzIGFwcGxpZWQg dG8gaW5ncmVzcyB0cmFmZmljLiAqLw0KPiA+ICsJdWludDMyX3QgaW5ncmVzczoxOw0KPiA+ICsJ LyoqIFBhdHRlcm4gdmFsaWQgZm9yIHJ1bGVzIGFwcGxpZWQgdG8gZWdyZXNzIHRyYWZmaWMuICov DQo+ID4gKwl1aW50MzJfdCBlZ3Jlc3M6MTsNCj4gPiArCS8qKiBQYXR0ZXJuIHZhbGlkIGZvciBy dWxlcyBhcHBsaWVkIHRvIHRyYW5zZmVyIHRyYWZmaWMuICovDQo+ID4gKwl1aW50MzJfdCB0cmFu c2ZlcjoxOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4g KyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5v dGljZS4NCj4gPiArICoNCj4gPiArICogQ3JlYXRlIGZsb3cgcGF0dGVybiB0ZW1wbGF0ZS4NCj4g PiArICoNCj4gPiArICogVGhlIHBhdHRlcm4gdGVtcGxhdGUgZGVmaW5lcyBjb21tb24gbWF0Y2hp bmcgZmllbGRzIHdpdGhvdXQgdmFsdWVzLg0KPiA+ICsgKiBGb3IgZXhhbXBsZSwgbWF0Y2hpbmcg b24gNSB0dXBsZSBUQ1AgZmxvdywgdGhlIHRlbXBsYXRlIHdpbGwgYmUNCj4gPiArICogZXRoKG51 bGwpICsgSVB2NChzb3VyY2UgKyBkZXN0KSArIFRDUChzX3BvcnQgKyBkX3BvcnQpLA0KPiA+ICsg KiB3aGlsZSB2YWx1ZXMgZm9yIGVhY2ggcnVsZSB3aWxsIGJlIHNldCBkdXJpbmcgdGhlIGZsb3cg cnVsZSBjcmVhdGlvbi4NCj4gPiArICogVGhlIG51bWJlciBhbmQgb3JkZXIgb2YgaXRlbXMgaW4g dGhlIHRlbXBsYXRlIG11c3QgYmUgdGhlIHNhbWUNCj4gPiArICogYXQgdGhlIHJ1bGUgY3JlYXRp b24uDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVu dGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSB0ZW1wbGF0ZV9h dHRyDQo+ID4gKyAqICAgUGF0dGVybiB0ZW1wbGF0ZSBhdHRyaWJ1dGVzLg0KPiA+ICsgKiBAcGFy YW1baW5dIHBhdHRlcm4NCj4gPiArICogICBQYXR0ZXJuIHNwZWNpZmljYXRpb24gKGxpc3QgdGVy bWluYXRlZCBieSB0aGUgRU5EIHBhdHRlcm4gaXRlbSkuDQo+ID4gKyAqICAgVGhlIHNwZWMgbWVt YmVyIG9mIGFuIGl0ZW0gaXMgbm90IHVzZWQgdW5sZXNzIHRoZSBlbmQgbWVtYmVyIGlzIHVzZWQu DQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVy cm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUgdGhp cyBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0 dXJuDQo+ID4gKyAqICAgSGFuZGxlIG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVf ZXJybm8gaXMgc2V0Lg0KPiANCj4gRG9uJ3Qgd2Ugd2FudCB0byBiZSBleHBsaWNpdCBhYm91dCB1 c2VkIG5lZ2F0aXZlIGVycm9yIGNvZGU/DQo+IFRoZSBxdWVzdGlvbiBpcyBhcHBsaWNhYmxlIHRv IGFsbCBmdW5jdGlvbnMuDQo+IA0KU2FtZSBhbnN3ZXIgYXMgZ2l2ZW4gaW4gb3RoZXIgcGF0Y2gu DQpTaW5jZSBQTUQgbWF5IGhhdmUgZGlmZmVyZW50L2V4dHJhIGVycm9yIGNvZGVzIEkgZG9uJ3Qg dGhpbmsgd2Ugc2hvdWxkDQpnaXZlIHRoZW0gaGVyZS4NCg0KPiBbc25pcF0NCj4gDQo+ID4gKy8q Kg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1h eSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIEZsb3cgYWN0 aW9ucyB0ZW1wbGF0ZSBhdHRyaWJ1dGVzLg0KPiANCj4gU2FtZSBxdWVzdGlvbiBhYm91dCBubyBk aXJlY3Rpb25zIHNwZWNpZmllZC4NCj4gDQo+ID4gKyAqLw0KPiA+ICtfX2V4dGVuc2lvbl9fDQo+ ID4gK3N0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2F0dHIgew0KPiA+ICsJLyoqIEFj dGlvbiB2YWxpZCBmb3IgcnVsZXMgYXBwbGllZCB0byBpbmdyZXNzIHRyYWZmaWMuICovDQo+ID4g Kwl1aW50MzJfdCBpbmdyZXNzOjE7DQo+ID4gKwkvKiogQWN0aW9uIHZhbGlkIGZvciBydWxlcyBh cHBsaWVkIHRvIGVncmVzcyB0cmFmZmljLiAqLw0KPiA+ICsJdWludDMyX3QgZWdyZXNzOjE7DQo+ ID4gKwkvKiogQWN0aW9uIHZhbGlkIGZvciBydWxlcyBhcHBsaWVkIHRvIHRyYW5zZmVyIHRyYWZm aWMuICovDQo+ID4gKwl1aW50MzJfdCB0cmFuc2ZlcjoxOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogQ3JlYXRl IGZsb3cgYWN0aW9ucyB0ZW1wbGF0ZS4NCj4gPiArICoNCj4gPiArICogVGhlIGFjdGlvbnMgdGVt cGxhdGUgaG9sZHMgYSBsaXN0IG9mIGFjdGlvbiB0eXBlcyB3aXRob3V0IHZhbHVlcy4NCj4gPiAr ICogRm9yIGV4YW1wbGUsIHRoZSB0ZW1wbGF0ZSB0byBjaGFuZ2UgVENQIHBvcnRzIGlzIFRDUChz X3BvcnQgKyBkX3BvcnQpLA0KPiA+ICsgKiB3aGlsZSB2YWx1ZXMgZm9yIGVhY2ggcnVsZSB3aWxs IGJlIHNldCBkdXJpbmcgdGhlIGZsb3cgcnVsZSBjcmVhdGlvbi4NCj4gPiArICogVGhlIG51bWJl ciBhbmQgb3JkZXIgb2YgYWN0aW9ucyBpbiB0aGUgdGVtcGxhdGUgbXVzdCBiZSB0aGUgc2FtZQ0K PiA+ICsgKiBhdCB0aGUgcnVsZSBjcmVhdGlvbi4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIHBv cnRfaWQNCj4gPiArICogICBQb3J0IGlkZW50aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNlLg0KPiA+ ICsgKiBAcGFyYW1baW5dIHRlbXBsYXRlX2F0dHINCj4gPiArICogICBUZW1wbGF0ZSBhdHRyaWJ1 dGVzLg0KPiA+ICsgKiBAcGFyYW1baW5dIGFjdGlvbnMNCj4gPiArICogICBBc3NvY2lhdGVkIGFj dGlvbnMgKGxpc3QgdGVybWluYXRlZCBieSB0aGUgRU5EIGFjdGlvbikuDQo+ID4gKyAqICAgVGhl IHNwZWMgbWVtYmVyIGlzIG9ubHkgdXNlZCBpZiBAcCBtYXNrcyBzcGVjIGlzIG5vbi16ZXJvLg0K PiA+ICsgKiBAcGFyYW1baW5dIG1hc2tzDQo+ID4gKyAqICAgTGlzdCBvZiBhY3Rpb25zIHRoYXQg bWFya3Mgd2hpY2ggb2YgdGhlIGFjdGlvbidzIG1lbWJlciBpcyBjb25zdGFudC4NCj4gPiArICog ICBBIG1hc2sgaGFzIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb24u DQo+ID4gKyAqICAgSWYgdGhlIGFjdGlvbiBmaWVsZCBpbiBAcCBtYXNrcyBpcyBub3QgMCwNCj4g DQo+IENvbXBhcmlzb24gd2l0aCB6ZXJvIG1ha2VzIHNlbnNlIGZvciBpbnRlZ2VycyBvbmx5Lg0K PiANCg0KV2h5PyBJdCBjYW4gYWxzbyBiZSB3aXRoIHBvaW50ZXJzIGVudW1zLg0KDQo+ID4gKyAq ICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gYW4gYWN0aW9uIGZyb20gQHAgYWN0aW9ucyB3 aWxsIGJlIHRoZSBwYXJ0DQo+ID4gKyAqICAgb2YgdGhlIHRlbXBsYXRlIGFuZCB1c2VkIGluIGFs bCBmbG93IHJ1bGVzLg0KPiA+ICsgKiAgIFRoZSBvcmRlciBvZiBhY3Rpb25zIGluIEBwIG1hc2tz IGlzIHRoZSBzYW1lIGFzIGluIEBwIGFjdGlvbnMuDQo+ID4gKyAqICAgSW4gY2FzZSBvZiBpbmRp cmVjdCBhY3Rpb25zIHByZXNlbnQgaW4gQHAgYWN0aW9ucywNCj4gPiArICogICB0aGUgYWN0dWFs IGFjdGlvbiB0eXBlIHNob3VsZCBiZSBwcmVzZW50IGluIEBwIG1hc2suDQo+ID4gKyAqIEBwYXJh bVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBp ZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUgdGhpcyBzdHJ1Y3R1cmUgaW4g Y2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAg SGFuZGxlIG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0K PiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0cnVjdCBydGVfZmxvd19h Y3Rpb25zX3RlbXBsYXRlICoNCj4gPiArcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9jcmVhdGUo dWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uc190 ZW1wbGF0ZV9hdHRyICp0ZW1wbGF0ZV9hdHRyLA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb24gYWN0aW9uc1tdLA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24g bWFza3NbXSwNCj4gPiArCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gDQo+IFtz bmlwXQ0KDQpCZXN0LA0KT3JpDQoNCg==