From mboxrd@z Thu Jan 1 00:00:00 1970 From: anshul makkar Subject: Re: [PATCH v4 03/34] xsm/xen_version: Add XSM for the xen_version hypercall Date: Thu, 24 Mar 2016 15:34:37 +0000 Message-ID: <56F4090D.5060003@citrix.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> <1458064616-23101-4-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458064616-23101-4-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org, konrad.wilk@oracle.com, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org T24gMTUvMDMvMTYgMTc6NTYsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiBBbGwgb2Yg WEVOVkVSXyogaGF2ZSBub3cgYW4gWFNNIGNoZWNrIGZvciB0aGVpciBzdWItb3BzLgo+Cj4gVGhl IHN1Ym9wIGZvciBYRU5WRVJfY29tbWFuZGxpbmUgaXMgbm93IGEgcHJpdmlsaWdlZCBvcGVyYXRp b24uCj4gVG8gbm90IGJyZWFrIGd1ZXN0cyB3ZSBzdGlsbCByZXR1cm4gYW4gc3RyaW5nIC0gYnV0 IGl0IGlzCj4ganVzdCAnPGRlbmllZD5cMCcuCj4KPiBUaGUgcmVzdDogWEVOVkVSX1t2ZXJzaW9u fGV4dHJhdmVyc2lvbnxjYXBhYmlsaXRpZXN8Cj4gcGFyYW1ldGVyc3xnZXRfZmVhdHVyZXN8cGFn ZV9zaXplfGd1ZXN0X2hhbmRsZXxjaGFuZ2VzZXR8Cj4gY29tcGlsZV9pbmZvXSBiZWhhdmUgYXMg YmVmb3JlIC0gYWxsb3dlZCBieSBkZWZhdWx0IGZvciBhbGwKPiBndWVzdHMgaWYgdXNpbmcgdGhl IFhTTSBkZWZhdWx0IHBvbGljeSBvciB3aXRoIHRoZSBkdW1teSBvbmUuCj4KPiBUaGUgYWRtaW4g Y2FuIGNob29zZSB0byBjaGFuZ2UgdGhlIHN1Yi1vcHMgdG8gYmUgZGVuaWVkCj4gYXMgdGhleSBz ZWUgZml0Lgo+Cj4gQWxzbyB3ZSBhZGQgYSBsb2NhbCB2YXJpYWJsZSBibG9jay4KPgo+IFNpZ25l ZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4K Pgo+IC0tLQo+IENjOiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KPiBD YzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4gQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNpdHJpeC5jb20+Cj4gQ2M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cj4KPiB2MjogRG8gWFNNIGNoZWNrIGZvciBhbGwgdGhl IFhFTlZFUl8gb3BzLgo+IHYzOiBBZGQgZW1wdHkgZGF0YSBjb25kaXRpb25zLgo+IHY0OiBSZXR1 cm4gPGRlbmllZD4gZm9yIHByaXYgc3Vib3BzLgo+IHY1OiBNb3ZlIGV4dHJhdmVyc2lvbiBmcm9t IHByaXYgdG8gbm9ybWFsLiBEcm9wIHRoZSBYU00gY2hlY2sKPiAgICAgIGZvciB0aGUgbm9uLXBy aXYgc3Vib3BzLgo+IHY2OiBBZGQgKzEgZm9yIHN0cmxlbih4ZW5fZGVueSgpKSB0byBpbmNsdWRl IE5VTEwuIE1vdmUgY2hhbmdlc2V0LAo+ICAgICAgY29tcGlsZV9pbmZvIHRvIG5vbi1wcml2IHN1 Ym9wcy4KPiB2NzogUmVtb3ZlIHRoZSBcMCBvbiB4ZW5fZGVueSgpCj4gdjg6IEFkZCBuZXcgWFNN IGRvbWFpbiBmb3IgeGVudmVyIGh5cGVyY2FsbC4gQWRkIGFsbCBzdWJvcHMgdG8gaXQuCj4gdjk6 IFJlbW92ZSB0aGUgZXh0cmEgbGluZSwgQWRkIEFjayBmcm9tIERhbmllbAo+IHYxMDogUmVuYW1l IHRoZSBYU00gZnJvbSB4ZW5fdmVyc2lvbl9vcCB0byB4c21feGVuX3ZlcnNpb24uCj4gICAgICBQ cmVmaXggdGhlIHR5cGVzIHdpdGggJ3hlbicgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBhbm90aGVy Cj4gICAgICBoeXBlcmNhbGwgcGVyZm9ybWluZyBzaW1pbGFyIG9wZXJhdGlvbi4gUmVtb3ZlZCBB Y2sgZnJvbSBEYW5pZWwKPiAgICAgIGFzIGl0IHdhcyBzbyBsYXJnZS4gQWRkIGxvY2FsIHZhcmlh YmxlIGJsb2NrLgo+IC0tLQo+ICAgdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hl bi94ZW4udGUgfCAxNSArKysrKysrKwo+ICAgeGVuL2NvbW1vbi9rZXJuZWwuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA1MyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gICB4ZW4v Y29tbW9uL3ZlcnNpb24uYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrCj4g ICB4ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5oICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4g ICB4ZW4vaW5jbHVkZS94c20vZHVtbXkuaCAgICAgICAgICAgICAgICAgICAgICB8IDIyICsrKysr KysrKysrKwo+ICAgeGVuL2luY2x1ZGUveHNtL3hzbS5oICAgICAgICAgICAgICAgICAgICAgICAg fCAgNSArKysKPiAgIHhlbi94c20vZHVtbXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDEgKwo+ICAgeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgICAg fCA0MyArKysrKysrKysrKysrKysrKysrKysrCj4gICB4ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nl c3NfdmVjdG9ycyAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKwo+ICAgeGVuL3hzbS9mbGFz ay9wb2xpY3kvc2VjdXJpdHlfY2xhc3NlcyAgICAgICAgfCAgMSArCj4gICAxMCBmaWxlcyBjaGFu Z2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv dG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUgYi90b29scy9mbGFz ay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZQo+IGluZGV4IGQzNWFlMjIuLjdlNzQw MGQgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94 ZW4udGUKPiArKysgYi90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50 ZQo+IEBAIC03Myw2ICs3MywxNSBAQCBhbGxvdyBkb20wX3QgeGVuX3Q6eGVuMiB7Cj4gICAgICAg cG11X2N0cmwKPiAgICAgICBnZXRfc3ltYm9sCj4gICB9Owo+ICsKPiArIyBBbGxvdyBkb20wIHRv IHVzZSBhbGwgWEVOVkVSXyBzdWJvcHMKPiArIyBOb3RlIHRoYXQgZG9tMCBpcyBwYXJ0IG9mIGRv bWFpbl90eXBlIHNvIHRoaXMgaGFzIGR1cGxpY2F0ZXMuCj4gK2FsbG93IGRvbTBfdCB4ZW5fdDp2 ZXJzaW9uIHsKPiArICAgIHhlbl92ZXJzaW9uIHhlbl9leHRyYXZlcnNpb24geGVuX2NvbXBpbGVf aW5mbyB4ZW5fY2FwYWJpbGl0aWVzCj4gKyAgICB4ZW5fY2hhbmdlc2V0IHhlbl9wbGF0Zm9ybV9w YXJhbWV0ZXJzIHhlbl9nZXRfZmVhdHVyZXMgeGVuX3BhZ2VzaXplCj4gKyAgICB4ZW5fZ3Vlc3Rf aGFuZGxlIHhlbl9jb21tYW5kbGluZQo+ICt9Owo+ICsKPiAgIGFsbG93IGRvbTBfdCB4ZW5fdDpt bXUgbWVtb3J5bWFwOwo+Cj4gICAjIEFsbG93IGRvbTAgdG8gdXNlIHRoZXNlIGRvbWN0bHMgb24g aXRzZWxmLiBGb3IgZG9tY3RscyBhY3Rpbmcgb24gb3RoZXIKPiBAQCAtMTM3LDYgKzE0NiwxMiBA QCBpZiAoZ3Vlc3Rfd3JpdGVjb25zb2xlKSB7Cj4gICAjIHBtdV9jdHJsIGlzIGZvcikKPiAgIGFs bG93IGRvbWFpbl90eXBlIHhlbl90OnhlbjIgcG11X3VzZTsKPgo+ICsjIEZvciBub3JtYWwgZ3Vl c3RzIGFsbCBleGNlcHQgWEVOVkVSX2NvbW1hbmRsaW5lCj4gK2FsbG93IGRvbWFpbl90eXBlIHhl bl90OnZlcnNpb24gewo+ICsgICAgeGVuX3ZlcnNpb24geGVuX2V4dHJhdmVyc2lvbiB4ZW5fY29t cGlsZV9pbmZvIHhlbl9jYXBhYmlsaXRpZXMKPiArICAgIHhlbl9jaGFuZ2VzZXQgeGVuX3BsYXRm b3JtX3BhcmFtZXRlcnMgeGVuX2dldF9mZWF0dXJlcyB4ZW5fcGFnZXNpemUKPiArICAgIHhlbl9n dWVzdF9oYW5kbGUKPiArfTsKPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICMKPiAgICMg RG9tYWluIGNyZWF0aW9uCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24va2VybmVsLmMgYi94ZW4v Y29tbW9uL2tlcm5lbC5jCj4gaW5kZXggMDYxOGRhMi4uMjY5OWFjMCAxMDA2NDQKPiAtLS0gYS94 ZW4vY29tbW9uL2tlcm5lbC5jCj4gKysrIGIveGVuL2NvbW1vbi9rZXJuZWwuYwo+IEBAIC0xMyw2 ICsxMyw3IEBACj4gICAjaW5jbHVkZSA8eGVuL25taS5oPgo+ICAgI2luY2x1ZGUgPHhlbi9ndWVz dF9hY2Nlc3MuaD4KPiAgICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+Cj4gKyNpbmNsdWRlIDx4 c20veHNtLmg+Cj4gICAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KPiAgICNpbmNsdWRlIDxwdWJs aWMvbm1pLmg+Cj4gICAjaW5jbHVkZSA8cHVibGljL3ZlcnNpb24uaD4KPiBAQCAtMjIzLDEyICsy MjQsMTUgQEAgdm9pZCBfX2luaXQgZG9faW5pdGNhbGxzKHZvaWQpCj4gICAvKgo+ICAgICogU2lt cGxlIGh5cGVyY2FsbHMuCj4gICAgKi8KPiAtCj4gICBETyh4ZW5fdmVyc2lvbikoaW50IGNtZCwg WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gICB7Cj4gKyAgICBib29sX3QgZGVu eSA9ICEheHNtX3hlbl92ZXJzaW9uKFhTTV9PVEhFUiwgY21kKTsKPiArCj4gICAgICAgc3dpdGNo ICggY21kICkKPiAgICAgICB7Cj4gICAgICAgY2FzZSBYRU5WRVJfdmVyc2lvbjoKPiArICAgICAg ICBpZiAoIGRlbnkgKQo+ICsgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAgICAgICAgcmV0dXJu ICh4ZW5fbWFqb3JfdmVyc2lvbigpIDw8IDE2KSB8IHhlbl9taW5vcl92ZXJzaW9uKCk7Cj4KPiAg ICAgICBjYXNlIFhFTlZFUl9leHRyYXZlcnNpb246Cj4gQEAgLTIzNiw3ICsyNDAsNyBAQCBETyh4 ZW5fdmVyc2lvbikoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4g ICAgICAgICAgIHhlbl9leHRyYXZlcnNpb25fdCBleHRyYXZlcnNpb247Cj4KPiAgICAgICAgICAg bWVtc2V0KGV4dHJhdmVyc2lvbiwgMCwgc2l6ZW9mKGV4dHJhdmVyc2lvbikpOwo+IC0gICAgICAg IHNhZmVfc3RyY3B5KGV4dHJhdmVyc2lvbiwgeGVuX2V4dHJhX3ZlcnNpb24oKSk7Cj4gKyAgICAg ICAgc2FmZV9zdHJjcHkoZXh0cmF2ZXJzaW9uLCBkZW55ID8geGVuX2RlbnkoKSA6IHhlbl9leHRy YV92ZXJzaW9uKCkpOwo+ICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3QoYXJnLCBleHRyYXZl cnNpb24sIEFSUkFZX1NJWkUoZXh0cmF2ZXJzaW9uKSkgKQo+ICAgICAgICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7Cj4gICAgICAgICAgIHJldHVybiAwOwo+IEBAIC0yNDcsMTAgKzI1MSwxMCBAQCBE Tyh4ZW5fdmVyc2lvbikoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcp Cj4gICAgICAgICAgIHhlbl9jb21waWxlX2luZm9fdCBpbmZvOwo+Cj4gICAgICAgICAgIG1lbXNl dCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKPiAtICAgICAgICBzYWZlX3N0cmNweShpbmZvLmNv bXBpbGVyLCAgICAgICB4ZW5fY29tcGlsZXIoKSk7Cj4gLSAgICAgICAgc2FmZV9zdHJjcHkoaW5m by5jb21waWxlX2J5LCAgICAgeGVuX2NvbXBpbGVfYnkoKSk7Cj4gLSAgICAgICAgc2FmZV9zdHJj cHkoaW5mby5jb21waWxlX2RvbWFpbiwgeGVuX2NvbXBpbGVfZG9tYWluKCkpOwo+IC0gICAgICAg IHNhZmVfc3RyY3B5KGluZm8uY29tcGlsZV9kYXRlLCAgIHhlbl9jb21waWxlX2RhdGUoKSk7Cj4g KyAgICAgICAgc2FmZV9zdHJjcHkoaW5mby5jb21waWxlciwgICAgICAgZGVueSA/IHhlbl9kZW55 KCkgOiB4ZW5fY29tcGlsZXIoKSk7Cj4gKyAgICAgICAgc2FmZV9zdHJjcHkoaW5mby5jb21waWxl X2J5LCAgICAgZGVueSA/IHhlbl9kZW55KCkgOiB4ZW5fY29tcGlsZV9ieSgpKTsKPiArICAgICAg ICBzYWZlX3N0cmNweShpbmZvLmNvbXBpbGVfZG9tYWluLCBkZW55ID8geGVuX2RlbnkoKSA6IHhl bl9jb21waWxlX2RvbWFpbigpKTsKPiArICAgICAgICBzYWZlX3N0cmNweShpbmZvLmNvbXBpbGVf ZGF0ZSwgICBkZW55ID8geGVuX2RlbnkoKSA6IHhlbl9jb21waWxlX2RhdGUoKSk7Cj4gICAgICAg ICAgIGlmICggY29weV90b19ndWVzdChhcmcsICZpbmZvLCAxKSApCj4gICAgICAgICAgICAgICBy ZXR1cm4gLUVGQVVMVDsKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4gQEAgLTI2MSw3ICsyNjUsOCBA QCBETyh4ZW5fdmVyc2lvbikoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBh cmcpCj4gICAgICAgICAgIHhlbl9jYXBhYmlsaXRpZXNfaW5mb190IGluZm87Cj4KPiAgICAgICAg ICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZihpbmZvKSk7Cj4gLSAgICAgICAgYXJjaF9nZXRfeGVu X2NhcHMoJmluZm8pOwo+ICsgICAgICAgIGlmICggIWRlbnkgKQo+ICsgICAgICAgICAgICBhcmNo X2dldF94ZW5fY2FwcygmaW5mbyk7Cj4KPiAgICAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFy ZywgaW5mbywgQVJSQVlfU0laRShpbmZvKSkgKQo+ICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFV TFQ7Cj4gQEAgLTI3NCw2ICsyNzksOSBAQCBETyh4ZW5fdmVyc2lvbikoaW50IGNtZCwgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gICAgICAgICAgICAgICAudmlydF9zdGFydCA9 IEhZUEVSVklTT1JfVklSVF9TVEFSVAo+ICAgICAgICAgICB9Owo+Cj4gKyAgICAgICAgaWYgKCBk ZW55ICkKPiArICAgICAgICAgICAgcGFyYW1zLnZpcnRfc3RhcnQgPSAwOwo+ICsKPiAgICAgICAg ICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFyZywgJnBhcmFtcywgMSkgKQo+ICAgICAgICAgICAgICAg cmV0dXJuIC1FRkFVTFQ7Cj4gICAgICAgICAgIHJldHVybiAwOwo+IEBAIC0yODUsNyArMjkzLDcg QEAgRE8oeGVuX3ZlcnNpb24pKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkg YXJnKQo+ICAgICAgICAgICB4ZW5fY2hhbmdlc2V0X2luZm9fdCBjaGdzZXQ7Cj4KPiAgICAgICAg ICAgbWVtc2V0KGNoZ3NldCwgMCwgc2l6ZW9mKGNoZ3NldCkpOwo+IC0gICAgICAgIHNhZmVfc3Ry Y3B5KGNoZ3NldCwgeGVuX2NoYW5nZXNldCgpKTsKPiArICAgICAgICBzYWZlX3N0cmNweShjaGdz ZXQsIGRlbnkgPyB4ZW5fZGVueSgpIDogeGVuX2NoYW5nZXNldCgpKTsKPiAgICAgICAgICAgaWYg KCBjb3B5X3RvX2d1ZXN0KGFyZywgY2hnc2V0LCBBUlJBWV9TSVpFKGNoZ3NldCkpICkKPiAgICAg ICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAgICAgICAgICByZXR1cm4gMDsKPiBAQCAtMzAy LDYgKzMxMCw4IEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHZvaWQpIGFyZykKPiAgICAgICAgICAgc3dpdGNoICggZmkuc3VibWFwX2lkeCApCj4gICAg ICAgICAgIHsKPiAgICAgICAgICAgY2FzZSAwOgo+ICsgICAgICAgICAgICBpZiAoIGRlbnkgKQo+ ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgICBmaS5zdWJtYXAgPSAoMVUg PDwgWEVORkVBVF9tZW1vcnlfb3Bfdm5vZGVfc3VwcG9ydGVkKTsKPiAgICAgICAgICAgICAgIGlm ICggVk1fQVNTSVNUKGQsIHBhZV9leHRlbmRlZF9jcjMpICkKPiAgICAgICAgICAgICAgICAgICBm aS5zdWJtYXAgfD0gKDFVIDw8IFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRnYik7Cj4gQEAgLTM0 MiwxOSArMzUyLDM4IEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHZvaWQpIGFyZykKPiAgICAgICB9Cj4KPiAgICAgICBjYXNlIFhFTlZFUl9wYWdlc2l6 ZToKPiArICAgICAgICBpZiAoIGRlbnkgKQo+ICsgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAg ICAgICAgcmV0dXJuICghZ3Vlc3RfaGFuZGxlX2lzX251bGwoYXJnKSA/IC1FSU5WQUwgOiBQQUdF X1NJWkUpOwo+Cj4gICAgICAgY2FzZSBYRU5WRVJfZ3Vlc3RfaGFuZGxlOgo+IC0gICAgICAgIGlm ICggY29weV90b19ndWVzdChhcmcsIGN1cnJlbnQtPmRvbWFpbi0+aGFuZGxlLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKGN1cnJlbnQtPmRvbWFpbi0+aGFuZGxlKSkg KQo+ICsgICAgewo+ICsgICAgICAgIHhlbl9kb21haW5faGFuZGxlX3QgaGRsOwo+ICsgICAgICAg IHNzaXplX3QgbGVuOwo+ICsKPiArICAgICAgICBpZiAoIGRlbnkgKQo+ICsgICAgICAgIHsKPiAr ICAgICAgICAgICAgbGVuID0gc2l6ZW9mKGhkbCk7Cj4gKyAgICAgICAgICAgIG1lbXNldCgmaGRs LCAwLCBsZW4pOwo+ICsgICAgICAgIH0gZWxzZQo+ICsgICAgICAgICAgICBsZW4gPSBBUlJBWV9T SVpFKGN1cnJlbnQtPmRvbWFpbi0+aGFuZGxlKTsKPiArCj4gKyAgICAgICAgaWYgKCBjb3B5X3Rv X2d1ZXN0KGFyZywgZGVueSA/IGhkbCA6IGN1cnJlbnQtPmRvbWFpbi0+aGFuZGxlLCBsZW4gKSAp Cj4gICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4g LQo+ICsgICAgfQo+ICAgICAgIGNhc2UgWEVOVkVSX2NvbW1hbmRsaW5lOgo+IC0gICAgICAgIGlm ICggY29weV90b19ndWVzdChhcmcsIHNhdmVkX2NtZGxpbmUsIEFSUkFZX1NJWkUoc2F2ZWRfY21k bGluZSkpICkKPiArICAgIHsKPiArICAgICAgICBzaXplX3QgbGVuID0gQVJSQVlfU0laRShzYXZl ZF9jbWRsaW5lKTsKPiArCj4gKyAgICAgICAgaWYgKCBkZW55ICkKPiArICAgICAgICAgICAgbGVu ID0gc3RybGVuKHhlbl9kZW55KCkpICsgMTsKPiArCj4gKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1 ZXN0KGFyZywgZGVueSA/IHhlbl9kZW55KCkgOiBzYXZlZF9jbWRsaW5lLCBsZW4pICkKPiAgICAg ICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAgICAgICAgICByZXR1cm4gMDsKPiAgICAgICB9 Cj4gKyAgICB9Cj4KPiAgICAgICByZXR1cm4gLUVOT1NZUzsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi92ZXJzaW9uLmMgYi94ZW4vY29tbW9uL3ZlcnNpb24uYwo+IGluZGV4IGIxNTJl MjcuLmZjOWJmNDIgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi92ZXJzaW9uLmMKPiArKysgYi94 ZW4vY29tbW9uL3ZlcnNpb24uYwo+IEBAIC01NSwzICs1NSwxOCBAQCBjb25zdCBjaGFyICp4ZW5f YmFubmVyKHZvaWQpCj4gICB7Cj4gICAgICAgcmV0dXJuIFhFTl9CQU5ORVI7Cj4gICB9Cj4gKwo+ ICtjb25zdCBjaGFyICp4ZW5fZGVueSh2b2lkKQo+ICt7Cj4gKyAgICByZXR1cm4gIjxkZW5pZWQ+ IjsKPiArfQo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4g KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogdGFi LXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAqLwo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5oIGIveGVuL2luY2x1ZGUveGVu L3ZlcnNpb24uaAo+IGluZGV4IDgxYTNjN2QuLjAxNmE1NmMgMTAwNjQ0Cj4gLS0tIGEveGVuL2lu Y2x1ZGUveGVuL3ZlcnNpb24uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi92ZXJzaW9uLmgKPiBA QCAtMTIsNSArMTIsNSBAQCB1bnNpZ25lZCBpbnQgeGVuX21pbm9yX3ZlcnNpb24odm9pZCk7Cj4g ICBjb25zdCBjaGFyICp4ZW5fZXh0cmFfdmVyc2lvbih2b2lkKTsKPiAgIGNvbnN0IGNoYXIgKnhl bl9jaGFuZ2VzZXQodm9pZCk7Cj4gICBjb25zdCBjaGFyICp4ZW5fYmFubmVyKHZvaWQpOwo+IC0K PiArY29uc3QgY2hhciAqeGVuX2Rlbnkodm9pZCk7Cj4gICAjZW5kaWYgLyogX19YRU5fVkVSU0lP Tl9IX18gKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94ZW4vaW5j bHVkZS94c20vZHVtbXkuaAo+IGluZGV4IDFkMTM4MjYuLjk0Yjg4NTUgMTAwNjQ0Cj4gLS0tIGEv eGVuL2luY2x1ZGUveHNtL2R1bW15LmgKPiArKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAo+ IEBAIC03MjcsMyArNzI3LDI1IEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fcG11X29wIChY U01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50Cj4gICB9Cj4KPiAg ICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCj4gKwo+ICsjaW5jbHVkZSA8cHVibGljL3ZlcnNpb24u aD4KPiArc3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV94ZW5fdmVyc2lvbiAoWFNNX0RFRkFVTFRf QVJHIHVpbnQzMl90IG9wKQo+ICt7Cj4gKyAgICBYU01fQVNTRVJUX0FDVElPTihYU01fT1RIRVIp Owo+ICsgICAgc3dpdGNoICggb3AgKQo+ICsgICAgewo+ICsgICAgY2FzZSBYRU5WRVJfdmVyc2lv bjoKPiArICAgIGNhc2UgWEVOVkVSX2V4dHJhdmVyc2lvbjoKPiArICAgIGNhc2UgWEVOVkVSX2Nv bXBpbGVfaW5mbzoKPiArICAgIGNhc2UgWEVOVkVSX2NhcGFiaWxpdGllczoKPiArICAgIGNhc2Ug WEVOVkVSX2NoYW5nZXNldDoKPiArICAgIGNhc2UgWEVOVkVSX3BsYXRmb3JtX3BhcmFtZXRlcnM6 Cj4gKyAgICBjYXNlIFhFTlZFUl9nZXRfZmVhdHVyZXM6Cj4gKyAgICBjYXNlIFhFTlZFUl9wYWdl c2l6ZToKPiArICAgIGNhc2UgWEVOVkVSX2d1ZXN0X2hhbmRsZToKPiArICAgICAgICAvKiBUaGVz ZSBNVVNUIGFsd2F5cyBiZSBhY2Nlc3NpYmxlIHRvIGFueSBndWVzdCBieSBkZWZhdWx0LiAqLwo+ ICsgICAgICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oWFNNX0hPT0ssIGN1cnJlbnQtPmRv bWFpbiwgTlVMTCk7Cj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIHJldHVybiB4c21fZGVmYXVs dF9hY3Rpb24oWFNNX1BSSVYsIGN1cnJlbnQtPmRvbWFpbiwgTlVMTCk7Cj4gKyAgICB9Cj4gK30K PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hz bS5oCj4gaW5kZXggM2FmZWQ3MC4uZGI0NDBmNiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94 c20veHNtLmgKPiArKysgYi94ZW4vaW5jbHVkZS94c20veHNtLmgKPiBAQCAtMTkzLDYgKzE5Myw3 IEBAIHN0cnVjdCB4c21fb3BlcmF0aW9ucyB7Cj4gICAgICAgaW50ICgqaW9wb3J0X21hcHBpbmcp IChzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBzLCB1aW50MzJfdCBlLCB1aW50OF90IGFsbG93 KTsKPiAgICAgICBpbnQgKCpwbXVfb3ApIChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg b3ApOwo+ICAgI2VuZGlmCj4gKyAgICBpbnQgKCp4ZW5fdmVyc2lvbikgKHVpbnQzMl90IGNtZCk7 Cj4gICB9Owo+Cj4gICAjaWZkZWYgQ09ORklHX1hTTQo+IEBAIC03MzEsNiArNzMyLDEwIEBAIHN0 YXRpYyBpbmxpbmUgaW50IHhzbV9wbXVfb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQKPgo+ICAgI2VuZGlmIC8qIENPTkZJR19YODYgKi8KPgo+ICtz dGF0aWMgaW5saW5lIGludCB4c21feGVuX3ZlcnNpb24gKHhzbV9kZWZhdWx0X3QgZGVmLCB1aW50 MzJfdCBvcCkKPiArewo+ICsgICAgcmV0dXJuIHhzbV9vcHMtPnhlbl92ZXJzaW9uKG9wKTsKPiAr fQo+ICAgI2VuZGlmIC8qIFhTTV9OT19XUkFQUEVSUyAqLwo+Cj4gICAjaWZkZWYgQ09ORklHX01V TFRJQk9PVAo+IGRpZmYgLS1naXQgYS94ZW4veHNtL2R1bW15LmMgYi94ZW4veHNtL2R1bW15LmMK PiBpbmRleCAwZjMyNjM2Li45NzkxYWQ0IDEwMDY0NAo+IC0tLSBhL3hlbi94c20vZHVtbXkuYwo+ ICsrKyBiL3hlbi94c20vZHVtbXkuYwo+IEBAIC0xNjIsNCArMTYyLDUgQEAgdm9pZCB4c21fZml4 dXBfb3BzIChzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgKm9wcykKPiAgICAgICBzZXRfdG9fZHVtbXlf aWZfbnVsbChvcHMsIGlvcG9ydF9tYXBwaW5nKTsKPiAgICAgICBzZXRfdG9fZHVtbXlfaWZfbnVs bChvcHMsIHBtdV9vcCk7Cj4gICAjZW5kaWYKPiArICAgIHNldF90b19kdW1teV9pZl9udWxsKG9w cywgeGVuX3ZlcnNpb24pOwo+ICAgfQo+IGRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tz LmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKPiBpbmRleCA0ODEzNjIzLi5kMWJlZjQzIDEwMDY0 NAo+IC0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYwo+ICsrKyBiL3hlbi94c20vZmxhc2svaG9v a3MuYwo+IEBAIC0yNiw2ICsyNiw3IEBACj4gICAjaW5jbHVkZSA8cHVibGljL3hlbi5oPgo+ICAg I2luY2x1ZGUgPHB1YmxpYy9waHlzZGV2Lmg+Cj4gICAjaW5jbHVkZSA8cHVibGljL3BsYXRmb3Jt Lmg+Cj4gKyNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgo+Cj4gICAjaW5jbHVkZSA8cHVibGlj L3hzbS9mbGFza19vcC5oPgo+Cj4gQEAgLTE2MjAsNiArMTYyMSw0NyBAQCBzdGF0aWMgaW50IGZs YXNrX3BtdV9vcCAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IG9wKQo+ICAgfQo+ICAg I2VuZGlmIC8qIENPTkZJR19YODYgKi8KPgo+ICtzdGF0aWMgaW50IGZsYXNrX3hlbl92ZXJzaW9u ICh1aW50MzJfdCBvcCkKPiArewo+ICsgICAgdTMyIGRzaWQgPSBkb21haW5fc2lkKGN1cnJlbnQt PmRvbWFpbik7Cj4gKwo+ICsgICAgc3dpdGNoICggb3AgKQo+ICsgICAgewo+ICsgICAgY2FzZSBY RU5WRVJfdmVyc2lvbjoKPiArICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lO SVRTSURfWEVOLCBTRUNDTEFTU19WRVJTSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkVSU0lPTl9fWEVOX1ZFUlNJT04sIE5VTEwpOwo+ICsgICAgY2FzZSBYRU5WRVJfZXh0cmF2 ZXJzaW9uOgo+ICsgICAgICAgIHJldHVybiBhdmNfaGFzX3Blcm0oZHNpZCwgU0VDSU5JVFNJRF9Y RU4sIFNFQ0NMQVNTX1ZFUlNJT04sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJT SU9OX19YRU5fRVhUUkFWRVJTSU9OLCBOVUxMKTsKPiArICAgIGNhc2UgWEVOVkVSX2NvbXBpbGVf aW5mbzoKPiArICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVO LCBTRUNDTEFTU19WRVJTSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lP Tl9fWEVOX0NPTVBJTEVfSU5GTywgTlVMTCk7Cj4gKyAgICBjYXNlIFhFTlZFUl9jYXBhYmlsaXRp ZXM6Cj4gKyAgICAgICAgcmV0dXJuIGF2Y19oYXNfcGVybShkc2lkLCBTRUNJTklUU0lEX1hFTiwg U0VDQ0xBU1NfVkVSU0lPTiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05f X1hFTl9DQVBBQklMSVRJRVMsIE5VTEwpOwo+ICsgICAgY2FzZSBYRU5WRVJfY2hhbmdlc2V0Ogo+ ICsgICAgICAgIHJldHVybiBhdmNfaGFzX3Blcm0oZHNpZCwgU0VDSU5JVFNJRF9YRU4sIFNFQ0NM QVNTX1ZFUlNJT04sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX19YRU5f Q0hBTkdFU0VULCBOVUxMKTsKPiArICAgIGNhc2UgWEVOVkVSX3BsYXRmb3JtX3BhcmFtZXRlcnM6 Cj4gKyAgICAgICAgcmV0dXJuIGF2Y19oYXNfcGVybShkc2lkLCBTRUNJTklUU0lEX1hFTiwgU0VD Q0xBU1NfVkVSU0lPTiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fX1hF Tl9QTEFURk9STV9QQVJBTUVURVJTLCBOVUxMKTsKPiArICAgIGNhc2UgWEVOVkVSX2dldF9mZWF0 dXJlczoKPiArICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVO LCBTRUNDTEFTU19WRVJTSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lP Tl9fWEVOX0dFVF9GRUFUVVJFUywgTlVMTCk7Cj4gKyAgICBjYXNlIFhFTlZFUl9wYWdlc2l6ZToK PiArICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBTRUND TEFTU19WRVJTSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9fWEVO X1BBR0VTSVpFLCBOVUxMKTsKPiArICAgIGNhc2UgWEVOVkVSX2d1ZXN0X2hhbmRsZToKPiArICAg ICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19W RVJTSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9fWEVOX0dVRVNU X0hBTkRMRSwgTlVMTCk7Cj4gKyAgICBjYXNlIFhFTlZFUl9jb21tYW5kbGluZToKPiArICAgICAg ICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19WRVJT SU9OLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9fWEVOX0NPTU1BTkRM SU5FLCBOVUxMKTsKPiArICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiAr ICAgIH0KPiArfQo+ICsKPiAgIGxvbmcgZG9fZmxhc2tfb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh4c21fb3BfdCkgdV9mbGFza19vcCk7Cj4gICBpbnQgY29tcGF0X2ZsYXNrX29wKFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeHNtX29wX3QpIHVfZmxhc2tfb3ApOwo+Cj4gQEAgLTE3NTgsNiArMTgw MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxhc2tfb3BzID0gewo+ICAgICAg IC5pb3BvcnRfbWFwcGluZyA9IGZsYXNrX2lvcG9ydF9tYXBwaW5nLAo+ICAgICAgIC5wbXVfb3Ag PSBmbGFza19wbXVfb3AsCj4gICAjZW5kaWYKPiArICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNrX3hl bl92ZXJzaW9uLAo+ICAgfTsKPgo+ICAgc3RhdGljIF9faW5pdCB2b2lkIGZsYXNrX2luaXQodm9p ZCkKPiBkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgYi94 ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwo+IGluZGV4IGVmZmI1OWYuLjYyOGRk NWMgMTAwNjQ0Cj4gLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKPiAr KysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwo+IEBAIC00OTUsMyArNDk1 LDMxIEBAIGNsYXNzIHNlY3VyaXR5Cj4gICAjIHJlbW92ZSBvY29udGV4dCBsYWJlbCBkZWZpbml0 aW9ucyBmb3IgcmVzb3VyY2VzCj4gICAgICAgZGVsX29jb250ZXh0Cj4gICB9Cj4gKwo+ICsjIENs YXNzIHZlcnNpb24gaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgWEVOVkVSXyBoeXBlcmNhbGwuCj4g KyMgRWFjaCBzdWItb3BzIGlzIGRlc2NyaWJlZCBoZXJlIC0gaW4gdGhlIGRlZmF1bHQgY2FzZSBh bGwgb2YgdGhlbSBzaG91bGQKPiArIyBiZSBhbGxvd2VkIGV4Y2VwdCB0aGUgWEVOVkVSX2NvbW1h bmRsaW5lLgo+ICsjCj4gK2NsYXNzIHZlcnNpb24KPiArewo+ICsjIE9mdGVuIGNhbGxlZCBieSBQ ViBrZXJuZWxzIHRvIGZvcmNlIGFuIGNhbGxiYWNrLgo+ICsgICAgeGVuX3ZlcnNpb24KPiArIyBF eHRyYSBpbmZvcm1hdGlvbnMgKC11bnN0YWJsZSkuCj4gKyAgICB4ZW5fZXh0cmF2ZXJzaW9uCj4g KyMgQ29tcGlsZSBpbmZvcm1hdGlvbiBvZiB0aGUgaHlwZXJ2aXNvci4KPiArICAgIHhlbl9jb21w aWxlX2luZm8KPiArIyBTdWNoIGFzICJ4ZW4tMy4wLXg4Nl82NCB4ZW4tMy4wLXg4Nl8zMnAgaHZt LTMuMC14ODZfMzIgaHZtLTMuMC14ODZfMzJwIGh2bS0zLjAteDg2XzY0Ii4KPiArICAgIHhlbl9j YXBhYmlsaXRpZXMKPiArIyBTdWNoIGFzIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Ygd2hlcmUgdGhl IGh5cGVydmlzb3IgcmVzaWRlcy4KPiArICAgIHhlbl9wbGF0Zm9ybV9wYXJhbWV0ZXJzCj4gKyMg U291cmNlIGNvZGUgY2hhbmdlc2V0Lgo+ICsgICAgeGVuX2NoYW5nZXNldAo+ICsjIFRoZSBmZWF0 dXJlcyB0aGUgaHlwZXJ2aXNvciBzdXBwb3J0cy4KPiArICAgIHhlbl9nZXRfZmVhdHVyZXMKPiAr IyBQYWdlIHNpemUgdGhlIGh5cGVydmlzb3IgdXNlcy4KPiArICAgIHhlbl9wYWdlc2l6ZQo+ICsj IEFuIHZhbHVlIHRoYXQgdGhlIGNvbnRyb2wgc3RhY2sgY2FuIGNob29zZS4KPiArICAgIHhlbl9n dWVzdF9oYW5kbGUKPiArIyBYZW4gY29tbWFuZCBsaW5lLgo+ICsgICAgeGVuX2NvbW1hbmRsaW5l Cj4gK30KPiBkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvc2VjdXJpdHlfY2xhc3Nl cyBiL3hlbi94c20vZmxhc2svcG9saWN5L3NlY3VyaXR5X2NsYXNzZXMKPiBpbmRleCBjYTE5MWRi Li5jZGU0ZTFhIDEwMDY0NAo+IC0tLSBhL3hlbi94c20vZmxhc2svcG9saWN5L3NlY3VyaXR5X2Ns YXNzZXMKPiArKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9zZWN1cml0eV9jbGFzc2VzCj4gQEAg LTE4LDUgKzE4LDYgQEAgY2xhc3Mgc2hhZG93Cj4gICBjbGFzcyBldmVudAo+ICAgY2xhc3MgZ3Jh bnQKPiAgIGNsYXNzIHNlY3VyaXR5Cj4gK2NsYXNzIHZlcnNpb24KPgo+ICAgIyBGTEFTSwo+CkNh biB3ZSBoYXZlIG1vcmUgbWVhbmluZ2Z1bCBuYW1lIGZvciBYU00gY2xhc3MuICJ2ZXJzaW9uIiBk b2Vzbid0IHNlZW0gCnRvIGJlIGluZm9ybWF0aXZlIGVub3VnaCB0byBjb252ZXkgdGhlIG1lc3Nh Z2UgYXMgdG8gd2h5IHdlIG5lZWQgaXQgdG8gCmJlIHNlY3VyZS4gKElzIGl0IGEgcmVzb3VyY2Us IG9yIGRvbWFpbiBzcGVjaWZpYyBvciBldmVudCBvci4uLikKCk15IHN1Z2dlc3Rpb24gd291bGQg YmUgeGVubWV0YWluZm8gb3Igc29tZXRoaW5nIG1vcmUgbWVhbmluZ2Z1bC4KCkFuc2h1bAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==