From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 5E3884A343 for ; Tue, 26 Mar 2024 18:51:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A2C1768D677; Tue, 26 Mar 2024 20:50:58 +0200 (EET) Received: from mail-qt1-f176.google.com (mail-qt1-f176.google.com [209.85.160.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5F1C868D225 for ; Tue, 26 Mar 2024 20:50:52 +0200 (EET) Received: by mail-qt1-f176.google.com with SMTP id d75a77b69052e-430d3fcc511so47381cf.1 for ; Tue, 26 Mar 2024 11:50:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711479051; x=1712083851; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=G1FtCo4epr7/tmzmFGOPnvgtg8B6KKa4bEyM4TXx2jc=; b=Spg2dvT2hLqfefK3z39jSUedoawEAMHhyqNQLPJ/BDRnMKAgDbi9U9ttnr2SLo87w6 Rl8pNeIEPCmCJlJD+ha0tYKvDWM2AJvrCfDwnpSmZtkoVOVZeq77EicEsukyzhBpJR9B 0A0S+NvIP5A3z8017LGoIrenw2T4zm8HoPL/oZ1lpVTv9pidMcsEh2HWOiIvW2OmNM9s GDUIViDTAxKfw4pJQ6b71jZcAJAsCPXyN+cfLvAAUSBbF0fqM2t1fcba9ucIe7xDpmAH tEbzAJkPjaCk1sYXkBJ2bPHVrSAND+6v2LMPMW9F2pu8FeeR7qMadh1iCOfrlQoMXJsE XUxw== X-Gm-Message-State: AOJu0YxwvSa8mz0R+F8RlEyYXNZFMHeidIc2R1iXtdx5FuKnM4ANqpPg HOemb5YT0DYqfj0VZmIQ7foZ01Nut3x6m/pBM05hM5WcXQsfex1lirWm7dCh/leukt3YMc/gi8G zSPfk0KKUxPbLD3eNu+19bfjBzZ2t3oEiCvHLA2CvSAaH/kx95cmO X-Google-Smtp-Source: AGHT+IFCVEEpyNPg+b46Gp26pDIbmk4BdcyNE/Zq/BKasDZcxAjofyre8Hy/2gmpyckihA0pSmA/A+fwoPmwcuzeFbs= X-Received: by 2002:a05:622a:1145:b0:431:542a:38c with SMTP id f5-20020a05622a114500b00431542a038cmr26279qty.28.1711479050532; Tue, 26 Mar 2024 11:50:50 -0700 (PDT) MIME-Version: 1.0 References: <20240326164739.153011-1-asoulier@google.com> <20240326164739.153011-2-asoulier@google.com> In-Reply-To: Date: Tue, 26 Mar 2024 11:50:39 -0700 Message-ID: To: FFmpeg development discussions and patches , Antoine Soulier X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/5] avcodec/liblc3: Add encoding/decoding support of LC3 audio codec X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Antoine Soulier via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Antoine Soulier Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhhbmtzIGZvciB5b3VyIHJldmlldy4KSSBhbSBub3Qgc3VyZSB0byB1bmRlcnN0YW5kICIxZTNm IG1pZ2h0IGJlIHJlcGxhY2VkIGJ5IGEgc3ltYm9saWMKY29uc3RhbnQvbWFjcm8iLgpJdCdzIGZv ciBhIGNvbnZlcnNpb24gZnJvbSBtaWNyb3NlY29uZHMgdG8gbWlsbGlzZWNvbmRzIChzdGFuZGFy ZCB1bml0IHVzZWQKZm9yIHRoZSBmcmFtZSBkdXJhdGlvbikuCkl0J3Mgbm90IGEgbWFnaWNhbCBj b25zdGFudCwgSSBkbyBzb21lIGdyZXBzIGFuZCBpdCBsb29rcyBsaWtlIHN1Y2gKY29uc3RhbnQg IjEwMDAuZiIgYXJlIGFscmVhZHkgZGVmaW5lZCBlbHNld2hlcmUuCgoKT24gVHVlLCBNYXIgMjYs IDIwMjQgYXQgMTA6NDnigK9BTSBTdGVmYW5vIFNhYmF0aW5pIDxzdGVmYXNhYkBnbWFpbC5jb20+ Cndyb3RlOgoKPiBPbiBkYXRlIFR1ZXNkYXkgMjAyNC0wMy0yNiAxNjo0NzozNiArMDAwMCwgZmZt cGVnLWRldmVsIE1haWxpbmcgTGlzdCB3cm90ZToKPiA+IFRoZSBMQzMgYXVkaW8gY29kZWMgaXMg dGhlIGRlZmF1bHQgY29kZWMgb2YgQmx1ZXRvb3RoIExFIGF1ZGlvLgo+ID4gVGhpcyBpcyBhIHdy YXBwZXIgb3ZlciB0aGUgbGlibGMzIGxpYnJhcnkgKAo+IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n bGUvbGlibGMzKS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnRvaW5lIFNvdWxpZXIgPGFzb3Vs aWVyQGdvb2dsZS5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnRvaW5lIFNPVUxJRVIgPGFzb3Vs aWVyQGdvb2dsZS5jb20+Cj4gPiAtLS0KPiA+ICBsaWJhdmNvZGVjL01ha2VmaWxlICAgICB8ICAg MyArCj4gPiAgbGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgfCAgIDMgKwo+ID4gIGxpYmF2Y29kZWMv Y29kZWNfZGVzYy5jIHwgIDE0ICsrKwo+ID4gIGxpYmF2Y29kZWMvY29kZWNfaWQuaCAgIHwgICAy ICsKPiA+ICBsaWJhdmNvZGVjL2xpYmxjM2RlYy5jICB8IDE0NiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiA+ICBsaWJhdmNvZGVjL2xpYmxjM2VuYy5jICB8IDE5MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAzNTkg aW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2xpYmxjM2Rl Yy5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvbGlibGMzZW5jLmMKPiA+Cj4g PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUK PiA+IGluZGV4IDcwODQzNGFjNzYuLjdkMmNmMzA3NmQgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNv ZGVjL01ha2VmaWxlCj4gPiArKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gPiBAQCAtMTEyMyw2 ICsxMTIzLDkgQEAgT0JKUy0kKENPTkZJR19MSUJJTEJDX0VOQ09ERVIpICAgICAgICAgICAgKz0K PiBsaWJpbGJjLm8KPiA+ICBPQkpTLSQoQ09ORklHX0xJQkpYTF9ERUNPREVSKSAgICAgICAgICAg ICArPSBsaWJqeGxkZWMubyBsaWJqeGwubwo+ID4gIE9CSlMtJChDT05GSUdfTElCSlhMX0VOQ09E RVIpICAgICAgICAgICAgICs9IGxpYmp4bGVuYy5vIGxpYmp4bC5vCj4gPiAgT0JKUy0kKENPTkZJ R19MSUJLVkFaQUFSX0VOQ09ERVIpICAgICAgICAgKz0gbGlia3ZhemFhci5vCj4gPiArT0JKUy0k KENPTkZJR19MSUJMQzNfRU5DT0RFUikgICAgICAgICAgICAgKz0gbGlibGMzZW5jLm8KPiA+ICtP QkpTLSQoQ09ORklHX0xJQkxDM19MQzNfREVDT0RFUikgICAgICAgICArPSBsaWJsYzNkZWMubwo+ ID4gK09CSlMtJChDT05GSUdfTElCTEMzX0xDM1BMVVNfREVDT0RFUikgICAgICs9IGxpYmxjM2Rl Yy5vCj4gPiAgT0JKUy0kKENPTkZJR19MSUJNUDNMQU1FX0VOQ09ERVIpICAgICAgICAgKz0gbGli bXAzbGFtZS5vCj4gPiAgT0JKUy0kKENPTkZJR19MSUJPUEVOQ09SRV9BTVJOQl9ERUNPREVSKSAg Kz0gbGlib3BlbmNvcmUtYW1yLm8KPiA+ICBPQkpTLSQoQ09ORklHX0xJQk9QRU5DT1JFX0FNUk5C X0VOQ09ERVIpICArPSBsaWJvcGVuY29yZS1hbXIubwo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCj4gPiBpbmRleCAyMzg2YjQ1 MGE2Li4yOWFlZGFlYWM2IDEwMDY0NAo+ID4gLS0tIGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+ ID4gKysrIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+ID4gQEAgLTc3Niw2ICs3NzYsOSBAQCBl eHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJpbGJjX2VuY29kZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0 IEZGQ29kZWMgZmZfbGliaWxiY19kZWNvZGVyOwo+ID4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZm X2xpYmp4bF9kZWNvZGVyOwo+ID4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYmp4bF9lbmNv ZGVyOwo+ID4gK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYmxjM19lbmNvZGVyOwo+ID4gK2V4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYmxjM19sYzNfZGVjb2RlcjsKPiA+ICtleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9saWJsYzNfbGMzcGx1c19kZWNvZGVyOwo+ID4gIGV4dGVybiBjb25zdCBG RkNvZGVjIGZmX2xpYm1wM2xhbWVfZW5jb2RlcjsKPiA+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBm Zl9saWJvcGVuY29yZV9hbXJuYl9lbmNvZGVyOwo+ID4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZm X2xpYm9wZW5jb3JlX2Ftcm5iX2RlY29kZXI7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9j b2RlY19kZXNjLmMgYi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ID4gaW5kZXggM2JhYjg2ZGI2 Mi4uMjMwYmJhMmEwOSAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCj4g PiArKysgYi9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ID4gQEAgLTM0MjUsNiArMzQyNSwyMCBA QCBzdGF0aWMgY29uc3QgQVZDb2RlY0Rlc2NyaXB0b3IKPiBjb2RlY19kZXNjcmlwdG9yc1tdID0g ewo+ID4gICAgICAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJRT0EgKFF1 aXRlIE9LIEF1ZGlvKSIpLAo+ID4gICAgICAgICAgLnByb3BzICAgICA9IEFWX0NPREVDX1BST1Bf SU5UUkFfT05MWSB8IEFWX0NPREVDX1BST1BfTE9TU1ksCj4gPiAgICAgIH0sCj4gPiArICAgIHsK PiA+ICsgICAgICAgIC5pZCAgICAgICAgPSBBVl9DT0RFQ19JRF9MQzMsCj4gPiArICAgICAgICAu dHlwZSAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAo+ID4gKyAgICAgICAgLm5hbWUgICAgICA9 ICJsYzMiLAo+ID4gKyAgICAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJM QzMgKExvdyBDb21wbGV4aXR5Cj4gQ29tbXVuaWNhdGlvbiBDb2RlYykiKSwKPiA+ICsgICAgICAg IC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9QX0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xP U1NZLAo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAuaWQgICAgICAgID0gQVZf Q09ERUNfSURfTEMzX1BMVVMsCj4gPiArICAgICAgICAudHlwZSAgICAgID0gQVZNRURJQV9UWVBF X0FVRElPLAo+ID4gKyAgICAgICAgLm5hbWUgICAgICA9ICJsYzNfcGx1cyIsCj4gPiArICAgICAg ICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkxDM3BsdXMgKExvdyBDb21wbGV4 aXR5Cj4gQ29tbXVuaWNhdGlvbiBDb2RlYyBwbHVzKSIpLAo+ID4gKyAgICAgICAgLnByb3BzICAg ICA9IEFWX0NPREVDX1BST1BfSU5UUkFfT05MWSB8IEFWX0NPREVDX1BST1BfTE9TU1ksCj4gPiAr ICAgIH0sCj4gPgo+ID4gICAgICAvKiBzdWJ0aXRsZSBjb2RlY3MgKi8KPiA+ICAgICAgewo+ID4g ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY29kZWNfaWQuaCBiL2xpYmF2Y29kZWMvY29kZWNfaWQu aAo+ID4gaW5kZXggYzhkYzIxZGE3NC4uN2U0Y2IzOTA0OSAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2 Y29kZWMvY29kZWNfaWQuaAo+ID4gKysrIGIvbGliYXZjb2RlYy9jb2RlY19pZC5oCj4gPiBAQCAt NTQzLDYgKzU0Myw4IEBAIGVudW0gQVZDb2RlY0lEIHsKPiA+ICAgICAgQVZfQ09ERUNfSURfQUM0 LAo+ID4gICAgICBBVl9DT0RFQ19JRF9PU1EsCj4gPiAgICAgIEFWX0NPREVDX0lEX1FPQSwKPiA+ ICsgICAgQVZfQ09ERUNfSURfTEMzLAo+ID4gKyAgICBBVl9DT0RFQ19JRF9MQzNfUExVUywKPiA+ Cj4gPiAgICAgIC8qIHN1YnRpdGxlIGNvZGVjcyAqLwo+ID4gICAgICBBVl9DT0RFQ19JRF9GSVJT VF9TVUJUSVRMRSA9IDB4MTcwMDAsICAgICAgICAgIC8vLzwgQSBkdW1teSBJRAo+IHBvaW50aW5n IGF0IHRoZSBzdGFydCBvZiBzdWJ0aXRsZSBjb2RlY3MuCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9saWJsYzNkZWMuYyBiL2xpYmF2Y29kZWMvbGlibGMzZGVjLmMKPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi5lOTdjZWNjNjhmCj4gPiAtLS0gL2Rldi9u dWxsCj4gPiArKysgYi9saWJhdmNvZGVjL2xpYmxjM2RlYy5jCj4gPiBAQCAtMCwwICsxLDE0NiBA QAo+ID4gKy8qCj4gPiArICogTEMzIGRlY29kZXIgd3JhcHBlcgo+ID4gKyAqIENvcHlyaWdodCAo QykgMjAyNCAgQW50b2luZSBTb3VsaWVyIDxhc291bGllckBnb29nbGUuY29tPgo+ID4gKyAqCj4g PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ID4gKyAqCj4gPiArICogUGVybWlz c2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2Fy ZSBmb3IKPiBhbnkKPiA+ICsgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5 IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlCj4gYWJvdmUKPiA+ICsgKiBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgo+ID4g KyAqCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRI T1IgRElTQ0xBSU1TIEFMTAo+IFdBUlJBTlRJRVMKPiA+ICsgKiBXSVRIIFJFR0FSRCBUTyBUSElT IFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCj4gPiArICogTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJF IExJQUJMRQo+IEZPUgo+ID4gKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZCj4gREFNQUdFUwo+ID4gKyAqIFdIQVRTT0VWRVIg UkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBB Tgo+ID4gKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9V UyBBQ1RJT04sIEFSSVNJTkcgT1VUCj4gT0YKPiA+ICsgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgo+ID4gKyAqLwo+ID4gKwo+ ID4gKyNpbmNsdWRlIDxsYzMuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJl YWR3cml0ZS5oIgo+ID4gKwo+ID4gKyNpbmNsdWRlICJhdmNvZGVjLmgiCj4gPiArI2luY2x1ZGUg ImNvZGVjLmgiCj4gPiArI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCj4gPiArI2luY2x1ZGUg ImRlY29kZS5oIgo+ID4gKyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ID4gKwo+ID4gKyNkZWZpbmUg REVDT0RFUl9NQVhfQ0hBTk5FTFMgIDIKPiA+ICsKPiA+ICt0eXBlZGVmIHN0cnVjdCBMaWJMQzNE ZWNDb250ZXh0IHsKPiA+ICsgICAgaW50IGZyYW1lX3VzLCBzcmF0ZV9oejsKPiA+ICsgICAgYm9v bCBocl9tb2RlOwo+ID4gKyAgICBsYzNfZGVjb2Rlcl90IGRlY29kZXJbREVDT0RFUl9NQVhfQ0hB Tk5FTFNdOwo+ID4gK30gTGliTEMzRGVjQ29udGV4dDsKPiA+ICsKPiA+ICtzdGF0aWMgYXZfY29s ZCBpbnQgbGlibGMzX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiA+ICt7Cj4g PiArICAgIExpYkxDM0RlY0NvbnRleHQgKmxpYmxjMyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gPiAr ICAgIGludCBjaGFubmVscyA9IGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4gPiArICAg IHVuc2lnbmVkIGRlY29kZXJfc2l6ZTsKPiA+ICsKPiA+ICsgICAgaWYgKGF2Y3R4LT5leHRyYWRh dGFfc2l6ZSA8IDIpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ ICsKPiA+ICsgICAgbGlibGMzLT5mcmFtZV91cyA9IEFWX1JMMTYoYXZjdHgtPmV4dHJhZGF0YSAr IDApOwo+ID4gKyAgICBsaWJsYzMtPnNyYXRlX2h6ID0gYXZjdHgtPnNhbXBsZV9yYXRlOwo+ID4g KyAgICBsaWJsYzMtPmhyX21vZGUgID0gYXZjdHgtPmV4dHJhZGF0YV9zaXplID49IDYgJiYKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIEFWX1JMMTYoYXZjdHgtPmV4dHJhZGF0YSArIDQpOwo+ ID4gKwo+ID4gKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19JTkZPLAo+Cj4gPiArICAgICAgICAi RGVjb2RpbmcgJS4xZiBtcyBmcmFtZXNcbiIsIGxpYmxjMy0+ZnJhbWVfdXMgLyAxZTNmKTsKPgo+ IDFlM2YgbWlnaHQgYmUgcmVwbGFjZWQgYnkgYSBzeW1ib2xpYyBjb25zdGFudC9tYWNybwo+Cj4g PiArICAgIGlmIChsaWJsYzMtPmhyX21vZGUpCj4gPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19JTkZPLCAiSGlnaC1yZXNvbHV0aW9uIG1vZGUgZW5hYmxlZFxuIik7Cj4gPiArCj4gPiAr ICAgIGRlY29kZXJfc2l6ZSA9IGxjM19ocl9kZWNvZGVyX3NpemUoCj4gPiArICAgICAgICBsaWJs YzMtPmhyX21vZGUsIGxpYmxjMy0+ZnJhbWVfdXMsIGxpYmxjMy0+c3JhdGVfaHopOwo+ID4gKyAg ICBpZiAoIWRlY29kZXJfc2l6ZSkKPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ID4gKwo+ID4gKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwgY2hhbm5lbHM7IGNoKysp IHsKPiA+ICsgICAgICAgIGxpYmxjMy0+ZGVjb2RlcltjaF0gPSBsYzNfaHJfc2V0dXBfZGVjb2Rl cihsaWJsYzMtPmhyX21vZGUsCj4gPiArICAgICAgICAgICAgbGlibGMzLT5mcmFtZV91cywgbGli bGMzLT5zcmF0ZV9oeiwgMCwKPiBhdl9tYWxsb2MoZGVjb2Rlcl9zaXplKSk7Cj4gPiArICAgICAg ICBpZiAoIWxpYmxjMy0+ZGVjb2RlcltjaF0pCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PTUVNKTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBhdmN0eC0+c2FtcGxlX2ZtdCA9 IEFWX1NBTVBMRV9GTVRfRkxUUDsKPiA+ICsgICAgYXZjdHgtPmRlbGF5ID0gbGMzX2hyX2RlbGF5 X3NhbXBsZXMoCj4gPiArICAgICAgICBsaWJsYzMtPmhyX21vZGUsIGxpYmxjMy0+ZnJhbWVfdXMs IGxpYmxjMy0+c3JhdGVfaHopOwo+ID4gKyAgICBhdmN0eC0+aW50ZXJuYWwtPnNraXBfc2FtcGxl cyA9IGF2Y3R4LT5kZWxheTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBhdl9jb2xkIGludCBsaWJsYzNfZGVjb2RlX2Nsb3NlKEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKPiA+ICt7Cj4gPiArICAgIExpYkxDM0RlY0NvbnRleHQgKmxpYmxjMyA9IGF2Y3R4 LT5wcml2X2RhdGE7Cj4gPiArICAgIGludCBjaGFubmVscyA9IGF2Y3R4LT5jaF9sYXlvdXQubmJf Y2hhbm5lbHM7Cj4gPiArCj4gPiArICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBjaGFubmVsczsg Y2grKykKPiA+ICsgICAgICAgIGF2X2ZyZWUobGlibGMzLT5kZWNvZGVyW2NoXSk7Cj4gPiArCj4g PiArICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGxpYmxjM19kZWNv ZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICpnb3RfZnJhbWVfcHRyLCBBVlBhY2tldCAqYXZwa3QpCj4gPiAr ewo+ID4gKyAgICBMaWJMQzNEZWNDb250ZXh0ICpsaWJsYzMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ ID4gKyAgICBpbnQgY2hhbm5lbHMgPSBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOwo+ID4g KyAgICB1aW50OF90ICppbiA9IGF2cGt0LT5kYXRhOwo+ID4gKyAgICBpbnQgYmxvY2tfYnl0ZXMs IHJldDsKPiA+ICsKPiA+ICsgICAgZnJhbWUtPm5iX3NhbXBsZXMgPSBsYzNfaHJfZnJhbWVfc2Ft cGxlcygKPiA+ICsgICAgICAgIGxpYmxjMy0+aHJfbW9kZSwgbGlibGMzLT5mcmFtZV91cywgbGli bGMzLT5zcmF0ZV9oeik7Cj4gPiArICAgIGlmICgocmV0ID0gZmZfZ2V0X2J1ZmZlcihhdmN0eCwg ZnJhbWUsIDApKSA8IDApCj4gPiArICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICBi bG9ja19ieXRlcyA9IGF2cGt0LT5zaXplOwo+ID4gKyAgICBmb3IgKGludCBjaCA9IDA7IGNoIDwg Y2hhbm5lbHM7IGNoKyspIHsKPiA+ICsgICAgICAgIGludCBmcmFtZV9ieXRlcyA9IGJsb2NrX2J5 dGVzIC8gY2hhbm5lbHMKPiA+ICsgICAgICAgICAgICArIChjaCA8IGJsb2NrX2J5dGVzICUgY2hh bm5lbHMpOwo+ID4gKwo+ID4gKwo+ID4gKyAgICAgICAgcmV0ID0gbGMzX2RlY29kZShsaWJsYzMt PmRlY29kZXJbY2hdLCBpbiwgZnJhbWVfYnl0ZXMsCj4gPiArICAgICAgICAgICAgICAgIExDM19Q Q01fRk9STUFUX0ZMT0FULCBmcmFtZS0+ZGF0YVtjaF0sIDEpOwo+ID4gKyAgICAgICAgaWYgKHJl dCA8IDApCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiAr Cj4gPiArICAgICAgICBpbiArPSBmcmFtZV9ieXRlczsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAg ICBmcmFtZS0+bmJfc2FtcGxlcyA9IEZGTUlOKGZyYW1lLT5uYl9zYW1wbGVzLCBhdnBrdC0+ZHVy YXRpb24pOwo+ID4gKwo+ID4gKyAgICAqZ290X2ZyYW1lX3B0ciA9IDE7Cj4gPiArCj4gPiArICAg IHJldHVybiBhdnBrdC0+c2l6ZTsKPiA+ICt9Cj4gPiArCj4gPiArY29uc3QgRkZDb2RlYyBmZl9s aWJsYzNfbGMzX2RlY29kZXIgPSB7Cj4gPiArICAgIC5wLm5hbWUgICAgICAgICA9ICJsaWJsYzMi LAo+ID4gKyAgICBDT0RFQ19MT05HX05BTUUoIkxDMyAoTG93IENvbXBsZXhpdHkgQ29tbXVuaWNh dGlvbiBDb2RlYykiKSwKPiA+ICsgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX0FV RElPLAo+ID4gKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9MQzMsCj4gPiArICAg IC5wLmNhcGFiaWxpdGllcyA9IEFWX0NPREVDX0NBUF9EUjEsCj4gPiArICAgIC5wLndyYXBwZXJf bmFtZSA9ICJsaWJsYzMiLAo+ID4gKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoTGliTEMz RGVjQ29udGV4dCksCj4gPiArICAgIC5pbml0ICAgICAgICAgICA9IGxpYmxjM19kZWNvZGVfaW5p dCwKPiA+ICsgICAgLmNsb3NlICAgICAgICAgID0gbGlibGMzX2RlY29kZV9jbG9zZSwKPiA+ICsg ICAgRkZfQ09ERUNfREVDT0RFX0NCKGxpYmxjM19kZWNvZGUpLAo+ID4gK307Cj4gPiArCj4gPiAr Y29uc3QgRkZDb2RlYyBmZl9saWJsYzNfbGMzcGx1c19kZWNvZGVyID0gewo+ID4gKyAgICAucC5u YW1lICAgICAgICAgPSAibGlibGMzIiwKPiA+ICsgICAgQ09ERUNfTE9OR19OQU1FKCJMQzNwbHVz IChMb3cgQ29tcGxleGl0eSBDb21tdW5pY2F0aW9uIENvZGVjCj4gcGx1cykiKSwKPiA+ICsgICAg LnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX0FVRElPLAo+ID4gKyAgICAucC5pZCAgICAg ICAgICAgPSBBVl9DT0RFQ19JRF9MQzNfUExVUywKPiA+ICsgICAgLnAuY2FwYWJpbGl0aWVzID0g QVZfQ09ERUNfQ0FQX0RSMSwKPiA+ICsgICAgLnAud3JhcHBlcl9uYW1lID0gImxpYmxjMyIsCj4g PiArICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihMaWJMQzNEZWNDb250ZXh0KSwKPiA+ICsg ICAgLmluaXQgICAgICAgICAgID0gbGlibGMzX2RlY29kZV9pbml0LAo+ID4gKyAgICAuY2xvc2Ug ICAgICAgICAgPSBsaWJsYzNfZGVjb2RlX2Nsb3NlLAo+ID4gKyAgICBGRl9DT0RFQ19ERUNPREVf Q0IobGlibGMzX2RlY29kZSksCj4gPiArfTsKPiA+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xp YmxjM2VuYy5jIGIvbGliYXZjb2RlYy9saWJsYzNlbmMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLjY0OTU3NDJjMDQKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL2xpYmF2Y29kZWMvbGlibGMzZW5jLmMKPiA+IEBAIC0wLDAgKzEsMTkxIEBACj4gPiAr LyoKPiA+ICsgKiBMQzMgZW5jb2RlciB3cmFwcGVyCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDI0 ICBBbnRvaW5lIFNvdWxpZXIgPGFzb3VsaWVyQGdvb2dsZS5jb20+Cj4gPiArICoKPiA+ICsgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvcgo+ IGFueQo+ID4gKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRl ZCwgcHJvdmlkZWQgdGhhdCB0aGUKPiBhYm92ZQo+ID4gKyAqIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCj4gPiArICoKPiA+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVND TEFJTVMgQUxMCj4gV0FSUkFOVElFUwo+ID4gKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdB UkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKPiA+ICsgKiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxF Cj4gRk9SCj4gPiArICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyBPUiBBTlkKPiBEQU1BR0VTCj4gPiArICogV0hBVFNPRVZFUiBSRVNVTFRJ TkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCj4gPiAr ICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElP TiwgQVJJU0lORyBPVVQKPiBPRgo+ID4gKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNF IE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCj4gPiArICovCj4gPiArCj4gPiArI2lu Y2x1ZGUgPGxjMy5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRl LmgiCj4gPiArI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSAi YXZjb2RlYy5oIgo+ID4gKyNpbmNsdWRlICJjb2RlYy5oIgo+ID4gKyNpbmNsdWRlICJjb2RlY19p bnRlcm5hbC5oIgo+ID4gKyNpbmNsdWRlICJlbmNvZGUuaCIKPiA+ICsKPiA+ICsjZGVmaW5lIEVO Q09ERVJfTUFYX0NIQU5ORUxTICAyCj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3QgTGliTEMzRW5j T3B0cyB7Cj4gPiArICAgIGZsb2F0IGZyYW1lX2R1cmF0aW9uOwo+ID4gKyAgICBib29sIGhyX21v ZGU7Cj4gPiArfSBMaWJMQzNFbmNPcHRzOwo+ID4gKwo+ID4gK3R5cGVkZWYgc3RydWN0IExpYkxD M0VuY0NvbnRleHQgewo+ID4gKyAgICBBVkNsYXNzICphdl9jbGFzczsKPiA+ICsgICAgTGliTEMz RW5jT3B0cyBvcHRzOwo+ID4gKyAgICBpbnQgYmxvY2tfYnl0ZXM7Cj4gPiArICAgIGxjM19lbmNv ZGVyX3QgZW5jb2RlcltFTkNPREVSX01BWF9DSEFOTkVMU107Cj4gPiArfSBMaWJMQzNFbmNDb250 ZXh0Owo+ID4gKwo+ID4gK3N0YXRpYyBhdl9jb2xkIGludCBsaWJsYzNfZW5jb2RlX2luaXQoQVZD b2RlY0NvbnRleHQgKmF2Y3R4KQo+ID4gK3sKPiA+ICsgICAgTGliTEMzRW5jQ29udGV4dCAqbGli bGMzID0gYXZjdHgtPnByaXZfZGF0YTsKPiA+ICsgICAgYm9vbCBocl9tb2RlID0gbGlibGMzLT5v cHRzLmhyX21vZGU7Cj4gPiArICAgIGludCBmcmFtZV91cyA9IGxpYmxjMy0+b3B0cy5mcmFtZV9k dXJhdGlvbiAqIDEwMDA7Cj4gPiArICAgIGludCBzcmF0ZV9oeiA9IGF2Y3R4LT5zYW1wbGVfcmF0 ZTsKPiA+ICsgICAgaW50IGNoYW5uZWxzID0gYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsK PiA+ICsgICAgaW50IGVmZmVjdGl2ZV9iaXRfcmF0ZTsKPiA+ICsgICAgdW5zaWduZWQgZW5jb2Rl cl9zaXplOwo+ID4gKwo+ID4gKyAgICBpZiAoZnJhbWVfdXMgIT0gMjUwMCAmJiBmcmFtZV91cyAh PSAgNTAwMCAmJgo+ID4gKyAgICAgICAgZnJhbWVfdXMgIT0gNzUwMCAmJiBmcmFtZV91cyAhPSAx MDAwMCAgICkgewo+ID4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCj4gPiAr ICAgICAgICAgICAgIlVuc3VwcG9ydGVkIGZyYW1lIGR1cmF0aW9uICUuMWYgbXNcbiIsIGZyYW1l X3VzIC8gMWUzZik7Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4gKyAg ICB9Cj4gPiArCj4gPiArICAgIGhyX21vZGUgfD0gc3JhdGVfaHogPiA0ODAwMDsKPiA+ICsgICAg aHJfbW9kZSAmPSBzcmF0ZV9oeiA+PSA0ODAwMDsKPiA+ICsKPiA+ICsgICAgaWYgKGZyYW1lX3Vz IDw9IDUwMDAgfHwgaHJfbW9kZSkKPiA+ICsgICAgICAgIGF2Y3R4LT5jb2RlY19pZCA9IEFWX0NP REVDX0lEX0xDM19QTFVTOwo+ID4gKwo+ID4gKyAgICBpZiAoZnJhbWVfdXMgPT0gNzUwMCAmJiBo cl9tb2RlKSB7Cj4KPiA+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAo+Cj4g PiArICAgICAgICAgICAgIkhpZ2gtcmVvbHV0aW9uIG1vZGUgbm90IHN1cHBvcnRlZCB3aXRoIDcu NSBtcyBmcmFtZXNcbiIpOwo+Cj4gdHlwbwo+Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lO Rk8sICJFbmNvZGluZyAlLjFmIG1zIGZyYW1lc1xuIiwgZnJhbWVfdXMgLwo+IDFlM2YpOwo+ID4g KyAgICBpZiAoaHJfbW9kZSkKPiA+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8s ICJIaWdoLXJlc29sdXRpb24gbW9kZSBlbmFibGVkXG4iKTsKPiA+ICsKPiA+ICsgICAgbGlibGMz LT5ibG9ja19ieXRlcyA9IGxjM19ocl9mcmFtZV9ibG9ja19ieXRlcygKPiA+ICsgICAgICAgIGhy X21vZGUsIGZyYW1lX3VzLCBzcmF0ZV9oeiwgY2hhbm5lbHMsIGF2Y3R4LT5iaXRfcmF0ZSk7Cj4g PiArCj4gPiArICAgIGVmZmVjdGl2ZV9iaXRfcmF0ZSA9IGxjM19ocl9yZXNvbHZlX2JpdHJhdGUo Cj4gPiArICAgICAgICBocl9tb2RlLCBmcmFtZV91cywgc3JhdGVfaHosIGxpYmxjMy0+YmxvY2tf Ynl0ZXMpOwo+ID4gKwo+ID4gKyAgICBpZiAoYXZjdHgtPmJpdF9yYXRlICE9IGVmZmVjdGl2ZV9i aXRfcmF0ZSkKPiA+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1dBUk5JTkcsCj4gPiAr ICAgICAgICAgICAgICAgIkJpdHJhdGUgY2hhbmdlZCB0byAlZCBicHNcbiIsIGVmZmVjdGl2ZV9i aXRfcmF0ZSk7Cj4gPiArICAgIGF2Y3R4LT5iaXRfcmF0ZSA9IGVmZmVjdGl2ZV9iaXRfcmF0ZTsK PiA+ICsKPiA+ICsgICAgZW5jb2Rlcl9zaXplID0gbGMzX2hyX2VuY29kZXJfc2l6ZShmcmFtZV91 cywgZnJhbWVfdXMsIHNyYXRlX2h6KTsKPiA+ICsgICAgaWYgKCFlbmNvZGVyX3NpemUpCj4gPiAr ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ID4gKwo+ID4gKyAgICBmb3IgKGludCBj aCA9IDA7IGNoIDwgY2hhbm5lbHM7IGNoKyspIHsKPgo+ID4gKyAgICAgICAgbGlibGMzLT5lbmNv ZGVyW2NoXSA9IGxjM19ocl9zZXR1cF9lbmNvZGVyKAo+ID4gKyAgICAgICAgICAgIGhyX21vZGUs IGZyYW1lX3VzLCBzcmF0ZV9oeiwgMCwgYXZfbWFsbG9jKGVuY29kZXJfc2l6ZSkpOwo+Cj4gbm90 IHN1cmUgaWYgdGhpcyBjYW4gZmFpbCBmb3IgZGlmZmVyZW50IHJlYXNvbnMgKGUuZy4gaWYgaXQg cGVyZm9ybXMKPiB2YWxpZGF0aW9uKSwgaWYgdGhpcyBpcyB0aGUgY2FzZSBtYXliZSB5b3Ugd2Fu dCB0byBhZGQgYW4gZXhwbGljaXQKPiBjaGVjayBmb3IgbWFsbG9jL0VOT01FTQo+Cj4gWy4uLl0K Pgo+IE5vIG1vcmUgY29tbWVudHMgZnJvbSBtZSwgdGhhbmtzLgo+Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGlu Zm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1h aWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2Ny aWJlIi4K