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 9223A46918 for ; Thu, 24 Aug 2023 18:57:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 958C168C4A5; Thu, 24 Aug 2023 21:57:42 +0300 (EEST) Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68CA368C50B for ; Thu, 24 Aug 2023 21:57:36 +0300 (EEST) Received: by mail-vs1-f43.google.com with SMTP id ada2fe7eead31-447c7607b72so72894137.1 for ; Thu, 24 Aug 2023 11:57:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692903455; x=1693508255; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=gaZSRTb+wVhG3yJE6aBmWqnHBIRgMIcZ28Fql+3vPDM=; b=rT6pvGaD3LqGayotNPiKzS78BeXdMulwb467U/lukToObwdsfkRj4/nZVeTwL04Few xRvcuhKHMucmtiYzoAlJFbt2ecGQhE5TtZuwVQyPMUJwXrCUWCnMF53RmMlf7exCXGeJ So2QWPisx3SiEy2lYFiM0/+4VBmpOKJjVWVyqvWIXF51edLB+u2TMhMpPDjW42cxh8xp vawx0ewFlnqYhe3xrDzPkXWMIgrB04to+MejRN4xGvi6J68JdNXRkduN42cP1GgoDJdO 1L/7GLluejRlwOxaq7bNty6Jpoh+gedGIEBQ3QsxDtgSpvIE7SQwk9QCYJMWJn+nsUT9 zvpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692903455; x=1693508255; 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=gaZSRTb+wVhG3yJE6aBmWqnHBIRgMIcZ28Fql+3vPDM=; b=d9spaIXDSeKbvTgZ9PN+3zIaTUXK/5gdSNUZtlNtDfOr1rQPhwQIFQOfwtYWdTn/g9 11xVcxtZpRq4sitxjhT+Wg553pAD2zJyUL7Ujzo2GtIU4B4tfXbC2WmJo3CGTdYZrWcy 6wD7A8qQNquc6Hq2rDztDDNsFiSvJaxH5Dz1P2qndZCIz3i01mEcNGIzhc1chS6XTU9W m3asCSCg2ecvuq9oPlsTgwO4FVbsvHwyCL7ve29dzee17HQMSx9fOop34EFteTS8EcXZ 2wBn57DwJC0ktYP6yU80rKahRXsMcP7Z0fbKnlQAxnmD/uD224zh+1jl3eYnAxgZm7X3 XnmA== X-Gm-Message-State: AOJu0YwM/OOAfXrjna4Yv949kYoGTxTaRltx4GTI9L9esSowsZcZHOff j8nWiWBz7qAMJr6Ka3g/FII6HrlcGUzQ2BW4aPDROzOi X-Google-Smtp-Source: AGHT+IEEXO1ZuBGznKp58bxCxo3VHpZKAgTCTNdjughsojlevHN7+weEW9Vn9yJoZNLiBsQrfm1+lKnMUGvVy4RdJ8A= X-Received: by 2002:a67:b101:0:b0:44d:4d7f:bcc4 with SMTP id w1-20020a67b101000000b0044d4d7fbcc4mr12467983vsl.5.1692903454658; Thu, 24 Aug 2023 11:57:34 -0700 (PDT) MIME-Version: 1.0 References: <20230824180624.GN7802@pb2> In-Reply-To: <20230824180624.GN7802@pb2> From: Paul B Mahol Date: Thu, 24 Aug 2023 21:04:55 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] OSQ lossless audio format support 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: , Reply-To: FFmpeg development discussions and patches 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: T24gVGh1LCBBdWcgMjQsIDIwMjMgYXQgODowNuKAr1BNIE1pY2hhZWwgTmllZGVybWF5ZXIgPG1p Y2hhZWxAbmllZGVybWF5ZXIuY2M+Cndyb3RlOgoKPiBPbiBUaHUsIEF1ZyAyNCwgMjAyMyBhdCAx MTo1Mjo0NUFNICswMjAwLCBQYXVsIEIgTWFob2wgd3JvdGU6Cj4gPiBQYXRjaGVzIGF0dGFjaGVk Lgo+ID4KPiA+IFN0ZXJlbyBkZWNvZGluZyBoYXZlIHNvbWUgaXNzdWVzIHdpdGggc29tZSBwcmVk aWN0b3JzIHNvIG5vdCB5ZXQKPiBiaXRleGFjdC4KPiA+Cj4gPiBQbGVhc2UgY29tbWVudC4KPgo+ Cj4gWy4uLl0KPiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vc3EuYyBiL2xpYmF2Zm9ybWF0 L29zcS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzZj ZTI1MzEzZgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliYXZmb3JtYXQvb3NxLmMKPiA+ IEBAIC0wLDAgKzEsMTE3IEBACj4gPiArLyoKPiA+ICsgKiBPU1EgZGVtdXhlcgo+ID4gKyAqIENv cHlyaWdodCAoYykgMjAyMyBQYXVsIEIgTWFob2wKPiA+ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KPiA+ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiArICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4g PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCj4gPiArICoKPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCj4gPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gPiArICogRm91bmRh dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+ IDAyMTEwLTEzMDEgVVNBCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmF2dXRpbC9p bnRyZWFkd3JpdGUuaCIKPiA+ICsjaW5jbHVkZSAiYXZpb19pbnRlcm5hbC5oIgo+ID4gKyNpbmNs dWRlICJhdmZvcm1hdC5oIgo+ID4gKyNpbmNsdWRlICJkZW11eC5oIgo+ID4gKyNpbmNsdWRlICJp bnRlcm5hbC5oIgo+ID4gKyNpbmNsdWRlICJyYXdkZWMuaCIKPiA+ICsKPiA+ICtzdGF0aWMgaW50 IG9zcV9wcm9iZShjb25zdCBBVlByb2JlRGF0YSAqcCkKPiA+ICt7Cj4KPiA+ICsgICAgaWYgKEFW X1JMMzIocC0+YnVmKSAhPSBNS1RBRygnTycsJ1MnLCdRJywnICcpKQo+ID4gKyAgICAgICAgcmV0 dXJuIDA7Cj4gPiArICAgIGlmIChBVl9STDMyKHAtPmJ1ZiArIDQpICE9IDQ4KQo+ID4gKyAgICAg ICAgcmV0dXJuIDA7Cj4gPiArICAgIGlmIChBVl9STDE2KHAtPmJ1ZiArIDgpICE9IDEpCj4gPiAr ICAgICAgICByZXR1cm4gMDsKPgo+IHRoaXMgY2FuIGJlIHNpbXBsaWZpZWQgdG8gYSBzaW5nbGUg bWVtY21wKCkgd2l0aCBhIDEwIGJ5dGUgYXJyYXkKPgo+Cm5pdAoKCgo+Cj4gPiArICAgIGlmICgh cC0+YnVmWzEwXSkKPiA+ICsgICAgICAgIHJldHVybiAwOwo+ID4gKyAgICBpZiAoIXAtPmJ1Zlsx MV0pCj4gPiArICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgaWYgKEFWX1JMMzIocC0+YnVmICsg MTIpID09IDApCj4gPiArICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgaWYgKEFWX1JMMTYocC0+ YnVmICsgMTYpID09IDApCj4gPiArICAgICAgICByZXR1cm4gMDsKPgo+IGluY29uc2lzdGFudCwg eW91IG1peCAheCBhbmQgPT0gMCBmb3IgdGhlIHNhbWUga2luZCBvZiBjaGVjawo+Cj4Kbml0LCBj aGFuZ2VkCgoKPgo+ID4gKwo+ID4gKyAgICByZXR1cm4gQVZQUk9CRV9TQ09SRV9NQVg7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgb3NxX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAq cykKPiA+ICt7Cj4gPiArICAgIHVpbnQzMl90IHQsIHNpemU7Cj4gPiArICAgIEFWU3RyZWFtICpz dDsKPiA+ICsgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgdCA9IGF2aW9fcmwzMihzLT5wYik7 Cj4gPiArICAgIGlmICh0ICE9IE1LVEFHKCdPJywnUycsJ1EnLCcgJykpCj4gPiArICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAgc2l6ZSA9IGF2aW9fcmwz MihzLT5wYik7Cj4gPiArICAgIGlmIChzaXplICE9IDQ4KQo+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiArCj4gPiArICAgIHN0ID0gYXZmb3JtYXRfbmV3X3N0cmVh bShzLCBOVUxMKTsKPiA+ICsgICAgaWYgKCFzdCkKPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT01FTSk7Cj4gPiArICAgIGlmICgocmV0ID0gZmZfZ2V0X2V4dHJhZGF0YShzLCBzdC0+Y29k ZWNwYXIsIHMtPnBiLCBzaXplKSkgPCAwKQo+ID4gKyAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsK Pgo+ID4gKyAgICB0ID0gYXZpb19ybDMyKHMtPnBiKTsKPiA+ICsgICAgaWYgKHQgIT0gTUtUQUco J1InLCdJJywnRicsJ0YnKSkKPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB Owo+ID4gKyAgICBhdmlvX3NraXAocy0+cGIsIDgpOwo+ID4gKwo+ID4gKyAgICB0ID0gYXZpb19y bDMyKHMtPnBiKTsKPiA+ICsgICAgaWYgKHQgIT0gTUtUQUcoJ2YnLCdtJywndCcsJyAnKSkKPiA+ ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gKyAgICBzaXplID0gYXZp b19ybDMyKHMtPnBiKTsKPiA+ICsgICAgYXZpb19za2lwKHMtPnBiLCBzaXplKTsKPiA+ICsKPiA+ ICsgICAgdCA9IGF2aW9fcmwzMihzLT5wYik7Cj4gPiArICAgIHNpemUgPSBhdmlvX3JsMzIocy0+ cGIpOwo+ID4gKyAgICB3aGlsZSAodCAhPSBNS1RBRygnZCcsJ2EnLCd0JywnYScpKSB7Cj4gPiAr ICAgICAgICBhdmlvX3NraXAocy0+cGIsIHNpemUpOwo+ID4gKwo+ID4gKyAgICAgICAgdCA9IGF2 aW9fcmwzMihzLT5wYik7Cj4gPiArICAgICAgICBzaXplID0gYXZpb19ybDMyKHMtPnBiKTsKPiA+ ICsgICAgICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKQo+ID4gKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gKyAgICB9Cj4KPiBUaGlzIGxvb2tzIGZhbWlsaWFyLCBj YW4gY29kZSBiZSBzaGFyZWQgd2l0aCBvdGhlciBSSUZGIGJhc2VkIGZvcm1hdHMgPwo+Cj4KSWYg aXRzIHJlYWxseSBjcml0aWNhbCwgbWF5YmUgbGF0ZXIuCgoKPgo+ID4gKwo+ID4gKyAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX3R5cGUgID0gQVZNRURJQV9UWVBFX0FVRElPOwo+ID4gKyAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX2lkICAgID0gQVZfQ09ERUNfSURfT1NROwo+ID4gKyAgICBzdC0+Y29k ZWNwYXItPnNhbXBsZV9yYXRlID0gQVZfUkwzMihzdC0+Y29kZWNwYXItPmV4dHJhZGF0YSArIDQp Owo+ID4gKyAgICBpZiAoc3QtPmNvZGVjcGFyLT5zYW1wbGVfcmF0ZSA9PSAwKQo+ID4gKyAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4KPiBtaXNzaW5nIGNoZWNrIGZvciBuZWdh dGl2ZSBudW1iZXJzCj4KCmZpeGVkCgoKPgo+Cj4gWy4uLl0KPiA+IGRpZmYgLS1naXQgYS9saWJh dmNvZGVjL29zcS5jIGIvbGliYXZjb2RlYy9vc3EuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiA+IGluZGV4IDAwMDAwMDAwMDAuLmI2ZGM1YzFiYjQKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsr KyBiL2xpYmF2Y29kZWMvb3NxLmMKPiA+IEBAIC0wLDAgKzEsNDM1IEBACj4gPiArLyoKPiA+ICsg KiBPU1EgYXVkaW8gZGVjb2Rlcgo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBQYXVsIEIgTWFo b2wKPiA+ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ICsgKgo+ ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiArICoKPiA+ ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKPiA+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gPiArICovCj4g PiArCj4KPiA+ICsjZGVmaW5lIEFTU0VSVF9MRVZFTCA1Cj4KPiB0aGF0IGxvb2tzIHN0cmFuZ2UK PiBhc3NlcnQgbGV2ZWwgaXMgc2V0IGJ5IHRoZSB1c2VyIGJ1aWxkaW5nIHRoaXMsIGFsc28gdGhl cmUgaXMgbm8gbGV2ZWwgNQo+Cj4KcmVtb3ZlZAoKCj4KPiA+ICsjaW5jbHVkZSAibGliYXZ1dGls L2F2YXNzZXJ0LmgiCj4gPiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgo+ID4gKyNp bmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCj4gPiArI2luY2x1ZGUgImF2Y29kZWMu aCIKPiA+ICsjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKPiA+ICsjaW5jbHVkZSAiZGVjb2Rl LmgiCj4gPiArI2luY2x1ZGUgImludGVybmFsLmgiCj4gPiArI2RlZmluZSBCSVRTVFJFQU1fUkVB REVSX0xFCj4gPiArI2luY2x1ZGUgImdldF9iaXRzLmgiCj4gPiArI2luY2x1ZGUgInVuYXJ5Lmgi Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3QgT1NRQ2hhbm5lbCB7Cj4gPiArICAgIGludCBwcmVk aWN0aW9uOwo+ID4gKyAgICBpbnQgY29kaW5nX21vZGU7Cj4gPiArICAgIGludCByZXNpZHVlX3Bh cmFtZXRlcjsKPiA+ICsgICAgaW50IHJlc2lkdWVfYml0czsKPiA+ICt9IE9TUUNoYW5uZWw7Cj4g PiArCj4gPiArdHlwZWRlZiBzdHJ1Y3QgT1NRQ29udGV4dCB7Cj4gPiArICAgIEdldEJpdENvbnRl eHQgZ2I7Cj4gPiArICAgIE9TUUNoYW5uZWwgY2hbMl07Cj4gPiArCj4gPiArICAgIHVpbnQ4X3Qg KmJpdHN0cmVhbTsKPgo+ID4gKyAgICBpbnQ2NF90IG1heF9mcmFtZXNpemU7Cj4KPiBpIHRoaW5r IHRoZSBtYXhfZnJhbWVzaXplIGZpdHMgaW4gMjliaXRzIGN1cnJlbnRseSBzbyA2NCBzaG91bGQg bm90IGJlCj4gbmVlZGVkCj4KPgpFdmVuIGlmIHRoYXQgaXMgdHJ1ZSwgYXJndW1lbnQgdG8gZnVu Y3Rpb24gaXMgc2l6ZV90LCBzbyBjaGFuZ2VkIHRvIHRoYXQKb25lLgoKCj4KPiBbLi4uXQo+Cj4K PiA+ICsKPiA+ICsgICAgcy0+Yml0c3RyZWFtID0gYXZfY2FsbG9jKHMtPm1heF9mcmFtZXNpemUg Kwo+IEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUsIHNpemVvZigqcy0+Yml0c3RyZWFtKSk7 Cj4gPiArICAgIGlmICghcy0+Yml0c3RyZWFtKQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKPiA+ICsKPiA+ICsgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IGF2Y3R4LT5jaF9s YXlvdXQubmJfY2hhbm5lbHM7IGNoKyspIHsKPiA+ICsgICAgICAgIHMtPmRlY29kZV9idWZmZXJb Y2hdID0gYXZfY2FsbG9jKHMtPmZyYW1lX3NhbXBsZXMgKyA0LAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpzLT5kZWNvZGVfYnVmZmVyW2NoXSkp Owo+ID4gKyAgICAgICAgaWYgKCFzLT5kZWNvZGVfYnVmZmVyW2NoXSkKPiA+ICsgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHMtPnBr dCA9IGF2Y3R4LT5pbnRlcm5hbC0+aW5fcGt0Owo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHVpbnQzMl90IGdldF91cmljZShHZXRCaXRDb250ZXh0ICpn YiwgaW50IGspCj4gPiArewo+ID4gKyAgICB1aW50MzJfdCB6LCB4LCBiOwo+ID4gKwo+ID4gKyAg ICB4ID0gZ2V0X3VuYXJ5KGdiLCAxLCA1MTIpOwo+ID4gKyAgICBiID0gZ2V0X2JpdHNfbG9uZyhn YiwgayAmIDMxKTsKPiA+ICsgICAgeiA9IGIgfCB4IDw8IChrICYgMzEpOwo+Cj4gdGhlIGsgJiAz MSBzZWVtcyB1bm5lZWRlZAo+CgpSZW1vdmVkCgoKPgo+Cj4gWy4uLl0KPiA+ICsgICAgICAgIH0K PiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzMyUDoKPiA+ ICsgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5u ZWxzOyBjaCsrKSB7Cj4gPiArICAgICAgICAgICAgaW50MzJfdCAqZHN0ID0gKGludDMyX3QgKilm cmFtZS0+ZXh0ZW5kZWRfZGF0YVtjaF07Cj4gPiArICAgICAgICAgICAgaW50MzJfdCAqc3JjID0g cy0+ZGVjb2RlX2J1ZmZlcltjaF0gKyA0Owo+ID4gKwo+ID4gKyAgICAgICAgICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgZnJhbWUtPm5iX3NhbXBsZXM7IG4rKykKPiA+ICsgICAgICAgICAgICAgICAg ZHN0W25dID0gc3JjW25dOwo+Cj4gbWVtY3B5KCkgdW5sZXNzIHRoZXNlIGNhbiBvdmVybGFwCj4K PgpiaXQgZGVwdGggaXMgbm90IGFsd2F5cyAzMiBhbmQgdGh1cyBub3QgZ29pbmcgaW50byB0aGF0 IGRpcmVjdGlvbi4KQnV0ID4xNmJpdCBuZWVkIHRvIGJlIHlldCB0ZXN0ZWQuCgoKPiB0aHgKPgo+ Cj4gWy4uLl0KPgo+IC0tCj4gTWljaGFlbCAgICAgR251UEcgZmluZ2VycHJpbnQ6IDlGRjIxMjhC MTQ3RUY2NzMwQkFERjEzMzYxMUVDNzg3MDQwQjBGQUIKPgo+IFdoaWxlIHRoZSBTdGF0ZSBleGlz dHMgdGhlcmUgY2FuIGJlIG5vIGZyZWVkb207IHdoZW4gdGhlcmUgaXMgZnJlZWRvbSB0aGVyZQo+ IHdpbGwgYmUgbm8gU3RhdGUuIC0tIFZsYWRpbWlyIExlbmluCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0 Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9s aXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3Zl LCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=