From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web09.1337.1632382994957475294 for ; Thu, 23 Sep 2021 00:43:15 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=pXlzQ3eZ; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10115"; a="220587228" X-IronPort-AV: E=Sophos;i="5.85,316,1624345200"; d="scan'208";a="220587228" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2021 00:42:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,316,1624345200"; d="scan'208";a="534208753" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga004.fm.intel.com with ESMTP; 23 Sep 2021 00:42:57 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 23 Sep 2021 00:42:57 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 23 Sep 2021 00:42:57 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.48) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 23 Sep 2021 00:42:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CtOHVm5/wnvrgdYvRtoAkXn1YcGft9jU8KuV2NRRNGlTXk/DHDudxaU5KtMLnSmFGcwDPqr9JnqFuw09Q2Ii1enVgWIEbjcV8JKb4HXFC7y6gJiHFzxMcyIRT3DTrpekkgQn9xVDMtqcfb7vaM8m7MQo0XQ9Ot5SibcJBPCU7ot8pPf+jGCxCUhVsDiG3j/uX4RQuw/OJ5sHWGQZm5qEpQilHoHMwXAV4ZpKhXAQ29fOBvHoX9pWEVRYx1zEZVh1f82mhqx6t2MXGQPvKfCvggcfC2m9N9oMmV61V9akxjhbsw7/lVLhvO5CB3ENiTNjFw4qvcmxDKX8cfFtPAF/Tg== 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=SZcALZgAZtFfTEYTMzLyRtz1F+xE/3KteZiMwZnjcrs=; b=HqtWwns/CjSeR6VCTrMp4C9Af645yWHulh0ShtWFlzvYlsKVIgOQ/4M9HEP7t+j7gAEDv6dyPS0Lk0mhzDA0FQ7gx5zoXkH9kbaf83k88RA7SNofzmWAILRHHRfzuvFry6aGrk7ztDWUFkhvVIOnZ7pQMQB4MX7SNkvHciuBQH3T3tBrKsx9GfUa3URqCDQkA0ySXEE/aTdVFcXrxeuVVh/KK+J0RNxMqNnMnueMG5nW9NPeICe8Y5DfWL6TZ5izIcFNWQZv6mPtO5tFBbrpRrShXN2hYPhFYAOwdT7EJX5BEbLsjCi5tGm7ndkInVDyJjhLbvImWuzOMh+Xf6vRYg== 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=SZcALZgAZtFfTEYTMzLyRtz1F+xE/3KteZiMwZnjcrs=; b=pXlzQ3eZAqZV8VWxok0Bz1t3o40aHsBj1cK+HcDx2M4cpSG8qTpwICGF/AH2qE77mcyiUssNQ1CheFc+BQk2vOFK6NGqozNX5Ok4k6bWmX4DkDgAMz92NuRlcBhQntekJMWs1HNpv6piogJHna7EvCSCThV/Al2VOGmwgugEWw0= Received: from CY4PR1101MB2072.namprd11.prod.outlook.com (2603:10b6:910:1d::15) by CY4PR1101MB2087.namprd11.prod.outlook.com (2603:10b6:910:25::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.14; Thu, 23 Sep 2021 07:42:55 +0000 Received: from CY4PR1101MB2072.namprd11.prod.outlook.com ([fe80::7dc5:34b5:bbff:832f]) by CY4PR1101MB2072.namprd11.prod.outlook.com ([fe80::7dc5:34b5:bbff:832f%8]) with mapi id 15.20.4544.014; Thu, 23 Sep 2021 07:42:55 +0000 From: "Ni, Ray" To: "Gao, Zhichao" , "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" 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+AtRhauveLWAgAAW4kCAAXPaAIAACY8AgABFUvA= Date: Thu, 23 Sep 2021 07:42:55 +0000 Message-ID: References: <20210909072541.3069-1-zhichao.gao@intel.com> <00df01d7b027$05683ed0$1038bc70$@byosoft.com.cn> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 71a7bd62-fc02-4f7c-cc72-08d97e65c1d0 x-ms-traffictypediagnostic: CY4PR1101MB2087: 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: x5kwFIs1IN6kZDYYAJWDqATiUBpBB2Bf1egMEtyVjviyBH6UG1Djl4+/N7h9neoy8fafxJqMhS/gDn11C2uXLEvRsqFqwzCgKsqWixsQx6OQ3N6fM6ao6EDHGYnhQXQTraqAisHXOMYh7qJIwAX9XIcQ+O01QaGw+zYM+dXDI6WoFZwgUmqM1wnxMU/hz1wNFv5Z3rOLy8Oo4doczxNUkuLIT+mKtwlFL1kktb62D0GaP8k7w/jPUlOKDXRoJ1T7yTFJofiadSCBAI9UMzE4YG5TfACz52e1OjINHpaJukgMcBxmY23Zcyu8/zJ36WqCAeEKgTdnaC5ND/X0UEg7wtojtB+W96mbESAjc/A8FPnIo4dg80j7WE8BGgLuq98+xgi4x1B/iPk9H+EESifB5syWcDFOr+gujHRBRzIoBZcusVb44Ttaa3zB3/lRBFf+1uVUqTP4S8sJuQBLCJhrcV4RP1ufB8sgMqU82JKd2FZZzOt7jbkKnrD4/dnT794Wp8xEY23H/3CEKvbALOBp+w4wpiTdAp7cuEMC7UaV/gJkQu/oPUQIez5XimtrNHwu5K6GSmvZhYPBwfgayOa8/Rx5LCbVCFzCTC00NQIsZcDZwlLvOMLbIiLnQVfdZ8CQ07kOhzqOrd/Ybcfu7OmopgUYYqeAhMSPFdl4r5U9mEKFJ0zr+6nyfWbHfdEO1uXa2SjO3ZZcEd2/lu1o2KIUssEiRsHOR79rgMy1CYnTBdDuOqEg7f6EGTb6tMYZgBL9ufMP2aEjHR1pNmpJQJGUl/oW9pyLbwLjGkXaQh3LcpYP+MSbb100/82zmdnIjip0OfghY0aXv2cp1D5xYylevg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR1101MB2072.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(4326008)(86362001)(53546011)(7696005)(6506007)(71200400001)(52536014)(38070700005)(9686003)(38100700002)(122000001)(8936002)(55016002)(186003)(66556008)(508600001)(66446008)(64756008)(33656002)(83380400001)(966005)(66946007)(76116006)(66476007)(66574015)(107886003)(5660300002)(2906002)(26005)(316002)(110136005)(8676002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZTM4WEFvWnFRdHZRVjJPSjBOYVRjY21RYllNOUJwMERxdkQxemNLdHgxdnQx?= =?utf-8?B?MHZRZlYveUs1elhXYVFFTXhBNlJtL0FCYTMybWRXZWZQTGxoNUJjdEVYNkx6?= =?utf-8?B?eEVtcks2RU5WZ3JKWmk4cmZNdEptMmJSckxsWlpQZkxiaVVVYTMxU3p1QU92?= =?utf-8?B?RjBMZlhHQVdJWTAwT096S2c2S3dPdHBFc096aHk1U0F4SEptOS9NVDFsZjRx?= =?utf-8?B?OXdkZmIyRzJPWFlJTEJLNGYwbVg1d1g0ZjVrUEZuRFZmNDVBUXhDaEIzbWk1?= =?utf-8?B?TXVheVJaMkdrTE9QWWR5MUwvZEZWcG9LaWl6Qk5adVVhSXVTOEllam5rKzNB?= =?utf-8?B?OVhuNVFKR0Z3bDBnY3lIenkyUm9Gc1B1ZDE2L3dhU0JKaThPVG1ManQ1TXN2?= =?utf-8?B?NkZBVy8rbUI5dmtSRzcxUEE3VE1XcCt6TmZmajk5ZXVMNGpwbHV5VEFiVUZN?= =?utf-8?B?K2tLalpJNDRLcEZkRTFMbVFIZmlCUVUxeVRMbDNqbzBQa0ZNUm9LSDRrbkNj?= =?utf-8?B?WjZMU043YTVPLzNIaWMrd2IzOVRGRHN2Uzh4a09wMzYxaFlYY0VaZUFZQmNv?= =?utf-8?B?ZlNPS3dRRnU4YXc3R0Z1cDdHNTVpNFN5TDFjbWptNHFGOExpSFQ3OFZsVzVn?= =?utf-8?B?cC9zcS9zQUgvckw2bGVvQVgwODdjMTBJdGlsczFvZ09GbnBzaEVTNWtsKzBE?= =?utf-8?B?Z0dSUFc3cGY2R0h6N2lVVGZpbUV3QzZtQ3lWSlcvcFRkRmdxcnlXSDUxcWM2?= =?utf-8?B?Tkd3NVNjY08xVkc5K3ZHd002b000OVloeFVvZGlQajFjTUdNdHFwSzV0bklr?= =?utf-8?B?eDRmRVNKQVZXTE9nK0taaVJxZmN6dzJlSmROYlBFVjEwRTZVK0Q1VlVWMGc3?= =?utf-8?B?ZGtMVFgvQ0pRV0JubjcvU3pTOUVzNjNTdDZLWmhLNTRtbkNjMFE3eGpIM3Y4?= =?utf-8?B?T1ZCQ2xkb0NHTWdnZXNJSk5rMnlKN3BHVEhWTlh3d04rNm1Ndmt3Z2FicFFT?= =?utf-8?B?ZHUwQWZ4NTRjR0NaVDNpYnc2YWdPRm1RdFpKVWgyQ3Y0WDFaTHhkV2k3Smwx?= =?utf-8?B?azJDdGJweDh0OFRaeURwb2Q2VW9EWDNlUWVnYVR1UVEzSStzWFpmOEk4bVZw?= =?utf-8?B?MWJ3SnZpa3QrMGFwZmZlNnVBMDFrdjlFSTRkdFB5M3Z4UjE5OTZ1M1c0UWRG?= =?utf-8?B?OE9CcVFBeUhzNDhrc1B6TnA1eWFCZUtIT1BKZHl6alpyWktQaHBMN1pRZ2hn?= =?utf-8?B?cm01enJCYXc5VEtlZ0U3K0pWUm5tQ3dMVmplRUdYSVdVcFhPZ2RwRnB3NUtk?= =?utf-8?B?eDBWZXhNb2w3eFdjZ20vUXdTMmlXVk91Mm1ZaUc1b2srUExjVVlab2QwcnFF?= =?utf-8?B?dmgwa0dyRW8xS3VxUzBDTzhaZWZjc25TVlB6TTZCb0JEanlmVmk1OENoajJw?= =?utf-8?B?THRVRjZpS1RUT3V4eHZEUzRtNmtVWk5MSjlqc0h5TzdaTUhvN1NaaDl4ZzBz?= =?utf-8?B?SXR6VGlSOExmT0xVOXVFSHFvYStYa1RDZnF0Y3ZLbkVRV3BOcjFUcGdCZmIy?= =?utf-8?B?c1p6STFmQWRhQWxvdjVNeTl6ekk4QStEK0wzTkgrSHFpaWxwZkEwTVZaK3h3?= =?utf-8?B?cVRIc09YOGl2Ny9GNlF1WFNRRURDSG5Ta051cEowdGVQaHJUTFU4VzdDTkJI?= =?utf-8?B?UWFuZHVpWnZHVHVwUm5XZUNEWG53aEhwZ0ZlUi9sUmtNSmgxVjVDb0lvMjRq?= =?utf-8?Q?T+HHpSST3nXq4gqZlNt1IGbSU2P6jyVrgrlERZc?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR1101MB2072.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71a7bd62-fc02-4f7c-cc72-08d97e65c1d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2021 07:42:55.7179 (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: CdQ72Zf7jG5tvdNQSDaAnNmCniXvtPYjbZ52001NahHxYbSqU/f5FZuC8D47ar4jpp4E5yVPBK5wu4uUPu3biQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2087 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QW5vdGhlciBvcHRpb24gaXMgdG8gdXNlIEVmaUJvb3RNYW5hZ2VyUmVnaXN0ZXJCb290RGVzY3Jp cHRpb25IYW5kbGVyKCkgdG8gYWx0ZXIgdGhlIGJvb3QgZGVzY3JpcHRpb25zLg0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9A aW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIzLCAyMDIxIDExOjQ3IEFN DQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuOyBO aSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0KPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyXSBNZGVN b2R1bGVQa2cvQm9vdE1hbmFnZXJNZW51QXBwOiBMaW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4g b25lIGxpbmUNCj4gDQo+IEhpIExpbWluZywNCj4gDQo+IFllcy4gQmVjYXVzZSB0aGUgZGVzaWdu IG9mIHRoZSBCTSBhcHAgaXMgbm90IGFpbWVkIHRvIGRpc3BsYXkgdGhlIGJvb3Qgb3B0aW9uIG92 ZXIgb25lIGxpbmUuIEFuZCBpdCBpcyBub3QgdXNpbmcgdGhlIHNldHVwDQo+IGJyb3dzZXIgZW5n aW5lLg0KPiBUaGF0IHdvdWxkIGNhdXNlIHRoZSBkaWZmZXJlbmNlLg0KPiBJZiB3ZSB3YW50IHRv IG1ha2UgdGhlbSBhbGlnbiwgdGhlcmUgYXJlIHR3byBvcHRpb25zOg0KPiAxLiBCTSBhcHAgdG8g dXNlIHRoZSBzZXR1cCBicm93c2VyIGVuZ2luZQ0KPiAyLiBhZGQgc2Nyb2xsIGJhciBsb2dpYyBm b3IgdGhlIGJvb3QgaXRlbQ0KPiANCj4gQm90aCBhYm92ZSBjaGFuZ2UgaXMgbm90IHNpbXBsZSBh bmQgbWF5IGNhdXNlIG5ldyBpc3N1ZXMuIEl0IHdvdWxkIGJlIGEgbmV3IGRlc2lnbiBvdGhlciB0 aGFuIGEgYnVnIGZpeC4NCj4gDQo+IEFub3RoZXIgc29sdXRpb24gaXMgdGhlIHBhdGNoIFYxIHRv IGxpbWl0IHRoZSBib290IG9wdGlvbiBkZXNjcmlwdGlvbiB3aXRoaW4gNzIgY2hhcmFjdGVycy4g UmF5IHBvaW50ZWQgb3V0IGl0IGlzIG5vdCBhIGdvb2QNCj4gc29sdXRpb24uDQo+IA0KPiBCVFcs IEkgd291bGQgcmVtb3ZlIHRoZSBjaGFuZ2UtaWQgaW4gbmV4dCBwYXRjaC4NCj4gDQo+IFRoYW5r cywNCj4gWmhpY2hhbw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZy b206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxm IE9mDQo+ID4gZ2FvbGltaW5nDQo+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMywgMjAy MSAxMDo1OSBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgR2FvLCBaaGljaGFvIDx6 aGljaGFvLmdhb0BpbnRlbC5jb20+OyBOaSwgUmF5DQo+ID4gPHJheS5uaUBpbnRlbC5jb20+DQo+ ID4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6 IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMl0NCj4gPiBNZGVNb2R1bGVQa2cvQm9vdE1h bmFnZXJNZW51QXBwOiBMaW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4gb25lIGxpbmUNCj4gPg0K PiA+IFpoaWNoYW86DQo+ID4gICBXaXRoIHRoaXMgY2hhbmdlLCB0aGUgc2FtZSBib290IG9wdGlv biB3aWxsIGJlIGRpc3BsYXllZCBkaWZmZXJlbnRseSBpbg0KPiA+IEJvb3RNYW5hZ2VyQXBwIGFu ZCBCb290TWFuYWdlciBQYWdlLiBJcyBpdCB0aGUgZGVzaWduZWQgYmVoYXZpb3I/DQo+ID4NCj4g PiAgIEJlc2lkZXMsIHBsZWFzZSByZW1vdmUgY2hhbmdlLWlkIGZyb20gdGhlIGNvbW1pdCBtZXNz YWdlLg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gTGltaW5nDQo+ID4gPiAtLS0tLemCruS7tuWOn+S7 ti0tLS0tDQo+ID4gPiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsy Lmdyb3Vwcy5pbz4g5Luj6KGoIEdhbywNCj4gPiBaaGljaGFvDQo+ID4gPiDlj5HpgIHml7bpl7Q6 IDIwMjHlubQ55pyIMjLml6UgMTI6NTANCj4gPiA+IOaUtuS7tuS6ujogTmksIFJheSA8cmF5Lm5p QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBMaW1pbmcgR2FvDQo+ID4gPiA8Z2Fv bGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ID4g5oqE6YCBOiBXYW5nLCBKaWFuIEogPGppYW4u ai53YW5nQGludGVsLmNvbT4NCj4gPiA+IOS4u+mimDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0gg VjJdDQo+ID4gTWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVudUFwcDoNCj4gPiA+IExpbWl0IHN0 cmluZyBkcmF3aW5nIHdpdGhpbiBvbmUgbGluZQ0KPiA+ID4NCj4gPiA+IEhpIExpbWluZywNCj4g PiA+DQo+ID4gPiBUaGUgc29sdXRpb24gaXMgZGlmZmVyZW50IHdpdGggdGhlIGZpcnN0IHRpbWUg d2UgZGlzY3Vzc2VkIG9uIHRoZQ0KPiA+IEJ1Z3ppbGxhLiBDYW4NCj4gPiA+IHlvdSByZXZpZXcg aWYgaXQgaXMgT0sgdG8geW91Pw0KPiA+ID4NCj4gPiA+IFRoYW5rcywNCj4gPiA+IFpoaWNoYW8N Cj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206 IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2Vw dGVtYmVyIDIyLCAyMDIxIDExOjI4IEFNDQo+ID4gPiA+IFRvOiBHYW8sIFpoaWNoYW8gPHpoaWNo YW8uZ2FvQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IENjOiBXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IExpbWluZyBHYW8NCj4gPiA+ID4gPGdh b2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCBWMl0g TWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVudUFwcDogTGltaXQNCj4gPiA+ID4gc3RyaW5nIGRy YXdpbmcgd2l0aGluIG9uZSBsaW5lDQo+ID4gPiA+DQo+ID4gPiA+IFJldmlld2VkLWJ5OiBSYXkg TmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwu Y29tPg0KPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDksIDIwMjEgMzoyNiBQTQ0K PiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IFdhbmcsIEppYW4g SiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+ID4gPiA8Z2FvbGltaW5n QGJ5b3NvZnQuY29tLmNuPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ID4gU3Vi amVjdDogW1BBVENIIFYyXSBNZGVNb2R1bGVQa2cvQm9vdE1hbmFnZXJNZW51QXBwOiBMaW1pdA0K PiA+IHN0cmluZw0KPiA+ID4gPiBkcmF3aW5nIHdpdGhpbiBvbmUgbGluZQ0KPiA+ID4gPg0KPiA+ ID4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MzU5MA0KPiA+ID4gPg0KPiA+ID4gPiBMaW1pdCB0aGUgZHJhdyBib3ggYWx3YXlzIHdpdGhpbiB0 aGUgc2NyZWVuJ3MgY29sdW1uIGFuZCByb3cuDQo+ID4gPiA+IExpbWl0IHRoZSBzdHJpbmcgZHJh d2luZyB3aXRoaW4gb25lIGxpbmUuDQo+ID4gPiA+DQo+ID4gPiA+IENoYW5nZS1JZDogSWI3YmQ2 M2NiMDdiMjM4NzVhMWU0ZjM3YWU4MGE0MjJlMWQ1ZWQ1NGYNCj4gPiA+ID4gQ2M6IEppYW4gSiBX YW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBMaW1pbmcgR2FvIDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5j b20+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRl bC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPg0KPiA+ID4gPiBWMjoNCj4gPiA+ID4NCj4gPiA+ ID4gRHJvcCB0aGUgY2hhbmdlIGluIFVlZmlCb290TWFuYWdlckxpYiBpbiBWMS4NCj4gPiA+ID4N Cj4gPiA+ID4gQWRkIHRoZSBsaW1pdGF0aW9uIGluIEJvb3RNYW5hZ2VyTWVudUFwcCBpbnN0ZWFk Lg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAgLi4uL0Jvb3RNYW5hZ2VyTWVudUFwcC9Cb290 TWFuYWdlck1lbnUuYyAgICAgIHwgNzINCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrLQ0KPiA+ ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gPiBhL01kZU1vZHVsZVBrZy9B cHBsaWNhdGlvbi9Cb290TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFnZXJNZW51Lg0KPiA+ID4gPiBj DQo+ID4gPiA+DQo+ID4gYi9NZGVNb2R1bGVQa2cvQXBwbGljYXRpb24vQm9vdE1hbmFnZXJNZW51 QXBwL0Jvb3RNYW5hZ2VyTWVudS4NCj4gPiA+ID4gYw0KPiA+ID4gPiBpbmRleCA5ZTcyOTA3NGVj Li5kNGJkZWJhMDczIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gPiBhL01kZU1vZHVs ZVBrZy9BcHBsaWNhdGlvbi9Cb290TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFnZXJNZW51Lg0KPiA+ ID4gPiBjDQo+ID4gPiA+ICsrKw0KPiA+ID4gPg0KPiA+IGIvTWRlTW9kdWxlUGtnL0FwcGxpY2F0 aW9uL0Jvb3RNYW5hZ2VyTWVudUFwcC9Cb290TWFuYWdlck1lbnUuDQo+ID4gPiA+IGMNCj4gPiA+ ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gPiA+ICAvKiogQGZpbGUNCj4gPiA+ID4NCj4gPiA+ID4g ICAgVGhlIGFwcGxpY2F0aW9uIHRvIHNob3cgdGhlIEJvb3QgTWFuYWdlciBNZW51Lg0KPiA+ID4g Pg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAtQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxOCwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDExIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMNCj4gPiA+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4g IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAqKi8NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQ1LDkg KzQ1LDU2IEBAIFByaW50U3RyaW5nQXQgKA0KPiA+ID4gPiAgICBJTiBDSEFSMTYgICAgKlN0cmlu Zw0KPiA+ID4gPg0KPiA+ID4gPiAgICApDQo+ID4gPiA+DQo+ID4gPiA+ICB7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIFVJTlROICAgICAgICAgU2NyZWVuV2lkdGg7DQo+ID4gPiA+DQo+ID4gPiA+ICsg IFVJTlROICAgICAgICAgU2NyZWVuUm93czsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQ0hBUjE2ICAg ICAgICAqVHVybmNhdGVTdHJpbmc7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAg U3RhdHVzOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgIFNob3dpbmdMZW5ndGg7 DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGdTVC0+Q29uT3V0LT5TZXRD dXJzb3JQb3NpdGlvbiAoZ1NULT5Db25PdXQsIENvbHVtbiwgUm93KTsNCj4gPiA+ID4NCj4gPiA+ ID4gLSAgcmV0dXJuIFByaW50IChMIiVzIiwgU3RyaW5nKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArICBnU1QtPkNvbk91dC0+UXVlcnlNb2RlICgNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LT5Nb2RlLT5Nb2RlLA0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAmU2NyZWVuV2lkdGgsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICZTY3JlZW5Sb3dzDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKENvbHVt biA+IChTY3JlZW5XaWR0aCAtIDEpIHx8IFJvdyA+IChTY3JlZW5Sb3dzIC0gMSkpIHsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gMDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmICgoU3RyTGVuIChTdHJpbmcpICsg Q29sdW1uKSA+IChTY3JlZW5XaWR0aCAtIDEpKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyB8ICAgICAgLSBTY3JlZW5XaWR0aCAtICAgICAgIHwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyAuLi5Db2x1bW4uLi4uLi4uLi4uLi4uLi4uLi4uLi4N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyBUdXJuY2F0ZVN0cmluZyBsZW5ndGggc2hvdWxkIGxl YXZlIG9uZSBjaGFyYWN0ZXIgZm9yIGRyYXcNCj4gPiA+ID4gKyBib3gNCj4gPiBhbmQNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAvLyByZXF1aXJlIG9uZSBjaGFyYWN0ZXIgZm9yIHN0cmluZyBlbmQu DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBTaG93aW5n TGVuZ3RoID0gU2NyZWVuV2lkdGggLSBDb2x1bW4gLSAxOw0KPiA+ID4gPg0KPiA+ID4gPiArICAg IFR1cm5jYXRlU3RyaW5nID0gQWxsb2NhdGVQb29sICgoU2hvd2luZ0xlbmd0aCArIDEpICogc2l6 ZW9mDQo+ID4gKENIQVIxNikpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgaWYgKFR1cm5jYXRlU3RyaW5nID09IE5VTEwpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgIHJldHVybiAwOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIFN0YXR1cyA9IFN0cm5DcHlTIChUdXJuY2F0ZVN0cmlu ZywgU2hvd2luZ0xlbmd0aCArIDEsIFN0cmluZywNCj4gPiA+ID4gU2hvd2luZ0xlbmd0aCAtIDMp Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgRnJlZVBvb2wgKFR1cm5jYXRl U3RyaW5nKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIHJldHVybiAwOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICoo VHVybmNhdGVTdHJpbmcgKyBTaG93aW5nTGVuZ3RoIC0gMykgPSBMJy4nOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBTaG93aW5nTGVuZ3RoIC0gMikgPSBMJy4nOw0K PiA+ID4gPg0KPiA+ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBTaG93aW5nTGVuZ3RoIC0g MSkgPSBMJy4nOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBTaG93 aW5nTGVuZ3RoKSAgICAgPSBMJ1wwJzsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBTaG93aW5nTGVu Z3RoID0gUHJpbnQgKEwiJXMiLCBUdXJuY2F0ZVN0cmluZyk7DQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgRnJlZVBvb2wgKFR1cm5jYXRlU3RyaW5nKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1 cm4gU2hvd2luZ0xlbmd0aDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICByZXR1cm4gUHJpbnQgKEwiJXMiLCBTdHJpbmcpOw0KPiA+ID4gPg0KPiA+ ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+ICAvKioNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTY4LDcgKzExNSwyMiBAQCBQcmlu dENoYXJBdCAoDQo+ID4gPiA+ICAgIENIQVIxNiAgICAgICBDaGFyYWN0ZXINCj4gPiA+ID4NCj4g PiA+ID4gICAgKQ0KPiA+ID4gPg0KPiA+ID4gPiAgew0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5U TiAgICAgICAgIFNjcmVlbldpZHRoOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgICAg IFNjcmVlblJvd3M7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gICAgZ1NU LT5Db25PdXQtPlNldEN1cnNvclBvc2l0aW9uIChnU1QtPkNvbk91dCwgQ29sdW1uLCBSb3cpOw0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGdTVC0+Q29uT3V0LT5RdWVy eU1vZGUgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQtPk1vZGUtPk1v ZGUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICZTY3JlZW5XaWR0aCwNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgJlNjcmVlblJvd3MNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArICBpZiAoQ29sdW1uID4gKFNjcmVlbldpZHRoIC0gMSkgfHwgUm93ID4gKFNjcmVl blJvd3MgLSAxKSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiAwOw0KPiA+ID4gPg0K PiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gICAgcmV0 dXJuIFByaW50IChMIiVjIiwgQ2hhcmFjdGVyKTsNCj4gPiA+ID4NCj4gPiA+ID4gIH0NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTE5Myw3ICsyNTUsMTEgQEAgSW5pdGlh bGl6ZUJvb3RNZW51U2NyZWVuICgNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gICAgTWF4UHJp bnRSb3dzID0gUm93IC0gNjsNCj4gPiA+ID4NCj4gPiA+ID4gICAgVW5TZWxlY3RhYmxlSXRtZXMg PSBUSVRMRV9UT0tFTl9DT1VOVCArIDIgKw0KPiA+ID4gSEVMUF9UT0tFTl9DT1VOVCArIDI7DQo+ ID4gPiA+DQo+ID4gPiA+IC0gIEJvb3RNZW51RGF0YS0+TWVudVNjcmVlbi5XaWR0aCA9IE1heFN0 cldpZHRoICsgODsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKE1heFN0cldpZHRoICsgOCA+IENv bHVtbikgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIEJvb3RNZW51RGF0YS0+TWVudVNjcmVlbi5X aWR0aCA9IENvbHVtbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICBCb290TWVudURhdGEtPk1lbnVTY3JlZW4uV2lkdGggPSBNYXhTdHJXaWR0aCAr IDg7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgaWYgKEJvb3RN ZW51RGF0YS0+SXRlbUNvdW50ICsgVW5TZWxlY3RhYmxlSXRtZXMgPiBNYXhQcmludFJvd3MpIHsN Cj4gPiA+ID4NCj4gPiA+ID4gICAgICBCb290TWVudURhdGEtPk1lbnVTY3JlZW4uSGVpZ2h0ID0g TWF4UHJpbnRSb3dzOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgIEJvb3RNZW51RGF0YS0+U2Nyb2xs QmFyQ29udHJvbC5IYXNTY3JvbGxCYXIgPSBUUlVFOw0KPiA+ID4gPg0KPiA+ID4gPiAtLQ0KPiA+ ID4gPiAyLjMxLjEud2luZG93cy4xDQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4N Cj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCg0K