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 10329456BF for ; Thu, 20 Apr 2023 07:07:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E5A7968B630; Thu, 20 Apr 2023 10:06:57 +0300 (EEST) Received: from mail-ua1-f50.google.com (mail-ua1-f50.google.com [209.85.222.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2B3668B352 for ; Thu, 20 Apr 2023 10:06:51 +0300 (EEST) Received: by mail-ua1-f50.google.com with SMTP id s13so1555693uaq.4 for ; Thu, 20 Apr 2023 00:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681974410; x=1684566410; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=4uj6sMCI6gicTa8NQMlcPAd4+chd9MAg9c+otDGbHu0=; b=Y+dgFH+TYP0Z7GAjvDzANOPBTXobScoNwaSMEp80qL0Ca2ALAxB5I0Vx4o147kYDAG lrQ88OMH0NFy8B4B7zciqy5r0TNzkCRnsZPkhFuv6GkJlunNj6RGGvrVOy7lyubCWkkw hgOfAftpEydgxuJhcQBC3jghn7cVKMk79HIzRzp4FugckO0AEN8vbpDNT0ojGgR205Mc u8Jb5xxITIpl1zURBXWcvUQCJ33jxG1s7CRvSTmnCvSWMrkrbdlpr6+whhA1ZlHDu4ud SzCEl5AOo8nKjm7uW5S3T2sH3im57BP2IKBXuzcL79a399puSjBYtJMFQoyuSR4DvIuh W5AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681974410; x=1684566410; 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=4uj6sMCI6gicTa8NQMlcPAd4+chd9MAg9c+otDGbHu0=; b=HGNn7Ytnrpp+ufszDR8triYYuDKVFl0rsFnDjR+cmKXi43QLjfL/z9sSMgFH61B2qw tAciOYaRAKvS6K/k2JtTyaNNHGiGIIuEhKePq5+vqDQXI7xZ1N24jeG92dvYNC/pjQ0C KToI6LSNfvGv4DBlSrTMjE9SODWmAjF+cZ9uNa2jrF8SgJK1Ht480p3tpJsxVEvrZH2q e/P9oBdonBRrTorQTjAH6tGTqmizGXENmizvPCc7WemuRRp1AM7oA8Nh6vFk+gnZ663f lM9TmZUte6+4Vdr9nYkojrcaxNf+PLmSBMjeP/k2gD7sypWmqkfWLO+RRhnqBUwrtZwL 8a8g== X-Gm-Message-State: AAQBX9fn+AcpbuiA1bafOL2tpvEtMvBHPIi5w/JV7ZhseL2j9nAzw6Zb GWCbk8eVMM9YyC1otLgliOCM5TTiWNQ6+PyO/dtKT4Td X-Google-Smtp-Source: AKy350ac+9tO21Ekqt2KTlw9rsgYHRYbIwVMt8dOll40mi4oYVIZWdT89Ze8cmFZ0spyO8ZKB44jM3XkQZuZ/ECSKh8= X-Received: by 2002:a1f:5f81:0:b0:440:2d96:80d5 with SMTP id t123-20020a1f5f81000000b004402d9680d5mr298297vkb.5.1681974410097; Thu, 20 Apr 2023 00:06:50 -0700 (PDT) MIME-Version: 1.0 References: <20230418210705.GN275832@pb2> In-Reply-To: <20230418210705.GN275832@pb2> From: Paul B Mahol Date: Thu, 20 Apr 2023 09:06:31 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] PDV format 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: T24gVHVlLCBBcHIgMTgsIDIwMjMgYXQgMTE6MDfigK9QTSBNaWNoYWVsIE5pZWRlcm1heWVyIDxt aWNoYWVsQG5pZWRlcm1heWVyLmNjPgp3cm90ZToKCj4gT24gTW9uLCBBcHIgMTcsIDIwMjMgYXQg MDg6NDY6MTVQTSArMDIwMCwgUGF1bCBCIE1haG9sIHdyb3RlOgo+ID4gUGF0Y2hlcyBhdHRhY2hl ZC4KPgo+ID4gIE1ha2VmaWxlICAgICB8ICAgIDEKPiA+ICBhbGxmb3JtYXRzLmMgfCAgICAxCj4g PiAgcGR2ZGVjLmMgICAgIHwgIDE3Mgo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNzQgaW5z ZXJ0aW9ucygrKQo+ID4gYzFhNTM0ZjE3OWU3NmRmZTM3MzE1Mjg2NjZkMzcwMzJiNTdmYjViMAo+ IDAwMDItYXZmb3JtYXQtYWRkLVBEVi1kZW11eGVyLnBhdGNoCj4gPiBGcm9tIGFjZjI1ZmM2Y2Ey NDgzODE5NjMxNmI4MWIyNWI3NTNkMDFhZGJmYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4g PiBGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+Cj4gPiBEYXRlOiBNb24sIDE3 IEFwciAyMDIzIDE3OjQ1OjIzICswMjAwCj4gPiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBhdmZvcm1h dDogYWRkIFBEViBkZW11eGVyCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBCIE1haG9sIDxv bmVtZGFAZ21haWwuY29tPgo+ID4gLS0tCj4gPiAgbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgIHwg ICAxICsKPiA+ICBsaWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMgfCAgIDEgKwo+ID4gIGxpYmF2Zm9y bWF0L3BkdmRlYy5jICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L3BkdmRlYy5jCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+IGluZGV4IDA0ODY0 OTY4OWIuLmY4YWQ3YzZhMTEgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQo+ ID4gKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+IEBAIC00NzEsNiArNDcxLDcgQEAgT0JK Uy0kKENPTkZJR19QQ01fVThfREVNVVhFUikgICAgICAgICAgICArPSBwY21kZWMubwo+IHBjbS5v Cj4gPiAgT0JKUy0kKENPTkZJR19QQ01fVThfTVVYRVIpICAgICAgICAgICAgICArPSBwY21lbmMu byByYXdlbmMubwo+ID4gIE9CSlMtJChDT05GSUdfUENNX1ZJRENfREVNVVhFUikgICAgICAgICAg Kz0gcGNtZGVjLm8gcGNtLm8KPiA+ICBPQkpTLSQoQ09ORklHX1BDTV9WSURDX01VWEVSKSAgICAg ICAgICAgICs9IHBjbWVuYy5vIHJhd2VuYy5vCj4gPiArT0JKUy0kKENPTkZJR19QRFZfREVNVVhF UikgICAgICAgICAgICAgICArPSBwZHZkZWMubwo+ID4gIE9CSlMtJChDT05GSUdfUEpTX0RFTVVY RVIpICAgICAgICAgICAgICAgKz0gcGpzZGVjLm8gc3VidGl0bGVzLm8KPiA+ICBPQkpTLSQoQ09O RklHX1BNUF9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IHBtcGRlYy5vCj4gPiAgT0JKUy0kKENP TkZJR19QUF9CTktfREVNVVhFUikgICAgICAgICAgICArPSBwcF9ibmsubwo+ID4gZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwo+ ID4gaW5kZXggY2I1YjY5ZTljZC4uZWZkYjM0ZTI5ZCAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Zm9y bWF0L2FsbGZvcm1hdHMuYwo+ID4gKysrIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gPiBA QCAtMzY5LDYgKzM2OSw3IEBAIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9wY21fdTE2 bGVfZGVtdXhlcjsKPiA+ICBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfcGNtX3UxNmxl X211eGVyOwo+ID4gIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9wY21fdThfZGVtdXhl cjsKPiA+ICBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfcGNtX3U4X211eGVyOwo+ID4g K2V4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBmZl9wZHZfZGVtdXhlcjsKPiA+ICBleHRlcm4g Y29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfcGpzX2RlbXV4ZXI7Cj4gPiAgZXh0ZXJuIGNvbnN0IEFW SW5wdXRGb3JtYXQgIGZmX3BtcF9kZW11eGVyOwo+ID4gIGV4dGVybiBjb25zdCBBVklucHV0Rm9y bWF0ICBmZl9wcF9ibmtfZGVtdXhlcjsKPiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9wZHZk ZWMuYyBiL2xpYmF2Zm9ybWF0L3BkdmRlYy5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g aW5kZXggMDAwMDAwMDAwMC4uM2RmZWY4MTlhOQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIv bGliYXZmb3JtYXQvcGR2ZGVjLmMKPiA+IEBAIC0wLDAgKzEsMTcyIEBACj4gPiArLyoKPiA+ICsg KiBQRFYgZGVtdXhlcgo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBQYXVsIEIgTWFob2wKPiA+ ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ICsgKgo+ID4gKyAq IEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK PiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiArICoKPiA+ICsgKiBG Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK PiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gPiArICovCj4gPiArCj4g PiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgo+ID4gKyNpbmNsdWRlICJsaWJhdnV0 aWwvaW1ndXRpbHMuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPiA+ICsjaW5j bHVkZSAiaW50ZXJuYWwuaCIKPiA+ICsKPiA+ICsjZGVmaW5lIFBEVl9NQUdJQyAiUGxheWRhdGUg VklEIgo+ID4gKwo+ID4gK3R5cGVkZWYgc3RydWN0IFBEVkRlbXV4Q29udGV4dCB7Cj4gPiArICAg IGludCBjdXJyZW50X2ZyYW1lOwo+ID4gKyAgICB1aW50OF90ICpmcmFtZV9mbGFnczsKPiA+ICsg ICAgdWludDMyX3QgKmZyYW1lX29mZnNldHM7Cj4gPiArfSBQRFZEZW11eENvbnRleHQ7Cj4gPiAr Cj4gPiArc3RhdGljIGludCBwZHZfcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnBkKQo+ID4gK3sK PiA+ICsgICAgaWYgKHN0cm5jbXAocGQtPmJ1ZiwgUERWX01BR0lDLCBzaXplb2YoUERWX01BR0lD KSAtIDEpID09IDApCj4gPiArICAgICAgICByZXR1cm4gQVZQUk9CRV9TQ09SRV9NQVg7Cj4gPiAr ICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBkdl9yZWFkX2hlYWRl cihBVkZvcm1hdENvbnRleHQgKnMpCj4gPiArewo+ID4gKyAgICBQRFZEZW11eENvbnRleHQgKnAg PSBzLT5wcml2X2RhdGE7Cj4gPiArICAgIEFWSU9Db250ZXh0ICpwYiA9IHMtPnBiOwo+ID4gKyAg ICBBVkNvZGVjUGFyYW1ldGVycyAqcGFyOwo+ID4gKyAgICBBVlN0cmVhbSAqc3Q7Cj4gPiArICAg IHVpbnQ2NF90IHN0YXJ0Owo+ID4gKyAgICB1aW50MzJfdCBmcHM7Cj4gPiArCj4gPiArICAgIGF2 aW9fc2tpcChwYiwgMTYpOwo+ID4gKwo+ID4gKyAgICBzdCA9IGF2Zm9ybWF0X25ld19zdHJlYW0o cywgTlVMTCk7Cj4gPiArICAgIGlmICghc3QpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOwo+ID4gKwo+ID4gKyAgICBwYXIgICAgICAgICAgICAgID0gc3QtPmNvZGVjcGFyOwo+ ID4gKyAgICBwYXItPmNvZGVjX3R5cGUgID0gQVZNRURJQV9UWVBFX1ZJREVPOwo+ID4gKyAgICBw YXItPmNvZGVjX2lkICAgID0gQVZfQ09ERUNfSURfUERWOwo+ID4gKyAgICBzdC0+c3RhcnRfdGlt ZSAgID0gMDsKPiA+ICsgICAgc3QtPmR1cmF0aW9uICAgICA9Cj4gPiArICAgIHN0LT5uYl9mcmFt ZXMgICAgPSBhdmlvX3JsMTYocGIpOwo+ID4gKyAgICBhdmlvX3NraXAocGIsIDIpOwo+ID4gKyAg ICBmcHMgPSBhdmlvX3JsMzIocGIpOwo+ID4gKyAgICBzdC0+YXZnX2ZyYW1lX3JhdGUgPSBhdl9k MnEoYXZfaW50MmZsb2F0KGZwcyksIElOVF9NQVgpOwo+ID4gKyAgICBwYXItPndpZHRoICAgICAg ID0gYXZpb19ybDE2KHBiKTsKPiA+ICsgICAgcGFyLT5oZWlnaHQgICAgICA9IGF2aW9fcmwxNihw Yik7Cj4gPiArCj4gPiArICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCBzdC0+YXZnX2Zy YW1lX3JhdGUuZGVuLAo+IHN0LT5hdmdfZnJhbWVfcmF0ZS5udW0pOwo+ID4gKwo+ID4gKyAgICBw LT5jdXJyZW50X2ZyYW1lID0gMDsKPiA+ICsgICAgcC0+ZnJhbWVfZmxhZ3MgPSBhdl9jYWxsb2Mo c3QtPm5iX2ZyYW1lcyArIDEsCj4gc2l6ZW9mKCpwLT5mcmFtZV9mbGFncykpOwo+ID4gKyAgICBw LT5mcmFtZV9vZmZzZXRzID0gYXZfY2FsbG9jKHN0LT5uYl9mcmFtZXMgKyAxLAo+IHNpemVvZigq cC0+ZnJhbWVfb2Zmc2V0cykpOwo+ID4gKwo+ID4gKyAgICBpZiAoIXAtPmZyYW1lX2ZsYWdzIHx8 ICFwLT5mcmFtZV9vZmZzZXRzKQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK PiA+ICsKPiA+ICsgICAgZm9yIChpbnQgbiA9IDA7IG4gPD0gc3QtPm5iX2ZyYW1lczsgbisrKSB7 Cj4gPiArICAgICAgICBjb25zdCB1aW50MzJfdCBlbnRyeSA9IGF2aW9fcmwzMihwYik7Cj4gPiAr Cj4gPiArICAgICAgICBwLT5mcmFtZV9mbGFnc1tuXSA9IGVudHJ5ICYgMzsKPiA+ICsgICAgICAg IHAtPmZyYW1lX29mZnNldHNbbl0gPSBlbnRyeSA+PiAyOwo+ID4gKyAgICB9Cj4gPiArCj4gPiAr ICAgIHN0YXJ0ID0gYXZpb190ZWxsKHBiKTsKPiA+ICsKPiA+ICsgICAgZm9yIChpbnQgbiA9IDA7 IG4gPCBzdC0+bmJfZnJhbWVzOyBuKyspIHsKPiA+ICsgICAgICAgIGNvbnN0IHVpbnQ2NF90IHBv cyA9IHN0YXJ0ICsgcC0+ZnJhbWVfb2Zmc2V0c1tuXTsKPiA+ICsgICAgICAgIGNvbnN0IGludDMy X3Qgc2l6ZSA9IHAtPmZyYW1lX29mZnNldHNbbisxXSAtCj4gcC0+ZnJhbWVfb2Zmc2V0c1tuXTsK PiA+ICsgICAgICAgIGNvbnN0IGludCBmbGFncyA9IHAtPmZyYW1lX2ZsYWdzW25dICYgMSA/IEFW SU5ERVhfS0VZRlJBTUUgOiAwOwo+ID4gKwo+ID4gKyAgICAgICAgaWYgKHAtPmZyYW1lX2ZsYWdz W25dID09IDAgfHwgc2l6ZSA8PSAwIHx8IHBvcyArIHNpemUgPgo+IGF2aW9fc2l6ZShwYikpCj4g PiArICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkoc3Qs IHBvcywgbiwgc2l6ZSwgMCwgZmxhZ3MpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldHVy biAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBkdl9yZWFkX3BhY2tldChBVkZvcm1h dENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCj4gPiArewo+ID4gKyAgICBQRFZEZW11eENvbnRl eHQgKnAgPSBzLT5wcml2X2RhdGE7Cj4gPiArICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNb MF07Cj4gPiArICAgIEZGU3RyZWFtICpjb25zdCBzdGkgPSBmZnN0cmVhbShzdCk7Cj4gPiArICAg IEFWSU9Db250ZXh0ICpwYiA9IHMtPnBiOwo+ID4gKyAgICBpbnQzMl90IHNpemUsIGZsYWdzLCBy ZXQ7Cj4gPiArICAgIGludDY0X3QgcG9zOwo+ID4gKwo+ID4gKyAgICBpZiAocC0+Y3VycmVudF9m cmFtZSA+PSBzdC0+bmJfZnJhbWVzKQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOwo+ ID4gKwo+ID4gKyAgICBwb3MgICA9IHN0aS0+aW5kZXhfZW50cmllc1twLT5jdXJyZW50X2ZyYW1l XS5wb3M7Cj4gPiArICAgIGZsYWdzID0gc3RpLT5pbmRleF9lbnRyaWVzW3AtPmN1cnJlbnRfZnJh bWVdLmZsYWdzOwo+ID4gKyAgICBzaXplICA9IHN0aS0+aW5kZXhfZW50cmllc1twLT5jdXJyZW50 X2ZyYW1lXS5zaXplOwo+ID4gKwo+ID4gKyAgICBhdmlvX3NlZWsocGIsIHBvcywgU0VFS19TRVQp Owo+ID4gKyAgICBpZiAoYXZpb19mZW9mKHBiKSB8fCBwb3MgKyBzaXplID4gYXZpb19zaXplKHBi KSB8fCBzaXplID09IDApCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Cj4gPiArCj4g PiArICAgIHJldCA9IGF2X2dldF9wYWNrZXQocGIsIHBrdCwgc2l6ZSk7Cj4gPiArICAgIGlmIChy ZXQgPCAwKQo+ID4gKyAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgaWYgKGZsYWdz ICYgQVZJTkRFWF9LRVlGUkFNRSkKPiA+ICsgICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtUX0ZM QUdfS0VZOwo+ID4gKyAgICBwa3QtPnN0cmVhbV9pbmRleCA9IDA7Cj4gPiArICAgIHBrdC0+cHRz ID0gcC0+Y3VycmVudF9mcmFtZSsrOwo+ID4gKyAgICBwa3QtPmR1cmF0aW9uID0gMTsKPiA+ICsK PiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcGR2X3JlYWRf Y2xvc2UoQVZGb3JtYXRDb250ZXh0ICpzKQo+ID4gK3sKPiA+ICsgICAgUERWRGVtdXhDb250ZXh0 ICpwID0gcy0+cHJpdl9kYXRhOwo+ID4gKwo+ID4gKyAgICBhdl9mcmVlcCgmcC0+ZnJhbWVfZmxh Z3MpOwo+ID4gKyAgICBhdl9mcmVlcCgmcC0+ZnJhbWVfb2Zmc2V0cyk7Cj4gPiArCj4gPiArICAg IHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBkdl9yZWFkX3NlZWsoQVZG b3JtYXRDb250ZXh0ICpzLCBpbnQgc3RyZWFtX2luZGV4LCBpbnQ2NF90Cj4gdGltZXN0YW1wLCBp bnQgZmxhZ3MpCj4gPiArewo+ID4gKyAgICBQRFZEZW11eENvbnRleHQgKnAgPSBzLT5wcml2X2Rh dGE7Cj4gPiArICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbc3RyZWFtX2luZGV4XTsKPiA+ ICsgICAgaW50IGluZGV4ID0gYXZfaW5kZXhfc2VhcmNoX3RpbWVzdGFtcChzdCwgdGltZXN0YW1w LCBmbGFncyk7Cj4gPiArCj4gPiArICAgIGlmIChpbmRleCA8IDApCj4gPiArICAgICAgICByZXR1 cm4gLTE7Cj4gPiArCj4gPiArICAgIGlmIChhdmlvX3NlZWsocy0+cGIsIGZmc3RyZWFtKHN0KS0+ aW5kZXhfZW50cmllc1tpbmRleF0ucG9zLAo+IFNFRUtfU0VUKSA8IDApCj4gPiArICAgICAgICBy ZXR1cm4gLTE7Cj4gPiArCj4gPiArICAgIHAtPmN1cnJlbnRfZnJhbWUgPSBpbmRleDsKPiA+ICsK PiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK2NvbnN0IEFWSW5wdXRGb3JtYXQg ZmZfcGR2X2RlbXV4ZXIgPSB7Cj4gPiArICAgIC5uYW1lICAgICAgICAgICA9ICJwZHYiLAo+ID4g KyAgICAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiUGxheURhdGUgVmlk ZW8iKSwKPiA+ICsgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFBEVkRlbXV4Q29udGV4dCks Cj4gPiArICAgIC5mbGFnc19pbnRlcm5hbCA9IEZGX0ZNVF9JTklUX0NMRUFOVVAsCj4gPiArICAg IC5yZWFkX3Byb2JlICAgICA9IHBkdl9wcm9iZSwKPiA+ICsgICAgLnJlYWRfaGVhZGVyICAgID0g cGR2X3JlYWRfaGVhZGVyLAo+ID4gKyAgICAucmVhZF9wYWNrZXQgICAgPSBwZHZfcmVhZF9wYWNr ZXQsCj4gPiArICAgIC5yZWFkX2Nsb3NlICAgICA9IHBkdl9yZWFkX2Nsb3NlLAo+ID4gKyAgICAu cmVhZF9zZWVrICAgICAgPSBwZHZfcmVhZF9zZWVrLAo+ID4gKyAgICAuZXh0ZW5zaW9ucyAgICAg PSAicGR2IiwKPiA+ICt9Owo+ID4gLS0KPiA+IDIuMzkuMQo+ID4KPgo+ID4gIE1ha2VmaWxlICAg ICB8ICAgIDEKPiA+ICBhbGxjb2RlY3MuYyAgfCAgICAxCj4gPiAgY29kZWNfZGVzYy5jIHwgICAg NyArKysKPiA+ICBjb2RlY19pZC5oICAgfCAgICAxCj4gPiAgcGR2ZGVjLmMgICAgIHwgIDEyNwo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKQo+ID4gOGIzN2Q3OGMx NDZlMjkxZTJhNjkzYTE2YWUwYjkyNDE2OTlhNGE2OQo+IDAwMDEtYXZjb2RlYy1hZGQtUERWLWRl Y29kZXIucGF0Y2gKPiA+IEZyb20gNWEyNmIxM2Y1ODljOTYwNzVmYTFkYzI2OWNjNzY4MTYzYWZl MTY1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiA+IEZyb206IFBhdWwgQiBNYWhvbCA8b25l bWRhQGdtYWlsLmNvbT4KPiA+IERhdGU6IE1vbiwgMTcgQXByIDIwMjMgMTk6MTk6NDIgKzAyMDAK PiA+IFN1YmplY3Q6IFtQQVRDSCAxLzJdIGF2Y29kZWM6IGFkZCBQRFYgZGVjb2Rlcgo+ID4KPiA+ IFNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdtYWlsLmNvbT4KPiA+IC0tLQo+ ID4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgIHwgICAxICsKPiA+ICBsaWJhdmNvZGVjL2FsbGNv ZGVjcy5jICB8ICAgMSArCj4gPiAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgfCAgIDcgKysrCj4g PiAgbGliYXZjb2RlYy9jb2RlY19pZC5oICAgfCAgIDEgKwo+ID4gIGxpYmF2Y29kZWMvcGR2ZGVj LmMgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ ICA1IGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspCj4KPiBbLi4uXQo+Cj4gPiBkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9wZHZkZWMuYyBiL2xpYmF2Y29kZWMvcGR2ZGVjLmMKPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi44MzU5ZmVhYzBkCj4gPiAt LS0gL2Rldi9udWxsCj4gPiArKysgYi9saWJhdmNvZGVjL3BkdmRlYy5jCj4gPiBAQCAtMCwwICsx LDEyNyBAQAo+ID4gKy8qCj4gPiArICogUERWIHZpZGVvIGZvcm1hdAo+ID4gKyAqCj4gPiArICog Q29weXJpZ2h0IChjKSAyMDIzIFBhdWwgQiBNYWhvbAo+ID4gKyAqCj4gPiArICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgo+ID4gKyAqCj4gPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ID4gKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK PiA+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KPiA+ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiArICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKPiA+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ID4gKyAqCj4gPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ID4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiA+ICsgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B Cj4gMDIxMTAtMTMwMSBVU0EKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiYXZjb2RlYy5o Igo+ID4gKyNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgo+ID4gKyNpbmNsdWRlICJkZWNvZGUu aCIKPiA+ICsjaW5jbHVkZSAiemxpYl93cmFwcGVyLmgiCj4gPiArCj4gPiArI2luY2x1ZGUgPHps aWIuaD4KPgo+IHNvbWUgemxpYiBkZXBlbmFjeSBpbiBjb25maWd1cmUgaXMgbmVlZGVkCj4KCldp bGwgcHVzaCBzb29uIHdpdGggdGhhdCBhZGRlZC4KCgo+Cj4gWy4uLl0KPgo+IC0tCj4gTWljaGFl bCAgICAgR251UEcgZmluZ2VycHJpbnQ6IDlGRjIxMjhCMTQ3RUY2NzMwQkFERjEzMzYxMUVDNzg3 MDQwQjBGQUIKPgo+IFRob3NlIHdobyBhcmUgdG9vIHNtYXJ0IHRvIGVuZ2FnZSBpbiBwb2xpdGlj cyBhcmUgcHVuaXNoZWQgYnkgYmVpbmcKPiBnb3Zlcm5lZCBieSB0aG9zZSB3aG8gYXJlIGR1bWJl ci4gLS0gUGxhdG8KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y Zwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4g VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVs LXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFp bGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJv dmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuCg==