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 4AEC3A0524; Sun, 11 Apr 2021 19:30:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 067971413F6; Sun, 11 Apr 2021 19:30:18 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2065.outbound.protection.outlook.com [40.107.237.65]) by mails.dpdk.org (Postfix) with ESMTP id 36F081413F5 for ; Sun, 11 Apr 2021 19:30:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QGvNCotStrzZtJ23Fupiw6l1F3Mpp3YUdvZkq17KLsPol0lW0+KwIBJ0Gdh/zF3LvKmRVNL2kfc8tCXIGJdN/XmD+vT4BvoTIBlRmsjR2Q3VmQkKWC8zyK63LDm8JMXvpykjj19MNbG51Xjr5Pcsvlc1mtr65yP2Zxtt+yFCRNL8I7uapEJG7KWlm6Zs5RN8Gjnbu/dt15IP/IJ8f2RRATcUVhnauIhqRd5OEy9ZeUMJeM7Ds1iHZQrEaw9CxNIs61ZHKU4wrgMfL9nO+dkcffl1aLMepu0jQI9PgEknsXeqnIXcwUAvJlWtG5esojw9A14DzvHXZ2uG1yPinyEeMQ== 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=xZoTvNHZncH9vq6Yi+NLRSsSADuyAoy0kgd5Zsk2H3c=; b=kaLrICaSVIsrWm3maWChxqIyz6+S/NITjSVVzLpAm0W6Oj0uog+o2Ke6a8PTOHDCiUCFbp7OIUG2mNtVAmUe/aQcVNPXxd3enrkhHsRZIxTI4t/rOIQEhgdYK1+EqCAAfCkrTb7LiU3tc8ltAdpENR1vePQfIGXpxRSL6dZ+NAEnw5O3b8jWG0btsM5x0jW0e3krAuCWRfYH3EVTUBOaogEbetQ2KZ1DlLqDgISAodXBd6dcj/IogdjOSTau19LFLEY+HBSuGMj8gVOkAlPywEpwzsY8Dk7ghxsoT4mEiu/PB/u+pppsm7NCNyI9fulMBECZ+ZCa1hhPQV6wqbnEhQ== 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=xZoTvNHZncH9vq6Yi+NLRSsSADuyAoy0kgd5Zsk2H3c=; b=lKzs8ZLHG2+gg7XmfQqCGA95lZkw9CXpzYJSPS5mhwBIZ7IItGfDmAMg9yjZQ8Eb1ACt2oQPT8Kd0SVb/bsqLwDm+GByxLnWLpCea/ZV/XYInZ7LiiWB6vJVEq19fns2eUeQzneV3MqCsrwmYLCv21uYR0YrS5wJfl2Hlg90x2vWvikdKVTFF+m0jf7UGIoSFxL3nzGi3he6ZW+I22jfgIo8M80fSiBOXGvPnQ7cI/R/33Fd9sEsZ0xG74fjDM7BBaBllmukCz2nSotYdDVWWCeUJSK3vJyK5RlR1sR26j7q77hVxussSOA2pJvLfzuuXEfeI+EJgkXgrN9v0bkxRg== Received: from DM6PR12MB4987.namprd12.prod.outlook.com (2603:10b6:5:163::31) by DM5PR1201MB0121.namprd12.prod.outlook.com (2603:10b6:4:56::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18; Sun, 11 Apr 2021 17:30:13 +0000 Received: from DM6PR12MB4987.namprd12.prod.outlook.com ([fe80::f5ce:c5a8:6aec:e308]) by DM6PR12MB4987.namprd12.prod.outlook.com ([fe80::f5ce:c5a8:6aec:e308%7]) with mapi id 15.20.4020.022; Sun, 11 Apr 2021 17:30:13 +0000 From: Ori Kam To: Ori Kam , Andrew Rybchenko , "ajit.khaparde@broadcom.com" , "ferruh.yigit@intel.com" , NBU-Contact-Thomas Monjalon CC: "dev@dpdk.org" , "jerinj@marvell.com" , "olivier.matz@6wind.com" , Slava Ovsiienko Thread-Topic: [PATCH] ethdev: add packet integrity checks Thread-Index: AQHXKkY8W6wGVWqEykm5+doDoWpA/qqqRy6AgAAzxBCAAV+cgIADAdLQgAC8OjA= Date: Sun, 11 Apr 2021 17:30:13 +0000 Message-ID: References: <1617645874-105139-1-git-send-email-orika@nvidia.com> <957123f7-dd1f-fdfd-a51b-d6a22be353bb@oktetlabs.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [147.236.145.126] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9d66620c-90fe-47bd-ab72-08d8fd0f7705 x-ms-traffictypediagnostic: DM5PR1201MB0121: 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:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: O9pOcEv/rXnj5zOJXt/2vlZNdDZHYBabEZysNkxEMvXqjFeSJrUf2/qMpN7mW7R/GlnaIyxL7dBoDNXM1YhMp3xXThBjycfwRqIW131EtPAZaPPx5N80Qb4rD3msiVXZlV98rFjAZFMHadDxmcIKh4SmWnTAkckCICngSG2gWfOSBELeD9icRRjhCysxjxXZjc8nmhloTNrmZqRG83RabjxDDIJQarEFLrgHa6kLfbUeTjdfSVrmo5bdU1NNOMrvQnddWA2dq8xiX9OvyuHOD85zJ8hHZr3yT61ELV1toxD79peFxG6ROpb+VyLzDgbPUH+gUD9Ozz65iReSCXsOMRGV/LGVsyV015a+NPYdU4RikLZslCUb/GS8SIWD1b/70stbjx2UhVF7w12oI//BZO0Am84SnRzdg0+7p0c10HTaH0RejPIjIUy9FIYVAcnQ4VaabKNOGfJOH1iiuNBpsznV3monQWx+GzkOQFEr7tj73Q59y+reg5XsOGONAL9c2kl2WXgVVemiZ1twe12k0bZ0i1T0eL1mR2ZD4t5gbaFX7KmEzmAjmmWTy8YbCck5PpzOmheVL04YSZgvW7l3RK4JzeO/UuCfaOop4THyous= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4987.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(136003)(396003)(39860400002)(346002)(9686003)(86362001)(8936002)(33656002)(2906002)(53546011)(52536014)(2940100002)(66946007)(26005)(4326008)(8676002)(30864003)(7696005)(54906003)(186003)(76116006)(6506007)(478600001)(316002)(64756008)(66556008)(66446008)(55016002)(38100700002)(107886003)(5660300002)(110136005)(66476007)(83380400001)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?ekcxcU5jSXhEUXlNZzhVSmk4Nm9LbTl6Vm5zOHFadmZDLzlxbzFkR3dSVW9m?= =?utf-8?B?WFIxTHFJUVdnV0tWVzdrT0Fxdm1LS2VPSzhsaFNpc1ZoR0txUDI5NVJ0bUtz?= =?utf-8?B?QVhvSUpHTGdOQjNxQmZYQ0NjTU1wZU1DakpoVE50M3lxcTFmaXNlTGhYd3lk?= =?utf-8?B?a0E1cjg1L2hpRXV3OUVSWWZNQWRDclFHQmxUQXozZk9EQUlnSEowVjZNYTEz?= =?utf-8?B?S1MxZk0vRUdra3VGalkwKzZJQlVoTFZlN2krZlVKVkNremFyS2Ztd1BQeFBM?= =?utf-8?B?V1haNFZwditlZUJaTDRuU1hIVkRVMGwvR1ZWbU4rNDV3bm9ySE5vdzNXbFpQ?= =?utf-8?B?R2dsRkNIbE0yaDNXZ2hKa1RhTmVHUnQzaVVvUEs5SW0yb3J4MDRuaitPeW10?= =?utf-8?B?NlM0TDd4NE9EcDBWU2M1dXNBN3o2dkJ6QjJqKzVSL0ZzdDBPMWtpSW9Ed3Bj?= =?utf-8?B?SGxKUExIaEh1K3RNZ3d4ZHFJK1FnSlhjZmsxd1grRXp4dWIvZGxUckFUYm0w?= =?utf-8?B?azJyY2xYMXFwb0pwR2ZHaytEU3hiSDd1eStoTlpzUVBWbnEvSktZSjZYSS9T?= =?utf-8?B?ZEd2NWVLWlI0K0JHMlVFTytqNzNkdXk2REtjdDdmLzJnVmpPMGtuemNabFdM?= =?utf-8?B?UVkvckRyTVJMRjVtak1JQmh1YWRsc1FVR01qNlBSQUJrLzM1THVKZk9ZbWVk?= =?utf-8?B?Z2VwUlVVRm56MmZ3bU1qOHBZYkpRQkpuTVMyVUVQTFhxYTBmOGQ0MlJ6Rm5a?= =?utf-8?B?d2JkcjdXWDNvUWkvK2k1UHkycGhBdElQMXNoMmFidnF5UWZ2cnR0dk03RUx6?= =?utf-8?B?S21WZ3VHN1QvNmFFWGEzVERSSzYxTHUrUDIyQU5qSnJlcTZVaWNlVVVBRDZP?= =?utf-8?B?cGVNaVlTWDVZa1Bxd1lIRGVVcUhzamo2VUhNMzNJb3Blb1pXaWJoZUNYWGE5?= =?utf-8?B?bkVRaXpTRUVzK2t2WTdwRGVjbGdCTG5EQ3pwWDRicTh4LzI2Z1FRQjFaZTZ2?= =?utf-8?B?SVh0NkdjS2phdzhENkNTeXRvTjNJWWc4RzBnWlhyb0krcG5SeHN6SjVvOWZL?= =?utf-8?B?SlF3eVF3VWs3OTJldG55aCtBTkxnMXZWN3VNcFU4Si9Za1BkSVJIWWNsSFd6?= =?utf-8?B?c3FmcCtwNHd4dHhnLy9JVzZyRHBSUlkyWVg0bEJ2QldOT2ZESW1lcTFSNjZm?= =?utf-8?B?eW1vanFCYW1OR21ON1ZoM2JaZUhJTE1kSGhORi8rTTJ2UXZvMDhIeWoyekpN?= =?utf-8?B?dzBjQ3JEb1BoUUxFU2g0eXFNRzAwNDFjYnBFMWpFc3lCSW9NclUralVsd2lV?= =?utf-8?B?L3hjRmxXMlRQM0hUVUx6Zm9ZYU9GTEh5blE4K21YcitIUUpUL1hQak5RTTRL?= =?utf-8?B?dnUvVTlWVkt0b212T0F5ZmVZSHpGT2ZFTmRPOEttRk1kbWFaN05BS1RTRWxu?= =?utf-8?B?YlU4RXdCUUEzdG9nRVQ5a1R0Q1JQNDFCQkFlQ0RFd3FKeThuV29GQ3FHbnBG?= =?utf-8?B?Y21pQVhHdHo1NTR3MEFWc281M1dHZHZZV0tWQ1NYRE9qejA4WXcwT0NCaSsr?= =?utf-8?B?M2lvV2xOeUVMR1JveEw5ajdZWEdXNDBWS2xNNHl6ZGlQQm56SEFKY2F6SW1i?= =?utf-8?B?U0RUdGxRTXVwRUdCbzFNMFJLaCt3VjJtcmJmdTk1aXlMNmR1L1JMV1lWZzhn?= =?utf-8?B?MlVweTkzd2tSbTB3TEt2K0VQL1JMMXl6anlPd1luS1FKSTVrd3hCbkFIb1Jr?= =?utf-8?Q?fzAjd2fSrntKeC87cQ7Ip1DXpxxmywS2TSkq8GC?= 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: DM6PR12MB4987.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d66620c-90fe-47bd-ab72-08d8fd0f7705 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2021 17:30:13.4453 (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: 1ehjqbiI3vj1woZJiFTe432LnfoTf32rwVrQqDljfJF9nRi5XQPT7VqC3szZ+bYOZN8Ccy7w9ACwstD9D5TfUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0121 Subject: Re: [dpdk-dev] [PATCH] ethdev: add packet integrity checks 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" SGksDQpTbWFsbCBhbnN3ZXIgdXBkYXRlICB0byBtYWtlIHRoZSBleGFtcGxlIG1vcmUgY2xlYXIu DQogKGFkZGluZyB0aGUgbWFzayB0byB0aGUgaXRlbSwgaW4gcHJldmlvdXMgbWFpbCBJIGFzc3Vt ZWQgaXQgaXMgY2xlYXIgdGhhdCB0aGUgbWFzayBpcyBvbiBvbmx5DQpmb3IgdGhlIHNlbGVjdGVk IGJpdHMsIGJ1dCBzaW5jZSBpdCBtYXkgbm90IGJlIGNsZWFyIEknbSBhZGRpbmcgdGhlIG1hc2sg aW4gdXNlKQ0KDQoNCkluIGFueSBjYXNlIHNpbmNlIFJDMSBpcyBhcm91bmQgdGhlIGNvcm5lciwg SSdtIGdvaW5nIHRvIHNlbmQgVjIgd2l0aCB0aGUgdGVzdHBtZA0KaW1wbGVtZW50YXRpb24sIHdo aWNoIEkgaG9wZSBtYWtlcyB0aGluZ3MgY2xlYXJlci4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2Yg T3JpIEthbQ0KPiANCj4gSGkgQW5kcmV3LA0KPiANCj4gUFNCLA0KPiANCj4gQmVzdCwNCj4gT3Jp DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBBbmRyZXcgUnliY2hl bmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gPg0KPiA+IE9uIDQvOC8yMSAy OjM5IFBNLCBPcmkgS2FtIHdyb3RlOg0KPiA+ID4gSGkgQW5kcmV3LA0KPiA+ID4NCj4gPiA+IFRo YW5rcyBmb3IgeW91ciBjb21tZW50cy4NCj4gPiA+DQo+ID4gPiBQU0IsDQo+ID4gPg0KPiA+ID4g QmVzdCwNCj4gPiA+IE9yaQ0KPiA+ID4NCj4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+ID4+IEZyb206IEFuZHJldyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRs YWJzLnJ1Pg0KPiA+ID4+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCA4LCAyMDIxIDExOjA1IEFNDQo+ ID4gPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gZXRoZGV2OiBhZGQgcGFja2V0IGludGVncml0eSBj aGVja3MNCj4gPiA+Pg0KPiA+ID4+IE9uIDQvNS8yMSA5OjA0IFBNLCBPcmkgS2FtIHdyb3RlOg0K PiA+ID4+PiBDdXJyZW50bHksIERQREsgYXBwbGljYXRpb24gY2FuIG9mZmxvYWQgdGhlIGNoZWNr c3VtIGNoZWNrLA0KPiA+ID4+PiBhbmQgcmVwb3J0IGl0IGluIHRoZSBtYnVmLg0KPiA+ID4+Pg0K PiA+ID4+PiBIb3dldmVyLCBhcyBtb3JlIGFuZCBtb3JlIGFwcGxpY2F0aW9ucyBhcmUgb2ZmbG9h ZGluZyBzb21lIG9yIGFsbA0KPiA+ID4+PiBsb2dpYyBhbmQgYWN0aW9uIHRvIHRoZSBIVywgdGhl cmUgaXMgYSBuZWVkIHRvIGNoZWNrIHRoZSBwYWNrZXQNCj4gPiA+Pj4gaW50ZWdyaXR5IHNvIHRo ZSByaWdodCBkZWNpc2lvbiBjYW4gYmUgdGFrZW4uDQo+ID4gPj4+DQo+ID4gPj4+IFRoZSBhcHBs aWNhdGlvbiBsb2dpYyBjYW4gYmUgcG9zaXRpdmUgbWVhbmluZyBpZiB0aGUgcGFja2V0IGlzDQo+ ID4gPj4+IHZhbGlkIGp1bXAgLyBkbyAgYWN0aW9ucywgb3IgbmVnYXRpdmUgaWYgcGFja2V0IGlz IG5vdCB2YWxpZA0KPiA+ID4+PiBqdW1wIHRvIFNXIC8gZG8gYWN0aW9ucyAobGlrZSBkcm9wKSAg YSwgYW5kIGFkZCBkZWZhdWx0IGZsb3cNCj4gPiA+Pj4gKG1hdGNoIGFsbCBpbiBsb3cgcHJpb3Jp dHkpIHRoYXQgd2lsbCBkaXJlY3QgdGhlIG1pc3MgcGFja2V0DQo+ID4gPj4+IHRvIHRoZSBtaXNz IHBhdGguDQo+ID4gPj4+DQo+ID4gPj4+IFNpbmNlIGN1cnJlbmx0eSBydGVfZmxvdyB3b3JrcyBp biBwb3NpdGl2ZSB3YXkgdGhlIGFzc3VtdGlvbiBpcw0KPiA+ID4+PiB0aGF0IHRoZSBwb3N0aXZl IHdheSB3aWxsIGJlIHRoZSBjb21tb24gd2F5IGluIHRoaXMgY2FzZSBhbHNvLg0KPiA+ID4+Pg0K PiA+ID4+PiBXaGVuIHRoaW5raW5nIHdoYXQgaXMgdGhlIGJlc3QgQVBJIHRvIGltcGxlbWVudCBz dWNoIGZlYXR1cmUsDQo+ID4gPj4+IHdlIG5lZWQgdG8gY29uc2lkdXJlIHRoZSBmb2xsb3dpbmcg KGluIG5vIHNwZWNpZmljIG9yZGVyKToNCj4gPiA+Pj4gMS4gQVBJIGJyZWFrYWdlLg0KPiA+ID4+ DQo+ID4gPj4gRmlyc3Qgb2YgYWxsIEkgZGlzYWdyZWUgdGhhdCAiQVBJIGJyZWFrYWdlIiBpcyBw dXQgYXMgYSB0b3ANCj4gPiA+PiBwcmlvcml0eS4gRGVzaWduIGlzIGEgdG9wIHByaW9yaXR5LCBz aW5jZSBpdCBpcyBhIGxvbmcgdGVybS4NCj4gPiA+PiBhUEkgYnJlYWthZ2UgaXMganVzdCBhIHNo b3J0IHRlcm0gaW5jb252ZW5pZW50LiBPZiBjb3Vyc2UsDQo+ID4gPj4gb3RoZXJzIG1heSBkaXNh Z3JlZSwgYnV0IHRoYXQncyBteSBwb2ludCBvZiB2aWV3Lg0KPiA+ID4+DQo+ID4gPiBJIGFncmVl IHdpdGggeW91LCBhbmQgbGlrZSBJIHNhaWQgdGhlIG9yZGVyIG9mIHRoZSBsaXN0IGlzIG5vdA0K PiA+ID4gYWNjb3JkaW5nIHRvIHByaW9yaXRpZXMuDQo+ID4gPiBJIHRydWx5IGJlbGlldmUgdGhh dCB3aGF0IEknbSBzdWdnZXN0aW5nIGlzIHRoZSBiZXN0IGRlc2lnbi4NCj4gPiA+DQo+ID4gPg0K PiA+ID4+PiAyLiBTaW1wbGljaXR5Lg0KPiA+ID4+PiAzLiBQZXJmb3JtYW5jZS4NCj4gPiA+Pj4g NC4gSFcgY2FwYWJpbGl0aWVzLg0KPiA+ID4+PiA1LiBydGVfZmxvdyBsaW1pdGF0aW9uLg0KPiA+ ID4+PiA2LiBGbGV4YWJpbGl0eS4NCj4gPiA+Pj4NCj4gPiA+Pj4gRmlyc3Qgb3B0aW9uOiBBZGQg aW50ZWdyaXR5IGZsYWdzIHRvIGVhY2ggb2YgdGhlIGl0ZW1zLg0KPiA+ID4+PiBGb3IgZXhhbXBs ZSBhZGQgY2hlY2tzdW1fb2sgdG8gaXB2NCBpdGVtLg0KPiA+ID4+Pg0KPiA+ID4+PiBQcm9zOg0K PiA+ID4+PiAxLiBObyBuZXcgcnRlX2Zsb3cgaXRlbS4NCj4gPiA+Pj4gMi4gU2ltcGxlIGluIHRo ZSB3YXkgdGhhdCBvbiBlYWNoIGl0ZW0gdGhlIGFwcCBjYW4gc2VlDQo+ID4gPj4+IHdoYXQgY2hl Y2tzIGFyZSBhdmFpbGFibGUuDQo+ID4gPj4NCj4gPiA+PiAzLiBOYXRpdmVseSBzdXBwb3J0cyB2 YXJpb3VzIHR1bm5lbHMgd2l0aG91dCBhbnkgZXh0cmENCj4gPiA+PiAgICBjaGFuZ2VzIGluIGEg c2hhcmVkIGl0ZW0gZm9yIGFsbCBsYXllcnMuDQo+ID4gPj4NCj4gPiA+IEFsc28gaW4gdGhlIGN1 cnJlbnQgc3VnZ2VzdGVkIGFwcHJvYWNoLCB3ZSBoYXZlIHRoZSBsZXZlbCBtZW1iZXIsDQo+ID4g PiBTbyB0dW5uZWxzIGFyZSBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4gSWYgc29tZW9uZSB3YW50cyB0 byBjaGVjayBhbHNvIHR1bm5lbA0KPiA+ID4gaGUganVzdCBuZWVkIHRvIGFkZCB0aGlzIGl0ZW0g YWdhaW4gd2l0aCB0aGUgcmlnaHQgbGV2ZWwuIChqdXN0IGxpa2Ugd2l0aCBvdGhlcg0KPiA+ID4g aXRlbXMpDQo+ID4NCj4gPiBUaGFua3MsIG1pc3NlZCBpdC4gSXMgaXQgT0sgdG8gaGF2ZSBqdXN0 IG9uZSBpdGVtIHdpdGgNCj4gPiBsZXZlbCAxIG9yIDI/DQo+ID4NCj4gWWVzLCBvZiBjb3Vyc2Us IGlmIHRoZSBhcHBsaWNhdGlvbiBqdXN0IHdhbnRzIHRvIGNoZWNrIHRoZSBzYW5pdHkgb2YgdGhl IGlubmVyDQo+IHBhY2tldCBoZSBjYW4NCj4ganVzdCB1c2Ugb25lIGludGVncml0eSBpdGVtIHdp dGggbGV2ZWwgb2YgMi4NCj4gDQo+IA0KPiA+IFdoYXQgaGFwcGVucyBpZiB0d28gaXRlbXMgd2l0 aCBsZXZlbCAwIGFuZCBsZXZlbCAxIGFyZQ0KPiA+IHNwZWNpZmllZCwgYnV0IHRoZSBwYWNrZXQg aGFzIG5vIGVuY2Fwc3VsYXRpb24/DQo+ID4NCj4gTGV2ZWwgemVybyBpcyB0aGUgZGVmYXVsdCBv bmUgKHRoZSBkZWZhdWx0IGp1c3QgbGlrZSBpbiBSU1MgY2FzZSBpcw0KPiBQTUQgZGVwZW5kZW50 IGJ1dCBpbiBhbnkgY2FzZSAgZnJvbSBteSBrbm93bGVkZ2UgbGF5ZXIgMCBpZiB0aGVyZSBpcyBu bw0KPiB0dW5uZWwNCj4gd2lsbCBwb2ludCB0byB0aGUgaGVhZGVyKSBhbmQgbGV2ZWwgMSBpcyB0 aGUgb3V0ZXIgbW9zdCBzbyBpbiB0aGlzIGNhc2UgYm90aCBvZg0KPiB0aGVtDQo+IGFyZSBwb2lu dGluZyB0byB0aGUgc2FtZSBjaGVja3MuDQo+IEJ1dCBpZiBmb3IgZXhhbXBsZSB3ZSB1c2UgbGV2 ZWwgPSAyIHRoZW4gdGhlIGNoZWNrcyBmb3IgbGV2ZWwgMiBzaG91bGQgZmFpbC4NCj4gU2luY2Ug dGhlIHBhY2tldCBkb2Vzbid0IGhvbGQgc3VjaCBpbmZvLCBqdXN0IGxpa2UgaWYgeW91IGNoZWNr IHN0YXRlIG9mIGw0IGFuZA0KPiB0aGVyZSBpcw0KPiBubyBsNCBpdCBzaG91bGQgZmFpbHMuDQo+ IA0KPiANCj4gPiA+Pj4NCj4gPiA+Pj4gQ29uczoNCj4gPiA+Pj4gMS4gQVBJIGJyZWFrYWdlLg0K PiA+ID4+PiAyLiBpbmNyZWFzZSBudW1iZXIgb2YgZmxvd3MsIHNpbmNlIGFwcCBjYW4ndCBhZGQg Z2xvYmFsIHJ1bGUgYW5kDQo+ID4gPj4+ICAgIG11c3QgaGF2ZSBkZWRpY2F0ZWQgZmxvdyBmb3Ig ZWFjaCBvZiB0aGUgZmxvdyBjb21iaW5hdGlvbnMsIGZvcg0KPiBleGFtcGxlDQo+ID4gPj4+ICAg IG1hdGNoaW5nIG9uIGljbXAgdHJhZmZpYyBvciBVRFAvVENQICB0cmFmZmljIHdpdGggSVB2NCAv IElQdjYgd2lsbA0KPiA+ID4+PiAgICByZXN1bHQgaW4gNSBmbG93cy4NCj4gPiA+Pg0KPiA+ID4+ IENvdWxkIHlvdSBleHBhbmQgaXQ/IFNob3VsZG4ndCBIVyBvZmZsb2FkZWQgZmxvd3Mgd2l0aCBn b29kDQo+ID4gPj4gY2hlY2tzdW1zIGdvIGludG8gZGVkaWNhdGVkIHF1ZXVlcyB3aGVyZSBhcyBi YWQgcGFja2V0cyBnbw0KPiA+ID4+IHZpYSBkZWZhdWx0IHBhdGggKGkuZS4gbm8gZXh0cmEgcnVs ZXMpPw0KPiA+ID4+DQo+ID4gPiBJJ20gbm90IHN1cmUgd2hhdCBkbyB5b3UgbWVhbiwgaW4gYSBs b3Qgb2YgdGhlIGNhc2VzDQo+ID4gPiBBcHBsaWNhdGlvbiB3aWxsIHVzZSB0aGF0IHRvIGRldGVj dCB2YWxpZCBwYWNrZXRzIGFuZCB0aGVuDQo+ID4gPiBmb3J3YXJkIG9ubHkgdmFsaWQgcGFja2V0 cyBkb3duIHRoZSBmbG93LiAoY2hlY2sgdmFsaWQganVtcA0KPiA+ID4gLS0+IG9uIG5leHQgZ3Jv dXAgZGVjYXAgLi4uLikNCj4gPiA+IEluIG90aGVyIGNhc2VzIHRoZSBhcHAgbWF5IGNob29zZSB0 byBkcm9wIHRoZSBiYWQgcGFja2V0cyBvciBjb3VudA0KPiA+ID4gYW5kIHRoZW4gZHJvcCwgbWF5 YmUgc2FtcGxlIHRoZW0gdG8gY2hlY2sgdGhpcyBpcyBub3QgcGFydCBvZiBhbiBhdHRhY2suDQo+ ID4gPg0KPiA+ID4gVGhpcyBpcyB3aGF0IGlzIGdyZWF0IGFib3V0IHRoaXMgZmVhdHVyZSB3ZSBq dXN0IGdpdmUgdGhlIGFwcA0KPiA+ID4gdGhlIGFiaWxpdHkgdG8gb2ZmbG9hZCB0aGUgc2FuaXR5 IGNoZWNrcyBhbmQgYmUgdGhhdCBlbmFibGVzIGl0DQo+ID4gPiB0byBvZmZsb2FkIHRoZSB0cmFm ZmljIGl0c2VsZg0KPiA+DQo+ID4gUGxlYXNlLCB3aGVuIHlvdSBzYXkgImluY3JlYXNlIG51bWJl ciBvZiBmbG93cy4uLiBpbiA1IGZsb3dzIg0KPiA+IGp1c3QgdHJ5IHRvIGV4cHJlc3MgaW4gZmxv dyBydWxlcyBpbiBib3RoIGNhc2VzLiBKdXN0IGZvciBteQ0KPiA+IHVuZGVyc3RhbmRpbmcuIFNp bmNlIHlvdSBjYWxjdWxhdGVkIGZsb3dzIHlvdSBzaG91bGQgaGF2ZSBhDQo+ID4gcmVhbCBleGFt cGxlLg0KPiA+DQo+IFN1cmUsICB5b3UgYXJlIHJpZ2h0IEkgc2hvdWxkIGhhdmUgYSBiZXR0ZXIg ZXhhbXBsZS4NCj4gTGV0cyB0YWtlIHRoZSBleGFtcGxlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdh bnQgYWxsIHZhbGlkIHRyYWZmaWMgdG8NCj4ganVtcCB0byBncm91cCAyLg0KPiBUaGUgcG9zc2li aWxpdGllcyBvZiB2YWxpZCB0cmFmZmljIGNhbiBiZToNCj4gRXRoIC8gaXB2NC4NCj4gRXRoIC8g aXB2Ng0KPiBFdGggLyBpcHY0IC8gdWRwDQo+IEV0aC8gaXZwNCAvIHRjcA0KPiBFdGggLyBpcHY2 IC8gdWRwDQo+IEV0aCAvIGlwdjYgLyB0Y3ANCj4gDQo+IFNvIGlmIHdlIHVzZSB0aGUgZXhpc3Rp bmcgaXRlbXMgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyA2IGZsb3dzOg0KPiBGbG93IGNyZWF0 ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY0ICB2YWxpZCA9IDEgLyBlbmQgYWN0aW9uIGp1 bXAgZ3JvdXAgMg0KPiBGbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY2ICB2 YWxpZCA9IDEgLyBlbmQgYWN0aW9uIGp1bXAgZ3JvdXAgMg0KPiBGbG93IGNyZWF0ZSAwIGluZ3Jl c3MgcGF0dGVybiBldGggLyBpcHY0ICB2YWxpZCA9IDEgLyB1ZHAgdmFsaWQgPSAxLyBlbmQgYWN0 aW9uDQo+IGp1bXAgZ3JvdXAgMg0KPiBGbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGgg LyBpcHY0ICB2YWxpZCA9IDEgLyB0Y3AgdmFsaWQgPSAxLyBlbmQgYWN0aW9uDQo+IGp1bXAgZ3Jv dXAgMg0KPiBGbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY2ICB2YWxpZCA9 IDEgLyB1ZHAgdmFsaWQgPSAxLyBlbmQgYWN0aW9uDQo+IGp1bXAgZ3JvdXAgMg0KPiBGbG93IGNy ZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY2ICB2YWxpZCA9IDEgLyB1ZHAgdmFsaWQg PSAxLyBlbmQgYWN0aW9uDQo+IGp1bXAgZ3JvdXAgMg0KPiANCj4gV2hpbGUgaWYgd2UgdXNlIHRo ZSBuZXcgaXRlbSBhcHByb2FjaDoNCj4gRmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gaW50 ZWdyaXR5X2NoZWNrIHBhY2tldF9vayA9MSAvIGVuZCBhY3Rpb24ganVtcA0KPiBncm91cCAyDQpB ZGQgdGhlIG1pc3NpbmcgbWFzaw0KDQogRmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gaW50 ZWdyaXR5X2NoZWNrIHNwZWMoIHBhY2tldF9vayA9IDEpIG1hc2sgPSAocGFja2V0X29rID0gMSkg IC8gZW5kIGFjdGlvbiBqdW1wDQogZ3JvdXAgMg0KPiANCj4gDQo+IElmIHdlIHRha2UgdGhlIGNh c2UgdGhhdCB3ZSBqdXN0IHdhbnQgdmFsaWQgbDQgcGFja2V0cyB0aGVuIHRoZSBmbG93cyB3aXRo DQo+IGV4aXN0aW5nIGl0ZW1zIHdpbGwgYmU6DQo+IEZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0 ZXJuIGV0aCAvIGlwdjQgIHZhbGlkID0gMSAvIHVkcCB2YWxpZCA9IDEvIGVuZCBhY3Rpb24NCj4g anVtcCBncm91cCAyDQo+IEZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0ZXJuIGV0aCAvIGlwdjQg IHZhbGlkID0gMSAvIHRjcCB2YWxpZCA9IDEvIGVuZCBhY3Rpb24NCj4ganVtcCBncm91cCAyDQo+ IEZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0ZXJuIGV0aCAvIGlwdjYgIHZhbGlkID0gMSAvIHVk cCB2YWxpZCA9IDEvIGVuZCBhY3Rpb24NCj4ganVtcCBncm91cCAyDQo+IEZsb3cgY3JlYXRlIDAg aW5ncmVzcyBwYXR0ZXJuIGV0aCAvIGlwdjYgIHZhbGlkID0gMSAvIHVkcCB2YWxpZCA9IDEvIGVu ZCBhY3Rpb24NCj4ganVtcCBncm91cCAyDQo+IA0KPiBXaGlsZSB3aXRoIHRoZSBuZXcgaXRlbToN Cj4gRmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gaW50ZWdyaXR5X2NoZWNrIGw0X29rID0x IC8gZW5kIGFjdGlvbiBqdW1wIGdyb3VwDQo+IDINCj4gDQpBZGQgdGhlIG1pc3NpbmcgbWFzayB0 byB0aGUgbmV3IGl0ZW06DQpGbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBpbnRlZ3JpdHlf Y2hlY2sgIHNwZWMgPSAobDJfb2sgPTEgIHwgbDNfb2sgPSAxIHwgbDRfb2sgPSAxKSBtYXNrID0g KGwyX29rID0xICB8IGwzX29rID0gMSB8IGw0X29rID0gMSkgIC8gZW5kIGFjdGlvbiBqdW1wIGdy b3VwDQoNCj4gSXMgdGhpcyBjbGVhcmVyPw0KPiANCj4gDQo+ID4gPj4+DQo+ID4gPj4+IFNlY29u ZCBvcHRpb246IGRlZGljYXRlZCBpdGVtDQo+ID4gPj4+DQo+ID4gPj4+IFByb3M6DQo+ID4gPj4+ IDEuIE5vIEFQSSBicmVha2FnZSwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gZm9yIHNvbWUgdGltZSBk dWUgdG8gaGF2aW5nDQo+ID4gPj4+ICAgIGV4dHJhIHNwYWNlLiAoYnkgdXNpbmcgYml0cykNCj4g PiA+Pj4gMi4gSnVzdCBvbmUgZmxvdyB0byBzdXBwb3J0IHRoZSBpY21wIG9yIFVEUC9UQ1AgdHJh ZmZpYyB3aXRoIElQdjQgLw0KPiA+ID4+PiAgICBJUHY2Lg0KPiA+ID4+DQo+ID4gPj4gSXQgZGVw ZW5kcyBvbiBob3cgYmFkIChvciBnb29kMCBwYWNrZXRzIGFyZSBoYW5kbGVkLg0KPiA+ID4+DQo+ ID4gPiBOb3Qgc3VyZSB3aGF0IGRvIHlvdSBtZWFuLA0KPiA+DQo+ID4gQWdhaW4sIEkgaG9wZSB3 ZSB1bmRlcnN0YW5kIGVhY2ggb3RoZXIgd2hlbiB3ZSB0YWxrIGluIHRlcm1zDQo+ID4gb2YgcmVh bCBleGFtcGxlIGFuZCBmbG93IHJ1bGVzLg0KPiA+DQo+IFBsZWFzZSBzZWUgYW5zd2VyIGFib3Zl Lg0KPiBJIGhvcGUgaXQgd2lsbCBtYWtlIHRoaW5ncyBjbGVhcmVyLg0KPiANCj4gPiA+Pj4gMy4g U2ltcGxpY2l0eSBhcHBsaWNhdGlvbiBjYW4ganVzdCBsb29rIGF0IG9uZSBwbGFjZSB0byBzZWUg YWxsIHBvc3NpYmxlDQo+ID4gPj4+ICAgIGNoZWNrcy4NCj4gPiA+Pg0KPiA+ID4+IEl0IGlzIGEg ZHJhd2JhY2sgZnJvbSBteSBwb2ludCBvZiB2aWV3LCBzaW5jZSBJUHY0IGNoZWNrc3VtDQo+ID4g Pj4gY2hlY2sgaXMgb3V0IG9mIElQdjQgbWF0Y2ggaXRlbS4gSS5lLiBhbmFseXppbmcgSVB2NCB5 b3Ugc2hvdWxkDQo+ID4gPj4gdGFrZSBhIGxvb2sgYXQgMiBkaWZmZXJlbnQgZmxvdyBpdGVtcy4N Cj4gPiA+Pg0KPiA+ID4gQXJlIHlvdSB0YWxraW5nIGZyb20gYXBwbGljYXRpb24gdmlldyBwb2lu dCwgUE1EICBvciBIVz8NCj4gPiA+IEZyb20gYXBwbGljYXRpb24geWVzIGl0IGlzIHRydWUgaGUg bmVlZHMgdG8gYWRkIG9uZSBtb3JlIGl0ZW0NCj4gPiA+IHRvIHRoZSBsaXN0LCAoZGVwZW5kaW5n IG9uIGhpcyBmbG93cywgc2luY2UgaGUgY2FuIGhhdmUganVzdA0KPiA+ID4gb25lIGZsb3cgdGhh dCBjaGVja3MgYWxsIHBhY2tldCBsaWtlIEkgc2FpZCBhbmQgbW92ZSB0aGUgZ29vZA0KPiA+ID4g b25lcyB0byBhIGRpZmZlcmVudCBncm91cCBhbmQgaW4gdGhhdCBncm91cCBoZSB3aWxsIG1hdGNo IHRoZQ0KPiA+ID4gaXB2NCBpdGVtLg0KPiA+ID4gRm9yIGV4YW1wbGU6DQo+ID4gPiAuLi4gcGF0 dGVybiBpbnRlZ3JpdHkgPSB2YWxpZCBhY3Rpb24ganVtcCBncm91cCAzDQo+ID4gPiBHcm91cCAz IHBhdHRlcm4gLi4uLiBpcHY0IC4uLiBhY3Rpb25zIC4uLi4uDQo+ID4gPiBHcm91cCAzIHBhdHRl cm4gLi4uLmlwdjYgLi4uLiBhY3Rpb25zIC4uLg0KPiA+ID4NCj4gPiA+IEluIGFueSBjYXNlIGF0 IHdvcnNlIGNhc2UgaXQgaXMganVzdCBhZGRpbmcgb25lIG1vcmUgaXRlbQ0KPiA+ID4gdG8gdGhl IGZsb3cuDQo+ID4gPg0KPiA+ID4gRnJvbSBQTUQvSFcgZXh0cmEgaXRlbXMgZG9lc24ndCBtZWFu IGV4dHJhIGFjdGlvbiBpbiBIVw0KPiA+ID4gdGhleSBjYW4gYmUgY29tYmluZWQsIGp1c3QgbGlr ZSB0aGV5IHdvdWxkIGhhdmUgaXQgdGhlDQo+ID4gPiBjb25kaXRpb24gd2FzIGluIHRoZSBpdGVt IGl0c2VsZi4NCj4gPiA+DQo+ID4gPj4+IDQuIEFsbG93IGZ1dHVyZSBzdXBwb3J0IGZvciBtb3Jl IHRlc3RzLg0KPiA+ID4+DQo+ID4gPj4gSXQgaXMgdGhlIHNhbWUgZm9yIGJvdGggc29sdXRpb24g c2luY2UgcGVyLWl0ZW0gc29sdXRpb24NCj4gPiA+PiBjYW4ga2VlcCByZXNlcnZlZCBiaXRzIHdo aWNoIG1heSBiZSB1c2VkIGluIHRoZSBmdXR1cmUuDQo+ID4gPj4NCj4gPiA+IFllcyBJIGFncmVl LA0KPiA+ID4NCj4gPiA+Pj4NCj4gPiA+Pj4gQ29uczoNCj4gPiA+Pj4gMS4gTmV3IGl0ZW0sIHRo YXQgaG9sZHMgbnVtYmVyIG9mIGZpZWxkcyBmcm9tIGRpZmZlcmVudCBpdGVtcy4NCj4gPiA+Pg0K PiA+ID4+IDIuIE5vdCB0aGF0IG5pY2UgZm9yIHR1bm5lbHMuDQo+ID4gPg0KPiA+ID4gUGxlYXNl IGxvb2sgYXQgYWJvdmUgKG5vdCBkaXJlY3QgKSByZXNwb25zZSBzaW5jZSB3ZSBoYXZlIHRoZSBs ZXZlbCBtZW1iZXINCj4gPiA+IHR1bm5lbHMgYXJlIGhhbmRsZWQgdmVyeSBuaWNlbHkuDQo+ID4g Pg0KPiA+ID4+DQo+ID4gPj4+DQo+ID4gPj4+IEZvciBzdGFydGVyIHRoZSBmb2xsb3dpbmcgYml0 cyBhcmUgc3VnZ2VzdGVkOg0KPiA+ID4+PiAxLiBwYWNrZXRfb2sgLSBtZWFucyB0aGF0IGFsbCBI VyBjaGVja3MgZGVwZW5kaW5nIG9uIHBhY2tldCBsYXllciBoYXZlDQo+ID4gPj4+ICAgIHBhc3Nl ZC4gVGhpcyBtYXkgbWVhbiB0aGF0IGluIHNvbWUgSFcgc3VjaCBmbG93IHNob3VsZCBiZSBzcGxp dGVkIHRvDQo+ID4gPj4+ICAgIG51bWJlciBvZiBmbG93cyBvciBmYWlsLg0KPiA+ID4+PiAyLiBs Ml9vayAtIGFsbCBjaGVjayBmbG9yIGxheWVyIDIgaGF2ZSBwYXNzZWQuDQo+ID4gPj4+IDMuIGwz X29rIC0gYWxsIGNoZWNrIGZsb3IgbGF5ZXIgMiBoYXZlIHBhc3NlZC4gSWYgcGFja2V0IGRvZW5z J3QgaGF2ZQ0KPiA+ID4+PiAgICBsMyBsYXllciB0aGlzIGNoZWNrIHNob3VkbCBmYWlsLg0KPiA+ ID4+PiA0LiBsNF9vayAtIGFsbCBjaGVjayBmbG9yIGxheWVyIDIgaGF2ZSBwYXNzZWQuIElmIHBh Y2tldCBkb2Vzbid0DQo+ID4gPj4+ICAgIGhhdmUgbDQgbGF5ZXIgdGhpcyBjaGVjayBzaG91bGQg ZmFpbC4NCj4gPiA+Pj4gNS4gbDJfY3JjX29rIC0gdGhlIGxheWVyIDIgY3JjIGlzIE8uSy4gaXQg aXMgcG9zc2libGUgdGhhdCB0aGUgY3JjIHdpbGwNCj4gPiA+Pj4gICAgYmUgTy5LLiBidXQgdGhl IGwzX29rIHdpbGwgYmUgMC4gaXQgaXMgbm90IHBvc3NpYmxlIHRoYXQgbDJfY3JjX29rIHdpbGwN Cj4gPiA+Pj4gICAgYmUgMCBhbmQgdGhlIGwzX29rIHdpbGwgYmUgMC4NCj4gPiA+Pj4gNi4gaXB2 NF9jc3VtX29rIC0gSVB2NCBjaGVja3N1bSBpcyBPLksuDQo+ID4gPj4+IDcuIGw0X2NzdW1fb2sg LSBsYXllciA0IGNoZWNrc3VtIGlzIE8uSy4NCj4gPiA+Pj4gOC4gbDNfbGVuX09LIC0gY2hlY2sg dGhhdCB0aGUgcmVwb3J0ZWQgbGF5ZXIgMyBsZW4gaXMgc21hbGxlciB0aGFuIHRoZQ0KPiA+ID4+ PiAgICBwYWNrZXQgbGVuLg0KPiA+ID4+Pg0KPiA+ID4+PiBFeGFtcGxlIG9mIHVzYWdlOg0KPiA+ ID4+PiAxLiBjaGVjayBwYWNrZXRzIGZyb20gYWxsIHBvc3NpYmxlIGxheWVycyBmb3IgaW50ZWdy aXR5Lg0KPiA+ID4+PiAgICBmbG93IGNyZWF0ZSBpbnRlZ3JpdHkgc3BlYyBwYWNrZXRfb2sgPSAx IG1hc2sgcGFja2V0X29rID0gMSAuLi4uLg0KPiA+ID4+Pg0KPiA+ID4+PiAyLiBDaGVjayBvbmx5 IHBhY2tldCB3aXRoIGxheWVyIDQgKFVEUCAvIFRDUCkNCj4gPiA+Pj4gICAgZmxvdyBjcmVhdGUg aW50ZWdyaXR5IHNwZWMgbDNfb2sgPSAxLCBsNF9vayA9IDEgbWFzayBsM19vayA9IDEgbDRfb2sg PSAxDQo+ID4gPj4+DQo+ID4gPj4+IFNpZ25lZC1vZmYtYnk6IE9yaSBLYW0gPG9yaWthQG52aWRp YS5jb20+DQo+ID4gPj4+IC0tLQ0KPiA+ID4+PiAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9m bG93LnJzdCB8IDE5ICsrKysrKysrKysrKysrKysNCj4gPiA+Pj4gIGxpYi9saWJydGVfZXRoZGV2 L3J0ZV9mbG93LmggICAgICAgfCA0Ng0KPiA+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQo+ID4gPj4+ICAyIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykN Cj4gPiA+Pj4NCj4gPiA+Pj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVf Zmxvdy5yc3QNCj4gPiA+PiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVfZmxvdy5yc3QNCj4g PiA+Pj4gaW5kZXggYWVjMmJhMS4uNThiMTE2ZSAxMDA2NDQNCj4gPiA+Pj4gLS0tIGEvZG9jL2d1 aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdA0KPiA+ID4+PiArKysgYi9kb2MvZ3VpZGVzL3By b2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4gPj4+IEBAIC0xMzk4LDYgKzEzOTgsMjUgQEAgTWF0 Y2hlcyBhIGVDUFJJIGhlYWRlci4NCj4gPiA+Pj4gIC0gYGBoZHJgYDogZUNQUkkgaGVhZGVyIGRl ZmluaXRpb24gKGBgcnRlX2VjcHJpLmhgYCkuDQo+ID4gPj4+ICAtIERlZmF1bHQgYGBtYXNrYGAg bWF0Y2hlcyBub3RoaW5nLCBmb3IgYWxsIGVDUFJJIG1lc3NhZ2VzLg0KPiA+ID4+Pg0KPiA+ID4+ PiArSXRlbTogYGBQQUNLRVRfSU5URUdSSVRZX0NIRUNLU2BgDQo+ID4gPj4+ICteXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCj4gPiA+Pj4gKw0KPiA+ID4+PiArTWF0Y2hlcyBwYWNr ZXQgaW50ZWdyaXR5Lg0KPiA+ID4+PiArDQo+ID4gPj4+ICstIGBgbGV2ZWxgYDogdGhlIGVuY2Fw c3VsYXRpb24gbGV2ZWwgdGhhdCBzaG91bGQgYmUgY2hlY2tlZC4gbGV2ZWwgMCBtZWFucw0KPiA+ IHRoZQ0KPiA+ID4+PiArICBkZWZhdWx0IFBNRCBtb2RlIChDYW4gYmUgaW5uZXIgbW9zdCAvIG91 dGVybW9zdCkuIHZhbHVlIG9mIDEgbWVhbnMNCj4gPiA+PiBvdXRlcm1vc3QNCj4gPiA+Pj4gKyAg YW5kIGhpZ2hlciB2YWx1ZSBtZWFucyBpbm5lciBoZWFkZXIuIFNlZSBhbHNvIFJTUyBsZXZlbC4N Cj4gPiA+Pj4gKy0gYGBwYWNrZXRfb2tgYDogQWxsIEhXIHBhY2tldCBpbnRlZ3JpdHkgY2hlY2tz IGhhdmUgcGFzc2VkIGJhc2VkIG9uIHRoZQ0KPiA+ID4+IG1heA0KPiA+ID4+PiArICBsYXllciBv ZiB0aGUgcGFja2V0Lg0KPiA+ID4+PiArICBsYXllciBvZiB0aGUgcGFja2V0Lg0KPiA+ID4+PiAr LSBgYGwyX29rYGA6IGFsbCBsYXllciAyIEhXIGludGVncml0eSBjaGVja3MgcGFzc2VkLg0KPiA+ ID4+PiArLSBgYGwzX29rYGA6IGFsbCBsYXllciAzIEhXIGludGVncml0eSBjaGVja3MgcGFzc2Vk Lg0KPiA+ID4+PiArLSBgYGw0X29rYGA6IGFsbCBsYXllciAzIEhXIGludGVncml0eSBjaGVja3Mg cGFzc2VkLg0KPiA+ID4+PiArLSBgYGwyX2NyY19va2BgOiBsYXllciAyIGNyYyBjaGVjayBwYXNz ZWQuDQo+ID4gPj4+ICstIGBgaXB2NF9jc3VtX29rYGA6IGlwdjQgY2hlY2tzdW0gY2hlY2sgcGFz c2VkLg0KPiA+ID4+PiArLSBgYGw0X2NzdW1fb2tgYDogbGF5ZXIgNCBjaGVja3N1bSBjaGVjayBw YXNzZWQuDQo+ID4gPj4+ICstIGBgbDNfbGVuX29rYGA6IHRoZSBsYXllciAzIGxlbiBpcyBzbWFs bGVyIHRoYW4gdGhlIHBhY2tldCBsZW4uDQo+ID4gPj4+ICsNCj4gPiA+Pj4gIEFjdGlvbnMNCj4g PiA+Pj4gIH5+fn5+fn4NCj4gPiA+Pj4NCj4gPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf ZXRoZGV2L3J0ZV9mbG93LmggYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oDQo+ID4gPj4+ IGluZGV4IDZjYzU3MTMuLmY2ODg4YTEgMTAwNjQ0DQo+ID4gPj4+IC0tLSBhL2xpYi9saWJydGVf ZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiA+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zs b3cuaA0KPiA+ID4+PiBAQCAtNTUxLDYgKzU1MSwxNSBAQCBlbnVtIHJ0ZV9mbG93X2l0ZW1fdHlw ZSB7DQo+ID4gPj4+ICAJICogU2VlIHN0cnVjdCBydGVfZmxvd19pdGVtX2dlbmV2ZV9vcHQNCj4g PiA+Pj4gIAkgKi8NCj4gPiA+Pj4gIAlSVEVfRkxPV19JVEVNX1RZUEVfR0VORVZFX09QVCwNCj4g PiA+Pj4gKw0KPiA+ID4+PiArCS8qKg0KPiA+ID4+PiArCSAqIFtNRVRBXQ0KPiA+ID4+PiArCSAq DQo+ID4gPj4+ICsJICogTWF0Y2hlcyBvbiBwYWNrZXQgaW50ZWdyaXR5Lg0KPiA+ID4+PiArCSAq DQo+ID4gPj4+ICsJICogU2VlIHN0cnVjdCBydGVfZmxvd19pdGVtX3BhY2tldF9pbnRlZ3JpdHlf Y2hlY2tzLg0KPiA+ID4+PiArCSAqLw0KPiA+ID4+PiArCVJURV9GTE9XX0lURU1fVFlQRV9QQUNL RVRfSU5URUdSSVRZX0NIRUNLUywNCj4gPiA+Pj4gIH07DQo+ID4gPj4+DQo+ID4gPj4+ICAvKioN Cj4gPiA+Pj4gQEAgLTE2ODUsNiArMTY5NCw0MyBAQCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9nZW5l dmVfb3B0IHsNCj4gPiA+Pj4gIH07DQo+ID4gPj4+ICAjZW5kaWYNCj4gPiA+Pj4NCj4gPiA+Pj4g K3N0cnVjdCBydGVfZmxvd19pdGVtX3BhY2tldF9pbnRlZ3JpdHlfY2hlY2tzIHsNCj4gPiA+Pj4g Kwl1aW50MzJfdCBsZXZlbDsNCj4gPiA+Pj4gKwkvKio8IFBhY2tldCBlbmNhcHN1bGF0aW9uIGxl dmVsIHRoZSBpdGVtIHNob3VsZCBhcHBseSB0by4NCj4gPiA+Pj4gKwkgKiBAc2VlIHJ0ZV9mbG93 X2FjdGlvbl9yc3MNCj4gPiA+Pj4gKwkgKi8NCj4gPiA+Pj4gK1JURV9TVERfQzExDQo+ID4gPj4+ ICsJdW5pb24gew0KPiA+ID4+PiArCQlzdHJ1Y3Qgew0KPiA+ID4+PiArCQkJdWludDY0X3QgcGFj a2V0X29rOjE7DQo+ID4gPj4+ICsJCQkvKiogVGhlIHBhY2tldCBpcyB2YWxpZCBhZnRlciBwYXNz aW5nIGFsbCBIVyBjaGVja3MuICovDQo+ID4gPj4+ICsJCQl1aW50NjRfdCBsMl9vazoxOw0KPiA+ ID4+PiArCQkJLyoqPCBMMiBsYXllciBpcyB2YWxpZCBhZnRlciBwYXNzaW5nIGFsbCBIVyBjaGVj a3MuICovDQo+ID4gPj4+ICsJCQl1aW50NjRfdCBsM19vazoxOw0KPiA+ID4+PiArCQkJLyoqPCBM MyBsYXllciBpcyB2YWxpZCBhZnRlciBwYXNzaW5nIGFsbCBIVyBjaGVja3MuICovDQo+ID4gPj4+ ICsJCQl1aW50NjRfdCBsNF9vazoxOw0KPiA+ID4+PiArCQkJLyoqPCBMNCBsYXllciBpcyB2YWxp ZCBhZnRlciBwYXNzaW5nIGFsbCBIVyBjaGVja3MuICovDQo+ID4gPj4+ICsJCQl1aW50NjRfdCBs Ml9jcmNfb2s6MTsNCj4gPiA+Pj4gKwkJCS8qKjwgTDIgbGF5ZXIgY2hlY2tzdW0gaXMgdmFsaWQu ICovDQo+ID4gPj4+ICsJCQl1aW50NjRfdCBpcHY0X2NzdW1fb2s6MTsNCj4gPiA+Pj4gKwkJCS8q KjwgTDMgbGF5ZXIgY2hlY2tzdW0gaXMgdmFsaWQuICovDQo+ID4gPj4+ICsJCQl1aW50NjRfdCBs NF9jc3VtX29rOjE7DQo+ID4gPj4+ICsJCQkvKio8IEw0IGxheWVyIGNoZWNrc3VtIGlzIHZhbGlk LiAqLw0KPiA+ID4+PiArCQkJdWludDY0X3QgbDNfbGVuX29rOjE7DQo+ID4gPj4+ICsJCQkvKio8 IFRoZSBsMyBsZW4gaXMgc21hbGxlciB0aGFuIHRoZSBwYWNrZXQgbGVuLiAqLw0KPiA+ID4+PiAr CQkJdWludDY0X3QgcmVzZXJ2ZWQ6NTY7DQo+ID4gPj4+ICsJCX07DQo+ID4gPj4+ICsJCXVpbnQ2 NF90ICB2YWx1ZTsNCj4gPiA+Pj4gKwl9Ow0KPiA+ID4+PiArfTsNCj4gPiA+Pj4gKw0KPiA+ID4+ PiArI2lmbmRlZiBfX2NwbHVzcGx1cw0KPiA+ID4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGVf Zmxvd19pdGVtX3Nhbml0eV9jaGVja3MNCj4gPiA+Pj4gKwlydGVfZmxvd19pdGVtX3Nhbml0eV9j aGVja3NfbWFzayA9IHsNCj4gPiA+Pj4gKwkJLnZhbHVlID0gMCwNCj4gPiA+Pj4gK307DQo+ID4g Pj4+ICsjZW5kaWYNCj4gPiA+Pj4gKw0KPiA+ID4+PiAgLyoqDQo+ID4gPj4+ICAgKiBNYXRjaGlu ZyBwYXR0ZXJuIGl0ZW0gZGVmaW5pdGlvbi4NCj4gPiA+Pj4gICAqDQo+ID4gPj4+DQo+ID4gPg0K DQo=