From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=michael.a.rothman@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 0BE54207DF283 for ; Mon, 4 Jun 2018 10:31:29 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jun 2018 10:31:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,476,1520924400"; d="scan'208,217";a="205231255" Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by orsmga004.jf.intel.com with ESMTP; 04 Jun 2018 10:31:29 -0700 Received: from orsmsx116.amr.corp.intel.com (10.22.240.14) by ORSMSX104.amr.corp.intel.com (10.22.225.131) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 4 Jun 2018 10:31:29 -0700 Received: from orsmsx104.amr.corp.intel.com ([169.254.4.129]) by ORSMSX116.amr.corp.intel.com ([169.254.7.230]) with mapi id 14.03.0319.002; Mon, 4 Jun 2018 10:31:28 -0700 From: "Rothman, Michael A" To: "Jim.Dailey@dell.com" , "Ni, Ruiyu" CC: "Carsey, Jaben" , "edk2-devel@lists.01.org" , "felixp@mail.ru" Thread-Topic: How to Interpret ReadKeyStrokeEX Data Thread-Index: AdP51a/hVUcRd8ZXRbW9WoFUsUlqeACUrkrA Date: Mon, 4 Jun 2018 17:31:28 +0000 Message-ID: References: <3e835c29938d49ea8d285385429870ad@ausx13mps339.AMER.DELL.COM> In-Reply-To: <3e835c29938d49ea8d285385429870ad@ausx13mps339.AMER.DELL.COM> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.26 Subject: Re: How to Interpret ReadKeyStrokeEX Data X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jun 2018 17:31:31 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U2luY2UgSSdtIGxhcmdlbHkgdGhlIHBlcnNvbiB3aG8gbWlnaHQgYmUgdG8gYmxhbWUgZm9yIHRo ZSBsYW5ndWFnZSBhbmQgaW50ZW50IGhlcmUgYW5kIEnigJlsbCBmb2N1cyBvbiB0aGUgc3BlYy1y ZWxhdGVkIGl0ZW0uICBTZWUgbXkgY29tbWVudHMgYmVsb3cuDQoNCg0KDQpUaGFua3MsDQoNCk1p a2UgUm90aG1hbg0KDQoo6L+I5YWLIOe9l+aWr+abvCAvIOCkruCkvuCkh+CkleCksiDgpLDgpYvg pKXgpY3gpK7gpYfgpKjgpY0gLyDQnNC40YXQsNC40Lsg0KDQvtGC0LzQsNC9IC8g157XqdeUINeo 15XXmNee158pDQoNCteo15XXoteUINei15nXp9eo15kg16nXnCDXl9eq15XXnNeZ150NCg0KDQoN Cg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRv OmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBKaW0uRGFpbGV5 QGRlbGwuY29tDQpTZW50OiBGcmlkYXksIEp1bmUgMSwgMjAxOCAxMToyNyBBTQ0KVG86IE5pLCBS dWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPg0KQ2M6IENhcnNleSwgSmFiZW4gPGphYmVuLmNhcnNl eUBpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgZmVsaXhwQG1haWwucnUNClN1 YmplY3Q6IFtlZGsyXSBIb3cgdG8gSW50ZXJwcmV0IFJlYWRLZXlTdHJva2VFWCBEYXRhDQoNCg0K DQooU3ViamVjdCBjaGFuZ2VkKQ0KDQoNCg0KSSBndWVzcyB0aGlzIGlzIGEgcXVlc3Rpb24gb2Yg VUVGSSBzcGVjIGludGVycHJldGF0aW9uLiAgSW4gdGhlIENvbnNvbGUgSS9PIFByb3RvY29sIGRl c2NyaXB0aW9uIG9mIFZlcnNpb24gMi41IG9mIHRoZSBzcGVjIChwYWdlIDQ1NiksIGl0IHNheXM6 DQoNCg0KDQogICAgSWYgdGhlIFNjYW4gQ29kZSBpcyBzZXQgdG8gMHgwMCB0aGVuIHRoZSBVbmlj b2RlIGNoYXJhY3RlciBpcw0KDQogICAgdmFsaWQgYW5kIHNob3VsZCBiZSB1c2VkLg0KDQoNCg0K VG8gbWUgdGhhdCBjbGVhcmx5IHNheXMgaXQgYWxsLiAgVGhlIHNoaWZ0IG1vZGlmaWVyIGlzIGEg ZG9uJ3QgY2FyZSB3aGVuIHRoZSBzY2FuIGNvZGUgaXMgemVyby4gIEFuZCwgdGhpcyBjaGFuZ2Ug aW4gdGhlIHNoZWxsIGNvZGUgc2VlbXMgdG8gYmUgYSB2aW9sYXRpb24gb2YgdGhhdCBzdGF0ZW1l bnQuDQoNCg0KDQpIb3dldmVyLCBJIGFsc28gc2VlIHNvbWUgY29uZnVzaW5nIChhbmQgZ3JhbW1h dGljYWxseSBpbmNvcnJlY3QpIHRleHQgaW4gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBSZWFkS2V5 U3Ryb2tlRXgoKSBmdW5jdGlvbiBvZiB0aGUgc2ltcGxlIHRleHQgaW4gcHJvdG9jb2wgdGhhdCBJ IGFtIGd1ZXNzaW5nIGlzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKCplbXBoYXNpcyogbWluZSk6 DQoNCg0KDQogICAgV2hlbiBpbnRlcnByZXRpbmcgdGhlIGRhdGEgZnJvbSB0aGlzIGZ1bmN0aW9u LCBpdCBzaG91bGQgYmUNCg0KICAgIG5vdGVkIHRoYXQgaWYgYSBjbGFzcyBvZiBwcmludGFibGUg Y2hhcmFjdGVycyB0aGF0IGFyZSBub3JtYWxseQ0KDQogICAgKmFkanVzdGVkKiBieSBzaGlmdCBt b2RpZmllcnMgKGUuZy4gU2hpZnQgS2V5ICsgImYiIGtleSkgd291bGQNCg0KICAgIGJlIHByZXNl bnRlZCBzb2xlbHkgYXMgYSBLZXlEYXRhLktleS5Vbmljb2RlQ2hhciB3aXRob3V0IHRoZQ0KDQog ICAgYXNzb2NpYXRlZCBzaGlmdCBzdGF0ZS4NCg0KDQoNCldoYXQgSSB0aGluayB0aGUgc3BlYyBp cyB0cnlpbmcgdG8gc2F5IGhlcmUgaXMgdGhhdCBmb3IgQS1aIGFuZCBhLXosIHRoZSBjb25zdW1l ciBkb2VzIE5PVCBuZWVkIHRvIGxvb2sgYXQgdGhlIHNoaWZ0IHN0YXRlIHRvIHRlbGwgIkEiIGZy b20gImEiLCBmb3IgZXhhbXBsZSwgYmVjYXVzZSB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgd2lsbCBi ZSBlaXRoZXIgIkEiIG9yICJhIiBhcyBhcHByb3ByaWF0ZS4NCg0KDQoNCm4gIE5vLCBpdCBpcyBh bnkga2V5IHRoYXQgd291bGQgY3JlYXRlIGEgZGlzcGxheWFibGUgY2hhcmFjdGVyIHRoYXQgYWRq dXN0cyBiYXNlZCBvbiB0aGUgc2hpZnQgc3RhdGUuIFJlYWxpemUgdGhhdCB0aGUgdXNlcnMgb2Yg UmVhZEtleVN0cm9rZS9SZWFkS2V5U3Ryb2tlRXggZmFsbCBiYWNrIHRvIGEgY29tbW9uIGRlbm9t aW5hdG9yIG9mIFNjYW4gQ29kZSBvciBVbmljb2RlIENoYXJhY3Rlci4gU28gaWYgc29tZW9uZSB0 eXBlcyBhIHNoaWZ0IDQsIHRoZSB1bmRlcmx5aW5nIGtleWJvYXJkIGxheW91dCB0aGF0IHRoZSBr ZXlib2FyZCBkcml2ZXIgY29udHJvbHMgd291bGQgZGljdGF0ZSBob3cgdGhhdCBnZXRzIHRyYW5z bGF0ZWQuIE9uIG15IGtleWJvYXJkIGluIHRoZSBVUyBpdCB0dXJucyBpbnRvIGEg4oCcJOKAnSBz eW1ib2wsIHdoaWxlIHNvbWVvbmUgaW4gRXVyb3BlIG1heSB2ZXJ5IHdlbGwgaGF2ZSBhIHNvZnR3 YXJlLWRlZmluZWQga2V5Ym9hcmQgbGF5b3V0IHdoaWNoIHRyYW5zbGF0ZXMgdGhlIHNhbWUga2V5 c3Ryb2tlIHRvIGEg4oCc4oKs4oCdIHN5bWJvbC4gVGhhdCBvZiBjb3Vyc2UgYXBwbGllcyB0byB0 aGUgbWFueSBjaGFyYWN0ZXJzIHlvdSBzcGVjaWZpZWQgKEEtRiwgYS1mKSBhbmQgbWFueSBvdGhl cnMuDQoNCm4gIFRoZSB0ZXh0IGFib3ZlIGlzIGludGVuZGVkIHRvIGltcGx5IHdoYXQgaXQgc2F5 cywg4oCcYSBjbGFzcyBvZiBwcmludGFibGUgY2hhcmFjdGVycyDigKYgd291bGQgYmUgcHJlc2Vu dGVkIHNvbGVseSBhcyBhIEtleURhdGEuS2V5LlVuaWNvZGVDaGFyIHdpdGhvdXQgdGhlIGFzc29j aWF0ZWQgc2hpZnQgc3RhdGUuIFRoaXMgbWFrZXMgY29uc3VtZXJzIG9mIGJvdGggdGhlIEV4IGFu ZCBOb24tRXggdmFyaWFudCBvZiBSZWFkS2V5U3Ryb2tlIGFibGUgdG8gdXNlIHRoZSBzYW1lIGxv Z2ljIHRvIHRlc3QgZm9yIGFueSBzaGlmdGFibGUgY2hhcmFjdGVycyBieSBzaW1wbHkgbG9va2lu ZyBhdCB0aGUgVW5pY29kZSB2YWx1ZS4gSeKAmWQgbm90ZSB0aGUgc2hpZnQgYW5kIHRvZ2dsZSBz dGF0ZXMgKHdoaWNoIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBFeCkgYXJlIHRoZXJlIG5vdCBzbyBt dWNoIGZvciBpbnRlcnByZXRpbmcgdGhlIHRyYW5zbGF0ZWQga2V5IGJ1dCB0byBtYXhpbWl6ZSBm bGV4aWJpbGl0eSBhc3NvY2lhdGVkIHdpdGgga2V5Ym9hcmQgbWFwcGluZyBhcyBhIFVFRkkgYXBw bGljYXRpb24uDQoNCg0KDQpJIHRoaW5rIHNheWluZyB0aGlzIGlzIHVubmVjZXNzYXJ5IHNpbXBs eSBiZWNhdXNlIHRoZSBlYXJsaWVyIHN0YXRlbWVudCAoSWYgdGhlIFNjYW4gQ29kZSBpcyBzZXQg dG8gMHgwMCB0aGVuIHRoZSBVbmljb2RlIGNoYXJhY3RlciBpcyB2YWxpZCBhbmQgc2hvdWxkIGJl IHVzZWQuKSBjb3ZlcnMgdGhpcyBjYXNlLg0KDQoNCg0KRnVydGhlciwgSSBiZWxpZXZlIHRoaXMg dGV4dCBhcHBsaWVzIG9ubHkgdG8gdGhlIEEtWiBrZXlzIGJlY2F1c2UgdGhlaXIgY29ycmVzcG9u ZGluZyBjaGFyYWN0ZXJzIGFyZSAqYWRqdXN0ZWQqICh0byB1cHBlciBjYXNlKSB3aGVuIHRoZSBz aGlmdCBrZXkgaXMgcHJlc3NlZC4gVGhhdCBpcywgaWYgeW91IGFkanVzdCAiYmx1ZSIgdG8gIkJM VUUiLCB5b3UgaGF2ZSB0d28gZGlmZmVyZW50IGFwcGVhcmFuY2VzLCBidXQgb25seSBvbmUgbWVh bmluZy4NCg0KDQoNCkhvd2V2ZXIsIGEgIjMiIGlzIG5vdCAqYWRqdXN0ZWQqIHRvIGEgIiMiOyB0 aGV5IGFyZSB0b3RhbGx5IGRpZmZlcmVudCBjaGFyYWN0ZXJzIHdpdGggZGlmZmVyZW50IG1lYW5p bmdzIGFsdG9nZXRoZXIuIE5vIEMgcHJlLXByb2Nlc3NvciB3b3VsZCBiZSBoYXBweSBzZWVpbmc6 ICIzaWZkZWYgU1lNQk9MIi4NCg0KDQoNCkluIGFueSBjYXNlLCBJIHNlZSBub3RoaW5nIGdhaW5l ZCBieSBpZ25vcmluZyBrZXlzIGhhdmluZyBhIHplcm8gc2NhbiBjb2RlIGFuZCBhIHZhbGlkIFVu aWNvZGUgY2hhcmFjdGVyOyB0aGUgc3BlYyBzYXlzIHRoYXQgInRoZSBVbmljb2RlIGNoYXJhY3Rl ciBpcyB2YWxpZCBhbmQgc2hvdWxkIGJlIHVzZWQiLg0KDQoNCg0KUmVnYXJkcywNCg0KSmltDQoN Cg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoNCj4gRnJvbTogTmksIFJ1aXl1IFtt YWlsdG86cnVpeXUubmlAaW50ZWwuY29tXQ0KDQo+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMzEsIDIw MTggNzoxOSBQTQ0KDQo+IFRvOiBEYWlsZXksIEppbQ0KDQo+IENjOiBDYXJzZXksIEphYmVuOyBm ZWxpeHBAbWFpbC5ydTxtYWlsdG86ZmVsaXhwQG1haWwucnU+OyBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQoNCj4gU3ViamVjdDogUkU6IFtl ZGsyXSBbUEFUQ0hdIFNoZWxsUGtnL1toZXhdZWRpdDogdXNlIFNpbXBsZVRleHRJbkV4IHRvDQoN Cj4gcmVhZCBjb25zb2xlDQoNCj4NCg0KPiBDYW4geW91IGNoZWNrIHdoaWNoIGtleWJvYXJkIGRy aXZlciBhcmUgeW91IHVzaW5nPw0KDQo+IFRoZSBrZXlib2FyZCBkcml2ZXIgaXMgZXhwZWN0ZWQg dG8gdHJhbnNsYXRlICJTSElGVCIgKyAiMyIgdG8gIiMiICh3aXRob3V0IFNoaWZ0IHN0YXRlKS4N Cg0KPiBJIGtub3cgdGhhdCBzb21lIGtleWJvYXJkIGRyaXZlciBkb2Vzbid0IGRvIHRoYXQgY29y cmVjdGx5Lg0KDQo+IEUuZy46IFNISUZUICsgIjMiIGlzIHRyYW5zbGF0ZWQgdG8gIiMiIGJ1dCB0 aGUgU0hJRlQgc3RhdGUgaXMgbm90IG1hc2tlZCBvZmYuDQoNCj4NCg0KPiBbU29ycnkgSSB0aG91 Z2h0IEkgc2VudCB0aGUgbWFpbCBvdXQgZGF5cyBhZ29dDQoNCj4NCg0KPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCg0KPj4gRnJvbTogSmltLkRhaWxleUBkZWxsLmNvbTxtYWlsdG86Smlt LkRhaWxleUBkZWxsLmNvbT4gW21haWx0bzpKaW0uRGFpbGV5QGRlbGwuY29tXQ0KDQo+PiBTZW50 OiBXZWRuZXNkYXksIE1heSAyMywgMjAxOCAzOjAxIEFNDQoNCj4+IFRvOiBOaSwgUnVpeXUgPHJ1 aXl1Lm5pQGludGVsLmNvbTxtYWlsdG86cnVpeXUubmlAaW50ZWwuY29tPj4NCg0KPj4gQ2M6IENh cnNleSwgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb208bWFpbHRvOmphYmVuLmNhcnNleUBp bnRlbC5jb20+PjsgZmVsaXhwQG1haWwucnU8bWFpbHRvOmZlbGl4cEBtYWlsLnJ1PjsgZWRrMi0N Cg0KPj4gZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzpkZXZlbEBsaXN0cy4wMS5vcmc+DQoNCj4+ IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIXSBTaGVsbFBrZy9baGV4XWVkaXQ6IHVzZSBTaW1w bGVUZXh0SW5FeCB0bw0KDQo+PiByZWFkIGNvbnNvbGUNCg0KPj4NCg0KPj4gUmF5LA0KDQo+Pg0K DQo+PiBUaGUgcGF0Y2ggaW4gdGhlIG1lc3NhZ2UgYmVsb3cgd2FzIGFwcGxpZWQgdG8gdGhlIHRy ZWUgb24gMTIgRmViIHRoaXMNCg0KPj4geWVhciAoNTU2MzI4MWZhMmIzMTA5M2ExY2JkNDE1NTUz YjkyNjRjNTEzNmU4OSkuDQoNCj4+DQoNCj4+IFBhcnQgb2YgdGhlIGNoYW5nZSB0byBNYWluVGV4 dEVkaXRvci5jIGNhdXNlcyBhbiBpc3N1ZSB3aGVyZSBJIGNhbm5vdA0KDQo+PiBlbnRlciAoYXQg bGVhc3Qgc29tZSkgc2hpZnRlZCBwdW5jdHVhdGlvbi4gIEZvciBleGFtcGxlLCBhZnRlciB0aGlz DQoNCj4+IGNoZWNrIGluIEkgY2Fubm90IGVkaXQgYSBzaGVsbCBzY3JpcHQgYW5kIGNyZWF0ZSBh IGNvbW1lbnQgYmVjYXVzZSBJIGNhbm5vdCBlbnRlciB0aGUgIiMiIGNoYXJhY3Rlci4NCg0KPj4g V2hlbiBJIHRyeSB0byB0eXBlICIjIiwgdGhlIHN0YXR1cyBiYXIgc2ltcGx5IHNob3dzICJVbmtu b3duIENvbW1hbmQiLg0KDQo+Pg0KDQo+PiBJIGRvbid0IHJlYWxseSB1bmRlcnN0YW5kIHRoZSBj aGFuZ2UsIGJ1dCBpZiBpbiB0aGUNCg0KPj4gTWFpbkVkaXRvcktleUlucHV0IGZ1bmN0aW9uIGlu IGZpbGUgTWFpblRleHRFZGl0b3IuYyBJIGRlbGV0ZSB0aGUgIk5vU2hpZnRTdGF0ZSIgY2hlY2sg ZnJvbSB0aGUgZmlyc3QgImVsc2UgaWYiDQoNCj4+IGJlbG93Og0KDQo+Pg0KDQo+PiArICAgICAg ICAvLw0KDQo+PiArICAgICAgICAvLyBkaXNwYXRjaCB0byBkaWZmZXJlbnQgY29tcG9uZW50cycg a2V5IGhhbmRsaW5nIGZ1bmN0aW9uDQoNCj4+ICsgICAgICAgIC8vDQoNCj4+ICsgICAgICAgIGlm IChFRklfTk9UX0ZPVU5EICE9IE1lbnVCYXJEaXNwYXRjaENvbnRyb2xIb3RLZXkoJktleURhdGEp KSB7DQoNCj4+ICsgICAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQoNCj4+ICsgICAgICAg IH0gZWxzZSBpZiAoTm9TaGlmdFN0YXRlICYmICgoS2V5RGF0YS5LZXkuU2NhbkNvZGUgPT0NCg0K Pj4gKyBTQ0FOX05VTEwpIHx8DQoNCj4+ICgoS2V5RGF0YS5LZXkuU2NhbkNvZGUgPj0gU0NBTl9V UCkgJiYgKEtleURhdGEuS2V5LlNjYW5Db2RlIDw9DQoNCj4+IFNDQU5fUEFHRV9ET1dOKSkpKSB7 DQoNCj4+ICsgICAgICAgICAgU3RhdHVzID0gRmlsZUJ1ZmZlckhhbmRsZUlucHV0ICgmS2V5RGF0 YS5LZXkpOw0KDQo+PiArICAgICAgICB9IGVsc2UgaWYgKE5vU2hpZnRTdGF0ZSAmJiAoS2V5RGF0 YS5LZXkuU2NhbkNvZGUgPj0gU0NBTl9GMSkNCg0KPj4gKyAmJg0KDQo+PiAoS2V5RGF0YS5LZXku U2NhbkNvZGUgPD0gU0NBTl9GMTIpKSB7DQoNCj4+ICsgICAgICAgICAgU3RhdHVzID0gTWVudUJh ckRpc3BhdGNoRnVuY3Rpb25LZXkgKCZLZXlEYXRhLktleSk7DQoNCj4+ICsgICAgICAgIH0gZWxz ZSB7DQoNCj4+ICsgICAgICAgICAgU3RhdHVzQmFyU2V0U3RhdHVzU3RyaW5nIChMIlVua25vd24g Q29tbWFuZCIpOw0KDQo+PiArICAgICAgICAgIEZpbGVCdWZmZXJNb3VzZU5lZWRSZWZyZXNoID0g RkFMU0U7DQoNCj4+ICsgICAgICAgIH0NCg0KPj4NCg0KPj4gdGhlbiBJIGFtIGFibGUgdG8gZW50 ZXIgIiMiIGFuZCBvdGhlciBjaGFyYWN0ZXJzIHRoYXQgSSBwcmV2aW91c2x5DQoNCj4+IHdhcyB1 bmFibGUgdG8gZW50ZXIuDQoNCj4+DQoNCj4+IENhbiB5b3UgaGF2ZSBhIGxvb2sgYXQgdGhpcz8g IEkgYXNzdW1lIGFueSBzaGVsbCBiaW5hcnkgYnVpbHQgd2l0aA0KDQo+PiB0aGlzIGNoYW5nZSB3 aWxsIGhhdmUgYSBzaW1pbGFyIGlzc3VlLg0KDQo+Pg0KDQo+PiBUaGFua3MsDQoNCj4+IEppbQ0K DQo+Pg0KDQo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCg0KPj4+IEZyb206IGVkazIt ZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYN Cg0KPj4+IE9mIFJ1aXl1IE5pDQoNCj4+PiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDEyLCAyMDE4 IDk6MzQgQU0NCg0KPj4+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmc+DQoNCj4+PiBDYzogSmFiZW4gQ2Fyc2V5OyBGZWxpeA0KDQo+Pj4g U3ViamVjdDogW2VkazJdIFtQQVRDSF0gU2hlbGxQa2cvW2hleF1lZGl0OiB1c2UgU2ltcGxlVGV4 dEluRXggdG8NCg0KPj4+IHJlYWQgY29uc29sZQ0KDQo+Pj4NCg0KPj4+IFJFRjogaHR0cHM6Ly9i dWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD02ODINCg0KPj4+DQoNCj4+PiBF ZGl0IGFuZCBIZXhFZGl0IGNvbW1hbmRzIGFzc3VtZSB0aGF0IFNpbXBsZVR4dEluIHRyYW5zbGF0 ZXMNCg0KPj4+IEN0cmwrPEFscGhhLUtleT4ga2V5IGNvbWJpbmF0aW9ucyBpbnRvIFVuaWNvZGUg Y29udHJvbCBjaGFyYWN0ZXJzDQoNCj4+PiAoMHgxLTB4MUEpLg0KDQo+Pj4NCg0KPj4+IFN1Y2gg dHJhbnNsYXRpb24gZG9lcyBub3Qgc2VlbSB0byBiZSByZXF1aXJlZCBieSB0aGUgVUVGSSBzcGVj Lg0KDQo+Pj4gU2hlbGwgc2hvdWxkIG5vdCByZWx5IG9uIGltcGxlbWVudGF0aW9uIHNwZWNpZmlj IGJlaGF2aW9yLg0KDQo+Pj4gSXQgc2hvdWxkIGluc3RlYWQgdXNlIFNpbXBsZVRleHRJbkV4IHRv IHJlYWQgQ3RybCs8QWxwaGEtS2V5PiBrZXkgY29tYmluYXRpb25zLg0KDQo+Pj4NCg0KPj4+IFRo ZSBwYXRjaCBjaGFuZ2VzIGVkaXQgYW5kIGhleGVkaXQgdG8gb25seSBjb25zdW1lcyBTaW1wbGVU ZXh0SW5FeC4NCg0KPj4+DQoNCj4+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRy aWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQoNCj4+PiBTaWduZWQtb2ZmLWJ5OiBSdWl5dSBOaSA8cnVp eXUubmlAaW50ZWwuY29tPG1haWx0bzpydWl5dS5uaUBpbnRlbC5jb20+Pg0KDQo+Pj4gUmVwb3J0 ZWQtYnk6IEZlbGl4IDxmZWxpeHBAbWFpbC5ydTxtYWlsdG86ZmVsaXhwQG1haWwucnU+Pg0KDQo+ Pj4gQ2M6IEZlbGl4IDxmZWxpeHBAbWFpbC5ydTxtYWlsdG86ZmVsaXhwQG1haWwucnU+Pg0KDQo+ Pj4gQ2M6IEphYmVuIENhcnNleSA8amFiZW4uY2Fyc2V5QGludGVsLmNvbTxtYWlsdG86amFiZW4u Y2Fyc2V5QGludGVsLmNvbT4+DQoNCj4+PiAtLS0NCg0KPj4+ICAuLi4vRWRpdC9NYWluVGV4dEVk aXRvci5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKystLS0tLQ0KDQo+ Pj4gIC4uLi9FZGl0L1RleHRFZGl0b3JUeXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIxICsrLQ0KDQo+Pj4gIC4uLi9VZWZpU2hlbGxEZWJ1ZzFDb21tYW5kc0xpYi9FZGl0SW5wdXRC YXIuYyAgICAgIHwgIDM0ICsrKy0NCg0KPj4+ICAuLi4vVWVmaVNoZWxsRGVidWcxQ29tbWFuZHNM aWIvRWRpdElucHV0QmFyLmggICAgICB8ICAgNiArLQ0KDQo+Pj4gIC4uLi9VZWZpU2hlbGxEZWJ1 ZzFDb21tYW5kc0xpYi9FZGl0TWVudUJhci5jICAgICAgIHwgIDM4ICsrKy0NCg0KPj4+ICAuLi4v VWVmaVNoZWxsRGVidWcxQ29tbWFuZHNMaWIvRWRpdE1lbnVCYXIuaCAgICAgICB8ICAgNiArLQ0K DQo+Pj4gIC4uLi9IZXhFZGl0L0hleEVkaXRvclR5cGVzLmggICAgICAgICAgICAgICAgICAgICAg IHwgIDI1ICstLQ0KDQo+Pj4gIC4uLi9IZXhFZGl0L01haW5IZXhFZGl0b3IuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgMjA1ICsrKysrKysrKysrKystLS0tLS0tLQ0KDQo+Pj4gIDggZmlsZXMg Y2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyksIDE2MSBkZWxldGlvbnMoLSkNCg0KPj4+DQoNCj4+ PiAtLS0tLS0tLS04PC0tLS0tIGNsaXAgLS0tLS0+OC0tLS0tLS0tDQoNCj4+Pg0KDQo+Pj4gLS0N Cg0KPj4+IDIuMTYuMS53aW5kb3dzLjENCg0KPj4+DQoNCj4+PiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KDQo+Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxp c3QNCg0KPj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3Rz LjAxLm9yZz4NCg0KPj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRr Mi1kZXZlbA0KDQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCg0KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCg0KZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KDQpodHRwczovL2xpc3RzLjAxLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg==