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 B53384A9A5 for ; Wed, 5 Jun 2024 22:58:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EF29D68D60A; Thu, 6 Jun 2024 01:58:53 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (smtp1.dnsmadeeasy.com [208.94.147.128]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0D7EE68C2E3 for ; Thu, 6 Jun 2024 01:58:48 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (localhost [127.0.0.1]) by smtp1.dnsmadeeasy.com (Postfix) with ESMTP id 366822F8014C; Wed, 5 Jun 2024 22:58:46 +0000 (UTC) X-Authenticated-Name: nate@nmssoftware.com Received: from stor01 (unknown [129.224.199.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp1.dnsmadeeasy.com (Postfix) with ESMTPSA; Wed, 5 Jun 2024 22:58:46 +0000 (UTC) Received: from marcus.forced.laptop (unknown [192.168.26.125]) by stor01 (Postfix) with ESMTP id 31F781ECDF1; Wed, 5 Jun 2024 17:58:45 -0500 (CDT) From: Marcus B Spencer To: ffmpeg-devel@ffmpeg.org Date: Wed, 5 Jun 2024 17:58:40 -0500 Message-ID: <20240605225843.402174-1-marcus@marcusspencer.xyz> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v7] avcodec: add farbfeld encoder, decoder and demuxer 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 Cc: Marcus B Spencer 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: ZmFyYmZlbGQgaXMgYW4gdW5jb21wcmVzc2VkIGltYWdlIGZvcm1hdCB0aGF0IGlzIGEgcGFydCBv ZiBzdWNrbGVzcwp0b29scyAoaHR0cHM6Ly90b29scy5zdWNrbGVzcy5vcmcpLgoKSXRzIGRvY3Vt ZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdG9vbHMuc3Vja2xlc3Mub3JnL2ZhcmJm ZWxkLgoKQWRkIHN1cHBvcnQgZm9yIHRoaXMgaW1hZ2UgZm9ybWF0IGluIGF2Y29kZWMgYW5kIGF2 Zm9ybWF0LCBhbmQgdXBkYXRlIHRoZSBpbWFnZTIKZm9ybWF0IGFjY29yZGluZ2x5LgoKU2lnbmVk LW9mZi1ieTogTWFyY3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6PgotLS0K IENoYW5nZWxvZyAgICAgICAgICAgICAgICAgfCAgMSArCiBkb2MvZ2VuZXJhbF9jb250ZW50cy50 ZXhpIHwgIDIgKwogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICB8ICAyICsKIGxpYmF2Y29kZWMv YWxsY29kZWNzLmMgICAgfCAgMiArCiBsaWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyAgIHwgIDcgKysr CiBsaWJhdmNvZGVjL2NvZGVjX2lkLmggICAgIHwgIDEgKwogbGliYXZjb2RlYy9mYXJiZmVsZGRl Yy5jICB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmNvZGVj L2ZhcmJmZWxkZW5jLmMgIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBsaWJhdmNvZGVjL3ZlcnNpb24uaCAgICAgIHwgIDIgKy0KIGxpYmF2Zm9ybWF0L01ha2Vm aWxlICAgICAgfCAgMSArCiBsaWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMgIHwgIDEgKwogbGliYXZm b3JtYXQvaW1nMi5jICAgICAgICB8ICAxICsKIGxpYmF2Zm9ybWF0L2ltZzJkZWMuYyAgICAgfCAx NiArKysrKysrCiBsaWJhdmZvcm1hdC9pbWcyZW5jLmMgICAgIHwgIDIgKy0KIGxpYmF2Zm9ybWF0 L3ZlcnNpb24uaCAgICAgfCAgNCArLQogMTUgZmlsZXMgY2hhbmdlZCwgMjExIGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9mYXJiZmVs ZGRlYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9mYXJiZmVsZGVuYy5jCgpkaWZm IC0tZ2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdlbG9nCmluZGV4IDAzZDZiMjlhZDguLjEwMmM3MThm ZmMgMTAwNjQ0Ci0tLSBhL0NoYW5nZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTEyLDYgKzEyLDcg QEAgdmVyc2lvbiA8bmV4dD46CiAtIHFzdl9wYXJhbXMgb3B0aW9uIGFkZGVkIGZvciBRU1YgZW5j b2RlcnMKIC0gVlZDIGRlY29kZXIgY29tcGF0aWJsZSB3aXRoIERWQiB0ZXN0IGNvbnRlbnQKIC0g eEhFLUFBQyBkZWNvZGVyCistIGZhcmJmZWxkIGVuY29kZXIsIGRlY29kZXIgYW5kIGRlbXV4ZXIK IAogCiB2ZXJzaW9uIDcuMDoKZGlmZiAtLWdpdCBhL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkg Yi9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCmluZGV4IGU3Y2Y0ZjgyMzkuLmZhYjMwNjEwYTQg MTAwNjQ0Ci0tLSBhL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkKKysrIGIvZG9jL2dlbmVyYWxf Y29udGVudHMudGV4aQpAQCAtODUzLDYgKzg1Myw4IEBAIGZvbGxvd2luZyBpbWFnZSBmb3JtYXRz IGFyZSBzdXBwb3J0ZWQ6CiAgICAgQHRhYiBYIFBpeE1hcCBpbWFnZSBmb3JtYXQKIEBpdGVtIFhX RCAgQHRhYiBYIEB0YWIgWAogICAgIEB0YWIgWCBXaW5kb3cgRHVtcCBpbWFnZSBmb3JtYXQKK0Bp dGVtIEZGICAgICAgICAgICBAdGFiIFggQHRhYiBYCisgICAgQHRhYiBmYXJiZmVsZCB1bmNvbXBy ZXNzZWQgaW1hZ2UgZm9ybWF0CiBAZW5kIG11bHRpdGFibGUKIAogQGNvZGV7WH0gbWVhbnMgdGhh dCB0aGUgZmVhdHVyZSBpbiB0aGF0IGNvbHVtbiAoZW5jb2RpbmcgLyBkZWNvZGluZykgaXMgc3Vw cG9ydGVkLgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFr ZWZpbGUKaW5kZXggOGFiNDM5OGI2Yy4uMDhhM2QzOWFmMCAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBAIC0zNTYsNiArMzU2LDggQEAg T0JKUy0kKENPTkZJR19FU0NBUEUxMzBfREVDT0RFUikgICAgICAgKz0gZXNjYXBlMTMwLm8KIE9C SlMtJChDT05GSUdfRVZSQ19ERUNPREVSKSAgICAgICAgICAgICs9IGV2cmNkZWMubyBhY2VscF92 ZWN0b3JzLm8gbHNwLm8KIE9CSlMtJChDT05GSUdfRVhSX0RFQ09ERVIpICAgICAgICAgICAgICs9 IGV4ci5vIGV4cmRzcC5vIGhhbGYyZmxvYXQubwogT0JKUy0kKENPTkZJR19FWFJfRU5DT0RFUikg ICAgICAgICAgICAgKz0gZXhyZW5jLm8gZmxvYXQyaGFsZi5vCitPQkpTLSQoQ09ORklHX0ZBUkJG RUxEX0RFQ09ERVIpICAgICAgICArPSBmYXJiZmVsZGRlYy5vCitPQkpTLSQoQ09ORklHX0ZBUkJG RUxEX0VOQ09ERVIpICAgICAgICArPSBmYXJiZmVsZGVuYy5vCiBPQkpTLSQoQ09ORklHX0ZBU1RB VURJT19ERUNPREVSKSAgICAgICArPSBmYXN0YXVkaW8ubwogT0JKUy0kKENPTkZJR19GRlYxX0RF Q09ERVIpICAgICAgICAgICAgKz0gZmZ2MWRlYy5vIGZmdjEubwogT0JKUy0kKENPTkZJR19GRlYx X0VOQ09ERVIpICAgICAgICAgICAgKz0gZmZ2MWVuYy5vIGZmdjEubwpkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9hbGxjb2RlY3MuYyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKaW5kZXggYjEwMmE4 MDY5ZS4uOWY5ZWRhOGVjNiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hbGxjb2RlY3MuYworKysg Yi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCkBAIC0xMTUsNiArMTE1LDggQEAgZXh0ZXJuIGNvbnN0 IEZGQ29kZWMgZmZfZXNjYXBlMTI0X2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9l c2NhcGUxMzBfZGVjb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2V4cl9lbmNvZGVyOwog ZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfZXhyX2RlY29kZXI7CitleHRlcm4gY29uc3QgRkZDb2Rl YyBmZl9mYXJiZmVsZF9kZWNvZGVyOworZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfZmFyYmZlbGRf ZW5jb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2ZmdjFfZW5jb2RlcjsKIGV4dGVybiBj b25zdCBGRkNvZGVjIGZmX2ZmdjFfZGVjb2RlcjsKIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2Zm dmh1ZmZfZW5jb2RlcjsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jIGIvbGli YXZjb2RlYy9jb2RlY19kZXNjLmMKaW5kZXggYTI4ZWY2ODA2MS4uMzNkYmQyY2U5NCAxMDA2NDQK LS0tIGEvbGliYXZjb2RlYy9jb2RlY19kZXNjLmMKKysrIGIvbGliYXZjb2RlYy9jb2RlY19kZXNj LmMKQEAgLTE5NTksNiArMTk1OSwxMyBAQCBzdGF0aWMgY29uc3QgQVZDb2RlY0Rlc2NyaXB0b3Ig Y29kZWNfZGVzY3JpcHRvcnNbXSA9IHsKICAgICAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09O RklHX1NNQUxMKCJMRUFEIE1DTVAiKSwKICAgICAgICAgLnByb3BzICAgICA9IEFWX0NPREVDX1BS T1BfSU5UUkFfT05MWSB8IEFWX0NPREVDX1BST1BfTE9TU1ksCiAgICAgfSwKKyAgICB7CisgICAg ICAgIC5pZCAgICAgICAgPSBBVl9DT0RFQ19JRF9GQVJCRkVMRCwKKyAgICAgICAgLnR5cGUgICAg ICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgLm5hbWUgICAgICA9ICJmYXJiZmVsZCIs CisgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiZmFyYmZlbGQgdW5j b21wcmVzc2VkIGltYWdlIiksCisgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9QX0lO VFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NMRVNTLAorICAgIH0sCiAKICAgICAvKiB2YXJp b3VzIFBDTSAiY29kZWNzIiAqLwogICAgIHsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY29kZWNf aWQuaCBiL2xpYmF2Y29kZWMvY29kZWNfaWQuaAppbmRleCAwYWIxZTM0YTYxLi5kNGIwZDIzZjdl IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2NvZGVjX2lkLmgKKysrIGIvbGliYXZjb2RlYy9jb2Rl Y19pZC5oCkBAIC0zMjIsNiArMzIyLDcgQEAgZW51bSBBVkNvZGVjSUQgewogICAgIEFWX0NPREVD X0lEX1JUVjEsCiAgICAgQVZfQ09ERUNfSURfVk1JWCwKICAgICBBVl9DT0RFQ19JRF9MRUFELAor ICAgIEFWX0NPREVDX0lEX0ZBUkJGRUxELAogCiAgICAgLyogdmFyaW91cyBQQ00gImNvZGVjcyIg Ki8KICAgICBBVl9DT0RFQ19JRF9GSVJTVF9BVURJTyA9IDB4MTAwMDAsICAgICAvLy88IEEgZHVt bXkgaWQgcG9pbnRpbmcgYXQgdGhlIHN0YXJ0IG9mIGF1ZGlvIGNvZGVjcwpkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9mYXJiZmVsZGRlYy5jIGIvbGliYXZjb2RlYy9mYXJiZmVsZGRlYy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmI1NjcyNzIyNWMKLS0tIC9kZXYvbnVs bAorKysgYi9saWJhdmNvZGVjL2ZhcmJmZWxkZGVjLmMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq IENvcHlyaWdodCAoYykgMjAyNCBNYXJjdXMgQiBTcGVuY2VyIDxtYXJjdXNAbWFyY3Vzc3BlbmNl ci54eXo+CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg4oCcU29mdHdhcmXigJ0pLCB0 bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg U29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCDigJxBUyBJU+KAnSwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImF2Y29kZWMuaCIKKyNp bmNsdWRlICJieXRlc3RyZWFtLmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKKyNpbmNs dWRlICJkZWNvZGUuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRl ICJ0aHJlYWQuaCIKKworc3RhdGljIGludCBmYXJiZmVsZF9kZWNvZGVfZnJhbWUoQVZDb2RlY0Nv bnRleHQgKmN0eCwgQVZGcmFtZSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCAqZ290X2ZyYW1lLCBBVlBhY2tldCAqcGt0KQoreworICAgIGludCB3aWR0aCwgaGVpZ2h0 OworICAgIEdldEJ5dGVDb250ZXh0IGc7CisgICAgaW50IHJldDsKKworICAgIGJ5dGVzdHJlYW0y X2luaXQoJmcsIHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKKyAgICBieXRlc3RyZWFtMl9za2lwKCZn LCA4KTsKKworICAgIHdpZHRoICA9IGJ5dGVzdHJlYW0yX2dldF9iZTMyKCZnKTsKKyAgICBoZWln aHQgPSBieXRlc3RyZWFtMl9nZXRfYmUzMigmZyk7CisKKyAgICBpZiAoKHJldCA9IGZmX3NldF9k aW1lbnNpb25zKGN0eCwgd2lkdGgsIGhlaWdodCkpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsK KworICAgIGN0eC0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfUkdCQTY0QkU7CisKKyAgICBpZiAoY3R4 LT5za2lwX2ZyYW1lID49IEFWRElTQ0FSRF9BTEwpCisgICAgICAgIHJldHVybiBwa3QtPnNpemU7 CisKKyAgICBpZiAoKHJldCA9IGZmX3RocmVhZF9nZXRfYnVmZmVyKGN0eCwgcCwgMCkpIDwgMCkK KyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGlmICgocmV0ID0gYXZfaW1hZ2VfZ2V0X2J1ZmZl cl9zaXplKGN0eC0+cGl4X2ZtdCwgd2lkdGgsIGhlaWdodCwgMSkpIDwgMCkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZykgPCByZXQp CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgYXZfaW1hZ2VfZmls bF9hcnJheXMoCisgICAgICAgIHAtPmRhdGEsCisgICAgICAgIHAtPmxpbmVzaXplLAorICAgICAg ICBnLmJ1ZmZlciwKKyAgICAgICAgY3R4LT5waXhfZm10LAorICAgICAgICB3aWR0aCwKKyAgICAg ICAgaGVpZ2h0LAorICAgICAgICAxCisgICAgKTsKKworICAgICpnb3RfZnJhbWUgPSAxOworCisg ICAgcmV0dXJuIHBrdC0+c2l6ZTsKK30KKworY29uc3QgRkZDb2RlYyBmZl9mYXJiZmVsZF9kZWNv ZGVyID0geworICAgIC5wLm5hbWUgICAgICAgICA9ICJmYXJiZmVsZCIsCisgICAgQ09ERUNfTE9O R19OQU1FKCJmYXJiZmVsZCB1bmNvbXByZXNzZWQgaW1hZ2UiKSwKKyAgICAucC50eXBlICAgICAg ICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNf SURfRkFSQkZFTEQsCisgICAgLnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFW X0NPREVDX0NBUF9GUkFNRV9USFJFQURTLAorICAgIEZGX0NPREVDX0RFQ09ERV9DQihmYXJiZmVs ZF9kZWNvZGVfZnJhbWUpLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZmFyYmZlbGRlbmMu YyBiL2xpYmF2Y29kZWMvZmFyYmZlbGRlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi40ZGVlODY2MjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9mYXJi ZmVsZGVuYy5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQgTWFy Y3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6PgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg4oCcQVMg SVPigJ0sIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgor I2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZW5jb2RlLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisKKyNkZWZpbmUgSEVBREVSX1NJWkUgMTYKKworc3Rh dGljIGludCBmYXJiZmVsZF9lbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmN0eCwgQVZQYWNr ZXQgKnBrdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUg KnAsIGludCAqZ290X3BhY2tldCkKK3sKKyAgICBpbnQgcmF3X2ltZ19zaXplID0gYXZfaW1hZ2Vf Z2V0X2J1ZmZlcl9zaXplKAorICAgICAgICBwLT5mb3JtYXQsCisgICAgICAgIHAtPndpZHRoLAor ICAgICAgICBwLT5oZWlnaHQsCisgICAgICAgIDEKKyAgICApOworICAgIGludDY0X3QgYnVmX3Np emU7CisgICAgdWludDhfdCAqYnVmOworICAgIGludCByZXQ7CisKKyAgICBpZiAocmF3X2ltZ19z aXplIDwgMCkKKyAgICAgICAgcmV0dXJuIHJhd19pbWdfc2l6ZTsKKworI2lmIElOVF9NQVggPiBJ TlQ2NF9NQVggLSBIRUFERVJfU0laRQorICAgIGlmIChyYXdfaW1nX3NpemUgPiBJTlQ2NF9NQVgg LSBIRUFERVJfU0laRSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRVJBTkdFKTsKKyNlbmRpZgor CisgICAgYnVmX3NpemUgPSAoaW50NjRfdClyYXdfaW1nX3NpemUgKyBIRUFERVJfU0laRTsKKwor ICAgIGlmICgocmV0ID0gZmZfZ2V0X2VuY29kZV9idWZmZXIoY3R4LCBwa3QsIGJ1Zl9zaXplLCAw KSkgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgYnVmID0gcGt0LT5kYXRhOworCisg ICAgYnl0ZXN0cmVhbV9wdXRfYnVmZmVyKCZidWYsICJmYXJiZmVsZCIsIDgpOworCisgICAgYnl0 ZXN0cmVhbV9wdXRfYmUzMigmYnVmLCBjdHgtPndpZHRoKTsKKyAgICBieXRlc3RyZWFtX3B1dF9i ZTMyKCZidWYsIGN0eC0+aGVpZ2h0KTsKKworICAgIGF2X2ltYWdlX2NvcHlfdG9fYnVmZmVyKAor ICAgICAgICBidWYsCisgICAgICAgIHJhd19pbWdfc2l6ZSwKKyAgICAgICAgKGNvbnN0IHVpbnQ4 X3QgKmNvbnN0ICopcC0+ZGF0YSwKKyAgICAgICAgcC0+bGluZXNpemUsCisgICAgICAgIHAtPmZv cm1hdCwKKyAgICAgICAgcC0+d2lkdGgsCisgICAgICAgIHAtPmhlaWdodCwKKyAgICAgICAgMQor ICAgICk7CisKKyAgICAqZ290X3BhY2tldCA9IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworY29u c3QgRkZDb2RlYyBmZl9mYXJiZmVsZF9lbmNvZGVyID0geworICAgIC5wLm5hbWUgICAgICAgICA9 ICJmYXJiZmVsZCIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJmYXJiZmVsZCB1bmNvbXByZXNzZWQg aW1hZ2UiKSwKKyAgICAucC50eXBlICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAg LnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfRkFSQkZFTEQsCisgICAgLnAuY2FwYWJpbGl0 aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVDX0NBUF9GUkFNRV9USFJFQURTLAorICAg IEZGX0NPREVDX0VOQ09ERV9DQihmYXJiZmVsZF9lbmNvZGVfZnJhbWUpLAorICAgIC5wLnBpeF9m bXRzICAgICA9IChjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXRbXSl7CisgICAgICAgIEFWX1BJWF9G TVRfUkdCQTY0QkUsCisgICAgICAgIEFWX1BJWF9GTVRfTk9ORQorICAgIH0sCit9OwpkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy92ZXJzaW9uLmggYi9saWJhdmNvZGVjL3ZlcnNpb24uaAppbmRleCBk YTU0Zjg3ODg3Li4zN2M0YzM5NDUxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3ZlcnNpb24uaAor KysgYi9saWJhdmNvZGVjL3ZlcnNpb24uaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAi dmVyc2lvbl9tYWpvci5oIgogCi0jZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgIDYK KyNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SICAgOAogI2RlZmluZSBMSUJBVkNPREVD X1ZFUlNJT05fTUlDUk8gMTAwCiAKICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCAgQVZf VkVSU0lPTl9JTlQoTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SLCBcCmRpZmYgLS1naXQgYS9saWJh dmZvcm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCmluZGV4IDFjNGQ5ZGVjY2Qu LjU4OGEwOTcxNDkgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKyBiL2xpYmF2 Zm9ybWF0L01ha2VmaWxlCkBAIC0yODQsNiArMjg0LDcgQEAgT0JKUy0kKENPTkZJR19JTUFHRV9D UklfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19J TUFHRV9ERFNfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENP TkZJR19JTUFHRV9EUFhfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JK Uy0kKENPTkZJR19JTUFHRV9FWFJfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIu bworT0JKUy0kKENPTkZJR19JTUFHRV9GQVJCRkVMRF9QSVBFX0RFTVVYRVIpKz0gaW1nMmRlYy5v IGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9HRU1fUElQRV9ERU1VWEVSKSAgICAgKz0gaW1n MmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9HSUZfUElQRV9ERU1VWEVSKSAgICAg Kz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9IRFJfUElQRV9ERU1VWEVS KSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYWxsZm9y bWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCmluZGV4IDMwNWZhNDY1MzIuLjY5MDBl ZTgxOTkgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYworKysgYi9saWJhdmZv cm1hdC9hbGxmb3JtYXRzLmMKQEAgLTUzNyw2ICs1MzcsNyBAQCBleHRlcm4gY29uc3QgRkZJbnB1 dEZvcm1hdCAgZmZfaW1hZ2VfY3JpX3BpcGVfZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0 Rm9ybWF0ICBmZl9pbWFnZV9kZHNfcGlwZV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRG b3JtYXQgIGZmX2ltYWdlX2RweF9waXBlX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZv cm1hdCAgZmZfaW1hZ2VfZXhyX3BpcGVfZGVtdXhlcjsKK2V4dGVybiBjb25zdCBGRklucHV0Rm9y bWF0ICBmZl9pbWFnZV9mYXJiZmVsZF9waXBlX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1 dEZvcm1hdCAgZmZfaW1hZ2VfZ2VtX3BpcGVfZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0 Rm9ybWF0ICBmZl9pbWFnZV9naWZfcGlwZV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRG b3JtYXQgIGZmX2ltYWdlX2hkcl9waXBlX2RlbXV4ZXI7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9pbWcyLmMgYi9saWJhdmZvcm1hdC9pbWcyLmMKaW5kZXggOTk4MTg2N2Y4Mi4uNzdlZGM3ZmY5 YiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvaW1nMi5jCisrKyBiL2xpYmF2Zm9ybWF0L2ltZzIu YwpAQCAtOTUsNiArOTUsNyBAQAogICAgIFRBRyhRT0ksICAgICAgICAgICAgIHFvaSAgICAgICkg XAogICAgIFRBRyhSQURJQU5DRV9IRFIsICAgIGhkciAgICAgICkgXAogICAgIFRBRyhXQk1QLCAg ICAgICAgICAgIHdibXAgICAgICkgXAorICAgIFRBRyhGQVJCRkVMRCwgICAgICAgIGZmICAgICAg ICkgXAogICAgIFRBRyhOT05FLCAgICAgICAgICAgICAgICAgICAgICkKIAogI2RlZmluZSBMRU5H VEhfQ0hFQ0soQ09ERUNJRCwgU1RSKSBcCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pbWcyZGVj LmMgYi9saWJhdmZvcm1hdC9pbWcyZGVjLmMKaW5kZXggYTQwNjc1ZDQzNC4uNzAwOTFjNzBmMiAx MDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvaW1nMmRlYy5jCisrKyBiL2xpYmF2Zm9ybWF0L2ltZzJk ZWMuYwpAQCAtMTIwNSw2ICsxMjA1LDIxIEBAIHN0YXRpYyBpbnQgdmJuX3Byb2JlKGNvbnN0IEFW UHJvYmVEYXRhICpwKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGZhcmJmZWxkX3By b2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQoreworICAgIGlmIChwLT5idWZfc2l6ZSA8IDE2KQor ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtZW1jbXAocC0+YnVmLCAiZmFyYmZlbGQiLCA4 KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBjaGVjayBpZiB3aWR0aCBvciBoZWlnaHQg aXMgemVybworICAgIGlmIChBVl9SQjMyKHAtPmJ1ZiArIDgpID09IDAgfHwgQVZfUkIzMihwLT5i dWYgKyAxMikgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gQVZQUk9CRV9T Q09SRV9NQVggLSAxOworfQorCiAjZGVmaW5lIElNQUdFQVVUT19ERU1VWEVSXzAoaW1nbmFtZSwg Y29kZWNpZCkKICNkZWZpbmUgSU1BR0VBVVRPX0RFTVVYRVJfMShpbWduYW1lLCBjb2RlY2lkKVwK IGNvbnN0IEZGSW5wdXRGb3JtYXQgZmZfaW1hZ2VfICMjIGltZ25hbWUgIyMgX3BpcGVfZGVtdXhl ciA9IHtcCkBAIC0xMjM0LDYgKzEyNDksNyBAQCBJTUFHRUFVVE9fREVNVVhFUihjcmksICAgICAg IENSSSkKIElNQUdFQVVUT19ERU1VWEVSKGRkcywgICAgICAgRERTKQogSU1BR0VBVVRPX0RFTVVY RVIoZHB4LCAgICAgICBEUFgpCiBJTUFHRUFVVE9fREVNVVhFUihleHIsICAgICAgIEVYUikKK0lN QUdFQVVUT19ERU1VWEVSKGZhcmJmZWxkLCAgRkFSQkZFTEQpCiBJTUFHRUFVVE9fREVNVVhFUihn ZW0sICAgICAgIEdFTSkKIElNQUdFQVVUT19ERU1VWEVSKGdpZiwgICAgICAgR0lGKQogSU1BR0VB VVRPX0RFTVVYRVJfRVhUKGhkciwgICBSQURJQU5DRV9IRFIsIEhEUikKZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L2ltZzJlbmMuYyBiL2xpYmF2Zm9ybWF0L2ltZzJlbmMuYwppbmRleCA1MjZhMTFl NWVlLi4xMzM1NWE2ZmFkIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9pbWcyZW5jLmMKKysrIGIv bGliYXZmb3JtYXQvaW1nMmVuYy5jCkBAIC0yNzYsNyArMjc2LDcgQEAgY29uc3QgRkZPdXRwdXRG b3JtYXQgZmZfaW1hZ2UyX211eGVyID0gewogICAgIC5wLmxvbmdfbmFtZSAgICA9IE5VTExfSUZf Q09ORklHX1NNQUxMKCJpbWFnZTIgc2VxdWVuY2UiKSwKICAgICAucC5leHRlbnNpb25zICAgPSAi Ym1wLGRweCxleHIsamxzLGpwZWcsanBnLGp4bCxsanBnLHBhbSxwYm0scGN4LHBmbSxwZ20scGdt eXV2LHBobSwiCiAgICAgICAgICAgICAgICAgICAgICAgInBuZyxwcG0sc2dpLHRnYSx0aWYsdGlm ZixqcDIsajJjLGoyayx4d2Qsc3VuLHJhcyxycyxpbTEsaW04LCIKLSAgICAgICAgICAgICAgICAg ICAgICAiaW0yNCxzdW5yYXMsdmJuLHhibSx4ZmFjZSxwaXgseSxhdmlmLHFvaSxoZHIsd2JtcCIs CisgICAgICAgICAgICAgICAgICAgICAgImltMjQsc3VucmFzLHZibix4Ym0seGZhY2UscGl4LHks YXZpZixxb2ksaGRyLHdibXAsZmYiLAogICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWaWRl b011eERhdGEpLAogICAgIC5wLnZpZGVvX2NvZGVjICA9IEFWX0NPREVDX0lEX01KUEVHLAogICAg IC53cml0ZV9oZWFkZXIgICA9IHdyaXRlX2hlYWRlciwKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L3ZlcnNpb24uaCBiL2xpYmF2Zm9ybWF0L3ZlcnNpb24uaAppbmRleCA0Njg3Y2Q4NTdjLi5hZjdk MGExMDI0IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC92ZXJzaW9uLmgKKysrIGIvbGliYXZmb3Jt YXQvdmVyc2lvbi5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNpbmNsdWRlICJ2ZXJzaW9uX21ham9y LmgiCiAKLSNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiAgIDMKLSNkZWZpbmUgTElC QVZGT1JNQVRfVkVSU0lPTl9NSUNSTyAxMDQKKyNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9N SU5PUiAgIDQKKyNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSUNSTyAxMDAKIAogI2RlZmlu ZSBMSUJBVkZPUk1BVF9WRVJTSU9OX0lOVCBBVl9WRVJTSU9OX0lOVChMSUJBVkZPUk1BVF9WRVJT SU9OX01BSk9SLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExJQkFWRk9STUFUX1ZFUlNJT05fTUlOT1IsIFwKLS0gCjIuNDUuMgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcg bGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9s aXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBv ciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiLgo=