From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 44BB84A874 for ; Mon, 17 Jun 2024 17:52:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3BFFA68D73E; Mon, 17 Jun 2024 20:52:32 +0300 (EEST) Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A291668B3BA for ; Mon, 17 Jun 2024 20:52:25 +0300 (EEST) Received: by mail-vs1-f49.google.com with SMTP id ada2fe7eead31-48ed52b59acso621381137.1 for ; Mon, 17 Jun 2024 10:52:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718646744; x=1719251544; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=OqEm/Pl5kMpq1SjnvKulooFhofLT4gq7C16fKPZRLnE=; b=gbxUeSztHbv0rT/klhBqRHL7cuSOkhvKe/HMp7/PQaBMwoAJFukuMZUJbzXz7wSHu2 jvkQzxyN0gYNQndpc7ivZmqSpubM+RjYUHhi9yOIg31ovsF/9UaA84fHnoinsLT+JPp+ pPTM6CGrKyo5mcw7ABmjjODG0QzMqr+U9C+Nmy1oh6O0uewALb3UXoWP9djzv3bNYeBW +mXiUipvZZtLyg+ZcWIjlzEe2RY2tkpj5xTTmaHiIYPOYsWs5zFScznjfz//IzkwuRIl SGyaucpceg6pvNAR8xbFOwKoVIG1FmqL1qWokYN6WSut897oBk4bJJ+iDmMS60v2Biur p9Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718646744; x=1719251544; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OqEm/Pl5kMpq1SjnvKulooFhofLT4gq7C16fKPZRLnE=; b=L0aY2QG/rJ1QQdDdOudQ0nfjDImlbM4Fg6aoHD51+nsM+IDeoAOlzFNUVoZpRvG8rU OWmBG/4AXh1I5let6CZjgzXu+W+qXkyPwIranWvU+hdaOQbphcaxqkyx5m5ycgyGEMc8 Az0AN9YfIKWFnqfIN6WcswgGBItA1opDUa2OT79wSGdiXEjl/LEkyaxbrJBUAvVAfAQG VAw/mVpolOQf1xu2gSAoG6jWHI2lFxoJxFOj0bkk1K4w4TuoR3w9qOt1Qs7ShG5UIUH4 TNY0VKWJiTe1+pxZAl5hRDd8Qu3y9aLbmMstnL54O9QC4n7deiPFGOded/YXG9vDsXVd bHsg== X-Gm-Message-State: AOJu0YzQ9Gro15Xm9ORhdRPeAQCB+VPn66bjATclhYh7eipYE600tZE3 Nie+5I8HkKOmqiizp1sXahLxMjaKWvll4SzyWglNUg6O8Ylmtuf80vxkZJRgWHG3EKvdjO5fj+e PuIxCEfFgcENNL0E3/MThU2hKW3OO7w== X-Google-Smtp-Source: AGHT+IH2Oy/FiW9Neoyn2FagLQkULNs2Y9ch40UrqHUAS9s3b2YlQ91CxJmWF82qdmXzVecF14hXwf695X8+ZkQTDQA= X-Received: by 2002:a05:6102:3001:b0:48d:88b6:9476 with SMTP id ada2fe7eead31-48dae309439mr10177567137.7.1718646744236; Mon, 17 Jun 2024 10:52:24 -0700 (PDT) MIME-Version: 1.0 References: <20240617111812.84575-1-yigithanyigitdevel@gmail.com> <20240617111812.84575-3-yigithanyigitdevel@gmail.com> <92092055-E0A7-45C5-A479-E43D41DF2BE6@remlab.net> In-Reply-To: <92092055-E0A7-45C5-A479-E43D41DF2BE6@remlab.net> From: Paul B Mahol Date: Mon, 17 Jun 2024 19:52:10 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/3] avfilter/af_volumedetect.c: Add 32bit float audio support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches 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: T24gTW9uLCBKdW4gMTcsIDIwMjQgYXQgNDo1MuKAr1BNIFLDqW1pIERlbmlzLUNvdXJtb250IDxy ZW1pQHJlbWxhYi5uZXQ+IHdyb3RlOgoKPgo+Cj4gTGUgMTcganVpbiAyMDI0IDEzOjE4OjExIEdN VCswMjowMCwgWWlnaXRoYW4gWWlnaXQgPAo+IHlpZ2l0aGFueWlnaXRkZXZlbEBnbWFpbC5jb20+ IGEgw6ljcml0IDoKPiA+LS0tCj4gPiBsaWJhdmZpbHRlci9hZl92b2x1bWVkZXRlY3QuYyB8IDE1 OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiAxIGZpbGUgY2hhbmdlZCwg MTMzIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2xp YmF2ZmlsdGVyL2FmX3ZvbHVtZWRldGVjdC5jIGIvbGliYXZmaWx0ZXIvYWZfdm9sdW1lZGV0ZWN0 LmMKPiA+aW5kZXggMzI3ODAxYTdmOS4uZGJiY2QwMzdhNSAxMDA2NDQKPiA+LS0tIGEvbGliYXZm aWx0ZXIvYWZfdm9sdW1lZGV0ZWN0LmMKPiA+KysrIGIvbGliYXZmaWx0ZXIvYWZfdm9sdW1lZGV0 ZWN0LmMKPiA+QEAgLTIwLDI3ICsyMCw1MSBAQAo+ID4KPiA+ICNpbmNsdWRlICJsaWJhdnV0aWwv Y2hhbm5lbF9sYXlvdXQuaCIKPiA+ICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKPiA+ KyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCj4gPiAjaW5jbHVkZSAiYXVkaW8uaCIKPiA+ICNp bmNsdWRlICJhdmZpbHRlci5oIgo+ID4gI2luY2x1ZGUgImludGVybmFsLmgiCj4gPgo+ID4rI2Rl ZmluZSBNQVhfREJfRkxUIDEwMjQKPiA+ICNkZWZpbmUgTUFYX0RCIDkxCj4gPisjZGVmaW5lIEhJ U1RPR1JBTV9TSVpFIDB4MTAwMDAKPiA+KyNkZWZpbmUgSElTVE9HUkFNX1NJWkVfRkxUIChNQVhf REJfRkxUKjIpCj4gPgo+ID4gdHlwZWRlZiBzdHJ1Y3QgVm9sRGV0ZWN0Q29udGV4dCB7Cj4gPi0g ICAgLyoqCj4gPi0gICAgICogTnVtYmVyIG9mIHNhbXBsZXMgYXQgZWFjaCBQQ00gdmFsdWUuCj4g Pi0gICAgICogaGlzdG9ncmFtWzB4ODAwMCArIGldIGlzIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBh dCB2YWx1ZSBpLgo+ID4tICAgICAqIFRoZSBleHRyYSBlbGVtZW50IGlzIHRoZXJlIGZvciBzeW1t ZXRyeS4KPiA+LSAgICAgKi8KPiA+LSAgICB1aW50NjRfdCBoaXN0b2dyYW1bMHgxMDAwMV07Cj4g PisgICAgdWludDY0X3QqIGhpc3RvZ3JhbTsgLy8vPCBmb3IgaW50ZWdlciBudW1iZXIgb2Ygc2Ft cGxlcyBhdCBlYWNoIFBDTQo+IHZhbHVlLCBmb3IgZmxvYXQgbnVtYmVyIG9mIHNhbXBsZXMgYXQg ZWFjaCBkQgo+ID4rICAgIHVpbnQ2NF90IG5iX3NhbXBsZXM7IC8vLzwgbnVtYmVyIG9mIHNhbXBs ZXMKPiA+KyAgICBkb3VibGUgc3VtMjsgICAgICAgICAvLy88IHN1bSBvZiB0aGUgc3F1YXJlcyBv ZiB0aGUgc2FtcGxlcwo+ID4rICAgIGRvdWJsZSBtYXg7ICAgICAgICAgIC8vLzwgbWF4aW11bSBz YW1wbGUgdmFsdWUKPiA+KyAgICBpbnQgaXNfZmxvYXQ7ICAgICAgICAvLy88IHRydWUgaWYgdGhl IGlucHV0IGlzIGluIGZsb2F0aW5nIHBvaW50Cj4gPiB9IFZvbERldGVjdENvbnRleHQ7Cj4gPgo+ ID4tc3RhdGljIGlubGluZSBkb3VibGUgbG9nZGIodWludDY0X3QgdikKPiA+K3N0YXRpYyBpbmxp bmUgZG91YmxlIGxvZ2RiKGRvdWJsZSB2LCBlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mbXQp Cj4gPiB7Cj4gPi0gICAgZG91YmxlIGQgPSB2IC8gKGRvdWJsZSkoMHg4MDAwICogMHg4MDAwKTsK PiA+LSAgICBpZiAoIXYpCj4gPi0gICAgICAgIHJldHVybiBNQVhfREI7Cj4gPi0gICAgcmV0dXJu IC1sb2cxMChkKSAqIDEwOwo+ID4rICAgIGlmIChzYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRf RkxUKSB7Cj4gPisgICAgICAgIGlmICghdikKPiA+KyAgICAgICAgICAgIHJldHVybiBNQVhfREJf RkxUOwo+ID4rICAgICAgICByZXR1cm4gLWxvZzEwKHYpICogMTA7Cj4gPisgICAgfSBlbHNlIHsK PiA+KyAgICAgICAgZG91YmxlIGQgPSB2IC8gKGRvdWJsZSkoMHg4MDAwICogMHg4MDAwKTsKPiA+ KyAgICAgICAgaWYgKCF2KQo+ID4rICAgICAgICAgICAgcmV0dXJuIE1BWF9EQjsKPiA+KyAgICAg ICAgcmV0dXJuIC1sb2cxMChkKSAqIDEwOwo+ID4rICAgIH0KPiA+K30KPiA+Kwo+ID4rc3RhdGlj IHZvaWQgdXBkYXRlX2Zsb2F0X3N0YXRzKFZvbERldGVjdENvbnRleHQgKnZkLCBmbG9hdCAqYXVk aW9fZGF0YSkKPiA+K3sKPiA+KyAgICBkb3VibGUgc2FtcGxlOwo+ID4rICAgIGludCBpZHg7Cj4g PisgICAgaWYoIWlzbm9ybWFsKCphdWRpb19kYXRhKSkKPiA+KyAgICAgICAgcmV0dXJuOwo+Cj4g RG8gd2UgcmVhbGx5IG5lZWQgdG8gY2xhc3NpZnkgZmxvYXRzIGhlcmU/IFRoYXQncyBwcm9iYWJs eSBnb2luZyB0byBodXJ0Cj4gcGVyZnMgYmFkbHksIGFuZCBtYWtlcyBhbiBvdGhlcndpc2UgdmVy eSB2ZWN0b3Jpc2FibGUgZnVuY3Rpb24gbm90IHNvCj4gZWFzaWx5IHZlY3RvcmVkLgo+CgpUaGlz IGlzIGZhc3QsIGl0IHNob3VsZCB0cmFuc2xhdGUgdG8gY2hlY2tpbmcgZmV3IGJpdHMgb2YgbWVt b3J5LgoKCj4KPiA+KyAgICBzYW1wbGUgPSBmYWJzZigqYXVkaW9fZGF0YSk7Cj4gPisgICAgaWYg KHNhbXBsZSA+IHZkLT5tYXgpCj4gPisgICAgICAgIHZkLT5tYXggPSBzYW1wbGU7Cj4gPisgICAg dmQtPnN1bTIgKz0gc2FtcGxlICogc2FtcGxlOwo+ID4rICAgIGlkeCA9IGxyaW50ZihmbG9vcmYo bG9nZGIoc2FtcGxlICogc2FtcGxlLCBBVl9TQU1QTEVfRk1UX0ZMVCkpKSArCj4gTUFYX0RCX0ZM VDsKPgo+IFlvdSdyZSByZWNvbXB1dGluZyB0aGUgc2FtZSB2YWx1ZSBhZ2FpbiwgYW5kIHlvdSBz ZWVtIHRvIGJlIHJvdW5kaW5nIHR3aWNlCj4gaW4gYSByb3c/Cj4KPiA+KyAgICB2ZC0+aGlzdG9n cmFtW2lkeF0rKzsKPiA+KyAgICB2ZC0+bmJfc2FtcGxlcysrOwo+ID4gfQo+ID4KPiA+IHN0YXRp YyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICpzYW1wbGVz KQo+ID5AQCAtNTEsMTggKzc1LDQxIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVy TGluayAqaW5saW5rLCBBVkZyYW1lCj4gKnNhbXBsZXMpCj4gPiAgICAgaW50IG5iX2NoYW5uZWxz ID0gc2FtcGxlcy0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOwo+ID4gICAgIGludCBuYl9wbGFuZXMg ICA9IG5iX2NoYW5uZWxzOwo+ID4gICAgIGludCBwbGFuZSwgaTsKPiA+LSAgICBpbnQxNl90ICpw Y207Cj4gPisgICAgaW50IHBsYW5hciA9IDA7Cj4gPgo+ID4tICAgIGlmICghYXZfc2FtcGxlX2Zt dF9pc19wbGFuYXIoc2FtcGxlcy0+Zm9ybWF0KSkgewo+ID4tICAgICAgICBuYl9zYW1wbGVzICo9 IG5iX2NoYW5uZWxzOwo+ID4rICAgIHBsYW5hciA9IGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFyKHNh bXBsZXMtPmZvcm1hdCk7Cj4gPisgICAgaWYgKCFwbGFuYXIpCj4gPiAgICAgICAgIG5iX3BsYW5l cyA9IDE7Cj4gPisgICAgaWYgKHZkLT5pc19mbG9hdCkgewo+ID4rICAgICAgICBmbG9hdCAqYXVk aW9fZGF0YTsKPiA+KyAgICAgICAgZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgbmJfcGxhbmVzOyBw bGFuZSsrKSB7Cj4gPisgICAgICAgICAgICBhdWRpb19kYXRhID0gKGZsb2F0ICopc2FtcGxlcy0+ ZXh0ZW5kZWRfZGF0YVtwbGFuZV07Cj4gPisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJf c2FtcGxlczsgaSsrKSB7Cj4gPisgICAgICAgICAgICAgICAgaWYgKHBsYW5hcikgewo+ID4rICAg ICAgICAgICAgICAgICAgICB1cGRhdGVfZmxvYXRfc3RhdHModmQsICZhdWRpb19kYXRhW2ldKTsK PiA+KyAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4rICAgICAgICAgICAgICAgICAgICBmb3Ig KGludCBqID0gMDsgaiA8IG5iX2NoYW5uZWxzOyBqKyspCj4gPisgICAgICAgICAgICAgICAgICAg ICAgICB1cGRhdGVfZmxvYXRfc3RhdHModmQsICZhdWRpb19kYXRhW2kgKgo+IG5iX2NoYW5uZWxz ICsgal0pOwo+ID4rICAgICAgICAgICAgICAgIH0KPiA+KyAgICAgICAgICAgIH0KPiA+KyAgICAg ICAgfQo+ID4rICAgIH0gZWxzZSB7Cj4gPisgICAgICAgIGludDE2X3QgKnBjbTsKPiA+KyAgICAg ICAgZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgbmJfcGxhbmVzOyBwbGFuZSsrKSB7Cj4gPisgICAg ICAgICAgICBwY20gPSAoaW50MTZfdCAqKXNhbXBsZXMtPmV4dGVuZGVkX2RhdGFbcGxhbmVdOwo+ ID4rICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5iX3NhbXBsZXM7IGkrKykgewo+ID4rICAg ICAgICAgICAgICAgIGlmIChwbGFuYXIpIHsKPiA+KyAgICAgICAgICAgICAgICAgICAgdmQtPmhp c3RvZ3JhbVtwY21baV0gKyAweDgwMDBdKys7Cj4gPisgICAgICAgICAgICAgICAgICAgIHZkLT5u Yl9zYW1wbGVzKys7Cj4gPisgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiA+KyAgICAgICAgICAg ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYl9jaGFubmVsczsgaisrKSB7Cj4gPisgICAg ICAgICAgICAgICAgICAgICAgICB2ZC0+aGlzdG9ncmFtW3BjbVtpICogbmJfY2hhbm5lbHMgKyBq XSArCj4gMHg4MDAwXSsrOwo+ID4rICAgICAgICAgICAgICAgICAgICAgICAgdmQtPm5iX3NhbXBs ZXMrKzsKPiA+KyAgICAgICAgICAgICAgICAgICAgfQo+ID4rICAgICAgICAgICAgICAgIH0KPiA+ KyAgICAgICAgICAgIH0KPiA+KyAgICAgICAgfQo+Cj4gQ2FuJ3Qgd2UgcGljayB0aGUgY29ycmVj dCBpbXBsZW1lbnRhdGlvbiAocGxhbmFyL3BhY2tlZCBhbmQgZmxvYXQvaW50KQo+IG9uY2UgYW5k IGZvciBhbGwgd2hpbHN0IGNvbmZpZ3VyaW5nIHRoZSBmaWx0ZXI/Cj4KPiA+ICAgICB9Cj4gPi0g ICAgZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgbmJfcGxhbmVzOyBwbGFuZSsrKSB7Cj4gPi0gICAg ICAgIHBjbSA9IChpbnQxNl90ICopc2FtcGxlcy0+ZXh0ZW5kZWRfZGF0YVtwbGFuZV07Cj4gPi0g ICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9zYW1wbGVzOyBpKyspCj4gPi0gICAgICAgICAgICB2 ZC0+aGlzdG9ncmFtW3BjbVtpXSArIDB4ODAwMF0rKzsKPiA+LSAgICB9Cj4gPi0KPiA+ICAgICBy ZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKGlubGluay0+ZHN0LT5vdXRwdXRzWzBdLCBzYW1wbGVzKTsK PiA+IH0KPiA+Cj4gPkBAIC03Myw2ICsxMjAsMjAgQEAgc3RhdGljIHZvaWQgcHJpbnRfc3RhdHMo QVZGaWx0ZXJDb250ZXh0ICpjdHgpCj4gPiAgICAgdWludDY0X3QgbmJfc2FtcGxlcyA9IDAsIHBv d2VyID0gMCwgbmJfc2FtcGxlc19zaGlmdCA9IDAsIHN1bSA9IDA7Cj4gPiAgICAgdWludDY0X3Qg aGlzdGRiW01BWF9EQiArIDFdID0geyAwIH07Cj4gPgo+ID4rICAgIGlmICghdmQtPm5iX3NhbXBs ZXMpCj4gPisgICAgICAgIHJldHVybjsKPiA+KyAgICBpZiAodmQtPmlzX2Zsb2F0KSB7Cj4gPisg ICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAibl9zYW1wbGVzOiAlIiBQUklkNjQgIlxu IiwKPiB2ZC0+bmJfc2FtcGxlcyk7Cj4gPisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAibWVhbl92b2x1bWU6ICUuMWYgZEJcbiIsCj4gLWxvZ2RiKHZkLT5zdW0yIC8gdmQtPm5iX3Nh bXBsZXMsIEFWX1NBTVBMRV9GTVRfRkxUKSk7Cj4gPisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xP R19JTkZPLCAibWF4X3ZvbHVtZTogJS4xZiBkQlxuIiwKPiAtMi4wKmxvZ2RiKHZkLT5tYXgsIEFW X1NBTVBMRV9GTVRfRkxUKSk7Cj4gPisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBISVNUT0dSQU1f U0laRV9GTFQgJiYgIXZkLT5oaXN0b2dyYW1baV07IGkrKyk7Cj4gPisgICAgICAgIGZvciAoOyBp ID49IDAgJiYgc3VtIDwgdmQtPm5iX3NhbXBsZXMgLyAxMDAwOyBpKyspIHsKPiA+KyAgICAgICAg ICAgIGlmICghdmQtPmhpc3RvZ3JhbVtpXSkKPiA+KyAgICAgICAgICAgICAgICBjb250aW51ZTsK PiA+KyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiaGlzdG9ncmFtXyVkZGI6 ICUiIFBSSWQ2NCAiXG4iLAo+IE1BWF9EQl9GTFQgLSBpLCB2ZC0+aGlzdG9ncmFtW2ldKTsKPiA+ KyAgICAgICAgICAgIHN1bSArPSB2ZC0+aGlzdG9ncmFtW2ldOwo+ID4rICAgICAgICB9Cj4gPisg ICAgfSBlbHNlIHsKPiA+ICAgICBmb3IgKGkgPSAwOyBpIDwgMHgxMDAwMDsgaSsrKQo+ID4gICAg ICAgICBuYl9zYW1wbGVzICs9IHZkLT5oaXN0b2dyYW1baV07Cj4gPiAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0lORk8sICJuX3NhbXBsZXM6ICUiUFJJZDY0IlxuIiwgbmJfc2FtcGxlcyk7Cj4gPkBA IC05MiwyNiArMTUzLDYxIEBAIHN0YXRpYyB2b2lkIHByaW50X3N0YXRzKEFWRmlsdGVyQ29udGV4 dCAqY3R4KQo+ID4gICAgICAgICByZXR1cm47Cj4gPiAgICAgcG93ZXIgPSAocG93ZXIgKyBuYl9z YW1wbGVzX3NoaWZ0IC8gMikgLyBuYl9zYW1wbGVzX3NoaWZ0Owo+ID4gICAgIGF2X2Fzc2VydDAo cG93ZXIgPD0gMHg4MDAwICogMHg4MDAwKTsKPiA+LSAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5G TywgIm1lYW5fdm9sdW1lOiAlLjFmIGRCXG4iLCAtbG9nZGIocG93ZXIpKTsKPiA+KyAgICBhdl9s b2coY3R4LCBBVl9MT0dfSU5GTywgIm1lYW5fdm9sdW1lOiAlLjFmIGRCXG4iLAo+IC1sb2dkYigo ZG91YmxlKXBvd2VyLCBBVl9TQU1QTEVfRk1UX1MxNikpOwo+ID4KPiA+ICAgICBtYXhfdm9sdW1l ID0gMHg4MDAwOwo+ID4gICAgIHdoaWxlIChtYXhfdm9sdW1lID4gMCAmJiAhdmQtPmhpc3RvZ3Jh bVsweDgwMDAgKyBtYXhfdm9sdW1lXSAmJgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAhdmQtPmhpc3RvZ3JhbVsweDgwMDAgLSBtYXhfdm9sdW1lXSkKPiA+ICAgICAgICAgbWF4X3Zv bHVtZS0tOwo+ID4tICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAibWF4X3ZvbHVtZTogJS4x ZiBkQlxuIiwgLWxvZ2RiKG1heF92b2x1bWUKPiAqIG1heF92b2x1bWUpKTsKPiA+KyAgICBhdl9s b2coY3R4LCBBVl9MT0dfSU5GTywgIm1heF92b2x1bWU6ICUuMWYgZEJcbiIsCj4gLWxvZ2RiKChk b3VibGUpKG1heF92b2x1bWUgKiBtYXhfdm9sdW1lKSwgQVZfU0FNUExFX0ZNVF9TMTYpKTsKPiA+ Cj4gPiAgICAgZm9yIChpID0gMDsgaSA8IDB4MTAwMDA7IGkrKykKPiA+LSAgICAgICAgaGlzdGRi WyhpbnQpbG9nZGIoKGkgLSAweDgwMDApICogKGkgLSAweDgwMDApKV0gKz0KPiB2ZC0+aGlzdG9n cmFtW2ldOwo+ID4rICAgICAgICBoaXN0ZGJbKGludClsb2dkYigoZG91YmxlKShpIC0gMHg4MDAw KSAqIChpIC0gMHg4MDAwKSwKPiBBVl9TQU1QTEVfRk1UX1MxNildICs9IHZkLT5oaXN0b2dyYW1b aV07Cj4gPiAgICAgZm9yIChpID0gMDsgaSA8PSBNQVhfREIgJiYgIWhpc3RkYltpXTsgaSsrKTsK PiA+ICAgICBmb3IgKDsgaSA8PSBNQVhfREIgJiYgc3VtIDwgbmJfc2FtcGxlcyAvIDEwMDA7IGkr Kykgewo+ID4tICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgImhpc3RvZ3JhbV8lZGRi OiAlIlBSSWQ2NCJcbiIsIGksCj4gaGlzdGRiW2ldKTsKPiA+KyAgICAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0lORk8sICJoaXN0b2dyYW1fJWRkYjogJSJQUklkNjQiXG4iLCAtaSwKPiBoaXN0ZGJb aV0pOwo+ID4gICAgICAgICBzdW0gKz0gaGlzdGRiW2ldOwo+ID4gICAgIH0KPiA+KyAgICB9Cj4g Pit9Cj4gPisKPiA+K3N0YXRpYyBpbnQgY29uZmlnX291dHB1dChBVkZpbHRlckxpbmsgKm91dGxp bmspCj4gPit7Cj4gPisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7Cj4g PisgICAgVm9sRGV0ZWN0Q29udGV4dCAqdmQgPSBjdHgtPnByaXY7Cj4gPisgICAgc2l6ZV90IGhp c3RvZ3JhbV9zaXplOwo+ID4rCj4gPisgICAgdmQtPmlzX2Zsb2F0ID0gb3V0bGluay0+Zm9ybWF0 ID09IEFWX1NBTVBMRV9GTVRfRkxUIHx8Cj4gPisgICAgICAgICAgICAgICAgICAgb3V0bGluay0+ Zm9ybWF0ID09IEFWX1NBTVBMRV9GTVRfRkxUUDsKPiA+Kwo+ID4rICAgIGlmICghdmQtPmlzX2Zs b2F0KSB7Cj4gPisgICAgICAgIC8qCj4gPisgICAgICAgICogTnVtYmVyIG9mIHNhbXBsZXMgYXQg ZWFjaCBQQ00gdmFsdWUuCj4gPisgICAgICAgICogT25seSB1c2VkIGZvciBpbnRlZ2VyIGZvcm1h dHMuCj4gPisgICAgICAgICogRm9yIDE2IGJpdCBzaWduZWQgUENNIHRoZXJlIGFyZSA2NTUzNi4K PiA+KyAgICAgICAgKiBoaXN0b2dyYW1bMHg4MDAwICsgaV0gaXMgdGhlIG51bWJlciBvZiBzYW1w bGVzIGF0IHZhbHVlIGkuCj4gPisgICAgICAgICogVGhlIGV4dHJhIGVsZW1lbnQgaXMgdGhlcmUg Zm9yIHN5bW1ldHJ5Lgo+ID4rICAgICAgICAqLwo+ID4rICAgICAgICBoaXN0b2dyYW1fc2l6ZSA9 IEhJU1RPR1JBTV9TSVpFICsgMTsKPiA+KyAgICB9IGVsc2Ugewo+ID4rICAgICAgICAvKgo+ID4r ICAgICAgICAqIFRoZSBoaXN0b2dyYW0gaXMgdXNlZCB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHNh bXBsZXMgYXQgZWFjaCBkQgo+ID4rICAgICAgICAqIGluc3RlYWQgb2YgdGhlIG51bWJlciBvZiBz YW1wbGVzIGF0IGVhY2ggUENNIHZhbHVlLgo+ID4rICAgICAgICAqLwo+ID4rICAgICAgICBoaXN0 b2dyYW1fc2l6ZSA9IEhJU1RPR1JBTV9TSVpFX0ZMVCArIDE7Cj4gPisgICAgfQo+ID4rICAgIHZk LT5oaXN0b2dyYW0gPSBhdl9jYWxsb2MoaGlzdG9ncmFtX3NpemUsIHNpemVvZih1aW50NjRfdCkp Owo+ID4rICAgIGlmICghdmQtPmhpc3RvZ3JhbSkKPiA+KyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKPiA+KyAgICByZXR1cm4gMDsKPiA+IH0KPiA+Cj4gPiBzdGF0aWMgYXZfY29sZCB2 b2lkIHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiA+IHsKPiA+KyAgICBWb2xEZXRlY3RD b250ZXh0ICp2ZCA9IGN0eC0+cHJpdjsKPiA+ICAgICBwcmludF9zdGF0cyhjdHgpOwo+ID4rICAg IGlmICh2ZC0+aGlzdG9ncmFtKQo+ID4rICAgICAgICBhdl9mcmVlcCgmdmQtPmhpc3RvZ3JhbSk7 Cj4gPiB9Cj4gPgo+ID4gc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHZvbHVtZWRldGVjdF9pbnB1 dHNbXSA9IHsKPiA+QEAgLTEyMiw2ICsyMTgsMTQgQEAgc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFk IHZvbHVtZWRldGVjdF9pbnB1dHNbXSA9IHsKPiA+ICAgICB9LAo+ID4gfTsKPiA+Cj4gPitzdGF0 aWMgY29uc3QgQVZGaWx0ZXJQYWQgdm9sdW1lZGV0ZWN0X291dHB1dHNbXSA9IHsKPiA+KyAgICB7 Cj4gPisgICAgICAgIC5uYW1lICAgICAgICAgPSAiZGVmYXVsdCIsCj4gPisgICAgICAgIC50eXBl ICAgICAgICAgPSBBVk1FRElBX1RZUEVfQVVESU8sCj4gPisgICAgICAgIC5jb25maWdfcHJvcHMg PSBjb25maWdfb3V0cHV0LAo+ID4rICAgIH0sCj4gPit9Owo+ID4rCj4gPiBjb25zdCBBVkZpbHRl ciBmZl9hZl92b2x1bWVkZXRlY3QgPSB7Cj4gPiAgICAgLm5hbWUgICAgICAgICAgPSAidm9sdW1l ZGV0ZWN0IiwKPiA+ICAgICAuZGVzY3JpcHRpb24gICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJE ZXRlY3QgYXVkaW8gdm9sdW1lLiIpLAo+ID5AQCAtMTI5LDYgKzIzMyw5IEBAIGNvbnN0IEFWRmls dGVyIGZmX2FmX3ZvbHVtZWRldGVjdCA9IHsKPiA+ICAgICAudW5pbml0ICAgICAgICA9IHVuaW5p dCwKPiA+ICAgICAuZmxhZ3MgICAgICAgICA9IEFWRklMVEVSX0ZMQUdfTUVUQURBVEFfT05MWSwK PiA+ICAgICBGSUxURVJfSU5QVVRTKHZvbHVtZWRldGVjdF9pbnB1dHMpLAo+ID4tICAgIEZJTFRF Ul9PVVRQVVRTKGZmX2F1ZGlvX2RlZmF1bHRfZmlsdGVycGFkKSwKPiA+LSAgICBGSUxURVJfU0FN UExFRk1UUyhBVl9TQU1QTEVfRk1UX1MxNiwgQVZfU0FNUExFX0ZNVF9TMTZQKSwKPiA+KyAgICBG SUxURVJfT1VUUFVUUyh2b2x1bWVkZXRlY3Rfb3V0cHV0cyksCj4gPisgICAgRklMVEVSX1NBTVBM RUZNVFMoQVZfU0FNUExFX0ZNVF9TMTYsCj4gPisgICAgICAgICAgICAgICAgICAgICAgQVZfU0FN UExFX0ZNVF9TMTZQLAo+ID4rICAgICAgICAgICAgICAgICAgICAgIEFWX1NBTVBMRV9GTVRfRkxU LAo+ID4rICAgICAgICAgICAgICAgICAgICAgIEFWX1NBTVBMRV9GTVRfRkxUUCksCj4gPiB9Owo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVn LWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w ZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZt cGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8v ZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwK ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJl Ii4K