From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8D225A328D for ; Tue, 22 Oct 2019 17:20:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 436B61BEE3; Tue, 22 Oct 2019 17:20:12 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 7D2C31BEDF for ; Tue, 22 Oct 2019 17:20:10 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9MFJlgW015677; Tue, 22 Oct 2019 08:20:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=A61RR95GWo4P67P529QEAK/pnzQbK3SLgVqoX0fGYgY=; b=pZCJnF24aNFR74kt8DFOFeOrCaeEcF2Fz0Akj+rETHGg2WGab4hAxKiHuPt83PTanik9 CIDF/mqXOGqxKvwv3nTK0huv0BJD6AOJNB7Q72Jv6e4nGZdZVhQz8JeLFsK1yyNYaC31 /eyz24ZS0f4u4pMvAFQYYyp9XvZfWnYuHPCUn/4FEHDCtRhxfMrt6hrcTNdqKm9DREnx uFgtx1b3bjXv/+QoLQ2gKeWgG1PvBvmikX8e3ThrzYr8fAFSMXbZBZGdKnJFkaiND7lM pbXL+vpKdVrvGRfLjdSu+d/f3ljWkvpgV4ZD4MYn9L9/1NQIk8xijtWO4Fcg+k6WmR1H wA== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 2vsw611gsg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 22 Oct 2019 08:20:07 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 22 Oct 2019 08:20:05 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.59) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Tue, 22 Oct 2019 08:20:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OX/fg6H1yfFk2h3PmqPMQqvZWF/Ttao0Coz2IPpXimmNaqFXLXTWUncC93k6ST3Qy0yr7PuDMGmojWhxT6trWyp/CVxl/oG6ibeqRI6MZ5Mv3Lzcu6v/DdlzBc4H7T3zqh/VTFSl2fNtvQ9aLoqwxVs60gXLeCmHKE9J5IapCX6WMlhIFG6Gx3GyVOnNTPc5YweTN33yDuMLg0knzbRJSDvxsveuZjqQm+5s+gPJfM3wtxFAgYa3zBqxTbN/ydpzuntknBu2Cl3MR+lAK54kuWbtgtGq6omxdrRysgq5HtXatdgZbgUnpnmwMCBFdYbHDe4+hIvroiWnnWp+s2BB3g== 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=A61RR95GWo4P67P529QEAK/pnzQbK3SLgVqoX0fGYgY=; b=JAogvbh2v5gDem06zrvhuyV9tgOoBLgR1R6OhjcsJIJpRqKJAU3nc/nKMYlYXoITFbnctMFubTiXSIa6BCgG5FjqqIINJTX+1vwrkFZ8nEItHxGxB4k/9dSUvAimkeq1aHRdyJvcE+8woBb2DjTlBqb0kD8UzPCprzZ8hToe/bwmJRUISqT5wRVqs5En+TZigSDMtu9/tonVKgFaiCdJQ4ibCxCpxGjUdy8JsMaL1/mw9DRuNt7QtsGUjF1FKMfyxYi8pokeQ1IanaGQlvE78UZCkMIdI3Sy4k6CqCoa/ZPKkYA13vozJmQeXbv7CBTmF0XbuzSLZQwj7au31vDe+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A61RR95GWo4P67P529QEAK/pnzQbK3SLgVqoX0fGYgY=; b=Z7pgOwAA52nAD1Lw8j1iWcjhLT8RIc19f5T9y6AgFUt4dQU0Tn6BqQtFQUQ9pTiHonqTudpDd2B31o6/BYaFMt12QQRydnDl0x0uEvmk2gZUHBVlZAQIR/hGyS3eKMuvO7g1JszXm1FdwzuKVEnAXIc7tuDYnVFPPgxqG8XQ8s4= Received: from BN6PR1801MB1859.namprd18.prod.outlook.com (10.161.154.35) by BN6PR1801MB1859.namprd18.prod.outlook.com (10.161.154.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Tue, 22 Oct 2019 15:20:00 +0000 Received: from BN6PR1801MB1859.namprd18.prod.outlook.com ([fe80::9c:1e0f:afef:9410]) by BN6PR1801MB1859.namprd18.prod.outlook.com ([fe80::9c:1e0f:afef:9410%6]) with mapi id 15.20.2347.029; Tue, 22 Oct 2019 15:20:00 +0000 From: Pavan Nikhilesh Bhagavatula To: Ferruh Yigit , Andrew Rybchenko , Jerin Jacob Kollanukkaran CC: "dev@dpdk.org" , Adrien Mazarguil , Thomas Monjalon , "Xiaolong Ye" , Bruce Richardson Thread-Topic: [dpdk-dev] [PATCH v12 0/7] ethdev: add new Rx offload flags Thread-Index: AdWI5YUAWTE8xJHNQl6saZNGqrotnA== Date: Tue, 22 Oct 2019 15:20:00 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [122.171.227.191] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b5b4cbd-1a39-4dd5-3270-08d757034e74 x-ms-traffictypediagnostic: BN6PR1801MB1859: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 01986AE76B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(39860400002)(376002)(136003)(346002)(366004)(199004)(189003)(13464003)(14444005)(2906002)(33656002)(316002)(110136005)(71200400001)(6636002)(3846002)(71190400001)(6116002)(54906003)(86362001)(256004)(74316002)(305945005)(7736002)(6246003)(52536014)(25786009)(478600001)(14454004)(102836004)(5660300002)(55016002)(9686003)(53546011)(26005)(186003)(6506007)(66946007)(8676002)(81156014)(81166006)(30864003)(8936002)(76116006)(476003)(486006)(66446008)(64756008)(66556008)(66476007)(4326008)(66066001)(6436002)(229853002)(99286004)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR1801MB1859; H:BN6PR1801MB1859.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: arPwIeHIGCNO70pdnwzvOkQQmBOmGXBSlcgENhj2SnwOz6hdPsz+Vywhv2kiLKibxS6/aldKRhEnu6zBVSTQpb7hswRpL9Gq/+p+uwxjOpgr53XG/CWikfQUZW4L+hmKYiu4Xi+eszjo6kuHN50hS7QijYU9wxbkDuPmHew50oez5BNj4vfHZftwrkdiWqc5Wz0VSomDvUGEjmyKR3koH6NBamdQ8RDzToLmNMaZveNCTM3e8R7ElHp2A0f0+eDyNmHVO0Bojtrx8S9UpaQdmssb+ghDWlPW4bJwnDyeT6ufDIeQxOpOAMfq2AoEbj/gCxEmOBdsbJnvOy/DB7k4P3oMM0PRpCkeJAWfdCQ89pCpOZW5RFb5t4/M0AwVaX8MT4rOY5Jmt2conSopAP96z0+B5mEsTupPleaya+b5eNOJ2ha5QBHEHlMeSeX72l0H Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 6b5b4cbd-1a39-4dd5-3270-08d757034e74 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2019 15:20:00.8301 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KIUqYuFYH18LZ0Z7CSBHwhCWSUmn3t4VGDSGvYl+CClIeZS4Lh7BP40yLRg9VqrbS/5dwqeq/yQ6RnbcnC76Wr0Wo2av8AS1yTwm4jBrkgM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1801MB1859 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-22_03:2019-10-22,2019-10-22 signatures=0 Subject: Re: [dpdk-dev] [PATCH v12 0/7] ethdev: add new Rx offload flags X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogRmVycnVoIFlpZ2l0IDxmZXJydWgu eWlnaXRAaW50ZWwuY29tPg0KPlNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMjIsIDIwMTkgNzo1MSBQ TQ0KPlRvOiBBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPjsgUGF2 YW4gTmlraGlsZXNoDQo+QmhhZ2F2YXR1bGEgPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT47IEpl cmluIEphY29iIEtvbGxhbnVra2FyYW4NCj48amVyaW5qQG1hcnZlbGwuY29tPg0KPkNjOiBkZXZA ZHBkay5vcmc7IEFkcmllbiBNYXphcmd1aWwgPGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tPjsN Cj5UaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBYaWFvbG9uZyBZZQ0KPjx4 aWFvbG9uZy55ZUBpbnRlbC5jb20+OyBCcnVjZSBSaWNoYXJkc29uDQo+PGJydWNlLnJpY2hhcmRz b25AaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MTIgMC83XSBl dGhkZXY6IGFkZCBuZXcgUngNCj5vZmZsb2FkIGZsYWdzDQo+T24gMTAvMjIvMjAxOSAxMToxNiBB TSwgQW5kcmV3IFJ5YmNoZW5rbyB3cm90ZToNCj4+IEhpLA0KPj4NCj4+IEBQYXZhbiwgc2VlIHF1 ZXN0aW9uIGJlbG93Lg0KPj4NCj4+IE9uIDEwLzIxLzE5IDY6MzQgUE0sIEZlcnJ1aCBZaWdpdCB3 cm90ZToNCj4+PiBPbiAxMC8yMS8yMDE5IDQ6MTkgUE0sIFBhdmFuIE5pa2hpbGVzaCBCaGFnYXZh dHVsYSB3cm90ZToNCj4+Pj4gSGkgRmVycnVoLA0KPj4+Pg0KPj4+Pj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4+Pj4+IEZyb206IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVs LmNvbT4NCj4+Pj4+IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAyMSwgMjAxOSA4OjM3IFBNDQo+Pj4+ PiBUbzogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT47IFBhdmFu DQo+TmlraGlsZXNoDQo+Pj4+PiBCaGFnYXZhdHVsYSA8cGJoYWdhdmF0dWxhQG1hcnZlbGwuY29t PjsgSmVyaW4gSmFjb2INCj5Lb2xsYW51a2thcmFuDQo+Pj4+PiA8amVyaW5qQG1hcnZlbGwuY29t Pg0KPj4+Pj4gQ2M6IGRldkBkcGRrLm9yZzsgQWRyaWVuIE1hemFyZ3VpbA0KPjxhZHJpZW4ubWF6 YXJndWlsQDZ3aW5kLmNvbT47DQo+Pj4+PiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxv bi5uZXQ+OyBYaWFvbG9uZyBZZQ0KPj4+Pj4gPHhpYW9sb25nLnllQGludGVsLmNvbT47IEJydWNl IFJpY2hhcmRzb24NCj4+Pj4+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj4+Pj4+IFN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MTIgMC83XSBldGhkZXY6IGFkZCBuZXcgUngN Cj4+Pj4+IG9mZmxvYWQgZmxhZ3MNCj4+Pj4+IE9uIDEwLzE4LzIwMTkgMTE6MzEgQU0sIEFuZHJl dyBSeWJjaGVua28gd3JvdGU6DQo+Pj4+Pj4gT24gMTAvMTgvMTkgMTI6NDIgUE0sIEZlcnJ1aCBZ aWdpdCB3cm90ZToNCj4+Pj4+Pj4gT24gMTAvMTgvMjAxOSA4OjMyIEFNLCBBbmRyZXcgUnliY2hl bmtvIHdyb3RlOg0KPj4+Pj4+Pj4gSGkgRmVycnVoLA0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IHNpbmNl IEkndmUgcmV2aWV3ZWQgSSdsbCByZXBseSBhcyBJIHVuZGVyc3RhbmQgaXQuDQo+Pj4+Pj4+Pg0K Pj4+Pj4+Pj4gT24gMTAvMTcvMTkgODo0MyBQTSwgRmVycnVoIFlpZ2l0IHdyb3RlOg0KPj4+Pj4+ Pj4+IE9uIDEwLzE3LzIwMTkgMTowMiBQTSwgcGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tIHdyb3Rl Og0KPj4+Pj4+Pj4+PiBGcm9tOiBQYXZhbiBOaWtoaWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxs LmNvbT4NCj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gICAgIEFkZCBuZXcgUnggb2ZmbG9hZCBmbGFn cyBgREVWX1JYX09GRkxPQURfUlNTX0hBU0hgDQo+YW5kDQo+Pj4+Pj4+Pj4+ICAgICBgREVWX1JY X09GRkxPQURfRkxPV19NQVJLYC4gVGhlc2UgZmxhZ3MgY2FuIGJlDQo+dXNlZCB0bw0KPj4+Pj4+ Pj4+PiAgICAgZW5hYmxlL2Rpc2FibGUgUE1EIHdyaXRlcyB0byBydGVfbWJ1ZiBmaWVsZHMgYGhh c2gucnNzYA0KPmFuZA0KPj4+Pj4gYGhhc2guZmRpci5oaWANCj4+Pj4+Pj4+Pj4gICAgIGFuZCBh bHNvIGBvbF9mbGFnczpQS1RfUlhfUlNTYCBhbmQNCj5gb2xfZmxhZ3M6UEtUX1JYX0ZESVJgLg0K Pj4+Pj4+Pj4+IEhpIFBhdmFuLA0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gSW5pdGlhbGx5IHNvcnJ5 IGZvciBpbnZvbHZpbmcgbGF0ZSwNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IFdoZW4gd2UgZXhwb3Nl IGFuIGludGVyZmFjZSB0byB0aGUgYXBwbGljYXRpb25zLCB0aGV5IHdpbGwNCj5leHBlY3QNCj4+ Pj4+IHRob3NlIHdpbGwgYmUNCj4+Pj4+Pj4+PiByZXNwZWN0ZWQgYnkgdW5kZXJseWluZyBQTURz Lg0KPj4+Pj4+Pj4+IEFzIGZhciBhcyBJIGNhbiBzZWUgZHJpdmVycyBhcmUgdXBkYXRlZCB0byBy ZXBvcnQgbmV3IGFkZGVkDQo+UngNCj4+Pj4+IG9mZmxvYWQgZmxhZ3MgYXMNCj4+Pj4+Pj4+PiBz dXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGJ1dCBkcml2ZXJzIGFyZSBub3QgdXNpbmcgdGhvc2UgZmxh Z3MgYXQNCj5hbGwsDQo+Pj4+PiBzbw0KPj4+Pj4+Pj4+IGFwcGxpY2F0aW9uIHByb3ZpZGluZyB0 aGF0IGZsYWcgd29uJ3QgcmVhbGx5IGVuYWJsZS9kaXNhYmxlDQo+Pj4+PiBhbnl0aGluZywgSSB0 aGluaw0KPj4+Pj4+Pj4+IHRoaXMgaXMgYSBwcm9ibGVtIGFuZCBpdCBpcyB3cm9uZyB0byBsaWUg ZXZlbiBmb3IgdGhlIFBNRHMgSg0KPj4+Pj4+Pj4gSXQgaXMgcmVxdWlyZWQgdG8gbGV0IGFwcGxp Y2F0aW9ucyBrbm93IHRoYXQgdGhlIG9mZmxvYWQgaXMNCj5zdXBwb3J0ZWQuDQo+Pj4+Pj4+PiBU aGVyZSBhcmUgYSBudW1iZXIgb2YgY2FzZXMgd2hlbiBhbiBvZmZsb2FkIGNhbm5vdCBiZQ0KPmRp c2FibGVkLA0KPj4+Pj4+Pj4gYnV0IGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgb2ZmbG9hZCBt dXN0IG5vdCBiZSBhZHZlcnRpc2VkLg0KPj4+Pj4+PiBDYW4ndCBkaXNhYmxlIGlzIHNvbWV0aGlu ZyBlbHNlLCBhbHRob3VnaCBJIGJlbGlldmUgdGhhdCBpcyByYXJlDQo+Y2FzZSwgaW4NCj4+Pj4+ IHRoaXMNCj4+Pj4+Pj4gY2FzZSBkcml2ZXIgY2FuIGVuYWJsZS9kaXNhYmxlIHRoZSBSU1MgYW5k IHJlcHJlc2VudGluZyB0aGlzIGFzDQo+YW4NCj4+Pj4+IG9mZmxvYWQNCj4+Pj4+Pj4gY2FwYWJp bGl0eS4NCj4+Pj4+PiBJdCBpcyBub3QgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBSU1MuIEl0IGlz IGVuYWJsaW5nL2Rpc2FibGluZyBSU1MNCj5oYXNoDQo+Pj4+Pj4gZGVsaXZlcnkNCj4+Pj4+PiB0 b2dldGhlciB3aXRoIGFuIG1idWYuDQo+Pj4+Pg0KPj4+Pj4gR290IGl0LCBpdCBpcyByZWxhdGVk IHRvIHRoZSBSU1MgaGFzaCBkZWxpdmVyeS4NCj4+Pj4+DQo+Pj4+Pj4+IEJ1dCB3aGVuIHVzZXIg d2FudCB0byBjb25maWd1cmUgdGhpcyBvZmZsb2FkIGJ5IHNldHRpbmcgb3INCj51bnNldHRpbmcN Cj4+Pj4+IGluIG9mZmxvYWQNCj4+Pj4+Pj4gY29uZmlnLCBkcml2ZXIganVzdCBpZ25vcmVzIGl0 Lg0KPj4+Pj4+IFdoZW4gYXBwbGljYXRpb24gZW5hYmxlcyBvZmZsb2FkLCBpdCBzYXlzIHRoYXQg aXQgbmVlZHMgaXQgYW5kDQo+Z29pbmcgdG8NCj4+Pj4+IHVzZQ0KPj4+Pj4+IChyZXF1aXJlZCku IFdoZW4gdGhlIG9mZmxvYWQgaXMgbm90IGVuYWJsZWQsIGFwcGxpY2F0aW9uIHNpbXBseQ0KPmRv bid0DQo+Pj4+PiBjYXJlLg0KPj4+Pj4+IFNvLCBpZiB0aGUgaW5mb3JtYXRpb24gaXMgc3RpbGwg cHJvdmlkZWQgaXQgZG9lcyBub3QgaGFybS4NCj4+Pj4+DQo+Pj4+PiBOb3Qgc3VyZSBpZiB0aGVy ZSBpcyBubyBoYXJtLCBhIGNvbmZpZyBvcHRpb24gbm90IHJlc3BlY3RlZCBieQ0KPj4+Pj4gdW5k ZXJseWluZyBQTURzDQo+Pj4+PiBzaWxlbnRseSBpcyBhIHByb2JsZW0gSSB0aGluay4NCj4+DQo+ PiBTb21lIHRpbWUgYWdvIHRoZSBpZGVhIG9mIG9mZmxvYWRzIHdoaWNoIGNhbm5vdCBiZSBkaXNh YmxlZA0KPj4gYnkgUE1EIHdhcyBkaXNjdXNzZWQgYW5kLCBpZiBJIHJlbWVtYmVyIGRlY2lzaW9u IGNvcnJlY3RseSwNCj4+IGl0IHdhcyBkZWNpZGVkIHRoYXQgaXQgd2lsbCBvdmVyY29tcGxpY2F0 ZSBpdC4NCj4+IEl0IHdhcyBkaXNjdXNzZWQgd2hlbiBuZXcgb2ZmbG9hZCBBUEkgaXMgaW50cm9k dWNlZC4NCj4+IExvZ2dpbmcgaXMgaGVscGZ1bCBzb21ldGltZXMsIGJ1dCBpdCBpcyBub3QgYSBw YW5hY2VhLg0KPg0KPkkgcmVtZW1iZXIgaXQgaGFzIGJlZW4gZGlzY3Vzc2VkIGluIHRoZSBjb250 ZXh0IG9mIENSQywgYmVjYXVzZSBzb21lDQo+SFcgd2VyZSBub3QNCj5hYmxlIHRvIGRpc2FibGUg Q1JDIFNUUklQLCBpdCBoYXMgYmVlbiBpbXBsZW1lbnRlZCBhcyBJIHN1Z2dlc3RlZCBmb3INCj50 aGlzIGNhc2UsDQo+d2hlbiBhcHBsaWNhdGlvbiByZXF1ZXN0cyB0byBkaXNhYmxlIENSQyBTVFJJ UCBvZmZsb2FkLCB0aGUgUE1EIHByaW50IGENCj5sb2cNCj5zYXlpbmcgaXQgY2FuJ3QgYmUgZGlz YWJsZWQgYW5kIGtlZXAgdGhlIGludGVybmFsIHN0YXRlIGFzIG9mZmxvYWQNCj5lbmFibGVkLg0K Pg0KPk90aGVyIHRoYW4gdGhpcyBJIHRoaW5rIGFsbCBvZmZsb2FkcyBhbm5vdW5jZWQgYXMgc3Vw cG9ydGVkIGJ5IFBNRCBjYW4NCj5iZQ0KPmVuYWJsZWQgYW5kIGRpc2FibGVkLg0KPg0KPj4NCj4+ Pj4+Pj4+IElmIGRyaXZlciBzZWUgYmVuZWZpdHMgZnJvbSBkaXNhYmxpbmcgdGhlIG9mZmxvYWQg KGUuZy4gYXZvaWQNCj5kZWxpdmVyeQ0KPj4+Pj4+Pj4gb2YgUlNTIGhhc2ggZnJvbSBOSUMgdG8g aG9zdCksIGl0IGNhbiBkbyBpdCBhZnRlciB0aGUgcGF0Y2hzZXQuDQo+Pj4+Pj4+IFllcyBidXQg SSB0aGluayB0aGlzIHBhdGNoc2V0IHNob3VsZG4ndCBpZ25vcmUgdGhhdCBkaXNhYmxpbmcgdGhl DQo+Pj4+PiBmZWF0dXJlIGlzIG5vdA0KPj4+Pj4+PiBpbXBsZW1lbnRlZCB5ZXQuIElmIHRob3Nl IFBNRHMgdGhhdCBoYXMgYmVlbiB1cGRhdGVkIHRvDQo+cmVwb3J0DQo+Pj4+PiB0aGUgSEFTSA0K Pj4+Pj4+PiBjYXBhYmlsaXR5IGhhcyBSU1MgZW5hYmxlZCBieSBkZWZhdWx0LCBJIHN1Z2dlc3Qg YWRkaW5nIGEgY2hlY2sNCj5mb3INCj4+Pj4+IHRoaXMgb2ZmbG9hZA0KPj4+Pj4+PiBpbiBQTUQs DQo+Pj4+Pj4+IGlmIGl0IGlzIHJlcXVlc3RlZCB0byBkaXNhYmxlICh3aGljaCBtZWFucyBub3Qg cmVxdWVzdGVkIGZvcg0KPmVuYWJsZSksDQo+Pj4+PiBwcmludCBhDQo+Pj4+Pj4+IGxvZyBzYXlp bmcgZGlzYWJsaW5nIEhBU0ggaXMgbm90IHN1cHBvcnRlZCBhbmQgc2V0IHRoaXMgZmxhZyBpbg0K PnRoZQ0KPj4+Pj4gb2ZmbG9hZA0KPj4+Pj4+PiBjb25maWd1cmF0aW9uIHRvIHNheSBQTUQgaXMg Y29uZmlndXJlZCB0byBjYWxjdWxhdGUgdGhlIEhBU0guDQo+Pj4+Pj4+IExhdGVyIFBNRCBtYWlu dGFpbmVycyBtYXkgcHJlZmVyIHRvIHJlcGxhY2UgdGhhdCBlcnJvciBsb2cgd2l0aA0KPj4+Pj4g YWN0dWFsIGRpc2FibGUgY29kZS4NCj4+Pj4+PiBJdCBpcyBwb3NzaWJsZSB0byBkby4gT2YgY291 cnNlLCBpdCBpcyBiZXR0ZXIgdG8gcHJvdmlkZSByZWFsIG9mZmxvYWQNCj4+Pj4+PiB2YWx1ZXMg b24gZ2V0LCBidXQNCj4+Pj4+PiBldGhfY29uZiBpcyBjb25zdCBpbiBydGVfZXRoX2Rldl9jb25m aWd1cmUoKSwgc28sIHdlIGNhbid0DQo+Y2hhbmdlIGl0DQo+Pj4+PiBhbmQNCj4+Pj4+PiBpdCBp cyBnb29kLg0KPj4+Pj4+IFNvLCB0aGUgb25seSB3YXkgaXMgcnRlX2V0aF9yeF9xdWV1ZV9pbmZv X2dldCgpLg0KPj4+Pj4+IEkgZ3Vlc3MgdGhlcmUgaXMgYSBsb3Qgb2Ygc3BhY2UgZm9yIHRoZSBz YW1lIGltcHJvdmVtZW50IGZvcg0KPm90aGVyIFJ4DQo+Pj4+Pj4gb2ZmbG9hZHMNCj4+Pj4+PiBp biB2YXJpb3VzIFBNRHMuDQo+Pj4+Pg0KPj4+Pj4gV2UgZG9uJ3QgbmVlZCB0aGUgdXBkYXRlICdl dGhfY29uZicgcGFyYW1ldGVyIG9mIHRoZQ0KPj4+Pj4gJ3J0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgp JywNCj4+Pj4+IHRoYXQgaXMgd2hhdCB1c2VyIHJlcXVlc3RlZCwgYnV0IGNvbmZpZyBzdG9yZWQg aW4gJ2Rldi0+ZGF0YS0NCj4+ZGV2X2NvbmYnDQo+Pj4+PiB3aGljaA0KPj4+Pj4gY2FuIGJlIHVw ZGF0ZWQuDQo+Pg0KPj4gV2hhdCBmb3I/IEFzIEkgdW5kZXJzdGFuZCBkYXRhLT5kZXZfY29uZiBz aG91bGQgbm90IGJlIHVzZWQNCj5vdXRzaWRlDQo+PiBsaWJydGVfZXRoZGV2IGFuZCBkcml2ZXJz LiBCYXNpY2FsbHkgaXQgbWVhbnMgdGhhdCBhbGwgcGF0Y2hlZCBkcml2ZXJzDQo+PiBzaG91bGQg YmUgdXBkYXRlZCB0byBsb2cgaW5mb3JtYXRpb24gbWVzc2FnZSBpZiB0aGUgb2ZmbG9hZCBpcyBu b3QNCj4+IHJlcXVlc3RlZCwgYnV0IHdpbGwgYmUgZW5hYmxlZCBhbnl3YXkgYW5kIHVwZGF0ZWQN Cj4+IGRhdGEtPmRldl9jb25mLnJ4bW9kZS5vZmZsb2Fkcy4gUGxlYXNlLCBjb25maXJtLg0KPg0K PlRvIGtlZXAgUE1EIGludGVybmFsIHN0YXRlIGNvcnJlY3QuDQo+DQo+Pg0KPj4+Pj4+IEFsc28g SSB3b3JyeSB0aGF0IGl0IGNvdWxkIGJlIG5vdCB0aGF0IHRyaXZpYWwgdG8gZG8gaW4gYWxsIGVm ZmVjdGVkDQo+UE1Ecy4NCj4+Pj4+DQo+Pj4+PiBZZXMgaXQgY2FuIGJlIHNvbWUgd29yaywgYW5k IGlmIHRoaXMgcGF0Y2hzZXQgZG9lc24ndCBkbyBpdCwgd2hvDQo+d2lsbCBkbw0KPj4+Pj4gdGhl IHdvcms/DQo+Pg0KPj4gUGF2YW4sIHdpbGwgeW91IGRvIG9yIHNob3VsZCBJIGNhcmUgYWJvdXQg aXQgaWYgY29uZmlybWVkPw0KDQpJIHdpbGwgc2VuZCBhIHYxMy4NCg0KPj4NCj4+Pj4+Pj4+PiBT cGVjaWZpYyB0byBgREVWX1JYX09GRkxPQURfUlNTX0hBU0hgLCB3ZSBoYXZlIGFscmVhZHkNCj4+ Pj4+IHNvbWUgUlNTIGNvbmZpZw0KPj4+Pj4+Pj4+IHN0cnVjdHVyZXMgYW5kIGl0IGlzIHBhcnQg b2YgdGhlICdydGVfZXRoX2Rldl9jb25maWd1cmUoKScgQVBJLA0KPj4+Pj4gd29uJ3QgaXQgY3Jl YXRlDQo+Pj4+Pj4+Pj4gbXVsdGlwbGUgd2F5IHRvIGRvIHNhbWUgdGhpbmc/DQo+Pj4+Pj4+PiBO bywgYSBuZXcgb2ZmbG9hZCBpcyByZXNwb25zaWJsZSBmb3IgUlNTIGhhc2ggZGVsaXZlcnkgZnJv bQ0KPk5JQyB0bw0KPj4+Pj4gaG9zdA0KPj4+Pj4+Pj4gYW5kIGZpbGwgaW4gaW4gbWJ1ZiByZXR1 cm5lZCB0byBhcHBsaWNhdGlvbiBvbiBSeC4NCj4+Pj4+Pj4gV2hhdCB5b3UgaGF2ZSBkZXNjcmli ZWQgaXMgYWxyZWFkeSBoYXBwZW5pbmcgd2l0aG91dCB0aGUNCj5uZXcNCj4+Pj4+IG9mZmxvYWQg ZmxhZyBhbmQNCj4+Pj4+Pj4gdGhpcyBpcyBteSBjb25jZXJuIHRoYXQgd2UgYXJlIGR1cGxpY2F0 aW5nIGl0Lg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+PiBUaGVyZSBpcyBhICdzdHJ1Y3QgcnRl X2V0aF9yeG1vZGUnICh1bmRlciAnc3RydWN0IHJ0ZV9ldGhfY29uZicpDQo+Pj4+Pj4+IHdoaWNo IGhhcyAnZW51bSBydGVfZXRoX3J4X21xX21vZGUgbXFfbW9kZTsnDQo+Pj4+Pj4+DQo+Pj4+Pj4+ IElmICJtcV9tb2RlID09IEVUSF9NUV9SWF9OT05FIiBoYXNoIGNhbGN1bGF0aW9uIGlzDQo+ZGlz YWJsZWQsDQo+Pj4+PiBhbmQNCj4+Pj4+Pj4gJ21idWY6Omhhc2g6OnJzcycgaXMgbm90IHVwZGF0 ZWQuDQo+Pj4+Pj4gTm8tbm8uIEl0IGJpbmRzIFJTUyBkaXN0cmlidXRpb24gYW5kIGhhc2ggZGVs aXZlcnkuIFdoYXQgdGhlIG5ldw0KPj4+Pj4+IG9mZmxvYWQgYWxsb3dzIHRvIGFjaGlldmU6IEkg d2FudCBSeCB0byBzcHJlYWQgdHJhZmZpYyBvdmVyIG1hbnkNCj5SeA0KPj4+Pj4+IHF1ZXVlcywg YnV0IEkgZG9uJ3QgbmVlZCBSU1MgaGFzaC4NCj4+Pj4+DQo+Pj4+PiBJIHNlZSwgc28gUlNTIGNv bmZpZ3VyYXRpb24gd2lsbCBzdGF5IHNhbWUsIGJ1dCBkcml2ZXIgbmVlZHMgdG8gdGFrZQ0KPmNh cmUNCj4+Pj4+IHRoZQ0KPj4+Pj4gbmV3IGZsYWdzIHRvIGRlY2lkZSB0byB1cGRhdGUgb3Igbm90 IHRoZSBtYnVmOjpyc3M6Omhhc2ggZmllbGQuDQo+Pj4+Pg0KPj4+Pj4gSSBkb24ndCBrbm93IGlm IGRpc2FibGluZyBSU1MgYnV0IGNhbGN1bGF0aW5nIGhhc2ggaXMgc3VwcG9ydGVkLCBpZg0KPm5v dA0KPj4+Pj4gc3VwcG9ydGVkIHRoYXQgY2FzZSBhbHNvIHNob3VsZCBiZSBjaGVja2VkIGJ5IGRy aXZlci4NCj4+DQo+PiBZZXMsIGl0IGlzIGludGVyZXN0aW5nIHF1ZXN0aW9uIHdoYXQgc2hvdWxk IGhhcHBlbiBpZg0KPkVUSF9NUV9SWF9OT05FIHdpdGgNCj4+IERFVl9SWF9PRkZMT0FEX1JTU19I QVNILiBJdCBzb3VuZHMgbGlrZSBydGVfZXRoZGV2IHNob3VsZA0KPmNoZWNrDQo+PiBkZXZfY29u Zi5yeG1vZGUubXFfbW9kZSAmIEVUSF9NUV9SWF9SU1NfRkxBRyBpcyBzZXQgd2hlbg0KPj4gREVW X1JYX09GRkxPQURfUlNTX0hBU0ggaXMgcmVxdWVzdGVkLiBPdGhlcndpc2UgdGhlIHJlcXVlc3Qg aXMNCj5pbnZhbGlkLg0KPg0KPisxDQo+DQo+PiBNYXkgYmUgaXQgY291bGQgYmUgcmVsYXhlZCBp biB0aGUgZnV0dXJlLCBidXQgbm90IG5vdy4NCj4+DQo+Pj4+Pj4+IChUaGFua3MgQnJ1Y2UgdG8g aGVscGluZyBmaW5kaW5nIGl0IG91dCkNCj4+Pj4+Pj4NCj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBBbmQg Zm9yIHRoZSBgb2xfZmxhZ3M6UEtUX1JYX1JTU2AgZmxhZywgaXQgd2FzIGFscmVhZHkgdXNlZA0K PnRvDQo+Pj4+PiBtYXJrIHRoYXQNCj4+Pj4+Pj4+PiAnbWJ1Zjo6aGFzaDo6cnNzJyBpcyB2YWxp ZCwgcmlnaHQ/IElzIHRoZXJlIGFueXRoaW5nIG5ldyByZWxhdGVkDQo+dGhhdA0KPj4+Pj4gaW4g dGhlIHNldD8NCj4+Pj4+Pj4+IEFzIEkgdW5kZXJzdGFuZCB5b3UgbWVhbiwgb2xfZmxhZ3M6OlBL VF9SWF9SU1NfSEFTSC4NCj4+Pj4+Pj4+IFllcywgdGhlIG5ldyBvZmZsb2FkIGFsbG93cyBzYXkg aWYgYXBwbGljYXRpb24gbmVlZHMgaXQgb3Igbm93Lg0KPj4+Pj4+Pj4gQmFzaWNhbGx5IGl0IGRl Y291cGxlcyBSU1MgZGlzdHJpYnV0aW9uIGFuZCBoYXNoIGRlbGl2ZXJ5Lg0KPj4+Pj4+PiBTZXR0 aW5nICdvbF9mbGFnczo6UEtUX1JYX1JTU19IQVNIJyBhbmQgJ21idWY6Omhhc2g6OnJzcycNCj5h bHJlYWR5DQo+Pj4+PiB0aGVyZSBhbmQgbm90DQo+Pj4+Pj4+IGNoYW5naW5nLiBJIGp1c3Qgd2Fu dCB0byBjbGFyaWZ5IHNpbmNlIHRoaXMgaXMgbm90IGNsZWFyIGluIHRoZQ0KPmNvbW1pdCBsb2cu DQo+Pj4+Pj4+DQo+Pj4+Pj4+IE9ubHkgYWRkaXRpb24gaXMgdG8gYWRkIGEgbmV3IGZsYWcgdG8g Y29udHJvbCBQTUQgdG8NCj5lbmFibGUvZGlzYWJsZQ0KPj4+Pj4gaGFzaA0KPj4+Pj4+PiBjYWxj dWxhdGlvbiAod2hpY2ggUE1EcyBpZ25vcmUgaW4gdGhlIHBhdGNoID8/PykNCj4+Pj4+PiBJdCBp cyBub3QgY2FsY3VsYXRpb24sIGJ1dCBkZWxpdmVyeSBvZiB0aGUgdmFsdWUgZnJvbSBIVyB0bw0K PmFwcGxpY2F0aW9ucy4NCj4+Pj4+DQo+Pj4+PiBPSw0KPj4+Pj4NCj4+Pj4+PiBZZXMsIGNvbW1p dCBsb2cgbWF5L3Nob3VsZCBiZSBpbXByb3ZlZC4+DQo+Pj4+Pj4+Pj4gU3BlY2lmaWMgdG8gdGhl IGBERVZfUlhfT0ZGTE9BRF9GTE9XX01BUktgIGFuZA0KPj4+Pj4gYFJURV9GTE9XX0FDVElPTl9G TEFHYCwgdGhleSBhcmUNCj4+Pj4+Pj4+PiBydGVfZmxvdyBhY3Rpb25zLCBhcHBsaWNhdGlvbiBj YW4gdmVyaWZ5IGFuZCBsYXRlciByZXF1ZXN0DQo+dGhlc2UNCj4+Pj4+IGFjdGlvbnMgdmlhDQo+ Pj4+Pj4+Pj4gcnRlX2Zsb3cgQVBJcy4gV2h5IHdlIGFyZSBhZGRpbmcgYW4gYWRkaXRpb25hbA0K PlJYX09GRkxPQUQgZmxhZw0KPj4+Pj4gZm9yIHRoZW0/DQo+Pj4+Pj4+PiBUaGUgcmVhc29uIGlz IGJhc2ljYWxseSB0aGUgc2FtZSBhcyBhYm92ZS4gSFcgbmVlZHMgdG8ga25vdw0KPmluDQo+Pj4+ PiBhZHZhbmNlLA0KPj4+Pj4+Pj4gaWYgYXBwbGljYXRpb24gaXMgZ29pbmcgdG8gdXNlIGZsb3cg bWFya3MgYW5kIGNvbmZpZ3VyZSBSeA0KPnF1ZXVlIHRvDQo+Pj4+PiBlbmFibGUNCj4+Pj4+Pj4+ IHRoZSBpbmZvcm1hdGlvbiBkZWxpdmVyeS4NCj4+Pj4+Pj4gV2hhdCB5b3UgZGVzY3JpYmVkIGlz IGRvbmUgdmlhICdydGVfZmxvd19jcmVhdGUoKScgQVBJLA0KPmFwcGxpY2F0aW9uDQo+Pj4+PiB3 aWxsIHJlcXVlc3QNCj4+Pj4+Pj4gdGhvc2UgYWN0aW9ucyB2aWEgQVBJIGFuZCBSeCBxdWV1ZSB3 aWxsIGJlIGNvbmZpZ3VyZWQNCj5hY2NvcmRpbmdseSwNCj4+Pj4+IHRoaXMgaXMgbW9yZQ0KPj4+ Pj4+PiBkeW5hbWljIGFwcHJvYWNoLiBXaHkgYXBwbGljYXRpb24gbmVlZCB0byBzZXQgdGhpcyBh ZGRpdGlvbmFsDQo+Pj4+PiBjb25maWd1cmF0aW9uIGZsYWc/DQo+Pj4+Pj4gTW9yZSBkeW5hbWlj IGFwcHJvYWNoIGlzIGRlZmluaXRlbHkgYmV0dGVyLCBidXQgaXQgaXMgbm90IGFsd2F5cw0KPj4+ Pj4gcG9zc2libGUuDQo+Pj4+Pj4gU29tZSBQTURzIGNhbid0IGV2ZW4gY2hhbmdlIE1UVSBkeW5h bWljYWxseSBvciBNVFUNCj5jaGFuZ2luZw0KPj4+Pj4gcmVxdWlyZXMNCj4+Pj4+PiByZXN0YXJ0 IHdoaWNoIGlzIGhhcmRseSByZWFsbHkgYSBkeW5hbWljIGNoYW5nZS4gT2YgY291cnNlLCBpdCBp cw0KPj4+Pj4+IHVubGlrZWx5IHRoYXQNCj4+Pj4+PiBNVFUgaXMgY2hhbmdlZCB3aGVuIHRyYWZm aWMgaXMgcnVubmluZyBldGMsIGJ1dCBzdGlsbCBwb3NzaWJsZS4NCj4+Pj4+PiBUaGUgaW5mb3Jt YXRpb24gYWJvdXQgbmVjZXNzaXR5IHRvIHN1cHBvcnQgZmxvdyBtYXJrcyBkZWxpdmVyeQ0KPm1h eQ0KPj4+Pj4+IGJlIHJlcXVpcmVkIG9uIFJ4IHF1ZXVlIHNldHVwIGFuZCBjYW5ub3QgYmUgY2hh bmdlZA0KPmR5bmFtaWNhbGx5DQo+Pj4+PiB3aGVuDQo+Pj4+Pj4gUnggcXVldWUgaXMgcnVubmlu ZyBhbmQgYXBwbGljYXRpb24gd291bGQgbGlrZSB0byBhZGQgZmxvdyBydWxlDQo+d2l0aA0KPj4+ Pj4gbWFyaw0KPj4+Pj4+IGFjdGlvbi4NCj4+Pj4+IEl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFu Z2VkIGR5bmFtaWNhbGx5LCBhcHBsaWNhdGlvbiBjYW4gY2FsbA0KPj4+Pj4gJ3J0ZV9mbG93X3Zh bGlkYXRlKCknIGFuZCBsZWFybiBpZiBpdCBjYW4gc2V0IHRoaXMgYWN0aW9uIG9yIG5vdC4NCj5Q ZXJoYXBzIEkNCj4+Pj4+IGFtDQo+Pj4+PiBtaXNzaW5nIHNvbWV0aGluZywgd2hlbiBpdCBpcyBy ZXF1aXJlZCB0byBoYXZlIHRoaXMgYXMNCj5jb25maWd1cmF0aW9uDQo+Pj4+PiBvcHRpb24/DQo+ Pj4+Pg0KPj4+Pj4+PiBBbmQgYXMgYWJvdmUgdGhlIG5ldyBSWCBvZmZsb2FkIGZsYWdzIGlnbm9y ZWQgYnkgUE1EcywgaGFyZA0KPnRvDQo+Pj4+PiB1bmRlcnN0YW5kIHdoYXQNCj4+Pj4+Pj4gaXMg dGhlIGludGVudGlvbiBoZXJlLg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+PiBBYm92ZSB1c2Fn ZSBvZiBmbGFncyBmZWVscyBsaWtlIHRoZSBpbnRlbnRpb24gaXMgYWRkaW5nIHNvbWUNCj5jYXBh YmlsaXR5DQo+Pj4+Pj4+IGluZm9ybWF0aW9uIGZvciB0aGUgUE1EcyBtb3JlIHRoYXQgYWRkaW5n IG5ldyBvZmZsb2FkDQo+Pj4+PiBjb25maWd1cmF0aW9uLg0KPj4+Pj4+PiBJZiBzbyB0aGlzIGlz IGJpZ2dlci9vbGRlciBwcm9ibGVtLCBhbmQgaW5zdGVhZCBvZiBhYnVzaW5nIHRoZQ0KPm9mZmxv YWQNCj4+Pj4+IGZsYWdzIHdlDQo+Pj4+Pj4+IGNhbiB0aGluayBvZiBhbiBBUEkgdG8gcHJlc2Vu dCBkZXZpY2UgY2FwYWJpbGl0aWVzLCBhbmQgbW92ZQ0KPj4+Pj4gZmVhdHVyZXMuaW5pDQo+Pj4+ Pj4+IGNvbnRlbnQgdG8gdGhlIEFQSSBpbiBsb25nIHRlcm0uDQo+Pj4+Pj4gV2hhdCBJIHJlYWxs eSBsaWtlIHdpdGggdGhlc2UgbmV3IG9mZmxvYWQgZmxhZ3MgZm9yIFJ4IGhhc2ggYW5kDQo+Zmxv dw0KPj4+Pj4gbWFyayBpcw0KPj4+Pj4+IHRoYXQgaXQgbWFrZXMgZmVhdHVyZXMgd2hpY2ggcHJv dmlkZSBpbmZvcm1hdGlvbiBpbiBtYnVmIG9uIFJ4DQo+Pj4+PiBjb25zaXN0ZW50Og0KPj4+Pj4+ ICAgwqAtIHdhbnQgdGltZXN0YW1wPyA9PiBERVZfUlhfT0ZGTE9BRF9USU1FU1RBTVANCj4+Pj4+ PiAgIMKgLSB3YW50IFJ4IGNoZWNrc3VtIGZsYWdzID0+IERFVl9SWF9PRkZMT0FEX0NIRUNLU1VN DQo+Pj4+Pj4gICDCoC0gd2FudCB0byBzdHJpcCBWTEFOPyA9PiBERVZfUlhfT0ZGTE9BRF9WTEFO X1NUUklQDQo+Pj4+Pj4gICDCoC0gd2FudCBSU1MgaGFzaD8gPT4gREVWX1JYX09GRkxPQURfUlNT X0hBU0gNCj4+Pj4+PiAgIMKgLSB3YW50IGZsb3cgbWFyayBzdXBwb3J0PyA9Pg0KPkRFVl9SWF9P RkZMT0FEX0ZMT1dfTUFSSw0KPj4+Pj4+DQo+Pj4+Pj4gQWxzbyBpdCBwZXJmZWN0bHkgZml0cyBk eW5hbWljIG1idWYgZmllbGRzIGFuZCBhbGxvd3MgdG8gbWFrZSBSU1MNCj5oYXNoDQo+Pj4+Pj4g YW5kIGZsb3cgbWFyayBmaWVsZHMgZHluYW1pYyB3aXRoIHRoZSBuZXcgb2ZmbG9hZHMgYXMgY29u dHJvbHMNCj4+Pj4+IEFncmVlIFJTU19IQVNIIGZpdHMgd2VsbCwgbXkgbWFpbiBjb25jZXJuIHdp dGggdGhlIHBhdGNoc2V0IGlzDQo+ZHJpdmVyDQo+Pj4+PiBpbXBsZW1lbnRhdGlvbnMgYXJlIG1p c3NpbmcgYW5kIGp1c3QgaWdub3JlZC4NCj4+Pj4+DQo+Pj4+IElnbm9yaW5nIGRyaXZlciBpbXBs ZW1lbnRhdGlvbiBpcyBpbnRlbnRpb25hbCBhcyBpdCBpbnZvbHZlcyBhZGRpbmcgYQ0KPmJyYW5j aA0KPj4+PiBpbiBSeCBmYXN0cGF0aCBmdW5jdGlvbiBmb3IgYWxsIGRyaXZlcnMgYW5kIG1pZ2h0 IGhhdmUgLXZlIGVmZmVjdHMgb24NCj5wZXJmb3JtYW5jZS4NCj4+PiBZZXMgaXQgbWF5IGFmZmVj dCBwZXJmb3JtYW5jZS4gQWxzbyBpdCBtYXkgYmUgdG9vIG11Y2ggZHJpdmVyDQo+c3BlY2lmaWMN Cj4+PiBpbXBsZW1lbnRhdGlvbi4NCj4+Pg0KPj4+IFRoYXQgaXMgd2h5IEkgc3VnZ2VzdCwgZm9s bG93aW5nOg0KPj4+IEZvciB0aGUgZHJpdmVycyB0aGF0IGNsYWltIHRoaXMgY2FwYWJpbGl0eSwN Cj4+PiAtIEZvciB0aGUgY2FzZSBkcml2ZXIgdXBkYXRlcyB0aGUgbWJ1Zjo6cnNzOmhhc2gNCj4+ PiAgICBDaGVjayBpZiB0aGlzIG9mZmxvYWQgcmVxdWVzdGVkIG9yIG5vdCwgaWYgbm90IHByaW50 IGFuIGVycm9yIGFuZCBzZXQNCj5pbnRlcm5hbA0KPj4+IGNvbmZpZyBhcyB0aGlzIG9mZmxvYWQg ZW5hYmxlZA0KPj4NCj4+IEkgd291bGQgbm90IHNheSBpdCBpcyBhbiBlcnJvci4gQXQgbWF4aW11 bSBpdCBpcyB3YXJuaW5nLCBidXQgSSB3b3VsZA0KPnVzZQ0KPj4ganVzdCBpbmZvIGxvZyBsZXZl bC4gSSB0aGluayB0aGVyZSBpcyBub3RoaW5nIGNyaXRpY2FsIHRoZXJlLg0KPg0KPkFueSBsb2cg aXMgT0ssIG9ubHkgaW5mbyBsZXZlbCBteSBiZSBkaXNhYmxlZCBieSBkZWZhdWx0IGJ5IG1hbnkg ZHJpdmVycywNCj50byBiZQ0KPnN1cmUgdGhpcyBpcyBwcmludGVkLCB3YXJuaW5nIGNhbiBiZSBi ZXR0ZXIuDQo+DQo+Pg0KPj4+IC0gRm9yIHRoZSBjYXNlIGRyaXZlciBub3QgdXBkYXRlcyB0aGUg bWJ1Zjo6cnNzOmhhc2gNCj4+PiAgICBDaGVjayBpZiB0aGlzIG9mZmxvYWQgcmVxdWVzdGVkIG9y IG5vdCwgaWYgcmVxdWVzdGVkIHByaW50IGFuIGVycm9yDQo+YW5kIHNldA0KPj4+IGludGVybmFs IGNvbmZpZyBhcyB0aGlzIG9mZmxvYWQgZGlzYWJsZWQNCj4+DQo+PiBJZiBzbywgdGhlIG9mZmxv YWQgaXMgbm90IGFkdmVydGlzZWQgYW5kIGdlbmVyaWMgY2hlY2tzIGluIHJ0ZV9ldGhkZXYNCj4+ IGNhdGNoIGl0IGFuZCByZXR1cm4gZXJyb3IuDQo+DQo+WW91IGFyZSByaWdodCwgZm9yIHRoaXMg Y2FzZSBpdCBzaG91bGRuJ3QgYmUgYWR2ZXJ0aXNlZC4NCj4NCj4NCj5KdXN0IHRvIGRvdWJsZSBj aGVjayB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGRpc2N1c3Npb24sIGlzIGZvbGxvd2luZw0K PnN1bW1hcnkNCj5jb3JyZWN0Pw0KPg0KPkEpIFdoZW4gUlNTIGVuYWJsZWQNCj4xKSBpZiBSU1Nf SEFTSCBzZXQsIHB1dCBoYXNoIHZhbHVlIHRvICJtYnVmOjpyc3M6aGFzaCIgYW5kIHNldA0KPlBL VF9SWF9SU1NfSEFTSA0KPjIpIGlmIFJTU19IQVNIIHVuc2V0LCBkb24ndCB1cGRhdGVkDQo+Im1i dWY6OnJzczpoYXNoIi9QS1RfUlhfUlNTX0hBU0gNCj4NCj5CKSBXaGVuIFJTUyBkaXNhYmxlZA0K PjMpIGlmIFJTU19IQVNIIHNldCwNCj4gICBpKSBpZiBIVyBzdXBwb3J0cyBIQVNIIGNhbGN1bGF0 aW9uIG9mZmxvYWQgaW5kZXBlbmRlbnRseSwgZW5hYmxlIGl0DQo+ICAgICAgYW5kIHB1dCBoYXNo IHZhbHVlIHRvICJtYnVmOjpyc3M6aGFzaCIgYW5kIHNldCBQS1RfUlhfUlNTX0hBU0gNCj4gICBp aSkgaWYgSFcgZG9lc24ndCBzdXBwb3J0IGl0IHJldHVybiBlcnJvcg0KPjQpIGlmIFJTU19IQVNI IHVuc2V0LCBkb24ndCB1cGRhdGVkDQo+Im1idWY6OnJzczpoYXNoIi9QS1RfUlhfUlNTX0hBU0gN Cj4NCj4NCj5UaGlzIG1heSBiZSBnb29kIGZvciAoMykgdG8gZW5hYmxlIEhBU0ggY2FsY3VsYXRp b24gb2ZmbG9hZA0KPmluZGVwZW5kZW50IGZyb20NCj5SU1MuIE5vdCBzdXJlIGlmIHRoaXMgaXMg c3VwcG9ydGVkIGJ5IEhXIG9yIHRoaXMgaXMgdGhlIG1vdGl2YXRpb24gb2YgdGhlDQo+cGF0Y2gu DQo+DQo+QnV0IGZvciAoMSksIHNpbmNlIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkgcGFydCBv ZiBkZXNjcmlwdG9yLCB0aGlzIHdpbGwNCj5icmluZw0KPmFuIGFkZGl0aW9uYWwgY2hlY2ssIGFz IFBhdmFuIG1lbnRpb25lZCwgd2hpY2ggaXMgbm90IGdvb2QuDQo+DQo+Rm9yICgzKSBpcyB0aGVy ZSBhbnkgaW50ZW50aW9uIHRvIGltcGxpY2l0bHkgZW5hYmxlIFJTUywgdGhpcyB3YXMgbXkNCj51 bmRlcnN0YW5kaW5nIGFuZCBjb25jZXJuIHRvIGhhdmUgdHdvIGRpZmZlcmVudCBtZXRob2RzIHRv IGVuYWJsZQ0KPlJTUywNCj5JIGd1ZXNzIG15IHVuZGVyc3RhbmRpbmcgd2FzIHdyb25nIGJ1dCBJ IHdhbnQgdG8gY29uZmlybSB0aGlzLg0KPg0KPkN1cnJlbnRseSBSU1MgaGFzaCBkZWxpdmVyeSBp cyBpbXBsaWVkIHdoZW4gUlNTIGlzIGVuYWJsZWQuDQo+DQoNCkNvcnJlY3QgbWUgaWYgSSdtIHdy b25nIGJ1dCAgY3VycmVudCBhZ3JlZW1lbnQgaXMgdG8gcHJpbnQgYSBsb2cgbWVzc2FnZSB3aGVu IGFwcGxpY2F0aW9uIA0KdHJpZXMgdG8gZGlzYWJsZSBSU1MgYW5kIGl0J3Mgbm90IHN1cHBvcnRl ZCBieSB1bmRlcmx5aW5nIFBNRC4NClNvIGFsbCB0aGUgUE1EIHdoaWNoIHdlIGFyZW7igJl0IGN1 cnJlbnRseSBtb2RpZnlpbmcgbmVlZCB0byBiZSBoYXZlIGEgbG9nIG1lc3NhZ2UuDQpBbHNvLCBp dCBhcHBsaWVzIHRvIEZMT1dfRkxBRyBhbmQgRkxPV19NQVJLLg0KDQpJZiB3ZSBhcmUgYXQgYW4g YWdyZWVtZW50IEkgd2lsbCBzZW5kIHYxMy4NCg0KVGhhbmtzLA0KUGF2YW4uDQoNCj4+DQo+Pj4g TGF0ZXIgUE1EIG1haW50YWluZXJzIG1heSBwcmVmZXIgdG8gcmVwbGFjZSB0aG9zZSBlcnJvcnMg d2l0aA0KPmFjdHVhbA0KPj4+IGltcGxlbWVudGF0aW9uIGlmIHRoZXkgd2FudC4NCj4+DQo+PiBb c25pcF0NCj4+DQoNCg==