From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.1055.1614813737406928091 for ; Wed, 03 Mar 2021 15:22:17 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=UGBs/JFF; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: guo.dong@intel.com) IronPort-SDR: cpNEB6scu8eB1PesiFpuJTMjTUiE5YgqtRn3315VsU8YTDodDs2/NCPLRbI4BbLbN3OjHuy/M9 P6dNGFHYioTw== X-IronPort-AV: E=McAfee;i="6000,8403,9912"; a="186645082" X-IronPort-AV: E=Sophos;i="5.81,220,1610438400"; d="scan'208";a="186645082" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2021 15:22:13 -0800 IronPort-SDR: mKqJHpGtvJJ2mBpjYHJ2dJv3SF3xjUscRx2aT5zo9kbKNBPdF1/7Q7vABSaTsD2IWcR7AbVESi o6yKbIHQaUEw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,220,1610438400"; d="scan'208";a="445470921" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 03 Mar 2021 15:22:13 -0800 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 3 Mar 2021 15:22:12 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 3 Mar 2021 15:22:12 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.171) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Wed, 3 Mar 2021 15:22:12 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ns+GGX2bYEGRpQEwQpywJL5IsyT70WM3BzklO7b5zQg+BQrXn1VFKePB6Ucc+SenDFzUGoW9mOa2fow71pquE78Jh664YNouyi4qur1Viz/jC7W8qlUiRkULeF9JSgRSoq5HY7T8/7gqzPFjrQMYgW3mwxL9VtQF5+tb2k6u11bCj1E40vSSobVtzJChw+1lJC7DpHd7BDGlTpuLVtQ3urdlswl7w2BPKxgeTHVaxZfpouoQX7Xj9wGHwVDwHnW3hdDYiP6brCaCHc+u0IRikGDAqrMkWupJu2QGwmfgJt+Kvt9+I7w19aIBUQRc5f621BTZPTDqB8N1brOprIERJA== 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=EnTt+5e5iV+Zk6EfoSSQQ5PKWlgIDbKAFYoGsqeTR+w=; b=act8HLYHVrY9dTgVwsFlplaHFf4XWfTIDSkQf1o7h3tEg+aX3LkPUM4CDloFrF4URwYxdcnNEsxFzKU3zMMuJ2SBtoYwxhoDGKNs3CdFeRSYJ2IB4PlPlFtiO2/TgciDCjc3wj3PzZ1hUhdZEiMvFaCsZhc8U9afwXGgg3GYWK4Je8sdL731SfYyqsK1ZWX+WF2j4mwppzI5jgm5GWYyfd+XT+G/kdyJUwKr9OMEkLJcc0bclebNEomEPuVvf2lWLJHuCYeIUAdUnJSW6Dxq2/Nk0TEkBG7H8Ku8Tfy7RDljKKdaYDaMCwxIOU8f6md2UPb00AKemhpe0Py9W61ugg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EnTt+5e5iV+Zk6EfoSSQQ5PKWlgIDbKAFYoGsqeTR+w=; b=UGBs/JFFQiUZGsGPNIQikej66kbjnhVdKJgTbj6Yb6TNQELZsJgvVpncEruXRtuialkpreuPDDeyXSZQB9rgqoZXgEGkmkttXgprC1yc0XuMBGoT6OL0JjlUbOjwh/dCuyDeKT/AkaE/TWpUNl2cILDqFlUpF6hA1cII47bsktA= Received: from BYAPR11MB3622.namprd11.prod.outlook.com (2603:10b6:a03:fe::30) by SJ0PR11MB4864.namprd11.prod.outlook.com (2603:10b6:a03:2d4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17; Wed, 3 Mar 2021 23:22:11 +0000 Received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::9d0a:3b97:a353:663d]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::9d0a:3b97:a353:663d%3]) with mapi id 15.20.3890.029; Wed, 3 Mar 2021 23:22:11 +0000 From: "Guo Dong" To: Michael Kubacki , "devel@edk2.groups.io" , "Ni, Ray" CC: "Chaganty, Rangasai V" , "Chiu, Chasel" , "Desimone, Nathaniel L" , "Luo, Heng" , "Agyeman, Prince" , "gaoliming@byosoft.com.cn" , "Dong, Eric" Subject: Re: [edk2-devel] [edk2-platforms][RFC] SpiFlashCommonLib Refactor Thread-Topic: [edk2-devel] [edk2-platforms][RFC] SpiFlashCommonLib Refactor Thread-Index: AQHXBMgIPP87jNjwdkOy46lNqOXX/Kpu1iOwgAC+8gCAAF36gIAC8AqggAATlQCAAAKskA== Date: Wed, 3 Mar 2021 23:22:11 +0000 Message-ID: References: <2a2a1cc0-3de9-fbd5-1bfb-eb5dbc9d1bc6@linux.microsoft.com> <9a764723-06b6-555a-dfb8-6dee940e7276@linux.microsoft.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: linux.microsoft.com; dkim=none (message not signed) header.d=none;linux.microsoft.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [68.2.51.172] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bfb032af-dba3-4c49-cebf-08d8de9b2c34 x-ms-traffictypediagnostic: SJ0PR11MB4864: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VTcHs5nA6vknJXvlOF8T8Mn232YsYJvW0udH8RKwheYOmMQSWjWxn43Gz/ZGaDqmCNhVIzAaR06ksYgMWww58RLCH1iA2xRjfRtbU+n7PhrNXznY8wkOXSwHo2jTTt7xkS7zJT4xcYGR0pDz/lNEHfqtlhxjXd6n9rMIfzrVOR3/HQB/xa0ahokTytpt+PTfhS7Y0+zYWNWYfPpeB4O0RvrxXAhmnL79e9B0OmQ2WG0MeaqT4pZoCVXmusrk1uaVDh+jOlfgaux4Asw0bvXCRBbb4Ya6akz7pQc16n1pj2olX2/YlTqA4Y1aT/V2rtqpker7A8IaCCEF7RLWqCcCXMwMCiYomxn4xb1XiJhgmixMKO31fKo9d7SKUYWT9cnpXg7cE3OQLmYZWLMLtxofukYcnoynQkXE+5S6r7WOpeYESW7EUEx1ak+1FGxLbihHgzLzHRnXAfWtd47mzZBqnCkkSQwFJI16fzBFtrO2SEmAGePRFICMCdc37i22lnZDhnBnTPnSx+MO7dA2tU1iKzi9zc3iIO2+5oKywHFP1PYQk9s972YSuFe48NuTP/TE77aYoi+KMKvkDmY+UmmY6jkonbE8pOZNRmlyES7FvR8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(39860400002)(396003)(376002)(136003)(346002)(55016002)(6636002)(83380400001)(478600001)(2906002)(76116006)(66946007)(66556008)(66476007)(52536014)(66446008)(53546011)(33656002)(71200400001)(110136005)(64756008)(7696005)(6506007)(54906003)(316002)(8936002)(8676002)(966005)(86362001)(9686003)(5660300002)(107886003)(186003)(4326008)(26005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?V0REVVpkZ0UrMGZGT0owZnZNQWRzenhIZ1hqR2Nsa3p6cUVJSldvbWpmbzNS?= =?utf-8?B?Wmt5aXhUN3MzMDhiQU9mZ25UZ1UvbERLdkVjTmI0dEh5SFpGMmN4ZTdOcWhz?= =?utf-8?B?a0hWTVJlbTI5UEUyS1NPU3dERlF0Z2cySW1zUWp0cE5nVzN2NUh2V3JxMEh5?= =?utf-8?B?VmhucFVCMnh2MmxUS2syU1c5U0lwWDk1c3RJbEU5ZlljTFQ1TjJBM3F4bEZW?= =?utf-8?B?WTJZdGVKdDBwV3VnVlhOY0xMSE5rME55bWFsSVFCSlVtcUZiYUhqa0NVc0xV?= =?utf-8?B?Zk1yRU5nU1NuNnhiMDVOTVBEbTJKWXoyaU9GMHRGU21YS3h0UWRMREFlTXJj?= =?utf-8?B?OTBDMEpvSld3NmpFOFE5YU9oME9NN05NOWwwMnU4L290NjkvY1MvZGpLQkNC?= =?utf-8?B?ZlBPaFZCcDhBMENybURySSs3eW1Ia25UN1pqS3lkQnpTZGpoWUI0SlBGZVZ3?= =?utf-8?B?RndFalMvdmQ4N1RteERJSlRIZGMyMzlPV2loWDNPNHJZMkZPU0lwWmo4VGN0?= =?utf-8?B?S0FCRmw2SzRXNVdBMFp5bTlkcU50Zm1IbWJyVDlmWWk2aFd0Q2x3RGRrcFRV?= =?utf-8?B?SXhNK3d3cnViY29kNy9DQTMrODUyYTJLd3FqK0t5eVRkNzM0WFBPblRpakNE?= =?utf-8?B?UFE5dWxwY0pxY0VIOFlzTVVuK2Y0cnRWeVBLMHFSa1hMYzF3RnF3bngzbXFi?= =?utf-8?B?NnFGYjdxQzlYQW8yVDBTbUpWVkRPOWZjQXNsenlTcHA5SzA1THFhTGZ0Mm4r?= =?utf-8?B?SC9YbTFkdmlDQUU1YlcxSUdzN2dIRjBpUVRNTHFLajZvaXhZMHNJM1h2SllR?= =?utf-8?B?dTVUUDJzMVVpcWNPVWJDWVdpY3Bnak1JTTlUeUVpZVR5ZEhuaUZBUDFvUnEx?= =?utf-8?B?WWRKczg5WHVDckxSbzVCdXhGNm82SVZJSWNFM3ZWYzVVOUlvZ294MTNLT1Vz?= =?utf-8?B?cys4TFpKd2NMQXpPMWlZdEVJdnRERkhmVHg5bE1JRjR3UWJzUWozalhuRGhS?= =?utf-8?B?UkNqTE9RTFFIY1FTQm55TEdveFlmeU9meS80RzYrb0VtaEV2dGtLb3NMeVVH?= =?utf-8?B?YUF5WkdzUUg2STlOeUVhVXhTM0RGcGVlczlETlpvSGJRTm5qRW1SOEM4OHJC?= =?utf-8?B?NFRHQ2Jnazh5Z0FLbHVrS0pET3lzY3N3M3cxS3VNTmpLM1o1Tk9GQU9qNDFL?= =?utf-8?B?RGppYmlDOWpWcWl3VWVKRVp0LzNNMmZVN1ZHb3RHdUJQcVJ3ZFRuN3hXbEtW?= =?utf-8?B?aVZEZ1NBWlVFNm95RjBUOGc3d1V5WGkrMUk0NGZBTTYwQ2EzNEJwbHVWTy9R?= =?utf-8?B?MnhmdWdSekRVQTdQbVAyRC9VRG5Mb05nYWpRSnpMSXAydEtWNVRBNUFsaGNx?= =?utf-8?B?dnp1bWQ5NzI2N1hOS2owcHhraEFVWHQrd25xWmkvVllzcitTMzJTemswZmw2?= =?utf-8?B?UndyVnpJeDc4L1NrMWp4b3RIcWl5VXI2dDVUMDNuVU04Nit6WXJSeWtpWTNN?= =?utf-8?B?STdQRFpkYXcyWExKMWZ3YjF5UGVySTFJeTRZaTlZWURWeXY1QlpXaWpuQ3hH?= =?utf-8?B?WkRadUpMS0FJcjBvWGI2UElZVXFrZEQzM3loLzZMQWxMQ1F4SmVZN1loZWZj?= =?utf-8?B?VTYrL0FaT1dyLzVJQ3NBN1dJZmlFUWE1Q1NqY01ZSEdFd3FhdEw5dmtkYlRH?= =?utf-8?B?L2tvVzU1NVVUZWhNY1RxaTJpM3U4SFJIWGIvOHVDNGhINGl0VWltemZOZ2wr?= =?utf-8?Q?77U72KDO3/sGymG+to=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfb032af-dba3-4c49-cebf-08d8de9b2c34 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Mar 2021 23:22:11.4171 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Cv4tUGh3Z1N4QUunTDkbA/j9KElCNzO+OLOWS23SkdemClENTRZ+dzm9bzkHGxe0pWceAnYX2SilNzRobUk+tw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4864 Return-Path: guo.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpIaSBNaWNoYWVsLA0KDQpJIGRpZG4ndCBpbml0aWF0ZSBhbnkgZGlzY3Vzc2lvbiBvbiB0aGlz IHlldC4gQW5kIEkgYW0gbm90IHN1cmUgaWYgdGhpcyBpZGVhIGNvdWxkIGJlIGFjY2VwdGVkLiAN CkZyb20gbXkgdmlldyBwb2ludCwgSW50ZWxTaWxpY29uUGtnIGlzIGEgcHJvcGVyIHBsYWNlIGZv ciBTUEkgZmxhc2ggbGlicmFyeS4NCkJ1dCBVZWZpUGF5bG9hZFBrZyBjb3VsZCBub3QgdXNlIHRo YXQgcGFja2FnZSBzaW5jZSBpdCBpcyBpbiBhbm90aGVyIHJlcG8uDQpTaW5jZSB0aGVzZSBkZXBl bmRlbmNpZXMsIHlvdSBjb3VsZCBnbyBhIGhlYWQgdG8gcHV0IGl0IGludG8gSW50ZWxTaWxpY29u UGtnLg0KDQpPbmNlIEkgY2xlYW4gdXAgbXkgYnJhbmNoIChleHBlY3RlZCBjb21wbGV0ZSBuZXh0 IHdlZWspLCBJIGNvdWxkIHNlbmQgbXkgcGF0Y2ggZm9yIHlvdXINCnJlZmVyZW5jZSBzbyB0aGF0 IHdlIGNvdWxkIGF0IGxlYXN0IHNoYXJlIGNvZGUgaWYgcG9zc2libGUgdG8gcmVkdWNlIHRoZSBj b2RlIG1haW50ZW5hbmNlLg0KDQpUaGFua3MsDQpHdW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBNaWNoYWVsIEt1YmFja2kgPG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29m dC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggMywgMjAyMSAzOjU0IFBNDQo+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgRG9uZywgR3VvIDxndW8uZG9uZ0BpbnRlbC5jb20+OyBOaSwg UmF5DQo+IDxyYXkubmlAaW50ZWwuY29tPg0KPiBDYzogQ2hhZ2FudHksIFJhbmdhc2FpIFYgPHJh bmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgQ2hpdSwgQ2hhc2VsDQo+IDxjaGFzZWwuY2hp dUBpbnRlbC5jb20+OyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPG5hdGhhbmllbC5sLmRlc2lt b25lQGludGVsLmNvbT47IEx1bywgSGVuZyA8aGVuZy5sdW9AaW50ZWwuY29tPjsNCj4gQWd5ZW1h biwgUHJpbmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBnYW9saW1pbmdAYnlvc29mdC5j b20uY247DQo+IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJl OiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZvcm1zXVtSRkNdIFNwaUZsYXNoQ29tbW9uTGliDQo+ IFJlZmFjdG9yDQo+IA0KPiBIaSBHdW8sDQo+IA0KPiBUaGF0J3MgZ29vZCB0byBoZWFyLg0KPiAN Cj4gRG9lcyB0aGlzIG5ldyAiY29tbW9uIFNQSSBmbGFzaCBsaWJyYXJ5IiBhbmQgIlNNTSBGVkIg ZHJpdmVyIiBoYXZlDQo+IGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSB0byB0aGUgaW5zdGFuY2Vz IGJlaW5nIGRpc2N1c3NlZCBoZXJlPw0KPiANCj4gRm9yIHRoZSBwbGF0Zm9ybXMgSSBoYXZlIGlu IG1pbmQsIEludGVsU2lsaWNvblBrZyBpcyBhbiBhbGxvd2VkDQo+IGRlcGVuZGVuY3kgd2hlcmVh cyBVZWZpUGF5bG9hZFBrZyBpcyBub3QuDQo+IA0KPiBJIGhhdmUgYmVndW4gdGhlIHdvcmsgKGF0 IGxvdyBwcmlvcml0eSkgZGlzY3Vzc2VkIGVhcmxpZXIgaW4gdGhlIHRocmVhZCwNCj4gcGxlYXNl IGxldCBtZSBrbm93IGlmIEkgc2hvdWxkIGNvbnRpbnVlLg0KPiANCj4gVGhhbmtzLA0KPiBNaWNo YWVsDQo+IA0KPiBPbiAzLzMvMjAyMSAxOjU4IFBNLCBHdW8gRG9uZyB3cm90ZToNCj4gPg0KPiA+ IEhpIE1pY2hhZWwsDQo+ID4NCj4gPiBXZSBoYWQgY3JlYXRlZCBhIGNvbW1vbiBTUEkgZmxhc2gg bGlicmFyeSBhbmQgYSBjb21tb24gU01NIEZWQiBkcml2ZXINCj4gZm9yIGFsbCB0aGUgcGxhdGZv cm1zIEkgaGF2ZSAoaW5jbHVkaW5nIEFwb2xsbyBsYWtlLCBDb2ZmZWUgbGFrZSwgS2FieSBMYWtl LA0KPiBDb21ldCBMYWtlLCBUaWdlciBMYWtlLCBFbGtoYXJ0IExha2UsIGV0Yy4pLiAgd2UgcGxh biB0byB1cHN0cmVhbSB0aGlzIGZvciBVRUZJDQo+IFBheWxvYWQuDQo+ID4gSWYgdGhpcyBvbmUg Y291bGQgYmUgdXBzdHJlYW0gdG8gVWVmaVBheWxvYWRQa2csIHRoZW4gZWFjaCBwbGF0Zm9ybSBj b3VsZA0KPiBsZXZlcmFnZSBpdC4NCj4gPg0KPiA+IEJUVywgdG9nZXRoZXIgd2l0aCB0aGlzLCB3 ZSBwbGFuIHRvIHVwc3RyZWFtIFNNTSBzdXBwb3J0LCBzZWN1cmUgYm9vdA0KPiBhbmQgbWVhc3Vy ZWQgYm9vdCBmb3IgVUVGSSBQYXlsb2FkLg0KPiA+IFNvIHdlIGNvdWxkIHVzZSBhIHNpbmdsZSBV RUZJIFBheWxvYWQgd2l0aCB0aGVzZSBhZHZhbmNlZCBmZWF0dXJlcyAgb24NCj4gZGlmZmVyZW50 IHBsYXRmb3Jtcy4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBHdW8NCj4gPg0KPiA+DQo+ID4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+DQo+ID4+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMSwgMjAyMSA1OjUyIFBNDQo+ID4+IFRv OiBNaWNoYWVsIEt1YmFja2kgPG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5jb20+Ow0KPiA+PiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogQ2hhZ2FudHksIFJhbmdhc2FpIFYgPHJhbmdh c2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgQ2hpdSwgQ2hhc2VsDQo+ID4+IDxjaGFzZWwuY2hp dUBpbnRlbC5jb20+OyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPj4gPG5hdGhhbmllbC5sLmRl c2ltb25lQGludGVsLmNvbT47IEx1bywgSGVuZyA8aGVuZy5sdW9AaW50ZWwuY29tPjsNCj4gPj4g QWd5ZW1hbiwgUHJpbmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+Ow0KPiBnYW9saW1pbmdA Ynlvc29mdC5jb20uY247DQo+ID4+IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBE b25nLCBHdW8gPGd1by5kb25nQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUkU6IFtlZGsyLWRl dmVsXSBbZWRrMi1wbGF0Zm9ybXNdW1JGQ10gU3BpRmxhc2hDb21tb25MaWINCj4gPj4gUmVmYWN0 b3INCj4gPj4NCj4gPj4gTWljaGFlbCwNCj4gPj4gSSBhbSBnb29kIHdpdGggdGhhdC4gSSBhbSBh bHNvIGN1cmlvdXMgaG93IHlvdSBtZXJnZSBhbGwgdGhlIGRpZmZlcmVudCBTUEkNCj4gPj4gZmxh c2ggaW1wbGVtZW50YXRpb24gaW50byBvbmUuDQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4gUmF5 DQo+ID4+DQo+ID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4gRnJvbTogTWlj aGFlbCBLdWJhY2tpIDxtaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29tPg0KPiA+Pj4gU2VudDog VHVlc2RheSwgTWFyY2ggMiwgMjAyMSAzOjE2IEFNDQo+ID4+PiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW87IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4+PiBDYzogQ2hhZ2FudHksIFJh bmdhc2FpIFYgPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgQ2hpdSwgQ2hhc2VsDQo+ ID4+IDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPj4+ IDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+OyBMdW8sIEhlbmcgPGhlbmcubHVvQGlu dGVsLmNvbT47DQo+ID4+IEFneWVtYW4sIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29t PjsNCj4gPj4+IGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbjsgRG9uZywgRXJpYyA8ZXJpYy5kb25n QGludGVsLmNvbT4NCj4gPj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZv cm1zXVtSRkNdIFNwaUZsYXNoQ29tbW9uTGliDQo+ID4+IFJlZmFjdG9yDQo+ID4+Pg0KPiA+Pj4g SGkgUmF5LA0KPiA+Pj4NCj4gPj4+IFRoYXQgc291bmRzIHJlYXNvbmFibGUgdG8gbWUuDQo+ID4+ Pg0KPiA+Pj4gSSB3YXMgYXR0ZW1wdGluZyB0byBwcmVzZXJ2ZSB0aGUgZGVzaWduIHRoYXQgaXNv bGF0ZXMgdGhlDQo+ID4+PiBzaWxpY29uLXNwZWNpZmljIGxvZ2ljIHRvIGEgbGlicmFyeSB2aWEg YW4gaW50ZXJmYWNlIHRvIGEgc2lsaWNvbg0KPiA+Pj4gcGFja2FnZS4gSG93ZXZlciwgdGhlIHJl YWwgYWJzdHJhY3Rpb24gaGVyZSBpcyB0aGUgZmlybXdhcmUgdm9sdW1lDQo+IGJsb2NrDQo+ID4+ PiBwcm90b2NvbCB3aGljaCBjb3VsZCBzaW1wbHkgYmUgcHJvZHVjZWQgYnkgYSBzaWxpY29uIGRy aXZlciB3aXRoIHRoZQ0KPiA+Pj4gc2VwYXJhdGlvbiBvZiBzdWNoIGxvZ2ljIHRvIGEgbGlicmFy eSBiZWluZyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YNCj4gPj4+IHRoZSBkcml2ZXIuDQo+ ID4+Pg0KPiA+Pj4gSW4gc3VtbWFyeSwgaGVyZSBpcyB0aGUgdXBkYXRlZCBwcm9wb3NhbDoNCj4g Pj4+DQo+ID4+PiAxLiBDb25zb2xpZGF0ZSB0aGUgbGlicmFyeSBpbnRlcmZhY2UgaW50byBhIHNp bmdsZSBoZWFkZXIgaW4NCj4gPj4+IEludGVsU2lsaWNvblBrZy4NCj4gPj4+DQo+ID4+PiAyLiBD b25zb2xpZGF0ZSB0aGUgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbnRvIGEgc2luZ2xlIGluc3Rh bmNlIGluDQo+ID4+PiBJbnRlbFNpbGljb25Qa2cuDQo+ID4+Pg0KPiA+Pj4gMy4gTW92ZSBTcGlG dmJTZXJ2aWNlU21tIG91dCBvZiBNaW5QbGF0Zm9ybVBrZyBpbnRvIEludGVsU2lsaWNvblBrZy4N Cj4gPj4+DQo+ID4+PiA0LiBBZGQgU3BpRnZiU2VydmljZVN0YW5kYWxvbmVNbSB0byBJbnRlbFNp bGljb25Qa2cgc2hhcmluZw0KPiA+Pj4gaW1wbGVtZW50YXRpb24gd2l0aCBTcGlGdmJTZXJ2aWNl U21tIHdoZXJlIGFwcHJvcHJpYXRlLg0KPiA+Pj4NCj4gPj4+IEludGVsIGJvYXJkIHBhY2thZ2Vz IHdvdWxkIHRoZW4gdXNlIHRoZSBTcGlGbGFzaENvbW1vbkxpYiBmcm9tDQo+ID4+PiBJbnRlbFNp bGljb25Qa2cgKGEgZ2VuZXJhdGlvbiBzcGVjaWZpYyBpbnN0YW5jZSBjb3VsZCBiZSBjcmVhdGVk IGlmDQo+ID4+PiBuZWVkZWQpIGFuZCB1c2UgdGhlIFNwaUZ2YlNlcnZpY2VYeXogZHJpdmVyIGZy b20gSW50ZWxTaWxpY29uUGtnLg0KPiA+Pj4NCj4gPj4+IFBsZWFzZSBsZXQgbWUga25vdyBpZiB0 aGlzIGlzIGFjY2VwdGFibGUgYW5kIEknZCBiZSBoYXBweSB0byBzZW5kIHRoZQ0KPiA+Pj4gcGF0 Y2hlcy4NCj4gPj4+DQo+ID4+PiBUaGFua3MsDQo+ID4+PiBNaWNoYWVsDQo+ID4+Pg0KPiA+Pj4g T24gMy8xLzIwMjEgMTowNyBBTSwgTmksIFJheSB3cm90ZToNCj4gPj4+PiBNaWNoYWVsLA0KPiA+ Pj4+IEkgYWdyZWUgd2l0aCB5b3VyIHRob3VnaHRzIHRvIGNvbnNvbGlkYXRlIHRoZSBsaWIgaGVh ZGVyIGFuZA0KPiA+PiBpbXBsZW1lbnRhdGlvbiB0byBJbnRlbFNpbGljb25Qa2cuDQo+ID4+Pj4g SSBkaWRuJ3QgcmVhZCB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4gQnV0IHRoZSBpbXBs ZW1lbnRhdGlvbg0KPiA+PiBjb25zb2xpZGF0aW9uIG1lYW5zIHlvdSBzZWUgYWxsIHRoZSBleGlz dGluZw0KPiA+Pj4gaW1wbGVtZW50YXRpb25zIGFyZSB0aGUgc2FtZS4gUmlnaHQ/DQo+ID4+Pj4N Cj4gPj4+PiBCdXQgd2h5IGRvbid0IHlvdSBwdXQgdGhlIGRyaXZlciBpbiBJbnRlbFNpbGljb25Q a2cgYXMgd2VsbD8gQ3JlYXRpbmcgYW4NCj4gPj4gYWR2YW5jZWQgZmVhdHVyZSBmb3IgdGhpcyBm dW5kYW1lbnRhbCBzZXJ2aWNlIHNlZW1zDQo+ID4+PiBvdmVyLWtpbGwuDQo+ID4+Pj4NCj4gPj4+ PiBUaGFua3MsDQo+ID4+Pj4gUmF5DQo+ID4+Pj4NCj4gPj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPj4+Pj4gRnJvbTogQ2hhZ2FudHksIFJhbmdhc2FpIFYgPHJhbmdhc2FpLnYu Y2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+Pj4+PiBTZW50OiBNb25kYXksIE1hcmNoIDEsIDIwMjEg NDo0NiBQTQ0KPiA+Pj4+PiBUbzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPj4+Pj4g U3ViamVjdDogUkU6IFtlZGsyLXBsYXRmb3Jtc11bUkZDXSBTcGlGbGFzaENvbW1vbkxpYiBSZWZh Y3Rvcg0KPiA+Pj4+Pg0KPiA+Pj4+PiBEaWQgeW91IGdldCBhIGNoYW5jZSB0byBsb29rIGludG8g dGhpcyA/DQo+ID4+Pj4+DQo+ID4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ Pj4+IEZyb206IE1pY2hhZWwgS3ViYWNraSA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4N Cj4gPj4+Pj4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMTYsIDIwMjEgNDo1OCBQTQ0KPiA+Pj4+ PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBD aGFnYW50eSwNCj4gPj4gUmFuZ2FzYWkgViA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+ OyBDaGl1LA0KPiA+Pj4gQ2hhc2VsDQo+ID4+Pj4+IDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBE ZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPj4gPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNv bT47IEx1bywgSGVuZyA8aGVuZy5sdW9AaW50ZWwuY29tPjsNCj4gPj4+Pj4gQWd5ZW1hbiwgUHJp bmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+Ow0KPiA+PiBnYW9saW1pbmdAYnlvc29mdC5j b20uY247IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4+Pj4+IFN1YmplY3Q6 IFtlZGsyLXBsYXRmb3Jtc11bUkZDXSBTcGlGbGFzaENvbW1vbkxpYiBSZWZhY3Rvcg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBIZWxsbywNCj4gPj4+Pj4NCj4gPj4+Pj4gSSdtIHBsYW5uaW5nIHRvIHN1Ym1p dCBzdXBwb3J0IGZvciBTdGFuZGFsb25lIE1NIGluDQo+ID4+IFNwaUZsYXNoQ29tbW9uTGliIHNv b24uIEN1cnJlbnRseSwgdGhlcmUncyBxdWl0ZSBhIGJpdCBvZiBkdXBsaWNhdGlvbg0KPiA+Pj4g d2l0aA0KPiA+Pj4+PiBTcGlGbGFzaENvbW1vbkxpYi4NCj4gPj4+Pj4NCj4gPj4+Pj4gSSB3b3Vs ZCBsaWtlIHRvIGhhdmUgdGhpcyBTdGFuZGFsb25lIE1NIHN1cHBvcnQgYmUgYXZhaWxhYmxlIGlu IGFzDQo+ID4+IGNvbnNpc3RlbnQgb2YgYSBsb2NhdGlvbiBhcyBwb3NzaWJsZSBzbyBJJ2QgbGlr ZSB0byBzZWUgaWYNCj4gPj4+IHRoZXJlIGlzDQo+ID4+Pj4+IGFueXRoaW5nIEkgY2FuIGRvIHRv IGhlbHAgY2xlYW4gdGhpcyB1cCBpbiB0aGUgZWFybHkgcGFydCBvZiB0aGUgcGF0Y2gNCj4gPj4g c2VyaWVzLg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgbGlicmFyeSBpbnRlcmZhY2Ug aXMgY3VycmVudGx5IGRlZmluZWQgaW4gdGhlIGZvbGxvd2luZyBoZWFkZXIgZmlsZXM6DQo+ID4+ Pj4+DQo+ID4+Pj4+IDEuDQo+ID4+IFBsYXRmb3JtXEludGVsXE1pblBsYXRmb3JtUGtnXEluY2x1 ZGVcTGlicmFyeVxTcGlGbGFzaENvbW1vbkxpYi5oDQo+ID4+Pj4+DQo+ID4+Pj4+IDIuIFNpbGlj b25cSW50ZWxcU2ltaWNzSWNoMTBQa2dcSW5jbHVkZVxMaWJyYXJ5XFNwaUZsYXNoQ29tbW9uTGli LmgNCj4gPj4+Pj4NCj4gPj4+Pj4gMy4NCj4gPj4NCj4gU2lsaWNvblxJbnRlbFxLYWJ5bGFrZVNp bGljb25Qa2dcUGNoXEluY2x1ZGVcTGlicmFyeVxTcGlGbGFzaENvbW1vbkxpYi5oDQo+ID4+Pj4+ DQo+ID4+Pj4+IDQuDQo+ID4+Pj4+DQo+ID4+DQo+IFNpbGljb25cSW50ZWxcQ29mZmVlbGFrZVNp bGljb25Qa2dcUGNoXEluY2x1ZGVcTGlicmFyeVxTcGlGbGFzaENvbW1vbkxpYi4NCj4gPj4gaA0K PiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJbnN0YW5jZXMgb2YgU21tU3BpRmxhc2hDb21tb25M aWIgaW1wbGVtZW50YXRpb24gZXhpc3QgaW4gYSBtaXgNCj4gb2YNCj4gPj4gcGxhdGZvcm0gYW5k IHNpbGljb24gcGFja2FnZXM6DQo+ID4+Pj4+DQo+ID4+Pj4+IDEuDQo+ID4+Pj4+DQo+ID4+DQo+ IFNpbGljb25cSW50ZWxcU2ltaWNzSWNoMTBQa2dcTGlicmFyeVxTbW1TcGlGbGFzaENvbW1vbkxp YlxTbW1TcGlGbGFzaEMNCj4gPj4gb21tb25MaWIuaW5mDQo+ID4+Pj4+DQo+ID4+Pj4+IDIuDQo+ ID4+Pj4+DQo+ID4+DQo+IFBsYXRmb3JtXEludGVsXFRpZ2VybGFrZU9wZW5Cb2FyZFBrZ1xMaWJy YXJ5XFNtbVNwaUZsYXNoQ29tbW9uTGliXFMNCj4gPj4gbW1TcGlGbGFzaENvbW1vbkxpYi5pbmYN Cj4gPj4+Pj4NCj4gPj4+Pj4gMy4NCj4gPj4+Pj4NCj4gPj4NCj4gU2lsaWNvblxJbnRlbFxLYWJ5 bGFrZVNpbGljb25Qa2dcUGNoXExpYnJhcnlcU21tU3BpRmxhc2hDb21tb25MaWJcU21tDQo+ID4+ IFNwaUZsYXNoQ29tbW9uTGliLmluZg0KPiA+Pj4+Pg0KPiA+Pj4+PiA0Lg0KPiA+Pj4+Pg0KPiA+ Pg0KPiBTaWxpY29uXEludGVsXENvZmZlZWxha2VTaWxpY29uUGtnXFBjaFxMaWJyYXJ5XFNtbVNw aUZsYXNoQ29tbW9uTGliXFNtDQo+ID4+IG1TcGlGbGFzaENvbW1vbkxpYi5pbmYNCj4gPj4+Pj4N Cj4gPj4+Pj4gNS4NCj4gPj4+Pj4NCj4gPj4NCj4gUGxhdGZvcm1cSW50ZWxcTWluUGxhdGZvcm1Q a2dcRmxhc2hcTGlicmFyeVxTcGlGbGFzaENvbW1vbkxpYk51bGxcU3BpRmxhDQo+ID4+IHNoQ29t bW9uTGliTnVsbC5pbmYNCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIGxpYnJhcnkgY2xh c3MgaXMgY3VycmVudGx5IGNvbnN1bWVkIGluIHRoZSBmb2xsb3dpbmcgSU5GczoNCj4gPj4+Pj4N Cj4gPj4+Pj4gMS4NCj4gPj4NCj4gUGxhdGZvcm1cSW50ZWxcTWluUGxhdGZvcm1Qa2dcRmxhc2hc U3BpRnZiU2VydmljZVxTcGlGdmJTZXJ2aWNlU21tLmluZg0KPiA+Pj4+Pg0KPiA+Pj4+PiAyLg0K PiA+Pj4+Pg0KPiA+Pg0KPiBQbGF0Zm9ybVxJbnRlbFxNaW5QbGF0Zm9ybVBrZ1xGbGFzaFxTcGlG dmJTZXJ2aWNlXFNwaUZ2YlNlcnZpY2VTdGFuZGFsb24NCj4gPj4gZU1tLmluZg0KPiA+Pj4+Pg0K PiA+Pj4+Pg0KPiA+Pj4+PiBNeSB1bmRlcnN0YW5kaW5nIGlzOg0KPiA+Pj4+Pg0KPiA+Pj4+PiAx LiBUaGUgaGVhZGVyIGZpbGUgaXMgZGVmaW5lZCBpbiBlYWNoIHNpbGljb24gcGFja2FnZSBiZWNh dXNlIHNpbGljb24NCj4gPj4gY2Fubm90IGRlcGVuZCB1cG9uIHBsYXRmb3JtIChpLmUuIHRoZSBN aW5QbGF0Zm9ybVBrZw0KPiA+Pj4+PiBoZWFkZXIpLg0KPiA+Pj4+Pg0KPiA+Pj4+PiAyLiBUaGUg aGVhZGVyIGlzIHByZXNlbnQgaW4gZWFjaCBzaWxpY29uIHBhY2thZ2UgYmVjYXVzZSB0aGUNCj4g Pj4gaW1wbGVtZW50YXRpb24gaXMgc2lsaWNvbi1zcGVjaWZpYyBhbmQgdGhlc2UgcGFja2FnZXMg Y2Fubm90DQo+ID4+Pj4+IGRlcGVuZCBvbiBvbmUgYW5vdGhlci4NCj4gPj4+Pj4NCj4gPj4+Pj4g My4gVGhlIGhlYWRlciBpcyBkZWZpbmVkIGluIE1pblBsYXRmb3JtUGtnIGJlY2F1c2UgTWluUGxh dGZvcm1Qa2cNCj4gPj4gc2hvdWxkIGJlIHNpbGljb24gdmVuZG9yIGFnbm9zdGljIChjYW5ub3Qg ZGVwZW5kIG9uIHRoZQ0KPiA+Pj4+PiBzaWxpY29uIHBhY2thZ2VzKS4NCj4gPj4+Pj4NCj4gPj4+ Pj4gNC4gVGhlIGhlYWRlciBpcyBuZWVkZWQgaW4gTWluUGxhdGZvcm1Qa2cgYmVjYXVzZSB0aGUN Cj4gU3BpRnZiU2VydmljZQ0KPiA+PiB0aGVyZSBkZXBlbmRzIG9uIFNQSSBmbGFzaCBvcGVyYXRp b25zIGltcGxlbWVudGVkIGluDQo+ID4+Pj4+IFNwaUZsYXNoQ29tbW9uTGliLg0KPiA+Pj4+Pg0K PiA+Pj4+Pg0KPiA+Pj4+PiBIZXJlJ3MgYW4gaW5pdGlhbCBwcm9wb3NhbDoNCj4gPj4+Pj4NCj4g Pj4+Pj4gMS4gQ29uc29saWRhdGUgdGhlIGxpYnJhcnkgaW50ZXJmYWNlIGludG8gYSBzaW5nbGUg aGVhZGVyLiBJbg0KPiA+Pj4+PiBJbnRlbFNpbGljb25Qa2c/DQo+ID4+Pj4+DQo+ID4+Pj4+IDIu IENvbnNvbGlkYXRlIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW50byBhIHNpbmdsZSBpbnN0YW5j ZS4gSW4NCj4gPj4+Pj4gSW50ZWxTaWxpY29uUGtnPw0KPiA+Pj4+Pg0KPiA+Pj4+PiAzLiBNb3Zl IFNwaUZ2YlNlcnZpY2VYeXogb3V0IG9mIE1pblBsYXRmb3JtUGtnLg0KPiA+Pj4+PiAgICAgICAz LmEuIE1ha2UgYSAiU1BJIGZsYXNoIiBmZWF0dXJlPw0KPiA+Pj4+PiAgICAgICAzLmIuIEFsbG93 IHRoZSBJbnRlbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZlYXR1cmUgdG8gZGVwZW5kIG9uDQo+ ID4+Pj4+IFNwaUZsYXNoQ29tbW9uTGliIGRlZmluZWQgaW4gSW50ZWxTaWxpY29uUGtnLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBJbnRlbCBib2FyZCBwYWNrYWdlcyBjb3VsZCB0aGVuIHVzZSB0aGUgU3Bp Rmxhc2hDb21tb25MaWIgZnJvbQ0KPiA+Pj4+PiBJbnRlbFNpbGljb25Qa2cgKGEgZ2VuZXJhdGlv biBzcGVjaWZpYyBpbnN0YW5jZSBjb3VsZCBiZSBjcmVhdGVkIGlmDQo+ID4+Pj4+IG5lZWRlZCkg YW5kIHVzZSB0aGUgU3BpRnZiU2VydmljZVh5eiBkcml2ZXIgZnJvbSB0aGUgIlNwaUZsYXNoIg0K PiA+PiBmZWF0dXJlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBMb29rIGZvcndhcmQgdG8geW91ciB0aG91 Z2h0cyBhbmQgZmVlZGJhY2suDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoYW5rcywNCj4gPj4+Pj4gTWlj aGFlbA0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPg0KPiA+DQo+ ID4gDQo+ID4NCj4gPg0K