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.web11.4041.1634103037384025579 for ; Tue, 12 Oct 2021 22:30:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=b8QaW00u; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10135"; a="224790415" X-IronPort-AV: E=Sophos;i="5.85,369,1624345200"; d="scan'208";a="224790415" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2021 22:30:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,369,1624345200"; d="scan'208";a="526866028" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga008.fm.intel.com with ESMTP; 12 Oct 2021 22:30:36 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) 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; Tue, 12 Oct 2021 22:30:35 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 12 Oct 2021 22:30:35 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 12 Oct 2021 22:30:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FygUfEzLlA4YFjToWBJOS2wR2FLgYv70xOiuxPVcFSZQ/abotstpJfiQKquGW3cXgTxuaAW1k+89Puu7CdoJG9U99zAQirVAO8p/lTSguqI34yH9vf8v2GrSFIJMexoOLwP5dH8bIDEbcKmS89MAl8w04oiKfeIVxMWhAnzbBj169zyG0vOW2Ci41GZ6unFcKW/CKaMcAytcJNXJpeCDqghU9F04EJzqCMSjf+FvWF9jswQnoy/IOMI7tZ78bhdgmK4s2B0lZDYT7MOZ+aVo6/6DmBstuHVQsIgQG0JPTb3DnVwvXbKOVyposboUpdAhiO/8MsJbT+zZJlOIH4Qjdw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=faHwkX5qw3INE/qOorSpzeZZd8c1Viq+Te9FVLhXQCA=; b=RL67CkyC/OD/72tNtiPkbeqGdq6PeBmOx5KZUyL7ADNJZGxBFPIYdgLzUtKHuR3q4xVNh6ZQ32boNrEzIyDU9qKC5JVQEW34zTGqn5lmvTE+3QKZHiDy/OWwDQwNk3gsszawHSx8RxWP1NeG+8Lp1pC2IguXtavnIX6s1+eDytpiXLNrlKjF9Ui6mCh1vxMdk/y6JbIFju0MIq/RQCYWAy6Bm+H9W/ntcJ9yGni8pqaVO2N6u/FE9WlljpsToZezt5clilxGU49zCwdlaOWjUI/30eYDHFdXRGW+Fcra7UqQLaWo6LV6cixOAMvquuZpqfoBuVWrnPFMiuNVUQv5WQ== 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=faHwkX5qw3INE/qOorSpzeZZd8c1Viq+Te9FVLhXQCA=; b=b8QaW00upwFi0FR0MrB3r5Bh6qbYZBQ0zbHBqIGSVEwqeYBfhjur2pikmWwfb0Q9PJqjvMDPx3KspaWMfFhIBhrRHqcgoUx/jSkRVwkyC4Wu4jnVLEz/b6MWBazRmUhRabKVTXjGTwNPV0bAe7ahPIFPmC5qJ3aVs2nfWuLu+z0= Received: from BN0PR11MB5696.namprd11.prod.outlook.com (2603:10b6:408:14b::11) by BN6PR11MB1987.namprd11.prod.outlook.com (2603:10b6:404:4a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.22; Wed, 13 Oct 2021 05:30:34 +0000 Received: from BN0PR11MB5696.namprd11.prod.outlook.com ([fe80::317e:de35:e920:7778]) by BN0PR11MB5696.namprd11.prod.outlook.com ([fe80::317e:de35:e920:7778%3]) with mapi id 15.20.4587.026; Wed, 13 Oct 2021 05:30:34 +0000 From: "Ni, Ray" To: "Xu, Min M" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul1" , Brijesh Singh , Erdem Aktas , James Bottomley , "Yao, Jiewen" , Tom Lendacky Subject: Re: [PATCH V2 07/28] UefiCpuPkg: Support TDX in BaseXApicX2ApicLib Thread-Topic: [PATCH V2 07/28] UefiCpuPkg: Support TDX in BaseXApicX2ApicLib Thread-Index: AQHXuZrD2MGR1lP6CkWI7vqgK89/jqvQb80w Date: Wed, 13 Oct 2021 05:30:33 +0000 Message-ID: References: <0dcb1ac3ad788cc7a4fd293fcf183b6ea9bdffb9.1633401643.git.min.m.xu@intel.com> In-Reply-To: <0dcb1ac3ad788cc7a4fd293fcf183b6ea9bdffb9.1633401643.git.min.m.xu@intel.com> 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: 0f7c843b-79b3-4038-9494-08d98e0a947a x-ms-traffictypediagnostic: BN6PR11MB1987: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DQmUjZSroBK5+0UpGSYJfatnZ9iYMzIUiff8i+J7lGp29zsjnmwjDtF1JAnKYWHPuOiaAND1/BcEufIJgxyHTp4iR3eoq6J6prpG6W7Fsam4X7C4/StZ8MgdJ8uawArJHMVKiEn/R1ojDBU2ag8esj/RCew00pVcpkaE90SErjuHMS6q8KR1K6AuOj4GdVKuS1/KRAEIPtM7TsMvA7QW+MmR6l2aOJqX1xmBOef58/OdKdmf4lrVODEPgxkFJSAWlxZoYx6qZ4IGv/lKWyP33na10Fpc68hkuKWOfdm/PEa/+FUkK7aym24XtgyAnxs4H/jQiNxau9l6woJd3ZRO+lDnt9HCz0Af62EoJfAf9EufJuvnHXLVInndwrzXj1+XKfSn1xqclNrk1aRuYKH+K/mERaON5QVXLjB70ovbwTNj4jqbH4pPcMoMEO6uMr2gndSEkPRWiCAK+J8VaVRb7M8/VfBd6ahL9cfiu9erf2Bm1N92TEBEvR49gOOUkKDWBPFljYmmP+7frUmUEZMaW2PIBZyRQnphq+Pq+ZwQ3h0f4CbJNtuf2gclrAc+cM+fUxSMB98BN/ACYDpk7rYMmhG1s7pp+V9LcLVgT4oYSOSI6frhHZmX1+Go4osid5LvXjnW7pwalKvjPkt9OTSezWW2Me3dohrPZu1cT0MxCvMww4fL321/iT5BoMeoabYHH3zkMaKnY1rza84ZvP7KKg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN0PR11MB5696.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(186003)(82960400001)(55016002)(66946007)(110136005)(71200400001)(54906003)(66476007)(8676002)(19627235002)(4326008)(64756008)(122000001)(66446008)(38100700002)(26005)(66556008)(2906002)(508600001)(76116006)(33656002)(5660300002)(38070700005)(83380400001)(86362001)(52536014)(53546011)(9686003)(6506007)(316002)(7696005)(8936002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MXZZN1R2SmxjZlhFUlYyS1g0ZkUya2pFYndsU2luNmdGbTJLMStJL3VGNlY1?= =?utf-8?B?ZlNQMFZKZGU4TG9tR3U5TVpNSjJISEtjQXRKWU0rRzJHY1RxRW5hSnFkaU1N?= =?utf-8?B?TmdIWUhCcUhNdktMQjRzK2puUUdpbHU3WHpLclNPN3I4dnhWelVPcStrOGpZ?= =?utf-8?B?eTZ4VzJmTjFsaWFWSWF6T01QQzdJb0JWVXdxRFM2c1JUMHJBNkpQek1ITHAy?= =?utf-8?B?SE9nU1Y0N0hKUVZYNnVCYW1jTmxGcWZlOUhPS1Mxanl4Z2NzcWoydjExWFBW?= =?utf-8?B?VHBOVmp2a1VzNUZQSGc3SHlnSDc3STBDMitsRVFNRFB0cGVIY09kZXN6QkYw?= =?utf-8?B?Q21senRRclRqQ0k1a3FXUksvcEZGcXZyakcweHRYOEs4eUYwKzRXVytUU0JM?= =?utf-8?B?SjdZUlpPYXNjWGNpM1BOaGsvWDZST3M4VnlWa0ZTWjYzektlV1FuaWFkQ3dS?= =?utf-8?B?dEkzeGZ3dW9zVlBDZi9BQmRuVUdkbWhMcHZMUGNSeUplWVZzdkRCa2N4NXVD?= =?utf-8?B?ZlNkQzRGSk8wc3R4Qi9wejUxUHNRUWpFSlI1R2hZdy9acDNxUVJ0MXoxaGN1?= =?utf-8?B?OWNEK2lneHR6a1pnUzh0bVE5cUdCTmV4YmhNLzFlZmpnL0ErZXJtUDc0d2c2?= =?utf-8?B?RWEzVFlsQmtDaHVNeTgwQ3JCRE1BM0xaNkdVbzEwcjVPQUw0UkJRUzBTMkVs?= =?utf-8?B?c0hCVU8vTWt5OVNkamJhSHFONjVZTlNHOFBZaTZkWFJFNUZoaFZEVElIbFN2?= =?utf-8?B?MjFmQmtpa2c1b2xBWGc5eERpbnIvc1djZmFCRnF5SlNlK2NxT2xxam5ZYW5u?= =?utf-8?B?REc0aDRoK2x6NlhkWis2MXRuNFlUZlBmMk4wa25ON0ZFaHZrbkgvenJCVGd4?= =?utf-8?B?UFpzRlM3bUkrTkxycDVYMnpCWE1CcmJHSjRiTkZZT2FzcVJvMW1QMzNGdmx2?= =?utf-8?B?aS81Tm81U2RaSzJXcE95Wm1pMXBFRXI3c1dwVlBkWm80aXVCaE1vdDZQNERE?= =?utf-8?B?eDNFYm8xcHdlVFoxZXpFVStLMmJmelY4NWsraWh4dUtRUGxPVFJIV0RzOXUr?= =?utf-8?B?aUxaVmd5RzRPMTJJeG5YZ2toK3RmdmZtbXNycC9qZGtpb2NSeSt4ZjBzYjJk?= =?utf-8?B?MHRuZDU4Z09QRy9jMWhabEk4VXJYOFN2YVBkL0RoL1l2NC9xNGQ4VEQzQTQ4?= =?utf-8?B?STMyZ01TRy94eHFJSjF3b3BjRGNUVURldFFaUlFscjltOGxYVDNSYjZaQStl?= =?utf-8?B?M1lJOFpGYTR6ZGZPRkNGYW1UQ1JvQUl4Qk1HV0piZ0t0dERtSnVQSlIyUnNF?= =?utf-8?B?ZnpTZi91K3FqK0JTSDRxTzhxUmJaZHJJaDZoTldkTSs4OFl6OC9XMXdrRXF3?= =?utf-8?B?cW41UWhoWW1mcFowMlpkMG81QTdwZFRJeGdvZmgrblZXcTRpbDhSQWdYR0Jq?= =?utf-8?B?UVZHRWtsL1JUSUI1ZDVUdDZwbzg2eDR3ZnFIK1RXcVRxYWJHdXpSUDFhcTdV?= =?utf-8?B?b0loZG5XYi9yK21oaGhpZzMvNXBTV251ZWNybzFCa1o1OS9QTXI5dFRZSkNn?= =?utf-8?B?enVmdDYyVlluQXNTLys2bVpqdHdXVWlQSmFwR0xwSkZjVCtlUmVlcVErMURR?= =?utf-8?B?RUZwQU9jbXM1dTBENzA5cXNOY202dHNUTG91dGtGM3g0Tm44c3kyeVJuTWcx?= =?utf-8?B?L082Yll4bTFIZ1pnYURGTzFxV0pyTXA1RHNJcmV4c2FUSlR1Z2pwdXBRaXY5?= =?utf-8?Q?YBPtKc+GBZZhjGk4QlAJrWh+05YGou/v21+/nN8?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN0PR11MB5696.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f7c843b-79b3-4038-9494-08d98e0a947a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2021 05:30:33.8895 (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: O9EIRxjUw6+DAMAJJEBpKE97FuclYHScu/3PET6vc9Tj/q+cojKhj6dTR60wL9uR7PcVgVW7YTYu951mSrZpJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1987 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 TWluLA0KQ29tbWVudHMgYmVsb3c6DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9t OiBYdSwgTWluIE0gPG1pbi5tLnh1QGludGVsLmNvbT4gDQpTZW50OiBUdWVzZGF5LCBPY3RvYmVy IDUsIDIwMjEgMTE6MzkgQU0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IFh1LCBNaW4g TSA8bWluLm0ueHVAaW50ZWwuY29tPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47 IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBLdW1hciwgUmFodWwxIDxyYWh1bDEua3VtYXJA aW50ZWwuY29tPjsgQnJpamVzaCBTaW5naCA8YnJpamVzaC5zaW5naEBhbWQuY29tPjsgRXJkZW0g QWt0YXMgPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IEphbWVzIEJvdHRvbWxleSA8amVqYkBsaW51 eC5pYm0uY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgVG9tIExlbmRh Y2t5IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4NClN1YmplY3Q6IFtQQVRDSCBWMiAwNy8yOF0g VWVmaUNwdVBrZzogU3VwcG9ydCBURFggaW4gQmFzZVhBcGljWDJBcGljTGliDQoNCisqKi8NCitC T09MRUFODQorRUZJQVBJDQoNCjEuIEVGSUFQSSBpcyBmb3IgcHVibGljIGxpYiBBUEkuIElzIHRo aXMgYSBwdWJsaWMgQVBJPw0KDQorQmFzZVhBcGljSXNUZHhHdWVzdCAoDQorICBWT0lEDQorICAp DQorew0KKyAgVUlOVDMyICAgIEVheDsNCisgIFVJTlQzMiAgICBFYng7DQorICBVSU5UMzIgICAg RWN4Ow0KKyAgVUlOVDMyICAgIEVkeDsNCisgIFVJTlQzMiAgICBMYXJnZXN0RWF4Ow0KKw0KKyAg aWYgKG1CYXNlWEFwaWNUZHhQcm9iZWQpIHsNCisgICAgcmV0dXJuIG1CYXNlWEFwaWNJc1RkeEVu YWJsZWQ7DQorICB9DQorDQorICBtQmFzZVhBcGljSXNUZHhFbmFibGVkID0gRkFMU0U7DQoNCjIu IEFwaWNMaWIgY2FuIGJlIHVzZWQgaW4gcHJlLW1lbSBydW5uaW5nIGRpcmVjdGx5IGluIGZsYXNo Lg0KVGhlIGdsb2JhbCB2YXJpYWJsZSBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gdGhhdCBjYXNlLg0K DQoNCisNCisgIGRvIHsNCisgICAgQXNtQ3B1aWQgKDAsICZMYXJnZXN0RWF4LCAmRWJ4LCAmRWN4 LCAmRWR4KTsNCg0KKw0KKyAgICBpZiAoRWJ4ICE9IFNJR05BVFVSRV8zMiAoJ0cnLCAnZScsICdu JywgJ3UnKQ0KKyAgICAgIHx8IEVkeCAhPSBTSUdOQVRVUkVfMzIgKCdpJywgJ24nLCAnZScsICdJ JykNCisgICAgICB8fCBFY3ggIT0gU0lHTkFUVVJFXzMyICgnbicsICd0JywgJ2UnLCAnbCcpKSB7 DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgQXNtQ3B1aWQgKDEsIE5VTEwsIE5VTEws ICZFY3gsIE5VTEwpOw0KKyAgICBpZiAoKEVjeCAmIEJJVDMxKSA9PSAwKSB7DQorICAgICAgYnJl YWs7DQorICAgIH0NCisNCisgICAgaWYgKExhcmdlc3RFYXggPCAweDIxKSB7DQorICAgICAgYnJl YWs7DQorICAgIH0NCisNCisgICAgQXNtQ3B1aWRFeCAoMHgyMSwgMCwgJkVheCwgJkVieCwgJkVj eCwgJkVkeCk7DQorICAgIGlmIChFYnggIT0gU0lHTkFUVVJFXzMyICgnSScsICduJywgJ3QnLCAn ZScpDQorICAgICAgfHwgRWR4ICE9IFNJR05BVFVSRV8zMiAoJ2wnLCAnVCcsICdEJywgJ1gnKQ0K KyAgICAgIHx8IEVjeCAhPSBTSUdOQVRVUkVfMzIgKCcgJywgJyAnLCAnICcsICcgJykpIHsNCisg ICAgICBicmVhazsNCisgICAgfQ0KDQoNCjMuIENhbiB5b3UgdXNlIGRlZmluaXRpb24gZnJvbSBN ZGVQa2dcSW5jbHVkZVxSZWdpc3RlclxJbnRlbFxDcHVpZC5oIGluc3RlYWQgb2YgaGFyZGNvZGUg MCwgMSwgMHgyMSwgIkdlbnUiIGFuZCBldGMuPw0KDQorDQorICAgIG1CYXNlWEFwaWNJc1RkeEVu YWJsZWQgPSBUUlVFOw0KDQo0LiBhdm9pZCByZWx5aW5nIG9uIGdsb2JhbCB2YXJpYWJsZSBmb3Ig Y2FjaGluZyB0aGUgcmVzdWx0Lg0KDQorDQorICBzd2l0Y2ggKE1zckluZGV4KSB7DQorICBjYXNl IE1TUl9JQTMyX1gyQVBJQ19UUFI6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19QUFI6DQorICBj YXNlIE1TUl9JQTMyX1gyQVBJQ19FT0k6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19JU1IwOg0K KyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfSVNSMToNCisgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lT UjI6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19JU1IzOg0KKyAgY2FzZSBNU1JfSUEzMl9YMkFQ SUNfSVNSNDoNCisgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lTUjU6DQorICBjYXNlIE1TUl9JQTMy X1gyQVBJQ19JU1I2Og0KKyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfSVNSNzoNCisgIGNhc2UgTVNS X0lBMzJfWDJBUElDX1RNUjA6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19UTVIxOg0KKyAgY2Fz ZSBNU1JfSUEzMl9YMkFQSUNfVE1SMjoNCisgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjM6DQor ICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19UTVI0Og0KKyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfVE1S NToNCisgIGNhc2UgTVNSX0lBMzJfWDJBUElDX1RNUjY6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJ Q19UTVI3Og0KKyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfSVJSMDoNCisgIGNhc2UgTVNSX0lBMzJf WDJBUElDX0lSUjE6DQorICBjYXNlIE1TUl9JQTMyX1gyQVBJQ19JUlIyOg0KKyAgY2FzZSBNU1Jf SUEzMl9YMkFQSUNfSVJSMzoNCisgIGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjQ6DQorICBjYXNl IE1TUl9JQTMyX1gyQVBJQ19JUlI1Og0KKyAgY2FzZSBNU1JfSUEzMl9YMkFQSUNfSVJSNjoNCisg IGNhc2UgTVNSX0lBMzJfWDJBUElDX0lSUjc6DQoNCjUuIENhbiB5b3UgZXhwbGFpbiBpbiB0aGUg Y29tbWVudHMgYWJvdXQgIHdoYXQgc3BlYyBzYXlzIHRoYXQgYWJvdmUgTVNSIGNhbiBiZSBhY2Nl c3NlZCBkaXJlY3RseSB3aGlsZSBvdGhlcnMgY2Fubm90Pw0KDQoNCisgIFVJTlQ2NCAgICBWYWw7 DQorICBVSU5UNjQgICAgU3RhdHVzOw0KKyAgaWYgKCFBY2Nlc3NNc3JOYXRpdmUgKE1zckluZGV4 KSAmJiBCYXNlWEFwaWNJc1RkeEd1ZXN0ICgpKSB7DQoNCjYuIGNhbiB3ZSBzaW1wbGlmeSB0aGUg YWJvdmUgY2hlY2sgd2l0aCAiIGlmICghQWNjZXNzTXNyTmF0aXZlIChNc3JJbmRleCkpIj8NCklz VGR4R3Vlc3QoKSBjYW4gYmUgY2FsbGVkIGluc2lkZSBBY2Nlc3NNc3JOYXRpdmUoKS4NCg0KK1VJ TlQzMg0KK0VGSUFQSQ0KDQo3LiBObyBFRklBUEkgcGxlYXNlLg0KDQorUmVhZE1zclJlZzMyICgN CisgIElOIFVJTlQzMiBNc3JJbmRleA0KKyAgKQ0KK3sNCisgIFVJTlQ2NCAgICBWYWw7DQorICBV SU5UNjQgICAgU3RhdHVzOw0KKyAgaWYgKCFBY2Nlc3NNc3JOYXRpdmUgKE1zckluZGV4KSAmJiBC YXNlWEFwaWNJc1RkeEd1ZXN0ICgpKSB7DQorICAgIFN0YXR1cyA9IFRkVm1DYWxsIChURFZNQ0FM TF9SRE1TUiwgKFVJTlQ2NCkgTXNySW5kZXgsIDAsIDAsIDAsICZWYWwpOw0KKyAgICBpZiAoU3Rh dHVzICE9IDApIHsNCisgICAgICBUZFZtQ2FsbCAoVERWTUNBTExfSEFMVCwgMCwgMCwgMCwgMCwg MCk7DQorICAgIH0NCisgIH0gZWxzZSB7DQorICAgIFZhbCA9IEFzbVJlYWRNc3IzMiAoTXNySW5k ZXgpOw0KKyAgfQ0KKyAgcmV0dXJuIChVSU5UMzIpKFVJTlROKSBWYWw7DQoNCjguIENhbiB5b3Ug ZGlyZWN0bHkgY2FsbCBSZWFkTXNyUmVnNjQoKT8NCg0KDQorVk9JRA0KK0VGSUFQSQ0KK1dyaXRl TXNyUmVnMzIgKA0KKyAgSU4gVUlOVDMyIE1zckluZGV4LA0KKyAgSU4gVUlOVDMyIFZhbA0KKyAg KQ0KK3sNCisgIFVJTlQ2NCAgICBTdGF0dXM7DQorICBpZiAoIUFjY2Vzc01zck5hdGl2ZSAoTXNy SW5kZXgpICYmIEJhc2VYQXBpY0lzVGR4R3Vlc3QgKCkpIHsNCisgICAgU3RhdHVzID0gVGRWbUNh bGwgKFREVk1DQUxMX1dSTVNSLCAoVUlOVDY0KSBNc3JJbmRleCwgKFVJTlQ2NCkgVmFsLCAwLCAw LCAwKTsNCisgICAgaWYgKFN0YXR1cyAhPSAwKSB7DQorICAgICAgREVCVUcoKERFQlVHX0VSUk9S LCAiV3JpdGVNc3JSZWczMiByZXR1cm5lZCBmYWlsdXJlLiBTdGF0dXM9MHglbGx4XG4iLCBTdGF0 dXMpKTsNCisgICAgICBUZFZtQ2FsbCAoVERWTUNBTExfSEFMVCwgMCwgMCwgMCwgMCwgMCk7DQor ICAgIH0NCisgIH0gZWxzZSB7DQorICAgIEFzbVdyaXRlTXNyMzIgKE1zckluZGV4LCBWYWwpOw0K DQo4LiBDYW4geW91IGRpcmVjdGx5IGNhbGwgV3JpdGVNc3JSZWc2NCgpPw0KDQogDQotICBBcGlj QmFzZU1zci5VaW50NjQgPSBBc21SZWFkTXNyNjQgKE1TUl9JQTMyX0FQSUNfQkFTRSk7DQorICBB cGljQmFzZU1zci5VaW50NjQgPSBSZWFkTXNyUmVnNjQgKE1TUl9JQTMyX0FQSUNfQkFTRSk7DQoN CjkuIEkgcHJlZmVyIHRvIHVzZSAiTG9jYWxBcGljTGliUmVhZE1zcjY0KCkiLiBJdCBpbmRpY2F0 ZXMgdHdvIG1lYW5pbmdzOg0KICAgIGEuIGl0J3MgYSBsb2NhbCBmdW5jdGlvbiB3aGljaCBjYW4g YmUgZm91bmQgd2l0aGluIHRoaXMgbGliDQogICAgYi4gaXQncyBjb25zaXN0ZW50IHdpdGggIkFz bVJlYWRNc3I2NCIuDQoNCg0K