From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?R2VuZXZpw6h2ZSBCYXN0aWVu?= Subject: Re: [RFC Patch Ust 2/5] Serialize the CTF global structures for ust-comm Date: Wed, 30 Apr 2014 21:05:35 -0400 Message-ID: <53619DDF.5060909__8940.73781460083$1398906400$gmane$org@versatic.net> References: <1395845232-17669-1-git-send-email-gbastien+lttng@versatic.net> <1395845232-17669-3-git-send-email-gbastien+lttng@versatic.net> <224451157.1253.1397058138828.JavaMail.zimbra@efficios.com> <53458452.8030905@versatic.net> <2087397408.8083.1398587642565.JavaMail.zimbra@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.electronicbox.net ([96.127.255.82]) by ltt.polymtl.ca with esmtp (Exim 4.80) (envelope-from ) id 1WffRV-0007rK-7x for lttng-dev@lists.lttng.org; Wed, 30 Apr 2014 21:05:46 -0400 In-Reply-To: <2087397408.8083.1398587642565.JavaMail.zimbra@efficios.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lttng-dev-bounces@lists.lttng.org To: Mathieu Desnoyers Cc: lttng-dev@lists.lttng.org List-Id: lttng-dev@lists.lttng.org T24gMTQtMDQtMjcgMDQ6MzQgQU0sIE1hdGhpZXUgRGVzbm95ZXJzIHdyb3RlOgo+IC0tLS0tIE9y aWdpbmFsIE1lc3NhZ2UgLS0tLS0KPj4gRnJvbTogIkdlbmV2acOodmUgQmFzdGllbiIgPGdiYXN0 aWVuK2x0dG5nQHZlcnNhdGljLm5ldD4KPj4gVG86ICJNYXRoaWV1IERlc25veWVycyIgPG1hdGhp ZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4KPj4gQ2M6IGx0dG5nLWRldkBsaXN0cy5sdHRuZy5v cmcKPj4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCA5LCAyMDE0IDc6MzM6MDYgUE0KPj4gU3ViamVj dDogUmU6IFtsdHRuZy1kZXZdIFtSRkMgUGF0Y2ggVXN0IDIvNV0gU2VyaWFsaXplIHRoZSBDVEYg Z2xvYmFsIHN0cnVjdHVyZXMgZm9yIHVzdC1jb21tCj4+Cj4+IE9uIDA0LzA5LzIwMTQgMTE6NDIg QU0sIE1hdGhpZXUgRGVzbm95ZXJzIHdyb3RlOgo+Pj4gLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAt LS0tLQo+Pj4+IEZyb206ICJHZW5ldmnDqHZlIEJhc3RpZW4iIDxnYmFzdGllbitsdHRuZ0B2ZXJz YXRpYy5uZXQ+Cj4+Pj4gVG86IGx0dG5nLWRldkBsaXN0cy5sdHRuZy5vcmcKPj4+PiBTZW50OiBX ZWRuZXNkYXksIE1hcmNoIDI2LCAyMDE0IDEwOjQ3OjA5IEFNCj4+Pj4gU3ViamVjdDogW2x0dG5n LWRldl0gW1JGQyBQYXRjaCBVc3QgMi81XSBTZXJpYWxpemUgdGhlIENURiBnbG9iYWwKPj4+PiBz dHJ1Y3R1cmVzCWZvciB1c3QtY29tbQo+Pj4+Cj4+Pj4gSXQgZmxhdHRlbiB0aGUgZ2xvYmFsIHR5 cGVzIHNvIHRoYXQgZ2xvYmFsIHR5cGVzIHVzZWQgYnkgb3RoZXIgZ2xvYmFsCj4+Pj4gdHlwZXMK Pj4+IGZsYXR0ZW4gLT4gZmxhdHRlbnMKPj4+Cj4+Pj4gYWxsIGJlbG9uZyB0byB0aGUgZXZlbnQg YXQgc2VyaWFsaXphdGlvbi4gVGhpcyBhdm9pZHMgcmVjdXJzaXZlIGNhbGxzIHRvCj4+Pj4gdGhl Cj4+Pj4gc2VuZCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgYW5kIHNpbXBsaWZpZXMgZXJyb3IgaGFu ZGxpbmcgKG5vIHJlY3Vyc2l2ZQo+Pj4+IGZyZWVzKS4KPj4+IElzIHRoZSBzdHJ1Y3R1cmUgYW5k IGVudW0gcGFydCBvZiB0aGUgZXZlbnQsIG9yIGRlY2xhcmVkIG91dHNpZGUgb2YKPj4+IHRoZSBl dmVudCBzY29wZSA/Cj4+IFRoZXkgYXJlIG5hbWVkIHN0cnVjdHVyZXMgc28gZGVjbGFyZWQgb3V0 c2lkZSB0aGUgc2NvcGUgb2YgdGhlIGV2ZW50Lgo+PiBCdXQgdGhleSBhcmUgc2VudCBvbmx5IGlm IG9uZSBldmVudCBuZWVkcyB0aGVtLgo+Pj4gSXMgdGhlcmUgYSBkb3duc2lkZSB0byB0aGlzIGFw cHJvYWNoID8gRm9yIGluc3RhbmNlLCBpZiB0aGUgc2FtZQo+Pj4gc3RydWN0dXJlIGlzIHVzZWQg aW4gbWFueSBldmVudHMsIGRvIHdlIGhhdmUgdG8gc2VuZCB0aGUgc3RydWN0dXJlIGluZm8KPj4+ IG1hbnkgdGltZXMgPwo+PiBTZW5kaW5nIGVhY2ggc3RydWN0dXJlIChhbmQgZW51bSkgb25jZSB3 b3VsZCBiZSBlbm91Z2gsIHdlIGNvdWxkIGtlZXAgYQo+PiBoYXNoIHRhYmxlIG9mIGdsb2JhbCB0 eXBlcyB0aGF0IHdlcmUgc2VudCwgbGlrZSB3ZSBkbyBiZWZvcmUgZHVtcGluZyB0aGUKPj4gbWV0 YWRhdGEgb2YgdGhvc2UgZ2xvYmFsIHR5cGVzLCBhbmQgdGhhdCB3b3VsZCBhdm9pZCBzZW5kaW5n IHRoZW0gbWFueQo+PiB0aW1lcy4gQnV0IGl0IGlzIG5vdCB3aGF0IGlzIGJlaW5nIGRvbmUgcmln aHQgbm93LiBXZSBqdXN0IHNlbmQgYWxsIHRoZQo+PiBnbG9iYWwgdHlwZXMsIGJ1dCB0aGV5IGFy ZSBhZGRlZCB0byB0aGUgbWV0YWRhdGEgb25seSBvbmNlLgo+IFJlcGVhdGluZyB0aGUgaW50ZWdl cnMsIHN0cmluZ3MsIGV0YyBvbiB0aGUgIndpcmUiICh1bml4IHNvY2tldCkgZm9yCj4gZXZlcnkg ZmllbGQgYmV0d2VlbiBVU1QgYW5kIHNlc3Npb25kIHdhcyBub3Qgc28gYmFkLCBzaW5jZSB0aGV5 IHdlcmUKPiBzbWFsbCBlbm91Z2ggZGVzY3JpcHRpb25zLgo+Cj4gSG93ZXZlciwgSSBmaWd1cmUg dGhhdCBlbnVtZXJhdGlvbnMsIHN0cnVjdHVyZXMgYW5kIHZhcmlhbnQgdHlwZXMgd2lsbAo+IGdy b3cgdG8gYmUgbXVjaCBsYXJnZXIgdGhhbiB0aGVpciBiYXNpYyB0eXBlcyBjb3VudGVycGFydHMu Cj4KPiBUaGVyZWZvcmUsIHNlbmRpbmcgdGhlIGdsb2JhbCB0eXBlIHNlcGFyYXRlbHksIGFuZCB0 aGVuIHNlbmRpbmcgYQo+IHJlZmVyZW5jZSB0byB0aGF0IHR5cGUgKGEgc3RyaW5nKSB3aGVuIGVu Y291bnRlcmluZyB0aGUgZXZlbnQgZmllbGQKPiB1c2luZyB0aGlzIGdsb2JhbCB0eXBlIHNlZW1z IGxpa2UgYSBtb3JlIHNjYWxhYmxlIHNvbHV0aW9uIHRvIG1lLgpKdXN0IHRvIGJlIGNsZWFyLiBZ b3VyIGNvbW1lbnQgaXMgYWJvdXQgdGhlIG51bWJlciBvZiB0aW1lcyBhIGdsb2JhbCAKdHlwZSBp cyBzZW50IGFjcm9zcyB0aGUgd2lyZSwgbm90IHRoZSB3YXkgaXQgaXMgc2VudCBpbiB0aGUgY3Vy cmVudCAKaW1wbGVtZW50YXRpb24gKGFuIGV2ZW50IGlzIGZvbGxvd2VkIGJ5IHRoZSBnbG9iYWwg dHlwZXMgaXQgdXNlcyk/IFNvIAp0aGF0IGV2ZW50MSB3aGljaCB1c2VzIHN0cnVjdDEgd2lsbCBo YXZlIDEgZ2xvYmFsIHR5cGUgZm9sbG93aW5nIGl0IGFuZCAKbGF0ZXIgb24sIHdoZW4gZXZlbnQy IHVzaW5nIGFsc28gc3RydWN0MSBpcyBzZW50LCB0aGVuIGl0IHdpbGwgaGF2ZSAwIApnbG9iYWwg dHlwZXMsIHJpZ2h0PwoKSSdsbCBzZWUgd2hhdCBJIGNhbiBkbywgcHJvYmFibHkgc29tZXRoaW5n IHNpbWlsYXIgdG8gd2hhdCBpcyBkb25lIGZvciAKdGhlIGV2ZW50cy4KClRoYW5rcywKCkdlbmV2 acOodmUKPgo+IFRoYW5rcywKPgo+IE1hdGhpZXUKPgo+PiBUaGFua3MsCj4+IEdlbmV2acOodmUK Pj4+IFRoYW5rcywKPj4+Cj4+PiBNYXRoaWV1Cj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IEdlbmV2 acOodmUgQmFzdGllbiA8Z2Jhc3RpZW4rbHR0bmdAdmVyc2F0aWMubmV0Pgo+Pj4+IC0tLQo+Pj4+ ICAgIGxpYmx0dG5nLXVzdC1jb21tL2x0dG5nLXVzdC1jb21tLmMgfCAxNzAKPj4+PiAgICArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4+Pj4gICAgbGlibHR0bmctdXN0LWN0 bC91c3RjdGwuYyAgICAgICAgICB8ICAyNiArKysrKysKPj4+PiAgICAyIGZpbGVzIGNoYW5nZWQs IDE3OSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQg YS9saWJsdHRuZy11c3QtY29tbS9sdHRuZy11c3QtY29tbS5jCj4+Pj4gYi9saWJsdHRuZy11c3Qt Y29tbS9sdHRuZy11c3QtY29tbS5jCj4+Pj4gaW5kZXggYmMyMjEzMC4uOTAyNzRjNCAxMDA2NDQK Pj4+PiAtLS0gYS9saWJsdHRuZy11c3QtY29tbS9sdHRuZy11c3QtY29tbS5jCj4+Pj4gKysrIGIv bGlibHR0bmctdXN0LWNvbW0vbHR0bmctdXN0LWNvbW0uYwo+Pj4+IEBAIC03NDIsNiArNzQyLDcg QEAgaW50IHNlcmlhbGl6ZV9iYXNpY190eXBlKGVudW0gdXN0Y3RsX2Fic3RyYWN0X3R5cGVzCj4+ Pj4gKnVhdHlwZSwKPj4+PiAgICAJfQo+Pj4+ICAgIAljYXNlIGF0eXBlX2FycmF5Ogo+Pj4+ICAg IAljYXNlIGF0eXBlX3NlcXVlbmNlOgo+Pj4+ICsJY2FzZSBhdHlwZV9zdHJ1Y3R1cmU6Cj4+Pj4g ICAgCWRlZmF1bHQ6Cj4+Pj4gICAgCQlyZXR1cm4gLUVJTlZBTDsKPj4+PiAgICAJfQo+Pj4+IEBA IC04MDAsNiArODAxLDE0IEBAIGludCBzZXJpYWxpemVfb25lX3R5cGUoc3RydWN0IHVzdGN0bF90 eXBlICp1dCwgY29uc3QKPj4+PiBzdHJ1Y3QgbHR0bmdfdHlwZSAqbHQpCj4+Pj4gICAgCQl1dC0+ YXR5cGUgPSB1c3RjdGxfYXR5cGVfc2VxdWVuY2U7Cj4+Pj4gICAgCQlicmVhazsKPj4+PiAgICAJ fQo+Pj4+ICsJY2FzZSBhdHlwZV9zdHJ1Y3R1cmU6Cj4+Pj4gKwl7Cj4+Pj4gKwkJc3RybmNweSh1 dC0+dS5zdHJ1Y3R1cmUubmFtZSwgbHQtPnUuc3RydWN0dXJlLm5hbWUsCj4+Pj4gKwkJCQkJCUxU VE5HX1VTVF9TWU1fTkFNRV9MRU4pOwo+Pj4+ICsJCXV0LT51LnN0cnVjdHVyZS5uYW1lW0xUVE5H X1VTVF9TWU1fTkFNRV9MRU4gLSAxXSA9ICdcMCc7Cj4+Pj4gKwkJdXQtPmF0eXBlID0gdXN0Y3Rs X2F0eXBlX3N0cnVjdHVyZTsKPj4+PiArCQlicmVhazsKPj4+PiArCX0KPj4+PiAgICAJZGVmYXVs dDoKPj4+PiAgICAJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICAgIAl9Cj4+Pj4gQEAgLTg5MiwyNSAr OTAxLDgyIEBAIGludCBzZXJpYWxpemVfZW51bShzdHJ1Y3QgdXN0Y3RsX2VudW0gKnVlbnVtLAo+ Pj4+ICAgIH0KPj4+PiAgICAKPj4+PiAgICBzdGF0aWMKPj4+PiAtaW50IHNlcmlhbGl6ZV9nbG9i YWxfdHlwZV9kZWNsKHNpemVfdCAqX25yX3dyaXRlX2dsb2JhbF90eXBlX2RlY2wsCj4+Pj4gLQkJ c3RydWN0IHVzdGN0bF9nbG9iYWxfdHlwZV9kZWNsICoqdXN0Y3RsX2dsb2JhbF90eXBlLAo+Pj4+ ICtpbnQgc2VyaWFsaXplX3N0cnVjdHVyZShzdHJ1Y3QgdXN0Y3RsX3N0cnVjdHVyZSAqdXN0cnVj dCwKPj4+PiArCQljb25zdCBzdHJ1Y3QgbHR0bmdfc3RydWN0dXJlICpsc3RydWN0KQo+Pj4+ICt7 Cj4+Pj4gKwlpbnQgcmV0Owo+Pj4+ICsKPj4+PiArCXN0cm5jcHkodXN0cnVjdC0+bmFtZSwgbHN0 cnVjdC0+bmFtZSwgTFRUTkdfVVNUX1NZTV9OQU1FX0xFTik7Cj4+Pj4gKwl1c3RydWN0LT5uYW1l W0xUVE5HX1VTVF9TWU1fTkFNRV9MRU4gLSAxXSA9ICdcMCc7Cj4+Pj4gKwo+Pj4+ICsJLyogU2Vy aWFsaXplIHRoZSBmaWVsZHMgKi8KPj4+PiArCWlmIChsc3RydWN0LT5ucl9maWVsZHMgPiAwKSB7 Cj4+Pj4gKwkJcmV0ID0gc2VyaWFsaXplX2ZpZWxkcygmdXN0cnVjdC0+bnJfZmllbGRzLCAmdXN0 cnVjdC0+ZmllbGRzLAo+Pj4+ICsJCQkJbHN0cnVjdC0+bnJfZmllbGRzLAlsc3RydWN0LT5maWVs ZHMpOwo+Pj4+ICsJCWlmIChyZXQpIHsKPj4+PiArCQkJcmV0dXJuIHJldDsKPj4+PiArCQl9Cj4+ Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRp YyBzaXplX3QgZ2V0X2NoaWxkX2dsb2JhbF90eXBlX2NvdW50KHNpemVfdCBucl9nbG9iYWxfdHlw ZV9kZWNsLAo+Pj4+ICsJCWNvbnN0IHN0cnVjdCBsdHRuZ19nbG9iYWxfdHlwZV9kZWNsICpsdHRu Z19nbG9iYWxfdHlwZSkKPj4+PiArewo+Pj4+ICsJc2l6ZV90IHRvdGFsX2dsb2JhbF90eXBlcyA9 IDA7Cj4+Pj4gKwlpbnQgaTsKPj4+PiArCWNvbnN0IHN0cnVjdCBsdHRuZ19nbG9iYWxfdHlwZV9k ZWNsICpsZzsKPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbnJfZ2xvYmFsX3R5cGVfZGVj bDsgaSsrKSB7Cj4+Pj4gKwkJbGcgPSAmbHR0bmdfZ2xvYmFsX3R5cGVbaV07Cj4+Pj4gKwo+Pj4+ ICsJCWlmIChsZy0+bm93cml0ZSkKPj4+PiArCQkJY29udGludWU7Cj4+Pj4gKwo+Pj4+ICsJCS8q IENvdW50IHRoZSBnbG9iYWwgdHlwZXMgaW4gY2hpbGRyZW4gYXMgd2VsbCAqLwo+Pj4+ICsJCXN3 aXRjaCAobGctPm10eXBlKSB7Cj4+Pj4gKwkJY2FzZSBtdHlwZV9zdHJ1Y3R1cmU6Cj4+Pj4gKwkJ ewo+Pj4+ICsJCQljb25zdCBzdHJ1Y3QgbHR0bmdfc3RydWN0dXJlICpsczsKPj4+PiArCj4+Pj4g KwkJCWxzID0gbGctPnUuY3RmX3N0cnVjdHVyZTsKPj4+PiArCQkJLyogQWRkIHRoZSBudW1iZXIg b2YgZ2xvYmFsIHR5cGVzIGl0IGNvbnRhaW5zIGFuZCB0aGUgY291bnQgb2YgaXRzIG93bgo+Pj4+ IGNoaWxkcmVuICovCj4+Pj4gKwkJCWlmIChscy0+bnJfZ2xvYmFsX3R5cGVfZGVjbCA+IDApIHsK Pj4+PiArCQkJCXRvdGFsX2dsb2JhbF90eXBlcyArPSBscy0+bnJfZ2xvYmFsX3R5cGVfZGVjbDsK Pj4+PiArCQkJCXRvdGFsX2dsb2JhbF90eXBlcyArPQo+Pj4+IGdldF9jaGlsZF9nbG9iYWxfdHlw ZV9jb3VudChscy0+bnJfZ2xvYmFsX3R5cGVfZGVjbCwKPj4+PiArCQkJCQkJCQlscy0+Z2xvYmFs X3R5cGVfZGVjbCk7Cj4+Pj4gKwkJCX0KPj4+PiArCQkJYnJlYWs7Cj4+Pj4gKwkJfQo+Pj4+ICsJ CWNhc2UgbXR5cGVfZW51bToKPj4+PiArCQlkZWZhdWx0Ogo+Pj4+ICsJCQlicmVhazsKPj4+PiAr CQl9Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIHRvdGFsX2dsb2JhbF90eXBlczsKPj4+ PiArfQo+Pj4+ICsKPj4+PiArLyoKPj4+PiArICogV2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQs IGluZGV4IGlzIHRoZSBuZXh0IGluZGV4IHRvIHdyaXRlIHRvIGFuZAo+Pj4+IHRoZQo+Pj4+ICsg KiB1c3RjdGxfZ2xvYmFsX3R5cGUgc3RydWN0dXJlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYW5k IHdpbGwgbm90Cj4+Pj4gb3ZlcmZsb3cuCj4+Pj4gKyAqCj4+Pj4gKyAqIFRoZSBnbG9iYWwgdHlw ZSBkZWNsYXJhdGlvbnMgYXJlIGZsYXR0ZW5lZCBhdCBzZXJpYWxpemF0aW9uIHRvIGF2b2lkCj4+ Pj4gKyAqIG5lZWRpbmcgdG8gZG8gcmVjdXJzaXZlIGZyZWVzIG9uIGVycm9yLgo+Pj4+ICsgKi8K Pj4+PiArc3RhdGljIGludCBfc2VyaWFsaXplX2dsb2JhbF90eXBlX2RlY2woc2l6ZV90ICppbmRl eCwKPj4+PiArCQlzdHJ1Y3QgdXN0Y3RsX2dsb2JhbF90eXBlX2RlY2wgKmdsb2JhbF90eXBlX2Rl Y2wsCj4+Pj4gICAgCQlzaXplX3QgbnJfZ2xvYmFsX3R5cGVfZGVjbCwKPj4+PiAgICAJCWNvbnN0 IHN0cnVjdCBsdHRuZ19nbG9iYWxfdHlwZV9kZWNsICpsdHRuZ19nbG9iYWxfdHlwZSkKPj4+PiAg ICB7Cj4+Pj4gLQlzdHJ1Y3QgdXN0Y3RsX2dsb2JhbF90eXBlX2RlY2wgKmdsb2JhbF90eXBlX2Rl Y2w7Cj4+Pj4gICAgCWludCBpLCByZXQ7Cj4+Pj4gLQlzaXplX3QgbnJfd3JpdGVfZ2xvYmFsX3R5 cGVfZGVjbCA9IDA7Cj4+Pj4gLQo+Pj4+IC0JZ2xvYmFsX3R5cGVfZGVjbCA9IHptYWxsb2MobnJf Z2xvYmFsX3R5cGVfZGVjbAo+Pj4+IC0JCQkJCSogc2l6ZW9mKCpnbG9iYWxfdHlwZV9kZWNsKSk7 Cj4+Pj4gLQlpZiAoIWdsb2JhbF90eXBlX2RlY2wpCj4+Pj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+ Pj4gICAgCj4+Pj4gICAgCWZvciAoaSA9IDA7IGkgPCBucl9nbG9iYWxfdHlwZV9kZWNsOyBpKysp IHsKPj4+PiAgICAJCXN0cnVjdCB1c3RjdGxfZ2xvYmFsX3R5cGVfZGVjbCAqZjsKPj4+PiAgICAJ CWNvbnN0IHN0cnVjdCBsdHRuZ19nbG9iYWxfdHlwZV9kZWNsICpsZjsKPj4+PiAgICAKPj4+PiAt CQlmID0gJmdsb2JhbF90eXBlX2RlY2xbbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbF07Cj4+Pj4g KwkJZiA9ICZnbG9iYWxfdHlwZV9kZWNsWyppbmRleF07Cj4+Pj4gICAgCQlsZiA9ICZsdHRuZ19n bG9iYWxfdHlwZVtpXTsKPj4+PiAgICAKPj4+PiAgICAJCS8qIHNraXAgJ25vd3JpdGUnIGZpZWxk cyAqLwo+Pj4+IEBAIC05MjgsMTggKzk5NCw2NiBAQCBpbnQgc2VyaWFsaXplX2dsb2JhbF90eXBl X2RlY2woc2l6ZV90Cj4+Pj4gKl9ucl93cml0ZV9nbG9iYWxfdHlwZV9kZWNsLAo+Pj4+ICAgIAkJ CWxlID0gbGYtPnUuY3RmX2VudW07Cj4+Pj4gICAgCQkJcmV0ID0gc2VyaWFsaXplX2VudW0odWUs IGxlKTsKPj4+PiAgICAJCQlpZiAocmV0KQo+Pj4+IC0JCQkJZ290byBlcnJvcjsKPj4+PiArCQkJ CXJldHVybiByZXQ7Cj4+Pj4gICAgCj4+Pj4gICAgCQkJZi0+bXR5cGUgPSB1c3RjdGxfbXR5cGVf ZW51bTsKPj4+PiAgICAJCQlicmVhazsKPj4+PiAgICAJCX0KPj4+PiArCQljYXNlIG10eXBlX3N0 cnVjdHVyZToKPj4+PiArCQl7Cj4+Pj4gKwkJCXN0cnVjdCB1c3RjdGxfc3RydWN0dXJlICp1czsK Pj4+PiArCQkJY29uc3Qgc3RydWN0IGx0dG5nX3N0cnVjdHVyZSAqbHM7Cj4+Pj4gKwo+Pj4+ICsJ CQkvKiBTZXJpYWxpemUgY2hpbGRyZW4gZ2xvYmFsIHR5cGVzIGZpcnN0ICovCj4+Pj4gKwkJCWxz ID0gbGYtPnUuY3RmX3N0cnVjdHVyZTsKPj4+PiArCQkJcmV0ID0gX3NlcmlhbGl6ZV9nbG9iYWxf dHlwZV9kZWNsKGluZGV4LAo+Pj4+ICsJCQkJCWdsb2JhbF90eXBlX2RlY2wsCj4+Pj4gKwkJCQkJ bHMtPm5yX2dsb2JhbF90eXBlX2RlY2wsCj4+Pj4gKwkJCQkJbHMtPmdsb2JhbF90eXBlX2RlY2wp Owo+Pj4+ICsJCQlpZiAocmV0KQo+Pj4+ICsJCQkJcmV0dXJuIHJldDsKPj4+PiArCj4+Pj4gKwkJ CS8qIFJlaW5pdGlhbGl6ZSBmIHNpbmNlIHRoZSBpbmRleCBtYXkgaGF2ZSBjaGFuZ2VkICovCj4+ Pj4gKwkJCWYgPSAmZ2xvYmFsX3R5cGVfZGVjbFsqaW5kZXhdOwo+Pj4+ICsJCQl1cyA9ICZmLT51 LmN0Zl9zdHJ1Y3R1cmU7Cj4+Pj4gKwo+Pj4+ICsJCQlyZXQgPSBzZXJpYWxpemVfc3RydWN0dXJl KHVzLCBscyk7Cj4+Pj4gKwkJCWlmIChyZXQpCj4+Pj4gKwkJCQlyZXR1cm4gcmV0Owo+Pj4+ICsK Pj4+PiArCQkJZi0+bXR5cGUgPSB1c3RjdGxfbXR5cGVfc3RydWN0dXJlOwo+Pj4+ICsJCQlicmVh azsKPj4+PiArCQl9Cj4+Pj4gICAgCQlkZWZhdWx0Ogo+Pj4+IC0JCQlyZXQgPSAtRUlOVkFMOwo+ Pj4+IC0JCQlnb3RvIGVycm9yOwo+Pj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4+PiAgICAJCX0K Pj4+PiAgICAKPj4+PiAtCQlucl93cml0ZV9nbG9iYWxfdHlwZV9kZWNsKys7Cj4+Pj4gKwkJKmlu ZGV4ID0gKmluZGV4ICsgMTsKPj4+PiAgICAJfQo+Pj4+ICsJcmV0dXJuIDA7Cj4+Pj4gK30KPj4+ PiArCj4+Pj4gK3N0YXRpYwo+Pj4+ICtpbnQgc2VyaWFsaXplX2dsb2JhbF90eXBlX2RlY2woc2l6 ZV90ICpfbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbCwKPj4+PiArCQlzdHJ1Y3QgdXN0Y3RsX2ds b2JhbF90eXBlX2RlY2wgKip1c3RjdGxfZ2xvYmFsX3R5cGUsCj4+Pj4gKwkJc2l6ZV90IG5yX2ds b2JhbF90eXBlX2RlY2wsCj4+Pj4gKwkJY29uc3Qgc3RydWN0IGx0dG5nX2dsb2JhbF90eXBlX2Rl Y2wgKmx0dG5nX2dsb2JhbF90eXBlKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgdXN0Y3RsX2dsb2Jh bF90eXBlX2RlY2wgKmdsb2JhbF90eXBlX2RlY2w7Cj4+Pj4gKwlpbnQgaSwgcmV0Owo+Pj4+ICsJ c2l6ZV90IG5yX3dyaXRlX2dsb2JhbF90eXBlX2RlY2wgPSAwOwo+Pj4+ICsJc2l6ZV90IG5yX2No aWxkX2dsb2JhbF90eXBlX2NudCA9Cj4+Pj4gZ2V0X2NoaWxkX2dsb2JhbF90eXBlX2NvdW50KG5y X2dsb2JhbF90eXBlX2RlY2wsCj4+Pj4gKwkJCQkJCQlsdHRuZ19nbG9iYWxfdHlwZSk7Cj4+Pj4g Kwo+Pj4+ICsJZ2xvYmFsX3R5cGVfZGVjbCA9IHptYWxsb2MoKG5yX2dsb2JhbF90eXBlX2RlY2wg Kwo+Pj4+IG5yX2NoaWxkX2dsb2JhbF90eXBlX2NudCkKPj4+PiArCQkJCQkqIHNpemVvZigqZ2xv YmFsX3R5cGVfZGVjbCkpOwo+Pj4+ICsJaWYgKCFnbG9iYWxfdHlwZV9kZWNsKQo+Pj4+ICsJCXJl dHVybiAtRU5PTUVNOwo+Pj4+ICsKPj4+PiArCXJldCA9IF9zZXJpYWxpemVfZ2xvYmFsX3R5cGVf ZGVjbCgmbnJfd3JpdGVfZ2xvYmFsX3R5cGVfZGVjbCwKPj4+PiBnbG9iYWxfdHlwZV9kZWNsLAo+ Pj4+ICsJCQlucl9nbG9iYWxfdHlwZV9kZWNsLCBsdHRuZ19nbG9iYWxfdHlwZSk7Cj4+Pj4gKwlp ZiAocmV0KQo+Pj4+ICsJCWdvdG8gZXJyb3I7Cj4+Pj4gICAgCj4+Pj4gICAgCSpfbnJfd3JpdGVf Z2xvYmFsX3R5cGVfZGVjbCA9IG5yX3dyaXRlX2dsb2JhbF90eXBlX2RlY2w7Cj4+Pj4gICAgCSp1 c3RjdGxfZ2xvYmFsX3R5cGUgPSBnbG9iYWxfdHlwZV9kZWNsOwo+Pj4+IEBAIC05NTQsNiArMTA2 OCw5IEBAIGVycm9yOgo+Pj4+ICAgIAkJY2FzZSB1c3RjdGxfbXR5cGVfZW51bToKPj4+PiAgICAJ CQlmcmVlKG0tPnUuY3RmX2VudW0uZW50cmllcyk7Cj4+Pj4gICAgCQkJYnJlYWs7Cj4+Pj4gKwkJ Y2FzZSB1c3RjdGxfbXR5cGVfc3RydWN0dXJlOgo+Pj4+ICsJCQlmcmVlKG0tPnUuY3RmX3N0cnVj dHVyZS5maWVsZHMpOwo+Pj4+ICsJCQlicmVhazsKPj4+PiAgICAJCWRlZmF1bHQ6Cj4+Pj4gICAg CQkJYnJlYWs7Cj4+Pj4gICAgCQl9Cj4+Pj4gQEAgLTExNTgsMTUgKzEyNzUsMzEgQEAgaW50IHVz dGNvbW1fcmVnaXN0ZXJfZXZlbnQoaW50IHNvY2ssCj4+Pj4gICAgCQkJCX0KPj4+PiAgICAJCQkJ YnJlYWs7Cj4+Pj4gICAgCQkJfQo+Pj4+ICsJCQljYXNlIHVzdGN0bF9tdHlwZV9zdHJ1Y3R1cmU6 Cj4+Pj4gKwkJCXsKPj4+PiArCQkJCWludCBmaWVsZF9sZW4gPSBvbmVfZ2xvYmFsX3R5cGUtPnUu Y3RmX3N0cnVjdHVyZS5ucl9maWVsZHMgKgo+Pj4+IHNpemVvZigqb25lX2dsb2JhbF90eXBlLT51 LmN0Zl9zdHJ1Y3R1cmUuZmllbGRzKTsKPj4+PiArCj4+Pj4gKwkJCQkvKiBTZW5kIHRoZSBmaWVs ZHMgKi8KPj4+PiArCQkJCURCRygiU2VuZGluZyBmaWVsZHMgZm9yIGdsb2JhbCB0eXBlIHN0cnVj dHVyZSAlcy5cbiIsCj4+Pj4gKwkJCQkJCW9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJl Lm5hbWUpOwo+Pj4+ICsJCQkJbGVuID0gdXN0Y29tbV9zZW5kX3VuaXhfc29jayhzb2NrLAo+Pj4+ IG9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJlLmZpZWxkcywgZmllbGRfbGVuKTsKPj4+ PiArCQkJCWZyZWUob25lX2dsb2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1cmUuZmllbGRzKTsKPj4+ PiArCQkJCW9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJlLmZpZWxkcyA9IE5VTEw7Cj4+ Pj4gKwkJCQlpZiAobGVuID4gMCAmJiBsZW4gIT0gZmllbGRfbGVuKSB7Cj4+Pj4gKwkJCQkJZ290 byBlcnJvcl9nbG9iYWxfdHlwZTsKPj4+PiArCQkJCX0KPj4+PiArCQkJCWlmIChsZW4gPCAwKSB7 Cj4+Pj4gKwkJCQkJZ290byBlcnJvcl9nbG9iYWxfdHlwZTsKPj4+PiArCQkJCX0KPj4+PiArCQkJ CWJyZWFrOwo+Pj4+ICsJCQl9Cj4+Pj4gICAgCQkJZGVmYXVsdDoKPj4+PiAgICAJCQkJYnJlYWs7 Cj4+Pj4gICAgCQkJfQo+Pj4+ICAgIAkJfQo+Pj4+IC0JCWZyZWUoZ2xvYmFsX3R5cGVfZGVjbCk7 Cj4+Pj4gICAgCj4+Pj4gLQl9IGVsc2Ugewo+Pj4+IC0JCWZyZWUoZ2xvYmFsX3R5cGVfZGVjbCk7 Cj4+Pj4gICAgCX0KPj4+PiArCWZyZWUoZ2xvYmFsX3R5cGVfZGVjbCk7Cj4+Pj4gICAgCj4+Pj4g ICAgCS8qIHJlY2VpdmUgcmVwbHkgKi8KPj4+PiAgICAJbGVuID0gdXN0Y29tbV9yZWN2X3VuaXhf c29jayhzb2NrLCAmcmVwbHksIHNpemVvZihyZXBseSkpOwo+Pj4+IEBAIC0xMjEyLDYgKzEzNDUs OSBAQCBlcnJvcl9nbG9iYWxfdHlwZToKPj4+PiAgICAJCWNhc2UgdXN0Y3RsX210eXBlX2VudW06 Cj4+Pj4gICAgCQkJZnJlZShvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX2VudW0uZW50cmllcyk7Cj4+ Pj4gICAgCQkJYnJlYWs7Cj4+Pj4gKwkJY2FzZSB1c3RjdGxfbXR5cGVfc3RydWN0dXJlOgo+Pj4+ ICsJCQlmcmVlKG9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJlLmZpZWxkcyk7Cj4+Pj4g KwkJCWJyZWFrOwo+Pj4+ICAgIAkJZGVmYXVsdDoKPj4+PiAgICAJCQlicmVhazsKPj4+PiAgICAJ CX0KPj4+PiBkaWZmIC0tZ2l0IGEvbGlibHR0bmctdXN0LWN0bC91c3RjdGwuYyBiL2xpYmx0dG5n LXVzdC1jdGwvdXN0Y3RsLmMKPj4+PiBpbmRleCBhMTgxZTYyLi4zMTAwZjFiIDEwMDY0NAo+Pj4+ IC0tLSBhL2xpYmx0dG5nLXVzdC1jdGwvdXN0Y3RsLmMKPj4+PiArKysgYi9saWJsdHRuZy11c3Qt Y3RsL3VzdGN0bC5jCj4+Pj4gQEAgLTE4OTYsNiArMTg5NiwzMiBAQCBpbnQgdXN0Y3RsX3JlY3Zf cmVnaXN0ZXJfZXZlbnQoaW50IHNvY2ssCj4+Pj4gICAgCQkJCX0KPj4+PiAgICAJCQkJYnJlYWs7 Cj4+Pj4gICAgCQkJfQo+Pj4+ICsJCQljYXNlIHVzdGN0bF9tdHlwZV9zdHJ1Y3R1cmU6Cj4+Pj4g KwkJCXsKPj4+PiArCQkJCWludCBlbnRyeV9sZW4gPSBvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX3N0 cnVjdHVyZS5ucl9maWVsZHMgKgo+Pj4+IHNpemVvZigqb25lX2dsb2JhbF90eXBlLT51LmN0Zl9z dHJ1Y3R1cmUuZmllbGRzKTsKPj4+PiArCQkJCS8qIFJlY2VpdmUgdGhlIGVudHJpZXMgKi8KPj4+ PiArCQkJCW9uZV9nbG9iYWxfdHlwZS0+dS5jdGZfc3RydWN0dXJlLmZpZWxkcyA9IHptYWxsb2Mo ZW50cnlfbGVuKTsKPj4+PiArCQkJCWlmICghb25lX2dsb2JhbF90eXBlLT51LmN0Zl9zdHJ1Y3R1 cmUuZmllbGRzKSB7Cj4+Pj4gKwkJCQkJbGVuID0gLUVOT01FTTsKPj4+PiArCQkJCQlnb3RvIGds b2JhbF90eXBlX2Vycm9yOwo+Pj4+ICsJCQkJfQo+Pj4+ICsJCQkJbGVuID0gdXN0Y29tbV9yZWN2 X3VuaXhfc29jayhzb2NrLAo+Pj4+ICsJCQkJCQlvbmVfZ2xvYmFsX3R5cGUtPnUuY3RmX3N0cnVj dHVyZS5maWVsZHMsCj4+Pj4gKwkJCQkJCWVudHJ5X2xlbik7Cj4+Pj4gKwkJCQlEQkcoIlJlY2Vp dmVkIGZpZWxkcyBmb3Igc3RydWN0ICVzLlxuIiwKPj4+PiBvbmVfZ2xvYmFsX3R5cGUtPnUuY3Rm X3N0cnVjdHVyZS5uYW1lKTsKPj4+PiArCQkJCWlmIChsZW4gPiAwICYmIGxlbiAhPSBlbnRyeV9s ZW4pIHsKPj4+PiArCQkJCQlsZW4gPSAtRUlPOwo+Pj4+ICsJCQkJCWdvdG8gZ2xvYmFsX3R5cGVf ZXJyb3I7Cj4+Pj4gKwkJCQl9Cj4+Pj4gKwkJCQlpZiAobGVuID09IDApIHsKPj4+PiArCQkJCQls ZW4gPSAtRVBJUEU7Cj4+Pj4gKwkJCQkJZ290byBnbG9iYWxfdHlwZV9lcnJvcjsKPj4+PiArCQkJ CX0KPj4+PiArCQkJCWlmIChsZW4gPCAwKSB7Cj4+Pj4gKwkJCQkJZ290byBnbG9iYWxfdHlwZV9l cnJvcjsKPj4+PiArCQkJCX0KPj4+PiArCQkJCWJyZWFrOwo+Pj4+ICsJCQl9Cj4+Pj4gICAgCQkJ ZGVmYXVsdDoKPj4+PiAgICAJCQkJYnJlYWs7Cj4+Pj4gICAgCQkJfQo+Pj4+IC0tCj4+Pj4gMS45 LjEKPj4+Pgo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4+PiBsdHRuZy1kZXYgbWFpbGluZyBsaXN0Cj4+Pj4gbHR0bmctZGV2QGxpc3Rz Lmx0dG5nLm9yZwo+Pj4+IGh0dHA6Ly9saXN0cy5sdHRuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL2x0dG5nLWRldgo+Pj4+Cj4+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbHR0bmctZGV2IG1haWxpbmcgbGlzdApsdHRuZy1kZXZAbGlzdHMu bHR0bmcub3JnCmh0dHA6Ly9saXN0cy5sdHRuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv L2x0dG5nLWRldgo=