From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web08.3177.1632368806567743657 for ; Wed, 22 Sep 2021 20:46:46 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=l8xvn8b9; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: zhichao.gao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10115"; a="221869645" X-IronPort-AV: E=Sophos;i="5.85,315,1624345200"; d="scan'208";a="221869645" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2021 20:46:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,315,1624345200"; d="scan'208";a="534076799" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga004.fm.intel.com with ESMTP; 22 Sep 2021 20:46:38 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 22 Sep 2021 20:46:38 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 22 Sep 2021 20:46:37 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 22 Sep 2021 20:46:37 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.175) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 22 Sep 2021 20:46:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bvPoiHr32Ujl+OIOsMLy37v1LIJFAmaJJl90GDZkkuxYjfFGcaFvHgtVH+IFqYCseyjaOo4zK2dLwVd9aP1DvPejwepve94d70FvpvhKKM8yDen7xbm2s95wgdP9l6wlCtuY0hOc7F6kHRk8HUHpXmJttym10zdJlZDMRqldRW8HN4MrQB8+EPpn0pup6uEEhccWtAA1wq94JdJQ7fPQsJNP81mk5Zzn9W+EkVJPmlUWU6QrMe1W4jdUaDCPza743jEwuIcHD5CiFDPMgqFy1vdzqwzkU5jvUl7OSwgjgOyw3aEz7pX75cGnmPQabzHYWSsmXkFqB52lRvjFHq3FLw== 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; bh=NImFUt76JiNhEpk6+E31jaYoqxJbf7bB4fSNTSYgZHE=; b=OuQl3ZnoUFMiYuhT5JDbzmODvpW3a3nmFifTSjREp1qf77ms79eWZ19dbvsEg2SbjwCBkfq6s1VO/IBDkNfr2GIeB6vQB91izeUtICzZ9UfGQXn8+jQL/7wE6Bx9nXzGOl8z1KR1tXu59vxyJpBNjNBc0Q0YTd8PC/kL3RR6zQGN41qi5WVOMYMueyx9pHaoaDsNxha0S4udGJNYbGbErGWdWyC9pKrQbFvY764xQVjH3dT/pmJMapLbR+T4k+sBJYadeow5wVmQIQBdNUd6EN/vk4F5AVCJiqEBcQa64hvtoljTC8m7vUOtR/Z1dixe6zo3iLoLqdAuIeA1wp7ydg== 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=NImFUt76JiNhEpk6+E31jaYoqxJbf7bB4fSNTSYgZHE=; b=l8xvn8b9uf6a5H30B+DWgCBQS/E1q2ID6ppkUxbrVrignRrd+yffikfzOILseg3BDd5boFiEAKW9NWr4ZE+lgyGmjpSyJjvN9AAHXsNqAEwLXz0CHvX2nLycys65drRTUi0asyADS9ArWF0/lYUY4EpB/U3xPwgof1Q+Rop0o/A= Received: from DM4PR11MB5277.namprd11.prod.outlook.com (2603:10b6:5:388::23) by DM6PR11MB3067.namprd11.prod.outlook.com (2603:10b6:5:6a::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.17; Thu, 23 Sep 2021 03:46:31 +0000 Received: from DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40]) by DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40%4]) with mapi id 15.20.4544.014; Thu, 23 Sep 2021 03:46:31 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , "Ni, Ray" CC: "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Topic: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Index: AQHXpUvsuh5reQxFl0O+Aioo+AtRhauveLWAgAAW4kCAAXPaAIAACY8A Date: Thu, 23 Sep 2021 03:46:31 +0000 Message-ID: References: <20210909072541.3069-1-zhichao.gao@intel.com> <00df01d7b027$05683ed0$1038bc70$@byosoft.com.cn> In-Reply-To: <00df01d7b027$05683ed0$1038bc70$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 057470df-1cda-4844-5f71-08d97e44bb4b x-ms-traffictypediagnostic: DM6PR11MB3067: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2043; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3VypO4GQK0IoXiJ9BO447hvB2jgrT4Gb1yIDfqSTaBXhmJttv+Esmg5LtnNzoAlmUcS2z6vZOmafNdG1h+GL/gDEKZ7nkb9dIrHmfPH1KAl5zuCekkWXIXBiMK1Mcxn66igUohEAW4kheFyJLqoajcsX9FEc2GXSPQjYb5ryQROrDk4aAvRbNUQDZXY+dC4a5HvE/KAQbV/2eb0a++WJpSBcxUYAyr0TRjsLpg6+J2y1GRJix9vNJEVkaAZKignXYUkKsaj61eVcCpNlBnzJMfcLMCXep55B57fFfMNvt+Pt7rLkH+r5yl6u0CTTKztLQpDQ7xSGJlQVrx9FSnbsQx2OGEKk5NV2DOIlqyf/WIQz1YWeCjJ8zniseu9SD7xpgPXdHPk80fFREOb/FDrkVl8/AnK35V53ei0PRb7iMG60NZiXDYFgVJGqaftdMorKX2uXBOMRJ1RLWf0hcZ81ceSiEjC0sjATjfPDKvJhofSi7tod4mZw3VNHWSjiHKohUrZ47Q97NTD7QbG1Eb/jibnxWW9T6POGfI42RokmHlPRfEGhAP+5loAUc0OqhxU2ZSm0ruwVyRVevpITiCED+TGyuSnBUGdQjraTLJsmZLTQpTBX5d64Vk2P5L7GpG9gLhbsHhZFyoaS2O4e7Er5ZOcYCCE5AdkJBukYLrBrYAmiiBOtastLeX73E+ftYxwHdafit9xJg/vmR78z/Y26POML985pj/wuseGGUgPmwX5WCbWq041r4Ln2pTz4E1kpv/N3YBGEZ8G8+v4HNWftVOZ/ry+jpX9eJpY1Ko+dPI94dZo9U9rr0FZmlsprXpsBye8LcYXZKWXROVPjQTVidg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5277.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66574015)(316002)(71200400001)(110136005)(76116006)(107886003)(83380400001)(66476007)(66946007)(26005)(38100700002)(64756008)(7696005)(55016002)(8676002)(8936002)(66446008)(66556008)(6506007)(186003)(86362001)(122000001)(4326008)(966005)(508600001)(33656002)(6636002)(53546011)(38070700005)(52536014)(9686003)(5660300002)(2906002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RU1BTGk0aDBlT3lQdzFmWllvbXk3eHZJZEZ1aWhzWVkzZGMxTERVWUpUVEFz?= =?utf-8?B?N241WFdtMndSYWxnMU56enppWHJOQ0Y5Z3pJTFN2dlR1Q1loR0dmSFlLbGVt?= =?utf-8?B?Nmx4NU1BUVBpdmtVc1lHQ21aTWcrS1JXYnlmSHZiRUptMlpib0VpK0JIQTU3?= =?utf-8?B?Y3U2L1Ziek9JMmMxV1NQMFhpQWQyU25rcFppOFFUa0xGSG1QamlEYmtvOUVY?= =?utf-8?B?Z3JkVFhtckJmbHVob1FCaVc5bStWK2p3NHRoVUZKTzN4YkpnU1preWZ6QWNG?= =?utf-8?B?alZMYitpSnFLd3MyYmpwQjFXM21UN0g0MTIva2VkYUNIN0RpekRDMHNBazZ4?= =?utf-8?B?V0xKMFprYzRrRkZ4RmJWVTlkMENrdmV1dlRZS0VXTUNxNm9teGhGa3lQN05S?= =?utf-8?B?OWVtS0tvMVdYU1ovVldodjJ5WHFwU1JIY01CbWVOZkpMV2VaTkpWbk1XRFNk?= =?utf-8?B?cGxsVXJEdit2ME9Fb3AxSklWS1dlTm9JdDV3aWhNaDJnMDc2WjI0STJMTURk?= =?utf-8?B?aVdiU3dGWXd1WG83NGlwNm52enlBMUVFYXA3d1Zub1k3djkwa25Bd0MzNkln?= =?utf-8?B?K3dTZlh2VHl3eVFKQVhSd0VQMk96Z1FYdkI2VVdtdXQwM2hMUlhuMys3VVRz?= =?utf-8?B?aHB0ME02blRWQWlDTk5FbkFmSHNHTS96bTIvSlJRTkE0OUg0Uys3NXJtRnF5?= =?utf-8?B?VVVMM09WMHZHbHRlallxR3d0Uml1bTVXUlovMHpQRWN1THV0YytDemZnK2VF?= =?utf-8?B?eDM0SURNUVB3MmlhYUMxOE92V1R3MFR2TnZXQjJWY2JXalR3REdCN0ZGY1Rp?= =?utf-8?B?Vy9SYnpOcy9SR3lXcnRzVENDS0ExRXhoU0F1UWFCOTFiWmRXb1dnejZHZlpp?= =?utf-8?B?Mm5ma2dlY0V3SUFQWGpXcFBRTHEzaUEzN21XWlY0T3FJRm1iaXFmUCtvbXor?= =?utf-8?B?RG1yK2U0VmgxcHJzNVhpRmJ0cWNBaUJyZWttTVV2UVRRK2N0QjE2ZHRidEM1?= =?utf-8?B?TlBrRk1uUVVod3puWWN0VEtYRnR3Z1NvU0JJTE1vSlhEWmsvekZpdklxZFJm?= =?utf-8?B?NVJDTHFZQldNUW0rMm84VnJQU0ZtVVJ3aXV1bFovUCtRVVhuRHIyVkZkWWxo?= =?utf-8?B?cmR6MkFsQ3JQeTVrSXFtWWRVeUJNaGdUa09wRFBMZmNiMGFQMjNGa3VhQjBu?= =?utf-8?B?STNiTzRnSDUrTzd1NllRSlpkSDU0MGNSZjEyMSt4c1lyTjJGTDVSUE9rQmt3?= =?utf-8?B?cjFaUWpScXkyN0R5N3VIZVM3VExOdWZsL0owK2ZtdWlkM25aSjNqSnFxblBr?= =?utf-8?B?bEZuSENBc2liRm43M3BWbTdxVlBkSEcvQ3Iwbnk3c2N2REhmdFdsZGdRSjNl?= =?utf-8?B?L2pucmNGS3lvQ1FJdlRaL0JaV2FmNGNmTHovMHZtQ3p6V0Y2dWRJWFRxekJO?= =?utf-8?B?ODVIelcxTjlOQzcrR2hqZ2ZZckN2NEhuVXA5WHNwY01BU1QyUEVWVFV1ZXp5?= =?utf-8?B?SFNrMEg3cXl3M21HMmFncitXVC9ub3YvSDB2Q3NuWjByN3BwdjdFd3dkaXB5?= =?utf-8?B?d1NsSVJac1lxSG00RnJTQ1BodXd1RkpGTyt4WWVCTkd1UzFYNHBxTEwzTkxn?= =?utf-8?B?Y3EvMWlGc1IzRGNuUmFyM2g0WDZIZ1cweG9SaDUyNzlQQ2xlRnlOUEZ3Q2dw?= =?utf-8?B?Q2tmNkNmSUVGSGpxaXc3UDdnTlAwbGRzajRQK0FnY1NwTWMxUzhaekVPYXZP?= =?utf-8?Q?9WiJkWA/zAYIz7UmqGiP1Um16z7iqZve9an/hla?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5277.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 057470df-1cda-4844-5f71-08d97e44bb4b X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2021 03:46:31.3476 (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: YERgWAHUOeVzBT7e8FePAkxsc0I1LNkjXyhXyFZMpyId3NSPzBozU7xBorAcWKgZycAL2yq97ka1EzmJfVr6IA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3067 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGltaW5nLA0KDQpZZXMuIEJlY2F1c2UgdGhlIGRlc2lnbiBvZiB0aGUgQk0gYXBwIGlzIG5v dCBhaW1lZCB0byBkaXNwbGF5IHRoZSBib290IG9wdGlvbiBvdmVyIG9uZSBsaW5lLiBBbmQgaXQg aXMgbm90IHVzaW5nIHRoZSBzZXR1cCBicm93c2VyIGVuZ2luZS4NClRoYXQgd291bGQgY2F1c2Ug dGhlIGRpZmZlcmVuY2UuDQpJZiB3ZSB3YW50IHRvIG1ha2UgdGhlbSBhbGlnbiwgdGhlcmUgYXJl IHR3byBvcHRpb25zOg0KMS4gQk0gYXBwIHRvIHVzZSB0aGUgc2V0dXAgYnJvd3NlciBlbmdpbmUN CjIuIGFkZCBzY3JvbGwgYmFyIGxvZ2ljIGZvciB0aGUgYm9vdCBpdGVtDQoNCkJvdGggYWJvdmUg Y2hhbmdlIGlzIG5vdCBzaW1wbGUgYW5kIG1heSBjYXVzZSBuZXcgaXNzdWVzLiBJdCB3b3VsZCBi ZSBhIG5ldyBkZXNpZ24gb3RoZXIgdGhhbiBhIGJ1ZyBmaXguDQoNCkFub3RoZXIgc29sdXRpb24g aXMgdGhlIHBhdGNoIFYxIHRvIGxpbWl0IHRoZSBib290IG9wdGlvbiBkZXNjcmlwdGlvbiB3aXRo aW4gNzIgY2hhcmFjdGVycy4gUmF5IHBvaW50ZWQgb3V0IGl0IGlzIG5vdCBhIGdvb2Qgc29sdXRp b24uDQoNCkJUVywgSSB3b3VsZCByZW1vdmUgdGhlIGNoYW5nZS1pZCBpbiBuZXh0IHBhdGNoLg0K DQpUaGFua3MsDQpaaGljaGFvDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYg T2YNCj4gZ2FvbGltaW5nDQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjEgMTA6 NTkgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBHYW8sIFpoaWNoYW8gPHpoaWNoYW8u Z2FvQGludGVsLmNvbT47IE5pLCBSYXkNCj4gPHJheS5uaUBpbnRlbC5jb20+DQo+IENjOiBXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDog5Zue5aSNOiBbZWRr Mi1kZXZlbF0gW1BBVENIIFYyXQ0KPiBNZGVNb2R1bGVQa2cvQm9vdE1hbmFnZXJNZW51QXBwOiBM aW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4gb25lIGxpbmUNCj4gDQo+IFpoaWNoYW86DQo+ICAg V2l0aCB0aGlzIGNoYW5nZSwgdGhlIHNhbWUgYm9vdCBvcHRpb24gd2lsbCBiZSBkaXNwbGF5ZWQg ZGlmZmVyZW50bHkgaW4NCj4gQm9vdE1hbmFnZXJBcHAgYW5kIEJvb3RNYW5hZ2VyIFBhZ2UuIElz IGl0IHRoZSBkZXNpZ25lZCBiZWhhdmlvcj8NCj4gDQo+ICAgQmVzaWRlcywgcGxlYXNlIHJlbW92 ZSBjaGFuZ2UtaWQgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UuDQo+IA0KPiBUaGFua3MNCj4gTGlt aW5nDQo+ID4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiA+IOWPkeS7tuS6ujogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiDku6PooaggR2FvLA0KPiBaaGljaGFv DQo+ID4g5Y+R6YCB5pe26Ze0OiAyMDIx5bm0OeaciDIy5pelIDEyOjUwDQo+ID4g5pS25Lu25Lq6 OiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IExpbWlu ZyBHYW8NCj4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+IOaKhOmAgTogV2FuZywg SmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4g5Li76aKYOiBSZTogW2VkazItZGV2 ZWxdIFtQQVRDSCBWMl0NCj4gTWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVudUFwcDoNCj4gPiBM aW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4gb25lIGxpbmUNCj4gPg0KPiA+IEhpIExpbWluZywN Cj4gPg0KPiA+IFRoZSBzb2x1dGlvbiBpcyBkaWZmZXJlbnQgd2l0aCB0aGUgZmlyc3QgdGltZSB3 ZSBkaXNjdXNzZWQgb24gdGhlDQo+IEJ1Z3ppbGxhLiBDYW4NCj4gPiB5b3UgcmV2aWV3IGlmIGl0 IGlzIE9LIHRvIHlvdT8NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBaaGljaGFvDQo+ID4NCj4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBOaSwgUmF5IDxyYXkubmlA aW50ZWwuY29tPg0KPiA+ID4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjIsIDIwMjEgMTE6 MjggQU0NCj4gPiA+IFRvOiBHYW8sIFpoaWNoYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0Bp bnRlbC5jb20+OyBMaW1pbmcgR2FvDQo+ID4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0K PiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCBWMl0gTWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVu dUFwcDogTGltaXQNCj4gPiA+IHN0cmluZyBkcmF3aW5nIHdpdGhpbiBvbmUgbGluZQ0KPiA+ID4N Cj4gPiA+IFJldmlld2VkLWJ5OiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPg0KPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEdhbywgWmhpY2hhbyA8 emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciA5 LCAyMDIxIDM6MjYgUE0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gQ2M6 IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+ID4g PGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ ID4gPiBTdWJqZWN0OiBbUEFUQ0ggVjJdIE1kZU1vZHVsZVBrZy9Cb290TWFuYWdlck1lbnVBcHA6 IExpbWl0DQo+IHN0cmluZw0KPiA+ID4gZHJhd2luZyB3aXRoaW4gb25lIGxpbmUNCj4gPiA+DQo+ ID4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MzU5MA0KPiA+ID4NCj4gPiA+IExpbWl0IHRoZSBkcmF3IGJveCBhbHdheXMgd2l0aGluIHRoZSBz Y3JlZW4ncyBjb2x1bW4gYW5kIHJvdy4NCj4gPiA+IExpbWl0IHRoZSBzdHJpbmcgZHJhd2luZyB3 aXRoaW4gb25lIGxpbmUuDQo+ID4gPg0KPiA+ID4gQ2hhbmdlLUlkOiBJYjdiZDYzY2IwN2IyMzg3 NWExZTRmMzdhZTgwYTQyMmUxZDVlZDU0Zg0KPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmou d2FuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuPg0KPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+IFNpZ25l ZC1vZmYtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4gPiAtLS0N Cj4gPiA+DQo+ID4gPiBWMjoNCj4gPiA+DQo+ID4gPiBEcm9wIHRoZSBjaGFuZ2UgaW4gVWVmaUJv b3RNYW5hZ2VyTGliIGluIFYxLg0KPiA+ID4NCj4gPiA+IEFkZCB0aGUgbGltaXRhdGlvbiBpbiBC b290TWFuYWdlck1lbnVBcHAgaW5zdGVhZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gIC4uLi9Cb290 TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFnZXJNZW51LmMgICAgICB8IDcyDQo+ID4gPiArKysrKysr KysrKysrKysrKystDQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4NCj4gYS9NZGVNb2R1 bGVQa2cvQXBwbGljYXRpb24vQm9vdE1hbmFnZXJNZW51QXBwL0Jvb3RNYW5hZ2VyTWVudS4NCj4g PiA+IGMNCj4gPiA+DQo+IGIvTWRlTW9kdWxlUGtnL0FwcGxpY2F0aW9uL0Jvb3RNYW5hZ2VyTWVu dUFwcC9Cb290TWFuYWdlck1lbnUuDQo+ID4gPiBjDQo+ID4gPiBpbmRleCA5ZTcyOTA3NGVjLi5k NGJkZWJhMDczIDEwMDY0NA0KPiA+ID4gLS0tDQo+ID4gPg0KPiBhL01kZU1vZHVsZVBrZy9BcHBs aWNhdGlvbi9Cb290TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFnZXJNZW51Lg0KPiA+ID4gYw0KPiA+ ID4gKysrDQo+ID4gPg0KPiBiL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Cb290TWFuYWdlck1l bnVBcHAvQm9vdE1hbmFnZXJNZW51Lg0KPiA+ID4gYw0KPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ ID4gPiAgLyoqIEBmaWxlDQo+ID4gPg0KPiA+ID4gICAgVGhlIGFwcGxpY2F0aW9uIHRvIHNob3cg dGhlIEJvb3QgTWFuYWdlciBNZW51Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gLUNvcHly aWdodCAoYykgMjAxMSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4g PiByZXNlcnZlZC48QlI+DQo+ID4gPg0KPiA+ID4gK0NvcHlyaWdodCAoYykgMjAxMSAtIDIwMjEs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ ID4NCj4gPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gICoqLw0KPiA+ID4NCj4gPiA+IEBAIC00NSw5ICs0 NSw1NiBAQCBQcmludFN0cmluZ0F0ICgNCj4gPiA+ICAgIElOIENIQVIxNiAgICAqU3RyaW5nDQo+ ID4gPg0KPiA+ID4gICAgKQ0KPiA+ID4NCj4gPiA+ICB7DQo+ID4gPg0KPiA+ID4gKyAgVUlOVE4g ICAgICAgICBTY3JlZW5XaWR0aDsNCj4gPiA+DQo+ID4gPiArICBVSU5UTiAgICAgICAgIFNjcmVl blJvd3M7DQo+ID4gPg0KPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAqVHVybmNhdGVTdHJpbmc7DQo+ ID4gPg0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQo+ID4gPg0KPiA+ID4gKyAgVUlO VE4gICAgICAgICBTaG93aW5nTGVuZ3RoOw0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gICAg Z1NULT5Db25PdXQtPlNldEN1cnNvclBvc2l0aW9uIChnU1QtPkNvbk91dCwgQ29sdW1uLCBSb3cp Ow0KPiA+ID4NCj4gPiA+IC0gIHJldHVybiBQcmludCAoTCIlcyIsIFN0cmluZyk7DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIGdTVC0+Q29uT3V0LT5RdWVyeU1vZGUgKA0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIGdTVC0+Q29uT3V0LT5Nb2RlLT5Nb2RlLA0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICZTY3JlZW5XaWR0aCwNCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICAmU2NyZWVuUm93cw0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIGlmIChDb2x1bW4gPiAoU2NyZWVuV2lkdGggLSAxKSB8 fCBSb3cgPiAoU2NyZWVuUm93cyAtIDEpKSB7DQo+ID4gPg0KPiA+ID4gKyAgICByZXR1cm4gMDsN Cj4gPiA+DQo+ID4gPiArICB9DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIGlmICgo U3RyTGVuIChTdHJpbmcpICsgQ29sdW1uKSA+IChTY3JlZW5XaWR0aCAtIDEpKSB7DQo+ID4gPg0K PiA+ID4gKyAgICAvLw0KPiA+ID4NCj4gPiA+ICsgICAgLy8gfCAgICAgIC0gU2NyZWVuV2lkdGgg LSAgICAgICB8DQo+ID4gPg0KPiA+ID4gKyAgICAvLyAuLi5Db2x1bW4uLi4uLi4uLi4uLi4uLi4u Li4uLi4NCj4gPiA+DQo+ID4gPiArICAgIC8vIFR1cm5jYXRlU3RyaW5nIGxlbmd0aCBzaG91bGQg bGVhdmUgb25lIGNoYXJhY3RlciBmb3IgZHJhdw0KPiA+ID4gKyBib3gNCj4gYW5kDQo+ID4gPg0K PiA+ID4gKyAgICAvLyByZXF1aXJlIG9uZSBjaGFyYWN0ZXIgZm9yIHN0cmluZyBlbmQuDQo+ID4g Pg0KPiA+ID4gKyAgICAvLw0KPiA+ID4NCj4gPiA+ICsgICAgU2hvd2luZ0xlbmd0aCA9IFNjcmVl bldpZHRoIC0gQ29sdW1uIC0gMTsNCj4gPiA+DQo+ID4gPiArICAgIFR1cm5jYXRlU3RyaW5nID0g QWxsb2NhdGVQb29sICgoU2hvd2luZ0xlbmd0aCArIDEpICogc2l6ZW9mDQo+IChDSEFSMTYpKTsN Cj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgICBpZiAoVHVybmNhdGVTdHJpbmcgPT0g TlVMTCkgew0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiA+DQo+ID4gPiArICAg IH0NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgICBTdGF0dXMgPSBTdHJuQ3B5UyAo VHVybmNhdGVTdHJpbmcsIFNob3dpbmdMZW5ndGggKyAxLCBTdHJpbmcsDQo+ID4gPiBTaG93aW5n TGVuZ3RoIC0gMyk7DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4NCj4gPiA+ICsgICAgICBGcmVlUG9vbCAoVHVybmNhdGVT dHJpbmcpOw0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiA+DQo+ID4gPiArICAg IH0NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgICAqKFR1cm5jYXRlU3RyaW5nICsg U2hvd2luZ0xlbmd0aCAtIDMpID0gTCcuJzsNCj4gPiA+DQo+ID4gPiArICAgICooVHVybmNhdGVT dHJpbmcgKyBTaG93aW5nTGVuZ3RoIC0gMikgPSBMJy4nOw0KPiA+ID4NCj4gPiA+ICsgICAgKihU dXJuY2F0ZVN0cmluZyArIFNob3dpbmdMZW5ndGggLSAxKSA9IEwnLic7DQo+ID4gPg0KPiA+ID4g KyAgICAqKFR1cm5jYXRlU3RyaW5nICsgU2hvd2luZ0xlbmd0aCkgICAgID0gTCdcMCc7DQo+ID4g Pg0KPiA+ID4gKyAgICBTaG93aW5nTGVuZ3RoID0gUHJpbnQgKEwiJXMiLCBUdXJuY2F0ZVN0cmlu Zyk7DQo+ID4gPg0KPiA+ID4gKyAgICBGcmVlUG9vbCAoVHVybmNhdGVTdHJpbmcpOw0KPiA+ID4N Cj4gPiA+ICsgICAgcmV0dXJuIFNob3dpbmdMZW5ndGg7DQo+ID4gPg0KPiA+ID4gKyAgfSBlbHNl IHsNCj4gPiA+DQo+ID4gPiArICAgIHJldHVybiBQcmludCAoTCIlcyIsIFN0cmluZyk7DQo+ID4g Pg0KPiA+ID4gKyAgfQ0KPiA+ID4NCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4g PiAgLyoqDQo+ID4gPg0KPiA+ID4gQEAgLTY4LDcgKzExNSwyMiBAQCBQcmludENoYXJBdCAoDQo+ ID4gPiAgICBDSEFSMTYgICAgICAgQ2hhcmFjdGVyDQo+ID4gPg0KPiA+ID4gICAgKQ0KPiA+ID4N Cj4gPiA+ICB7DQo+ID4gPg0KPiA+ID4gKyAgVUlOVE4gICAgICAgICBTY3JlZW5XaWR0aDsNCj4g PiA+DQo+ID4gPiArICBVSU5UTiAgICAgICAgIFNjcmVlblJvd3M7DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+ICAgIGdTVC0+Q29uT3V0LT5TZXRDdXJzb3JQb3NpdGlvbiAoZ1NULT5Db25P dXQsIENvbHVtbiwgUm93KTsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgZ1NULT5D b25PdXQtPlF1ZXJ5TW9kZSAoDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5D b25PdXQsDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQtPk1vZGUt Pk1vZGUsDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgJlNjcmVlbldpZHRoLA0KPiA+ ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICZTY3JlZW5Sb3dzDQo+ID4gPg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgaWYgKENv bHVtbiA+IChTY3JlZW5XaWR0aCAtIDEpIHx8IFJvdyA+IChTY3JlZW5Sb3dzIC0gMSkpIHsNCj4g PiA+DQo+ID4gPiArICAgIHJldHVybiAwOw0KPiA+ID4NCj4gPiA+ICsgIH0NCj4gPiA+DQo+ID4g PiArDQo+ID4gPg0KPiA+ID4gICAgcmV0dXJuIFByaW50IChMIiVjIiwgQ2hhcmFjdGVyKTsNCj4g PiA+DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gQEAgLTE5Myw3ICsyNTUs MTEgQEAgSW5pdGlhbGl6ZUJvb3RNZW51U2NyZWVuICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gICAg TWF4UHJpbnRSb3dzID0gUm93IC0gNjsNCj4gPiA+DQo+ID4gPiAgICBVblNlbGVjdGFibGVJdG1l cyA9IFRJVExFX1RPS0VOX0NPVU5UICsgMiArDQo+ID4gSEVMUF9UT0tFTl9DT1VOVCArIDI7DQo+ ID4gPg0KPiA+ID4gLSAgQm9vdE1lbnVEYXRhLT5NZW51U2NyZWVuLldpZHRoID0gTWF4U3RyV2lk dGggKyA4Ow0KPiA+ID4NCj4gPiA+ICsgIGlmIChNYXhTdHJXaWR0aCArIDggPiBDb2x1bW4pIHsN Cj4gPiA+DQo+ID4gPiArICAgIEJvb3RNZW51RGF0YS0+TWVudVNjcmVlbi5XaWR0aCA9IENvbHVt bjsNCj4gPiA+DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4NCj4gPiA+ICsgICAgQm9vdE1lbnVE YXRhLT5NZW51U2NyZWVuLldpZHRoID0gTWF4U3RyV2lkdGggKyA4Ow0KPiA+ID4NCj4gPiA+ICsg IH0NCj4gPiA+DQo+ID4gPiAgICBpZiAoQm9vdE1lbnVEYXRhLT5JdGVtQ291bnQgKyBVblNlbGVj dGFibGVJdG1lcyA+IE1heFByaW50Um93cykgew0KPiA+ID4NCj4gPiA+ICAgICAgQm9vdE1lbnVE YXRhLT5NZW51U2NyZWVuLkhlaWdodCA9IE1heFByaW50Um93czsNCj4gPiA+DQo+ID4gPiAgICAg IEJvb3RNZW51RGF0YS0+U2Nyb2xsQmFyQ29udHJvbC5IYXNTY3JvbGxCYXIgPSBUUlVFOw0KPiA+ ID4NCj4gPiA+IC0tDQo+ID4gPiAyLjMxLjEud2luZG93cy4xDQo+ID4NCj4gPg0KPiA+DQo+ID4N Cj4gPg0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCg0K