From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?J=C3=A9r=C3=A9mie_Galarneau?= Subject: Re: [RFC PATCH v2 10/13] Teardown apps_notify_thread before thread_manage_apps Date: Wed, 13 Dec 2017 20:57:24 -0500 Message-ID: References: <20170918225206.17725-1-jonathan.rajotte-julien@efficios.com> <20170918225206.17725-11-jonathan.rajotte-julien@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb0-x236.google.com (mail-yb0-x236.google.com [IPv6:2607:f8b0:4002:c09::236]) by lists.lttng.org (Postfix) with ESMTPS id 3yxxXT5gbqzhkn for ; Thu, 14 Dec 2017 01:57:45 +0000 (UTC) Received: by mail-yb0-x236.google.com with SMTP id 5so2367649ybp.4 for ; Wed, 13 Dec 2017 17:57:45 -0800 (PST) In-Reply-To: <20170918225206.17725-11-jonathan.rajotte-julien@efficios.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" To: Jonathan Rajotte Cc: "lttng-dev@lists.lttng.org" , Jeremie Galarneau List-Id: lttng-dev@lists.lttng.org U29ycnksIEkgZmF0LWZpbmdlci1zZW50IGFuIGluY29tcGxldGUgcmVwbHksIGRpc3JlZ2FyZCBp dC4gVGhpcyBlLW1haWwKY29udGFpbnMgYWxsIHRoZSBjb21tZW50cy4KCk9uIDE4IFNlcHRlbWJl ciAyMDE3IGF0IDE4OjUyLCBKb25hdGhhbiBSYWpvdHRlCjxqb25hdGhhbi5yYWpvdHRlLWp1bGll bkBlZmZpY2lvcy5jb20+IHdyb3RlOgo+IFJGQzoKPiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZSB3 ZSB1c2UgdGhlIHVzdF9hcHBfaHRfYnlfbm90aWZ5X3NvY2sgdG8KPiBwZXJmb3JtIHRoZSBjbGVh bnVwIG9wZXJhdGlvbi4gU2luY2UgYm90aCB1c3RfYXBwX3VucmVnaXN0ZXIgYW5kCj4gdXN0X2Fw cF91c3RfYXBwX25vdGlmeV91bnJlZ2lzdGVyIHBlcmZvcm0gYSByZW1vdmUgb2YgdGhlIGFwcCBv biB0aGUKPiB1c3RfdXN0X2FwcF9ieV9ub3RpZnlfc29jayBidXQgb25seSB1c3RfYXBwX25vdGlm eV91bnJlZ2lzdGVyIGFjdHVhbGx5CgpUaGVyZSBhcmUgc29tZSBleHRyYSB1c3RfIGFuZCB1c3Rf YXBwXyBvbiB0aGUgbGFzdCB0d28gbGluZXMgOykKCj4gZW5kIHVwIHBlcmZvcm1pbmcgYSBjbG9z ZShjYWxsX3JjdSkgb24gdGhlIHNvY2tldC4KCmEgY2xvc2UoY2FsbF9yY3UpID8KCj4KPiBPdGhl ciB3YXkgdG8gZG8gZml4IHRoaXMgcHJvYmxlbT8KPgoKTGV0IG1lIHdhbGsgdGhyb3VnaCB0aGUg cHJvYmxlbSBhcyBJIHVuZGVyc3RhbmQgaXQgYW5kCndlJ2xsIHNlZSBpZi93aGVyZSBJIGFtIGdv aW5nIG9mZi1jb3Vyc2UuCgpBbiB1c3RfYXBwIGhhcyB0d28gc29ja2V0czoKICAtIGNvbW1hbmQg KHRocm91Z2ggd2hpY2ggdGhlIHNlc3Npb25kIHNlbmRzIGNvbW1hbmRzIHRvIHRoZSBhcHApCiAg LSBub3RpZnkgKHRocm91Z2ggd2hpY2ggdGhlIGFwcGxpY2F0aW9uIG5vdGlmaWVzIHRoZSBzZXNz aW9uZCBvZgogICAgdmFyaW91cyBjb25kaXRpb25zIHN1Y2ggYXMgbmV3IGV2ZW50cyBiZWluZyBh dmFpbGFibGUsIGV0Yy4pCgpUaGVzZSB0d28gc29ja2V0cyBhcmUgcmVjZWl2ZWQgZnJvbSBhcHBs aWNhdGlvbnMgYnkgdGhlCnJlZ19hcHBzX3RocmVhZCBbMV0gd2hpY2ggcG9zdHMgdGhlbSB0byB0 aGUgZGlzcGF0Y2hfdGhyZWFkIFsyXS4KT25jZSB0aGUgZGlzcGF0Y2ggdGhyZWFkIGlzIGF3YXJl IG9mIGJvdGggc29ja2V0cyBmb3IgYSBnaXZlbiBhcHAsCnRoZSB0d28gc29ja2V0cyBhcmUgImRp c3BhdGNoZWQiIHRvIHRoZWlyIHJlc3BlY3RpdmUgbWFuYWdlbWVudAp0aHJlYWRzLgoKKiBUaGUg ImNvbW1hbmQiIHNvY2tldCBpcyBzZW50IHRvIHRoZSAiYXBwc190aHJlYWQiIFszXQoqIFRoZSAi bm90aWZ5IiBzb2NrZXQgaXMgc2VudCB0byB0aGUgImFwcHNfbm90aWZ5X3RocmVhZCIgWzRdCgpM ZXQncyBsb29rIGF0IHdoYXQgaGFwcGVucyB3aGVuIGFuIGFwcGxpY2F0aW9uIGRpZXMuCgpUaGUg ImFwcHNfdGhyZWFkIiAoaGFuZGxlcyBhcHBsaWNhdGlvbiBjb21tYW5kIHNvY2tldHMpOgotIHdh a2VzIHVwIGZyb20gaXRzIHBvbGwoKSBhbmQgbm90aWNlcyBhbiBlcnJvci9oYW5nLXVwIGhhcwog IG9jY3VycmVkIG9uIGFuIGFwcGxpY2F0aW9uJ3MgY29tbWFuZCBzb2NrZXQKICAtIGNhbGxzIHVz dF9hcHBfdW5yZWdpc3RlcigpIG9uIHdpdGggdGhhdCBzb2NrZXQncyBGRAogICAgLSByZXRyaWV2 ZXMgdGhlIHVzdF9hcHAgZnJvbSB0aGUgc29ja2V0J3MgRkQgdGhyb3VnaAogICAgICB1c3RfYXBw X2h0X2J5X3NvY2sKICAgICAgLSBmbHVzaGVzIHRoYXQgYXBwbGljYXRpb24ncyBidWZmZXJzIGFu ZCBtZXRhZGF0YQogICAgICAtIHJlbW92ZXMgdGhlIGFwcCBmcm9tIHVzdF9hcHBfaHRfYnlfc29j awogICAgICAtIHJlbW92ZXMgdGhlIGFwcCBmcm9tIHVzdF9hcHBfaHRfYnlfbm90aWZ5X3NvY2sK ICAgICAgICAoaXQncyBva2F5IGZvciB0aGlzIHRvIGZhaWwpCiAgICAgIC0gcmVtb3ZlcyB0aGUg YXBwIGZyb20gdXN0X2FwcF9odCAocGlkIDwtPiB1c3RfYXBwKQogICAgICAtIGVucXVldWVzIGEg Y2FsbF9yY3UoKSBqb2IgdG8gY2xvc2UgdGhlIGNvbW1hbmQgc29ja2V0CgpUaGUgImFwcHNfbm90 aWZ5X3RocmVhZCIgKGhhbmRsZXMgYXBwbGljYXRpb24gbm90aWZpY2F0aW9uIHNvY2tldHMpOgot IHdha2VzIHVwIGZyb20gaXRzIHBvbGwoKSBhbmQgbm90aWNlcyBhbiBlcnJvci9oYW5kLXVwIGhh cwogIG9jY3VycmVkIG9uIGFuIGFwcGxpY2F0aW9uJ3Mgbm90aWZpY2F0aW9uIHNvY2tldAogIC0g Y2FsbHMgdXN0X2FwcF9ub3RpZnlfc29ja191bnJlZ2lzdGVyKCkKICAgIC0gcmVtb3ZlcyB0aGUg YXBwIGZyb20gdXN0X2FwcF9odF9ieV9ub3RpZnlfc29jawogICAgICAoaXQncyBva2F5IGZvciB0 aGlzIHRvIGZhaWwgc2luY2UgYm90aCB0aHJlYWRzIGFyZSB0cnlpbmcKICAgICAgIHRvIGNsZWFu IHRoaXMgdXApCiAgICAtIGNhbGxfcmN1KCkgdG8gY2xvc2UgdGhlIG5vdGlmeSBzb2NrZXQKCgpO b3csIHByb3ZpZGVkIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBwcm9ibGVtIGNvcnJlY3RseQooYXMg c3RhdGVkIGluIG15IHJlcGx5IHRvIHBhdGNoICMwNiksIHlvdSB3YW50IHRvIGNsZWFuLXVwCnRo ZSBjb21tYW5kIGFuZCBub3RpZnkgc29ja2V0cyBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGV5Cndv dWxkIGJlIGlmIHRoZWlyIGFzc29jaWF0ZWQgYXBwcyBoYWQgZGllZC4gVGhhdCdzIGZhaXIuCgpI b3dldmVyLCBhcyBzZWVuIGFib3ZlLCBjbGVhbmluZyB1cCB0aGUgImFwcHNfdGhyZWFkIiB3aWxs IGNhdXNlCml0IHRvIGVtcHR5IGFsbCB0aGUgdXN0X2FwcCBkYXRhIHN0cnVjdHVyZXM6CiAgKiB1 c3RfYXBwX2h0X2J5X3NvY2sKICAqIHVzdF9hcHBfaHRfYnlfbm90aWZ5X3NvY2sKICAqIHVzdF9h cHBfaHQKCkhvd2V2ZXIsIHRoZSAiYXBwc19ub3RpZnlfdGhyZWFkIiBuZWVkcyBhdCBsZWFzdCBv bmUgb2YgdGhvc2UKZGF0YSBzdHJ1Y3R1cmVzIHRvIGJlIHByZXNlbnQgdG8gaXRlcmF0ZSBvbiBh bGwgb2YgdGhlCmFwcGxpY2F0aW9ucyBhbmQgcGVyZm9ybSBpdHMgY2xlYW4tdXAuCgpIZW5jZSwg eW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJhcHBzX25vdGlmeV90aHJlYWQiIGNhbgpj b21wbGV0ZSBpdHMgc2h1dGRvd24gYmVmb3JlIHRoZSAiYXBwc190aHJlYWQiIHN0YXJ0cyBpdHMg b3duCmNsZWFuLXVwLiBDb3JyZWN0PwoKSSB3b3VsZCBiZSBva2F5IHdpdGggcmVvcmRlcmluZyB0 aGUgdGhyZWFkcycgdGVhcmRvd24gdG8KcHJvdmlkZSB0aGF0IGd1YXJhbnRlZS4gTXkgb25seSBn cmlwZSBpcyB0aGF0IGl0IG5lZWRzIHRvCmJlIGRvY3VtZW50ZWQgX2V4dGVuc2l2ZWx5XyBhcyBp dCBpcyBub3Qgb2J2aW91cyBhdCBhbGwgdGhhdApzdWNoIGEgZGVwZW5kZW5jeSBleGlzdHMgYmV0 d2VlbiB0aG9zZSB0aHJlYWRzLgoKT24gdGhlIG90aGVyIGhhbmQsIGl0IHNlZW1zIHRvIG1lIHRo YXQgaXQgd291bGQgYmUgc2ltcGxlcgp0byBfbm90XyBwZXJmb3JtIHRoZSBjbGVhbi11cCB5b3Ug YWRkZWQgaW4gdGhlICJhcHBzX3RocmVhZCIKYW5kIGxlYXZlIHRoYXQgdG8gdGhlIHNlc3Npb25k X2NsZWFudXAoKSwgb25jZSBhbGwgdGhyZWFkcwpoYXZlIGJlZW4gdG9ybiBkb3duLgoKTm90IHBl cmZvcm1pbmcgdGhlIGNsZWFuLXVwIGluIHRoZSAiYXBwc190aHJlYWQiIGFsbG93cyB0aGUKY2xl YW4tdXAgKHRoYXQgeW91IGFkZGVkKSB0byBvY2N1ciBpbiB0aGUgImFwcHNfbm90aWZ5X3RocmVh ZCIKYXMgdGhlIGRhdGEgc3RydWN0dXJlcyAoc3VjaCBhcyB1c3RfYXBwX2h0KSBhcmUgc3RpbGwg aW4gcGxhY2UuCgpBcyBhIHJlc3VsdCBvZiB0aGUgImFwcHNfbm90aWZ5X3RocmVhZCIgY2xlYW4t dXAsIHRoZSBub3RpZnkKc29ja2V0cyB3b3VsZCBldmVudHVhbGx5IGJlIGNsb3NlZCBieSB0aHJv dWdoIHRoZSBjYWxsX3JjdSgpJ3MKZHVyaW5nIHRoZSBuZXh0IGdyYWNlIHBlcmlvZC4gVGhpcyB3 aWxsIHRoZW4gdW5ibG9jayB0aGUKYXBwbGljYXRpb25zIHRoYXQgYXJlIHN0dWNrIHdhaXRpbmcg b24gdGhlaXIgbm90aWZ5IHNvY2tldC4KCldvdWxkIHRoYXQgc29sdmUgdGhlIHByb2JsZW0gb3Ig YW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KCkrDqXLDqW1pZQoKWzFdIGh0dHBzOi8vZ2l0aHViLmNv bS9sdHRuZy9sdHRuZy10b29scy9ibG9iL21hc3Rlci9zcmMvYmluL2x0dG5nLXNlc3Npb25kL21h aW4uYyNMMjAwNQpbMl0gaHR0cHM6Ly9naXRodWIuY29tL2x0dG5nL2x0dG5nLXRvb2xzL2Jsb2Iv bWFzdGVyL3NyYy9iaW4vbHR0bmctc2Vzc2lvbmQvbWFpbi5jI0wxNzQ5ClszXSBodHRwczovL2dp dGh1Yi5jb20vbHR0bmcvbHR0bmctdG9vbHMvYmxvYi9tYXN0ZXIvc3JjL2Jpbi9sdHRuZy1zZXNz aW9uZC9tYWluLmMjTDE0NTAKWzRdIGh0dHBzOi8vZ2l0aHViLmNvbS9sdHRuZy9sdHRuZy10b29s cy9ibG9iL21hc3Rlci9zcmMvYmluL2x0dG5nLXNlc3Npb25kL3VzdC10aHJlYWQuYyNMMzMKCgo+ IENvdWxkIHdlIHNpbXBseSBub3QgcmVtb3ZlIGl0IG9uIGEgdXN0X2FwcF91bnJlZ2lzdGVyPyBB bmQgYWx3YXlzIGRlZmVyCj4gdG8gdGhlIGFwcHNfbm90aWZ5X3RocmVhZCBmb3IgY2xlYW51cD8K Pgo+IFVwZGF0ZSB0aGUgdmFsdWUgaW4gdGhlIGhhc2ggdGFibGUgdG8gLTEgYW5kIGVtaXQgYSBj bG9zZSBhbmQgcmVtb3ZlCj4gZnJvbSB0aGUgaGFzaCB0YWJsZSBpZiB0aGUgdmFsdWUgaXMgLTE/ Cj4KPiBXZSBjb3VsZCBhbHNvIGtlZXAgYSBsb2NhbCBsaXN0IG9mIGZkIGluIGFwcHNfbm90aWZ5 X3RocmVhZCBhbmQgdXNlIGl0IGZvcgo+IGNsZWFudXAgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHVz dF91c3RfYXBwX2J5X25vdGlmeV9zb2NrLgo+Cj4gSSdtIG5vdCBzdXJlIHdoYXQgaXMgdGhlIGJl c3QvZWxlZ2FudCBzb2x1dGlvbiBoZXJlLiBJIGFtIG5vdCBhIGZhbiBvZgo+IHRoZSBjdXJyZW50 IHNvbHV0aW9uIGJ1dCBpdCB3b3JraW5nLgo+Cj4gT2J2aW91c2x5IHRoaXMgY29tbWl0IHdpbGwg YmUgcmV3b3JkZWQgYW5kIG1vZGlmaWVkIGFjY29yZGluZ2x5Lgo+Cj4gU2lnbmVkLW9mZi1ieTog Sm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgo+ IC0tLQo+ICBzcmMvYmluL2x0dG5nLXNlc3Npb25kL21haW4uYyB8IDU1ICsrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMxIGluc2Vy dGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3NyYy9iaW4vbHR0bmct c2Vzc2lvbmQvbWFpbi5jIGIvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9tYWluLmMKPiBpbmRleCA0 YTJhNjYxZi4uMjE2ZDBkYTYgMTAwNjQ0Cj4gLS0tIGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9t YWluLmMKPiArKysgYi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL21haW4uYwo+IEBAIC02MjA5LDE2 ICs2MjA5LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAgICAgICAgfQo+ ICAgICAgICAgbm90aWZpY2F0aW9uX3RocmVhZF9ydW5uaW5nID0gdHJ1ZTsKPgo+IC0gICAgICAg LyogQ3JlYXRlIHRocmVhZCB0byBtYW5hZ2UgYXBwbGljYXRpb24gbm90aWZ5IHNvY2tldCAqLwo+ IC0gICAgICAgcmV0ID0gcHRocmVhZF9jcmVhdGUoJmFwcHNfbm90aWZ5X3RocmVhZCwgZGVmYXVs dF9wdGhyZWFkX2F0dHIoKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICB1c3RfdGhyZWFkX21h bmFnZV9ub3RpZnksICh2b2lkICopIE5VTEwpOwo+IC0gICAgICAgaWYgKHJldCkgewo+IC0gICAg ICAgICAgICAgICBlcnJubyA9IHJldDsKPiAtICAgICAgICAgICAgICAgUEVSUk9SKCJwdGhyZWFk X2NyZWF0ZSBub3RpZnkiKTsKPiAtICAgICAgICAgICAgICAgcmV0dmFsID0gLTE7Cj4gLSAgICAg ICAgICAgICAgIHN0b3BfdGhyZWFkcygpOwo+IC0gICAgICAgICAgICAgICBnb3RvIGV4aXRfYXBw c19ub3RpZnk7Cj4gLSAgICAgICB9Cj4KPiAgICAgICAgIC8qIENyZWF0ZSB0aHJlYWQgdG8gbWFu YWdlIGFwcGxpY2F0aW9uIHNvY2tldCAqLwo+ICAgICAgICAgcmV0ID0gcHRocmVhZF9jcmVhdGUo JmFwcHNfdGhyZWFkLCBkZWZhdWx0X3B0aHJlYWRfYXR0cigpLAo+IEBAIC02MjMxLDYgKzYyMjEs MTcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAgICAgICAgICAgICAgICBn b3RvIGV4aXRfYXBwczsKPiAgICAgICAgIH0KPgo+ICsgICAgICAgLyogQ3JlYXRlIHRocmVhZCB0 byBtYW5hZ2UgYXBwbGljYXRpb24gbm90aWZ5IHNvY2tldCAqLwo+ICsgICAgICAgcmV0ID0gcHRo cmVhZF9jcmVhdGUoJmFwcHNfbm90aWZ5X3RocmVhZCwgZGVmYXVsdF9wdGhyZWFkX2F0dHIoKSwK PiArICAgICAgICAgICAgICAgICAgICAgICB1c3RfdGhyZWFkX21hbmFnZV9ub3RpZnksICh2b2lk ICopIE5VTEwpOwo+ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBlcnJubyA9 IHJldDsKPiArICAgICAgICAgICAgICAgUEVSUk9SKCJwdGhyZWFkX2NyZWF0ZSBub3RpZnkiKTsK PiArICAgICAgICAgICAgICAgcmV0dmFsID0gLTE7Cj4gKyAgICAgICAgICAgICAgIHN0b3BfdGhy ZWFkcygpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGV4aXRfYXBwc19ub3RpZnk7Cj4gKyAgICAg ICB9Cj4gKwo+ICAgICAgICAgLyogQ3JlYXRlIHRocmVhZCB0byBkaXNwYXRjaCByZWdpc3RyYXRp b24gKi8KPiAgICAgICAgIHJldCA9IHB0aHJlYWRfY3JlYXRlKCZkaXNwYXRjaF90aHJlYWQsIGRl ZmF1bHRfcHRocmVhZF9hdHRyKCksCj4gICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2Rp c3BhdGNoX3VzdF9yZWdpc3RyYXRpb24sICh2b2lkICopIE5VTEwpOwo+IEBAIC02MzU4LDIwICs2 MzU5LDYgQEAgZXhpdF9yZWdfYXBwczoKPiAgICAgICAgIH0KPgo+ICBleGl0X2Rpc3BhdGNoOgo+ IC0gICAgICAgLyogSW5zdHJ1Y3QgdGhlIGFwcHMgdGhyZWFkIHRvIHF1aXQgKi8KPiAtICAgICAg IHJldCA9IG5vdGlmeV90aHJlYWRfcGlwZSh0aHJlYWRfYXBwc190ZWFyZG93bl90cmlnZ2VyX3Bp cGVbMV0pOwo+IC0gICAgICAgaWYgKHJldCA8IDApIHsKPiAtICAgICAgICAgICAgICAgRVJSKCJ3 cml0ZSBlcnJvciBvbiB0aHJlYWQgcXVpdCBwaXBlIik7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAg ICAgcmV0ID0gcHRocmVhZF9qb2luKGFwcHNfdGhyZWFkLCAmc3RhdHVzKTsKPiAtICAgICAgIGlm IChyZXQpIHsKPiAtICAgICAgICAgICAgICAgZXJybm8gPSByZXQ7Cj4gLSAgICAgICAgICAgICAg IFBFUlJPUigicHRocmVhZF9qb2luIGFwcHMiKTsKPiAtICAgICAgICAgICAgICAgcmV0dmFsID0g LTE7Cj4gLSAgICAgICB9Cj4gLQo+IC1leGl0X2FwcHM6Cj4gICAgICAgICAvKiBJbnN0cnVjdCB0 aGUgYXBwc19ub3RpZnkgdGhyZWFkIHRvIHF1aXQgKi8KPiAgICAgICAgIHJldCA9IG5vdGlmeV90 aHJlYWRfcGlwZSh0aHJlYWRfYXBwc19ub3RpZnlfdGVhcmRvd25fdHJpZ2dlcl9waXBlWzFdKTsK PiAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gQEAgLTYzODYsNiArNjM3MywyNiBAQCBleGl0X2Fw cHM6Cj4gICAgICAgICB9Cj4KPiAgZXhpdF9hcHBzX25vdGlmeToKPiArICAgICAgIC8qCj4gKyAg ICAgICAgKiBUaGUgYmFycmllciBlbnN1cmUgdGhhdCBhbGwgcHJldmlvdXMgcmVzb3VyY2VzLCBu b3RpZnkgc29ja2V0cyBpbgo+ICsgICAgICAgICogcGFydGljdWxhciwgYXJlIGZyZWVkL2Nsb3Nl ZC4KPiArICAgICAgICAqLwo+ICsgICAgICAgcmN1X2JhcnJpZXIoKTsKPiArCj4gKyAgICAgICAv KiBJbnN0cnVjdCB0aGUgYXBwcyB0aHJlYWQgdG8gcXVpdCAqLwo+ICsgICAgICAgcmV0ID0gbm90 aWZ5X3RocmVhZF9waXBlKHRocmVhZF9hcHBzX3RlYXJkb3duX3RyaWdnZXJfcGlwZVsxXSk7Cj4g KyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBFUlIoIndyaXRlIGVycm9y IG9uIHRocmVhZCBxdWl0IHBpcGUiKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBw dGhyZWFkX2pvaW4oYXBwc190aHJlYWQsICZzdGF0dXMpOwo+ICsgICAgICAgaWYgKHJldCkgewo+ ICsgICAgICAgICAgICAgICBlcnJubyA9IHJldDsKPiArICAgICAgICAgICAgICAgUEVSUk9SKCJw dGhyZWFkX2pvaW4gYXBwcyIpOwo+ICsgICAgICAgICAgICAgICByZXR2YWwgPSAtMTsKPiArICAg ICAgIH0KPiArCj4gK2V4aXRfYXBwczoKPiAgZXhpdF9ub3RpZmljYXRpb246Cj4gIGV4aXRfaGVh bHRoOgo+ICBleGl0X2luaXRfZGF0YToKPiAtLQo+IDIuMTEuMAo+CgoKCi0tIApKw6lyw6ltaWUg R2FsYXJuZWF1CkVmZmljaU9TIEluYy4KaHR0cDovL3d3dy5lZmZpY2lvcy5jb20KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbHR0bmctZGV2IG1haWxpbmcg bGlzdApsdHRuZy1kZXZAbGlzdHMubHR0bmcub3JnCmh0dHBzOi8vbGlzdHMubHR0bmcub3JnL2Nn aS1iaW4vbWFpbG1hbi9saXN0aW5mby9sdHRuZy1kZXYK