From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BA3F621A07A92 for ; Wed, 19 Sep 2018 08:29:11 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Sep 2018 08:29:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,394,1531810800"; d="scan'208";a="263978595" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 19 Sep 2018 08:28:58 -0700 Received: from fmsmsx153.amr.corp.intel.com (10.18.125.6) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 19 Sep 2018 08:28:57 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX153.amr.corp.intel.com (10.18.125.6) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 19 Sep 2018 08:28:57 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.227]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.226]) with mapi id 14.03.0319.002; Wed, 19 Sep 2018 23:28:55 +0800 From: "Gao, Liming" To: Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Yao, Jiewen" , "Dong, Eric" , "Kinney, Michael D" , "Leif Lindholm (Linaro address)" , Ard Biesheuvel , Andrew Fish , "Cetola, Stephano" Thread-Topic: [edk2] [Patch] UefiCpuPkg PiSmmCpuDxeSmm: Update SmiEntry function run the same position Thread-Index: AQHUSleqlDA3wq+4skWHF+7ZTG6wjKTsHNGAgACjmxD//8geAIALPH5w Date: Wed, 19 Sep 2018 15:28:55 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E2FFBCE@SHSMSX104.ccr.corp.intel.com> References: <1536729218-8884-1-git-send-email-liming.gao@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E2F66CA@SHSMSX104.ccr.corp.intel.com> <93d6b5eb-3e11-ed12-e860-b6802aaaec0d@redhat.com> In-Reply-To: <93d6b5eb-3e11-ed12-e860-b6802aaaec0d@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzk0NTRiOTMtYWNmZC00MzkxLThkNzItNmJlMzdkNzEyZTA5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZ0VFbWRUc0U5dGF2QVZ3WkFEXC9pd0dxcGxYeThwWEhMbWJSOWN4VXlmMGs5Vlc1U3VZZjdpTm9aREp1aFZrVEwifQ== dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] UefiCpuPkg PiSmmCpuDxeSmm: Update SmiEntry function run the same position X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Sep 2018 15:29:11 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvOg0KICBJIHVuZGVyc3RhbmQgeW91ciBwb2ludC4gSSBhZ3JlZSB5b3VyIHN1Z2dlc3Rp b24uIEJaIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5 MSBoYXMgYmVlbiBzdWJtaXR0ZWQuIFllcy4gUGlTbW1DcHVTbWlFbnRyeUZpeHVwQWRkcmVzcygp IGlzIGNhbGxlZCBpbiB0aGUgZHJpdmVyIGVudHJ5IHBvaW50IHRvIGZpeCB1cCB0aGUgYWRkcmVz cyBmaXJzdC4gDQoNCiAgSSB3aWxsIHNlbmQgVjIgcGF0Y2ggd2l0aCB0aGUgZGV0YWlsIGNvbW1p dCBtZXNzYWdlIGFuZCBjb2RlIGNvbW1lbnRzLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBT ZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDEzLCAyMDE4IDM6NDkgQU0NCj4gVG86IEdhbywgTGlt aW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRv bmdAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgTGVpZiBMaW5kaG9sbSAoTGluYXJvIGFkZHJlc3MpIDxsZWlmLmxpbmRob2xtQGxp bmFyby5vcmc+OyBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47DQo+ IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBDZXRvbGEsIFN0ZXBoYW5vIDxzdGVwaGFu by5jZXRvbGFAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQYXRjaF0gVWVmaUNw dVBrZyBQaVNtbUNwdUR4ZVNtbTogVXBkYXRlIFNtaUVudHJ5IGZ1bmN0aW9uIHJ1biB0aGUgc2Ft ZSBwb3NpdGlvbg0KPiANCj4gT24gMDkvMTIvMTggMTc6NDIsIEdhbywgTGltaW5nIHdyb3RlOg0K PiA+IExhc3psbzoNCj4gPiAgIEJlZm9yZSBjb21taXQgZTIxZTM1NWUyY2E3ZmVmYjE1YjRkZjcw NzhmOTk1ZDNmYjljMmI4OSwgam1wIF9TbWlIYW5kbGVyIGlzIGNvbW1lbnRlZC4gQW5kIGJlbG93 IGNvZGUsDQo+IEFTTV9QRlgoQ3B1U21tRGVidWdFbnRyeSkgaXMgbW92ZWQgaW50byByYXgsIHRo ZW4gY2FsbCBpdC4gQnV0LCB0aGlzIGNvZGUgZG9lc24ndCB3b3JrIGluIFhDT0RFNSB0b29sIGNo YWluLiBMaWtlIHlvdSBzYXksIFhDT0RFNQ0KPiBkb2Vzbid0IGdlbmVyYXRlZCB0aGUgYWJzb2x1 dGUgYWRkcmVzcyBpbiB0aGUgRUZJIGltYWdlLiBTbywgcmF4IHN0b3JlcyB0aGUgcmVsYXRpdmUg YWRkcmVzcy4gT25jZSB0aGlzIGxvZ2ljIGlzIG1vdmVkIHRvIGFub3RoZXIgcGxhY2UsIGl0DQo+ IHdpbGwgbm90IHdvcmsuDQo+ID4gOyAgIGptcCAgICAgX1NtaUhhbmRsZXIgICAgICAgICAgICAg ICAgIDsgaW5zdHJ1Y3Rpb24gaXMgbm90IG5lZWRlZA0KPiA+IC4uLg0KPiA+ICAgICBtb3YgICAg IHJheCwgQVNNX1BGWChDcHVTbW1EZWJ1Z0VudHJ5KQ0KPiA+ICAgICBjYWxsICAgIHJheA0KPiA+ DQo+ID4gIENvbW1pdCBlMjFlMzU1ZTJjYTdmZWZiMTViNGRmNzA3OGY5OTVkM2ZiOWMyYjg5IGlz IHRvIHN1cHBvcnQgWENPREU1LiBJIGNob29zZSBvbmUgdHJpY2t5IHdheSB0byBmaXggaXQuIEFs dGhvdWdoIFNtaUVudHJ5DQo+IGxvZ2ljIGlzIGNvcGllZCB0byBhbm90aGVyIHBsYWNlIGFuZCBy dW4sIGJ1dCBoZXJlIEkgZW5hYmxlIGptcCBfU21pSGFuZGxlciB0byBqbXAgdGhlIG9yaWdpbmFs IGNvZGUgbG9jYXRpb24sIHRoZW4gY2FsbA0KPiBBU01fUEZYKENwdVNtbURlYnVnRW50cnkpIHdp dGggdGhlIHJlbGF0aXZlIGFkZHJlc3MgY2FuIHdvcmsuDQo+ID4gICAgIG1vdiAgICAgcmF4LCBz dHJpY3QgcXdvcmQgMCAgICAgICAgIDsgICBtb3YgICAgIHJheCwgX1NtaUhhbmRsZXINCj4gPiBf U21pSGFuZGxlckFic0FkZHI6DQo+ID4gICAgIGptcCAgICAgcmF4DQo+ID4gLi4uDQo+ID4gICAg IGNhbGwgICAgQVNNX1BGWChDcHVTbW1EZWJ1Z0VudHJ5KQ0KPiA+DQo+ID4gICBUb2RheSwgSmll d2VuIHJhaXNlcyB0aGUgaXNzdWUgdGhhdCBTbWlIYW5kbGVyIHNob3VsZCBydW4gaW4gdGhlIGNv cGllZCBhZGRyZXNzLCBjYW4ndCBydW4gaW4gdGhlIGNvbW1vbiBhZGRyZXNzLiBTbywgSSB1cGRh dGUgaXRzDQo+IGxvZ2ljIGFuZCByZW1vdmUgam1wIF9TbWlIYW5kbGVyLCB0aGVuIGtlZXAgY29k ZSBjb250aW51ZSBydW4gaW4gY29waWVkIGFkZHJlc3MuIEJ1dCwgSSBzdGlsbCBuZWVkIHRvIGZp eCB1cCBDcHVTbW1EZWJ1Z0VudHJ5DQo+IGFkZHJlc3MgdG8gdGhlIGFic29sdXRlIGFkZHJlc3Mu IFRoZXkgYXJlIGJvdGggZm9yIHRoaXMgaXNzdWUuIFRoZXkgY2FuJ3QgYmUgc2VwYXJhdGVkLg0K PiA+DQo+ID4gLi4uDQo+ID4gICAgIG1vdiAgICAgcmF4LCBzdHJpY3QgcXdvcmQgMCAgICAgICAg IDsgICBjYWxsICAgIEFTTV9QRlgoQ3B1U21tRGVidWdFbnRyeSkNCj4gPiBDcHVTbW1EZWJ1Z0Vu dHJ5QWJzQWRkcjoNCj4gPiAgICAgY2FsbCAgICByYXgNCj4gDQo+IFRoYW5rIHlvdSB2ZXJ5IG11 Y2ggZm9yIHRoZSBleHBsYW5hdGlvbi4gSSB1bmRlcnN0YW5kIG5vdy4NCj4gDQo+IEkgYWxzbyB1 bmRlcnN0YW5kIHdoeSBJIGdvdCBjb25mdXNlZCBzbyBtdWNoIGVhcmxpZXIuIFRoZSByZWFzb24g aXMgdGhhdA0KPiB0aGUgY29kZSB3YXMgbm90IGNvbW1lbnRlZCBzdWZmaWNpZW50bHkuIEl0IHNo b3VsZCBoYXZlIGJlZW4gcG9pbnRlZCBvdXQNCj4gd2hhdCBwYXJ0IG9mIHRoZSBpbnN0cnVjdGlv biBzdHJlYW0gd2FzIG1lYW50IHRvIGJlIGV4ZWN1dGVkIGZyb20gdGhlDQo+IGNvcGllZCBhZGRy ZXNzIHNwYWNlICh0aGF0IGlzLCBub3QgZnJvbSB0aGUgUGlTbW1DcHVEeGVTbW0gaW1hZ2UNCj4g aXRzZWxmKSwgYW5kIHdoYXQgcGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHdhcyBtZWFu dCB0byBleGVjdXRlDQo+IGZyb20gd2l0aGluIHRoZSB0aGUgUGlTbW1DcHVEeGVTbW0gaW1hZ2Uu IFdpdGhvdXQgc3VjaCBjb21tZW50cywgaXQncw0KPiB0b28gaGFyZCB0byB1bmRlcnN0YW5kIHRo ZSB0cmFuc2l0aW9ucy4NCj4gDQo+IFlvdSBvciBKaWV3ZW4gc2hvdWxkIHBsZWFzZSBmaWxlIGEg VGlhbm9Db3JlIEJaIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQNCj4gaXNzdWUuIE5hbWVseSB0aGF0 LCBkdWUgdG8gY2lyY3Vtc3RhbmNlcyB5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJlLA0KPiBu byBwYXJ0IG9mIHRoZSBfU21pSGFuZGxlciByb3V0aW5lIHNob3VsZCBleGVjdXRlIGZyb20gd2l0 aGluIHRoZQ0KPiBQaVNtbUNwdUR4ZVNtbSBpbWFnZTsgaW5zdGVhZCwgYWxsIG9mIGl0IHNob3Vs ZCBleGVjdXRlIGZyb20gdGhlDQo+IGNvcGllZC10byBhZGRyZXNzIHNwYWNlLiBUaGlzIHJlcXVp cmVzIGVsaW1pbmF0aW5nIHRoZSBqdW1wIGJhY2sgaW50bw0KPiB0aGUgUGlTbW1DcHVEeGVTbW0g aW1hZ2UsIGFuZCBhbHNvIHBhdGNoaW5nIHVwIHRoZSByZWxhdGl2ZSBhZGRyZXNzZXMNCj4gKHRv IGFic29sdXRlIGFkZHJlc3NlcyksIGZvciB0aG9zZSBpbnN0cnVjdGlvbnMgdGhhdCB1c2VkIHRv IHJ1biBmcm9tDQo+IHdpdGhpbiB0aGUgUGlTbW1DcHVEeGVTbW0gaW1hZ2UsIGJ1dCBub3cgbm8g bG9uZ2VyIHdpbGwuIFRoZSBuZWNlc3NhcnkNCj4gY2hhbmdlcyBzaG91bGQgbm90IGFmZmVjdCB0 aGUgYmVoYXZpb3Igb2YgcGxhdGZvcm1zIHRoYXQgYWxyZWFkeSBjb25zdW1lDQo+IFBpU21tQ3B1 RHhlU21tIGZyb20gZWRrMi4NCj4gDQo+IFRoZSBoaXN0b3JpY2FsIG92ZXJ2aWV3IHlvdSBwcm92 aWRlIGFib3ZlIGlzIGFsc28gdmFsdWFibGUsIHBsZWFzZQ0KPiBpbmNsdWRlIGl0IGluIHRoZSBj b21taXQgbWVzc2FnZSBhbmQvb3IgdGhlIEJaIGFzIHdlbGwuDQo+IA0KPiBJdCB3b3VsZCBzdGls bCBiZSBuaWNlIHRvIGNvbW1lbnQgd2hhdCBwYXJ0cyBvZiB0aGUgc291cmNlIGZpbGUgcnVuIGZy b20NCj4gd2l0aGluIHRoZSBQaVNtbUNwdUR4ZVNtbSBpbWFnZS4gRm9yIGV4YW1wbGUsDQo+IFBp U21tQ3B1U21pRW50cnlGaXh1cEFkZHJlc3MoKSBkb2VzLCByaWdodD8NCj4gDQo+IC0tKi0tDQo+ IA0KPiBQbGVhc2UgdW5kZXJzdGFuZCB0aGF0IG15IGlzc3VlIGhlcmUgaXMgbW9yZSBzZXJpb3Vz IHRoYW4ganVzdCBtaXNzaW5nDQo+IHRoZSBleHBsYW5hdGlvbiAvIG1vdGl2YXRpb24sIGZvciB0 aGlzIHNwZWNpZmljIHBhdGNoLiBNeSBpc3N1ZSBpcyB0aGF0DQo+IHRoZSBwb3N0aW5nIG9mIHRo aXMgd29yayB0byBlZGsyLWRldmVsIHNob3VsZCBoYXZlICpzdGFydGVkKiB3aXRoIHRoZQ0KPiBh Ym92ZSBleHBsYW5hdGlvbi4gWW91IGFuZCBKaWV3ZW4gdW5kZXJzdGFuZCB0aGUgaXNzdWUuIE5v b25lIGVsc2Ugb24NCj4gdGhlIGxpc3QgKHRoYXQgZG9lc24ndCB3b3JrIGF0IHlvdXIgb2ZmaWNl KSBkb2VzLiBJJ3ZlIHdhc3RlZCBoYWxmIGEgZGF5DQo+IGJlY2F1c2UgeW91IGRpZG4ndCB3cml0 ZSB1cCB0aGUgYmFja2dyb3VuZCB1cC1mcm9udC4NCj4gDQo+IEkgZG9uJ3QgbmVlZCB0byBrbm93 IHlvdXIgc3BlY2lmaWMgaW50ZXJuYWwgcHJvcHJpZXRhcnkgZmVhdHVyZSB0aGF0DQo+IHJlcXVp cmVzIHRoaXMgY2hhbmdlLiBJIGRvIG5lZWQgdG8ga25vdyB0aGF0IGFuIGludGVybmFsIGZlYXR1 cmUgd2l0aA0KPiBzdWNoIGEgcmVxdWlyZW1lbnQgZXhpc3RzLCBhbmQgdGhhdCBpdCBpcyB5b3Vy IG1vdGl2YXRpb24uIEV2ZXJ5IHRlbg0KPiBtaW51dGVzIHlvdSBzYXZlIGZvciB5b3Vyc2VsdmVz IG9uIGRvY3VtZW50YXRpb24gaXMgYW1wbGlmaWVkIHRvIHNldmVyYWwNCj4gaG91cnMgb2Ygc3Ry dWdnbGUsIGZvciBlYWNoIHJldmlld2VyLiBBbmQgd2Ugc3BlY2lmaWNhbGx5IGRpc2N1c3NlZCB0 aGlzDQo+IHNjZW5hcmlvIHdpdGggTWlrZSBhdCBvbmUgb2YgdGhlIGVhcmxpZXIgc3Rld2FyZHMn IG1lZXRpbmdzLg0KPiANCj4gKFRoZSBnZW5lcmFsIHRvcGljIGJhY2sgdGhlbiB3YXMgbXkgcmFp c2luZyB0aGF0IHlvdSBbcGx1cmFsXSBsaWJlcmFsbHkNCj4gY29tbWl0IHdoYXRldmVyIHlvdSB3 YW50IHRvIE1kZVBrZyAvIE1kZU1vZHVsZVBrZywgd2l0aG91dCByZWFsbHkgbmFtaW5nDQo+IHRo ZSB1c2UgY2FzZXMsIGxldCBhbG9uZSBhZGRpbmcgY2xpZW50IGNvZGUgdG8gZWRrMi4gV2hlcmVh cyBub24tSW50ZWwNCj4gY29udHJpYnV0b3JzIHdpdGggYSBkZW1vbnN0cmF0ZWQgbmVlZCBhcmUg aGVhdmlseSBnYXRlZCBmcm9tIGFkZGluZyBjb2RlDQo+IHRvIE1kZVBrZyAvIE1kZU1vZHVsZVBr Zy4NCj4gDQo+IENvbXBhcmU6IHRoZSBhZGRpdGlvbiBvZiB0aGUgIlBjaVNlZ21lbnRMaWJTZWdt ZW50SW5mbyIgaW5zdGFuY2VzDQo+IChjb21taXQgNWM5YmI4NmYxNzFjKSwgd2l0aG91dCBhbnkg Y29uc3VtZXIgaW4gZWRrMiB3aGF0c29ldmVyLCB2ZXJzdXMNCj4gQlojOTU3LCB3aGVyZSB0aGUg bmV3IGxpYnJhcmllcyAtLSBvcmlnaW5hbGx5IHByb3Bvc2VkIGZvciBNZGVQa2cgLS0gaGFkDQo+ IGRlbW9uc3RyYXRlZCBjb25zdW1lcnMsIGp1c3Qgbm90IGZyb20gSW50ZWwuIERvIHlvdSBzZWUg dGhlIGRvdWJsZQ0KPiBzdGFuZGFyZD8pDQo+IA0KPiBJIHdpc2ggSSBjb3VsZCBqdXN0IGlnbm9y ZSBVZWZpQ3B1UGtnLiBJIGNhbid0IGRvIHRoYXQ7IGl0IGlzIHZlcnkNCj4gYnJpdHRsZSAvIHNl bnNpdGl2ZSwgYW5kIGhhcyBjYXVzZWQgbnVtZXJvdXMgcmVncmVzc2lvbnMgZm9yIE9WTUYuIEkN Cj4gbXVzdCBrZWVwIGEgY2xvc2UgZXllIG9uIGl0LiBCdXQgcGF0Y2hlcyBmcm9tIHlvdSBbcGx1 cmFsXSBjZXJ0YWlubHkNCj4gZG9uJ3QgbWFrZSB0aGF0IGVhc3kgZm9yIG1lLg0KPiANCj4gSXQg a2lsbHMgbWUgdGhhdCBhZnRlciB5ZWFycyBvZiB1cyBiZWdnaW5nIG9uIHRoZSBsaXN0LCB5b3Ug W3BsdXJhbF0NCj4gc3RpbGwgZG9uJ3QgY2FyZSBhYm91dCBub24tSW50ZWwgcGFydGljaXBhbnRz IGFzIGZpcnN0IGNsYXNzIGNpdGl6ZW5zDQo+IHVwLWZyb250LCB1bnRpbCB0aGV5IHJhaXNlIGEg c3RpbmsuDQo+IA0KPiBIZXJlJ3MgYW5vdGhlciByZWNlbnQgZXhhbXBsZToNCj4gDQo+IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNiNjMw0KPiBodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTExMTYjYzQNCj4gDQo+ IFBsZWFzZSBzdGFydCBhY3R1YWxseSBiZWxpZXZpbmcgaW4sIGFuZCBwcmFjdGljaW5nLCBPcGVu IERldmVsb3BtZW50Lg0KPiBZb3Ugbm8gbG9uZ2VyIHdyaXRlIHRoZSBjb2RlIGFuZCB0aGUgZG9j cyBmb3IgSW50ZWwgb25seS4gQ29udmluY2luZw0KPiB5b3VyIGNvbGxlYWd1ZXMgaXMgZWFzeSAt LSB0aGF0J3Mgbm8gZGlmZmVyZW50IGZyb20gdGhlIHByb3ByaWV0YXJ5IC8NCj4gY2xvc2VkIHNv dXJjZSBkYXlzIG9mIGZpcm13YXJlIGRldmVsb3BtZW50LiBJdCB3YXMgSW50ZWwncyBkZWNpc2lv biB0bw0KPiB0dXJuIGVkazIgaW50byBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0OyBwbGVhc2UgbGl2 ZSB0aGF0IGRlY2lzaW9uLiBOb3cNCj4geW91ciBwcmltYXJ5IGF1ZGllbmNlIGlzIHRoZSBjb250 cmlidXRvcnMgdGhhdCBkZXBlbmQgb24gY29sbGFib3JhdGluZw0KPiB3aXRoIHlvdSAqd2l0aG91 dCogd29ya2luZyBmb3IgeW91ciBlbXBsb3llci4NCj4gDQo+IFdlbGwgSSd2ZSBwcm9iYWJseSBv dmVyc3RhdGVkIG15IGNhc2UuIEl0J3MganVzdCB0aGF0IEkndmUgaG9wZWQgZm9yDQo+IGJldHRl ciBjb21taXQgbWVzc2FnZXMgc2luY2UgdGhhdCBzdGV3YXJkcycgbWVldGluZy4NCj4gDQo+IExh c3psbw0K