From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: Re: [RFC PATCH v3 2/2] xen: credit2: provide custom option to create Date: Fri, 31 Mar 2017 10:32:09 +0200 Message-ID: <1490949129.25397.19.camel@citrix.com> References: <20170330192810.6755-1-kpraveen.lkml@gmail.com> <20170330192810.6755-3-kpraveen.lkml@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5235276572065808966==" Return-path: In-Reply-To: <20170330192810.6755-3-kpraveen.lkml@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Praveen Kumar , george.dunlap@eu.citrix.com Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org --===============5235276572065808966== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="=-nnxBBlHigJRL60zvT8NK" --=-nnxBBlHigJRL60zvT8NK Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 T24gRnJpLCAyMDE3LTAzLTMxIGF0IDAwOjU4ICswNTMwLCBQcmF2ZWVuIEt1bWFyIHdyb3RlOgo+ IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gJ2N1c3RvbScg dGhhdCB3aGVuIAp1c2VkIHdpbGwKPiBjcmVhdGUgcnVucXVldWUgYmFzZWQgdXBvbiB0aGUgcENQ VSBzdWJzZXQgcHJvdmlkZSBkdXJpbmcgYm9vdHVwLgo+IAoiaW50cm9kdWNlcyBhIG5ldywgdmVy eSBmbGV4aWJsZSwgd2F5IG9mIGFycmFuZ2luZyBydW5xdWV1ZXMgaW4KQ3JlZGl0Mi4gSXQgYWxs b3dzIHRvIHNwZWNpZnksIGV4cGxpY2l0bHkgYW5kIHByZWNpc2VseSwgd2hhdCBwQ1BVcwpzaG91 bGQgYmVsb25nIHRvIHdoaWNoIHJ1bnF1ZXVlIgoKT3Igc29tZXRoaW5nIGxpa2UgdGhpcy4KCkl0 J3MgZ3JlYXQgdGhhdCB5b3UndmUgZ290IHRoZSBjb2RlIHdvcmtpbmcuIEkgaGF2ZSBzb21lIGNv bW1lbnRzLAp0aG91Z2gsIG9uIGhvdyBpdCBhY3R1YWxseSBsb29rcyBsaWtlLgoKPiBTaWduZWQt b2ZmLWJ5OiBQcmF2ZWVuIEt1bWFyIDxrcHJhdmVlbi5sa21sQGdtYWlsLmNvbT4KPiAtLS0KCj4g LS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KPiArKysgYi9kb2NzL21p c2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgo+IEBAIC01MjUsNyArNTI1LDcgQEAgYWxzbyBz bG93IGluIHJlc3BvbmRpbmcgdG8gbG9hZCBjaGFuZ2VzLgo+IMKgVGhlIGRlZmF1bHQgdmFsdWUg b2YgYDEgc2VjYCBpcyByYXRoZXIgbG9uZy4KPiDCoAo+IMKgIyMjIGNyZWRpdDJcX3J1bnF1ZXVl Cj4gLT4gYD0gY3B1IHwgY29yZSB8IHNvY2tldCB8IG5vZGUgfCBhbGxgCj4gKz4gYD0gY3B1IHwg Y29yZSB8IHNvY2tldCB8IG5vZGUgfCBhbGwgfCBjdXN0b21gCj4gwqAKRXJyLi4uIGJ1dCB0aGlz IGlzIG5vdCByZWFsbHkgY29ycmVjdCwgcmlnaHQ/CgpJIG1lYW4sIGl0J3Mgbm90IHRoYXQgdGhl IHVzZXIgc2hvdWxkIHVzZSB0aGUgd29yZCAnY3VzdG9tJyBoZXJlLgoKWW91IHByb2JhYmx5IHdh bnQgdG8gdXNlIHNvbWV0aGluZyBsaWtlIDxjdXN0b20+LCBhbmQgdGhlbiBkZWZpbmUgd2hhdAp0 aGF0IG1lYW5zIGJlbG93LgrCoAo+IEBAIC01NDMsNiArNTQzLDEyIEBAIEF2YWlsYWJsZSBhbHRl cm5hdGl2ZXMsIHdpdGggdGhlaXIgbWVhbmluZywgYXJlOgo+IMKgKiBgbm9kZWA6IG9uZSBydW5x dWV1ZSBwZXIgZWFjaCBOVU1BIG5vZGUgb2YgdGhlIGhvc3Q7Cj4gwqAqIGBhbGxgOiBqdXN0IG9u ZSBydW5xdWV1ZSBzaGFyZWQgYnkgYWxsIHRoZSBsb2dpY2FsIHBDUFVzIG9mCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqB0aGUgaG9zdAo+ICsqIGBjdXN0b21gOiBvbmUgcnVucXVldWUgcGVyIHN1YnNl dC4gRXhhbXBsZToKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3JlZGl0Ml9ydW5xdWV1ZT1b WzAsMSw0LDVdWzIsMyw2LDddWzgsOSwxMiwxM11bMTAsMTEsMTQKPiAsMTVdXQo+Ck1heWJlIGp1 c3QgdXNlIDIgKG9yIGF0IG1vc3QgMykgcENQVXMgcGVyIHJ1bnF1ZXVlIGluIHRoZSBleGFtcGxl LiBJdCdkCm1ha2UgdGhlIGxpbmUgc2hvcnRlciBhbmQgZWFzaWVyIHRvIHJlYWQgYW5kIHVuZGVy c3RhbmQuCgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gcENQVXMgMCwgMSwg NCBhbmQgNSBiZWxvbmcgdG8gcnVucXVldWUgMAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC0gcENQVXMgMiwgMywgNiBhbmQgNyBiZWxvbmcgdG8gcnVucXVldWUgMQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0gcENQVXMgOCwgOSwgMTIgYW5kIDEzIGJlbG9u ZyB0byBydW5xdWV1ZSAyCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLSBwQ1BV cyAxMCwgMTEsIDE0IGFuZCAxNSBiZWxvbmcgdG8gcnVucXVldWUgMwoKPiAtLS0gYS94ZW4vY29t bW9uL3NjaGVkX2NyZWRpdDIuYwo+ICsrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCj4g QEAgLTMzMCwxOCArMzM5LDYwIEBAIGludGVnZXJfcGFyYW0oImNyZWRpdDJfYmFsYW5jZV9vdmVy IiwKPiBvcHRfb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2UpOwo+IMKgI2RlZmluZSBPUFRfUlVO UVVFVUVfU09DS0VUIDIKPiDCoCNkZWZpbmUgT1BUX1JVTlFVRVVFX05PREXCoMKgwqAzCj4gwqAj ZGVmaW5lIE9QVF9SVU5RVUVVRV9BTEzCoMKgwqDCoDQKPiArI2RlZmluZSBPUFRfUlVOUVVFVUVf Q1VTVE9NIDUKPiDCoHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcHRfcnVucXVldWVfc3RyW10g PSB7Cj4gwqDCoMKgwqDCoFtPUFRfUlVOUVVFVUVfQ1BVXSA9ICJjcHUiLAo+IMKgwqDCoMKgwqBb T1BUX1JVTlFVRVVFX0NPUkVdID0gImNvcmUiLAo+IMKgwqDCoMKgwqBbT1BUX1JVTlFVRVVFX1NP Q0tFVF0gPSAic29ja2V0IiwKPiDCoMKgwqDCoMKgW09QVF9SVU5RVUVVRV9OT0RFXSA9ICJub2Rl IiwKPiAtwqDCoMKgwqBbT1BUX1JVTlFVRVVFX0FMTF0gPSAiYWxsIgo+ICvCoMKgwqDCoFtPUFRf UlVOUVVFVUVfQUxMXSA9ICJhbGwiLAo+ICvCoMKgwqDCoFtPUFRfUlVOUVVFVUVfQ1VTVE9NXSA9 ICJjdXN0b20iCj4gwqB9Owo+IMKgc3RhdGljIGludCBfX3JlYWRfbW9zdGx5IG9wdF9ydW5xdWV1 ZSA9IE9QVF9SVU5RVUVVRV9TT0NLRVQ7Cj4gwqAKPiArc3RhdGljIGludCBfX3JlYWRfbW9zdGx5 IGN1c3RvbV9jcHVfcnVucXVldWVbTlJfQ1BVU107Cj4gKwpJIHRoaW5rIHRoaXMgY2FuIGJlIG5y X2NwdV9pZHMgKGFuZCBiZSBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgZHVyaW5nCnBhcnNpbmcpLgoK PiArI2RlZmluZSBHRVRUT0tFTiggdG9rZW4sIGxlbiwgc3RhcnQsIGVuZCApwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgXAo+ICt7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiArwqDCoMKgwqBjaGFyIF90bXBbbGVuKzFdO8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFwKPiArwqDCoMKgwqBpbnQgX2k7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBcCj4gK8KgwqDCoMKgc2FmZV9zdHJjcHkoX3RtcCwgc3RhcnQpO8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ICvCoMKgwqDC oF90bXBbbGVuXSA9ICdcMCc7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ICvCoMKgwqDCoGZvciAoIF9pID0g MDsgX3RtcFtfaV0gIT0gJ1wwJzsgX2krKyApwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg XAo+ICvCoMKgwqDCoMKgwqDCoMKgdG9rZW4gPSAoICggdG9rZW4gKiAxMCApICsgKCBfdG1wW19p XSAtICcwJyApICk7IFwKPiArfQo+ICsKSWYgeW91IHJlYWxseSBuZWVkIHRoaXMsIG1ha2UgaXQg J3N0YXRpYyBpbmxpbmUnLCBhcyB5b3UgZG8gZm9yIG90aGVyCmZ1bmN0aW9ucy4KCkFzIGEgbWF0 dGVyIG9mIGZhY3QsIEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgaXQsIGFzLCBmb3IgaW5zdGFuY2Us IHdlIGRvCmhhdmUgc2ltcGxlX3N0cnRvdWwoKSAoYW5kIHNvbWUgb3RoZXJzKS4gOi0pCgo+ICtz dGF0aWMgaW5saW5lIGludCB0cmltKGNvbnN0IGNoYXIgKmMsIGNoYXIgKnQsIGNoYXIgZWxlbSkK PiArewo+ICvCoMKgwqDCoGludCBsID0gc3RybGVuKGMpOwo+ICvCoMKgwqDCoGNvbnN0IGNoYXIg KnggPSBjIDsKPiArwqDCoMKgwqBpbnQgaSA9IDA7Cj4gK8KgwqDCoMKgaWYgKCAhYyB8fCAhdCAp Cj4gK8KgwqDCoMKgwqDCoMKgwqByZXR1cm4gLTE7Cj4gK8KgwqDCoMKgd2hpbGUgKCAqeCAhPSAn XDAnICYmIGkgPCBsICkKPiArwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqBpZiAoICp4ICE9 IGVsZW0gKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0W2krK10gPSAqeDsKPiArwqDCoMKg wqDCoMKgwqDCoHgrKzsKPiArwqDCoMKgwqB9Cj4gK8KgwqDCoMKgdFtpXSA9ICdcMCc7Cj4gK8Kg wqDCoMKgcmV0dXJuIDA7Cj4gK30KPiArCkFnYWluLCB3aHkgd2UgbmVlZCB0aGlzPyBDYW4ndCB3 ZSBqdXN0IGRlYWwgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMKd2hpbGUgcGFyc2luZyB0aGUgc3Ry aW5nIChieSwgZS5nLiwgZWl0aGVyIHNraXBwaW5nIHRoZW0gb3IgYWJvcnRpbmcsCmRlcGVuZGlu ZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGV5J3JlIGlubm9jdW91cyk/Cgo+ICtzdGF0aWMgaW5saW5l IGludCBnZXRsZW4oY2hhciAqc3RhcnQsIGNoYXIgKmVuZCkKPiArewo+ICvCoMKgwqDCoGlmICgg KCBzdGFydCApICYmICggZW5kICkgJiYgKCBlbmQgPiBzdGFydCApICkKPiArwqDCoMKgwqDCoMKg wqDCoHJldHVybiBlbmQtc3RhcnQ7Cj4gK8KgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIC0xOwo+ICt9Cj4gKwo+ClNhbWUuCgo+IMKgc3RhdGljIHZvaWQgcGFyc2VfY3JlZGl0 Ml9ydW5xdWV1ZShjb25zdCBjaGFyICpzKQo+IMKgewo+IMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQg aTsKPiArwqDCoMKgwqBjb25zdCBjaGFyICpzX2VuZCA9IE5VTEw7Cj4gK8KgwqDCoMKgY2hhciBt W3N0cmxlbihzKV07Cj4gK8KgwqDCoMKgY2hhciAqX3MgPSBOVUxMOwo+IMKgCk5vICdfJyBwcmVm aXhlZCB2YXJpYWJsZSBuYW1lcywgcGxlYXNlLiA6LSkKCkFsc28sIHdoYXQncyBtIGZvcj8KCj4g QEAgLTM1MSw3ICs0MDIsMTE1IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NyZWRpdDJfcnVucXVldWUo Y29uc3QgY2hhcgo+ICpzKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IMKg wqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgfQo+ICsvKgo+ICvCoMKgwqDCoMKgKiBBdCB0 aGlzIHN0YWdlIHdlIGFyZSBlaXRoZXIgdW5rbm93biB2YWx1ZSBvZiBjcmVkaXQyX3J1bnF1ZXVl Cj4gb3Igd2UgY2FuCj4gK8KgwqDCoMKgwqAqIGNvbnNpZGVyIGl0IHRvIGJlIGN1c3RvbSBjcHUu IExldHMgdHJ5IHBhcnNpbmcgdGhlIHNhbWUuCj4gK8KgwqDCoMKgwqAqIFJlc2V0dGluZyB0aGUg Y3VzdG9tX2NwdV9ydW5xdWV1ZSBmb3IgZnV0dXJlIHVzZS4gT25seSB0aGUKPiBub24tbmVnYXRp dmUKPiArwqDCoMKgwqDCoCogZW50cmllcyB3aWxsIGJlIHZhbGlkLiBUaGUgaW5kZXggJ2knIGlu IGN1c3RvbV9jcHVfcnVucXVldWUKPiB3aWxsIHN0b3JlCj4gK8KgwqDCoMKgwqAqIHRoZSBzcGVj aWZpYyBydW5xdWV1ZSBpdCBiZWxvbmdzIHRvLgo+ICvCoMKgwqDCoMKgKiBFeGFtcGxlOgo+ICvC oMKgwqDCoMKgKsKgwqDCoMKgwqBJZiBjdXN0b21fY3B1X3J1bnF1ZXVlWzNdID09IDIKPiArwqDC oMKgwqDCoCrCoMKgwqDCoMKgVGhlbiwgaXQgbWVhbnMgdGhhdCBjcHUgMyBiZWxvbmcgdG8gcnVu cXVldWUgMi4KPiArwqDCoMKgwqDCoCrCoMKgwqDCoMKgSWYgY3VzdG9tX2NwdV9ydW5xdWV1ZVs0 XSA9PSAtMQo+ICvCoMKgwqDCoMKgKsKgwqDCoMKgwqBUaGVuLCBpdCBtZWFucyB0aGF0IGNwdSA0 IGRvZXNuJ3QgYmVsb25nIHRvIGFueSBydW5xdWV1ZS4KPiArwqDCoMKgwqDCoCovCj4gK8KgwqDC oMKgZm9yICggaSA9IDA7IGkgPCBucl9jcHVfaWRzOyBpKysgKQo+ICvCoMKgwqDCoMKgwqDCoMKg Y3VzdG9tX2NwdV9ydW5xdWV1ZVtpXSA9IC0xOwo+ICsKPiArwqDCoMKgwqAvKgo+ICvCoMKgwqDC oMKgKiBGb3JtYXQgW1swLDEsNCw1XVsyLDMsNiw3XVs4LDksMTIsMTNdWzEwLDExLDE0LDE1XV0K PiArwqDCoMKgwqDCoCovCj4gK8KgwqDCoMKgaSA9IDA7Cj4gKwo+ICvCoMKgwqDCoC8qIEluIGNh c2UgdXNlciBoYXZlIHNwYWNlcyBpbmNsdWRlZCBpbiB0aGUgaW5wdXQgKi8KPiArwqDCoMKgwqBp ZiAoIHRyaW0ocywgbSwgJyAnKSAhPSAwICkKPiArwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKg wqBwcmludGsoICJXQVJOSU5HIDogJXNbJWRdIHRyaW0gZmFpbGVkLlxuIiwgX19mdW5jX18sCj4g X19MSU5FX18gKTsKPiArwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyUmV0dXJuOwo+ICvCoMKgwqDC oH0KPgpSaWdodC4gU28sIGFzIEkgd2FzIHNheWluZyBhYm92ZSwgY2FuJ3Qgd2UganVzdCBzdGFy dCBwYXJzaW5nIHRoZQpzdHJpbmcgLS13aXRoIHNvbWV0aGluZyBsaWtlIGEgYGNoYXIgKnA7IHdo aWxlICggKnAgIT0gJ1wwJyApIHsuLi59YC0tCmFuZCBza2lwIHRoZSBzcGFjZXMgd2hlbiB3ZSBm aW5kIHRoZW0/Cgo+ICvCoMKgwqDCoC8qIFN0YXJ0aW5nIHRvIHBhcnNlIGFuZCBnZXQgdGhlIGNw dSBpbmZvcm1hdGlvbiBvbiB0cmltbWVkIGRhdGEKPiAqLwo+ICvCoMKgwqDCoF9zID0gbTsKPiAr wqDCoMKgwqBzX2VuZCA9IF9zICsgc3RybGVuKF9zKTsKPiArCj4gK8KgwqDCoMKgLyogVGhlIHN0 YXJ0IGFuZCBzaG91bGQgYWx3YXlzIGJlIGluIGZvcm1hdCBvZiAnWy4uXScgKi8KPiArwqDCoMKg wqBpZiAoICggJ1snID09ICpfcyApICYmICggJ10nID09ICooc19lbmQtMSkpICkKPgpCdXQgaW4g dGhlIGNvdmVyIHlvdSBzYWlkIHdlIGFsc28gc3VwcG9ydDoKCiBjcmVkaXQyX3J1bnF1ZXVlPTAs MSw0LDU7MiwzLDYsNzs4LDksMTIsMTM7MTAsMTEsMTQsMTUKClNvLCB3aGF0IEkgdGhpbmsgd2Ug d2FudCBoZXJlIGlzIHNvbWV0aGluZyB0aGF0IGNoZWNrcyB0aGF0LCBpZiB0aGUKZmlyc3QgY2hh cmFjdGVyIGlzICdbJywgdGhlbiB0aGUgbGFzdCBtdXN0IGJlICddJywgb3Igd2UgYWxyZWFkeSBr bm93CnRoZSBmb3JtYXQgaXMgaW52YWxpZCwgYW5kIHdlIGNhbiBzdG9wLgoKQW5kIGl0IHdvdWxk IGFsc28gYmUgYmV0dGVyIHRvIHdyaXRlIGFuIGlmIHRoYXQgY2hlY2tzIHdoZXRoZXIgdGhlCmZv cm1hdCBpcyBfaW52YWxpZF8sIGFuZCBzdG9wIHRoZSBwYXJzaW5nIGlmIHRoYXQgaXMgdGhlIGNh c2UuIFRoYXQKc2F2ZXMgYSBsZXZlbCBvZiBpbmRlbnRhdGlvbiBmb3IgYWxsIHRoZSBjb2RlIHRo YXQgZm9sbG93cy4KCj4gK8KgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgY2hhciAqc3RhcnQg PSBOVUxMLCAqZW5kID0gTlVMTDsKPiArwqDCoMKgwqDCoMKgwqDCoGludCBjcHVfYWRkZWRfdG9f cnVucXVldWUgPSAwOwo+Ckl0IGxvb2tzIGxpa2UgdGhpcyBjYW4gYmUgYm9vbC4KCj4gK8KgwqDC oMKgwqDCoMKgwqBfcysrOwo+ICvCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKCAoIF9zICE9IE5VTEwg KSAmJiAoIF9zIDwgc19lbmQgKSApCj4gK8KgwqDCoMKgwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYXIgKnRva2VuX3N1Yl9zdHIgPSBOVUxMOwo+CldlIHdhbnQgYSBibGFu ayBsaW5lIGJldHdlZW4gdmFyaWFibGUgZGVmaW5pdGlvbiBhbmQgYWN0dWFsIGNvZGUuCgo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdGFydCA9IHN0cnN0cihfcywgIlsiKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZW5kID0gc3Ryc3RyKF9zLCAiXSIpOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAvKiBWYWxpZGF0aW9uIGNoZWNrcyBmb3IgJ1snIGFuZCAnXScgdG8gcHJvcGVy bHkgcGFyc2UKPiB0aGUgZW50cmllcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoICggIXN0YXJ0ICYmICFlbmQgKSB8fCAoICggZW5k ID09ICggc19lbmQgLTEgKSApICYmCj4gc3RhcnQgKSApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBlcnJSZXR1cm47Cj4KTm8gY2FtZWwgY2FzZSBlaXRoZXIsIHBsZWFz ZS4gJ2VycicgaXMgcHJvYmFibHkganVzdCBmaW5lLiA6LSkKCkJ1dCwgaG9uZXN0bHksIEkgY2Fu J3QgcXVpdGUgdGVsbCB3aGF0J3MgZ29pbmcgb24gaGVyZS4gV2h5IHN0cnN0cigpPwpZb3UgY2Fu IGp1c3QgY2hlY2sgd2hldGhlciB0aGUgZmlyc3QgY2hhciBvZiBhIHNldCBpcyAnWycgYnkgbG9v a2luZyBhdAp0aGUgY3VycmVudCBzdHJpbmcgcGFyc2luZyBjdXJzb3IuIElmIGl0IGlzLCB5b3Ug Y2FuIHRha2UgYSBub3RlIGFib3V0CnRoYXQgc29tZXdoZXJlLCB0byByZW1lbWJlciB0byBjaGVj ayBmb3IgYSAnXScgYXQgc29tZSBwb2ludC4KCgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBDaGVjayBmb3IgbGFzdCBlbnRyeSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNl IGlmICggIXN0YXJ0ICYmICggZW5kID09ICggc19lbmQgLTEgKSApICkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG5leHRTZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBJZiB3ZSBoYXZlIFtdIGFzIGVudHJ5LCBtb3ZlIHRvIG5leHRTZXQgKi8KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCBnZXRsZW4gKCBzdGFydCwgZW5kICkgPCAxICkK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG5leHRTZXQ7Cj4KJ25leHQn IChvciAnbmV4dF9zZXQnLCBidXQgSSB0aGluayAnbmV4dCcgaXMgZmluZSkuCgo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiBTdGFydCB0byBwYXJzZSB0aGUgYWN0dWFsIHZhbHVlICovCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0YXJ0Kys7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKiBmaW5kIHRva2VuIHdpdGhpbiB0 aGUgc3Vic2V0Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKi8KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZG8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCB0b2tlbiA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaW50IGxlbiA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogR2V0IGNwdSBpZHMgc2VwYXJhdGVkIGJ5ICcsJyB3aXRoaW4gZWFjaCBzZXQgKi8K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0b2tlbl9zdWJfc3RyID0gc3RycGJy ayhzdGFydCwgIiwiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoICgg IXRva2VuX3N1Yl9zdHIgJiYgc3RhcnQgPCBlbmQgKSB8fAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgKCB0b2tlbl9zdWJfc3RyID4gZW5kICYmIHRva2VuX3N1Yl9z dHIgPiBzdGFydCApCj4gKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbGVuID0gZ2V0bGVuKHN0YXJ0LCBlbmQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGVsc2UKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxl biA9IGdldGxlbihzdGFydCwgdG9rZW5fc3ViX3N0cik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICggbGVuIDw9IDAgKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogR0VUVE9LRU4gd2lsbCBnZXQgcmV0dXJuIHRoZSBwYXJzZSBhbmQgcG9wdWxhdGUK PiB0aGUgY3B1IGluCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqIHRva2Vu Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEdFVFRPS0VOKHRva2VuLCBsZW4sIHN0YXJ0ICwgZW5kICk7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICggdG9rZW4gPj0gbnJfY3B1 X2lkcykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJy UmV0dXJuOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIElmIG5vdCBzZXQg YWxyZWFkeSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICggY3VzdG9t X2NwdV9ydW5xdWV1ZVt0b2tlbl0gPT0gLTEgKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGN1c3Rv bV9jcHVfcnVucXVldWVbdG9rZW5dID0gaTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNwdV9hZGRlZF90b19ydW5xdWV1ZSA9IDE7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVs c2UKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyUmV0 dXJuOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoICF0b2tlbl9z dWJfc3RyIHx8IHRva2VuX3N1Yl9zdHIgPiBlbmQgKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBuZXh0U2V0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdGFydCA9ICsrdG9rZW5fc3ViX3N0cjsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfSB3aGlsZSAoIHN0YXJ0IDwgZW5kICk7Cj4gK25leHRTZXQ6Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICggY3B1X2FkZGVkX3RvX3J1bnF1ZXVlICkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkrKzsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjcHVfYWRkZWRfdG9fcnVucXVldWUg PSAwOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gCj4gwqAKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgX3MgPSArK2VuZDsKPiArwqDCoMKgwqDCoMKgwqDCoH0KPgpPaywgc28gdGhp cyBsb29rcyBtb3JlIGNvbXBsZXggdGhhdCBpdCBjb3VsZCBiZSwgdG8gbWUuIE1vc3RseSBiZWNh dXNlCnlvdSdyZSBkb2luZyB5b3VyIG93biB0b2tlbiBwYXJzaW5nLgoKSW4gbXkgbWluZCwgcGFy c2luZyBhIHN0cmluZyBsaWtlIHRoZSBvbmVzIHdlIHdhbnQgdG8gYWNjZXB0LCBzaG91bGQKbG9v ayBub3QgdG9vIGRpZmZlcmVudCBmcm9tIHdoYXQncyBkb25lIGluc2lkZSBpbml0X2Jvb3RfcGFn ZXMoKS4KCkluZGVlZCBvdXIgY2FzZSBsb29rcyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkLCBidXQg dGhlIGdlbmVyYWwgaWRlYQpzaG91bGQgYmUgdGhlIHNhbWUsIGkuZS46CiAtIHNjYW4gdGhlIHN0 cmluZyBhbmQgZGVhbCB3aXRoIHdoYXQgeW91IGZpbmQgaW4gdGhlcmUgb25saW5lLCBub3TCoAog ICBiZWZvcmVoYW5kOwogLSB1c2Ugc2ltcGxlX3N0cnRvdWwoKQoKPiBAQCAtNjYxLDYgKzgyMCwx NSBAQCBjcHVfdG9fcnVucXVldWUoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LAo+IHVuc2ln bmVkIGludCBjcHUpCj4gwqDCoMKgwqDCoHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJx ZDsKPiDCoMKgwqDCoMKgdW5zaWduZWQgaW50IHJxaTsKPiDCoAo+ICvCoMKgwqDCoGlmICggb3B0 X3J1bnF1ZXVlID09IE9QVF9SVU5RVUVVRV9DVVNUT00gKQo+ICvCoMKgwqDCoHsKPiArwqDCoMKg wqDCoMKgwqDCoGlmICggY3VzdG9tX2NwdV9ydW5xdWV1ZVtjcHVdICE9IC0xICkKPiArwqDCoMKg wqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQlVHX09OKGN1c3RvbV9jcHVf cnVucXVldWVbY3B1XSA+PSBucl9jcHVfaWRzKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGN1c3RvbV9jcHVfcnVucXVldWVbY3B1XTsKPiArwqDCoMKgwqDCoMKgwqDCoH0KPgpX YWl0LCBhbmQgdGhlbiB3aGF0IGhhcHBlbnMgaWYgYSBDUFUgd2FzIG5vdCBpbiBhbnkgc2V0LCBh bmQgaGVuY2UgaGFzCml0J3MgY3VzdG9tX2NwdV9ydW5xdWV1ZSBlbGVtZW50ID09IC0xID8KCkkg YW0gb2sgd2l0aCBpdCBub3QgYmVpbmcgYWRkZWQgdG8gYW55IHJ1bnF1ZXVlLCBidXQgZm9yIHRo YXQgdG8gYmUKd2hhdCByZWFsbHkgaGFwcGVucywgSSB0aGluayB3ZSBuZWVkIHRvIGNoYW5nZSBj b2RlIGluIGluaXRfcGRhdGEoKQp0b28uCgpJdCB3b3VsZCBiZSBhbHNvIGdvb2QgdG8gcHJpbnQg YSB3YXJuaW5nLCBpbiBzdWNoIGNhc2UuIFRoaXMgaXMgYQpjdXN0b20gbW9kZSwgYW5kIHRoZSB1 c2VyIG1heSB3ZWxsIGJlIGRvaW5nIHN1Y2ggYSB0aGluZyBmb3IgYSByZWFzb24sCmJ1dCBpdCBk b2Vzbid0IGhhcm0gdHJ5aW5nIG1ha2Ugc3VyZSBub3RoaW5nIHRoaXMgYmFkIGhhcHBlbmVkIGJ5 Cm1pc3Rha2UuCgpUaGFua3MgYWdhaW4gZm9yIGFsbCB0aGlzIHdvcmshIDotRAoKUmVnYXJkcywK RGFyaW8KLS0gCjw8VGhpcyBoYXBwZW5zIGJlY2F1c2UgSSBjaG9vc2UgaXQgdG8gaGFwcGVuIT4+ IChSYWlzdGxpbiBNYWplcmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhcmlvIEZhZ2dpb2xpLCBQaC5ELCBodHRwOi8v YWJvdXQubWUvZGFyaW8uZmFnZ2lvbGkKU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBDaXRyaXgg U3lzdGVtcyBSJkQgTHRkLiwgQ2FtYnJpZGdlIChVSyk= --=-nnxBBlHigJRL60zvT8NK Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJY3hQJAAoJEBZCeImluHPuYQAP/3wI32jzW9TR1Tgru4zqg7s0 noxEY9eHf6dCpGDTeZTcxYjDbOWmgXcBToJy0NtxdDto/jAdNs+jP429T+aMUzUA EDMfFQAqjIe+h+n/vJY2vEMtv3yOngkxAlZMRIVHYj5jslzBMmwp6bHz9jfwvjb3 IeHv9TzfH7jTlAr0tCks9ouRS8St/L4RyFWDBNJgsgxB33kZpks4Ve8i11jh1N2s cfiN5w98vEi8UsR88Hu53OFPq3xGCH7+4IVBkTiEPxoOBz5KA7NK0pqi8oyLIyXd SplAwgU4BLpzc+DDnIiM3O5onhTNT3Uw86nCgLk7qJDkjp/2UuvmmjomwTqhnKSP vhiKJQnkUsCNnboT3oY4OCem5I3QusTtdndSpcHS39GjXVTRj7hNTzHYPXVs05O7 0ULTMT68/D85sfkc+Wcg82P0PHSAN6V8NkXo2tq4ueFM1Bd+0tgN0SLSKEdlAIF8 TaFrDh38qJpIKWgtZaDyP4BbRycoBYnvtXEGyd6f8ua8YKFcHxvSQHvpXOcJ0IqW /UrYUjB3wW88s4O+2hoYOLnX++euajfh27fUM2ALlVAUAPoDP3QDTNAxTsjRlB5p 9mng+YF3d51IA+FfNwJOVNDleY1XE9CFeEMn+B/xPKg1MUNbfBzQZ9ZbEqEBiASI qz+y3auS0v0wv7qrRllt =hcq7 -----END PGP SIGNATURE----- --=-nnxBBlHigJRL60zvT8NK-- --===============5235276572065808966== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --===============5235276572065808966==--