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 27D90A0350; Wed, 24 Jun 2020 07:54:14 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 08C861D6FB; Wed, 24 Jun 2020 07:54:13 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150040.outbound.protection.outlook.com [40.107.15.40]) by dpdk.org (Postfix) with ESMTP id 04BCA1D6EC for ; Wed, 24 Jun 2020 07:54:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W+7U0uIF96M13uDDV0GRc9FecaJN1lRbY/pVGpGwbwPChOLfL4TiSGLvoMJCXfR7zfJqaAgv0gZWmuZJd1KEjHjj7OWvZEb26gBklWcNbP8VPjCpfz7UOcCMJeIaCmUNeVYYeTowcfK3Ned4TB7tg3G+/AG9fGJpEA8EIgUho/Ojpq6KxIENd9gV86fqW0A5pDOvcc95PMlfIrd1LTwpGAHKZzdfeTBfR7Kv02XtDvrx82yZYSU7Pon/dT7VMMWz99RH1veMqcoh5PlNGfow7RTGC6nPG2XXjEHASV3l9g1xFpe0Io4oVrB+w2sw+IYyULav9KWRt8j0CdCDxWTgag== 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=wd/Y9wU6zdR/J9iIB0PdXE1wLRlMYr2GvdnIkPztsm4=; b=G6RdfrSstw3zQkvkySGPM1Cw4k9YjA3HcfQBYrAZXDVYrasQUH/4NTBRRyz0IpDL7SzGpyIP7WbGx5OBIZ2O6GvXLfmvKgy0/WJjY4YBN28qxMNSbtvlWCHN2qGShQyJnlcG7BY7EMBTNvLrjc5KMfiGWHCDdMfTGPbxm+GFEQYIG8Ec5ei2WXgHmNIkqHfAbV3iI7j+P1Yc5CqIt/KKKt3IYBYi7RgPACkJX8shgUrReN0sFUuBN18zRiHBJGxnWa8hjy4VZWjuiEHnlP7RMA6iJgYrMoS4sZkSkqK0un1HmPFodg9PjNAGGGQGV1jKqoSkknLDyJRPtdFOXWef7g== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wd/Y9wU6zdR/J9iIB0PdXE1wLRlMYr2GvdnIkPztsm4=; b=UMU9q4lh8Tjkex6xqZpTJInV6fOH4H5lS3YInnqIQpmyn1klq5wl4/czlN8OKDtymDGrd2PSqDhwHYk9rR8SklY2TtAol/aUs7FTZt9DYSSI8vLS3LeIJRXamONhnWiv6ZXGEbsKTJLN9eNN2a7NzxBJ8ZgpEkw0XkX3n0lGwCg= Received: from DB3PR0502MB4028.eurprd05.prod.outlook.com (2603:10a6:8:9::15) by DB3PR0502MB4012.eurprd05.prod.outlook.com (2603:10a6:8:8::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Wed, 24 Jun 2020 05:54:10 +0000 Received: from DB3PR0502MB4028.eurprd05.prod.outlook.com ([fe80::b949:6ccd:d7bb:6c1b]) by DB3PR0502MB4028.eurprd05.prod.outlook.com ([fe80::b949:6ccd:d7bb:6c1b%7]) with mapi id 15.20.3109.027; Wed, 24 Jun 2020 05:54:10 +0000 From: Matan Azrad To: Maxime Coquelin , Xiao Wang CC: "dev@dpdk.org" Thread-Topic: [PATCH v1 3/4] vhost: improve device ready definition Thread-Index: AQHWRY1+WLgdYR0e1E+Ph0x8zoCWqqjfjwYAgAA4hqCAAC+iAIACniawgAG2/YCAAAcQgIAAB3QAgAAM1OCAAC/AgIAACy5AgAAclQCAAAzpQIAAEnUAgAEB7XCAABMiAIAAIg9ggAArKoCAAAwJcIAACxKAgADwxbA= Date: Wed, 24 Jun 2020 05:54:09 +0000 Message-ID: References: <1592497686-433697-1-git-send-email-matan@mellanox.com> <197079f4-7436-4f9e-7b8e-b8cb42042ffb@redhat.com> <62311463-2bc1-7f8b-1ec0-da31418e1d75@redhat.com> <6a2d8143-e48d-cdef-5b16-1c340d99b1ae@redhat.com> <3572c65c-394c-496f-483c-a57019550339@redhat.com> <7c6bd0b2-8657-3c34-ab1f-f397c39ea2ec@redhat.com> In-Reply-To: Accept-Language: en-US, he-IL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [77.124.38.174] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c5e0521b-7432-4ad3-a2f1-08d8180303c3 x-ms-traffictypediagnostic: DB3PR0502MB4012: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0444EB1997 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RsvM1y8Ed82R0Meg3BMP6gfPbVmJmSoTz7rY6A9CqaSfwE5zVrbVVXCYIgjI4/Kf2AgRdxAKe2nm52f99pZUblgeB6T5m+/47AGLYIWX8uv8/plyR6AP0wCQ+Zx5wRQo5id4Id/PTKcK2Q2SZG5hS1c7FB2JIZnHfwADEBmku6qEBbd7aWvR+S53jzm3pvmv4Rym1dGe6BJSdTPd0N7BiPpYae8GCA+rL8zSEuA4HDdgqqtgjozMSOBwC20SomtDvwAMUrfaj1+T6ugDEmfH5CvrT7hOJJ8TSHGuimSkqfp/WKdPl5y4zYr5MZBbQJYLGhCXB/TViOz9FoPl96Xhdg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB3PR0502MB4028.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(396003)(39860400002)(346002)(366004)(376002)(53546011)(6506007)(86362001)(30864003)(186003)(76116006)(26005)(66946007)(5660300002)(83380400001)(66476007)(66556008)(66446008)(64756008)(478600001)(2906002)(52536014)(33656002)(110136005)(316002)(4326008)(7696005)(8676002)(71200400001)(55016002)(8936002)(9686003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: VmFdRDx5AbNhXbSdn2jAsO4YNQ5BNj9fSVHW+cTcmdrkOWWOsgjsklY6fNQQkrgPNYGIN1zWz4ZRQ8VGfelgd8FXmzCjavnzVBI/K+6YvNM+czDYBcVuGcMtXq5GqBCOSlQjWML45SPj7do3fb7HyiCidS4tcRtO498mvQZS4Hcy+Z/moh/h+4eA2AH+oYtse0VjMlY0FzlT2yTFGc72nxFzFN52Z+WdVNTbRskdAob6qO3gtfVEr1cMZlqggQtQ5Vq9QVkaDtSznSi8+Zl2gxFy4jplImkGgSUwwJs2Ju0n9CsimttEeR9I341X/xSzLyPvIXX6W6vO4qSdvkbzxZDHly4zNmkHId4/oY9x//oQXlWESXXjyA8yV6LOfrg9ITCHrdapS+mOHL4Om6st4HWsEyhWUsp2iSkwOQEobPHYKzs+ltjG8NJZjQqGnL+a4zfQat02R0LG19Ur68AS/WtCLkeaeFs4FqIq6OSJACDKD65M7TsSNqhm4zRoiVNf x-ms-exchange-transport-forked: True 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: c5e0521b-7432-4ad3-a2f1-08d8180303c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2020 05:54:09.8957 (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: hFxF6ViqSVd2afT9Ec2bgHB8079EjVbERN0Z8quCqq7vbDIERXcD8BsESesYIYksIHZE4s6kjRWrjOsaea+JTg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB4012 Subject: Re: [dpdk-dev] [PATCH v1 3/4] vhost: improve device ready definition 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" SG8gTWF4aW1lDQoNCkdvb2QgbW9ybmluZw0KDQpGcm9tOiBNYXhpbWUgQ29xdWVsaW46DQo+IE9u IDYvMjMvMjAgNDo1MiBQTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4NCj4gPg0KPiA+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGlt ZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiA+PiBTZW50OiBUdWVzZGF5LCBKdW5lIDIzLCAyMDIw IDQ6NTYgUE0NCj4gPj4gVG86IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxsYW5veC5jb20+OyBYaWFv IFdhbmcNCj4gPj4gPHhpYW8udy53YW5nQGludGVsLmNvbT4NCj4gPj4gQ2M6IGRldkBkcGRrLm9y Zw0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYxIDMvNF0gdmhvc3Q6IGltcHJvdmUgZGV2aWNl IHJlYWR5IGRlZmluaXRpb24NCj4gPj4NCj4gPj4gSGkgTWF0YW4sDQo+ID4+DQo+ID4+IE9uIDYv MjMvMjAgMTo1MyBQTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+IEZy b206IE1heGltZSBDb3F1ZWxpbjoNCj4gPj4+PiBPbiA2LzIzLzIwIDExOjAyIEFNLCBNYXRhbiBB enJhZCB3cm90ZToNCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gRnJvbTogTWF4aW1lIENvcXVl bGluOg0KPiA+Pj4+Pj4gT24gNi8yMi8yMCA1OjUxIFBNLCBNYXRhbiBBenJhZCB3cm90ZToNCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gRnJvbTogTWF4aW1lIENvcXVlbGluOg0KPiA+ Pj4+Pj4+PiBPbiA2LzIyLzIwIDM6NDMgUE0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW46DQo+ID4+ Pj4+Pj4+Pj4gU2VudDogTW9uZGF5LCBKdW5lIDIyLCAyMDIwIDM6MzMgUE0NCj4gPj4+Pj4+Pj4+ PiBUbzogTWF0YW4gQXpyYWQgPG1hdGFuQG1lbGxhbm94LmNvbT47IFhpYW8gV2FuZw0KPiA+Pj4+ Pj4+Pj4+IDx4aWFvLncud2FuZ0BpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+Pj4gQ2M6IGRldkBkcGRr Lm9yZw0KPiA+Pj4+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEgMy80XSB2aG9zdDogaW1w cm92ZSBkZXZpY2UgcmVhZHkNCj4gPj4+Pj4+Pj4+PiBkZWZpbml0aW9uDQo+ID4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gT24gNi8yMi8yMCAxMjow NiBQTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEhp IE1heGltZQ0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVs aW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiA+Pj4+Pj4+Pj4+Pj4gU2VudDogTW9u ZGF5LCBKdW5lIDIyLCAyMDIwIDExOjU2IEFNDQo+ID4+Pj4+Pj4+Pj4+PiBUbzogTWF0YW4gQXpy YWQgPG1hdGFuQG1lbGxhbm94LmNvbT47IFhpYW8gV2FuZw0KPiA+Pj4+Pj4+Pj4+Pj4gPHhpYW8u dy53YW5nQGludGVsLmNvbT4NCj4gPj4+Pj4+Pj4+Pj4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4+ Pj4+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEgMy80XSB2aG9zdDogaW1wcm92ZSBkZXZp Y2UgcmVhZHkNCj4gPj4+Pj4+Pj4+Pj4+IGRlZmluaXRpb24NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IE9uIDYvMjIvMjAgMTA6 NDEgQU0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBUaGUgaXNzdWUgaXMg aWYgeW91IG9ubHkgY2hlY2sgcmVhZHkgc3RhdGUgb25seSBiZWZvcmUNCj4gPj4+Pj4+Pj4+Pj4+ Pj4gYW5kIGFmdGVyIHRoZSBtZXNzYWdlIGFmZmVjdGluZyB0aGUgcmluZyBpcyBoYW5kbGVkLCBp dA0KPiA+Pj4+Pj4+Pj4+Pj4+PiBjYW4gYmUgcmVhZHkgYXQgYm90aCBzdGFnZXMsIHdoaWxlIHRo ZSByaW5ncyBoYXZlIGNoYW5nZWQNCj4gPj4+Pj4+Pj4+Pj4+Pj4gYW5kIHN0YXRlIGNoYW5nZSBj YWxsYmFjayBzaG91bGQNCj4gPj4+Pj4+Pj4+Pj4+IGhhdmUgYmVlbiBjYWxsZWQuDQo+ID4+Pj4+ Pj4+Pj4+Pj4gQnV0IGluIHRoaXMgdmVyc2lvbiBJIGNoZWNrZWQgdHdpY2UsIGJlZm9yZSBtZXNz YWdlDQo+ID4+Pj4+Pj4+Pj4+Pj4gaGFuZGxlciBhbmQgYWZ0ZXINCj4gPj4+Pj4+Pj4+Pj4+IG1l c3NhZ2UgaGFuZGxlciwgc28gaXQgc2hvdWxkIGNhdGNoIGFueSB1cGRhdGUuDQo+ID4+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gTm8sIHRoaXMgaXMgbm90IGVub3VnaCwgd2UgaGF2ZSB0byBj aGVjayBhbHNvIGR1cmluZyBzb21lDQo+ID4+Pj4+Pj4+Pj4+PiBoYW5kbGVycywgc28gdGhhdCB0 aGUgcmVhZHkgc3RhdGUgaXMgaW52YWxpZGF0ZWQgYmVjYXVzZQ0KPiA+Pj4+Pj4+Pj4+Pj4gc29t ZXRpbWVzIGl0IHdpbGwgYmUgcmVhZHkgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWVzc2FnZQ0KPiA+ Pj4+Pj4+Pj4+Pj4gaGFuZGxlciBidXQNCj4gPj4+Pj4+IHdpdGggZGlmZmVyZW50IHZhbHVlcy4N Cj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBUaGF0J3Mgd2hhdCBJIGRpZCBpbiBteSBl eGFtcGxlIHBhdGNoOg0KPiA+Pj4+Pj4+Pj4+Pj4gQEAgLTE4NDcsMTUgKzE4OTIsMTYgQEANCj4g dmhvc3RfdXNlcl9zZXRfdnJpbmdfa2ljayhzdHJ1Y3QNCj4gPj4+Pj4+Pj4gdmlydGlvX25ldA0K PiA+Pj4+Pj4+Pj4+Pj4gKipwZGV2LCBzdHJ1Y3QgVmhvc3RVc2VyTXNnICptc2csDQo+ID4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gLi4uDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ Pj4gICAgICAgICBpZiAodnEtPmtpY2tmZCA+PSAwKQ0KPiA+Pj4+Pj4+Pj4+Pj4gICAgICAgICAg ICAgICAgIGNsb3NlKHZxLT5raWNrZmQpOw0KPiA+Pj4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+ Pj4gKyAgICAgICB2cS0+a2lja2ZkID0gVklSVElPX1VOSU5JVElBTElaRURfRVZFTlRGRDsNCj4g Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+ICsgICAgICAgdmhvc3RfdXNlcl91cGRhdGVf dnJpbmdfc3RhdGUoZGV2LCBmaWxlLmluZGV4KTsNCj4gPj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+ Pj4+Pj4+ICAgICAgICAgdnEtPmtpY2tmZCA9IGZpbGUuZmQ7DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IFdpdGhvdXQgdGhhdCwgdGhlIHJlYWR5IGNoZWNr IHdpbGwgcmV0dXJuIHJlYWR5IGJlZm9yZSBhbmQNCj4gPj4+Pj4+Pj4+Pj4+IGFmdGVyIHRoZSBr aWNrZmQgY2hhbmdlZCBhbmQgdGhlIGRyaXZlciB3b24ndCBiZSBub3RpZmllZC4NCj4gPj4+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gVGhlIGRyaXZlciB3aWxsIGJlIG5vdGlmaWVkIGluIHRoZSBu ZXh0DQo+ID4+Pj4+Pj4+Pj4+IFZIT1NUX1VTRVJfU0VUX1ZSSU5HX0VOQUJMRQ0KPiA+Pj4+Pj4+ Pj4+IG1lc3NhZ2UgYWNjb3JkaW5nIHRvIHYxLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ PiBPbmUgb2Ygb3VyIGFzc3VtcHRpb24gd2UgYWdyZWVkIG9uIGluIHRoZSBkZXNpZ24gbWFpbCBp cw0KPiA+Pj4+Pj4+Pj4+PiB0aGF0IGl0IGRvZXNuJ3QNCj4gPj4+Pj4+Pj4+PiBtYWtlIHNlbnNl IHRoYXQgUUVNVSB3aWxsIGNoYW5nZSBxdWV1ZSBjb25maWd1cmF0aW9uDQo+IHdpdGhvdXQNCj4g Pj4+Pj4+Pj4+PiBlbmFibGluZyB0aGUgcXVldWUgYWdhaW4uDQo+ID4+Pj4+Pj4+Pj4+IEJlY2F1 c2Ugb2YgdGhhdCB3ZSBkZWNpZGVkIHRvIGZvcmNlIGNhbGxpbmcgc3RhdGUgY2FsbGJhY2sNCj4g Pj4+Pj4+Pj4+Pj4gYWdhaW4gd2hlbg0KPiA+Pj4+Pj4+Pj4+IFFFTVUgc2VuZCBWSE9TVF9VU0VS X1NFVF9WUklOR19FTkFCTEUoMSkgbWVzc2FnZQ0KPiBldmVuDQo+ID4+IGlmDQo+ID4+Pj4gdGhl DQo+ID4+Pj4+Pj4+IHF1ZXVlIGlzDQo+ID4+Pj4+Pj4+Pj4gYWxyZWFkeSByZWFkeS4NCj4gPj4+ Pj4+Pj4+Pj4gU28gd2hlbiBkcml2ZXIvYXBwIHNlZSBzdGF0ZSBlbmFibGUtPmVuYWJsZSwgaXQg c2hvdWxkIHRha2UNCj4gPj4+Pj4+Pj4+Pj4gaW50byBhY2NvdW50DQo+ID4+Pj4+Pj4+Pj4gdGhh dCB0aGUgcXVldWUgY29uZmlndXJhdGlvbiB3YXMgcHJvYmFibHkgY2hhbmdlZC4NCj4gPj4+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gSSB0aGluayB0aGF0IHRoaXMgYXNzdW1wdGlvbiBpcyBjb3Jy ZWN0IGFjY29yZGluZyB0byB0aGUNCj4gPj4+Pj4+Pj4+Pj4gUUVNVQ0KPiA+PiBjb2RlLg0KPiA+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gWWVzLCB0aGlzIHdhcyBvdXIgaW5pdGlhbCBhc3N1bXB0 aW9uLg0KPiA+Pj4+Pj4+Pj4+IEJ1dCBub3cgbG9va2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRo ZSBpbXBsZW1lbnRhdGlvbiwgSQ0KPiA+Pj4+Pj4+Pj4+IGZpbmQgaXQgaXMgZXZlbiBjbGVhbmVy ICYgY2xlYXJlciBub3QgdG8gZG8gdGhpcyBhc3N1bXB0aW9uLg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+IFRoYXQncyB3aHkgSSBwcmVmZXIgdG8gY29sbGVjdCBhbGwgdGhlIHJlYWR5IGNo ZWNrcw0KPiA+Pj4+Pj4+Pj4+PiBjYWxsYmFja3MgKHF1ZXVlIHN0YXRlIGFuZA0KPiA+Pj4+Pj4+ Pj4+IGRldmljZSBuZXdcY29uZikgdG8gb25lIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQg YWZ0ZXINCj4gPj4+Pj4+Pj4+PiB0aGUgbWVzc2FnZQ0KPiA+Pj4+Pj4+Pj4+IGhhbmRsZXI6DQo+ ID4+Pj4+Pj4+Pj4+IFBzZXVkbzoNCj4gPj4+Pj4+Pj4+Pj4gIHZob3N0X3VzZXJfdXBkYXRlX3Jl YWR5X3N0YXR1c2VzKCkgew0KPiA+Pj4+Pj4+Pj4+PiAJc3dpdGNoIChtc2cpOg0KPiA+Pj4+Pj4+ Pj4+PiAJCWNhc2UgZW5hYmxlOg0KPiA+Pj4+Pj4+Pj4+PiAJCQlpZihlbmFibGUgaXMgMSkNCj4g Pj4+Pj4+Pj4+Pj4gCQkJCWZvcmNlIHF1ZXVlIHN0YXRlID0xLg0KPiA+Pj4+Pj4+Pj4+PiAJCWNh c2UgY2FsbGZkDQo+ID4+Pj4+Pj4+Pj4+IAkJY2FzZSBraWNrZmQNCj4gPj4+Pj4+Pj4+Pj4gCQkJ CS4uLi4uDQo+ID4+Pj4+Pj4+Pj4+IAkJQ2hlY2sgcXVldWUgYW5kIGRldmljZSByZWFkeSArIGNh bGwgY2FsbGJhY2tzIGlmDQo+ID4+Pj4gbmVlZGVkLi4NCj4gPj4+Pj4+Pj4+Pj4gCQlEZWZhdWx0 DQo+ID4+Pj4+Pj4+Pj4+IAkJCVJldHVybjsNCj4gPj4+Pj4+Pj4+Pj4gfQ0KPiA+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4gSSBmaW5kIGl0IG1vcmUgbmF0dXJhbCB0byAiaW52YWxpZGF0ZSIgcmVh ZHkgc3RhdGUgd2hlcmUgaXQNCj4gPj4+Pj4+Pj4+PiBpcyBoYW5kbGVkIChhZnRlciB2cmluZ19p bnZhbGlkYXRlKCksIGJlZm9yZSBzZXR0aW5nIG5ldyBGRA0KPiA+Pj4+Pj4+Pj4+IGZvciBjYWxs ICYga2ljaywgLi4uKQ0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEkgdGhpbmsgdGhhdCBpZiB5 b3UgZ28gd2l0aCB0aGlzIGRpcmVjdGlvbiwgaWYgdGhlIGZpcnN0IHF1ZXVlDQo+ID4+Pj4+Pj4+ PiBwYWlyIGlzIGludmFsaWRhdGVkLA0KPiA+Pj4+Pj4+PiB5b3UgbmVlZCB0byBub3RpZnkgYXBw XGRyaXZlciBhbHNvIGFib3V0IGRldmljZSByZWFkeSBjaGFuZ2UuDQo+ID4+Pj4+Pj4+PiBBbHNv IGl0IHdpbGwgY2F1c2UgMiBub3RpZmljYXRpb25zIHRvIHRoZSBkcml2ZXIgaW5zdGVhZCBvZg0K PiA+Pj4+Pj4+Pj4gb25lIGluIGNhc2Ugb2YgRkQNCj4gPj4+Pj4+Pj4gY2hhbmdlLg0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+PiBZb3UnbGwgYWx3YXlzIGVuZC11cCB3aXRoIHR3byBub3RpZmljYXRp b25zLCBlaXRoZXIgUWVtdSBoYXMNCj4gPj4+Pj4+Pj4gc2VudCB0aGUgZGlzYWJsZSBhbmQgc28g eW91J2xsIGhhdmUgb25lIG5vdGlmaWNhdGlvbiBmb3IgdGhlDQo+ID4+Pj4+Pj4+IGRpc2FibGUg YW5kIG9uZSBmb3IgdGhlIGVuYWJsZSwgb3IgaXQgZGlkbid0IHNlbnQgdGhlIGRpc2FibGUNCj4g Pj4+Pj4+Pj4gYW5kIGl0IHdpbGwgaGFwcGVuIGF0IG9sZCB2YWx1ZSBpbnZhbGlkYXRpb24gdGlt ZSBhbmQgYWZ0ZXIgbmV3DQo+ID4+Pj4+Pj4+IHZhbHVlIGlzIHRha2VuIGludG8NCj4gPj4+PiBh Y2NvdW50Lg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSBkb24ndCBzZWUgaXQg aW4gY3VycmVudCBRRU1VIGJlaGF2aW9yLg0KPiA+Pj4+Pj4+IFdoZW4gd29ya2luZyBNUSBJIHNl ZSB0aGF0IHNvbWUgdmlydHFzIGdldCBjb25maWd1cmF0aW9uDQo+IG1lc3NhZ2UNCj4gPj4+Pj4+ PiB3aGlsZQ0KPiA+Pj4+Pj4gdGhleSBhcmUgaW4gZW5hYmxlZCBzdGF0ZS4NCj4gPj4+Pj4+PiBU aGVuLCBlbmFibGUgbWVzc2FnZSBpcyBzZW50IGFnYWluIGxhdGVyLg0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IEkgZ3Vlc3MgeW91IG1lYW4gdGhlIGZpcnN0IHF1ZXVlIHBhaXI/IEFuZCBpdCB3b3VsZCBu b3QgYmUgaW4NCj4gPj4+Pj4+IHJlYWR5IHN0YXRlIGFzIGl0IHdvdWxkIGJlIHRoZSBpbml0aWFs IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHF1ZXVlPw0KPiA+Pj4+Pg0KPiA+Pj4+PiBFdmVuIGFmdGVy IGluaXRpYWxpemF0aW9uIHdoZW4gcXVldWUgaXMgcmVhZHkuDQo+ID4+Pj4+DQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+IFdoeSBub3QgdG8gdGFrZSB0aGlzIGNvcnJlY3QgYXNzdW1wdGlvbiBhbmQg dXBkYXRlIHJlYWR5IHN0YXRlDQo+ID4+Pj4+Pj4+PiBvbmx5IGluIG9uZQ0KPiA+Pj4+Pj4+PiBw b2ludCBpbiB0aGUgY29kZSBpbnN0ZWFkIG9mIGRvaW5nIGl0IGluIGFsbCB0aGUgY29uZmlndXJh dGlvbg0KPiA+Pj4+Pj4+PiBoYW5kbGVycw0KPiA+Pj4+Pj4gYXJvdW5kPw0KPiA+Pj4+Pj4+Pj4g SU1PLCBJdCBpcyBjb3JyZWN0LCBsZXNzIGludHJ1c2l2ZSwgc2ltcGxlciwgY2xlYXJlciBhbmQg Y2xlYW5lci4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gSSBqdXN0IGxvb2tlZCBjbG9zZXIgYXQg dGhlIFZob3N0LXVzZXIgc3BlYywgYW5kIEknbSBubyBtb3JlIHNvDQo+ID4+Pj4+Pj4+IHN1cmUg dGhpcyBpcyBhIGNvcnJlY3QgYXNzdW1wdGlvbjoNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gIldo aWxlIHByb2Nlc3NpbmcgdGhlIHJpbmdzICh3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90 KSwNCj4gPj4+Pj4+Pj4gY2xpZW50IG11c3Qgc3VwcG9ydCBjaGFuZ2luZyBzb21lIGNvbmZpZ3Vy YXRpb24gYXNwZWN0cyBvbiB0aGUNCj4gZmx5LiINCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IE9rLCB0 aGlzIGRvZXNuJ3QgZXhwbGFpbiBob3cgY29uZmlndXJhdGlvbiBpcyBjaGFuZ2VkIG9uIHRoZSBm bHkuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSBhZ3JlZSBpdCBsYWNrcyBhIGJpdCBvZiBjbGFyaXR5 Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+PiBBcyBJIG1lbnRpb25lZCwgUUVNVSBzZW5kcyBlbmFibGUg bWVzc2FnZSBhbHdheXMgYWZ0ZXINCj4gPj4+Pj4+PiBjb25maWd1cmF0aW9uDQo+ID4+Pj4+PiBt ZXNzYWdlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFllcywgYnV0IHdlIHNob3VsZCBub3QgZG8gYXNz dW1wdGlvbnMgb24gY3VycmVudCBRZW11IHZlcnNpb24NCj4gPj4+Pj4+IHdoZW4gcG9zc2libGUu IEJldHRlciB0byBiZSBzYWZlIGFuZCBmb2xsb3cgdGhlIHNwZWNpZmljYXRpb24sIGl0DQo+ID4+ Pj4+PiB3aWxsIGJlIG1vcmUNCj4gPj4+PiByb2J1c3QuDQo+ID4+Pj4+PiBUaGVyZSBpcyBhbHNv IHRoZSBWaXJ0aW8tdXNlciBQTUQgdG8gdGFrZSBpbnRvIGFjY291bnQgZm9yIGV4YW1wbGUuDQo+ ID4+Pj4+DQo+ID4+Pj4+IEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50IGhlcmUgYnV0IGRvIHlvdSBy ZWFsbHkgd2FudCB0byBiZSByZWFkeQ0KPiA+Pj4+PiBmb3IgYW55DQo+ID4+Pj4gY29uZmlndXJh dGlvbiB1cGRhdGUgaW4gcnVuIHRpbWU/DQo+ID4+Pj4+IFdoYXQgZG9lcyBpdCBtZWFuPyBIb3cg ZGF0YXRwYXRoIHNob3VsZCBoYW5kbGUgY29uZmlndXJhdGlvbiBmcm9tDQo+ID4+Pj4gY29udHJv bCB0aHJlYWQgaW4gcnVuIHRpbWUgd2hpbGUgdHJhZmZpYyBpcyBvbj8NCj4gPj4+Pj4gRm9yIGV4 YW1wbGUsIGNoYW5naW5nIHF1ZXVlIHNpemUgXCBhZGRyZXNzZXMgbXVzdCBzdG9wIHRyYWZmaWMN Cj4gYmVmb3JlLi4uDQo+ID4+Pj4+IEFsc28gY2hhbmdpbmcgRkRzIGlzIHZlcnkgc2Vuc2l0aXZl Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbWUuDQo+ID4+Pj4+ DQo+ID4+Pj4+IEFsc28sIGFjY29yZGluZyB0byAib24gdGhlIGZseSIgZGlyZWN0aW9uIHdlIHNo b3VsZCBub3QgZGlzYWJsZQ0KPiA+Pj4+PiB0aGUgcXVldWUNCj4gPj4+PiB1bmxlc3MgZW5hYmxl IG1lc3NhZ2UgaXMgY29taW5nIHRvIGRpc2FibGUgaXQuDQo+ID4+Pg0KPiA+Pj4gTm8gcmVzcG9u c2UsIHNvIGxvb2tzIGxpa2UgeW91IGFncmVlIHRoYXQgaXQgZG9lc24ndCBtYWtlIHNlbnNlLg0K PiA+Pg0KPiA+PiBObywgbXkgcmVwbHkgd2FzIGdlbmVyYWwgdG8gYWxsIHlvdXIgY29tbWVudHMu DQo+ID4+DQo+ID4+IFdpdGggU1cgYmFja2VuZCwgSSBhZ3JlZSB3ZSBkb24ndCBuZWVkIHRvIGRp c2FibGUgdGhlIHJpbmdzIGluIGNhc2UNCj4gPj4gb2YgYXN5bmNocm9ub3VzIGNoYW5nZXMgdG8g dGhlIHJpbmcgYmVjYXVzZSB3ZSBwcm90ZWN0IGl0IHdpdGggYQ0KPiA+PiBsb2NrLCBzbyB3ZSBh cmUgc3VyZSB0aGUgcmluZyB3b24ndCBiZSBhY2Nlc3NlZCBieSBhbm90aGVyIHRocmVhZA0KPiA+ PiB3aGlsZSBkb2luZyB0aGUgY2hhbmdlLg0KPiA+Pg0KPiA+PiBGb3IgdkRQQSBjYXNlIHRoYXQn cyBtb3JlIHByb2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSBubyBzdWNoIGxvY2tpbmcNCj4gPj4g bWVjaGFuaXNtLg0KPiA+Pg0KPiA+PiBGb3IgZXhhbXBsZSBtZW1vcnkgaG90cGx1ZywgUWVtdSBk b2VzIG5vdCBzZWVtIHRvIGRpc2FibGUgdGhlDQo+IHF1ZXVlcw0KPiA+PiBzbyB3ZSBuZWVkIHRv IHN0b3AgdGhlIHZEUEEgZGV2aWNlIG9uZSB3YXkgb3IgYW5vdGhlciBzbyB0aGF0IGl0IGRvZXMN Cj4gPj4gbm90IHByb2Nlc3MgdGhlIHJpbmdzIHdoaWxlIHRoZSBWaG9zdCBsaWIgcmVtYXBzIHRo ZSBtZW1vcnkgYXJlYXMuDQo+ID4+DQo+ID4+Pj4+IEluIGFkZGl0aW9uOg0KPiA+Pj4+PiBEbyB5 b3UgcmVhbGx5IHdhbnQgdG8gdG9nZ2xlIHZEUEEgZHJpdmVyc1xhcHAgZm9yIGFueQ0KPiA+Pj4+ PiBjb25maWd1cmF0aW9uDQo+ID4+Pj4gbWVzc2FnZT8gSXQgbWF5IGNhdXNlIHF1ZXVlIHJlY3Jl YXRpb24gZm9yIGVhY2ggb25lIChhdCBsZWFzdCBmb3INCj4gbWx4NSkuDQo+ID4+Pj4NCj4gPj4+ PiBJIHdhbnQgdG8gaGF2ZSBzb21ldGhpbmcgcm9idXN0IGFuZCBtYWludGFpbmFibGUuDQo+ID4+ Pg0KPiA+Pj4gTWUgdG9vLg0KPiA+Pj4NCj4gPj4+PiBUaGVzZSBtZXNzYWdlcyBhcnJpdmluZyBh ZnRlciBhIHF1ZXVlIGhhdmUgYmVlbiBjb25maWd1cmVkIG9uY2UgYXJlDQo+ID4+Pj4gcmFyZSBl dmVudHMsIGJ1dCB0aGlzIGlzIHVzdWFsbHkgdGhlIGtpbmQgb2YgdGhpbmdzIHRoYXQgY2F1c2UN Cj4gPj4+PiBtYWludGVuYW5jZQ0KPiA+PiBidXJkZW4uDQo+ID4+Pg0KPiA+Pj4gSW4gY2FzZSBv ZiBndWVzdCBwb2xsIG1vZGUgKHRlc3RwbWQgdmlydGlvKSB3ZSBhbGwgdGhlIHRpbWUgZ2V0IGNh bGxmZA0KPiB0d2ljZS4NCj4gPj4NCj4gPj4gUmlnaHQuDQo+ID4+DQo+ID4+Pj4gSWYgeW91IGxv b2sgYXQgbXkgZXhhbXBsZSBwYXRjaCwgeW91IHdpbGwgdW5kZXJzdGFuZCB0aGF0IHdpdGggbXkN Cj4gPj4+PiBwcm9wb3NhbCwgdGhlcmUgd29uJ3QgYmUgYW55IG1vcmUgc3RhdGUgY2hhbmdlIG5v dGlmaWNhdGlvbiB0aGFuDQo+ID4+Pj4gd2l0aCB5b3VyIHByb3Bvc2FsIHdoZW4gUWVtdSBvciBh bnkgb3RoZXIgVmhvc3QtdXNlciBtYXN0ZXIgc2VuZCBhDQo+ID4+Pj4gZGlzYWJsZSByZXF1ZXN0 IGJlZm9yZSBzZW5kaW5nIHRoZSByZXF1ZXN0IHRoYXQgaW1wYWN0IHRoZSBxdWV1ZQ0KPiBzdGF0 ZS4NCj4gPj4+DQo+ID4+PiB3ZSBkaWRuJ3QgdGFsayBhYm91dCBkaXNhYmxlIHRpbWUgLSB0aGlz IG9uZSBpcyB2ZXJ5IHNpbXBsZS4NCj4gPj4+DQo+ID4+PiBZZXMsIEluIGNhc2UgdGhlIHF1ZXVl IGlzIGRpc2FibGVkIHlvdXIgcHJvcG9zYWwgZG9lc24ndCBzZW5kIGV4dHJhDQo+ID4+IG5vdGlm aWNhdGlvbiBhcyBteS4NCj4gPj4+IEJ1dCBpbiBjYXNlIHRoZSBxdWV1ZSBpcyByZWFkeSwgeW91 ciBwcm9wb3NhbCBzZW5kIGV4dHJhIG5vdCByZWFkeQ0KPiA+PiBub3RpZmljYXRpb24gZm9yIGtp a2ZkLGNhbGxmZCxzZXRfdnJpbmdfYmFzZSBjb25maWd1cmF0aW9ucy4NCj4gPj4NCj4gPj4gSSB0 aGluayB0aGlzIGlzIG5lY2Vzc2FyeSBmb3Igc3luY2hyb25pemF0aW9uIHdpdGggdGhlIFZob3N0 LXVzZXINCj4gPj4gbWFzdGVyIChpbiBjYXNlIHRoZSBtYXN0ZXIgYXNrcyBmb3IgdGhpcyBzeW5j aHJvbml6YXRpb24sIGxpa2UNCj4gPj4gc2V0X21lbV90YWJsZSBmb3IgaW5zdGFuY2Ugd2hlbiBy ZXBseS1hY2sgaXMgZW5hYmxlZCkuDQo+ID4+DQo+ID4+Pj4gSXQganVzdCBhZGRzIG1vcmUgcm9i dXN0bmVzcyBpZiB0aGlzIHVubGlrZWx5IGV2ZW50IGhhcHBlbnMsIGJ5DQo+ID4+Pj4gaW52YWxp ZGF0aW5nIHRoZSByaW5nIHN0YXRlIHRvIG5vdCByZWFkeSBiZWZvcmUgZG9pbmcgdGhlIGFjdHVh bA0KPiA+Pj4+IHJpbmcNCj4gPj4gY29uZmlndXJhdGlvbiBjaGFuZ2UuDQo+ID4+Pj4gU28gdGhh dCB0aGlzIGNvbmZpZyBjaGFuZ2UgaXMgbm90IG1pc3NlZCBieSB0aGUgdkRQQSBkcml2ZXIgb3Ig dGhlDQo+ID4+IGFwcGxpY2F0aW9uLg0KPiA+Pj4NCj4gPj4+IE9uZSBtb3JlIGlzc3VlIGhlcmUg aXMgdGhhdCB0aGVyZSBpcyBzb21lIHRpbWUgdGhhdCBkZXZpY2UgaXMgcmVhZHkNCj4gPj4+IChh bHJlYWR5DQo+ID4+IGNvbmZpZ3VyZWQpIGFuZCB0aGUgZmlyc3Qgdml0dHEtcGFpciBpcyBub3Qg cmVhZHkgKHlvdXIgaW52YWxpZGF0ZQ0KPiA+PiBwcm9wb3NhbCBmb3Igc2V0X3ZyaW5nX2Jhc2Up Lg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pj4gSXQgZG9lc27igJl0IHNhdmUgdGhlIGNvbmNlcHQg dGhhdCBkZXZpY2UgaXMgcmVhZHkgb25seSBpbiBjYXNlIHRoZQ0KPiA+Pj4gZmlyc3QgdmlydHEt DQo+ID4+IHBhaXIgaXMgcmVhZHkuDQo+ID4+DQo+ID4+IEkgdW5kZXJzdGFuZCB0aGUgc3BlYyBh cyAidGhlIGRldmljZSBpcyByZWFkeSBhcyBzb29uIGFzIHRoZSBmaXJzdA0KPiA+PiBxdWV1ZSBw YWlyIGlzIHJlYWR5IiwgYnV0IEkgbWlnaHQgYmUgd3JvbmcuDQo+ID4+DQo+ID4+IERvIHlvdSBz dWdnZXN0IHRvIGNhbGwgdGhlIGRldl9jbG9zZSgpIHZEUEEgY2FsbGJhY2sgYW5kIHRoZQ0KPiA+ PiBkZXN0cm95X2RldmljZSgpIGFwcGxpY2F0aW9uIGNhbGxiYWNrIGFzIHNvb24gYXMgb25lIG9m IHRoZSByaW5nIG9mDQo+ID4+IHRoZSBmaXJzdCBxdWV1ZSBwYWlyIHJlY2VpdmUgYSBkaXNhYmxl IHJlcXVlc3Qgb3IsIHdpdGggbXkgcGF0Y2gsDQo+ID4+IHdoZW4gb25lIG9mIHRoZSByaW5ncyBy ZWNlaXZlcyBhIHJlcXVlc3QgdGhhdCBjaGFuZ2VzIHRoZSByaW5nIHN0YXRlPw0KPiA+DQo+ID4g SSBtZWFucywgeW91ciBwcm9wb3NhbCBhY3R1YWxseSBtYXkgbWFrZSBmaXJzdCB2aXJ0cS1wYWly IHJlYWR5IHN0YXRlDQo+IGRpc2FibGVkIHdoZW4gZGV2aWNlIHJlYWR5Lg0KPiA+IFNvLCB5ZXMs IGl0IGxlYWRzIHRvIGNhbGwgZGV2aWNlIGNsb3NlXGRlc3Ryb3kuDQo+IA0KPiBObyBpdCBkb2Vz bid0LCB0aGVyZSBpcyBubyBjYWxsIHRvIC5kZXZfY2xvc2UoKS8uZGVzdHJveV9kZXZpY2UoKSB3 aXRoIG15DQo+IHBhdGNoIGlmIGZpcnN0IHF1ZXVlIHBhaXIgZ2V0cyBkaXNhYmxlZC4NCj4gDQo+ ID4+PiBJIHdpbGwgbm90IGluc2lzdCBhbnltb3JlIG9uIHdhaXRpbmcgZm9yIGVuYWJsZSBmb3Ig bm90aWZ5aW5nDQo+ID4+PiBhbHRob3VnaCBJIG5vdA0KPiA+PiBmYW4gd2l0aCBpdC4NCj4gPj4+ DQo+ID4+PiBTbywgSSBzdWdnZXN0IHRvIGNyZWF0ZSAxIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiB0 byBiZSBjYWxsZWQgYWZ0ZXINCj4gPj4+IG1lc3NhZ2UNCj4gPj4gaGFuZGxlciBhbmQgYmVmb3Jl IHJlcGx5Lg0KPiA+Pj4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgb25seSBvbmUgd2hpY2ggbm90aWZ5 IHJlYWR5IHN0YXRlcyBpbiB0aGUgbmV4dA0KPiBvcHRpb25zOg0KPiA+Pj4NCj4gPj4+IDEuIHZp cnRxIHJlYWR5IHN0YXRlIGlzIGNoYW5nZWQgaW4gdGhlIHF1ZXVlLg0KPiA+Pj4gMi4gdmlydHEg cmVhZHkgc3RhdGUgc3RheXMgb24gYWZ0ZXIgY29uZmlndXJhdGlvbiBtZXNzYWdlIGhhbmRsZXIu DQo+ID4+PiAzLiBkZXZpY2Ugc3RhdGUgd2lsbCBiZSBlbmFibGVkIHdoZW4gdGhlIGZpcnN0IHF1 ZXVlIHBhaXIgaXMgcmVhZHkuDQo+ID4+DQo+ID4+IElJVUMsIGl0IHdpbGwgbm90IGRpc2FibGUg dGhlIHF1ZXVlcyB3aGVuIHRoZXJlIGlzIGEgc3RhdGUgY2hhbmdlLCBpcw0KPiA+PiB0aGF0IGNv cnJlY3Q/IElmIHNvLCBJIHRoaW5rIGl0IGRvZXMgbm90IHdvcmsgd2l0aCBtZW1vcnkgaG90cGx1 Zw0KPiA+PiBjYXNlIEkgbWVudGlvbmVkIGVhcmxpZXIuDQo+ID4NCj4gPiBJdCB3aWxsIGRvIGVu YWJsZSBhZ2FpbiB3aGljaCBtZWFuIC0gc29tZXRoaW5nIHdhcyBtb2RpZmllZC4NCj4gDQo+IE9r LCB0aGFua3MgZm9yIHRoZSBjbGFyaWZpY2F0aW9uLg0KPiANCj4gSSB0aGluayBpdCBpcyBub3Qg ZW5vdWdoIGZvciB0aGUgZXhhbXBsZXMgSSBnYXZlIGJlbG93LiBGb3Igc2V0X21lbV90YWJsZSwN Cj4gd2UgbmVlZCB0byBzdG9wIHRoZSBkZXZpY2UgZnJvbSBwcm9jZXNzaW5nIHRoZSB2cmluZ3Mg YmVmb3JlIHRoZQ0KPiBzZXRfbWVtX3RhYmxlIGhhbmRsZXIgY2FsbHMgdGhlIG11bm1hcCgpLCBh bmQgcmUtZW5hYmxlIGl0IGFmdGVyIHRoZQ0KPiBtbWFwKCkgKEkgZGlkIHRoYXQgd3JvbmcgaW4g bXkgZXhhbXBsZSBwYXRjaCwgSSBqdXN0IGRpZCB0aGF0IGFmdGVyIHRoZQ0KPiBtdW5tYXAvbW1h cCBoYXBwZW5lZCwgd2hpY2ggaXMgdG9vIGxhdGUpLg0KPiANCj4gPj4gRXZlbiBmb3IgdGhlIGNh bGxmZCBkb3VibGUgY2hhbmdlIGl0IGNhbiBiZSBwcm9ibGVtYXRpYyBhcyBWaG9zdC1saWINCj4g Pj4gd2lsbCBjbG9zZSB0aGUgZmlyc3Qgb25lIHdoaWxlIGl0IHdpbGwgc3RpbGwgYmUgdXNlZCBi eSB0aGUgZHJpdmVyDQo+ID4+IChCdHcsIEkgc2VlIG15IGV4YW1wbGUgcGF0Y2ggaXMgYWxzbyBi dWdneSBpbiB0aGlzIHJlZ2FyZHMsIGl0IHNob3VsZA0KPiA+PiByZXNldCB0aGUgY2FsbF9mZCB2 YWx1ZSBpbiB0aGUgdmlydHF1ZXVlLCB0aGVuIGNhbGwNCj4gPj4gdmhvc3RfdXNlcl91cGRhdGVf dnJpbmdfc3RhdGUoKSBhbmQgZmluYWxseSBjbG9zZSB0aGUgRkQpLg0KPiA+DQo+ID4gWWVzLCB0 aGlzIG9uZSBsZWFkcyBmb3IgZGlmZmVyZW50IGhhbmRsZSBmb3IgZWFjaCBtZXNzYWdlLg0KPiA+ DQo+ID4gTWF5YmUgaXQgbGVhZHMgZm9yIG5ldyBxdWV1ZSBtb2RpZnkgb3BlcmF0aW9uLg0KPiA+ IFNvLCBxdWV1ZSBkb2Vzbid0IHNlbmQgdGhlIHN0YXRlIC0ganVzdCBkb2VzIGNvbmZpZ3VyYXRp b24gY2hhbmdlIG9uIHRoZQ0KPiBmbHkuDQo+ID4NCj4gPiBXaGF0IGRvIHlvdSB0aGluaz8NCj4g DQo+IEkgdGhpbmsgdGhhdCBjb25maWd1cmF0aW9uIG9uIHRoZSBmbHkgZG9lc24ndCBmbHkuDQo+ IFdlIHdvdWxkIGF0IGxlYXN0IG5lZWQgdG8gc3RvcCB0aGUgZGV2aWNlIGZyb20gcHJvY2Vzc2lu ZyB0aGUgcmluZ3MgZm9yDQo+IG1lbW9yeSBob3RwbHVnIGNhc2UsIHNvIHdoeSBub3QganVzdCBz ZW5kIGEgZGlzYWJsZSBub3RpZmljYXRpb24/DQoNClllcywgZHJpdmVyIG5lZWQgbm90aWZpY2F0 aW9uIGhlcmUuDQoNCj4gQW5kIGZvciB0aGUgZG91YmxlIGNhbGxmZCwgdGhhdCBkb2VzIG5vdCBs b29rIHJpZ2h0IHRvIG1lIG5vdCB0byByZXF1ZXN0IHRoZQ0KPiBkcml2ZXIgdG8gc3RvcCB1c2lu ZyBpdCBiZWZvcmUgaXQgaXMgY2xvc2VkLCBpc24ndCBpdD8NCg0KWWVzLCBhbmQgc29tZSBkcml2 ZXJzIChpbmNsdWRlIG1seDUpIG1heSBzdG9wIHRoZSB0cmFmZmljIGluIHRoaXMgY2FzZSB0b28u DQoNCm1vZGlmeVx1cGRhdGUgb3BlcmF0aW9uIHdpbGwgc29sdmUgYWxsOg0KDQpGb3IgZXhhbXBs ZToNCg0KSW4gbWVtb3J5IGhvdHBsdWc6DQpEbyBuZXcgbW1hcA0KQ2FsbCBtb2RpZnkNCkRvIG11 bm11cCBmb3Igb2xkLg0KDQpJbiBjYWxsZmRca2lja2ZkIGNoYW5nZToNCg0KU2V0IG5ldyBGRC4N CkNhbGwgbW9kaWZ5Lg0KQ2xvc2Ugb2xkIEZELg0KDQpNb2RpZnkgaXMgY2xlYXJlciwgc2F2ZSBj YWxscyBhbmQgZmFzdGVyIChkYXRhcGF0aCB3aWxsIGJhY2sgZmFzdGVyKS4NCg0KDQo+ICBUaGFu a3MsDQo+IE1heGltZQ0KPiANCj4gPg0KPiA+PiBUaGFua3MsDQo+ID4+IE1heGltZQ0KPiA+Pj4N Cj4gPj4+IE1hdGFuDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gTWF4aW1lDQo+ID4+Pg0K PiA+DQoNCg==