From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.68.26; helo=eur02-he1-obe.outbound.protection.outlook.com; envelope-from=marvin.haeuser@outlook.com; receiver=edk2-devel@lists.01.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068026.outbound.protection.outlook.com [40.92.68.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 466A8220F33DA for ; Wed, 28 Feb 2018 03:37:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xrhSqn2It0Y35N1AHZyfvK3Y4b6W0M4ltEKjtKO1Ft4=; b=pZ30MzIk4BcMJyU7uPOKt0NYiHUiyvNHo7zCbFmxhvD/xZm+f/EdcM/EW9n1chHU4S8+kWwHa/TYfjzcXsUALRlO19V4bybvpk5pH+W6zJiKkOA3riNzgPSkvD13a9cWRTxcnf3CDn95fs8/MDAV8AZT93QgJxWGB9Ranowde0uZN+GNRkBFfS2MVo5RH3gK7tG/Q/RZcXHmA2vVru1CtKx+7KcF5Xh6QlRaBDslGOJvK9OGgsJIA8YLG4V46K0A6Hztn+7e9IPgo9umNvA32SASpYp8+ShJloneTM2jzv7ZWxUySiGKLUJoJnvGGa1kfUa9Gp5FP5BEvHobXAifwQ== Received: from VE1EUR02FT055.eop-EUR02.prod.protection.outlook.com (10.152.12.56) by VE1EUR02HT063.eop-EUR02.prod.protection.outlook.com (10.152.13.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.485.12; Wed, 28 Feb 2018 11:44:00 +0000 Received: from AM4PR06MB1491.eurprd06.prod.outlook.com (10.152.12.54) by VE1EUR02FT055.mail.protection.outlook.com (10.152.13.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15 via Frontend Transport; Wed, 28 Feb 2018 11:44:00 +0000 Received: from AM4PR06MB1491.eurprd06.prod.outlook.com ([fe80::7d81:9d96:1051:d20d]) by AM4PR06MB1491.eurprd06.prod.outlook.com ([fe80::7d81:9d96:1051:d20d%14]) with mapi id 15.20.0527.021; Wed, 28 Feb 2018 11:44:00 +0000 From: =?utf-8?B?TWFydmluIEjDpHVzZXI=?= To: "edk2-devel@lists.01.org" , Laszlo Ersek CC: "michael.d.kinney@intel.com" , "liming.gao@intel.com" Thread-Topic: [edk2] [PATCH 1/2] MdePkg/Base.h: Ensure safe bitwise operations. Thread-Index: AQHTr+q3IxS4cmiO9UyN5haxybivfqO4qaYAgAAEg7CAAPiiAIAABh8g Date: Wed, 28 Feb 2018 11:43:59 +0000 Message-ID: References: <62c9363b-7f27-cfff-492a-560660727b86@redhat.com> <366ffc0c-b55f-a3c1-973e-b80d3dd07d26@redhat.com> In-Reply-To: <366ffc0c-b55f-a3c1-973e-b80d3dd07d26@redhat.com> Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:A6D6747CFE08AA831DA5A93EDD210C4C50563D1783BCB3FCAB74FB3AADADC44D; UpperCasedChecksum:B8F4EB78C6868C0A6FB38B3708AD5DB62A67C2DE5393F28AE5683973E2A5A403; SizeAsReceived:7429; Count:46 x-tmn: [FBWCGKCdnGEg4pL+XqtTv4Zu6vq1otId] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VE1EUR02HT063; 6:rROSy2+jfACsXDd5ADUpMEYPPYKxTxJc354Oo5DRK5p6aiWXO5n6tlTp+D42Y9ZIvEuybbg5jhLlyq0V+r/KXegrJVgR7oHYSEuN+H8ttijcMXqvHCjnjmtZKMxxf6V6qaIy9ZsYhm8FQsRTEbnLDIbCGQUHZrCdYF3Tl3yj9FNpJWrUE2+K/8J+Ku8fmchoN2Fdc4pdP/OKzGtS0fp8eDlISpz9nyqR1XrOvpyMb3Q9jzuSHz94kTz4VyblD2/EgPrzT7JH2ozFK0fyqGEbu9PgDK90yPiUj+mbte0/j0Wjc7oPOrTqR4Vfr0i8FzADYTMya5+kBUsuaBYCHBgF0dPEbwlLgAHZg3AmMYKcUrQ=; 5:rQci0RSXIl8rnoTkp1zJhivL9uD/a1R6nsPh7J76JpzC1rMD+jM+/gckPY5bDPFrmsP6ADgyc9Vt6IqgNDBRWqZATlKMlTHwKnQjyDeabLLDnvNOCwE1H+qlphViXDlXq2bx+w0/qPWPeGESREhH9mcHpC94X12cSOhXI258i30=; 24:SUVjDzeE9Y6CTXLGEv7oXlnCEjKspXZvNXkDHHNGAzhlu+tVMJpOq9M6MDEIF8cSI0/cnvzkYVQgZWF4c8gTGarbOaw4HpqpTNASpAmCwsY=; 7:KqcSkptcYyNDQ825Jsr57Wnpe9gFPMwx0AeffGdfIYJV0IwRI43E44B1JJQW8exE9mRQC6w8vMlO5PrFyuaAQtnEC2brzYdwewUa5vV0pAbC0WomyRdk3BTl+HbztiP65A2S1La4FyGYZbZl02LyV8t91if6kzLH8XcGNjmovijn5npa/mMlw78/foX/xdT7LGcbge+DZShtictVmytb9n6epOyPV/XCO4M/AKhUMRzu6L37naKfhGiQQCdhGb/V x-incomingheadercount: 46 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125374)(1701031045); SRVR:VE1EUR02HT063; x-ms-traffictypediagnostic: VE1EUR02HT063: x-ms-office365-filtering-correlation-id: e9a9bdde-5324-4e9a-a0fb-08d57ea08ef6 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:VE1EUR02HT063; BCL:0; PCL:0; RULEID:; SRVR:VE1EUR02HT063; x-forefront-prvs: 0597911EE1 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:VE1EUR02HT063; H:AM4PR06MB1491.eurprd06.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9a9bdde-5324-4e9a-a0fb-08d57ea08ef6 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2018 11:44:00.0563 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR02HT063 Subject: Re: [PATCH 1/2] MdePkg/Base.h: Ensure safe bitwise operations. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Feb 2018 11:38:00 -0000 Content-Language: de-DE Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzLiBDb21tZW50cyBhcmUgaW5saW5lLg0KDQpCZXN0IHJlZ2FyZHMsDQpNYXJ2aW4uDQoN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIDxsZXJz ZWtAcmVkaGF0LmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBGZWJydWFyeSAyOCwgMjAxOCAxMjow MCBQTQ0KPiBUbzogTWFydmluIEjDpHVzZXIgPE1hcnZpbi5IYWV1c2VyQG91dGxvb2suY29tPjsg ZWRrMi0NCj4gZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbTsgbGltaW5nLmdhb0BpbnRlbC5jb20NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0gg MS8yXSBNZGVQa2cvQmFzZS5oOiBFbnN1cmUgc2FmZSBiaXR3aXNlDQo+IG9wZXJhdGlvbnMuDQo+ IA0KPiBPbiAwMi8yNy8xOCAyMTozMSwgTWFydmluIEjDpHVzZXIgd3JvdGU6DQo+ID4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IExhc3psbyBFcnNlayA8bGVyc2VrQHJl ZGhhdC5jb20+DQo+ID4+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDI3LCAyMDE4IDg6NTQgUE0N Cj4gPj4gVG86IE1hcnZpbiBIw6R1c2VyIDxNYXJ2aW4uSGFldXNlckBvdXRsb29rLmNvbT47IGVk azItDQo+ID4+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiBDYzogbWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb207IGxpbWluZy5nYW9AaW50ZWwuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMl0g W1BBVENIIDEvMl0gTWRlUGtnL0Jhc2UuaDogRW5zdXJlIHNhZmUgYml0d2lzZQ0KPiA+PiBvcGVy YXRpb25zLg0KPiA+Pg0KWy4uLl0NCj4gDQo+IFRoaXMgaXMgZXhhY3RseSBob3cgSSBmZWVsLCB5 ZXMuIE15IGNvbmNlcm4gaXMgdGhhdCBtYWtpbmcgdGhlIGNoYW5nZSBub3cNCj4gcnVucyB0aGUg cmlzayBvZiB0cmlja3kgcmVncmVzc2lvbnMgdGhhdCB3ZSBtaWdodCBub3QgZXZlbiBwcmV2ZW50 IHdpdGggYQ0KPiBkZXRhaWxlZCBhdWRpdC4NCg0KQWN0dWFsbHksIHlvdXIgZXhwbGFuYXRpb25z IGFuZCB0aGUgcmVzdCBvZiB0aGUgYml0IGRlZmluZXMgbWFkZSBtZSB3b25kZXIsIHdoZXRoZXIg bWFya2luZyBhbGwgQklUIGRlZmluZXMgYW5kIGJpdCBtYXNrcyBvZiBhbnkga2luZCwgYW55d2hl cmUsIGFzIFVMTCwgbWlnaHQgYmUgdGhlIGJlc3Qgc29sdXRpb24uDQorMSkgSW52ZXJzaW9uIGNh biBiZSB1c2VkIGZvciBhbnkgaW50ZWdlciBzaXplIHVuY2FzdGVkLCBhcyBlZGsyIGRvZXMgbm90 IHN1cHBvcnQgdmVuZG9yIGV4dGVuc2lvbnMgc3VjaCBhcyBfX2ludDEyOCBhbnl3YXkuDQorMikg QmluYXJ5IG9wZXJhdGlvbnMgKEFORCwgT1IsIC4uLikgc2hvdWxkIG5vdCByYWlzZSBhbnkgcHJv YmxlbXMgYXQgYWxsIChleGNlcHQgZm9yIG91ciBmZWxsb3cgdXNpbmcgVlMyMDA1eDg2IDopICkN CiszKSBBc3NpZ25tZW50cyBhbmQgcGFzc2luZy1ieS1hcmd1bWVudHMgd2lsbCByZXN1bHQgaW4g Y29tcGlsZXItdGltZSBlcnJvcnMgd2hlbiBub3QgZG9uZSBwcm9wZXJseSBpbiB0aGUgc2Vuc2Ug b2YgdGhpcyBwYXRjaCwgd2hpY2ggZWxpbWluYXRlcyB0aGUgbmVlZCB0byBhdWRpdCBhbGwgdXNh Z2VzIG1hbnVhbGx5LCBidXQganVzdCBjb21waWxlIHRoZSBlbnRpcmUgY29kZWJhc2UgYW5kIGZp eCB0aGUgZXJyb3JzIG9uZS1ieS1vbmUgKHdoaWNoIGlzIG9mIGNvdXJzZSBzdGlsbCBub3QgYSBx dWljayB0YXNrLCBidXQgaWYgdGhlIHBhY2thZ2UgYXV0aG9ycyBhZ3JlZSB3aXRoIHRoZSBwcm9w b3NhbCwgSSBtaWdodCBhdHRlbXB0IGl0KS4NCi0xKSBUaGUgJ3RydW5jYXRpbmcgY29uc3RhbnQg dmFsdWUnIHdhcm5pbmcgd291bGQgcHJvYmFibHkgbmVlZCB0byBiZSBkaXNhYmxlZCBnbG9iYWxs eSwgaG93ZXZlciBJIGRvbid0IHVuZGVyc3RhbmQgaG93IGFuIGV4cGxpY2l0IGNhc3QgaXMgYSBw cm9ibGVtIGFueXdheS4NCg0KRGlkIEkgb3Zlcmxvb2sgYW55dGhpbmcgY29udHJhIHJlZ2FyZGlu ZyB0aGF0Pw0KDQo+IA0KPiBBbnl3YXksIEkgZG9uJ3Qgd2FudCB0byBzcHJlYWQgRlVEIGFib3V0 IHRoaXMgLS0gSSB0aGluayB0aGUgZ29hbCBvZiB0aGVzZQ0KPiBjaGFuZ2VzIGlzIGdvb2QuIEl0 J3MgdXAgdG8gdGhlIE1kZVBrZyBtYWludGFpbmVycyB0byBldmFsdWF0ZSB0aGUgcmlza3MsIEkN Cj4ganVzdCB3YW50ZWQgdXMgdG8gYmUgYXdhcmUgb2YgdGhlbS4gT25jZSB3ZSByZWFjaCBhbiBl bmQgc3RhdGUgd2hlcmUgYWxsDQo+IHRoZSBCSVQsIFNJWkUgYW5kIEJBU0UgbWFjcm9zIGFyZSB1 bnNpZ25lZCwgYW5kIG5vIHJlZ3Jlc3Npb25zIGFyZSBmb3VuZCAob3INCj4gbm9uZSByZW1haW4p LCB0aGF0J3MgZm9yIHRoZSBiZXN0IQ0KDQpOYWgsIHlvdXIgY29tbWVudHMgYXJlIGdyZWF0LCB0 aGFua3MhDQoNClsuLi5dDQo+IEkgdGhpbmsgSSBhZ3JlZSB3aXRoIHlvdXIgYXNzZXNzbWVudCwg Y29uc2lkZXJpbmcgdGhlIHVzdWFsIGFwcGxpY2F0aW9uIG9mDQo+IHRoZXNlIG1hY3JvcyBpbiBz b3VyY2UgY29kZS4gSSBkaXN0aW5ndWlzaCB0aHJlZSBraW5kcyBvZiB1c2VzOg0KPiANClsuLi5d DQo+IA0KPiAoMykgVGhlIGNsZXZlciBjb2RlOiBpcyBhd2FyZSB0aGF0IEJJVCBtYWNyb3MgYXJl IChtb3N0bHkpIHNpZ25lZCwgYW5kDQo+ICAgICBleHBsb2l0cyB0aGF0IGZhY3QgZm9yIHZhcmlv dXMgZW5kcy4NCj4gDQo+IEkgYWdyZWUgdGhhdCBtb3N0IG9mIHRoZSBlZGsyIGNvZGViYXNlIHNo b3VsZCBmYWxsIHVuZGVyICgxKS4NCj4gDQo+IEFzIHlvdSBtYXkgZXhwZWN0LCBJIHBlcnNvbmFs bHkgd3JpdGUgKDIpLCBhbmQgY29kZSBsaWtlICgyKSBzaG91bGQgbm90IHdvcnJ5DQo+IGFib3V0 IEJJVCAvIFNJWkUgLyBCQVNFIGJlY29taW5nIHVuc2lnbmVkLg0KPiANCj4gTXkgY29uY2VybiBp cyAoMykuIFRoZXJlIGhhdmUgYmVlbiBleGFtcGxlcyBpbiBjb3JlIGVkazIgbW9kdWxlcyB0aGF0 DQo+IGV4cGxpY2l0bHkgcmVsaWVkIG9uIHVuZGVmaW5lZCBiZWhhdmlvciwgc3VjaCBhcyBsZWZ0 IHNoaWZ0cyBvZiBuZWdhdGl2ZSBpbnRlZ2Vycw0KPiBhbmQgc3VjaC4gV2UndmUgb25seSBzbG93 bHkgZml4ZWQgdGhlbSB1cCBhZnRlciBjb21waWxlcnMgLyBhbmFseXplcnMgc3RhcnRlZA0KPiBm bGFnZ2luZyB0aGVtLg0KPiANCj4gSWYgd2UgZG9uJ3QgdGhpbmsgKDMpIGlzIGEgcmVhbCByaXNr LCBJJ20gZmluZSB3aXRoIHRoZSBhcHByb2FjaCBvZiB0aGVzZSBwYXRjaGVzLg0KPiAoSSBkb24n dCB0aGluayBJJ2xsIGJlIGFibGUgdG8gc2VuZCBhIHJlYWwgUi1iIGZvciB0aGVtLCBiZWNhdXNl IHRoYXQgd291bGQNCj4gcmVxdWlyZSBtZSB0byBldmFsdWF0ZSBhbGwgdXNlcywgYW5kIHRoYXQn cyBhIEhlcmN1bGVhbiB0YXNrIEkganVzdCBjYW4ndCB0YWtlDQo+IG9uOyBhcG9sb2dpZXMuKQ0K DQpJIGhvcGUgdGhhdCB0aGUgJ2FsbCBVTEwnIHByb3Bvc2FsIHVuY292ZXJzIHRoZW0gYWxsLiBX b3VsZCB0aGVyZSBiZSBjYXNlcywgd2hlcmUgbm8gZXJyb3Igd291bGQgYmUgcmFpc2VkPw0KDQpb Li4uXQ0KPiANCj4gPj4+IC0jZGVmaW5lIEVOQ09ERV9FUlJPUihTdGF0dXNDb2RlKSAgICAgKChS RVRVUk5fU1RBVFVTKShNQVhfQklUIHwNCj4gPj4gKFN0YXR1c0NvZGUpKSkNCj4gPj4+ICsjZGVm aW5lIEVOQ09ERV9FUlJPUihTdGF0dXNDb2RlKSAgICAgKChSRVRVUk5fU1RBVFVTKShNQVhfQklU DQo+IHwNCj4gPj4gKFN0YXR1c0NvZGUjI1VMTCkpKQ0KPiA+Pj4NCj4gPj4NCj4gPj4gTUFYX0JJ VCBhbHdheXMgaGFzIHR5cGUgVUlOVE4gKFVJTlQ2NCBha2EgInVuc2lnbmVkIGxvbmcgbG9uZyIg b24NCj4gPj4gNjQtYml0IHBsYXRmb3JtcywgYW5kIFVJTlQzMiBha2EgInVuc2lnbmVkIGludCIg b24gMzItYml0IHBsYXRmb3JtcykuDQo+ID4+IFRoaXMgbWVhbnMgdGhhdCBFTkNPREVfRVJST1Ig cmVzdWx0cyBpbiBhIFVJTlROLCByaWdodCBub3cuDQo+ID4NCj4gPiBHb29kIHBvaW50LCBJIGRp ZG4ndCBrZWVwIHRoYXQgaW4gbWluZC4gSXQgcHJvYmFibHkgc2hvdWxkIGJlIHNvbGVseQ0KPiA+ ICdVJy4NCj4gDQo+IEluIGZhY3QgdGhlcmUncyBubyBuZWVkIGV2ZW4gZm9yIHRoYXQ6IGJlY2F1 c2UgTUFYX0JJVCBoYXMgdHlwZSBVSU5UTg0KPiAoInVuc2lnbmVkIGxvbmcgbG9uZyIgb3IgInVu c2lnbmVkIGludCIpLCB0aGUgU3RhdHVzQ29kZSBtYWNybyBhcmd1bWVudCwNCj4gd2hpY2ggaXMg ZXhwZWN0ZWQgdG8gYmUgYSBzbWFsbCBub25uZWdhdGl2ZSAiaW50Iiwgd2lsbCBiZSBjb252ZXJ0 ZWQgdG8NCj4gVUlOVE4sIGZvciB0aGUgYml0d2lzZSBPUiBvcGVyYXRvci4NCg0KT2gsIHJpZ2h0 LCB0aGFua3MuIEkgd291bGQgc3RpbGwgcHJlZmVyIGl0IHRvIGJlIGV4cGxpY2l0LCBidXQgSSds bCB3YWl0IGZvciBhIG1haW50YWluZXIncyBjb21tZW50Lg0KDQpbLi4uXQ0KPiANCj4gV2hhdCBp cyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGluIHRoZSBjdXJyZW50IGRlZmluaXRpb24gb2YNCj4g RU5DT0RFX0VSUk9SKCk/DQoNClRoYXQgd2FzIGEgcmVzdWx0IG9mIHRoZSBtaXN1bmRlcnN0YW5k aW5nIGFib3ZlLCBzY3JhcCB0aGF0Lg0KDQo+IA0KPiBHaXZlbiB0aGUgY3VycmVudCBkZWZpbml0 aW9uLCBpZiBTdGF0dXNDb2RlIGlzIGEgc2lnbmVkIGludGVnZXIsIHRoZW4gb25lIHdheQ0KPiBv ciBhbm90aGVyLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byAobm90IHJlaW50ZXJwcmV0ZWQgYXMp IGFuIHVuc2lnbmVkIGludGVnZXINCj4gdHlwZS4gVGhpcyBpcyBkdWUgdG8gdGhlIHJ1bGVzIG9u IHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yIGFuZCB0aGUgb3V0ZXJtb3N0DQo+IGNhc3QgKHRoYW5r IHlvdSBmb3IgcmVtaW5kaW5nIG1lIG9mIHRoYXQpLg0KPiBTdWNoIGNvbnZlcnNpb25zIGFyZSBm dWxseSBkZWZpbmVkIGluIHRoZSBDIHN0YW5kYXJkLCB0aGV5IGFyZSBub3QNCj4gaW1wbGVtZW50 YXRpb24tZGVmaW5lZC4NCg0KVGhhbmtzIGZvciBub3RpbmcuIFdvdWxkIHlvdSBzdGlsbCBhcHBl bmQgdGhlIFUtcHJlZml4IGZvciByZWFkYWJpbGl0eSAvIG1ha2luZyB0aGUgaW50ZW50aW9uIGNs ZWFyPw0KDQpbLi4uXQ0KPiANCj4gSXMgeW91ciBwb2ludCB0aGF0IHdlIHNob3VsZG4ndCBldmVu IGFzc3VtZSBJTlQzMj09ImludCIgYW5kDQo+IFVJTlQzMj09InVuc2lnbmVkIGludCI/DQoNClll cywgcHJldHR5IG11Y2guIEkgZG9uJ3QgdGhpbmsgaXQgZG9lcyBodXJ0IGVpdGhlci4gV2hpbGUg aXQgaXMgY2VydGFpbmx5IGEgdmVyeSB1Z2x5IGRlZmluaXRpb24sIHRoYXQncyBteSBwcmVmZXJy ZWQgdXNlIGZvciBtYWNyb3MgYW55d2F5IC0gaGlkZSB1Z2x5IGNvZGUgYmVoaW5kIGEgbG92ZWx5 IG5hbWUuDQoNCj4gDQo+IEkgdGhpbmsgdGhhdCB3b3VsZCBiZSBhIGdvb2QgcG9pbnQgZm9yIGEg aGlnaGx5IHBvcnRhYmxlIEMgY29kZWJhc2UgdGhhdCB3YXMNCj4gd3JpdHRlbiBmcm9tIHRoZSBn cm91bmQgdXAgd2l0aG91dCB0eXBlIGFzc3VtcHRpb25zLiBCdXQgSSBkb24ndCB0aGluayBpdA0K PiBhcHBsaWVzIHRvIGVkazIuIElmIFVJTlQzMiBtYXBwZWQgdG8gInVuc2lnbmVkIHNob3J0IiBh bmQgSU5UNjQgbWFwcGVkIHRvDQo+ICJpbnQiLCBlZGsyIHdvdWxkIGJyZWFrIGluIGEgdGhvdXNh bmQgcGxhY2VzIGltbWVkaWF0ZWx5Lg0KDQpPZiBjb3Vyc2UgaXQgd291bGQsIGhvd2V2ZXIgSSBp bWFnaW5lZCBhIGhlYWRlciBmaWxlIHRoYXQgaXMgaW5jbHVkZWQgaW4gZXZlcnkgZmlsZSBmb3Ig ZXZlcnkgYXJjaGl0ZWN0dXJlIHRvIGJlIGFzIGNsb3NlIHRvIGZsYXdsZXNzIGFzIHBvc3NpYmxl Lg0KV2hpbGUgb2YgY291cnNlIEkgd291bGQgYWxzbyBmaXggc3VjaCBhc3N1bXB0aW9ucyBpbiBl eGVjdXRhYmxlIGNvZGUgaWYgSSBmb3VuZCwgYW5kIGhvcGUgdGhlIG1haW50YWluZXJzIGNhcmUg ZW5vdWdoIHRvIHJldmlldyBhbmQgbWVyZ2UsIEkgY29uc2lkZXIgaGVhZGVyIGZpbGVzIGEgZ3Jl YXRlciBkYW5nZXIgYXMgdGhhdCAnZmxhd2VkJyAoaW4gYW4gaWRlYWxpc3RpYyBzZW5zZSkgbWFj cm8gaXMgZXhwYW5kZWQgaW50byBleHRlcm5hbCBjb2RlLCB3aGljaCBtaWdodCBjYXVzZSB0cm91 YmxlIHdoaWxlIGRlYnVnZ2luZywgYXMgdGhlIGNvbnN1bWVyIGFzc3VtZXMgdGhlIG1pc3Rha2Ug aXMgd2l0aGluIGhpcyBjb2RlLg0KSGVhZGVycyA+Pj4gbGlicmFyeSBjb2RlID4gbW9kdWxlIGNv ZGUsIGluIG15IG9waW5pb24sIGVzcGVjaWFsbHkgZm9yIHRoZSBtb3N0IGNlbnRyYWwgb25lLg0K DQpbLi4uXQ0KPiANCj4gSSBkbyBnZXQgeW91ciBwb2ludCBub3cuIEkgYmVsaWV2ZSB5b3UgYXJl IHRyeWluZyB0byBlbGltaW5hdGUgYWxsIChvcg0KPiBtb3N0KSBpbXBsZW1lbnRhdGlvbi1kZWZp bmVkIHRyYWl0cyBmcm9tIHRoZXNlIG1hY3JvcywgYmVjYXVzZSAidGhhdCdzDQo+IGhvdyBwb3J0 YWJsZSBDIGNvZGUgc2hvdWxkIGJlIHdyaXR0ZW4iLg0KDQpFeGFjdGx5LiA6KQ0KDQo+IA0KPiBQ ZXJzb25hbGx5IEkgdGhpbmsgdGhhdCdzIGEgbGF1ZGFibGUgZ29hbCwgYW5kIEkgYWdyZWUgdGhh dCBhbGwgcG9ydGFibGUgQyBjb2RlDQo+IHNob3VsZCBiZSB3cml0dGVuIGxpa2UgdGhhdC4gSSBh bHNvIHRoaW5rIGhvd2V2ZXIgdGhhdCB0aGVyZSdzIGEgbGFyZ2UNCj4gZGlzY29ubmVjdCBiZXR3 ZWVuIHRoYXQgZ29hbCAvIHN0eWxlLCBhbmQgaG93IGVkazIgKGFuZCBldmVuIHRoZSBVRUZJDQo+ IHNwZWMpIGV4aXN0IHRvZGF5LiBJbiBteSBvcGluaW9uIC8gZXhwZXJpZW5jZSwgZWRrMiB3YXMg bmV2ZXIgbWVhbnQgdG8gYmUNCj4gcG9ydGFibGUgdG8gdW5rbm93biwgZnV0dXJlIHBsYXRmb3Jt cy4gRm9yIG9uZSwgaXQgaXMgdGllZCB0byBsaXR0bGUgZW5kaWFuIGJ5dGUNCj4gb3JkZXIgb24g dGhlIHNwZWMgbGV2ZWwuDQoNClBlcnNvbmFsbHksIEkgYW0gZmluZSB0byBhc3NlcnQgYW55dGhp bmcgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBkZW1hbmRzICh0aGF0J3Mgd2hhdCBpdCdzIGhlcmUg Zm9yIGFmdGVyIGFsbCksIGhvd2V2ZXIgd2UgYXJlIG5vdCBhd2FyZSBvZiB0aGUgY29tcGlsZXIt c3BlY2lmaWNzIGF0IHNwZWMtbGV2ZWwuDQoNCj4gDQo+IEFueXdheSwgaWYgeW91IHN1Ym1pdCBh IHYyIG9mIHRoZXNlIHNlcmllcyAocGxlYXNlIG1ha2UgdGhlbSB0aHJlYWRlZCEpLCBJJ2xsDQo+ IHRyeSB0byByZXZpZXcgdGhvc2Ugd2l0aCB0aGlzIGluIG1pbmQuDQo+IA0KPiBUaGFua3MhDQo+ IExhc3psbw0K