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 B36FE44E2C for ; Sun, 26 Feb 2023 15:03:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78DFD68BD2C; Sun, 26 Feb 2023 17:03:17 +0200 (EET) Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3D5D868BA90 for ; Sun, 26 Feb 2023 17:03:11 +0200 (EET) Received: by mail-pj1-f42.google.com with SMTP id kb15so3642661pjb.1 for ; Sun, 26 Feb 2023 07:03:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=AdEqNDgu2t0oSK77KSjiRVby/YKs3BTXDoaxN5NSff8=; b=PGpRvB9umXvJF0nqzR0s79eCAGOCyG2Rd2NbFmsg0MIgO04CxaV8CsitVmuMXMgCbo rhDrTKOg8nZGTyBf5a10ZL3htjGNnULHF8S1+at9rXffPcZUB5i55iGEzXcVioMyBWV0 hIrK+j2hcCkA8d6oF/8vA4bVy+oWYmVPcYllHY8b9v+9dPbOfPHH1gUc4hLI+R7I6aje aGjdvmEIrmmn4K4opQ934uVJKZVo4Z2VeWqwzYQKBkhIUkltuA8c8nwzwlNrcepEMl2g G+FGcwZIZKkfUcBCcp8I7ONIJotTESvbh0I2EjCODLcArzlNGhG78f15oEuZEvZ9XA1S ci5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=AdEqNDgu2t0oSK77KSjiRVby/YKs3BTXDoaxN5NSff8=; b=hlOESY1mx8JoYYaGcGTC3EYMkZD4A++p58qAujhSSWEqjDhZOMS2w2rN5Ei9izzpM6 8NYTIcejnx77Y08H0ecbKs9XVEj3TRBQVT4aCfhzyeWnFXsSWMLLyaKoD8Dg7l2P3in7 5BZV8Y7K6bzlpygk4WQ+waVgUDuUtZbAttH7VA1+gWl/tTPBjBzfKb4Hyj5B1aYdYykM 78uOsmcwdY/QNmYEpFFN626U6JCJauzTEC0YWXnMK4TojaBNazZ3J9MtWFHD/aRxZAtW U5yFatJ0rxeAnXJGTM7dT7arocuqq813ioDg9FLuttCx7VVKd5XavCWhIg/3JLFCB086 WUVg== X-Gm-Message-State: AO0yUKVJchA5jTMsqLel0EZb+eqLuhVf2cKHaytUVGBWIyh5xtabSaul DNr7eFQL+y4zVxixMq/pHD3rixI60eRcGw== X-Google-Smtp-Source: AK7set/hGUMS0vvxRB0GB/JubOfollVPQekcTGbuQVsK68SGQVHbxkSABloxRYPSq5KIaIM5HoOqSg== X-Received: by 2002:a17:902:d2cd:b0:19a:98fd:9c54 with SMTP id n13-20020a170902d2cd00b0019a98fd9c54mr27224282plc.35.1677423788576; Sun, 26 Feb 2023 07:03:08 -0800 (PST) Received: from 192.168.0.104 ([120.245.114.205]) by smtp.gmail.com with ESMTPSA id d19-20020a170902b71300b0019a74841c9bsm2778086pls.192.2023.02.26.07.03.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Feb 2023 07:03:08 -0800 (PST) From: liuyizhuo To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Feb 2023 23:02:56 +0800 Message-Id: <20230226150256.7940-1-yizhuo.liu753@gmail.com> X-Mailer: git-send-email 2.24.3 (Apple Git-128) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_signalstats.c: add new hsl(Hue, Saturation, Lightness) for filter signalstats 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: wangwei1237@gmail.com, "yizhuo.liu753@gmail.com" 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: RnJvbTogInlpemh1by5saXU3NTNAZ21haWwuY29tIiA8eWl6aHVvLmxpdTc1M0BnbWFpbC5jb20+ CgotLS0KIGxpYmF2ZmlsdGVyL3ZmX3NpZ25hbHN0YXRzLmMgfCAyNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTkgaW5zZXJ0aW9ucygrKSwg MjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMu YyBiL2xpYmF2ZmlsdGVyL3ZmX3NpZ25hbHN0YXRzLmMKaW5kZXggYjRkMTAyOTI5Ni4uOTBkYmU4 NTNmYSAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMuYworKysgYi9saWJh dmZpbHRlci92Zl9zaWduYWxzdGF0cy5jCkBAIC0xLDcgKzEsOSBAQAogLyoKICAqIENvcHlyaWdo dCAoYykgMjAxMCBNYXJrIEhlYXRoIG1qcGVnMCBAIHNpbGljb250cmlwIGRvdCBvcmcKLSAqIENv cHlyaWdodCAoYykgMjAxNCBDbMOpbWVudCBCxZNzY2gKKyAqIENvcHlyaWdodCAoYykgMjAxNCBD bMODwqltZW50IELDhcKTc2NoCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTQgRGF2ZSBSaWNlIEBkZXJp Y2VkCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIgV2FuZyBXZWkgPHdhbmd3ZWkxMjM3QGdtYWlsLmNv bT4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBMaXUgeWl6aHVvICA8eWl6aHVvLmxpdTc1M0BnbWFp bC5jb20+CiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgogICoKQEAgLTIzLDgg KzI1LDggQEAKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAi bGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCi0jaW5jbHVk ZSAiZmlsdGVycy5oIgogI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVkZSAibGlic3dzY2Fs ZS9zd3NjYWxlLmgiCiAKIGVudW0gRmlsdGVyTW9kZSB7CiAgICAgRklMVEVSX05PTkUgPSAtMSwK QEAgLTM2LDYgKzM4LDggQEAgZW51bSBGaWx0ZXJNb2RlIHsKIAogdHlwZWRlZiBzdHJ1Y3QgU2ln bmFsc3RhdHNDb250ZXh0IHsKICAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKKyAgICBpbnQgbHVt YWg7ICAgICAgLy8gaGVpZ2h0IG9mIGx1bWEgcGxhbmUKKyAgICBpbnQgbHVtYXc7ICAgICAgLy8g d2lkdGggb2YgbHVtYSBwbGFuZQogICAgIGludCBjaHJvbWFoOyAgICAvLyBoZWlnaHQgb2YgY2hy b21hIHBsYW5lCiAgICAgaW50IGNocm9tYXc7ICAgIC8vIHdpZHRoIG9mIGNocm9tYSBwbGFuZQog ICAgIGludCBoc3ViOyAgICAgICAvLyBob3Jpem9udGFsIHN1YnNhbXBsaW5nCkBAIC01Niw2ICs2 MCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBTaWduYWxzdGF0c0NvbnRleHQgewogCiAgICAgQVZGcmFt ZSAqZnJhbWVfc2F0OwogICAgIEFWRnJhbWUgKmZyYW1lX2h1ZTsKKyAgICBBVkZyYW1lICpmcmFt ZV9yZ2I7CisgICAgCisgICAgaW50ICpoc2xfaDsKKyAgICBpbnQgKmhzbF9zOworICAgIGludCAq aHNsX2w7CiB9IFNpZ25hbHN0YXRzQ29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgVGhyZWFkRGF0 YSB7CkBAIC02NSw5ICs3NCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBUaHJlYWREYXRhIHsKIAogdHlw ZWRlZiBzdHJ1Y3QgVGhyZWFkRGF0YUh1ZVNhdE1ldHJpY3MgewogICAgIGNvbnN0IEFWRnJhbWUg KnNyYzsKLSAgICBBVkZyYW1lICpkc3Rfc2F0LCAqZHN0X2h1ZTsKKyAgICBBVkZyYW1lICpkc3Rf c2F0LCAqZHN0X2h1ZSwgKmRzdF9oLCAqZHN0X3MsICpkc3RfbDsKIH0gVGhyZWFkRGF0YUh1ZVNh dE1ldHJpY3M7CiAKK3R5cGVkZWYgc3RydWN0IFRocmVhZERhdGFIU0xNZXRyaWNzIHsKKyAgICBj b25zdCBBVkZyYW1lICpzcmM7CisgICAgaW50ICpkc3RfaCwgKmRzdF9zLCAqZHN0X2w7Cit9IFRo cmVhZERhdGFIU0xNZXRyaWNzOworCit0eXBlZGVmIGZsb2F0IG51bTsKKworc3RhdGljIGNvbnN0 IGZsb2F0IEVQU0lMT04gPSAxZS05OworCisvKiogQGJyaWVmIEVxdWFsIG9mIEEgYW5kIEIgKi8K KyNkZWZpbmUgRVEoQSxCKSAgICAoKGZhYnMoKEEpIC0gKEIpKSA8IEVQU0lMT04pID8gMSA6IDAp CisKICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKFNpZ25hbHN0YXRzQ29udGV4dCwgeCkKICNk ZWZpbmUgRkxBR1MgQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNfEFWX09QVF9GTEFHX1ZJREVP X1BBUkFNCiAKQEAgLTEwMSw2ICsxMjIsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdChBVkZp bHRlckNvbnRleHQgKmN0eCkKICAgICBzLT55dXZfY29sb3JbMF0gPSAoKCA2NipyICsgMTI5Kmcg KyAgMjUqYiArICgxPDw3KSkgPj4gOCkgKyAgMTY7CiAgICAgcy0+eXV2X2NvbG9yWzFdID0gKCgt MzgqciArIC03NCpnICsgMTEyKmIgKyAoMTw8NykpID4+IDgpICsgMTI4OwogICAgIHMtPnl1dl9j b2xvclsyXSA9ICgoMTEyKnIgKyAtOTQqZyArIC0xOCpiICsgKDE8PDcpKSA+PiA4KSArIDEyODsK KwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMTAsMTEgKzEzMiwxNSBAQCBzdGF0aWMgYXZfY29s ZCB2b2lkIHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICBhdl9mcmFtZV9mcmVlKCZz LT5mcmFtZV9wcmV2KTsKICAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFtZV9zYXQpOwogICAgIGF2 X2ZyYW1lX2ZyZWUoJnMtPmZyYW1lX2h1ZSk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+ZnJhbWVf cmdiKTsKICAgICBhdl9mcmVlcCgmcy0+am9ic19yZXRzKTsKICAgICBhdl9mcmVlcCgmcy0+aGlz dHkpOwogICAgIGF2X2ZyZWVwKCZzLT5oaXN0dSk7CiAgICAgYXZfZnJlZXAoJnMtPmhpc3R2KTsK ICAgICBhdl9mcmVlcCgmcy0+aGlzdHNhdCk7CisgICAgYXZfZnJlZXAoJnMtPmhzbF9oKTsKKyAg ICBhdl9mcmVlcCgmcy0+aHNsX3MpOworICAgIGF2X2ZyZWVwKCZzLT5oc2xfbCk7CiB9CiAKIC8v IFRPRE86IGFkZCBtb3JlCkBAIC0xNTEsNiArMTc3LDIzIEBAIHN0YXRpYyBBVkZyYW1lICphbGxv Y19mcmFtZShlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4Zm10LCBpbnQgdywgaW50IGgpCiAgICAgcmV0 dXJuIGZyYW1lOwogfQogCitzdGF0aWMgaW50IGNvbmZpZ19pbnB1dChBVkZpbHRlckxpbmsgKmlu bGluaykKK3sKKyAgICAvLyBWaWRlbyBpbnB1dCBkYXRhIGF2aWxhYmxlCisgICAgQVZGaWx0ZXJD b250ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKKyAgICBTaWduYWxzdGF0c0NvbnRleHQgKnMgPSBj dHgtPnByaXY7CisgICAgCisgICAgLy8gZnJlZSBwcmV2aW91cyBidWZmZXJzIGluIGNhc2UgdGhl eSBhcmUgYWxsb2NhdGVkIGFscmVhZHkKKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFtZV9yZ2Ip OworICAgIHMtPmZyYW1lX3JnYiA9IGFsbG9jX2ZyYW1lKEFWX1BJWF9GTVRfUkdCMjQsIGlubGlu ay0+dywgaW5saW5rLT5oKTsKKworICAgIGlmICghcy0+ZnJhbWVfcmdiKSB7CisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRp YyBpbnQgY29uZmlnX291dHB1dChBVkZpbHRlckxpbmsgKm91dGxpbmspCiB7CiAgICAgQVZGaWx0 ZXJDb250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7CkBAIC0xNzIsMTIgKzIxNSwyMiBAQCBzdGF0 aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQogICAgIG91dGxpbmst PncgPSBpbmxpbmstPnc7CiAgICAgb3V0bGluay0+aCA9IGlubGluay0+aDsKIAorICAgIHMtPmx1 bWF3ICAgPSBpbmxpbmstPnc7CisgICAgcy0+bHVtYWggICA9IGlubGluay0+aDsKKwogICAgIHMt PmNocm9tYXcgPSBBVl9DRUlMX1JTSElGVChpbmxpbmstPncsIHMtPmhzdWIpOwogICAgIHMtPmNo cm9tYWggPSBBVl9DRUlMX1JTSElGVChpbmxpbmstPmgsIHMtPnZzdWIpOwogCiAgICAgcy0+ZnMg PSBpbmxpbmstPncgKiBpbmxpbmstPmg7CiAgICAgcy0+Y2ZzID0gcy0+Y2hyb21hdyAqIHMtPmNo cm9tYWg7CiAKKyAgICBzLT5oc2xfaCA9IGF2X21hbGxvY19hcnJheShzLT5sdW1haCwgc2l6ZW9m KCpzLT5oc2xfaCkpOworICAgIHMtPmhzbF9zID0gYXZfbWFsbG9jX2FycmF5KHMtPmx1bWFoLCBz aXplb2YoKnMtPmhzbF9zKSk7CisgICAgcy0+aHNsX2wgPSBhdl9tYWxsb2NfYXJyYXkocy0+bHVt YWgsIHNpemVvZigqcy0+aHNsX2wpKTsKKyAgICBpZiAoIXMtPmhzbF9oIHx8ICFzLT5oc2xfcyB8 fCAhcy0+aHNsX2wpIHsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICB9CisK ICAgICBzLT5uYl9qb2JzICAgPSBGRk1BWCgxLCBGRk1JTihpbmxpbmstPmgsIGZmX2ZpbHRlcl9n ZXRfbmJfdGhyZWFkcyhjdHgpKSk7CiAgICAgcy0+am9ic19yZXRzID0gYXZfbWFsbG9jX2FycmF5 KHMtPm5iX2pvYnMsIHNpemVvZigqcy0+am9ic19yZXRzKSk7CiAgICAgaWYgKCFzLT5qb2JzX3Jl dHMpCkBAIC00NTUsNiArNTA4LDExMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICB7TlVM TH0KIH07CiAKK3N0YXRpYyB2b2lkIFlVVjJSR0IoY29uc3QgQVZGcmFtZSogc3JjLCBlbnVtIEFW UGl4ZWxGb3JtYXQgZHN0Rm9ybWF0LCBBVkZyYW1lKiBkc3QpIAoreworICAgIGludCB3aWR0aCAg PSBzcmMtPndpZHRoOworICAgIGludCBoZWlnaHQgPSBzcmMtPmhlaWdodDsKKyAgICAKKyAgICBz dHJ1Y3QgU3dzQ29udGV4dCogY29udmVyc2lvbiA9IE5VTEw7CisgICAgY29udmVyc2lvbiA9IHN3 c19nZXRDb250ZXh0KHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbnVtIEFWUGl4ZWxGb3JtYXQp c3JjLT5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U1dTX0ZBU1RfQklMSU5FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHN3c19zY2FsZShjb252ZXJzaW9uLCAoY29uc3Qg dWludDhfdCAqIGNvbnN0ICopc3JjLT5kYXRhLCBzcmMtPmxpbmVzaXplLCAwLCBoZWlnaHQsIGRz dC0+ZGF0YSwgZHN0LT5saW5lc2l6ZSk7CisgICAgc3dzX2ZyZWVDb250ZXh0KGNvbnZlcnNpb24p OworfQorCisvKiogCisgKiBAYnJpZWYgQ29udmVydCBhbiBzUkdCIGNvbG9yIHRvIEh1ZS1TYXR1 cmF0aW9uLUxpZ2h0bmVzcyAoSFNMKQorICogCisgKiBAcGFyYW0gSCwgUywgTCBwb2ludGVycyB0 byBob2xkIHRoZSByZXN1bHQKKyAqIEBwYXJhbSBSLCBHLCBCIHRoZSBpbnB1dCBzUkdCIHZhbHVl cyBzY2FsZWQgaW4gWzAsMV0KKyAqCisgKiBUaGlzIHJvdXRpbmUgdHJhbnNmb3JtcyBmcm9tIHNS R0IgdG8gdGhlIGRvdWJsZSBoZXhjb25lIEhTTCBjb2xvciBzcGFjZQorICogVGhlIHNSR0IgdmFs dWVzIGFyZSBhc3N1bWVkIHRvIGJlIGJldHdlZW4gMCBhbmQgMS4gIFRoZSBvdXRwdXRzIGFyZQor ICogICBIID0gaGV4YWdvbmFsIGh1ZSBhbmdsZSAgICAgICAgICAgICAgICAoMCA8PSBIIDwgMzYw KSwKKyAqICAgUyA9IHsgQy8oMkwpICAgICBpZiBMIDw9IDEvMiAgICAgICAgICAgKDAgPD0gUyA8 PSAxKSwKKyAqICAgICAgIHsgQy8oMiAtIDJMKSBpZiBMID4gIDEvMgorICogICBMID0gKG1heChS JyxHJyxCJykgKyBtaW4oUicsRycsQicpKS8yICAoMCA8PSBMIDw9IDEpLAorICogd2hlcmUgQyA9 IG1heChSJyxHJyxCJykgLSBtaW4oUicsRycsQicpLgorICoKKyAqIFdpa2lwZWRpYTogaHR0cDov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTVgorICovCitzdGF0aWMgdm9pZCBSR0Iy SFNMKG51bSAqSCwgbnVtICpTLCBudW0gKkwsIG51bSBSLCBudW0gRywgbnVtIEIpCit7CisgICAg bnVtIE1heCA9IEZGTUFYMyhSLCBHLCBCKTsKKyAgICBudW0gTWluID0gRkZNSU4zKFIsIEcsIEIp OworICAgIG51bSBDID0gTWF4IC0gTWluOworCisgICAgKkwgPSAoTWF4ICsgTWluKSAvIDI7Cisg ICAgCisgICAgaWYgKEMgPiAwKSB7CisgICAgICAgIGlmIChFUShNYXgsIFIpKSB7CisgICAgICAg ICAgICAqSCA9IChHIC0gQikgLyBDOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoRyA8 IEIpIHsKKyAgICAgICAgICAgICAgICAqSCArPSA2OworICAgICAgICAgICAgfQorICAgICAgICB9 IGVsc2UgaWYgKEVRKE1heCwgRykpIHsKKyAgICAgICAgICAgICpIID0gMiArIChCIC0gUikgLyBD OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKkggPSA0ICsgKFIgLSBHKSAvIEM7Cisg ICAgICAgIH0KKworICAgICAgICAqSCAqPSA2MDsKKyAgICAgICAgKlMgPSAoKkwgPD0gMC41KSA/ IChDLygyKigqTCkpKSA6IChDLygyIC0gMiooKkwpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg KkggPSAqUyA9IDA7CisgICAgfQorfQorCitzdGF0aWMgaW50IGNvbXB1dGVfaHNsKEFWRmlsdGVy Q29udGV4dCAqY3R4LCB2b2lkICphcmcsIGludCBqb2JuciwgaW50IG5iX2pvYnMpIAoreworICAg IGludCBpLCBqOworICAgIG51bSBILCBTLCBMOworICAgIFRocmVhZERhdGFIU0xNZXRyaWNzICp0 ZCA9IGFyZzsKKyAgICBjb25zdCBTaWduYWxzdGF0c0NvbnRleHQgKnMgPSBjdHgtPnByaXY7Cisg ICAgY29uc3QgQVZGcmFtZSAqc3JjID0gdGQtPnNyYzsKKyAgICBpbnQgKmRzdF9oID0gdGQtPmRz dF9oOworICAgIGludCAqZHN0X3MgPSB0ZC0+ZHN0X3M7CisgICAgaW50ICpkc3RfbCA9IHRkLT5k c3RfbDsKKyAgICAKKyAgICBjb25zdCBpbnQgc2xpY2Vfc3RhcnQgPSAocy0+bHVtYWggKiBqb2Ju ciAgICApIC8gbmJfam9iczsKKyAgICBjb25zdCBpbnQgc2xpY2VfZW5kICAgPSAocy0+bHVtYWgg KiAoam9ibnIrMSkpIC8gbmJfam9iczsKKworICAgIGNvbnN0IGludCBsc3pfc3JjID0gc3JjLT5s aW5lc2l6ZVswXTsKKyAgICBjb25zdCB1aW50OF90ICpwX3NyYyA9IHNyYy0+ZGF0YVswXSArIHNs aWNlX3N0YXJ0ICogbHN6X3NyYzsKKworICAgIGZvciAoaiA9IHNsaWNlX3N0YXJ0OyBqIDwgc2xp Y2VfZW5kOyBqKyspIHsKKyAgICAgICAgaW50IGxpbmVfaCA9IDAsIGxpbmVfcyA9IDAsIGxpbmVf bCA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzLT5sdW1hdzsgaSsrKSB7CisgICAgICAg ICAgICBjb25zdCB1aW50OF90IHJnYnIgPSBwX3NyY1szICogaV07CisgICAgICAgICAgICBjb25z dCB1aW50OF90IHJnYmcgPSBwX3NyY1szICogaSArIDFdOworICAgICAgICAgICAgY29uc3QgdWlu dDhfdCByZ2JiID0gcF9zcmNbMyAqIGkgKyAyXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg UkdCMkhTTCgmSCwgJlMsICZMLCAxLjAgKiByZ2JyIC8gMjU1LCAxLjAgKiByZ2JnIC8gMjU1LCAx LjAgKiByZ2JiIC8gMjU1KTsKKyAgICAgICAgICAgIGxpbmVfaCArPSAodWludDE2X3QpKEggKyAw LjUpOworICAgICAgICAgICAgbGluZV9zICs9ICh1aW50OF90KShTICogMTAwICsgMC41KTsKKyAg ICAgICAgICAgIGxpbmVfbCArPSAodWludDhfdCkoTCAqIDEwMCArIDAuNSk7CisgICAgICAgIH0K KyAgICAgICAgCisgICAgICAgIGRzdF9oW2pdID0gbGluZV9oIC8gcy0+bHVtYXc7CisgICAgICAg IGRzdF9zW2pdID0gbGluZV9zIC8gcy0+bHVtYXc7CisgICAgICAgIGRzdF9sW2pdID0gbGluZV9s IC8gcy0+bHVtYXc7CisKKyAgICAgICAgcF9zcmMgKz0gbHN6X3NyYzsKKyAgICB9CisKKyAgICBy ZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBjb21wdXRlX3NhdF9odWVfbWV0cmljczgoQVZGaWx0 ZXJDb250ZXh0ICpjdHgsIHZvaWQgKmFyZywgaW50IGpvYm5yLCBpbnQgbmJfam9icykKIHsKICAg ICBpbnQgaSwgajsKQEAgLTU2MiwxMSArNzE5LDEyIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1l OChBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmluKQogICAgIGludCBhY2N5LCBhY2N1LCBh Y2N2OwogICAgIGludCBhY2NzYXQsIGFjY2h1ZSA9IDA7CiAgICAgaW50IG1lZGh1ZSwgbWF4aHVl OworICAgIGludCBhdmdoID0gMCwgYXZncyA9IDAsIGF2Z2wgPSAwOwogICAgIGludCB0b3R5ID0g MCwgdG90dSA9IDAsIHRvdHYgPSAwLCB0b3RzYXQ9MDsKICAgICBpbnQgdG90aHVlID0gMDsKICAg ICBpbnQgZGlmeSA9IDAsIGRpZnUgPSAwLCBkaWZ2ID0gMDsKICAgICB1aW50MTZfdCBtYXNreSA9 IDAsIG1hc2t1ID0gMCwgbWFza3YgPSAwOwotICAgIGludCByZXQ7CisKICAgICBpbnQgZmlsdG90 W0ZJTFRfTlVNQl0gPSB7MH07CiAgICAgQVZGcmFtZSAqcHJldjsKIApAQCAtNTg5LDIxICs3NDcs MzQgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWU4KEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFt ZSAqaW4pCiAKICAgICBpZiAocy0+b3V0ZmlsdGVyICE9IEZJTFRFUl9OT05FKSB7CiAgICAgICAg IG91dCA9IGF2X2ZyYW1lX2Nsb25lKGluKTsKLSAgICAgICAgaWYgKCFvdXQpIHsKLSAgICAgICAg ICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0ID0gZmZfaW5saW5rX21ha2VfZnJhbWVfd3JpdGFi bGUobGluaywgJm91dCk7Ci0gICAgICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgICAgICBhdl9m cmFtZV9mcmVlKCZvdXQpOwotICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW4pOwotICAgICAg ICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQorICAgICAgICBhdl9mcmFtZV9tYWtlX3dyaXRh YmxlKG91dCk7CiAgICAgfQogCiAgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBjb21wdXRlX3Nh dF9odWVfbWV0cmljczgsICZ0ZF9odWVzYXQsCiAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwg RkZNSU4ocy0+Y2hyb21haCwgZmZfZmlsdGVyX2dldF9uYl90aHJlYWRzKGN0eCkpKTsKIAorICAg IC8vIENhbGN1bGF0ZSBIU0wgaW5mb3JtYXRpb24uCisgICAgWVVWMlJHQihpbiwgQVZfUElYX0ZN VF9SR0IyNCwgcy0+ZnJhbWVfcmdiKTsKKyAgICBUaHJlYWREYXRhSFNMTWV0cmljcyB0ZF9oc2wg PSB7CisgICAgICAgIC5zcmMgICA9IHMtPmZyYW1lX3JnYiwKKyAgICAgICAgLmRzdF9oID0gcy0+ aHNsX2gsCisgICAgICAgIC5kc3RfcyA9IHMtPmhzbF9zLAorICAgICAgICAuZHN0X2wgPSBzLT5o c2xfbCwKKyAgICB9OworICAgIGZmX2ZpbHRlcl9leGVjdXRlKGN0eCwgY29tcHV0ZV9oc2wsICZ0 ZF9oc2wsCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkZNSU4obGluay0+aCwgZmZfZmls dGVyX2dldF9uYl90aHJlYWRzKGN0eCkpKTsKKyAgICAKKyAgICBpbnQgc3VtaCA9IDAsIHN1bXMg PSAwLCBzdW1sID0gMDsKKyAgICBmb3IgKGogPSAwOyBqIDwgcy0+bHVtYWg7IGorKykgeworICAg ICAgICBzdW1oICs9IHMtPmhzbF9oW2pdOworICAgICAgICBzdW1zICs9IHMtPmhzbF9zW2pdOwor ICAgICAgICBzdW1sICs9IHMtPmhzbF9sW2pdOworICAgIH0KKworICAgIGF2Z2ggPSBzdW1oIC8g cy0+bHVtYWg7CisgICAgYXZncyA9IHN1bXMgLyBzLT5sdW1haDsKKyAgICBhdmdsID0gc3VtbCAv IHMtPmx1bWFoOworCiAgICAgLy8gQ2FsY3VsYXRlIGx1bWEgaGlzdG9ncmFtIGFuZCBkaWZmZXJl bmNlIHdpdGggcHJldmlvdXMgZnJhbWUgb3IgZmllbGQuCiAgICAgbWVtc2V0KHMtPmhpc3R5LCAw LCBzLT5tYXhzaXplICogc2l6ZW9mKCpzLT5oaXN0eSkpOwogICAgIGZvciAoaiA9IDA7IGogPCBs aW5rLT5oOyBqKyspIHsKQEAgLTc0Niw2ICs5MTcsMTAgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJh bWU4KEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqaW4pCiAgICAgU0VUX01FVEEoIkhVRU1F RCIsICAiJWQiLCBtZWRodWUpOwogICAgIFNFVF9NRVRBKCJIVUVBVkciLCAgIiVnIiwgMS4wICog dG90aHVlIC8gcy0+Y2ZzKTsKIAorICAgIFNFVF9NRVRBKCJIQVZHIiwgICAgIiVkIiwgYXZnaCk7 CisgICAgU0VUX01FVEEoIlNBVkciLCAgICAiJWQiLCBhdmdzKTsKKyAgICBTRVRfTUVUQSgiTEFW RyIsICAgICIlZCIsIGF2Z2wpOworCiAgICAgU0VUX01FVEEoIllESUYiLCAgICAiJWciLCAxLjAg KiBkaWZ5IC8gcy0+ZnMpOwogICAgIFNFVF9NRVRBKCJVRElGIiwgICAgIiVnIiwgMS4wICogZGlm dSAvIHMtPmNmcyk7CiAgICAgU0VUX01FVEEoIlZESUYiLCAgICAiJWciLCAxLjAgKiBkaWZ2IC8g cy0+Y2ZzKTsKQEAgLTc5Myw2ICs5NjgsNyBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZTE2KEFW RmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqaW4pCiAgICAgaW50IGFjY3ksIGFjY3UsIGFjY3Y7 CiAgICAgaW50IGFjY3NhdCwgYWNjaHVlID0gMDsKICAgICBpbnQgbWVkaHVlLCBtYXhodWU7Cisg ICAgaW50IGF2Z2ggPSAwLCBhdmdzID0gMCwgYXZnbCA9IDA7CiAgICAgaW50NjRfdCB0b3R5ID0g MCwgdG90dSA9IDAsIHRvdHYgPSAwLCB0b3RzYXQ9MDsKICAgICBpbnQ2NF90IHRvdGh1ZSA9IDA7 CiAgICAgaW50NjRfdCBkaWZ5ID0gMCwgZGlmdSA9IDAsIGRpZnYgPSAwOwpAQCAtODAwLDcgKzk3 Niw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lMTYoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZy YW1lICppbikKIAogICAgIGludCBmaWx0b3RbRklMVF9OVU1CXSA9IHswfTsKICAgICBBVkZyYW1l ICpwcmV2OwotICAgIGludCByZXQ7CisKICAgICBBVkZyYW1lICpzYXQgPSBzLT5mcmFtZV9zYXQ7 CiAgICAgQVZGcmFtZSAqaHVlID0gcy0+ZnJhbWVfaHVlOwogICAgIGNvbnN0IHVpbnQxNl90ICpw X3NhdCA9ICh1aW50MTZfdCAqKXNhdC0+ZGF0YVswXTsKQEAgLTgyMCwyMSArOTk2LDM0IEBAIHN0 YXRpYyBpbnQgZmlsdGVyX2ZyYW1lMTYoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lICppbikK IAogICAgIGlmIChzLT5vdXRmaWx0ZXIgIT0gRklMVEVSX05PTkUpIHsKICAgICAgICAgb3V0ID0g YXZfZnJhbWVfY2xvbmUoaW4pOwotICAgICAgICBpZiAoIW91dCkgewotICAgICAgICAgICAgYXZf ZnJhbWVfZnJlZSgmaW4pOwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAg ICAgICAgfQotICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShsaW5r LCAmb3V0KTsKLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIGF2X2ZyYW1lX2Zy ZWUoJm91dCk7Ci0gICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZpbik7Ci0gICAgICAgICAgICBy ZXR1cm4gcmV0OwotICAgICAgICB9CisgICAgICAgIGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUob3V0 KTsKICAgICB9CiAKICAgICBmZl9maWx0ZXJfZXhlY3V0ZShjdHgsIGNvbXB1dGVfc2F0X2h1ZV9t ZXRyaWNzMTYsICZ0ZF9odWVzYXQsCiAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkZNSU4o cy0+Y2hyb21haCwgZmZfZmlsdGVyX2dldF9uYl90aHJlYWRzKGN0eCkpKTsKIAorICAgIC8vIENh bGN1bGF0ZSBIU0wgaW5mb3JtYXRpb24uCisgICAgWVVWMlJHQihpbiwgQVZfUElYX0ZNVF9SR0Iy NCwgcy0+ZnJhbWVfcmdiKTsKKyAgICBUaHJlYWREYXRhSFNMTWV0cmljcyB0ZF9oc2wgPSB7Cisg ICAgICAgIC5zcmMgICA9IHMtPmZyYW1lX3JnYiwKKyAgICAgICAgLmRzdF9oID0gcy0+aHNsX2gs CisgICAgICAgIC5kc3RfcyA9IHMtPmhzbF9zLAorICAgICAgICAuZHN0X2wgPSBzLT5oc2xfbCwK KyAgICB9OworICAgIGZmX2ZpbHRlcl9leGVjdXRlKGN0eCwgY29tcHV0ZV9oc2wsICZ0ZF9oc2ws CisgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkZNSU4obGluay0+aCwgZmZfZmlsdGVyX2dl dF9uYl90aHJlYWRzKGN0eCkpKTsKKyAgICAKKyAgICBpbnQgc3VtaCA9IDAsIHN1bXMgPSAwLCBz dW1sID0gMDsKKyAgICBmb3IgKGogPSAwOyBqIDwgcy0+bHVtYWg7IGorKykgeworICAgICAgICBz dW1oICs9IHMtPmhzbF9oW2pdOworICAgICAgICBzdW1zICs9IHMtPmhzbF9zW2pdOworICAgICAg ICBzdW1sICs9IHMtPmhzbF9sW2pdOworICAgIH0KKworICAgIGF2Z2ggPSBzdW1oIC8gcy0+bHVt YWg7CisgICAgYXZncyA9IHN1bXMgLyBzLT5sdW1haDsKKyAgICBhdmdsID0gc3VtbCAvIHMtPmx1 bWFoOworCiAgICAgLy8gQ2FsY3VsYXRlIGx1bWEgaGlzdG9ncmFtIGFuZCBkaWZmZXJlbmNlIHdp dGggcHJldmlvdXMgZnJhbWUgb3IgZmllbGQuCiAgICAgbWVtc2V0KHMtPmhpc3R5LCAwLCBzLT5t YXhzaXplICogc2l6ZW9mKCpzLT5oaXN0eSkpOwogICAgIGZvciAoaiA9IDA7IGogPCBsaW5rLT5o OyBqKyspIHsKQEAgLTk3Miw2ICsxMTYxLDEwIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lMTYo QVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lICppbikKICAgICBTRVRfTUVUQSgiSFVFTUVEIiwg ICIlZCIsIG1lZGh1ZSk7CiAgICAgU0VUX01FVEEoIkhVRUFWRyIsICAiJWciLCAxLjAgKiB0b3Ro dWUgLyBzLT5jZnMpOwogCisgICAgU0VUX01FVEEoIkhBVkciLCAgICAiJWQiLCBhdmdoKTsKKyAg ICBTRVRfTUVUQSgiU0FWRyIsICAgICIlZCIsIGF2Z3MpOworICAgIFNFVF9NRVRBKCJMQVZHIiwg ICAgIiVkIiwgYXZnbCk7CisgICAgCiAgICAgU0VUX01FVEEoIllESUYiLCAgICAiJWciLCAxLjAg KiBkaWZ5IC8gcy0+ZnMpOwogICAgIFNFVF9NRVRBKCJVRElGIiwgICAgIiVnIiwgMS4wICogZGlm dSAvIHMtPmNmcyk7CiAgICAgU0VUX01FVEEoIlZESUYiLCAgICAiJWciLCAxLjAgKiBkaWZ2IC8g cy0+Y2ZzKTsKQEAgLTEwMDksNiArMTIwMiw3IEBAIHN0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBz aWduYWxzdGF0c19pbnB1dHNbXSA9IHsKICAgICB7CiAgICAgICAgIC5uYW1lICAgICAgICAgICA9 ICJkZWZhdWx0IiwKICAgICAgICAgLnR5cGUgICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVP LAorICAgICAgICAuY29uZmlnX3Byb3BzICAgPSBjb25maWdfaW5wdXQsCiAgICAgICAgIC5maWx0 ZXJfZnJhbWUgICA9IGZpbHRlcl9mcmFtZSwKICAgICB9LAogfTsKLS0gCjIuMjQuMyAoQXBwbGUg R2l0LTEyOCkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K