From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 10D7548DF3 for <ffmpegdev@gitmailbox.com>; Mon, 24 Mar 2025 02:48:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 717D4687BB6; Mon, 24 Mar 2025 04:48:48 +0200 (EET) Received: from out203-205-221-155.mail.qq.com (out203-205-221-155.mail.qq.com [203.205.221.155]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B72F0687BA3 for <ffmpeg-devel@ffmpeg.org>; Mon, 24 Mar 2025 04:48:40 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1742784510; bh=8fvHx/9ew0rxhVeVXRvlXMN77UM+AHWvUiR6/IE+yJ0=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=lv+Of4RRn6jPavDqHlD8EtCS2Y/J0SGt8P7D72JVGGGgMxuNP/WhKslaZ0n/k3Q+u ouWSERLn64gPsxo6gCAzrjJXYM3Il2ych71J/DkxF3IF9TQ+ngYWoBvrHYZrFoR6xb Ydf5TIHyiq5+at5wg44WmqPDY4HWgTfW8D6qQt7Y= Received: from smtpclient.apple ([119.147.10.242]) by newxmesmtplogicsvrszb16-1.qq.com (NewEsmtp) with SMTP id C1C9E45B; Mon, 24 Mar 2025 10:48:28 +0800 X-QQ-mid: xmsmtpt1742784508tjlqr5fmj Message-ID: <tencent_3996963ECD64202FCDE1CF88D521A73FB807@qq.com> X-QQ-XMAILINFO: OOO9dHjlsLs7AGPTF6NsPu2kNrIRlXsf0JgMTxKtjfmUqHsyMNcttenA/k/8AU iYLQ1VmoqxAd4E/1Obt+ZA8NMClJC5nbiagJWRBbNq5EAuIyvsm6c+eTnC1SGtb26h4TSmY/3uT7 ieQpegATvxolYFgYq7fZY+A3mDrFKZYCXgylFIQuCgFKxTDYZ+v3JZXKPUdXJNLj+bUXpVbitsfZ MjfSDaAEpQ4sL3cfm46EHDo3fBpdbq5n+JYWn+oTCbtM2WyNWLiULcHt+yTKiRuL7UCagBT5uIaK NiTEIFFCIahyXGZElXKibLJ9pI0RE5yLkTVN/j41+K5fTmznhu0kSN4NlRCPDvl1aprQMF6urCWJ +uPKmF1AlCd4IaeEg0Cjp/9TWKSHdAXxFybICnuuyWPml9nA8BGl5H0lhCsKnBku3u2vBttfniV8 i+wKSBkbgoauRRsq4aj1237eN5MKcU4vt/avtubbln6HMQf/8F+5mvKfTbfOnIOioij9lSuaZFvJ QUC1Yxpdywn43fVnsagyC7JRra4dAGD+g0nRqaA4Euwl/wPCgTBIucxm/X6Z6BI6dHWkPlOkmqi5 IoHaQHovV6cfAFRPTLrAzYpOmN982SajmRRnPofdtOKmD16GCd6RlYo2ZbiT6aHtI3Sk4/FVHSEJ ILwP1xcq1zYq8vwuM2K5kl+uWg+CbOMiHKKsRhQeUVbUDZYGjZY1+iXBwLhTtJuDf4qMUqLLoqG9 UJk3wOQDtf0ncMRArCTX8Rwswc3IoRGEDQmpfpIzMJ7JOijh0sGcGMssERYZIpIijvJ4CcQHGU2f 2I8Kw72BPGNujBp+C5Si88OZA7Zy7wIfKBKLO9Y/RYhmGdjvOc5+U3THMT9vZakJRGxrUNkPCkl6 T5BGtzAvtPJ1f0D3f1sCqmilqVPANS8YmoR8V90ObJt5aPjuGEiwgfUzsRZ7fivRirUiNdL4xQrF lxKvDsc9fO6OGCIhJ0Bo6SWI5UtQlug2lh8thRVTTyWvfBhW1erKTpFoTeifANmwmToVO2yzaj7L MJrUW3JaeIzVO2W5dv X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3818.100.11.1.3\)) From: Zhao Zhili <quinkblack-at-foxmail.com@ffmpeg.org> In-Reply-To: <tencent_853D9B5524055F429D03DDCF89AD44CF4E05@qq.com> Date: Mon, 24 Mar 2025 10:48:18 +0800 X-OQ-MSGID: <A26B390A-60E1-44B3-B04F-147AA753A920@foxmail.com> References: <tencent_853D9B5524055F429D03DDCF89AD44CF4E05@qq.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> X-Mailer: Apple Mail (2.3818.100.11.1.3) Subject: Re: [FFmpeg-devel] [PATCH] FFMPEG: add graph reconfig capability X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: 269032741@qq.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/tencent_3996963ECD64202FCDE1CF88D521A73FB807@qq.com/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> Cgo+IE9uIE1hciAyNCwgMjAyNSwgYXQgMTA6MjgsIHlhbmd5YWxlaTA1MCB2aWEgZmZtcGVnLWRl dmVsIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4gd3JvdGU6Cj4gCj4gRnJvbTogeWFuZ3lhbGVp MDUwIDwyNjkwMzI3NDFAcXEuY29tPgo+IAo+IDEuIFN1cHBvcnQgcmV1c2UgdGhlIGdyYXBoIHRv IHBsYXkgZGlmZmVyZW50IGF1ZGlvLgo+IDIuIFN1cHBvcnQgY29uZmlnIHBhcnQgb2YgdGhlIGdy YXBoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IHlhbmd5YWxlaTA1MCA8MjY5MDMyNzQxQHFxLmNvbT4K PiAtLS0KPiBsaWJhdmZpbHRlci9hdmZpbHRlci5jICAgICAgfCAgIDggKy0KPiBsaWJhdmZpbHRl ci9hdmZpbHRlci5oICAgICAgfCAgIDkgKysKPiBsaWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMg fCAyMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gMyBmaWxlcyBjaGFu Z2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jCj4gaW5kZXgg ZTczMjU1NmZmYS4uNzEzOTY2NzRmZSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRl ci5jCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYwo+IEBAIC0zNDUsNyArMzQ1LDggQEAg aW50IGZmX2ZpbHRlcl9jb25maWdfbGlua3MoQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIpCj4gICAg ICAgICBGaWx0ZXJMaW5rSW50ZXJuYWwgKmxpID0gZmZfbGlua19pbnRlcm5hbChsaW5rKTsKPiAg ICAgICAgIEZpbHRlckxpbmtJbnRlcm5hbCAqbGlfaW47Cj4gCj4gLSAgICAgICAgaWYgKCFsaW5r KSBjb250aW51ZTsKPiArICAgICAgICBpZiAoIWxpbmsgfHwgIWxpbmstPmluY2ZnLmZvcm1hdHMg fHwgIWxpbmstPm91dGNmZy5mb3JtYXRzKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiAgICAg ICAgIGlmICghbGluay0+c3JjIHx8ICFsaW5rLT5kc3QpIHsKPiAgICAgICAgICAgICBhdl9sb2co ZmlsdGVyLCBBVl9MT0dfRVJST1IsCj4gICAgICAgICAgICAgICAgICAgICJOb3QgYWxsIGlucHV0 IGFuZCBvdXRwdXQgYXJlIHByb3Blcmx5IGxpbmtlZCAoJWQpLlxuIiwgaSk7Cj4gQEAgLTM1OSw2 ICszNjAsMTEgQEAgaW50IGZmX2ZpbHRlcl9jb25maWdfbGlua3MoQVZGaWx0ZXJDb250ZXh0ICpm aWx0ZXIpCj4gCj4gICAgICAgICBzd2l0Y2ggKGxpLT5pbml0X3N0YXRlKSB7Cj4gICAgICAgICBj YXNlIEFWTElOS19JTklUOgo+ICsgICAgICAgICAgICAvKiBmb3IgcGFydCBncmFwaCByZS1uZWdv dGlhdGlvbi4KPiArICAgICAgICAgICAgICogRm9yIGV4YW1wbGU6IG91dHB1dC1maWx0ZXIgbGlu ayBoYXMgY29uZmlnX3Byb3BzLAo+ICsgICAgICAgICAgICAgKiBidXQgdGhlIGlucHV0LWZpbHRl ciBzdGlsbCBuZWVkIGNvbmZpZ19wcm9wcy4gKi8KPiArICAgICAgICAgICAgaWYgKChyZXQgPSBm Zl9maWx0ZXJfY29uZmlnX2xpbmtzKGxpbmstPnNyYykpIDwgMCkKPiArICAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICBjYXNlIEFWTElO S19TVEFSVElOSVQ6Cj4gICAgICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICJj aXJjdWxhciBmaWx0ZXIgY2hhaW4gZGV0ZWN0ZWRcbiIpOwo+IGRpZmYgLS1naXQgYS9saWJhdmZp bHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaAo+IGluZGV4IDQ1MjBkNWY5 NzguLjk3MjdiMTQyMzEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaAo+ICsr KyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgKPiBAQCAtNzE1LDYgKzcxNSwxNSBAQCBlbnVtIHsK PiAgKi8KPiBpbnQgYXZmaWx0ZXJfZ3JhcGhfY29uZmlnKEFWRmlsdGVyR3JhcGggKmdyYXBoY3R4 LCB2b2lkICpsb2dfY3R4KTsKPiAKPiArLyoqCj4gKyAqIENoZWNrIHZhbGlkaXR5IGFuZCByZWNv bmZpZ3VyZSBhbGwgdGhlIGxpbmtzIGFuZCBmb3JtYXRzIGluIHRoZSBncmFwaC4KPiArICoKPiAr ICogQHBhcmFtIGdyYXBoY3R4IHRoZSBmaWx0ZXIgZ3JhcGgKPiArICogQHBhcmFtIGxvZ19jdHgg Y29udGV4dCB1c2VkIGZvciBsb2dnaW5nCj4gKyAqIEByZXR1cm4gPj0gMCBpbiBjYXNlIG9mIHN1 Y2Nlc3MsIGEgbmVnYXRpdmUgQVZFUlJPUiBjb2RlIG90aGVyd2lzZQo+ICsgKi8KPiAraW50IGZm X2F2ZmlsdGVyX2dyYXBoX3JlY29uZmlnKEFWRmlsdGVyR3JhcGggKmdyYXBoY3R4LCB2b2lkICps b2dfY3R4KTsKPiArCj4gLyoqCj4gICogRnJlZSBhIGdyYXBoLCBkZXN0cm95IGl0cyBsaW5rcywg YW5kIHNldCAqZ3JhcGggdG8gTlVMTC4KPiAgKiBJZiAqZ3JhcGggaXMgTlVMTCwgZG8gbm90aGlu Zy4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXJncmFwaC5jIGIvbGliYXZmaWx0 ZXIvYXZmaWx0ZXJncmFwaC5jCj4gaW5kZXggNWU5M2Y5M2FhYi4uMTU3MzAwNjNkMCAxMDA2NDQK PiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMKPiArKysgYi9saWJhdmZpbHRlci9h dmZpbHRlcmdyYXBoLmMKPiBAQCAtMjMsNiArMjMsNyBAQAo+ICNpbmNsdWRlICJjb25maWcuaCIK PiAKPiAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4gCj4gI2lu Y2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgo+ICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50 LmgiCj4gQEAgLTM0OCw3ICszNDksNyBAQCBzdGF0aWMgaW50IGZpbHRlcl9xdWVyeV9mb3JtYXRz KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+IAo+ICAgICBpZiAoZmlsdGVyLT5mb3JtYXRzX3N0YXRl ID09IEZGX0ZJTFRFUl9GT1JNQVRTX1FVRVJZX0ZVTkMpIHsKPiAgICAgICAgIGlmICgocmV0ID0g ZmlsdGVyLT5mb3JtYXRzLnF1ZXJ5X2Z1bmMoY3R4KSkgPCAwKSB7Cj4gLSAgICAgICAgICAgIGlm IChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKQo+ICsgICAgICAgICAgICBpZiAocmV0ICE9IEFWRVJS T1IoRUFHQUlOKSAmJiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlF1ZXJ5IGZvcm1hdCBmYWlsZWQgZm9yICclcyc6 ICVzXG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5uYW1lLCBhdl9lcnIyc3RyKHJl dCkpOwo+ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gQEAgLTM5MCw3ICszOTEsNyBAQCBzdGF0 aWMgaW50IGZpbHRlcl9xdWVyeV9mb3JtYXRzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+ICAgICAg ICAgYXZfZnJlZXAoJmNmZ19pbl9keW4pOwo+ICAgICAgICAgYXZfZnJlZXAoJmNmZ19vdXRfZHlu KTsKPiAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gLSAgICAgICAgICAgIGlmIChyZXQgIT0gQVZF UlJPUihFQUdBSU4pKQo+ICsgICAgICAgICAgICBpZiAocmV0ICE9IEFWRVJST1IoRUFHQUlOKSAm JiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19FUlJPUiwgIlF1ZXJ5IGZvcm1hdCBmYWlsZWQgZm9yICclcyc6ICVzXG4iLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LT5uYW1lLCBhdl9lcnIyc3RyKHJldCkpOwo+ICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gQEAgLTQzOCw2ICs0MzksODUgQEAgc3RhdGljIGludCBmb3Jt YXRzX2RlY2xhcmVkKEFWRmlsdGVyQ29udGV4dCAqZikKPiAgICAgcmV0dXJuIDE7Cj4gfQo+IAo+ ICtzdGF0aWMgdm9pZCBmZl9hdmZpbHRlcl9saW5rX3VucmVmX2Zvcm1hdHMoQVZGaWx0ZXJMaW5r ICpsaW5rKQo+ICt7Cj4gKyAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5pbmNmZy5mb3JtYXRz KTsKPiArICAgIGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPm91dGNmZy5mb3JtYXRzKTsKPiArICAg IGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLnNhbXBsZXJhdGVzKTsKPiArICAgIGZmX2Zv cm1hdHNfdW5yZWYoJmxpbmstPm91dGNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICBmZl9jaGFubmVs X2xheW91dHNfdW5yZWYoJmxpbmstPmluY2ZnLmNoYW5uZWxfbGF5b3V0cyk7Cj4gKyAgICBmZl9j aGFubmVsX2xheW91dHNfdW5yZWYoJmxpbmstPm91dGNmZy5jaGFubmVsX2xheW91dHMpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgYm9vbCBmb3JtYXRzX3VzZWxlc3MoQVZGaWx0ZXJDb250ZXh0ICpmKQo+ ICt7Cj4gKyAgICBib29sIGluLCBvdXQ7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBpZiAoIWYt Pm5iX2lucHV0cyB8fCAhZi0+bmJfb3V0cHV0cykKPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4g Kwo+ICsgICAgaW4gPSBvdXQgPSB0cnVlOwo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBmLT5u Yl9pbnB1dHM7IGkrKykKPiArICAgICAgICBpZiAoZi0+aW5wdXRzW2ldLT5vdXRjZmcuZm9ybWF0 cykgewo+ICsgICAgICAgICAgICBpbiA9IGZhbHNlOwo+ICsgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgICB9Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IGYtPm5iX291dHB1dHM7IGkrKykK PiArICAgICAgICBpZiAoZi0+b3V0cHV0c1tpXS0+aW5jZmcuZm9ybWF0cykgewo+ICsgICAgICAg ICAgICBvdXQgPSBmYWxzZTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsK PiArICAgIGlmICghc3RyY21wKGYtPm5hbWUsICJhbWl4QGEyZHAiKSkgewo+ICsgICAgICAgIGF2 X2xvZyhmLCBBVl9MT0dfRVJST1IsICJjaGVjayBhbWl4QGEyZHAsIGluOiVkLCBvdXQ6JWQsIHJl dDolZFxuIiwgaW4sIG91dCwgaW4gXiBvdXQpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBp biBeIG91dDsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBib29sIHNhbml0aXplX2Zvcm1hdHMoQVZG aWx0ZXJHcmFwaCAqZ3JhcGgpCj4gK3sKPiArICAgIEFWRmlsdGVyQ29udGV4dCAqZjsKPiArICAg IGJvb2wgY2hhbmdlZCA9IGZhbHNlOwo+ICsgICAgdW5zaWduZWQgaSwgajsKPiArCj4gKyAgICBm b3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm5iX2ZpbHRlcnM7IGkrKykgewo+ICsgICAgICAgIGYgPSBn cmFwaC0+ZmlsdGVyc1tpXTsKPiArCj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGYtPm5iX2lu cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlmICgoIWYtPmlucHV0c1tqXS0+b3V0Y2ZnLmZv cm1hdHMgJiYgZi0+aW5wdXRzW2pdLT5pbmNmZy5mb3JtYXRzKQo+ICsgICAgICAgICAgICAgICAg IHx8IChmLT5pbnB1dHNbal0tPm91dGNmZy5mb3JtYXRzICYmICFmLT5pbnB1dHNbal0tPmluY2Zn LmZvcm1hdHMpKSB7Cj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRlcl9saW5rX3VucmVmX2Zv cm1hdHMoZi0+aW5wdXRzW2pdKTsKPiArICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwo+ ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGogPSAwOyBq IDwgZi0+bmJfb3V0cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlmICgoIWYtPm91dHB1dHNb al0tPmluY2ZnLmZvcm1hdHMgJiYgZi0+b3V0cHV0c1tqXS0+b3V0Y2ZnLmZvcm1hdHMpCj4gKyAg ICAgICAgICAgICAgICB8fCAoZi0+b3V0cHV0c1tqXS0+aW5jZmcuZm9ybWF0cyAmJiAhZi0+b3V0 cHV0c1tqXS0+b3V0Y2ZnLmZvcm1hdHMpKSB7Cj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRl cl9saW5rX3VucmVmX2Zvcm1hdHMoZi0+b3V0cHV0c1tqXSk7Cj4gKyAgICAgICAgICAgICAgICBj aGFuZ2VkID0gdHJ1ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg ICAgaWYgKGZvcm1hdHNfdXNlbGVzcyhmKSkgewo+ICsgICAgICAgICAgICBmb3IgKGogPSAwOyBq IDwgZi0+bmJfaW5wdXRzOyBqKyspCj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRlcl9saW5r X3VucmVmX2Zvcm1hdHMoZi0+aW5wdXRzW2pdKTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaiA9 IDA7IGogPCBmLT5uYl9vdXRwdXRzOyBqKyspCj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRl cl9saW5rX3VucmVmX2Zvcm1hdHMoZi0+b3V0cHV0c1tqXSk7Cj4gKwo+ICsgICAgICAgICAgICBj aGFuZ2VkID0gdHJ1ZTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGNo YW5nZWQ7Cj4gK30KPiArCj4gLyoqCj4gICogUGVyZm9ybSBvbmUgcm91bmQgb2YgcXVlcnlfZm9y bWF0cygpIGFuZCBtZXJnaW5nIGZvcm1hdHMgbGlzdHMgb24gdGhlCj4gICogZmlsdGVyIGdyYXBo Lgo+IEBAIC00NjIsMTIgKzU0MiwxNCBAQCBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0 ZXJHcmFwaCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgpCj4gICAgICAgICBpZiAoZm9ybWF0c19kZWNs YXJlZChmKSkKPiAgICAgICAgICAgICBjb250aW51ZTsKPiAgICAgICAgIHJldCA9IGZpbHRlcl9x dWVyeV9mb3JtYXRzKGYpOwo+IC0gICAgICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBBVkVSUk9S KEVBR0FJTikpCj4gKyAgICAgICAgaWYgKHJldCA8IDAgJiYgcmV0ICE9IEFWRVJST1IoRUFHQUlO KSAmJiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgcmV0dXJuIHJldDsK PiAgICAgICAgIC8qIG5vdGU6IEVBR0FJTiBjb3VsZCBpbmRpY2F0ZSBhIHBhcnRpYWwgc3VjY2Vz cywgbm90IGNvdW50ZWQgeWV0ICovCj4gICAgICAgICBjb3VudF9xdWVyaWVkICs9IHJldCA+PSAw Owo+ICAgICB9Cj4gCj4gKyAgICB3aGlsZSAoc2FuaXRpemVfZm9ybWF0cyhncmFwaCkpOwo+ICsK PiAgICAgLyogZ28gdGhyb3VnaCBhbmQgbWVyZ2UgYXMgbWFueSBmb3JtYXQgbGlzdHMgYXMgcG9z c2libGUgKi8KPiAgICAgZm9yIChpID0gMDsgaSA8IGdyYXBoLT5uYl9maWx0ZXJzOyBpKyspIHsK PiAgICAgICAgIEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyID0gZ3JhcGgtPmZpbHRlcnNbaV07Cj4g QEAgLTQ3OCw3ICs1NjAsNyBAQCBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJHcmFw aCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgpCj4gICAgICAgICAgICAgdW5zaWduZWQgbmVnX3N0ZXA7 Cj4gICAgICAgICAgICAgaW50IGNvbnZlcnRfbmVlZGVkID0gMDsKPiAKPiAtICAgICAgICAgICAg aWYgKCFsaW5rKQo+ICsgICAgICAgICAgICBpZiAoIWxpbmsgfHwgIWxpbmstPmluY2ZnLmZvcm1h dHMpCj4gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+IAo+ICAgICAgICAgICAgIG5lZyA9IGZm X2ZpbHRlcl9nZXRfbmVnb3RpYXRpb24obGluayk7Cj4gQEAgLTQ5Miw2ICs1NzQsNyBAQCBzdGF0 aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJHcmFwaCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgp Cj4gICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgICAgICAgfQo+ICAgICAg ICAgICAgIH0KPiArCj4gICAgICAgICAgICAgZm9yIChuZWdfc3RlcCA9IDA7IG5lZ19zdGVwIDwg bmVnLT5uYl9tZXJnZXJzOyBuZWdfc3RlcCsrKSB7Cj4gICAgICAgICAgICAgICAgIGNvbnN0IEFW RmlsdGVyRm9ybWF0c01lcmdlciAqbSA9ICZuZWctPm1lcmdlcnNbbmVnX3N0ZXBdOwo+ICAgICAg ICAgICAgICAgICB2b2lkICphID0gRkZfRklFTERfQVQodm9pZCAqLCBtLT5vZmZzZXQsIGxpbmst PmluY2ZnKTsKPiBAQCAtNzg5LDE3ICs4NzIsNiBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0KEFW RmlsdGVyTGluayAqbGluaywgQVZGaWx0ZXJMaW5rICpyZWYpCj4gICAgICAgICAgICAgcmV0dXJu IHJldDsKPiAgICAgfQo+IAo+IC0gICAgZmZfZm9ybWF0c191bnJlZigmbGluay0+aW5jZmcuZm9y bWF0cyk7Cj4gLSAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuZm9ybWF0cyk7Cj4g LSAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5pbmNmZy5zYW1wbGVyYXRlcyk7Cj4gLSAgICBm Zl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuc2FtcGxlcmF0ZXMpOwo+IC0gICAgZmZfY2hh bm5lbF9sYXlvdXRzX3VucmVmKCZsaW5rLT5pbmNmZy5jaGFubmVsX2xheW91dHMpOwo+IC0gICAg ZmZfY2hhbm5lbF9sYXlvdXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY2hhbm5lbF9sYXlvdXRzKTsK PiAtICAgIGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLmNvbG9yX3NwYWNlcyk7Cj4gLSAg ICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY29sb3Jfc3BhY2VzKTsKPiAtICAgIGZm X2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLmNvbG9yX3Jhbmdlcyk7Cj4gLSAgICBmZl9mb3Jt YXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY29sb3JfcmFuZ2VzKTsKPiAtCj4gICAgIHJldHVybiAw Owo+IH0KPiAKPiBAQCAtODE4LDYgKzg5MCw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAg ICAgIGxpc3RfdHlwZSAqZm10czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgIGlmIChsaW5rLT50eXBlICE9 IG91dF9saW5rLT50eXBlIHx8ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg ICAgICAgIW91dF9saW5rLT5pbmNmZy5saXN0IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiAgICAgICAgICAgICAgICAgb3V0X2xpbmstPmluY2ZnLmxpc3QtPm5iID09IDEpICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgY29udGludWU7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICBm bXRzID0gb3V0X2xpbmstPmluY2ZnLmxpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiBAQCAtOTI1LDYgKzk5OCw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfc2FtcGxlcmF0ZXNfb25f ZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgbGluayA9IGZpbHRlci0+ aW5wdXRzW2ldOwo+IAo+ICAgICAgICAgaWYgKGxpbmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX0FV RElPICYmCj4gKyAgICAgICAgICAgIGxpbmstPm91dGNmZy5zYW1wbGVyYXRlcyAmJgo+ICAgICAg ICAgICAgIGxpbmstPm91dGNmZy5zYW1wbGVyYXRlcy0+bmJfZm9ybWF0cz09IDEpCj4gICAgICAg ICAgICAgYnJlYWs7Cj4gICAgIH0KPiBAQCAtOTM4LDYgKzEwMTIsNyBAQCBzdGF0aWMgdm9pZCBz d2FwX3NhbXBsZXJhdGVzX29uX2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikKPiAgICAg ICAgIGludCBiZXN0X2lkeCwgYmVzdF9kaWZmID0gSU5UX01BWDsKPiAKPiAgICAgICAgIGlmIChv dXRsaW5rLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJTyB8fAo+ICsgICAgICAgICAgICAhb3V0 bGluay0+aW5jZmcuc2FtcGxlcmF0ZXMgfHwKPiAgICAgICAgICAgICBvdXRsaW5rLT5pbmNmZy5z YW1wbGVyYXRlcy0+bmJfZm9ybWF0cyA8IDIpCj4gICAgICAgICAgICAgY29udGludWU7Cj4gCj4g QEAgLTEwMDcsNiArMTA4Miw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfY2hhbm5lbF9sYXlvdXRzX29u X2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikKPiAgICAgICAgIGxpbmsgPSBmaWx0ZXIt PmlucHV0c1tpXTsKPiAKPiAgICAgICAgIGlmIChsaW5rLT50eXBlID09IEFWTUVESUFfVFlQRV9B VURJTyAmJgo+ICsgICAgICAgICAgICBsaW5rLT5vdXRjZmcuY2hhbm5lbF9sYXlvdXRzICYmCj4g ICAgICAgICAgICAgbGluay0+b3V0Y2ZnLmNoYW5uZWxfbGF5b3V0cy0+bmJfY2hhbm5lbF9sYXlv dXRzID09IDEpCj4gICAgICAgICAgICAgYnJlYWs7Cj4gICAgIH0KPiBAQCAtMTAxOCw2ICsxMDk0 LDcgQEAgc3RhdGljIHZvaWQgc3dhcF9jaGFubmVsX2xheW91dHNfb25fZmlsdGVyKEFWRmlsdGVy Q29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgaW50IGJlc3RfaWR4ID0gLTEsIGJlc3Rfc2NvcmUg PSBJTlRfTUlOLCBiZXN0X2NvdW50X2RpZmYgPSBJTlRfTUFYOwo+IAo+ICAgICAgICAgaWYgKG91 dGxpbmstPnR5cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPIHx8Cj4gKyAgICAgICAgICAgICFvdXRs aW5rLT5pbmNmZy5jaGFubmVsX2xheW91dHMgfHwKPiAgICAgICAgICAgICBvdXRsaW5rLT5pbmNm Zy5jaGFubmVsX2xheW91dHMtPm5iX2NoYW5uZWxfbGF5b3V0cyA8IDIpCj4gICAgICAgICAgICAg Y29udGludWU7Cj4gCj4gQEAgLTExMTAsNiArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfc2Ft cGxlX2ZtdHNfb25fZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgbGlu ayA9IGZpbHRlci0+aW5wdXRzW2ldOwo+IAo+ICAgICAgICAgaWYgKGxpbmstPnR5cGUgPT0gQVZN RURJQV9UWVBFX0FVRElPICYmCj4gKyAgICAgICAgICAgIGxpbmstPm91dGNmZy5mb3JtYXRzICYm Cj4gICAgICAgICAgICAgbGluay0+b3V0Y2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPT0gMSkKPiAg ICAgICAgICAgICBicmVhazsKPiAgICAgfQo+IEBAIC0xMTI0LDYgKzEyMDIsNyBAQCBzdGF0aWMg dm9pZCBzd2FwX3NhbXBsZV9mbXRzX29uX2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikK PiAgICAgICAgIGludCBiZXN0X2lkeCA9IC0xLCBiZXN0X3Njb3JlID0gSU5UX01JTjsKPiAKPiAg ICAgICAgIGlmIChvdXRsaW5rLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJTyB8fAo+ICsgICAg ICAgICAgICAhb3V0bGluay0+aW5jZmcuZm9ybWF0cyB8fAo+ICAgICAgICAgICAgIG91dGxpbmst PmluY2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPCAyKQo+ICAgICAgICAgICAgIGNvbnRpbnVlOwo+ IAo+IEBAIC0xMTgwLDcgKzEyNTksOCBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0cyhBVkZpbHRl ckdyYXBoICpncmFwaCkKPiAgICAgICAgICAgICBBVkZpbHRlckNvbnRleHQgKmZpbHRlciA9IGdy YXBoLT5maWx0ZXJzW2ldOwo+ICAgICAgICAgICAgIGlmIChmaWx0ZXItPm5iX2lucHV0cyl7Cj4g ICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXItPm5iX2lucHV0czsgaisrKXsK PiAtICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLT5pbnB1dHNbal0tPmluY2ZnLmZvcm1h dHMgJiYgZmlsdGVyLT5pbnB1dHNbal0tPmluY2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPT0gMSkg ewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXItPmlucHV0c1tqXS0+Zm9ybWF0IDwg MCAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXItPmlucHV0c1tqXS0+aW5jZmcu Zm9ybWF0cyAmJiBmaWx0ZXItPmlucHV0c1tqXS0+aW5jZmcuZm9ybWF0cy0+bmJfZm9ybWF0cyA9 PSAxKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBwaWNrX2Zvcm1hdChm aWx0ZXItPmlucHV0c1tqXSwgTlVMTCkpIDwgMCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgPSAxOwo+IEBA IC0xMTg5LDcgKzEyNjksOCBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0cyhBVkZpbHRlckdyYXBo ICpncmFwaCkKPiAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgaWYgKGZpbHRlci0+bmJfb3V0 cHV0cyl7Cj4gICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXItPm5iX291dHB1 dHM7IGorKyl7Cj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci0+b3V0cHV0c1tqXS0+ aW5jZmcuZm9ybWF0cyAmJiBmaWx0ZXItPm91dHB1dHNbal0tPmluY2ZnLmZvcm1hdHMtPm5iX2Zv cm1hdHMgPT0gMSkgewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXItPm91dHB1dHNb al0tPmZvcm1hdCA8IDAgJiYKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLT5vdXRw dXRzW2pdLT5pbmNmZy5mb3JtYXRzICYmIGZpbHRlci0+b3V0cHV0c1tqXS0+aW5jZmcuZm9ybWF0 cy0+bmJfZm9ybWF0cyA9PSAxKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQg PSBwaWNrX2Zvcm1hdChmaWx0ZXItPm91dHB1dHNbal0sIE5VTEwpKSA8IDApCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg Y2hhbmdlID0gMTsKPiBAQCAtMTE5OCw3ICsxMjc5LDcgQEAgc3RhdGljIGludCBwaWNrX2Zvcm1h dHMoQVZGaWx0ZXJHcmFwaCAqZ3JhcGgpCj4gICAgICAgICAgICAgfQo+ICAgICAgICAgICAgIGlm IChmaWx0ZXItPm5iX2lucHV0cyAmJiBmaWx0ZXItPm5iX291dHB1dHMgJiYgZmlsdGVyLT5pbnB1 dHNbMF0tPmZvcm1hdD49MCkgewo+ICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZmls dGVyLT5uYl9vdXRwdXRzOyBqKyspIHsKPiAtICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVy LT5vdXRwdXRzW2pdLT5mb3JtYXQ8MCkgewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0 ZXItPm91dHB1dHNbal0tPmZvcm1hdCA8IDAgJiYgZmlsdGVyLT5vdXRwdXRzW2pdLT5pbmNmZy5m b3JtYXRzKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBwaWNrX2Zvcm1h dChmaWx0ZXItPm91dHB1dHNbal0sIGZpbHRlci0+aW5wdXRzWzBdKSkgPCAwKQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAgICAgICAgICAgICAgICAg IGNoYW5nZSA9IDE7Cj4gQEAgLTEyOTIsNiArMTM3Myw4MiBAQCBzdGF0aWMgaW50IGdyYXBoX2Nv bmZpZ19wb2ludGVycyhBVkZpbHRlckdyYXBoICpncmFwaCwgdm9pZCAqbG9nX2N0eCkKPiAgICAg cmV0dXJuIDA7Cj4gfQo+IAo+ICtzdGF0aWMgdm9pZCBncmFwaF9jbGVhcl9mb3JtYXRzKEFWRmls dGVyR3JhcGggKmdyYXBoLCB2b2lkICpsb2dfY3R4KQo+ICt7Cj4gKyAgICBpbnQgc3RhdHVzX2lu LCBzdGF0dXNfb3V0Owo+ICsgICAgQVZSYXRpb25hbCB0aW1lX2Jhc2U7Cj4gKyAgICBBVkZpbHRl ckNvbnRleHQgKmY7Cj4gKyAgICBGaWx0ZXJMaW5rSW50ZXJuYWwgKmlsaW5raTsKPiArICAgIEZp bHRlckxpbmtJbnRlcm5hbCAqb2xpbmtpOwo+ICsgICAgaW50IGksIGo7Cj4gKwo+ICsgICAgZm9y IChpID0gZ3JhcGgtPm5iX2ZpbHRlcnMgLSAxOyBpID49IDA7IGktLSkgewo+ICsgICAgICAgIGYg PSBncmFwaC0+ZmlsdGVyc1tpXTsKPiArCj4gKyAgICAgICAgaWYgKCFzdHJuY21wKGYtPm5hbWUs ICJhdXRvXyIsIHN0cmxlbigiYXV0b18iKSkpIHsKPiArICAgICAgICAgICAgaWxpbmtpID0gZmZf bGlua19pbnRlcm5hbChmLT5pbnB1dHNbMF0pOwo+ICsgICAgICAgICAgICBvbGlua2kgPSBmZl9s aW5rX2ludGVybmFsKGYtPm91dHB1dHNbMF0pOwo+ICsgICAgICAgICAgICBpZiAoaWxpbmtpLT5z dGF0dXNfb3V0IHx8IGlsaW5raS0+c3RhdHVzX2luIHx8Cj4gKyAgICAgICAgICAgICAgICBvbGlu a2ktPnN0YXR1c19vdXQgfHwgb2xpbmtpLT5zdGF0dXNfaW4pIHsKPiArICAgICAgICAgICAgICAg IEFWRmlsdGVyQ29udGV4dCAqc3JjID0gZi0+aW5wdXRzWzBdLT5zcmM7Cj4gKyAgICAgICAgICAg ICAgICBBVkZpbHRlckNvbnRleHQgKmRzdCA9IGYtPm91dHB1dHNbMF0tPmRzdDsKPiArICAgICAg ICAgICAgICAgIHVuc2lnbmVkIHNyY3BhZCA9IEZGX09VVExJTktfSURYKGYtPmlucHV0c1swXSk7 Cj4gKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkc3RwYWQgPSBGRl9JTkxJTktfSURYKGYtPm91 dHB1dHNbMF0pOwo+ICsKPiArICAgICAgICAgICAgICAgIHN0YXR1c19pbiAgPSBpbGlua2ktPnN0 YXR1c19pbjsKPiArICAgICAgICAgICAgICAgIHN0YXR1c19vdXQgPSBpbGlua2ktPnN0YXR1c19v dXQ7Cj4gKyAgICAgICAgICAgICAgICB0aW1lX2Jhc2UgID0gZi0+aW5wdXRzWzBdLT50aW1lX2Jh c2U7Cj4gKwo+ICsgICAgICAgICAgICAgICAgYXZmaWx0ZXJfZnJlZShmKTsKPiArICAgICAgICAg ICAgICAgIGF2ZmlsdGVyX2xpbmsoc3JjLCBzcmNwYWQsIGRzdCwgZHN0cGFkKTsKPiArCj4gKyAg ICAgICAgICAgICAgICBvbGlua2ktPnN0YXR1c19pbiAgPSBzdGF0dXNfaW47Cj4gKyAgICAgICAg ICAgICAgICBvbGlua2ktPnN0YXR1c19vdXQgPSBzdGF0dXNfb3V0Owo+ICsgICAgICAgICAgICAg ICAgZHN0LT5pbnB1dHNbMF0tPnRpbWVfYmFzZSAgPSB0aW1lX2Jhc2U7Cj4gKwo+ICsgICAgICAg ICAgICAgICAgZmZfZmlsdGVyX3NldF9yZWFkeShkc3QsIDIwMCk7Cj4gKyAgICAgICAgICAgICAg ICBjb250aW51ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAg Zm9yIChqID0gMDsgaiA8IGYtPm5iX2lucHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlsaW5r aSA9IGZmX2xpbmtfaW50ZXJuYWwoZi0+aW5wdXRzW2pdKTsKPiArICAgICAgICAgICAgaWYgKGls aW5raS0+c3RhdHVzX291dCkgewo+ICsgICAgICAgICAgICAgICAgZmZfZm9ybWF0c191bnJlZigm Zi0+aW5wdXRzW2pdLT5vdXRjZmcuZm9ybWF0cyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9mb3Jt YXRzX3VucmVmKCZmLT5pbnB1dHNbal0tPm91dGNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICAgICAg ICAgICAgICBmZl9jaGFubmVsX2xheW91dHNfdW5yZWYoJmYtPmlucHV0c1tqXS0+b3V0Y2ZnLmNo YW5uZWxfbGF5b3V0cyk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYgKGlsaW5raS0+c3RhdHVz X2luKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgZi0+aW5wdXRzW2pdLT5mb3JtYXQgICAgICAg ICA9IC0xOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+c2FtcGxlX3JhdGUg ICAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGlsaW5raS0+aW5pdF9zdGF0ZSAgICAgPSBB VkxJTktfVU5JTklUOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+dGltZV9i YXNlLm51bSAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+dGltZV9i YXNlLmRlbiAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3Vu aW5pdCgmZi0+aW5wdXRzW2pdLT5jaF9sYXlvdXQpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsg ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGogPSAwOyBqIDwg Zi0+bmJfb3V0cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIG9saW5raSA9IGZmX2xpbmtfaW50 ZXJuYWwoZi0+b3V0cHV0c1tqXSk7Cj4gKyAgICAgICAgICAgIGlmIChvbGlua2ktPnN0YXR1c19p bikgewo+ICsgICAgICAgICAgICAgICAgZmZfZm9ybWF0c191bnJlZigmZi0+b3V0cHV0c1tqXS0+ aW5jZmcuZm9ybWF0cyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9mb3JtYXRzX3VucmVmKCZmLT5v dXRwdXRzW2pdLT5pbmNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9jaGFu bmVsX2xheW91dHNfdW5yZWYoJmYtPm91dHB1dHNbal0tPmluY2ZnLmNoYW5uZWxfbGF5b3V0cyk7 Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYgKG9saW5raS0+c3RhdHVzX291dCkgewo+ICsgICAg ICAgICAgICAgICAgICAgIGYtPm91dHB1dHNbal0tPmZvcm1hdCAgICAgICAgID0gLTE7Cj4gKyAg ICAgICAgICAgICAgICAgICAgZi0+b3V0cHV0c1tqXS0+c2FtcGxlX3JhdGUgICAgPSAwOwo+ICsg ICAgICAgICAgICAgICAgICAgIG9saW5raS0+aW5pdF9zdGF0ZSAgICAgPSBBVkxJTktfVU5JTklU Owo+ICsgICAgICAgICAgICAgICAgICAgIGYtPm91dHB1dHNbal0tPnRpbWVfYmFzZS5udW0gID0g MDsKPiArICAgICAgICAgICAgICAgICAgICBmLT5vdXRwdXRzW2pdLT50aW1lX2Jhc2UuZGVuICA9 IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZmLT5v dXRwdXRzW2pdLT5jaF9sYXlvdXQpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+IGludCBhdmZpbHRlcl9ncmFwaF9j b25maWcoQVZGaWx0ZXJHcmFwaCAqZ3JhcGhjdHgsIHZvaWQgKmxvZ19jdHgpCj4gewo+ICAgICBp bnQgcmV0Owo+IEBAIC0xMzEwLDYgKzE0NjcsMzAgQEAgaW50IGF2ZmlsdGVyX2dyYXBoX2NvbmZp ZyhBVkZpbHRlckdyYXBoICpncmFwaGN0eCwgdm9pZCAqbG9nX2N0eCkKPiAgICAgcmV0dXJuIDA7 Cj4gfQo+IAo+ICtpbnQgZmZfYXZmaWx0ZXJfZ3JhcGhfcmVjb25maWcoQVZGaWx0ZXJHcmFwaCAq Z3JhcGhjdHgsIHZvaWQgKmxvZ19jdHgpCj4gK3sKPiArICAgIEFWQ2xhc3MgKmF2YyA9IGxvZ19j dHggPyAqKEFWQ2xhc3MgKiopbG9nX2N0eCA6IE5VTEw7Cj4gKyAgICBpbnQgcmV0LCBpOwo+ICsK PiArICAgIGlmIChhdmMpCj4gKyAgICAgICAgYXZfbG9nKGxvZ19jdHgsIEFWX0xPR19JTkZPLCAi JXMgc2V0IGdyYXBoIHJlY29uZmlnXG4iLCBhdmMtPml0ZW1fbmFtZShsb2dfY3R4KSk7Cj4gKwo+ ICsgICAgZm9yIChpID0gMDsgaSA8IGdyYXBoY3R4LT5uYl9maWx0ZXJzOyBpKyspCj4gKyAgICAg ICAgYXZfbG9nKGxvZ19jdHgsIEFWX0xPR19JTkZPLCAiXHQlcyIsIGdyYXBoY3R4LT5maWx0ZXJz W2ldLT5uYW1lKTsKPiArCj4gKyAgICBncmFwaF9jbGVhcl9mb3JtYXRzKGdyYXBoY3R4LCBsb2df Y3R4KTsKPiArICAgIGlmICgocmV0ID0gZ3JhcGhfY29uZmlnX2Zvcm1hdHMoZ3JhcGhjdHgsIGxv Z19jdHgpKSkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgaWYgKChyZXQgPSBncmFwaF9j b25maWdfbGlua3MoZ3JhcGhjdHgsIGxvZ19jdHgpKSkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ ICsgICAgaWYgKChyZXQgPSBncmFwaF9jaGVja19saW5rcyhncmFwaGN0eCwgbG9nX2N0eCkpKQo+ ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICBpZiAoKHJldCA9IGdyYXBoX2NvbmZpZ19wb2lu dGVycyhncmFwaGN0eCwgbG9nX2N0eCkpKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsg ICAgcmV0dXJuIDA7Cj4gK30KClRoaXMgaXNu4oCZdCBBUEkgb2YgbGliYXZmaWx0ZXIuIFBsZWFz ZSBub3RlIGZmXyBpcyBmb3IgbGliYXZmaWx0ZXIgaW50ZXJuYWwgdXNhZ2UuCgpJIGRvbuKAmXQg dGhpbmsgdGhlIHBhdGNoIHdvcmtzLgoKPiArCj4gaW50IGF2ZmlsdGVyX2dyYXBoX3NlbmRfY29t bWFuZChBVkZpbHRlckdyYXBoICpncmFwaCwgY29uc3QgY2hhciAqdGFyZ2V0LCBjb25zdCBjaGFy ICpjbWQsIGNvbnN0IGNoYXIgKmFyZywgY2hhciAqcmVzLCBpbnQgcmVzX2xlbiwgaW50IGZsYWdz KQo+IHsKPiAgICAgaW50IGksIHIgPSBBVkVSUk9SKEVOT1NZUyk7Cj4gLS0gCj4gMi40Ny4wCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1bnN1YnNj cmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp bApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo=