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 ESMTPS id 7C4EF4BB77 for ; Mon, 28 Apr 2025 13:39:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9F58B687FCC; Mon, 28 Apr 2025 16:39:40 +0300 (EEST) Received: from sonic315-42.consmr.mail.bf2.yahoo.com (sonic315-42.consmr.mail.bf2.yahoo.com [74.6.134.216]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D561687CC7 for ; Mon, 28 Apr 2025 16:39:33 +0300 (EEST) X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1745847571; bh=TqUTWwmZlDMuhVs1RMs/GxUbG3bdJEs4+Ni0AodkZxZ=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=Uv0mwHGl1OX4FNgirmJnFIVpQV+7KZwKRToxHWVGr1MiwYwnbwADbcMN2wpq+t0ydDz2f1b/ut6gHiRaBUls+GeayirSbTtNuW6aFOhC7ytkmIVJ4LmCQGmr0DtUJBuO61ooOrAgZbIrkcCsejXSP9xSNXNeZpyctua5Pk2H8SobeqDpqIpcn3NJnE6ngd52GHArJcmupdc0dEWxpA64RoesN1jQk1khp4LD1+HES+JfFrf2SE1beO1MZoABUpCISfbAyEykwAxfObv95MJpPO411C5a3iz2NMBZEOl7QoN48r2h6cSenBXXhni8ckmBy7QtGH8YHT0QwRtrlnxzlA== X-YMail-OSG: 40dJug4VM1n0no7p0TUq2kD0rM5NntVuPcfF8A_Qz4RyE4Py0j6v2eKY4cXCwTi afegW3dBAwDlk.aqYFmaTd08h_X4BBgaJgPxc3QHsVz9RSKw5fiNDEP9FakzXqKedylYo4rp0dG0 IEjuBYsXUYhtKvTQedChKVdv55GAEPVh6eKReuSUiEhlyDyVWJLJp4RxrZCWTlhb8sfiy.9CBXEr wGqmJICgEj_OxxHfZhCnZlkOVU7WqibrQ1JXDdthqJjLgR8jLC9zvDT9yLKF9IgjUu5yhyY52bW1 YljH1moC5ZqJIjEJmjLBXohL6A06E0VudyFF07Sj61uG9QbmX1nK3AcQmMeX3_Msc1sEvOqGbAl5 xtp6nrv_lrMSz_AnHSfThqprpjyds.6cp5zofGOQYyO6MV8F5Rt70UkUeZGgGDmS6tcGehyV1bsi aWCiTsNLa4tbAwnHBDUmhv.TY0NcHK6.n9_5bOOrNQWq1EHz1oVFwufGVULp8fXbl.A62X7o4QVP YHskg7UhDLN26gxQbWCYpkdbOEUZ7lkoLWGAFZdhZ819DzeWILU5FhYdNjuL6p_HmGAtUjZgWygN CpIkEcfbG0QfH_oB2fuj_WntoiFbP9nLaMYb2Q4rhA8Wn14ZUh_xvS4OJlR36dGicmn4MObQhl.Z F7pj1SpxA2o9ikaFXQB.bD5PhVo8Mi8f3XtXJb0m3T79rlqt9Tu_jR4vfN2G5AAK0Qr3cNH4lDEg LmyN8hBZXSLiFFONUdLmBGf2jgpGsGPGhLMZKeD0bvLpo5SsOYuEp8DtPflrROF0wM8J0a_whTza 5jHo4o9J4x8ZDmcxWvhTVC.XcJ6Cvc5BrfJSIuLatUr9csnPlZVY4k.jDpPpxL4adbqZ.tSwGWs4 BZlWNaUiVLPaUUX5jDEFocBjzVK8h37plPT0tmbrnFaWeE6bPnRmJ57TGzy03iilsJ2KylG_sC1s lR02hUWdh8B6E5YuxhyTiMP5CpeCvtad4hwhuVA6WIziH4SjMsj4RnMohMw87NvKjJ.A1aREJCpT oevJEqqVmK3gjHSN8nZ.XVz85HQCbWzaNLsj9zfSPoKNWhG9t8OX71wP0mgRF2luBUmVjkSoOQRI Q9mWsZNQNuYLoQ1npgrMwPN2WN3USbipBk6Pd8yg2kDlL__y6_G_vooINnIsvilKgfkeAaBEmHnm SZARqpKi4Lvb7QS3AAR_rBAfvO664MjW6185GvpY0OGyl.kza4kttpsXeB5xpPuptB.0AjZG6u6s bEJNbNgDCOytvLIwzORE0thJkARM6KLtcxzojbjJM2AL8m_hAw79D7W41_Ei9TVj35dXmRkfrpMJ 56C7Hi0sBQjIDi0NhqHXVDrjYVZulXg1UwXtgUiZWj9SdNUxaHwij4bpg5B6OWBUyl3duLpi0HMz ICbHfAwlAuftLOZRjFveuyb3vl_kZNv5OSx0_IOq1Zypl3za_YI6fBM9yMGptZpOeiLuYaBp28kw _KAtwPqnob38_fK3Yk2hnjMqbuhBrZ4Y8NFwD0GER.83Pp3g.VGYMqVGECwfgEIWEkPqXHw64_0Y ypnvkWrUR8ufZ4qzVqul3HiK4CbWrAoRD9gWHUzo9GCVw3Q3f_ckH8QuJK58pgz5NSZhpynuZom0 Ut.gcZcRTmybqangSdOw.nbNoF56Vdwb49IM2fUyHjz4N_3OgKUG14.rnFTQ5RUJYyqViUX3NpJ7 Sk8Zt6Rye2Bz4FyaOr08TYTYC_AschJx4gDuyR4WlDQaa4BkVAee9cihBNJkfOW7hvj.._R3iv4Q _sR6ukaIuZQnSsA9sPSF9SfZL2wewDqfAukbf1OiW6IydwlEG.O08xWz3d3C1DgAi4yZgg.jIq4p yxXUFUmdSch._JTuYigWrWCzMLDD9p1prjfCOKfp54iZR8qpzs56N4FUfJZeV0vIGUra7qCxO11P deCD3z4l4db.Y4Z2AWE_6FCpZ6DE.QrLN6BXC3fgvq4r4L3.MeGaz7GSpjdIoUddOS285Psz95Wl pkV1CuK5bi4p5uie0XZuU2n.uPT2j99OKiJwG1Ofvljnm91wnx.R0ixfeG9iZdTd2JRPKXhIs9Xk UjqW7f1zs6LR3YjeerxbaNkeAetjGv8Fo9JgK_hNe2dZpN1Zl9Bh1YT.z4EjFvgZQXyV02Gnt2dl .npHAYDc8pinQ2FvXIpsmlwsoDhwlSIUBgoMO0n1z1_aAUFid8RLfrnV4nFfjIaMxBLxLDaWeQhZ GDTFPpXdgqGQ2pSR.24iQohexY3tAzxeN6OseVoWxtbUWT_.r_rSrbVyo431xY3ExhkuKP9Jz X-Sonic-MF: X-Sonic-ID: 33b7911e-4a6d-4856-b13b-9b8043101e79 Received: from sonic.gate.mail.ne1.yahoo.com by sonic315.consmr.mail.bf2.yahoo.com with HTTP; Mon, 28 Apr 2025 13:39:31 +0000 Received: by hermes--production-ir2-858bd4ff7b-w59v5 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID f49b8cbae7345ecc00e497483c5b2cb3; Mon, 28 Apr 2025 13:37:29 +0000 (UTC) Date: Mon, 28 Apr 2025 16:37:22 +0300 To: FFmpeg development discussions and patches Message-ID: <84551ce9-30a8-4035-a2e2-e78f3cd110f8@Spark> In-Reply-To: <20250428103727.22461-1-jendas1@yahoo.com> References: <20250428103727.22461-1-jendas1.ref@yahoo.com> <20250428103727.22461-1-jendas1@yahoo.com> X-Readdle-Message-ID: 84551ce9-30a8-4035-a2e2-e78f3cd110f8@Spark MIME-Version: 1.0 X-Mailer: WebService/1.1.23737 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] avfilter/vf_lut3d_opencl Initial support for OpenCL implementation of vf_lut3d. 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: , From: =?utf-8?q?Jan_Studen=C3=BD_via_ffmpeg-devel?= Reply-To: FFmpeg development discussions and patches Cc: =?utf-8?Q?Jan_Studen=C3=BD?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: QWRkZWQgYW4gT3BlbkNMIGx1dDNkIHZpZGVvIGZpbHRlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhl IGN1cnJlbnQgbHV0M2QgdmlkZW8gZmlsdGVyLgoKLSBUaGlzIE9wZW5DTCBpbXBsZW1lbnRhdGlv biBjdXJyZW50bHkgc3VwcG9ydHMgb25seSAuY3ViZSBMVVQgZm9ybWF0IGFuZCAzIGludGVycG9s YXRpb25zIC0gbmVhcmVzdCx0cmlsaW5lYXIsdGV0cmFoZWRyYWwgKGRlZmF1bHQpLgotIE91dHB1 dHMgbWF0Y2ggQ1BVIHZlcnNpb24gdXAgdG8gZmxvYXRpbmcgcG9pbnQgZXJyb3JzLgoKClJlZ2Fy ZHMsCkphbiBTdHVkZW55Ck9uIEFwciAyOCwgMjAyNSBhdCAxMzozOSArMDMwMCwgSmFuIFN0dWRl bsO9IHZpYSBmZm1wZWctZGV2ZWwgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPiwgd3JvdGU6Cgo+ IC0tLQo+IGxpYmF2ZmlsdGVyL01ha2VmaWxlIHwgMSArCj4gbGliYXZmaWx0ZXIvYWxsZmlsdGVy cy5jIHwgMSArCj4gbGliYXZmaWx0ZXIvb3BlbmNsL2x1dDNkLmNsIHwgMTc3ICsrKysrKysrKysr KysrCj4gbGliYXZmaWx0ZXIvb3BlbmNsX3NvdXJjZS5oIHwgMiArCj4gbGliYXZmaWx0ZXIvdmZf bHV0M2Rfb3BlbmNsLmMgfCA0NDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ IDUgZmlsZXMgY2hhbmdlZCwgNjI1IGluc2VydGlvbnMoKykKPiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZmaWx0ZXIvb3BlbmNsL2x1dDNkLmNsCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zmls dGVyL3ZmX2x1dDNkX29wZW5jbC5jCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvTWFrZWZp bGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQo+IGluZGV4IDdjMGQ4NzllYzkuLjY1MjRkMGY5MWEg MTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUKPiArKysgYi9saWJhdmZpbHRlci9N YWtlZmlsZQo+IEBAIC0zNzgsNiArMzc4LDcgQEAgT0JKUy0kKENPTkZJR19MVVQxRF9GSUxURVIp ICs9IHZmX2x1dDNkLm8KPiBPQkpTLSQoQ09ORklHX0xVVF9GSUxURVIpICs9IHZmX2x1dC5vCj4g T0JKUy0kKENPTkZJR19MVVQyX0ZJTFRFUikgKz0gdmZfbHV0Mi5vIGZyYW1lc3luYy5vCj4gT0JK Uy0kKENPTkZJR19MVVQzRF9GSUxURVIpICs9IHZmX2x1dDNkLm8gZnJhbWVzeW5jLm8KPiArT0JK Uy0kKENPTkZJR19MVVQzRF9PUEVOQ0xfRklMVEVSKSArPSB2Zl9sdXQzZF9vcGVuY2wubyBvcGVu Y2wubyBvcGVuY2wvbHV0M2Qubwo+IE9CSlMtJChDT05GSUdfTFVUUkdCX0ZJTFRFUikgKz0gdmZf bHV0Lm8KPiBPQkpTLSQoQ09ORklHX0xVVFlVVl9GSUxURVIpICs9IHZmX2x1dC5vCj4gT0JKUy0k KENPTkZJR19NQVNLRURDTEFNUF9GSUxURVIpICs9IHZmX21hc2tlZGNsYW1wLm8gZnJhbWVzeW5j Lm8KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIv YWxsZmlsdGVycy5jCj4gaW5kZXggNzQwZDlhYjI2NS4uNzJjMmY0OGFjNCAxMDA2NDQKPiAtLS0g YS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKPiArKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJz LmMKPiBAQCAtMzUzLDYgKzM1Myw3IEBAIGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl92Zl9sdXQ7 Cj4gZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX3ZmX2x1dDFkOwo+IGV4dGVybiBjb25zdCBGRkZp bHRlciBmZl92Zl9sdXQyOwo+IGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl92Zl9sdXQzZDsKPiAr ZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX3ZmX2x1dDNkX29wZW5jbDsKPiBleHRlcm4gY29uc3Qg RkZGaWx0ZXIgZmZfdmZfbHV0cmdiOwo+IGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl92Zl9sdXR5 dXY7Cj4gZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX3ZmX21hc2tlZGNsYW1wOwo+IGRpZmYgLS1n aXQgYS9saWJhdmZpbHRlci9vcGVuY2wvbHV0M2QuY2wgYi9saWJhdmZpbHRlci9vcGVuY2wvbHV0 M2QuY2wKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjE2ZGZlY2Rj NGUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmaWx0ZXIvb3BlbmNsL2x1dDNkLmNsCj4g QEAgLTAsMCArMSwxNzcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDI1IEphbiBTdHVk ZW55Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Cj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCByZ2J2ZWMgewo+ICsgZmxv YXQgciwgZywgYiwgYTsKPiArfSByZ2J2ZWM7Cj4gKwo+ICsjZGVmaW5lIE1JTihYLCBZKSAoKChY KSA8IChZKSkgPyAoWCkgOiAoWSkpCj4gKwo+ICsjZGVmaW5lIE5FQVIoeCkgKChpbnQpKCh4KSAr IC41KSkKPiArI2RlZmluZSBQUkVWKHgpICgoaW50KSh4KSkKPiArI2RlZmluZSBORVhUKHgpIChN SU4oKGludCkoeCkgKyAxLCBsdXRfZWRnZV9zaXplIC0gMSkpCj4gKwo+ICsvKioKPiArICogR2V0 IHRoZSBuZWFyZXN0IGRlZmluZWQgcG9pbnQKPiArICovCj4gK3N0YXRpYyByZ2J2ZWMgaW50ZXJw X25lYXJlc3QoZmxvYXQ0IHB4LCBfX2dsb2JhbCBjb25zdCByZ2J2ZWMgKmx1dCwgaW50IGx1dF9l ZGdlX3NpemUpCj4gK3sKPiArIGludCByID0gTkVBUihweFswXSk7Cj4gKyBpbnQgZyA9IE5FQVIo cHhbMV0pOwo+ICsgaW50IGIgPSBORUFSKHB4WzJdKTsKPiArIGludCBpbmRleCA9IHIgKiBsdXRf ZWRnZV9zaXplICogbHV0X2VkZ2Vfc2l6ZSArIGcgKiBsdXRfZWRnZV9zaXplICsgYjsKPiArIHJl dHVybiBsdXRbaW5kZXhdOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZmxvYXQgbGVycGYoZmxvYXQgdjAs IGZsb2F0IHYxLCBmbG9hdCBmKQo+ICt7Cj4gKyByZXR1cm4gdjAgKyAodjEgLSB2MCkgKiBmOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgcmdidmVjIGxlcnAoY29uc3QgcmdidmVjICp2MCwgY29uc3Qgcmdi dmVjICp2MSwgZmxvYXQgZikKPiArewo+ICsgcmdidmVjIHYgPSB7Cj4gKyBsZXJwZih2MC0+ciwg djEtPnIsIGYpLCBsZXJwZih2MC0+ZywgdjEtPmcsIGYpLCBsZXJwZih2MC0+YiwgdjEtPmIsIGYp Cj4gKyB9Owo+ICsgcmV0dXJuIHY7Cj4gK30KPiArLyoqCj4gKyAqIEludGVycG9sYXRlIHVzaW5n IHRoZSA4IHZlcnRpY2VzIG9mIGEgY3ViZQo+ICsgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlh Lm9yZy93aWtpL1RyaWxpbmVhcl9pbnRlcnBvbGF0aW9uCj4gKyAqLwo+ICtzdGF0aWMgcmdidmVj IGludGVycF90cmlsaW5lYXIoZmxvYXQ0IHB4LCBfX2dsb2JhbCBjb25zdCByZ2J2ZWMgKmx1dCwg aW50IGx1dF9lZGdlX3NpemUpCj4gK3sKPiArIGNvbnN0IGludCBsdXRzaXplMiA9IGx1dF9lZGdl X3NpemUgKiBsdXRfZWRnZV9zaXplOwo+ICsgY29uc3QgaW50IGx1dHNpemUgPSBsdXRfZWRnZV9z aXplOwo+ICsKPiArIGNvbnN0IGludCBwcmV2W10gPSB7IFBSRVYocHhbMF0pLCBQUkVWKHB4WzFd KSwgUFJFVihweFsyXSkgfTsKPiArIGNvbnN0IGludCBuZXh0W10gPSB7IE5FWFQocHhbMF0pLCBO RVhUKHB4WzFdKSwgTkVYVChweFsyXSkgfTsKPiArCj4gKyBjb25zdCByZ2J2ZWMgZCA9IHsKPiAr IHB4WzBdIC0gcHJldlswXSwKPiArIHB4WzFdIC0gcHJldlsxXSwKPiArIHB4WzJdIC0gcHJldlsy XQo+ICsgfTsKPiArCj4gKyBjb25zdCByZ2J2ZWMgYzAwMCA9IGx1dFtwcmV2WzBdICogbHV0c2l6 ZTIgKyBwcmV2WzFdICogbHV0c2l6ZSArIHByZXZbMl1dOwo+ICsgY29uc3QgcmdidmVjIGMwMDEg PSBsdXRbcHJldlswXSAqIGx1dHNpemUyICsgcHJldlsxXSAqIGx1dHNpemUgKyBuZXh0WzJdXTsK PiArIGNvbnN0IHJnYnZlYyBjMDEwID0gbHV0W3ByZXZbMF0gKiBsdXRzaXplMiArIG5leHRbMV0g KiBsdXRzaXplICsgcHJldlsyXV07Cj4gKyBjb25zdCByZ2J2ZWMgYzAxMSA9IGx1dFtwcmV2WzBd ICogbHV0c2l6ZTIgKyBuZXh0WzFdICogbHV0c2l6ZSArIG5leHRbMl1dOwo+ICsgY29uc3Qgcmdi dmVjIGMxMDAgPSBsdXRbbmV4dFswXSAqIGx1dHNpemUyICsgcHJldlsxXSAqIGx1dHNpemUgKyBw cmV2WzJdXTsKPiArIGNvbnN0IHJnYnZlYyBjMTAxID0gbHV0W25leHRbMF0gKiBsdXRzaXplMiAr IHByZXZbMV0gKiBsdXRzaXplICsgbmV4dFsyXV07Cj4gKyBjb25zdCByZ2J2ZWMgYzExMCA9IGx1 dFtuZXh0WzBdICogbHV0c2l6ZTIgKyBuZXh0WzFdICogbHV0c2l6ZSArIHByZXZbMl1dOwo+ICsg Y29uc3QgcmdidmVjIGMxMTEgPSBsdXRbbmV4dFswXSAqIGx1dHNpemUyICsgbmV4dFsxXSAqIGx1 dHNpemUgKyBuZXh0WzJdXTsKPiArCj4gKyBjb25zdCByZ2J2ZWMgYzAwID0gbGVycCgmYzAwMCwg JmMxMDAsIGQucik7Cj4gKyBjb25zdCByZ2J2ZWMgYzEwID0gbGVycCgmYzAxMCwgJmMxMTAsIGQu cik7Cj4gKyBjb25zdCByZ2J2ZWMgYzAxID0gbGVycCgmYzAwMSwgJmMxMDEsIGQucik7Cj4gKyBj b25zdCByZ2J2ZWMgYzExID0gbGVycCgmYzAxMSwgJmMxMTEsIGQucik7Cj4gKwo+ICsgY29uc3Qg cmdidmVjIGMwID0gbGVycCgmYzAwLCAmYzEwLCBkLmcpOwo+ICsgY29uc3QgcmdidmVjIGMxID0g bGVycCgmYzAxLCAmYzExLCBkLmcpOwo+ICsKPiArIHJldHVybiBsZXJwKCZjMCwgJmMxLCBkLmIp Owo+ICt9Cj4gKwo+ICsvKioKPiArICogVGV0cmFoZWRyYWwgaW50ZXJwb2xhdGlvbi4gQmFzZWQg b24gY29kZSBmb3VuZCBpbiBUcnVlbGlnaHQgU29mdHdhcmUgTGlicmFyeSBwYXBlci4KPiArICog QHNlZSBodHRwOi8vd3d3LmZpbG1saWdodC5sdGQudWsvcGRmL3doaXRlcGFwZXJzL0ZMLVRMLVRO LTAwNTctU29mdHdhcmVMaWIucGRmCj4gKyAqLwo+ICsKPiArc3RhdGljIHJnYnZlYyBpbnRlcnBf dGV0cmFoZWRyYWwoZmxvYXQ0IHB4LCBfX2dsb2JhbCBjb25zdCByZ2J2ZWMgKmx1dCwgaW50IGx1 dF9lZGdlX3NpemUpCj4gK3sKPiArIGNvbnN0IGludCBsdXRzaXplMiA9IGx1dF9lZGdlX3NpemUq bHV0X2VkZ2Vfc2l6ZTsKPiArIGNvbnN0IGludCBsdXRzaXplID0gbHV0X2VkZ2Vfc2l6ZTsKPiAr IGNvbnN0IGludCBwcmV2W10gPSB7UFJFVihweFswXSksIFBSRVYocHhbMV0pLCBQUkVWKHB4WzJd KX07Cj4gKyBjb25zdCBpbnQgbmV4dFtdID0ge05FWFQocHhbMF0pLCBORVhUKHB4WzFdKSwgTkVY VChweFsyXSl9Owo+ICsgY29uc3QgcmdidmVjIGQgPSB7cHhbMF0gLSBwcmV2WzBdLCBweFsxXSAt IHByZXZbMV0sIHB4WzJdIC0gcHJldlsyXX07Cj4gKyBjb25zdCByZ2J2ZWMgYzAwMCA9IGx1dFtw cmV2WzBdICogbHV0c2l6ZTIgKyBwcmV2WzFdICogbHV0c2l6ZSArIHByZXZbMl1dOwo+ICsgY29u c3QgcmdidmVjIGMxMTEgPSBsdXRbbmV4dFswXSAqIGx1dHNpemUyICsgbmV4dFsxXSAqIGx1dHNp emUgKyBuZXh0WzJdXTsKPiArIHJnYnZlYyBjOwo+ICsgaWYgKGQuciA+IGQuZykgewo+ICsgaWYg KGQuZyA+IGQuYikgewo+ICsgY29uc3QgcmdidmVjIGMxMDAgPSBsdXRbbmV4dFswXSAqIGx1dHNp emUyICsgcHJldlsxXSAqIGx1dHNpemUgKyBwcmV2WzJdXTsKPiArIGNvbnN0IHJnYnZlYyBjMTEw ID0gbHV0W25leHRbMF0gKiBsdXRzaXplMiArIG5leHRbMV0gKiBsdXRzaXplICsgcHJldlsyXV07 Cj4gKyBjLnIgPSAoMS1kLnIpICogYzAwMC5yICsgKGQuci1kLmcpICogYzEwMC5yICsgKGQuZy1k LmIpICogYzExMC5yICsgKGQuYikgKiBjMTExLnI7Cj4gKyBjLmcgPSAoMS1kLnIpICogYzAwMC5n ICsgKGQuci1kLmcpICogYzEwMC5nICsgKGQuZy1kLmIpICogYzExMC5nICsgKGQuYikgKiBjMTEx Lmc7Cj4gKyBjLmIgPSAoMS1kLnIpICogYzAwMC5iICsgKGQuci1kLmcpICogYzEwMC5iICsgKGQu Zy1kLmIpICogYzExMC5iICsgKGQuYikgKiBjMTExLmI7Cj4gKyB9IGVsc2UgaWYgKGQuciA+IGQu Yikgewo+ICsgY29uc3QgcmdidmVjIGMxMDAgPSBsdXRbbmV4dFswXSAqIGx1dHNpemUyICsgcHJl dlsxXSAqIGx1dHNpemUgKyBwcmV2WzJdXTsKPiArIGNvbnN0IHJnYnZlYyBjMTAxID0gbHV0W25l eHRbMF0gKiBsdXRzaXplMiArIHByZXZbMV0gKiBsdXRzaXplICsgbmV4dFsyXV07Cj4gKyBjLnIg PSAoMS1kLnIpICogYzAwMC5yICsgKGQuci1kLmIpICogYzEwMC5yICsgKGQuYi1kLmcpICogYzEw MS5yICsgKGQuZykgKiBjMTExLnI7Cj4gKyBjLmcgPSAoMS1kLnIpICogYzAwMC5nICsgKGQuci1k LmIpICogYzEwMC5nICsgKGQuYi1kLmcpICogYzEwMS5nICsgKGQuZykgKiBjMTExLmc7Cj4gKyBj LmIgPSAoMS1kLnIpICogYzAwMC5iICsgKGQuci1kLmIpICogYzEwMC5iICsgKGQuYi1kLmcpICog YzEwMS5iICsgKGQuZykgKiBjMTExLmI7Cj4gKyB9IGVsc2Ugewo+ICsgY29uc3QgcmdidmVjIGMw MDEgPSBsdXRbcHJldlswXSAqIGx1dHNpemUyICsgcHJldlsxXSAqIGx1dHNpemUgKyBuZXh0WzJd XTsKPiArIGNvbnN0IHJnYnZlYyBjMTAxID0gbHV0W25leHRbMF0gKiBsdXRzaXplMiArIHByZXZb MV0gKiBsdXRzaXplICsgbmV4dFsyXV07Cj4gKyBjLnIgPSAoMS1kLmIpICogYzAwMC5yICsgKGQu Yi1kLnIpICogYzAwMS5yICsgKGQuci1kLmcpICogYzEwMS5yICsgKGQuZykgKiBjMTExLnI7Cj4g KyBjLmcgPSAoMS1kLmIpICogYzAwMC5nICsgKGQuYi1kLnIpICogYzAwMS5nICsgKGQuci1kLmcp ICogYzEwMS5nICsgKGQuZykgKiBjMTExLmc7Cj4gKyBjLmIgPSAoMS1kLmIpICogYzAwMC5iICsg KGQuYi1kLnIpICogYzAwMS5iICsgKGQuci1kLmcpICogYzEwMS5iICsgKGQuZykgKiBjMTExLmI7 Cj4gKyB9Cj4gKyB9IGVsc2Ugewo+ICsgaWYgKGQuYiA+IGQuZykgewo+ICsgY29uc3QgcmdidmVj IGMwMDEgPSBsdXRbcHJldlswXSAqIGx1dHNpemUyICsgcHJldlsxXSAqIGx1dHNpemUgKyBuZXh0 WzJdXTsKPiArIGNvbnN0IHJnYnZlYyBjMDExID0gbHV0W3ByZXZbMF0gKiBsdXRzaXplMiArIG5l eHRbMV0gKiBsdXRzaXplICsgbmV4dFsyXV07Cj4gKyBjLnIgPSAoMS1kLmIpICogYzAwMC5yICsg KGQuYi1kLmcpICogYzAwMS5yICsgKGQuZy1kLnIpICogYzAxMS5yICsgKGQucikgKiBjMTExLnI7 Cj4gKyBjLmcgPSAoMS1kLmIpICogYzAwMC5nICsgKGQuYi1kLmcpICogYzAwMS5nICsgKGQuZy1k LnIpICogYzAxMS5nICsgKGQucikgKiBjMTExLmc7Cj4gKyBjLmIgPSAoMS1kLmIpICogYzAwMC5i ICsgKGQuYi1kLmcpICogYzAwMS5iICsgKGQuZy1kLnIpICogYzAxMS5iICsgKGQucikgKiBjMTEx LmI7Cj4gKyB9IGVsc2UgaWYgKGQuYiA+IGQucikgewo+ICsgY29uc3QgcmdidmVjIGMwMTAgPSBs dXRbcHJldlswXSAqIGx1dHNpemUyICsgbmV4dFsxXSAqIGx1dHNpemUgKyBwcmV2WzJdXTsKPiAr IGNvbnN0IHJnYnZlYyBjMDExID0gbHV0W3ByZXZbMF0gKiBsdXRzaXplMiArIG5leHRbMV0gKiBs dXRzaXplICsgbmV4dFsyXV07Cj4gKyBjLnIgPSAoMS1kLmcpICogYzAwMC5yICsgKGQuZy1kLmIp ICogYzAxMC5yICsgKGQuYi1kLnIpICogYzAxMS5yICsgKGQucikgKiBjMTExLnI7Cj4gKyBjLmcg PSAoMS1kLmcpICogYzAwMC5nICsgKGQuZy1kLmIpICogYzAxMC5nICsgKGQuYi1kLnIpICogYzAx MS5nICsgKGQucikgKiBjMTExLmc7Cj4gKyBjLmIgPSAoMS1kLmcpICogYzAwMC5iICsgKGQuZy1k LmIpICogYzAxMC5iICsgKGQuYi1kLnIpICogYzAxMS5iICsgKGQucikgKiBjMTExLmI7Cj4gKyB9 IGVsc2Ugewo+ICsgY29uc3QgcmdidmVjIGMwMTAgPSBsdXRbcHJldlswXSAqIGx1dHNpemUyICsg bmV4dFsxXSAqIGx1dHNpemUgKyBwcmV2WzJdXTsKPiArIGNvbnN0IHJnYnZlYyBjMTEwID0gbHV0 W25leHRbMF0gKiBsdXRzaXplMiArIG5leHRbMV0gKiBsdXRzaXplICsgcHJldlsyXV07Cj4gKyBj LnIgPSAoMS1kLmcpICogYzAwMC5yICsgKGQuZy1kLnIpICogYzAxMC5yICsgKGQuci1kLmIpICog YzExMC5yICsgKGQuYikgKiBjMTExLnI7Cj4gKyBjLmcgPSAoMS1kLmcpICogYzAwMC5nICsgKGQu Zy1kLnIpICogYzAxMC5nICsgKGQuci1kLmIpICogYzExMC5nICsgKGQuYikgKiBjMTExLmc7Cj4g KyBjLmIgPSAoMS1kLmcpICogYzAwMC5iICsgKGQuZy1kLnIpICogYzAxMC5iICsgKGQuci1kLmIp ICogYzExMC5iICsgKGQuYikgKiBjMTExLmI7Cj4gKyB9Cj4gKyB9Cj4gKyByZXR1cm4gYzsKPiAr fQo+ICsKPiArI2RlZmluZSBMVVQzRF9LRVJORUwoSU5URVJQX0ZVTkMpIFwKPiArX19rZXJuZWwg dm9pZCBsdXQzZF8jI0lOVEVSUF9GVU5DKCBcCj4gKyBfX3JlYWRfb25seSBpbWFnZTJkX3Qgc3Jj LCBcCj4gKyBfX3dyaXRlX29ubHkgaW1hZ2UyZF90IGRzdCwgXAo+ICsgX19nbG9iYWwgY29uc3Qg cmdidmVjKiBsdXQsIFwKPiArIGludCBsdXRfZWRnZV9zaXplKSBcCj4gK3sgXAo+ICsgY29uc3Qg c2FtcGxlcl90IHNhbXBsZXIgPSAoQ0xLX05PUk1BTElaRURfQ09PUkRTX0ZBTFNFIHwgXAo+ICsg Q0xLX0FERFJFU1NfQ0xBTVBfVE9fRURHRSB8IFwKPiArIENMS19GSUxURVJfTkVBUkVTVCk7IFwK PiArIFwKPiArIGludDIgbG9jID0gKGludDIpKGdldF9nbG9iYWxfaWQoMCksIGdldF9nbG9iYWxf aWQoMSkpOyBcCj4gKyBmbG9hdDQgcHggPSByZWFkX2ltYWdlZihzcmMsIHNhbXBsZXIsIGxvYyk7 IFwKPiArIFwKPiArIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7IFwKPiArIHB4W2ldICo9 IChsdXRfZWRnZV9zaXplIC0gMSk7IFwKPiArIH0gXAo+ICsgXAo+ICsgcmdidmVjIGx1dHB4ID0g SU5URVJQX0ZVTkMocHgsIGx1dCwgbHV0X2VkZ2Vfc2l6ZSk7IFwKPiArIFwKPiArIHdyaXRlX2lt YWdlZihkc3QsIGxvYywgKGZsb2F0NCkobHV0cHguciwgbHV0cHguZywgbHV0cHguYiwgMC4wZikp OyBcCj4gK30KPiArCj4gK0xVVDNEX0tFUk5FTChpbnRlcnBfbmVhcmVzdCkKPiArTFVUM0RfS0VS TkVMKGludGVycF90cmlsaW5lYXIpCj4gK0xVVDNEX0tFUk5FTChpbnRlcnBfdGV0cmFoZWRyYWwp Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL29wZW5jbF9zb3VyY2UuaCBiL2xpYmF2ZmlsdGVy L29wZW5jbF9zb3VyY2UuaAo+IGluZGV4IGI2OTMwZmI2ODYuLmQxNDMyODZkMjEgMTAwNjQ0Cj4g LS0tIGEvbGliYXZmaWx0ZXIvb3BlbmNsX3NvdXJjZS5oCj4gKysrIGIvbGliYXZmaWx0ZXIvb3Bl bmNsX3NvdXJjZS5oCj4gQEAgLTI2LDYgKzI2LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmZmX3Nv dXJjZV9jb252b2x1dGlvbl9jbDsKPiBleHRlcm4gY29uc3QgY2hhciAqZmZfc291cmNlX2Rlc2hh a2VfY2w7Cj4gZXh0ZXJuIGNvbnN0IGNoYXIgKmZmX3NvdXJjZV9uZWlnaGJvcl9jbDsKPiBleHRl cm4gY29uc3QgY2hhciAqZmZfc291cmNlX25sbWVhbnNfY2w7Cj4gK2V4dGVybiBjb25zdCBjaGFy ICpmZl9zb3VyY2VfbHV0M2RfY2w7Cj4gZXh0ZXJuIGNvbnN0IGNoYXIgKmZmX3NvdXJjZV9vdmVy bGF5X2NsOwo+IGV4dGVybiBjb25zdCBjaGFyICpmZl9zb3VyY2VfcGFkX2NsOwo+IGV4dGVybiBj b25zdCBjaGFyICpmZl9zb3VyY2VfcmVtYXBfY2w7Cj4gQEAgLTM0LDQgKzM1LDUgQEAgZXh0ZXJu IGNvbnN0IGNoYXIgKmZmX3NvdXJjZV90cmFuc3Bvc2VfY2w7Cj4gZXh0ZXJuIGNvbnN0IGNoYXIg KmZmX3NvdXJjZV91bnNoYXJwX2NsOwo+IGV4dGVybiBjb25zdCBjaGFyICpmZl9zb3VyY2VfeGZh ZGVfY2w7Cj4KPiArCj4gI2VuZGlmIC8qIEFWRklMVEVSX09QRU5DTF9TT1VSQ0VfSCAqLwo+IGRp ZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9sdXQzZF9vcGVuY2wuYyBiL2xpYmF2ZmlsdGVyL3Zm X2x1dDNkX29wZW5jbC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw Li4xMjdhODFlZGNlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2ZmlsdGVyL3ZmX2x1dDNk X29wZW5jbC5jCj4gQEAgLTAsMCArMSw0NDQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAy MDI1IEphbiBTdHVkZW55Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K PiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4g KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsjaW5jbHVkZSAiY29uZmlnX2Nv bXBvbmVudHMuaCIKPiArCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKPiArI2lu Y2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGls cy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGls L29wdC5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiArI2luY2x1ZGUgImxp YmF2dXRpbC9hdnN0cmluZy5oIgo+ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9maWxlX29wZW4u aCIKPiArCj4gKyNpbmNsdWRlICJhdmZpbHRlci5oIgo+ICsjaW5jbHVkZSAiZmlsdGVycy5oIgo+ ICsjaW5jbHVkZSAib3BlbmNsLmgiCj4gKyNpbmNsdWRlICJkcmF3dXRpbHMuaCIKPiArI2luY2x1 ZGUgIm9wZW5jbF9zb3VyY2UuaCIKPiArI2luY2x1ZGUgInZpZGVvLmgiCj4gKwo+ICsKPiArI2Rl ZmluZSBNQVhfTElORV9TSVpFIDUxMgo+ICsKPiArZW51bSBpbnRlcnBfbW9kZSB7Cj4gKyBJTlRF UlBPTEFURV9ORUFSRVNULAo+ICsgSU5URVJQT0xBVEVfVFJJTElORUFSLAo+ICsgSU5URVJQT0xB VEVfVEVUUkFIRURSQUwsCj4gKyBJTlRFUlBPTEFURV9QWVJBTUlELAo+ICsgSU5URVJQT0xBVEVf UFJJU00sCj4gKyBOQl9JTlRFUlBfTU9ERQo+ICt9Owo+ICsKPiArdHlwZWRlZiBzdHJ1Y3Qgcmdi dmVjIHsKPiArIGNsX2Zsb2F0IHIsIGcsIGIsIGE7Cj4gK30gcmdidmVjOwo+ICsKPiArI2RlZmlu ZSBNQVhfTEVWRUwgMjU2Cj4gKwo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgTFVUM0RPcGVuQ0xDb250 ZXh0IHsKPiArIE9wZW5DTEZpbHRlckNvbnRleHQgb2NmOwo+ICsKPiArIGludCBpbml0aWFsaXNl ZDsKPiArIGNsX2tlcm5lbCBrZXJuZWw7Cj4gKyBjbF9jb21tYW5kX3F1ZXVlIGNvbW1hbmRfcXVl dWU7Cj4gKyBjbF9tZW0gbHV0M2RfYnVmOwo+ICsKPiArIHN0cnVjdCByZ2J2ZWMgKmx1dDsKPiAr IGludCBsdXRzaXplOwo+ICsgaW50IGx1dHNpemUyOwo+ICsgc3RydWN0IHJnYnZlYyBzY2FsZTsK PiArIGludCBpbnRlcnBvbGF0aW9uOyAvLy88aW50ZXJwX21vZGUKPiArIGNoYXIgKmZpbGU7Cj4g K30gTFVUM0RPcGVuQ0xDb250ZXh0Owo+ICsKPiArc3RhdGljIGludCBhbGxvY2F0ZV8zZGx1dChB VkZpbHRlckNvbnRleHQgKmN0eCwgaW50IGx1dHNpemUpCj4gK3sKPiArIExVVDNET3BlbkNMQ29u dGV4dCAqbHV0M2QgPSBjdHgtPnByaXY7Cj4gKyBpZiAobHV0c2l6ZSA8IDIgfHwgbHV0c2l6ZSA+ IE1BWF9MRVZFTCkgewo+ICsgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVG9vIGxhcmdlIG9y IGludmFsaWQgM0QgTFVUIHNpemVcbiIpOwo+ICsgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAr IH0KPiArCj4gKyBhdl9mcmVlcCgmbHV0M2QtPmx1dCk7Cj4gKyBsdXQzZC0+bHV0ID0gYXZfbWFs bG9jX2FycmF5KGx1dHNpemUgKiBsdXRzaXplICogbHV0c2l6ZSwgc2l6ZW9mKCpsdXQzZC0+bHV0 KSk7Cj4gKyBpZiAoIWx1dDNkLT5sdXQpCj4gKyByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsK PiArIGx1dDNkLT5sdXRzaXplID0gbHV0c2l6ZTsKPiArIGx1dDNkLT5sdXRzaXplMiA9IGx1dHNp emUgKiBsdXRzaXplOwo+ICsgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2V0X2lk ZW50aXR5X21hdHJpeChBVkZpbHRlckNvbnRleHQgKmN0eCwgaW50IHNpemUpCj4gK3sKPiArIExV VDNET3BlbkNMQ29udGV4dCAqbHV0M2QgPSBjdHgtPnByaXY7Cj4gKyBpbnQgcmV0LCBpLCBqLCBr Owo+ICsgY29uc3QgaW50IHNpemUyID0gc2l6ZSAqIHNpemU7Cj4gKyBjb25zdCBmbG9hdCBjID0g MS4gLyAoc2l6ZSAtIDEpOwo+ICsKPiArIHJldCA9IGFsbG9jYXRlXzNkbHV0KGN0eCwgc2l6ZSk7 Cj4gKyBpZiAocmV0IDwgMCkKPiArIHJldHVybiByZXQ7Cj4gKwo+ICsgZm9yIChrID0gMDsgayA8 IHNpemU7IGsrKykgewo+ICsgZm9yIChqID0gMDsgaiA8IHNpemU7IGorKykgewo+ICsgZm9yIChp ID0gMDsgaSA8IHNpemU7IGkrKykgewo+ICsgc3RydWN0IHJnYnZlYyAqdmVjID0gJmx1dDNkLT5s dXRbayAqIHNpemUyICsgaiAqIHNpemUgKyBpXTsKPiArIHZlYy0+ciA9IGsgKiBjOwo+ICsgdmVj LT5nID0gaiAqIGM7Cj4gKyB2ZWMtPmIgPSBpICogYzsKPiArIH0KPiArIH0KPiArIH0KPiArCj4g KyByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBza2lwX2xpbmUoY29uc3QgY2hhciAq cCkKPiArewo+ICsgd2hpbGUgKCpwICYmIGF2X2lzc3BhY2UoKnApKQo+ICsgcCsrOwo+ICsgcmV0 dXJuICEqcCB8fCAqcCA9PSAnIyc7Cj4gK30KPiArCj4gKyNkZWZpbmUgTkVYVF9MSU5FKGxvb3Bf Y29uZCkgZG8geyBcCj4gKyBpZiAoIWZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZikpIHsgXAo+ ICsgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVW5leHBlY3RlZCBFT0ZcbiIpOyBcCj4gKyBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsgXAo+ICsgfSBcCj4gK30gd2hpbGUgKGxvb3BfY29u ZCkKPiArCj4gK3N0YXRpYyBpbnQgcGFyc2VfY3ViZShBVkZpbHRlckNvbnRleHQgKmN0eCwgRklM RSAqZikKPiArewo+ICsgTFVUM0RPcGVuQ0xDb250ZXh0ICpsdXQzZCA9IGN0eC0+cHJpdjsKPiAr IGNoYXIgbGluZVtNQVhfTElORV9TSVpFXTsKPiArCj4gKyB3aGlsZSAoZmdldHMobGluZSwgc2l6 ZW9mKGxpbmUpLCBmKSkgewo+ICsgaWYgKCFzdHJuY21wKGxpbmUsICJMVVRfM0RfU0laRSIsIDEx KSkgewo+ICsgaW50IHJldCwgaSwgaiwgazsKPiArIGNvbnN0IGludCBzaXplID0gc3RydG9sKGxp bmUgKyAxMiwgTlVMTCwgMCk7Cj4gKyBjb25zdCBpbnQgc2l6ZTIgPSBzaXplICogc2l6ZTsKPiAr Cj4gKyByZXQgPSBhbGxvY2F0ZV8zZGx1dChjdHgsIHNpemUpOwo+ICsgaWYgKHJldCA8IDApCj4g KyByZXR1cm4gcmV0Owo+ICsKPiArIGZvciAoayA9IDA7IGsgPCBzaXplOyBrKyspIHsKPiArIGZv ciAoaiA9IDA7IGogPCBzaXplOyBqKyspIHsKPiArIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKysp IHsKPiArIHN0cnVjdCByZ2J2ZWMgKnZlYyA9ICZsdXQzZC0+bHV0W2kgKiBzaXplMiArIGogKiBz aXplICsga107Cj4gKwo+ICsgZG8gewo+ICt0cnlfYWdhaW46Cj4gKyBORVhUX0xJTkUoMCk7Cj4g KyBpZiAoIXN0cm5jbXAobGluZSwgIkRPTUFJTl8iLCA3KSkgewo+ICsgYXZfbG9nKGN0eCwgQVZf TE9HX0VSUk9SLCAiTWluL21heCBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZm9ybWF0XG4iKTsKPiAr IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgfSBlbHNlIGlmICghc3RybmNtcChsaW5l LCAiVElUTEUiLCA1KSkgewo+ICsgZ290byB0cnlfYWdhaW47Cj4gKyB9Cj4gKyB9IHdoaWxlIChz a2lwX2xpbmUobGluZSkpOwo+ICsgaWYgKGF2X3NzY2FuZihsaW5lLCAiJWYgJWYgJWYiLCAmdmVj LT5yLCAmdmVjLT5nLCAmdmVjLT5iKSAhPSAzKQo+ICsgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4gKyB9Cj4gKyB9Cj4gKyB9Cj4gKyBicmVhazsKPiArIH0KPiArIH0KPiArCj4gKyByZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsdXQzZF9vcGVuY2xfaW5pdF9kZXZpY2UoQVZG aWx0ZXJDb250ZXh0ICphdmN0eCkKPiArewo+ICsgaW50IGVycjsKPiArIExVVDNET3BlbkNMQ29u dGV4dCAqY3R4ID0gYXZjdHgtPnByaXY7Cj4gKyBjbF9pbnQgY2xlOwo+ICsKPiArCj4gKyBzaXpl X3QgbiA9IGN0eC0+bHV0c2l6ZTsKPiArIHNpemVfdCB0b3RhbCA9IG4gKiBuICogbjsKPiArCj4g Kwo+ICsgY2xfbWVtIGx1dDNkX2J1ZiA9IGNsQ3JlYXRlQnVmZmVyKGN0eC0+b2NmLmh3Y3R4LT5j b250ZXh0LAo+ICsgQ0xfTUVNX1JFQURfT05MWSB8Cj4gKyBDTF9NRU1fQ09QWV9IT1NUX1BUUiB8 Cj4gKyBDTF9NRU1fSE9TVF9OT19BQ0NFU1MsCj4gKyBzaXplb2YocmdidmVjKSAqIHRvdGFsLAo+ ICsgY3R4LT5sdXQsICZjbGUpOwo+ICsKPiArIGlmICghbHV0M2RfYnVmKSB7Cj4gKyBhdl9sb2co YXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjcmVhdGUgYnVmZmVyOiAiCj4gKyAiJWQu XG4iLCBjbGUpOwo+ICsgcmV0dXJuIEFWRVJST1IoRUlPKTsKPiArIH0KPiArIGN0eC0+bHV0M2Rf YnVmID0gbHV0M2RfYnVmOwo+ICsKPiArIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiTFVU M0QgZGF0YSBsb2FkZWQgb250byBob3N0XG4iKTsKPiArCj4gKwo+ICsKPiArCj4gKyBlcnIgPSBm Zl9vcGVuY2xfZmlsdGVyX2xvYWRfcHJvZ3JhbShhdmN0eCwgJmZmX3NvdXJjZV9sdXQzZF9jbCwg MSk7Cj4gKyBpZiAoZXJyIDwgMCkKPiArIHJldHVybiBlcnI7Cj4gKwo+ICsgY3R4LT5jb21tYW5k X3F1ZXVlID0gY2xDcmVhdGVDb21tYW5kUXVldWUoY3R4LT5vY2YuaHdjdHgtPmNvbnRleHQsCj4g KyBjdHgtPm9jZi5od2N0eC0+ZGV2aWNlX2lkLAo+ICsgMCwgJmNsZSk7Cj4gKyBDTF9GQUlMX09O X0VSUk9SKEFWRVJST1IoRUlPKSwgIkZhaWxlZCB0byBjcmVhdGUgT3BlbkNMICIKPiArICJjb21t YW5kIHF1ZXVlICVkLlxuIiwgY2xlKTsKPiArCj4gKyBjb25zdCBjaGFyICprZXJuZWxfbmFtZTsK PiArIHN3aXRjaCAoY3R4LT5pbnRlcnBvbGF0aW9uKSB7Cj4gKyBjYXNlIElOVEVSUE9MQVRFX05F QVJFU1Q6IGtlcm5lbF9uYW1lID0gImx1dDNkX2ludGVycF9uZWFyZXN0IjsgYnJlYWs7Cj4gKyBj YXNlIElOVEVSUE9MQVRFX1RSSUxJTkVBUjoga2VybmVsX25hbWUgPSAibHV0M2RfaW50ZXJwX3Ry aWxpbmVhciI7IGJyZWFrOwo+ICsgY2FzZSBJTlRFUlBPTEFURV9URVRSQUhFRFJBTDoga2VybmVs X25hbWUgPSAibHV0M2RfaW50ZXJwX3RldHJhaGVkcmFsIjsgYnJlYWs7Cj4gKyBkZWZhdWx0Ogo+ ICsgYXZfYXNzZXJ0MCgwKTsKPiArIH0KPiArIGN0eC0+a2VybmVsID0gY2xDcmVhdGVLZXJuZWwo Y3R4LT5vY2YucHJvZ3JhbSwga2VybmVsX25hbWUsICZjbGUpOwo+ICsgQ0xfRkFJTF9PTl9FUlJP UihBVkVSUk9SKEVJTyksICJGYWlsZWQgdG8gY3JlYXRlICIKPiArICJrZXJuZWwgJWQuXG4iLCBj bGUpOwo+ICsKPiArIGN0eC0+aW5pdGlhbGlzZWQgPSAxOwo+ICsgcmV0dXJuIDA7Cj4gKyBmYWls Ogo+ICsgaWYgKGN0eC0+Y29tbWFuZF9xdWV1ZSkKPiArIGNsUmVsZWFzZUNvbW1hbmRRdWV1ZShj dHgtPmNvbW1hbmRfcXVldWUpOwo+ICsgaWYgKGN0eC0+a2VybmVsKQo+ICsgY2xSZWxlYXNlS2Vy bmVsKGN0eC0+a2VybmVsKTsKPiArIHJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bHV0M2Rfb3BlbmNsX2luaXQoQVZGaWx0ZXJDb250ZXh0ICphdmN0eCkKPiArewo+ICsKPiArIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiU3RhcnRpbmcgaW50aWFsaXphdGlvbiBvZiBMVVQz RCBPcGVuQ0xcbiIpOwo+ICsgTFVUM0RPcGVuQ0xDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdjsK PiArIGludCBlcnIgPSAwOwo+ICsKPiArIGZmX29wZW5jbF9maWx0ZXJfaW5pdChhdmN0eCk7Cj4g Kwo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJMVVQzRCBPcGVuQ0wgZmlsdGVyIGlu aXRpYWxpemVkXG4iKTsKPiArCj4gKwo+ICsgRklMRSAqZjsKPiArIGNvbnN0IGNoYXIgKmV4dDsK PiArCj4gKyBpZiAoIWN0eC0+ZmlsZSkgewo+ICsgcmV0dXJuIHNldF9pZGVudGl0eV9tYXRyaXgo YXZjdHgsIDMyKTsKPiArIH0KPiArIGVsc2Ugewo+ICsgZXh0ID0gc3RycmNocihjdHgtPmZpbGUs ICcuJyk7Cj4gKyBpZiAoIWV4dCkgewo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJV bmFibGUgdG8gZ3Vlc3MgdGhlIGZvcm1hdCBmcm9tIHRoZSBleHRlbnNpb25cbiIpOwo+ICsgZXJy ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArIHJldHVybiBlcnI7Cj4gKyB9Cj4gKyBleHQrKzsK PiArIGlmICghYXZfc3RyY2FzZWNtcChleHQsICJjdWJlIikpIHsKPiArIGYgPSBhdnByaXZfZm9w ZW5fdXRmOChjdHgtPmZpbGUsICJyIik7Cj4gKyBpZiAoIWYpIHsKPiArIGVyciA9IEFWRVJST1Io ZXJybm8pOwo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICIlczogJXNcbiIsIGN0eC0+ ZmlsZSwgYXZfZXJyMnN0cihlcnIpKTsKPiArIHJldHVybiBlcnI7Cj4gKyB9Cj4gKyBlcnIgPSBw YXJzZV9jdWJlKGF2Y3R4LCBmKTsKPiArIGZjbG9zZShmKTsKPiArIH0gZWxzZSB7Cj4gKyBhdl9s b2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVucmVjb2duaXplZCAnLiVzJyBmaWxlIHR5cGVcbiIs IGV4dCk7Cj4gKyBlcnIgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyByZXR1cm4gZXJyOwo+ICsgfQo+ ICsgaWYgKCFlcnIgJiYgIWN0eC0+bHV0c2l6ZSkgewo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICIzRCBMVVQgaXMgZW1wdHlcbiIpOwo+ICsgZXJyID0gQVZFUlJPUl9JTlZBTElEREFU QTsKPiArIHJldHVybiBlcnI7Cj4gKyB9Cj4gKwo+ICsgfQo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfREVCVUcsICJMVVQzRCBPcGVuQ0wgZGF0YSBsb2FkZWRcbiIpOwo+ICsgcmV0dXJuIGVycjsK PiArfQo+ICsKPiArc3RhdGljIGludCBsdXQzZF9vcGVuY2xfZmlsdGVyX2ZyYW1lKEFWRmlsdGVy TGluayAqaW5saW5rLCBBVkZyYW1lICppbnB1dCkKPiArewo+ICsgQVZGaWx0ZXJDb250ZXh0ICph dmN0eCA9IGlubGluay0+ZHN0Owo+ICsgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gYXZjdHgtPm91 dHB1dHNbMF07Cj4gKyBMVVQzRE9wZW5DTENvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2Owo+ICsg QVZGcmFtZSAqb3V0cHV0ID0gTlVMTDsKPiArIGNsX2ludCBjbGU7Cj4gKyBzaXplX3QgZ2xvYmFs X3dvcmtbMl07Cj4gKyBjbF9tZW0gc3JjLCBkc3Q7Cj4gKyBpbnQgZXJyLCBwOwo+ICsKPiArIGF2 X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIkZpbHRlciBpbnB1dDogJXMsICV1eCV1ICglIlBSSWQ2 NCIpLlxuIiwKPiArIGF2X2dldF9waXhfZm10X25hbWUoaW5wdXQtPmZvcm1hdCksCj4gKyBpbnB1 dC0+d2lkdGgsIGlucHV0LT5oZWlnaHQsIGlucHV0LT5wdHMpOwo+ICsKPiArIGlmICghaW5wdXQt Pmh3X2ZyYW1lc19jdHgpCj4gKyByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICsKPiArIGlmICgh Y3R4LT5pbml0aWFsaXNlZCkgewo+ICsgZXJyID0gbHV0M2Rfb3BlbmNsX2luaXRfZGV2aWNlKGF2 Y3R4KTsKPiArIGlmIChlcnIgPCAwKQo+ICsgZ290byBmYWlsOwo+ICsgfQo+ICsKPiArIG91dHB1 dCA9IGZmX2dldF92aWRlb19idWZmZXIob3V0bGluaywgb3V0bGluay0+dywgb3V0bGluay0+aCk7 Cj4gKyBpZiAoIW91dHB1dCkgewo+ICsgZXJyID0gQVZFUlJPUihFTk9NRU0pOwo+ICsgZ290byBm YWlsOwo+ICsgfQo+ICsKPiArCj4gKyBmb3IgKHAgPSAwOyBwIDwgRkZfQVJSQVlfRUxFTVMob3V0 cHV0LT5kYXRhKTsgcCsrKSB7Cj4gKyBzcmMgPSAoY2xfbWVtKSBpbnB1dC0+ZGF0YVtwXTsKPiAr IGRzdCA9IChjbF9tZW0pb3V0cHV0LT5kYXRhW3BdOwo+ICsKPiArIGlmICghZHN0KQo+ICsgYnJl YWs7Cj4gKwo+ICsgQ0xfU0VUX0tFUk5FTF9BUkcoY3R4LT5rZXJuZWwsIDAsIGNsX21lbSwgJnNy Yyk7Cj4gKyBDTF9TRVRfS0VSTkVMX0FSRyhjdHgtPmtlcm5lbCwgMSwgY2xfbWVtLCAmZHN0KTsK PiArIENMX1NFVF9LRVJORUxfQVJHKGN0eC0+a2VybmVsLCAyLCBjbF9tZW0sICZjdHgtPmx1dDNk X2J1Zik7Cj4gKyBDTF9TRVRfS0VSTkVMX0FSRyhjdHgtPmtlcm5lbCwgMywgY2xfaW50LCAmY3R4 LT5sdXRzaXplKTsKPiArCj4gKyBlcnIgPSBmZl9vcGVuY2xfZmlsdGVyX3dvcmtfc2l6ZV9mcm9t X2ltYWdlKGF2Y3R4LCBnbG9iYWxfd29yaywgb3V0cHV0LCBwLCAwKTsKPiArIGlmIChlcnIgPCAw KQo+ICsgZ290byBmYWlsOwo+ICsKPiArIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiUnVu IGtlcm5lbCBvbiBwbGFuZSAlZCAiCj4gKyAiKCUiU0laRV9TUEVDSUZJRVIieCUiU0laRV9TUEVD SUZJRVIiKS5cbiIsCj4gKyBwLCBnbG9iYWxfd29ya1swXSwgZ2xvYmFsX3dvcmtbMV0pOwo+ICsK PiArIGNsZSA9IGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwoY3R4LT5jb21tYW5kX3F1ZXVlLCBjdHgt Pmtlcm5lbCwgMiwgTlVMTCwKPiArIGdsb2JhbF93b3JrLCBOVUxMLAo+ICsgMCwgTlVMTCwgTlVM TCk7Cj4gKyBDTF9GQUlMX09OX0VSUk9SKEFWRVJST1IoRUlPKSwgIkZhaWxlZCB0byBlbnF1ZXVl ICIKPiArICJrZXJuZWw6ICVkLlxuIiwgY2xlKTsKPiArIH0KPiArCj4gKyBjbGUgPSBjbEZpbmlz aChjdHgtPmNvbW1hbmRfcXVldWUpOwo+ICsgQ0xfRkFJTF9PTl9FUlJPUihBVkVSUk9SKEVJTyks ICJGYWlsZWQgdG8gZmluaXNoIGNvbW1hbmQgcXVldWU6ICVkLlxuIiwgY2xlKTsKPiArCj4gKyBl cnIgPSBhdl9mcmFtZV9jb3B5X3Byb3BzKG91dHB1dCwgaW5wdXQpOwo+ICsgaWYgKGVyciA8IDAp Cj4gKyBnb3RvIGZhaWw7Cj4gKwo+ICsgYXZfZnJhbWVfZnJlZSgmaW5wdXQpOwo+ICsKPiArIGF2 X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIkZpbHRlciBvdXRwdXQ6ICVzLCAldXgldSAoJSJQUklk NjQiKS5cbiIsCj4gKyBhdl9nZXRfcGl4X2ZtdF9uYW1lKG91dHB1dC0+Zm9ybWF0KSwKPiArIG91 dHB1dC0+d2lkdGgsIG91dHB1dC0+aGVpZ2h0LCBvdXRwdXQtPnB0cyk7Cj4gKwo+ICsgcmV0dXJu IGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBvdXRwdXQpOwo+ICsKPiArZmFpbDoKPiArIGNsRmlu aXNoKGN0eC0+Y29tbWFuZF9xdWV1ZSk7Cj4gKyBhdl9mcmFtZV9mcmVlKCZpbnB1dCk7Cj4gKyBh dl9mcmFtZV9mcmVlKCZvdXRwdXQpOwo+ICsgcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGlj IGF2X2NvbGQgdm9pZCBsdXQzZF9vcGVuY2xfdW5pbml0KEFWRmlsdGVyQ29udGV4dCAqYXZjdHgp Cj4gK3sKPiArIExVVDNET3BlbkNMQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXY7Cj4gKyBjbF9p bnQgY2xlOwo+ICsKPiArIGNsUmVsZWFzZU1lbU9iamVjdChjdHgtPmx1dDNkX2J1Zik7Cj4gKwo+ ICsgaWYgKGN0eC0+a2VybmVsKSB7Cj4gKyBjbGUgPSBjbFJlbGVhc2VLZXJuZWwoY3R4LT5rZXJu ZWwpOwo+ICsgaWYgKGNsZSAhPSBDTF9TVUNDRVNTKQo+ICsgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICJGYWlsZWQgdG8gcmVsZWFzZSAiCj4gKyAia2VybmVsOiAlZC5cbiIsIGNsZSk7Cj4g KyB9Cj4gKwo+ICsgaWYgKGN0eC0+Y29tbWFuZF9xdWV1ZSkgewo+ICsgY2xlID0gY2xSZWxlYXNl Q29tbWFuZFF1ZXVlKGN0eC0+Y29tbWFuZF9xdWV1ZSk7Cj4gKyBpZiAoY2xlICE9IENMX1NVQ0NF U1MpCj4gKyBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byByZWxlYXNlICIK PiArICJjb21tYW5kIHF1ZXVlOiAlZC5cbiIsIGNsZSk7Cj4gKyB9Cj4gKwo+ICsgYXZfZnJlZXAo JmN0eC0+bHV0KTsKPiArCj4gKyBmZl9vcGVuY2xfZmlsdGVyX3VuaW5pdChhdmN0eCk7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBsdXQzZF9vcGVuY2xfaW5wdXRzW10gPSB7 Cj4gKyB7Cj4gKyAubmFtZSA9ICJkZWZhdWx0IiwKPiArIC50eXBlID0gQVZNRURJQV9UWVBFX1ZJ REVPLAo+ICsgLmZpbHRlcl9mcmFtZSA9ICZsdXQzZF9vcGVuY2xfZmlsdGVyX2ZyYW1lLAo+ICsg LmNvbmZpZ19wcm9wcyA9ICZmZl9vcGVuY2xfZmlsdGVyX2NvbmZpZ19pbnB1dCwKPiArIH0sCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgbHV0M2Rfb3BlbmNsX291dHB1dHNb XSA9IHsKPiArIHsKPiArIC5uYW1lID0gImRlZmF1bHQiLAo+ICsgLnR5cGUgPSBBVk1FRElBX1RZ UEVfVklERU8sCj4gKyAuY29uZmlnX3Byb3BzID0gJmZmX29wZW5jbF9maWx0ZXJfY29uZmlnX291 dHB1dCwKPiArIH0sCj4gK307Cj4gKwo+ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihMVVQz RE9wZW5DTENvbnRleHQsIHgpCj4gKyNkZWZpbmUgRkxBR1MgKEFWX09QVF9GTEFHX0ZJTFRFUklO R19QQVJBTSB8IEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNKQo+ICsjZGVmaW5lIFRGTEFHUyBBVl9P UFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZfT1BUX0ZMQUdfVklERU9fUEFSQU18QVZfT1BUX0ZM QUdfUlVOVElNRV9QQVJBTQo+ICsKPiArCj4gKwo+ICsjaWYgQ09ORklHX0xVVDNEX09QRU5DTF9G SUxURVIKPiArCj4gKwo+ICtzdGF0aWMgY29uc3QgQVZPcHRpb24gbHV0M2Rfb3BlbmNsX29wdGlv bnNbXSA9IHsKPiArIHsgImZpbGUiLCAic2V0IDNEIExVVCBmaWxlIG5hbWUiLCBPRkZTRVQoZmls ZSksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sIC5mbGFncyA9IEZMQUdTIH0sCj4g KyB7ICJpbnRlcnAiLCAic2VsZWN0IGludGVycG9sYXRpb24gbW9kZSIsIE9GRlNFVChpbnRlcnBv bGF0aW9uKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2ND1JTlRFUlBPTEFURV9URVRSQUhFRFJBTH0s IDAsIE5CX0lOVEVSUF9NT0RFLTEsIFRGTEFHUywgLnVuaXQgPSAiaW50ZXJwX21vZGUiIH0sCj4g KyB7ICJuZWFyZXN0IiwgInVzZSB2YWx1ZXMgZnJvbSB0aGUgbmVhcmVzdCBkZWZpbmVkIHBvaW50 cyIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1JTlRFUlBPTEFURV9ORUFSRVNUfSwgMCwg MCwgVEZMQUdTLCAudW5pdCA9ICJpbnRlcnBfbW9kZSIgfSwKPiArIHsgInRyaWxpbmVhciIsICJp bnRlcnBvbGF0ZSB2YWx1ZXMgdXNpbmcgdGhlIDggcG9pbnRzIGRlZmluaW5nIGEgY3ViZSIsIDAs IEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1JTlRFUlBPTEFURV9UUklMSU5FQVJ9LCAwLCAwLCBU RkxBR1MsIC51bml0ID0gImludGVycF9tb2RlIiB9LAo+ICsgeyAidGV0cmFoZWRyYWwiLCAiaW50 ZXJwb2xhdGUgdmFsdWVzIHVzaW5nIGEgdGV0cmFoZWRyb24iLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwgey5pNjQ9SU5URVJQT0xBVEVfVEVUUkFIRURSQUx9LCAwLCAwLCBURkxBR1MsIC51bml0ID0g ImludGVycF9tb2RlIiB9LCBcCj4gKyB7IE5VTEwgfQo+ICt9Owo+ICsKPiArQVZGSUxURVJfREVG SU5FX0NMQVNTKGx1dDNkX29wZW5jbCk7Cj4gKwo+ICtjb25zdCBGRkZpbHRlciBmZl92Zl9sdXQz ZF9vcGVuY2wgPSB7Cj4gKyAucC5uYW1lID0gImx1dDNkX29wZW5jbCIsCj4gKyAucC5kZXNjcmlw dGlvbiA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJBZGp1c3QgY29sb3JzIHVzaW5nIGEgM0QgTFVU LiIpLAo+ICsgLnAucHJpdl9jbGFzcyA9ICZsdXQzZF9vcGVuY2xfY2xhc3MsCj4gKyAucC5mbGFn cyA9IEFWRklMVEVSX0ZMQUdfSFdERVZJQ0UsCj4gKyAucHJpdl9zaXplID0gc2l6ZW9mKExVVDNE T3BlbkNMQ29udGV4dCksCj4gKyAuaW5pdCA9ICZsdXQzZF9vcGVuY2xfaW5pdCwKPiArIC51bmlu aXQgPSAmbHV0M2Rfb3BlbmNsX3VuaW5pdCwKPiArIEZJTFRFUl9JTlBVVFMobHV0M2Rfb3BlbmNs X2lucHV0cyksCj4gKyBGSUxURVJfT1VUUFVUUyhsdXQzZF9vcGVuY2xfb3V0cHV0cyksCj4gKyBG SUxURVJfU0lOR0xFX1BJWEZNVChBVl9QSVhfRk1UX09QRU5DTCksCj4gKyAuZmxhZ3NfaW50ZXJu YWwgPSBGRl9GSUxURVJfRkxBR19IV0ZSQU1FX0FXQVJFLAo+ICt9Owo+ICsKPiArI2VuZGlmIC8q IENPTkZJR19MVVQzRF9PUEVOQ0xfRklMVEVSICovCj4gLS0KPiAyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==