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 2CA9A44E2C for ; Sun, 26 Feb 2023 06:06:02 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 553B568B757; Sun, 26 Feb 2023 08:05:59 +0200 (EET) Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31BF368B1DC for ; Sun, 26 Feb 2023 08:05:53 +0200 (EET) Received: by mail-lf1-f53.google.com with SMTP id s22so4463549lfi.9 for ; Sat, 25 Feb 2023 22:05:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=xxbV3T50Diw5xz07kY0lXa71nJnD9AP3msL3z5o/KbY=; b=gD+PtuDOFgMOg3sgfrdDWTTJIbbJDv2xlDt5yMvyAFGZFqUN13DHIP+EBK5Ua7XgRG A5n/EoMSEeTRsyq0kXqTqKQnR8wRcVh+tHs+JAlrhIQB01ukLzFOIxvaEb6QN9spnmB3 zSAnNWYYFDAPP9fOQr8+QC0YP4JP55QOYEm7tPVfzmSHljWDvwFTJcePqZsUnILtjzYu fJBGYRjhHD5F1KeUTkD1r604ktErL9KhTXoyUygi77+tRTRoQQQR1ElYauiSdjkKacMx BWizQV1FIZ08JGFs+zmlodxr5M9JE/rY5YlSQecl0Xfw+3mCLQZ1r2kfxsf2dUBUJ3Ph 56kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xxbV3T50Diw5xz07kY0lXa71nJnD9AP3msL3z5o/KbY=; b=Ic3rachcJ/okr75ALwkqmhzpi+STgfRR+OoluBfmGVlo6BmcuhUcHSw50qDY5PHToi /aBSFWZfdn56TQhMzZU7DyG0M24Ni9Na3S0OIxRqWGYJQR8Zum2NxJxXOGXG6j1OPrVf HoPsznrEPjkMXYBRNy3vHvdpvtdys/DnCNrYGSIel161OoIilkwTINHvy2k8DNXmSpdA 1CSNRd8pvrbc+D4Z2XA55U8er4Q3mF3hFioT03YBWFvIdRnriNAJZjd7Svcs3A3Jj72E Vg5QA7txZ3cZ8hWMCjqSe62Wmxdz1ZQnrTV3dlqPxUuD/hgEqonfDTbFyPEIahJru0Fr jD3w== X-Gm-Message-State: AO0yUKVw4QJd7+fkZC2cGwgb2eRbpTGJb78ISKUD8GFzbLxrO8TvORKL dkLB5FmasSWL9FFKqM1GmyzDXSy4iwDI1K5PQcZBj5HJ/7ffiA== X-Google-Smtp-Source: AK7set/Cfj+meYBWaw0SnZNcfNTbF6ZALuRMXyVvBq+QGrVs3W0pv6Vh9FA2QXt8bZo0XV5MzsHSb6ESPJoNnVJdrfQ= X-Received: by 2002:ac2:43d1:0:b0:4d5:ca43:703e with SMTP id u17-20020ac243d1000000b004d5ca43703emr6320418lfl.1.1677391551726; Sat, 25 Feb 2023 22:05:51 -0800 (PST) MIME-Version: 1.0 References: <20230226054835.14201-1-nuomi2021@gmail.com> In-Reply-To: <20230226054835.14201-1-nuomi2021@gmail.com> From: Nuo Mi Date: Sun, 26 Feb 2023 14:05:40 +0800 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 1/2] vvcdec: alf, add avx2 for luma and chroma filter 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-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: T24gU3VuLCBGZWIgMjYsIDIwMjMgYXQgMTo0OOKAr1BNIE51byBNaSA8bnVvbWkyMDIxQGdtYWls LmNvbT4gd3JvdGU6Cgo+IGdvdCAxMSV+MjYlIHBlcmZvcm1hbmNlIGZvciAxMDgwUCBhbmQgNGsg dmlkZW8KPgo+IGNsaXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVm b3JlICAgICAgYWZ0ZXIgICBkZWx0YQo+IFJpdHVhbERhbmNlXzE5MjB4MTA4MF82MF8xMF80MjBf MzJfTEQuMjYgICAgICAgIDM1ICAgICAgICAgIDQzICAgIDIyLjglCj4gUml0dWFsRGFuY2VfMTky MHgxMDgwXzYwXzEwXzQyMF8zN19SQS4yNjYgICAgICAgNDMgICAgICAgICAgNDggICAgMTEuNiUK PiBUYW5nbzJfMzg0MHgyMTYwXzYwXzEwXzQyMF8yN19MRC4yNjYgICAgICAgICAgICA3LjkgICAg ICAgICAxMCAgICAyNi41JQo+IC0tLQo+ICBsaWJhdmNvZGVjL3Z2Y2RzcC5jICAgICAgICAgIHwg ICAzICsKPiAgbGliYXZjb2RlYy94ODYvTWFrZWZpbGUgICAgICB8ICAgMiArCj4gIGxpYmF2Y29k ZWMveDg2L3Z2Y19hbGYuYXNtICAgfCAzMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiAgbGliYXZjb2RlYy94ODYvdnZjZHNwLmggICAgICB8ICA0NCArKysrKwo+ICBsaWJh dmNvZGVjL3g4Ni92dmNkc3BfaW5pdC5jIHwgIDgxICsrKysrKysrKysKPiAgNSBmaWxlcyBjaGFu Z2VkLCA0MzEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy94 ODYvdnZjX2FsZi5hc20KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMveDg2L3Z2Y2Rz cC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3g4Ni92dmNkc3BfaW5pdC5jCj4K PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmNkc3AuYyBiL2xpYmF2Y29kZWMvdnZjZHNwLmMK PiBpbmRleCA4MDFiZDAxODlkLi4zOTk2MzE1MDNmIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMv dnZjZHNwLmMKPiArKysgYi9saWJhdmNvZGVjL3Z2Y2RzcC5jCj4gQEAgLTMxMyw0ICszMTMsNyBA QCB2b2lkIGZmX3Z2Y19kc3BfaW5pdChWVkNEU1BDb250ZXh0ICp2dmNkc3AsIGludAo+IGJpdF9k ZXB0aCkKPiAgICAgICAgICBWVkNfRFNQKDgpOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgfQo+ ICsjaWYgQVJDSF9YODYKPiArICAgIGZmX3Z2Y19kc3BfaW5pdF94ODYodnZjZHNwLCBiaXRfZGVw dGgpOwo+ICsjZW5kaWYKPiAgfQo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni9NYWtlZmls ZSBiL2xpYmF2Y29kZWMveDg2L01ha2VmaWxlCj4gaW5kZXggMTE4ZGFjYTMzMy4uMjNiMmZiNDJi YiAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3g4Ni9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2Y29k ZWMveDg2L01ha2VmaWxlCj4gQEAgLTgyLDYgKzgyLDcgQEAgT0JKUy0kKENPTkZJR19WUDlfREVD T0RFUikgICAgICAgICAgICAgKz0KPiB4ODYvdnA5ZHNwX2luaXQubyAgICAgICAgICAgIFwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDg2L3ZwOWRzcF9pbml0 XzEyYnBwLm8gICAgICBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHg4Ni92cDlkc3BfaW5pdF8xNmJwcC5vCj4gIE9CSlMtJChDT05GSUdfV0VCUF9ERUNPREVS KSAgICAgICAgICAgICs9IHg4Ni92cDhkc3BfaW5pdC5vCj4gK09CSlMtJChDT05GSUdfVlZDX0RF Q09ERVIpICAgICAgICAgICAgICs9IHg4Ni92dmNkc3BfaW5pdC5vCj4KPgo+ICAjIEdDQyBpbmxp bmUgYXNzZW1ibHkgb3B0aW1pemF0aW9ucwo+IEBAIC0yMDIsNCArMjAzLDUgQEAgWDg2QVNNLU9C SlMtJChDT05GSUdfVlA5X0RFQ09ERVIpICAgICAgKz0KPiB4ODYvdnA5aW50cmFwcmVkLm8gICAg ICAgICAgICBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg4 Ni92cDlscGZfMTZicHAubyAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeDg2L3ZwOW1jLm8gICAgICAgICAgICAgICAgICAgXAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ODYvdnA5bWNfMTZicHAubwo+ ICtYODZBU00tT0JKUy0kKENPTkZJR19WVkNfREVDT0RFUikgICAgICArPSB4ODYvdnZjX2FsZi5v Cj4gIFg4NkFTTS1PQkpTLSQoQ09ORklHX1dFQlBfREVDT0RFUikgICAgICs9IHg4Ni92cDhkc3Au bwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni92dmNfYWxmLmFzbSBiL2xpYmF2Y29kZWMv eDg2L3Z2Y19hbGYuYXNtCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw Li5jM2U0MDc0YmU3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Y29kZWMveDg2L3Z2Y19h bGYuYXNtCj4gQEAgLTAsMCArMSwzMDEgQEAKPgo+ICs7KioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KzsqIFZWQyBBZGFwdGl2ZSBMb29wIEZpbHRlciBTSU1EIG9wdGltaXphdGlvbnMKPiArOyoKPiAr OyogQ29weXJpZ2h0IChjKSAyMDIzIE51byBNaSA8bnVvbWkyMDIxQGdtYWlsLmNvbT4KPiArOyoK PiArOyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICs7Kgo+ICs7KiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKzsqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAr OyogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCj4gKzsqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICs7Kgo+ICs7KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArOyogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArOyogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKPiArOyogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPiArOyoKPiArOyogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICs7KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKzsqIEZvdW5kYXRpb24sIEluYy4s IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKPiAwMjExMC0xMzAx IFVTQQo+Cj4gKzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArCj4gKyVpbmNsdWRlICJsaWJhdnV0 aWwveDg2L3g4NnV0aWwuYXNtIgo+ICsKPiArU0VDVElPTl9ST0RBVEEKPiArCj4gKyVtYWNybyBQ QVJBTV9TSFVGRkUgMQo+ICslYXNzaWduIGkgKCUxICAqIDIpCj4gKyVhc3NpZ24gaiAoKGkgKyAx KSA8PCA4KSArIChpKQo+ICtwYXJhbV9zaHVmZmVfJSslMToKPiArJXJlcCAyCj4gKyAgICB0aW1l cyA0IGR3IGoKPiArICAgIHRpbWVzIDQgZHcgKGogKyAweDA4MDgpCj4gKyVlbmRyZXAKPiArJWVu ZG1hY3JvCj4gKwo+ICtQQVJBTV9TSFVGRkUgMAo+ICtQQVJBTV9TSFVGRkUgMQo+ICtQQVJBTV9T SFVGRkUgMgo+ICtQQVJBTV9TSFVGRkUgMwo+ICsKPiArZHdfNjQ6ICAgICAgICAgICAgICAgICAg ZGQgNjQKPiArCj4gK1NFQ1RJT04gLnRleHQKPiArCj4gKyVpZiBIQVZFX0FWWDJfRVhURVJOQUwK PiArCj4gKzslMS0lMyBvdXQKPiArOyU0IGNsaXAgb3IgZmlsdGVyCj4gKyVtYWNybyBMT0FEX0xV TUFfUEFSQU1TX1cxNiA0Cj4gKyAgICAlaWZpZG4gY2xpcCwgJTQKPiArICAgICAgICBtb3Z1ICAg ICAgICAgICAgbSUxLCBbJTRxICsgMCAqIDMyXQo+ICsgICAgICAgIG1vdnUgICAgICAgICAgICBt JTIsIFslNHEgKyAxICogMzJdCj4gKyAgICAgICAgbW92dSAgICAgICAgICAgIG0lMywgWyU0cSAr IDIgKiAzMl0KPiArICAgICVlbGlmaWRuIGZpbHRlciwgJTQKPiArICAgICAgICBtb3Z1ICAgICAg ICAgICAgeG0lMSwgWyU0cSArIDAgKiAxNl0KPiArICAgICAgICBtb3Z1ICAgICAgICAgICAgeG0l MiwgWyU0cSArIDEgKiAxNl0KPiArICAgICAgICBtb3Z1ICAgICAgICAgICAgeG0lMywgWyU0cSAr IDIgKiAxNl0KPiArICAgICAgICBwbW92c3hidyAgICAgICAgbSUxLCB4bSUxCj4gKyAgICAgICAg cG1vdnN4YncgICAgICAgIG0lMiwgeG0lMgo+ICsgICAgICAgIHBtb3ZzeGJ3ICAgICAgICBtJTMs IHhtJTMKPiArICAgICVlbHNlCj4gKyAgICAgICAgJWVycm9yICJuZWVkIGZpbHRlciBvciBjbGlw IGZvciB0aGUgZm91cnRoIHBhcmFtIgo+ICsgICAgJWVuZGlmCj4gKyVlbmRtYWNybwo+ICsKPiAr JW1hY3JvIExPQURfTFVNQV9QQVJBTVNfVzE2IDYKPiArICAgIExPQURfTFVNQV9QQVJBTVNfVzE2 ICAgICUxLCAlMiwgJTMsICU0Cj4gKyAgICA7bSUxID0gMDMgMDIgMDEgMDAKPiArICAgIDttJTIg PSAwNyAwNiAwNSAwNAo+ICsgICAgO20lMyA9IDExIDEwIDA5IDA4Cj4gKwo+ICsgICAgdnNodWZw ZCAgICAgICAgICAgICAgICAgbSU1LCBtJTEsIG0lMiwgMGIwMDExICAgICAgIDswNiAwMiAwNSAw MQo+ICsgICAgdnNodWZwZCAgICAgICAgICAgICAgICAgbSU2LCBtJTMsIG0lNSwgMGIxMDAxICAg ICAgIDswNiAxMCAwMSAwOQo+ICsKPiArICAgIHZzaHVmcGQgICAgICAgICAgICAgICAgIG0lMSwg bSUxLCBtJTYsIDBiMTEwMCAgICAgICA7MDYgMDMgMDkgMDAKPiArICAgIHZzaHVmcGQgICAgICAg ICAgICAgICAgIG0lMiwgbSUyLCBtJTYsIDBiMDExMCAgICAgICA7MTAgMDcgMDEgMDQKPiArICAg IHZzaHVmcGQgICAgICAgICAgICAgICAgIG0lMywgbSUzLCBtJTUsIDBiMDExMCAgICAgICA7MDIg MTEgMDUgMDgKPiArCj4gKyAgICB2cGVybXBkICAgICAgICAgICAgICAgICBtJTEsIG0lMSwgMGIw MV8xMV8xMF8wMCAgICAgOzA5IDA2IDAzIDAwCj4gKyAgICB2c2h1ZnBkICAgICAgICAgICAgICAg ICBtJTIsIG0lMiwgbSUyLCAwYjEwMDEgICAgICAgOzEwIDA3IDA0IDAxCj4gKyAgICB2cGVybXBk ICAgICAgICAgICAgICAgICBtJTMsIG0lMywgMGIxMF8wMF8wMV8xMSAgICAgOzExIDA4IDA1IDAy Cj4gKyVlbmRtYWNybwo+ICsKPiArJW1hY3JvIExPQURfTFVNQV9QQVJBTVNfVzQgNgo+ICsgICAg JWlmaWRuIGNsaXAsICU0Cj4gKyAgICAgICAgbW92cSAgICAgICAgICAgICAgICB4bSUxLCBbJTRx ICsgMCAqIDhdCj4gKyAgICAgICAgbW92cSAgICAgICAgICAgICAgICB4bSUyLCBbJTRxICsgMSAq IDhdCj4gKyAgICAgICAgbW92cSAgICAgICAgICAgICAgICB4bSUzLCBbJTRxICsgMiAqIDhdCj4g KyAgICAlZWxpZmlkbiBmaWx0ZXIsICU0Cj4gKyAgICAgICAgbW92ZCAgICAgICAgICAgICAgICB4 bSUxLCBbJTRxICsgMCAqIDRdCj4gKyAgICAgICAgbW92ZCAgICAgICAgICAgICAgICB4bSUyLCBb JTRxICsgMSAqIDRdCj4gKyAgICAgICAgbW92ZCAgICAgICAgICAgICAgICB4bSUzLCBbJTRxICsg MiAqIDRdCj4gKyAgICAgICAgcG1vdnN4YncgICAgICAgICAgICB4bSUxLCB4bSUxCj4gKyAgICAg ICAgcG1vdnN4YncgICAgICAgICAgICB4bSUyLCB4bSUyCj4gKyAgICAgICAgcG1vdnN4YncgICAg ICAgICAgICB4bSUzLCB4bSUzCj4gKyAgICAlZWxzZQo+ICsgICAgICAgICVlcnJvciAibmVlZCBm aWx0ZXIgb3IgY2xpcCBmb3IgdGhlIGZvdXJ0aCBwYXJhbSIKPiArICAgICVlbmRpZgo+ICsgICAg dnBicm9hZGNhc3RxICAgICAgICAgICAgbSUxLCB4bSUxCj4gKyAgICB2cGJyb2FkY2FzdHEgICAg ICAgICAgICBtJTIsIHhtJTIKPiArICAgIHZwYnJvYWRjYXN0cSAgICAgICAgICAgIG0lMywgeG0l Mwo+ICslZW5kbWFjcm8KPiArCj4gKzslMS0lMyBvdXQKPiArOyU0IGNsaXAgb3IgZmlsdGVyCj4g KzslNSwgJTYgdG1wCj4gKyVtYWNybyBMT0FEX0xVTUFfUEFSQU1TIDYKPiArICAgIExPQURfTFVN QV9QQVJBTVNfVyAlKyBXSURUSCAlMSwgJTIsICUzLCAlNCwgJTUsICU2Cj4gKyVlbmRtYWNybwo+ ICsKPiArJW1hY3JvIExPQURfQ0hST01BX1BBUkFNUyA0Cj4gKyAgICA7TE9BRF9DSFJPTUFfUEFS QU1TX1cgJSsgV0lEVEggJTEsICUyLCAlMywgJTQKPiArICAgICVpZmlkbiBjbGlwLCAlMwo+ICsg ICAgICAgIG1vdnEgICAgICAgICAgICB4bSUxLCBbJTNxXQo+ICsgICAgICAgIG1vdmQgICAgICAg ICAgICB4bSUyLCBbJTNxICsgOF0KPiArICAgICVlbGlmaWRuIGZpbHRlciwgJTMKPiArICAgICAg ICBtb3ZkICAgICAgICAgICAgeG0lMSwgWyUzcSArIDBdCj4gKyAgICAgICAgcGluc3J3ICAgICAg ICAgIHhtJTIsIFslM3EgKyA0XSwgMAo+ICsgICAgICAgIHZwbW92c3hidyAgICAgICBtJTEsIHht JTEKPiArICAgICAgICB2cG1vdnN4YncgICAgICAgbSUyLCB4bSUyCj4gKyAgICAlZWxzZQo+ICsg ICAgICAgICVlcnJvciAibmVlZCBmaWx0ZXIgb3IgY2xpcCBmb3IgdGhlIHRoaXJkIHBhcmFtIgo+ ICsgICAgJWVuZGlmCj4gKyAgICB2cGJyb2FkY2FzdHEgICAgbSUxLCB4bSUxCj4gKyAgICB2cGJy b2FkY2FzdHEgICAgbSUyLCB4bSUyCj4gKyVlbmRtYWNybwo+ICsKPiArJW1hY3JvIExPQURfUEFS QU1TIDAKPiArICAgICVpZiBMVU1BCj4gKyAgICAgICAgTE9BRF9MVU1BX1BBUkFNUyAgICAgMywg NCwgNSwgZmlsdGVyLCA2LCA3Cj4gKyAgICAgICAgTE9BRF9MVU1BX1BBUkFNUyAgICAgNiwgNywg OCwgY2xpcCwgICA5LCAxMAo+ICsgICAgJWVsc2UKPiArICAgICAgICBMT0FEX0NIUk9NQV9QQVJB TVMgICAzLCA0LCBmaWx0ZXIsIDUKPiArICAgICAgICBMT0FEX0NIUk9NQV9QQVJBTVMgICA2LCA3 LCBjbGlwLCA4Cj4gKyAgICAlZW5kaWYKPiArJWVuZG1hY3JvCj4gKwo+ICs7RklMVEVSKHBhcmFt X2lkeCkKPiArO2lucHV0OiBtMiwgbTksIG0xMAo+ICs7b3V0cHV0OiBtMCwgbTEKPiArO20xMiB+ IG0xNTogdG1wCj4gKyVtYWNybyBGSUxURVIgMQo+ICsgICAgJWFzc2lnbiBpICglMSAlIDQpCj4g KyAgICAlYXNzaWduIGogKCUxIC8gNCArIDMpCj4gKyAgICAlYXNzaWduIGsgKCUxIC8gNCArIDYp Cj4gKyAgICAlZGVmaW5lIGZpbHRlcnMgbSUrago+ICsgICAgJWRlZmluZSBjbGlwcyBtJStrCj4g Kwo+ICsgICAgbW92dSAgICAgICAgICAgIG0xMiwgW3BhcmFtX3NodWZmZV8lK2ldCj4gKyAgICBw c2h1ZmIgICAgICAgICAgbTE0LCBjbGlwcywgbTEyICAgICAgICAgIDtjbGlwCj4gKyAgICBweG9y ICAgICAgICAgICAgbTEzLCBtMTMKPiArICAgIHBzdWJ3ICAgICAgICAgICBtMTMsIG0xNCAgICAg ICAgICAgICAgICAgOy1jbGlwCj4gKwo+ICsgICAgdnBzdWJ3ICAgICAgICAgIG05LCBtMgo+ICsg ICAgQ0xJUFcgICAgICAgICAgIG05LCBtMTMsIG0xNAo+ICsKPiArICAgIHZwc3VidyAgICAgICAg ICBtMTAsIG0yCj4gKyAgICBDTElQVyAgICAgICAgICAgbTEwLCBtMTMsIG0xNAo+ICsKPiArICAg IHZwdW5wY2tod2QgICAgICBtMTUsIG05LCBtMTAKPiArICAgIHZwdW5wY2tsd2QgICAgICBtOSwg bTksIG0xMAo+ICsKPiArICAgIHBzaHVmYiAgICAgICAgICBtMTQsIGZpbHRlcnMsIG0xMiAgICAg ICA7ZmlsdGVyCj4gKyAgICB2cHVucGNrbHdkICAgICAgbTEwLCBtMTQsIG0xNAo+ICsgICAgdnB1 bnBja2h3ZCAgICAgIG0xNCwgbTE0LCBtMTQKPiArCj4gKyAgICB2cG1hZGR3ZCAgICAgICAgbTks IG0xMAo+ICsgICAgdnBtYWRkd2QgICAgICAgIG0xNCwgbTE1Cj4gKwo+ICsgICAgcGFkZGQgICAg ICAgICAgIG0wLCBtOQo+ICsgICAgcGFkZGQgICAgICAgICAgIG0xLCBtMTQKPiArJWVuZG1hY3Jv Cj4gKwo+ICs7RklMVEVSKHBhcmFtX3N0YXJ0LCBvZmYwfm9mZjIpCj4gKyVtYWNybyBGSUxURVIg NAo+ICsgICAgJWFzc2lnbiAlJWkgKCUxKQo+ICsgICAgJXJlcCAzCj4gKyAgICAgICAgbGVhICAg ICAgICAgICAgIG9mZnNldHEsIFslMl0KPiArICAgICAgICBtb3YgICAgICAgICAgICAgdG9wcSwg c3JjcQo+ICsgICAgICAgIG1vdiAgICAgICAgICAgICBib3R0b21xLCBzcmNxCj4gKyAgICAgICAg c3ViICAgICAgICAgICAgIHRvcHEsIG9mZnNldHEKPiArICAgICAgICBhZGQgICAgICAgICAgICAg Ym90dG9tcSwgb2Zmc2V0cQo+ICsgICAgICAgIExPQURfUElYRUxTICAgICA5LCB0b3BxLCAxMQo+ ICsgICAgICAgIExPQURfUElYRUxTICAgICAxMCwgYm90dG9tcSwgMTIKPiArICAgICAgICBGSUxU RVIgICUlaQo+ICsgICAgICAgICVhc3NpZ24gJSVpICUlaSsxCj4gKyAgICAgICAgJXJvdGF0ZSAx Cj4gKyAgICAlZW5kcmVwCj4gKyVlbmRtYWNybwo+ICsKPiArO2ZpbHRlciBwaXhlbHMgZm9yIGx1 bWEgYW5kIGNocm9tYQo+ICslbWFjcm8gRklMVEVSIDAKPiArICAgICVpZiBMVU1BCj4gKyAgICAg ICAgRklMVEVSICAgICAgICAgIDAsIHNyY19zdHJpZGUzcSAsICAgICAgICAgICBzcmNfc3RyaWRl cSAgKiAyICsKPiBwcywgIHNyY19zdHJpZGVxICAqIDIKPiArICAgICAgICBGSUxURVIgICAgICAg ICAgMywgc3JjX3N0cmlkZXEgICogMiAtIHBzLCAgIHNyY19zdHJpZGVxICArIDIgKgo+IHBzLCAg c3JjX3N0cmlkZXEgICsgcHMKPiArICAgICAgICBGSUxURVIgICAgICAgICAgNiwgc3JjX3N0cmlk ZXEsICAgICAgICAgICAgIHNyY19zdHJpZGVxICAtIHBzLAo+ICAgc3JjX3N0cmlkZXEgICsgLTIg KiBwcwo+ICsgICAgICAgIEZJTFRFUiAgICAgICAgICA5LCBzcmNfc3RyaWRlMHEgKyAzICogcHMs ICAgc3JjX3N0cmlkZTBxICsgMiAqCj4gcHMsICBzcmNfc3RyaWRlMHEgKyBwcwo+ICsgICAgJWVs c2UKPiArICAgICAgICBGSUxURVIgICAgICAgICAgMCwgc3JjX3N0cmlkZXEgKiAyLCAgICAgICAg IHNyY19zdHJpZGVxICArIHBzLAo+ICAgc3JjX3N0cmlkZXEKPiArICAgICAgICBGSUxURVIgICAg ICAgICAgMywgc3JjX3N0cmlkZXEgLSBwcywgICAgICAgIHNyY19zdHJpZGUwcSArIDIgKgo+IHBz LCAgc3JjX3N0cmlkZTBxICsgcHMKPiArICAgICVlbmRpZgo+ICslZW5kbWFjcm8KPiArCj4gKyVk ZWZpbmUgU0hJRlQgNwo+ICsKPiArO0xPQURfUElYRUxTKGRlc3QsIHNyYywgdG1wKQo+ICslbWFj cm8gTE9BRF9QSVhFTFMgMwo+ICsgICAgJWlmIFdJRFRIID09IDE2Cj4gKyAgICAgICAgbW92dSAg ICAgICAgICAgIG0lMSwgWyUyXQo+ICsgICAgJWVsc2UKPiArICAgICAgICBwaW5zcnEgICAgICAg ICAgeG0lMSwgWyUyXSwgMAo+ICsgICAgICAgIHBpbnNycSAgICAgICAgICB4bSUxLCBbJTIgKyBz cmNfc3RyaWRlcV0sIDEKPiArICAgICAgICBwaW5zcnEgICAgICAgICAgeG0lMywgWyUyICsgc3Jj X3N0cmlkZXEgKiAyXSwgMAo+ICsgICAgICAgIHBpbnNycSAgICAgICAgICB4bSUzLCBbJTIgKyBz cmNfc3RyaWRlM3FdLCAxCj4gKyAgICAgICAgdmluc2VydGYxMjggICAgIG0lMSwgeG0lMywgMQo+ ICsgICAgJWVuZGlmCj4gKyVlbmRtYWNybwo+ICsKPiArO1NUT1JFX1BJWEVMUyhkZXN0LCBzcmMs IHRtcCkKPiArJW1hY3JvIFNUT1JFX1BJWEVMUyAzCj4gKyAgICAlaWYgV0lEVEggPT0gMTYKPiAr ICAgICAgICBtb3Z1ICAgICAgICAgICAgWyUxXSwgbSUyCj4gKyAgICAlZWxzZQo+ICsgICAgICAg IHBleHRycSAgICAgICAgICBbJTFdLCB4bSUyLCAwCj4gKyAgICAgICAgcGV4dHJxICAgICAgICAg IFslMSArIHNyY19zdHJpZGVxXSwgeG0lMiwgMQo+ICsgICAgICAgIHZwZXJtMmYxMjggICAgICBt JTIsIG0lMiwgMQo+ICsgICAgICAgIHBleHRycSAgICAgICAgICBbJTEgKyBzcmNfc3RyaWRlcSAq IDJdLCB4bSUyLCAwCj4gKyAgICAgICAgcGV4dHJxICAgICAgICAgIFslMSArIHNyY19zdHJpZGUz cV0sIHhtJTIsIDEKPiArICAgICVlbmRpZgo+ICslZW5kbWFjcm8KPiArCj4gKztGSUxURVJfTFVN QSh3aWR0aCkKPiArJW1hY3JvIEFMRl9GSUxURVJfMTZCUFAgMgo+ICslaWZpZG4gJTEsIGx1bWEK PiArICAgICV4ZGVmaW5lIExVTUEgMQo+ICslZWxzZQo+ICsgICAgJXhkZWZpbmUgTFVNQSAwCj4g KyVlbmRpZgo+ICsleGRlZmluZSBXSURUSCAlMgo+ICs7IHZvaWQgdnZjX2FsZl9maWx0ZXJfbHVt YV93JTFfMTZicHBfYXZ4Mih1aW50OF90ICpkc3QsIHB0cmRpZmZfdAo+IGRzdF9zdHJpZGUsCj4g KzsgICAgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0cmlkZSwgaW50IGhlaWdo dCwKPiArOyAgICBjb25zdCBpbnQ4X3QgKmZpbHRlciwgY29uc3QgaW50MTZfdCAqY2xpcCwgcHRy ZGlmZl90IHN0cmlkZSwKPiB1aW50MTZfdCBwaXhlbF9tYXgpOwo+ICsKPiArOyBzZWUgYyBjb2Rl IGZvciBwMCB0byBwNgo+ICsKPiArSU5JVF9ZTU0gYXZ4Mgo+ICtjZ2xvYmFsIHZ2Y19hbGZfZmls dGVyXyUxX3clMl8xNmJwcCwgOSwgMTUsIDE1LCBkc3QsIGRzdF9zdHJpZGUsIHNyYywKPiBzcmNf c3RyaWRlLCBoZWlnaHQsIGZpbHRlciwgY2xpcCwgc3RyaWRlLCBwaXhlbF9tYXgsIFwKPiArICAg IHRvcCwgYm90dG9tLCBvZmZzZXQsIHNyY19zdHJpZGUzLCBzcmNfc3RyaWRlMAo+ICslZGVmaW5l IHBzIDIKPiArICAgIGxlYSAgICAgICAgICAgICBzcmNfc3RyaWRlM3EsIFtzcmNfc3RyaWRlcSAq IDIgKyBzcmNfc3RyaWRlcV0KPiArICAgIG1vdiAgICAgICAgICAgICBzcmNfc3RyaWRlMHEsIDAK PiArICAgIHNociAgICAgICAgICAgICBoZWlnaHRxLCAyCj4gKwo+ICsubG9vcDoKPiArICAgIExP QURfUEFSQU1TCj4gKwo+ICs7d2UgbmVlZCBsb29wIDQgdGltZXMgZm9yIGEgMTZ4NCBibG9jaywg MSB0aW1lIGZvciBhIDR4NCBibG9jawo+ICslZGVmaW5lIHJlcF9udW0gKFdJRFRIIC8gNCkKPiAr JWRlZmluZSBsaW5lcyAgKDQgLyByZXBfbnVtKQo+ICslcmVwIHJlcF9udW0KPiArICAgIFZQQlJP QURDQVNURCAgICBtMCwgW2R3XzY0XQo+ICsgICAgVlBCUk9BRENBU1REICAgIG0xLCBbZHdfNjRd Cj4gKwo+ICsgICAgTE9BRF9QSVhFTFMgICAgIDIsIHNyY3EsIDkgICA7cDAKPiArCj4gKyAgICBG SUxURVIKPiArCj4gKyAgICB2cHNyYWQgICAgICAgICAgbTAsIFNISUZUCj4gKyAgICB2cHNyYWQg ICAgICAgICAgbTEsIFNISUZUCj4gKwo+ICsgICAgdnBhY2tzc2R3ICAgICAgIG0wLCBtMCwgbTEK PiArICAgIHBhZGR3ICAgICAgICAgICBtMCwgbTIKPiArCj4gKyAgICA7Y2xpcCB0byBwaXhlbAo+ ICsgICAgcGluc3J3ICAgICAgICAgIHhtMiwgcGl4ZWxfbWF4dywgMAo+ICsgICAgdnBicm9hZGNh c3R3ICAgIG0yLCB4bTIKPiArICAgIHB4b3IgICAgICAgICAgICBtMSwgbTEKPiArICAgIENMSVBX ICAgICAgICAgICBtMCwgbTEsIG0yCj4gKwo+ICsgICAgU1RPUkVfUElYRUxTICAgIGRzdHEsIDAs IDEKPiArCj4gKyAgICBsZWEgICAgICAgICAgICAgc3JjcSwgW3NyY3EgKyBsaW5lcyAqIHNyY19z dHJpZGVxXQo+ICsgICAgbGVhICAgICAgICAgICAgIGRzdHEsIFtkc3RxICsgbGluZXMgKiBkc3Rf c3RyaWRlcV0KPiArJWVuZHJlcAo+ICsKPiArICAgIGxlYSAgICAgICAgICAgICBmaWx0ZXJxLCBb ZmlsdGVycSArIHN0cmlkZXFdCj4gKyAgICBsZWEgICAgICAgICAgICAgY2xpcHEsIFtjbGlwcSAr IDIgKiBzdHJpZGVxXQo+ICsKPiArICAgIGRlYyAgICAgICAgICAgICBoZWlnaHRxCj4gKyAgICBq ZyAgICAgICAgICAgICAgLmxvb3AKPiArICAgIFJFVAo+ICslZW5kbWFjcm8KPiArCj4gK0FMRl9G SUxURVJfMTZCUFAgbHVtYSwgMTYKPiArQUxGX0ZJTFRFUl8xNkJQUCBsdW1hLCA0Cj4gK0FMRl9G SUxURVJfMTZCUFAgY2hyb21hLCAxNgo+ICtBTEZfRklMVEVSXzE2QlBQIGNocm9tYSwgNAo+ICsK PiArJWVuZGlmCj4gKwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni92dmNkc3AuaCBiL2xp YmF2Y29kZWMveDg2L3Z2Y2RzcC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwLi44NTg5ZDRhZTk3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Y29kZWMveDg2 L3Z2Y2RzcC5oCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKgo+ICsgKiBWVkMgRFNQIGZvciB4ODYK PiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQo+ICsgKgo+ICsgKgo+ICsgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsg Kgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4g KyAqLwo+ICsKPiArI2lmbmRlZiBBVkNPREVDX1g4Nl9WVkNEU1BfSAo+ICsjZGVmaW5lIEFWQ09E RUNfWDg2X1ZWQ0RTUF9ICj4gKwo+ICt2b2lkIGZmX3Z2Y19hbGZfZmlsdGVyX2x1bWFfdzE2XzE2 YnBwX2F2eDIodWludDhfdCAqZHN0LCBwdHJkaWZmX3QKPiBkc3Rfc3RyaWRlLAo+ICsgICAgY29u c3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0cmlkZSwgaW50IGhlaWdodCwKPiArICAg IGNvbnN0IGludDhfdCAqZmlsdGVyLCBjb25zdCBpbnQxNl90ICpjbGlwLCBwdHJkaWZmX3Qgc3Ry aWRlLCB1aW50MTZfdAo+IHBpeGVsX21heCk7Cj4gKwo+ICt2b2lkIGZmX3Z2Y19hbGZfZmlsdGVy X2x1bWFfdzRfMTZicHBfYXZ4Mih1aW50OF90ICpkc3QsIHB0cmRpZmZfdAo+IGRzdF9zdHJpZGUs Cj4gKyAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzcmNfc3RyaWRlLCBpbnQgaGVp Z2h0LAo+ICsgICAgY29uc3QgaW50OF90ICpmaWx0ZXIsIGNvbnN0IGludDE2X3QgKmNsaXAsIHB0 cmRpZmZfdCBzdHJpZGUsIHVpbnQxNl90Cj4gcGl4ZWxfbWF4KTsKPiArCj4gK3ZvaWQgZmZfdnZj X2FsZl9maWx0ZXJfY2hyb21hX3cxNl8xNmJwcF9hdngyKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90 Cj4gZHN0X3N0cmlkZSwKPiArICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19z dHJpZGUsIGludCBoZWlnaHQsCj4gKyAgICBjb25zdCBpbnQ4X3QgKmZpbHRlciwgY29uc3QgaW50 MTZfdCAqY2xpcCwgcHRyZGlmZl90IHN0cmlkZSwgdWludDE2X3QKPiBwaXhlbF9tYXgpOwo+ICsK PiArdm9pZCBmZl92dmNfYWxmX2ZpbHRlcl9jaHJvbWFfdzRfMTZicHBfYXZ4Mih1aW50OF90ICpk c3QsIHB0cmRpZmZfdAo+IGRzdF9zdHJpZGUsCj4gKyAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0 cmRpZmZfdCBzcmNfc3RyaWRlLCBpbnQgaGVpZ2h0LAo+ICsgICAgY29uc3QgaW50OF90ICpmaWx0 ZXIsIGNvbnN0IGludDE2X3QgKmNsaXAsIHB0cmRpZmZfdCBzdHJpZGUsIHVpbnQxNl90Cj4gcGl4 ZWxfbWF4KTsKPiArCj4gKyNlbmRpZiAvL0FWQ09ERUNfWDg2X1ZWQ0RTUF9ICj4gKwo+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL3g4Ni92dmNkc3BfaW5pdC5jIGIvbGliYXZjb2RlYy94ODYvdnZj ZHNwX2luaXQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uYzU5 NWVkNTVmYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVjL3g4Ni92dmNkc3BfaW5p dC5jCj4gQEAgLTAsMCArMSw4MSBAQAo+ICsvKgo+ICsgKiBWVkMgRFNQIGluaXQgZm9yIHg4Ngo+ ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTnVvIE1pCj4gKyAqCj4gKyAqCj4gKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4g KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSAiY29uZmlnLmgiCj4gKwo+ICsjaW5jbHVkZSAibGliYXZ1dGls L2NwdS5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL3g4Ni9hc20uaCIKPiArI2luY2x1ZGUgImxp YmF2dXRpbC94ODYvY3B1LmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL3Z2Y2RlYy5oIgo+ICsj aW5jbHVkZSAibGliYXZjb2RlYy92dmNkc3AuaCIKPiArI2luY2x1ZGUgImxpYmF2Y29kZWMveDg2 L3Z2Y2RzcC5oIgo+ICsKPiArc3RhdGljIHZvaWQgYWxmX2ZpbHRlcl9sdW1hXzEwX2F2eDIodWlu dDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwKPiBjb25zdCB1aW50OF90ICpzcmMsIHB0 cmRpZmZfdCBzcmNfc3RyaWRlLAo+ICsgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBp bnQ4X3QgKmZpbHRlciwgY29uc3QgaW50MTZfdCAqY2xpcCkKPiArewo+ICsgICAgY29uc3QgaW50 IHBzICAgICAgICAgICAgPSAxOwo+IC8vcGl4ZWwgc2hpZnQKPiArICAgIGNvbnN0IGludCBwaXhl bF9tYXggICAgID0gKDEgPDwgMTApIC0gMTsKPiArICAgIGNvbnN0IGludCBwYXJhbV9zdHJpZGUg ID0gKHdpZHRoID4+IDIpICogQUxGX05VTV9DT0VGRl9MVU1BOwo+ICsgICAgaW50IHc7Cj4gKwo+ ICsgICAgZm9yICh3ID0gMDsgdyArIDE2IDw9IHdpZHRoOyB3ICs9IDE2KSB7Cj4gKyAgICAgICAg Y29uc3QgaW50IHBhcmFtX29mZnNldCA9IHcgKiBBTEZfTlVNX0NPRUZGX0xVTUEgLyBBTEZfQkxP Q0tfU0laRTsKPiArICAgICAgICBmZl92dmNfYWxmX2ZpbHRlcl9sdW1hX3cxNl8xNmJwcF9hdngy KGRzdCArICh3IDw8IHBzKSwKPiBkc3Rfc3RyaWRlLCBzcmMgKyAodyA8PCBwcyksIHNyY19zdHJp ZGUsCj4gKyAgICAgICAgICAgIGhlaWdodCwgZmlsdGVyICsgcGFyYW1fb2Zmc2V0LCBjbGlwICsg cGFyYW1fb2Zmc2V0LAo+IHBhcmFtX3N0cmlkZSwgcGl4ZWxfbWF4KTsKPiArICAgIH0KPiArICAg IGZvciAoIC8qIG5vdGhpbmcgKi87IHcgPCB3aWR0aDsgdyArPSA0KSB7Cj4gKyAgICAgICAgY29u c3QgaW50IHBhcmFtX29mZnNldCA9IHcgKiBBTEZfTlVNX0NPRUZGX0xVTUEgLyBBTEZfQkxPQ0tf U0laRTsKPiArICAgICAgICBmZl92dmNfYWxmX2ZpbHRlcl9sdW1hX3c0XzE2YnBwX2F2eDIoZHN0 ICsgKHcgPDwgcHMpLCBkc3Rfc3RyaWRlLAo+IHNyYyArICh3IDw8IHBzKSwgc3JjX3N0cmlkZSwK PiArICAgICAgICAgICAgaGVpZ2h0LCBmaWx0ZXIgKyBwYXJhbV9vZmZzZXQsIGNsaXAgKyBwYXJh bV9vZmZzZXQsCj4gcGFyYW1fc3RyaWRlLCBwaXhlbF9tYXgpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBhbGZfZmlsdGVyX2Nocm9tYV8xMF9hdngyKHVpbnQ4X3QgKmRzdCwgcHRy ZGlmZl90IGRzdF9zdHJpZGUsCj4gY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0 cmlkZSwKPiArICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgaW50OF90ICpmaWx0ZXIs IGNvbnN0IGludDE2X3QgKmNsaXApCj4gK3sKPiArICAgIGNvbnN0IGludCBwcyAgICAgICAgICAg ID0gMTsKPiAvL3BpeGVsIHNoaWZ0Cj4gKyAgICBjb25zdCBpbnQgcGl4ZWxfbWF4ICAgICA9ICgx IDw8IDEwKSAtIDE7Cj4gKyAgICBpbnQgdzsKPiArCj4gKyAgICBmb3IgKHcgPSAwOyB3ICsgMTYg PD0gd2lkdGg7IHcgKz0gMTYpIHsKPiArICAgICAgICBmZl92dmNfYWxmX2ZpbHRlcl9jaHJvbWFf dzE2XzE2YnBwX2F2eDIoZHN0ICsgKHcgPDwgcHMpLAo+IGRzdF9zdHJpZGUsIHNyYyArICh3IDw8 IHBzKSwgc3JjX3N0cmlkZSwKPiArICAgICAgICAgICAgaGVpZ2h0LCBmaWx0ZXIsIGNsaXAsIDAs IHBpeGVsX21heCk7Cj4gKyAgICB9Cj4gKyAgICBmb3IgKCAvKiBub3RoaW5nICovOyB3IDwgd2lk dGg7IHcgKz0gNCkgewo+ICsgICAgICAgIGZmX3Z2Y19hbGZfZmlsdGVyX2Nocm9tYV93NF8xNmJw cF9hdngyKGRzdCArICh3IDw8IHBzKSwKPiBkc3Rfc3RyaWRlLCBzcmMgKyAodyA8PCBwcyksIHNy Y19zdHJpZGUsCj4gKyAgICAgICAgICAgIGhlaWdodCwgZmlsdGVyLCBjbGlwLCAwLCBwaXhlbF9t YXgpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICt2b2lkIGZmX3Z2Y19kc3BfaW5pdF94ODYoVlZDRFNQ Q29udGV4dCAqY29uc3QgYywgY29uc3QgaW50IGJpdF9kZXB0aCkKPiArewo+ICsgICAgY29uc3Qg aW50IGNwdV9mbGFncyA9IGF2X2dldF9jcHVfZmxhZ3MoKTsKPiArCj4gKyAgICBpZiAoYml0X2Rl cHRoID09IDEwKSB7Cj4gKyAgICAgICAgaWYgKEVYVEVSTkFMX0FWWDIoY3B1X2ZsYWdzKSkgewo+ ICsgICAgICAgICAgICBjLT5hbGYuZmlsdGVyW0xVTUFdID0gYWxmX2ZpbHRlcl9sdW1hXzEwX2F2 eDI7Cj4gKyAgICAgICAgICAgIGMtPmFsZi5maWx0ZXJbQ0hST01BXSA9IGFsZl9maWx0ZXJfY2hy b21hXzEwX2F2eDI7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+IC0tCj4gMi4yNS4x Cj4KCkhpIGV4cGVydHMsClBsZWFzZSBoZWxwIHJldmlldyBBTEYgZmlsdGVyIGZvciB2dmMuIEFM RiBpcyB0aGUgbW9zdCB0aW1lIGNvbnN1bWluZwpwcm9jZXNzIGluIHZ2Yy4gSXQgdGFrZXMgYWJv dXQgMzB+NjAlIHRpbWUgZm9yIEMgY29kZS4gRmlsdGVyIGlzIGEgcGFydCBvZgppdC4gUGxlYXNl IGhlbHAgcmV2aWV3IGFuZCBnaXZlIHNvbWUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgc3VnZ2Vz dGlvbnMKZm9yIHRoaXMgcGF0Y2guCkZvciBlYWNoIDR4NCBwaXhlbCBibG9jaywgdGhlcmUgYXJl IDEyIGNvZWZmcyAoaW50OF90KSBhbmQgMTIgY2xpcHMKKGludDE2X3QpIHBhcmFtcy4gRm9yIGVh Y2ggcGl4ZWwsIHdlIG5lZWQgdG8gc3VidHJhY3QgYW5kIGNsaXAgMjQgdGltZXMgYW5kCm11bHRp cGx5IDEyIHRpbWVzLiBUaGUgY3VycmVudCBBVlgyIGNvZGUgd2lsbCBwcm9jZXNzIDE2eDQgb3Ig NHg0IGJsb2NrcyBpbgphIGxvb3AuClBsZWFzZSBjaGVjayBbMV0gZm9yIGEgd29ya2luZyBidWls ZCBhbmQgWzJdICBmb3IgQyBjb2RlLgoKVGhhbmsgeW91IHZlcnkgbXVjaC4KClsxXSBodHRwczov L2dpdGh1Yi5jb20vZmZ2dmMvRkZtcGVnL3B1bGwvNDIvY29tbWl0cwpbMl0KaHR0cHM6Ly9naXRo dWIuY29tL2ZmdnZjL0ZGbXBlZy9ibG9iL21haW4vbGliYXZjb2RlYy92dmNfZmlsdGVyX3RlbXBs YXRlLmMjTDI0NgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==