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 62693428C1 for ; Tue, 5 Apr 2022 16:56:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20B5968B21F; Tue, 5 Apr 2022 19:55:41 +0300 (EEST) Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7761C68AEEF for ; Tue, 5 Apr 2022 19:55:32 +0300 (EEST) Received: by mail-qv1-f51.google.com with SMTP id a5so24227qvx.1 for ; Tue, 05 Apr 2022 09:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/Ikyiswa1pdbKbaKX0Vp/8S5fWmeZ2nYdta+Zf6k/Gw=; b=So5a+AxccKtU6WbhT8xGMmG4XUjhP3Ii3UcjGykifeGCLb30I/nl2L2n/hGBM4UF1C hd/k//c2FvYbuprRLpDz0R94JQ3ccgPA8otJh9muq1r+9H8HLJPI4pP6n65fw15Nff8i l41zODXeGycS/L5902CmEGm5sGiw0C92lfLYmYK9KP/APRjpPlfstmp1eUVwZcrf1Fym JDy5Bcaiw+SieGQOxixmVHRK7LUoM98fPZTZNegYj0qI4Z07GVlESv+ojLZH2mCwJE94 IhAtGaQ+2E5tUkUIGSI80/b0N3ADFtwG8dN6upq12929R9J7Aa0KK+tOT/xPITEKCfk5 p4xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/Ikyiswa1pdbKbaKX0Vp/8S5fWmeZ2nYdta+Zf6k/Gw=; b=ezG5lkloWJFCUQyPdnp/D+9Cu9LO3Azm0vpuJ8Ixye3Ek1Zw0iXR3spGW8hekuHsoV hwvvw2sw+hv2RfuCdAVn1446l7Jbd8y78DlCj5OAh7osrbnksECLWPVouDotiCgFIn8r crajaCqupZN4IFjLVACbFMtkpFnxq92wRhfaYKVm8ILxc9He++5NkUb9ELjagD1cghoN KxBEKoUNYsqk86F0WweNxA5TE2o7aGr3LH3Dp3CMIKbrEvu+GHtfYMWl2D6OJBKvTYTR Wn3VI6w5ZBP1BIkpk7GLzr439r+h5uWtZz/ZH0jGdytCWPd/ZmInEr2vIIQYkzOPFCz1 sQ7A== X-Gm-Message-State: AOAM531Qpbb/5Pp6gzayScete9pFwM6RsWPZooWX0tUw4+oxmPLtXcy9 8Gg0NFgm826kh1tte3jqySTWNuEKSRQ= X-Google-Smtp-Source: ABdhPJxPK/3EJCDOcf6v+/bQOgmck94p9pmlVI/bw8TOjgq8+BafQIquRsVRu11eqVbJFgegqMUZhg== X-Received: by 2002:a05:6214:d41:b0:443:87aa:4d7 with SMTP id 1-20020a0562140d4100b0044387aa04d7mr3738400qvr.26.1649177731039; Tue, 05 Apr 2022 09:55:31 -0700 (PDT) Received: from gauss.local (c-68-41-54-207.hsd1.mi.comcast.net. [68.41.54.207]) by smtp.gmail.com with ESMTPSA id bk15-20020a05620a1a0f00b0067e5bd7a9ccsm8332532qkb.50.2022.04.05.09.55.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Apr 2022 09:55:30 -0700 (PDT) From: Leo Izen To: ffmpeg-devel@ffmpeg.org Date: Tue, 5 Apr 2022 12:55:04 -0400 Message-Id: <20220405165504.29261-5-leo.izen@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405165504.29261-1-leo.izen@gmail.com> References: <20220405165504.29261-1-leo.izen@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v13 4/4] avformat/image2: add Jpeg XL as image2 format 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: Leo Izen 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: VGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IHRvIGxpYmF2Zm9ybWF0IGZvciBtdXhpbmcKYW5kIGRl bXV4aW5nIEpwZWcgWEwgaW1hZ2VzIGFzIGltYWdlMiBzdHJlYW1zLgotLS0KIE1BSU5UQUlORVJT ICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgIHwgICAx ICsKIGxpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyAgIHwgICAxICsKIGxpYmF2Zm9ybWF0L2ltZzIu YyAgICAgICAgIHwgICAxICsKIGxpYmF2Zm9ybWF0L2ltZzJkZWMuYyAgICAgIHwgIDE4ICsrCiBs aWJhdmZvcm1hdC9pbWcyZW5jLmMgICAgICB8ICAgNiArLQogbGliYXZmb3JtYXQvanBlZ3hsX3By b2JlLmMgfCAzOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZm b3JtYXQvanBlZ3hsX3Byb2JlLmggfCAgMzIgKysrCiBsaWJhdmZvcm1hdC9tb3YuYyAgICAgICAg ICB8ICAgMSArCiBsaWJhdmZvcm1hdC92ZXJzaW9uLmggICAgICB8ICAgNCArLQogMTAgZmlsZXMg Y2hhbmdlZCwgNDUzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGliYXZmb3JtYXQvanBlZ3hsX3Byb2JlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmZvcm1hdC9qcGVneGxfcHJvYmUuaAoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRB SU5FUlMKaW5kZXggZmFlYTg0ZWJmMS4uNDY3MjM5NzJkYyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5F UlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTQzOSw2ICs0MzksNyBAQCBNdXhlcnMvRGVtdXhlcnM6 CiAgIGlwbW92aWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlrZSBNZWxhbnNvbgog ICBpcmNhbSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdWwgQiBNYWhvbAogICBp c3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZWZhbiBHZWhyZXIKKyAganBl Z3hsX3Byb2JlLiogICAgICAgICAgICAgICAgICAgICAgICBMZW8gSXplbgogICBqdmRlYy5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBldGVyIFJvc3MKICAga3ZhZy5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaYW5lIHZhbiBJcGVyZW4KICAgbGlibW9kcGx1Zy5jICAg ICAgICAgICAgICAgICAgICAgICAgICBDbMOpbWVudCBCxZNzY2gKZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKaW5kZXggZDcxODJkNmJkOC4u YmVlY2RmNWE2NiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKKysrIGIvbGliYXZm b3JtYXQvTWFrZWZpbGUKQEAgLTI3Miw2ICsyNzIsNyBAQCBPQkpTLSQoQ09ORklHX0lNQUdFX0dJ Rl9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lN QUdFX0oyS19QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09O RklHX0lNQUdFX0pQRUdfUElQRV9ERU1VWEVSKSAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpT LSQoQ09ORklHX0lNQUdFX0pQRUdMU19QSVBFX0RFTVVYRVIpICArPSBpbWcyZGVjLm8gaW1nMi5v CitPQkpTLSQoQ09ORklHX0lNQUdFX0pQRUdYTF9QSVBFX0RFTVVYRVIpICArPSBpbWcyZGVjLm8g aW1nMi5vIGpwZWd4bF9wcm9iZS5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX1BBTV9QSVBFX0RFTVVY RVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX1BCTV9QSVBF X0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX1BD WF9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCmRpZmYgLS1naXQgYS9saWJh dmZvcm1hdC9hbGxmb3JtYXRzLmMgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKaW5kZXggNTg3 YWQ1OWIzYy4uOTQxZjM2NDNmOCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5j CisrKyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwpAQCAtNTEwLDYgKzUxMCw3IEBAIGV4dGVy biBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9pbWFnZV9naWZfcGlwZV9kZW11eGVyOwogZXh0ZXJu IGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2oya19waXBlX2RlbXV4ZXI7CiBleHRlcm4g Y29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfanBlZ19waXBlX2RlbXV4ZXI7CiBleHRlcm4g Y29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfanBlZ2xzX3BpcGVfZGVtdXhlcjsKK2V4dGVy biBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9pbWFnZV9qcGVneGxfcGlwZV9kZW11eGVyOwogZXh0 ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2ltYWdlX3BhbV9waXBlX2RlbXV4ZXI7CiBleHRl cm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfcGJtX3BpcGVfZGVtdXhlcjsKIGV4dGVy biBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9pbWFnZV9wY3hfcGlwZV9kZW11eGVyOwpkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvaW1nMi5jIGIvbGliYXZmb3JtYXQvaW1nMi5jCmluZGV4IDQxNTMx MDJjOTIuLjEzYjFiOTk3YjggMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2ltZzIuYworKysgYi9s aWJhdmZvcm1hdC9pbWcyLmMKQEAgLTg3LDYgKzg3LDcgQEAgY29uc3QgSWRTdHJNYXAgZmZfaW1n X3RhZ3NbXSA9IHsKICAgICB7IEFWX0NPREVDX0lEX0dFTSwgICAgICAgICJpbWciICAgICAgfSwK ICAgICB7IEFWX0NPREVDX0lEX0dFTSwgICAgICAgICJ4aW1nIiAgICAgfSwKICAgICB7IEFWX0NP REVDX0lEX0dFTSwgICAgICAgICJ0aW1nIiAgICAgfSwKKyAgICB7IEFWX0NPREVDX0lEX0pQRUdY TCwgICAgICJqeGwiICAgICAgfSwKICAgICB7IEFWX0NPREVDX0lEX05PTkUsICAgICAgIE5VTEwg ICAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaW1nMmRlYy5jIGIvbGliYXZm b3JtYXQvaW1nMmRlYy5jCmluZGV4IGI5YzA2YzViNTQuLjU2MGQ0NjRkZmYgMTAwNjQ0Ci0tLSBh L2xpYmF2Zm9ybWF0L2ltZzJkZWMuYworKysgYi9saWJhdmZvcm1hdC9pbWcyZGVjLmMKQEAgLTM2 LDYgKzM2LDcgQEAKICNpbmNsdWRlICJhdmlvX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJu YWwuaCIKICNpbmNsdWRlICJpbWcyLmgiCisjaW5jbHVkZSAianBlZ3hsX3Byb2JlLmgiCiAjaW5j bHVkZSAibGliYXZjb2RlYy9tanBlZy5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMveHdkLmgiCiAj aW5jbHVkZSAic3VidGl0bGVzLmgiCkBAIC04MzYsNiArODM3LDIyIEBAIHN0YXRpYyBpbnQganBl Z2xzX3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQogICAgIHJldHVybiAwOwogfQogCitzdGF0 aWMgaW50IGpwZWd4bF9wcm9iZShjb25zdCBBVlByb2JlRGF0YSAqcCkKK3sKKyAgICBjb25zdCB1 aW50OF90ICpiID0gcC0+YnVmOworCisgICAgLyogSVNPQk1GRi1iYXNlZCBjb250YWluZXIgKi8K KyAgICAvKiAweDRhNTg0YzIwID09ICJKWEwgIiAqLworICAgIGlmIChBVl9STDY0KGIpID09IEZG X0pQRUdYTF9DT05UQUlORVJfU0lHTkFUVVJFX0xFKQorICAgICAgICByZXR1cm4gQVZQUk9CRV9T Q09SRV9FWFRFTlNJT04gKyAxOworICAgIC8qIFJhdyBjb2Rlc3RyZWFtcyBhbGwgc3RhcnQgd2l0 aCAweGZmMGEgKi8KKyAgICBpZiAoQVZfUkwxNihiKSAhPSBGRl9KUEVHWExfQ09ERVNUUkVBTV9T SUdOQVRVUkVfTEUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChmZl9qcGVneGxfdmVyaWZ5 X2NvZGVzdHJlYW1faGVhZGVyKHAtPmJ1ZiwgcC0+YnVmX3NpemUpID49IDApCisgICAgICAgIHJl dHVybiBBVlBST0JFX1NDT1JFX01BWCAtIDI7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBp bnQgcGN4X3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQogewogICAgIGNvbnN0IHVpbnQ4X3Qg KmIgPSBwLT5idWY7CkBAIC0xMTY1LDYgKzExODIsNyBAQCBJTUFHRUFVVE9fREVNVVhFUihnaWYs ICAgICAgIEdJRikKIElNQUdFQVVUT19ERU1VWEVSX0VYVChqMmssICAgSlBFRzIwMDAsIEoySykK IElNQUdFQVVUT19ERU1VWEVSX0VYVChqcGVnLCAgTUpQRUcsIEpQRUcpCiBJTUFHRUFVVE9fREVN VVhFUihqcGVnbHMsICAgIEpQRUdMUykKK0lNQUdFQVVUT19ERU1VWEVSKGpwZWd4bCwgICAgSlBF R1hMKQogSU1BR0VBVVRPX0RFTVVYRVIocGFtLCAgICAgICBQQU0pCiBJTUFHRUFVVE9fREVNVVhF UihwYm0sICAgICAgIFBCTSkKIElNQUdFQVVUT19ERU1VWEVSKHBjeCwgICAgICAgUENYKQpkaWZm IC0tZ2l0IGEvbGliYXZmb3JtYXQvaW1nMmVuYy5jIGIvbGliYXZmb3JtYXQvaW1nMmVuYy5jCmlu ZGV4IDliM2I4NzQxYzguLmU2ZWM2YTUwYWEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L2ltZzJl bmMuYworKysgYi9saWJhdmZvcm1hdC9pbWcyZW5jLmMKQEAgLTI2Myw5ICsyNjMsOSBAQCBzdGF0 aWMgY29uc3QgQVZDbGFzcyBpbWcybXV4X2NsYXNzID0gewogY29uc3QgQVZPdXRwdXRGb3JtYXQg ZmZfaW1hZ2UyX211eGVyID0gewogICAgIC5uYW1lICAgICAgICAgICA9ICJpbWFnZTIiLAogICAg IC5sb25nX25hbWUgICAgICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJpbWFnZTIgc2VxdWVuY2Ui KSwKLSAgICAuZXh0ZW5zaW9ucyAgICAgPSAiYm1wLGRweCxleHIsamxzLGpwZWcsanBnLGxqcGcs cGFtLHBibSxwY3gscGZtLHBnbSxwZ215dXYscG5nLCIKLSAgICAgICAgICAgICAgICAgICAgICAi cHBtLHNnaSx0Z2EsdGlmLHRpZmYsanAyLGoyYyxqMmsseHdkLHN1bixyYXMscnMsaW0xLGltOCxp bTI0LCIKLSAgICAgICAgICAgICAgICAgICAgICAic3VucmFzLHhibSx4ZmFjZSxwaXgseSIsCisg ICAgLmV4dGVuc2lvbnMgICAgID0gImJtcCxkcHgsZXhyLGpscyxqcGVnLGpwZyxqeGwsbGpwZyxw YW0scGJtLHBjeCxwZm0scGdtLHBnbXl1diwiCisgICAgICAgICAgICAgICAgICAgICAgInBuZyxw cG0sc2dpLHRnYSx0aWYsdGlmZixqcDIsajJjLGoyayx4d2Qsc3VuLHJhcyxycyxpbTEsaW04LCIK KyAgICAgICAgICAgICAgICAgICAgICAiaW0yNCxzdW5yYXMseGJtLHhmYWNlLHBpeCx5IiwKICAg ICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoVmlkZW9NdXhEYXRhKSwKICAgICAudmlkZW9fY29k ZWMgICAgPSBBVl9DT0RFQ19JRF9NSlBFRywKICAgICAud3JpdGVfaGVhZGVyICAgPSB3cml0ZV9o ZWFkZXIsCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9qcGVneGxfcHJvYmUuYyBiL2xpYmF2Zm9y bWF0L2pwZWd4bF9wcm9iZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmQzZDM4MjJmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9qcGVneGxfcHJvYmUu YwpAQCAtMCwwICsxLDM5MyBAQAorLyoKKyAqIEpwZWcgWEwgaGVhZGVyIHZlcmlmaWNhdGlvbgor ICogQ29weXJpZ2h0IChjKSAyMDIyIExlbyBJemVuIDxsZW8uaXplbkBnbWFpbC5jb20+CisgKgor ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJqcGVneGxfcHJv YmUuaCIKKworI2RlZmluZSBCSVRTVFJFQU1fUkVBREVSX0xFCisjaW5jbHVkZSAibGliYXZjb2Rl Yy9nZXRfYml0cy5oIgorCitlbnVtIEpwZWdYTEV4dHJhQ2hhbm5lbFR5cGUgeworICAgIEZGX0pQ RUdYTF9DVF9BTFBIQSA9IDAsCisgICAgRkZfSlBFR1hMX0NUX0RFUFRILAorICAgIEZGX0pQRUdY TF9DVF9TUE9UX0NPTE9SLAorICAgIEZGX0pQRUdYTF9DVF9TRUxFQ1RJT05fTUFTSywKKyAgICBG Rl9KUEVHWExfQ1RfQkxBQ0ssCisgICAgRkZfSlBFR1hMX0NUX0NGQSwKKyAgICBGRl9KUEVHWExf Q1RfVEhFUk1BTCwKKyAgICBGRl9KUEVHWExfQ1RfTk9OX09QVElPTkFMID0gMTUsCisgICAgRkZf SlBFR1hMX0NUX09QVElPTkFMCit9OworCitlbnVtIEpwZWdYTENvbG9yU3BhY2UgeworICAgIEZG X0pQRUdYTF9DU19SR0IgPSAwLAorICAgIEZGX0pQRUdYTF9DU19HUkFZLAorICAgIEZGX0pQRUdY TF9DU19YWUIsCisgICAgRkZfSlBFR1hMX0NTX1VOS05PV04KK307CisKK2VudW0gSnBlZ1hMV2hp dGVQb2ludCB7CisgICAgRkZfSlBFR1hMX1dQX0Q2NSA9IDEsCisgICAgRkZfSlBFR1hMX1dQX0NV U1RPTSwKKyAgICBGRl9KUEVHWExfV1BfRSA9IDEwLAorICAgIEZGX0pQRUdYTF9XUF9EQ0kgPSAx MQorfTsKKworZW51bSBKcGVnWExQcmltYXJpZXMgeworICAgIEZGX0pQRUdYTF9QUl9TUkdCID0g MSwKKyAgICBGRl9KUEVHWExfUFJfQ1VTVE9NLAorICAgIEZGX0pQRUdYTF9QUl8yMTAwID0gOSwK KyAgICBGRl9KUEVHWExfUFJfUDMgPSAxMSwKK307CisKKyNkZWZpbmUganhsX2JpdHMobikgZ2V0 X2JpdHNfbG9uZyhnYiwgKG4pKQorI2RlZmluZSBqeGxfYml0c19za2lwKG4pIHNraXBfYml0c19s b25nKGdiLCAobikpCisjZGVmaW5lIGp4bF91MzIoYzAsIGMxLCBjMiwgYzMsIHUwLCB1MSwgdTIs IHUzKSBqcGVneGxfdTMyKGdiLCBcCisgICAgKGNvbnN0IHVpbnQzMl90W10pe2MwLCBjMSwgYzIs IGMzfSwgKGNvbnN0IHVpbnQzMl90W10pe3UwLCB1MSwgdTIsIHUzfSkKKyNkZWZpbmUganhsX3U2 NCgpIGpwZWd4bF91NjQoZ2IpCisjZGVmaW5lIGp4bF9lbnVtKCkganhsX3UzMigwLCAxLCAyLCAx OCwgMCwgMCwgNCwgNikKKworLyogcmVhZCBhIFUzMihjX2kgKyB1KHVfaSkpICovCitzdGF0aWMg dWludDMyX3QganBlZ3hsX3UzMihHZXRCaXRDb250ZXh0ICpnYiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGNvbnN0YW50c1s0XSwgY29uc3QgdWludDMyX3QgdWJp dHNbNF0pCit7CisgICAgdWludDMyX3QgcmV0LCBjaG9pY2UgPSBqeGxfYml0cygyKTsKKworICAg IHJldCA9IGNvbnN0YW50c1tjaG9pY2VdOworICAgIGlmICh1Yml0c1tjaG9pY2VdKQorICAgICAg ICByZXQgKz0ganhsX2JpdHModWJpdHNbY2hvaWNlXSk7CisKKyAgICByZXR1cm4gcmV0OworfQor CisvKiByZWFkIGEgVTY0KCkgKi8KK3N0YXRpYyB1aW50NjRfdCBqcGVneGxfdTY0KEdldEJpdENv bnRleHQgKmdiKQoreworICAgIHVpbnQ2NF90IHNoaWZ0ID0gMTIsIHJldDsKKworICAgIHN3aXRj aCAoanhsX2JpdHMoMikpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIHJldCA9IDA7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgcmV0ID0gMSArIGp4bF9iaXRzKDQpOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIHJldCA9IDE3ICsganhsX2JpdHMoOCk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0ID0ganhsX2JpdHMoMTIp OworICAgICAgICB3aGlsZSAoanhsX2JpdHMoMSkpIHsKKyAgICAgICAgICAgIGlmIChzaGlmdCA8 IDYwKSB7CisgICAgICAgICAgICAgICAgcmV0IHw9IGp4bF9iaXRzKDgpIDw8IHNoaWZ0OworICAg ICAgICAgICAgICAgIHNoaWZ0ICs9IDg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgIHJldCB8PSBqeGxfYml0cyg0KSA8PCBzaGlmdDsKKyAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAg ICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdWludDMyX3QganBlZ3hsX3dpZHRoX2Zyb21fcmF0 aW8odWludDMyX3QgaGVpZ2h0LCBpbnQgcmF0aW8pCit7CisgICAgdWludDY0X3QgaGVpZ2h0NjQg PSBoZWlnaHQ7CisgICAgc3dpdGNoIChyYXRpbykgeworICAgIGNhc2UgMToKKyAgICAgICAgcmV0 dXJuIGhlaWdodDsKKyAgICBjYXNlIDI6CisgICAgICAgIHJldHVybiAodWludDMyX3QpKChoZWln aHQ2NCAqIDEyKSAvIDEwKTsKKyAgICBjYXNlIDM6CisgICAgICAgIHJldHVybiAodWludDMyX3Qp KChoZWlnaHQ2NCAqIDQpIC8gMyk7CisgICAgY2FzZSA0OgorICAgICAgICByZXR1cm4gKHVpbnQz Ml90KSgoaGVpZ2h0NjQgKiAzKSAvIDIpOworICAgIGNhc2UgNToKKyAgICAgICAgcmV0dXJuICh1 aW50MzJfdCkoKGhlaWdodDY0ICogMTYpIC8gOSk7CisgICAgY2FzZSA2OgorICAgICAgICByZXR1 cm4gKHVpbnQzMl90KSgoaGVpZ2h0NjQgKiA1KSAvIDQpOworICAgIGNhc2UgNzoKKyAgICAgICAg cmV0dXJuICh1aW50MzJfdCkoaGVpZ2h0NjQgKiAyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsgLyogbWFudWFsIHdpZHRoICovCit9CisKKy8q KgorICogdmFsaWRhdGUgYSBKcGVnIFhMIFNpemUgSGVhZGVyCisgKiBAcmV0dXJuID49IDAgdXBv biB2YWxpZCBzaXplLCA8IDAgdXBvbiBpbnZhbGlkIHNpemUgZm91bmQKKyAqLworc3RhdGljIGlu dCBqcGVneGxfcmVhZF9zaXplX2hlYWRlcihHZXRCaXRDb250ZXh0ICpnYikKK3sKKyAgICB1aW50 MzJfdCB3aWR0aCwgaGVpZ2h0OworCisgICAgaWYgKGp4bF9iaXRzKDEpKSB7CisgICAgICAgIC8q IHNtYWxsIHNpemUgaGVhZGVyICovCisgICAgICAgIGhlaWdodCA9IChqeGxfYml0cyg1KSArIDEp IDw8IDM7CisgICAgICAgIHdpZHRoID0ganBlZ3hsX3dpZHRoX2Zyb21fcmF0aW8oaGVpZ2h0LCBq eGxfYml0cygzKSk7CisgICAgICAgIGlmICghd2lkdGgpCisgICAgICAgICAgICB3aWR0aCA9IChq eGxfYml0cyg1KSArIDEpIDw8IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbGFyZ2Ugc2l6 ZSBoZWFkZXIgKi8KKyAgICAgICAgaGVpZ2h0ID0gMSArIGp4bF91MzIoMCwgMCwgMCwgMCwgOSwg MTMsIDE4LCAzMCk7CisgICAgICAgIHdpZHRoID0ganBlZ3hsX3dpZHRoX2Zyb21fcmF0aW8oaGVp Z2h0LCBqeGxfYml0cygzKSk7CisgICAgICAgIGlmICghd2lkdGgpCisgICAgICAgICAgICB3aWR0 aCA9IDEgKyBqeGxfdTMyKDAsIDAsIDAsIDAsIDksIDEzLCAxOCwgMzApOworICAgIH0KKyAgICBp ZiAod2lkdGggPiAoMSA8PCAxOCkgfHwgaGVpZ2h0ID4gKDEgPDwgMTgpCisgICAgICAgIHx8ICh3 aWR0aCA+PiA0KSAqIChoZWlnaHQgPj4gNCkgPiAoMSA8PCAyMCkpCisgICAgICAgIHJldHVybiAt MTsKKworICAgIHJldHVybiAwOworfQorCisvKioKKyAqIHZhbGlkYXRlIGEgSnBlZyBYTCBQcmV2 aWV3IEhlYWRlcgorICogQHJldHVybiA+PSAwIHVwb24gdmFsaWQgc2l6ZSwgPCAwIHVwb24gaW52 YWxpZCBzaXplIGZvdW5kCisgKi8KK3N0YXRpYyBpbnQganBlZ3hsX3JlYWRfcHJldmlld19oZWFk ZXIoR2V0Qml0Q29udGV4dCAqZ2IpCit7CisgICAgdWludDMyX3Qgd2lkdGgsIGhlaWdodDsKKwor ICAgIGlmIChqeGxfYml0cygxKSkgeworICAgICAgICAvKiBjb2RlZCBoZWlnaHQgYW5kIHdpZHRo IGRpdmlkZWQgYnkgZWlnaHQgKi8KKyAgICAgICAgaGVpZ2h0ID0ganhsX3UzMigxNiwgMzIsIDEs IDMzLCAwLCAwLCA1LCA5KSA8PCAzOworICAgICAgICB3aWR0aCA9IGpwZWd4bF93aWR0aF9mcm9t X3JhdGlvKGhlaWdodCwganhsX2JpdHMoMykpOworICAgICAgICBpZiAoIXdpZHRoKQorICAgICAg ICAgICAgd2lkdGggPSBqeGxfdTMyKDE2LCAzMiwgMSwgMzMsIDAsIDAsIDUsIDkpIDw8IDM7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgLyogZnVsbCBoZWlnaHQgYW5kIHdpZHRoIGNvZGVkICovCisg ICAgICAgIGhlaWdodCA9IGp4bF91MzIoMSwgNjUsIDMyMSwgMTM0NSwgNiwgOCwgMTAsIDEyKTsK KyAgICAgICAgd2lkdGggPSBqcGVneGxfd2lkdGhfZnJvbV9yYXRpbyhoZWlnaHQsIGp4bF9iaXRz KDMpKTsKKyAgICAgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgICAgIHdpZHRoID0ganhsX3UzMigx LCA2NSwgMzIxLCAxMzQ1LCA2LCA4LCAxMCwgMTIpOworICAgIH0KKyAgICBpZiAod2lkdGggPiA0 MDk2IHx8IGhlaWdodCA+IDQwOTYpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAw OworfQorCisvKioKKyAqIHNraXAgYSBKcGVnIFhMIEJpdERlcHRoIEhlYWRlci4gVGhlc2UgY2Fu bm90IGJlIGludmFsaWQuCisgKi8KK3N0YXRpYyB2b2lkIGpwZWd4bF9za2lwX2JpdF9kZXB0aChH ZXRCaXRDb250ZXh0ICpnYikKK3sKKyAgICBpZiAoanhsX2JpdHMoMSkpIHsKKyAgICAgICAgLyog ZmxvYXQgc2FtcGxlcyAqLworICAgICAgICBqeGxfdTMyKDMyLCAxNiwgMjQsIDEsIDAsIDAsIDAs IDYpOyAvKiBtYW50aXNzYSAqLworICAgICAgICBqeGxfYml0c19za2lwKDQpOyAvKiBleHBvbmVu dCAqLworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGludGVnZXIgc2FtcGxlcyAqLworICAgICAg ICBqeGxfdTMyKDgsIDEwLCAxMiwgMSwgMCwgMCwgMCwgNik7CisgICAgfQorfQorCisvKioKKyAq IHZhbGlkYXRlIGEgSnBlZyBYTCBQcmV2aWV3IEhlYWRlcgorICogQHJldHVybiA+PSAwIHVwb24g dmFsaWQsIDwgMCB1cG9uIGludmFsaWQKKyAqLworc3RhdGljIGludCBqcGVneGxfcmVhZF9leHRy YV9jaGFubmVsX2luZm8oR2V0Qml0Q29udGV4dCAqZ2IpCit7CisgICAgaW50IGFsbF9kZWZhdWx0 ID0ganhsX2JpdHMoMSk7CisgICAgdWludDMyX3QgdHlwZSwgbmFtZV9sZW4gPSAwOworCisgICAg aWYgKCFhbGxfZGVmYXVsdCkgeworICAgICAgICB0eXBlID0ganhsX2VudW0oKTsKKyAgICAgICAg aWYgKHR5cGUgPiA2MykKKyAgICAgICAgICAgIHJldHVybiAtMTsgLyogZW51bSB0eXBlcyBjYW5u b3QgYmUgNjQrICovCisgICAgICAgIGlmICh0eXBlID09IEZGX0pQRUdYTF9DVF9CTEFDSykKKyAg ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAganBlZ3hsX3NraXBfYml0X2RlcHRoKGdiKTsK KyAgICAgICAganhsX3UzMigwLCAzLCA0LCAxLCAwLCAwLCAwLCAzKTsgLyogZGltLXNoaWZ0ICov CisgICAgICAgIC8qIG1heCBvZiBuYW1lX2xlbiBpcyAxMDcxID0gNDggKyAyXjEwIC0gMSAqLwor ICAgICAgICBuYW1lX2xlbiA9IGp4bF91MzIoMCwgMCwgMTYsIDQ4LCAwLCA0LCA1LCAxMCk7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgdHlwZSA9IEZGX0pQRUdYTF9DVF9BTFBIQTsKKyAgICB9CisK KyAgICAvKiBza2lwIG92ZXIgdGhlIG5hbWUgKi8KKyAgICBqeGxfYml0c19za2lwKDggKiBuYW1l X2xlbik7CisKKyAgICBpZiAoIWFsbF9kZWZhdWx0ICYmIHR5cGUgPT0gRkZfSlBFR1hMX0NUX0FM UEhBKQorICAgICAgICBqeGxfYml0c19za2lwKDEpOworCisgICAgaWYgKHR5cGUgPT0gRkZfSlBF R1hMX0NUX1NQT1RfQ09MT1IpCisgICAgICAgIGp4bF9iaXRzX3NraXAoMTYgKiA0KTsKKworICAg IGlmICh0eXBlID09IEZGX0pQRUdYTF9DVF9DRkEpCisgICAgICAgIGp4bF91MzIoMSwgMCwgMywg MTksIDAsIDIsIDQsIDgpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIHZlcmlmeSB0aGF0IGEg Y29kZXN0cmVhbSBoZWFkZXIgaXMgdmFsaWQgKi8KK2ludCBmZl9qcGVneGxfdmVyaWZ5X2NvZGVz dHJlYW1faGVhZGVyKGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1ZmxlbikKK3sKKyAgICBHZXRC aXRDb250ZXh0IGdiaSwgKmdiID0gJmdiaTsKKyAgICBpbnQgYWxsX2RlZmF1bHQsIGV4dHJhX2Zp ZWxkcyA9IDA7CisgICAgaW50IHh5Yl9lbmNvZGVkID0gMSwgaGF2ZV9pY2NfcHJvZmlsZSA9IDA7 CisgICAgdWludDMyX3QgbnVtX2V4dHJhX2NoYW5uZWxzOworICAgIHVpbnQ2NF90IGV4dGVuc2lv bnM7CisKKyAgICBpbml0X2dldF9iaXRzOChnYiwgYnVmLCBidWZsZW4pOworCisgICAgaWYgKGp4 bF9iaXRzKDE2KSAhPSBGRl9KUEVHWExfQ09ERVNUUkVBTV9TSUdOQVRVUkVfTEUpCisgICAgICAg IHJldHVybiAtMTsKKworICAgIGlmIChqcGVneGxfcmVhZF9zaXplX2hlYWRlcihnYikgPCAwKQor ICAgICAgICByZXR1cm4gLTE7CisKKyAgICBhbGxfZGVmYXVsdCA9IGp4bF9iaXRzKDEpOworICAg IGlmICghYWxsX2RlZmF1bHQpCisgICAgICAgIGV4dHJhX2ZpZWxkcyA9IGp4bF9iaXRzKDEpOwor CisgICAgaWYgKGV4dHJhX2ZpZWxkcykgeworICAgICAgICBqeGxfYml0c19za2lwKDMpOyAvKiBv cmllbnRhdGlvbiAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIGludHJpbnN0aWMgc2l6ZQor ICAgICAgICAgKiBhbnkgc2l6ZSBoZWFkZXIgaGVyZSBpcyB2YWxpZCwgYnV0IGFzIGl0CisgICAg ICAgICAqIGlzIHZhcmlhYmxlIGxlbmd0aCB3ZSBoYXZlIHRvIHJlYWQgaXQKKyAgICAgICAgICov CisgICAgICAgIGlmIChqeGxfYml0cygxKSkKKyAgICAgICAgICAgIGpwZWd4bF9yZWFkX3NpemVf aGVhZGVyKGdiKTsKKworICAgICAgICAvKiBwcmV2aWV3IGhlYWRlciAqLworICAgICAgICBpZiAo anhsX2JpdHMoMSkpIHsKKyAgICAgICAgICAgIGlmIChqcGVneGxfcmVhZF9wcmV2aWV3X2hlYWRl cihnYikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAg ICAgIC8qIGFuaW1hdGlvbiBoZWFkZXIgKi8KKyAgICAgICAgaWYgKGp4bF9iaXRzKDEpKSB7Cisg ICAgICAgICAgICBqeGxfdTMyKDEwMCwgMTAwMCwgMSwgMSwgMCwgMCwgMTAsIDMwKTsKKyAgICAg ICAgICAgIGp4bF91MzIoMSwgMTAwMSwgMSwgMSwgMCwgMCwgOCwgMTApOworICAgICAgICAgICAg anhsX3UzMigwLCAwLCAwLCAwLCAwLCAzLCAxNiwgMzIpOworICAgICAgICAgICAganhsX2JpdHNf c2tpcCgxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghYWxsX2RlZmF1bHQpIHsKKyAg ICAgICAganBlZ3hsX3NraXBfYml0X2RlcHRoKGdiKTsKKworICAgICAgICAvKiBtb2R1bGFyXzE2 Yml0X2J1ZmZlcnMgbXVzdCBlcXVhbCAxICovCisgICAgICAgIGlmICghanhsX2JpdHMoMSkpCisg ICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgbnVtX2V4dHJhX2NoYW5uZWxzID0ganhs X3UzMigwLCAxLCAyLCAxLCAwLCAwLCA0LCAxMik7CisgICAgICAgIGlmIChudW1fZXh0cmFfY2hh bm5lbHMgPiA0KQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBmb3IgKHVpbnQzMl90 IGkgPSAwOyBpIDwgbnVtX2V4dHJhX2NoYW5uZWxzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChq cGVneGxfcmVhZF9leHRyYV9jaGFubmVsX2luZm8oZ2IpIDwgMCkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICB4eWJfZW5jb2RlZCA9IGp4bF9iaXRzKDEp OworCisgICAgICAgIC8qIGNvbG9yIGVuY29kaW5nIGJ1bmRsZSAqLworICAgICAgICBpZiAoIWp4 bF9iaXRzKDEpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBjb2xvcl9zcGFjZTsKKyAgICAgICAg ICAgIGhhdmVfaWNjX3Byb2ZpbGUgPSBqeGxfYml0cygxKTsKKyAgICAgICAgICAgIGNvbG9yX3Nw YWNlID0ganhsX2VudW0oKTsKKyAgICAgICAgICAgIGlmIChjb2xvcl9zcGFjZSA+IDYzKQorICAg ICAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAgICAgaWYgKCFoYXZlX2ljY19wcm9m aWxlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yX3NwYWNlICE9IEZGX0pQRUdYTF9DU19Y WUIpIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2hpdGVfcG9pbnQgPSBqeGxfZW51 bSgpOworICAgICAgICAgICAgICAgICAgICBpZiAod2hpdGVfcG9pbnQgPiA2MykKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdoaXRl X3BvaW50ID09IEZGX0pQRUdYTF9XUF9DVVNUT00pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IC8qIHV4IGFuZCB1eSB2YWx1ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGp4bF91MzIo MCwgNTI0Mjg4LCAxMDQ4NTc2LCAyMDk3MTUyLCAxOSwgMTksIDIwLCAyMSk7CisgICAgICAgICAg ICAgICAgICAgICAgICBqeGxfdTMyKDAsIDUyNDI4OCwgMTA0ODU3NiwgMjA5NzE1MiwgMTksIDE5 LCAyMCwgMjEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm IChjb2xvcl9zcGFjZSAhPSBGRl9KUEVHWExfQ1NfR1JBWSkgeworICAgICAgICAgICAgICAgICAg ICAgICAgLyogcHJpbWFyaWVzICovCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBw cmltYXJpZXMgPSBqeGxfZW51bSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1h cmllcyA+IDYzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJpZXMgPT0gRkZfSlBFR1hMX1BSX0NVU1RPTSkg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHV4L3V5IHZhbHVlcyBmb3IgcixnLGIg Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkr KykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganhsX3UzMigwLCA1MjQyODgsIDEw NDg1NzYsIDIwOTcxNTIsIDE5LCAxOSwgMjAsIDIxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIC8qIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljcyAqLworICAgICAgICAgICAgICAgIGlm IChqeGxfYml0cygxKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBnYW1tYSAqLworICAgICAg ICAgICAgICAgICAgICBqeGxfYml0c19za2lwKDI0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICAvKiB0cmFuc2ZlciBmdW5jdGlvbiAqLworICAgICAgICAg ICAgICAgICAgICBpZiAoanhsX2VudW0oKSA+IDYzKQorICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIHJlbmRl cmluZyBpbnRlbnQgKi8KKyAgICAgICAgICAgICAgICBpZiAoanhsX2VudW0oKSA+IDYzKQorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor ICAgICAgICAvKiB0b25lIG1hcHBpbmcgYnVuZGxlICovCisgICAgICAgIGlmIChleHRyYV9maWVs ZHMgJiYgIWp4bF9iaXRzKDEpKQorICAgICAgICAgICAganhsX2JpdHNfc2tpcCgxNiArIDE2ICsg MSArIDE2KTsKKworICAgICAgICBleHRlbnNpb25zID0ganhsX3U2NCgpOworICAgICAgICBpZiAo ZXh0ZW5zaW9ucykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7 CisgICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMgJiAoVUlOVDY0X0MoMSkgPDwgaSkpCisg ICAgICAgICAgICAgICAgICAgIGp4bF91NjQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKworICAgIC8qIGRlZmF1bHQgdHJhbnNmb3JtICovCisgICAgaWYgKCFqeGxfYml0cygx KSkgeworICAgICAgICAvKiBvcHNpbiBpbnZlcnNlIG1hdHJpeCAqLworICAgICAgICBpZiAoeHli X2VuY29kZWQgJiYgIWp4bF9iaXRzKDEpKQorICAgICAgICAgICAganhsX2JpdHNfc2tpcCgxNiAq IDE2KTsKKyAgICAgICAgLyogY3dfbWFzayBhbmQgZGVmYXVsdCB3ZWlnaHRzICovCisgICAgICAg IGlmIChqeGxfYml0cygxKSkKKyAgICAgICAgICAgIGp4bF9iaXRzX3NraXAoMTYgKiAxNSk7Cisg ICAgICAgIGlmIChqeGxfYml0cygxKSkKKyAgICAgICAgICAgIGp4bF9iaXRzX3NraXAoMTYgKiA1 NSk7CisgICAgICAgIGlmIChqeGxfYml0cygxKSkKKyAgICAgICAgICAgIGp4bF9iaXRzX3NraXAo MTYgKiAyMTApOworICAgIH0KKworICAgIGlmICghaGF2ZV9pY2NfcHJvZmlsZSkgeworICAgICAg ICBpbnQgYml0c19yZW1haW5pbmcgPSA3IC0gKGdiLT5pbmRleCAtIDEpICUgODsKKyAgICAgICAg aWYgKGJpdHNfcmVtYWluaW5nICYmIGp4bF9iaXRzKGJpdHNfcmVtYWluaW5nKSkKKyAgICAgICAg ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZ2ItPmluZGV4ID4gZ2ItPnNpemVfaW5f Yml0cykKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9qcGVneGxfcHJvYmUuaCBiL2xpYmF2Zm9ybWF0L2pwZWd4bF9wcm9iZS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI5NjBlODFlMTEKLS0tIC9k ZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9qcGVneGxfcHJvYmUuaApAQCAtMCwwICsxLDMyIEBA CisvKgorICogSnBlZyBYTCBoZWFkZXIgdmVyaWZpY2F0aW9uCisgKiBDb3B5cmlnaHQgKGMpIDIw MjIgTGVvIEl6ZW4gPGxlby5pemVuQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBG Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw LTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkZPUk1BVF9KUEVHWExfUFJPQkVfSAorI2RlZmlu ZSBBVkZPUk1BVF9KUEVHWExfUFJPQkVfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNkZWZp bmUgRkZfSlBFR1hMX0NPREVTVFJFQU1fU0lHTkFUVVJFX0xFIDB4MGFmZgorI2RlZmluZSBGRl9K UEVHWExfQ09OVEFJTkVSX1NJR05BVFVSRV9MRSAweDIwNGM1ODRhMGMwMDAwMDAKKworaW50IGZm X2pwZWd4bF92ZXJpZnlfY29kZXN0cmVhbV9oZWFkZXIoY29uc3QgdWludDhfdCAqYnVmLCBpbnQg YnVmbGVuKTsKKworI2VuZGlmIC8qIEFWRk9STUFUX0pQRUdYTF9QUk9CRV9IICovCmRpZmYgLS1n aXQgYS9saWJhdmZvcm1hdC9tb3YuYyBiL2xpYmF2Zm9ybWF0L21vdi5jCmluZGV4IDZjODQ3ZGUx NjQuLmM0Yjg4NzNiMGEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21vdi5jCisrKyBiL2xpYmF2 Zm9ybWF0L21vdi5jCkBAIC03Njk3LDYgKzc2OTcsNyBAQCBzdGF0aWMgaW50IG1vdl9wcm9iZShj b25zdCBBVlByb2JlRGF0YSAqcCkKICAgICAgICAgICAgIGlmICh0YWcgPT0gTUtUQUcoJ2YnLCd0 JywneScsJ3AnKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoICAgQVZfUkwzMihwLT5idWYg KyBvZmZzZXQgKyA4KSA9PSBNS1RBRygnaicsJ3AnLCcyJywnICcpCiAgICAgICAgICAgICAgICAg ICAgICAgICB8fCBBVl9STDMyKHAtPmJ1ZiArIG9mZnNldCArIDgpID09IE1LVEFHKCdqJywncCcs J3gnLCcgJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IEFWX1JMMzIocC0+YnVmICsgb2Zm c2V0ICsgOCkgPT0gTUtUQUcoJ2onLCd4JywnbCcsJyAnKQogICAgICAgICAgICAgICAgICAgICAp KSB7CiAgICAgICAgICAgICAgICAgc2NvcmUgPSBGRk1BWChzY29yZSwgNSk7CiAgICAgICAgICAg ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdmVyc2lvbi5oIGIvbGliYXZmb3Jt YXQvdmVyc2lvbi5oCmluZGV4IGY0YTI2YzI4NzAuLjY4MzE4NGQ1ZGEgMTAwNjQ0Ci0tLSBhL2xp YmF2Zm9ybWF0L3ZlcnNpb24uaAorKysgYi9saWJhdmZvcm1hdC92ZXJzaW9uLmgKQEAgLTMxLDgg KzMxLDggQEAKIAogI2luY2x1ZGUgInZlcnNpb25fbWFqb3IuaCIKIAotI2RlZmluZSBMSUJBVkZP Uk1BVF9WRVJTSU9OX01JTk9SICAyMAotI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01JQ1JP IDEwMQorI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01JTk9SICAyMQorI2RlZmluZSBMSUJB VkZPUk1BVF9WRVJTSU9OX01JQ1JPIDEwMAogCiAjZGVmaW5lIExJQkFWRk9STUFUX1ZFUlNJT05f SU5UIEFWX1ZFUlNJT05fSU5UKExJQkFWRk9STUFUX1ZFUlNJT05fTUFKT1IsIFwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCQVZGT1JNQVRfVkVSU0lP Tl9NSU5PUiwgXAotLSAKMi4zNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==