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 381C7A04DB; Thu, 15 Oct 2020 01:58:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 104701DA80; Thu, 15 Oct 2020 01:58:07 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150075.outbound.protection.outlook.com [40.107.15.75]) by dpdk.org (Postfix) with ESMTP id 987051D54F for ; Thu, 15 Oct 2020 01:58:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RHli4HhvPpz6koGEllSMTXRmvgbNwb9fyISdRktwhm8=; b=4DGJcOZcCWhRXPmzLBNOzyfiM+NBgU9Zh4gWpa89+UQbIv2HEurpHdfFZEyS0b32SBjJF+CnX8cKOvNICwsnI1UQY9VWr93vjatP6R6uK0zXdxJRNCO1NRqOc+c7JP90WifF1Zcs9VzfVRY4tyTx217zZznqTuYjbfmR92y/9ik= Received: from DB6PR0202CA0008.eurprd02.prod.outlook.com (2603:10a6:4:29::18) by AM6PR08MB5030.eurprd08.prod.outlook.com (2603:10a6:20b:e1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.28; Wed, 14 Oct 2020 23:58:01 +0000 Received: from DB5EUR03FT048.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:29:cafe::26) by DB6PR0202CA0008.outlook.office365.com (2603:10a6:4:29::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.23 via Frontend Transport; Wed, 14 Oct 2020 23:58:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT048.mail.protection.outlook.com (10.152.21.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21 via Frontend Transport; Wed, 14 Oct 2020 23:58:01 +0000 Received: ("Tessian outbound 68da730eaaba:v64"); Wed, 14 Oct 2020 23:58:01 +0000 X-CR-MTA-TID: 64aa7808 Received: from 8841ee149579.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6A06E149-7DFE-4D3B-875B-F8D811B54CB9.1; Wed, 14 Oct 2020 23:57:56 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8841ee149579.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 14 Oct 2020 23:57:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m5nzw6s0ssFNiQ8yKjNiTkbNbbcgmVDH5O0SiRs87FFR5eCupwjhHVk68feI6VhIg2s7WWkHiFkNt5PObTPjHLiF5K0M6JKW9V8t28o502QuvtEXJ25Wl/PRm2Sy4eui5wb3A0O+mgDv1HxCTp1YuI49dGzfAsP5387QUGCn1Eyde2qbeAFUIpLF1BvImsNcKm2iKBoBGcZmyMgLegPD6teXyjUI0j0PiwPmmpg6P1sASlpTzK4cmyOQNCnqCTiEK9CKkEGVWj9KjgwN+RlozTDvfSzMeRvmzrtoP8v4I/4fyjLw5dxKkC3Jm5RhtbmxhGu1m3WMcOs69LhvnU2ziw== 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=RHli4HhvPpz6koGEllSMTXRmvgbNwb9fyISdRktwhm8=; b=Hv2KaEClrOFt28dptC9CG4ZG2PwuuM96t/Z49nThN9tF59yIvDdjE4aQiW9Z1rVMF9bwZEfBFxN4zvIbENYMaFtSADTkXb149Qa5wKSNBgQhwI+JekIkBAxXPLv/ClBx6gzVzvE7yZdNpVU/bZD1z6/vaH80th34LBdwkTxYCZEQCTyH1w0fogvhMwHm4x7s1cft6GHa4KsyxvcuKE2wWelwSdk3LTGs33fr8V4ytMtyjauEx4P7av2Vtn9u15brZHi0a2WiuzjyZPy6vI+ngGUx/CagYJkYjetmzbOFGvC6bwopcjTiOO9TkqqKBZc3QgSr37+PMpO0ZNbqYa7l/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RHli4HhvPpz6koGEllSMTXRmvgbNwb9fyISdRktwhm8=; b=4DGJcOZcCWhRXPmzLBNOzyfiM+NBgU9Zh4gWpa89+UQbIv2HEurpHdfFZEyS0b32SBjJF+CnX8cKOvNICwsnI1UQY9VWr93vjatP6R6uK0zXdxJRNCO1NRqOc+c7JP90WifF1Zcs9VzfVRY4tyTx217zZznqTuYjbfmR92y/9ik= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB8PR08MB4955.eurprd08.prod.outlook.com (2603:10a6:10:38::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.22; Wed, 14 Oct 2020 23:57:54 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d%4]) with mapi id 15.20.3477.020; Wed, 14 Oct 2020 23:57:54 +0000 From: Honnappa Nagarahalli To: "Medvedkin, Vladimir" , Michel Machado , Kevin Traynor , Ruifeng Wang , Bruce Richardson , Cody Doucette , Andre Nathan , Qiaobin Fu CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , nd Thread-Topic: [dpdk-dev] [PATCH 2/2] lpm: hide internal data Thread-Index: AQHWoiuNlDyuW8S5TEq3aT4bxXe1qKmXoCMg Date: Wed, 14 Oct 2020 23:57:54 +0000 Message-ID: References: <20200907081518.46350-1-ruifeng.wang@arm.com> <20200907081518.46350-3-ruifeng.wang@arm.com> <20200915160224.GA825@bricha3-MOBL.ger.corp.intel.com> <81eb8fde-cd4f-1df9-0ebb-05c902b30fe3@intel.com> <48834549-00e9-b762-4915-9a2dd0e5fe1d@redhat.com> <6497770e-9d1c-97c3-3834-84bd96186836@digirati.com.br> <18c44f31-abc0-c0b5-c2fb-76d6166d5237@digirati.com.br> <9197371c-5e03-4852-d62a-6456f0b762f0@intel.com> <9647f80d-53c3-33aa-b6d0-301aef34ca0a@intel.com> In-Reply-To: <9647f80d-53c3-33aa-b6d0-301aef34ca0a@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 059114FF4385EB4AB5A7562A1C1A00BB.0 x-checkrecipientchecked: true Authentication-Results-Original: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.110.7] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: de069ba5-8da4-4508-bf66-08d8709cfbf8 x-ms-traffictypediagnostic: DB8PR08MB4955:|AM6PR08MB5030: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: nbwUAzr5ij4sa+BCBRWT6MzAE9uDLCOZf3ftAimoPxc5hL8C9lTVuvHtAOHoZUaeQN6l4Q4kIqguvHc4yADDXiMJv7jQlb5DK8IINl0kRO4Hff0a1Shn/TYc+i3fnOVDdVXbGNcffGsSygbOVm4FKCaIJZipo64xbszuYnh+/u9kI+Td83P+u2iZP3bf69xdkwpLdIulPWZlHe13u+KmMkHmtR55hzsKRJGgFXtrGhBufWuwJARcmKDskg/ZNTJqksMVFo1of6JCScQq8FWdQ7UKPb7Ne5p5OUfs8FJK/gzsLtLAMRYuoezNsUYJIoaloOEKPwTyndWOK7MwxJxhNoH81B9cTN4RfHzVyXEjh5hsUXGb35IkF92nNP4VJKOtD9PIlxTnTgm02W19V6FOMg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(39850400004)(136003)(346002)(366004)(376002)(26005)(6506007)(53546011)(186003)(9686003)(76116006)(64756008)(7696005)(5660300002)(4326008)(66476007)(66946007)(66556008)(66446008)(110136005)(2906002)(33656002)(316002)(30864003)(52536014)(54906003)(8676002)(83080400001)(83380400001)(8936002)(86362001)(55016002)(478600001)(966005)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: fjjj+hXoBi/kgTm77SJDbSOBCngtN7Q0lFUnbVCwv4DQylanAUULknNNRgdDV0ysFO/yvrkfxSaFakG0Jv0vQop7bpT20m1iCkH/82Tx1EF8aCFqMRMKxdzgfx3buR9F0OmrLWtLIiLIPZrtq3A8+xV7b7Mfnqr5/t4sc829dFGct/DmsvFs5OIGaFLmzQlQlNWYdQi+1/ojdXoLDxT4kEFH4OIloInw7q8e9g8NWkjtc5t8zPsFxhJCR6t6x92WaDYEhTWR2vOVyOicUdOvjgSI+LyupUDKraPOWpDfXrZM9PIaAhzHb3uSRtc4bCeN1A2cYNO5ZvNTw3kebqbeDiO0McpQIPL4jiK1imZI3RgiSeXhVMYz90L74hKNe8udm0YOj23T8SRF6+nXSXEphlHBnL+AFVjsGih2wZ1E2oQocbeD+E/wbQmVlmxLYXEvAbewebDB91RLFJh+V8ezgIcqePmlT48bksRqq0VUdEULgK+AEFWCp8CLpSPMp/URij2lZs0MGNXmMOkb7/zN5BkYe5hK1t65D0eijZakZiMZbzJHn5Jw7T4Pj1SbJumqbLXWpLc9014aXpc5CV+lZhegSGkFoSN44cP99T6um1K34hXp+I269y7fCaA7op1FQ4SBMTO7Yt4O28y72prlGA== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4955 Original-Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT048.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d79c4151-4037-4982-e13a-08d8709cf7cc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wypK/9OttBRhNcJVZyAFhqYFdcrhJGmIsvrOvuRuD3x4AoaqIuVrbd4VW6ZIAR5Y1ox6n4/zNx7iNNfZzlfp8JHQceEo4NQPotBP3TRr6uXB/pPWRZEVIlfLVhUWQrBJJIWqMy2gi9qlKz96X1iLxwhVAoItZWKJAnW99CcdvP7I/UxHpSeZAdaO/5bUNZKo6e0+bEO6UTxdNPGtvrf+VQa6Jy6i/Y7DcOZ8lA8OvLLAMtQeHB7w8eWIJAuFPJlwAwGPb8/bWhISZsgw2vHD8pxYWcjNEEtB9/3GRrxCuGgQnySqmAaYhmcR67HkrnBUekc5Ded82lk2M3QMjaR9USUn5tVi034TZ7w885YxP9ZN9Ey06YFOa/Mbbxg9wu+k5cWMLu8mlOxFSTwLT1AsF0CrTg5pEIv8XPvFzbl2/hcokfS1rrHyc9wgcL0R7Gw12JW723zW/EakENoDkaKlnKuXbjgw7GahNozaHV7SEcI= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(39850400004)(376002)(346002)(396003)(46966005)(52536014)(316002)(86362001)(4326008)(2906002)(47076004)(81166007)(83080400001)(54906003)(70586007)(336012)(70206006)(82740400003)(110136005)(83380400001)(356005)(30864003)(6506007)(9686003)(53546011)(8936002)(966005)(33656002)(82310400003)(55016002)(8676002)(7696005)(478600001)(5660300002)(26005)(186003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2020 23:58:01.7387 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: de069ba5-8da4-4508-bf66-08d8709cfbf8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT048.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5030 Subject: Re: [dpdk-dev] [PATCH 2/2] lpm: hide internal data 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" PHNuaXA+DQoNCj4gPj4NCj4gPj4NCj4gPj4gT24gMTMvMTAvMjAyMCAxODo0NiwgTWljaGVsIE1h Y2hhZG8gd3JvdGU6DQo+ID4+PiBPbiAxMC8xMy8yMCAxMTo0MSBBTSwgTWVkdmVka2luLCBWbGFk aW1pciB3cm90ZToNCj4gPj4+PiBIaSBNaWNoZWwsDQo+ID4+Pj4NCj4gPj4+PiBDb3VsZCB5b3Ug cGxlYXNlIGRlc2NyaWJlIGEgY29uZGl0aW9uIHdoZW4gTFBNIGdldHMgaW5jb25zaXN0ZW50Pw0K PiA+Pj4+IEFzIEkgY2FuIHNlZSBpZiB0aGVyZSBpcyBubyBmcmVlIHRibDggaXQgd2lsbCByZXR1 cm4gLUVOT1NQQy4NCj4gPj4+DQo+ID4+PiDCoMKgwqAgQ29uc2lkZXIgdGhpcyBzaW1wbGUgZXhh bXBsZSwgd2UgbmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0d28NCj4gPj4+IHByZWZpeGVzIHdp dGggZGlmZmVyZW50IG5leHQgaG9wczogMTAuOTkuMC4wLzE2LCAxOC45OS45OS4xMjgvMjUuIElm DQo+ID4+PiB0aGUgTFBNIHRhYmxlIGlzIG91dCBvZiB0Ymw4cywgdGhlIHNlY29uZCBwcmVmaXgg aXMgbm90IGFkZGVkIGFuZA0KPiA+Pj4gR2F0ZWtlZXBlciB3aWxsIG1ha2UgZGVjaXNpb25zIGlu IHZpb2xhdGlvbiBvZiB0aGUgcG9saWN5LiBUaGUgZGF0YQ0KPiA+Pj4gc3RydWN0dXJlIG9mIHRo ZSBMUE0gdGFibGUgaXMgY29uc2lzdGVudCwgYnV0IGl0cyBjb250ZW50DQo+ID4+PiBpbmNvbnNp c3RlbnQgd2l0aCB0aGUgcG9saWN5Lg0KbWF4X3J1bGVzIGFuZCBudW1iZXJfdGJsOHMgaW4gJ3N0 cnVjdCBydGVfbHBtJyBjb250YWluIHRoZSBjb25maWcgaW5mb3JtYXRpb24uIFRoZXNlIDIgZmll bGRzIGRvIG5vdCBjaGFuZ2UgYmFzZWQgb24gdGhlIHJvdXRlcyBhZGRlZCBhbmQgZG8gbm90IGlu ZGljYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgbGVmdC4gU28sIHlvdSBjYW5ub3QgdXNlIHRoaXMg aW5mb3JtYXRpb24gdG8gZGVjaWRlIGlmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSB0byBhZGQgbW9y ZSByb3V0ZXMuDQoNCj4gPj4NCj4gPj4gQWhhLCB0aGFua3MuIFNvIGRvIEkgdW5kZXJzdGFuZCBj b3JyZWN0bHkgdGhhdCB5b3UgbmVlZCB0byBhZGQgYSBzZXQNCj4gPj4gb2Ygcm91dGVzIGF0b21p Y2FsbHkgKGVpdGhlciB0aGUgZW50aXJlIHNldCBpcyBpbnN0YWxsZWQgb3Igbm90aGluZyk/DQo+ ID4NCj4gPiAgwqDCoCBZZXMuDQo+ID4NCj4gPj4gSWYgc28sIHRoZW4gSSB3b3VsZCBzdWdnZXN0 IGhhdmluZyAyIGxwbSBhbmQgc3dpdGNoaW5nIHRoZW0NCj4gPj4gYXRvbWljYWxseSBhZnRlciBh IHN1Y2Nlc3NmdWwgYWRkaXRpb24uIEFzIGZvciBub3csIGV2ZW4gaWYgeW91IGhhdmUNCj4gPj4g ZW5vdWdoIHRibDgncywgcm91dGVzIGFyZSBpbnN0YWxsZWQgbm9uIGF0b21pY2FsbHksIGkuZS4g dGhlcmUgd2lsbA0KPiA+PiBiZSBhIHRpbWUgZ2FwIGJldHdlZW4gYWRkaW5nIHR3byByb3V0ZXMs IHNvIGluIHRoaXMgdGltZSBpbnRlcnZhbCB0aGUNCj4gPj4gdGFibGUgd2lsbCBiZSBpbmNvbnNp c3RlbnQgd2l0aCB0aGUgcG9saWN5Lg0KPiA+PiBBbHNvLCBpZiBuZXcgbHBtIGFsZ29yaXRobXMg YXJlIGFkZGVkIHRvIHRoZSBEUERLLCB0aGV5IHdvbid0IGhhdmUNCj4gPj4gc3VjaCBhIHRoaW5n IGFzIHRibDguDQo+ID4NCj4gPiAgwqDCoCBPdXIgY29kZSBhbHJlYWR5IGRlYWxzIHdpdGggc3lu Y2hyb25pemF0aW9uLg0KSWYgdGhlIGFwcGxpY2F0aW9uIGNvZGUgYWxyZWFkeSBkZWFscyB3aXRo IHN5bmNocm9uaXphdGlvbiwgaXMgaXQgcG9zc2libGUgdG8gcmV2ZXJ0IGJhY2sgKGkuZS4gZGVs ZXRlIHRoZSByb3V0ZXMgdGhhdCBnb3QgYWRkZWQgc28gZmFyKSB3aGVuIHRoZSBhZGRpdGlvbiBv ZiB0aGUgcm91dGUtc2V0IGZhaWxzPw0KDQo+IA0KPiBPSywgc28gbXkgc3VnZ2VzdGlvbiBoZXJl IHdvdWxkIGJlIHRvIGFkZCBuZXcgcm91dGVzIHRvIHRoZSBzaGFkb3cgY29weQ0KPiBvZiB0aGUg bHBtLCBhbmQgaWYgaXQgcmV0dXJucyAtRU5PU1BDLCB0aGFuIGNyZWF0ZSBhIG5ldyBMUE0gd2l0 aCBkb3VibGUNCj4gYW1vdW50IG9mIHRibDgncyBhbmQgYWRkIGFsbCB0aGUgcm91dGVzIHRvIGl0 LiBUaGVuIHN3aXRjaCB0aGUgYWN0aXZlLXNoYWRvdw0KPiBMUE0gcG9pbnRlcnMuIEluIHRoaXMg Y2FzZSB5b3UnbGwgYWx3YXlzIGFkZCBhIGJ1bGsgb2Ygcm91dGVzIGF0b21pY2FsbHkuDQo+IA0K PiA+DQo+ID4+PiDCoMKgwqAgV2UgbWluaW1pemUgdGhlIG5lZWQgb2YgcmVwbGFjaW5nIGEgTFBN IHRhYmxlIGJ5IGFsbG9jYXRpbmcgTFBNDQo+ID4+PiB0YWJsZXMgd2l0aCB0aGUgZG91YmxlIG9m IHdoYXQgd2UgbmVlZCAoc2VlIGV4YW1wbGUgaGVyZQ0KPiA+Pj4NCj4gaHR0cHM6Ly9naXRodWIu Y29tL0FsdHJhTWF5b3IvZ2F0ZWtlZXBlci9ibG9iLzk1ZDFkNmU4MjAxODYxYTBkMGM2OTgNCj4g Pj4+IGJmZDA2YWQ2MDY2NzRmMWUwNy9sdWEvZXhhbXBsZXMvcG9saWN5Lmx1YSNMMTcyLUwxODMp LA0KPiA+Pj4gYnV0IHRoZSBjb2RlIG11c3QgYmUgcmVhZHkgZm9yIHVuZXhwZWN0ZWQgbmVlZHMg dGhhdCBtYXkgYXJpc2UgaW4NCj4gPj4+IHByb2R1Y3Rpb24uDQo+ID4+Pg0KPiA+Pg0KPiA+PiBV c3VhbGx5LCB0aGUgdGFibGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGxhcmdlIGVub3VnaCBudW1i ZXIgb2YNCj4gPj4gZW50cmllcywgZW5vdWdoIHRvIGFkZCBhIHBvc3NpYmxlIG51bWJlciBvZiBy b3V0ZXMuIE9uZSB0Ymw4IGdyb3VwDQo+ID4+IHRha2VzIHVwIDFLYiBvZiBtZW1vcnkgd2hpY2gg aXMgbm90aGluZyBjb21wYXJpbmcgdG8gdGhlIHNpemUgb2YNCj4gPj4gdGJsMjQgd2hpY2ggaXMg NjRNYi4NCj4gPg0KPiA+ICDCoMKgIFdoZW4gdGhlIHByZWZpeGVzIGNvbWUgZnJvbSBCR1AsIGlu aXRpYWxpemluZyBhIGxhcmdlIGVub3VnaCB0YWJsZQ0KPiA+IGlzIGZpbmUuIEJ1dCB3aGVuIHBy ZWZpeGVzIGNvbWUgZnJvbSB0aHJlYXQgaW50ZWxsaWdlbmNlLCB0aGUgbnVtYmVyDQo+ID4gb2Yg cHJlZml4ZXMgY2FuIHZhcnkgd2lsZGx5IGFuZCB0aGUgbnVtYmVyIG9mIHByZWZpeGVzIGFib3Zl IDI0IGJpdHMNCj4gPiBhcmUgd2F5IG1vcmUgY29tbW9uLg0KPiA+DQo+ID4+IFAuUy4gY29uc2lk ZXIgdXNpbmcgcnRlX2ZpYiBsaWJyYXJ5LCBpdCBoYXMgYSBudW1iZXIgb2YgYWR2YW50YWdlcw0K PiA+PiBvdmVyIExQTS4gWW91IGNhbiByZXBsYWNlIHRoZSBsb29wIGluIF9fbG9va3VwX2ZpYl9i dWxrKCkgd2l0aCBhIGJ1bGsNCj4gPj4gbG9va3VwIGNhbGwgYW5kIHRoaXMgd2lsbCBwcm9iYWJs eSBpbmNyZWFzZSB0aGUgc3BlZWQuDQo+ID4NCj4gPiAgwqDCoCBJJ20gbm90IGF3YXJlIG9mIHRo ZSBydGVfZmliIGxpYnJhcnkuIFRoZSBvbmx5IGRvY3VtZW50YXRpb24gdGhhdA0KPiA+IEkgZm91 bmQgb24gR29vZ2xlIHdhcyBodHRwczovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19maWJfOGguaHRt bCBhbmQgaXQNCj4gPiBqdXN0IHNheXMgIkZJQiAoRm9yd2FyZGluZyBpbmZvcm1hdGlvbiBiYXNl KSBpbXBsZW1lbnRhdGlvbiBmb3IgSVB2NA0KPiA+IExvbmdlc3QgUHJlZml4IE1hdGNoIi4NCj4g DQo+IFRoYXQncyB0cnVlLCBJJ20gZ29pbmcgdG8gYWRkIHByb2dyYW1tZXIncyBndWlkZSBzb29u Lg0KPiBBbHRob3VnaCB0aGUgZmliIEFQSSBpcyB2ZXJ5IHNpbWlsYXIgdG8gZXhpc3RpbmcgTFBN Lg0KPiANCj4gPg0KPiA+Pj4+DQo+ID4+Pj4gT24gMTMvMTAvMjAyMCAxNTo1OCwgTWljaGVsIE1h Y2hhZG8gd3JvdGU6DQo+ID4+Pj4+IEhpIEtldmluLA0KPiA+Pj4+Pg0KPiA+Pj4+PiDCoMKgwqAg V2UgZG8gbmVlZCBmaWVsZHMgbWF4X3J1bGVzIGFuZCBudW1iZXJfdGJsOHMgb2Ygc3RydWN0DQo+ ID4+Pj4+IHJ0ZV9scG0sIHNvIHRoZSByZW1vdmFsIHdvdWxkIGZvcmNlIHVzIHRvIGhhdmUgYW5v dGhlciBwYXRjaCB0bw0KPiA+Pj4+PiBvdXIgbG9jYWwgY29weSBvZiBEUERLLiBXZSdkIHJhdGhl ciBhdm9pZCB0aGlzIG5ldyBsb2NhbCBwYXRjaA0KPiA+Pj4+PiBiZWNhdXNlIHdlIHdpc2ggdG8g ZXZlbnR1YWxseSBiZSBpbiBzeW5jIHdpdGggdGhlIHN0b2NrIERQREsuDQo+ID4+Pj4+DQo+ID4+ Pj4+IMKgwqDCoCBUaG9zZSBmaWVsZHMgYXJlIG5lZWRlZCBpbiBHYXRla2VlcGVyIGJlY2F1c2Ug d2UgZm91bmQgYQ0KPiA+Pj4+PiBjb25kaXRpb24gaW4gYW4gb25nb2luZyBkZXBsb3ltZW50IGlu IHdoaWNoIHRoZSBlbnRyaWVzIG9mIHNvbWUNCj4gPj4+Pj4gTFBNIHRhYmxlcyBtYXkgc3VkZGVu bHkgY2hhbmdlIGEgbG90IHRvIHJlZmxlY3QgcG9saWN5IGNoYW5nZXMuIFRvDQo+ID4+Pj4+IGF2 b2lkIGdldHRpbmcgaW50byBhIHN0YXRlIGluIHdoaWNoIHRoZSBMUE0gdGFibGUgaXMgaW5jb25z aXN0ZW50DQo+ID4+Pj4+IGJlY2F1c2UgaXQgY2Fubm90IGZpdCBhbGwgdGhlIG5ldyBlbnRyaWVz LCB3ZSBjb21wdXRlIHRoZSBuZWVkZWQNCj4gPj4+Pj4gcGFyYW1ldGVycyB0byBzdXBwb3J0IHRo ZSBuZXcgZW50cmllcywgYW5kIGNvbXBhcmUgd2l0aCB0aGUNCj4gPj4+Pj4gY3VycmVudCBwYXJh bWV0ZXJzLiBJZiB0aGUgY3VycmVudCB0YWJsZSBkb2Vzbid0IGZpdCBldmVyeXRoaW5nLA0KPiA+ Pj4+PiB3ZSBoYXZlIHRvIHJlcGxhY2UgaXQgd2l0aCBhIG5ldyBMUE0gdGFibGUuDQo+ID4+Pj4+ DQo+ID4+Pj4+IMKgwqDCoCBJZiB0aGVyZSB3ZXJlIGEgd2F5IHRvIG9idGFpbiB0aGUgc3RydWN0 IHJ0ZV9scG1fY29uZmlnIG9mIGENCj4gPj4+Pj4gZ2l2ZW4gTFBNIHRhYmxlLCBpdCB3b3VsZCBj bGVhbmx5IGFkZHJlc3Mgb3VyIG5lZWQuIFdlIGhhdmUgdGhlDQo+ID4+Pj4+IHNhbWUgbmVlZCBp biBJUHY2IGFuZCBoYXZlIGEgbG9jYWwgcGF0Y2ggdG8gd29yayBhcm91bmQgaXQgKHNlZQ0KPiA+ Pj4+Pg0KPiBodHRwczovL2dpdGh1Yi5jb20vY2pkb3VjZXR0ZS9kcGRrL2NvbW1pdC8zZWFmMTI0 YTc4MTM0OWI4ZWM4Y2Q4ODBkYg0KPiAyNmE3ODExNWNiOGM4ZikuDQpJIGRvIG5vdCBzZWUgd2h5 IHN1Y2ggYW4gQVBJIGlzIG5vdCBwb3NzaWJsZSwgd2UgY291bGQgYWRkIG9uZSBBUEkgdGhhdCBy ZXR1cm5zIG1heF9ydWxlcyBhbmQgbnVtYmVyX3RibDhzIChlc3NlbnRpYWxseSwgdGhlIGNvbmZp ZyB0aGF0IHdhcyBwYXNzZWQgdG8gcnRlX2xwbV9jcmVhdGUgQVBJKS4NCkJ1dCwgaXMgdGhlcmUg YSBwb3NzaWJpbGl0eSB0byBzdG9yZSB0aGF0IGluZm8gaW4gdGhlIGFwcGxpY2F0aW9uIGFzIHRo YXQgZGF0YSB3YXMgcGFzc2VkIHRvIHJ0ZV9scG0gZnJvbSB0aGUgYXBwbGljYXRpb24/DQoNCj4g Pj4+Pj4gVGh1cywgYW4gSVB2NCBhbmQgSVB2NiBzb2x1dGlvbiB3b3VsZCBiZSBiZXN0Lg0KPiA+ Pj4+Pg0KPiA+Pj4+PiDCoMKgwqAgUFM6IEkndmUgYWRkZWQgUWlhb2JpbiBGdSwgYW5vdGhlciBH YXRla2VlcGVyIG1haW50YWluZXIsIHRvDQo+ID4+Pj4+IHRoaXMgZGlzc2N1c3Npb24uDQo+ID4+ Pj4+DQo+ID4+Pj4+IFsgXSdzDQo+ID4+Pj4+IE1pY2hlbCBNYWNoYWRvDQo+ID4+Pj4+DQo+ID4+ Pj4+IE9uIDEwLzEzLzIwIDk6NTMgQU0sIEtldmluIFRyYXlub3Igd3JvdGU6DQo+ID4+Pj4+PiBI aSBHYXRla2VlcGVyIG1haW50YWluZXJzIChJIHRoaW5rKSwNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBm eWkgLSB0aGVyZSBpcyBhIHByb3Bvc2FsIHRvIHJlbW92ZSBzb21lIG1lbWJlcnMgb2YgYSBzdHJ1 Y3QgaW4NCj4gPj4+Pj4+IERQREsgTFBNIEFQSSB0aGF0IEdhdGVrZWVwZXIgaXMgdXNpbmcgWzFd LiBJdCB3b3VsZCBiZSBvbmx5IGZyb20NCj4gPj4+Pj4+IERQREsgMjAuMTEgYnV0IGFzIGl0J3Mg YW4gTFRTIEkgZ3Vlc3MgaXQgd291bGQgcHJvYmFibHkgaGl0DQo+ID4+Pj4+PiBEZWJpYW4gaW4g YSBmZXcgbW9udGhzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoZSBmdWxsIHRocmVhZCBpcyBoZXJl Og0KPiA+Pj4+Pj4gaHR0cDovL2luYm94LmRwZGsub3JnL2Rldi8yMDIwMDkwNzA4MTUxOC40NjM1 MC0xLQ0KPiBydWlmZW5nLndhbmdAYXJtDQo+ID4+Pj4+PiAuY29tLw0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBNYXliZSB5b3UgY2FuIHRha2UgYSBsb29rIGFuZCB0ZWxsIHVzIGlmIHRo ZXkgYXJlIG5lZWRlZCBpbg0KPiA+Pj4+Pj4gR2F0ZWtlZXBlciBvciB5b3UgY2FuIHdvcmthcm91 bmQgaXQ/DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gdGhhbmtzLA0KPiA+Pj4+Pj4gS2V2aW4uDQo+ID4+ Pj4+Pg0KPiA+Pj4+Pj4gWzFdDQo+ID4+Pj4+Pg0KPiBodHRwczovL2dpdGh1Yi5jb20vQWx0cmFN YXlvci9nYXRla2VlcGVyL2Jsb2IvbWFzdGVyL2d0L2x1YV9scG0uYw0KPiA+Pj4+Pj4gI0wyMzUt TDI0OA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAwOS8xMC8yMDIwIDA3OjU0LCBS dWlmZW5nIFdhbmcgd3JvdGU6DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4+Pj4+Pj4gRnJvbTogS2V2aW4gVHJheW5vciA8a3RyYXlub3JAcmVk aGF0LmNvbT4NCj4gPj4+Pj4+Pj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMzAsIDIwMjAg NDo0NiBQTQ0KPiA+Pj4+Pj4+PiBUbzogUnVpZmVuZyBXYW5nIDxSdWlmZW5nLldhbmdAYXJtLmNv bT47IE1lZHZlZGtpbiwNCj4gVmxhZGltaXINCj4gPj4+Pj4+Pj4gPHZsYWRpbWlyLm1lZHZlZGtp bkBpbnRlbC5jb20+OyBCcnVjZSBSaWNoYXJkc29uDQo+ID4+Pj4+Pj4+IDxicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbT4NCj4gPj4+Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZzsgSG9ubmFwcGEgTmFn YXJhaGFsbGkNCj4gPj4+Pj4+Pj4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBuZCA8 bmRAYXJtLmNvbT4NCj4gPj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDIv Ml0gbHBtOiBoaWRlIGludGVybmFsIGRhdGENCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gT24gMTYv MDkvMjAyMCAwNDoxNywgUnVpZmVuZyBXYW5nIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4+Pj4+IEZyb206IE1lZHZl ZGtpbiwgVmxhZGltaXIgPHZsYWRpbWlyLm1lZHZlZGtpbkBpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+ Pj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMTYsIDIwMjAgMTI6MjggQU0NCj4gPj4+Pj4+ Pj4+PiBUbzogQnJ1Y2UgUmljaGFyZHNvbiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBS dWlmZW5nDQo+ID4+Pj4+Pj4+Pj4gV2FuZyA8UnVpZmVuZy5XYW5nQGFybS5jb20+DQo+ID4+Pj4+ Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZzsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4gPj4+Pj4+Pj4+ PiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IG5kIDxuZEBhcm0uY29tPg0KPiA+Pj4+ Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMi8yXSBscG06IGhpZGUgaW50ZXJuYWwgZGF0YQ0K PiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gSGkgUnVpZmVuZywNCj4gPj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+IE9uIDE1LzA5LzIwMjAgMTc6MDIsIEJydWNlIFJpY2hhcmRzb24gd3JvdGU6DQo+ ID4+Pj4+Pj4+Pj4+IE9uIE1vbiwgU2VwIDA3LCAyMDIwIGF0IDA0OjE1OjE3UE0gKzA4MDAsIFJ1 aWZlbmcgV2FuZw0KPiB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+IEZpZWxkcyBleGNlcHQgdGJsMjQg YW5kIHRibDggaW4gcnRlX2xwbSBzdHJ1Y3R1cmUgaGF2ZSBubw0KPiA+Pj4+Pj4+Pj4+Pj4gbmVl ZCB0byBiZSBleHBvc2VkIHRvIHRoZSB1c2VyLg0KPiA+Pj4+Pj4+Pj4+Pj4gSGlkZSB0aGUgdW5u ZWVkZWQgZXhwb3N1cmUgb2Ygc3RydWN0dXJlIGZpZWxkcyBmb3IgYmV0dGVyDQo+ID4+Pj4+Pj4+ Pj4+PiBBQkkgbWFpbnRhaW5hYmlsaXR5Lg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ IFN1Z2dlc3RlZC1ieTogRGF2aWQgTWFyY2hhbmQNCj4gPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5j b20+DQo+ID4+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBSdWlmZW5nIFdhbmcgPHJ1aWZlbmcu d2FuZ0Bhcm0uY29tPg0KPiA+Pj4+Pj4+Pj4+Pj4gUmV2aWV3ZWQtYnk6IFBoaWwgWWFuZyA8cGhp bC55YW5nQGFybS5jb20+DQo+ID4+Pj4+Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4+Pj4+IMKgwqAg bGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jIHwgMTUyDQo+ID4+Pj4+Pj4+Pj4+PiArKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQ0KPiA+Pj4+Pj4+Pj4+IC0NCj4gPj4+Pj4+Pj4+ Pj4+IMKgwqAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oIHzCoMKgIDcgLS0NCj4gPj4+Pj4+Pj4+ Pj4+IMKgwqAgMiBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMo LSkNCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IDxzbmlwPg0KPiA+Pj4+Pj4+Pj4+Pj4g ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+Pj4+Pj4+Pj4+Pj4gYi9s aWIvbGlicnRlX2xwbS9ydGVfbHBtLmggaW5kZXggMDNkYTJkMzdlLi4xMTJkOTZmMzcNCj4gPj4+ Pj4+Pj4+Pj4+IDEwMDY0NA0KPiA+Pj4+Pj4+Pj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRl X2xwbS5oDQo+ID4+Pj4+Pj4+Pj4+PiArKysgYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmgNCj4g Pj4+Pj4+Pj4+Pj4+IEBAIC0xMzIsMTcgKzEzMiwxMCBAQCBzdHJ1Y3QgcnRlX2xwbV9ydWxlX2lu Zm8gew0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IMKgwqAgLyoqIEBpbnRlcm5hbCBM UE0gc3RydWN0dXJlLiAqLw0KPiA+Pj4+Pj4+Pj4+Pj4gwqDCoCBzdHJ1Y3QgcnRlX2xwbSB7DQo+ ID4+Pj4+Pj4+Pj4+PiAtwqDCoMKgIC8qIExQTSBtZXRhZGF0YS4gKi8NCj4gPj4+Pj4+Pj4+Pj4+ IC3CoMKgwqAgY2hhciBuYW1lW1JURV9MUE1fTkFNRVNJWkVdO8KgwqDCoMKgwqDCoMKgIC8qKjwg TmFtZSBvZiB0aGUNCj4gPj4+Pj4+Pj4+Pj4+IGxwbS4gKi8NCj4gPj4+Pj4+Pj4+Pj4+IC3CoMKg wqAgdWludDMyX3QgbWF4X3J1bGVzOyAvKio8IE1heC4gYmFsYW5jZWQgcnVsZXMgcGVyIGxwbS4N Cj4gPj4+Pj4+Pj4+Pj4+ICovDQo+ID4+Pj4+Pj4+Pj4+PiAtwqDCoMKgIHVpbnQzMl90IG51bWJl cl90Ymw4czsgLyoqPCBOdW1iZXIgb2YgdGJsOHMuICovDQo+ID4+Pj4+Pj4+Pj4+PiAtwqDCoMKg IHN0cnVjdCBydGVfbHBtX3J1bGVfaW5mbw0KPiBydWxlX2luZm9bUlRFX0xQTV9NQVhfREVQVEhd Ow0KPiA+Pj4+Pj4+Pj4+Pj4gLyoqPA0KPiA+Pj4+Pj4+Pj4+IFJ1bGUgaW5mbyB0YWJsZS4gKi8N Cj4gPj4+Pj4+Pj4+Pj4+IC0NCj4gPj4+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoCAvKiBMUE0gVGFi bGVzLiAqLw0KPiA+Pj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfbHBtX3RibF9l bnRyeQ0KPiA+Pj4+Pj4+Pj4+Pj4gdGJsMjRbUlRFX0xQTV9UQkwyNF9OVU1fRU5UUklFU10NCj4g Pj4+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19ydGVfY2FjaGVfYWxp Z25lZDsgLyoqPCBMUE0gdGJsMjQgdGFibGUuDQo+ID4+Pj4+Pj4+Pj4+PiAqLw0KPiA+Pj4+Pj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsODsgLyoqPCBM UE0gdGJsOCB0YWJsZS4NCj4gPj4+Pj4+Pj4+Pj4+ICovDQo+ID4+Pj4+Pj4+Pj4+PiAtwqDCoMKg IHN0cnVjdCBydGVfbHBtX3J1bGUgKnJ1bGVzX3RibDsgLyoqPCBMUE0gcnVsZXMuICovDQo+ID4+ Pj4+Pj4+Pj4+PiDCoMKgIH07DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+PiBTaW5jZSB0aGlzIGNoYW5nZXMgdGhlIEFCSSwgZG9lcyBpdCBub3QgbmVlZCBhZHZh bmNlIG5vdGljZT8NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gW0Jhc2ljYWxseSB0aGUg cmV0dXJuIHZhbHVlIHBvaW50IGZyb20gcnRlX2xwbV9jcmVhdGUoKSB3aWxsDQo+ID4+Pj4+Pj4+ Pj4+IGJlIGRpZmZlcmVudCwgYW5kIHRoYXQgcmV0dXJuIHZhbHVlIGNvdWxkIGJlIHVzZWQgYnkN Cj4gPj4+Pj4+Pj4+Pj4gcnRlX2xwbV9sb29rdXAoKQ0KPiA+Pj4+Pj4+Pj4+PiB3aGljaCBhcyBh IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gd2lsbCBiZSBpbiB0aGUgYmluYXJ5IGFuZA0KPiA+Pj4+ Pj4+Pj4+PiB1c2luZyB0aGUgb2xkIHN0cnVjdHVyZSBvZmZzZXRzLl0NCj4gPj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IEFncmVlIHdpdGggQnJ1Y2UsIHRoaXMgcGF0Y2gg YnJlYWtzIEFCSSwgc28gaXQgY2FuJ3QgYmUNCj4gPj4+Pj4+Pj4+PiBhY2NlcHRlZCB3aXRob3V0 IHByaW9yIG5vdGljZS4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gU28gaWYgdGhlIGNoYW5n ZSB3YW50cyB0byBoYXBwZW4gaW4gMjAuMTEsIGEgZGVwcmVjYXRpb24NCj4gPj4+Pj4+Pj4+IG5v dGljZSBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIGluIDIwLjA4Lg0KPiA+Pj4+Pj4+Pj4gSSBzaG91 bGQgaGF2ZSBhZGRlZCBhIGRlcHJlY2F0aW9uIG5vdGljZS4gVGhpcyBjaGFuZ2Ugd2lsbA0KPiA+ Pj4+Pj4+Pj4gaGF2ZSB0byB3YWl0IGZvcg0KPiA+Pj4+Pj4+PiBuZXh0IEFCSSB1cGRhdGUgd2lu ZG93Lg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gRG8geW91IHBsYW4gdG8g ZXh0ZW5kPyBvciBpcyB0aGlzIGp1c3Qgc3BlY3VsYXRpdmU/DQo+ID4+Pj4+Pj4gSXQgaXMgc3Bl Y3VsYXRpdmUuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gQSBxdWljayBzY2Fu IGFuZCB0aGVyZSBzZWVtcyB0byBiZSBzZXZlcmFsIHByb2plY3RzIHVzaW5nIHNvbWUNCj4gPj4+ Pj4+Pj4gb2YgdGhlc2UNCj4gPj4+Pj4+Pj4gbWVtYmVycyB0aGF0IHlvdSBhcmUgcHJvcG9zaW5n IHRvIGhpZGUuIGUuZy4gQkVTUywgTkZGLUdvLCBEUFZTLA0KPiA+Pj4+Pj4+PiBnYXRla2VlcGVy LiBJIGRpZG4ndCBsb29rIGF0IHRoZSBkZXRhaWxzIHRvIHNlZSBpZiB0aGV5IGFyZQ0KPiA+Pj4+ Pj4+PiByZWFsbHkgbmVlZGVkLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBOb3Qgc3VyZSBob3cg bXVjaCBub3RpY2UgdGhleSdkIG5lZWQgb3IgaWYgdGhleSB1cGRhdGUgRFBESw0KPiA+Pj4+Pj4+ PiBtdWNoLCBidXQgSQ0KPiA+Pj4+Pj4+PiB0aGluayBpdCdzIHdvcnRoIGhhdmluZyBhIGNsb3Nl ciBsb29rIGFzIHRvIGhvdyB0aGV5IHVzZSBscG0gYW5kDQo+ID4+Pj4+Pj4+IHdoYXQgdGhlDQo+ ID4+Pj4+Pj4+IGltcGFjdCB0byB0aGVtIGlzLg0KPiA+Pj4+Pj4+IENoZWNrZWQgdGhlIHByb2pl Y3RzIGxpc3RlZCBhYm92ZS4gQkVTUywgTkZGLUdvIGFuZCBEUFZTIGRvbid0DQo+ID4+Pj4+Pj4g YWNjZXNzIHRoZSBtZW1iZXJzIHRvIGJlIGhpZGVkLg0KPiA+Pj4+Pj4+IFRoZXkgd2lsbCBub3Qg YmUgaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4NCj4gPj4+Pj4+PiBCdXQgR2F0ZWtlZXBlciBhY2Nl c3NlcyB0aGUgcnRlX2xwbSBpbnRlcm5hbCBtZW1iZXJzIHRoYXQgdG8gYmUNCj4gPj4+Pj4+PiBo aWRlZC4gSXRzIGNvbXBpbGF0aW9uIHdpbGwgYmUgYnJva2VuIHdpdGggdGhpcyBwYXRjaC4NCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gVGhhbmtzLg0KPiA+Pj4+Pj4+Pj4gUnVp ZmVuZw0KPiA+Pj4+Pj4+Pj4+Pj4gwqDCoCAvKiogTFBNIFJDVSBRU0JSIGNvbmZpZ3VyYXRpb24g c3RydWN0dXJlLiAqLw0KPiA+Pj4+Pj4+Pj4+Pj4gLS0NCj4gPj4+Pj4+Pj4+Pj4+IDIuMTcuMQ0K PiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IC0tDQo+ID4+Pj4+Pj4+ Pj4gUmVnYXJkcywNCj4gPj4+Pj4+Pj4+PiBWbGFkaW1pcg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0K PiA+Pj4+DQo+ID4+DQo+IA0KPiAtLQ0KPiBSZWdhcmRzLA0KPiBWbGFkaW1pcg0K