From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [Xen-devel][PATCH 0/2] sndif: add explicit back and front synchronization Date: Tue, 6 Mar 2018 16:48:53 +0200 Message-ID: <18f6eced-a932-ad82-0097-e18ac1a562ae@gmail.com> References: <1517819100-1029-1-git-send-email-andr2000@gmail.com> <1531a22b-5df6-a66e-72ee-775538aeff4d@gmail.com> <621aaaa9-5994-176c-b243-c2fc9823a699@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-f65.google.com (mail-lf0-f65.google.com [209.85.215.65]) by alsa0.perex.cz (Postfix) with ESMTP id 6D34626709D for ; Tue, 6 Mar 2018 15:48:56 +0100 (CET) Received: by mail-lf0-f65.google.com with SMTP id y19so28885805lfd.4 for ; Tue, 06 Mar 2018 06:48:56 -0800 (PST) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Takashi Iwai Cc: xen-devel@lists.xenproject.org, alsa-devel@alsa-project.org, Oleksandr Andrushchenko List-Id: alsa-devel@alsa-project.org T24gMDMvMDYvMjAxOCAwNDoyNyBQTSwgVGFrYXNoaSBJd2FpIHdyb3RlOgo+IE9uIFR1ZSwgMDYg TWFyIDIwMTggMTU6MTM6MTMgKzAxMDAsCj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6 Cj4+IE9uIDAzLzA2LzIwMTggMDM6NDggUE0sIFRha2FzaGkgSXdhaSB3cm90ZToKPj4+IE9uIFR1 ZSwgMDYgTWFyIDIwMTggMTQ6MzA6MDUgKzAxMDAsCj4+PiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5r byB3cm90ZToKPj4+PiBPbiAwMy8wNi8yMDE4IDAyOjUyIFBNLCBUYWthc2hpIEl3YWkgd3JvdGU6 Cj4+Pj4+IE9uIFR1ZSwgMDYgTWFyIDIwMTggMTM6MDU6MTYgKzAxMDAsCj4+Pj4+IE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+Pj4gT24gMDMvMDYvMjAxOCAwMTozMiBQTSwgVGFr YXNoaSBJd2FpIHdyb3RlOgo+Pj4+Pj4+IE9uIFR1ZSwgMDYgTWFyIDIwMTggMTI6MjU6MDcgKzAx MDAsCj4+Pj4+Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4+Pj4+IE9uIDAz LzA2LzIwMTggMTI6NTIgUE0sIFRha2FzaGkgSXdhaSB3cm90ZToKPj4+Pj4+Pj4+IE9uIE1vbiwg MDUgRmViIDIwMTggMDk6MjQ6NTggKzAxMDAsCj4+Pj4+Pj4+PiBPbGVrc2FuZHIgQW5kcnVzaGNo ZW5rbyB3cm90ZToKPj4+Pj4+Pj4+PiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xl a3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBIaSwg YWxsIQo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gRm9yZXdvcmQKPj4+Pj4+Pj4+PiA9PT09PT09PQo+ Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gVGhpcyBjaGFuZ2UgaXMgYWltZWQgdG8gYWRkIHN1cHBvcnQg Zm9yIGV4cGxpY2l0IGJhY2sgYW5kIGZyb250Cj4+Pj4+Pj4+Pj4gc3luY2hyb25pemF0aW9uIGR1 cmluZyBwbGF5YmFjayBhbmQgY2FwdHVyZSBpbiByZXNwb25zZSB0byBjb21tZW50cwo+Pj4+Pj4+ Pj4+IHJhaXNlZCBkdXJpbmcgdXBzdHJlYW0gYXR0ZW1wdCBvZiB0aGUgcGFyYS12aXJ0dWFsaXpl ZCBzb3VuZCBmcm9udGVuZAo+Pj4+Pj4+Pj4+IGRyaXZlciBmb3IgWGVuIFsxXSwgWzJdIGFuZCBn YXRoZXIgb3BpbmlvbnMgZnJvbSB0aGUgcmVsZXZhbnQgY29tbXVuaXRpZXMKPj4+Pj4+Pj4+PiAo QUxTQSwgWGVuKSBvbiB0aGUgY2hhbmdlLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gVGhlIHJlbGV2 YW50IGJhY2tlbmQgaXMgaW1wbGVtZW50ZWQgYXMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIFsz XQo+Pj4+Pj4+Pj4+IGFuZCB1c2VzIGFjY29tcGFueWluZyBoZWxwZXIgbGlicmFyeSBbNF0uCj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBCb3RoIGZyb250ZW5kIGRyaXZlciBhbmQgYmFja2VuZCB3ZXJl IHRlc3RlZCBvbiByZWFsIEhXIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IKPj4+Pj4+Pj4+PiAoUmVu ZXNhcyBSLUNhciBBUk0gYmFzZWQgSDMvTTMgYm9hcmRzLCB4ODYpIHRvIG1ha2Ugc3VyZSB0aGUg cHJvcG9zZWQKPj4+Pj4+Pj4+PiBzb2x1dGlvbiBkb2VzIHdvcmsuCj4+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+PiBSYXRpb25hbGUKPj4+Pj4+Pj4+PiA9PT09PT09PT0KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ IER1cmluZyB0aGUgZmlyc3QgYXR0ZW1wdCB0byB1cHN0cmVhbSB0aGUgTGludXggZnJvbnQgZHJp dmVyIFs1XSBudW1iZXIKPj4+Pj4+Pj4+PiBvZiBjb21tZW50cyBhbmQgY29uY2VybnMgd2VyZSBy YWlzZWQsIG9uZSBvZiB0aGUgYmlnZ2VzdCBmbGF3cyBpbiB0aGUKPj4+Pj4+Pj4+PiBkZXNpZ24g d2VyZSBxdWVzdGlvbmVkIGJ5IGJvdGggQ2xlbWVucyBMYWRpc2NoIFs2XSBhbmQKPj4+Pj4+Pj4+ PiBUYWthc2hpIFNha2Ftb3RvIFs3XTogdGhlIGFic2VuY2Ugb2Ygc3luY2hyb25pemF0aW9uIGJl dHdlZW4gZnJvbnRlbmQKPj4+Pj4+Pj4+PiBhbmQgYmFja2VuZCBkdXJpbmcgY2FwdHVyZS9wbGF5 YmFjay4gVHdvIG9wdGlvbnMgd2VyZSBkaXNjdXNzZWQ6Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiDi gJxJbiBkZXNpZ24gb2YgQUxTQSBQQ00gY29yZSwgZHJpdmVycyBhcmUgZXhwZWN0ZWQgdG8gc3lu Y2hyb25pemUgdG8KPj4+Pj4+Pj4+PiBhY3R1YWwgaGFyZHdhcmVzIGZvciBzZW1pLXJlYWx0aW1l IGRhdGEgdHJhbnNtaXNzaW9uLiBUaGUKPj4+Pj4+Pj4+PiBzeW5jaHJvbml6YXRpb24gaXMgZG9u ZSBieSB0d28gcG9pbnRzOgo+Pj4+Pj4+Pj4+IDEpIEludGVycnVwdHMgdG8gcmVzcG9uZCBldmVu dHMgZnJvbSBhY3R1YWwgaGFyZHdhcmVzLgo+Pj4+Pj4+Pj4+IDIpIFBvc2l0aW9ucyBvZiBhY3R1 YWwgZGF0YSB0cmFuc21pc3Npb24gaW4gYW55IHNlcmlhbCBzb3VuZCBpbnRlcmZhY2VzCj4+Pj4+ Pj4+Pj4gICAgICAgICAgb2YgYWN0dWFsIGhhcmR3YXJlcy4KPj4+Pj4+Pj4+PiDigJwKPj4+Pj4+ Pj4+Pgo+Pj4+Pj4+Pj4+IGFuZCBmaW5hbGx5IGEgY2hhbmdlIHRvIHRoZSBleGlzdGluZyBwcm90 b2NvbCB3YXMgc3VnZ2VzdGVkOgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4g4oCcSW4gJ2luY2x1ZGUv eGVuL2ludGVyZmFjZS9pby9zbmRpZi5oJywgdGhlcmUncyBubyBmdW5jdGlvbmFsaXRpZXMgSQo+ Pj4+Pj4+Pj4+IGRlc2NyaWJlZCB0aGUgYWJvdmU6Cj4+Pj4+Pj4+Pj4gMS4gbm90aWZpY2F0aW9u cyBmcm9tIERvbVUgdG8gRG9tMCBhYm91dCB0aGUgc2l6ZSBvZiBwZXJpb2QgZm9yCj4+Pj4+Pj4+ Pj4gICAgICAgICAgaW50ZXJydXB0cyBmcm9tIGFjdHVhbCBoYXJkd2FyZXMuIE9yIG5vIHdheSBm cm9tIERvbTAgdG8gRG9tVSBhYm91dAo+Pj4+Pj4+Pj4+ICAgICAgICAgIHRoZSBjb25maWd1cmVk IHNpemUgb2YgdGhlIHBlcmlvZC4KPj4+Pj4+Pj4+PiAyLiBub3RpZmljYXRpb25zIG9mIHRoZSBp bnRlcnJ1cHRzIGZyb20gYWN0dWFsIGhhcmR3YXJlcyB0byBEb21VLuKAnQo+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4gVGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIGNoYW5nZSB0byB0aGUgc25kaWYgcHJv dG9jb2wgYW5kIGFsbG93cyByZW1vdmluZwo+Pj4+Pj4+Pj4+IHBlcmlvZCBlbXVsYXRpb246Cj4+ Pj4+Pj4+Pj4gMS4gSW50cm9kdWNlZCBhIG5ldyBldmVudCBjaGFubmVsIGZyb20gYmFjayB0byBm cm9udAo+Pj4+Pj4+Pj4+IDIuIE5ldyBldmVudCB3aXRoIG51bWJlciBvZiBieXRlcyBwbGF5ZWQv Y2FwdHVyZWQgKFhFTlNORF9FVlRfQ1VSX1BPUywKPj4+Pj4+Pj4+PiAgICAgICAgIHRvIGJlIHVz ZWQgZm9yIHNlbmRpbmcgc25kX3BjbV9wZXJpb2RfZWxhcHNlZCBhdCBmcm9udGVuZCAoaW4gTGlu dXgKPj4+Pj4+Pj4+PiAgICAgICAgIGltcGxlbWVudGF0aW9uKS4gU2VudCBpbiBieXRlcywgbm90 IGZyYW1lcyB0byBtYWtlIHRoZSBwcm90b2NvbAo+Pj4+Pj4+Pj4+ICAgICAgICAgZ2VuZXJpYyBh bmQgY29uc2lzdGVudCkKPj4+Pj4+Pj4+PiAzLiBOZXcgcmVxdWVzdCBmb3IgcGxheWJhY2svY2Fw dHVyZSBjb250cm9sIChYRU5TTkRfT1BfVFJJR0dFUikgd2l0aAo+Pj4+Pj4+Pj4+ICAgICAgICAg c3RhcnQvcGF1c2Uvc3RvcC9yZXN1bWUgc3ViLW9wcwo+Pj4+Pj4+Pj4+IDQuIFBsYXliYWNrL2Nh cHR1cmUgYnVmZmVyIHNpemUgaXMgc2V0IG9uIHRoZSBiYWNrZW5kIHNpZGUgdmlhCj4+Pj4+Pj4+ Pj4gICAgICAgICBYRU5TTkRfRklFTERfQlVGRkVSX1NJWkUgWGVuU3RvcmUgZW50cnkKPj4+Pj4+ Pj4+IFNvIHRoZSBuZXcgYWRkaXRpb24gbG9va3Mgc2VydmluZyB3ZWxsIGZvciB0aGUgcG9pbnQg dGhhdCB3YXMKPj4+Pj4+Pj4+IHN1Z2dlc3RlZCBpbiB0aGUgcHJldmlvdXMgdGhyZWFkLiAgQXMg SSBzZWUgbm8gZnJvbnRlbmQgZHJpdmVyCj4+Pj4+Pj4+PiBpbXBsZW1lbnRhdGlvbiwgaXQncyBo YXJkIHRvIHRlbGwgYWJvdXQgdGhlIGRldGFpbHMsIGJ1dCB0aHJvdWdoIGEKPj4+Pj4+Pj4+IHF1 aWNrIGdsYW5jZSwgdGhlIHByb3RvY29sIHNob3VsZCBiZSBPSy4KPj4+Pj4+Pj4gVGhhbmsgeW91 LCB0aGUgZHJpdmVyIGlzIGF0IFsxXQo+Pj4+Pj4+Pj4gTm93LCBnb2luZyBiYWNrIHRvIGEgYmln IHBpY3R1cmU6IEkgdG9vayBhIGxvb2sgYXQgdGhlIHByZXZpb3VzCj4+Pj4+Pj4+PiBwYXRjaHNl dCwgYW5kIHdvbmRlciB3aGF0IGFib3V0IHRoZSBod19wYXJhbXMgc2V0dXAuICBCYXNpY2FsbHkg dGhlCj4+Pj4+Pj4+PiAoZnJvbnRlbmQpIGFwcGxpY2F0aW9uIG1heSByZXF1ZXN0IGFueSBzaXpl IG9mIGJ1ZmZlciBhbmQgcGVyaW9kcwo+Pj4+Pj4+Pj4gdW5sZXNzIHRoZSBkcml2ZXIgc2V0cyB1 cCB0aGUgaHcgY29uc3RyYWludHMgYXQgb3BlbiBjYWxsYmFjay4gIFRoYXQKPj4+Pj4+Pj4+IGlz LCBhcHAgbWF5IHJlcXVlc3QgZXZlbiB0aGUgMTYgYnl0ZXMgb2YgYnVmZmVyIHNpemUsIG9yIDFH QiBvZgo+Pj4+Pj4+Pj4gYnVmZmVyLiAgVGhlIHBlcmlvZHMgYXJlbid0IGFsd2F5cyBpbnRlZ2Vy LCBzbyBpdCBjYW4gYmUgMTAyNCBieXRlcyBvZgo+Pj4+Pj4+Pj4gYnVmZmVyIHdpdGggNDAwIGJ5 dGVzIG9mIHBlcmlvZHMuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gQW5kLCBpZiBzdWNoIHBhcmFtZXRl cnMgYXJlIHNldCB1cCBmcmVlbHkgaW4gdGhlIGZyb250ZW5kIHNpZGUsIGhvdwo+Pj4+Pj4+Pj4g dGhlIGJhY2tlbmQgaXMgc3VwcG9zZWQgdG8gYmVoYXZlPyAgRnJvbSB0aGUgZnJvbnRlbmQgUE9W LCBpdCBleHBlY3RzCj4+Pj4+Pj4+PiByZWNlaXZpbmcgdGhlIHdha2V1cC9ub3RpZmljYXRpb24g YXQgZWFjaCBwZXJpb2QgcHJvY2Vzc2luZyAoZS5nLiA0MDAKPj4+Pj4+Pj4+IGJ5dGVzIGluIHRo ZSBjYXNlIGFib3ZlKS4gIEJ1dCwgdGhlIGJhY2tlbmQgaXMgYW5vdGhlciBhcHBsaWNhdGlvbiwg c28KPj4+Pj4+Pj4+IGhvdyB3b3VsZCBpdCB3b3JrIGZvciBzdWNoIHJlcXVpcmVtZW50cz8gIEFt IEkgbWlzc2luZyBzb21ldGhpbmcgaGVyZT8KPj4+Pj4+Pj4gV2VsbCwgdGhlIGZyb250ZW5kIGlz IG5vdCB0aGF0IGZyZWUgdG8gZGVjaWRlIGFzIGl0IG1pZ2h0IGxvb2sgbGlrZSwKPj4+Pj4+Pj4g ZS5nLiBwbGVhc2Ugc2VlIFsyXS4gQmFzaWNhbGx5IHBhcnQgb2YgaHdfcGFyYW1zIGNvbmZpZ3Vy YXRpb24gaXMgd3JpdHRlbgo+Pj4+Pj4+PiB0byBYZW5TdG9yZSBbM10gYXMgYSBwYXJ0IG9mIGRv bWFpbiBjb25maWd1cmF0aW9uIHdoaWNoIGRlcGVuZHMgb24KPj4+Pj4+Pj4gc3lzdGVtL2JhY2tl bmQKPj4+Pj4+Pj4gY2FwYWJpbGl0aWVzLiBFLmcuLCB3ZSB1c3VhbGx5IHNldCBidWZmZXIgc2l6 ZXMgdG8gbWF0Y2ggcmVhbCBIVyBhdAo+Pj4+Pj4+PiBiYWNrZW5kIHNpZGUKPj4+Pj4+Pj4gaWYg d2UgdXNlIEFMU0EgYW5kIHdlIGhhdmUgbW9yZSBmcmVlZG9tIGlmIHdlIHVzZSBQdWxzZUF1ZGlv IHRoZXJlLgo+Pj4+Pj4+PiBGaW5hbGx5LCBpZiBiYWNrZW5kIGRlY2lkZXMgdGhhdCB0aGUgcmVx dWVzdGVkIGJ1ZmZlci9wZXJpb2Qgc2l6ZXMgYXJlCj4+Pj4+Pj4+IG5vdCBhY2NlcHRhYmxlIGl0 IHdpbGwgcmVqZWN0IHN1Y2ggYSBjb25maWd1cmF0aW9uLgo+Pj4+Pj4+IE9LLCB0aGF0IHJlc3Ry aWN0cyBtaW5pbWFsbHkuICBTbyBhdCBsZWFzdCB0aGVyZSBpcyB0aGUgcmVzdHJpY3Rpb24gLwo+ Pj4+Pj4+IGNvbW11bmljYXRpb24gYWJvdXQgdGhlIGJ1ZmZlciBzaXplLiAgQnV0IGl0IG1lcmVs eSBtZWFucyB0aGUKPj4+Pj4+PiAqbWF4aW11bSogYnVmZmVyIHNpemUgaXMgc2V0LiAgQXBwbGlj YXRpb24gbWF5IHJlcXVlc3Qgc3RpbGwgYW55Cj4+Pj4+Pj4gc2hvcnRlciB2YWx1ZSB0aGFuIHRo YXQuCj4+Pj4+Pj4KPj4+Pj4+PiBBbmQsIHRoZXJlIGFyZSBubyByZXN0cmljdGlvbiBhYm91dCBw ZXJpb2Qgc2l6ZXMgKGV4Y2VwdCBmb3IgdGhlCj4+Pj4+Pj4gcGVyaW9kc19tYXgsIHdoaWNoIGlz IGNhbGN1bGF0ZWQgZnJvbSBidWZmZXJfYnl0ZXNfbWF4KS4KPj4+Pj4+PiBUaGF0IGlzLCBhcHBs aWNhdGlvbiBtYXkgcmVxdWVzdCBhbnkgc2l6ZSBiZXR3ZWVuIHRoZW07IGFuZCBpdCBleHBlY3Rz Cj4+Pj4+Pj4gdGhlIHdha2UgdXAgYnkgdGhpcyB2YWx1ZS4KPj4+Pj4+Pgo+Pj4+Pj4+IEkgdGhp bmsgdGhhdCdzIGEgc3RpbGwgbWlzc2luZyBzdG9uZSBpbiB0aGUgZGVzaWduLgo+Pj4+Pj4gV2Vs bCwgc28gd2hhdCB3b3VsZCBhIHJlYWwgSFcgZHJpdmVyIGRvIGluIHRoYXQgY2FzZT8KPj4+Pj4+ IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpbiB0aGlzIGNhc2UgU1cgY2FuIHN0aWxsIHJlcXVl c3QKPj4+Pj4+IHNvbWV0aGluZyB0aGF0IEhXIGNhbid0IGRvIGFuZCBkcml2ZXIgd2lsbCByZWpl Y3Qgc3VjaCBjb25maWd1cmF0aW9ucy4KPj4+Pj4+IEluIG15IGNhc2UsIHRoZSByb2xlIG9mIHRo YXQgSFcgZHJpdmVyIGNvZGUgd2hpY2gganVkZ2VzIG9uIGlmIGNvbmZpZ3VyYXRpb24KPj4+Pj4+ IGlzIGFjY2VwdGFibGUganVzdCBydW5zIG9uIHRoZSBiYWNrZW5kIHNpZGUsIGUuZy4gZnJvbnRl bmQgZHJpdmVyIGlzIGp1c3QKPj4+Pj4+IGEgcHJveHkgd2hpY2ggdGFsa3MgdG8gdGhlIGJhY2tl bmQgdG8gY2hlY2sgaWYgdGhlIGJhY2tlbmQgY2FuIGRvIHdoYXQKPj4+Pj4+IHJlcXVlc3RlZC4K Pj4+Pj4+IEFuZCBpdCBpcyB1cCB0byBiYWNrZW5kIHRvIGRlY2lkZS4KPj4+Pj4+Cj4+Pj4+PiBE b2VzIHRoYXQgc291bmQgcmVhc29uYWJsZSBvciB5b3UgaGF2ZSBzb21ldGhpbmcgZWxzZSBvbiB5 b3VyIG1pbmQ/Cj4+Pj4+IFVzdWFsbHkgdGhlIGhhcmR3YXJlIGRyaXZlciBrbm93cyBhbHJlYWR5 IHRoZSByZXN0cmljdGlvbnMgYW5kIHNldHMgdXAKPj4+Pj4gdGhlIHJ1bGVzIHZpYSBodyBjb25z dHJhaW50cyBhdCBvcGVuIGNhbGxiYWNrLiAgVGhlcmUgYXJlIGxvdHMgb2YKPj4+Pj4gc25kX3Bj bV9od19jb25zdHJhaW50XyooKSBoZWxwZXJzIChhbmQgdGhlIHJlbGV2YW50IG9uZXMpIHRvIGdp dmUgbW9yZQo+Pj4+PiBhZGRpdGlvbmFsIHJ1bGVzIGZvciB0aGUgcGFyYW1ldGVyIHJlc3RyaWN0 aW9ucy4gIEZvciBleGFtcGxlLCBpZiB0aGUKPj4+Pj4gcGVyaW9kcyBtdXN0IGJlIGFsaWduZWQg d2l0aCB0aGUgYnVmZmVyIHNpemUgKGkuZS4gYnVmZmVyX3NpemUgJQo+Pj4+PiBwZXJpb2Rfc2l6 ZSA9PSAwKSBhcyBvbiBtYW55IGRldmljZXMsIHlvdSBjYW4gY2FsbCBsaWtlOgo+Pj4+PiAgICAg IHNuZF9wY21faHdfY29uc3RyYWludF9pbnRlZ2VyKHN1YnN0cmVhbS0+cnVudGltZSwKPj4+Pj4g CVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTKTsKPj4+Pj4gaW4gdGhlIG9wZW4gY2FsbGJhY2su Cj4+Pj4gWW91IGFyZSByaWdodCwgSSBzYXcgdGhvc2UgaW4gb3RoZXIgZHJpdmVycwo+Pj4+PiBB bmQsIG5vdyBhbiBvcGVuIHF1ZXN0aW9uIGZvciBYRU4gY29tZXM6IHdoYXQga2luZCBvZiByZXN0 cmljdGlvbgo+Pj4+PiBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgZnJvbnRlbmQuICBPYnZpb3Vz bHkgaXQgZGVwZW5kcyBvbiB0aGUKPj4+Pj4gYmFja2VuZCwgc28gdGhlcmUgbXVzdCBiZSBzb21l IGNvbW11bmljYXRpb24sIGFuZCB0aGUgcmVzdHJpY3Rpb24gbXVzdAo+Pj4+PiBiZSBwcm9wYWdh dGVkIGF0IG9wZW4sIGkuZS4gKmJlZm9yZSogYWN0dWFsbHkgaHdfcGFyYW1zIGlzIHBlcmZvcm1l ZC4KPj4+PiBDb3VsZCB5b3UgcGxlYXNlIGdpdmUgbWUgYSBoaW50IG9mIHdoYXQgdGhvc2UgcmVz dHJpY3Rpb25zCj4+Pj4gY291bGQgbG9vayBsaWtlPyBFLmcuIG1hcCBvZiBzdXBwb3J0ZWQgYnVm ZmVyL3BlcmlvZCBzaXplcywgd2hhdCBlbHNlPwo+Pj4gSGVoLCB0aGF0IHZlcnkgbXVjaCBkZXBl bmRzIG9uIHRoZSBoYXJkd2FyZSAtLSBhbmQgaW4gdGhpcyBjYXNlLCBvbgo+Pj4gdGhlIGltcGxl bWVudGF0aW9uIG9mIHRoZSBiYWNrZW5kLgo+PiBUaGF0IGlzIGNvcnJlY3QsIGJ1dCB3ZSB0cnkg dG8gYmUgYmFja2VuZCBhZ25vc3RpYywgdGhvdWdoCj4+PiBQcmFjdGljYWxseSBzZWVuLCB0aGUg YnVmZmVyIGFuZCB0aGUgcGVyaW9kIHNpemUgc2V0dXBzIGFyZSBtYW5kYXRvcnksCj4+PiB5ZXMu ICBIZXJlIGlzIHRoZSBxdWVzdGlvbiB3aGV0aGVyIHlvdSB3YW50IHRvIGxpbWl0IHRoZW0gYnkg bGlzdAo+Pj4gKGUuZy4gcmVhZCB2aWEgc29tZSBYRU5TTkRfKiBwcm90b2NvbCksIG9yIG5lZ290 aWF0ZSB0aGUgc2l6ZSBhdCBlYWNoCj4+PiBod19wYXJhbXMgc2V0dXAgKGUuZy4gZ2V0dGluZyBv bmx5IG1pbi9tYXggYXQgb3BlbiwgYW5kIGF0IGVhY2gKPj4+IGh3X3BhcmFtcyBjYWxsLCBuZWdv dGlhdGUgd2l0aCB0aGUgYmFja2VuZCBmb3IgcGVyaW9kIGFuZCBidWZmZXIgc2l6ZQo+Pj4gY2hh bmdlcykuCj4+IFRoZSBwcm9ibGVtIEkgc2VlIGhlcmUgaXMgdGhhdCBhdCAub3BlbiByZWFsIEhX IGRyaXZlcgo+PiBhbHJlYWR5IGtub3dzIGl0cyBjb25zdHJhaW50cyBhbmQgY2FuIHByb3Blcmx5 IHNldHVwLgo+PiBTbywgaW4gb3VyIGNhc2UgYXQgb3BlbiB3ZSBzaG91bGQgYWxyZWFkeSBoYXZl IGFsbCB0aGUKPj4gY29uc3RyYWludHMgYXZhaWxhYmxlIHRvIHRoZSBmcm9udGVuZCBhcyB3ZWxs Lgo+PiBUaGF0IHdpbGwgbGVhZCB0byBsb3RzIG9mIHRleHQgaW4gZG9tYWluIGNvbmZpZ3VyYXRp b24gZmlsZQo+PiBpZiBwcm9wYWdhdGVkIHZpYSBYZW5TdG9yZSAoZS5nLiB5b3UgaGF2ZSB0byBw dXQgYWxsIHBvc3NpYmxlCj4+IGNvbWJpbmF0aW9ucyBvZiBidWZmZXJzL3BlcmlvZHMgZGVwZW5k aW5nIG9uIG51bWJlciBvZgo+PiBjaGFubmVscywgc2FtcGxlIHJhdGVzIGV0Yy4sIHlvdSBjYW5u b3QgdXNlIGxvZ2ljIGhlcmUgYXMgeW91IGNhbgo+PiBpbiBhIHJlYWwgSFcgZHJpdmVyLCBvbmx5 IHZhbHVlcykuIFNvLCBzdWNoIGNvbmZpZ3VyYXRpb24gZG9lc24ndAo+PiBzZWVtIHRvIGJlIGFu IG9wdGlvbiBoZXJlLgo+IEl0IGRlcGVuZHMuICBJZiB3ZSBkbyBsaW1pdCB0aGUgY29uZmlndXJh dGlvbiBpbnRlbnRpb25hbGx5IHRvIG9ubHkKPiBzb21lIHN1YnNldHMgdGhhdCBzaG91bGQgc3Vm ZmljZSBmb3IgbW9zdCB1c2UgY2FzZXMsIHRoZW4gdGhlIGxpc3QKPiB3b3VsZCBiZSByZWxhdGl2 ZWx5IHNob3J0LgpPaywgaWYgd2UgZ28gd2l0aCBhIGxpbWl0ZWQgc2V0IG9mIHN1cHBvcnRlZCBi dWZmZXIvcGVyaW9kCnNpemVzIChhbmQgbnVtYmVyIG9mIGNoYW5uZWxzPyksIHdoYXQgY291bGQg YSBjb25zdHJhaW50IGVudHJ5Cmxvb2sgbGlrZT8gRS5nLiBbYnVmZmVyLCBwZXJpb2QsIG51bV9j aGFubmVscywgeHh4XQpXaGF0IGlzIHRoYXQgeHh4IGluIHF1ZXN0aW9uPyBTYW1wbGUgcmF0ZSwg c2FtcGxlIGZvcm1hdCwKYW55dGhpbmcgZWxzZT8gT3IgW2J1ZmZlciwgcGVyaW9kLCBudW1fY2hh bm5lbHMsIHJhdGUsIGZvcm1hdF0KaXMgZW5vdWdoPwpJIGFtIHN0aWxsIHRoaW5raW5nIG9uIGhh dmluZyB0aGUgYWJvdmUgc2VudCBhdCBydW4tdGltZSB3aXRoCmEgbmV3IHByb3RvY29sIGNvbW1h bmQsIHdoaWNoIEkgd2lsbCBjYWxsIG9uIC5vcGVuLCBzbyBJIGNhbgphcHBseSB0aGUgY29uc3Ry YWludHMgd2hlcmUgbW9zdCBvZiB0aGUgZHJpdmVycyBkby4KVGhpcyB3YXkgYmFja2VuZCBjYW4g YWxzbyBkZXRlcm1pbmUgaXRzIGNhcGFiaWxpdGllcyBhdCBydW4tdGltZQphbmQgcmVwb3J0IHRo b3NlIHRvIHRoZSBmcm9udGVuZCwgYXMgYSBib251cyBlbGltaW5hdGluZyB0aGUKbmVlZCBmb3Ig aHVnZSBkb21haW4gY29uZmlndXJhdGlvbiBmaWxlL1hlblN0b3JlIGVudHJpZXMuCj4+IElmIHdl IGRlY2lkZSB0byBuZWdvdGlhdGUgdGhlIHBhcmFtZXRlcnMsIHRoZW4gaXQgY2FuJ3QgYmUgZG9u ZQo+PiBhdCAub3BlbiBzdGFnZSBhcyB3ZWxsLCBhcyBhdCB0aGlzIG1vbWVudCB3ZSBkb24ndCBr bm93IHN0cmVhbQo+PiBwYXJhbWV0ZXJzIHlldCwgZS5nLiB3ZSBkb24ndCBrbm93IHRoZSBudW1i ZXIgb2YgY2hhbm5lbHMsIFBDTQo+PiBmb3JtYXQgZXRjLiwgc28gd2UgY2Fubm90IGV4cGxhaW4g dG8gdGhlIGJhY2tlbmQgd2hhdCB3ZSB3YW50Lgo+PiBUaHVzLCBpdCBzZWVtcyB0aGF0IHdlIG5l ZWQgdG8gbW92ZSB0aGUgbmVnb3RpYXRpb24gdG8gLmh3X3BhcmFtcwo+PiBjYWxsYmFjayB3aGVy ZSBzdHJlYW0gcHJvcGVydGllcyBhcmUga25vd24uIEJ1dCB0aGlzIGxlYXZlcyB0aGUKPj4gb25s eSBvcHRpb24gdG8gYXNrIHRoZSBiYWNrZW5kIGlmIGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3Rl ZAo+PiBidWZmZXIvcGVyaW9kIGFuZCBvdGhlciBwYXJhbWV0ZXJzIG9yIG5vdC4uLiBUaGlzIGlz IHdoYXQgSSBkbyBub3cgOigKPiBUaGUgYWRkaXRpb25hbCBwYXJhbWV0ZXIgc2V0dXAgY2FuIGJl IGRvbmUgdmlhIGh3X2NvbnN0cmFpbnRzLiAgVGhlIGh3Cj4gY29uc3RyYWludCBpcyBiYXNpY2Fs bHkgYSBmdW5jdGlvbiBjYWxsIGZvciBlYWNoIHBhcmFtZXRlciBjaGFuZ2UgdG8KPiBuYXJyb3cg ZG93biB0aGUgcmFuZ2Ugb2YgdGhlIGdpdmVuIHBhcmFtZXRlci4KPgo+IHNuZF9wY21faHdfY29u c3RyYWludF9pbnRlZ2VyKCkgaW4gdGhlIGFib3ZlIGlzIGp1c3QgYW4gZXhhbXBsZS4KPiBUaGUg YWN0dWFsIGZ1bmN0aW9uIHRvIGFkanVzdCB2YWx1ZXMgY2FuIGJlIGZyZWVseSB3cml0dGVuLgpZ ZXMsIHRoaXMgaXMgY2xlYXIsIHRoZSBxdWVzdGlvbiBoZXJlIG1vc3RseSB3YXMgbm90Cipob3cq IHRvIHNldCB0aGUgY29uc3RyYWludHMsIGJ1dCAqd2hlcmUqIHRvIGdldCB0aG9zZQo+PiBBbSBJ IG1pc3Npbmcgc29tZXRoaW5nIGhlcmU/Cj4+PiBUaGUgZm9ybWF0LCB0aGUgY2hhbm5lbHMgYW5k IHRoZSBzYW1wbGUgcmF0ZSBhcmUgYWxyZWFkeSBpbmNsdWRlZCBpbgo+Pj4gc25kX3BjbV9oYXJk d2FyZSBzZXR1cCwgc28gdGhpcyBzaG91bGQgYmUgT0ssIHVubGVzcyB0aGV5IGhhdmUKPj4+IGlt cGxpY2l0IGxpbWl0YXRpb25zIHdpdGggZWFjaCBvdGhlciAoZS5nLiBzb21lIGZvcm1hdCBpcyBh dmFpbGFibGUKPj4+IG9ubHkgdW5kZXIgc29tZSByYXRlKS4KPj4gVGhhbmsgeW91LCB0aGlzIHNo b3VsZCBiZSB1cCB0byB0aGUgb25lIHdobyBzZXRzIHVwIHRoZQo+PiBkb21haW4gY29uZmlndXJh dGlvbi4gVGFraW5nIGludG8gYWNjb3VudCBlbWJlZGRlZCBuYXR1cmUgb2YKPj4gb3VyIHVzZS1j YXNlcyB0aGlzIGlzIGFsbW9zdCBhbHdheXMgZG9hYmxlLCBhcyB0aGVzZSBhcmUKPj4gZGVmaW5l ZCBhdCBzeXN0ZW0gZGVzaWduIHRpbWUsIGUuZy4gd2UgZGVmaW5lIG51bWJlciBvZiBjaGFubmVs cwo+PiBhbmQgdGhlaXIgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gZG9tYWluIGZ1bmN0aW9uYWxp dHkgYW5kIG5lZWRzLgo+Pj4gTWF5YmUgdGhlIGNoYW5uZWxzIG5lZWQgdG8gYmUgcmV2aXNpdGVk LCB0aG91Z2g7IHVzdWFsbHkgeW91IGNhbid0Cj4+PiBoYW5kbGUgYWxsIG51bWJlciBvZiBjaGFu bmVscyBiZXR3ZWVuIG1pbiBhbmQgbWF4IGJ1dCBvbmx5IGV2ZW4KPj4+IG51bWJlcnMgb3Igc3Vj aC4KPj4gQnV0IGlmIGJhY2tlbmQgY2FuIGltcGxlbWVudCBzb21lIGZhbmN5IHN0dWZmIHdpdGgg c29mdHdhcmUKPj4gbWl4aW5nIGV0Yy4uLiBUaGlzIGlzIHdoeSBJIGRpZG4ndCBsaW1pdCBvbiB0 aGF0Cj4gQnV0IGlmIHRoZSBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCBmYW5jeSBudW1iZXJzIGxp a2UgMyBjaGFubmVscz8KPiBUaGF0J3MgdGhlIHNhbWUgc2l0dWF0aW9uIGFzIGJ1ZmZlciAvIHBl cmlvZHMuICBUaGUgZnJvbnRlbmQgbmVlZHMgdG8KPiBrbm93IGV4YWN0bHkgd2hhdCBjb25maWd1 cmF0aW9uIHRoZSBiYWNrZW5kIHdvdWxkIGFsbG93LgpPaywgZGlkIEkgdW5kZXJzdGFuZCB5b3Ug Y29ycmVjdGx5IHRoYXQgeW91IHNlZSBpdCBhcwpkZXNjcmliZWQgYWJvdmUsIGUuZy4gYmFja2Vu ZCBjb21tdW5pY2F0ZXMgKGxpbWl0ZWQpCnNldCBvZiBjb25zdHJhaW50cyB0byB0aGUgZnJvbnRl bmQsIHNvIGZyb250ZW5kIHNldHMKdGhlc2UgY29uc3RyYWludHMgYXQgLm9wZW4/ClRoZSB3YXkg dGhlc2UgYXJlIGNvbW11bmljYXRlZCBjb3VsZCBiZSBlaXRoZXIgWGVuU3RvcmUvCmRvbWFpbiBj b25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbiB0byB0aGUgcHJvdG9jb2wsIG5vIHByZWZlcmVuY2UK ZnJvbSB5b3VyIHNpZGU/Cj4KPiBUYWthc2hpClRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIGhlbHBp bmcgd2l0aCB0aGlzIQpPbGVrc2FuZHIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXBy b2plY3Qub3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbHNhLWRldmVsCg==