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 6E48B403BA for ; Wed, 19 Jan 2022 18:24:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5D98B68B167; Wed, 19 Jan 2022 20:24:16 +0200 (EET) Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C42A68B02E for ; Wed, 19 Jan 2022 20:24:10 +0200 (EET) Received: by mail-qk1-f182.google.com with SMTP id 193so3597937qkh.13 for ; Wed, 19 Jan 2022 10:24:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ylo-ph.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=X+OJo+Zw8Uu6S3e0FgHfnMrQCd1EydKnt47hxLSc4J8=; b=RZAmHf2eJ7iBGCSB5UKFccweERPai8upGqMX2iWxa/fbj1zt/j8svRJrnQNDWUSn4Q Eju8gvn7tRNRCOOG8jh4zctzs3YP2wKt3HLVgUbYM9YBtnQerOSAXO49AnkaKmVC6vOq 0MHwa/JDuZ03cmTQVkC2jaL0EvZUX3u6BFJylY3/bK2P6gXo+EWoYMcyVzLhY+C+qC05 y0cb5rTm/18OhMuYCZ+F4Vp9+z58IlDbQxgepx6U/qti3ahkA60Wy8M2uOer2AnVBRGo GbguiunqMR8NBLMm1FTUiieJ0JzMCjXTPcNkEZ3WAK+I/VPhNmd2pog4e8+onpPmRjxy +vRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=X+OJo+Zw8Uu6S3e0FgHfnMrQCd1EydKnt47hxLSc4J8=; b=JniS9XBZkdt06DZg7Ep9O98FFebdQZZXNXZzoS37JgzzRG78DmSAdxLAYLdUs4L0w3 TwgWHbvu0KcwqINkS+NlbVGaNpLCYIBnxOPCj0ItTr0MApYyVfWX25hWzyW9JW1naOAF YKRQisPwGao1faEMzc1ey5y8+gzopemm8bhNcDw7eISIhfoIb3i0KgFQRUt8E2S6junT cRth+INdWVvLQf/reLCP+smgElpPZAZ3LG08kI9JXgj5kbch86zJjOdTh4vubYhe/ny+ oOl+KWZtiXqJlmvVY3AdDOJt+OI7TmiaRsNkN8zeH28075JYt717MLXUnE2hQ2P4QcHs mc5A== X-Gm-Message-State: AOAM5332emEIFKa8ZlcXAkYQgb8BnRHcSenuSTaNoWlAqx/JfF/6oPj6 bB24ha2hlhMY/uaXpB5aK36U3U0GlCZcQcwDzbUfvVAkd+w= X-Google-Smtp-Source: ABdhPJwDrDtlKl+oyXl0iEYJBXcNPaievS86bbnjBNkyjnhSpIwLrbkCPaTZlaW3dxzdxSeFCwEs8urwXbHUd+PE5NY= X-Received: by 2002:a05:620a:4606:: with SMTP id br6mr8851545qkb.208.1642616649024; Wed, 19 Jan 2022 10:24:09 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kyle Swanson Date: Wed, 19 Jan 2022 10:23:58 -0800 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000de569505d5f37d4c" Subject: Re: [FFmpeg-devel] [PATCH] avfilter/vf_libvmaf: update filter for libvmaf v2.0.0 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --000000000000de569505d5f37d4c Content-Type: text/plain; charset="UTF-8" Hi, On Thu, Jan 13, 2022 at 6:38 PM Kyle Swanson wrote: > > Hi, > > On Mon, Jan 10, 2022 at 10:22 AM Andreas Rheinhardt > wrote: > > 1. FFmpeg uses the ancient C90 rule that only allows variable > > declarations at the beginning of a block (before all statements). You > > should actually have received a compiler warning because of the above > > code (unless you use Clang, which claims to support this type of > > warning, yet doesn't). > > 2. You jump over the initializion of str_copy if the dict allocation > > fails and consequently you free an uninitialized string. > > New patch attached. Fixes all of the GCC -Wdeclaration-after-statement > warnings. You're right, I didn't notice because I was building with > Clang. Andreas, I will just wait for your LGTM before merging. > > Thanks, > Kyle Updated patch attached. Thank you to mkver for the mini review on IRC. The `delimited_dict_parse` multi-delimiter corner case should be sorted now. Thanks, Kyle --000000000000de569505d5f37d4c Content-Type: application/octet-stream; name="0001-avfilter-vf_libvmaf-update-filter-for-libvmaf-v2.0.0.patch" Content-Disposition: attachment; filename="0001-avfilter-vf_libvmaf-update-filter-for-libvmaf-v2.0.0.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kylvj7xp0 RnJvbSBiMTgzZGJhOTgwNmE2MDgyYzBmZTQyNGFlOGIwY2U1NzA2MGQyZjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLeWxlIFN3YW5zb24gPGtzd2Fuc29uQG5ldGZsaXguY29tPgpE YXRlOiBGcmksIDI0IERlYyAyMDIxIDEyOjQzOjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gYXZm aWx0ZXIvdmZfbGlidm1hZjogdXBkYXRlIGZpbHRlciBmb3IgbGlidm1hZiB2Mi4wLjAKCi0tLQog Y29uZmlndXJlICAgICAgICAgICAgICAgIHwgICA0ICstCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgfCAgODIgKystLS0KIGxpYmF2ZmlsdGVyL3ZlcnNpb24uaCAgICB8ICAgMiArLQogbGliYXZm aWx0ZXIvdmZfbGlidm1hZi5jIHwgNjgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1NTggaW5zZXJ0aW9ucygrKSwgMjEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA1MmVmMjE0Yjcz Li5kOWYxMmRjNTZiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0z NzUxLDcgKzM3NTEsNyBAQCB2YWd1ZWRlbm9pc2VyX2ZpbHRlcl9kZXBzPSJncGwiCiB2ZmxpcF92 dWxrYW5fZmlsdGVyX2RlcHM9InZ1bGthbiBzcGlydl9jb21waWxlciIKIHZpZHN0YWJkZXRlY3Rf ZmlsdGVyX2RlcHM9ImxpYnZpZHN0YWIiCiB2aWRzdGFidHJhbnNmb3JtX2ZpbHRlcl9kZXBzPSJs aWJ2aWRzdGFiIgotbGlidm1hZl9maWx0ZXJfZGVwcz0ibGlidm1hZiBwdGhyZWFkcyIKK2xpYnZt YWZfZmlsdGVyX2RlcHM9ImxpYnZtYWYiCiB6bXFfZmlsdGVyX2RlcHM9ImxpYnptcSIKIHpvb21w YW5fZmlsdGVyX2RlcHM9InN3c2NhbGUiCiB6c2NhbGVfZmlsdGVyX2RlcHM9ImxpYnppbWcgY29u c3RfbmFuIgpAQCAtNjYxOSw3ICs2NjE5LDcgQEAgZW5hYmxlZCBsaWJ0d29sYW1lICAgICAgICAm JiByZXF1aXJlIGxpYnR3b2xhbWUgdHdvbGFtZS5oIHR3b2xhbWVfaW5pdCAtbHR3b2xhbWUKIGVu YWJsZWQgbGlidWF2czNkICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnVhdnMzZCAi dWF2czNkID49IDEuMS40MSIgdWF2czNkLmggdWF2czNkX2RlY29kZQogZW5hYmxlZCBsaWJ2NGwy ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlidjRsMiBsaWJ2NGwyIGxpYnY0bDIu aCB2NGwyX2lvY3RsCiBlbmFibGVkIGxpYnZpZHN0YWIgICAgICAgICYmIHJlcXVpcmVfcGtnX2Nv bmZpZyBsaWJ2aWRzdGFiICJ2aWRzdGFiID49IDAuOTgiIHZpZC5zdGFiL2xpYnZpZHN0YWIuaCB2 c01vdGlvbkRldGVjdEluaXQKLWVuYWJsZWQgbGlidm1hZiAgICAgICAgICAgJiYgcmVxdWlyZV9w a2dfY29uZmlnIGxpYnZtYWYgImxpYnZtYWYgPj0gMS41LjIiIGxpYnZtYWYuaCBjb21wdXRlX3Zt YWYKK2VuYWJsZWQgbGlidm1hZiAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnZt YWYgImxpYnZtYWYgPj0gMi4wLjAiIGxpYnZtYWYuaCB2bWFmX2luaXQKIGVuYWJsZWQgbGlidm9f YW1yd2JlbmMgICAgJiYgcmVxdWlyZSBsaWJ2b19hbXJ3YmVuYyB2by1hbXJ3YmVuYy9lbmNfaWYu aCBFX0lGX2luaXQgLWx2by1hbXJ3YmVuYwogZW5hYmxlZCBsaWJ2b3JiaXMgICAgICAgICAmJiBy ZXF1aXJlX3BrZ19jb25maWcgbGlidm9yYmlzIHZvcmJpcyB2b3JiaXMvY29kZWMuaCB2b3JiaXNf aW5mb19pbml0ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfcGtnX2Nv bmZpZyBsaWJ2b3JiaXNlbmMgdm9yYmlzZW5jIHZvcmJpcy92b3JiaXNlbmMuaCB2b3JiaXNfZW5j b2RlX2luaXQKZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhp CmluZGV4IDI0OGMwOWNhZjguLjlhODkwZDE1NTUgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRl eGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4aQpAQCAtMTQ2NjYsNjggKzE0NjY2LDYwIEBAIGZmbXBl ZyAtaSBpbnB1dC5tb3YgLXZmIGxlbnNmdW49bWFrZT1DYW5vbjptb2RlbD0iQ2Fub24gRU9TIDEw MEQiOmxlbnNfbW9kZWw9IkNhCiAKIEBzZWN0aW9uIGxpYnZtYWYKIAotT2J0YWluIHRoZSBWTUFG IChWaWRlbyBNdWx0aS1NZXRob2QgQXNzZXNzbWVudCBGdXNpb24pCi1zY29yZSBiZXR3ZWVuIHR3 byBpbnB1dCB2aWRlb3MuCitDYWx1bGF0ZSB0aGUgVk1BRiAoVmlkZW8gTXVsdGktTWV0aG9kIEFz c2Vzc21lbnQgRnVzaW9uKSBzY29yZSBmb3IgYQorcmVmZXJlbmNlL2Rpc3RvcnRlZCBwYWlyIG9m IGlucHV0IHZpZGVvcy4KIAotVGhlIGZpcnN0IGlucHV0IGlzIHRoZSBlbmNvZGVkIHZpZGVvLCBh bmQgdGhlIHNlY29uZCBpbnB1dCBpcyB0aGUgcmVmZXJlbmNlIHZpZGVvLgorVGhlIGZpcnN0IGlu cHV0IGlzIHRoZSBkaXN0b3J0ZWQgdmlkZW8sIGFuZCB0aGUgc2Vjb25kIGlucHV0IGlzIHRoZSBy ZWZlcmVuY2UgdmlkZW8uCiAKIFRoZSBvYnRhaW5lZCBWTUFGIHNjb3JlIGlzIHByaW50ZWQgdGhy b3VnaCB0aGUgbG9nZ2luZyBzeXN0ZW0uCiAKIEl0IHJlcXVpcmVzIE5ldGZsaXgncyB2bWFmIGxp YnJhcnkgKGxpYnZtYWYpIGFzIGEgcHJlLXJlcXVpc2l0ZS4KIEFmdGVyIGluc3RhbGxpbmcgdGhl IGxpYnJhcnkgaXQgY2FuIGJlIGVuYWJsZWQgdXNpbmc6CiBAY29kZXsuL2NvbmZpZ3VyZSAtLWVu YWJsZS1saWJ2bWFmfS4KLUlmIG5vIG1vZGVsIHBhdGggaXMgc3BlY2lmaWVkIGl0IHVzZXMgdGhl IGRlZmF1bHQgbW9kZWw6IEBjb2Rle3ZtYWZfdjAuNi4xLnBrbH0uCiAKIFRoZSBmaWx0ZXIgaGFz IGZvbGxvd2luZyBvcHRpb25zOgogCiBAdGFibGUgQG9wdGlvbgotQGl0ZW0gbW9kZWxfcGF0aAot U2V0IHRoZSBtb2RlbCBwYXRoIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFNWTS4KLURlZmF1bHQg dmFsdWU6IEBjb2RleyIvdXNyL2xvY2FsL3NoYXJlL21vZGVsL3ZtYWZfdjAuNi4xLnBrbCJ9Ci0K LUBpdGVtIGxvZ19wYXRoCi1TZXQgdGhlIGZpbGUgcGF0aCB0byBiZSB1c2VkIHRvIHN0b3JlIGxv Z3MuCitAaXRlbSBtb2RlbAorQSBgfGAgZGVsaW1pdGVkIGxpc3Qgb2Ygdm1hZiBtb2RlbHMuIEVh Y2ggbW9kZWwgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIG51bWJlciBvZiBwYXJhbWV0ZXJzLgor RGVmYXVsdCB2YWx1ZTogQGNvZGV7InZlcnNpb249dm1hZl92MC42LjEifQogCi1AaXRlbSBsb2df Zm10Ci1TZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIGZpbGUgKGNzdiwganNvbiBvciB4bWwpLgor QGl0ZW0gbW9kZWxfcGF0aAorRGVwcmVjYXRlZCwgdXNlIG1vZGVsPSdwYXRoPS4uLicuCiAKIEBp dGVtIGVuYWJsZV90cmFuc2Zvcm0KLVRoaXMgb3B0aW9uIGNhbiBlbmFibGUvZGlzYWJsZSB0aGUg QGNvZGV7c2NvcmVfdHJhbnNmb3JtfSBhcHBsaWVkIHRvIHRoZSBmaW5hbCBwcmVkaWN0ZWQgVk1B RiBzY29yZSwKLWlmIHlvdSBoYXZlIHNwZWNpZmllZCBzY29yZV90cmFuc2Zvcm0gb3B0aW9uIGlu IHRoZSBpbnB1dCBwYXJhbWV0ZXIgZmlsZSBwYXNzZWQgdG8gQGNvZGV7cnVuX3ZtYWZfdHJhaW5p bmcucHl9Ci1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0KK0RlcHJlY2F0ZWQsIHVzZSBtb2Rl bD0nZW5hYmxlX3RyYW5zZm9ybT10cnVlJy4KIAogQGl0ZW0gcGhvbmVfbW9kZWwKLUludm9rZXMg dGhlIHBob25lIG1vZGVsIHdoaWNoIHdpbGwgZ2VuZXJhdGUgVk1BRiBzY29yZXMgaGlnaGVyIHRo YW4gaW4gdGhlCi1yZWd1bGFyIG1vZGVsLCB3aGljaCBpcyBtb3JlIHN1aXRhYmxlIGZvciBsYXB0 b3AsIFRWLCBldGMuIHZpZXdpbmcgY29uZGl0aW9ucy4KLURlZmF1bHQgdmFsdWU6IEBjb2Rle2Zh bHNlfQorRGVwcmVjYXRlZCwgdXNlIG1vZGVsPSdlbmFibGVfdHJhbnNmb3JtPXRydWUnLgorCitA aXRlbSBlbmFibGVfY29uZl9pbnRlcnZhbAorRGVwcmVjYXRlZCwgdXNlIG1vZGVsPSdlbmFibGVf Y29uZl9pbnRlcnZhbD10cnVlJy4KKworQGl0ZW0gZmVhdHVyZQorQSBgfGAgZGVsaW1pdGVkIGxp c3Qgb2YgZmVhdHVyZXMuIEVhY2ggZmVhdHVyZSBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgbnVt YmVyIG9mIHBhcmFtZXRlcnMuCiAKIEBpdGVtIHBzbnIKLUVuYWJsZXMgY29tcHV0aW5nIHBzbnIg YWxvbmcgd2l0aCB2bWFmLgotRGVmYXVsdCB2YWx1ZTogQGNvZGV7ZmFsc2V9CitEZXByZWNhdGVk LCB1c2UgZmVhdHVyZT0nbmFtZT1wc25yJy4KIAogQGl0ZW0gc3NpbQotRW5hYmxlcyBjb21wdXRp bmcgc3NpbSBhbG9uZyB3aXRoIHZtYWYuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0KK0Rl cHJlY2F0ZWQsIHVzZSBmZWF0dXJlPSduYW1lPXNzaW0nLgogCiBAaXRlbSBtc19zc2ltCi1FbmFi bGVzIGNvbXB1dGluZyBtc19zc2ltIGFsb25nIHdpdGggdm1hZi4KLURlZmF1bHQgdmFsdWU6IEBj b2Rle2ZhbHNlfQorRGVwcmVjYXRlZCwgdXNlIGZlYXR1cmU9J25hbWU9bXNfc3NpbScuCiAKLUBp dGVtIHBvb2wKLVNldCB0aGUgcG9vbCBtZXRob2QgdG8gYmUgdXNlZCBmb3IgY29tcHV0aW5nIHZt YWYuCi1PcHRpb25zIGFyZSBAY29kZXttaW59LCBAY29kZXtoYXJtb25pY19tZWFufSBvciBAY29k ZXttZWFufSAoZGVmYXVsdCkuCitAaXRlbSBsb2dfcGF0aAorU2V0IHRoZSBmaWxlIHBhdGggdG8g YmUgdXNlZCB0byBzdG9yZSBsb2cgZmlsZXMuCisKK0BpdGVtIGxvZ19mbXQKK1NldCB0aGUgZm9y bWF0IG9mIHRoZSBsb2cgZmlsZSAoeG1sLCBqc29uLCBjc3YsIG9yIHN1YikuCiAKIEBpdGVtIG5f dGhyZWFkcwotU2V0IG51bWJlciBvZiB0aHJlYWRzIHRvIGJlIHVzZWQgd2hlbiBjb21wdXRpbmcg dm1hZi4KLURlZmF1bHQgdmFsdWU6IEBjb2RlezB9LCB3aGljaCBtYWtlcyB1c2Ugb2YgYWxsIGF2 YWlsYWJsZSBsb2dpY2FsIHByb2Nlc3NvcnMuCitTZXQgbnVtYmVyIG9mIHRocmVhZHMgdG8gYmUg dXNlZCB3aGVuIGluaXRpYWxpemluZyBsaWJ2bWFmLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7MH0s IG5vIHRocmVhZHMuCiAKIEBpdGVtIG5fc3Vic2FtcGxlCi1TZXQgaW50ZXJ2YWwgZm9yIGZyYW1l IHN1YnNhbXBsaW5nIHVzZWQgd2hlbiBjb21wdXRpbmcgdm1hZi4KLURlZmF1bHQgdmFsdWU6IEBj b2RlezF9Ci0KLUBpdGVtIGVuYWJsZV9jb25mX2ludGVydmFsCi1FbmFibGVzIGNvbmZpZGVuY2Ug aW50ZXJ2YWwuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0KK1NldCBmcmFtZSBzdWJzYW1w bGluZyBpbnRlcnZhbCB0byBiZSB1c2VkLgogQGVuZCB0YWJsZQogCiBUaGlzIGZpbHRlciBhbHNv IHN1cHBvcnRzIHRoZSBAcmVme2ZyYW1lc3luY30gb3B0aW9ucy4KQEAgLTE0NzM1LDIzICsxNDcy NywzMSBAQCBUaGlzIGZpbHRlciBhbHNvIHN1cHBvcnRzIHRoZSBAcmVme2ZyYW1lc3luY30gb3B0 aW9ucy4KIEBzdWJzZWN0aW9uIEV4YW1wbGVzCiBAaXRlbWl6ZQogQGl0ZW0KLU9uIHRoZSBiZWxv dyBleGFtcGxlcyB0aGUgaW5wdXQgZmlsZSBAZmlsZXttYWluLm1wZ30gYmVpbmcgcHJvY2Vzc2Vk IGlzCi1jb21wYXJlZCB3aXRoIHRoZSByZWZlcmVuY2UgZmlsZSBAZmlsZXtyZWYubXBnfS4KK0lu IHRoZSBleGFtcGxlcyBiZWxvdywgYSBkaXN0b3J0ZWQgdmlkZW8gQGZpbGV7ZGlzdG9ydGVkLm1w Z30gaXMKK2NvbXBhcmVkIHdpdGggYSByZWZlcmVuY2UgZmlsZSBAZmlsZXtyZWZlcmVuY2UubXBn fS4KIAorQGl0ZW0KK0Jhc2ljIHVzYWdlOgorQGV4YW1wbGUKK2ZmbXBlZyAtaSBkaXN0b3J0ZWQu bXBnIC1pIHJlZmVyZW5jZS5tcGcgLWxhdmZpIGxpYnZtYWY9bG9nX3BhdGg9b3V0cHV0LnhtbCAt ZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorRXhhbXBsZSB3aXRoIG11bHRpcGxlIG1v ZGVsczoKIEBleGFtcGxlCi1mZm1wZWcgLWkgbWFpbi5tcGcgLWkgcmVmLm1wZyAtbGF2ZmkgbGli dm1hZiAtZiBudWxsIC0KK2ZmbXBlZyAtaSBkaXN0b3J0ZWQubXBnIC1pIHJlZmVyZW5jZS5tcGcg LWxhdmZpIGxpYnZtYWY9J21vZGVsPXZlcnNpb249dm1hZl92MC42LjFcXDpuYW1lPXZtYWZ8dmVy c2lvbj12bWFmX3YwLjYuMW5lZ1xcOm5hbWU9dm1hZl9uZWcnIC1mIG51bGwgLQogQGVuZCBleGFt cGxlCiAKIEBpdGVtCi1FeGFtcGxlIHdpdGggb3B0aW9uczoKK0V4YW1wbGUgd2l0aCBtdWx0aXBs ZSBhZGR0aW9uYWwgZmVhdHVyZXM6CiBAZXhhbXBsZQotZmZtcGVnIC1pIG1haW4ubXBnIC1pIHJl Zi5tcGcgLWxhdmZpIGxpYnZtYWY9InBzbnI9MTpsb2dfZm10PWpzb24iIC1mIG51bGwgLQorZmZt cGVnIC1pIGRpc3RvcnRlZC5tcGcgLWkgcmVmZXJlbmNlLm1wZyAtbGF2ZmkgbGlidm1hZj0nZmVh dHVyZT1uYW1lPXBzbnJ8bmFtZT1jaWVkZScgLWYgbnVsbCAtCiBAZW5kIGV4YW1wbGUKIAogQGl0 ZW0KIEV4YW1wbGUgd2l0aCBvcHRpb25zIGFuZCBkaWZmZXJlbnQgY29udGFpbmVyczoKIEBleGFt cGxlCi1mZm1wZWcgLWkgbWFpbi5tcGcgLWkgcmVmLm1rdiAtbGF2ZmkgIlswOnZdc2V0dGI9QVZU QixzZXRwdHM9UFRTLVNUQVJUUFRTW21haW5dO1sxOnZdc2V0dGI9QVZUQixzZXRwdHM9UFRTLVNU QVJUUFRTW3JlZl07W21haW5dW3JlZl1saWJ2bWFmPXBzbnI9MTpsb2dfZm10PWpzb24iIC1mIG51 bGwgLQorZmZtcGVnIC1pIGRpc3RvcnRlZC5tcGcgLWkgcmVmZXJlbmNlLm1rdiAtbGF2ZmkgIlsw OnZdc2V0dGI9QVZUQixzZXRwdHM9UFRTLVNUQVJUUFRTW21haW5dO1sxOnZdc2V0dGI9QVZUQixz ZXRwdHM9UFRTLVNUQVJUUFRTW3JlZl07W21haW5dW3JlZl1saWJ2bWFmPWxvZ19mbXQ9anNvbjps b2dfcGF0aD1vdXRwdXQuanNvbiIgLWYgbnVsbCAtCiBAZW5kIGV4YW1wbGUKIEBlbmQgaXRlbWl6 ZQogCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92ZXJzaW9uLmggYi9saWJhdmZpbHRlci92ZXJz aW9uLmgKaW5kZXggODk3MTRiY2U4NC4uNWZkZDAzN2EyMSAxMDA2NDQKLS0tIGEvbGliYXZmaWx0 ZXIvdmVyc2lvbi5oCisrKyBiL2xpYmF2ZmlsdGVyL3ZlcnNpb24uaApAQCAtMzEsNyArMzEsNyBA QAogCiAjZGVmaW5lIExJQkFWRklMVEVSX1ZFUlNJT05fTUFKT1IgICA4CiAjZGVmaW5lIExJQkFW RklMVEVSX1ZFUlNJT05fTUlOT1IgIDI2Ci0jZGVmaW5lIExJQkFWRklMVEVSX1ZFUlNJT05fTUlD Uk8gMTAwCisjZGVmaW5lIExJQkFWRklMVEVSX1ZFUlNJT05fTUlDUk8gMTAxCiAKIAogI2RlZmlu ZSBMSUJBVkZJTFRFUl9WRVJTSU9OX0lOVCBBVl9WRVJTSU9OX0lOVChMSUJBVkZJTFRFUl9WRVJT SU9OX01BSk9SLCBcCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9saWJ2bWFmLmMgYi9saWJh dmZpbHRlci92Zl9saWJ2bWFmLmMKaW5kZXggNWQ0OTIxMjZlYi4uZWVlMWMyODBlZiAxMDA2NDQK LS0tIGEvbGliYXZmaWx0ZXIvdmZfbGlidm1hZi5jCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX2xpYnZt YWYuYwpAQCAtMjQsOCArMjQsOCBAQAogICogQ2FsY3VsYXRlIHRoZSBWTUFGIGJldHdlZW4gdHdv IGlucHV0IHZpZGVvcy4KICAqLwogCi0jaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPGxp YnZtYWYuaD4KKwogI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgogI2luY2x1ZGUgImxp YmF2dXRpbC9vcHQuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgpAQCAtMzksMjMg KzM5LDkgQEAKIHR5cGVkZWYgc3RydWN0IExJQlZNQUZDb250ZXh0IHsKICAgICBjb25zdCBBVkNs YXNzICpjbGFzczsKICAgICBGRkZyYW1lU3luYyBmczsKLSAgICBjb25zdCBBVlBpeEZtdERlc2Ny aXB0b3IgKmRlc2M7Ci0gICAgaW50IHdpZHRoOwotICAgIGludCBoZWlnaHQ7Ci0gICAgZG91Ymxl IHZtYWZfc2NvcmU7Ci0gICAgaW50IHZtYWZfdGhyZWFkX2NyZWF0ZWQ7Ci0gICAgcHRocmVhZF90 IHZtYWZfdGhyZWFkOwotICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOwotICAgIHB0aHJlYWRfY29u ZF90IGNvbmQ7Ci0gICAgaW50IGVvZjsKLSAgICBBVkZyYW1lICpnbWFpbjsKLSAgICBBVkZyYW1l ICpncmVmOwotICAgIGludCBmcmFtZV9zZXQ7CiAgICAgY2hhciAqbW9kZWxfcGF0aDsKICAgICBj aGFyICpsb2dfcGF0aDsKICAgICBjaGFyICpsb2dfZm10OwotICAgIGludCBkaXNhYmxlX2NsaXA7 Ci0gICAgaW50IGRpc2FibGVfYXZ4OwogICAgIGludCBlbmFibGVfdHJhbnNmb3JtOwogICAgIGlu dCBwaG9uZV9tb2RlbDsKICAgICBpbnQgcHNucjsKQEAgLTY1LDE4NCArNTEsNDg3IEBAIHR5cGVk ZWYgc3RydWN0IExJQlZNQUZDb250ZXh0IHsKICAgICBpbnQgbl90aHJlYWRzOwogICAgIGludCBu X3N1YnNhbXBsZTsKICAgICBpbnQgZW5hYmxlX2NvbmZfaW50ZXJ2YWw7Ci0gICAgaW50IGVycm9y OworICAgIGNoYXIgKm1vZGVsX2NmZzsKKyAgICBjaGFyICpmZWF0dXJlX2NmZzsKKyAgICBWbWFm Q29udGV4dCAqdm1hZjsKKyAgICBWbWFmTW9kZWwgKiptb2RlbDsKKyAgICB1bnNpZ25lZCBtb2Rl bF9jbnQ7CisgICAgdW5zaWduZWQgZnJhbWVfY250OworICAgIHVuc2lnbmVkIGJwYzsKIH0gTElC Vk1BRkNvbnRleHQ7CiAKICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKExJQlZNQUZDb250ZXh0 LCB4KQogI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZfT1BUX0ZM QUdfVklERU9fUEFSQU0KIAogc3RhdGljIGNvbnN0IEFWT3B0aW9uIGxpYnZtYWZfb3B0aW9uc1td ID0gewotICAgIHsibW9kZWxfcGF0aCIsICAiU2V0IHRoZSBtb2RlbCB0byBiZSB1c2VkIGZvciBj b21wdXRpbmcgdm1hZi4iLCAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChtb2RlbF9wYXRoKSwg QVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iL3Vzci9sb2NhbC9zaGFyZS9tb2RlbC92bWFmX3Yw LjYuMS5wa2wifSwgMCwgMSwgRkxBR1N9LAotICAgIHsibG9nX3BhdGgiLCAgIlNldCB0aGUgZmls ZSBwYXRoIHRvIGJlIHVzZWQgdG8gc3RvcmUgbG9ncy4iLCAgICAgICAgICAgICAgICAgICAgICAg IE9GRlNFVChsb2dfcGF0aCksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sIDAsIDEs IEZMQUdTfSwKLSAgICB7ImxvZ19mbXQiLCAgIlNldCB0aGUgZm9ybWF0IG9mIHRoZSBsb2cgKGNz diwganNvbiBvciB4bWwpLiIsICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQobG9nX2ZtdCks IEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sIDAsIDEsIEZMQUdTfSwKLSAgICB7ImVu YWJsZV90cmFuc2Zvcm0iLCAgIkVuYWJsZXMgdHJhbnNmb3JtIGZvciBjb21wdXRpbmcgdm1hZi4i LCAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQoZW5hYmxlX3RyYW5zZm9ybSksIEFWX09QVF9U WVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCi0gICAgeyJwaG9uZV9tb2RlbCIsICAi SW52b2tlcyB0aGUgcGhvbmUgbW9kZWwgdGhhdCB3aWxsIGdlbmVyYXRlIGhpZ2hlciBWTUFGIHNj b3Jlcy4iLCAgT0ZGU0VUKHBob25lX21vZGVsKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0s IDAsIDEsIEZMQUdTfSwKLSAgICB7InBzbnIiLCAgIkVuYWJsZXMgY29tcHV0aW5nIHBzbnIgYWxv bmcgd2l0aCB2bWFmLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQocHNu ciksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCi0gICAgeyJzc2lt IiwgICJFbmFibGVzIGNvbXB1dGluZyBzc2ltIGFsb25nIHdpdGggdm1hZi4iLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKHNzaW0pLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2 ND0wfSwgMCwgMSwgRkxBR1N9LAotICAgIHsibXNfc3NpbSIsICAiRW5hYmxlcyBjb21wdXRpbmcg bXMtc3NpbSBhbG9uZyB3aXRoIHZtYWYuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIE9GRlNF VChtc19zc2ltKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTfSwKKyAg ICB7Im1vZGVsX3BhdGgiLCAgInVzZSBtb2RlbD0ncGF0aD0uLi4nLiIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQobW9kZWxfcGF0aCksIEFWX09QVF9U WVBFX1NUUklORywgey5zdHI9TlVMTH0sIDAsIDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FU RUR9LAorICAgIHsibG9nX3BhdGgiLCAgIlNldCB0aGUgZmlsZSBwYXRoIHRvIGJlIHVzZWQgdG8g d3JpdGUgbG9nLiIsICAgICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChsb2dfcGF0aCksIEFW X09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sIDAsIDEsIEZMQUdTfSwKKyAgICB7ImxvZ19m bXQiLCAgIlNldCB0aGUgZm9ybWF0IG9mIHRoZSBsb2cgKGNzdiwganNvbiwgeG1sLCBvciBzdWIp LiIsICAgICAgICAgICAgICAgICBPRkZTRVQobG9nX2ZtdCksIEFWX09QVF9UWVBFX1NUUklORywg ey5zdHI9InhtbCJ9LCAwLCAxLCBGTEFHU30sCisgICAgeyJlbmFibGVfdHJhbnNmb3JtIiwgICJ1 c2UgbW9kZWw9J2VuYWJsZV90cmFuc2Zvcm09dHJ1ZScuIiwgICAgICAgICAgICAgICAgICAgICAg ICAgT0ZGU0VUKGVuYWJsZV90cmFuc2Zvcm0pLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2ND0wfSwg MCwgMSwgRkxBR1N8QVZfT1BUX0ZMQUdfREVQUkVDQVRFRH0sCisgICAgeyJwaG9uZV9tb2RlbCIs ICAidXNlIG1vZGVsPSdlbmFibGVfdHJhbnNmb3JtPXRydWUnLiIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT0ZGU0VUKHBob25lX21vZGVsKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9 MH0sIDAsIDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAorICAgIHsicHNuciIsICAi dXNlIGZlYXR1cmU9J25hbWU9cHNucicuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9GRlNFVChwc25yKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0s IDAsIDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAorICAgIHsic3NpbSIsICAidXNl IGZlYXR1cmU9J25hbWU9c3NpbScuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9GRlNFVChzc2ltKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0sIDAs IDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAorICAgIHsibXNfc3NpbSIsICAidXNl IGZlYXR1cmU9J25hbWU9bXNfc3NpbScuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9GRlNFVChtc19zc2ltKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0sIDAs IDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAogICAgIHsicG9vbCIsICAiU2V0IHRo ZSBwb29sIG1ldGhvZCB0byBiZSB1c2VkIGZvciBjb21wdXRpbmcgdm1hZi4iLCAgICAgICAgICAg ICAgICAgICAgIE9GRlNFVChwb29sKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwg MCwgMSwgRkxBR1N9LAogICAgIHsibl90aHJlYWRzIiwgIlNldCBudW1iZXIgb2YgdGhyZWFkcyB0 byBiZSB1c2VkIHdoZW4gY29tcHV0aW5nIHZtYWYuIiwgICAgICAgICAgICAgIE9GRlNFVChuX3Ro cmVhZHMpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBVSU5UX01BWCwgRkxBR1N9LAog ICAgIHsibl9zdWJzYW1wbGUiLCAiU2V0IGludGVydmFsIGZvciBmcmFtZSBzdWJzYW1wbGluZyB1 c2VkIHdoZW4gY29tcHV0aW5nIHZtYWYuIiwgICAgIE9GRlNFVChuX3N1YnNhbXBsZSksIEFWX09Q VF9UWVBFX0lOVCwgey5pNjQ9MX0sIDEsIFVJTlRfTUFYLCBGTEFHU30sCi0gICAgeyJlbmFibGVf Y29uZl9pbnRlcnZhbCIsICAiRW5hYmxlcyBjb25maWRlbmNlIGludGVydmFsLiIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgT0ZGU0VUKGVuYWJsZV9jb25mX2ludGVydmFsKSwgQVZfT1BUX1RZ UEVfQk9PTCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTfSwKKyAgICB7ImVuYWJsZV9jb25mX2ludGVy dmFsIiwgICJtb2RlbD0nZW5hYmxlX2NvbmZfaW50ZXJ2YWw9dHJ1ZScuIiwgICAgICAgICAgICAg ICAgICAgICBPRkZTRVQoZW5hYmxlX2NvbmZfaW50ZXJ2YWwpLCBBVl9PUFRfVFlQRV9CT09MLCB7 Lmk2ND0wfSwgMCwgMSwgRkxBR1N8QVZfT1BUX0ZMQUdfREVQUkVDQVRFRH0sCisgICAgeyJtb2Rl bCIsICAiU2V0IHRoZSBtb2RlbCB0byBiZSB1c2VkIGZvciBjb21wdXRpbmcgdm1hZi4iLCAgICAg ICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKG1vZGVsX2NmZyksIEFWX09QVF9UWVBFX1NUUklO Rywgey5zdHI9InZlcnNpb249dm1hZl92MC42LjEifSwgMCwgMSwgRkxBR1N9LAorICAgIHsiZmVh dHVyZSIsICAiU2V0IHRoZSBmZWF0dXJlIHRvIGJlIHVzZWQgZm9yIGNvbXB1dGluZyB2bWFmLiIs ICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChmZWF0dXJlX2NmZyksIEFWX09QVF9UWVBFX1NU UklORywgey5zdHI9TlVMTH0sIDAsIDEsIEZMQUdTfSwKICAgICB7IE5VTEwgfQogfTsKIAogRlJB TUVTWU5DX0RFRklORV9DTEFTUyhsaWJ2bWFmLCBMSUJWTUFGQ29udGV4dCwgZnMpOwogCi0jZGVm aW5lIHJlYWRfZnJhbWVfZm4odHlwZSwgYml0cykgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgaW50IHJlYWRfZnJhbWVfIyNiaXRzIyNi aXQoZmxvYXQgKnJlZl9kYXRhLCBmbG9hdCAqbWFpbl9kYXRhLCAgICAgICAgXAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqdGVtcF9kYXRhLCBpbnQgc3RyaWRl LCB2b2lkICpjdHgpICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBMSUJWTUFGQ29u dGV4dCAqcyA9IChMSUJWTUFGQ29udGV4dCAqKSBjdHg7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgIGludCByZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotICAgIHB0aHJlYWRf bXV0ZXhfbG9jaygmcy0+bG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgXAotICAgIHdoaWxlICghcy0+ZnJhbWVfc2V0ICYmICFzLT5lb2Yp IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHB0 aHJlYWRfY29uZF93YWl0KCZzLT5jb25kLCAmcy0+bG9jayk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFwKLSAgICBpZiAo cy0+ZnJhbWVfc2V0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICBpbnQgcmVmX3N0cmlkZSA9IHMtPmdyZWYtPmxpbmVz aXplWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGludCBt YWluX3N0cmlkZSA9IHMtPmdtYWluLT5saW5lc2l6ZVswXTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBjb25zdCB0eXBlICpyZWZfcHRyID0gKGNv bnN0IHR5cGUgKikgcy0+Z3JlZi0+ZGF0YVswXTsgICAgICAgICAgICAgICAgICBcCi0gICAgICAg IGNvbnN0IHR5cGUgKm1haW5fcHRyID0gKGNvbnN0IHR5cGUgKikgcy0+Z21haW4tPmRhdGFbMF07 ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBmbG9hdCAqcHRyID0gcmVmX2Rh dGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgIGZsb2F0IGZhY3RvciA9IDEuZiAvICgxIDw8IChiaXRzIC0gOCkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBpbnQgaCA9IHMtPmhl aWdodDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgIGludCB3ID0gcy0+d2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBpbnQgaSxq OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgZm9yICggaiA9IDA7IGogPCB3OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcHRyW2pdID0gcmVmX3B0cltqXSAqIGZh Y3RvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgcmVmX3B0ciArPSByZWZfc3RyaWRlIC8gc2l6ZW9mKCpy ZWZfcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwdHIgKz0g c3RyaWRlIC8gc2l6ZW9mKCpwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBcCi0gICAgICAgIHB0ciA9 IG1haW5fZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICBmb3IgKGogPSAwOyBqIDwgdzsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBwdHJbal0gPSBtYWluX3B0cltqXSAq IGZhY3RvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAg fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICBtYWluX3B0ciArPSBtYWluX3N0cmlkZSAvIHNpemVv ZigqbWFpbl9wdHIpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHB0ciAr PSBzdHJpZGUgLyBzaXplb2YoKnB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICBcCi0gICAgcmV0ID0gIXMtPmZyYW1lX3NldDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBcCi0gICAgYXZfZnJhbWVf dW5yZWYocy0+Z3JlZik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICBhdl9mcmFtZV91bnJlZihzLT5nbWFpbik7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHMtPmZyYW1lX3NldCA9 IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgXAotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnMtPmNvbmQpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHRocmVhZF9tdXRl eF91bmxvY2soJnMtPmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICBcCi0gICAgaWYgKHJldCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotICAgIHJldHVybiAw OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCitzdGF0aWMgZW51bSBWbWFmUGl4ZWxGb3JtYXQgcGl4X2ZtdF9tYXAoZW51 bSBBVlBpeGVsRm9ybWF0IGF2X3BpeF9mbXQpCit7CisgICAgc3dpdGNoIChhdl9waXhfZm10KSB7 CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQy MFAxMExFOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjBQMTJMRToKKyAgICBjYXNlIEFWX1BJ WF9GTVRfWVVWNDIwUDE2TEU6CisgICAgICAgIHJldHVybiBWTUFGX1BJWF9GTVRfWVVWNDIwUDsK KyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIyUDoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIy UDEwTEU6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlAxMkxFOgorICAgIGNhc2UgQVZfUElY X0ZNVF9ZVVY0MjJQMTZMRToKKyAgICAgICAgcmV0dXJuIFZNQUZfUElYX0ZNVF9ZVVY0MjJQOwor ICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQ MTBMRToKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDQ0UDEyTEU6CisgICAgY2FzZSBBVl9QSVhf Rk1UX1lVVjQ0NFAxNkxFOgorICAgICAgICByZXR1cm4gVk1BRl9QSVhfRk1UX1lVVjQ0NFA7Cisg ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFZNQUZfUElYX0ZNVF9VTktOT1dOOworICAgIH0K IH0KIAotcmVhZF9mcmFtZV9mbih1aW50OF90LCA4KTsKLXJlYWRfZnJhbWVfZm4odWludDE2X3Qs IDEwKTsKK3N0YXRpYyBpbnQgY29weV9waWN0dXJlX2RhdGEoQVZGcmFtZSAqc3JjLCBWbWFmUGlj dHVyZSAqZHN0LCB1bnNpZ25lZCBicGMpCit7CisgICAgaW50IGVyciA9IHZtYWZfcGljdHVyZV9h bGxvYyhkc3QsIHBpeF9mbXRfbWFwKHNyYy0+Zm9ybWF0KSwgYnBjLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3JjLT53aWR0aCwgc3JjLT5oZWlnaHQpOworICAgIGlmIChlcnIp CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg PSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIHVpbnQ4X3QgKnNyY19kYXRhID0gc3JjLT5kYXRh W2ldOworICAgICAgICB1aW50OF90ICpkc3RfZGF0YSA9IGRzdC0+ZGF0YVtpXTsKKyAgICAgICAg Zm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGRzdC0+aFtpXTsgaisrKSB7CisgICAgICAgICAgICBt ZW1jcHkoZHN0X2RhdGEsIHNyY19kYXRhLCBzaXplb2YoKmRzdF9kYXRhKSAqIGRzdC0+d1tpXSk7 CisgICAgICAgICAgICBzcmNfZGF0YSArPSBzcmMtPmxpbmVzaXplW2ldOworICAgICAgICAgICAg ZHN0X2RhdGEgKz0gZHN0LT5zdHJpZGVbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KIAotc3RhdGljIHZvaWQgY29tcHV0ZV92bWFmX3Njb3JlKExJQlZNQUZDb250ZXh0 ICpzKQorc3RhdGljIGludCBkb192bWFmKEZGRnJhbWVTeW5jICpmcykKIHsKLSAgICBpbnQgKCpy ZWFkX2ZyYW1lKShmbG9hdCAqcmVmX2RhdGEsIGZsb2F0ICptYWluX2RhdGEsIGZsb2F0ICp0ZW1w X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmlkZSwgdm9pZCAqY3R4KTsKLSAg ICBjaGFyICpmb3JtYXQ7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBmcy0+cGFyZW50Owor ICAgIExJQlZNQUZDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIFZtYWZQaWN0dXJlIHBpY19y ZWYsIHBpY19kaXN0OworICAgIEFWRnJhbWUgKnJlZiwgKmRpc3Q7CisgICAgaW50IGVyciA9IDA7 CiAKLSAgICBpZiAocy0+ZGVzYy0+Y29tcFswXS5kZXB0aCA8PSA4KSB7Ci0gICAgICAgIHJlYWRf ZnJhbWUgPSByZWFkX2ZyYW1lXzhiaXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVhZF9mcmFt ZSA9IHJlYWRfZnJhbWVfMTBiaXQ7CisgICAgaW50IHJldCA9IGZmX2ZyYW1lc3luY19kdWFsaW5w dXRfZ2V0KGZzLCAmZGlzdCwgJnJlZik7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVy biByZXQ7CisgICAgaWYgKGN0eC0+aXNfZGlzYWJsZWQgfHwgIXJlZikKKyAgICAgICAgcmV0dXJu IGZmX2ZpbHRlcl9mcmFtZShjdHgtPm91dHB1dHNbMF0sIGRpc3QpOworCisgICAgZXJyID0gY29w eV9waWN0dXJlX2RhdGEocmVmLCAmcGljX3JlZiwgcy0+YnBjKTsKKyAgICBpZiAoZXJyKSB7Cisg ICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJwcm9ibGVtIGR1cmluZyB2bWFmX3BpY3R1 cmVfYWxsb2MuXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICB9CisK KyAgICBlcnIgPSBjb3B5X3BpY3R1cmVfZGF0YShkaXN0LCAmcGljX2Rpc3QsIHMtPmJwYyk7Cisg ICAgaWYgKGVycikgeworICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAicHJvYmxlbSBk dXJpbmcgdm1hZl9waWN0dXJlX2FsbG9jLlxuIik7CisgICAgICAgIHZtYWZfcGljdHVyZV91bnJl ZigmcGljX3JlZik7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgfQogCi0g ICAgZm9ybWF0ID0gKGNoYXIgKikgcy0+ZGVzYy0+bmFtZTsKKyAgICBlcnIgPSB2bWFmX3JlYWRf cGljdHVyZXMocy0+dm1hZiwgJnBpY19yZWYsICZwaWNfZGlzdCwgcy0+ZnJhbWVfY250KyspOwor ICAgIGlmIChlcnIpIHsKKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgInByb2JsZW0g ZHVyaW5nIHZtYWZfcmVhZF9waWN0dXJlcy5cbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOworICAgIH0KIAotICAgIHMtPmVycm9yID0gY29tcHV0ZV92bWFmKCZzLT52bWFmX3Nj b3JlLCBmb3JtYXQsIHMtPndpZHRoLCBzLT5oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVhZF9mcmFtZSwgcywgcy0+bW9kZWxfcGF0aCwgcy0+bG9nX3BhdGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgcy0+bG9nX2ZtdCwgMCwgMCwgcy0+ZW5hYmxlX3RyYW5zZm9y bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5waG9uZV9tb2RlbCwgcy0+cHNuciwg cy0+c3NpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tc19zc2ltLCBzLT5wb29s LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm5fdGhyZWFkcywgcy0+bl9zdWJzYW1w bGUsIHMtPmVuYWJsZV9jb25mX2ludGVydmFsKTsKKyAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1l KGN0eC0+b3V0cHV0c1swXSwgZGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkICpjYWxsX3ZtYWYodm9p ZCAqY3R4KQorCitzdGF0aWMgQVZEaWN0aW9uYXJ5ICoqZGVsaW1pdGVkX2RpY3RfcGFyc2UoY2hh ciAqc3RyLCB1bnNpZ25lZCAqY250KQogewotICAgIExJQlZNQUZDb250ZXh0ICpzID0gKExJQlZN QUZDb250ZXh0ICopIGN0eDsKLSAgICBjb21wdXRlX3ZtYWZfc2NvcmUocyk7Ci0gICAgaWYgKCFz LT5lcnJvcikgewotICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIlZNQUYgc2NvcmU6 ICVmXG4iLHMtPnZtYWZfc2NvcmUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB0aHJlYWRfbXV0 ZXhfbG9jaygmcy0+bG9jayk7Ci0gICAgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnMtPmNvbmQp OwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmcy0+bG9jayk7CisgICAgQVZEaWN0aW9u YXJ5ICoqZGljdCA9IE5VTEw7CisgICAgY2hhciAqc3RyX2NvcHkgPSBOVUxMOworICAgIGNoYXIg KnNhdmVwdHIgPSBOVUxMOworICAgIHVuc2lnbmVkIGNudDI7CisgICAgaW50IGVyciA9IDA7CisK KyAgICBpZiAoIXN0cikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBjbnQyID0gMTsKKyAg ICBmb3IgKGNoYXIgKnAgPSBzdHI7ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICd8JykK KyAgICAgICAgICAgIGNudDIrKzsKKyAgICB9CisKKyAgICBkaWN0ID0gYXZfY2FsbG9jKGNudDIs IHNpemVvZigqZGljdCkpOworICAgIGlmICghZGljdCkKKyAgICAgICAgZ290byBmYWlsOworCisg ICAgc3RyX2NvcHkgPSBhdl9zdHJkdXAoc3RyKTsKKyAgICBpZiAoIXN0cl9jb3B5KQorICAgICAg ICBnb3RvIGZhaWw7CisKKyAgICAqY250ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgY250MjsgaSsrKSB7CisgICAgICAgIGNoYXIgKnMgPSBhdl9zdHJ0b2soaSA9PSAwID8gc3Ry X2NvcHkgOiBOVUxMLCAifCIsICZzYXZlcHRyKTsKKyAgICAgICAgaWYgKCFzKQorICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIGVyciA9IGF2X2RpY3RfcGFyc2Vfc3RyaW5nKCZkaWN0Wygq Y250KSsrXSwgcywgIj0iLCAiOiIsIDApOworICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAg Z290byBmYWlsOworICAgIH0KKworICAgIGF2X2ZyZWUoc3RyX2NvcHkpOworICAgIHJldHVybiBk aWN0OworCitmYWlsOgorICAgIGlmIChkaWN0KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9 IDA7IGkgPCAqY250OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChkaWN0W2ldKQorICAgICAgICAg ICAgICAgIGF2X2RpY3RfZnJlZSgmZGljdFtpXSk7CisgICAgICAgIH0KKyAgICAgICAgYXZfZnJl ZShkaWN0KTsKICAgICB9Ci0gICAgcHRocmVhZF9leGl0KE5VTEwpOworCisgICAgYXZfZnJlZShz dHJfY29weSk7CisgICAgKmNudCA9IDA7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBp bnQgZG9fdm1hZihGRkZyYW1lU3luYyAqZnMpCitzdGF0aWMgaW50IHBhcnNlX2ZlYXR1cmVzKEFW RmlsdGVyQ29udGV4dCAqY3R4KQogewotICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gZnMtPnBh cmVudDsKICAgICBMSUJWTUFGQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKLSAgICBBVkZyYW1lICpt YXN0ZXIsICpyZWY7Ci0gICAgaW50IHJldDsKKyAgICBBVkRpY3Rpb25hcnkgKipkaWN0ID0gTlVM TDsKKyAgICB1bnNpZ25lZCBkaWN0X2NudDsKKyAgICBpbnQgZXJyID0gMDsKIAotICAgIHJldCA9 IGZmX2ZyYW1lc3luY19kdWFsaW5wdXRfZ2V0KGZzLCAmbWFzdGVyLCAmcmVmKTsKLSAgICBpZiAo cmV0IDwgMCkKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICBpZiAoIXJlZikKLSAgICAgICAgcmV0 dXJuIGZmX2ZpbHRlcl9mcmFtZShjdHgtPm91dHB1dHNbMF0sIG1hc3Rlcik7CisgICAgaWYgKCFz LT5mZWF0dXJlX2NmZykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBkaWN0ID0gZGVsaW1pdGVk X2RpY3RfcGFyc2Uocy0+ZmVhdHVyZV9jZmcsICZkaWN0X2NudCk7CisgICAgaWYgKCFkaWN0KSB7 CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICJjb3Vs ZCBub3QgcGFyc2UgZmVhdHVyZSBjb25maWc6ICVzXG4iLCBzLT5mZWF0dXJlX2NmZyk7CisgICAg ICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQogCi0gICAgcHRocmVhZF9tdXRleF9s b2NrKCZzLT5sb2NrKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdF9jbnQ7IGkr KykgeworICAgICAgICBjaGFyICpmZWF0dXJlX25hbWUgPSBOVUxMOworICAgICAgICBWbWFmRmVh dHVyZURpY3Rpb25hcnkgKmZlYXR1cmVfb3B0c19kaWN0ID0gTlVMTDsKKyAgICAgICAgQVZEaWN0 aW9uYXJ5RW50cnkgKmUgPSBOVUxMOworCisgICAgICAgIHdoaWxlIChlID0gYXZfZGljdF9nZXQo ZGljdFtpXSwgIiIsIGUsIEFWX0RJQ1RfSUdOT1JFX1NVRkZJWCkpIHsKKyAgICAgICAgICAgIGlm IChhdl9zdHJpc3RyKGUtPmtleSwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGZlYXR1cmVf bmFtZSA9IGUtPnZhbHVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBlcnIgPSB2bWFmX2ZlYXR1cmVfZGljdGlvbmFyeV9zZXQoJmZlYXR1 cmVfb3B0c19kaWN0LCBlLT5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZS0+dmFsdWUpOworICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAg ICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg ImNvdWxkIG5vdCBzZXQgZmVhdHVyZSBvcHRpb246ICVzLiVzPSVzXG4iLAorICAgICAgICAgICAg ICAgICAgICAgICBmZWF0dXJlX25hbWUsIGUtPmtleSwgZS0+dmFsdWUpOworICAgICAgICAgICAg ICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGVyciA9 IHZtYWZfdXNlX2ZlYXR1cmUocy0+dm1hZiwgZmVhdHVyZV9uYW1lLCBmZWF0dXJlX29wdHNfZGlj dCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19F UlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBkdXJpbmcgdm1hZl91c2VfZmVhdHVy ZTogJXNcbiIsIGZlYXR1cmVfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAg IH0KKyAgICB9CiAKLSAgICB3aGlsZSAocy0+ZnJhbWVfc2V0ICYmICFzLT5lcnJvcikgewotICAg ICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmcy0+Y29uZCwgJnMtPmxvY2spOworZXhpdDoKKyAgICBm b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdF9jbnQ7IGkrKykgeworICAgICAgICBpZiAoZGlj dFtpXSkKKyAgICAgICAgICAgIGF2X2RpY3RfZnJlZSgmZGljdFtpXSk7CiAgICAgfQorICAgIGF2 X2ZyZWUoZGljdCk7CisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwYXJzZV9tb2Rl bHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgt PnByaXY7CisgICAgQVZEaWN0aW9uYXJ5ICoqZGljdDsKKyAgICB1bnNpZ25lZCBkaWN0X2NudDsK KyAgICBpbnQgZXJyID0gMDsKKworICAgIGlmICghcy0+bW9kZWxfY2ZnKSByZXR1cm4gMDsKIAot ICAgIGlmIChzLT5lcnJvcikgeworICAgIGRpY3RfY250ID0gMDsKKyAgICBkaWN0ID0gZGVsaW1p dGVkX2RpY3RfcGFyc2Uocy0+bW9kZWxfY2ZnLCAmZGljdF9jbnQpOworICAgIGlmICghZGljdCkg ewogICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCi0gICAgICAgICAgICAgICAibGli dm1hZiBlbmNvdW50ZXJlZCBhbiBlcnJvciwgY2hlY2sgbG9nIGZvciBkZXRhaWxzXG4iKTsKLSAg ICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnMtPmxvY2spOworICAgICAgICAgICAgICAgImNv dWxkIG5vdCBwYXJzZSBtb2RlbCBjb25maWc6ICVzXG4iLCBzLT5tb2RlbF9jZmcpOwogICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAotICAgIGF2X2ZyYW1lX3JlZihzLT5n cmVmLCByZWYpOwotICAgIGF2X2ZyYW1lX3JlZihzLT5nbWFpbiwgbWFzdGVyKTsKKyAgICBzLT5t b2RlbF9jbnQgPSBkaWN0X2NudDsKKyAgICBzLT5tb2RlbCA9IGF2X2NhbGxvYyhzLT5tb2RlbF9j bnQsIHNpemVvZigqcy0+bW9kZWwpKTsKKyAgICBpZiAoIXMtPm1vZGVsKQorICAgICAgICByZXR1 cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3Rf Y250OyBpKyspIHsKKyAgICAgICAgVm1hZk1vZGVsQ29uZmlnIG1vZGVsX2NmZyA9IHsgMCB9Owor ICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqZSA9IE5VTEw7CisgICAgICAgIGNoYXIgKnZlcnNp b24gPSBOVUxMOworICAgICAgICBjaGFyICAqcGF0aCA9IE5VTEw7CisKKyAgICAgICAgd2hpbGUg KGUgPSBhdl9kaWN0X2dldChkaWN0W2ldLCAiIiwgZSwgQVZfRElDVF9JR05PUkVfU1VGRklYKSkg eworICAgICAgICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAiZGlzYWJsZV9jbGlwIikpIHsK KyAgICAgICAgICAgICAgICBtb2RlbF9jZmcuZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwg InRydWUiKSA/CisgICAgICAgICAgICAgICAgICAgIFZNQUZfTU9ERUxfRkxBR19ESVNBQkxFX0NM SVAgOiAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZiAoYXZfc3RyaXN0cihlLT5rZXksICJlbmFibGVfdHJhbnNmb3JtIikpIHsKKyAg ICAgICAgICAgICAgICBtb2RlbF9jZmcuZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwgInRy dWUiKSA/CisgICAgICAgICAgICAgICAgICAgIFZNQUZfTU9ERUxfRkxBR19FTkFCTEVfVFJBTlNG T1JNIDogMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAibmFtZSIpKSB7CisgICAgICAgICAgICAg ICAgbW9kZWxfY2ZnLm5hbWUgPSBlLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAidmVy c2lvbiIpKSB7CisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGUtPnZhbHVlOworICAgICAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXZfc3Ry aXN0cihlLT5rZXksICJwYXRoIikpIHsKKyAgICAgICAgICAgICAgICBwYXRoID0gZS0+dmFsdWU7 CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor ICAgICAgICBpZiAodmVyc2lvbikgeworICAgICAgICAgICAgZXJyID0gdm1hZl9tb2RlbF9sb2Fk KCZzLT5tb2RlbFtpXSwgJm1vZGVsX2NmZywgdmVyc2lvbik7CisgICAgICAgICAgICBpZiAoZXJy KSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAg ICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgbGlidm1hZiBtb2RlbCB3aXRoIHZlcnNpb246 ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uKTsKKyAgICAgICAgICAgICAg ICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocGF0 aCAmJiAhcy0+bW9kZWxbaV0pIHsKKyAgICAgICAgICAgIGVyciA9IHZtYWZfbW9kZWxfbG9hZF9m cm9tX3BhdGgoJnMtPm1vZGVsW2ldLCAmbW9kZWxfY2ZnLCBwYXRoKTsKKyAgICAgICAgICAgIGlm IChlcnIpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAg ICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgbG9hZCBsaWJ2bWFmIG1vZGVsIHdpdGggcGF0 aDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpOworICAgICAgICAgICAgICAg IGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghcy0+ bW9kZWxbaV0pIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAg ICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgbGlidm1hZiBtb2RlbCB3aXRoIGNvbmZpZzog JXNcbiIsCisgICAgICAgICAgICAgICAgICAgcy0+bW9kZWxfY2ZnKTsKKyAgICAgICAgICAgIGdv dG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChlID0gYXZfZGljdF9nZXQoZGlj dFtpXSwgIiIsIGUsIEFWX0RJQ1RfSUdOT1JFX1NVRkZJWCkpIHsKKyAgICAgICAgICAgIFZtYWZG ZWF0dXJlRGljdGlvbmFyeSAqZmVhdHVyZV9vcHRzX2RpY3QgPSBOVUxMOworICAgICAgICAgICAg Y2hhciAqZmVhdHVyZV9vcHQgPSBOVUxMOworCisgICAgICAgICAgICBjaGFyICpmZWF0dXJlX25h bWUgPSBhdl9zdHJ0b2soZS0+a2V5LCAiLiIsICZmZWF0dXJlX29wdCk7CisgICAgICAgICAgICBp ZiAoIWZlYXR1cmVfb3B0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg ICBlcnIgPSB2bWFmX2ZlYXR1cmVfZGljdGlvbmFyeV9zZXQoJmZlYXR1cmVfb3B0c19kaWN0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfb3B0 LCBlLT52YWx1ZSk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90 IHNldCBmZWF0dXJlIG9wdGlvbjogJXMuJXM9JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAg IGZlYXR1cmVfbmFtZSwgZmVhdHVyZV9vcHQsIGUtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICBl cnIgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBlcnIgPSB2bWFmX21vZGVsX2ZlYXR1cmVfb3ZlcmxvYWQo cy0+bW9kZWxbaV0sIGZlYXR1cmVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmZWF0dXJlX29wdHNfZGljdCk7CisgICAgICAgICAgICBpZiAoZXJy KSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAg ICAgICAgICAgICAgICAiY291bGQgbm90IG92ZXJsb2FkIGZlYXR1cmU6ICVzXG4iLCBmZWF0dXJl X25hbWUpOworICAgICAgICAgICAgICAgIGVyciA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAg ICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcy0+bW9kZWxfY250OyBpKyspIHsKKyAgICAgICAg ZXJyID0gdm1hZl91c2VfZmVhdHVyZXNfZnJvbV9tb2RlbChzLT52bWFmLCBzLT5tb2RlbFtpXSk7 CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJP UiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBkdXJpbmcgdm1hZl91c2VfZmVhdHVyZXNf ZnJvbV9tb2RlbFxuIik7CisgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAg ICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisKK2V4aXQ6CisgICAgZm9yICh1 bnNpZ25lZCBpID0gMDsgaSA8IGRpY3RfY250OyBpKyspIHsKKyAgICAgICAgaWYgKGRpY3RbaV0p CisgICAgICAgICAgICBhdl9kaWN0X2ZyZWUoJmRpY3RbaV0pOworICAgIH0KKyAgICBhdl9mcmVl KGRpY3QpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBlbnVtIFZtYWZMb2dMZXZlbCBs b2dfbGV2ZWxfbWFwKGludCBsb2dfbGV2ZWwpCit7CisgICAgc3dpdGNoIChsb2dfbGV2ZWwpIHsK KyAgICBjYXNlIEFWX0xPR19RVUlFVDoKKyAgICAgICAgcmV0dXJuIFZNQUZfTE9HX0xFVkVMX05P TkU7CisgICAgY2FzZSBBVl9MT0dfRVJST1I6CisgICAgICAgIHJldHVybiBWTUFGX0xPR19MRVZF TF9FUlJPUjsKKyAgICBjYXNlIEFWX0xPR19XQVJOSU5HOgorICAgICAgICByZXR1cm4gVk1BRl9M T0dfTEVWRUxfV0FSTklORzsKKyAgICBjYXNlIEFWX0xPR19JTkZPOgorICAgICAgICByZXR1cm4g Vk1BRl9MT0dfTEVWRUxfSU5GTzsKKyAgICBjYXNlIEFWX0xPR19ERUJVRzoKKyAgICAgICAgcmV0 dXJuIFZNQUZfTE9HX0xFVkVMX0RFQlVHOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBW TUFGX0xPR19MRVZFTF9JTkZPOworICAgIH0KK30KKworc3RhdGljIGludCBwYXJzZV9kZXByZWNh dGVkX29wdGlvbnMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgTElCVk1BRkNvbnRleHQg KnMgPSBjdHgtPnByaXY7CisgICAgVm1hZk1vZGVsICptb2RlbCA9IE5VTEw7CisgICAgVm1hZk1v ZGVsQ29sbGVjdGlvbiAqbW9kZWxfY29sbGVjdGlvbiA9IE5VTEw7CisgICAgZW51bSBWbWFmTW9k ZWxGbGFncyBmbGFncyA9IFZNQUZfTU9ERUxfRkxBR1NfREVGQVVMVDsKKyAgICBpbnQgZXJyID0g MDsKKworICAgIFZtYWZNb2RlbENvbmZpZyBtb2RlbF9jZmcgPSB7CisgICAgICAgIC5uYW1lID0g InZtYWYiLAorICAgICAgICAuZmxhZ3MgPSBmbGFncywKKyAgICB9OworCisgICAgaWYgKHMtPmVu YWJsZV90cmFuc2Zvcm0gfHwgcy0+cGhvbmVfbW9kZWwpCisgICAgICAgIGZsYWdzIHw9IFZNQUZf TU9ERUxfRkxBR19FTkFCTEVfVFJBTlNGT1JNOworCisgICAgaWYgKCFzLT5tb2RlbF9wYXRoKQor ICAgICAgICBnb3RvIGV4dHJhX21ldHJpY3Nfb25seTsKKworICAgIGlmIChzLT5lbmFibGVfY29u Zl9pbnRlcnZhbCkgeworICAgICAgICBlcnIgPSB2bWFmX21vZGVsX2NvbGxlY3Rpb25fbG9hZF9m cm9tX3BhdGgoJm1vZGVsLCAmbW9kZWxfY29sbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlbF9jZmcsIHMtPm1vZGVsX3BhdGgp OworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBtb2RlbCBmaWxlOiAlc1xu Iiwgcy0+bW9kZWxfcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKwor ICAgICAgICBlcnIgPSB2bWFmX3VzZV9mZWF0dXJlc19mcm9tX21vZGVsX2NvbGxlY3Rpb24ocy0+ dm1hZiwgbW9kZWxfY29sbGVjdGlvbik7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBs b2FkaW5nIGZlYXR1cmUgZXh0cmFjdG9ycyBmcm9tIG1vZGVsIGZpbGU6ICVzXG4iLAorICAgICAg ICAgICAgICAgICAgIHMtPm1vZGVsX3BhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAg ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gdm1hZl9tb2RlbF9sb2FkX2Zyb21f cGF0aCgmbW9kZWwsICZtb2RlbF9jZmcsIHMtPm1vZGVsX3BhdGgpOworICAgICAgICBpZiAoZXJy KSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAg ICAgICAgICAgICAgICJwcm9ibGVtIGxvYWRpbmcgbW9kZWwgZmlsZTogJXNcbiIsIHMtPm1vZGVs X3BhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGVyciA9 IHZtYWZfdXNlX2ZlYXR1cmVzX2Zyb21fbW9kZWwocy0+dm1hZiwgbW9kZWwpOworICAgICAgICBp ZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAg ICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBmZWF0dXJlIGV4dHJhY3RvcnMgZnJvbSBtb2Rl bCBmaWxlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBzLT5tb2RlbF9wYXRoKTsKKyAgICAg ICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KKworZXh0cmFfbWV0cmljc19vbmx5 OgorICAgIGlmIChzLT5wc25yKSB7CisgICAgICAgIFZtYWZGZWF0dXJlRGljdGlvbmFyeSAqZCA9 IE5VTEw7CisgICAgICAgIHZtYWZfZmVhdHVyZV9kaWN0aW9uYXJ5X3NldCgmZCwgImVuYWJsZV9j aHJvbWEiLCAiZmFsc2UiKTsKKworICAgICAgICBlcnIgPSB2bWFmX3VzZV9mZWF0dXJlKHMtPnZt YWYsICJwc25yIiwgZCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhj dHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBsb2FkaW5nIGZl YXR1cmUgZXh0cmFjdG9yOiBwc25yXG4iKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAg ICAgfQorICAgIH0KIAotICAgIHMtPmZyYW1lX3NldCA9IDE7CisgICAgaWYgKHMtPnNzaW0pIHsK KyAgICAgICAgZXJyID0gdm1hZl91c2VfZmVhdHVyZShzLT52bWFmLCAiZmxvYXRfc3NpbSIsIE5V TEwpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df RVJST1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBmZWF0dXJlIGV4dHJh Y3Rvcjogc3NpbVxuIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9 CiAKLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzLT5jb25kKTsKLSAgICBwdGhyZWFkX211dGV4 X3VubG9jaygmcy0+bG9jayk7CisgICAgaWYgKHMtPm1zX3NzaW0pIHsKKyAgICAgICAgZXJyID0g dm1hZl91c2VfZmVhdHVyZShzLT52bWFmLCAiZmxvYXRfbXNfc3NpbSIsIE5VTEwpOworICAgICAg ICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAg ICAgICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBmZWF0dXJlIGV4dHJhY3RvcjogbXNfc3Np bVxuIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBy ZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKGN0eC0+b3V0cHV0c1swXSwgbWFzdGVyKTsKK2V4aXQ6Cisg ICAgcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250 ZXh0ICpjdHgpCiB7CiAgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgaW50 IGVyciA9IDA7CiAKLSAgICBzLT5ncmVmID0gYXZfZnJhbWVfYWxsb2MoKTsKLSAgICBzLT5nbWFp biA9IGF2X2ZyYW1lX2FsbG9jKCk7Ci0gICAgaWYgKCFzLT5ncmVmIHx8ICFzLT5nbWFpbikKLSAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICBWbWFmQ29uZmlndXJhdGlvbiBjZmcg PSB7CisgICAgICAgIC5sb2dfbGV2ZWwgPSBsb2dfbGV2ZWxfbWFwKGF2X2xvZ19nZXRfbGV2ZWwo KSksCisgICAgICAgIC5uX3N1YnNhbXBsZSA9IHMtPm5fc3Vic2FtcGxlLAorICAgICAgICAubl90 aHJlYWRzID0gcy0+bl90aHJlYWRzLAorICAgIH07CisKKyAgICBlcnIgPSB2bWFmX2luaXQoJnMt PnZtYWYsIGNmZyk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKKworICAgIGVyciA9IHBhcnNlX2RlcHJlY2F0ZWRfb3B0aW9ucyhjdHgpOworICAgIGlmIChl cnIpCisgICAgICAgIHJldHVybiBlcnI7CiAKLSAgICBzLT5lcnJvciA9IDA7CisgICAgZXJyID0g cGFyc2VfbW9kZWxzKGN0eCk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKIAot ICAgIHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQgPSAwOwotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgm cy0+bG9jaywgTlVMTCk7Ci0gICAgcHRocmVhZF9jb25kX2luaXQgKCZzLT5jb25kLCBOVUxMKTsK KyAgICBlcnIgPSBwYXJzZV9mZWF0dXJlcyhjdHgpOworICAgIGlmIChlcnIpCisgICAgICAgIHJl dHVybiBlcnI7CiAKICAgICBzLT5mcy5vbl9ldmVudCA9IGRvX3ZtYWY7CiAgICAgcmV0dXJuIDA7 CkBAIC0yNTYsMjYgKzU0NSwzMSBAQCBzdGF0aWMgY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0IHBp eF9mbXRzW10gPSB7CiAKIHN0YXRpYyBpbnQgY29uZmlnX2lucHV0X3JlZihBVkZpbHRlckxpbmsg KmlubGluaykKIHsKLSAgICBBVkZpbHRlckNvbnRleHQgKmN0eCAgPSBpbmxpbmstPmRzdDsKKyAg ICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IGlubGluay0+ZHN0OwogICAgIExJQlZNQUZDb250ZXh0 ICpzID0gY3R4LT5wcml2OwotICAgIGludCB0aDsKKyAgICBjb25zdCBBVlBpeEZtdERlc2NyaXB0 b3IgKmRlc2M7CisgICAgaW50IGVyciA9IDA7CiAKLSAgICBpZiAoY3R4LT5pbnB1dHNbMF0tPncg IT0gY3R4LT5pbnB1dHNbMV0tPncgfHwKLSAgICAgICAgY3R4LT5pbnB1dHNbMF0tPmggIT0gY3R4 LT5pbnB1dHNbMV0tPmgpIHsKLSAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiV2lk dGggYW5kIGhlaWdodCBvZiBpbnB1dCB2aWRlb3MgbXVzdCBiZSBzYW1lLlxuIik7Ci0gICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgaWYgKGN0eC0+aW5wdXRzWzBdLT53ICE9IGN0 eC0+aW5wdXRzWzFdLT53KSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgImlu cHV0IHdpZHRoIG11c3QgbWF0Y2guXG4iKTsKKyAgICAgICAgZXJyIHw9IEFWRVJST1IoRUlOVkFM KTsKICAgICB9CiAKLSAgICBzLT5kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChpbmxpbmstPmZv cm1hdCk7Ci0gICAgcy0+d2lkdGggPSBjdHgtPmlucHV0c1swXS0+dzsKLSAgICBzLT5oZWlnaHQg PSBjdHgtPmlucHV0c1swXS0+aDsKKyAgICBpZiAoY3R4LT5pbnB1dHNbMF0tPmggIT0gY3R4LT5p bnB1dHNbMV0tPmgpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiaW5wdXQg aGVpZ2h0IG11c3QgbWF0Y2guXG4iKTsKKyAgICAgICAgZXJyIHw9IEFWRVJST1IoRUlOVkFMKTsK KyAgICB9CiAKLSAgICB0aCA9IHB0aHJlYWRfY3JlYXRlKCZzLT52bWFmX3RocmVhZCwgTlVMTCwg Y2FsbF92bWFmLCAodm9pZCAqKSBzKTsKLSAgICBpZiAodGgpIHsKLSAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiVGhyZWFkIGNyZWF0aW9uIGZhaWxlZC5cbiIpOwotICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIGlmIChjdHgtPmlucHV0c1swXS0+Zm9ybWF0ICE9 IGN0eC0+aW5wdXRzWzFdLT5mb3JtYXQpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VS Uk9SLCAiaW5wdXQgcGl4X2ZtdCBtdXN0IG1hdGNoLlxuIik7CisgICAgICAgIGVyciB8PSBBVkVS Uk9SKEVJTlZBTCk7CiAgICAgfQotICAgIHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQgPSAxOworCisg ICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKKworICAgIGRlc2MgPSBhdl9waXhfZm10 X2Rlc2NfZ2V0KGlubGluay0+Zm9ybWF0KTsKKyAgICBzLT5icGMgPSBkZXNjLT5jb21wWzBdLmRl cHRoOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMDcsMjggKzYwMSw4MCBAQCBzdGF0aWMgaW50 IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgIHJldHVybiBmZl9mcmFtZXN5bmNf YWN0aXZhdGUoJnMtPmZzKTsKIH0KIAorc3RhdGljIGVudW0gVm1hZk91dHB1dEZvcm1hdCBsb2df Zm10X21hcChjb25zdCBjaGFyICpsb2dfZm10KQoreworICAgIGlmIChsb2dfZm10KSB7CisgICAg ICAgIGlmIChhdl9zdHJpc3RyKGxvZ19mbXQsICJ4bWwiKSkKKyAgICAgICAgICAgIHJldHVybiBW TUFGX09VVFBVVF9GT1JNQVRfWE1MOworICAgICAgICBpZiAoYXZfc3RyaXN0cihsb2dfZm10LCAi anNvbiIpKQorICAgICAgICAgICAgcmV0dXJuIFZNQUZfT1VUUFVUX0ZPUk1BVF9KU09OOworICAg ICAgICBpZiAoYXZfc3RyaXN0cihsb2dfZm10LCAiY3N2IikpCisgICAgICAgICAgICByZXR1cm4g Vk1BRl9PVVRQVVRfRk9STUFUX0NTVjsKKyAgICAgICAgaWYgKGF2X3N0cmlzdHIobG9nX2ZtdCwg InN1YiIpKQorICAgICAgICAgICAgcmV0dXJuIFZNQUZfT1VUUFVUX0ZPUk1BVF9TVUI7CisgICAg fQorCisgICAgcmV0dXJuIFZNQUZfT1VUUFVUX0ZPUk1BVF9YTUw7Cit9CisKK3N0YXRpYyBlbnVt IFZtYWZQb29saW5nTWV0aG9kIHBvb2xfbWV0aG9kX21hcChjb25zdCBjaGFyICpwb29sX21ldGhv ZCkKK3sKKyAgICBpZiAocG9vbF9tZXRob2QpIHsKKyAgICAgICAgaWYgKGF2X3N0cmlzdHIocG9v bF9tZXRob2QsICJtaW4iKSkKKyAgICAgICAgICAgIHJldHVybiBWTUFGX1BPT0xfTUVUSE9EX01J TjsKKyAgICAgICAgaWYgKGF2X3N0cmlzdHIocG9vbF9tZXRob2QsICJtZWFuIikpCisgICAgICAg ICAgICByZXR1cm4gVk1BRl9QT09MX01FVEhPRF9NRUFOOworICAgICAgICBpZiAoYXZfc3RyaXN0 cihwb29sX21ldGhvZCwgImhhcm1vbmljX21lYW4iKSkKKyAgICAgICAgICAgIHJldHVybiBWTUFG X1BPT0xfTUVUSE9EX0hBUk1PTklDX01FQU47CisgICAgfQorCisgICAgcmV0dXJuIFZNQUZfUE9P TF9NRVRIT0RfTUVBTjsKK30KKwogc3RhdGljIGF2X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJD b250ZXh0ICpjdHgpCiB7CiAgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAg aW50IGVyciA9IDA7CiAKICAgICBmZl9mcmFtZXN5bmNfdW5pbml0KCZzLT5mcyk7CiAKLSAgICBw dGhyZWFkX211dGV4X2xvY2soJnMtPmxvY2spOwotICAgIHMtPmVvZiA9IDE7Ci0gICAgcHRocmVh ZF9jb25kX3NpZ25hbCgmcy0+Y29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnMtPmxv Y2spOworICAgIGlmICghcy0+ZnJhbWVfY250KQorICAgICAgICBnb3RvIGNsZWFuX3VwOwogCi0g ICAgaWYgKHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQpCi0gICAgewotICAgICAgICBwdGhyZWFkX2pv aW4ocy0+dm1hZl90aHJlYWQsIE5VTEwpOwotICAgICAgICBzLT52bWFmX3RocmVhZF9jcmVhdGVk ID0gMDsKKyAgICBlcnIgPSB2bWFmX3JlYWRfcGljdHVyZXMocy0+dm1hZiwgTlVMTCwgTlVMTCwg MCk7CisgICAgaWYgKGVycikgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisg ICAgICAgICAgICAgICAicHJvYmxlbSBmbHVzaGluZyBsaWJ2bWFmIGNvbnRleHQuXG4iKTsKICAg ICB9CiAKLSAgICBhdl9mcmFtZV9mcmVlKCZzLT5ncmVmKTsKLSAgICBhdl9mcmFtZV9mcmVlKCZz LT5nbWFpbik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHMtPm1vZGVsX2NudDsgaSsr KSB7CisgICAgICAgIGRvdWJsZSB2bWFmX3Njb3JlOworICAgICAgICBlcnIgPSB2bWFmX3Njb3Jl X3Bvb2xlZChzLT52bWFmLCBzLT5tb2RlbFtpXSwgcG9vbF9tZXRob2RfbWFwKHMtPnBvb2wpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdm1hZl9zY29yZSwgMCwgcy0+ZnJhbWVf Y250IC0gMSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBnZXR0aW5nIHBvb2xlZCB2 bWFmIHNjb3JlLlxuIik7CisgICAgICAgIH0KKworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df SU5GTywgIlZNQUYgc2NvcmU6ICVmXG4iLCB2bWFmX3Njb3JlKTsKKyAgICB9CisKKyAgICBpZiAo cy0+dm1hZikgeworICAgICAgICBpZiAocy0+bG9nX3BhdGggJiYgIWVycikKKyAgICAgICAgICAg IHZtYWZfd3JpdGVfb3V0cHV0KHMtPnZtYWYsIHMtPmxvZ19wYXRoLCBsb2dfZm10X21hcChzLT5s b2dfZm10KSk7CisgICAgfQorCitjbGVhbl91cDoKKyAgICBpZiAocy0+bW9kZWwpIHsKKyAgICAg ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHMtPm1vZGVsX2NudDsgaSsrKSB7CisgICAgICAg ICAgICBpZiAocy0+bW9kZWxbaV0pCisgICAgICAgICAgICAgICAgdm1hZl9tb2RlbF9kZXN0cm95 KHMtPm1vZGVsW2ldKTsKKyAgICAgICAgfQorICAgICAgICBhdl9mcmVlKHMtPm1vZGVsKTsKKyAg ICB9CiAKLSAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJnMtPmxvY2spOwotICAgIHB0aHJlYWRf Y29uZF9kZXN0cm95KCZzLT5jb25kKTsKKyAgICBpZiAocy0+dm1hZikKKyAgICAgICAgdm1hZl9j bG9zZShzLT52bWFmKTsKIH0KIAogc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIGxpYnZtYWZfaW5w dXRzW10gPSB7Ci0tIAoyLjI0LjMgKEFwcGxlIEdpdC0xMjgpCgo= --000000000000de569505d5f37d4c Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --000000000000de569505d5f37d4c--