From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 2F0D04004C for ; Fri, 19 Dec 2025 00:12:53 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'DEXshTEWPKeSF9qIfLNXvVvQZbnCO3AT3P/SB6cc0A8=', expected b'toqphZjsePZed1OBC0S3GraivUo/sLbd0H4lciDQDUM=')) header.d=googlemail.com header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1766103119; h=mime-version : date : message-id : to : content-type : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : from; bh=hKwNkObDe47H/7SNLyPa7OxnsBhNo6/x0ru0K6GjU2g=; b=KDeMUmkog9BEnFtrLBmfIly9RSA+sc1eLnAyhffuEfWgwr2DGkbau2Ssc4bZcbx5iGQ5O aOnAdYTYgoiikrGNzeqROeUWedE+lVZbKVUASsvWGWkkMJTCEWiy4cqVgFee8HF9GZ+VSQz lDzEtxXqknDupS/i14KZbFVJWCMEUUltBweusm2RaO59BScQ5k8G8QiSx1yPRWYGz2VAPTy eN+YRjoq3v5IU/waY/zHiUon7nGo20JL3Qh8UtGPRLUrkq0vrVj5CVGZ6HyHE2bAb3D+r1q 5Jzg2LWK+c4YiqHG2DDfq4bAmFD+12ft9ule6UxwRErK0iFvhwpww21mSW7Q== Received: from [172.20.0.2] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E74586909AB; Fri, 19 Dec 2025 02:11:59 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1766103106; b=r+pc/nTpULVfpq/IINurR2eitc5tAnFJhw5ADz54Sp/rWqkz8vozhUqEk0jmRZjO+cPcU GBYm8gFQkw6D7qj56ax+2t1AG5V86aVrfNoN731DPQjKkbA0sdE4WwX5mUZxOmW6yxFS/Mg jklzpn/TAgyF0+tuoIwR5roKFj6Kq5essxdI1gIcSYRC7bF2BQaJkq6O2QdYRHRg3ODf9Cd u2bj0dd7I5/Zj/CbGPII84RDRD8hy9JYTVMVkSikvETGzP9GII1rysiH75AUG32WBBYhQTg 2IzYh7hCx+s23AFzNbgFmsHF92eEVfY9O6ETqD4in6lC0DsF/aK2E8fGrJuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1766103106; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=DEXshTEWPKeSF9qIfLNXvVvQZbnCO3AT3P/SB6cc0A8=; b=Z5+FhSxk/976DozYtf693k8rd/dJcmmGmE/55z6hrk38XF9kEMP4/dD+ROVESjWu0hd0d DdpRHnE677G8B0x1pksqNIFsuGO904zJ0CUhaYcVPzUwwmmtO0j/tSvYwBMBGhfzIjR/nWU i1+4ddqCnAS3KUZd4CP1n8p8t23utXVdT7eYcxnUPJi9Q3S84xeeNI/Dbdt/2AfM+Ug2Zrv za6Suu4ie+wlX+mszTRXspFh70jiobVjCahqu5lnL9KYCt4yjxpkg7Qo9zLqnCXlF5b+a2v GvIgeJ9q0svjCvWtG1VYfU6nOKNIMngzNFCRtV8bn4B0BUS38JvjKRVLhUlg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=fail header.d=googlemail.com; arc=none; dmarc=fail header.from=googlemail.com policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=fail header.d=googlemail.com; arc=none (Message is not ARC signed); dmarc=fail (Used From Domain Record) header.from=googlemail.com policy.dmarc=quarantine Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id D6A1C690954 for ; Fri, 19 Dec 2025 02:11:30 +0200 (EET) Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-59584301f0cso1342708e87.0 for ; Thu, 18 Dec 2025 16:11:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1766103089; x=1766707889; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=toqphZjsePZed1OBC0S3GraivUo/sLbd0H4lciDQDUM=; b=QVi+qmaInUrFBMKz421zKQmLorFn1YlwKwMQg7LxqyJCGUIclJfnkgSit2RHx8KD1x Ir2MeHlJoZrVmNZvSz/RTnPWotK7QcXU4KLR4KiKKTI6+nmNlSfpoEgbuJMOYB/+zvVm L3CJXgJ/L4EjMEF0qZMfKo7OeKMaVJOGfd1CSi4W5K18kc43pkjCHRzLwvRigeaofTcs WylgQZw4/sSELHkxsPuER1wut51ZqaXoJoYXF1Y31PeGRGNOwUse0n50duXHIjg38xoZ GCFN6f7ibAQ1cCJFiY2GeZxeJwSeuvyR0Lhy78KeCTkikpjt16thAj9IQhh/PltZ8Pz2 +c9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766103089; x=1766707889; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=toqphZjsePZed1OBC0S3GraivUo/sLbd0H4lciDQDUM=; b=CT2I9bivoUk5gT9cBr/tUrIizjYm360dy/e5zb8y2fAtqRU/zZOXgAbBD0hQIJieTI en2x3qkrZ3ifFYao8Ppb+LnqBqTkJOX/tOr/hK8v+5U726drjdug2B/n8CG/Lj/NOnQh TQ5GRstN5GDgzDkoEdXXx5WN+jpoh82Shv9zu7wb4AVbr+fT/GrcIW5cgsA+x53BgJNg +7Vlk+UzkTLLz9khA2Z3MsQDB8a3pMVJZnRg17nzaDeXQbIyI91QsabeFrFa1M8zeFYh 0E5WxIwlWkJCjK0/vriu7Tb66fJpKDEGiBeMnSycxr+uCx03eGSX8xDHobcF+Ks6YENv yBNA== X-Gm-Message-State: AOJu0YwADOYE5jm2Yi66u44zovqv/tn0lLNnKsGLVJHjM1qOGN1z6rUV Qyk+zxj6kdTCEQpfiXMSoMMJq/OWS2JggVTR0HITlChTmPsZLx7vo+4Nr5XCe/7Ccuql/kCfzRC X8fDoamfkB1Ixmey0f8tcAkLMEAn0QEcBVX3pNno= X-Gm-Gg: AY/fxX7+dltxNl3tb7fGDLneuw+DFZdUEjjwoSqgjpqJUa8TFaeJSGS4xXu5ntxRhya UmGbjvReQ6Sdc8YkPaC7lW8Xi5t9sJ2R/MZczBNSQ+mNm9WSOsyBQDdAXpGbZehjDOqfDUPpc5z 7jCAzg2LJhMjKphhUSrTF8z+OD0gEsKt+BfHaLQk1UagqzVCZtz+CWgbwKsdKpWoAi4P0SKHkTY jXzm6GHC1m32pRRleCui5w2Nk3NU7NzagQkvDBGvHeQihdE0ddVn7F8T08UxyWVvIcFTA== X-Google-Smtp-Source: AGHT+IFIJs59a8IiBObReYKJKi7m8WrM9Ymubj3mcl8jSE8G8RMEsV/FYW6IccHeZp9P2hXfImQaWg3crcW3n7qLEiA= X-Received: by 2002:a05:6512:3d9f:b0:598:f1a7:c70a with SMTP id 2adb3069b0e04-59a17d5778bmr425429e87.30.1766103089337; Thu, 18 Dec 2025 16:11:29 -0800 (PST) MIME-Version: 1.0 Date: Fri, 19 Dec 2025 08:11:34 +0800 X-Gm-Features: AQt7F2r8pOTWzPCzdcNsnvUC42WZdarL10zR8P6P54tc5CqIauEQ30nYpFtZhc8 Message-ID: To: ffmpeg-devel@ffmpeg.org Content-Type: multipart/mixed; boundary="00000000000046f1a3064642eb6f" Message-ID-Hash: DEG4EKZCKWNHRUW7KURHZ3MOKDVRXEY4 X-Message-ID-Hash: DEG4EKZCKWNHRUW7KURHZ3MOKDVRXEY4 X-MailFrom: SRS0=OK03=6Z=googlemail.com=leslie.polzer@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Content-Filtered-By: Mailman/MimeDel 3.3.10 X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] tools: add new fuzzers for avutil, avfilter, mux, network and cli List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: LP via ffmpeg-devel Cc: LP Archived-At: List-Archive: List-Post: --00000000000046f1a3064642eb6f Content-Type: text/plain; charset="UTF-8" Hello FFmpeg developers, This patch adds several new fuzzer targets to the tools/ directory to improve test coverage for various components, including libavutil (AVOptions), libavfilter, muxers, network protocols, and the CLI options parsing. It also introduces tools/run_fuzzer_loop.c, a simple harness that allows running these fuzzers in a loop without requiring a full libFuzzer environment. I have verified that the new targets compile and run successfully. Please find the patch attached. Best, Leslie --00000000000046f1a3064642eb6f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-tools-add-new-fuzzers-for-avutil-avfilter-mux-networ.patch" Content-Disposition: attachment; filename="0001-tools-add-new-fuzzers-for-avutil-avfilter-mux-networ.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjc46iec0 RnJvbSA0OTdjMzkyOWJhOGZmNjI5OWFhM2RkMjE0ZmI3M2E4NDE1ODc4NTJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiTGVzbGllIFAuIFBvbHplciIgPHBvbHplckBmYXN0bWFpbC5j b20+CkRhdGU6IFRodSwgMTggRGVjIDIwMjUgMTI6NTE6MDQgKzAwMDAKU3ViamVjdDogW1BBVENI XSB0b29sczogYWRkIG5ldyBmdXp6ZXJzIGZvciBhdnV0aWwsIGF2ZmlsdGVyLCBtdXgsIG5ldHdv cmsgYW5kCiBjbGkKClRoaXMgcGF0Y2ggYWRkcyBuZXcgZnV6emVyIHRhcmdldHMgdG8gdGhlIHRv b2xzIGRpcmVjdG9yeToKLSB0YXJnZXRfYXZ1dGlsX2Z1enplcjogdGFyZ2V0cyBsaWJhdnV0aWwg YW5kIEFWT3B0aW9ucwotIHRhcmdldF9hdmZpbHRlcl9mdXp6ZXI6IHRhcmdldHMgc3BlY2lmaWMg ZmlsdGVycwotIHRhcmdldF9tdXhfZnV6emVyOiB0YXJnZXRzIHNwZWNpZmljIG11eGVycwotIHRh cmdldF9uZXR3b3JrX2Z1enplcjogdGFyZ2V0cyBuZXR3b3JrIHByb3RvY29scwotIHRhcmdldF9j bGlfZnV6emVyOiB0YXJnZXRzIHRoZSBmZm1wZWcgQ0xJIChleHBvc2VzIGZmbXBlZ19jbGVhbnVw KQoKSXQgYWxzbyBhZGRzIHJ1bl9mdXp6ZXJfbG9vcC5jLCBhIGhhcm5lc3MgZm9yIHJ1bm5pbmcg dGhlc2UgZnV6emVycwppbiBhIGxvb3Agd2l0aG91dCBsaWJGdXp6ZXIuCgpTaWduZWQtb2ZmLWJ5 OiBMZXNsaWUgUC4gUG9semVyIDxwb2x6ZXJAZmFzdG1haWwuY29tPgotLS0KIGZmdG9vbHMvZmZt cGVnLmMgICAgICAgICAgICAgICB8ICAgMiArLQogZmZ0b29scy9mZm1wZWcuaCAgICAgICAgICAg ICAgIHwgICAxICsKIHRvb2xzL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAxOCArKysKIHRv b2xzL3J1bl9mdXp6ZXJfbG9vcC5jICAgICAgICB8ICA3NyArKysrKysrKysrKysKIHRvb2xzL3Rh cmdldF9hdmZpbHRlcl9mdXp6ZXIuYyB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKwog dG9vbHMvdGFyZ2V0X2F2dXRpbF9mdXp6ZXIuYyAgIHwgIDgyICsrKysrKysrKysrKysKIHRvb2xz L3RhcmdldF9jbGlfZnV6emVyLmMgICAgICB8IDEyMyArKysrKysrKysrKysrKysrKysrKwogdG9v bHMvdGFyZ2V0X211eF9mdXp6ZXIuYyAgICAgIHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysr KysrCiB0b29scy90YXJnZXRfbmV0d29ya19mdXp6ZXIuYyAgfCAyMDcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDgzNyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcnVuX2Z1enplcl9sb29wLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90YXJnZXRfYXZmaWx0ZXJfZnV6emVyLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0b29scy90YXJnZXRfYXZ1dGlsX2Z1enplci5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgdG9vbHMvdGFyZ2V0X2NsaV9mdXp6ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L3RhcmdldF9tdXhfZnV6emVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90YXJnZXRfbmV0 d29ya19mdXp6ZXIuYwoKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnLmMgYi9mZnRvb2xzL2Zm bXBlZy5jCmluZGV4IGMyYzg1ZDQ2YmQuLjBiNjY0ZjE0MjYgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMv ZmZtcGVnLmMKKysrIGIvZmZ0b29scy9mZm1wZWcuYwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRp YyBpbnQgZGVjb2RlX2ludGVycnVwdF9jYih2b2lkICpjdHgpCiAKIGNvbnN0IEFWSU9JbnRlcnJ1 cHRDQiBpbnRfY2IgPSB7IGRlY29kZV9pbnRlcnJ1cHRfY2IsIE5VTEwgfTsKIAotc3RhdGljIHZv aWQgZmZtcGVnX2NsZWFudXAoaW50IHJldCkKK3ZvaWQgZmZtcGVnX2NsZWFudXAoaW50IHJldCkK IHsKICAgICBpZiAoKHByaW50X2dyYXBocyB8fCBwcmludF9ncmFwaHNfZmlsZSkgJiYgbmJfb3V0 cHV0X2ZpbGVzID4gMCkKICAgICAgICAgcHJpbnRfZmlsdGVyZ3JhcGhzKGZpbHRlcmdyYXBocywg bmJfZmlsdGVyZ3JhcGhzLCBpbnB1dF9maWxlcywgbmJfaW5wdXRfZmlsZXMsIG91dHB1dF9maWxl cywgbmJfb3V0cHV0X2ZpbGVzKTsKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnLmggYi9mZnRv b2xzL2ZmbXBlZy5oCmluZGV4IDc3MjBkZDljNTkuLjA5MzIwNzlkNDYgMTAwNjQ0Ci0tLSBhL2Zm dG9vbHMvZmZtcGVnLmgKKysrIGIvZmZ0b29scy9mZm1wZWcuaApAQCAtNzk4LDYgKzc5OCw3IEBA IGV4dGVybiBpbnQgcmVjYXN0X21lZGlhOwogZXh0ZXJuIEZJTEUgKnZzdGF0c19maWxlOwogCiB2 b2lkIHRlcm1faW5pdCh2b2lkKTsKK3ZvaWQgZmZtcGVnX2NsZWFudXAoaW50IHJldCk7CiB2b2lk IHRlcm1fZXhpdCh2b2lkKTsKIAogdm9pZCBzaG93X3VzYWdlKHZvaWQpOwpkaWZmIC0tZ2l0IGEv dG9vbHMvTWFrZWZpbGUgYi90b29scy9NYWtlZmlsZQppbmRleCA3YWU2ZTNjYjc1Li4yOTRmYmRh ODFkIDEwMDY0NAotLS0gYS90b29scy9NYWtlZmlsZQorKysgYi90b29scy9NYWtlZmlsZQpAQCAt MTEsNiArMTEsMjQgQEAgdG9vbHMvdGFyZ2V0X2VuY18lX2Z1enplci5vOiB0b29scy90YXJnZXRf ZW5jX2Z1enplci5jCiB0b29scy90YXJnZXRfYnNmXyVfZnV6emVyLm86IHRvb2xzL3RhcmdldF9i c2ZfZnV6emVyLmMKIAkkKENPTVBJTEVfQykgLURGRk1QRUdfQlNGPSQqCiAKK3Rvb2xzL3Rhcmdl dF9hdmZpbHRlcl8lX2Z1enplci5vOiB0b29scy90YXJnZXRfYXZmaWx0ZXJfZnV6emVyLmMKKwkk KENPTVBJTEVfQykgLURGRk1QRUdfRklMVEVSPSQqCisKK3Rvb2xzL3RhcmdldF9hdnV0aWxfZnV6 emVyLm86IHRvb2xzL3RhcmdldF9hdnV0aWxfZnV6emVyLmMKKwkkKENPTVBJTEVfQykKKwordG9v bHMvdGFyZ2V0X2F2dXRpbF9vcHRfZnV6emVyLm86IHRvb2xzL3RhcmdldF9hdnV0aWxfZnV6emVy LmMKKwkkKENPTVBJTEVfQykgLURGRk1QRUdfQVZVVElMX09QVAorCit0b29scy90YXJnZXRfbXV4 XyVfZnV6emVyLm86IHRvb2xzL3RhcmdldF9tdXhfZnV6emVyLmMKKwkkKENPTVBJTEVfQykgLURG Rk1QRUdfTVVYRVI9JCoKKwordG9vbHMvdGFyZ2V0X2NsaV9mdXp6ZXIubzogdG9vbHMvdGFyZ2V0 X2NsaV9mdXp6ZXIuYworCSQoQ09NUElMRV9DKQorCit0b29scy90YXJnZXRfbmV0d29ya19mdXp6 ZXIubzogdG9vbHMvdGFyZ2V0X25ldHdvcmtfZnV6emVyLmMKKwkkKENPTVBJTEVfQykKKwogdG9v bHMvdGFyZ2V0X2RlbV8lX2Z1enplci5vOiB0b29scy90YXJnZXRfZGVtX2Z1enplci5jCiAJJChD T01QSUxFX0MpIC1ERkZNUEVHX0RFTVVYRVI9JCogLURJT19GTEFUPTAKIApkaWZmIC0tZ2l0IGEv dG9vbHMvcnVuX2Z1enplcl9sb29wLmMgYi90b29scy9ydW5fZnV6emVyX2xvb3AuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43YzAyNTcyNjI0Ci0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvcnVuX2Z1enplcl9sb29wLmMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5j bHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c2lnbmFs Lmg+CisKK2ludCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNp emVfdCBzaXplKTsKKworc3RhdGljIHZvbGF0aWxlIGludCBzdG9wID0gMDsKKwordm9pZCBoYW5k bGVfYWxhcm0oaW50IHNpZykgeworICAgIHN0b3AgPSAxOworfQorCitpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpIHsKKyAgICBpZiAoYXJnYyA8IDIpIHsKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICJVc2FnZTogJXMgPGR1cmF0aW9uX3NlY29uZHM+XG4iLCBhcmd2WzBdKTsKKyAgICAg ICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaW50IGR1cmF0aW9uID0gYXRvaShhcmd2WzFdKTsK KyAgICBzaWduYWwoU0lHQUxSTSwgaGFuZGxlX2FsYXJtKTsKKyAgICBhbGFybShkdXJhdGlvbik7 CisKKyAgICB1aW50OF90IGJ1Zls2NTUzNl07CisgICAgc2l6ZV90IGl0ZXJhdGlvbnMgPSAwOwor ICAgIEZJTEUgKnVyYW5kb20gPSBmb3BlbigiL2Rldi91cmFuZG9tIiwgInJiIik7CisgICAgaWYg KCF1cmFuZG9tKSB7CisgICAgICAgIHBlcnJvcigiZm9wZW4gL2Rldi91cmFuZG9tIik7CisgICAg ICAgIHJldHVybiAxOworICAgIH0KKworICAgIHByaW50ZigiRnV6emluZyBmb3IgJWQgc2Vjb25k cy4uLlxuIiwgZHVyYXRpb24pOworCisgICAgd2hpbGUgKCFzdG9wKSB7CisgICAgICAgIC8vIEdl bmVyYXRlIHJhbmRvbSBzaXplIGJldHdlZW4gMSBhbmQgc2l6ZW9mKGJ1ZikKKyAgICAgICAgc2l6 ZV90IHNpemUgPSAocmFuZCgpICUgc2l6ZW9mKGJ1ZikpICsgMTsKKyAgICAgICAgCisgICAgICAg IC8vIFJlYWQgcmFuZG9tIGRhdGEKKyAgICAgICAgaWYgKGZyZWFkKGJ1ZiwgMSwgc2l6ZSwgdXJh bmRvbSkgIT0gc2l6ZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICAvLyBSdW4gZnV6emVyCisgICAgICAgIExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoYnVmLCBzaXpl KTsKKyAgICAgICAgaXRlcmF0aW9ucysrOworICAgICAgICAKKyAgICAgICAgaWYgKGl0ZXJhdGlv bnMgJSAxMDAwID09IDApIHsKKyAgICAgICAgICAgIHByaW50ZigiSXRlcmF0aW9uczogJXp1XHIi LCBpdGVyYXRpb25zKTsKKyAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOworICAgICAgICB9Cisg ICAgfQorCisgICAgZmNsb3NlKHVyYW5kb20pOworICAgIHByaW50ZigiXG5GaW5pc2hlZC4gVG90 YWwgaXRlcmF0aW9uczogJXp1XG4iLCBpdGVyYXRpb25zKTsKKyAgICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL3Rvb2xzL3RhcmdldF9hdmZpbHRlcl9mdXp6ZXIuYyBiL3Rvb2xzL3RhcmdldF9h dmZpbHRlcl9mdXp6ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43 MGYwMmQ0MWJlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGFyZ2V0X2F2ZmlsdGVyX2Z1enpl ci5jCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogRnV6emVyIGZvciBsaWJhdmZpbHRlcgorICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL2J1ZmZlci5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1 dGlscy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv b3B0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BhcnNldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJh dnV0aWwvc2FtcGxlZm10LmgiCisKKyNpbmNsdWRlICJsaWJhdmZpbHRlci9hdmZpbHRlci5oIgor I2luY2x1ZGUgImxpYmF2ZmlsdGVyL2J1ZmZlcnNpbmsuaCIKKyNpbmNsdWRlICJsaWJhdmZpbHRl ci9idWZmZXJzcmMuaCIKKworaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhf dCAqZGF0YSwgc2l6ZV90IHNpemUpOworCitzdGF0aWMgdm9pZCBlcnJvcihjb25zdCBjaGFyICpl cnIpCit7CisgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGVycik7CisgICAgZXhpdCgxKTsKK30K KworLy8gR2xvYmFsIGZpbHRlciB0byBmdXp6LiBJbml0aWFsaXplIG9uY2UgaWYgcG9zc2libGUg b3IgdmlhIGRlZmluZS4KK3N0YXRpYyBjb25zdCBBVkZpbHRlciAqZiA9IE5VTEw7CisKK2ludCBM TFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7 CisgICAgaW50IHJldDsKKyAgICBBVkZpbHRlckdyYXBoICpncmFwaCA9IE5VTEw7CisgICAgQVZG aWx0ZXJDb250ZXh0ICpmaWx0X2N0eCA9IE5VTEwsICpzcmNfY3R4ID0gTlVMTCwgKnNpbmtfY3R4 ID0gTlVMTDsKKyAgICBBVkZyYW1lICpmcmFtZSA9IE5VTEw7CisgICAgdWludDhfdCAqZHVtbXlf ZGF0YSA9IE5VTEw7CisgICAgY29uc3QgdWludDhfdCAqZW5kID0gZGF0YSArIHNpemU7CisgICAg Y2hhciAqb3B0aW9uc19zdHIgPSBOVUxMOworICAgIGludCBvcHRpb25zX2xlbiA9IDA7CisKKyAg ICAvLyBFbnN1cmUgZmlsdGVyIGlzIHNldCAoY29tcGlsZWQgaW4pCisgICAgaWYgKCFmKSB7Cisj aWZkZWYgRkZNUEVHX0ZJTFRFUgorI2RlZmluZSBYU1RSKHMpIFNUUihzKQorI2RlZmluZSBTVFIo cykgI3MKKyAgICAgICAgZiA9IGF2ZmlsdGVyX2dldF9ieV9uYW1lKFhTVFIoRkZNUEVHX0ZJTFRF UikpOworI2VuZGlmCisgICAgICAgIGlmICghZikgeworICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRmlsdGVyIG5vdCBmb3VuZDogJXNcbiIsIFhTVFIoRkZNUEVHX0ZJTFRFUikpOworICAg ICAgICAgICAgIHJldHVybiAwOyAKKyAgICAgICAgfQorICAgICAgICBhdl9sb2dfc2V0X2xldmVs KEFWX0xPR19QQU5JQyk7CisgICAgfQorCisgICAgZ3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxv YygpOworICAgIGlmICghZ3JhcGgpIGVycm9yKCJGYWlsZWQgdG8gYWxsb2NhdGUgZ3JhcGgiKTsK KworICAgIC8vIFdlIG5lZWQgYXQgbGVhc3Qgc29tZSBkYXRhIGZvciBvcHRpb25zIGFuZCBmcmFt ZSBwYXJhbXMKKyAgICAvLyBMZXQncyByZXNlcnZlIHVwIHRvIDEwMjQgYnl0ZXMgZm9yIG9wdGlv bnMgaWYgYXZhaWxhYmxlCisgICAgaWYgKHNpemUgPiAwKSB7CisgICAgICAgIG9wdGlvbnNfbGVu ID0gc2l6ZSA+IDUxMiA/IDUxMiA6IHNpemU7CisgICAgICAgIG9wdGlvbnNfc3RyID0gYXZfbWFs bG9jKG9wdGlvbnNfbGVuICsgMSk7CisgICAgICAgIGlmICghb3B0aW9uc19zdHIpIGVycm9yKCJG YWlsZWQgdG8gYWxsb2NhdGUgb3B0aW9ucyIpOworICAgICAgICBtZW1jcHkob3B0aW9uc19zdHIs IGRhdGEsIG9wdGlvbnNfbGVuKTsKKyAgICAgICAgb3B0aW9uc19zdHJbb3B0aW9uc19sZW5dID0g MDsKKyAgICAgICAgZGF0YSArPSBvcHRpb25zX2xlbjsKKyAgICAgICAgc2l6ZSAtPSBvcHRpb25z X2xlbjsKKyAgICB9CisKKyAgICAvLyBEZXRlcm1pbmUgZmlsdGVyIHR5cGUgdG8gc2V0dXAgc291 cmNlL3NpbmsKKyAgICBpbnQgaXNfYXVkaW8gPSAwOworICAgIGlmIChmLT5pbnB1dHMgJiYgYXZm aWx0ZXJfcGFkX2dldF90eXBlKGYtPmlucHV0cywgMCkgPT0gQVZNRURJQV9UWVBFX0FVRElPKSBp c19hdWRpbyA9IDE7CisgICAgLy8gU29tZSBmaWx0ZXJzIG1pZ2h0IGhhdmUgbm8gaW5wdXRzIChz b3VyY2VzKSwgaGFuZGxlZCBzZXBhcmF0ZWx5PworICAgIC8vIEZvciBub3cgYXNzdW1lIDEgaW5w dXQgMSBvdXRwdXQgb3Igc2ltaWxhciBzdGFuZGFyZCBmaWx0ZXJzLgorICAgIAorICAgIGNvbnN0 IEFWRmlsdGVyICpidWZmZXJzcmMgPSBhdmZpbHRlcl9nZXRfYnlfbmFtZShpc19hdWRpbyA/ICJh YnVmZmVyIiA6ICJidWZmZXIiKTsKKyAgICBjb25zdCBBVkZpbHRlciAqYnVmZmVyc2luayA9IGF2 ZmlsdGVyX2dldF9ieV9uYW1lKGlzX2F1ZGlvID8gImFidWZmZXJzaW5rIiA6ICJidWZmZXJzaW5r Iik7CisgICAgCisgICAgY2hhciBzcmNfYXJnc1syNTZdOworICAgIGlmIChpc19hdWRpbykgewor ICAgICAgICAgc25wcmludGYoc3JjX2FyZ3MsIHNpemVvZihzcmNfYXJncyksICJ0aW1lX2Jhc2U9 MS80NDEwMDpzYW1wbGVfcmF0ZT00NDEwMDpzYW1wbGVfZm10PWZsdDpjaGFubmVsX2xheW91dD1z dGVyZW8iKTsKKyAgICB9IGVsc2UgeworICAgICAgICAgc25wcmludGYoc3JjX2FyZ3MsIHNpemVv ZihzcmNfYXJncyksICJ2aWRlb19zaXplPTY0MHg0ODA6cGl4X2ZtdD15dXY0MjBwOnRpbWVfYmFz ZT0xLzI1OnBpeGVsX2FzcGVjdD0xLzEiKTsKKyAgICB9CisKKyAgICByZXQgPSBhdmZpbHRlcl9n cmFwaF9jcmVhdGVfZmlsdGVyKCZzcmNfY3R4LCBidWZmZXJzcmMsICJpbiIsIHNyY19hcmdzLCBO VUxMLCBncmFwaCk7CisgICAgaWYgKHJldCA8IDApIGdvdG8gZW5kOworCisgICAgcmV0ID0gYXZm aWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmZmlsdF9jdHgsIGYsICJmaWx0ZXIiLCBvcHRpb25z X3N0ciwgTlVMTCwgZ3JhcGgpOworICAgIGlmIChyZXQgPCAwKSBnb3RvIGVuZDsKKworICAgIHJl dCA9IGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJnNpbmtfY3R4LCBidWZmZXJzaW5rLCAi b3V0IiwgTlVMTCwgTlVMTCwgZ3JhcGgpOworICAgIGlmIChyZXQgPCAwKSBnb3RvIGVuZDsKKwor ICAgIC8vIExpbmsKKyAgICBpZiAoc3JjX2N0eCAmJiBmaWx0X2N0eCkgeworICAgICAgICByZXQg PSBhdmZpbHRlcl9saW5rKHNyY19jdHgsIDAsIGZpbHRfY3R4LCAwKTsKKyAgICAgICAgaWYgKHJl dCA8IDApIGdvdG8gZW5kOworICAgIH0KKyAgICBpZiAoZmlsdF9jdHggJiYgc2lua19jdHgpIHsK KyAgICAgICAgcmV0ID0gYXZmaWx0ZXJfbGluayhmaWx0X2N0eCwgMCwgc2lua19jdHgsIDApOwor ICAgICAgICBpZiAocmV0IDwgMCkgZ290byBlbmQ7CisgICAgfQorCisgICAgcmV0ID0gYXZmaWx0 ZXJfZ3JhcGhfY29uZmlnKGdyYXBoLCBOVUxMKTsKKyAgICBpZiAocmV0IDwgMCkgZ290byBlbmQ7 CisKKyAgICAvLyBTZW5kIGEgZnJhbWUKKyAgICBmcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7Cisg ICAgaWYgKCFmcmFtZSkgZXJyb3IoIkZhaWxlZCB0byBhbGxvY2F0ZSBmcmFtZSIpOworICAgIAor ICAgIGlmIChpc19hdWRpbykgeworICAgICAgICBmcmFtZS0+bmJfc2FtcGxlcyA9IDEwMjQ7Cisg ICAgICAgIGZyYW1lLT5mb3JtYXQgPSBBVl9TQU1QTEVfRk1UX0ZMVDsKKyAgICAgICAgYXZfY2hh bm5lbF9sYXlvdXRfZGVmYXVsdCgmZnJhbWUtPmNoX2xheW91dCwgMik7CisgICAgICAgIGZyYW1l LT5zYW1wbGVfcmF0ZSA9IDQ0MTAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLT53aWR0 aCA9IDY0MDsKKyAgICAgICAgZnJhbWUtPmhlaWdodCA9IDQ4MDsKKyAgICAgICAgZnJhbWUtPmZv cm1hdCA9IEFWX1BJWF9GTVRfWVVWNDIwUDsKKyAgICB9CisgICAgCisgICAgcmV0ID0gYXZfZnJh bWVfZ2V0X2J1ZmZlcihmcmFtZSwgMCk7CisgICAgaWYgKHJldCA8IDApIGdvdG8gZW5kOworCisg ICAgLy8gRmlsbCBmcmFtZSB3aXRoIGZ1enogZGF0YSBpZiBhdmFpbGFibGUKKyAgICBpZiAoc2l6 ZSA+IDApIHsKKyAgICAgICAgaW50IGNvcHlfc2l6ZSA9IHNpemU7CisgICAgICAgIC8vIE5haXZl IGZpbGwsIGp1c3QgY29weSBpbnRvIGZpcnN0IHBsYW5lCisgICAgICAgIGlmIChjb3B5X3NpemUg PiBmcmFtZS0+YnVmWzBdLT5zaXplKSBjb3B5X3NpemUgPSBmcmFtZS0+YnVmWzBdLT5zaXplOwor ICAgICAgICBtZW1jcHkoZnJhbWUtPmRhdGFbMF0sIGRhdGEsIGNvcHlfc2l6ZSk7CisgICAgfQor CisgICAgcmV0ID0gYXZfYnVmZmVyc3JjX2FkZF9mcmFtZShzcmNfY3R4LCBmcmFtZSk7CisgICAg aWYgKHJldCA8IDApIGdvdG8gZW5kOworCisgICAgLy8gUmVjZWl2ZSBvdXRwdXQKKyAgICB3aGls ZSAoMSkgeworICAgICAgICBBVkZyYW1lICpvdXQgPSBhdl9mcmFtZV9hbGxvYygpOworICAgICAg ICByZXQgPSBhdl9idWZmZXJzaW5rX2dldF9mcmFtZShzaW5rX2N0eCwgb3V0KTsKKyAgICAgICAg YXZfZnJhbWVfZnJlZSgmb3V0KTsKKyAgICAgICAgaWYgKHJldCA8IDApIGJyZWFrOworICAgIH0K KworZW5kOgorICAgIGlmIChvcHRpb25zX3N0cikgYXZfZnJlZShvcHRpb25zX3N0cik7CisgICAg aWYgKGZyYW1lKSBhdl9mcmFtZV9mcmVlKCZmcmFtZSk7CisgICAgaWYgKGdyYXBoKSBhdmZpbHRl cl9ncmFwaF9mcmVlKCZncmFwaCk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg YS90b29scy90YXJnZXRfYXZ1dGlsX2Z1enplci5jIGIvdG9vbHMvdGFyZ2V0X2F2dXRpbF9mdXp6 ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZDYyMWY0OTE1Ci0t LSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGFyZ2V0X2F2dXRpbF9mdXp6ZXIuYwpAQCAtMCwwICsx LDgyIEBACisvKgorICogRnV6emVyIGZvciBsaWJhdnV0aWwKKyAqCisgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp dGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy MTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImxpYmF2 dXRpbC9hdnV0aWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvZXZhbC5oIgorI2luY2x1ZGUgImxp YmF2dXRpbC9tZW0uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisKK2ludCBMTFZNRnV6 emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKTsKKworLy8g RHVtbXkgY2xhc3MgZm9yIG9wdGlvbiBmdXp6aW5nCit0eXBlZGVmIHN0cnVjdCBEdW1teUNvbnRl eHQgeworICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOworICAgIGludCBpbnRfdmFsOworICAgIGNo YXIgKnN0cl92YWw7CisgICAgZG91YmxlIGRibF92YWw7CisgICAgaW50NjRfdCBpNjRfdmFsOwor fSBEdW1teUNvbnRleHQ7CisKK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBkdW1teV9vcHRpb25zW10g PSB7CisgICAgeyAiaW50IiwgImludGVnZXIgb3B0aW9uIiwgb2Zmc2V0b2YoRHVtbXlDb250ZXh0 LCBpbnRfdmFsKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDB9LCBJTlRfTUlOLCBJTlRfTUFY LCAwIH0sCisgICAgeyAic3RyIiwgInN0cmluZyBvcHRpb24iLCBvZmZzZXRvZihEdW1teUNvbnRl eHQsIHN0cl92YWwpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gTlVMTH0sIDAsIDAsIDAg fSwKKyAgICB7ICJkYmwiLCAiZG91YmxlIG9wdGlvbiIsIG9mZnNldG9mKER1bW15Q29udGV4dCwg ZGJsX3ZhbCksIEFWX09QVF9UWVBFX0RPVUJMRSwgey5kYmwgPSAwfSwgLTEwMC4wLCAxMDAuMCwg MCB9LAorICAgIHsgImk2NCIsICJpbnQ2NCBvcHRpb24iLCBvZmZzZXRvZihEdW1teUNvbnRleHQs IGk2NF92YWwpLCBBVl9PUFRfVFlQRV9JTlQ2NCwgey5pNjQgPSAwfSwgSU5UNjRfTUlOLCBJTlQ2 NF9NQVgsIDAgfSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xhc3MgZHVt bXlfY2xhc3MgPSB7CisgICAgLmNsYXNzX25hbWUgPSAiRHVtbXkiLAorICAgIC5pdGVtX25hbWUg ID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCisgICAgLm9wdGlvbiAgICAgPSBkdW1teV9vcHRpb25z LAorICAgIC52ZXJzaW9uICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAorfTsKKworaW50IExM Vk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsK KyAgICBjaGFyICpzdHI7CisgICAgCisgICAgLy8gTGltaXQgc2l6ZSB0byBhdm9pZCBleGNlc3Np dmUgcHJvY2Vzc2luZyB0aW1lCisgICAgaWYgKHNpemUgPiA4MTkyKSBzaXplID0gODE5MjsKKwor ICAgIHN0ciA9IGF2X21hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCFzdHIpIHJldHVybiAwOwor ICAgIAorICAgIG1lbWNweShzdHIsIGRhdGEsIHNpemUpOworICAgIHN0cltzaXplXSA9IDA7CisK KyNpZmRlZiBGRk1QRUdfQVZVVElMX09QVAorICAgIER1bW15Q29udGV4dCBvYmogPSB7IC5jbGFz cyA9ICZkdW1teV9jbGFzcyB9OworICAgIGF2X29wdF9zZXRfZGVmYXVsdHMoJm9iaik7CisgICAg CisgICAgLy8gRnV6eiBvcHRpb24gcGFyc2luZyAoa2V5PXZhbHVlOmtleTI9dmFsdWUyLi4uKQor ICAgIGF2X3NldF9vcHRpb25zX3N0cmluZygmb2JqLCBzdHIsICI9IiwgIjoiKTsKKyAgICAKKyAg ICBhdl9vcHRfZnJlZSgmb2JqKTsKKyNlbHNlCisgICAgLy8gRGVmYXVsdDogYXZfZXhwcgorICAg IGRvdWJsZSByZXM7CisgICAgLy8gRnV6eiBhdl9leHByX3BhcnNlX2FuZF9ldmFsCisgICAgYXZf ZXhwcl9wYXJzZV9hbmRfZXZhbCgmcmVzLCBzdHIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsIDAsIE5VTEwpOworI2VuZGlmCisgICAgCisgICAgYXZfZnJlZShzdHIp OworICAgIHJldHVybiAwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3Rvb2xzL3RhcmdldF9jbGlfZnV6emVyLmMgYi90b29scy90YXJnZXRfY2xpX2Z1enplci5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVjZWU3MzIwMzkKLS0tIC9k ZXYvbnVsbAorKysgYi90b29scy90YXJnZXRfY2xpX2Z1enplci5jCkBAIC0wLDAgKzEsMTIzIEBA CisvKgorICogRnV6emVyIGZvciBmZm1wZWcgQ0xJIG9wdGlvbiBwYXJzaW5nCisgKgorICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z dG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzZXRqbXAuaD4K KworI2luY2x1ZGUgImZmdG9vbHMvZmZtcGVnLmgiCisjaW5jbHVkZSAiZmZ0b29scy9mZm1wZWdf c2NoZWQuaCIKKworLy8gR2xvYmFscyBmcm9tIGZmbXBlZy5jIHRoYXQgbmVlZCByZXNldHRpbmcK K2V4dGVybiBpbnQgbmJfaW5wdXRfZmlsZXM7CitleHRlcm4gaW50IG5iX291dHB1dF9maWxlczsK K2V4dGVybiBpbnQgbmJfZmlsdGVyZ3JhcGhzOworZXh0ZXJuIGludCBuYl9kZWNvZGVyczsKKwor Ly8gRXh0ZXJuIGZ1bmN0aW9uIGZyb20gZmZtcGVnX29wdC5jCitpbnQgZmZtcGVnX3BhcnNlX29w dGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBTY2hlZHVsZXIgKnNjaCk7CisKK3N0YXRpYyBq bXBfYnVmIGptcF9lbnY7CisKKy8vIE1vY2sgZXhpdCB0byByZXR1cm4gY29udHJvbCB0byBmdXp6 ZXIKK3ZvaWQgX193cmFwX2V4aXQoaW50IHN0YXR1cykgeworICAgIGxvbmdqbXAoam1wX2Vudiwg MSk7Cit9CisKKy8vIE1vY2sgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcHJvYmxlbWF0 aWMgb3IgdW53YW50ZWQgZHVyaW5nIGZ1enppbmcKKy8vIEZvciBub3csIHdlIGFzc3VtZSBvdGhl cnMgYXJlIHNhZmUgb3IgaGFuZGxlZCBieSBmZm1wZWdfY2xlYW51cAorCitpbnQgTExWTUZ1enpl clRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKK2ludCBM TFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7 CisgICAgaW50IGFyZ2MgPSAwOworICAgIGNoYXIgKiphcmd2ID0gTlVMTDsKKyAgICBjaGFyICpp bnB1dF9jb3B5ID0gTlVMTDsKKyAgICBTY2hlZHVsZXIgKnNjaCA9IE5VTEw7CisKKyAgICAvLyBX ZSBuZWVkIGF0IGxlYXN0ICJmZm1wZWciIGFzIGFyZ3ZbMF0KKyAgICAvLyBQYXJzZSBkYXRhIGlu dG8gYXJndi4gV2UgdHJlYXQgbnVsbCBieXRlcyBvciBuZXdsaW5lcyBhcyBzZXBhcmF0b3JzPwor ICAgIC8vIE9yIGp1c3QgbnVsbCBieXRlcy4KKyAgICAvLyBMZXQncyBjcmVhdGUgYSBjb3B5IG9m IGRhdGEgdG8gYmUgc2FmZSBhbmQgbXV0YWJsZQorICAgIGlucHV0X2NvcHkgPSBtYWxsb2Moc2l6 ZSArIDEpOworICAgIGlmICghaW5wdXRfY29weSkgcmV0dXJuIDA7CisgICAgbWVtY3B5KGlucHV0 X2NvcHksIGRhdGEsIHNpemUpOworICAgIGlucHV0X2NvcHlbc2l6ZV0gPSAwOworCisgICAgLy8g Q291bnQgYXJncworICAgIGFyZ2MgPSAxOyAvLyBhcmd2WzBdCisgICAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGlucHV0X2NvcHlbaV0gPT0gMCB8fCBp bnB1dF9jb3B5W2ldID09ICdcbicpIHsKKyAgICAgICAgICAgIGFyZ2MrKzsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGFyZ3YgPSBtYWxsb2MoKGFyZ2MgKyAxKSAqIHNpemVvZihjaGFyICopKTsK KyAgICBpZiAoIWFyZ3YpIHsKKyAgICAgICAgZnJlZShpbnB1dF9jb3B5KTsKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorCisgICAgYXJndlswXSA9ICJmZm1wZWciOworICAgIGludCBjdXJyZW50 X2FyZyA9IDE7CisgICAgY2hhciAqcHRyID0gaW5wdXRfY29weTsKKyAgICBjaGFyICplbmQgPSBp bnB1dF9jb3B5ICsgc2l6ZTsKKyAgICAKKyAgICAvLyBTaW1wbGUgdG9rZW5pemVyCisgICAgY2hh ciAqdG9rZW4gPSBwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7 CisgICAgICAgIGlmIChpbnB1dF9jb3B5W2ldID09IDAgfHwgaW5wdXRfY29weVtpXSA9PSAnXG4n KSB7CisgICAgICAgICAgICBpbnB1dF9jb3B5W2ldID0gMDsgLy8gRW5zdXJlIG51bGwgdGVybWlu YXRpb24KKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZyA8IGFyZ2MpIHsKKyAgICAgICAgICAg ICAgICBhcmd2W2N1cnJlbnRfYXJnKytdID0gdG9rZW47CisgICAgICAgICAgICB9CisgICAgICAg ICAgICB0b2tlbiA9ICZpbnB1dF9jb3B5W2krMV07CisgICAgICAgIH0KKyAgICB9CisgICAgYXJn dlthcmdjXSA9IE5VTEw7CisKKyAgICAvLyBBbGxvY2F0ZSBzY2hlZHVsZXIKKyAgICBzY2ggPSBz Y2hfYWxsb2MoKTsKKyAgICBpZiAoIXNjaCkgZ290byBlbmQ7CisKKyAgICAvLyBQcmVwYXJlIHRv IGNhdGNoIGV4aXQKKyAgICBpZiAoc2V0am1wKGptcF9lbnYpID09IDApIHsKKyAgICAgICAgLy8g UnVuIG9wdGlvbiBwYXJzaW5nCisgICAgICAgIC8vIFRoaXMgd2lsbCBsaWtlbHkgZmFpbCBhbmQg Y2FsbCBleGl0KCkgb2Z0ZW4gd2l0aCBmdXp6IGRhdGEKKyAgICAgICAgZmZtcGVnX3BhcnNlX29w dGlvbnMoYXJnYywgYXJndiwgc2NoKTsKKyAgICB9CisKKyAgICAvLyBDbGVhbnVwCisgICAgZmZt cGVnX2NsZWFudXAoMCk7CisgICAgCisgICAgLy8gUmVzZXQgZ2xvYmFscyB0byBhbGxvdyBuZXh0 IHJ1bgorICAgIG5iX2lucHV0X2ZpbGVzID0gMDsKKyAgICBuYl9vdXRwdXRfZmlsZXMgPSAwOwor ICAgIG5iX2ZpbHRlcmdyYXBocyA9IDA7CisgICAgbmJfZGVjb2RlcnMgPSAwOworICAgIC8vIEFs c28gcmVzZXQgb3B0aW9uIGdsb2JhbHMgaWYgcG9zc2libGU/IHVuaW5pdF9vcHRzIGNhbGxlZCBp biBjbGVhbnVwCisKK2VuZDoKKyAgICBpZiAoc2NoKSBzY2hfZnJlZSgmc2NoKTsKKyAgICBmcmVl KGFyZ3YpOworICAgIGZyZWUoaW5wdXRfY29weSk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS90b29scy90YXJnZXRfbXV4X2Z1enplci5jIGIvdG9vbHMvdGFyZ2V0X211eF9mdXp6ZXIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40YzBiOTA0ZmUzCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvdGFyZ2V0X211eF9mdXp6ZXIuYwpAQCAtMCwwICsxLDE2NCBA QAorLyoKKyAqIEZ1enplciBmb3IgbGliYXZmb3JtYXQgbXV4ZXJzCisgKgorICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg KgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIK KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorCitpbnQgTExWTUZ1enplclRlc3RP bmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyB2b2lk IGVycm9yKGNvbnN0IGNoYXIgKmVycikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgZXJy KTsKKyAgICBleGl0KDEpOworfQorCisvLyBHbG9iYWwgbXV4ZXIgdG8gZnV6ei4KK3N0YXRpYyBj b25zdCBBVk91dHB1dEZvcm1hdCAqZm10ID0gTlVMTDsKKworLy8gTW9jayBJTyB0byBkaXNjYXJk IG91dHB1dAorc3RhdGljIGludCB3cml0ZV9wYWNrZXQodm9pZCAqb3BhcXVlLCBjb25zdCB1aW50 OF90ICpidWYsIGludCBidWZfc2l6ZSkKK3sKKyAgICByZXR1cm4gYnVmX3NpemU7Cit9CisKK2lu dCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXpl KSB7CisgICAgQVZGb3JtYXRDb250ZXh0ICpvYyA9IE5VTEw7CisgICAgQVZQYWNrZXQgKnBrdCA9 IE5VTEw7CisgICAgQVZJT0NvbnRleHQgKnBiID0gTlVMTDsKKyAgICB1aW50OF90ICppb19idWZm ZXIgPSBOVUxMOworICAgIGludCBpb19idWZmZXJfc2l6ZSA9IDMyNzY4OworICAgIGludCByZXQ7 CisgICAgY29uc3QgdWludDhfdCAqZW5kID0gZGF0YSArIHNpemU7CisKKyAgICBpZiAoIWZtdCkg eworI2lmZGVmIEZGTVBFR19NVVhFUgorI2RlZmluZSBYU1RSKHMpIFNUUihzKQorI2RlZmluZSBT VFIocykgI3MKKyAgICAgICAgZm10ID0gYXZfZ3Vlc3NfZm9ybWF0KFhTVFIoRkZNUEVHX01VWEVS KSwgTlVMTCwgTlVMTCk7CisjZW5kaWYKKyAgICAgICAgLy8gRmFsbGJhY2sgdG8gYSBjb21tb24g ZGVmYXVsdCBpZiBub3Qgc3BlY2lmaWVkCisgICAgICAgIGlmICghZm10KSBmbXQgPSBhdl9ndWVz c19mb3JtYXQoIm1wNCIsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIWZtdCkgcmV0dXJuIDA7 CisgICAgICAgIGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1BBTklDKTsKKyAgICB9CisKKyAgICBp ZiAoc2l6ZSA8IDE2KSByZXR1cm4gMDsKKworICAgIC8vIEFsbG9jYXRlIElPIGJ1ZmZlcgorICAg IGlvX2J1ZmZlciA9IGF2X21hbGxvYyhpb19idWZmZXJfc2l6ZSk7CisgICAgaWYgKCFpb19idWZm ZXIpIHJldHVybiAwOworCisgICAgcGIgPSBhdmlvX2FsbG9jX2NvbnRleHQoaW9fYnVmZmVyLCBp b19idWZmZXJfc2l6ZSwgMSwgTlVMTCwgTlVMTCwgd3JpdGVfcGFja2V0LCBOVUxMKTsKKyAgICBp ZiAoIXBiKSB7CisgICAgICAgIGF2X2ZyZWUoaW9fYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIDA7 CisgICAgfQorCisgICAgcmV0ID0gYXZmb3JtYXRfYWxsb2Nfb3V0cHV0X2NvbnRleHQyKCZvYywg Zm10LCBOVUxMLCBOVUxMKTsKKyAgICBpZiAocmV0IDwgMCB8fCAhb2MpIHsKKyAgICAgICAgYXZp b19jb250ZXh0X2ZyZWUoJnBiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG9jLT5w YiA9IHBiOworCisgICAgLy8gUGFyc2UgZnV6eiBkYXRhIHRvIGNyZWF0ZSBzdHJlYW1zCisgICAg Ly8gRmlyc3QgYnl0ZTogbnVtYmVyIG9mIHN0cmVhbXMgKGNhcCBhdCAxMCkKKyAgICBpbnQgbmJf c3RyZWFtcyA9IGRhdGFbMF0gJSAxMDsKKyAgICBpZiAobmJfc3RyZWFtcyA9PSAwKSBuYl9zdHJl YW1zID0gMTsKKyAgICBkYXRhKys7IAorICAgIHNpemUtLTsKKworICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIEFWU3RyZWFtICpzdCA9IGF2Zm9ybWF0 X25ld19zdHJlYW0ob2MsIE5VTEwpOworICAgICAgICBpZiAoIXN0KSBicmVhazsKKyAgICAgICAg CisgICAgICAgIC8vIFJhbmRvbWl6ZSBzdHJlYW0gY29kZWMgcGFyYW1ldGVycworICAgICAgICBp ZiAoc2l6ZSA8IDQpIGJyZWFrOworICAgICAgICB1aW50MzJfdCBjb2RlY190YWcgPSBBVl9STDMy KGRhdGEpOworICAgICAgICBkYXRhICs9IDQ7IHNpemUgLT0gNDsKKyAgICAgICAgCisgICAgICAg IHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9IChpICUgMiA9PSAwKSA/IEFWTUVESUFfVFlQRV9W SURFTyA6IEFWTUVESUFfVFlQRV9BVURJTzsKKyAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19p ZCA9IEFWX0NPREVDX0lEX0gyNjQ7IC8vIERlZmF1bHQgdG8gc29tZXRoaW5nIGNvbW1vbgorICAg ICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX3RhZyA9IGNvZGVjX3RhZzsKKyAgICAgICAgc3QtPnRp bWVfYmFzZSA9IChBVlJhdGlvbmFsKXsxLCAyNX07CisgICAgICAgIAorICAgICAgICBpZiAoc3Qt PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworICAgICAgICAg ICAgc3QtPmNvZGVjcGFyLT53aWR0aCA9IDY0MDsKKyAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+ aGVpZ2h0ID0gNDgwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3QtPmNvZGVjcGFy LT5zYW1wbGVfcmF0ZSA9IDQ0MTAwOworICAgICAgICAgICAgYXZfY2hhbm5lbF9sYXlvdXRfZGVm YXVsdCgmc3QtPmNvZGVjcGFyLT5jaF9sYXlvdXQsIDIpOworICAgICAgICB9CisgICAgfQorCisg ICAgLy8gV3JpdGUgaGVhZGVyCisgICAgaWYgKGF2Zm9ybWF0X3dyaXRlX2hlYWRlcihvYywgTlVM TCkgPCAwKSB7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKworICAgIHBrdCA9IGF2X3BhY2tl dF9hbGxvYygpOworICAgIGlmICghcGt0KSBnb3RvIGVuZDsKKworICAgIC8vIFBhY2tldCBsb29w CisgICAgd2hpbGUgKHNpemUgPiAxNikgeworICAgICAgICAvLyBbc3RyZWFtX2lkeCAxYl1bcHRz IDhiXVtkdHMgOGJdW2ZsYWdzIDFiXVtzaXplIDJiXVtkYXRhIC4uLl0KKyAgICAgICAgdWludDhf dCBzdHJlYW1faWR4ID0gZGF0YVswXTsKKyAgICAgICAgaW50NjRfdCBwdHMgPSBBVl9STDY0KGRh dGEgKyAxKTsKKyAgICAgICAgaW50NjRfdCBkdHMgPSBBVl9STDY0KGRhdGEgKyA5KTsKKyAgICAg ICAgaW50IGZsYWdzID0gZGF0YVsxN107CisgICAgICAgIGludCBwYXlsb2FkX3NpemUgPSBBVl9S TDE2KGRhdGEgKyAxOCk7CisgICAgICAgIGRhdGEgKz0gMjA7IHNpemUgLT0gMjA7CisKKyAgICAg ICAgaWYgKG9jLT5uYl9zdHJlYW1zID09IDApIGJyZWFrOworICAgICAgICBzdHJlYW1faWR4ICU9 IG9jLT5uYl9zdHJlYW1zOworCisgICAgICAgIGlmIChwYXlsb2FkX3NpemUgPiBzaXplKSBwYXls b2FkX3NpemUgPSBzaXplOworCisgICAgICAgIC8vIFBvcHVsYXRlIHBhY2tldAorICAgICAgICBh dl9uZXdfcGFja2V0KHBrdCwgcGF5bG9hZF9zaXplKTsKKyAgICAgICAgbWVtY3B5KHBrdC0+ZGF0 YSwgZGF0YSwgcGF5bG9hZF9zaXplKTsKKyAgICAgICAgcGt0LT5zdHJlYW1faW5kZXggPSBzdHJl YW1faWR4OworICAgICAgICBwa3QtPnB0cyA9IHB0czsKKyAgICAgICAgcGt0LT5kdHMgPSBkdHM7 CisgICAgICAgIHBrdC0+ZmxhZ3MgPSBmbGFnczsKKworICAgICAgICAvLyBNdXgKKyAgICAgICAg YXZfaW50ZXJsZWF2ZWRfd3JpdGVfZnJhbWUob2MsIHBrdCk7CisgICAgICAgIGF2X3BhY2tldF91 bnJlZihwa3QpOworCisgICAgICAgIGRhdGEgKz0gcGF5bG9hZF9zaXplOworICAgICAgICBzaXpl IC09IHBheWxvYWRfc2l6ZTsKKyAgICB9CisKKyAgICBhdl93cml0ZV90cmFpbGVyKG9jKTsKKwor ZW5kOgorICAgIGF2X3BhY2tldF9mcmVlKCZwa3QpOworICAgIC8vIGZyZWUgb3V0cHV0IGNvbnRl eHQgYmVmb3JlIElPIGJlY2F1c2UgaXQgbWlnaHQgZmx1c2gKKyAgICBpZiAob2MpIGF2Zm9ybWF0 X2ZyZWVfY29udGV4dChvYyk7CisgICAgaWYgKHBiKSBhdmlvX2NvbnRleHRfZnJlZSgmcGIpOyAK KyAgICAvLyBpb19idWZmZXIgaXMgZnJlZWQgYnkgYXZpb19jb250ZXh0X2ZyZWUKKyAgICAKKyAg ICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rvb2xzL3RhcmdldF9uZXR3b3JrX2Z1enplci5j IGIvdG9vbHMvdGFyZ2V0X25ldHdvcmtfZnV6emVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uYWFhYTU0M2IyOQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rhcmdl dF9uZXR3b3JrX2Z1enplci5jCkBAIC0wLDAgKzEsMjA3IEBACisvKgorICogRnV6emVyIGZvciBu ZXR3b3JrIHByb3RvY29scyAobW9ja2luZyBzb2NrZXRzKQorICoKKyAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAibGliYXZm b3JtYXQvYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC91cmwuaCIKKyNpbmNsdWRl ICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL29wdC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGRiLmg+Cisj aW5jbHVkZSA8cG9sbC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K KworLy8gLS0tIE1vY2sgU3RhdGUgLS0tCitzdGF0aWMgY29uc3QgdWludDhfdCAqZ19mdXp6X2Rh dGEgPSBOVUxMOworc3RhdGljIHNpemVfdCBnX2Z1enpfc2l6ZSA9IDA7CitzdGF0aWMgc2l6ZV90 IGdfZnV6el9wb3MgPSAwOworc3RhdGljIGludCBnX2Zha2VfZmQgPSA0MjsgLy8gYXJiaXRyYXJ5 IG51bWJlcgorCisvLyAtLS0gTW9jayBGdW5jdGlvbnMgLS0tCisKK2ludCBfX3dyYXBfc29ja2V0 KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpIHsKKyAgICByZXR1cm4gZ19mYWtl X2ZkOworfQorCitpbnQgX193cmFwX2Nvbm5lY3QoaW50IHNvY2tmZCwgY29uc3Qgc3RydWN0IHNv Y2thZGRyICphZGRyLCBzb2NrbGVuX3QgYWRkcmxlbikgeworICAgIGlmIChzb2NrZmQgIT0gZ19m YWtlX2ZkKSByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7IC8vIFN1Y2Nlc3MKK30KKworaW50IF9f d3JhcF9iaW5kKGludCBzb2NrZmQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xl bl90IGFkZHJsZW4pIHsKKyAgICByZXR1cm4gMDsKK30KKworaW50IF9fd3JhcF9saXN0ZW4oaW50 IHNvY2tmZCwgaW50IGJhY2tsb2cpIHsKKyAgICByZXR1cm4gMDsKK30KKworaW50IF9fd3JhcF9h Y2NlcHQoaW50IHNvY2tmZCwgc3RydWN0IHNvY2thZGRyICphZGRyLCBzb2NrbGVuX3QgKmFkZHJs ZW4pIHsKKyAgICByZXR1cm4gLTE7IC8vIE5vdCBmdXp6aW5nIHNlcnZlciBzaWRlIHlldAorfQor Citzc2l6ZV90IF9fd3JhcF9yZWN2KGludCBzb2NrZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwg aW50IGZsYWdzKSB7CisgICAgaWYgKHNvY2tmZCAhPSBnX2Zha2VfZmQpIHsKKyAgICAgICAgZXJy bm8gPSBFQkFERjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICBpZiAoZ19m dXp6X3BvcyA+PSBnX2Z1enpfc2l6ZSkgeworICAgICAgICAvLyBFT0YKKyAgICAgICAgcmV0dXJu IDA7IAorICAgIH0KKworICAgIHNpemVfdCByZW1haW5pbmcgPSBnX2Z1enpfc2l6ZSAtIGdfZnV6 el9wb3M7CisgICAgc2l6ZV90IHRvX3JlYWQgPSBsZW4gPCByZW1haW5pbmcgPyBsZW4gOiByZW1h aW5pbmc7CisgICAgCisgICAgaWYgKHRvX3JlYWQgPT0gMCkgcmV0dXJuIDA7CisKKyAgICBtZW1j cHkoYnVmLCBnX2Z1enpfZGF0YSArIGdfZnV6el9wb3MsIHRvX3JlYWQpOworICAgIGdfZnV6el9w b3MgKz0gdG9fcmVhZDsKKyAgICByZXR1cm4gdG9fcmVhZDsKK30KKworc3NpemVfdCBfX3dyYXBf c2VuZChpbnQgc29ja2ZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sIGludCBmbGFncykg eworICAgIGlmIChzb2NrZmQgIT0gZ19mYWtlX2ZkKSB7CisgICAgICAgIGVycm5vID0gRUJBREY7 CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLy8gU2luayB0aGUgZGF0YQorICAgIHJl dHVybiBsZW47Cit9CisKK2ludCBfX3dyYXBfc2h1dGRvd24oaW50IHNvY2tmZCwgaW50IGhvdykg eworICAgIHJldHVybiAwOworfQorCitpbnQgX193cmFwX2Nsb3NlKGludCBmZCkgeworICAgIGlm IChmZCA9PSBnX2Zha2VfZmQpIHJldHVybiAwOworICAgIC8vIENhbGwgcmVhbCBjbG9zZT8gV2Ug Y2FuJ3QgZWFzaWx5IHdpdGhvdXQgZGxzeW0uCisgICAgLy8gSnVzdCBhc3N1bWUgaXQncyBmaW5l IG9yIG5vLW9wLgorICAgIHJldHVybiAwOworfQorCitpbnQgX193cmFwX3NldHNvY2tvcHQoaW50 IHNvY2tmZCwgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBj b25zdCB2b2lkICpvcHR2YWwsIHNvY2tsZW5fdCBvcHRsZW4pIHsKKyAgICByZXR1cm4gMDsKK30K KworaW50IF9fd3JhcF9nZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5h bWUsCisgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3B0dmFsLCBzb2NrbGVuX3QgKm9wdGxl bikgeworICAgIC8vIEZha2UgYnVmZmVyIHNpemUgdG8gYXZvaWQgZXJyb3JzCisgICAgaWYgKGxl dmVsID09IFNPTF9TT0NLRVQgJiYgb3B0bmFtZSA9PSBTT19SQ1ZCVUYpIHsKKyAgICAgICAgaW50 ICp2YWwgPSAoaW50KilvcHR2YWw7CisgICAgICAgICp2YWwgPSAzMjc2ODsKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQgX193cmFwX2ZjbnRsKGludCBm ZCwgaW50IGNtZCwgLi4uKSB7CisgICAgcmV0dXJuIDA7IC8vIFN1Y2Nlc3MKK30KKworaW50IF9f d3JhcF9wb2xsKHN0cnVjdCBwb2xsZmQgKmZkcywgbmZkc190IG5mZHMsIGludCB0aW1lb3V0KSB7 CisgICAgZm9yIChuZmRzX3QgaSA9IDA7IGkgPCBuZmRzOyBpKyspIHsKKyAgICAgICAgaWYgKGZk c1tpXS5mZCA9PSBnX2Zha2VfZmQpIHsKKyAgICAgICAgICAgIGZkc1tpXS5yZXZlbnRzID0gMDsK KyAgICAgICAgICAgIGlmIChmZHNbaV0uZXZlbnRzICYgUE9MTElOKSB7CisgICAgICAgICAgICAg ICAgLy8gQWx3YXlzIHNheSByZWFkYWJsZSwgc28gcmVjdiBpcyBjYWxsZWQuIAorICAgICAgICAg ICAgICAgIC8vIHJlY3Ygd2lsbCByZXR1cm4gMCBpZiBlbXB0eS9FT0YuCisgICAgICAgICAgICAg ICAgZmRzW2ldLnJldmVudHMgfD0gUE9MTElOOworICAgICAgICAgICAgfQorICAgICAgICAgICAg aWYgKGZkc1tpXS5ldmVudHMgJiBQT0xMT1VUKSB7CisgICAgICAgICAgICAgICAgZmRzW2ldLnJl dmVudHMgfD0gUE9MTE9VVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBy ZXR1cm4gbmZkczsKK30KKworaW50IF9fd3JhcF9nZXRhZGRyaW5mbyhjb25zdCBjaGFyICpub2Rl LCBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYWRkcmluZm8gKmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkcmlu Zm8gKipyZXMpIHsKKyAgICAvLyBSZXR1cm4gYSBmYWtlIGFkZHJlc3MKKyAgICBzdHJ1Y3QgYWRk cmluZm8gKmFpID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsKKyAgICBzdHJ1 Y3Qgc29ja2FkZHJfaW4gKnNhID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4p KTsKKyAgICAKKyAgICBzYS0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgc2EtPnNpbl9wb3J0 ID0gaHRvbnMoODApOworICAgIHNhLT5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCgweDdGMDAwMDAx KTsgLy8gMTI3LjAuMC4xCisKKyAgICBhaS0+YWlfZmFtaWx5ID0gQUZfSU5FVDsKKyAgICBhaS0+ YWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKyAgICBhaS0+YWlfcHJvdG9jb2wgPSBJUFBST1RP X1RDUDsKKyAgICBhaS0+YWlfYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIqKXNhOworICAgIGFpLT5h aV9hZGRybGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisgICAgCisgICAgKnJlcyA9 IGFpOworICAgIHJldHVybiAwOworfQorCit2b2lkIF9fd3JhcF9mcmVlYWRkcmluZm8oc3RydWN0 IGFkZHJpbmZvICpyZXMpIHsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIGZyZWUocmVzLT5haV9h ZGRyKTsKKyAgICAgICAgZnJlZShyZXMpOworICAgIH0KK30KKworCisvLyAtLS0gRnV6emVyIEVu dHJ5IC0tLQorCitpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRh LCBzaXplX3Qgc2l6ZSkgeworICAgIEFWRm9ybWF0Q29udGV4dCAqZm10ID0gTlVMTDsKKyAgICBp bnQgcmV0OworICAgIAorICAgIC8vIFNldHVwIGZ1enogZGF0YQorICAgIGdfZnV6el9kYXRhID0g ZGF0YTsKKyAgICBnX2Z1enpfc2l6ZSA9IHNpemU7CisgICAgZ19mdXp6X3BvcyA9IDA7CisKKyAg ICAvLyBXZSB0YXJnZXQgSFRUUCBmb3Igbm93IGFzIGl0J3MgdGhlIG1vc3QgY29tbW9uIGNvbXBs ZXggcHJvdG9jb2wuCisgICAgLy8gVGhlIGlucHV0IGRhdGEgd2lsbCBiZSAicmVhZCIgYnkgdGhl IEhUVFAgY2xpZW50IGFzIHRoZSBzZXJ2ZXIgcmVzcG9uc2UuCisgICAgLy8gTm90ZTogSFRUUCBj bGllbnQgd3JpdGVzIGEgcmVxdWVzdCBmaXJzdC4gT3VyIG1vY2sgc2VuZCBzaW5rcyBpdC4KKyAg ICAvLyBUaGVuIGl0IHJlYWRzIHJlc3BvbnNlLgorICAgIAorICAgIC8vIFdlIG5lZWQgdG8gdXNl IGEgZHVtbXkgVVJMIHRoYXQgdHJpZ2dlcnMgVENQLgorICAgIC8vICJodHRwOi8vMTI3LjAuMC4x LyIKKyAgICAKKyAgICAvLyBUbyBmdXp6IGRpZmZlcmVudCBwcm90b2NvbHMsIHdlIGNvdWxkIGxv b2sgYXQgdGhlIGZpcnN0IGJ5dGUgb2YgZGF0YT8KKyAgICAvLyBPciBqdXN0IGhhcmRjb2RlIGZv ciBub3cuCisgICAgCisgICAgcmV0ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmZm10LCAiaHR0cDov LzEyNy4wLjAuMS9mdXp6IiwgTlVMTCwgTlVMTCk7CisgICAgaWYgKHJldCA+PSAwKSB7CisgICAg ICAgIC8vIElmIG9wZW5lZCBzdWNjZXNzZnVsbHksIHJlYWQgc29tZSBwYWNrZXRzCisgICAgICAg IEFWUGFja2V0ICpwa3QgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAgICAgICAgaW50IGkgPSAwOwor ICAgICAgICB3aGlsZSAoaSsrIDwgMTAwICYmIGF2X3JlYWRfZnJhbWUoZm10LCBwa3QpID49IDAp IHsKKyAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihwa3QpOworICAgICAgICB9CisgICAgICAg IGF2X3BhY2tldF9mcmVlKCZwa3QpOworICAgICAgICBhdmZvcm1hdF9jbG9zZV9pbnB1dCgmZm10 KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KLS0gCjIuNDMuMAoK --00000000000046f1a3064642eb6f 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 To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org --00000000000046f1a3064642eb6f--