From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH i-g-t 1/3] lib: Add audio library with dedicated helpers Date: Mon, 21 Aug 2017 18:27:34 +0300 Message-ID: <1503329254.1171.13.camel@linux.intel.com> References: <20170817160557.14238-1-paul.kocialkowski@linux.intel.com> <1503072978.3702.3.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 072906E287 for ; Mon, 21 Aug 2017 15:27:38 +0000 (UTC) In-Reply-To: <1503072978.3702.3.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiBGcmksIDIwMTctMDgtMTggYXQgMTI6MTYgLTA0MDAsIEx5dWRlIFBhdWwgd3JvdGU6 Cj4gT25lIG1vcmUgc21hbGwgZm9ybWF0dGluZyBjaGFuZ2UKPiAKPiBPbiBUaHUsIDIwMTctMDgt MTcgYXQgMTk6MDUgKzAzMDAsIFBhdWwgS29jaWFsa293c2tpIHdyb3RlOgo+ID4gVGhpcyBpbnRy b2R1Y2VzIGFuIGF1ZGlvIGxpYnJhcnksIHdpdGggZGVkaWNhdGVkIGhlbHBlcnMgZm9yIGJvdGgK PiA+IGdlbmVyYXRpbmcgc2lnbmFscyBhbmQgZGV0ZWN0aW5nIHBlYWsgZnJlcXVlbmNpZXMgaW4g YSBzaWduYWwuCj4gPiAKPiA+IFRoaXMgbGlicmFyeSBwYXZlcyB0aGUgd2F5IGZvciB0ZXN0aW5n IGF1ZGlvIGdvaW5nIHRocm91Z2ggZGlzcGxheQo+ID4gY29ubmVjdG9ycywgc3VjaCBhcyBIRE1J Lgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxr b3dza2lAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgLi4uL2ludGVsLWdwdS10b29scy9p bnRlbC1ncHUtdG9vbHMtZG9jcy54bWwgICAgICAgfCAgIDEgKwo+ID4gIGxpYi9NYWtlZmlsZS5h bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPiA+ICBsaWIvaWd0 LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiAg bGliL2lndF9hdWRpby5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMjYK PiA+ICsrKysrKysrKysrKysrKysrKysrKwo+ID4gIGxpYi9pZ3RfYXVkaW8uaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrKwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwg Mzc3IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9hdWRpby5j Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfYXVkaW8uaAo+ID4gCj4gPiBkaWZmIC0t Z2l0IGEvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2Nz LnhtbAo+ID4gYi9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xz LWRvY3MueG1sCj4gPiBpbmRleCBmODhhZmQyYS4uYzc3MTU5Y2YgMTAwNjQ0Cj4gPiAtLS0gYS9k b2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCj4g PiArKysgYi9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRv Y3MueG1sCj4gPiBAQCAtMTYsNiArMTYsNyBAQAo+ID4gICAgPGNoYXB0ZXI+Cj4gPiAgICAgIDx0 aXRsZT5BUEkgUmVmZXJlbmNlPC90aXRsZT4KPiA+ICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s L2RybXRlc3QueG1sIi8+Cj4gPiArICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfYXVkaW8u eG1sIi8+Cj4gPiAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfYXV4LnhtbCIvPgo+ID4g ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X2NoYW1lbGl1bS54bWwiLz4KPiA+ICAgICAg PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF9jb3JlLnhtbCIvPgo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9NYWtlZmlsZS5hbSBiL2xpYi9NYWtlZmlsZS5hbQo+ID4gaW5kZXggOWM5MzJkNmYuLjVlYTA4 MzE0IDEwMDY0NAo+ID4gLS0tIGEvbGliL01ha2VmaWxlLmFtCj4gPiArKysgYi9saWIvTWFrZWZp bGUuYW0KPiA+IEBAIC0zMyw2ICszMyw4IEBAIGlmIEhBVkVfR1NMCj4gPiAgbGliX3NvdXJjZV9s aXN0ICs9CQlcCj4gPiAgCWlndF9mcmFtZS5jCQlcCj4gPiAgCWlndF9mcmFtZS5oCQlcCj4gPiAr CWlndF9hdWRpby5jCQlcCj4gPiArCWlndF9hdWRpby5oCQlcCj4gPiAgCSQoTlVMTCkKPiA+ICBl bmRpZgo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAo+ID4gaW5k ZXggZDE2YTQ5OTEuLmE3NWQyZGI3IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndC5oCj4gPiArKysg Yi9saWIvaWd0LmgKPiA+IEBAIC0zNSw2ICszNSw3IEBACj4gPiAgI2luY2x1ZGUgImlndF9kdW1t eWxvYWQuaCIKPiA+ICAjaW5jbHVkZSAiaWd0X2ZiLmgiCj4gPiAgI2luY2x1ZGUgImlndF9mcmFt ZS5oIgo+ID4gKyNpbmNsdWRlICJpZ3RfYXVkaW8uaCIKPiA+ICAjaW5jbHVkZSAiaWd0X2d0Lmgi Cj4gPiAgI2luY2x1ZGUgImlndF9rbXMuaCIKPiA+ICAjaW5jbHVkZSAiaWd0X3BtLmgiCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2lndF9hdWRpby5jIGIvbGliL2lndF9hdWRpby5jCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAuLjUyN2E0OTMwCj4gPiAtLS0gL2Rldi9u dWxsCj4gPiArKysgYi9saWIvaWd0X2F1ZGlvLmMKPiA+IEBAIC0wLDAgKzEsMzI2IEBACj4gPiAr LyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKyAqCj4g PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24KPiA+IG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gIlNvZnR3YXJlIiksCj4g PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQKPiA+IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiA+IHN1YmxpY2Vuc2UsCj4g PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvCj4gPiB3aG9tCj4gPiB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+ID4gY29uZGl0aW9uczoKPiA+ICsg Kgo+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcKPiA+IHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPiBwb3J0aW9ucyBvZiB0 aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gRVhQUkVTUyBP Ugo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YKPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPiA+IEVWRU5UIFNIQUxM Cj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sCj4gPiBEQU1BR0VTCj4gPiBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4gQVJJ U0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IKPiA+IE9USEVSIERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRX QVJFLgo+ID4gKyAqCj4gPiArICogQXV0aG9yczoKPiA+ICsgKiAgUGF1bCBLb2NpYWxrb3dza2kg PHBhdWwua29jaWFsa293c2tpQGxpbnV4LmludGVsLmNvbT4KPiA+ICsgKi8KPiA+ICsKPiA+ICsj aW5jbHVkZSAiY29uZmlnLmgiCj4gPiArCj4gPiArI2luY2x1ZGUgPG1hdGguaD4KPiA+ICsjaW5j bHVkZSA8Z3NsL2dzbF9mZnRfcmVhbC5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlICJpZ3QuaCIKPiA+ ICsKPiA+ICsjZGVmaW5lIEZSRVFTX01BWAk4Cj4gPiArCj4gPiArLyoqCj4gPiArICogU0VDVElP TjppZ3RfYXVkaW8KPiA+ICsgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIGF1ZGlv LXJlbGF0ZWQgdGVzdHMKPiA+ICsgKiBAdGl0bGU6IEF1ZGlvCj4gPiArICogQGluY2x1ZGU6IGln dF9hdWRpby5oCj4gPiArICoKPiA+ICsgKiBUaGlzIGxpYnJhcnkgY29udGFpbnMgaGVscGVycyBm b3IgYXVkaW8tcmVsYXRlZCB0ZXN0cy4gTW9yZQo+ID4gc3BlY2lmaWNhbGx5LAo+ID4gKyAqIGl0 IGFsbG93cyBnZW5lcmF0aW5nIGFkZGl0aW9ucyBvZiBzaW5lIHNpZ25hbHMgYXMgd2VsbCBhcwo+ ID4gZGV0ZWN0aW5nIHRoZW0uCj4gPiArICovCj4gPiArCj4gPiArc3RydWN0IGF1ZGlvX3NpZ25h bF9mcmVxIHsKPiA+ICsJaW50IGZyZXE7Cj4gPiArCj4gPiArCXNob3J0ICpwZXJpb2Q7Cj4gPiAr CWludCBmcmFtZXM7Cj4gPiArCWludCBvZmZzZXQ7Cj4gPiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3Qg YXVkaW9fc2lnbmFsIHsKPiA+ICsJaW50IGNoYW5uZWxzOwo+ID4gKwlpbnQgc2FtcGxpbmdfcmF0 ZTsKPiA+ICsKPiA+ICsJc3RydWN0IGF1ZGlvX3NpZ25hbF9mcmVxIGZyZXFzW0ZSRVFTX01BWF07 Cj4gPiArCWludCBmcmVxc19jb3VudDsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGF1 ZGlvX3NpZ25hbF9pbml0Ogo+ID4gKyAqIEBjaGFubmVsczogVGhlIG51bWJlciBvZiBjaGFubmVs cyB0byB1c2UgZm9yIHRoZSBzaWduYWwgCj4gPiArICogQHNhbXBsaW5nX3JhdGU6IFRoZSBzYW1w bGluZyByYXRlIHRvIHVzZSBmb3IgdGhlIHNpZ25hbAo+ID4gKyAqCj4gPiArICogQWxsb2NhdGUg YW5kIGluaXRpYWxpemUgYW4gYXVkaW8gc2lnbmFsIHN0cnVjdHVyZSB3aXRoIHRoZSBnaXZlbgo+ ID4gcGFyYW1ldGVycy4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IEEgbmV3bHktYWxsb2NhdGVk IGF1ZGlvIHNpZ25hbCBzdHJ1Y3R1cmUKPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgYXVkaW9fc2lnbmFs ICphdWRpb19zaWduYWxfaW5pdChpbnQgY2hhbm5lbHMsIGludAo+ID4gc2FtcGxpbmdfcmF0ZSkK PiA+ICt7Cj4gPiArCXN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbDsKPiA+ICsKPiA+ICsJc2ln bmFsID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYXVkaW9fc2lnbmFsKSk7Cj4gPiArCW1lbXNldChz aWduYWwsIDAsIHNpemVvZihzdHJ1Y3QgYXVkaW9fc2lnbmFsKSk7Cj4gPiArCj4gPiArCXNpZ25h bC0+c2FtcGxpbmdfcmF0ZSA9IHNhbXBsaW5nX3JhdGU7Cj4gPiArCXNpZ25hbC0+Y2hhbm5lbHMg PSBjaGFubmVsczsKPiA+ICsKPiA+ICsJcmV0dXJuIHNpZ25hbDsKPiA+ICt9Cj4gPiArCj4gPiAr LyoqCj4gPiArICogYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3k6Cj4gPiArICogQHNpZ25hbDog VGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCj4gPiArICogQGZyZXF1ZW5jeTogVGhlIGZyZXF1 ZW5jeSB0byBhZGQgdG8gdGhlIHNpZ25hbAo+ID4gKyAqCj4gPiArICogQWRkIGEgZnJlcXVlbmN5 IHRvIHRoZSBzaWduYWwuCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOiBBbiBpbnRlZ2VyIGVxdWFs IHRvIHplcm8gZm9yIHN1Y2Nlc3MgYW5kIG5lZ2F0aXZlIGZvcgo+ID4gZmFpbHVyZQo+ID4gKyAq Lwo+ID4gK2ludCBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwsIGludAo+ID4gZnJlcXVlbmN5KQo+ID4gK3sKPiA+ICsJaW50IGluZGV4ID0gc2ln bmFsLT5mcmVxc19jb3VudDsKPiA+ICsKPiA+ICsJaWYgKGluZGV4ID09IEZSRVFTX01BWCkKPiA+ ICsJCXJldHVybiAtMTsKPiA+ICsKPiA+ICsJLyogU3RheSB3aXRoaW4gdGhlIE55cXVpc3TigJNT aGFubm9uIHNhbXBsaW5nIHRoZW9yZW0uICovCj4gPiArCWlmIChmcmVxdWVuY3kgPiBzaWduYWwt PnNhbXBsaW5nX3JhdGUgLyAyKQo+ID4gKwkJcmV0dXJuIC0xOwo+ID4gKwo+ID4gKwkvKiBDbGlw IHRoZSBmcmVxdWVuY3kgdG8gYW4gaW50ZWdlciBtdWx0aXBsZSBvZiB0aGUKPiA+IHNhbXBsaW5n Cj4gPiByYXRlLgo+ID4gKwkgKiBUaGlzIHRvIGJlIGFibGUgdG8gc3RvcmUgYSBmdWxsIHBlcmlv ZCBvZiBpdCBhbmQgdXNlCj4gPiB0aGF0Cj4gPiBmb3IKPiA+ICsJICogc2lnbmFsIGdlbmVyYXRp b24sIGluc3RlYWQgb2YgcmVjdXJyZW50IGNhbGxzIHRvIHNpbigpLgo+ID4gKwkgKi8KPiA+ICsJ ZnJlcXVlbmN5ID0gc2lnbmFsLT5zYW1wbGluZ19yYXRlIC8gKHNpZ25hbC0+c2FtcGxpbmdfcmF0 ZQo+ID4gLwo+ID4gZnJlcXVlbmN5KTsKPiA+ICsKPiA+ICsJaWd0X2RlYnVnKCJBZGRpbmcgdGVz dCBmcmVxdWVuY3kgJWRcbiIsIGZyZXF1ZW5jeSk7Cj4gPiArCj4gPiArCXNpZ25hbC0+ZnJlcXNb aW5kZXhdLmZyZXEgPSBmcmVxdWVuY3k7Cj4gPiArCXNpZ25hbC0+ZnJlcXNbaW5kZXhdLmZyYW1l cyA9IDA7Cj4gPiArCXNpZ25hbC0+ZnJlcXNbaW5kZXhdLm9mZnNldCA9IDA7Cj4gPiArCXNpZ25h bC0+ZnJlcXNfY291bnQrKzsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4g Ky8qKgo+ID4gKyAqIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplOgo+ID4gKyAqIEBzaWduYWw6IFRo ZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQo+ID4gKyAqCj4gPiArICogU3ludGhlc2l6ZSB0aGUg ZGF0YSB0YWJsZXMgZm9yIHRoZSBhdWRpbyBzaWduYWwsIHRoYXQgY2FuIGxhdGVyCj4gPiBiZSB1 c2VkCj4gPiArICogdG8gZmlsbCBhdWRpbyBidWZmZXJzLiBUaGUgcmVzb3VyY2VzIGFsbG9jYXRl ZCBieSB0aGlzIGZ1bmN0aW9uCj4gPiBtdXN0IGJlCj4gPiArICogZnJlZWQgd2l0aCBhIGNhbGwg dG8gYXVkaW9fc2lnbmFsX2NsZWFuIHdoZW4gdGhlIHNpZ25hbCBpcyBubwo+ID4gbG9uZ2VyIHVz ZWQuCj4gPiArICovCj4gPiArdm9pZCBhdWRpb19zaWduYWxfc3ludGhlc2l6ZShzdHJ1Y3QgYXVk aW9fc2lnbmFsICpzaWduYWwpCj4gPiArewo+ID4gKwlzaG9ydCAqcGVyaW9kOwo+ID4gKwlkb3Vi bGUgdmFsdWU7Cj4gPiArCWludCBmcmFtZXM7Cj4gPiArCWludCBmcmVxOwo+ID4gKwlpbnQgaSwg ajsKPiA+ICsKPiA+ICsJaWYgKHNpZ25hbC0+ZnJlcXNfY291bnQgPT0gMCkKPiA+ICsJCXJldHVy bjsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykg ewo+ID4gKwkJZnJlcSA9IHNpZ25hbC0+ZnJlcXNbaV0uZnJlcTsKPiA+ICsJCWZyYW1lcyA9IHNp Z25hbC0+c2FtcGxpbmdfcmF0ZSAvIGZyZXE7Cj4gPiArCj4gPiArCQlwZXJpb2QgPSBjYWxsb2Mo MSwgZnJhbWVzICogc2l6ZW9mKHNob3J0KSk7Cj4gPiArCj4gPiArCQlmb3IgKGogPSAwOyBqIDwg ZnJhbWVzOyBqKyspIHsKPiA+ICsJCQl2YWx1ZSA9IDIuMCAqIE1fUEkgKiBmcmVxIC8gc2lnbmFs LQo+ID4gPiBzYW1wbGluZ19yYXRlICogajsKPiA+IAo+ID4gKwkJCXZhbHVlID0gc2luKHZhbHVl KSAqIFNIUlRfTUFYIC8gc2lnbmFsLQo+ID4gPiBmcmVxc19jb3VudDsKPiA+IAo+ID4gKwo+ID4g KwkJCXBlcmlvZFtqXSA9IChzaG9ydCkgdmFsdWU7IAo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJc2ln bmFsLT5mcmVxc1tpXS5wZXJpb2QgPSBwZXJpb2Q7Cj4gPiArCQlzaWduYWwtPmZyZXFzW2ldLmZy YW1lcyA9IGZyYW1lczsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBhdWRp b19zaWduYWxfc3ludGhlc2l6ZToKPiA+ICsgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25hbCBz dHJ1Y3R1cmUKPiA+ICsgKgo+ID4gKyAqIEZyZWUgdGhlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkg YXVkaW9fc2lnbmFsX3N5bnRoZXNpemUgYW5kCj4gPiByZW1vdmUKPiA+ICsgKiB0aGUgcHJldmlv dXNseS1hZGRlZCBmcmVxdWVuY2llcy4KPiA+ICsgKi8KPiA+ICt2b2lkIGF1ZGlvX3NpZ25hbF9j bGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpCj4gPiArewo+ID4gKwlpbnQgaTsKPiA+ ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykgewo+ID4g KwkJaWYgKHNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kKQo+ID4gKwkJCWZyZWUoc2lnbmFsLT5mcmVx c1tpXS5wZXJpb2QpOwo+ID4gKwo+ID4gKwkJbWVtc2V0KCZzaWduYWwtPmZyZXFzW2ldLCAwLCBz aXplb2Yoc3RydWN0Cj4gPiBhdWRpb19zaWduYWxfZnJlcSkpOwo+ID4gKwl9Cj4gPiArCj4gPiAr CXNpZ25hbC0+ZnJlcXNfY291bnQgPSAwOwo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBh dWRpb19zaWduYWxfZmlsbDoKPiA+ICsgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25hbCBzdHJ1 Y3R1cmUKPiA+ICsgKiBAYnVmZmVyOiBUaGUgdGFyZ2V0IGJ1ZmZlciB0byBmaWxsCj4gPiArICog QGZyYW1lczogVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZmlsbAo+ID4gKyAqCj4gPiArICogRmls bCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBmcmFtZXMgdG8gdGhlIHRhcmdldCBidWZmZXIgd2l0 aAo+ID4gdGhlCj4gPiBhdWRpbwo+ID4gKyAqIHNpZ25hbCBkYXRhIChpbiBpbnRlcmxlYXZlZCBT MTZfTEUgZm9ybWF0KSwgYXQgdGhlIHJlcXVlc3RlZAo+ID4gc2FtcGxpbmcgcmF0ZQo+ID4gKyAq IGFuZCBudW1iZXIgb2YgY2hhbm5lbHMuCj4gPiArICovCj4gPiArdm9pZCBhdWRpb19zaWduYWxf ZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIHNob3J0ICpidWZmZXIsCj4gPiBpbnQg ZnJhbWVzKQo+ID4gK3sKPiA+ICsJc2hvcnQgKmRlc3RpbmF0aW9uOwo+ID4gKwlzaG9ydCAqc291 cmNlOwo+ID4gKwlpbnQgdG90YWw7Cj4gPiArCWludCBmcmVxX2ZyYW1lczsKPiA+ICsJaW50IGZy ZXFfb2Zmc2V0Owo+ID4gKwlpbnQgY291bnQ7Cj4gPiArCWludCBpLCBqLCBrOwo+ID4gKwo+ID4g KwltZW1zZXQoYnVmZmVyLCAwLCBzaXplb2Yoc2hvcnQpICogc2lnbmFsLT5jaGFubmVscyAqCj4g PiBmcmFtZXMpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3Vu dDsgaSsrKSB7Cj4gPiArCQl0b3RhbCA9IDA7Cj4gPiArCj4gPiArCQl3aGlsZSAodG90YWwgPCBm cmFtZXMpIHsKPiA+ICsJCQlmcmVxX2ZyYW1lcyA9IHNpZ25hbC0+ZnJlcXNbaV0uZnJhbWVzOwo+ ID4gKwkJCWZyZXFfb2Zmc2V0ID0gc2lnbmFsLT5mcmVxc1tpXS5vZmZzZXQ7Cj4gPiArCj4gPiAr CQkJc291cmNlID0gc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgKwo+ID4gZnJlcV9vZmZzZXQ7Cj4g PiArCQkJZGVzdGluYXRpb24gPSBidWZmZXIgKyB0b3RhbCAqIHNpZ25hbC0KPiA+ID4gY2hhbm5l bHM7Cj4gPiAKPiA+ICsKPiA+ICsJCQljb3VudCA9IGZyZXFfZnJhbWVzIC0gZnJlcV9vZmZzZXQ7 Cj4gPiArCQkJaWYgKGNvdW50ID4gKGZyYW1lcyAtIHRvdGFsKSkKPiA+ICsJCQkJY291bnQgPSBm cmFtZXMgLSB0b3RhbDsKPiA+ICsKPiA+ICsJCQlmcmVxX29mZnNldCArPSBjb3VudDsKPiA+ICsJ CQlmcmVxX29mZnNldCAlPSBmcmVxX2ZyYW1lczsKPiA+ICsKPiA+ICsJCQlzaWduYWwtPmZyZXFz W2ldLm9mZnNldCA9IGZyZXFfb2Zmc2V0Owo+ID4gKwo+ID4gKwkJCWZvciAoaiA9IDA7IGogPCBj b3VudDsgaisrKSB7Cj4gPiArCQkJCWZvciAoayA9IDA7IGsgPCBzaWduYWwtPmNoYW5uZWxzOwo+ ID4gaysrKSB7Cj4gPiArCQkJCQlkZXN0aW5hdGlvbltqICogc2lnbmFsLQo+ID4gPiBjaGFubmVs cyArIGtdICs9IHNvdXJjZVtqXTsKPiA+IAo+ID4gKwkJCQl9Cj4gPiArCQkJfQo+ID4gKwo+ID4g KwkJCXRvdGFsICs9IGNvdW50Owo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gKy8q Kgo+ID4gKyAqIGF1ZGlvX3NpZ25hbF9kZXRlY3Q6Cj4gPiArICogQHNpZ25hbDogVGhlIHRhcmdl dCBzaWduYWwgc3RydWN0dXJlCj4gPiArICogQGNoYW5uZWxzOiBUaGUgaW5wdXQgZGF0YSdzIG51 bWJlciBvZiBjaGFubmVscwo+ID4gKyAqIEBzYW1wbGluZ19yYXRlOiBUaGUgaW5wdXQgZGF0YSdz IHNhbXBsaW5nIHJhdGUKPiA+ICsgKiBAYnVmZmVyOiBUaGUgaW5wdXQgZGF0YSdzIGJ1ZmZlcgo+ ID4gKyAqIEBmcmFtZXM6IFRoZSBpbnB1dCBkYXRhJ3MgbnVtYmVyIG9mIGZyYW1lcwo+ID4gKyAq Cj4gPiArICogRGV0ZWN0IHRoYXQgdGhlIGZyZXF1ZW5jaWVzIHNwZWNpZmllZCBpbiBAc2lnbmFs LCBhbmQgb25seQo+ID4gdGhvc2UsCj4gPiBhcmUKPiA+ICsgKiBwcmVzZW50IGluIHRoZSBpbnB1 dCBkYXRhLiBUaGUgaW5wdXQgZGF0YSdzIGZvcm1hdCBpcyByZXF1aXJlZAo+ID4gdG8KPiA+IGJl IFMxNl9MRS4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdo ZXRoZXIgdGhlIGRldGVjdGlvbiB3YXMKPiA+IHN1Y2Nlc3NmdWwKPiA+ICsgKi8KPiA+ICtib29s IGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgY2hh bm5lbHMsCj4gPiArCQkJIGludCBzYW1wbGluZ19yYXRlLCBzaG9ydCAqYnVmZmVyLCBpbnQKPiA+ IGZyYW1lcykKPiA+ICt7Cj4gPiArCWRvdWJsZSBkYXRhW2ZyYW1lc107Cj4gPiArCWludCBhbXBs aXR1ZGVbZnJhbWVzIC8gMl07Cj4gPiArCWJvb2wgZGV0ZWN0ZWRbc2lnbmFsLT5mcmVxc19jb3Vu dF07Cj4gPiArCWludCB0aHJlc2hvbGQ7Cj4gPiArCWJvb2wgYWJvdmU7Cj4gPiArCWludCBlcnJv cjsKPiA+ICsJaW50IGZyZXE7Cj4gPiArCWludCBtYXg7Cj4gPiArCWludCBjLCBpLCBqOwo+ID4g Kwo+ID4gKwkvKiBBbGxvd2VkIGVycm9yIGluIEh6IGR1ZSB0byBGRlQgc3RlcC4gKi8KPiA+ICsJ ZXJyb3IgPSBzYW1wbGluZ19yYXRlIC8gZnJhbWVzOwo+ID4gKwo+ID4gKwlmb3IgKGMgPSAwOyBj IDwgY2hhbm5lbHM7IGMrKykgewo+ID4gKwkJZm9yIChpID0gMDsgaSA8IGZyYW1lczsgaSsrKQo+ ID4gKwkJCWRhdGFbaV0gPSAoZG91YmxlKSBidWZmZXJbaSAqIGNoYW5uZWxzICsKPiA+IGNdOwo+ ID4gKwo+ID4gKwkJZ3NsX2ZmdF9yZWFsX3JhZGl4Ml90cmFuc2Zvcm0oZGF0YSwgMSwgZnJhbWVz KTsKPiA+ICsKPiA+ICsJCW1heCA9IDA7Cj4gPiArCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgZnJh bWVzIC8gMjsgaSsrKSB7Cj4gPiArCQkJYW1wbGl0dWRlW2ldID0gc3FydChkYXRhW2ldICogZGF0 YVtpXSArCj4gPiArCQkJCQkJICBkYXRhW2ZyYW1lcyAtIGldCj4gPiAqCj4gPiArCQkJCQkJICBk YXRhW2ZyYW1lcyAtCj4gPiBpXSk7Cj4gCj4gTW9yZSBpbmRlbnRpbmcgZml4ZXM/IG5vdCBzdXJl IGlmIHRoaXMgb25lIGlzIGp1c3QgYSByZXN1bHQgb2YgaXQKPiBnZXR0aW5nIGZvcm1hdHRlZCBh cyBhbiBlbWFpbC4KClRoaXMgb25lIHdhcyBhIGxlZ2l0IG1pc3Rha2UsIGdvb2QgY2F0Y2ghCgo+ ID4gKwkJCWlmIChhbXBsaXR1ZGVbaV0gPiBtYXgpCj4gPiArCQkJCW1heCA9IGFtcGxpdHVkZVtp XTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2Nv dW50OyBpKyspCj4gPiArCQkJZGV0ZWN0ZWRbaV0gPSBmYWxzZTsKPiA+ICsKPiA+ICsJCXRocmVz aG9sZCA9IG1heCAvIDI7Cj4gPiArCQlhYm92ZSA9IGZhbHNlOwo+ID4gKwkJbWF4ID0gMDsKPiA+ ICsKPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBmcmFtZXMgLyAyOyBpKyspIHsKPiA+ICsJCQlpZiAo YW1wbGl0dWRlW2ldID4gdGhyZXNob2xkKQo+ID4gKwkJCQlhYm92ZSA9IHRydWU7Cj4gPiArCj4g PiArCQkJaWYgKGFib3ZlKSB7Cj4gPiArCQkJCWlmIChhbXBsaXR1ZGVbaV0gPCB0aHJlc2hvbGQp IHsKPiA+ICsJCQkJCWFib3ZlID0gZmFsc2U7Cj4gPiArCQkJCQltYXggPSAwOwo+ID4gKwo+ID4g KwkJCQkJZm9yIChqID0gMDsgaiA8IHNpZ25hbC0KPiA+ID4gZnJlcXNfY291bnQ7IGorKykgewo+ ID4gCj4gPiArCQkJCQkJaWYgKHNpZ25hbC0KPiA+ID4gZnJlcXNbal0uZnJlcSA+Cj4gPiAKPiA+ ICsJCQkJCQkgICAgZnJlcSAtIGVycm9yICYmCj4gPiArCQkJCQkJICAgIHNpZ25hbC0KPiA+ID4g ZnJlcXNbal0uZnJlcSA8Cj4gPiAKPiA+ICsJCQkJCQkgICAgZnJlcSArIGVycm9yKSB7Cj4gPiAr CQkJCQkJCWRldGVjdGVkW2pdCj4gPiA9IHRydWU7Cj4gPiArCQkJCQkJCWJyZWFrOwo+ID4gKwkJ CQkJCX0KPiA+ICsJCQkJCX0KPiA+ICsKPiA+ICsJCQkJCS8qIERldGVjdGVkIGZyZXF1ZW5jeSB3 YXMKPiA+IG5vdCBnZW5lcmF0ZWQuICovCj4gPiArCQkJCQlpZiAoaiA9PSBzaWduYWwtCj4gPiA+ IGZyZXFzX2NvdW50KSB7Cj4gPiAKPiA+ICsJCQkJCQlpZ3RfZGVidWcoIkRldGVjdGVkCj4gPiBh ZGRpdGlvbmFsIGZyZXF1ZW5jeTogJWRcbiIsCj4gPiArCQkJCQkJCSAgZnJlcSk7Cj4gPiArCQkJ CQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJCQkJfQo+ID4gKwkJCQl9Cj4gPiArCj4gPiArCQkJCWlm IChhbXBsaXR1ZGVbaV0gPiBtYXgpIHsKPiA+ICsJCQkJCW1heCA9IGFtcGxpdHVkZVtpXTsKPiA+ ICsJCQkJCWZyZXEgPSBzYW1wbGluZ19yYXRlICogaSAvCj4gPiBmcmFtZXM7Cj4gPiArCQkJCX0K PiA+ICsJCQl9Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5m cmVxc19jb3VudDsgaSsrKSB7Cj4gPiArCQkJaWYgKCFkZXRlY3RlZFtpXSkgewo+ID4gKwkJCQlp Z3RfZGVidWcoIk1pc3NpbmcgZnJlcXVlbmN5Ogo+ID4gJWRcbiIsCj4gPiArCQkJCQkgIHNpZ25h bC0+ZnJlcXNbaV0uZnJlcSk7Cj4gPiArCQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQl9Cj4gPiAr CQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIHRydWU7Cj4gPiArfQo+ID4gZGlmZiAtLWdp dCBhL2xpYi9pZ3RfYXVkaW8uaCBiL2xpYi9pZ3RfYXVkaW8uaAo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwLi41MDdlN2FiOQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4g KysrIGIvbGliL2lndF9hdWRpby5oCj4gPiBAQCAtMCwwICsxLDQ3IEBACj4gPiArLyoKPiA+ICsg KiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKyAqCj4gPiArICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24K PiA+IG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gIlNvZnR3YXJlIiksCj4gPiArICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQKPiA+IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiA+IHN1YmxpY2Vuc2UsCj4gPiArICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv Cj4gPiB3aG9tCj4gPiB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+ID4gY29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcKPiA+IHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ICsg KiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gRVhQUkVTUyBPUgo+ID4gKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YK PiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPiA+IEVWRU5UIFNIQUxMCj4gPiArICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s Cj4gPiBEQU1BR0VTCj4gPiBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4gQVJJU0lORwo+ID4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IKPiA+IE9USEVSIERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4g KyAqCj4gPiArICogQXV0aG9yczoKPiA+ICsgKiAgUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29j aWFsa293c2tpQGxpbnV4LmludGVsLmNvbT4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaWZuZGVmIElH VF9BVURJT19ICj4gPiArI2RlZmluZSBJR1RfQVVESU9fSAo+ID4gKwo+ID4gKyNpZmRlZiBIQVZF X0NPTkZJR19ICj4gPiArI2luY2x1ZGUgImNvbmZpZy5oIgo+ID4gKyNlbmRpZgo+ID4gKwo+ID4g KyNpbmNsdWRlICJpZ3QuaCIKPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ID4gKwo+ID4gK3N0 cnVjdCBhdWRpb19zaWduYWw7Cj4gPiArCj4gPiArc3RydWN0IGF1ZGlvX3NpZ25hbCAqYXVkaW9f c2lnbmFsX2luaXQoaW50IGNoYW5uZWxzLCBpbnQKPiA+IHNhbXBsaW5nX3JhdGUpOwo+ID4gK2lu dCBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWws IGludAo+ID4gZnJlcXVlbmN5KTsKPiA+ICt2b2lkIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHN0 cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7Cj4gPiArdm9pZCBhdWRpb19zaWduYWxfY2xlYW4o c3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKTsKPiA+ICt2b2lkIGF1ZGlvX3NpZ25hbF9maWxs KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgc2hvcnQgKmJ1ZmZlciwKPiA+IGludCBmcmFt ZXMpOwo+ID4gK2Jvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpz aWduYWwsIGludCBjaGFubmVscywKPiA+ICsJCQkgaW50IHNhbXBsaW5nX3JhdGUsIHNob3J0ICpi dWZmZXIsIGludAo+ID4gZnJhbWVzKTsKPiA+ICsKPiA+ICsjZW5kaWYKLS0gClBhdWwgS29jaWFs a293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+CkludGVsIEZpbmxhbmQg T3kgLSBCSUMgMDM1NzYwNi00IC0gV2VzdGVuZGlua2F0dSA3LCAwMjE2MCBFc3BvbywgRmlubGFu ZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK