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 D37D8A00BE; Wed, 30 Oct 2019 10:00:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A96EB1BF6F; Wed, 30 Oct 2019 10:00:23 +0100 (CET) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00057.outbound.protection.outlook.com [40.107.0.57]) by dpdk.org (Postfix) with ESMTP id 506DE1BF67 for ; Wed, 30 Oct 2019 10:00:22 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ejSmUneKoo+RzGhyjv+yXNhr626Z6krB+JG3FQcynXG5v+rxxdTIVlFUis9hkhXqzQ290dnHuUgZJ99cGSnx4hL/9/JOqRpbYyJtv9RqRSF0g+0vAVE3uyu4y555cjv+q/i0iSs2cU/ps6B8AElpTArcnZ2natS/fmWzPH3HPdmFQXaANtPzppu7R96Mfi4vCYH63JYgK49DAPoUgQz7e4Zvb8B51wKm/0cvHBeti4VTexkGNqjNnb1gvAEWcy7ZCFJuA+wRS1HZW6uEPaR6Fo4TlOijFq2FSrlutiki/vPPVGq/oTXVk03UN1O8EHNTg38l19cJbStCk3T9mrwJpQ== 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=SIwH5jzPo5c8Dk26+ywNrGeLZcUq55GgaynoYTq1+Xw=; b=TYv6hUExtxhaSc704pqBerXR+jXgqFTzf0gsTbVVufZkWq9YUkY+ZQH0iI5hg/DVsfU0E7+r3AiCj5yo3olixP2YOj0DxDjWelXJU2ahnVuDPWLU/3YWaYXVoGHcDvV3EFD+cKarYD7auVsy4z+UuTR7tU0Lltnd32BUoTm7KXPDwYQAs1nZQ2C6L39h/kbZJfmvQPkg0dT0ON+eWC6g9uLKS871u5C0q808ab5EpT4CIGLZsB8gOoxggZFD9Y/q7+j6HTMVaaFXvQ6cMAEg6RysFbbYiXYx4NWR6+IRoLEjQ939TTcS3Fod9qDBQO0pG7BZ9V8gyspDzgL20UZMOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SIwH5jzPo5c8Dk26+ywNrGeLZcUq55GgaynoYTq1+Xw=; b=VeHoTFjCxK5wZQGMbjf+TF4RuAiKaJ/YKx3POzm9ehhDwdtVahQplDuV2JKL1OJDtelJsEZ8VrMTwQWWOLr1EkcFF5NH5aBx7EY73yN9cKlWl8uWJ/nqIE4MXzS83JinD/ib4vibIkhKzhCCY3RKsxq1qFtxgN+XDRGjW/U+R/s= Received: from AM4PR05MB3265.eurprd05.prod.outlook.com (10.171.188.154) by AM4PR05MB3298.eurprd05.prod.outlook.com (10.171.187.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Wed, 30 Oct 2019 08:59:30 +0000 Received: from AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b]) by AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b%7]) with mapi id 15.20.2387.027; Wed, 30 Oct 2019 08:59:30 +0000 From: Slava Ovsiienko To: Andrew Rybchenko , Thomas Monjalon , "olivier.matz@6wind.com" CC: "dev@dpdk.org" , Matan Azrad , Ori Kam , Yongseok Koh Thread-Topic: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata Thread-Index: AQHVjPYP3yCquRGX4Ean9kYpOkOfjqdx0C4AgAAEMrCAAPrZAIAAD5Uw Date: Wed, 30 Oct 2019 08:59:30 +0000 Message-ID: References: <1571922495-4588-1-git-send-email-viacheslavo@mellanox.com> <1572201636-16374-1-git-send-email-viacheslavo@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=viacheslavo@mellanox.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 7c9f3ce6-2076-4cb6-2be9-08d75d1779f0 x-ms-traffictypediagnostic: AM4PR05MB3298:|AM4PR05MB3298: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 02065A9E77 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(39860400002)(346002)(366004)(136003)(376002)(13464003)(199004)(189003)(51444003)(2906002)(7696005)(64756008)(99286004)(53546011)(186003)(4326008)(26005)(102836004)(76176011)(6436002)(6506007)(66556008)(14454004)(66446008)(52536014)(86362001)(55016002)(81156014)(33656002)(229853002)(8936002)(81166006)(8676002)(76116006)(7736002)(66476007)(305945005)(66946007)(74316002)(476003)(486006)(316002)(11346002)(66066001)(446003)(25786009)(6116002)(9686003)(2501003)(3846002)(256004)(14444005)(110136005)(6246003)(71190400001)(5660300002)(107886003)(54906003)(478600001)(71200400001)(30864003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3298; H:AM4PR05MB3265.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7XOGJRunMKBsBcNuWmtxjn0usbAXQrVn5ax6YPYDdtTIUQUYZgPVoXAvyNymX9/KCOn1uyWwW0G9kofS8lhy7iGVo6/eAq0WA2RCmAlNJQHqwjAc473pjnXUudusVO+4J7/MlgXAkkH7JJatZHNrKhNaah4xSn46ZnVCld3EFHe/g0B5Izvk32fj8I0EnKvjYJs65YPBvXJQC1EI4OCKo1Gx9CYirPJ7uPwhcKqHolxMmMlyRAy8HkkwiuhlYjdsZ6i8IKtbc5S8e/fzR5VQypSzAxp6Jzh9WVDCwIDjNyZ4jfvNd+B/aTUSTW+NPWMdHbvFjUaZ1stDIa0k1NtW4dMwcApmEEM/454rIOrDMExTakYNbWvXmQgdIpPtG6cnrVrZtZyYfhlrTG6bJOUiSi1TTO9SLZmAnD3Ii3E1uxqPo6g9Ff2hII6PoGCT/9rb Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c9f3ce6-2076-4cb6-2be9-08d75d1779f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Oct 2019 08:59:30.5719 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yfGZkV/bJvkjsac8WB27qtNgRQeoMSfkWVlfEyessE2/axTdOnnM4HwuzEzmgk4BZLM19sHo3f0Cjcgx7DFeJg4LaefV7tqp+vFtHHiWzmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3298 Subject: Re: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxh cnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMzAs IDIwMTkgOTozNQ0KPiBUbzogU2xhdmEgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BtZWxsYW5veC5j b20+OyBUaG9tYXMgTW9uamFsb24NCj4gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBvbGl2aWVyLm1h dHpANndpbmQuY29tDQo+IENjOiBkZXZAZHBkay5vcmc7IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxs YW5veC5jb20+OyBPcmkgS2FtDQo+IDxvcmlrYUBtZWxsYW5veC5jb20+OyBZb25nc2VvayBLb2gg PHlza29oQG1lbGxhbm94LmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY0 XSBldGhkZXY6IGV4dGVuZCBmbG93IG1ldGFkYXRhDQo+IA0KPiBAT2xpdmllciwgcGxlYXNlLCB0 YWtlIGEgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBtYWlsLg0KPiANCj4gT24gMTAvMjkvMTkgODox OSBQTSwgU2xhdmEgT3ZzaWllbmtvIHdyb3RlOg0KPiA+IEhpLCBBbmRyZXcNCj4gPg0KPiA+IFRo YW5rIHlvdSBmb3IgdGhlIHJldmlldy4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUu Y29tPg0KPiA+PiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDI5LCAyMDE5IDE4OjIyDQo+ID4+IFRv OiBTbGF2YSBPdnNpaWVua28gPHZpYWNoZXNsYXZvQG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9y Zw0KPiA+PiBDYzogVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgTWF0YW4g QXpyYWQNCj4gPj4gPG1hdGFuQG1lbGxhbm94LmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb207 IE9yaSBLYW0NCj4gPj4gPG9yaWthQG1lbGxhbm94LmNvbT47IFlvbmdzZW9rIEtvaCA8eXNrb2hA bWVsbGFub3guY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjRdIGV0 aGRldjogZXh0ZW5kIGZsb3cgbWV0YWRhdGENCj4gPj4NCj4gPj4gT24gMTAvMjcvMTkgOTo0MCBQ TSwgVmlhY2hlc2xhdiBPdnNpaWVua28gd3JvdGU6DQo+ID4+PiBDdXJyZW50bHksIG1ldGFkYXRh IGNhbiBiZSBzZXQgb24gZWdyZXNzIHBhdGggdmlhIG1idWYgdHhfbWV0YWRhdGENCj4gPj4+IGZp ZWxkIHdpdGggUEtUX1RYX01FVEFEQVRBIGZsYWcgYW5kIFJURV9GTE9XX0lURU1fVFlQRV9NRVRB DQo+ID4+IG1hdGNoZXMgbWV0YWRhdGEuDQo+ID4+PiBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIG1l dGFkYXRhIGZlYXR1cmUgdXNhYmlsaXR5Lg0KPiA+Pj4NCj4gPj4+IDEpIFJURV9GTE9XX0FDVElP Tl9UWVBFX1NFVF9NRVRBDQo+ID4+Pg0KPiA+Pj4gV2hlbiBzdXBwb3J0aW5nIG11bHRpcGxlIHRh YmxlcywgVHggbWV0YWRhdGEgY2FuIGFsc28gYmUgc2V0IGJ5IGENCj4gPj4+IHJ1bGUgYW5kIG1h dGNoZWQgYnkgYW5vdGhlciBydWxlLiBUaGlzIG5ldyBhY3Rpb24gYWxsb3dzIG1ldGFkYXRhIHRv DQo+ID4+PiBiZSBzZXQgYXMgYSByZXN1bHQgb2YgZmxvdyBtYXRjaC4NCj4gPj4+DQo+ID4+PiAy KSBNZXRhZGF0YSBvbiBpbmdyZXNzDQo+ID4+Pg0KPiA+Pj4gVGhlcmUncyBhbHNvIG5lZWQgdG8g c3VwcG9ydCBtZXRhZGF0YSBvbiBpbmdyZXNzLiBNZXRhZGF0YSBjYW4gYmUNCj4gPj4+IHNldCBi eSBTRVRfTUVUQSBhY3Rpb24gYW5kIG1hdGNoZWQgYnkgTUVUQSBpdGVtIGxpa2UgVHguIFRoZSBm aW5hbA0KPiA+Pj4gdmFsdWUgc2V0IGJ5IHRoZSBhY3Rpb24gd2lsbCBiZSBkZWxpdmVyZWQgdG8g YXBwbGljYXRpb24gdmlhDQo+ID4+PiBtZXRhZGF0YSBkeW5hbWljIGZpZWxkIG9mIG1idWYgd2hp Y2ggY2FuIGJlIGFjY2Vzc2VkIGJ5DQo+ID4+IFJURV9GTE9XX0RZTkZfTUVUQURBVEEoKS4NCj4g Pj4+IFBLVF9SWF9EWU5GX01FVEFEQVRBIGZsYWcgd2lsbCBiZSBzZXQgYWxvbmcgd2l0aCB0aGUg ZGF0YS4NCj4gPj4+DQo+ID4+PiBUaGUgbWJ1ZiBkeW5hbWljIGZpZWxkIG11c3QgYmUgcmVnaXN0 ZXJlZCBieSBjYWxsaW5nDQo+ID4+PiBydGVfZmxvd19keW5mX21ldGFkYXRhX3JlZ2lzdGVyKCkg cHJpb3IgdG8gdXNlIFNFVF9NRVRBIGFjdGlvbi4NCj4gPj4+DQo+ID4+PiBUaGUgYXZhaWxhYmls aXR5IG9mIGR5bmFtaWMgbWJ1ZiBtZXRhZGF0YSBmaWVsZCBjYW4gYmUgY2hlY2tlZCB3aXRoDQo+ ID4+PiBydGVfZmxvd19keW5mX21ldGFkYXRhX2F2YWlsKCkgcm91dGluZS4NCj4gPj4+DQo+ID4+ PiBGb3IgbG9vcGJhY2svaGFpcnBpbiBwYWNrZXQsIG1ldGFkYXRhIHNldCBvbiBSeC9UeCBtYXkg b3IgbWF5IG5vdCBiZQ0KPiA+Pj4gcHJvcGFnYXRlZCB0byB0aGUgb3RoZXIgcGF0aCBkZXBlbmRp bmcgb24gaGFyZHdhcmUgY2FwYWJpbGl0eS4NCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBZ b25nc2VvayBLb2ggPHlza29oQG1lbGxhbm94LmNvbT4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFZp YWNoZXNsYXYgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BtZWxsYW5veC5jb20+DQo+ID4+IEFib3Zl IGV4cGxhbmF0aW9ucyBsYWNrIGluZm9ybWF0aW9uIGFib3V0ICJtZXRhIiB2cyAibWFyayIgd2hp Y2ggbWF5DQo+ID4+IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFuZCBkZWxpdmVyZWQgaW4gb3RoZXIg bWJ1ZiBmaWVsZC4NCj4gPj4gSXQgc2hvdWxkIGJlIGV4cGxhaW5lZCBieSBvbmUgbW9yZSBmaWVs ZCBpcyByZXF1aXJlZCBhbmQgcnVsZXMgZGVmaW5lZC4NCj4gPiBUaGVyZSBpcyBzb21lIHN0b3J5 IGFib3V0IG1ldGFkYXRhIGZlYXR1cmVzLg0KPiA+IEluaXRpYWxseSwgdGhlcmUgd2VyZSBwcm9w b3NlZCB0d28gbWV0YWRhdGEgcmVsYXRlZCBhY3Rpb25zOg0KPiA+DQo+ID4gLSBSVEVfRkxPV19B Q1RJT05fVFlQRV9GTEFHDQo+ID4gLSBSVEVfRkxPV19BQ1RJT05fVFlQRV9NQVJLDQo+ID4NCj4g PiBUaGVzZSBhY3Rpb25zIHNldCB0aGUgc3BlY2lhbCBmbGFnIGluIHRoZSBwYWNrZXQgbWV0YWRh dGEsIE1BUksgYWN0aW9uDQo+ID4gc3RvcmVzIHNvbWUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBt ZXRhZGF0YSBzdG9yYWdlLCBhbmQsIG9uIHRoZQ0KPiA+IHBhY2tldCByZWNlaXZpbmcgUE1EIHB1 dHMgdGhlIGZsYWcgYW5kIHZhbHVlIHRvIHRoZSBtYnVmIGFuZA0KPiA+IGFwcGxpY2F0aW9ucyBj YW4gc2VlIHRoZSBwYWNrZXQgd2FzIHRocmVhdGVkIGluc2lkZSBmbG93IGVuZ2luZQ0KPiA+IGFj Y29yZGluZyB0byB0aGUgYXBwcm9wcmlhdGUgUlRFIGZsb3cocykuIE1BUksgYW5kIEZMQUcgYXJl IGxpa2Ugc29tZQ0KPiA+IGtpbmQgb2YgZ2F0ZXdheSB0byB0cmFuc2ZlciBzb21lIHBlci1wYWNr ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmxvdw0KPiBlbmdpbmUgdG8gdGhlIGFwcGxpY2F0aW9u IHZpYSByZWNlaXZpbmcgZGF0YXBhdGguDQo+ID4NCj4gPiAgRnJvbSB0aGUgZGF0YXBhdGggcG9p bnQgb2YgdmlldywgdGhlIE1BUksgYW5kIEZMQUcgYXJlIHJlbGF0ZWQgdG8gdGhlDQo+IHJlY2Vp dmluZyBzaWRlIG9ubHkuDQo+ID4gSXQgd291bGQgdXNlZnVsIHRvIGhhdmUgdGhlIHNhbWUgZ2F0 ZXdheSBvbiB0aGUgdHJhbnNtaXR0aW5nIHNpZGUgYW5kDQo+ID4gdGhlcmUgd2FzIHRoZSBmZWF0 dXJlIG9mIHR5cGUgUlRFX0ZMT1dfSVRFTV9UWVBFX01FVEEgd2FzDQo+IHByb3Bvc2VkLg0KPiA+ IFRoZSBhcHBsaWNhdGlvbiBjYW4gZmlsbCB0aGUgZmllbGQgaW4gbWJ1ZiBhbmQgdGhpcyB2YWx1 ZSB3aWxsIGJlIHRyYW5zZmVycmVkIHRvDQo+IHNvbWUgZmllbGQgaW4gdGhlIHBhY2tldCBtZXRh ZGF0YSBpbnNpZGUgdGhlIGZsb3cgZW5naW5lLg0KPiA+IEl0IGRpZCBub3QgbWF0dGVyIHdoZXRo ZXIgdGhlc2UgbWV0YWRhdGEgZmllbGRzIGFyZSBzaGFyZWQgYmVjYXVzZSBvZg0KPiA+IE1BUksg YW5kIE1FVEEgaXRlbXMgYmVsb25nZWQgdG8gZGlmZmVyZW50IGRvbWFpbnMgKHJlY2VpdmluZyBh bmQNCj4gdHJhbnNtaXR0aW5nKSBhbmQgY291bGQgYmUgdmVuZG9yLXNwZWNpZmljLg0KPiA+DQo+ ID4gU28gZmFyLCBzbyBnb29kLCBEUERLIHByb3Bvc2VzIHNvbWUgZW50aXRpZXMgdG8gY29udHJv bCBtZXRhZGF0YQ0KPiA+IGluc2lkZSB0aGUgZmxvdyBlbmdpbmUgYW5kIGdhdGV3YXlzIHRvIGV4 Y2hhbmdlIHRoZXNlIHZhbHVlcyBvbiBhIHBlci0NCj4gcGFja2V0IGJhc2lzIHZpYSBkYXRhcGF0 aHMuDQo+ID4NCj4gPiBBcyB3ZSBjYW4gc2VlLCB0aGUgTUFSSyBhbmQgTUVUQSBtZWFucyBhcmUg bm90IHN5bW1ldHJpYywgdGhlcmUgaXMNCj4gPiBhYnNlbnQgYWN0aW9uIHdoaWNoIHdvdWxkIGFs bG93IHVzIHRvIHNldCBNRVRBIHZhbHVlIG9uIHRoZSB0cmFuc21pdHRpbmcNCj4gcGF0aC4gU28s IHRoZSBhY3Rpb24gb2YgdHlwZToNCj4gPiAtIFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRB IGlzIHByb3Bvc2VkLg0KPiA+DQo+ID4gVGhlIG5leHQsIGFwcGxpY2F0aW9ucyByYWlzZSB0aGUg bmV3IHJlcXVpcmVtZW50cyBmb3IgcGFja2V0IG1ldGFkYXRhLg0KPiA+IFRoZSBmbG93IGVuZ2lu ZXMgYXJlIGdldHRpbmcgbW9yZSBjb21wbGV4LCBpbnRlcm5hbCBzd2l0Y2hlcyBhcmUNCj4gPiBp bnRyb2R1Y2VkLCBtdWx0aXBsZSBwb3J0cyBtaWdodCBiZSBzdXBwb3J0ZWQgd2l0aGluIHRoZSBz YW1lIGZsb3cNCj4gPiBlbmdpbmUgbmFtZXNwYWNlLiBGcm9tIHRoZSBEUERLIHBvaW50cyBvZiB2 aWV3LCBpdCBtZWFucyB0aGUgcGFja2V0cw0KPiA+IG1pZ2h0IGJlIHNlbnQgb24gb25lIGV0aF9k ZXYgcG9ydCBhbmQgcmVjZWl2ZWQgb24gdGhlIG90aGVyIG9uZSwgYW5kIHRoZQ0KPiBwYWNrZXQg cGF0aCBpbnNpZGUgdGhlIGZsb3cgZW5naW5lIGVudGlyZWx5IGJlbG9uZ3MgdG8gdGhlIHNhbWUg aGFyZHdhcmUNCj4gZGV2aWNlLiBUaGUgc2ltcGxlc3QgZXhhbXBsZSBpcyBTUi1JT1Ygd2l0aCBQ RiwgVkZzIGFuZCB0aGUgcmVwcmVzZW50b3JzLg0KPiA+IEFuZCB0aGVyZSBpcyBhIGJyaWxsaWFu dCBvcHBvcnR1bml0eSB0byBwcm92aWRlIHNvbWUgb3V0LW9mLWJhbmQgY2hhbm5lbCB0bw0KPiB0 cmFuc2ZlciBzb21lIGV4dHJhIGRhdGENCj4gPiAgIGZyb20gb25lIHBvcnQgdG8gYW5vdGhlciBv bmUsIGJlc2lkZXMgdGhlIHBhY2tldCBkYXRhIGl0c2VsZi4NCj4gPg0KPiA+DQo+ID4+IEFib3Zl IGV4cGxhbmF0aW9ucyBsYWNrIGluZm9ybWF0aW9uIGFib3V0ICJtZXRhIiB2cyAibWFyayIgd2hp Y2ggbWF5DQo+ID4+IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFuZCBkZWxpdmVyZWQgaW4gb3RoZXIg bWJ1ZiBmaWVsZC4NCj4gPj4gSXQgc2hvdWxkIGJlIGV4cGxhaW5lZCBieSBvbmUgbW9yZSBmaWVs ZCBpcyByZXF1aXJlZCBhbmQgcnVsZXMgZGVmaW5lZC4NCj4gPj4gT3RoZXJ3aXNlIHdlIGNhbiBl bmR1cCBpbiBoYWxmIFBNRHMgc3VwcG9ydGluZyBtYXJrIG9ubHksIGhhbGYgUE1Ecw0KPiA+PiBz dXBwb3J0aW5nIG1ldGEgb25seSBhbmQgYXBwbGljYXRpb25zIGluIGFuIGludGVyZXN0aW5nIHNp dHVhdGlvbiB0bw0KPiA+PiBtYWtlIGEgY2hvaWNlIHdoaWNoIG9uZSB0byB1c2UuDQo+ID4gVGhl cmUgaXMgbm8gIm1hcmsiIHZzICJtZXRhIi4gTUFSSyBhbmQgTUVUQSBtZWFucyBhcmUga2VwdCBm b3INCj4gPiBjb21wYXRpYmlsaXR5IGlzc3VlcyBhbmQgbGVnYWN5IHBhcnQgd29ya3MgZXhhY3Rs eSBhcyBiZWZvcmUuIFRoZQ0KPiA+IHRyaWFscyAod2l0aCBmbG93X3ZhbGlkYXRlKSAgaXMgc3Vw cG9zZWQgdG8gY2hlY2sgd2hldGhlciBQTUQgc3VwcG9ydHMNCj4gPiBNQVJLIG9yIE1FVEEgZmVh dHVyZSBvbiBhcHByb3ByaWF0ZSBkb21haW4uIEl0IGRlcGVuZHMgb24gUE1EDQo+ID4gaW1wbGVt ZW50YXRpb24sIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVybGF5aW5nIEhXL0ZXL2tlcm5lbCBjYXBh YmlsaXRpZXMNCj4gYW5kIHNob3VsZCBiZSByZXNvbHZlZCBpbiBydW50aW1lLg0KPiANCj4gVGhl IHRyaWFscyBhIHdheSwgYnV0IHZlcnkgdHJpY2t5IHdheS4gTXkgaW1hZ2luYXRpb24gZHJhd3Mg bWUgcGljdHVyZXMgaG93DQo+IGFuIGFwcGxpY2F0aW9uIGNvZGUgY291bGQgbG9vayBsaWtlIGlu IGF0dGVtcHQgdG8gdXNlIGVpdGhlciBtYXJrIG9yIG1ldGEgZm9yDQo+IFJ4IG9ubHkgYW5kIHRo ZXNlIHBpY3R1cmVzIGFyZSBub3QgbmljZS4NCkFncmVlLCB0cmlhbHMgaXMgbm90IHRoZSBiZXN0 IHdheS4NCkZvciBub3cgdGhlcmUgaXMgbm8gYXBwbGljYXRpb24gdHJ5aW5nIHRvIGNob29zZSBt YXJrIG9yIG1ldGEsIGJlY2F1c2UgdGhlc2Ugb25lcw0KYmVsb25nZWQgdG8gb3RoZXIgZG9tYWlu cywgYW5kIGV4dGVuc2lvbiBpcyBuZXdseSBpbnRyb2R1Y2VkLiANClNvLCB0aGUgYXBwbGljYXRp b25zIHVzaW5nIG1hcmsgd2lsbCBjb250aW51ZSB1c2UgbWFyaywgdGhlIHNhbWUgaXMgcmVnYXJk aW5nIG1ldGEuDQpUaGUgbmV3IGFwcGxpY2F0aW9uIGRlZmluaXRlbHkgd2lsbCBhc2sgZm9yIGJv dGggbWFyayBhbmQgb2YgdGhlbSwNCndlIGhhdmUgdGhlIHJlcXVpcmVtZW50cyBmcm9tIGN1c3Rv bWVycyAgLSAiZ2l2ZSB1cyBhcyBtYW55IHRocm91Z2ggYml0cyBhcyB5b3UgY2FuIi4NClRoaXMg bmV3IGFwcGxpY2F0aW9uIGp1c3QgbWF5IHJlZnVzZSB0byB3b3JrIGlmIG1ldGFkYXRhIGZlYXR1 cmVzIGFyZSBub3QgZGV0ZWN0ZWQsDQpiZWNhdXNlIHJlbGF5cyBvbiBpdCBzdHJvbmdseS4NCkJU VywgdHJpYWxzIGFyZSBub3Qgc28gY29tcGxleDogcnRlX2Zsb3dfdmFsaWRhdGUobWFyayksIHJ0 ZV9mbG93X3ZhbGlkYXRlX21ldGFkYXRhKCkNCmFuZCB0aGF0J3MgaXQuDQoNCj4gTWF5IGJlIGl0 IHdpbGwgbG9vayBhY2NlcHRhYmxlIHdoZW4gbWFyayBiZWNvbWVzIGEgZHluYW1pYyBzaW5jZSB1 c2FnZSBvZg0KPiBlaXRoZXIgb25lIG9yIGFub3RoZXIgZHluYW1pYyBmaWVsZCBpcyBkZWZpbml0 ZWx5IGVhc2llciB0aGFuIHVzYWdlIG9mIGVpdGhlcg0KPiBmaXhlZCBvciBkeW5hbWljIGZpZWxk Lg0KQXQgbGVhc3QgaW4gUE1EIGRhdGFwYXRoIGl0IGRvZXMgbm90IGxvb2sgdmVyeSB1Z2x5Lg0K PiANCj4gTWF5IGJlIGR5bmFtaWMgZmllbGQgZm9yIG1hcmsgYXQgZml4ZWQgb2Zmc2V0IHNob3Vs ZCBiZSBpbnRyb2R1Y2VkIGluIHRoZQ0KPiByZWxlYXNlIG9yIHRoZSBuZWFyZXN0IGZ1dHVyZT8g SXQgd2lsbCBhbGxvdyB0byBwcmVzZXJ2ZSBBQkkgdXAgdG8gMjAuMTEgYW5kDQo+IHByb3ZpZGUg ZnV0dXJlIHByb29mIEFQSS4NCj4gVGhlIHRyaWNrIGlzIHRvIHJlZ2lzdGVyIGR5bmFtaWMgbWV0 YSBmaWVsZCBhdCBmaXhlZCBvZmZzZXQgYXQgc3RhcnQgb2YgYSBkYXkgdG8NCj4gYmUgc3VyZSB0 aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gc3VjY2VlZC4NCj4gSXQgc291bmRzIGxpa2UgaXQgaXMg YSB0cmFuc2l0aW9uIG1lY2hhbmlzbSBmcm9tIGZpeGVkIHRvIGR5bmFtaWMgZmllbGRzLg0KPiAN Cj4gW3NuaXBdDQo+IA0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9m bG93LmgNCj4gPj4+IGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaCBpbmRleCA0ZmVlMTA1 Li5iODIxNTU3IDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cu aA0KPiA+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+Pj4gQEAgLTI4 LDYgKzI4LDggQEANCj4gPj4+ICAgICNpbmNsdWRlIDxydGVfYnl0ZW9yZGVyLmg+DQo+ID4+PiAg ICAjaW5jbHVkZSA8cnRlX2VzcC5oPg0KPiA+Pj4gICAgI2luY2x1ZGUgPHJ0ZV9oaWdpZy5oPg0K PiA+Pj4gKyNpbmNsdWRlIDxydGVfbWJ1Zi5oPg0KPiA+Pj4gKyNpbmNsdWRlIDxydGVfbWJ1Zl9k eW4uaD4NCj4gPj4+DQo+ID4+PiAgICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gPj4+ICAgIGV4dGVy biAiQyIgew0KPiA+Pj4gQEAgLTQxOCw3ICs0MjAsOCBAQCBlbnVtIHJ0ZV9mbG93X2l0ZW1fdHlw ZSB7DQo+ID4+PiAgICAJLyoqDQo+ID4+PiAgICAJICogW01FVEFdDQo+ID4+PiAgICAJICoNCj4g Pj4+IC0JICogTWF0Y2hlcyBhIG1ldGFkYXRhIHZhbHVlIHNwZWNpZmllZCBpbiBtYnVmIG1ldGFk YXRhIGZpZWxkLg0KPiA+Pj4gKwkgKiBNYXRjaGVzIGEgbWV0YWRhdGEgdmFsdWUuDQo+ID4+PiAr CSAqDQo+ID4+PiAgICAJICogU2VlIHN0cnVjdCBydGVfZmxvd19pdGVtX21ldGEuDQo+ID4+PiAg ICAJICovDQo+ID4+PiAgICAJUlRFX0ZMT1dfSVRFTV9UWVBFX01FVEEsDQo+ID4+PiBAQCAtMTI2 Myw5ICsxMjY2LDE3IEBAIHN0cnVjdCBydGVfZmxvd19pdGVtX2ljbXA2X25kX29wdF90bGFfZXRo DQo+IHsNCj4gPj4+ICAgICNlbmRpZg0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gLSAqIFJU RV9GTE9XX0lURU1fVFlQRV9NRVRBLg0KPiA+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+PiArICogQGIg RVhQRVJJTUVOVEFMOiB0aGlzIHN0cnVjdHVyZSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90 aWNlDQo+ID4+IElzIGl0IGFsbG93ZWQgdG8gbWFrZSBleHBlcmltZW50YWwgYmFjaz8NCj4gPiBJ IHRoaW5rIHdlIHNob3VsZCByZW1vdmUgRVhQRVJJTUVOVEFMIGhlcmUuIFdlIGRvIG5vdCBpbnRy b2R1Y2UgbmV3DQo+ID4gZmVhdHVyZSwgYnV0IGp1c3QgZXh0ZW5kIHRoZSBhcHBseSBhcmVhLg0K PiANCj4gQWdyZWVkLg0KPiANCj4gPj4+ICAgICAqDQo+ID4+PiAtICogTWF0Y2hlcyBhIHNwZWNp ZmllZCBtZXRhZGF0YSB2YWx1ZS4NCj4gPj4+ICsgKiBSVEVfRkxPV19JVEVNX1RZUEVfTUVUQQ0K PiA+Pj4gKyAqDQo+ID4+PiArICogTWF0Y2hlcyBhIHNwZWNpZmllZCBtZXRhZGF0YSB2YWx1ZS4g T24gZWdyZXNzLCBtZXRhZGF0YSBjYW4gYmUNCj4gPj4+ICsgc2V0IGVpdGhlciBieQ0KPiA+Pj4g KyAqIG1idWYgdHhfbWV0YWRhdGEgZmllbGQgd2l0aCBQS1RfVFhfTUVUQURBVEEgZmxhZyBvcg0K PiA+Pj4gKyAqIFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRBLiBPbiBpbmdyZXNzLA0KPiA+ Pj4gKyBSVEVfRkxPV19BQ1RJT05fVFlQRV9TRVRfTUVUQSBzZXRzDQo+ID4+PiArICogbWV0YWRh dGEgZm9yIGEgcGFja2V0IGFuZCB0aGUgbWV0YWRhdGEgd2lsbCBiZSByZXBvcnRlZCB2aWEgbWJ1 Zg0KPiA+Pj4gKyBtZXRhZGF0YQ0KPiA+Pj4gKyAqIGR5bmFtaWMgZmllbGQgd2l0aCBQS1RfUlhf RFlORl9NRVRBREFUQSBmbGFnLiBUaGUgZHluYW1pYw0KPiBtYnVmDQo+ID4+PiArIGZpZWxkIG11 c3QgYmUNCj4gPj4+ICsgKiByZWdpc3RlcmVkIGluIGFkdmFuY2UgYnkgcnRlX2Zsb3dfZHluZl9t ZXRhZGF0YV9yZWdpc3RlcigpLg0KPiA+Pj4gICAgICovDQo+ID4+PiAgICBzdHJ1Y3QgcnRlX2Zs b3dfaXRlbV9tZXRhIHsNCj4gPj4+ICAgIAlydGVfYmUzMl90IGRhdGE7DQo+ID4+IFtzbmlwXQ0K PiA+Pg0KPiA+Pj4gQEAgLTI0MjksNiArMjQ0Nyw1NSBAQCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9u X3NldF9tYWMgew0KPiA+Pj4gICAgCXVpbnQ4X3QgbWFjX2FkZHJbUlRFX0VUSEVSX0FERFJfTEVO XTsNCj4gPj4+ICAgIH07DQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIEB3YXJuaW5nDQo+ ID4+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIHN0cnVjdHVyZSBtYXkgY2hhbmdlIHdpdGhv dXQgcHJpb3Igbm90aWNlDQo+ID4+PiArICoNCj4gPj4+ICsgKiBSVEVfRkxPV19BQ1RJT05fVFlQ RV9TRVRfTUVUQQ0KPiA+Pj4gKyAqDQo+ID4+PiArICogU2V0IG1ldGFkYXRhLiBNZXRhZGF0YSBz ZXQgYnkgbWJ1ZiB0eF9tZXRhZGF0YSBmaWVsZCB3aXRoDQo+ID4+PiArICogUEtUX1RYX01FVEFE QVRBIGZsYWcgb24gZWdyZXNzIHdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGlzIGFjdGlvbi4NCj4g Pj4+ICtPbg0KPiA+Pj4gKyAqIGluZ3Jlc3MsIHRoZSBtZXRhZGF0YSB3aWxsIGJlIGNhcnJpZWQg YnkgbWJ1ZiBtZXRhZGF0YSBkeW5hbWljDQo+ID4+PiArZmllbGQNCj4gPj4+ICsgKiB3aXRoIFBL VF9SWF9EWU5GX01FVEFEQVRBIGZsYWcgaWYgc2V0LiAgVGhlIGR5bmFtaWMgbWJ1ZiBmaWVsZA0K PiA+Pj4gK211c3QgYmUNCj4gPj4+ICsgKiByZWdpc3RlcmVkIGluIGFkdmFuY2UgYnkgcnRlX2Zs b3dfZHluZl9tZXRhZGF0YV9yZWdpc3RlcigpLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogQWx0ZXJp bmcgcGFydGlhbCBiaXRzIGlzIHN1cHBvcnRlZCB3aXRoIG1hc2suIEZvciBiaXRzIHdoaWNoDQo+ ID4+PiAraGF2ZSBuZXZlcg0KPiA+Pj4gKyAqIGJlZW4gc2V0LCB1bnByZWRpY3RhYmxlIHZhbHVl IHdpbGwgYmUgc2VlbiBkZXBlbmRpbmcgb24gZHJpdmVyDQo+ID4+PiArICogaW1wbGVtZW50YXRp b24uIEZvciBsb29wYmFjay9oYWlycGluIHBhY2tldCwgbWV0YWRhdGEgc2V0IG9uDQo+ID4+PiAr UngvVHggbWF5DQo+ID4+PiArICogb3IgbWF5IG5vdCBiZSBwcm9wYWdhdGVkIHRvIHRoZSBvdGhl ciBwYXRoIGRlcGVuZGluZyBvbiBIVw0KPiA+PiBjYXBhYmlsaXR5Lg0KPiA+Pj4gKyAqDQo+ID4+ PiArICogUlRFX0ZMT1dfSVRFTV9UWVBFX01FVEEgbWF0Y2hlcyBtZXRhZGF0YS4NCj4gPj4+ICsg Ki8NCj4gPj4+ICtzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3NldF9tZXRhIHsNCj4gPj4+ICsJcnRl X2JlMzJfdCBkYXRhOw0KPiA+Pj4gKwlydGVfYmUzMl90IG1hc2s7DQo+ID4+IEFzIEkgdW5kZXJz dGFuZCB0eF9tZXRhZGF0YSBpcyBob3N0IGVuZGlhbi4gSnVzdCBkb3VibGUtY2hlY2tpbmcuDQo+ ID4+IElzIGEgbmV3IGR5bmFtaWMgZmllbGQgaG9zdCBlbmRpYW4gb3IgYmlnIGVuZGlhbj8NCj4g Pj4gSSBkZWZpbml0ZWx5IHdvdWxkIGxpa2UgdG8gc2VlIG1vdGl2YXRpb24gaW4gY29tbWVudHMg d2h5IGRhdGEvbWFzaw0KPiA+PiBhcmUgYmlnLSBlbmRpYW4gaGVyZS4NCj4gPiBtZXRhZGF0YSBp cyBvcGFxdWUgdmFsdWUsIGVuZGlhbm5lc3MgZG9lcyBub3QgbWF0dGVyLCB0aGVyZSBhcmUgbm8N Cj4gPiBzb21lIHNwZWNpYWwgbW90aXZhdGlvbnMgZm9yIGNob29zaW5nIGVuZGlhbm5lcy4gcnRl X2Zsb3dfaXRlbV9tZXRhKCkNCj4gPiBzdHJ1Y3R1cmUgcHJvdmlkZXMgZGF0YSB3aXRoIHJ0ZV9i ZTMyX3QgdHlwZSwgc28gbWV0YSByZWxhdGVkIGFjdGlvbiBkb2VzDQo+IHRoZSBzYW1lLg0KPiAN Cj4gRW5kaWFubmVzcyBvZiBtZXRhIGluIG1idWYgYW5kIGZsb3cgQVBJIHNob3VsZCBtYXRjaCBh bmQgaXQgbXVzdCBiZQ0KWWVzLCBhbmQgdGhleSBtYXRjaCAoZm9yIG1ldGEpLCBib3RoIGFyZSBy dGVfYmUzMl90LiBPSywgd2lsbCBlbXBoYXNpemUgaXQgaW4gZG9jcy4NCg0KPiBkb2N1bWVudGVk LiBFbmRpYW5uZXNzIGlzIGltcG9ydGFudCBpZiBhIEhXIHN1cHBvcnRzIGxlc3MgYml0cyBzaW5j ZSBpdA0KPiBtYWtlcyBhIGhpdCBmb3IgYXBwbGljYXRpb24gdG8gdXNlIExTQiBmaXJzdCBpZiB0 aGUgYml0IHNwYWNlIGlzIHN1ZmZpY2llbnQuDQo+IG1hcmsgaXMgZGVmaW5lZCBhcyBob3N0LWVu ZGlhbiAodWludDMyX3QpIGFuZCBJIHRoaW5rIG1ldGEgc2hvdWxkIGJlIHRoZQ0KPiBzYW1lLiBP dGhlcndpc2UgaXQgY29tcGxpY2F0ZXMgZXZlbiBtb3JlIGVpdGhlciBtYXJrIG9yIG1ldGEgdXNh Z2UgYXMNCj4gZGlzY3Vzc2VkIGFib3ZlIC4NCm1hcmsgaXMgbWFyaywgbWV0YSBpcyBtZXRhLCB0 aGVzZSBvbmVzIGFyZSBub3QgaW50ZXJyZWxhdGVkIChkZXNwaXRlIHRoZXkNCmFyZSBiZWNvbWlu ZyBzaW1pbGFyKS4gQW5kIHRoZXJlIGlzIG5vIGNob2ljZSBiZXR3ZWVuIG1hcmsgYW5kIG1ldGEu DQpJdCBpcyBub3Qgb2J2aW91cyB3ZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBlbmRpYW5uZXNzIGZv ciBib3RoLg0KVGhlcmUgYXJlIHNvbWUgYXBwbGljYXRpb25zIHVzaW5nIHRoaXMgbGVnYWN5IGZl YXR1cmVzLCBzbyB0aGVyZSBtaWdodCBiZSBjb21wYXRpYmlsaXR5DQppc3N1ZXMgZWl0aGVyLg0K DQo+IA0KPiBZZXMsIEkgdGhpbmsgdGhhdCBydGVfZmxvd19pdGVtX21ldGEgc2hvdWxkIGJlIGZp eGVkIHNpbmNlIGJvdGggbWFyayBhbmQNCj4gdHhfbWV0YWRhdGEgYXJlIGhvc3QtZW5kaWFuLg0K PiANCj4gKGl0IHNheXMgbm90aGluZyBhYm91dCBIVyBpbnRlcmZhY2Ugd2hpY2ggaXMgdmVuZG9y IHNwZWNpZmljIGFuZCB2ZW5kb3INCj4gUE1EcyBzaG91bGQgY2FyZSBhYm91dCBpdCkNCkhhbmRs aW5nIHRoaXMgaW4gUE1EIG1pZ2h0IGludHJvZHVjZSB0aGUgZXh0cmEgZW5kaWFubmVzcyBjb252 ZXJzaW9uIGluIGRhdGFwYXRoLA0KaW1wYWN0aW5nIHBlcmZvcm1hbmNlLiBOb3QgbmljZSwgSU1P Lg0KPiANCj4gPiBJIGNvdWxkIGFzc3VtZSB0aGUgb3JpZ2luIG9mIHNlbGVjdGluZyBiaWdlbmRp YW4gdHlwZSB3YXMgdGhlDQo+ID4gZW5kaWFubmVzcyBvZiBtZXRhZGF0YSBmaWVsZCBpbiBUeCBk ZXNjcmlwdG9yIG9mIENvbm5lY3RYIE5JQ3MuDQo+ID4NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+ Pj4gKy8qIE1idWYgZHluYW1pYyBmaWVsZCBvZmZzZXQgZm9yIG1ldGFkYXRhLiAqLyBleHRlcm4g aW50DQo+ID4+PiArcnRlX2Zsb3dfZHluZl9tZXRhZGF0YV9vZmZzOw0KPiA+Pj4gKw0KPiA+Pj4g Ky8qIE1idWYgZHluYW1pYyBmaWVsZCBmbGFnIG1hc2sgZm9yIG1ldGFkYXRhLiAqLyBleHRlcm4g dWludDY0X3QNCj4gPj4+ICtydGVfZmxvd19keW5mX21ldGFkYXRhX21hc2s7DQo+ID4+IFRoZXNl IHR3byBnbG9iYWwgdmFyaWFibGVzIGxvb2sgZnJpZ2h0ZW5pbmcgdG8gbWUuDQo+ID4+IEl0IGRv ZXMgbm90IGxvb2sgZ29vZCB0byBtZS4NCj4gPiBGb3IgbWUgdG9vLiBCdXQgd2UgbmVlZCB0aGUg cGVyZm9ybWFuY2UsIHRoZXNlIG9uZXMgYXJlIGludGVuZGVkIGZvcg0KPiA+IHVzYWdlIGluIGRh dGFwYXRoLCBhbnkgb3ZlcmhlYWQgaXMgcGFpbmZ1bC4NCj4gDQo+IEBPbGl2aWVyLCBjb3VsZCB5 b3Ugc2hhcmUgeW91ciB0aG91Z2h0cywgcGxlYXNlLg0KPiANCj4gQW5kcmV3Lg0KDQpXaXRoIGJl c3QgcmVnYXJkcywgU2xhdmENCg0K