From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joao Martins Subject: Re: DESIGN v2: CPUID part 3 Date: Wed, 5 Jul 2017 10:46:19 +0100 Message-ID: References: <1496927527-6218-1-git-send-email-andrew.cooper3@citrix.com> <1499180124-24693-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1499180124-24693-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper Cc: Xen-devel List-Id: xen-devel@lists.xenproject.org SGV5IEFuZHJldywKCk9uIDA3LzA0LzIwMTcgMDM6NTUgUE0sIEFuZHJldyBDb29wZXIgd3JvdGU6 Cj4gUHJlc2VudGVkIGhlcmV3aXRoIGlzIHRoZSBhIHBsYW4gZm9yIHRoZSBmaW5hbCBwYXJ0IG9m IENQVUlEIHdvcmssIHdoaWNoCj4gcHJpbWFyaWx5IGNvdmVycyBiZXR0ZXIgWGVuL1Rvb2xzdGFj ayBpbnRlcmFjdGlvbiBmb3IgY29uZmlndXJpbmcgdGhlIGd1ZXN0cwo+IENQVUlEIHBvbGljeS4K PiAKUmVhbGx5IG5pY2Ugd3JpdGUgdXAsIGEgZmV3IGNvbW1lbnRzIGJlbG93LgoKPiBBIFBERiB2 ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQgaXMgYXZhaWxhYmxlIGZyb206Cj4gCj4gaHR0cDovL3hl bmJpdHMueGVuLm9yZy9wZW9wbGUvYW5kcmV3Y29vcC9jcHVpZC1wYXJ0LTMtcmV2Mi5wZGYKPiAK PiBDaGFuZ2VzIGZyb20gdjE6Cj4gICogQ2xhcmlmaWNhdGlvbiBvZiB0aGUgaW50ZXJhY3Rpb24g b2YgZW11bGF0ZWQgZmVhdHVyZXMKPiAgKiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaWZm ZXJlbmNlIGJldHdlZW4gbWF4IGFuZCBkZWZhdWx0IGZlYXR1cmVzZXRzLgo+IAo+IH5BbmRyZXcK PiAKPiAtLS0tLTg8LS0tLS0KPiAlIENQVUlEIEhhbmRsaW5nIChwYXJ0IDMpCj4gJSBSZXZpc2lv biAyCj4gCj4gIyBDdXJyZW50IHN0YXRlCj4gCj4gQXQgZWFybHkgYm9vdCwgWGVuIGVudW1lcmF0 ZXMgdGhlIGZlYXR1cmVzIGl0IGNhbiBzZWUsIHRha2VzIGludG8gYWNjb3VudAo+IGVycmF0YSBj aGVja3MgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMsIGFuZCBzdG9yZXMgdGhpcyBpbmZvcm1h dGlvbiBpbiB0aGUKPiBgYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eVtdYCBiaXRtYXAuICBU aGlzIGdldHMgYWRqdXN0ZWQgYXMgQVBzIGJvb3QgdXAsCj4gYW5kIGlzIHNhbml0aXNlZCB0byBk aXNhYmxlIGFsbCBkZXBlbmRlbnQgbGVhZiBmZWF0dXJlcy4KPiAKPiBBdCBtaWQvbGF0ZSBib290 IChiZWZvcmUgZG9tMCBpcyBjb25zdHJ1Y3RlZCksIFhlbiBwZXJmb3JtcyB0aGUgbmVjZXNzYXJ5 Cj4gY2FsY3VsYXRpb25zIGZvciBndWVzdCBjcHVpZCBoYW5kbGluZy4gIERhdGEgYXJlIGNvbnRh aW5lZCB3aXRoaW4gdGhlIGBzdHJ1Y3QKPiBjcHVpZF9wb2xpY3lgIG9iamVjdCwgd2hpY2ggaXMg YSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYXJjaGl0ZWN0dXJhbCBDUFVJRAo+IGluZm9ybWF0aW9u IGFzIHNwZWNpZmllZCBieSB0aGUgSW50ZWwgYW5kIEFNRCBtYW51YWxzLgo+IAo+IFRoZXJlIGFy ZSBhIGZldyBnbG9iYWwgYGNwdWlkX3BvbGljeWAgb2JqZWN0cy4gIEZpcnN0IGlzIHRoZSAqKnJh d19wb2xpY3kqKgo+IHdoaWNoIGlzIGZpbGxlZCBpbiBmcm9tIG5hdGl2ZSBgQ1BVSURgIGluc3Ry dWN0aW9ucy4gIFRoaXMgcmVwcmVzZW50cyB3aGF0IHRoZQo+IGhhcmR3YXJlIGlzIGNhcGFibGUg b2YsIGluIGl0cyBjdXJyZW50IGZpcm13YXJlL21pY3JvY29kZSBjb25maWd1cmF0aW9uLgo+IAo+ IFRoZSBuZXh0IGdsb2JhbCBvYmplY3QgaXMgKipob3N0X3BvbGljeSoqLCB3aGljaCBpcyBkZXJp dmVkIGZyb20gdGhlCj4gKipyYXdfcG9saWN5KiogYW5kIGBib290X2NwdV9kYXRhLng4Nl9jYXBh YmlsaXR5W11gLiBJdCByZXByZXNlbnRzIHRoZQo+IGZlYXR1cmVzIHdoaWNoIFhlbiBrbm93cyBh Ym91dCBhbmQgaXMgdXNpbmcuICBUaGUgKipob3N0X3BvbGljeSoqIGlzCj4gbmVjZXNzYXJpbHkg YSBzdWJzZXQgb2YgKipyYXdfcG9saWN5KiouCj4gCj4gVGhlICoqcHZfbWF4X3BvbGljeSoqIGFu ZCAqKmh2bV9tYXhfcG9saWN5KiogYXJlIGRlcml2ZWQgZnJvbSB0aGUKPiAqKmhvc3RfcG9saWN5 KiosIGFuZCByZXByZXNlbnQgdGhlIHVwcGVyIGJvdW5kcyBhdmFpbGFibGUgdG8gZ3Vlc3RzLgo+ IEdlbmVyYWxseSBzcGVha2luZywgdGhlIGd1ZXN0IHBvbGljaWVzIGFyZSBsZXNzIGZlYXR1cmVm dWxsIHRoYW4gdGhlCj4gKipob3N0X3BvbGljeSoqIGJlY2F1c2UgdGhlcmUgYXJlIGZlYXR1cmVz IHdoaWNoIFhlbiBkb2Vzbid0IG9yIGNhbm5vdCBzYWZlbHkKPiBwcm92aWRlIHRvIGd1ZXN0cy4g IEhvd2V2ZXIsIHRoZXkgYXJlIG5vdCBzdWJzZXRzLiAgVGhlcmUgYXJlIHNvbWUgZmVhdHVyZXMK PiAodGhlIEhZUEVSVklTT1IgYml0IGZvciBhbGwgZ3Vlc3RzLCBhbmQgWDJBUElDIG1vZGUgZm9y IEhWTSBndWVzdHMpIHdoaWNoIGFyZQo+IGVtdWxhdGVkIGluIHRoZSBhYnNlbmNlIG9mIHJlYWwg aGFyZHdhcmUgc3VwcG9ydC4KPiAKPiBUaGUgdG9vbHN0YWNrIG1heSBxdWVyeSBmb3IgdGhlICoq e3Jhdyxob3N0LHB2LGh2bX1cX2ZlYXR1cmVzZXQqKiBpbmZvcm1hdGlvbgo+IHVzaW5nIF9YRU5c X1NZU0NUTFxfZ2V0XF9jcHVcX2ZlYXR1cmVzZXRfLiAgVGhpcyBpcyBiaXRtYXAgZm9ybSBvZiB0 aGUgZmVhdHVyZQo+IGxlYXZlcyBvbmx5Lgo+IAo+IFdoZW4gYSBuZXcgZG9tYWluIGlzIGNyZWF0 ZWQsIHRoZSBhcHByb3ByaWF0ZSAqKntwdixodm19XF9tYXhfcG9saWN5KiogaXMKPiBkdXBsaWNh dGVkIGFzIGEgc3RhcnRpbmcgcG9pbnQsIGFuZCBjYW4gYmUgc3Vic2VxdWVudGx5IG11dGF0ZWQg aW5kaXJlY3RseSBieQo+IHNvbWUgaHlwZXJjYWxscwo+IChfWEVOXF9ET01DVExcX3tzZXRcX2Fk ZHJlc3NcX3NpemUsZGlzYWJsZVxfbWlncmF0ZSxzZXR0c2NpbmZvfV8pIG9yIGRpcmVjdGx5Cj4g YnkgX1hFTlxfRE9NQ1RMXF9zZXRcX2NwdWlkXy4KPiAKPiAKPiAjIElzc3VlcyB3aXRoIHRoZSBl eGlzdGluZyBoeXBlcmNhbGxzCj4gCj4gX1hFTlxfRE9NQ1RMXF9zZXRcX2NwdWlkXyBkb2Vzbid0 IGhhdmUgYSByZXR1cm4gdmFsdWUgd2hpY2ggdGhlIGRvbWFpbiBidWlsZGVyCj4gcGF5cyBhdHRl bnRpb24gdG8uICBUaGlzIGlzIGJlY2F1c2UsIGJlZm9yZSBDUFVJRCBwYXJ0IDIsIHRoZXJlIHdl cmUgbm8KPiBmYWlsdXJlIGNvbmRpdGlvbnMsIGFzIFhlbiB3b3VsZCBhY2NlcHQgYWxsIHRvb2xz dGFjay1wcm92aWRlZCBkYXRhLCBhbmQKPiBhdHRlbXB0IHRvIGF1ZGl0IGl0IGF0IHRoZSB0aW1l IGl0IHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGd1ZXN0LiAgVG8gc2ltcGxpZnkKPiB0aGUgcGFydCAy IHdvcmssIHRoaXMgYmVoYXZpb3VyIHdhcyBtYWludGFpbmVkLCBhbHRob3VnaCBYZW4gd2FzIGFs dGVyZWQgdG8KPiBhdWRpdCB0aGUgZGF0YSBhdCBoeXBlcmNhbGwgdGltZSwgdHlwaWNhbGx5IHpl cm9pbmcgb3V0IGFyZWFzIHdoaWNoIGZhaWxlZCB0aGUKPiBhdWRpdC4KPiAKPiBUaGVyZSBpcyBu byBtZWNoYW5pc20gZm9yIHRoZSB0b29sc3RhY2sgdG8gcXVlcnkgdGhlIENQVUlEIGNvbmZpZ3Vy YXRpb24gZm9yIGEKPiBzcGVjaWZpYyBkb21haW4uICBPcmlnaW5hbGx5LCB0aGUgZG9tYWluIGJ1 aWxkZXIgY29uc3RydWN0ZWQgYSBndWVzdHMgQ1BVSUQKPiBwb2xpY3kgZnJvbSBmaXJzdCBwcmlu Y2lwbGVzLCB1c2luZyBuYXRpdmUgYENQVUlEYCBpbnN0cnVjdGlvbnMgaW4gdGhlIGNvbnRyb2wK PiBkb21haW4uICBUaGlzIGZ1bmN0aW9uZWQgdG8gYW4gZXh0ZW50LCBidXQgd2FzIHN1YmplY3Qg dG8gbWFza2luZyBwcm9ibGVtcywKPiBhbmQgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUg d2l0aCBIVk0gY29udHJvbCBkb21haW5zIG9yIHRoZSB1c2Ugb2YKPiBfQ1BVSUQgRmF1bHRpbmdf IGluIG5ld2VyIEludGVsIHByb2Nlc3NvcnMuCj4gCj4gQ1BVSUQgcGhhc2UgMSBpbnRyb2R1Y2Vk IHRoZSBmZWF0dXJlc2V0IGluZm9ybWF0aW9uLCB3aGljaCBwcm92aWRlZCBhbgo+IGFyY2hpdGVj dHVyYWxseSBzb3VuZCBtZWNoYW5pc20gZm9yIHRoZSB0b29sc3RhY2sgdG8gaWRlbnRpZnkgd2hp Y2ggZmVhdHVyZXMKPiBhcmUgdXNhYmxlIGZvciBndWVzdHMuICBIb3dldmVyLCB0aGUgcmVzdCBv ZiB0aGUgQ1BVSUQgcG9saWN5IGlzIHN0aWxsCj4gZ2VuZXJhdGVkIGZyb20gbmF0aXZlIGBDUFVJ RGAgaW5zdHJ1Y3Rpb25zLgo+IAo+IFRoZSBgY3B1aWRfcG9saWN5YCBpcyBwZXItZG9tYWluIGlu Zm9ybWF0aW9uLiAgTW9zdCBDUFVJRCBkYXRhIGlzIGlkZW50aWNhbAo+IGFjcm9zcyBhbGwgQ1BV cy4gIFNvbWUgZGF0YSBhcmUgZHluYW1pYywgYmFzZWQgb24gb3RoZXIgY29udHJvbCBzZXR0aW5n cwo+IChBUElDLCBPU1hTQVZFLCBPU1BLRSwgT1NMV1ApLCBhbmQgWGVuIHN1YnN0aXR1dGVzIHRo ZXNlIGFwcHJvcHJpYXRlbHkgd2hlbgo+IHRoZSBpbmZvcm1hdGlvbiBpcyByZXF1ZXN0ZWQuLiAg T3RoZXIgYXJlYXMgaG93ZXZlciBhcmUgdG9wb2xvZ3kgaW5mb3JtYXRpb24sCj4gaW5jbHVkaW5n IHRocmVhZC9jb3JlL3NvY2tldCBsYXlvdXQsIGNhY2hlIGFuZCBUTEIgaGllcmFyY2h5LiAgVGhl c2UgZGF0YSBhcmUKPiBpbmhlcml0ZWQgZnJvbSB3aGljaGV2ZXIgcGh5c2ljYWwgQ1BVIHRoZSBk b21haW4gYnVpbGRlciBoYXBwZW5lZCB0byBiZQo+IHJ1bm5pbmcgb24gd2hlbiBpdCB3YXMgbWFr aW5nIGNhbGN1bGF0aW9ucy4gIEFzIGEgcmVzdWx0LCBpdCBpcyBpbmFwcHJvcHJpYXRlCj4gZm9y IHRoZSBndWVzdCB1bmRlciBjb25zdHJ1Y3Rpb24sIGFuZCB1c3VhbGx5IGVudGlyZWx5IGJvZ3Vz IHdoZW4gY29uc2lkZXJlZAo+IGFsb25nc2lkZSBvdGhlciBkYXRhLgo+IAo+IAo+ICMgT3RoZXIg cHJvYmxlbXMKPiAKPiBUaGVyZSBpcyBubyBlYXN5IHByb3Zpc2lvbiBmb3IgZmVhdHVyZXMgYXQg ZGlmZmVyZW50IGNvZGUgbWF0dXJpdHkgbGV2ZWxzLAo+IGJvdGggaW4gdGhlIGh5cGVydmlzb3Is IGFuZCBpbiB0aGUgdG9vbHN0YWNrLgo+IAo+IFNvbWUgQ1BVSUQgZmVhdHVyZXMgaGF2ZSB0b3At bGV2ZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgb24gdGhlIFhlbiBjb21tYW5kCj4gbGluZSwgYnV0 IG1vc3QgZG8gbm90LiAgT24gc29tZSBoYXJkd2FyZSwgc29tZSBmZWF0dXJlcyBjYW4gYmUgaGlk ZGVuCj4gaW5kaXJlY3RseSBieSBhbHRlcmluZyB0aGUgYGNwdWlkX21hc2tfKmAgcGFyYW1ldGVy cy4gIFRoaXMgaXMgYSBwcm9ibGVtIGZvcgo+IGRldmVsb3BpbmcgbmV3IGZlYXR1cmVzICh3aGlj aCB3YW50IHRvIGJlIG9mZi1ieS1kZWZhdWx0IGJ1dCBhYmxlIHRvIGJlIG9wdGVkCj4gaW4gdG8p LCBkZWJ1Z2dpbmcsIHdoZXJlIGl0IGNhbiBzb21ldGltZXMgYmUgdmVyeSB1c2VmdWwgdG8gaGlk ZSBmZWF0dXJlcyBhbmQKPiBzZWUgaWYgYSBwcm9ibGVtIHJlb2NjdXJzLCBhbmQgb2NjYXNpb25h bGx5IGluIHNlY3VyaXR5IGNpcmN1bXN0YW5jZXMsIHdoZXJlCj4gZGlzYWJsaW5nIGEgZmVhdHVy ZSBvdXRyaWdodCBpcyBhbiBlYXN5IHN0b3AtZ2FwIHNvbHV0aW9uLgo+IAo+IEZyb20gdGhlIHRv b2xzdGFjayBzaWRlLCBnaXZlbiBubyBvdGhlciBjb25zdHJhaW50cywgYSBndWVzdCBnZXRzIHRo ZQo+IGh5cGVydmlzb3ItbWF4IHNldCBvZiBmZWF0dXJlcy4gIFRoaXMgc2V0IG9mIGZlYXR1cmVz IGlzIGEgdHJhZGUgb2ZmIGJldHdlZW4KPiB3aGF0IGlzIHN1cHBvcnRlZCBpbiB0aGUgaHlwZXJ2 aXNvciwgYW5kIHdoaWNoIGZlYXR1cmVzIGNhbiByZWFzb25hYmx5IGJlCj4gb2ZmZXJlZCB3aXRo b3V0IGltcGVkaW5nIHRoZSBtaWdyYXRlYWJpbGl0eSBvZiB0aGUgZ3Vlc3QuICBUaGVyZSBpcyBs aXR0bGUKPiBwcm92aXNpb24gZm9yIGZlYXR1cmVzIHdoaWNoIGNhbiBiZSBvcHRlZCBpbiB0byBh dCB0aGUgdG9vbHN0YWNrIGxldmVsLCBhbmQKPiB0aG9zZSB0aGF0IGFyZSBhcmUgZG9uZSBzbyB2 aWEgYWQtaG9jIG1lYW5zLgo+IAo+IAo+ICMgUHJvcG9zYWwKPiAKPiBGaXJzdCBhbmQgZm9yZW1v c3QsIHNwbGl0IHRoZSBjdXJyZW50ICoqbWF4XF9wb2xpY3kqKiBub3Rpb24gaW50byBzZXBhcmF0 ZQo+ICoqbWF4KiogYW5kICoqZGVmYXVsdCoqIHBvbGljaWVzLiAgVGhpcyBhbGxvd3MgZm9yIHRo ZSBwcm92aXNpb24gb2YgZmVhdHVyZXMKPiB3aGljaCBhcmUgdW51c2VkIGJ5IGRlZmF1bHQsIGJ1 dCBtYXkgYmUgb3B0ZWQgaW4gdG8sIGJvdGggYXQgdGhlIGh5cGVydmlzb3IKPiBsZXZlbCBhbmQg dGhlIHRvb2xzdGFjayBsZXZlbC4KPiAKPiBBdCB0aGUgaHlwZXJ2aXNvciBsZXZlbCwgKiptYXgq KiBjb25zdGl0dXRlcyBhbGwgdGhlIGZlYXR1cmVzIFhlbiBjYW4gdXNlIG9uCj4gdGhlIGN1cnJl bnQgaGFyZHdhcmUsIHdoaWxlICoqZGVmYXVsdCoqIGlzIHRoZSBzdWJzZXQgdGhlcmVvZiB3aGlj aCBhcmUKPiBzdXBwb3J0ZWQgZmVhdHVyZXMsIHRoZSBmZWF0dXJlcyB3aGljaCB0aGUgdXNlciBo YXMgZXhwbGljaXRseSBvcHRlZCBpbiB0bywKPiBhbmQgZXhjbHVkaW5nIGFueSBmZWF0dXJlcyB0 aGUgdXNlciBoYXMgZXhwbGljaXRseSBvcHRlZCBvdXQgb2YuCj4gCj4gQSBuZXcgYGNwdWlkPWAg Y29tbWFuZCBsaW5lIG9wdGlvbiBzaGFsbCBiZSBpbnRyb2R1Y2VkLCB3aG9zZSBpbnRlcm5hbHMg YXJlCj4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgZmVhdHVyZXNldCBBQkkuICBU aGlzIG1lYW5zIHRoYXQgYWxsIGZlYXR1cmVzCj4gYWRkZWQgdG8gYGluY2x1ZGUvcHVibGljL2Fy Y2gteDg2L2NwdWZlYXR1cmVzZXQuaGAgYXV0b21hdGljYWxseSBnYWluIGNvbW1hbmQKPiBsaW5l IGNvbnRyb2wuICAoUkZDOiBUaGUgc2FtZSB0b3AgbGV2ZWwgb3B0aW9uIGNhbiBwcm9iYWJseSBi ZSB1c2VkIGZvcgo+IG5vbi1mZWF0dXJlIENQVUlEIGRhdGEgY29udHJvbCwgYWx0aG91Z2ggSSBj YW4ndCBjdXJyZW50bHkgdGhpbmsgb2YgYW55IGNhc2VzCj4gd2hlcmUgdGhpcyB3b3VsZCBiZSB1 c2VkIEFsc28gZmluZCBhIHNlbnNpYmxlIHdheSB0byBleHByZXNzICdhdmFpbGFibGUgYnV0Cj4g bm90IHRvIGJlIHVzZWQgYnkgWGVuJywgYXMgcGVyIHRoZSBjdXJyZW50IGBzbWVwYCBhbmQgYHNt YXBgIG9wdGlvbnMuKQo+IAo+IAo+IEF0IHRoZSBndWVzdCBsZXZlbCwgdGhlICoqbWF4KiogcG9s aWN5IGlzIGNvbmNlcHR1YWxseSB1bmNoYW5nZWQuICBJdAo+IGNvbnN0aXR1dGVzIGFsbCB0aGUg ZmVhdHVyZXMgWGVuIGlzIHdpbGxpbmcgdG8gb2ZmZXIgdG8gZWFjaCB0eXBlIG9mIGd1ZXN0IG9u Cj4gdGhlIGN1cnJlbnQgaGFyZHdhcmUgKGluY2x1ZGluZyBlbXVsYXRlZCBmZWF0dXJlcykuICBI b3dldmVyLCBpdCBzaGFsbCBpbnN0ZWFkCj4gYmUgZGVyaXZlZCBmcm9tIFhlbidzICoqZGVmYXVs dCoqIGhvc3QgcG9saWN5LiAgVGhpcyBpcyB0byBlbnN1cmUgdGhhdAo+IGV4cGVyaW1lbnRhbCBo eXBlcnZpc29yIGZlYXR1cmVzIG11c3QgYmUgb3B0ZWQgaW4gdG8gYXQgdGhlIFhlbiBsZXZlbCBi ZWZvcmUKPiB0aGV5IGNhbiBiZSBvcHRlZCBpbiB0byBhdCB0aGUgdG9vbHN0YWNrIGxldmVsLgo+ IAo+IFRoZSBndWVzdHMgKipkZWZhdWx0KiogcG9saWN5IGlzIHRoZW4gZGVyaXZlZCBmcm9tIGl0 cyAqKm1heCoqLiAgVGhpcyBpcwo+IGJlY2F1c2UgdGhlcmUgYXJlIHNvbWUgZmVhdHVyZXMgd2hp Y2ggc2hvdWxkIGFsd2F5cyBiZSBleHBsaWNpdGx5IG9wdGVkIGluIHRvCj4gYnkgdGhlIHRvb2xz dGFjaywgc3VjaCBhcyBlbXVsYXRlZCBmZWF0dXJlcyB3aGljaCBjb21lIHdpdGggYSBzZWN1cml0 eQo+IHRyYWRlLW9mZiwgb3IgZm9yIG5vbi1hcmNoaXRlY3R1cmFsIGZlYXR1cmVzIHdoaWNoIG1h eSBkaWZmZXIgaW4KPiBpbXBsZW1lbnRhdGlvbiBpbiBoZXRlcm9nZW5lb3VzIGVudmlyb25tZW50 cy4KPiAKPiBBbGwgZ2xvYmFsIHBvbGljaWVzIChYZW4gYW5kIGd1ZXN0LCBtYXggYW5kIGRlZmF1 bHQpIHNoYWxsIGJlIG1hZGUgYXZhaWxhYmxlCj4gdG8gdGhlIHRvb2xzdGFjaywgaW4gYSBtYW5u ZXIgc2ltaWxhciB0byB0aGUgZXhpc3RpbmcKPiBfWEVOXF9TWVNDVExcX2dldFxfY3B1XF9mZWF0 dXJlc2V0XyBtZWNoYW5pc20uICBUaGlzIGFsbG93cyBkZWNpc2lvbnMgdG8gYmUKPiB0YWtlbiB3 aGljaCBpbmNsdWRlIGFsbCBDUFVJRCBkYXRhLCBub3QganVzdCB0aGUgZmVhdHVyZSBiaXRtYXBz Lgo+IAo+IE5ldyBfWEVOXF9ET01DVExcX3tnZXQsc2V0fVxfY3B1aWRcX3BvbGljeV8gaHlwZXJj YWxscyB3aWxsIGJlIGludHJvZHVjZWQsCj4gd2hpY2ggYWxsb3dzIHRoZSB0b29sc3RhY2sgdG8g cXVlcnkgYW5kIHNldCB0aGUgY3B1aWQgcG9saWN5IGZvciBhIHNwZWNpZmljCj4gZG9tYWluLiAg SXQgc2hhbGwgc3VwZXJzZWRlIF9YRU5cX0RPTUNUTFxfc2V0XF9jcHVpZF8sIGFuZCBzaGFsbCBm YWlsIGlmIFhlbgo+IGlzIHVuaGFwcHkgd2l0aCBhbnkgYXNwZWN0IG9mIHRoZSBwb2xpY3kgZHVy aW5nIGF1ZGl0aW5nLiAgVGhpcyBwcm92aWRlcwo+IGZlZWRiYWNrIHRvIHRoZSB1c2VyIHRoYXQg YSBjaG9zZW4gY29tYmluYXRpb24gd2lsbCBub3Qgd29yaywgcmF0aGVyIHRoYW4gdGhlCj4gZ3Vl c3QgYm9vdGluZyBpbiBhbiB1bmV4cGVjdGVkIHN0YXRlLgo+IAo+IFdoZW4gYSBkb21haW4gaXMg aW5pdGlhbGx5IGNyZWF0ZWQsIHRoZSBhcHByb3ByaWF0ZSBndWVzdHMgKipkZWZhdWx0KiogcG9s aWN5Cj4gaXMgZHVwbGljYXRlZCBmb3IgdXNlLiAgV2hlbiBhdWRpdGluZywgWGVuIHNoYWxsIGF1 ZGl0IHRoZSB0b29sc3RhY2tzCj4gcmVxdWVzdGVkIHBvbGljeSBhZ2FpbnN0IHRoZSBndWVzdHMg KiptYXgqKiBwb2xpY3kuICBUaGlzIGFsbG93cyBleHBlcmltZW50YWwKPiBmZWF0dXJlcyBvciBu b24tbWlncmF0aW9uLXNhZmUgZmVhdHVyZXMgdG8gYmUgb3B0ZWQgaW4gdG8sIHdpdGhvdXQgdGhv c2UKPiBmZWF0dXJlcyBiZWluZyBpbXBvc2VkIHVwb24gYWxsIGd1ZXN0cyBhdXRvbWF0aWNhbGx5 Lgo+IAo+IEEgZ3Vlc3RzIENQVUlEIHBvbGljeSBzaGFsbCBiZSBpbW11dGFibGUgYWZ0ZXIgY29u c3RydWN0aW9uLiAgVGhpcyBiZXR0ZXIKPiBtYXRjaGVzIHJlYWwgaGFyZHdhcmUsIGFuZCBzaW1w bGlmaWVzIHRoZSBsb2dpYyBpbiBYZW4gdG8gdHJhbnNsYXRlIHBvbGljeQo+IGFsdGVyYXRpb25z IGludG8gY29uZmlndXJhdGlvbiBjaGFuZ2VzLgo+IAoKVGhpcyBhcHBlYXJzIHRvIGJlIGEgc3Vp dGFibGUgYWJzdHJhY3Rpb24gZXZlbiBmb3IgaGlnaGVyIGxldmVsIHRvb2xzdGFja3MKKGxpYnhs KS4gQXQgbGVhc3QgSSBjYW4gaW1hZ2luZSBsaWJ2aXJ0IGZldGNoaW5nIHRoZSBQVi9IVk0gbWF4 IHBvbGljeSwgYW5kCmNvbXBhcmUgdGhlbSBiZXR3ZWVuIGRpZmZlcmVudCBzZXJ2ZXJzIHdoZW4g dXNlciBjb21wdXRlcyB0aGUgZ3Vlc3QgY3B1IGNvbmZpZwoodGhlIG5vcm1hbGl6ZWQgb25lKSBh bmQgdXNlIHRoZSBjb21tb24gZGVub21pbmF0b3IgYXMgdGhlIGd1ZXN0IHBvbGljeS4KUHJvYmFi bHkgaGlnaGVyIGxldmVsIHRvb2xzdGFjayBjb3VsZCBldmVuIHVzZSB0aGVzZSBzYWlkIHBvbGlj aWVzIGNvbnN0cnVjdHMKYW5kIGJ1aWx0IHRoZSBpZGVhIG9mIG1vZGVscyBzdWNoIHRoYXQgdGhl IHVzZXIgY291bGQgZWFzaWx5IGNob29zZSBvbmUgZm9yIGEKcG9vbCBvZiBob3N0cyB3aXRoIGRp ZmZlcmVudCBmYW1pbGllcy4gQnV0IHRoZSBkaXNjdXNzaW9uIGhlcmUgaXMgbW9yZSBmb2N1c2Vk Cm9uIHhjIDwtPiBYZW4gc28gSSB3b24ndCBjbG9iYmVyIGRpc2N1c3Npb24gd2l0aCBsaWJ4bCBy ZW1hcmtzLgoKPiAoUkZDOiBEZWNpZGUgZXhhY3RseSB3aGVyZSB0byBmaXQgdGhpcy4gIF9YRU5c X0RPTUNUTFxfbWF4XF92Y3B1c18gcGVyaGFwcz8pCj4gVGhlIHRvb2xzdGFjayBzaGFsbCBhbHNv IGhhdmUgYSBtZWNoYW5pc20gdG8gZXhwbGljaXRseSBzZWxlY3QgdG9wb2xvZ3kKPiBjb25maWd1 cmF0aW9uIGZvciB0aGUgZ3Vlc3QsIHdoaWNoIHByaW1hcmlseSBhZmZlY3RzIHRoZSB2aXJ0dWFs IEFQSUMgSUQKPiBsYXlvdXQsIGFuZCBoYXMgYSBrbm9jayBvbiBlZmZlY3QgZm9yIHRoZSBBUElD IElEIG9mIHRoZSB2aXJ0dWFsIElPLUFQSUMuCj4gWGVuJ3MgYXVkaXRpbmcgc2hhbGwgZW5zdXJl IHRoYXQgZ3Vlc3RzIG9ic2VydmUgdmFsdWVzIGNvbnNpc3RlbnQgd2l0aCB0aGUKPiBndWFyYW50 ZWVzIG1hZGUgYnkgdGhlIHZlbmRvciBtYW51YWxzLgo+IApXaHkgY2hvb3NlIG1heF92Y3B1cyBk b21jdGw/CgpXaXRoIG11bHRpcGxlIHNvY2tldHMvbm9kZXMgYW5kIGhhdmluZyBzdXBwb3J0ZWQg ZXh0ZW5kZWQgdG9wb2xvZ3kgbGVhZiB0aGUgQVBJQwpJRCBsYXlvdXQgd2lsbCBjaGFuZ2UgY29u c2lkZXJhYmx5IHJlcXVpcmluZyBmaXh1cCBpZi4uLiBzYXkgd2Ugc2V0IHZOVU1BIChJCmtub3cg bnVtYSBub2RlICE9IHNvY2tldCBzcGVjIHdpc2UsIGJ1dCBvbiB0aGUgbWFjaGluZXMgd2UgaGF2 ZSBzZWVuIHNvIGZhciwKaXQncyBhIDE6MSBtYXBwaW5nKS4KCkFub3RoZXIgcXVlc3Rpb24gc2lu Y2Ugd2UgYXJlIHNwZWFraW5nIGFib3V0IHRvcG9sb2d5IGlzIHdvdWxkIGJlOiBob3cgZG8gd2UK bWFrZSBodm1sb2FkZXIgYXdhcmUgb2YgZWFjaCB0aGUgQVBJQ19JRCBsYXlvdXQ/IFJpZ2h0IG5v dywgaXQgaXMgdG9vIGhhcmRjb2RlZAoyICogQVBJQ19JRCA6KCBQcm9iYWJseSBhIHhlbnN0b3Jl IGVudHJ5ICdodm1sb2FkZXIvY3B1dG9wb2xvZ3ktdGhyZWFkcycgYW5kCidodm1sb2FkZXIvY3B1 dG9wb2xvZ3ktc29ja2V0cycgKG9yIHVzZSB2bnVtYV90b3BvLm5yX25vZGVzIGZvciB0aGUgbGF0 dGVyKT8KClRoaXMgYWxsIGJyaW5ncyBtZSB0byB0aGUgcXVlc3Rpb24gb2YgcGVyaGFwcyBhIHNl cGFyYXRlIGRvbWN0bD8KCj4gVGhlIGBkaXNhYmxlX21pZ3JhdGVgIGZpZWxkIHNoYWxsIGJlIGRy b3BwZWQuICBUaGUgY29uY2VwdCBvZiBtaWdyYXRlYWJpbGl0eQo+IGlzIG5vdCBib29sZWFuOyBp dCBpcyBhIGxhcmdlIHNwZWN0cnVtLCBhbGwgb2Ygd2hpY2ggbmVlZHMgdG8gYmUgbWFuYWdlZCBi eQo+IHRoZSB0b29sc3RhY2suICBUaGUgc2ltcGxlIGNhc2UgaXMgcGlja2luZyB0aGUgY29tbW9u IHN1YnNldCBvZiBmZWF0dXJlcwo+IGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24u ICBUaGlzIGJlY29tZXMgbW9yZSBjb21wbGljYXRlZCBlLmcuIGlmIHRoZQo+IGd1ZXN0IHVzZXMg TEJSL0xFUiwgYXQgd2hpY2ggcG9pbnQgdGhlIHRvb2xzdGFjayBuZWVkcyB0byBjb25zaWRlciBo YXJkd2FyZQo+IHdpdGggdGhlIHNhbWUgTEJSL0xFUiBmb3JtYXQgaW4gYWRkaXRpb24gdG8ganVz dCB0aGUgcGxhaW4gZmVhdHVyZXMuCj4gCj4gYGRpc2FibGVfbWlncmF0ZWAgaXMgY3VycmVudGx5 IG9ubHkgdXNlZCB0byBleHBvc2UgSVRTQyB0byBndWVzdHMsIGJ1dCB0aGVyZQo+IGFyZSBjYXNl cyB3aGVyZSBpcyBwZXJmZWN0bHkgc2FmZSB0byBtaWdyYXRlIHN1Y2ggYSBndWVzdCwgaWYgdGhl IGRlc3RpbmF0aW9uCj4gaG9zdCBoYXMgdGhlIHNhbWUgVFNDIGZyZXF1ZW5jeSBvciBoYXJkd2Fy ZSBUU0Mgc2NhbGluZyBzdXBwb3J0Lgo+IAo+IEZpbmFsbHksIGBkaXNhYmxlX21pZ3JhdGVgIGRv ZXNuJ3QgKGFuZCBjYW5ub3QgcmVhc29uYWJseSkgYmUgdXNlZCB0byBpbmhpYml0Cj4gc3RhdGUg Z2F0aGVyIG9wZXJhdGlvbnMsIGFzIHRoaXMgaW50ZXJmZXJlcyB3aXRoIGRlYnVnZ2luZyBhbmQg bW9uaXRvcmluZwo+IHRhc2tzLgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=