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 89AED4311F for ; Fri, 14 Jan 2022 02:38:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E61A068B67D; Fri, 14 Jan 2022 04:38:31 +0200 (EET) Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C1B468B48D for ; Fri, 14 Jan 2022 04:38:25 +0200 (EET) Received: by mail-qk1-f177.google.com with SMTP id m2so9599092qkd.8 for ; Thu, 13 Jan 2022 18:38:25 -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=qnNcO77s4Rdr8uQgNLMpB1vyQc656kYTHShAVQH2JkE=; b=lwcqPRAIw1VhNtJ5zjRa0/PfyrLFSq25aZu46bdfKb6R56EEBlnY0kiKcCCs9Wfn4L EjfB2GDjmRC6ZY06+FTsyOBRHdoeg4nDcOsTgkwmhzZ4O4UgjxybWSNDHnQ9+1HoqGen F3//uOTIlgBIj9N8z6k20bIByHrCGLbKlnX9pW0PBymvV77O9HEDvnxWq2t11ZVTs/2a wye/WBVt/dK4fiBYH8KhFIn4rApBN98rIXfFccEx1HZxJ9TFl8Bm1rFKBmKZG1vo8eK7 ZeO4cA+we9vwhqmuKpwyWp46Nfk+JUB607iUgSXo3LFN9+DZnjhta76r892xeTK9gI2J 0Vfw== 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=qnNcO77s4Rdr8uQgNLMpB1vyQc656kYTHShAVQH2JkE=; b=wVTIdvpmOCq2Q2Ba+CJ4FCXeEQps0YO7Oe0v/kksknU5iQJdP2l2jVOdmWHkk+hvlU 2sGXXNN97GWsi1Unbg0tXnbD3a85fXL2WbPnxEDRMyneXMXoIeFY0K0sXGZ2Wg/EvB78 GcyhTA7Wm9BV48Mv9jyTXKusMPfeQbM69hfORP3k1liTbXRY9EouGUq63O6AN23l2n6x 3L+cnI1Z4Xei3zuWhFsssyYKbf0T6sDeNLLzUOQFhcfK2pYTXyQ02DCWtG+NHZZ2dV5v S84v0Vy7yQrU4HFOwsOJ1zU/QgQGBL91vhmueG1+BqoPmE3ArHClPK1qqNoJbJ/fHoyj RgpA== X-Gm-Message-State: AOAM530NWG93zKCb1GrlWXTsnh2xhDr8bv+oZ4i7GDAsEuwXI9ICW5zp g7kIjtNTq4wMTg6dHrmvOmzpNNjOtjRT7t8gAXBwUYm/xYE= X-Google-Smtp-Source: ABdhPJyUk3mhwMMTjLvy2PtdtJp0Qmgn6Dlgdk0VGQU0ILyMACVnWpAoY8D2wHFuwQG99uI8g82SwnPSMVZQj82TQI4= X-Received: by 2002:a05:620a:4707:: with SMTP id bs7mr5146762qkb.39.1642127903552; Thu, 13 Jan 2022 18:38:23 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kyle Swanson Date: Thu, 13 Jan 2022 18:38:12 -0800 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000005e3b2e05d581b2d0" 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: --0000000000005e3b2e05d581b2d0 Content-Type: text/plain; charset="UTF-8" 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 --0000000000005e3b2e05d581b2d0 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_kyds25k30 RnJvbSAyZGY5NzYwNjZmMzM0ZDQ4Njg3MjU1Y2NkNDZhZGNkMWFiMGY4MmU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLeWxlIFN3YW5zb24gPGtzd2Fuc29uQG5ldGZsaXguY29tPgpE YXRlOiBGcmksIDI0IERlYyAyMDIxIDEyOjQzOjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gYXZm aWx0ZXIvdmZfbGlidm1hZjogdXBkYXRlIGZpbHRlciBmb3IgbGlidm1hZiB2Mi4wLjAKCi0tLQog Y29uZmlndXJlICAgICAgICAgICAgICAgIHwgICA0ICstCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgfCAgNzcgKystLS0KIGxpYmF2ZmlsdGVyL3ZlcnNpb24uaCAgICB8ICAgMiArLQogbGliYXZm aWx0ZXIvdmZfbGlidm1hZi5jIHwgNjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1MzYgaW5zZXJ0aW9ucygrKSwgMjIwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxNDEzMTIyZDg3 Li4yOWNmOTZiODE2IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0z NzUwLDcgKzM3NTAsNyBAQCB2YWd1ZWRlbm9pc2VyX2ZpbHRlcl9kZXBzPSJncGwiCiB2ZmxpcF92 dWxrYW5fZmlsdGVyX2RlcHM9InZ1bGthbiBzcGlydl9jb21waWxlciIKIHZpZHN0YWJkZXRlY3Rf ZmlsdGVyX2RlcHM9ImxpYnZpZHN0YWIiCiB2aWRzdGFidHJhbnNmb3JtX2ZpbHRlcl9kZXBzPSJs aWJ2aWRzdGFiIgotbGlidm1hZl9maWx0ZXJfZGVwcz0ibGlidm1hZiBwdGhyZWFkcyIKK2xpYnZt YWZfZmlsdGVyX2RlcHM9ImxpYnZtYWYiCiB6bXFfZmlsdGVyX2RlcHM9ImxpYnptcSIKIHpvb21w YW5fZmlsdGVyX2RlcHM9InN3c2NhbGUiCiB6c2NhbGVfZmlsdGVyX2RlcHM9ImxpYnppbWcgY29u c3RfbmFuIgpAQCAtNjYxOCw3ICs2NjE4LDcgQEAgZW5hYmxlZCBsaWJ0d29sYW1lICAgICAgICAm JiByZXF1aXJlIGxpYnR3b2xhbWUgdHdvbGFtZS5oIHR3b2xhbWVfaW5pdCAtbHR3b2xhbWUKIGVu YWJsZWQgbGlidWF2czNkICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnVhdnMzZCAi dWF2czNkID49IDEuMS40MSIgdWF2czNkLmggdWF2czNkX2RlY29kZQogZW5hYmxlZCBsaWJ2NGwy ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlidjRsMiBsaWJ2NGwyIGxpYnY0bDIu aCB2NGwyX2lvY3RsCiBlbmFibGVkIGxpYnZpZHN0YWIgICAgICAgICYmIHJlcXVpcmVfcGtnX2Nv bmZpZyBsaWJ2aWRzdGFiICJ2aWRzdGFiID49IDAuOTgiIHZpZC5zdGFiL2xpYnZpZHN0YWIuaCB2 c01vdGlvbkRldGVjdEluaXQKLWVuYWJsZWQgbGlidm1hZiAgICAgICAgICAgJiYgcmVxdWlyZV9w a2dfY29uZmlnIGxpYnZtYWYgImxpYnZtYWYgPj0gMS41LjIiIGxpYnZtYWYuaCBjb21wdXRlX3Zt YWYKK2VuYWJsZWQgbGlidm1hZiAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnZt YWYgImxpYnZtYWYgPj0gMi4wLjAiIGxpYnZtYWYuaCB2bWFmX2luaXQKIGVuYWJsZWQgbGlidm9f YW1yd2JlbmMgICAgJiYgcmVxdWlyZSBsaWJ2b19hbXJ3YmVuYyB2by1hbXJ3YmVuYy9lbmNfaWYu aCBFX0lGX2luaXQgLWx2by1hbXJ3YmVuYwogZW5hYmxlZCBsaWJ2b3JiaXMgICAgICAgICAmJiBy ZXF1aXJlX3BrZ19jb25maWcgbGlidm9yYmlzIHZvcmJpcyB2b3JiaXMvY29kZWMuaCB2b3JiaXNf aW5mb19pbml0ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfcGtnX2Nv bmZpZyBsaWJ2b3JiaXNlbmMgdm9yYmlzZW5jIHZvcmJpcy92b3JiaXNlbmMuaCB2b3JiaXNfZW5j b2RlX2luaXQKZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhp CmluZGV4IDA1ZDRiMWE1NmUuLmNhY2FhNmMwODAgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRl eGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4aQpAQCAtMTQ2NjYsNjggKzE0NjY2LDM5IEBAIGZmbXBl ZyAtaSBpbnB1dC5tb3YgLXZmIGxlbnNmdW49bWFrZT1DYW5vbjptb2RlbD0iQ2Fub24gRU9TIDEw MEQiOmxlbnNfbW9kZWw9IkNhCiAKIEBzZWN0aW9uIGxpYnZtYWYKIAotT2J0YWluIHRoZSBWTUFG IChWaWRlbyBNdWx0aS1NZXRob2QgQXNzZXNzbWVudCBGdXNpb24pCi1zY29yZSBiZXR3ZWVuIHR3 byBpbnB1dCB2aWRlb3MuCitDYWx1bGF0ZSB0aGUgVk1BRiAoVmlkZW8gTXVsdGktTWV0aG9kIEFz c2Vzc21lbnQgRnVzaW9uKSBzY29yZSBmb3IgYQorcmVmZXJlbmNlL2Rpc3RvcnRlZCBwYWlyIG9m IGlucHV0IHZpZGVvcy4KIAotVGhlIGZpcnN0IGlucHV0IGlzIHRoZSBlbmNvZGVkIHZpZGVvLCBh bmQgdGhlIHNlY29uZCBpbnB1dCBpcyB0aGUgcmVmZXJlbmNlIHZpZGVvLgorVGhlIGZpcnN0IGlu cHV0IGlzIHRoZSBkaXN0b3J0ZWQgdmlkZW8sIGFuZCB0aGUgc2Vjb25kIGlucHV0IGlzIHRoZSBy ZWZlcmVuY2UgdmlkZW8uCiAKIFRoZSBvYnRhaW5lZCBWTUFGIHNjb3JlIGlzIHByaW50ZWQgdGhy b3VnaCB0aGUgbG9nZ2luZyBzeXN0ZW0uCiAKIEl0IHJlcXVpcmVzIE5ldGZsaXgncyB2bWFmIGxp YnJhcnkgKGxpYnZtYWYpIGFzIGEgcHJlLXJlcXVpc2l0ZS4KIEFmdGVyIGluc3RhbGxpbmcgdGhl IGxpYnJhcnkgaXQgY2FuIGJlIGVuYWJsZWQgdXNpbmc6CiBAY29kZXsuL2NvbmZpZ3VyZSAtLWVu YWJsZS1saWJ2bWFmfS4KLUlmIG5vIG1vZGVsIHBhdGggaXMgc3BlY2lmaWVkIGl0IHVzZXMgdGhl IGRlZmF1bHQgbW9kZWw6IEBjb2Rle3ZtYWZfdjAuNi4xLnBrbH0uCiAKIFRoZSBmaWx0ZXIgaGFz IGZvbGxvd2luZyBvcHRpb25zOgogCiBAdGFibGUgQG9wdGlvbgotQGl0ZW0gbW9kZWxfcGF0aAot U2V0IHRoZSBtb2RlbCBwYXRoIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFNWTS4KLURlZmF1bHQg dmFsdWU6IEBjb2RleyIvdXNyL2xvY2FsL3NoYXJlL21vZGVsL3ZtYWZfdjAuNi4xLnBrbCJ9CitA aXRlbSBtb2RlbAorQSBgfGAgZGVsaW1pdGVkIGxpc3Qgb2Ygdm1hZiBtb2RlbHMuIEVhY2ggbW9k ZWwgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIG51bWJlciBvZiBwYXJhbWV0ZXJzLgorRGVmYXVs dCB2YWx1ZTogQGNvZGV7InZlcnNpb249dm1hZl92MC42LjEifQorCitAaXRlbSBmZWF0dXJlCitB IGB8YCBkZWxpbWl0ZWQgbGlzdCBvZiBmZWF0dXJlcy4gRWFjaCBmZWF0dXJlIGNhbiBiZSBjb25m aWd1cmVkIHdpdGggYSBudW1iZXIgb2YgcGFyYW1ldGVycy4KIAogQGl0ZW0gbG9nX3BhdGgKLVNl dCB0aGUgZmlsZSBwYXRoIHRvIGJlIHVzZWQgdG8gc3RvcmUgbG9ncy4KK1NldCB0aGUgZmlsZSBw YXRoIHRvIGJlIHVzZWQgdG8gc3RvcmUgbG9nIGZpbGVzLgogCiBAaXRlbSBsb2dfZm10Ci1TZXQg dGhlIGZvcm1hdCBvZiB0aGUgbG9nIGZpbGUgKGNzdiwganNvbiBvciB4bWwpLgotCi1AaXRlbSBl bmFibGVfdHJhbnNmb3JtCi1UaGlzIG9wdGlvbiBjYW4gZW5hYmxlL2Rpc2FibGUgdGhlIEBjb2Rl e3Njb3JlX3RyYW5zZm9ybX0gYXBwbGllZCB0byB0aGUgZmluYWwgcHJlZGljdGVkIFZNQUYgc2Nv cmUsCi1pZiB5b3UgaGF2ZSBzcGVjaWZpZWQgc2NvcmVfdHJhbnNmb3JtIG9wdGlvbiBpbiB0aGUg aW5wdXQgcGFyYW1ldGVyIGZpbGUgcGFzc2VkIHRvIEBjb2Rle3J1bl92bWFmX3RyYWluaW5nLnB5 fQotRGVmYXVsdCB2YWx1ZTogQGNvZGV7ZmFsc2V9Ci0KLUBpdGVtIHBob25lX21vZGVsCi1JbnZv a2VzIHRoZSBwaG9uZSBtb2RlbCB3aGljaCB3aWxsIGdlbmVyYXRlIFZNQUYgc2NvcmVzIGhpZ2hl ciB0aGFuIGluIHRoZQotcmVndWxhciBtb2RlbCwgd2hpY2ggaXMgbW9yZSBzdWl0YWJsZSBmb3Ig bGFwdG9wLCBUViwgZXRjLiB2aWV3aW5nIGNvbmRpdGlvbnMuCi1EZWZhdWx0IHZhbHVlOiBAY29k ZXtmYWxzZX0KLQotQGl0ZW0gcHNucgotRW5hYmxlcyBjb21wdXRpbmcgcHNuciBhbG9uZyB3aXRo IHZtYWYuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0KLQotQGl0ZW0gc3NpbQotRW5hYmxl cyBjb21wdXRpbmcgc3NpbSBhbG9uZyB3aXRoIHZtYWYuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtm YWxzZX0KLQotQGl0ZW0gbXNfc3NpbQotRW5hYmxlcyBjb21wdXRpbmcgbXNfc3NpbSBhbG9uZyB3 aXRoIHZtYWYuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0KLQotQGl0ZW0gcG9vbAotU2V0 IHRoZSBwb29sIG1ldGhvZCB0byBiZSB1c2VkIGZvciBjb21wdXRpbmcgdm1hZi4KLU9wdGlvbnMg YXJlIEBjb2Rle21pbn0sIEBjb2Rle2hhcm1vbmljX21lYW59IG9yIEBjb2Rle21lYW59IChkZWZh dWx0KS4KK1NldCB0aGUgZm9ybWF0IG9mIHRoZSBsb2cgZmlsZSAoeG1sLCBqc29uLCBjc3YsIG9y IHN1YikuCiAKIEBpdGVtIG5fdGhyZWFkcwotU2V0IG51bWJlciBvZiB0aHJlYWRzIHRvIGJlIHVz ZWQgd2hlbiBjb21wdXRpbmcgdm1hZi4KLURlZmF1bHQgdmFsdWU6IEBjb2RlezB9LCB3aGljaCBt YWtlcyB1c2Ugb2YgYWxsIGF2YWlsYWJsZSBsb2dpY2FsIHByb2Nlc3NvcnMuCitTZXQgbnVtYmVy IG9mIHRocmVhZHMgdG8gYmUgdXNlZCB3aGVuIGluaXRpYWxpemluZyBsaWJ2bWFmLgorRGVmYXVs dCB2YWx1ZTogQGNvZGV7MH0sIG5vIHRocmVhZHMuCiAKIEBpdGVtIG5fc3Vic2FtcGxlCi1TZXQg aW50ZXJ2YWwgZm9yIGZyYW1lIHN1YnNhbXBsaW5nIHVzZWQgd2hlbiBjb21wdXRpbmcgdm1hZi4K LURlZmF1bHQgdmFsdWU6IEBjb2RlezF9Ci0KLUBpdGVtIGVuYWJsZV9jb25mX2ludGVydmFsCi1F bmFibGVzIGNvbmZpZGVuY2UgaW50ZXJ2YWwuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXtmYWxzZX0K K1NldCBmcmFtZSBzdWJzYW1wbGluZyBpbnRlcnZhbCB0byBiZSB1c2VkLgogQGVuZCB0YWJsZQog CiBUaGlzIGZpbHRlciBhbHNvIHN1cHBvcnRzIHRoZSBAcmVme2ZyYW1lc3luY30gb3B0aW9ucy4K QEAgLTE0NzM1LDIzICsxNDcwNiwzMSBAQCBUaGlzIGZpbHRlciBhbHNvIHN1cHBvcnRzIHRoZSBA cmVme2ZyYW1lc3luY30gb3B0aW9ucy4KIEBzdWJzZWN0aW9uIEV4YW1wbGVzCiBAaXRlbWl6ZQog QGl0ZW0KLU9uIHRoZSBiZWxvdyBleGFtcGxlcyB0aGUgaW5wdXQgZmlsZSBAZmlsZXttYWluLm1w Z30gYmVpbmcgcHJvY2Vzc2VkIGlzCi1jb21wYXJlZCB3aXRoIHRoZSByZWZlcmVuY2UgZmlsZSBA ZmlsZXtyZWYubXBnfS4KK0luIHRoZSBleGFtcGxlcyBiZWxvdywgYSBkaXN0b3J0ZWQgdmlkZW8g QGZpbGV7ZGlzdG9ydGVkLm1wZ30gaXMKK2NvbXBhcmVkIHdpdGggYSByZWZlcmVuY2UgZmlsZSBA ZmlsZXtyZWZlcmVuY2UubXBnfS4KIAorQGl0ZW0KK0Jhc2ljIHVzYWdlOgorQGV4YW1wbGUKK2Zm bXBlZyAtaSBkaXN0b3J0ZWQubXBnIC1pIHJlZmVyZW5jZS5tcGcgLWxhdmZpIGxpYnZtYWY9bG9n X3BhdGg9b3V0cHV0LnhtbCAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorRXhhbXBs ZSB3aXRoIG11bHRpcGxlIG1vZGVsczoKIEBleGFtcGxlCi1mZm1wZWcgLWkgbWFpbi5tcGcgLWkg cmVmLm1wZyAtbGF2ZmkgbGlidm1hZiAtZiBudWxsIC0KK2ZmbXBlZyAtaSBkaXN0b3J0ZWQubXBn IC1pIHJlZmVyZW5jZS5tcGcgLWxhdmZpIGxpYnZtYWY9J21vZGVsPXZlcnNpb249dm1hZl92MC42 LjFcXDpuYW1lPXZtYWZ8dmVyc2lvbj12bWFmX3YwLjYuMW5lZ1xcOm5hbWU9dm1hZl9uZWc6bG9n X3BhdGg9b3V0cHV0LnhtbCcgLWYgbnVsbCAtCiBAZW5kIGV4YW1wbGUKIAogQGl0ZW0KLUV4YW1w bGUgd2l0aCBvcHRpb25zOgorRXhhbXBsZSB3aXRoIG11bHRpcGxlIGFkZHRpb25hbCBmZWF0dXJl czoKIEBleGFtcGxlCi1mZm1wZWcgLWkgbWFpbi5tcGcgLWkgcmVmLm1wZyAtbGF2ZmkgbGlidm1h Zj0icHNucj0xOmxvZ19mbXQ9anNvbiIgLWYgbnVsbCAtCitmZm1wZWcgLWkgZGlzdG9ydGVkLm1w ZyAtaSByZWZlcmVuY2UubXBnIC1sYXZmaSBsaWJ2bWFmPSdmZWF0dXJlPW5hbWU9cHNucnxuYW1l PWNpZWRlOmxvZ19wYXRoPW91dHB1dC54bWwnIC1mIG51bGwgLQogQGVuZCBleGFtcGxlCiAKIEBp dGVtCiBFeGFtcGxlIHdpdGggb3B0aW9ucyBhbmQgZGlmZmVyZW50IGNvbnRhaW5lcnM6CiBAZXhh bXBsZQotZmZtcGVnIC1pIG1haW4ubXBnIC1pIHJlZi5ta3YgLWxhdmZpICJbMDp2XXNldHRiPUFW VEIsc2V0cHRzPVBUUy1TVEFSVFBUU1ttYWluXTtbMTp2XXNldHRiPUFWVEIsc2V0cHRzPVBUUy1T VEFSVFBUU1tyZWZdO1ttYWluXVtyZWZdbGlidm1hZj1wc25yPTE6bG9nX2ZtdD1qc29uIiAtZiBu dWxsIC0KK2ZmbXBlZyAtaSBkaXN0b3J0ZWQubXBnIC1pIHJlZmVyZW5jZS5ta3YgLWxhdmZpICJb MDp2XXNldHRiPUFWVEIsc2V0cHRzPVBUUy1TVEFSVFBUU1ttYWluXTtbMTp2XXNldHRiPUFWVEIs c2V0cHRzPVBUUy1TVEFSVFBUU1tyZWZdO1ttYWluXVtyZWZdbGlidm1hZj1sb2dfZm10PWpzb246 bG9nX3BhdGg9b3V0cHV0Lmpzb24iIC1mIG51bGwgLQogQGVuZCBleGFtcGxlCiBAZW5kIGl0ZW1p emUKIApkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmVyc2lvbi5oIGIvbGliYXZmaWx0ZXIvdmVy c2lvbi5oCmluZGV4IDFhOTg0OWVmODIuLmZhOGIyZGMzMjIgMTAwNjQ0Ci0tLSBhL2xpYmF2Zmls dGVyL3ZlcnNpb24uaAorKysgYi9saWJhdmZpbHRlci92ZXJzaW9uLmgKQEAgLTMxLDcgKzMxLDcg QEAKIAogI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01BSk9SICAgOAogI2RlZmluZSBMSUJB VkZJTFRFUl9WRVJTSU9OX01JTk9SICAyNQotI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01J Q1JPIDEwMAorI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01JQ1JPIDEwMQogCiAKICNkZWZp bmUgTElCQVZGSUxURVJfVkVSU0lPTl9JTlQgQVZfVkVSU0lPTl9JTlQoTElCQVZGSUxURVJfVkVS U0lPTl9NQUpPUiwgXApkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfbGlidm1hZi5jIGIvbGli YXZmaWx0ZXIvdmZfbGlidm1hZi5jCmluZGV4IDVkNDkyMTI2ZWIuLmI1OWJiNzg3NTAgMTAwNjQ0 Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2xpYnZtYWYuYworKysgYi9saWJhdmZpbHRlci92Zl9saWJ2 bWFmLmMKQEAgLTI0LDggKzI0LDggQEAKICAqIENhbGN1bGF0ZSB0aGUgVk1BRiBiZXR3ZWVuIHR3 byBpbnB1dCB2aWRlb3MuCiAgKi8KIAotI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlIDxs aWJ2bWFmLmg+CisKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKICNpbmNsdWRlICJs aWJhdnV0aWwvb3B0LmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKQEAgLTM5LDIz ICszOSw5IEBACiB0eXBlZGVmIHN0cnVjdCBMSUJWTUFGQ29udGV4dCB7CiAgICAgY29uc3QgQVZD bGFzcyAqY2xhc3M7CiAgICAgRkZGcmFtZVN5bmMgZnM7Ci0gICAgY29uc3QgQVZQaXhGbXREZXNj cmlwdG9yICpkZXNjOwotICAgIGludCB3aWR0aDsKLSAgICBpbnQgaGVpZ2h0OwotICAgIGRvdWJs ZSB2bWFmX3Njb3JlOwotICAgIGludCB2bWFmX3RocmVhZF9jcmVhdGVkOwotICAgIHB0aHJlYWRf dCB2bWFmX3RocmVhZDsKLSAgICBwdGhyZWFkX211dGV4X3QgbG9jazsKLSAgICBwdGhyZWFkX2Nv bmRfdCBjb25kOwotICAgIGludCBlb2Y7Ci0gICAgQVZGcmFtZSAqZ21haW47Ci0gICAgQVZGcmFt ZSAqZ3JlZjsKLSAgICBpbnQgZnJhbWVfc2V0OwogICAgIGNoYXIgKm1vZGVsX3BhdGg7CiAgICAg Y2hhciAqbG9nX3BhdGg7CiAgICAgY2hhciAqbG9nX2ZtdDsKLSAgICBpbnQgZGlzYWJsZV9jbGlw OwotICAgIGludCBkaXNhYmxlX2F2eDsKICAgICBpbnQgZW5hYmxlX3RyYW5zZm9ybTsKICAgICBp bnQgcGhvbmVfbW9kZWw7CiAgICAgaW50IHBzbnI7CkBAIC02NSwxODQgKzUxLDQ4MiBAQCB0eXBl ZGVmIHN0cnVjdCBMSUJWTUFGQ29udGV4dCB7CiAgICAgaW50IG5fdGhyZWFkczsKICAgICBpbnQg bl9zdWJzYW1wbGU7CiAgICAgaW50IGVuYWJsZV9jb25mX2ludGVydmFsOwotICAgIGludCBlcnJv cjsKKyAgICBjaGFyICptb2RlbF9jZmc7CisgICAgY2hhciAqZmVhdHVyZV9jZmc7CisgICAgVm1h ZkNvbnRleHQgKnZtYWY7CisgICAgVm1hZk1vZGVsICoqbW9kZWw7CisgICAgdW5zaWduZWQgbW9k ZWxfY250OworICAgIHVuc2lnbmVkIGZyYW1lX2NudDsKKyAgICB1bnNpZ25lZCBicGM7CiB9IExJ QlZNQUZDb250ZXh0OwogCiAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihMSUJWTUFGQ29udGV4 dCwgeCkKICNkZWZpbmUgRkxBR1MgQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNfEFWX09QVF9G TEFHX1ZJREVPX1BBUkFNCiAKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBsaWJ2bWFmX29wdGlvbnNb XSA9IHsKLSAgICB7Im1vZGVsX3BhdGgiLCAgIlNldCB0aGUgbW9kZWwgdG8gYmUgdXNlZCBmb3Ig Y29tcHV0aW5nIHZtYWYuIiwgICAgICAgICAgICAgICAgICAgICBPRkZTRVQobW9kZWxfcGF0aCks IEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9Ii91c3IvbG9jYWwvc2hhcmUvbW9kZWwvdm1hZl92 MC42LjEucGtsIn0sIDAsIDEsIEZMQUdTfSwKLSAgICB7ImxvZ19wYXRoIiwgICJTZXQgdGhlIGZp bGUgcGF0aCB0byBiZSB1c2VkIHRvIHN0b3JlIGxvZ3MuIiwgICAgICAgICAgICAgICAgICAgICAg ICBPRkZTRVQobG9nX3BhdGgpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAx LCBGTEFHU30sCi0gICAgeyJsb2dfZm10IiwgICJTZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIChj c3YsIGpzb24gb3IgeG1sKS4iLCAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGxvZ19mbXQp LCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU30sCi0gICAgeyJl bmFibGVfdHJhbnNmb3JtIiwgICJFbmFibGVzIHRyYW5zZm9ybSBmb3IgY29tcHV0aW5nIHZtYWYu IiwgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGVuYWJsZV90cmFuc2Zvcm0pLCBBVl9PUFRf VFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1N9LAotICAgIHsicGhvbmVfbW9kZWwiLCAg Ikludm9rZXMgdGhlIHBob25lIG1vZGVsIHRoYXQgd2lsbCBnZW5lcmF0ZSBoaWdoZXIgVk1BRiBz Y29yZXMuIiwgIE9GRlNFVChwaG9uZV9tb2RlbCksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9 LCAwLCAxLCBGTEFHU30sCi0gICAgeyJwc25yIiwgICJFbmFibGVzIGNvbXB1dGluZyBwc25yIGFs b25nIHdpdGggdm1hZi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKHBz bnIpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1N9LAotICAgIHsic3Np bSIsICAiRW5hYmxlcyBjb21wdXRpbmcgc3NpbSBhbG9uZyB3aXRoIHZtYWYuIiwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChzc2ltKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5p NjQ9MH0sIDAsIDEsIEZMQUdTfSwKLSAgICB7Im1zX3NzaW0iLCAgIkVuYWJsZXMgY29tcHV0aW5n IG1zLXNzaW0gYWxvbmcgd2l0aCB2bWFmLiIsICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZT RVQobXNfc3NpbSksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCisg ICAgeyJtb2RlbF9wYXRoIiwgICJ1c2UgbW9kZWw9J3BhdGg9Li4uJy4iLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKG1vZGVsX3BhdGgpLCBBVl9PUFRf VFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU3xBVl9PUFRfRkxBR19ERVBSRUNB VEVEfSwKKyAgICB7ImxvZ19wYXRoIiwgICJTZXQgdGhlIGZpbGUgcGF0aCB0byBiZSB1c2VkIHRv IHdyaXRlIGxvZy4iLCAgICAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQobG9nX3BhdGgpLCBB Vl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU30sCisgICAgeyJsb2df Zm10IiwgICJTZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIChjc3YsIGpzb24sIHhtbCwgb3Igc3Vi KS4iLCAgICAgICAgICAgICAgICAgT0ZGU0VUKGxvZ19mbXQpLCBBVl9PUFRfVFlQRV9TVFJJTkcs IHsuc3RyPSJ4bWwifSwgMCwgMSwgRkxBR1N9LAorICAgIHsiZW5hYmxlX3RyYW5zZm9ybSIsICAi dXNlIG1vZGVsPSdlbmFibGVfdHJhbnNmb3JtPXRydWUnLiIsICAgICAgICAgICAgICAgICAgICAg ICAgIE9GRlNFVChlbmFibGVfdHJhbnNmb3JtKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0s IDAsIDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAorICAgIHsicGhvbmVfbW9kZWwi LCAgInVzZSBtb2RlbD0nZW5hYmxlX3RyYW5zZm9ybT10cnVlJy4iLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9GRlNFVChwaG9uZV9tb2RlbCksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0 PTB9LCAwLCAxLCBGTEFHU3xBVl9PUFRfRkxBR19ERVBSRUNBVEVEfSwKKyAgICB7InBzbnIiLCAg InVzZSBmZWF0dXJlPSduYW1lPXBzbnInLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPRkZTRVQocHNuciksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9 LCAwLCAxLCBGTEFHU3xBVl9PUFRfRkxBR19ERVBSRUNBVEVEfSwKKyAgICB7InNzaW0iLCAgInVz ZSBmZWF0dXJlPSduYW1lPXNzaW0nLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPRkZTRVQoc3NpbSksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAw LCAxLCBGTEFHU3xBVl9PUFRfRkxBR19ERVBSRUNBVEVEfSwKKyAgICB7Im1zX3NzaW0iLCAgInVz ZSBmZWF0dXJlPSduYW1lPW1zX3NzaW0nLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPRkZTRVQobXNfc3NpbSksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAw LCAxLCBGTEFHU3xBVl9PUFRfRkxBR19ERVBSRUNBVEVEfSwKICAgICB7InBvb2wiLCAgIlNldCB0 aGUgcG9vbCBtZXRob2QgdG8gYmUgdXNlZCBmb3IgY29tcHV0aW5nIHZtYWYuIiwgICAgICAgICAg ICAgICAgICAgICBPRkZTRVQocG9vbCksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0s IDAsIDEsIEZMQUdTfSwKICAgICB7Im5fdGhyZWFkcyIsICJTZXQgbnVtYmVyIG9mIHRocmVhZHMg dG8gYmUgdXNlZCB3aGVuIGNvbXB1dGluZyB2bWFmLiIsICAgICAgICAgICAgICBPRkZTRVQobl90 aHJlYWRzKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND0wfSwgMCwgVUlOVF9NQVgsIEZMQUdTfSwK ICAgICB7Im5fc3Vic2FtcGxlIiwgIlNldCBpbnRlcnZhbCBmb3IgZnJhbWUgc3Vic2FtcGxpbmcg dXNlZCB3aGVuIGNvbXB1dGluZyB2bWFmLiIsICAgICBPRkZTRVQobl9zdWJzYW1wbGUpLCBBVl9P UFRfVFlQRV9JTlQsIHsuaTY0PTF9LCAxLCBVSU5UX01BWCwgRkxBR1N9LAotICAgIHsiZW5hYmxl X2NvbmZfaW50ZXJ2YWwiLCAgIkVuYWJsZXMgY29uZmlkZW5jZSBpbnRlcnZhbC4iLCAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9GRlNFVChlbmFibGVfY29uZl9pbnRlcnZhbCksIEFWX09QVF9U WVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCisgICAgeyJlbmFibGVfY29uZl9pbnRl cnZhbCIsICAiRW5hYmxlcyBjb25maWRlbmNlIGludGVydmFsLiIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgT0ZGU0VUKGVuYWJsZV9jb25mX2ludGVydmFsKSwgQVZfT1BUX1RZUEVfQk9PTCwg ey5pNjQ9MH0sIDAsIDEsIEZMQUdTfEFWX09QVF9GTEFHX0RFUFJFQ0FURUR9LAorICAgIHsibW9k ZWwiLCAgIlNldCB0aGUgbW9kZWwgdG8gYmUgdXNlZCBmb3IgY29tcHV0aW5nIHZtYWYuIiwgICAg ICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChtb2RlbF9jZmcpLCBBVl9PUFRfVFlQRV9TVFJJ TkcsIHsuc3RyPSJ2ZXJzaW9uPXZtYWZfdjAuNi4xIn0sIDAsIDEsIEZMQUdTfSwKKyAgICB7ImZl YXR1cmUiLCAgIlNldCB0aGUgZmVhdHVyZSB0byBiZSB1c2VkIGZvciBjb21wdXRpbmcgdm1hZi4i LCAgICAgICAgICAgICAgICAgICAgICBPRkZTRVQoZmVhdHVyZV9jZmcpLCBBVl9PUFRfVFlQRV9T VFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU30sCiAgICAgeyBOVUxMIH0KIH07CiAKIEZS QU1FU1lOQ19ERUZJTkVfQ0xBU1MobGlidm1hZiwgTElCVk1BRkNvbnRleHQsIGZzKTsKIAotI2Rl ZmluZSByZWFkX2ZyYW1lX2ZuKHR5cGUsIGJpdHMpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIGludCByZWFkX2ZyYW1lXyMjYml0cyMj Yml0KGZsb2F0ICpyZWZfZGF0YSwgZmxvYXQgKm1haW5fZGF0YSwgICAgICAgIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgKnRlbXBfZGF0YSwgaW50IHN0cmlk ZSwgdm9pZCAqY3R4KSAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTElCVk1BRkNv bnRleHQgKnMgPSAoTElCVk1BRkNvbnRleHQgKikgY3R4OyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICBpbnQgcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFwKLSAgICBwdGhyZWFk X211dGV4X2xvY2soJnMtPmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgIFwKLSAgICB3aGlsZSAoIXMtPmZyYW1lX3NldCAmJiAhcy0+ZW9m KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBw dGhyZWFkX2NvbmRfd2FpdCgmcy0+Y29uZCwgJnMtPmxvY2spOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBcCi0gICAgaWYg KHMtPmZyYW1lX3NldCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaW50IHJlZl9zdHJpZGUgPSBzLT5ncmVmLT5saW5l c2l6ZVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpbnQg bWFpbl9zdHJpZGUgPSBzLT5nbWFpbi0+bGluZXNpemVbMF07ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgY29uc3QgdHlwZSAqcmVmX3B0ciA9IChj b25zdCB0eXBlICopIHMtPmdyZWYtPmRhdGFbMF07ICAgICAgICAgICAgICAgICAgXAotICAgICAg ICBjb25zdCB0eXBlICptYWluX3B0ciA9IChjb25zdCB0eXBlICopIHMtPmdtYWluLT5kYXRhWzBd OyAgICAgICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgZmxvYXQgKnB0ciA9IHJlZl9k YXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICBmbG9hdCBmYWN0b3IgPSAxLmYgLyAoMSA8PCAoYml0cyAtIDgpKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgaW50IGggPSBzLT5o ZWlnaHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICBpbnQgdyA9IHMtPndpZHRoOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgaW50IGks ajsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICBcCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgIGZvciAoIGogPSAwOyBqIDwgdzsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHB0cltqXSA9IHJlZl9wdHJbal0gKiBm YWN0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgIHJlZl9wdHIgKz0gcmVmX3N0cmlkZSAvIHNpemVvZigq cmVmX3B0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcHRyICs9 IHN0cmlkZSAvIHNpemVvZigqcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAgICAgICBwdHIg PSBtYWluX2RhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgZm9yIChqID0gMDsgaiA8IHc7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcHRyW2pdID0gbWFpbl9wdHJbal0g KiBmYWN0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgbWFpbl9wdHIgKz0gbWFpbl9zdHJpZGUgLyBzaXpl b2YoKm1haW5fcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwdHIg Kz0gc3RyaWRlIC8gc2l6ZW9mKCpwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgXAotICAgIHJldCA9ICFzLT5mcmFtZV9zZXQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotICAgIGF2X2ZyYW1l X3VucmVmKHMtPmdyZWYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgYXZfZnJhbWVfdW5yZWYocy0+Z21haW4pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzLT5mcmFtZV9zZXQg PSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgIFwKLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzLT5jb25kKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZzLT5sb2NrKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgXAotICAgIGlmIChyZXQpIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy biAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFwKLSAgICByZXR1cm4g MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorc3RhdGljIGVudW0gVm1hZlBpeGVsRm9ybWF0IHBpeF9mbXRfbWFwKGVu dW0gQVZQaXhlbEZvcm1hdCBhdl9waXhfZm10KQoreworICAgIHN3aXRjaCAoYXZfcGl4X2ZtdCkg eworICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjBQOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0 MjBQMTBMRToKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIwUDEyTEU6CisgICAgY2FzZSBBVl9Q SVhfRk1UX1lVVjQyMFAxNkxFOgorICAgICAgICByZXR1cm4gVk1BRl9QSVhfRk1UX1lVVjQyMFA7 CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlA6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQy MlAxMExFOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjJQMTJMRToKKyAgICBjYXNlIEFWX1BJ WF9GTVRfWVVWNDIyUDE2TEU6CisgICAgICAgIHJldHVybiBWTUFGX1BJWF9GTVRfWVVWNDIyUDsK KyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDQ0UDoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDQ0 UDEwTEU6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFAxMkxFOgorICAgIGNhc2UgQVZfUElY X0ZNVF9ZVVY0NDRQMTZMRToKKyAgICAgICAgcmV0dXJuIFZNQUZfUElYX0ZNVF9ZVVY0NDRQOwor ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBWTUFGX1BJWF9GTVRfVU5LTk9XTjsKKyAgICB9 CiB9CiAKLXJlYWRfZnJhbWVfZm4odWludDhfdCwgOCk7Ci1yZWFkX2ZyYW1lX2ZuKHVpbnQxNl90 LCAxMCk7CitzdGF0aWMgaW50IGNvcHlfcGljdHVyZV9kYXRhKEFWRnJhbWUgKnNyYywgVm1hZlBp Y3R1cmUgKmRzdCwgdW5zaWduZWQgYnBjKQoreworICAgIGludCBlcnIgPSB2bWFmX3BpY3R1cmVf YWxsb2MoZHN0LCBwaXhfZm10X21hcChzcmMtPmZvcm1hdCksIGJwYywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNyYy0+d2lkdGgsIHNyYy0+aGVpZ2h0KTsKKyAgICBpZiAoZXJy KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgZm9yICh1bnNpZ25lZCBp ID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICB1aW50OF90ICpzcmNfZGF0YSA9IHNyYy0+ZGF0 YVtpXTsKKyAgICAgICAgdWludDhfdCAqZHN0X2RhdGEgPSBkc3QtPmRhdGFbaV07CisgICAgICAg IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBkc3QtPmhbaV07IGorKykgeworICAgICAgICAgICAg bWVtY3B5KGRzdF9kYXRhLCBzcmNfZGF0YSwgc2l6ZW9mKCpkc3RfZGF0YSkgKiBkc3QtPndbaV0p OworICAgICAgICAgICAgc3JjX2RhdGEgKz0gc3JjLT5saW5lc2l6ZVtpXTsKKyAgICAgICAgICAg IGRzdF9kYXRhICs9IGRzdC0+c3RyaWRlW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0 dXJuIDA7Cit9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVfdm1hZl9zY29yZShMSUJWTUFGQ29udGV4 dCAqcykKK3N0YXRpYyBpbnQgZG9fdm1hZihGRkZyYW1lU3luYyAqZnMpCiB7Ci0gICAgaW50ICgq cmVhZF9mcmFtZSkoZmxvYXQgKnJlZl9kYXRhLCBmbG9hdCAqbWFpbl9kYXRhLCBmbG9hdCAqdGVt cF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJpZGUsIHZvaWQgKmN0eCk7Ci0g ICAgY2hhciAqZm9ybWF0OworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gZnMtPnBhcmVudDsK KyAgICBMSUJWTUFGQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBWbWFmUGljdHVyZSBwaWNf cmVmLCBwaWNfZGlzdDsKKyAgICBBVkZyYW1lICpyZWYsICpkaXN0OworICAgIGludCBlcnIgPSAw OwogCi0gICAgaWYgKHMtPmRlc2MtPmNvbXBbMF0uZGVwdGggPD0gOCkgewotICAgICAgICByZWFk X2ZyYW1lID0gcmVhZF9mcmFtZV84Yml0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlYWRfZnJh bWUgPSByZWFkX2ZyYW1lXzEwYml0OworICAgIGludCByZXQgPSBmZl9mcmFtZXN5bmNfZHVhbGlu cHV0X2dldChmcywgJmRpc3QsICZyZWYpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1 cm4gcmV0OworICAgIGlmIChjdHgtPmlzX2Rpc2FibGVkIHx8ICFyZWYpCisgICAgICAgIHJldHVy biBmZl9maWx0ZXJfZnJhbWUoY3R4LT5vdXRwdXRzWzBdLCBkaXN0KTsKKworICAgIGVyciA9IGNv cHlfcGljdHVyZV9kYXRhKHJlZiwgJnBpY19yZWYsIHMtPmJwYyk7CisgICAgaWYgKGVycikgewor ICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAicHJvYmxlbSBkdXJpbmcgdm1hZl9waWN0 dXJlX2FsbG9jLlxuIik7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQor CisgICAgZXJyID0gY29weV9waWN0dXJlX2RhdGEoZGlzdCwgJnBpY19kaXN0LCBzLT5icGMpOwor ICAgIGlmIChlcnIpIHsKKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgInByb2JsZW0g ZHVyaW5nIHZtYWZfcGljdHVyZV9hbGxvYy5cbiIpOworICAgICAgICB2bWFmX3BpY3R1cmVfdW5y ZWYoJnBpY19yZWYpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgIH0KIAot ICAgIGZvcm1hdCA9IChjaGFyICopIHMtPmRlc2MtPm5hbWU7CisgICAgZXJyID0gdm1hZl9yZWFk X3BpY3R1cmVzKHMtPnZtYWYsICZwaWNfcmVmLCAmcGljX2Rpc3QsIHMtPmZyYW1lX2NudCsrKTsK KyAgICBpZiAoZXJyKSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJwcm9ibGVt IGR1cmluZyB2bWFmX3JlYWRfcGljdHVyZXMuXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsKKyAgICB9CiAKLSAgICBzLT5lcnJvciA9IGNvbXB1dGVfdm1hZigmcy0+dm1hZl9z Y29yZSwgZm9ybWF0LCBzLT53aWR0aCwgcy0+aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlYWRfZnJhbWUsIHMsIHMtPm1vZGVsX3BhdGgsIHMtPmxvZ19wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmxvZ19mbXQsIDAsIDAsIHMtPmVuYWJsZV90cmFuc2Zv cm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGhvbmVfbW9kZWwsIHMtPnBzbnIs IHMtPnNzaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXNfc3NpbSwgcy0+cG9v bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5uX3RocmVhZHMsIHMtPm5fc3Vic2Ft cGxlLCBzLT5lbmFibGVfY29uZl9pbnRlcnZhbCk7CisgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFt ZShjdHgtPm91dHB1dHNbMF0sIGRpc3QpOwogfQogCi1zdGF0aWMgdm9pZCAqY2FsbF92bWFmKHZv aWQgKmN0eCkKK3N0YXRpYyBBVkRpY3Rpb25hcnkgKipkZWxpbWl0ZWRfZGljdF9wYXJzZShjaGFy ICpzdHIsIHVuc2lnbmVkICpjbnQpCiB7Ci0gICAgTElCVk1BRkNvbnRleHQgKnMgPSAoTElCVk1B RkNvbnRleHQgKikgY3R4OwotICAgIGNvbXB1dGVfdm1hZl9zY29yZShzKTsKLSAgICBpZiAoIXMt PmVycm9yKSB7Ci0gICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiVk1BRiBzY29yZTog JWZcbiIscy0+dm1hZl9zY29yZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcHRocmVhZF9tdXRl eF9sb2NrKCZzLT5sb2NrKTsKLSAgICAgICAgcHRocmVhZF9jb25kX3NpZ25hbCgmcy0+Y29uZCk7 Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5sb2NrKTsKKyAgICBBVkRpY3Rpb25h cnkgKipkaWN0ID0gTlVMTDsKKyAgICBjaGFyICpzdHJfY29weSA9IE5VTEw7CisgICAgY2hhciAq c2F2ZXB0ciA9IE5VTEw7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBpZiAoIXN0cikKKyAgICAg ICAgcmV0dXJuIE5VTEw7CisKKyAgICAqY250ID0gMTsKKyAgICBmb3IgKGNoYXIgKnAgPSBzdHI7 ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICd8JykKKyAgICAgICAgICAgICgqY250KSsr OworICAgIH0KKworICAgIGRpY3QgPSBhdl9jYWxsb2MoKmNudCwgc2l6ZW9mKCpkaWN0KSk7Cisg ICAgaWYgKCFkaWN0KQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBzdHJfY29weSA9IGF2X3N0 cmR1cChzdHIpOworICAgIGlmICghc3RyX2NvcHkpCisgICAgICAgIGdvdG8gZmFpbDsKKworICAg IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAqY250OyBpKyspIHsKKyAgICAgICAgY2hhciAqcyA9 IGF2X3N0cnRvayhpID09IDAgPyBzdHJfY29weSA6IE5VTEwsICJ8IiwgJnNhdmVwdHIpOworICAg ICAgICBlcnIgPSBhdl9kaWN0X3BhcnNlX3N0cmluZygmZGljdFtpXSwgcywgIj0iLCAiOiIsIDAp OworICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAg IGF2X2ZyZWUoc3RyX2NvcHkpOworICAgIHJldHVybiBkaWN0OworCitmYWlsOgorICAgIGlmIChk aWN0KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAqY250OyBpKyspIHsKKyAg ICAgICAgICAgIGlmIChkaWN0W2ldKQorICAgICAgICAgICAgICAgIGF2X2RpY3RfZnJlZSgmZGlj dFtpXSk7CisgICAgICAgIH0KKyAgICAgICAgYXZfZnJlZShkaWN0KTsKICAgICB9Ci0gICAgcHRo cmVhZF9leGl0KE5VTEwpOworCisgICAgYXZfZnJlZShzdHJfY29weSk7CisgICAgKmNudCA9IDA7 CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgZG9fdm1hZihGRkZyYW1lU3luYyAq ZnMpCitzdGF0aWMgaW50IHBhcnNlX2ZlYXR1cmVzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogewot ICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gZnMtPnBhcmVudDsKICAgICBMSUJWTUFGQ29udGV4 dCAqcyA9IGN0eC0+cHJpdjsKLSAgICBBVkZyYW1lICptYXN0ZXIsICpyZWY7Ci0gICAgaW50IHJl dDsKKyAgICBBVkRpY3Rpb25hcnkgKipkaWN0ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBkaWN0X2Nu dDsKKyAgICBpbnQgZXJyID0gMDsKIAotICAgIHJldCA9IGZmX2ZyYW1lc3luY19kdWFsaW5wdXRf Z2V0KGZzLCAmbWFzdGVyLCAmcmVmKTsKLSAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgcmV0dXJu IHJldDsKLSAgICBpZiAoIXJlZikKLSAgICAgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShjdHgt Pm91dHB1dHNbMF0sIG1hc3Rlcik7CisgICAgaWYgKCFzLT5mZWF0dXJlX2NmZykKKyAgICAgICAg cmV0dXJuIDA7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnMtPmxvY2spOworICAgIGRpY3Qg PSBkZWxpbWl0ZWRfZGljdF9wYXJzZShzLT5mZWF0dXJlX2NmZywgJmRpY3RfY250KTsKKyAgICBp ZiAoIWRpY3QpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAg ICAgICAgImNvdWxkIG5vdCBwYXJzZSBmZWF0dXJlIGNvbmZpZzogJXNcbiIsIHMtPmZlYXR1cmVf Y2ZnKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CiAKLSAgICB3aGls ZSAocy0+ZnJhbWVfc2V0ICYmICFzLT5lcnJvcikgewotICAgICAgICBwdGhyZWFkX2NvbmRfd2Fp dCgmcy0+Y29uZCwgJnMtPmxvY2spOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWN0 X2NudDsgaSsrKSB7CisgICAgICAgIGNoYXIgKmZlYXR1cmVfbmFtZSA9IE5VTEw7CisgICAgICAg IFZtYWZGZWF0dXJlRGljdGlvbmFyeSAqZmVhdHVyZV9vcHRzX2RpY3QgPSBOVUxMOworICAgICAg ICBBVkRpY3Rpb25hcnlFbnRyeSAqZSA9IE5VTEw7CisKKyAgICAgICAgd2hpbGUgKGUgPSBhdl9k aWN0X2dldChkaWN0W2ldLCAiIiwgZSwgQVZfRElDVF9JR05PUkVfU1VGRklYKSkgeworICAgICAg ICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAg ZmVhdHVyZV9uYW1lID0gZS0+dmFsdWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIGVyciA9IHZtYWZfZmVhdHVyZV9kaWN0aW9uYXJ5X3Nl dCgmZmVhdHVyZV9vcHRzX2RpY3QsIGUtPmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlLT52YWx1ZSk7CisgICAgICAgICAgICBpZiAoZXJyKSB7Cisg ICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAg ICAgICAgICAiY291bGQgbm90IHNldCBmZWF0dXJlIG9wdGlvbjogJXMuJXM9JXNcbiIsCisgICAg ICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfbmFtZSwgZS0+a2V5LCBlLT52YWx1ZSk7CisgICAg ICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg ICAgZXJyID0gdm1hZl91c2VfZmVhdHVyZShzLT52bWFmLCBmZWF0dXJlX25hbWUsIGZlYXR1cmVf b3B0c19kaWN0KTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJwcm9ibGVtIGR1cmluZyB2bWFmX3Vz ZV9mZWF0dXJlOiAlc1xuIiwgZmVhdHVyZV9uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsK KyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzLT5lcnJvcikgeworZXhpdDoKKyAgICBmb3Ig KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdF9jbnQ7IGkrKykgeworICAgICAgICBpZiAoZGljdFtp XSkKKyAgICAgICAgICAgIGF2X2RpY3RfZnJlZSgmZGljdFtpXSk7CisgICAgfQorICAgIGF2X2Zy ZWUoZGljdCk7CisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwYXJzZV9tb2RlbHMo QVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgtPnBy aXY7CisgICAgQVZEaWN0aW9uYXJ5ICoqZGljdDsKKyAgICB1bnNpZ25lZCBkaWN0X2NudDsKKyAg ICBpbnQgZXJyID0gMDsKKworICAgIGlmICghcy0+bW9kZWxfY2ZnKSByZXR1cm4gMDsKKworICAg IGRpY3RfY250ID0gMDsKKyAgICBkaWN0ID0gZGVsaW1pdGVkX2RpY3RfcGFyc2Uocy0+bW9kZWxf Y2ZnLCAmZGljdF9jbnQpOworICAgIGlmICghZGljdCkgewogICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfRVJST1IsCi0gICAgICAgICAgICAgICAibGlidm1hZiBlbmNvdW50ZXJlZCBhbiBlcnJv ciwgY2hlY2sgbG9nIGZvciBkZXRhaWxzXG4iKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxv Y2soJnMtPmxvY2spOworICAgICAgICAgICAgICAgImNvdWxkIG5vdCBwYXJzZSBtb2RlbCBjb25m aWc6ICVzXG4iLCBzLT5tb2RlbF9jZmcpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OwogICAgIH0KIAotICAgIGF2X2ZyYW1lX3JlZihzLT5ncmVmLCByZWYpOwotICAgIGF2X2ZyYW1l X3JlZihzLT5nbWFpbiwgbWFzdGVyKTsKKyAgICBzLT5tb2RlbF9jbnQgPSBkaWN0X2NudDsKKyAg ICBzLT5tb2RlbCA9IGF2X2NhbGxvYyhzLT5tb2RlbF9jbnQsIHNpemVvZigqcy0+bW9kZWwpKTsK KyAgICBpZiAoIXMtPm1vZGVsKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3RfY250OyBpKyspIHsKKyAgICAgICAgVm1h Zk1vZGVsQ29uZmlnIG1vZGVsX2NmZyA9IHsgMCB9OworICAgICAgICBBVkRpY3Rpb25hcnlFbnRy eSAqZSA9IE5VTEw7CisgICAgICAgIGNoYXIgKnZlcnNpb24gPSBOVUxMOworICAgICAgICBjaGFy ICAqcGF0aCA9IE5VTEw7CisKKyAgICAgICAgd2hpbGUgKGUgPSBhdl9kaWN0X2dldChkaWN0W2ld LCAiIiwgZSwgQVZfRElDVF9JR05PUkVfU1VGRklYKSkgeworICAgICAgICAgICAgaWYgKGF2X3N0 cmlzdHIoZS0+a2V5LCAiZGlzYWJsZV9jbGlwIikpIHsKKyAgICAgICAgICAgICAgICBtb2RlbF9j ZmcuZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwgInRydWUiKSA/CisgICAgICAgICAgICAg ICAgICAgIFZNQUZfTU9ERUxfRkxBR19ESVNBQkxFX0NMSVAgOiAwOworICAgICAgICAgICAgICAg IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXZfc3RyaXN0cihl LT5rZXksICJlbmFibGVfdHJhbnNmb3JtIikpIHsKKyAgICAgICAgICAgICAgICBtb2RlbF9jZmcu ZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwgInRydWUiKSA/CisgICAgICAgICAgICAgICAg ICAgIFZNQUZfTU9ERUxfRkxBR19FTkFCTEVfVFJBTlNGT1JNIDogMDsKKyAgICAgICAgICAgICAg ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF2X3N0cmlzdHIo ZS0+a2V5LCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgbW9kZWxfY2ZnLm5hbWUgPSBlLT52 YWx1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAidmVyc2lvbiIpKSB7CisgICAgICAgICAgICAg ICAgdmVyc2lvbiA9IGUtPnZhbHVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXZfc3RyaXN0cihlLT5rZXksICJwYXRoIikpIHsK KyAgICAgICAgICAgICAgICBwYXRoID0gZS0+dmFsdWU7CisgICAgICAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodmVyc2lvbikgewor ICAgICAgICAgICAgZXJyID0gdm1hZl9tb2RlbF9sb2FkKCZzLT5tb2RlbFtpXSwgJm1vZGVsX2Nm ZywgdmVyc2lvbik7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90 IGxvYWQgbGlidm1hZiBtb2RlbCB3aXRoIHZlcnNpb246ICVzXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICB2ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocGF0aCAmJiAhcy0+bW9kZWxbaV0pIHsKKyAg ICAgICAgICAgIGVyciA9IHZtYWZfbW9kZWxfbG9hZF9mcm9tX3BhdGgoJnMtPm1vZGVsW2ldLCAm bW9kZWxfY2ZnLCBwYXRoKTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAg ICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICJjb3Vs ZCBub3QgbG9hZCBsaWJ2bWFmIG1vZGVsIHdpdGggcGF0aDogJXNcbiIsCisgICAgICAgICAgICAg ICAgICAgICAgIHBhdGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghcy0+bW9kZWxbaV0pIHsKKyAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAiY291bGQgbm90 IGxvYWQgbGlidm1hZiBtb2RlbCB3aXRoIGNvbmZpZzogJXNcbiIsCisgICAgICAgICAgICAgICAg ICAgcy0+bW9kZWxfY2ZnKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisg ICAgICAgIHdoaWxlIChlID0gYXZfZGljdF9nZXQoZGljdFtpXSwgIiIsIGUsIEFWX0RJQ1RfSUdO T1JFX1NVRkZJWCkpIHsKKyAgICAgICAgICAgIFZtYWZGZWF0dXJlRGljdGlvbmFyeSAqZmVhdHVy ZV9vcHRzX2RpY3QgPSBOVUxMOworICAgICAgICAgICAgY2hhciAqZmVhdHVyZV9vcHQgPSBOVUxM OworCisgICAgICAgICAgICBjaGFyICpmZWF0dXJlX25hbWUgPSBhdl9zdHJ0b2soZS0+a2V5LCAi LiIsICZmZWF0dXJlX29wdCk7CisgICAgICAgICAgICBpZiAoIWZlYXR1cmVfb3B0KQorICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlcnIgPSB2bWFmX2ZlYXR1cmVfZGlj dGlvbmFyeV9zZXQoJmZlYXR1cmVfb3B0c19kaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfb3B0LCBlLT52YWx1ZSk7CisgICAgICAgICAg ICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAor ICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IHNldCBmZWF0dXJlIG9wdGlvbjogJXMu JXM9JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfbmFtZSwgZmVhdHVyZV9v cHQsIGUtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVJTlZBTCk7Cisg ICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl cnIgPSB2bWFmX21vZGVsX2ZlYXR1cmVfb3ZlcmxvYWQocy0+bW9kZWxbaV0sIGZlYXR1cmVfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJl X29wdHNfZGljdCk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90 IG92ZXJsb2FkIGZlYXR1cmU6ICVzXG4iLCBmZWF0dXJlX25hbWUpOworICAgICAgICAgICAgICAg IGVyciA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBzLT5mcmFtZV9zZXQgPSAxOworICAg IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzLT5tb2RlbF9jbnQ7IGkrKykgeworICAgICAgICBl cnIgPSB2bWFmX3VzZV9mZWF0dXJlc19mcm9tX21vZGVsKHMtPnZtYWYsIHMtPm1vZGVsW2ldKTsK KyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LAorICAgICAgICAgICAgICAgICAgICJwcm9ibGVtIGR1cmluZyB2bWFmX3VzZV9mZWF0dXJlc19m cm9tX21vZGVsXG4iKTsKKyAgICAgICAgICAgIGVyciA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAg ICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KIAotICAgIHB0aHJlYWRfY29uZF9z aWduYWwoJnMtPmNvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5sb2NrKTsKK2V4 aXQ6CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3RfY250OyBpKyspIHsKKyAgICAg ICAgaWYgKGRpY3RbaV0pCisgICAgICAgICAgICBhdl9kaWN0X2ZyZWUoJmRpY3RbaV0pOworICAg IH0KKyAgICBhdl9mcmVlKGRpY3QpOworICAgIHJldHVybiBlcnI7Cit9CiAKLSAgICByZXR1cm4g ZmZfZmlsdGVyX2ZyYW1lKGN0eC0+b3V0cHV0c1swXSwgbWFzdGVyKTsKK3N0YXRpYyBlbnVtIFZt YWZMb2dMZXZlbCBsb2dfbGV2ZWxfbWFwKGludCBsb2dfbGV2ZWwpCit7CisgICAgc3dpdGNoIChs b2dfbGV2ZWwpIHsKKyAgICBjYXNlIEFWX0xPR19RVUlFVDoKKyAgICAgICAgcmV0dXJuIFZNQUZf TE9HX0xFVkVMX05PTkU7CisgICAgY2FzZSBBVl9MT0dfRVJST1I6CisgICAgICAgIHJldHVybiBW TUFGX0xPR19MRVZFTF9FUlJPUjsKKyAgICBjYXNlIEFWX0xPR19XQVJOSU5HOgorICAgICAgICBy ZXR1cm4gVk1BRl9MT0dfTEVWRUxfV0FSTklORzsKKyAgICBjYXNlIEFWX0xPR19JTkZPOgorICAg ICAgICByZXR1cm4gVk1BRl9MT0dfTEVWRUxfSU5GTzsKKyAgICBjYXNlIEFWX0xPR19ERUJVRzoK KyAgICAgICAgcmV0dXJuIFZNQUZfTE9HX0xFVkVMX0RFQlVHOworICAgIGRlZmF1bHQ6CisgICAg ICAgIHJldHVybiBWTUFGX0xPR19MRVZFTF9JTkZPOworICAgIH0KK30KKworc3RhdGljIGludCBw YXJzZV9kZXByZWNhdGVkX29wdGlvbnMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgTElC Vk1BRkNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgVm1hZk1vZGVsICptb2RlbCA9IE5VTEw7 CisgICAgVm1hZk1vZGVsQ29sbGVjdGlvbiAqbW9kZWxfY29sbGVjdGlvbiA9IE5VTEw7CisgICAg ZW51bSBWbWFmTW9kZWxGbGFncyBmbGFncyA9IFZNQUZfTU9ERUxfRkxBR1NfREVGQVVMVDsKKyAg ICBpbnQgZXJyID0gMDsKKworICAgIFZtYWZNb2RlbENvbmZpZyBtb2RlbF9jZmcgPSB7CisgICAg ICAgIC5uYW1lID0gInZtYWYiLAorICAgICAgICAuZmxhZ3MgPSBmbGFncywKKyAgICB9OworCisg ICAgaWYgKHMtPmVuYWJsZV90cmFuc2Zvcm0gfHwgcy0+cGhvbmVfbW9kZWwpCisgICAgICAgIGZs YWdzIHw9IFZNQUZfTU9ERUxfRkxBR19FTkFCTEVfVFJBTlNGT1JNOworCisgICAgaWYgKCFzLT5t b2RlbF9wYXRoKQorICAgICAgICBnb3RvIGV4dHJhX21ldHJpY3Nfb25seTsKKworICAgIGlmIChz LT5lbmFibGVfY29uZl9pbnRlcnZhbCkgeworICAgICAgICBlcnIgPSB2bWFmX21vZGVsX2NvbGxl Y3Rpb25fbG9hZF9mcm9tX3BhdGgoJm1vZGVsLCAmbW9kZWxfY29sbGVjdGlvbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlbF9jZmcsIHMt Pm1vZGVsX3BhdGgpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4 LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBtb2Rl bCBmaWxlOiAlc1xuIiwgcy0+bW9kZWxfcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7Cisg ICAgICAgIH0KKworICAgICAgICBlcnIgPSB2bWFmX3VzZV9mZWF0dXJlc19mcm9tX21vZGVsX2Nv bGxlY3Rpb24ocy0+dm1hZiwgbW9kZWxfY29sbGVjdGlvbik7CisgICAgICAgIGlmIChlcnIpIHsK KyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAg ICAicHJvYmxlbSBsb2FkaW5nIGZlYXR1cmUgZXh0cmFjdG9ycyBmcm9tIG1vZGVsIGZpbGU6ICVz XG4iLAorICAgICAgICAgICAgICAgICAgIHMtPm1vZGVsX3BhdGgpOworICAgICAgICAgICAgZ290 byBleGl0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gdm1hZl9tb2Rl bF9sb2FkX2Zyb21fcGF0aCgmbW9kZWwsICZtb2RlbF9jZmcsIHMtPm1vZGVsX3BhdGgpOworICAg ICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LAorICAgICAgICAgICAgICAgICAgICAgICJwcm9ibGVtIGxvYWRpbmcgbW9kZWwgZmlsZTogJXNc biIsIHMtPm1vZGVsX3BhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9Cisg ICAgICAgIGVyciA9IHZtYWZfdXNlX2ZlYXR1cmVzX2Zyb21fbW9kZWwocy0+dm1hZiwgbW9kZWwp OworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gbG9hZGluZyBmZWF0dXJlIGV4dHJhY3Rv cnMgZnJvbSBtb2RlbCBmaWxlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBzLT5tb2RlbF9w YXRoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KKworZXh0cmFf bWV0cmljc19vbmx5OgorICAgIGlmIChzLT5wc25yKSB7CisgICAgICAgIFZtYWZGZWF0dXJlRGlj dGlvbmFyeSAqZCA9IE5VTEw7CisgICAgICAgIHZtYWZfZmVhdHVyZV9kaWN0aW9uYXJ5X3NldCgm ZCwgImVuYWJsZV9jaHJvbWEiLCAiZmFsc2UiKTsKKworICAgICAgICBlcnIgPSB2bWFmX3VzZV9m ZWF0dXJlKHMtPnZtYWYsICJwc25yIiwgZCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxl bSBsb2FkaW5nIGZlYXR1cmUgZXh0cmFjdG9yOiBwc25yXG4iKTsKKyAgICAgICAgICAgIGdvdG8g ZXhpdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzLT5zc2ltKSB7CisgICAgICAgIGVy ciA9IHZtYWZfdXNlX2ZlYXR1cmUocy0+dm1hZiwgImZsb2F0X3NzaW0iLCBOVUxMKTsKKyAgICAg ICAgaWYgKGVycikgeworICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAg ICAgICAgICAgICAgICAgICJwcm9ibGVtIGxvYWRpbmcgZmVhdHVyZSBleHRyYWN0b3I6IHNzaW1c biIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYg KHMtPm1zX3NzaW0pIHsKKyAgICAgICAgZXJyID0gdm1hZl91c2VfZmVhdHVyZShzLT52bWFmLCAi ZmxvYXRfbXNfc3NpbSIsIE5VTEwpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBh dl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gbG9h ZGluZyBmZWF0dXJlIGV4dHJhY3RvcjogbXNfc3NpbVxuIik7CisgICAgICAgICAgICBnb3RvIGV4 aXQ7CisgICAgICAgIH0KKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIGVycjsKIH0KIAogc3Rh dGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiB7CiAgICAgTElCVk1B RkNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgaW50IGVyciA9IDA7CiAKLSAgICBzLT5ncmVm ID0gYXZfZnJhbWVfYWxsb2MoKTsKLSAgICBzLT5nbWFpbiA9IGF2X2ZyYW1lX2FsbG9jKCk7Ci0g ICAgaWYgKCFzLT5ncmVmIHx8ICFzLT5nbWFpbikKLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsKKyAgICBWbWFmQ29uZmlndXJhdGlvbiBjZmcgPSB7CisgICAgICAgIC5sb2dfbGV2ZWwg PSBsb2dfbGV2ZWxfbWFwKGF2X2xvZ19nZXRfbGV2ZWwoKSksCisgICAgICAgIC5uX3N1YnNhbXBs ZSA9IHMtPm5fc3Vic2FtcGxlLAorICAgICAgICAubl90aHJlYWRzID0gcy0+bl90aHJlYWRzLAor ICAgIH07CiAKLSAgICBzLT5lcnJvciA9IDA7CisgICAgZXJyID0gdm1hZl9pbml0KCZzLT52bWFm LCBjZmcpOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisK KyAgICBlcnIgPSBwYXJzZV9kZXByZWNhdGVkX29wdGlvbnMoY3R4KTsKKyAgICBpZiAoZXJyKQor ICAgICAgICByZXR1cm4gZXJyOworCisgICAgZXJyID0gcGFyc2VfbW9kZWxzKGN0eCk7CisgICAg aWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKIAotICAgIHMtPnZtYWZfdGhyZWFkX2NyZWF0 ZWQgPSAwOwotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmcy0+bG9jaywgTlVMTCk7Ci0gICAgcHRo cmVhZF9jb25kX2luaXQgKCZzLT5jb25kLCBOVUxMKTsKKyAgICBlcnIgPSBwYXJzZV9mZWF0dXJl cyhjdHgpOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBlcnI7CiAKICAgICBzLT5mcy5v bl9ldmVudCA9IGRvX3ZtYWY7CiAgICAgcmV0dXJuIDA7CkBAIC0yNTYsMjYgKzU0MCwzMSBAQCBz dGF0aWMgY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXRzW10gPSB7CiAKIHN0YXRpYyBp bnQgY29uZmlnX2lucHV0X3JlZihBVkZpbHRlckxpbmsgKmlubGluaykKIHsKLSAgICBBVkZpbHRl ckNvbnRleHQgKmN0eCAgPSBpbmxpbmstPmRzdDsKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9 IGlubGluay0+ZHN0OwogICAgIExJQlZNQUZDb250ZXh0ICpzID0gY3R4LT5wcml2OwotICAgIGlu dCB0aDsKKyAgICBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKmRlc2M7CisgICAgaW50IGVyciA9 IDA7CiAKLSAgICBpZiAoY3R4LT5pbnB1dHNbMF0tPncgIT0gY3R4LT5pbnB1dHNbMV0tPncgfHwK LSAgICAgICAgY3R4LT5pbnB1dHNbMF0tPmggIT0gY3R4LT5pbnB1dHNbMV0tPmgpIHsKLSAgICAg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiV2lkdGggYW5kIGhlaWdodCBvZiBpbnB1dCB2 aWRlb3MgbXVzdCBiZSBzYW1lLlxuIik7Ci0gICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7 CisgICAgaWYgKGN0eC0+aW5wdXRzWzBdLT53ICE9IGN0eC0+aW5wdXRzWzFdLT53KSB7CisgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgImlucHV0IHdpZHRoIG11c3QgbWF0Y2guXG4i KTsKKyAgICAgICAgZXJyIHw9IEFWRVJST1IoRUlOVkFMKTsKICAgICB9CiAKLSAgICBzLT5kZXNj ID0gYXZfcGl4X2ZtdF9kZXNjX2dldChpbmxpbmstPmZvcm1hdCk7Ci0gICAgcy0+d2lkdGggPSBj dHgtPmlucHV0c1swXS0+dzsKLSAgICBzLT5oZWlnaHQgPSBjdHgtPmlucHV0c1swXS0+aDsKKyAg ICBpZiAoY3R4LT5pbnB1dHNbMF0tPmggIT0gY3R4LT5pbnB1dHNbMV0tPmgpIHsKKyAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiaW5wdXQgaGVpZ2h0IG11c3QgbWF0Y2guXG4iKTsK KyAgICAgICAgZXJyIHw9IEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CiAKLSAgICB0aCA9IHB0aHJl YWRfY3JlYXRlKCZzLT52bWFmX3RocmVhZCwgTlVMTCwgY2FsbF92bWFmLCAodm9pZCAqKSBzKTsK LSAgICBpZiAodGgpIHsKLSAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVGhyZWFk IGNyZWF0aW9uIGZhaWxlZC5cbiIpOwotICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwor ICAgIGlmIChjdHgtPmlucHV0c1swXS0+Zm9ybWF0ICE9IGN0eC0+aW5wdXRzWzFdLT5mb3JtYXQp IHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiaW5wdXQgcGl4X2ZtdCBtdXN0 IG1hdGNoLlxuIik7CisgICAgICAgIGVyciB8PSBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQotICAg IHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQgPSAxOworCisgICAgaWYgKGVycikKKyAgICAgICAgcmV0 dXJuIGVycjsKKworICAgIGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KGlubGluay0+Zm9ybWF0 KTsKKyAgICBzLT5icGMgPSBkZXNjLT5jb21wWzBdLmRlcHRoOwogCiAgICAgcmV0dXJuIDA7CiB9 CkBAIC0zMDcsMjggKzU5Niw3NiBAQCBzdGF0aWMgaW50IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4 dCAqY3R4KQogICAgIHJldHVybiBmZl9mcmFtZXN5bmNfYWN0aXZhdGUoJnMtPmZzKTsKIH0KIAor c3RhdGljIGVudW0gVm1hZk91dHB1dEZvcm1hdCBsb2dfZm10X21hcChjb25zdCBjaGFyICpsb2df Zm10KQoreworICAgIGlmIChhdl9zdHJpc3RyKGxvZ19mbXQsICJ4bWwiKSkKKyAgICAgICAgcmV0 dXJuIFZNQUZfT1VUUFVUX0ZPUk1BVF9YTUw7CisgICAgaWYgKGF2X3N0cmlzdHIobG9nX2ZtdCwg Impzb24iKSkKKyAgICAgICAgcmV0dXJuIFZNQUZfT1VUUFVUX0ZPUk1BVF9KU09OOworICAgIGlm IChhdl9zdHJpc3RyKGxvZ19mbXQsICJjc3YiKSkKKyAgICAgICAgcmV0dXJuIFZNQUZfT1VUUFVU X0ZPUk1BVF9DU1Y7CisgICAgaWYgKGF2X3N0cmlzdHIobG9nX2ZtdCwgInN1YiIpKQorICAgICAg ICByZXR1cm4gVk1BRl9PVVRQVVRfRk9STUFUX1NVQjsKKworICAgIHJldHVybiBWTUFGX09VVFBV VF9GT1JNQVRfWE1MOworfQorCitzdGF0aWMgZW51bSBWbWFmUG9vbGluZ01ldGhvZCBwb29sX21l dGhvZF9tYXAoY29uc3QgY2hhciAqcG9vbF9tZXRob2QpCit7CisgICAgaWYgKGF2X3N0cmlzdHIo cG9vbF9tZXRob2QsICJtaW4iKSkKKyAgICAgICAgcmV0dXJuIFZNQUZfUE9PTF9NRVRIT0RfTUlO OworICAgIGlmIChhdl9zdHJpc3RyKHBvb2xfbWV0aG9kLCAibWVhbiIpKQorICAgICAgICByZXR1 cm4gVk1BRl9QT09MX01FVEhPRF9NRUFOOworICAgIGlmIChhdl9zdHJpc3RyKHBvb2xfbWV0aG9k LCAiaGFybW9uaWNfbWVhbiIpKQorICAgICAgICByZXR1cm4gVk1BRl9QT09MX01FVEhPRF9IQVJN T05JQ19NRUFOOworCisgICAgcmV0dXJuIFZNQUZfUE9PTF9NRVRIT0RfTUVBTjsKK30KKwogc3Rh dGljIGF2X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiB7CiAgICAgTElC Vk1BRkNvbnRleHQgKnMgPSBjdHgtPnByaXY7CisgICAgaW50IGVyciA9IDA7CiAKICAgICBmZl9m cmFtZXN5bmNfdW5pbml0KCZzLT5mcyk7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnMtPmxv Y2spOwotICAgIHMtPmVvZiA9IDE7Ci0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmcy0+Y29uZCk7 Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnMtPmxvY2spOworICAgIGlmICghcy0+ZnJhbWVf Y250KQorICAgICAgICBnb3RvIGNsZWFuX3VwOwogCi0gICAgaWYgKHMtPnZtYWZfdGhyZWFkX2Ny ZWF0ZWQpCi0gICAgewotICAgICAgICBwdGhyZWFkX2pvaW4ocy0+dm1hZl90aHJlYWQsIE5VTEwp OwotICAgICAgICBzLT52bWFmX3RocmVhZF9jcmVhdGVkID0gMDsKKyAgICBlcnIgPSB2bWFmX3Jl YWRfcGljdHVyZXMocy0+dm1hZiwgTlVMTCwgTlVMTCwgMCk7CisgICAgaWYgKGVycikgeworICAg ICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAicHJvYmxlbSBm bHVzaGluZyBsaWJ2bWFmIGNvbnRleHQuXG4iKTsKICAgICB9CiAKLSAgICBhdl9mcmFtZV9mcmVl KCZzLT5ncmVmKTsKLSAgICBhdl9mcmFtZV9mcmVlKCZzLT5nbWFpbik7CisgICAgZm9yICh1bnNp Z25lZCBpID0gMDsgaSA8IHMtPm1vZGVsX2NudDsgaSsrKSB7CisgICAgICAgIGRvdWJsZSB2bWFm X3Njb3JlOworICAgICAgICBlcnIgPSB2bWFmX3Njb3JlX3Bvb2xlZChzLT52bWFmLCBzLT5tb2Rl bFtpXSwgcG9vbF9tZXRob2RfbWFwKHMtPnBvb2wpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmdm1hZl9zY29yZSwgMCwgcy0+ZnJhbWVfY250IC0gMSk7CisgICAgICAgIGlmIChl cnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAg ICAgICAgICAicHJvYmxlbSBnZXR0aW5nIHBvb2xlZCB2bWFmIHNjb3JlLlxuIik7CisgICAgICAg IH0KKworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIlZNQUYgc2NvcmU6ICVmXG4i LCB2bWFmX3Njb3JlKTsKKyAgICB9CisKKyAgICBpZiAocy0+dm1hZikgeworICAgICAgICBpZiAo cy0+bG9nX3BhdGggJiYgIWVycikKKyAgICAgICAgICAgIHZtYWZfd3JpdGVfb3V0cHV0KHMtPnZt YWYsIHMtPmxvZ19wYXRoLCBsb2dfZm10X21hcChzLT5sb2dfZm10KSk7CisgICAgfQorCitjbGVh bl91cDoKKyAgICBpZiAocy0+bW9kZWwpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg aSA8IHMtPm1vZGVsX2NudDsgaSsrKSB7CisgICAgICAgICAgICBpZiAocy0+bW9kZWxbaV0pCisg ICAgICAgICAgICAgICAgdm1hZl9tb2RlbF9kZXN0cm95KHMtPm1vZGVsW2ldKTsKKyAgICAgICAg fQorICAgICAgICBhdl9mcmVlKHMtPm1vZGVsKTsKKyAgICB9CiAKLSAgICBwdGhyZWFkX211dGV4 X2Rlc3Ryb3koJnMtPmxvY2spOwotICAgIHB0aHJlYWRfY29uZF9kZXN0cm95KCZzLT5jb25kKTsK KyAgICBpZiAocy0+dm1hZikKKyAgICAgICAgdm1hZl9jbG9zZShzLT52bWFmKTsKIH0KIAogc3Rh dGljIGNvbnN0IEFWRmlsdGVyUGFkIGxpYnZtYWZfaW5wdXRzW10gPSB7Ci0tIAoyLjI0LjMgKEFw cGxlIEdpdC0xMjgpCgo= --0000000000005e3b2e05d581b2d0 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". --0000000000005e3b2e05d581b2d0--