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 ESMTPS id 9234C4E425 for ; Fri, 2 May 2025 20:45:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE03468B405; Fri, 2 May 2025 23:45:26 +0300 (EEST) Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 979C5689BC3 for ; Fri, 2 May 2025 23:45:20 +0300 (EEST) Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5e677f59438so3701471a12.2 for ; Fri, 02 May 2025 13:45:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20230601.gappssmtp.com; s=20230601; t=1746218720; x=1746823520; darn=ffmpeg.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=a5tu5jaG3iwZFQmkiK1FXof1m2/6ZbPJz5we5/Kq06A=; b=AcqkLGLVXzgo4b9I+Ez5o1HOnpMBNajH3oS/XBR7XRgTH8vxfuLQ1O5Y4H5h7VT639 o3n5VbrDwS948ZTckzfSSUNGZg/n0CM+HQ+ImMy3BC1OSPCMv68yE5z+kd3jYH0FKGHn FqahNDFh5eFu9BPnPyt+O1GcS4g+CsENKs/Oo1g9/htXx9RYBRQ0mrcL9XTXrGfo5sYd QwJ5dA6BKH6cWq0E5/zCRbODnXCH0mHx3+c17xCw4w2kRjqFOlMMJlcdRb9xJ9+tsN4Y MPe2hOJ7itv+HnfsP7PYAIXsImyD5drCsDjbDiAmzmZRqGCfCTLuNbJmiA9OYLT3HT37 mP2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746218720; x=1746823520; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=a5tu5jaG3iwZFQmkiK1FXof1m2/6ZbPJz5we5/Kq06A=; b=vCgKvr2fak0EJgfV+jXgpalB6Dvew4p6On4Nlg6d1q5Yq0TGfzwCLvvffiFdHoyI8z OhDyFoycz1pdMjTWsfdJfldwbd0UBp62VIlUOHdYwxqGJ2blHEcLJm9IfF9mGkqVwOgn WUp7NwY9C4XtoJ4mqDJwjNFAYnDWZVzrJ+CMkbk9NU2nuWuQjeByPz8ju+hEC9W3BNm5 2jPyxY4z1pT5JsfVCt3cT9btO7speJDBQiBHher+iAerbe7z9neAE/yUy23IEAL31fuE a7hykjJU2D9S9VVfY0mL3cEdgC7/SkVx7Rbb1pMcFRtrmPMxXomowoXQEf8VnOzPQPKi zq9g== X-Gm-Message-State: AOJu0Yysyf7c/Poy44e2GCohJ5YnFfcP9asKBDP4aYORdvxwEMK+90tp 6CKo3oeU1gN0D9LvEK7hz5cxgyXl5zPL8fQGX4f6FfnzVQq9vVUiIrFpOMsjCw== X-Gm-Gg: ASbGncttxRF0HjRe9d77lHwnItueXts8jrO9agT5qRTdRvDs8kVXNAWFFHhsePa/Pt3 tqFC9lkH4T//+tL1s9V2IOx1Tb1PITyu2tFnXyGFNU/4LgU+M6QuLvHrvW3WH19LRoR0S+Kgku1 aakRf3I18+5IW1eDX93FEkwHV9GbwN1m+4FgVmbf5U39bX1R3mzruBRbF1rQCyZdx5k4NDC0vDa h0CWNFCoGAxqm0B3uG+EbqM2jTNEp3EBSTa98EhBe/VwpvfabI35iiH0piOVPd8/fKds6wa34ir C2kpVfH+FKjw8hTHPaCr/IC2ck+gQaNvX+N/P5IBuM9aNerChOf/RnetZKbvyNTyaNNNz0Z8tfX ndVSw8uZa1XKbsRJJ62H7gr3PHKMSNm7I4O/Q X-Google-Smtp-Source: AGHT+IGvq2SC2R+eeqdL5IXzFdRZITjkSv/NjK67z25KeL2P1p1GWPHxXZEoMiq2itRIDreKgDZ1Ng== X-Received: by 2002:a17:907:6091:b0:aca:e2d6:508c with SMTP id a640c23a62f3a-ad17af5404dmr485780966b.56.1746218719723; Fri, 02 May 2025 13:45:19 -0700 (PDT) Received: from tunnel335574-pt.tunnel.tserv24.sto1.ipv6.he.net (tunnel335574-pt.tunnel.tserv24.sto1.ipv6.he.net. [2001:470:27:11::2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad1891a3cf1sm98129866b.68.2025.05.02.13.45.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 May 2025 13:45:19 -0700 (PDT) Date: Fri, 2 May 2025 23:45:18 +0300 (EEST) From: =?ISO-8859-15?Q?Martin_Storsj=F6?= To: Nuo Mi In-Reply-To: Message-ID: <1118a98c-3d7f-7472-91d6-456b6d6a27dd@martin.st> References: <20250502074430.291561-1-nuomi2021@gmail.com> <20250502074430.291561-5-nuomi2021@gmail.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 5/5] checkasm: add vvc_sao 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: Shaun Loo , 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: T24gRnJpLCAyIE1heSAyMDI1LCBOdW8gTWkgd3JvdGU6Cgo+IE9uIEZyaSwgTWF5IDIsIDIwMjUg YXQgMzo0OeKAr1BNIE1hcnRpbiBTdG9yc2rDtiA8bWFydGluQG1hcnRpbi5zdD4gd3JvdGU6Cj4g ICAgICAgT24gRnJpLCAyIE1heSAyMDI1LCBOdW8gTWkgd3JvdGU6Cj4KPiAgICAgICA+IEZyb206 IFNoYXVuIExvbyA8c2hhdW5sb28xMEBnbWFpbC5jb20+Cj4gICAgICAgPgo+ICAgICAgID4gVGhp cyBpcyBhIHBhcnQgb2YgR29vZ2xlIFN1bW1lciBvZiBDb2RlIDIwMjMKPiAgICAgICA+Cj4gICAg ICAgPiBBVlgyOgo+ICAgICAgID4gLSB2dmNfc2FvLnNhb19iYW5kIFtPS10KPiAgICAgICA+IC0g dnZjX3Nhby5zYW9fZWRnZSBbT0tdCj4gICAgICAgPgo+ICAgICAgID4gQ28tYXV0aG9yZWQtYnk6 IE51byBNaSA8bnVvbWkyMDIxQGdtYWlsLmNvbT4KPiAgICAgICA+IC0tLQo+ICAgICAgID4gdGVz dHMvY2hlY2thc20vTWFrZWZpbGXCoCDCoHzCoCDCoDIgKy0KPiAgICAgICA+IHRlc3RzL2NoZWNr YXNtL2NoZWNrYXNtLmMgfMKgIMKgMSArCj4gICAgICAgPiB0ZXN0cy9jaGVja2FzbS9jaGVja2Fz bS5oIHzCoCDCoDEgKwo+ICAgICAgID4gdGVzdHMvY2hlY2thc20vdnZjX3Nhby5jwqAgfCAxNjEK PiAgICAgICArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgICAgID4g NCBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICAgICAg ID4gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2NoZWNrYXNtL3Z2Y19zYW8uYwo+ICAgICAgID4K PiAgICAgICA+IGRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9NYWtlZmlsZSBiL3Rlc3RzL2No ZWNrYXNtL01ha2VmaWxlCj4gICAgICAgPiBpbmRleCAxOTNjMWU0NjMzLi5mYWJiZjU5NWI0IDEw MDY0NAo+ICAgICAgID4gLS0tIGEvdGVzdHMvY2hlY2thc20vTWFrZWZpbGUKPiAgICAgICA+ICsr KyBiL3Rlc3RzL2NoZWNrYXNtL01ha2VmaWxlCj4gICAgICAgPiBAQCAtNDcsNyArNDcsNyBAQCBB VkNPREVDT0JKUy0kKENPTkZJR19WMjEwX0RFQ09ERVIpwqAgwqAgwqAgKz0KPiAgICAgICB2MjEw ZGVjLm8KPiAgICAgICA+IEFWQ09ERUNPQkpTLSQoQ09ORklHX1YyMTBfRU5DT0RFUinCoCDCoCDC oCArPSB2MjEwZW5jLm8KPiAgICAgICA+IEFWQ09ERUNPQkpTLSQoQ09ORklHX1ZPUkJJU19ERUNP REVSKcKgIMKgICs9IHZvcmJpc2RzcC5vCj4gICAgICAgPiBBVkNPREVDT0JKUy0kKENPTkZJR19W UDlfREVDT0RFUinCoCDCoCDCoCDCoCs9IHZwOWRzcC5vCj4gICAgICAgPiAtQVZDT0RFQ09CSlMt JChDT05GSUdfVlZDX0RFQ09ERVIpwqAgwqAgwqAgwqArPSB2dmNfYWxmLm8gdnZjX21jLm8KPiAg ICAgICA+ICtBVkNPREVDT0JKUy0kKENPTkZJR19WVkNfREVDT0RFUinCoCDCoCDCoCDCoCs9IHZ2 Y19hbGYubyB2dmNfbWMubwo+ICAgICAgIHZ2Y19zYW8ubwo+ICAgICAgID4KPiAgICAgICA+IENI RUNLQVNNT0JKUy0kKENPTkZJR19BVkNPREVDKcKgIMKgIMKgIMKgIMKgICs9ICQoQVZDT0RFQ09C SlMteWVzKQo+ICAgICAgID4KPiAgICAgICA+IGRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9j aGVja2FzbS5jCj4gICAgICAgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCj4gICAgICAgPiBp bmRleCAzYmI4MmVkMGU1Li4wNzM0Y2QyNmJmIDEwMDY0NAo+ICAgICAgID4gLS0tIGEvdGVzdHMv Y2hlY2thc20vY2hlY2thc20uYwo+ICAgICAgID4gKysrIGIvdGVzdHMvY2hlY2thc20vY2hlY2th c20uYwo+ICAgICAgID4gQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsK PiAgICAgICA+wqAgwqAgwqAjaWYgQ09ORklHX1ZWQ19ERUNPREVSCj4gICAgICAgPsKgIMKgIMKg IMKgIMKgeyAidnZjX2FsZiIsIGNoZWNrYXNtX2NoZWNrX3Z2Y19hbGYgfSwKPiAgICAgICA+wqAg wqAgwqAgwqAgwqB7ICJ2dmNfbWMiLMKgIGNoZWNrYXNtX2NoZWNrX3Z2Y19tY8KgIH0sCj4gICAg ICAgPiArwqAgwqAgwqAgwqAgeyAidnZjX3NhbyIsIGNoZWNrYXNtX2NoZWNrX3Z2Y19zYW8gfSwK PiAgICAgICA+wqAgwqAgwqAjZW5kaWYKPiAgICAgICA+ICNlbmRpZgo+ICAgICAgID4gI2lmIENP TkZJR19BVkZJTFRFUgo+ICAgICAgID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNr YXNtLmgKPiAgICAgICBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmgKPiAgICAgICA+IGluZGV4 IGE2YjU5NjVlMDIuLjE0NmJmZGVjMzUgMTAwNjQ0Cj4gICAgICAgPiAtLS0gYS90ZXN0cy9jaGVj a2FzbS9jaGVja2FzbS5oCj4gICAgICAgPiArKysgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5o Cj4gICAgICAgPiBAQCAtMTQ5LDYgKzE0OSw3IEBAIHZvaWQgY2hlY2thc21fY2hlY2tfdmlkZW9k c3Aodm9pZCk7Cj4gICAgICAgPiB2b2lkIGNoZWNrYXNtX2NoZWNrX3ZvcmJpc2RzcCh2b2lkKTsK PiAgICAgICA+IHZvaWQgY2hlY2thc21fY2hlY2tfdnZjX2FsZih2b2lkKTsKPiAgICAgICA+IHZv aWQgY2hlY2thc21fY2hlY2tfdnZjX21jKHZvaWQpOwo+ICAgICAgID4gK3ZvaWQgY2hlY2thc21f Y2hlY2tfdnZjX3Nhbyh2b2lkKTsKPiAgICAgICA+Cj4gICAgICAgPiBzdHJ1Y3QgQ2hlY2thc21Q ZXJmOwo+ICAgICAgID4KPiAgICAgICA+IGRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS92dmNf c2FvLmMKPiAgICAgICBiL3Rlc3RzL2NoZWNrYXNtL3Z2Y19zYW8uYwo+ICAgICAgID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiAgICAgICA+IGluZGV4IDAwMDAwMDAwMDAuLjAyNjA3OGZmMDIKPiAg ICAgICA+IC0tLSAvZGV2L251bGwKPiAgICAgICA+ICsrKyBiL3Rlc3RzL2NoZWNrYXNtL3Z2Y19z YW8uYwo+ICAgICAgID4gQEAgLTAsMCArMSwxNjEgQEAKPiAgICAgICA+ICsvKgo+ICAgICAgID4g KyAqIENvcHlyaWdodCAoYykgMjAxOCBZaW5nbWluZyBGYW4gPHlpbmdtaW5nZmFuQGdtYWlsLmNv bT4KPiAgICAgICA+ICsgKgo+ICAgICAgID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KPiAgICAgICA+ICsgKgo+ICAgICAgID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAgICAgICBtb2RpZnkKPiAgICAgICA+ICsg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz Cj4gICAgICAgcHVibGlzaGVkIGJ5Cj4gICAgICAgPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKPiAgICAgICBMaWNlbnNlLCBvcgo+ICAg ICAgID4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gICAgICAgPiAr ICoKPiAgICAgICA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPiAgICAgICA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAo+ICAgICAgIHdhcnJhbnR5IG9mCj4gICAgICAgPiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLsKg IFNlZQo+ICAgICAgIHRoZQo+ICAgICAgID4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4gICAgICAgPiArICoKPiAgICAgICA+ICsgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiAgICAgICBM aWNlbnNlIGFsb25nCj4gICAgICAgPiArICogd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKPiAgICAgICBGb3VuZGF0aW9uLCBJbmMuLAo+ICAgICAgID4gKyAq IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMQo+ ICAgICAgIFVTQS4KPiAgICAgICA+ICsgKi8KPiAgICAgICA+ICsKPiAgICAgICA+ICsjaW5jbHVk ZSA8c3RyaW5nLmg+Cj4gICAgICAgPiArCj4gICAgICAgPiArI2luY2x1ZGUgImxpYmF2dXRpbC9p bnRyZWFkd3JpdGUuaCIKPiAgICAgICA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5h bC5oIgo+ICAgICAgID4gKwo+ICAgICAgID4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL3Z2Yy9kc3Au aCIKPiAgICAgICA+ICsjaW5jbHVkZSAibGliYXZjb2RlYy92dmMvY3R1LmgiCj4gICAgICAgPiAr Cj4gICAgICAgPiArI2luY2x1ZGUgImNoZWNrYXNtLmgiCj4gICAgICAgPiArCj4gICAgICAgPiAr c3RhdGljIGNvbnN0IHVpbnQzMl90IHBpeGVsX21hc2tbM10gPSB7IDB4ZmZmZmZmZmYsCj4gICAg ICAgMHgwM2ZmMDNmZiwgMHgwZmZmMGZmZiB9Owo+ICAgICAgID4gK3N0YXRpYyBjb25zdCB1aW50 MzJfdCBzYW9fc2l6ZVtdID0gezgsIDE2LCAzMiwgNDgsIDY0LCA4MCwKPiAgICAgICA5NiwgMTEy LCAxMjh9Owo+ICAgICAgID4gKwo+ICAgICAgID4gKyNkZWZpbmUgU0laRU9GX1BJWEVMICgoYml0 X2RlcHRoICsgNykgLyA4KQo+ICAgICAgID4gKyNkZWZpbmUgUElYRUxfU1RSSURFICgyKk1BWF9Q Ql9TSVpFICsKPiAgICAgICBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKSAvL3NhbWUgd2l0 aCBzYW9fZWRnZSBzcmNfc3RyaWRlCj4gICAgICAgPiArI2RlZmluZSBCVUZfU0laRSAoUElYRUxf U1RSSURFICogKE1BWF9QQl9TSVpFKzIpICogMikgLy8rMgo+ICAgICAgIGZvciB0b3AgYW5kIGJv dHRvbSByb3csICoyIGZvciBoaWdoIGJpdCBkZXB0aAo+ICAgICAgID4gKyNkZWZpbmUgT0ZGU0VU X1RIUkVTSCAoMSA8PCAoYml0X2RlcHRoIC0gNSkpCj4gICAgICAgPiArI2RlZmluZSBPRkZTRVRf TEVOR1RIIDUKPiAgICAgICA+ICsKPiAgICAgICA+ICsjZGVmaW5lIHJhbmRvbWl6ZV9idWZmZXJz KGJ1ZjAsIGJ1ZjEsIHNpemUpwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcCj4gICAgICAgPiAr wqAgwqAgZG8ge8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFwKPiAgICAgICA+ICvCoCDCoCDCoCDCoCB1 aW50MzJfdCBtYXNrID0gcGl4ZWxfbWFza1soYml0X2RlcHRoIC0gOCkgPj4gMV07wqAgwqBcCj4g ICAgICAgPiArwqAgwqAgwqAgwqAgaW50IGs7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKg IMKgIMKgIGZvciAoayA9IDA7IGsgPCBzaXplOyBrICs9IDQpIHvCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoFwKPiAgICAgICA+ICvCoCDCoCDCoCDCoCDCoCDCoCB1aW50MzJfdCByID0g cm5kKCkgJiBtYXNrO8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFwKPiAgICAgICA+ ICvCoCDCoCDCoCDCoCDCoCDCoCBBVl9XTjMyQShidWYwICsgaywgcik7wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKgIMKgIMKgIMKgIMKgIEFW X1dOMzJBKGJ1ZjEgKyBrLCByKTvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBcCj4gICAgICAgPiArwqAgwqAgwqAgwqAgfcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXAo+ICAgICAg ID4gK8KgIMKgIH0gd2hpbGUgKDApCj4gICAgICAgPiArCj4gICAgICAgPiArI2RlZmluZSByYW5k b21pemVfYnVmZmVyczIoYnVmLCBzaXplKcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgXAo+ICAgICAgID4gK8KgIMKgIGRvIHvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcCj4gICAgICAg PiArwqAgwqAgwqAgwqAgdWludDMyX3QgbWF4X29mZnNldCA9IE9GRlNFVF9USFJFU0g7wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKgIMKgIMKgIGludCBrO8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIFwKPiAgICAgICA+ICvCoCDCoCDCoCDCoCBpZiAoYml0X2RlcHRoID09IDgpIHvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFwKPiAgICAgICA+ICvCoCDC oCDCoCDCoCDCoCDCoCBmb3IgKGsgPSAwOyBrIDwgc2l6ZTsgaysrKSB7wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVpbnQ4 X3QgciA9IHJuZCgpICUgbWF4X29mZnNldDvCoCDCoCDCoCDCoCDCoCDCoCDCoFwKPiAgICAgICA+ ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBidWZba10gPSByO8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXAo+ICAgICAgID4gK8KgIMKgIMKgIMKgIMKg IMKgIH3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFwKPiAgICAgICA+ICvCoCDCoCDCoCDCoCB9IGVsc2Uge8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIFwKPiAgICAgICA+ICvCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGsgPSAwOyBrIDwgc2l6ZTsg aysrKSB7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHVpbnQxNl90IHIgPSBybmQoKSAlIG1heF9vZmZzZXQ7wqAgwqAgwqAg wqAgwqAgwqAgXAo+ICAgICAgID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJ1ZltrXSA9IHI7 wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcCj4gICAg ICAgPiArwqAgwqAgwqAgwqAgwqAgwqAgfcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXAo+ICAgICAgID4gK8KgIMKg IMKgIMKgIH3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFwKPiAgICAgICA+ICvCoCDCoCB9IHdoaWxlICgw KQo+ICAgICAgID4gKwo+ICAgICAgID4gK3N0YXRpYyB2b2lkIGNoZWNrX3Nhb19iYW5kKFZWQ0RT UENvbnRleHQgKmgsIGludCBiaXRfZGVwdGgpCj4gICAgICAgPiArewo+ICAgICAgID4gK8KgIMKg IGludCBpOwo+ICAgICAgID4gK8KgIMKgIExPQ0FMX0FMSUdORURfMzIodWludDhfdCwgZHN0MCwg W0JVRl9TSVpFXSk7Cj4gICAgICAgPiArwqAgwqAgTE9DQUxfQUxJR05FRF8zMih1aW50OF90LCBk c3QxLCBbQlVGX1NJWkVdKTsKPiAgICAgICA+ICvCoCDCoCBMT0NBTF9BTElHTkVEXzMyKHVpbnQ4 X3QsIHNyYzAsIFtCVUZfU0laRV0pOwo+ICAgICAgID4gK8KgIMKgIExPQ0FMX0FMSUdORURfMzIo dWludDhfdCwgc3JjMSwgW0JVRl9TSVpFXSk7Cj4gICAgICAgPiArwqAgwqAgaW50MTZfdCBvZmZz ZXRfdmFsW09GRlNFVF9MRU5HVEhdOwo+ICAgICAgID4gK8KgIMKgIGludCBsZWZ0X2NsYXNzID0g cm5kKCklMzI7Cj4gICAgICAgPiArCj4gICAgICAgPiArwqAgwqAgZm9yIChpID0gMDsgaSA8IEZG X0FSUkFZX0VMRU1TKHNhb19zaXplKTsgaSsrKSB7Cj4gICAgICAgPiArwqAgwqAgwqAgwqAgaW50 IGJsb2NrX3NpemUgPSBzYW9fc2l6ZVtpXTsKPiAgICAgICA+ICvCoCDCoCDCoCDCoCBpbnQgcHJl dl9zaXplID0gaSA+IDAgPyBzYW9fc2l6ZVtpIC0gMV0gOiAwOwo+ICAgICAgID4gK8KgIMKgIMKg IMKgIHB0cmRpZmZfdCBzdHJpZGUgPSBQSVhFTF9TVFJJREUqU0laRU9GX1BJWEVMOwo+ICAgICAg ID4gK8KgIMKgIMKgIMKgIGRlY2xhcmVfZnVuYyh2b2lkLCB1aW50OF90ICpkc3QsIGNvbnN0IHVp bnQ4X3QgKnNyYywKPiAgICAgICBwdHJkaWZmX3QgZHN0X3N0cmlkZSwgcHRyZGlmZl90IHNyY19z dHJpZGUsCj4gICAgICAgPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb25zdCBp bnQxNl90ICpzYW9fb2Zmc2V0X3ZhbCwgaW50Cj4gICAgICAgc2FvX2xlZnRfY2xhc3MsIGludCB3 aWR0aCwgaW50IGhlaWdodCk7Cj4gICAgICAgPiArCj4gICAgICAgPiArwqAgwqAgwqAgwqAgaWYg KGNoZWNrX2Z1bmMoaC0+c2FvLmJhbmRfZmlsdGVyW2ldLAo+ICAgICAgICJ2dmNfc2FvX2JhbmRf JWRfJWQiLCBibG9ja19zaXplLCBiaXRfZGVwdGgpKSB7Cj4gICAgICAgPiArCj4gICAgICAgPiAr wqAgwqAgwqAgwqAgwqAgwqAgZm9yIChpbnQgdyA9IHByZXZfc2l6ZSArIDQ7IHcgPD0gYmxvY2tf c2l6ZTsgdyArPQo+ICAgICAgIDQpIHsKPiAgICAgICA+ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCByYW5kb21pemVfYnVmZmVycyhzcmMwLCBzcmMxLCBCVUZfU0laRSk7Cj4gICAgICAgPiArwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcmFuZG9taXplX2J1ZmZlcnMyKG9mZnNldF92YWwsCj4gICAg ICAgT0ZGU0VUX0xFTkdUSCk7Cj4gICAgICAgPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWVt c2V0KGRzdDAsIDAsIEJVRl9TSVpFKTsKPiAgICAgICA+ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBtZW1zZXQoZHN0MSwgMCwgQlVGX1NJWkUpOwo+ICAgICAgID4gKwo+ICAgICAgID4gK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGNhbGxfcmVmKGRzdDAsIHNyYzAsIHN0cmlkZSwgc3RyaWRlLAo+ ICAgICAgIG9mZnNldF92YWwsIGxlZnRfY2xhc3MsIHcsIGJsb2NrX3NpemUpOwo+ICAgICAgID4g K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhbGxfbmV3KGRzdDEsIHNyYzEsIHN0cmlkZSwgc3Ry aWRlLAo+ICAgICAgIG9mZnNldF92YWwsIGxlZnRfY2xhc3MsIHcsIGJsb2NrX3NpemUpOwo+ICAg ICAgID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciAoaW50IGogPSAwOyBqIDwgYmxvY2tf c2l6ZTsgaisrKSB7Cj4gICAgICAgPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYg KG1lbWNtcChkc3QwICsgaipzdHJpZGUsIGRzdDEgKwo+ICAgICAgIGoqc3RyaWRlLCB3KlNJWkVP Rl9QSVhFTCkpCj4gICAgICAgPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZmFpbCgpOwo+ICAgICAgID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiAgICAgICA+ICvC oCDCoCDCoCDCoCDCoCDCoCB9Cj4KPiAgICAgICBGb3IgbmV3IGNoZWNrYXNtIHRlc3RzLCBJIHdv dWxkIHN1Z2dlc3QgdHJ5aW5nIHRvIHVzZSB0aGUKPiAgICAgICBoZWxwZXJzIGZvcgo+ICAgICAg IGRvaW5nIGJvdW5kcyBjaGVja3MgYXV0b21hdGljYWxseTsgc2VlIHRoZSByZWNlbnQgY29tbWl0 cwo+ICAgICAgIDRkNGIzMDFlNGEyNjlhZGZhYmNlYWVjYTFhMjBjNjUzYmRlNDc1NTQgYW5kCj4g ICAgICAgYzFhMmRhNzJjYzI3Y2Y5Yjc4YTBjYmVhMmY2MDI2NTkwOWQ4YjI1MyBmb3IgaG93IHRv IHVzZSB0aGVtLgo+ICAgICAgIFRoaXMgd2lsbAo+ICAgICAgIG1ha2Ugc3VyZSB0aGF0IGFueSBu ZXcgU0lNRCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFjY2lkZW50YWxseQo+ICAgICAgIHdyaXRl Cj4gICAgICAgb3V0c2lkZSBvZiB0aGUgZGVzaWduYXRlZCBhcmVhLCB3aGljaCBwcmV2aW91c2x5 IGNvdWxkIGhhcHBlbgo+ICAgICAgIHdpdGhvdXQKPiAgICAgICBub3RpY2luZy4KPiAKPiBIaSBN YXJ0aW4sCj4gVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3LsKgCj4gCj4gU0FPIGRvZXMgcGVyZm9y bSBzb21lIG92ZXJ3cml0ZXMgb24gZWFjaCBsaW5lIGFuZCBhbGlnbnMgdGhlIHdpZHRoIHRvIDg6 Cj4gaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi9tYXN0ZXIvbGliYXZjb2Rl Yy9oZXZjL2ZpbHRlci5jCgpTb3JyeSwgb24gYSBxdWljayBicm93c2UgdGhyb3VnaCB0aGF0IEkg ZGlkbid0IHNlZSB3aGljaCBvZiB0aGUgOTI0IGxpbmVzIAp5b3UncmUgcmVmZXJyaW5nIHRvIHRo YXQgZG9lcyB0aGF0LgoKPiBJJ20gbm90IHN1cmUgaWYgdGhlIGN1cnJlbnQgYm91bmRzLWNoZWNr aW5nIEFQSSBjYW4gaGFuZGxlIHRoaXMuwqAKCkl0IGRlZmluaXRlbHkgY2FuIGRvIHRoYXQuIDRk NGIzMDFlNGEyNjlhZGZhYmNlYWVjYTFhMjBjNjUzYmRlNDc1NTQgdXNlcyAKY2hlY2thc21fY2hl Y2tfcGl4ZWxfcGFkZGVkKCksIHdoaWNoIGFzc3VtZXMgdGhhdCB3ZSBkbyBubyBvdmVyd3JpdGlu ZyAKb3V0c2lkZSBvZiB0aGUgb3V0cHV0IGFyZWEuIChUaGUgc2FtZSBnb2VzIGZvciBjaGVja2Fz bV9jaGVja19wYWRkZWQoKSBpZiAKbm90IHVzaW5nIHRoZSBiaXRfZGVwdGggdmFyaWFibGUgZm9y IHN3aXRjaGluZyBiZXR3ZWVuIDggYW5kIDE2IGJpdHMgcGVyIApwaXhlbC4pIElmIHdlJ2QgaW5z dGVhZCB1c2UgY2hlY2thc21fY2hlY2tfcGl4ZWxfcGFkZGVkX2FsaWduKCksIG9yIApjaGVja2Fz bV9jaGVja19wYWRkZWRfYWxpZ24oKSwgdGhlbiB5b3UgcGFzcyB0d28gZXh0cmEgcGFyYW1ldGVy cyBhdCB0aGUgCmVuZCwgZm9yIGhvdyBtdWNoIHRvIGFsaWduIHRoZSBvdXRwdXQgc2l6ZS4KClNv IGUuZy4gaWYgeW91IGhhdmUgd2lkdGg9MTIgYW5kIGNhbGwgCmNoZWNrYXNtX2NoZWNrX3BpeGVs X3BhZGRlZF9hbGlnbiguLi4sIDgsIDEpLCB0aGVuIGl0IHdpbGwgYWxsb3cgdGhlIApvdXRwdXQg d2lkdGggdG8gYmUgYWxpZ25lZCB0byA4IC0gaS5lLiB1cCB0byAxNi4gU28gaW4gdGhhdCBjYXNl LCBpdCAKY2hlY2tzIHRoYXQgYSAxMiBwaXhlbCB3aWRlIGFyZWEgaGFzIHRoZSBjb3JyZWN0IG91 dHB1dCBwaXhlbHMsIGlnbm9yZSB0aGUgCmZvbGxvd2luZyA0IHBpeGVscyBhbmQgY2hlY2sgdGhh dCBwaXhlbHMgb3V0c2lkZSBvZiB0aGF0IGFyZWEgaGF2ZW4ndCBiZWVuIAp0b3VjaGVkLgoKSWYg eW91IHJlYWxseSBkb24ndCB3YW50IGNoZWNraW5nIG91dHNpZGUgb2YgdGhlIGJvdW5kcywgeW91 IGNhbiBzdGlsbCB1c2UgCmNoZWNrYXNtX2NoZWNrX3BpeGVsKCkgb3IgY2hlY2thc21fY2hlY2so KS4gRXZlbiBpZiBub3QgY2hlY2tpbmcgdGhlIApib3VuZHMsIGl0IGF1dG9tYXRpY2FsbHkgYWxs b3dzIHByaW50aW5nIHRoZSBtaXNtYXRjaGVkIGRhdGEgb24gZmFpbHVyZXMsIAppZiB5b3UgcnVu IGNoZWNrYXNtIHdpdGggdGhlICItdiIgb3B0aW9uLgoKPiBDb3VsZCB5b3UgaGVscCBhZGQgc3Vw cG9ydCBmb3IgaXQgaW4gdGhlIEhFVkMgU0FPIGNoZWNrYXNtP8KgCgpJIGNhbiB0cnkgdG8gZ2l2 ZSBpdCBhIHNob3QgaW4gYSBmZXcgZGF5cyBtYXliZS4gT3RoZXJ3aXNlIHlvdSBjYW4gdHJ5IApm b2xsb3dpbmcgdGhlIGV4YW1wbGVzIG9mIDRkNGIzMDFlNGEyNjlhZGZhYmNlYWVjYTFhMjBjNjUz YmRlNDc1NTQsIHdoaWxlIAp1c2luZyBjaGVja2FzbV9jaGVja19waXhlbF9wYWRkZWRfYWxpZ24o KS4KCi8vIE1hcnRpbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==