From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80052.outbound.protection.outlook.com [40.107.8.52]) by dpdk.org (Postfix) with ESMTP id 5100F4F94; Fri, 5 Oct 2018 22:06:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cFCHSTBYQWuwGGn7joe/AikrhZSaY3uxiozYneN0R+E=; b=WwoikzreeSKuSxQkwC8tROQySnkz2g1MtGOwJLDUEqQLqh3KPBB273P89AvuB4XKAbXrr7ZS+HG1Acxi7NSus7m4LkVz3i9ykWgODkHd+tROw+FFq6V6SB3d6zuhEF5M1KansTP1S/uCQvNJ/5Slt8ZMnLxOPpv5ocLDc4k9Fyw= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.29) by AM6PR08MB3655.eurprd08.prod.outlook.com (20.177.115.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.21; Fri, 5 Oct 2018 20:06:46 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::f423:e46a:a03c:e928]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::f423:e46a:a03c:e928%2]) with mapi id 15.20.1185.027; Fri, 5 Oct 2018 20:06:45 +0000 From: Honnappa Nagarahalli To: Ola Liljedahl , Jerin Jacob CC: "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , "dev@dpdk.org" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUXIR8HYDms5kGFkyaw4kWx/U6y6UQgHYAgAAF34CAACPDgIAAFyZAgAAhgYCAABBDgIAAHR2g Date: Fri, 5 Oct 2018 20:06:45 +0000 Message-ID: References: <20180807031943.5331-1-gavin.hu@arm.com> <1537172244-64874-1-git-send-email-gavin.hu@arm.com> <20180929104857.GA30457@jerin> <2601191342CEEE43887BDE71AB9772580102FE261A@IRSMSX106.ger.corp.intel.com> <621E373E-048D-4808-8CE8-84373EA98D2F@arm.com> <2601191342CEEE43887BDE71AB9772580102FE2951@IRSMSX106.ger.corp.intel.com> <20181005170725.GA18671@jerin> 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=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR08MB3655; 6:zmCgs+W+McOZpkEo196Lw2uMZL1vvOukNiVKLmmza2V7v2Nrnh3Uf/xAcx4PVGtY4aBBSLFFxlqH1JTaGMgZp2J45N50Kcu4+qNhoElYnFM40F6IAUGsVzRKpREn65J69OCQJ9VJGULZA2TdpW8ah4hW6bRstn/Py8+FLojsoyueI2gRtS67Vdo7DnYyDnBBGsXrPWmQVhrnTZ5CK8qHZBcCJyhGj/Nwjk6Vt2HeIxt3UDxKRoVB+bIOPLFH6EKLVnHpoE6nZ1/j77BI9UmxwKkOZPF9ES3Chv+aS7NL5P0ovV/r3BnrjlOVx2HXTNXIlVTIC0RUIvzidHvKCaFuPf22AVkdHdr5WsIx5sZ0BIUIMJ1iAt7vrp7z70NzTmI7q66jUn/IgRQnu33eSxJ2ZI9r0I6yQ/t2d+TR4tfayeUTf4qTphJ8XX7arit3BE1XmgLpJZkaSR4yOJVax8RneQ==; 5:TnW28F8cfUzM+ezHqf3p/cLJwvMVuPRwsejk870W3trh8B3B0KvA8+zpjW37cO6rotI8GRlymwgdupoGy+yS4kTcUax8bVW6O+sV+25K2TaNpo1Locx0wbsW+4MBeDMZQV4IxZu0RIeOWsbOHEnj9mXGp/DEgDdLDaK/L7XJuXU=; 7:07yzJJocW38IgSALC9NPl6PhjG32iOkqTLceiGWvAXFfr9jUM+u21Hjvv/Sbbe2qPw+GNNJKfYBqQ7usFHNFRlTiyJf6dkZWCEoy+zfkFsS2RgdT2E7RBOq8GI2ctRQL1hiDveSewEPWcX5o/Ss85tEUMOhGsiM6fW9gNZJHbYazzjKuKFNhtc3papqr45bn8wlcNVtV7xEYIKI+3J3H5ukmlI5ZD1dgoV9hdSVchpU0EUdLM0cLpdYsEGUSrOWa x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: b8a06e79-0fa2-402c-5917-08d62afe13b1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB3655; x-ms-traffictypediagnostic: AM6PR08MB3655: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(100405760836317)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231355)(944501410)(52105095)(3002001)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051); SRVR:AM6PR08MB3655; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB3655; x-forefront-prvs: 0816F1D86E x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(39860400002)(136003)(346002)(396003)(366004)(189003)(13464003)(199004)(476003)(11346002)(345774005)(2906002)(446003)(102836004)(5660300001)(99286004)(186003)(26005)(3846002)(72206003)(966005)(14454004)(486006)(6116002)(316002)(71190400001)(575784001)(256004)(4744004)(4326008)(71200400001)(14444005)(25786009)(86362001)(6246003)(5250100002)(54906003)(8936002)(110136005)(106356001)(105586002)(33656002)(93886005)(305945005)(74316002)(7736002)(9686003)(53936002)(6506007)(53546011)(81156014)(66066001)(229853002)(68736007)(478600001)(8676002)(7696005)(6436002)(97736004)(81166006)(76176011)(6306002)(2900100001)(55016002)(10126625002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB3655; H:AM6PR08MB3672.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: UKyYP8aS+qkOVMcy6lSEdGLVjndZSbkYWLrES5vVj0pjG33p0Yy9sndUoLPZh8jn1bbeC9SYGINe0VSSSbQ2NkbAV2OWcbmu84/mT4U7AdR/lmrHLSIDQiOzplal/eI+mRyeo7t2VnHroqlFEL6EROEkt4JxKIntWCjfy8DxSAxEw+nMWKwQA0auS6o2FKyUneZB5+KPlot3Rq4N8hUNRpHiErhpWM3mBkUNlXe2sAiMWxsBj0x3XCaBwf/SUhrCahhD82DuAEQ7gZs2Q+bIJE+AzoAugtxutrtPbg3iJrevd0a0Od53V2sWWR9uxLTmQcnQvX2BV2HZ6HXHm++yOHxEjqdG8erMGIeRxugaIrQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8a06e79-0fa2-402c-5917-08d62afe13b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2018 20:06:45.8859 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3655 Subject: Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load 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: , X-List-Received-Date: Fri, 05 Oct 2018 20:06:47 -0000 SGkgSmVyaW4sDQoJVGhhbmsgeW91IGZvciBnZW5lcmF0aW5nIHRoZSBkaXNhc3NlbWJseSwgdGhh dCBpcyByZWFsbHkgaGVscGZ1bC4gSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IHdlIGhhdmUgdGhlIG9w dGlvbiBvZiBtb3ZpbmcgcGFydHMgMiBhbmQgMyBmb3J3YXJkLiBJIHdpbGwgbGV0IEdhdmluIHRh a2UgYSBkZWNpc2lvbi4NCg0KSSBzdWdnZXN0IHRoYXQgd2UgcnVuIGJlbmNobWFya3Mgb24gdGhp cyBwYXRjaCBhbG9uZSBhbmQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhlciBwYXRjaGVzIGluIHRo ZSBzZXJpZXMuIFdlIGhhdmUgZmV3IEFybSBtYWNoaW5lcyBhbmQgd2Ugd2lsbCBydW4gb24gYWxs IG9mIHRoZW0gYWxvbmcgd2l0aCB4ODYuIFdlIHRha2UgYSBkZWNpc2lvbiBiYXNlZCBvbiB0aGF0 Lg0KDQpXb3VsZCB0aGF0IGJlIGEgd2F5IHRvIG1vdmUgZm9yd2FyZD8gSSB0aGluayB0aGlzIHNo b3VsZCBhZGRyZXNzIGJvdGggeW91ciBhbmQgT2xhJ3MgY29uY2VybnMuDQoNCkkgYW0gb3BlbiBm b3Igb3RoZXIgc3VnZ2VzdGlvbnMgYXMgd2VsbC4NCg0KVGhhbmsgeW91LA0KSG9ubmFwcGENCg0K PiANCj4gU28geW91IGRvbid0IHdhbnQgdG8gd3JpdGUgdGhlIHByb3BlciBDMTEgY29kZSBiZWNh dXNlIHRoZSBjb21waWxlcg0KPiBnZW5lcmF0ZXMgb25lIGV4dHJhIGluc3RydWN0aW9uIHRoYXQg d2F5Pw0KPiBZb3UgZG9uJ3QgZXZlbiBrbm93IGlmIHRoYXQgb25lIGV4dHJhIGluc3RydWN0aW9u IGhhcyBhbnkgbWVhc3VyYWJsZQ0KPiBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIEUuZy4gaXQgY291 bGQgYmUgaXNzdWVkIHRoZSBjeWNsZSBiZWZvcmUgdG9nZXRoZXINCj4gd2l0aCBvdGhlciBpbnN0 cnVjdGlvbnMuDQo+IA0KPiBXZSBjYW4gY29tcGxhaW4gdG8gdGhlIGNvbXBpbGVyIHdyaXRlcnMg dGhhdCB0aGUgY29kZSBnZW5lcmF0aW9uIGZvcg0KPiBfX2F0b21pY19sb2FkX24oLCBfX0FUT01J Q19SRUxBWEVEKSBpcyBub3Qgb3B0aW1hbCAoYXQgbGVhc3Qgb24NCj4gQVJNL0E2NCkuIEkgdGhp bmsgdGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgX19hdG9taWMgYnVpbHRpbnMgb25seSBhY2NlcHQg YQ0KPiBiYXNlIGFkZHJlc3Mgd2l0aG91dCBhbnkgb2Zmc2V0IGFuZCB0aGlzIGlzIHBvc3NpYmx5 IGJlY2F1c2UgZS5nLiBsb2FkL3N0b3JlDQo+IGV4Y2x1c2l2ZSAoTERYL1NUWCkgYW5kIGxvYWQt YWNxdWlyZSAoTERBUikgYW5kIHN0b3JlLXJlbGVhc2UgKFNUTFIpIG9ubHkNCj4gYWNjZXB0IGEg YmFzZSByZWdpc3RlciB3aXRoIG5vIG9mZnNldC4gU28gYW55IG9mZnNldCBoYXMgdG8gYmUgYWRk ZWQgYmVmb3JlDQo+IHRoZSBhY3R1YWwgImF0b21pYyIgaW5zdHJ1Y3Rpb24sIExEUiBpbiB0aGlz IGNhc2UuDQo+IA0KPiANCj4gLS0gT2xhDQo+IA0KPiANCj4g77u/T24gMDUvMTAvMjAxOCwgMTk6 MDcsICJKZXJpbiBKYWNvYiIgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gd3Jv dGU6DQo+IA0KPiAgICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gICAgID4gRGF0ZTog RnJpLCA1IE9jdCAyMDE4IDE1OjExOjQ0ICswMDAwDQo+ICAgICA+IEZyb206IEhvbm5hcHBhIE5h Z2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPg0KPiAgICAgPiBUbzogIkFu YW55ZXYsIEtvbnN0YW50aW4iIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPiwgT2xhDQo+ IExpbGplZGFobA0KPiAgICAgPiAgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4sICJHYXZpbiBIdSAo QXJtIFRlY2hub2xvZ3kgQ2hpbmEpIg0KPiAgICAgPiAgPEdhdmluLkh1QGFybS5jb20+LCBKZXJp biBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tPg0KPiAgICAgPiBDQzogImRl dkBkcGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIFN0ZXZlIENhcHBlcg0KPiA8U3RldmUuQ2FwcGVy QGFybS5jb20+LCBuZA0KPiAgICAgPiAgPG5kQGFybS5jb20+LCAic3RhYmxlQGRwZGsub3JnIiA8 c3RhYmxlQGRwZGsub3JnPg0KPiAgICAgPiBTdWJqZWN0OiBSRTogW1BBVENIIHYzIDEvM10gcmlu ZzogcmVhZCB0YWlsIHVzaW5nIGF0b21pYyBsb2FkDQo+ICAgICA+DQo+ICAgICA+ID4gPiAgICAg ICAgID4gSGkgSmVyaW4sDQo+ICAgICA+ID4gPiAgICAgICAgID4NCj4gICAgID4gPiA+ICAgICAg ICAgPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3LCBpbmxpbmUgY29tbWVudHMgZnJvbSBvdXIgaW50 ZXJuYWwNCj4gICAgID4gPiBkaXNjdXNzaW9ucy4NCj4gICAgID4gPiA+ICAgICAgICAgPg0KPiAg ICAgPiA+ID4gICAgICAgICA+IEJSLiBHYXZpbg0KPiAgICAgPiA+ID4gICAgICAgICA+DQo+ICAg ICA+ID4gPiAgICAgICAgID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiAgICAgPiA+ ID4gICAgICAgICA+ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluLmphY29iQGNhdml1bW5ldHdv cmtzLmNvbT4NCj4gICAgID4gPiA+ICAgICAgICAgPiA+IFNlbnQ6IFNhdHVyZGF5LCBTZXB0ZW1i ZXIgMjksIDIwMTggNjo0OSBQTQ0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gVG86IEdhdmluIEh1 IChBcm0gVGVjaG5vbG9neSBDaGluYSkgPEdhdmluLkh1QGFybS5jb20+DQo+ICAgICA+ID4gPiAg ICAgICAgID4gPiBDYzogZGV2QGRwZGsub3JnOyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiAgICAg PiA+ID4gICAgICAgICA+ID4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBTdGV2ZSBD YXBwZXINCj4gICAgID4gPiA+ICAgICAgICAgPiA+IDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT47IE9s YSBMaWxqZWRhaGwNCj4gPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT47DQo+ICAgICA+ID4gbmQNCj4g ICAgID4gPiA+ICAgICAgICAgPiA+IDxuZEBhcm0uY29tPjsgc3RhYmxlQGRwZGsub3JnDQo+ICAg ICA+ID4gPiAgICAgICAgID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gcmluZzogcmVh ZCB0YWlsIHVzaW5nIGF0b21pYyBsb2FkDQo+ICAgICA+ID4gPiAgICAgICAgID4gPg0KPiAgICAg PiA+ID4gICAgICAgICA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gICAgID4gPiA+ ICAgICAgICAgPiA+ID4gRGF0ZTogTW9uLCAxNyBTZXAgMjAxOCAxNjoxNzoyMiArMDgwMA0KPiAg ICAgPiA+ID4gICAgICAgICA+ID4gPiBGcm9tOiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4N Cj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gVG86IGRldkBkcGRrLm9yZw0KPiAgICAgPiA+ID4g ICAgICAgICA+ID4gPiBDQzogZ2F2aW4uaHVAYXJtLmNvbSwgSG9ubmFwcGEuTmFnYXJhaGFsbGlA YXJtLmNvbSwNCj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gc3RldmUuY2FwcGVyQGFybS5jb20s ICBPbGEuTGlsamVkYWhsQGFybS5jb20sDQo+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IGplcmlu LmphY29iQGNhdml1bW5ldHdvcmtzLmNvbSwgbmRAYXJtLmNvbSwNCj4gICAgID4gPiBzdGFibGVA ZHBkay5vcmcNCj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gU3ViamVjdDogW1BBVENIIHYzIDEv M10gcmluZzogcmVhZCB0YWlsIHVzaW5nIGF0b21pYyBsb2FkDQo+ICAgICA+ID4gPiAgICAgICAg ID4gPiA+IFgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjcuNA0KPiAgICAgPiA+ID4gICAgICAg ICA+ID4gPg0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBFeHRlcm5hbCBFbWFpbA0KPiAgICAg PiA+ID4gICAgICAgICA+ID4gPg0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBJbiB1cGRhdGVf dGFpbCwgcmVhZCBodC0+dGFpbCB1c2luZw0KPiBfX2F0b21pY19sb2FkLkFsdGhvdWdoIHRoZQ0K PiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBjb21waWxlciBjdXJyZW50bHkgc2VlbXMgdG8gYmUg ZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGV2ZW4NCj4gd2l0aG91dA0KPiAgICAgPiA+ID4gICAgICAg ICA+ID4gPiBfYXRvbWljX2xvYWQsIHdlIGRvbid0IHdhbnQgdG8gZ2l2ZSB0aGUgY29tcGlsZXIN Cj4gZnJlZWRvbSB0bw0KPiAgICAgPiA+IG9wdGltaXNlDQo+ICAgICA+ID4gPiAgICAgICAgID4g PiA+IHdoYXQgc2hvdWxkIGJlIGFuIGF0b21pYyBsb2FkLCBpdCBzaG91bGQgbm90IGJlIGFyYml0 YXJpbHkNCj4gbW92ZWQNCj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gYXJvdW5kLg0KPiAgICAg PiA+ID4gICAgICAgICA+ID4gPg0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBGaXhlczogMzkz NjhlYmZjNiAoInJpbmc6IGludHJvZHVjZSBDMTEgbWVtb3J5IG1vZGVsDQo+IGJhcnJpZXINCj4g ICAgID4gPiBvcHRpb24iKQ0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBDYzogc3RhYmxlQGRw ZGsub3JnDQo+ICAgICA+ID4gPiAgICAgICAgID4gPiA+DQo+ICAgICA+ID4gPiAgICAgICAgID4g PiA+IFNpZ25lZC1vZmYtYnk6IEdhdmluIEh1IDxnYXZpbi5odUBhcm0uY29tPg0KPiAgICAgPiA+ ID4gICAgICAgICA+ID4gPiBSZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4gICAg ID4gPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gICAgID4gPiA+ICAgICAgICAg PiA+ID4gUmV2aWV3ZWQtYnk6IFN0ZXZlIENhcHBlciA8c3RldmUuY2FwcGVyQGFybS5jb20+DQo+ ICAgICA+ID4gPiAgICAgICAgID4gPiA+IFJldmlld2VkLWJ5OiBPbGEgTGlsamVkYWhsIDxPbGEu TGlsamVkYWhsQGFybS5jb20+DQo+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IC0tLQ0KPiAgICAg PiA+ID4gICAgICAgICA+ID4gPiAgbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX2MxMV9tZW0uaCB8 IDMgKystDQo+ICAgICA+ID4gPiAgICAgICAgID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ICAgICA+ID4gPiAgICAgICAgID4gPiA+DQo+ICAg ICA+ID4gPiAgICAgICAgID4gVGhlIHJlYWQgb2YgaHQtPnRhaWwgbmVlZHMgdG8gYmUgYXRvbWlj LCBhIG5vbi1hdG9taWMgcmVhZA0KPiB3b3VsZCBub3QNCj4gICAgID4gPiBiZSBjb3JyZWN0Lg0K PiAgICAgPiA+ID4NCj4gICAgID4gPiA+ICAgICAgICAgVGhhdCdzIGEgMzJiaXQgdmFsdWUgbG9h ZC4NCj4gICAgID4gPiA+ICAgICAgICAgQUZBSUsgb24gYWxsIENQVXMgdGhhdCB3ZSBzdXBwb3J0 IGl0IGlzIGFuIGF0b21pYyBvcGVyYXRpb24uDQo+ICAgICA+ID4gPiAgICAgW09sYV0gQnV0IHRo YXQgdGhlIG9yZGluYXJ5IEMgbG9hZCBpcyB0cmFuc2xhdGVkIHRvIGFuIGF0b21pYyBsb2FkDQo+ IGZvciB0aGUNCj4gICAgID4gPiB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGluY2lkZW50YWwuDQo+ ICAgICA+ID4gPg0KPiAgICAgPiA+ID4gICAgIElmIHRoZSBkZXNpZ24gcmVxdWlyZXMgYW4gYXRv bWljIGxvYWQgKHdoaWNoIGlzIHRoZSBjYXNlIGhlcmUpLCB3ZQ0KPiAgICAgPiA+ID4gc2hvdWxk IHVzZSBhbiBhdG9taWMgbG9hZCBvbiB0aGUgbGFuZ3VhZ2UgbGV2ZWwuIFRoZW4gd2UgY2FuIGJl DQo+IHN1cmUgaXQgd2lsbA0KPiAgICAgPiA+IGFsd2F5cyBiZSB0cmFuc2xhdGVkIHRvIGFuIGF0 b21pYyBsb2FkIGZvciB0aGUgdGFyZ2V0IGluIHF1ZXN0aW9uIG9yDQo+ICAgICA+ID4gY29tcGls YXRpb24gd2lsbCBmYWlsLiBXZSBkb24ndCBoYXZlIHRvIGRlcGVuZCBvbiBhc3N1bXB0aW9ucy4N Cj4gICAgID4gPg0KPiAgICAgPiA+IFdlIGFsbCBrbm93IHRoYXQgMzJiaXQgbG9hZC9zdG9yZSBv biBjcHUgd2Ugc3VwcG9ydCAtIGFyZSBhdG9taWMuDQo+ICAgICA+ID4gSWYgaXQgd291bGRuJ3Qg YmUgdGhlIGNhc2UgLSBEUERLIHdvdWxkIGJlIGJyb2tlbiBpbiBkb3plbiBwbGFjZXMuDQo+ICAg ICA+ID4gU28gd2hhdCB0aGUgcG9pbnQgdG8gcHJldGVuZCB0aGF0ICJpdCBtaWdodCBiZSBub3Qg YXRvbWljIiBpZiB3ZSBkbw0KPiBrbm93IGZvcg0KPiAgICAgPiA+IHN1cmUgdGhhdCBpdCBpcz8N Cj4gICAgID4gPiBJIGRvIHVuZGVyc3RhbmQgdGhhdCB5b3Ugd2FudCB0byB1c2UgYXRvbWljX2xv YWQocmVsYXhlZCkgaGVyZSBmb3INCj4gICAgID4gPiBjb25zaXN0ZW5jeSwgYW5kIHRvIGNvbmZv cm0gd2l0aCBDMTEgbWVtLW1vZGVsIGFuZCBJIGRvbid0IHNlZSBhbnkNCj4gaGFybSBpbg0KPiAg ICAgPiA+IHRoYXQuDQo+ICAgICA+IFdlIGNhbiBjb250aW51ZSB0byBkaXNjdXNzIHRoZSB0b3Bp YywgaXQgaXMgYSBnb29kIGRpc2N1c3Npb24uIEJ1dCwgYXMgZmFyDQo+IHRoaXMgcGF0Y2ggaXMg Y29uY2VybmVkLCBjYW4gSSBjb25zaWRlciB0aGlzIGFzIHVzIGhhdmluZyBhIGNvbnNlbnN1cz8g VGhlDQo+IGZpbGUgcnRlX3JpbmdfYzExX21lbS5oIGlzIHNwZWNpZmljYWxseSBmb3IgQzExIG1l bW9yeSBtb2RlbCBhbmQgSSBhbHNvIGRvDQo+IG5vdCBzZWUgYW55IGhhcm0gaW4gaGF2aW5nIGNv ZGUgdGhhdCBjb21wbGV0ZWx5IGNvbmZvcm1zIHRvIEMxMSBtZW1vcnkNCj4gbW9kZWwuDQo+IA0K PiAgICAgSGF2ZSB5b3UgZ3V5cyBjaGVja2VkIHRoZSBvdXRwdXQgYXNzZW1ibHkgd2l0aCBhbmQg d2l0aG91dCBhdG9taWMNCj4gbG9hZD8NCj4gICAgIFRoZXJlIGlzIGFuIGV4dHJhICJhZGQiIGlu c3RydWN0aW9uIHdpdGggYXQgbGVhc3QgdGhlIGNvZGUgSSBoYXZlIGNoZWNrZWQuDQo+ICAgICBJ IHRoaW5rLCBjb21waWxlciBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIHVuZGVyc3RhbmQgaXQgaXMg YSBkZWFkIGNvZGUgZm9yDQo+ICAgICBhcm02NC4NCj4gDQo+ICAgICDinpwgW35dICQgYWFyY2g2 NC1saW51eC1nbnUtZ2NjIC12DQo+ICAgICBVc2luZyBidWlsdC1pbiBzcGVjcy4NCj4gICAgIENP TExFQ1RfR0NDPWFhcmNoNjQtbGludXgtZ251LWdjYw0KPiAgICAgQ09MTEVDVF9MVE9fV1JBUFBF Uj0vdXNyL2xpYi9nY2MvYWFyY2g2NC1saW51eC1nbnUvOC4yLjAvbHRvLQ0KPiB3cmFwcGVyDQo+ ICAgICBUYXJnZXQ6IGFhcmNoNjQtbGludXgtZ251DQo+ICAgICBDb25maWd1cmVkIHdpdGg6IC9i dWlsZC9hYXJjaDY0LWxpbnV4LWdudS1nY2Mvc3JjL2djYy04LjIuMC9jb25maWd1cmUNCj4gICAg IC0tcHJlZml4PS91c3IgLS1wcm9ncmFtLXByZWZpeD1hYXJjaDY0LWxpbnV4LWdudS0NCj4gICAg IC0td2l0aC1sb2NhbC1wcmVmaXg9L3Vzci9hYXJjaDY0LWxpbnV4LWdudQ0KPiAgICAgLS13aXRo LXN5c3Jvb3Q9L3Vzci9hYXJjaDY0LWxpbnV4LWdudQ0KPiAgICAgLS13aXRoLWJ1aWxkLXN5c3Jv b3Q9L3Vzci9hYXJjaDY0LWxpbnV4LWdudSAtLWxpYmRpcj0vdXNyL2xpYg0KPiAgICAgLS1saWJl eGVjZGlyPS91c3IvbGliIC0tdGFyZ2V0PWFhcmNoNjQtbGludXgtZ251DQo+ICAgICAtLWhvc3Q9 eDg2XzY0LXBjLWxpbnV4LWdudSAtLWJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUgLS1kaXNhYmxl LW5scw0KPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrIC0tZW5hYmxlLXNoYXJlZCAtLWVu YWJsZS10aHJlYWRzPXBvc2l4DQo+ICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgLS13aXRoLWlzbCAt LWVuYWJsZS1fX2N4YV9hdGV4aXQNCj4gICAgIC0tZGlzYWJsZS1saWJ1bndpbmQtZXhjZXB0aW9u cyAtLWVuYWJsZS1jbG9jYWxlPWdudQ0KPiAgICAgLS1kaXNhYmxlLWxpYnN0ZGN4eC1wY2ggLS1k aXNhYmxlLWxpYnNzcCAtLWVuYWJsZS1nbnUtdW5pcXVlLW9iamVjdA0KPiAgICAgLS1lbmFibGUt bGlua2VyLWJ1aWxkLWlkIC0tZW5hYmxlLWx0byAtLWVuYWJsZS1wbHVnaW4NCj4gICAgIC0tZW5h YmxlLWluc3RhbGwtbGliaWJlcnR5IC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT1nbnUNCj4gICAg IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAtLWRpc2FibGUtbXVsdGlsaWIgLS1kaXNh YmxlLXdlcnJvcg0KPiAgICAgLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZQ0KPiAgICAgVGhyZWFk IG1vZGVsOiBwb3NpeA0KPiAgICAgZ2NjIHZlcnNpb24gOC4yLjAgKEdDQykNCj4gDQo+IA0KPiAg ICAgIyBidWlsZCBzZXR1cA0KPiAgICAgbWFrZSAtaiA4IGNvbmZpZyBUPWFybTY0LWFybXY4YS1s aW51eGFwcC1nY2MgIENST1NTPWFhcmNoNjQtbGludXgtZ251LQ0KPiAgICAgbWFrZSAtaiA4IHRl c3QtYnVpbGQgQ1JPU1M9YWFyY2g2NC1saW51eC1nbnUtDQo+IA0KPiAgICAgIyBnZW5lcmF0ZSBh c20NCj4gICAgIGFhcmNoNjQtbGludXgtZ251LWdkYiAtYmF0Y2ggLWV4ICdmaWxlIGJ1aWxkL2Fw cC90ZXN0ICcgLWV4ICdkaXNhc3NlbWJsZSAvcnMNCj4gYnVja2V0X2VucXVldWVfc2luZ2xlJw0K PiANCj4gICAgIEkgaGF2ZSB1cGxvYWRlZCBnZW5lcmF0ZWQgZmlsZSBmb3IgeW91ciBjb252ZW5p ZW5jZQ0KPiAgICAgd2l0aF9hdG9taWNfbG9hZC50eHQoaW5jbHVkZXMgcGF0Y2ggMSwyLDMpDQo+ ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgICAgaHR0cHM6Ly9wYXN0ZWJpbi5jb20v U1E2dzF5UnUNCj4gDQo+ICAgICB3aXRob3V0X2F0b21pY19sb2FkLnR4dChpbmNsdWRlcyBwYXRj aCAyLDMpDQo+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgICAgaHR0cHM6Ly9wYXN0 ZWJpbi5jb20vQnB2bkQwQ0ENCj4gDQo+IA0KPiAgICAgd2l0aG91dF9hdG9taWMNCj4gICAgIC0t LS0tLS0tLS0tLS0NCj4gICAgIDIzICAgICAgICAgICAgICBpZiAoIXNpbmdsZSkNCj4gICAgICAg IDB4MDAwMDAwMDAwMDY4ZDI5MCA8KzI0MD46ICAgODUgMDAgMDAgMzUgICAgIGNibnogICAgdzUs IDB4NjhkMmEwDQo+IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjU2Pg0KPiAgICAgICAgMHgwMDAw MDAwMDAwNjhkMjk0IDwrMjQ0PjogICA4MiAwNCA0MCBiOSAgICAgbGRyICAgICB3MiwgW3g0LCAj NF0NCj4gICAgICAgIDB4MDAwMDAwMDAwMDY4ZDI5OCA8KzI0OD46ICAgNWYgMDAgMDEgNmIgICAg IGNtcCAgICAgdzIsIHcxDQo+ICAgICAgICAweDAwMDAwMDAwMDA2OGQyOWMgPCsyNTI+OiAgIDIx IDAxIDAwIDU0ICAgICBiLm5lICAgIDB4NjhkMmMwDQo+IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUr Mjg4PiAgLy8gYi5hbnkNCj4gDQo+ICAgICAyNCAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo dW5saWtlbHkoaHQtPnRhaWwgIT0gb2xkX3ZhbCkpDQo+ICAgICAyNSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJ0ZV9wYXVzZSgpOw0KPiANCj4gDQo+ICAgICB3aXRoX2F0b21pYw0KPiAg ICAgLS0tLS0tLS0tLS0NCj4gICAgIDIzICAgICAgICAgICAgICBpZiAoIXNpbmdsZSkNCj4gICAg ICAgIDB4MDAwMDAwMDAwMDY4Y2ViMCA8KzI0MD46ICAgMDAgMTAgMDQgOTEgICAgIGFkZCAgICAg eDAsIHgwLCAjMHgxMDQNCj4gICAgICAgIDB4MDAwMDAwMDAwMDY4Y2ViNCA8KzI0ND46ICAgODQg MDAgMDAgMzUgICAgIGNibnogICAgdzQsIDB4NjhjZWM0DQo+IDxidWNrZXRfZW5xdWV1ZV9zaW5n bGUrMjYwPg0KPiAgICAgICAgMHgwMDAwMDAwMDAwNjhjZWI4IDwrMjQ4PjogICAwMiAwMCA0MCBi OSAgICAgbGRyICAgICB3MiwgW3gwXQ0KPiAgICAgICAgMHgwMDAwMDAwMDAwNjhjZWJjIDwrMjUy PjogICAzZiAwMCAwMiA2YiAgICAgY21wICAgICB3MSwgdzINCj4gICAgICAgIDB4MDAwMDAwMDAw MDY4Y2VjMCA8KzI1Nj46ICAgMDEgMDkgMDAgNTQgICAgIGIubmUgICAgMHg2OGNmZTANCj4gPGJ1 Y2tldF9lbnF1ZXVlX3NpbmdsZSs1NDQ+ICAvLyBiLmFueQ0KPiANCj4gICAgIDI0ICAgICAgICAg ICAgICAgICAgICAgIHdoaWxlICh1bmxpa2VseShvbGRfdmFsICE9IF9fYXRvbWljX2xvYWRfbigm aHQtPnRhaWwsDQo+IF9fQVRPTUlDX1JFTEFYRUQpKSkNCj4gDQo+IA0KPiAgICAgSSBkb24ndCB3 YW50IHRvIGJsb2NrIHRoaXMgc2VyaWVzIG9mIHBhdGNoZXMgZHVlIHRoaXMgcGF0Y2guIENhbiB3 ZSBtYWtlDQo+ICAgICByZSBzcGluIG9uZSBzZXJpZXMgd2l0aCAyIGFuZCAzIHBhdGNoZXMuIEFu ZCBXYWl0IGZvciBwYXRjaCAxIHRvIGNvbmNsdWRlPw0KPiANCj4gICAgIFRob3VnaHRzPw0KPiAN Cj4gDQo+IA0KPiANCj4gICAgID4NCj4gICAgID4gPiBCdXQgYXJndW1lbnQgdGhhdCB3ZSBzaG91 bGRuJ3QgYXNzdW1lIDMyYml0IGxvYWQvc3RvcmUgb3BzIGFzDQo+IGF0b21pYw0KPiAgICAgPiA+ IHNvdW5kcyBhIGJpdCBmbGFreSB0byBtZS4NCj4gICAgID4gPiBLb25zdGFudGluDQo+ICAgICA+ ID4NCj4gICAgID4gPg0KPiAgICAgPiA+ID4NCj4gICAgID4gPiA+DQo+ICAgICA+ID4gPg0KPiAg ICAgPiA+ID4gICAgICAgICA+IEJ1dCB0aGVyZSBhcmUgbm8gbWVtb3J5IG9yZGVyaW5nIHJlcXVp cmVtZW50cyAod2l0aA0KPiAgICAgPiA+ID4gICAgICAgICA+IHJlZ2FyZHMgdG8gb3RoZXIgbG9h ZHMgYW5kL29yIHN0b3JlcyBieSB0aGlzIHRocmVhZCkgc28NCj4gcmVsYXhlZA0KPiAgICAgPiA+ IG1lbW9yeSBvcmRlciBpcyBzdWZmaWNpZW50Lg0KPiAgICAgPiA+ID4gICAgICAgICA+IEFub3Ro ZXIgYXNwZWN0IG9mIHVzaW5nIF9fYXRvbWljX2xvYWRfbigpIGlzIHRoYXQgdGhlDQo+ICAgICA+ ID4gPiBjb21waWxlciBjYW5ub3QgIm9wdGltaXNlIiB0aGlzIGxvYWQgKGUuZy4gY29tYmluZSwg aG9pc3QgZXRjKSwgaXQgaGFzDQo+IHRvIGJlDQo+ICAgICA+ID4gZG9uZSBhcw0KPiAgICAgPiA+ ID4gICAgICAgICA+IHNwZWNpZmllZCBpbiB0aGUgc291cmNlIGNvZGUgd2hpY2ggaXMgYWxzbyB3 aGF0IHdlIG5lZWQgaGVyZS4NCj4gICAgID4gPiA+DQo+ICAgICA+ID4gPiAgICAgICAgIEkgdGhp bmsgSmVyaW4gcG9pbnRzIHRoYXQgcnRlX3BhdXNlKCkgYWN0cyBoZXJlIGFzIGNvbXBpbGVyDQo+ IGJhcnJpZXIgdG9vLA0KPiAgICAgPiA+ID4gICAgICAgICBzbyBubyBuZWVkIHRvIHdvcnJ5IHRo YXQgY29tcGlsZXIgd291bGQgb3B0aW1pemUgb3V0IHRoZSBsb29wLg0KPiAgICAgPiA+ID4gICAg IFtPbGFdIFNvcnJ5IG1pc3NlZCB0aGF0LiBCdXQgdGhlIGJhcnJpZXIgYmVoYXZpb3VyIG9mIHJ0 ZV9wYXVzZSgpDQo+ICAgICA+ID4gPiBpcyBub3QgcGFydCBvZiBDMTEsIGlzIGl0IGVzc2VudGlh bGx5IGEgaGFuZC1tYWRlIGZlYXR1cmUgdG8gc3VwcG9ydA0KPiAgICAgPiA+ID4gdGhlIGxlZ2Fj eSBtdWx0aXRocmVhZGVkIG1lbW9yeSBtb2RlbCAod2hpY2ggdXNlcyBleHBsaWNpdCBIVw0KPiBh bmQNCj4gICAgID4gPiBjb21waWxlciBiYXJyaWVycykuIEknZCBwcmVmZXIgY29kZSB1c2luZyB0 aGUgQzExIG1lbW9yeSBtb2RlbCBub3QgdG8NCj4gICAgID4gPiBkZXBlbmQgb24gc3VjaCBsZWdh Y3kgZmVhdHVyZXMuDQo+ICAgICA+ID4gPg0KPiAgICAgPiA+ID4NCj4gICAgID4gPiA+DQo+ICAg ICA+ID4gPiAgICAgICAgIEtvbnN0YW50aW4NCj4gICAgID4gPiA+DQo+ICAgICA+ID4gPiAgICAg ICAgID4NCj4gICAgID4gPiA+ICAgICAgICAgPiBPbmUgcG9pbnQgd29ydGggbWVudGlvbmluZyB0 aG91Z2ggaXMgdGhhdCB0aGlzIGNoYW5nZSBpcyBmb3INCj4gICAgID4gPiA+IHRoZSBydGVfcmlu Z19jMTFfbWVtLmggZmlsZSwgbm90IHRoZSBsZWdhY3kgcmluZy4gSXQgbWF5IGJlIHdvcnRoDQo+ IHBlcnNpc3RpbmcNCj4gICAgID4gPiA+ICAgICAgICAgPiB3aXRoIGdldHRpbmcgdGhlIEMxMSBj b2RlIHJpZ2h0IHdoZW4gcGVvcGxlIGFyZSBsZXNzIGV4Y2l0ZWQNCj4gYWJvdXQNCj4gICAgID4g PiBzZW5kaW5nIGEgcmVsZWFzZSBvdXQ/DQo+ICAgICA+ID4gPiAgICAgICAgID4NCj4gICAgID4g PiA+ICAgICAgICAgPiBXZSBjYW4gZXhwbGFpbiB0aGF0IGZvciBDMTEgd2Ugd291bGQgcHJlZmVy IHRvIGRvIGxvYWRzIGFuZA0KPiBzdG9yZXMNCj4gICAgID4gPiBhcyBwZXIgdGhlIEMxMSBtZW1v cnkgbW9kZWwuIEluIHRoZSBjYXNlIG9mIHJ0ZV9yaW5nLCB0aGUgY29kZSBpcw0KPiAgICAgPiA+ ID4gICAgICAgICA+IHNlcGFyYXRlZCBjbGVhbmx5IGludG8gQzExIHNwZWNpZmljIGZpbGVzIGFu eXdheS4NCj4gICAgID4gPiA+ICAgICAgICAgPg0KPiAgICAgPiA+ID4gICAgICAgICA+IEkgdGhp bmsgcmVhZGluZyBodC0+dGFpbCB1c2luZyBfX2F0b21pY19sb2FkX24oKSBpcyB0aGUgbW9zdA0K PiAgICAgPiA+IGFwcHJvcHJpYXRlIHdheS4gV2Ugc2hvdyB0aGF0IGh0LT50YWlsIGlzIHVzZWQg Zm9yIHN5bmNocm9uaXphdGlvbiwNCj4gd2UNCj4gICAgID4gPiA+ICAgICAgICAgPiBhY2tub3ds ZWRnZSB0aGF0IGh0LT50YWlsIG1heSBiZSB3cml0dGVuIGJ5IG90aGVyIHRocmVhZHMNCj4gICAg ID4gPiA+IHdpdGhvdXQgYW55IG90aGVyIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uIChlLmcuIG5v IGxvY2sgaW52b2x2ZWQpDQo+IGFuZCB3ZQ0KPiAgICAgPiA+IHJlcXVpcmUNCj4gICAgID4gPiA+ ICAgICAgICAgPiBhbiBhdG9taWMgbG9hZCAoYW55IHdyaXRlIHRvIGh0LT50YWlsIG11c3QgYWxz byBiZSBhdG9taWMpLg0KPiAgICAgPiA+ID4gICAgICAgICA+DQo+ICAgICA+ID4gPiAgICAgICAg ID4gVXNpbmcgdm9sYXRpbGUgYW5kIGV4cGxpY2l0IGNvbXBpbGVyIChvciBwcm9jZXNzb3IpIG1l bW9yeQ0KPiBiYXJyaWVycw0KPiAgICAgPiA+IChmZW5jZXMpIGlzIHRoZSBsZWdhY3kgcHJlLUMx MSB3YXkgb2YgYWNjb21wbGlzaGluZyB0aGVzZSB0aGluZ3MuDQo+ICAgICA+ID4gPiBUaGVyZSdz DQo+ICAgICA+ID4gPiAgICAgICAgID4gYSByZWFzb24gd2h5IEMxMS9DKysxMSBtb3ZlZCBhd2F5 IGZyb20gdGhlIG9sZCB3YXlzLg0KPiAgICAgPiA+ID4gICAgICAgICA+ID4gPg0KPiAgICAgPiA+ ID4gICAgICAgICA+ID4gPiAgICAgICAgIF9fYXRvbWljX3N0b3JlX24oJmh0LT50YWlsLCBuZXdf dmFsLA0KPiBfX0FUT01JQ19SRUxFQVNFKTsNCj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gLS0N Cj4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gMi43LjQNCj4gICAgID4gPiA+ICAgICAgICAgPiA+ ID4NCj4gICAgID4gPiA+DQo+ICAgICA+ID4gPg0KPiAgICAgPiA+ID4NCj4gICAgID4NCj4gDQoN Cg==