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 B93214316A for ; Fri, 14 Jan 2022 12:58:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A723B68B48D; Fri, 14 Jan 2022 14:58:05 +0200 (EET) Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6966F68B37A for ; Fri, 14 Jan 2022 14:57:59 +0200 (EET) Received: by mail-ed1-f49.google.com with SMTP id o6so34703785edc.4 for ; Fri, 14 Jan 2022 04:57:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UmtTgNnYwEAb19eWycvNP0yuCkbgPhHeFs+cFat5b8g=; b=a4EaWXDN0dY1bQXI4duCkNO2OCoELkqSjx40YGpK6wQcgQN0cgmvv+ur87Djl37bVX 2LyL1GRdqn2SCoFpfOfvv7ObDixmlCiYVH7tobmHD6NlBE5XGIA03dZbWCe3vmwWBUhz 6G3yGyoOOcCLy5PztU5hpCUOx1b1KNQmIfUNIcXqf4dqOCJxTTBSEuKMvkb0qXAbk8V1 qVxqrXZ282SRGM8lgiTGGIWrBwkOWYIs6j4dT3M2tgmv5teaG8yZ8++BRebgCI6Ubaxw AxdsyGJBMldgi9xkM1WzGc1fSkumnHn4TMLckZcSNZnnUPoGAoJeDRn8G30qG6lfQ9H/ opSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UmtTgNnYwEAb19eWycvNP0yuCkbgPhHeFs+cFat5b8g=; b=LVhJEMUG4eADU6VwyJGXT3KAeKtq/RXtdUeGX8FERi342/5wNJ71nSNcM0FBXtyM5v rUXhbHBNwLEm/cf6/vynDSmXnnqEwWIzfRh8O3UkGNkZT3sJQmPKbEDO2274Cb4BcK23 LrjBZLO2cikBRnxMdul49f4LJTQbxvy1pVCuPw+IHZomIb5xr9damFnzsTY2QwFLFxi6 +0aMskYvzIBeYBeJ4O70Cr42NU+1wQYF33NJ7X3nSbrLpZrnQkej701z2cEgFOGKHS+/ MFVqRGGuUW8ZVkyOJwJcelZriP2jaARJS8mXDpcGDlSVOBMcK07gbiEykW7g5Q879/Bz 44XA== X-Gm-Message-State: AOAM532c7s1v4lxvtPUQEXWKse72JCa01P85RL5Lx0GpCQddsZiTXVyu L1q2mcDWjo/Xlq8XF8ofPVA= X-Google-Smtp-Source: ABdhPJyojABUIXW5q/p+IWlqyD36MxeHwOIOlDPexQUuAgJM3nJhuxjWrYdjxqAlb68ZfScHDPHetg== X-Received: by 2002:a17:906:6d95:: with SMTP id h21mr6947686ejt.190.1642165078234; Fri, 14 Jan 2022 04:57:58 -0800 (PST) Received: from [10.10.10.172] (84-112-75-55.cable.dynamic.surfer.at. [84.112.75.55]) by smtp.gmail.com with ESMTPSA id a3sm1849271ejd.16.2022.01.14.04.57.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Jan 2022 04:57:57 -0800 (PST) From: "Marvin Scholz" To: "Romain Beauxis" Date: Fri, 14 Jan 2022 13:57:56 +0100 X-Mailer: MailMate (1.13.2r5673) Message-ID: In-Reply-To: <03970EF9-6434-417E-B32D-70E37743B16E@rastageeks.org> References: <03970EF9-6434-417E-B32D-70E37743B16E@rastageeks.org> MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH v9 1/3] libavdevice/avfoundation.m: use AudioConvert, extend supported formats 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 Cc: thilo.borgmann@mail.de, Aman Karmani , ffmpeg-devel@ffmpeg.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: CgpPbiA2IEphbiAyMDIyLCBhdCAxNToyNCwgUm9tYWluIEJlYXV4aXMgd3JvdGU6Cgo+ICogSW1w bGVtZW50IHN1cHBvcnQgZm9yIEF1ZGlvQ29udmVydGVyCj4gKiBTd2l0Y2ggdG8gQXVkaW9Db252 ZXJ0ZXIncyBBUEkgdG8gY29udmVydCB1bnN1cHBvcnRlZCBQQ00KPiAgIGZvcm1hdHMgKG5vbi1p bnRlcmxlYXZlZCwgbm9uLXBhY2tlZCkgdG8gc3VwcG9ydGVkIGZvcm1hdHMKPiAqIE1pbmltaXpl IGRhdGEgY29weS4KPgo+IFRoaXMgZml4ZXM6IGh0dHBzOi8vdHJhYy5mZm1wZWcub3JnL3RpY2tl dC85NTAyCj4KPiBBUEkgcmVmOgo+IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVu dGF0aW9uL2F1ZGlvdG9vbGJveC9hdWRpb19jb252ZXJ0ZXJfc2VydmljZXMKPgo+IFNpZ25lZC1v ZmYtYnk6IFJvbWFpbiBCZWF1eGlzIDx0b290c0ByYXN0YWdlZWtzLm9yZz4KPiAtLS0KPiBUaGlz IGlzIHRoZSBmaXJzdCBwYXRjaCBvZiBhIHNlcmllcyBvZiAzIHRoYXQgZml4LCBjbGVhbnVwIGFu ZCBlbmhhbmNlIAo+IHRoZQo+IGF2Zm91bmRhdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgbGliYXZk ZXZpY2UuCj4KPiBUaGVzZSBwYXRjaGVzIGNvbWUgZnJvbSBhbiBhY3R1YWwgdXNlci1mYWNpbmcg YXBwbGljYXRpb24gcmVseWluZyBvbgo+IGxpYmF2ZGV2aWNl4oCZcyBpbXBsZW1lbnRhdGlvbiBv ZiBhdmZvdW5kYXRpb24gYXVkaW8gaW5wdXQuIFdpdGhvdXQgCj4gdGhlbSwKPiBBdmZvdW5kYXRp b24gaXMgcHJhY3RpY2FsbHkgdW51c2FibGUgYXMgaXQgd2lsbDoKPiAqIFJlZnVzZSB0byBwcm9j ZXNzIGNlcnRhaW4gc3BlY2lmaWMgYXVkaW8gaW5wdXQgZm9ybWF0IHRoYXQgYXJlIAo+IGFjdHVh bGx5Cj4gcmV0dXJuZWQgYnkgdGhlIE9TIGZvciBzb21lIHVzZXJzIChwYWNrZWQgUENNIGF1ZGlv KQo+ICogRHJvcCBhdWRpbyBmcmFtZXMsIHJlc3VsdGluZyBpbiBjb3JydXB0ZWQgYXVkaW8gaW5w dXQuIFRoaXMgbWlnaHQgCj4gaGF2ZSBiZWVuCj4gdW5ub3RpY2VkIHdpdGggdmlkZW8gZnJhbWVz IGJ1dCB0aGlzIG1ha2VzIGF2Zm91bmRhdGlvbiBlc3NlbnRpYWxseSAKPiB1bnVzYWJsZQo+IGZv ciBhdWRpby4KPgo+IFRoZSBwYXRjaGVzIGFyZSBub3cgYmVpbmcgaW5jbHVkZWQgaW4gb3VyIHBy b2R1Y3Rpb24gYnVpbGQgc28gdGhleSBhcmUgCj4gdGVzdGVkCj4gYW5kIHVzYWJsZSBpbiBwcm9k dWN0aW9uLgo+CgpIaSwKCnRoZSBwYXRjaGVzIGFyZSBzdGlsbCBjb3JydXB0IGFuZCBkbyBub3Qg YXBwbHkuCkFzIHN0YXRlZCBlYXJsaWVyLCBwbGVhc2UgZWl0aGVyIHVzZSBnaXQgc2VuZC1lbWFp bCBvciBhdHRhY2ggdGhlIHBhdGNoCnRvIHRoZSBtYWlsIGluc3RlYWQgb2YgcHV0dGluZyBpdHMg Y29udGVudHMgaW4gaXQsIGFzIGFwcGFyZW50bHkgCk1haWwuYXBwCm1lc3NlcyB0aGVtIHVwLgoK PiBDaGFuZ2Vsb2cgZm9yIHRoaXMgcGF0Y2g6Cj4gKiB2MjogTm9uZQo+ICogdjM6IE5vbmUKPiAq IHY0OiBOb25lCj4gKiB2NTogRml4IGluZGVudGF0aW9uL3dyYXBwaW5nCj4gKiB2NjogTm9uZQo+ ICogdjc6IFJlbW92ZWQgdXNlIG9mIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5Q2FsY3VsYXRlT3V0 cHV0QnVmZmVyU2l6ZQo+IHRvIGNhbGN1bGF0ZSBvdXRwdXQgYnVmZmVyIHNpemUuIFRoZSBjYWxj dWxhdGlvbiBpcyB0cml2aWFsIGFuZCB0aGlzIAo+IGNhbGwgd2FzCj4gcmFuZG9tbHkgZmFpbGlu ZyBmb3Igbm8gcmVhc29uCj4gKiB2ODogTm9uZQo+ICogdjk6IE5vbmUKPgo+IGxpYmF2ZGV2aWNl L2F2Zm91bmRhdGlvbi5tIHwgMjU1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0KPiAxIGZpbGUgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubSBiL2xpYmF2ZGV2aWNl L2F2Zm91bmRhdGlvbi5tCj4gaW5kZXggMGNkNmU2NDZkNS4uNzM4Y2Q5MzM3NSAxMDA2NDQKPiAt LS0gYS9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQo+ICsrKyBiL2xpYmF2ZGV2aWNlL2F2Zm91 bmRhdGlvbi5tCj4gQEAgLTExMSwxNiArMTExLDExIEBACj4KPiAgICAgaW50ICAgICAgICAgICAg IG51bV92aWRlb19kZXZpY2VzOwo+Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fY2hhbm5l bHM7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlOwo+IC0gICAg aW50ICAgICAgICAgICAgIGF1ZGlvX2Zsb2F0Owo+IC0gICAgaW50ICAgICAgICAgICAgIGF1ZGlv X2JlOwo+IC0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX3NpZ25lZF9pbnRlZ2VyOwo+IC0gICAg aW50ICAgICAgICAgICAgIGF1ZGlvX3BhY2tlZDsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRp b19ub25faW50ZXJsZWF2ZWQ7Cj4gLQo+IC0gICAgaW50MzJfdCAgICAgICAgICphdWRpb19idWZm ZXI7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fYnVmZmVyX3NpemU7Cj4gKyAgICBVSW50 MzIgICAgICAgICAgICBhdWRpb19idWZmZXJzOwo+ICsgICAgVUludDMyICAgICAgICAgICAgYXVk aW9fY2hhbm5lbHM7Cj4gKyAgICBVSW50MzIgICAgICAgICAgICBpbnB1dF9ieXRlc19wZXJfc2Ft cGxlOwo+ICsgICAgVUludDMyICAgICAgICAgICAgb3V0cHV0X2J5dGVzX3Blcl9zYW1wbGU7Cj4g KyAgICBBdWRpb0NvbnZlcnRlclJlZiBhdWRpb19jb252ZXJ0ZXI7Cj4KPiAgICAgZW51bSBBVlBp eGVsRm9ybWF0IHBpeGVsX2Zvcm1hdDsKPgo+IEBAIC0yOTksNyArMjk0LDEwIEBAIHN0YXRpYyB2 b2lkIGRlc3Ryb3lfY29udGV4dChBVkZDb250ZXh0KiBjdHgpCj4gICAgIGN0eC0+YXZmX2RlbGVn YXRlICAgID0gTlVMTDsKPiAgICAgY3R4LT5hdmZfYXVkaW9fZGVsZWdhdGUgPSBOVUxMOwo+Cj4g LSAgICBhdl9mcmVlcCgmY3R4LT5hdWRpb19idWZmZXIpOwo+ICsgICAgaWYgKGN0eC0+YXVkaW9f Y29udmVydGVyKSB7Cj4gKyAgICAgIEF1ZGlvQ29udmVydGVyRGlzcG9zZShjdHgtPmF1ZGlvX2Nv bnZlcnRlcik7Cj4gKyAgICAgIGN0eC0+YXVkaW9fY29udmVydGVyID0gTlVMTDsKPiArICAgIH0K Pgo+ICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmN0eC0+ZnJhbWVfbG9jayk7Cj4KPiBAQCAt NjczLDYgKzY3MSwxMCBAQCBzdGF0aWMgaW50IGdldF9hdWRpb19jb25maWcoQVZGb3JtYXRDb250 ZXh0ICpzKQo+ICAgICBBVkZDb250ZXh0ICpjdHggPSAoQVZGQ29udGV4dCopcy0+cHJpdl9kYXRh Owo+ICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdF9kZXNjOwo+ICAgICBBVlN0cmVh bSogc3RyZWFtID0gYXZmb3JtYXRfbmV3X3N0cmVhbShzLCBOVUxMKTsKPiArICAgIEF1ZGlvU3Ry ZWFtQmFzaWNEZXNjcmlwdGlvbiBvdXRwdXRfZm9ybWF0ID0gezB9Owo+ICsgICAgaW50IGF1ZGlv X2JpdHNfcGVyX3NhbXBsZSwgYXVkaW9fZmxvYXQsIGF1ZGlvX2JlOwo+ICsgICAgaW50IGF1ZGlv X3NpZ25lZF9pbnRlZ2VyLCBhdWRpb19wYWNrZWQsIGF1ZGlvX25vbl9pbnRlcmxlYXZlZDsKPiAr ICAgIGludCBtdXN0X2NvbnZlcnQgPSAwOwo+Cj4gICAgIGlmICghc3RyZWFtKSB7Cj4gICAgICAg ICByZXR1cm4gMTsKPiBAQCAtNjkwLDYwICs2OTIsOTcgQEAgc3RhdGljIGludCBnZXRfYXVkaW9f Y29uZmlnKEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdHJl YW0sIDY0LCAxLCBhdmZfdGltZV9iYXNlKTsKPgo+ICAgICBmb3JtYXRfZGVzYyA9IAo+IENNU2Ft cGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lKTsK PiAtICAgIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqYmFzaWNfZGVzYyA9IAo+ IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0 X2Rlc2MpOwo+ICsgICAgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICppbnB1dF9m b3JtYXQgPSAKPiBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0 aW9uKGZvcm1hdF9kZXNjKTsKPgo+IC0gICAgaWYgKCFiYXNpY19kZXNjKSB7Cj4gKyAgICBpZiAo IWlucHV0X2Zvcm1hdCkgewo+ICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ICAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgImF1ZGlvIGZvcm1hdCBub3QgYXZhaWxhYmxlXG4iKTsK PiAgICAgICAgIHJldHVybiAxOwo+ICAgICB9Cj4KPiArICAgIGlmIChpbnB1dF9mb3JtYXQtPm1G b3JtYXRJRCAhPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00pIHsKPiArICAgICAgICB1bmxvY2tfZnJh bWVzKGN0eCk7Cj4gKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIm9ubHkgUENNIGF1 ZGlvIGZvcm1hdCBhcmUgc3VwcG9ydGVkIAo+IGF0IHRoZSBtb21lbnRcbiIpOwo+ICsgICAgICAg IHJldHVybiAxOwo+ICsgICAgfQo+ICsKPiAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfdHlw ZSAgICAgPSBBVk1FRElBX1RZUEVfQVVESU87Cj4gLSAgICBzdHJlYW0tPmNvZGVjcGFyLT5zYW1w bGVfcmF0ZSAgICA9IGJhc2ljX2Rlc2MtPm1TYW1wbGVSYXRlOwo+IC0gICAgc3RyZWFtLT5jb2Rl Y3Bhci0+Y2hhbm5lbHMgICAgICAgPSBiYXNpY19kZXNjLT5tQ2hhbm5lbHNQZXJGcmFtZTsKPiAr ICAgIHN0cmVhbS0+Y29kZWNwYXItPnNhbXBsZV9yYXRlICAgID0gaW5wdXRfZm9ybWF0LT5tU2Ft cGxlUmF0ZTsKPiArICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxzICAgICAgID0gCj4gaW5w dXRfZm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKPiAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y2hh bm5lbF9sYXlvdXQgPSAKPiBhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChzdHJlYW0tPmNv ZGVjcGFyLT5jaGFubmVscyk7Cj4KPiAtICAgIGN0eC0+YXVkaW9fY2hhbm5lbHMgICAgICAgID0g YmFzaWNfZGVzYy0+bUNoYW5uZWxzUGVyRnJhbWU7Cj4gLSAgICBjdHgtPmF1ZGlvX2JpdHNfcGVy X3NhbXBsZSA9IGJhc2ljX2Rlc2MtPm1CaXRzUGVyQ2hhbm5lbDsKPiAtICAgIGN0eC0+YXVkaW9f ZmxvYXQgICAgICAgICAgID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYgCj4ga0F1ZGlvRm9y bWF0RmxhZ0lzRmxvYXQ7Cj4gLSAgICBjdHgtPmF1ZGlvX2JlICAgICAgICAgICAgICA9IGJhc2lj X2Rlc2MtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc0JpZ0VuZGlhbjsKPiAt ICAgIGN0eC0+YXVkaW9fc2lnbmVkX2ludGVnZXIgID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdz ICYgCj4ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKPiAtICAgIGN0eC0+YXVkaW9f cGFja2VkICAgICAgICAgID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYgCj4ga0F1ZGlvRm9y bWF0RmxhZ0lzUGFja2VkOwo+IC0gICAgY3R4LT5hdWRpb19ub25faW50ZXJsZWF2ZWQgPSBiYXNp Y19kZXNjLT5tRm9ybWF0RmxhZ3MgJiAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZl ZDsKPiAtCj4gLSAgICBpZiAoYmFzaWNfZGVzYy0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExp bmVhclBDTSAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fZmxvYXQgJiYKPiAtICAgICAgICBjdHgt PmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAzMiAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fcGFj a2VkKSB7Cj4gLSAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBjdHgtPmF1ZGlv X2JlID8gCj4gQVZfQ09ERUNfSURfUENNX0YzMkJFIDogQVZfQ09ERUNfSURfUENNX0YzMkxFOwo+ IC0gICAgfSBlbHNlIGlmIChiYXNpY19kZXNjLT5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TGlu ZWFyUENNICYmCj4gLSAgICAgICAgY3R4LT5hdWRpb19zaWduZWRfaW50ZWdlciAmJgo+IC0gICAg ICAgIGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID09IDE2ICYmCj4gLSAgICAgICAgY3R4LT5h dWRpb19wYWNrZWQpIHsKPiAtICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0 eC0+YXVkaW9fYmUgPyAKPiBBVl9DT0RFQ19JRF9QQ01fUzE2QkUgOiBBVl9DT0RFQ19JRF9QQ01f UzE2TEU7Cj4gLSAgICB9IGVsc2UgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9G b3JtYXRMaW5lYXJQQ00gJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYm Cj4gLSAgICAgICAgY3R4LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMjQgJiYKPiAtICAgICAg ICBjdHgtPmF1ZGlvX3BhY2tlZCkgewo+IC0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVj X2lkID0gY3R4LT5hdWRpb19iZSA/IAo+IEFWX0NPREVDX0lEX1BDTV9TMjRCRSA6IEFWX0NPREVD X0lEX1BDTV9TMjRMRTsKPiAtICAgIH0gZWxzZSBpZiAoYmFzaWNfZGVzYy0+bUZvcm1hdElEID09 IGtBdWRpb0Zvcm1hdExpbmVhclBDTSAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fc2lnbmVkX2lu dGVnZXIgJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAzMiAmJgo+ IC0gICAgICAgIGN0eC0+YXVkaW9fcGFja2VkKSB7Cj4gLSAgICAgICAgc3RyZWFtLT5jb2RlY3Bh ci0+Y29kZWNfaWQgPSBjdHgtPmF1ZGlvX2JlID8gCj4gQVZfQ09ERUNfSURfUENNX1MzMkJFIDog QVZfQ09ERUNfSURfUENNX1MzMkxFOwo+ICsgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID0gaW5w dXRfZm9ybWF0LT5tQml0c1BlckNoYW5uZWw7Cj4gKyAgICBhdWRpb19mbG9hdCAgICAgICAgICAg PSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0 Owo+ICsgICAgYXVkaW9fYmUgICAgICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0Rmxh Z3MgJiAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRpYW47Cj4gKyAgICBhdWRpb19zaWduZWRf aW50ZWdlciAgPSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZs YWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICBhdWRpb19wYWNrZWQgICAgICAgICAgPSBpbnB1dF9m b3JtYXQtPm1Gb3JtYXRGbGFncyAmIAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZDsKPiArICAg IGF1ZGlvX25vbl9pbnRlcmxlYXZlZCA9IGlucHV0X2Zvcm1hdC0+bUZvcm1hdEZsYWdzICYgCj4g a0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7Cj4gKwo+ICsgICAgY3R4LT5pbnB1dF9i eXRlc19wZXJfc2FtcGxlICA9IGlucHV0X2Zvcm1hdC0+bUJpdHNQZXJDaGFubmVsID4+IAo+IDM7 Cj4gKyAgICBjdHgtPm91dHB1dF9ieXRlc19wZXJfc2FtcGxlID0gY3R4LT5pbnB1dF9ieXRlc19w ZXJfc2FtcGxlOwo+ICsgICAgY3R4LT5hdWRpb19jaGFubmVscyAgICAgICAgICA9IGlucHV0X2Zv cm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7Cj4gKwo+ICsgICAgaWYgKGF1ZGlvX25vbl9pbnRlcmxl YXZlZCkgewo+ICsgICAgICAgIGN0eC0+YXVkaW9fYnVmZmVycyA9IGlucHV0X2Zvcm1hdC0+bUNo YW5uZWxzUGVyRnJhbWU7Cj4gICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgdW5sb2NrX2ZyYW1lcyhj dHgpOwo+IC0gICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJhdWRpbyBmb3JtYXQgaXMg bm90IHN1cHBvcnRlZFxuIik7Cj4gLSAgICAgICAgcmV0dXJuIDE7Cj4gKyAgICAgICAgY3R4LT5h dWRpb19idWZmZXJzID0gMTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoYXVkaW9fbm9uX2ludGVy bGVhdmVkIHx8ICFhdWRpb19wYWNrZWQpIHsKPiArICAgICAgbXVzdF9jb252ZXJ0ID0gMTsKPiAr ICAgIH0KPiArCj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCAgID0gaW5wdXRf Zm9ybWF0LT5tQml0c1BlckNoYW5uZWw7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1DaGFubmVsc1Bl ckZyYW1lID0gY3R4LT5hdWRpb19jaGFubmVsczsKPiArICAgIG91dHB1dF9mb3JtYXQubUZyYW1l c1BlclBhY2tldCAgPSAxOwo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJGcmFtZSAgICA9 IG91dHB1dF9mb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgCj4gKiBjdHgtPmlucHV0X2J5dGVzX3Bl cl9zYW1wbGU7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1CeXRlc1BlclBhY2tldCAgID0gb3V0cHV0 X2Zvcm1hdC5tRnJhbWVzUGVyUGFja2V0IAo+ICogb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJGcmFt ZTsKPiArICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzICAgICAgPSBrQXVkaW9Gb3JtYXRG bGFnSXNQYWNrZWQgfCAKPiBhdWRpb19iZTsKPiArICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdElE ICAgICAgICAgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1S ZXNlcnZlZCAgICAgICAgID0gMDsKPiArICAgIG91dHB1dF9mb3JtYXQubVNhbXBsZVJhdGUgICAg ICAgPSBpbnB1dF9mb3JtYXQtPm1TYW1wbGVSYXRlOwo+ICsKPiArICAgIGlmIChhdWRpb19mbG9h dCAmJgo+ICsgICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAzMikgewo+ICsgICAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01f RjMyQkUgCj4gOiBBVl9DT0RFQ19JRF9QQ01fRjMyTEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zvcm1h dC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzRmxvYXQ7Cj4gKyAgICB9IGVsc2Ug aWYgKGF1ZGlvX2Zsb2F0ICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDY0 KSB7Cj4gKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFW X0NPREVDX0lEX1BDTV9GNjRCRSAKPiA6IEFWX0NPREVDX0lEX1BDTV9GNjRMRTsKPiArICAgICAg ICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9Gb3JtYXRGbGFnSXNGbG9hdDsK PiArICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiArICAgICAgICBhdWRp b19iaXRzX3Blcl9zYW1wbGUgPT0gOCkgewo+ICsgICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNv ZGVjX2lkID0gQVZfQ09ERUNfSURfUENNX1M4Owo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZv cm1hdEZsYWdzIHw9IAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICB9 IGVsc2UgaWYgKGF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19w ZXJfc2FtcGxlID09IDE2KSB7Cj4gKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQg PSBhdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9TMTZCRSAKPiA6IEFWX0NPREVDX0lEX1BDTV9T MTZMRTsKPiArICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSAKPiBrQXVkaW9G b3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRf aW50ZWdlciAmJgo+ICsgICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAyNCkgewo+ICsg ICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19J RF9QQ01fUzI0QkUgCj4gOiBBVl9DT0RFQ19JRF9QQ01fUzI0TEU7Cj4gKyAgICAgICAgb3V0cHV0 X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0gCj4ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdl cjsKPiArICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiArICAgICAgICBh dWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMzIpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MzMkJFIAo+IDogQVZfQ09E RUNfSURfUENNX1MzMkxFOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9 IAo+IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICB9IGVsc2UgaWYgKGF1 ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09 IDY0KSB7Cj4gKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/ IEFWX0NPREVDX0lEX1BDTV9TNjRCRSAKPiA6IEFWX0NPREVDX0lEX1BDTV9TNjRMRTsKPiArICAg ICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSAKPiBrQXVkaW9Gb3JtYXRGbGFnSXNT aWduZWRJbnRlZ2VyOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MzMkJFIAo+IDogQVZfQ09E RUNfSURfUENNX1MzMkxFOwo+ICsgICAgICAgIGN0eC0+b3V0cHV0X2J5dGVzX3Blcl9zYW1wbGUg PSA0Owo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUJpdHNQZXJDaGFubmVsID0gMzI7Cj4gKyAg ICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0gCj4ga0F1ZGlvRm9ybWF0RmxhZ0lz U2lnbmVkSW50ZWdlcjsKPiArICAgICAgICBtdXN0X2NvbnZlcnQgPSAxOwo+ICAgICB9Cj4KPiAt ICAgIGlmIChjdHgtPmF1ZGlvX25vbl9pbnRlcmxlYXZlZCkgewo+IC0gICAgICAgIENNQmxvY2tC dWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gCj4gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKGN0 eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Cj4gLSAgICAgICAgY3R4LT5hdWRpb19idWZmZXJfc2l6 ZSAgICAgICAgPSAKPiBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOwo+ IC0gICAgICAgIGN0eC0+YXVkaW9fYnVmZmVyICAgICAgICAgICAgID0gCj4gYXZfbWFsbG9jKGN0 eC0+YXVkaW9fYnVmZmVyX3NpemUpOwo+IC0gICAgICAgIGlmICghY3R4LT5hdWRpb19idWZmZXIp IHsKPiArICAgIGlmIChtdXN0X2NvbnZlcnQpIHsKPiArICAgICAgICBPU1N0YXR1cyByZXQgPSBB dWRpb0NvbnZlcnRlck5ldyhpbnB1dF9mb3JtYXQsIAo+ICZvdXRwdXRfZm9ybWF0LCAmY3R4LT5h dWRpb19jb252ZXJ0ZXIpOwo+ICsgICAgICAgIGlmIChyZXQgIT0gbm9FcnIpIHsKPiAgICAgICAg ICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gLSAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0df RVJST1IsICJlcnJvciBhbGxvY2F0aW5nIGF1ZGlvIAo+IGJ1ZmZlclxuIik7Cj4gKyAgICAgICAg ICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJFcnJvciB3aGlsZSBhbGxvY2F0aW5nIGF1ZGlv IAo+IGNvbnZlcnRlclxuIik7Cj4gICAgICAgICAgICAgcmV0dXJuIDE7Cj4gICAgICAgICB9Cj4g ICAgIH0KPiBAQCAtMTA0OCw2ICsxMDg3LDcgQEAgc3RhdGljIGludCBjb3B5X2N2cGl4ZWxidWZm ZXIoQVZGb3JtYXRDb250ZXh0IAo+ICpzLAo+Cj4gc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQo QVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+IHsKPiArICAgIE9TU3RhdHVzIHJl dDsKPiAgICAgQVZGQ29udGV4dCogY3R4ID0gKEFWRkNvbnRleHQqKXMtPnByaXZfZGF0YTsKPgo+ ICAgICBkbyB7Cj4gQEAgLTEwOTEsNyArMTEzMSw3IEBAIHN0YXRpYyBpbnQgYXZmX3JlYWRfcGFj a2V0KEFWRm9ybWF0Q29udGV4dCAqcywgCj4gQVZQYWNrZXQgKnBrdCkKPiAgICAgICAgICAgICAg ICAgc3RhdHVzID0gY29weV9jdnBpeGVsYnVmZmVyKHMsIGltYWdlX2J1ZmZlciwgcGt0KTsKPiAg ICAgICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOwo+IC0gICAg ICAgICAgICAgICAgT1NTdGF0dXMgcmV0ID0gCj4gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMo YmxvY2tfYnVmZmVyLCAwLCBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7Cj4gKyAgICAgICAgICAgICAg ICByZXQgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhibG9ja19idWZmZXIsIDAsIAo+IHBr dC0+c2l6ZSwgcGt0LT5kYXRhKTsKPiAgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01CbG9j a0J1ZmZlck5vRXJyKSB7Cj4gICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBBVkVSUk9SKEVJ Tyk7Cj4gICAgICAgICAgICAgICAgIH0KPiBAQCAtMTEwNSwyMSArMTE0NSw2MCBAQCBzdGF0aWMg aW50IGF2Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIAo+IEFWUGFja2V0ICpwa3Qp Cj4gICAgICAgICAgICAgfQo+ICAgICAgICAgfSBlbHNlIGlmIChjdHgtPmN1cnJlbnRfYXVkaW9f ZnJhbWUgIT0gbmlsKSB7Cj4gICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZm ZXIgPSAKPiBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoY3R4LT5jdXJyZW50X2F1ZGlvX2Zy YW1lKTsKPiAtICAgICAgICAgICAgaW50IGJsb2NrX2J1ZmZlcl9zaXplICAgICAgICAgPSAKPiBD TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOwo+Cj4gLSAgICAgICAgICAg IGlmICghYmxvY2tfYnVmZmVyIHx8ICFibG9ja19idWZmZXJfc2l6ZSkgewo+IC0gICAgICAgICAg ICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlPKTsKPiAtICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBzaXplX3QgaW5wdXRfc2l6 ZSA9IAo+IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGJsb2NrX2J1ZmZlcik7Cj4gKyAgICAg ICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGlucHV0X3NpemUgLyBjdHgtPmF1ZGlvX2J1ZmZlcnM7 Cj4gKyAgICAgICAgICAgIGludCBuYl9zYW1wbGVzID0gaW5wdXRfc2l6ZSAvIChjdHgtPmF1ZGlv X2NoYW5uZWxzICogCj4gY3R4LT5pbnB1dF9ieXRlc19wZXJfc2FtcGxlKTsKPiArICAgICAgICAg ICAgaW50IG91dHB1dF9zaXplID0gbmJfc2FtcGxlcyAqIAo+IGN0eC0+b3V0cHV0X2J5dGVzX3Bl cl9zYW1wbGUgKiBjdHgtPmF1ZGlvX2NoYW5uZWxzOwo+Cj4gLSAgICAgICAgICAgIGlmIChjdHgt PmF1ZGlvX25vbl9pbnRlcmxlYXZlZCAmJiBibG9ja19idWZmZXJfc2l6ZSA+IAo+IGN0eC0+YXVk aW9fYnVmZmVyX3NpemUpIHsKPiAtICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsK PiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0JVRkZFUl9UT09fU01BTEw7Cj4gKyAg ICAgICAgICAgIHN0YXR1cyA9IGF2X25ld19wYWNrZXQocGt0LCBvdXRwdXRfc2l6ZSk7Cj4gKyAg ICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgICBDRlJlbGVhc2Uo YXVkaW9fZnJhbWUpOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKPiAgICAgICAg ICAgICB9Cj4KPiAtICAgICAgICAgICAgaWYgKGF2X25ld19wYWNrZXQocGt0LCBibG9ja19idWZm ZXJfc2l6ZSkgPCAwKSB7Cj4gLSAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4g LSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwo+ICsgICAgICAgICAgICBpZiAo Y3R4LT5hdWRpb19jb252ZXJ0ZXIpIHsKPiArICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dF9i dWZmZXJfc2l6ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgCj4gbUJ1ZmZlcnNbMF0pICsg KHNpemVvZihBdWRpb0J1ZmZlcikgKiBjdHgtPmF1ZGlvX2J1ZmZlcnMpOwo+ICsgICAgICAgICAg ICAgICAgQXVkaW9CdWZmZXJMaXN0ICppbnB1dF9idWZmZXIgPSAKPiBhdl9tYWxsb2MoaW5wdXRf YnVmZmVyX3NpemUpOwo+ICsKPiArICAgICAgICAgICAgICAgIGlucHV0X2J1ZmZlci0+bU51bWJl ckJ1ZmZlcnMgPSBjdHgtPmF1ZGlvX2J1ZmZlcnM7Cj4gKwo+ICsgICAgICAgICAgICAgICAgZm9y IChpbnQgYyA9IDA7IGMgPCBjdHgtPmF1ZGlvX2J1ZmZlcnM7IGMrKykgewo+ICsgICAgICAgICAg ICAgICAgICAgIGlucHV0X2J1ZmZlci0+bUJ1ZmZlcnNbY10ubU51bWJlckNoYW5uZWxzID0gMTsK PiArCj4gKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gQ01CbG9ja0J1ZmZlckdldERhdGFQb2lu dGVyKGJsb2NrX2J1ZmZlciwgYyAKPiAqIGJ1ZmZlcl9zaXplLCAoc2l6ZV90ICopJmlucHV0X2J1 ZmZlci0+bUJ1ZmZlcnNbY10ubURhdGFCeXRlU2l6ZSwgCj4gTlVMTCwgKHZvaWQgKikmaW5wdXRf YnVmZmVyLT5tQnVmZmVyc1tjXS5tRGF0YSk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIGlm IChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0Vycikgewo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBhdl9mcmVlKGlucHV0X2J1ZmZlcik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHVubG9j a19mcmFtZXMoY3R4KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlPKTsKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKwo+ ICsgICAgICAgICAgICAgICAgQXVkaW9CdWZmZXJMaXN0IG91dHB1dF9idWZmZXIgPSB7Cj4gKyAg ICAgICAgICAgICAgICAgICAubU51bWJlckJ1ZmZlcnMgPSAxLAo+ICsgICAgICAgICAgICAgICAg ICAgLm1CdWZmZXJzWzBdICAgID0gewo+ICsgICAgICAgICAgICAgICAgICAgICAgIC5tTnVtYmVy Q2hhbm5lbHMgPSBjdHgtPmF1ZGlvX2NoYW5uZWxzLAo+ICsgICAgICAgICAgICAgICAgICAgICAg IC5tRGF0YUJ5dGVTaXplICAgPSBwa3QtPnNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg Lm1EYXRhICAgICAgICAgICA9IHBrdC0+ZGF0YQo+ICsgICAgICAgICAgICAgICAgICAgfQo+ICsg ICAgICAgICAgICAgICAgfTsKPiArCj4gKyAgICAgICAgICAgICAgICByZXQgPSAKPiBBdWRpb0Nv bnZlcnRlckNvbnZlcnRDb21wbGV4QnVmZmVyKGN0eC0+YXVkaW9fY29udmVydGVyLCBuYl9zYW1w bGVzLCAKPiBpbnB1dF9idWZmZXIsICZvdXRwdXRfYnVmZmVyKTsKPiArICAgICAgICAgICAgICAg IGF2X2ZyZWUoaW5wdXRfYnVmZmVyKTsKPiArCj4gKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9 IG5vRXJyKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+ICsg ICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gKyAgICAgICAgICAgICAg ICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAgcGt0LT5zaXplID0gb3V0cHV0X2J1ZmZlci5tQnVm ZmVyc1swXS5tRGF0YUJ5dGVTaXplOwo+ICsgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAg ICAgICAgICAgIHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwg MCwgCj4gcGt0LT5zaXplLCBwa3QtPmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgIGlmIChyZXQg IT0ga0NNQmxvY2tCdWZmZXJOb0Vycikgewo+ICsgICAgICAgICAgICAgICAgICAgICB1bmxvY2tf ZnJhbWVzKGN0eCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7 Cj4gKyAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgIH0KPgo+ICAgICAgICAgICAgIENN SXRlbUNvdW50IGNvdW50Owo+IEBAIC0xMTMzLDU0ICsxMjEyLDEwIEBAIHN0YXRpYyBpbnQgYXZm X3JlYWRfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgCj4gQVZQYWNrZXQgKnBrdCkKPiAgICAg ICAgICAgICBwa3QtPnN0cmVhbV9pbmRleCAgPSBjdHgtPmF1ZGlvX3N0cmVhbV9pbmRleDsKPiAg ICAgICAgICAgICBwa3QtPmZsYWdzICAgICAgICB8PSBBVl9QS1RfRkxBR19LRVk7Cj4KPiAtICAg ICAgICAgICAgaWYgKGN0eC0+YXVkaW9fbm9uX2ludGVybGVhdmVkKSB7Cj4gLSAgICAgICAgICAg ICAgICBpbnQgc2FtcGxlLCBjLCBzaGlmdCwgbnVtX3NhbXBsZXM7Cj4gLQo+IC0gICAgICAgICAg ICAgICAgT1NTdGF0dXMgcmV0ID0gCj4gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMoYmxvY2tf YnVmZmVyLCAwLCBwa3QtPnNpemUsIAo+IGN0eC0+YXVkaW9fYnVmZmVyKTsKPiAtICAgICAgICAg ICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0Vycikgewo+IC0gICAgICAgICAgICAg ICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKPiAtICAgICAgICAgICAgICAgICAgICByZXR1cm4g QVZFUlJPUihFSU8pOwo+IC0gICAgICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAgICAg IG51bV9zYW1wbGVzID0gcGt0LT5zaXplIC8gKGN0eC0+YXVkaW9fY2hhbm5lbHMgKiAKPiAoY3R4 LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPj4gMykpOwo+IC0KPiAtICAgICAgICAgICAgICAgIC8v IHRyYW5zZm9ybSBkZWNvZGVkIGZyYW1lIGludG8gb3V0cHV0IGZvcm1hdAo+IC0gICAgICAgICAg ICAgICAgI2RlZmluZSBJTlRFUkxFQVZFX09VVFBVVChicHMpICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBpbnQjI2JwcyMjX3QgKipzcmM7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgIGludCMjYnBzIyNfdCAqZGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgc3JjID0gYXZf bWFsbG9jKGN0eC0+YXVkaW9fY2hhbm5lbHMgKiAKPiBzaXplb2YoaW50IyNicHMjI190KikpOyAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBpZiAoIXNyYykgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgZm9yIChjID0g MDsgYyA8IGN0eC0+YXVkaW9fY2hhbm5lbHM7IGMrKykgeyAgICAgICAKPiAgICAgICAgICAgICAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgc3JjW2NdID0gKChpbnQjI2JwcyMjX3Qq KWN0eC0+YXVkaW9fYnVmZmVyKSArIAo+IGMgKiBudW1fc2FtcGxlczsgXAo+IC0gICAgICAgICAg ICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgZGVzdCAgPSAo aW50IyNicHMjI190Kilwa3QtPmRhdGE7ICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IGJwcyAtIGN0eC0+YXVkaW9fYml0 c19wZXJfc2FtcGxlOyAgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgIGZvciAoc2FtcGxlID0gMDsgc2FtcGxlIDwgbnVtX3NhbXBsZXM7IHNhbXBsZSsr KSAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo YyA9IDA7IGMgPCBjdHgtPmF1ZGlvX2NoYW5uZWxzOyBjKyspICAgICAKPiAgICAgICAgICAgICAg ICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0KysgPSBzcmNbY11bc2Ft cGxlXSA8PCBzaGlmdDsgICAgICAgIAo+ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgIGF2X2ZyZWVwKCZzcmMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCj4gICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICB9Cj4gLQo+IC0gICAg ICAgICAgICAgICAgaWYgKGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlIDw9IDE2KSB7Cj4gLSAg ICAgICAgICAgICAgICAgICAgSU5URVJMRUFWRV9PVVRQVVQoMTYpCj4gLSAgICAgICAgICAgICAg ICB9IGVsc2Ugewo+IC0gICAgICAgICAgICAgICAgICAgIElOVEVSTEVBVkVfT1VUUFVUKDMyKQo+ IC0gICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICB9IGVsc2Ugewo+IC0gICAgICAgICAg ICAgICAgT1NTdGF0dXMgcmV0ID0gCj4gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMoYmxvY2tf YnVmZmVyLCAwLCBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7Cj4gLSAgICAgICAgICAgICAgICBpZiAo cmV0ICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKPiAtICAgICAgICAgICAgICAgICAgICB1bmxv Y2tfZnJhbWVzKGN0eCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlP KTsKPiAtICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0KPiAgICAgICAgICAg ICBDRlJlbGVhc2UoY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lKTsKPiAgICAgICAgICAgICBjdHgt PmN1cnJlbnRfYXVkaW9fZnJhbWUgPSBuaWw7Cj4gKwo+ICsgICAgICAgICAgICB1bmxvY2tfZnJh bWVzKGN0eCk7Cj4gICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgIHBrdC0+ZGF0YSA9IE5V TEw7Cj4gICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+IC0tIAo+IDIuMzIuMCAoQXBw bGUgR2l0LTEzMikKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRw czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w ZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=