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 98B1A464F8 for ; Sat, 19 Aug 2023 13:09:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3484468C56E; Sat, 19 Aug 2023 16:09:24 +0300 (EEST) Received: from mail-oo1-f52.google.com (mail-oo1-f52.google.com [209.85.161.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21D32680016 for ; Sat, 19 Aug 2023 16:09:18 +0300 (EEST) Received: by mail-oo1-f52.google.com with SMTP id 006d021491bc7-56cc461f34fso1183746eaf.0 for ; Sat, 19 Aug 2023 06:09:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692450556; x=1693055356; h=content-transfer-encoding:in-reply-to:references:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=WAFzsymaiLkldIfesWMUQmoQnZmH0+WEhMFJBZur3Jw=; b=cYYtiFXr9KCQtBrLaoqVHMBrYArrptrBOAs516VABStoNqOsXiGdqDFInldudE4S5m zzeeLrzgrnq1nCtHLTxjvuanDGhQN3wZD7a8e6dZpIqRtpPaxuuAJYIa4a71pFgzhswZ zfkWtZrSyySXljAGt0NwgKSvYYrwHxBhvUmwAbPKPtaiqoO8MzpVa4MEQ+sOTfE3TxbL 1s0Y8ta5ykPatX/+6A50CpL+LD354dw4thZpihiD/8x8V2OOe4ftfI2Jg6knbaxbs0dt uRXhDxL+YhuOHrNp75M1Z0AqKWhn32baniCEPyZD8CQxnjWLimVfj3lVonDPPgurDoON vQ1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692450556; x=1693055356; h=content-transfer-encoding:in-reply-to:references:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WAFzsymaiLkldIfesWMUQmoQnZmH0+WEhMFJBZur3Jw=; b=KVTn0ZjcPLVTZNI8be4bcFvGEXD7PS8IgEwzFvdpPDyxlt4/ilg763Ah8zwZjt6biE 8X2i/0gIryQuXZiWvZ9Ernp1CMsqfx51cCRk/8w4/wpCGvOXDaZKPRL/k6iFI78iIrar vA8HvlwBJWeeC/6wbKOhIOdIujEFSafxt90SOow4tOgZtGoloEnITi5z9eC9Gn2n5DOp hshU5mx5QztllS24Kr6WhzLjJ470dRyGLVS+YHQxDNgw58rqnDJn2i5LN6O/jGHV4pzJ duyStkLH/fwrIqcKVKPFr6vg8w5W0AtL1bnlIBpKpcrBclR7y8PkMonST4By3CrTf9GW avHQ== X-Gm-Message-State: AOJu0Yx1QSJp/O7S9YvTj0pD6fCpafZuBxnf02DCUsHVCXotieQQLAfb T8bEWEVJxBcSH2Jnq5X/oKYReoSTmV0= X-Google-Smtp-Source: AGHT+IEwC5d+KKUfkt+6w4UrIuBq7LB3dItYaVG/hBi88hRQq3OZGne8dgelSLK28MVF8pFAE8TAMQ== X-Received: by 2002:a4a:9198:0:b0:56e:d174:fb3 with SMTP id d24-20020a4a9198000000b0056ed1740fb3mr2414688ooh.6.1692450555643; Sat, 19 Aug 2023 06:09:15 -0700 (PDT) Received: from [192.168.0.16] (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id p127-20020a4a4885000000b00569c5eadf15sm1875377ooa.26.2023.08.19.06.09.14 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 19 Aug 2023 06:09:15 -0700 (PDT) Message-ID: <16600d0d-90f4-4dcb-a5be-ec8e647e62f0@gmail.com> Date: Sat, 19 Aug 2023 10:09:22 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Content-Language: en-US From: James Almer To: ffmpeg-devel@ffmpeg.org References: In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH v4] vvcdec: add thread executor 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gOC8xOC8yMDIzIDE6MTcgUE0sIEphbWVzIEFsbWVyIHdyb3RlOgo+IE9uIDgvMTUvMjAyMyAx MTo1MCBBTSwgTnVvIE1pIHdyb3RlOgo+PiBUaGUgZXhlY3V0b3IgZGVzaWduIHBhdHRlcm4gd2Fz IGlucm9kdWNlZCBieSBqYXZhCj4+IDxodHRwczovL2RvY3Mub3JhY2xlLmNvbS9lbi9qYXZhL2ph dmFzZS8yMC9kb2NzL2FwaS9qYXZhLmJhc2UvamF2YS91dGlsL2NvbmN1cnJlbnQvRXhlY3V0b3Iu aHRtbD4KPj4gaXQgYWxzbyBhZGFwdGVkIGJ5IHB5dGhvbgo+PiA8aHR0cHM6Ly9kb2NzLnB5dGhv bi5vcmcvMy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5odG1sPgo+PiBDb21wYXJlZCB0byBo YW5kY3JhZnRlZCB0aHJlYWQgcG9vbCBtYW5hZ2VtZW50LCBpdCBncmVhdGx5IHNpbXBsaWZpZXMg Cj4+IHRoZSB0aHJlYWQgY29kZS4KPj4gLS0tCj4+IMKgIGxpYmF2dXRpbC9NYWtlZmlsZcKgwqAg fMKgwqAgMiArCj4+IMKgIGxpYmF2dXRpbC9leGVjdXRvci5jIHwgMjAxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgbGliYXZ1dGlsL2V4ZWN1dG9yLmgg fMKgIDY3ICsrKysrKysrKysrKysrKwo+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRp b25zKCspCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvZXhlY3V0b3IuYwo+PiDC oCBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2V4ZWN1dG9yLmgKPj4KPj4gZGlmZiAtLWdp dCBhL2xpYmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9NYWtlZmlsZQo+PiBpbmRleCA3ODI4 Yzk0ZGM1Li40NzExZjhjZGU4IDEwMDY0NAo+PiAtLS0gYS9saWJhdnV0aWwvTWFrZWZpbGUKPj4g KysrIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4+IEBAIC0zMSw2ICszMSw3IEBAIEhFQURFUlMgPSAK Pj4gYWRsZXIzMi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiAgICAgICAgICAgICAKPj4gZW5jcnlwdGlvbl9pbmZvLmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPj4gICAgICAgICAgICAgCj4+IGVycm9yLmjCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiAgICAgICAgICAgICAK Pj4gZXZhbC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXAo+PiArICAgICAgICAgIAo+PiBleGVjdXRvci5owqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gICAgICAgICAgICAgCj4+IGZpZm8uaMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gICAg ICAgICAgICAgCj4+IGZpbGUuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPj4gICAgICAgICAgICAgCj4+IGZyYW1lLmjCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiBAQCAtMTI3LDYgKzEy OCw3IEBAIE9CSlMgPSAKPj4gYWRsZXIzMi5vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiAgICAgICAgICAKPj4gZW5jcnlwdGlvbl9pbmZv Lm/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gICAgICAgICAgCj4+ IGVycm9yLm/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+PiAgICAgICAgICAKPj4gZXZhbC5vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArICAgICAgIAo+PiBleGVj dXRvci5vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKPj4gICAgICAgICAgCj4+IGZpZm8ub8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gICAgICAgICAgCj4+IGZpbGUub8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK Pj4gICAgICAgICAgCj4+IGZpbGVfb3Blbi5vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvZXhlY3V0b3Iu YyBiL2xpYmF2dXRpbC9leGVjdXRvci5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAwMDAuLjZiNDdiYTBiZjIKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWJhdnV0 aWwvZXhlY3V0b3IuYwo+PiBAQCAtMCwwICsxLDIwMSBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdo dCAoQykgMjAyMyBOdW8gTWkKPj4gKyAqCj4+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgo+PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4+ICsgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4g KyAqCj4+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKPj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuwqAgU2VlIHRoZSBHTlUKPj4gKyAqIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+ICsgKgo+PiArICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwo+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQo+PiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAKPj4gMDIxMTAtMTMwMSBVU0EKPj4gKyAqLwo+ PiArI2luY2x1ZGUgImludGVybmFsLmgiCj4+ICsjaW5jbHVkZSAibWVtLmgiCj4+ICsjaW5jbHVk ZSAidGhyZWFkLmgiCj4+ICsKPj4gKyNpbmNsdWRlICJleGVjdXRvci5oIgo+PiArCj4+ICsjaWYg IUhBVkVfVEhSRUFEUwo+PiArI2RlZmluZSBwdGhyZWFkX2NyZWF0ZSh0LCBhLCBzLCBhcinCoMKg wqDCoCAwCj4+ICsjZGVmaW5lIHB0aHJlYWRfam9pbih0LCByKcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRvIHt9IHdoaWxlKDApCj4+ICsKPj4gKyNkZWZpbmUgcHRocmVhZF9jb25kX2luaXQo YywgYSnCoMKgwqDCoMKgwqDCoMKgIDAKPj4gKyNkZWZpbmUgcHRocmVhZF9jb25kX2Jyb2FkY2Fz dChjKcKgwqDCoMKgwqDCoCBkbyB7fSB3aGlsZSgwKQo+PiArI2RlZmluZSBwdGhyZWFkX2NvbmRf c2lnbmFsKGMpwqDCoMKgwqDCoMKgwqDCoMKgIGRvIHt9IHdoaWxlKDApCj4+ICsjZGVmaW5lIHB0 aHJlYWRfY29uZF93YWl0KGMsIG0pwqDCoMKgwqDCoMKgwqDCoCBkbyB7fSB3aGlsZSgwKQo+PiAr I2RlZmluZSBwdGhyZWFkX2NvbmRfZGVzdHJveShjKcKgwqDCoMKgwqDCoMKgwqAgZG8ge30gd2hp bGUoMCkKPj4gKwo+PiArI2RlZmluZSBwdGhyZWFkX211dGV4X2luaXQobSwgYSnCoMKgwqDCoMKg wqDCoCAwCj4+ICsjZGVmaW5lIHB0aHJlYWRfbXV0ZXhfbG9jayhsKcKgwqDCoMKgwqDCoMKgwqDC oMKgIGRvIHt9IHdoaWxlKDApCj4+ICsjZGVmaW5lIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKGwpwqDC oMKgwqDCoMKgwqDCoCBkbyB7fSB3aGlsZSgwKQo+PiArI2RlZmluZSBwdGhyZWFkX211dGV4X2Rl c3Ryb3kobCnCoMKgwqDCoMKgwqDCoCBkbyB7fSB3aGlsZSgwKQo+IAo+IFlvdSBoYXZlIGZmX211 dGV4XyogYW5kIEFWTXV0ZXggZm9yIHRoaXMuIEkgc2VudCBhIHBhdGNoIGFkZGluZyAKPiBmZl9j b25kXyogYW5kIEFWQ29uZCwgYXMgd2VsbCBhcyBmZl90aHJlYWRfY3JlYXRlL2pvaW4gYW5kIEFW VGhyZWFkIHRvIAo+IHRocmVhZC5oIHRvIHNpbXBsaWZ5IHRoaW5ncy4KPiAKPj4gKyNlbmRpZgo+ PiArCj4+ICt0eXBlZGVmIHN0cnVjdCBUaHJlYWRJbmZvIHsKPj4gK8KgwqDCoCBBVkV4ZWN1dG9y ICplOwo+PiArwqDCoMKgIHB0aHJlYWRfdCB0aHJlYWQ7Cj4gCj4gWW91IHdpbGwgbmVlZCB0byB1 c2UgQVZUaHJlYWQsIGVsc2UgdGhpcyB3aWxsIG5vdCBiZSBkZWZpbmVkIHdoZW4gCj4gIUhBVkVf VEhSRUFEUy4KCkkgdWx0aW1hdGVseSBkaWRuJ3QgYWRkIEFWVGhyZWFkLCBzbyB5b3UnbGwgaGF2 ZSB0byB3cmFwIHRoaXMgZmllbGQuIGFuZCAKdGhlIGNhbGxzIHRvIHB0aHJlYWRfY3JlYXRlKCkg YW5kIHB0aHJlYWRfam9pbigpLgoKPiAKPj4gK30gVGhyZWFkSW5mbzsKPj4gKwo+PiArc3RydWN0 IEFWRXhlY3V0b3Igewo+PiArwqDCoMKgIEFWVGFza0NhbGxiYWNrcyBjYjsKPj4gK8KgwqDCoCBp bnQgdGhyZWFkX2NvdW50Owo+PiArCj4+ICvCoMKgwqAgVGhyZWFkSW5mbyAqdGhyZWFkczsKPj4g K8KgwqDCoCB1aW50OF90ICpsb2NhbF9jb250ZXh0czsKPj4gKwo+PiArwqDCoMKgIHB0aHJlYWRf bXV0ZXhfdCBsb2NrOwo+PiArwqDCoMKgIHB0aHJlYWRfY29uZF90IGNvbmQ7Cj4gCj4gU2FtZSBo ZXJlLiBBVk11dGV4IGFuZCBBVkNvbmQuCj4gCj4+ICvCoMKgwqAgaW50IGRpZTsKPj4gKwo+PiAr wqDCoMKgIEFWVGFzayAqdGFza3M7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgQVZUYXNrKiByZW1v dmVfdGFzayhBVlRhc2sgKipwcmV2LCBBVlRhc2sgKnQpCj4+ICt7Cj4+ICvCoMKgwqAgKnByZXbC oCA9IHQtPm5leHQ7Cj4+ICvCoMKgwqAgdC0+bmV4dCA9IE5VTEw7Cj4+ICvCoMKgwqAgcmV0dXJu IHQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGFkZF90YXNrKEFWVGFzayAqKnByZXYsIEFW VGFzayAqdCkKPj4gK3sKPj4gK8KgwqDCoCB0LT5uZXh0ID0gKnByZXY7Cj4+ICvCoMKgwqAgKnBy ZXbCoMKgID0gdDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBydW5fb25lX3Rhc2soQVZFeGVj dXRvciAqZSwgdm9pZCAqbGMpCj4+ICt7Cj4+ICvCoMKgwqAgQVZUYXNrQ2FsbGJhY2tzICpjYiA9 ICZlLT5jYjsKPj4gK8KgwqDCoCBBVlRhc2sgKipwcmV2Owo+PiArCj4+ICvCoMKgwqAgZm9yIChw cmV2ID0gJmUtPnRhc2tzOyAqcHJldiAmJiAhY2ItPnJlYWR5KCpwcmV2LCBjYi0+dXNlcl9kYXRh KTsgCj4+IHByZXYgPSAmKCpwcmV2KS0+bmV4dCkKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIG5vdGhp bmcgKi87Cj4+ICvCoMKgwqAgaWYgKCpwcmV2KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBBVlRhc2sg KnQgPSByZW1vdmVfdGFzayhwcmV2LCAqcHJldik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwdGhyZWFk X211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYi0+cnVuKHQsIGxj LCBjYi0+dXNlcl9kYXRhKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHB0aHJlYWRfbXV0ZXhfbG9jaygm ZS0+bG9jayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMTsKPj4gK8KgwqDCoCB9Cj4+ICvC oMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gKyNpZiBIQVZFX1RIUkVBRFMKPj4gK3N0YXRp YyB2b2lkICpleGVjdXRvcl93b3JrZXJfdGFzayh2b2lkICpkYXRhKQo+PiArewo+PiArwqDCoMKg IFRocmVhZEluZm8gKnRpID0gKFRocmVhZEluZm8qKWRhdGE7Cj4+ICvCoMKgwqAgQVZFeGVjdXRv ciAqZcKgID0gdGktPmU7Cj4+ICvCoMKgwqAgdm9pZCAqbGPCoMKgwqDCoMKgwqAgPSBlLT5sb2Nh bF9jb250ZXh0cyArICh0aSAtIGUtPnRocmVhZHMpICogCj4+IGUtPmNiLmxvY2FsX2NvbnRleHRf c2l6ZTsKPj4gKwo+PiArwqDCoMKgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4+ICvC oMKgwqAgd2hpbGUgKDEpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlLT5kaWUpIGJyZWFrOwo+ PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXJ1bl9vbmVfdGFzayhlLCBsYykpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLy9ubyB0YXNrIGluIG9uZSBsb29wCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHB0aHJlYWRfY29uZF93YWl0KCZlLT5jb25kLCAmZS0+bG9jayk7Cj4+ICvC oMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIHB0aHJlYWRfbXV0ZXhfdW5s b2NrKCZlLT5sb2NrKTsKPj4gK8KgwqDCoCByZXR1cm4gTlVMTDsKPj4gK30KPj4gKyNlbmRpZgo+ PiArCj4+ICtzdGF0aWMgdm9pZCBleGVjdXRvcl9mcmVlKEFWRXhlY3V0b3IgKmUsIGNvbnN0IGlu dCBoYXNfbG9jaywgY29uc3QgCj4+IGludCBoYXNfY29uZCkKPj4gK3sKPj4gK8KgwqDCoCBpZiAo ZS0+dGhyZWFkX2NvdW50KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvL3NpZ25hbCBkaWUKPj4gK8Kg wqDCoMKgwqDCoMKgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4+ICvCoMKgwqDCoMKg wqDCoCBlLT5kaWUgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqAgcHRocmVhZF9jb25kX2Jyb2FkY2Fz dCgmZS0+Y29uZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+ bG9jayk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaW50IGkgPSAwOyBpIDwgZS0+dGhy ZWFkX2NvdW50OyBpKyspCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB0aHJlYWRfam9pbihl LT50aHJlYWRzW2ldLnRocmVhZCwgTlVMTCk7Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIGlmICho YXNfY29uZCkKPj4gK8KgwqDCoMKgwqDCoMKgIHB0aHJlYWRfY29uZF9kZXN0cm95KCZlLT5jb25k KTsKPj4gK8KgwqDCoCBpZiAoaGFzX2xvY2spCj4+ICvCoMKgwqDCoMKgwqDCoCBwdGhyZWFkX211 dGV4X2Rlc3Ryb3koJmUtPmxvY2spOwo+PiArCj4+ICvCoMKgwqAgYXZfZnJlZShlLT50aHJlYWRz KTsKPj4gK8KgwqDCoCBhdl9mcmVlKGUtPmxvY2FsX2NvbnRleHRzKTsKPj4gKwo+PiArwqDCoMKg IGF2X2ZyZWUoZSk7Cj4+ICt9Cj4+ICsKPj4gK0FWRXhlY3V0b3IqIGF2X2V4ZWN1dG9yX2FsbG9j KGNvbnN0IEFWVGFza0NhbGxiYWNrcyAqY2IsIGludCAKPj4gdGhyZWFkX2NvdW50KQo+PiArewo+ PiArwqDCoMKgIEFWRXhlY3V0b3IgKmU7Cj4+ICvCoMKgwqAgaW50IGhhc19sb2NrID0gMCwgaGFz X2NvbmQgPSAwOwo+PiArwqDCoMKgIGlmICghY2IgfHwgIWNiLT51c2VyX2RhdGEgfHwgIWNiLT5y ZWFkeSB8fCAhY2ItPnJ1biB8fCAKPj4gIWNiLT5wcmlvcml0eV9oaWdoZXIpCj4+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gKwo+PiArwqDCoMKgIGUgPSBhdl9jYWxsb2MoMSwgc2l6 ZW9mKCplKSk7Cj4gCj4gYXZfbWFsbG9jeigpCj4gCj4+ICvCoMKgwqAgaWYgKCFlKQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ICvCoMKgwqAgZS0+Y2IgPSAqY2I7Cj4+ICsKPj4g K8KgwqDCoCBlLT5sb2NhbF9jb250ZXh0cyA9IGF2X2NhbGxvYyh0aHJlYWRfY291bnQsIAo+PiBl LT5jYi5sb2NhbF9jb250ZXh0X3NpemUpOwo+PiArwqDCoMKgIGlmICghZS0+bG9jYWxfY29udGV4 dHMpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGZyZWVfZXhlY3V0b3I7Cj4+ICsKPj4gK8KgwqDC oCBlLT50aHJlYWRzID0gYXZfY2FsbG9jKHRocmVhZF9jb3VudCwgc2l6ZW9mKCplLT50aHJlYWRz KSk7Cj4+ICvCoMKgwqAgaWYgKCFlLT50aHJlYWRzKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBm cmVlX2V4ZWN1dG9yOwo+PiArCj4+ICvCoMKgwqAgaGFzX2xvY2sgPSAhcHRocmVhZF9tdXRleF9p bml0KCZlLT5sb2NrLCBOVUxMKTsKPj4gK8KgwqDCoCBoYXNfY29uZCA9ICFwdGhyZWFkX2NvbmRf aW5pdCgmZS0+Y29uZCwgTlVMTCk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIWhhc19sb2NrIHx8ICFo YXNfY29uZCkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZnJlZV9leGVjdXRvcjsKPj4gKwo+PiAr wqDCoMKgIGZvciAoLyogbm90aGluZyAqLzsgZS0+dGhyZWFkX2NvdW50IDwgdGhyZWFkX2NvdW50 OyAKPj4gZS0+dGhyZWFkX2NvdW50KyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIFRocmVhZEluZm8g KnRpID0gZS0+dGhyZWFkcyArIGUtPnRocmVhZF9jb3VudDsKPj4gK8KgwqDCoMKgwqDCoMKgIHRp LT5lID0gZTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGktPnRocmVh ZCwgTlVMTCwgZXhlY3V0b3Jfd29ya2VyX3Rhc2ssIHRpKSkKCmV4ZWN1dG9yX3dvcmtlcl90YXNr KCkgZG9lc24ndCBleGlzdCBpZiAhSEFWRV9USFJFQURTLCBzbyBsaWtlIGkgc2FpZCAKYWJvdmUs IHdyYXAgdGhpcyBmb3IgbG9vcC4KCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZnJl ZV9leGVjdXRvcjsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuIGU7Cj4+ICsKPj4gK2Zy ZWVfZXhlY3V0b3I6Cj4+ICvCoMKgwqAgZXhlY3V0b3JfZnJlZShlLCBoYXNfbG9jaywgaGFzX2Nv bmQpOwo+PiArwqDCoMKgIHJldHVybiBOVUxMOwo+PiArfQo+PiArCj4+ICt2b2lkIGF2X2V4ZWN1 dG9yX2ZyZWUoQVZFeGVjdXRvciAqKmV4ZWN1dG9yKQo+PiArewo+PiArwqDCoMKgIGlmICghZXhl Y3V0b3IgfHwgISpleGVjdXRvcikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDC oCBleGVjdXRvcl9mcmVlKCpleGVjdXRvciwgMSwgMSk7Cj4+ICvCoMKgwqAgKmV4ZWN1dG9yID0g TlVMTDsKPj4gK30KPj4gKwo+PiArdm9pZCBhdl9leGVjdXRvcl9leGVjdXRlKEFWRXhlY3V0b3Ig KmUsIEFWVGFzayAqdCkKPj4gK3sKPj4gK8KgwqDCoCBBVlRhc2tDYWxsYmFja3MgKmNiID0gJmUt PmNiOwo+PiArwqDCoMKgIEFWVGFzayAqKnByZXY7Cj4+ICsKPj4gK8KgwqDCoCBwdGhyZWFkX211 dGV4X2xvY2soJmUtPmxvY2spOwo+PiArwqDCoMKgIGlmICh0KSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBmb3IgKHByZXYgPSAmZS0+dGFza3M7ICpwcmV2ICYmIGNiLT5wcmlvcml0eV9oaWdoZXIoKnBy ZXYsIAo+PiB0KTsgcHJldiA9ICYoKnByZXYpLT5uZXh0KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKiBub3RoaW5nICovOwo+PiArwqDCoMKgwqDCoMKgwqAgYWRkX3Rhc2socHJldiwgdCk7 Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIHB0aHJlYWRfY29uZF9zaWduYWwoJmUtPmNvbmQpOwo+ PiArwqDCoMKgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPj4gKwo+PiArI2lmICFI QVZFX1RIUkVBRFMKPj4gK8KgwqDCoCAvLyBXZSBhcmUgcnVubmluZyBpbiBhIHNpbmdsZS10aHJl YWRlZCBlbnZpcm9ubWVudCwgc28gd2UgbXVzdCAKPj4gaGFuZGxlIGFsbCB0YXNrcyBvdXJzZWx2 ZXMKPj4gK8KgwqDCoCB3aGlsZSAocnVuX29uZV90YXNrKGUsIGUtPmxvY2FsX2NvbnRleHRzKSkK Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIG5vdGhpbmcgKi87Cj4+ICsjZW5kaWYKPj4gK30KPj4gZGlm ZiAtLWdpdCBhL2xpYmF2dXRpbC9leGVjdXRvci5oIGIvbGliYXZ1dGlsL2V4ZWN1dG9yLmgKPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMC4uYzNmZTQ0YmQwZQo+PiAt LS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYmF2dXRpbC9leGVjdXRvci5oCj4+IEBAIC0wLDAgKzEs NjcgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgTnVvIE1pCj4+ICsgKgo+PiAr ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+PiArICoKPj4gKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4gKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4g KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLsKg IFNlZSB0aGUgR05VCj4+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgo+PiArICoKPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPj4gKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg Cj4+IDAyMTEwLTEzMDEgVVNBCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBBVlVUSUxfRVhFQ1VU T1JfSAo+PiArI2RlZmluZSBBVlVUSUxfRVhFQ1VUT1JfSAo+PiArCj4+ICt0eXBlZGVmIHN0cnVj dCBBVkV4ZWN1dG9yIEFWRXhlY3V0b3I7Cj4+ICt0eXBlZGVmIHN0cnVjdCBBVlRhc2sgQVZUYXNr Owo+PiArCj4+ICtzdHJ1Y3QgQVZUYXNrIHsKPj4gK8KgwqDCoCBBVlRhc2sgKm5leHQ7Cj4+ICt9 Owo+PiArCj4+ICt0eXBlZGVmIHN0cnVjdCBBVlRhc2tDYWxsYmFja3Mgewo+PiArwqDCoMKgIHZv aWQgKnVzZXJfZGF0YTsKPj4gKwo+PiArwqDCoMKgIGludCBsb2NhbF9jb250ZXh0X3NpemU7Cj4+ ICsKPj4gK8KgwqDCoCAvLyByZXR1cm4gMSBpZiBhJ3MgcHJpb3JpdHkgPiBiJ3MgcHJpb3JpdHkK Pj4gK8KgwqDCoCBpbnQgKCpwcmlvcml0eV9oaWdoZXIpKGNvbnN0IEFWVGFzayAqYSwgY29uc3Qg QVZUYXNrICpiKTsKPj4gKwo+PiArwqDCoMKgIC8vIHRhc2sgaXMgcmVhZHkgZm9yIHJ1bgo+PiAr wqDCoMKgIGludCAoKnJlYWR5KShjb25zdCBBVlRhc2sgKnQsIHZvaWQgKnVzZXJfZGF0YSk7Cj4+ ICsKPj4gK8KgwqDCoCAvLyBydW4gdGhlIHRhc2sKPj4gK8KgwqDCoCBpbnQgKCpydW4pKEFWVGFz ayAqdCwgdm9pZCAqbG9jYWxfY29udGV4dCwgdm9pZCAqdXNlcl9kYXRhKTsKPj4gK30gQVZUYXNr Q2FsbGJhY2tzOwo+PiArCj4+ICsvKioKPj4gKyAqIEFsbG9jIGV4ZWN1dG9yCj4+ICsgKiBAcGFy YW0gY2FsbGJhY2tzIGNhbGxiYWNrIHN0cnVjdXRyZSBmb3IgZXhlY3V0b3IKPj4gKyAqIEBwYXJh bSB0aHJlYWRfY291bnQgd29ya2VyIHRocmVhZCBudW1iZXIKPj4gKyAqIEByZXR1cm4gcmV0dXJu IHRoZSBleGVjdXRvcgo+PiArICovCj4+ICtBVkV4ZWN1dG9yKiBhdl9leGVjdXRvcl9hbGxvYyhj b25zdCBBVlRhc2tDYWxsYmFja3MgKmNhbGxiYWNrcywgaW50IAo+PiB0aHJlYWRfY291bnQpOwo+ PiArCj4+ICsvKioKPj4gKyAqIEZyZWUgZXhlY3V0b3IKPj4gKyAqIEBwYXJhbSBlwqAgcG9pbnRl ciB0byBleGVjdXRvcgo+PiArICovCj4+ICt2b2lkIGF2X2V4ZWN1dG9yX2ZyZWUoQVZFeGVjdXRv ciAqKmUpOwo+PiArCj4+ICsvKioKPj4gKyAqIEFkZCB0YXNrIHRvIGV4ZWN1dG9yCj4+ICsgKiBA cGFyYW0gZSBwb2ludGVyIHRvIGV4ZWN1dG9yCj4+ICsgKiBAcGFyYW0gdCBwb2ludGVyIHRvIHRh c2suIElmIE5VTEwsIGl0IHdpbGwgd2FrZXVwIG9uZSB3b3JrIHRocmVhZAo+PiArICovCj4+ICt2 b2lkIGF2X2V4ZWN1dG9yX2V4ZWN1dGUoQVZFeGVjdXRvciAqZSwgQVZUYXNrICp0KTsKPj4gKwo+ PiArI2VuZGlmIC8vQVZVVElMX0VYRUNVVE9SX0gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWct ZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWct ZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=