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.web09.2964.1605073769667420616 for ; Tue, 10 Nov 2020 21:49:29 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=WdhBZnuY; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: w.sheng@intel.com) IronPort-SDR: QRys/czalou0AmAS8U6hKdGqdd0k2n1udycIwWFZvbVqznGglqHBWvyqWnXwNPBKSaWAMKoBnE 7/vmj/YOBzXg== X-IronPort-AV: E=McAfee;i="6000,8403,9801"; a="169314847" X-IronPort-AV: E=Sophos;i="5.77,468,1596524400"; d="scan'208";a="169314847" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2020 21:49:28 -0800 IronPort-SDR: No2zeLoAb+ZvoeMYynxDM0QZH7QLsLtgcdTD4YnCNMqlLKOH28mnD7z36rFPfdZh7BwAXACIgE 4QuBogCiJj5Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,468,1596524400"; d="scan'208";a="327970531" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga006.jf.intel.com with ESMTP; 10 Nov 2020 21:49:28 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 10 Nov 2020 21:49:27 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.1713.5 via Frontend Transport; Tue, 10 Nov 2020 21:49:27 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 10 Nov 2020 21:49:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bkqgaHLUoo3WaPSiIYzKDfLRUvLavOcq/Fq1h1MjBozLOpiG/cR8V94mFGKghgC7fqo8l4ODVoBYZmYj19kyCJ4siLoHcAfrZFodUcyFR95N7uJJ1j54GR8/VXRr/9InTfHgEcZh6B1aQ3JZWeGpYUBtMARPCytdrVj6h989+OKv/jW1OQsxtM9XqbULX1pZK8YxuiwFhPCc9KcUKpdXIWzNUcJSfYNWLMYiqN1OOUnoPc0E5vIkYBRwLtvqxUMdS2acdAX81LDpX8MhivfJV6P4RkY8YoO4g5weAfy/twT3eK3e2ANJssKOLqQj2aQ53MqgX3aE8C7kbu5upvEU2A== 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=ssC9lSO4+fnCXgDif7qyeu23oaI+q6cPpUhdhhYqRN4=; b=HQz0qo5WH4/P3OHVyPzB7hV06BHi05r5VJI5Jbm3Sr+uJ5e4TWe1VOkL60bp7653JUaio3woa6U0FXF7XVCZuv80Sti12IwCqGs+yFJwo2pg+XJbxOeuwCfD0qiFtA3774Msmgy5GybQZZB+KpvWZZOZuXwmEsq6mYAUnMoUXNziozEi1U7jdlaXPWaEra0j/Lajjf5CJb63t78sp+rG4TzmJ+/QVZlm65PmTzUU4Km4msTAkQ8NjpDlgTjjjCvA92ShFjz7Th4WoN/7ZxDh3jsVNDJau1VX1RhmtOY1We1B+FRRSXxJi8dvjMku6hV+2APqprt/xWq6F/+V3w6v2g== 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=ssC9lSO4+fnCXgDif7qyeu23oaI+q6cPpUhdhhYqRN4=; b=WdhBZnuYHExkR9Z7rCk4ZIz7sSb2TMUI73t4/VxtZg2R9B4eeT7ttJjhwU4CEekGDRgXbTSnLNfjkffLOS5VWKpJgSQitasJW6//eoEoj0wjNRil1wtOROrwRogodkyiPBSSRgCxo55iMyeCfyqTx/X/rDXBJH2F7TDQ9TwQ44o= Received: from CY4PR11MB1928.namprd11.prod.outlook.com (2603:10b6:903:11e::18) by CY4PR11MB1238.namprd11.prod.outlook.com (2603:10b6:903:2f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.22; Wed, 11 Nov 2020 05:49:25 +0000 Received: from CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::51cb:2594:670:ac2a]) by CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::51cb:2594:670:ac2a%4]) with mapi id 15.20.3541.025; Wed, 11 Nov 2020 05:49:25 +0000 From: "Sheng Wei" To: Laszlo Ersek , "devel@edk2.groups.io" CC: "Dong, Eric" , "Ni, Ray" , "Kumar, Rahul1" , "Yao, Jiewen" Subject: Re: [edk2-devel] [PATCH v6 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Reflect page table depth with page table address Thread-Topic: [edk2-devel] [PATCH v6 2/2] UefiCpuPkg/PiSmmCpuDxeSmm: Reflect page table depth with page table address Thread-Index: AQHWt5c8WrIJJTMOp02Rbx6WkYef76nCbXzg Date: Wed, 11 Nov 2020 05:49:25 +0000 Message-ID: References: <20201110022430.19560-1-w.sheng@intel.com> <20201110022430.19560-3-w.sheng@intel.com> <0b603346-080f-2201-baee-4ffd1d9cc136@redhat.com> In-Reply-To: <0b603346-080f-2201-baee-4ffd1d9cc136@redhat.com> 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: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.46] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0ea2295b-8e21-40a9-735d-08d886058c13 x-ms-traffictypediagnostic: CY4PR11MB1238: 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: V6fXorcKB4oLkgBvhnGC+JBIUoTTRcTepT6/2Udue9sqeamG/1ucngRVLvMOiOp2Z1huHsF+AE2TYOYLcr6m1mXpJI8SDWad517I+/3QwTUK5nWyA3uXZHyn27cWilPew7LbtdWSnedNdTMyIJ7RBrPuPyPcXnJD4S0fC619P2J4nbgUxgJCncNcIayDxVr8lm6ZT7wwb8cBNT1XDrmITM1QJHJGPVByc9OCWLEB3eRrtXsOb/J1CTWDtUVe9R6J3k1VN9MTwMiYLIcbX8Mrqjpgd2laeXv6A0u3pRkrvM0Vg498yXAqrvKmLmriz80XjbWCa0dMU7dx9Iz567PUg5sPdy7anh7gEbXR6gSZ5R4KK/HuBkoz7O8rQHiSOZDhwxNj44gfNzX5+4k6rj5L8g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1928.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(346002)(136003)(376002)(396003)(39860400002)(30864003)(33656002)(6506007)(316002)(53546011)(66946007)(66556008)(26005)(64756008)(110136005)(107886003)(76116006)(86362001)(54906003)(52536014)(5660300002)(4326008)(8936002)(186003)(966005)(8676002)(55016002)(19627235002)(2906002)(9686003)(7696005)(83380400001)(71200400001)(66446008)(66476007)(478600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: +svmc87q6FO8NoTXIhWA+D7oomOI1L3UF7azdRO+Kj28AKpY/MrjPjyDpw4r7+uzzEfk3wTpyQCDAwLBiG990x7R+2A3S4JJplL+UV2bzrIelR0m4jZKWUaT9lWPsUXaWUVFOtVHMYdWnH9ixRT9rVpm2DkqpFNdlcLhdLDdf98oQ+rnPrKaZxIgB7VEZvbSS+nKr7ovyg+0rZd2gDHuT6DFJY3aheF13EW87WFh63eNqyG0N5H1Vanr0tBvLDUOErzYHtAevOMAabdIaSL/NpIC1tJMDl4uYNWiPq26DDY08PZF4ZqI8PjWXXAAz+dXVYdHzPwiomvEPiCsRbPw8uugmtCuu+1D3Byef9/fUo8F1Uz5WqM7sZ0kDeB8P6Mc+WIxeKoCa/KuRC31paoJW7iEenm5INcslM6XNh9PNXj1uQP+GS2f9x+g4/bh9XXBpJAr1aE1A6JRjaC11QeU6JqhsNJ8YrNnkBNeoL9W2GPxA4ImcusvEF9SgzvSBN/IHAx67ACPa8/j/lZ4I9iS2qVeYfAp0A+Lw9IwpV0UF6cIPK9sqoY9Q7kPJY7MTK28BrVweCWbHcq1Hogo/25yw9MjwF625quN9kyhOHoXGPTl+BkHqE1S2AUnYaJHBeXpqufFAmcl0oa/aetagievk2qFilGK8yF+kEY9rxHoAVtKBlJVYWfGf/jCZ5vhLXEriGobsVY4cKw054x/f2wgQt5vnQY0dUip7iCaj1eZWSB2AqwTRIlsnPs5B6TKmbc9Ki2Ecs6EhSIkfm+KPyMdAP9Q1mplkB36Qd4p+j9LJ1sugX9Ix2/2AhbLn71WtDHNAeJOjxx1BA/q+FNVULHhnt7ruT3q4l+Syk1WiB1JzV898577Zig/M5cnkOVX+Or9eCyVQPsLwFgAx3fYgFzeNw== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1928.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ea2295b-8e21-40a9-735d-08d886058c13 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2020 05:49:25.4549 (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: CizbmgPv57fj7dJW9V4zF3OyP7BFvL1fvhIWbzeO01IkgGsr/r48IF4pCw11nqmPPV0YKFYo40efbftH0IUK/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1238 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3IGNvbW1lbnRzDQpJIHdpbGwgdXBk YXRlIHRoZSBwYXRjaC4NCkJSDQpTaGVuZyBXZWkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiBTZW50OiAy MDIw5bm0MTHmnIgxMeaXpSAzOjI1DQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgU2hlbmcs IFcgPHcuc2hlbmdAaW50ZWwuY29tPg0KPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVs LmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBLdW1hciwNCj4gUmFodWwxIDxyYWh1 bDEua3VtYXJAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0K PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2NiAyLzJdIFVlZmlDcHVQa2cvUGlT bW1DcHVEeGVTbW06DQo+IFJlZmxlY3QgcGFnZSB0YWJsZSBkZXB0aCB3aXRoIHBhZ2UgdGFibGUg YWRkcmVzcw0KPiANCj4gT24gMTEvMTAvMjAgMDM6MjQsIFNoZW5nIFdlaSB3cm90ZToNCj4gPiBX aGVuIHRyeWluZyB0byBnZXQgcGFnZSB0YWJsZSBiYXNlLCBpZiBtSW50ZXJuYWxDcjMgaXMgemVy bywgaXQgd2lsbA0KPiA+IHVzZSAgdGhlIHBhZ2UgdGFibGUgZnJvbSBDUjMsIGFuZCByZWZsZWN0 IHRoZSBwYWdlIHRhYmxlIGRlcHRoIGJ5IENSNCBMQTU3DQo+IGJpdC4NCj4gPiBJZiBtSW50ZXJu YWxDcjMgaXMgbm9uIHplcm8sIGl0IHdpbGwgdXNlIHRoZSBwYWdlIHRhYmxlIGZyb20NCj4gPiBt SW50ZXJuYWxDcjMgIGFuZCByZWZsZWN0IHRoZSBwYWdlIHRhYmxlIGRlcHRoIG9mIG1JbnRlcm5h bENyMyBhdCBzYW1lIHRpbWUuDQo+ID4gSW4gdGhlIGNhc2Ugb2YgWDY0LCB3ZSB1c2UgbTVMZXZl bFBhZ2luZ05lZWRlZCB0byByZWZsZWN0IHRoZSBkZXB0aCBvZg0KPiA+IHRoZSBwYWdlIHRhYmxl LiBBbmQgaW4gdGhlIGNhc2Ugb2YgSUEzMiwgaXQgd2lsbCBub3QgdGhlIHBhZ2UgdGFibGUNCj4g PiBkZXB0aCAgaW5mb3JtYXRpb24uDQo+ID4NCj4gPiBUaGlzIHBhdGNoIGlzIGEgYnVnIGZpeCB3 aGVuIGVuYWJsZSBDRVQgZmVhdHVyZSB3aXRoIDUgbGV2ZWwgcGFnaW5nLg0KPiA+IFRoZSBTTU0g cGFnZSB0YWJsZXMgYXJlIGFsbG9jYXRlZCAvIGluaXRpYWxpemVkIGluIFBpQ3B1U21tRW50cnko KS4NCj4gPiBXaGVuIENFVCBpcyBlbmFibGVkLCBQaUNwdVNtbUVudHJ5KCkgbXVzdCBmdXJ0aGVy IG1vZGlmeSB0aGUgYXR0cmlidXRlDQo+ID4gb2YgIHNoYWRvdyBzdGFjayBwYWdlcy4gVGhpcyBw YWdlIHRhYmxlIGlzIG5vdCBzZXQgdG8gQ1IzIGluIFBpQ3B1U21tRW50cnkoKS4NCj4gPiAgU28g dGhlIHBhZ2UgdGFibGUgYmFzZSBhZGRyZXNzIGlzIHNldCB0byBtSW50ZXJuYWxDcjMgZm9yIG1v ZGlmdHkgdGhlDQo+ID4gcGFnZSB0YWJsZSBhdHRyaWJ1dGUuIEl0IGNvdWxkIG5vdCB1c2UgQ1I0 IExBNTcgYml0IHRvIHJlZmxlY3QgdGhlDQo+ID4gcGFnZSB0YWJsZSBkZXB0aCBmb3IgbUludGVy bmFsQ3IzLg0KPiA+IFNvIHdlIGNyZWF0ZSBhIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1l bnRhdGlvbiBHZXRQYWdlVGFibGUoKQ0KPiA+IHdpdGgNCj4gPiAgMiBvdXRwdXQgcGFyYW1ldGVy cy4gT25lIHBhcmFtZXRlciBpcyB1c2VkIHRvIG91dHB1dCB0aGUgcGFnZSB0YWJsZQ0KPiA+IGFk ZHJlc3MuIEFub3RoZXIgcGFyYW1ldGVyIGlzIHVzZWQgdG8gcmVmbGVjdCBpZiBpdCBpcyA1IGxl dmVsIHBhZ2luZw0KPiA+IG9yIG5vdC4NCj4gPg0KPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE1DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBTaGVuZyBXZWkgPHcuc2hlbmdAaW50ZWwuY29tPg0KPiA+IENjOiBFcmljIERvbmcgPGVyaWMu ZG9uZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiBD YzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiBDYzogUmFodWwgS3VtYXIg PHJhaHVsMS5rdW1hckBpbnRlbC5jb20+DQo+ID4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9A aW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0lhMzIv UGFnZVRibC5jICAgICAgICAgICB8IDI0ICsrKysrKysrKysrKy0NCj4gPiAgVWVmaUNwdVBrZy9Q aVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oICAgICAgICAgfCAxMiArKysrLS0tDQo+ID4g IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vU21tQ3B1TWVtb3J5TWFuYWdlbWVudC5jIHwgMjcg KysrLS0tDQo+IC0tLS0tLS0tLQ0KPiA+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9Q YWdlVGJsLmMgICAgICAgICAgICB8IDQwDQo+ICsrKysrKysrKysrKysrKysrKystLS0NCj4gPiAg NCBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0lhMzIvUGFnZVRibC5j DQo+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL0lhMzIvUGFnZVRibC5jDQo+ID4gaW5k ZXggMjQ4M2YyZWE4NC4uZjVkNjQzOTJiZCAxMDA2NDQNCj4gPiAtLS0gYS9VZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL0lhMzIvUGFnZVRibC5jDQo+ID4gKysrIGIvVWVmaUNwdVBrZy9QaVNtbUNw dUR4ZVNtbS9JYTMyL1BhZ2VUYmwuYw0KPiA+IEBAIC0xMCw2ICsxMCw4IEBAIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiAgI2luY2x1ZGUgIlBp U21tQ3B1RHhlU21tLmgiDQo+ID4NCj4gPiArZXh0ZXJuIFVJTlROIG1JbnRlcm5hbENyMzsNCj4g PiArDQo+IA0KPiAoMSkgVGhpcyBleHRlcm4gZGVjbGFyYXRpb24gKGFuZCBpdHMgY291bnRlcnBh cnQgaW4gdGhlIFg2NCBzb3VyY2UgZmlsZSkgYm90aA0KPiBiZWxvbmcgaW4gdGhlICJQaVNtbUNw dUR4ZVNtbS5oIiBoZWFkZXIuDQo+IA0KPiA+ICAvKioNCj4gPiAgICBEaXNhYmxlIENFVC4NCj4g PiAgKiovDQo+ID4gQEAgLTI4LDYgKzMwLDI2IEBAIEVuYWJsZUNldCAoDQo+ID4gICAgVk9JRA0K PiA+ICAgICk7DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAgR2V0IHBhZ2UgdGFibGUgYmFzZSBhZGRy ZXNzIGFuZCB0aGUgZGVwdGggb2YgdGhlIHBhZ2UgdGFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bVtvdXRdIEJhc2UgICAgICAgIFBhZ2UgdGFibGUgYmFzZSBhZGRyZXNzLg0KPiA+ICsgIEBwYXJh bVtvdXRdIEZpdmVMZXZlbHMgIFRSVUUgbWVhbnMgNSBsZXZlbCBwYWdpbmcuIEZBTFNFIG1lYW5z IDQgbGV2ZWwNCj4gcGFnaW5nLg0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtHZXRQYWdlVGFi bGUgKA0KPiA+ICsgIE9VVCBVSU5UTiAgICpCYXNlLA0KPiA+ICsgIE9VVCBCT09MRUFOICpGaXZl TGV2ZWxzIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgKkJhc2UgPSAoKG1JbnRl cm5hbENyMyA9PSAwKSA/DQo+ID4gKyAgICAgICAgICAgIChBc21SZWFkQ3IzICgpICYgUEFHSU5H XzRLX0FERFJFU1NfTUFTS182NCkgOg0KPiA+ICsgICAgICAgICAgICBtSW50ZXJuYWxDcjMpOw0K PiA+ICsgIGlmIChGaXZlTGV2ZWxzICE9IE5VTEwpIHsNCj4gPiArICAgICpGaXZlTGV2ZWxzID0g RkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAgICBDcmVhdGUg UGFnZVRhYmxlIGZvciBTTU0gdXNlLg0KPiA+DQo+ID4gQEAgLTI2OCw3ICsyOTAsNyBAQCBTZXRQ YWdlVGFibGVBdHRyaWJ1dGVzICgNCj4gPiAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIlN0YXJ0 Li4uXG4iKSk7DQo+ID4gICAgICBQYWdlVGFibGVTcGxpdHRlZCA9IEZBTFNFOw0KPiA+DQo+ID4g LSAgICBMM1BhZ2VUYWJsZSA9IChVSU5UNjQgKilHZXRQYWdlVGFibGVCYXNlICgpOw0KPiA+ICsg ICAgR2V0UGFnZVRhYmxlICgoVUlOVE4gKikmTDNQYWdlVGFibGUsIE5VTEwpOw0KPiA+DQo+ID4g ICAgICBTbW1TZXRNZW1vcnlBdHRyaWJ1dGVzRXgNCj4gKChFRklfUEhZU0lDQUxfQUREUkVTUyko VUlOVE4pTDNQYWdlVGFibGUsIFNJWkVfNEtCLCBFRklfTUVNT1JZX1JPLA0KPiAmSXNTcGxpdHRl ZCk7DQo+ID4gICAgICBQYWdlVGFibGVTcGxpdHRlZCA9IChQYWdlVGFibGVTcGxpdHRlZCB8fCBJ c1NwbGl0dGVkKTsNCj4gDQo+ICgyKSBQbGVhc2UgaW50cm9kdWNlIGEgaGVscGVyIHZhcmlhYmxl IGluc3RlYWQ7DQo+IA0KPiAgIFVJTlROIFBhZ2VUYWJsZUJhc2U7DQo+IA0KPiBhbmQgd3JpdGUN Cj4gDQo+ICAgR2V0UGFnZVRhYmxlICgmUGFnZVRhYmxlQmFzZSwgTlVMTCk7DQo+ICAgTDNQYWdl VGFibGUgPSAoVUlOVDY0ICopUGFnZVRhYmxlQmFzZTsNCj4gDQo+IFRoaXMgaXMgbXVjaCBjbGVh bmVyLg0KPiANCj4gVGhlcmUgaXMgYSBiaWcgY29uY2VwdHVhbCBkaWZmZXJlbmNlIGJldHdlZW4g Y29udmVydGluZyBhbiBpbnRlZ2VyIHRvIGEgcG9pbnRlciwNCj4gYW5kIHJlaW50ZXJwcmV0aW5n IHRoZSBiaXQgcGF0dGVybiBvZiBhbiBpbnRlZ2VyIGFzIGEgcG9pbnRlci4NCj4gDQo+ICgzKSBG dXJ0aGVybW9yZSwgaWYgeW91IGxvb2sgYXQgdGhlIHNhbWUgY29udGV4dCwgeW91IHdpbGwgc2Vl IHRoYXQgd2UgaGF2ZSB0aGUNCj4gZXhwcmVzc2lvbiBhIGJpdCBsYXRlcjoNCj4gDQo+ICAgKEVG SV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTilMM1BhZ2VUYWJsZQ0KPiANCj4gYW5kIG5vdyB5b3Ug Y2FuIHNpbXBsaWZ5IHRoYXQgdG8NCj4gDQo+ICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKVBhZ2VU YWJsZUJhc2UNCj4gDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhl U21tL1BpU21tQ3B1RHhlU21tLmgNCj4gPiBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlT bW1DcHVEeGVTbW0uaA0KPiA+IGluZGV4IDdmYjNhMmQ5ZTQuLjU5YmM3NjQxNDAgMTAwNjQ0DQo+ ID4gLS0tIGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oDQo+ID4g KysrIGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oDQo+ID4gQEAg LTk0MiwxMyArOTQyLDE1IEBAIFNldFBhZ2VUYWJsZUF0dHJpYnV0ZXMgKA0KPiA+ICAgICk7DQo+ ID4NCj4gPiAgLyoqDQo+ID4gLSAgUmV0dXJuIHBhZ2UgdGFibGUgYmFzZS4NCj4gPiArICBHZXQg cGFnZSB0YWJsZSBiYXNlIGFkZHJlc3MgYW5kIHRoZSBkZXB0aCBvZiB0aGUgcGFnZSB0YWJsZS4N Cj4gPg0KPiA+IC0gIEByZXR1cm4gcGFnZSB0YWJsZSBiYXNlLg0KPiA+ICsgIEBwYXJhbVtvdXRd IEJhc2UgICAgICAgIFBhZ2UgdGFibGUgYmFzZSBhZGRyZXNzLg0KPiA+ICsgIEBwYXJhbVtvdXRd IEZpdmVMZXZlbHMgIFRSVUUgbWVhbnMgNSBsZXZlbCBwYWdpbmcuIEZBTFNFIG1lYW5zIDQgbGV2 ZWwNCj4gcGFnaW5nLg0KPiA+ICAqKi8NCj4gPiAtVUlOVE4NCj4gPiAtR2V0UGFnZVRhYmxlQmFz ZSAoDQo+ID4gLSAgVk9JRA0KPiA+ICtWT0lEDQo+ID4gK0dldFBhZ2VUYWJsZSAoDQo+ID4gKyAg T1VUIFVJTlROICAgKkJhc2UsDQo+ID4gKyAgT1VUIEJPT0xFQU4gKkZpdmVMZXZlbHMgT1BUSU9O QUwNCj4gPiAgICApOw0KPiA+DQo+ID4gIC8qKg0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtn L1BpU21tQ3B1RHhlU21tL1NtbUNwdU1lbW9yeU1hbmFnZW1lbnQuYw0KPiA+IGIvVWVmaUNwdVBr Zy9QaVNtbUNwdUR4ZVNtbS9TbW1DcHVNZW1vcnlNYW5hZ2VtZW50LmMNCj4gPiBpbmRleCBkNjdm MDM2YWVhLi5mZTcxYjc3Mjk1IDEwMDY0NA0KPiA+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVE eGVTbW0vU21tQ3B1TWVtb3J5TWFuYWdlbWVudC5jDQo+ID4gKysrIGIvVWVmaUNwdVBrZy9QaVNt bUNwdUR4ZVNtbS9TbW1DcHVNZW1vcnlNYW5hZ2VtZW50LmMNCj4gPiBAQCAtNDksMjIgKzQ5LDYg QEAgU2V0UGFnZVRhYmxlQmFzZSAoDQo+ID4gICAgbUludGVybmFsQ3IzID0gQ3IzOw0KPiA+ICB9 DQo+ID4NCj4gPiAtLyoqDQo+ID4gLSAgUmV0dXJuIHBhZ2UgdGFibGUgYmFzZS4NCj4gPiAtDQo+ ID4gLSAgQHJldHVybiBwYWdlIHRhYmxlIGJhc2UuDQo+ID4gLSoqLw0KPiA+IC1VSU5UTg0KPiA+ IC1HZXRQYWdlVGFibGVCYXNlICgNCj4gPiAtICBWT0lEDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4g LSAgaWYgKG1JbnRlcm5hbENyMyAhPSAwKSB7DQo+ID4gLSAgICByZXR1cm4gbUludGVybmFsQ3Iz Ow0KPiA+IC0gIH0NCj4gPiAtICByZXR1cm4gKEFzbVJlYWRDcjMgKCkgJiBQQUdJTkdfNEtfQURE UkVTU19NQVNLXzY0KTsgLX0NCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFJldHVybiBsZW5ndGgg YWNjb3JkaW5nIHRvIHBhZ2UgYXR0cmlidXRlcy4NCj4gPg0KPiA+IEBAIC0xMzEsOCArMTE1LDgg QEAgR2V0UGFnZVRhYmxlRW50cnkgKA0KPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDNQ YWdlVGFibGU7DQo+ID4gICAgVUlOVDY0ICAgICAgICAgICAgICAgICpMNFBhZ2VUYWJsZTsNCj4g PiAgICBVSU5UNjQgICAgICAgICAgICAgICAgKkw1UGFnZVRhYmxlOw0KPiA+IC0gIElBMzJfQ1I0 ICAgICAgICAgICAgICBDcjQ7DQo+ID4gICAgQk9PTEVBTiAgICAgICAgICAgICAgIEVuYWJsZTVM ZXZlbFBhZ2luZzsNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgKlBhZ2VUYWJsZUJhc2Ug PSBOVUxMOw0KPiANCj4gKDQpIEluaXRpYWxpemF0aW9uIG9mIGxvY2FsIHZhcmlhYmxlcyAodGhh dCBhcmUgbm90IHN0YXRpYykgaXMgZm9yYmlkZGVuIGJ5IHRoZSBlZGsyDQo+IGNvZGluZyBzdHls ZS4NCj4gDQo+ICg1KSBUaGUgdHlwZSBvZiB0aGlzIHZhcmlhYmxlIHNob3VsZCBiZSBVSU5UTiwg bm90IChVSU5UNjQqKS4NCj4gDQo+ID4NCj4gPiAgICBJbmRleDUgPSAoKFVJTlROKVJTaGlmdFU2 NCAoQWRkcmVzcywgNDgpKSAmIFBBR0lOR19QQUVfSU5ERVhfTUFTSzsNCj4gPiAgICBJbmRleDQg PSAoKFVJTlROKVJTaGlmdFU2NCAoQWRkcmVzcywgMzkpKSAmIFBBR0lOR19QQUVfSU5ERVhfTUFT SzsNCj4gPiBAQCAtMTQwLDEyICsxMjQsMTEgQEAgR2V0UGFnZVRhYmxlRW50cnkgKA0KPiA+ICAg IEluZGV4MiA9ICgoVUlOVE4pQWRkcmVzcyA+PiAyMSkgJiBQQUdJTkdfUEFFX0lOREVYX01BU0s7 DQo+ID4gICAgSW5kZXgxID0gKChVSU5UTilBZGRyZXNzID4+IDEyKSAmIFBBR0lOR19QQUVfSU5E RVhfTUFTSzsNCj4gPg0KPiA+IC0gIENyNC5VaW50TiA9IEFzbVJlYWRDcjQgKCk7DQo+ID4gLSAg RW5hYmxlNUxldmVsUGFnaW5nID0gKEJPT0xFQU4pIChDcjQuQml0cy5MQTU3ID09IDEpOw0KPiA+ ICsgIEdldFBhZ2VUYWJsZSAoKFVJTlROICopJlBhZ2VUYWJsZUJhc2UsICZFbmFibGU1TGV2ZWxQ YWdpbmcpOw0KPiANCj4gKDYpIFBsZWFzZSBhZGp1c3QgdGhlIGZpcnN0IGFyZ3VtZW50IGFjY29y ZGluZyB0byAoNSkgLS0gZHJvcCB0aGUNCj4gKFVJTlROKikgY2FzdC4NCj4gDQo+ID4NCj4gPiAg ICBpZiAoc2l6ZW9mKFVJTlROKSA9PSBzaXplb2YoVUlOVDY0KSkgew0KPiA+ICAgICAgaWYgKEVu YWJsZTVMZXZlbFBhZ2luZykgew0KPiA+IC0gICAgICBMNVBhZ2VUYWJsZSA9IChVSU5UNjQgKilH ZXRQYWdlVGFibGVCYXNlICgpOw0KPiA+ICsgICAgICBMNVBhZ2VUYWJsZSA9IFBhZ2VUYWJsZUJh c2U7DQo+ID4gICAgICAgIGlmIChMNVBhZ2VUYWJsZVtJbmRleDVdID09IDApIHsNCj4gPiAgICAg ICAgICAqUGFnZUF0dHJpYnV0ZSA9IFBhZ2VOb25lOw0KPiA+ICAgICAgICAgIHJldHVybiBOVUxM Ow0KPiA+IEBAIC0xNTMsNyArMTM2LDcgQEAgR2V0UGFnZVRhYmxlRW50cnkgKA0KPiA+DQo+ID4g ICAgICAgIEw0UGFnZVRhYmxlID0gKFVJTlQ2NCAqKShVSU5UTikoTDVQYWdlVGFibGVbSW5kZXg1 XSAmDQo+IH5tQWRkcmVzc0VuY01hc2sgJiBQQUdJTkdfNEtfQUREUkVTU19NQVNLXzY0KTsNCj4g PiAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgIEw0UGFnZVRhYmxlID0gKFVJTlQ2NCAqKUdldFBh Z2VUYWJsZUJhc2UgKCk7DQo+ID4gKyAgICAgIEw0UGFnZVRhYmxlID0gUGFnZVRhYmxlQmFzZTsN Cj4gPiAgICAgIH0NCj4gPiAgICAgIGlmIChMNFBhZ2VUYWJsZVtJbmRleDRdID09IDApIHsNCj4g PiAgICAgICAgKlBhZ2VBdHRyaWJ1dGUgPSBQYWdlTm9uZTsNCj4gPiBAQCAtMTYyLDcgKzE0NSw3 IEBAIEdldFBhZ2VUYWJsZUVudHJ5ICgNCj4gPg0KPiA+ICAgICAgTDNQYWdlVGFibGUgPSAoVUlO VDY0ICopKFVJTlROKShMNFBhZ2VUYWJsZVtJbmRleDRdICYNCj4gfm1BZGRyZXNzRW5jTWFzayAm IFBBR0lOR180S19BRERSRVNTX01BU0tfNjQpOw0KPiA+ICAgIH0gZWxzZSB7DQo+ID4gLSAgICBM M1BhZ2VUYWJsZSA9IChVSU5UNjQgKilHZXRQYWdlVGFibGVCYXNlICgpOw0KPiA+ICsgICAgTDNQ YWdlVGFibGUgPSBQYWdlVGFibGVCYXNlOw0KPiA+ICAgIH0NCj4gPiAgICBpZiAoTDNQYWdlVGFi bGVbSW5kZXgzXSA9PSAwKSB7DQo+ID4gICAgICAqUGFnZUF0dHJpYnV0ZSA9IFBhZ2VOb25lOw0K PiANCj4gKDcpIEFuZCBzbyBhbGwgdGhyZWUgb2YgdGhlc2Ugc2hvdWxkIGJlIChVSU5UNjQgKilQ YWdlVGFibGVCYXNlLg0KPiANCj4gDQo+ID4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvUGlTbW1D cHVEeGVTbW0vWDY0L1BhZ2VUYmwuYw0KPiA+IGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9Y NjQvUGFnZVRibC5jDQo+ID4gaW5kZXggODEwOTg1ZGYyMC4uNTE0NjlkM2I4OCAxMDA2NDQNCj4g PiAtLS0gYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4gPiArKysg Yi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4gPiBAQCAtMTksNiAr MTksOCBAQCBCT09MRUFODQo+IG1DcHVTbW1SZXN0cmljdGVkTWVtb3J5QWNjZXNzOw0KPiA+ICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtNUxldmVsUGFnaW5nTmVlZGVkOw0K PiA+ICBYODZfQVNTRU1CTFlfUEFUQ0hfTEFCRUwgICAgICAgICAgICBnUGF0Y2g1TGV2ZWxQYWdp bmdOZWVkZWQ7DQo+ID4NCj4gPiArZXh0ZXJuIFVJTlROIG1JbnRlcm5hbENyMzsNCj4gDQo+ICg4 KSBCZWxvbmdzIGluICJQaVNtbUNwdUR4ZVNtbS5oIi4NCj4gDQo+ID4gKw0KPiA+ICAvKioNCj4g PiAgICBEaXNhYmxlIENFVC4NCj4gPiAgKiovDQo+ID4gQEAgLTEwNCw2ICsxMDYsMzUgQEAgSXM1 TGV2ZWxQYWdpbmdOZWVkZWQgKA0KPiA+ICAgIH0NCj4gPiAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ ICsgIEdldCBwYWdlIHRhYmxlIGJhc2UgYWRkcmVzcyBhbmQgdGhlIGRlcHRoIG9mIHRoZSBwYWdl IHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBCYXNlICAgICAgICBQYWdlIHRhYmxl IGJhc2UgYWRkcmVzcy4NCj4gPiArICBAcGFyYW1bb3V0XSBGaXZlTGV2ZWxzICBUUlVFIG1lYW5z IDUgbGV2ZWwgcGFnaW5nLiBGQUxTRSBtZWFucyA0IGxldmVsDQo+IHBhZ2luZy4NCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArR2V0UGFnZVRhYmxlICgNCj4gPiArICBPVVQgVUlOVE4gICAqQmFz ZSwNCj4gPiArICBPVVQgQk9PTEVBTiAqRml2ZUxldmVscyBPUFRJT05BTA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIElBMzJfQ1I0IENyNDsNCj4gPiArDQo+ID4gKyAgaWYgKG1JbnRlcm5hbENy MyA9PSAwKSB7DQo+ID4gKyAgICAqQmFzZSA9IEFzbVJlYWRDcjMgKCkgJiBQQUdJTkdfNEtfQURE UkVTU19NQVNLXzY0Ow0KPiA+ICsgICAgaWYgKEZpdmVMZXZlbHMgIT0gTlVMTCkgew0KPiA+ICsg ICAgICBDcjQuVWludE4gPSBBc21SZWFkQ3I0ICgpOw0KPiA+ICsgICAgICAqRml2ZUxldmVscyA9 IChCT09MRUFOKShDcjQuQml0cy5MQTU3ID09IDEpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcmV0 dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgKkJhc2UgPSBtSW50ZXJuYWxDcjM7DQo+ID4g KyAgaWYgKEZpdmVMZXZlbHMgIT0gTlVMTCkgew0KPiA+ICsgICAgKkZpdmVMZXZlbHMgPSBtNUxl dmVsUGFnaW5nTmVlZGVkOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqDQo+ID4g ICAgU2V0IHN1Yi1lbnRyaWVzIG51bWJlciBpbiBlbnRyeS4NCj4gPg0KPiA+IEBAIC0xMTE0LDEx ICsxMTQ1LDEwIEBAIFNldFBhZ2VUYWJsZUF0dHJpYnV0ZXMgKA0KPiA+ICAgIEJPT0xFQU4gICAg ICAgICAgICAgICBJc1NwbGl0dGVkOw0KPiA+ICAgIEJPT0xFQU4gICAgICAgICAgICAgICBQYWdl VGFibGVTcGxpdHRlZDsNCj4gPiAgICBCT09MRUFOICAgICAgICAgICAgICAgQ2V0RW5hYmxlZDsN Cj4gPiAtICBJQTMyX0NSNCAgICAgICAgICAgICAgQ3I0Ow0KPiA+ICAgIEJPT0xFQU4gICAgICAg ICAgICAgICBFbmFibGU1TGV2ZWxQYWdpbmc7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAg ICpQYWdlVGFibGVCYXNlID0gTlVMTDsNCj4gDQo+ICg5KSBJbml0aWFsaXphdGlvbiBvZiBsb2Nh bCB2YXJpYWJsZXMgKHRoYXQgYXJlIG5vdCBzdGF0aWMpIGlzIGZvcmJpZGRlbiBieSB0aGUgZWRr Mg0KPiBjb2Rpbmcgc3R5bGUuDQo+IA0KPiAoMTApIFRoZSB0eXBlIG9mIHRoaXMgdmFyaWFibGUg c2hvdWxkIGJlIFVJTlROLCBub3QgKFVJTlQ2NCopLg0KPiANCj4gDQo+ID4NCj4gPiAtICBDcjQu VWludE4gPSBBc21SZWFkQ3I0ICgpOw0KPiA+IC0gIEVuYWJsZTVMZXZlbFBhZ2luZyA9IChCT09M RUFOKSAoQ3I0LkJpdHMuTEE1NyA9PSAxKTsNCj4gPiArICBHZXRQYWdlVGFibGUgKChVSU5UTiAq KSZQYWdlVGFibGVCYXNlLCAmRW5hYmxlNUxldmVsUGFnaW5nKTsNCj4gDQo+ICgxMSkgUGxlYXNl IGRyb3AgdGhlIChVSU5UTiopIGNhc3QuDQo+IA0KPiA+DQo+ID4gICAgLy8NCj4gPiAgICAvLyBE b24ndCBtYXJrIHBhZ2UgdGFibGUgbWVtb3J5IGFzIHJlYWQtb25seSBpZiBAQCAtMTE2NCw3ICsx MTk0LDcNCj4gPiBAQCBTZXRQYWdlVGFibGVBdHRyaWJ1dGVzICgNCj4gPiAgICAgIFBhZ2VUYWJs ZVNwbGl0dGVkID0gRkFMU0U7DQo+ID4gICAgICBMNVBhZ2VUYWJsZSA9IE5VTEw7DQo+ID4gICAg ICBpZiAoRW5hYmxlNUxldmVsUGFnaW5nKSB7DQo+ID4gLSAgICAgIEw1UGFnZVRhYmxlID0gKFVJ TlQ2NCAqKUdldFBhZ2VUYWJsZUJhc2UgKCk7DQo+ID4gKyAgICAgIEw1UGFnZVRhYmxlID0gUGFn ZVRhYmxlQmFzZTsNCj4gPiAgICAgICAgU21tU2V0TWVtb3J5QXR0cmlidXRlc0V4DQo+ICgoRUZJ X1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKUw1UGFnZVRhYmxlLCBTSVpFXzRLQiwgRUZJX01FTU9S WV9STywNCj4gJklzU3BsaXR0ZWQpOw0KPiA+ICAgICAgICBQYWdlVGFibGVTcGxpdHRlZCA9IChQ YWdlVGFibGVTcGxpdHRlZCB8fCBJc1NwbGl0dGVkKTsNCj4gPiAgICAgIH0NCj4gPiBAQCAtMTE3 Niw3ICsxMjA2LDcgQEAgU2V0UGFnZVRhYmxlQXR0cmlidXRlcyAoDQo+ID4gICAgICAgICAgICBj b250aW51ZTsNCj4gPiAgICAgICAgICB9DQo+ID4gICAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAg ICAgTDRQYWdlVGFibGUgPSAoVUlOVDY0ICopR2V0UGFnZVRhYmxlQmFzZSAoKTsNCj4gPiArICAg ICAgICBMNFBhZ2VUYWJsZSA9IFBhZ2VUYWJsZUJhc2U7DQo+ID4gICAgICAgIH0NCj4gPiAgICAg ICAgU21tU2V0TWVtb3J5QXR0cmlidXRlc0V4DQo+ICgoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJ TlROKUw0UGFnZVRhYmxlLCBTSVpFXzRLQiwgRUZJX01FTU9SWV9STywNCj4gJklzU3BsaXR0ZWQp Ow0KPiA+ICAgICAgICBQYWdlVGFibGVTcGxpdHRlZCA9IChQYWdlVGFibGVTcGxpdHRlZCB8fCBJ c1NwbGl0dGVkKTsNCj4gPg0KPiANCj4gKDEyKSBQbGVhc2UgYWRkIHRoZSBuZWNlc3NhcnkgKFVJ TlQ2NCopUGFnZVRhYmxlQmFzZSBjYXN0cyAodHdvIG9mIHRoZW0pLg0KPiANCj4gKDEzKSBZb3Ug Y2FuIHNpbXBsaWZ5DQo+IA0KPiAgIChFRklfUEhZU0lDQUxfQUREUkVTUykoVUlOVE4pTDVQYWdl VGFibGUNCj4gDQo+IHRvDQo+IA0KPiAgIChFRklfUEhZU0lDQUxfQUREUkVTUylQYWdlVGFibGVC YXNlDQo+IA0KPiBUaGFua3MNCj4gTGFzemxvDQoNCg==