From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH v10 4/5] libxl: add support for vscsi Date: Thu, 31 Mar 2016 10:56:15 +0200 Message-ID: <56FCE62F.3090806@suse.com> References: <1458635016-20146-1-git-send-email-olaf@aepfle.de> <1458635016-20146-5-git-send-email-olaf@aepfle.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458635016-20146-5-git-send-email-olaf@aepfle.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Olaf Hering , xen-devel@lists.xen.org Cc: Ian Jackson , Wei Liu , Ian Campbell , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org T24gMjIvMDMvMTYgMDk6MjMsIE9sYWYgSGVyaW5nIHdyb3RlOgo+IFBvcnQgcHZzY3NpIHN1cHBv cnQgZnJvbSB4ZW5kIHRvIGxpYnhsOgo+IAo+ICB2c2NzaT1bJ3BkZXYsdmRldnssb3B0aW9uc30n XQo+ICB4bCBzY3NpLWF0dGFjaAo+ICB4bCBzY3NpLWRldGFjaAo+ICB4bCBzY3NpLWxpc3QKPiAK PiBTaWduZWQtb2ZmLWJ5OiBPbGFmIEhlcmluZyA8b2xhZkBhZXBmbGUuZGU+Cj4gQ2M6IElhbiBK YWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+IENjOiBTdGVmYW5vIFN0YWJlbGxp bmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBldS5jaXRyaXguY29tPgo+IENjOiBJYW4gQ2FtcGJlbGwg PGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgo+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXgu Y29tPgo+IC0tLQo+ICBkb2NzL21hbi94bC5jZmcucG9kLjUgICAgICAgICAgICAgICAgfCAgIDU2 ICsrCj4gIGRvY3MvbWFuL3hsLnBvZC4xICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwo+ICB0 b29scy9saWJ4bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICAyICsKPiAgdG9vbHMvbGli eGwvbGlieGwuYyAgICAgICAgICAgICAgICAgIHwgICAgOSArCj4gIHRvb2xzL2xpYnhsL2xpYnhs LmggICAgICAgICAgICAgICAgICB8ICAgNDIgKysKPiAgdG9vbHMvbGlieGwvbGlieGxfY3JlYXRl LmMgICAgICAgICAgIHwgICA0MSArLQo+ICB0b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyAgICAg ICAgICAgfCAgICAyICsKPiAgdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAgICAgIHwg ICAgOSArCj4gIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICB8ICAgNTUgKysK PiAgdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsIHwgICAgMSArCj4gIHRvb2xz L2xpYnhsL2xpYnhsX3ZzY3NpLmMgICAgICAgICAgICB8IDExODQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICB0b29scy9saWJ4bC9saWJ4bHVfdnNjc2kuYyAgICAgICAgICAg fCAgNjg0ICsrKysrKysrKysrKysrKysrKysrCj4gIHRvb2xzL2xpYnhsL2xpYnhsdXRpbC5oICAg ICAgICAgICAgICB8ICAgMTggKwo+ICB0b29scy9saWJ4bC94bC5oICAgICAgICAgICAgICAgICAg ICAgfCAgICAzICsKPiAgdG9vbHMvbGlieGwveGxfY21kaW1wbC5jICAgICAgICAgICAgIHwgIDIy NSArKysrKystCj4gIHRvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgICAgICAgICAgICB8ICAgMTUg Kwo+ICAxNiBmaWxlcyBjaGFuZ2VkLCAyMzYwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p Cj4gCgpTb21lIG1pbm9yIGNvbW1lbnRzLiBXaXRoIHRob3NlIGFkZHJlc3NlZDoKClJldmlld2Vk LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CgpBbmQgYWxzbzoKClRlc3RlZC1i eTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoKLi4uCgo+IGRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCj4g aW5kZXggNGNlZDliNi4uNmQxMmE1YyAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9k ZXZpY2UuYwo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jCj4gQEAgLTU0Myw2ICs1 NDMsNyBAQCB2b2lkIGxpYnhsX19tdWx0aWRldl9wcmVwYXJlZChsaWJ4bF9fZWdjICplZ2MsCj4g ICAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkOgo+ICAgKiBsaWJ4bF9fYWRk X2Rpc2tzCj4gICAqIGxpYnhsX19hZGRfbmljcwo+ICsgKiBsaWJ4bF9fYWRkX3ZzY3NpY3RybHMK PiAgICogbGlieGxfX2FkZF92dHBtcwo+ICAgKiBsaWJ4bF9fYWRkX3VzYmN0cmxzCj4gICAqIGxp YnhsX19hZGRfdXNicwo+IEBAIC01NjQsNiArNTY1LDcgQEAgdm9pZCBsaWJ4bF9fbXVsdGlkZXZf cHJlcGFyZWQobGlieGxfX2VnYyAqZWdjLAo+ICAKPiAgREVGSU5FX0RFVklDRVNfQUREKGRpc2sp Cj4gIERFRklORV9ERVZJQ0VTX0FERChuaWMpCj4gK0RFRklORV9ERVZJQ0VTX0FERCh2c2NzaWN0 cmwpCj4gIERFRklORV9ERVZJQ0VTX0FERCh2dHBtKQo+ICBERUZJTkVfREVWSUNFU19BREQodXNi Y3RybCkKPiAgREVGSU5FX0RFVklDRVNfQUREKHVzYmRldikKPiBkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKPiBp bmRleCAzNDVhNzY0Li4zZGNhYjgwIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2lu dGVybmFsLmgKPiArKysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCj4gQEAgLTI1ODEs NiArMjU4MSwxMCBAQCBfaGlkZGVuIHZvaWQgbGlieGxfX2RldmljZV9uaWNfYWRkKGxpYnhsX19l Z2MgKmVnYywgdWludDMyX3QgZG9taWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlieGxfZGV2aWNlX25pYyAqbmljLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKPiAgCj4gK19oaWRkZW4gdm9pZCBs aWJ4bF9fZGV2aWNlX3ZzY3NpY3RybF9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21p ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZp Y2VfdnNjc2ljdHJsICp2c2NzaWN0cmwsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpOwo+ICsKPiAgX2hpZGRlbiB2b2lk IGxpYnhsX19kZXZpY2VfdnRwbV9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnRwbSAq dnRwbSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2 aWNlICphb2Rldik7Cj4gQEAgLTMzNDYsNiArMzM1MCwxMCBAQCBfaGlkZGVuIHZvaWQgbGlieGxf X2FkZF9uaWNzKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9taWQs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9j b25maWcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICpt dWx0aWRldik7Cj4gIAo+ICtfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF92c2NzaWN0cmxzKGxpYnhs X19lZ2MgKmVnYywgbGlieGxfX2FvICphbywgdWludDMyX3QgZG9taWQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0 aWRldik7Cj4gKwo+ICBfaGlkZGVuIHZvaWQgbGlieGxfX2FkZF92dHBtcyhsaWJ4bF9fZWdjICpl Z2MsIGxpYnhsX19hbyAqYW8sIHVpbnQzMl90IGRvbWlkLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqbXVsdGlkZXYpOwo+IEBAIC00MDMyLDYg KzQwNDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGlieGxfX3VwZGF0ZV9jb25maWdfdnRwbShs aWJ4bF9fZ2MgKmdjLAo+ICAgKiBkZXZpY2VzIGhhdmUgc2FtZSBpZGVudGlmaWVyLiAqLwo+ICAj ZGVmaW5lIENPTVBBUkVfREVWSUQoYSwgYikgKChhKS0+ZGV2aWQgPT0gKGIpLT5kZXZpZCkKPiAg I2RlZmluZSBDT01QQVJFX0RJU0soYSwgYikgKCFzdHJjbXAoKGEpLT52ZGV2LCAoYiktPnZkZXYp KQo+ICsjZGVmaW5lIENPTVBBUkVfVlNDU0koYSwgYikgKChhKS0+ZGV2aWQgPT0gKGIpLT5kZXZp ZCkKCklzIHRoaXMgcmVhbGx5IG5lZWRlZD8gSSdkIHByZWZlciB1c2luZyBDT01QQVJFX0RFVklE KCkgaW5zdGVhZC4KCj4gICNkZWZpbmUgQ09NUEFSRV9QQ0koYSwgYikgKChhKS0+ZnVuYyA9PSAo YiktPmZ1bmMgJiYgICAgXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSktPmJ1cyA9 PSAoYiktPmJ1cyAmJiAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEpLT5k ZXYgPT0gKGIpLT5kZXYpCgouLi4KCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Zz Y3NpLmMgYi90b29scy9saWJ4bC9saWJ4bF92c2NzaS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi5mYmM3YTdlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsX3ZzY3NpLmMKPiBAQCAtMCwwICsxLDExODQgQEAKPiArLyoKPiArICogQ29weXJp Z2h0IChDKSAyMDE2ICAgICAgU1VTRSBMaW51eCBHbWJICj4gKyAqIEF1dGhvciBPbGFmIEhlcmlu ZyA8b2xhZkBhZXBmbGUuZGU+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZAo+ICsgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIu MSBvbmx5LiB3aXRoIHRoZSBzcGVjaWFsCj4gKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2Ny aWJlZCBpbiBmaWxlIExJQ0VOU0UuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCj4gKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKi8KPiArI2luY2x1ZGUgImxpYnhsX29zZGVwcy5oIiAvKiBtdXN0IGNvbWUg YmVmb3JlIGFueSBvdGhlciBoZWFkZXJzICovCj4gKyNpbmNsdWRlICJsaWJ4bF9pbnRlcm5hbC5o Igo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgdnNjc2lkZXZfcm0gewo+ICsgICAgbGlieGxfZGV2aWNl X3ZzY3NpY3RybCAqY3RybDsKPiArICAgIGNoYXIgKmJlX3BhdGg7Cj4gKyAgICBpbnQgZGV2X3dh aXQ7Cj4gKyAgICBsaWJ4bF9fZGV2aWNlIGRldjsKPiArfSB2c2NzaWRldl9ybV90Owo+ICsKPiAr dHlwZWRlZiB2b2lkICgqdnNjc2ljdHJsX2FkZCkobGlieGxfX2VnYyAqZWdjLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNlICphb2RldiwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZzY3NpY3RybCAqdnNjc2ljdHJs LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kb21haW5fY29uZmlnICpk X2NvbmZpZyk7Cj4gKwo+ICsjZGVmaW5lIFhMVV9XV05fTEVOIDE2Cj4gKwo+ICtzdGF0aWMgaW50 IHZzY3NpX3BhcnNlX2hjdGwoY2hhciAqc3RyLCBsaWJ4bF92c2NzaV9oY3RsICpoY3RsKQo+ICt7 Cj4gKyAgICB1bnNpZ25lZCBpbnQgaHN0LCBjaG4sIHRndDsKPiArICAgIHVuc2lnbmVkIGxvbmcg bG9uZyBsdW47Cj4gKwo+ICsgICAgaWYgKHNzY2FuZihzdHIsICIldToldToldTolbGx1IiwgJmhz dCwgJmNobiwgJnRndCwgJmx1bikgIT0gNCkKPiArICAgICAgICByZXR1cm4gRVJST1JfSU5WQUw7 Cj4gKwo+ICsgICAgaGN0bC0+aHN0ID0gaHN0Owo+ICsgICAgaGN0bC0+Y2huID0gY2huOwo+ICsg ICAgaGN0bC0+dGd0ID0gdGd0Owo+ICsgICAgaGN0bC0+bHVuID0gbHVuOwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHZzY3NpX3d3bl92YWxpZChjb25zdCBjaGFyICpw KQo+ICt7Cj4gKyAgICBib29sIHJldCA9IHRydWU7Cj4gKyAgICBpbnQgaSA9IDA7Cj4gKwo+ICsg ICAgZm9yIChpID0gMDsgaSA8IFhMVV9XV05fTEVOOyBpKyssIHArKykgewo+ICsgICAgICAgIGlm ICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAg ICAgICBpZiAoKnAgPj0gJ2EnICYmICpwIDw9ICdmJykKPiArICAgICAgICAgICAgY29udGludWU7 Cj4gKyAgICAgICAgaWYgKCpwID49ICdBJyAmJiAqcCA8PSAnRicpCj4gKyAgICAgICAgICAgIGNv bnRpbnVlOwoKV2hhdCBhYm91dCB1c2luZyBpc3hkaWdpdCgpIGhlcmU/CgpPciBldmVuOiBvbWl0 IHRoZSB3aG9sZSBmdW5jdGlvbiBhbmQgdXNlICIlMTZbMC05YS1mQS1GXSIgYXMgZm9ybWF0IG9m CnNzY2FuZigpLgoKPiArICAgICAgICByZXQgPSBmYWxzZTsKPiArICAgICAgICBicmVhazsKPiAr ICAgIH0KPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gKy8qIFRyYW5zbGF0ZSBwLWRldiBi YWNrIGludG8gcGRldi50eXBlICovCj4gK3N0YXRpYyBib29sIHZzY3NpX3BhcnNlX3BkZXYobGli eGxfX2djICpnYywgbGlieGxfZGV2aWNlX3ZzY3NpZGV2ICpkZXYsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqYywgY2hhciAqcCwgY2hhciAqdikKPiArewo+ICsgICAgbGli eGxfdnNjc2lfaGN0bCBoY3RsOwo+ICsgICAgdW5zaWduZWQgbG9uZyBsb25nIGx1bjsKPiArICAg IGNoYXIgd3duW1hMVV9XV05fTEVOICsgMV07Cj4gKyAgICBib29sIHBhcnNlZF9vayA9IGZhbHNl Owo+ICsKPiArICAgIGxpYnhsX3ZzY3NpX2hjdGxfaW5pdCgmaGN0bCk7Cj4gKwo+ICsgICAgZGV2 LT5wZGV2LnBfZGV2bmFtZSA9IGxpYnhsX19zdHJkdXAoTk9HQywgYyk7Cj4gKwo+ICsgICAgaWYg KHN0cm5jbXAocCwgIm5hYS4iLCA0KSA9PSAwKSB7Cj4gKyAgICAgICAgLyogV1dOIGFzIHVuZGVy c3Rvb2QgYnkgcHZvcHMgKi8KPiArICAgICAgICBtZW1zZXQod3duLCAwLCBzaXplb2Yod3duKSk7 Cj4gKyAgICAgICAgaWYgKHNzY2FuZihwLCAibmFhLiUxNmM6JWxsdSIsIHd3biwgJmx1bikgPT0g MiAmJiB2c2NzaV93d25fdmFsaWQod3duKSkgewo+ICsgICAgICAgICAgICBsaWJ4bF92c2NzaV9w ZGV2X2luaXRfdHlwZSgmZGV2LT5wZGV2LCBMSUJYTF9WU0NTSV9QREVWX1RZUEVfV1dOKTsKPiAr ICAgICAgICAgICAgZGV2LT5wZGV2LnUud3duLm0gPSBsaWJ4bF9fc3RyZHVwKE5PR0MsIHApOwo+ ICsgICAgICAgICAgICBwYXJzZWRfb2sgPSB0cnVlOwo+ICsgICAgICAgIH0KPiArICAgIH0gZWxz ZSBpZiAodnNjc2lfcGFyc2VfaGN0bChwLCAmaGN0bCkgPT0gMCkgewo+ICsgICAgICAgIC8qIEVp dGhlciB4ZW5saW51eCwgb3IgcHZvcHMgd2l0aCBwcm9wZXJseSBjb25maWd1cmVkIGFsaWFzIGlu IHN5c2ZzICovCj4gKyAgICAgICAgbGlieGxfdnNjc2lfcGRldl9pbml0X3R5cGUoJmRldi0+cGRl diwgTElCWExfVlNDU0lfUERFVl9UWVBFX0hDVEwpOwo+ICsgICAgICAgIGxpYnhsX3ZzY3NpX2hj dGxfY29weShDVFgsICZkZXYtPnBkZXYudS5oY3RsLm0sICZoY3RsKTsKPiArICAgICAgICBwYXJz ZWRfb2sgPSB0cnVlOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChwYXJzZWRfb2sgJiYgdnNjc2lf cGFyc2VfaGN0bCh2LCAmZGV2LT52ZGV2KSAhPSAwKQo+ICsgICAgICAgIHBhcnNlZF9vayA9IGZh bHNlOwo+ICsKPiArICAgIGxpYnhsX3ZzY3NpX2hjdGxfZGlzcG9zZSgmaGN0bCk7Cj4gKwo+ICsg ICAgcmV0dXJuIHBhcnNlZF9vazsKPiArfQoKLi4uCgo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4 bC9saWJ4bHVfdnNjc2kuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsdV92c2NzaS5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi44NmM3OGI0Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsdV92c2NzaS5jCj4gQEAgLTAsMCArMSw2ODQgQEAKPiArLyoK PiArICogbGlieGx1X3ZzY3NpLmMgLSB4bCBjb25maWd1cmF0aW9uIGZpbGUgcGFyc2luZzogc2V0 dXAgYW5kIGhlbHBlciBmdW5jdGlvbnMKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE2ICAg ICAgU1VTRSBMaW51eCBHbWJICj4gKyAqIEF1dGhvciBPbGFmIEhlcmluZyA8b2xhZkBhZXBmbGUu ZGU+Cj4gKyAqIEF1dGhvciBPbmTFmWVqIEhvbGXEjWVrIDxhYWFubnpAZ21haWwuY29tPgo+ICsg Kgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKPiArICogYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLjEgb25seS4gd2l0aCB0aGUgc3BlY2lh bAo+ICsgKiBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLgo+ ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpbmNs dWRlICJsaWJ4bF9vc2RlcHMuaCIgLyogbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgaGVhZGVy cyAqLwo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxjdHlwZS5oPgo+ICsjaW5j bHVkZSA8ZGlyZW50Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaW5jbHVkZSA8ZmNu dGwuaD4KPiArI2luY2x1ZGUgImxpYnhsdV9pbnRlcm5hbC5oIgoKLi4uCgo+ICtzdGF0aWMgYm9v bCB4bHVfX3ZzY3NpX3d3bl92YWxpZChjb25zdCBjaGFyICpwKQo+ICt7Cj4gKyAgICBib29sIHJl dCA9IHRydWU7Cj4gKyAgICBpbnQgaSA9IDA7Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IFhM VV9XV05fTEVOOyBpKyssIHArKykgewo+ICsgICAgICAgIGlmICgqcCA+PSAnMCcgJiYgKnAgPD0g JzknKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBpZiAoKnAgPj0gJ2EnICYm ICpwIDw9ICdmJykKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgaWYgKCpwID49 ICdBJyAmJiAqcCA8PSAnRicpCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwoKU2FtZSBhcyBhYm92 ZTogaXN4ZGlnaXQoKSBvciBjb21wbGV0ZWx5IG9taXQgdGhlIGZ1bmN0aW9uLgoKPiArICAgICAg ICByZXQgPSBmYWxzZTsKPiArICAgICAgICBicmVhazsKPiArICAgIH0KPiArICAgIHJldHVybiBy ZXQ7Cj4gK30KCkp1ZXJnZW4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=