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 67E8440F48 for ; Fri, 13 May 2022 07:22:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D454F68B42A; Fri, 13 May 2022 10:22:49 +0300 (EEST) Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3DC0368B34C for ; Fri, 13 May 2022 10:22:42 +0300 (EEST) Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4L00Tq1Ywnz9sJ5 for ; Fri, 13 May 2022 09:22:39 +0200 (CEST) Message-ID: <1f008236-de12-2a25-38f8-8d28670bc95b@gyani.pro> Date: Fri, 13 May 2022 12:52:37 +0530 MIME-Version: 1.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220512162328.3648920-1-vigneshv@google.com> From: Gyan Doshi In-Reply-To: <20220512162328.3648920-1-vigneshv@google.com> X-Rspamd-Queue-Id: 4L00Tq1Ywnz9sJ5 Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing 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-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: CgpPbiAyMDIyLTA1LTEyIDA5OjUzIHBtLCBWaWduZXNoIFZlbmthdGFzdWJyYW1hbmlhbiB3cm90 ZToKPiBBZGQgYW4gQVZJRiBtdXhlciBieSByZS11c2luZyB0aGUgZXhpc3RpbmcgdGhlIG1vdi9t cDQgbXV4ZXIuCgpCdW1wZWQgbGF2ZiBtaW5vciBhbmQgcHVzaGVkIHNldCBhc8KgwqDCoCBhYjA1 ZTlhN2YyLi4uODQyNDFlNjNjZgoKUmVnYXJkcywKR3lhbgoKCj4KPiBBVklGIFNwZWNpZmljYXRp b246IGh0dHBzOi8vYW9tZWRpYWNvZGVjLmdpdGh1Yi5pby9hdjEtYXZpZgo+Cj4gU2FtcGxlIHVz YWdlIGZvciBzdGlsbCBpbWFnZToKPiBmZm1wZWcgLWkgaW1hZ2UucG5nIC1jOnYgbGliYW9tLWF2 MSAtc3RpbGwtcGljdHVyZSAxIGltYWdlLmF2aWYKPgo+IFNhbXBsZSB1c2FnZSBmb3IgYW5pbWF0 ZWQgQVZJRiBpbWFnZToKPiBmZm1wZWcgLWkgdmlkZW8ubXA0IGFuaW1hdGVkLmF2aWYKPgo+IFdl IGNhbiByZS11c2UgYW55IG9mIHRoZSBBVjEgZW5jb2Rpbmcgb3B0aW9ucyB0aGF0IHdpbGwgbWFr ZQo+IHNlbnNlIGZvciBpbWFnZSBlbmNvZGluZyAobGlrZSBiaXRyYXRlLCB0aWxlcywgZW5jb2Rp bmcgc3BlZWQsCj4gZXRjKS4KPgo+IFRoZSBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhpcyBtdXhlciBo YXMgYmVlbiB2ZXJpZmllZCB0byBiZSB2YWxpZAo+IEFWSUYgZmlsZXMgYnkgdGhlIGZvbGxvd2lu ZzoKPiAxKSBEaXNwbGF5cyBvbiBDaHJvbWUgKGJvdGggc3RpbGwgYW5kIGFuaW1hdGVkIGltYWdl cykuCj4gMikgRGlzcGxheXMgb24gRmlyZWZveCAob25seSBzdGlsbCBpbWFnZXMsIGZpcmVmb3gg ZG9lcyBub3Qgc3VwcG9ydAo+ICAgICBhbmltYXRlZCBBVklGIHlldCkuCj4gMykgVmVyaWZpZWQg dG8gYmUgdmFsaWQgYnkgQ29tcGxpYW5jZSBXYXJkZW46Cj4gICAgIGh0dHBzOi8vZ2l0aHViLmNv bS9ncGFjL0NvbXBsaWFuY2VXYXJkZW4KPgo+IEZpeGVzIHRoZSBlbmNvZGVyL211eGVyIHBhcnQg b2YgVHJhYyBUaWNrZXQgIzc2MjEKPgo+IFNpZ25lZC1vZmYtYnk6IFZpZ25lc2ggVmVua2F0YXN1 YnJhbWFuaWFuIDx2aWduZXNodkBnb29nbGUuY29tPgo+IC0tLQo+ICAgY29uZmlndXJlICAgICAg ICAgICAgICAgIHwgICAxICsKPiAgIGxpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyB8ICAgMSArCj4g ICBsaWJhdmZvcm1hdC9tb3ZlbmMuYyAgICAgfCAzNDEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCj4gICBsaWJhdmZvcm1hdC9tb3ZlbmMuaCAgICAgfCAgIDUgKwo+ICAg NCBmaWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4gaW5kZXggMTk2ODczYzRhYS4uMjk5 MmY5NzYwZSAxMDA3NTUKPiAtLS0gYS9jb25maWd1cmUKPiArKysgYi9jb25maWd1cmUKPiBAQCAt MzQwNCw2ICszNDA0LDcgQEAgYXNmX3N0cmVhbV9tdXhlcl9zZWxlY3Q9ImFzZl9tdXhlciIKPiAg IGF2MV9kZW11eGVyX3NlbGVjdD0iYXYxX2ZyYW1lX21lcmdlX2JzZiBhdjFfcGFyc2VyIgo+ICAg YXZpX2RlbXV4ZXJfc2VsZWN0PSJyaWZmZGVjIGV4aWYiCj4gICBhdmlfbXV4ZXJfc2VsZWN0PSJy aWZmZW5jIgo+ICthdmlmX211eGVyX3NlbGVjdD0ibW92X211eGVyIgo+ICAgY2FmX2RlbXV4ZXJf c2VsZWN0PSJpc29fbWVkaWEiCj4gICBjYWZfbXV4ZXJfc2VsZWN0PSJpc29fbWVkaWEiCj4gICBk YXNoX211eGVyX3NlbGVjdD0ibXA0X211eGVyIgo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9h bGxmb3JtYXRzLmMgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKPiBpbmRleCA2Mzg3NmM0Njhm Li4xODAyNTM2NjMzIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwo+ICsr KyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwo+IEBAIC04MSw2ICs4MSw3IEBAIGV4dGVybiBj b25zdCBBVk91dHB1dEZvcm1hdCBmZl9hdV9tdXhlcjsKPiAgIGV4dGVybiBjb25zdCBBVklucHV0 Rm9ybWF0ICBmZl9hdjFfZGVtdXhlcjsKPiAgIGV4dGVybiBjb25zdCBBVklucHV0Rm9ybWF0ICBm Zl9hdmlfZGVtdXhlcjsKPiAgIGV4dGVybiBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9hdmlfbXV4 ZXI7Cj4gK2V4dGVybiBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9hdmlmX211eGVyOwo+ICAgZXh0 ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2F2aXN5bnRoX2RlbXV4ZXI7Cj4gICBleHRlcm4g Y29uc3QgQVZPdXRwdXRGb3JtYXQgZmZfYXZtMl9tdXhlcjsKPiAgIGV4dGVybiBjb25zdCBBVklu cHV0Rm9ybWF0ICBmZl9hdnJfZGVtdXhlcjsKPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92 ZW5jLmMgYi9saWJhdmZvcm1hdC9tb3ZlbmMuYwo+IGluZGV4IDI3MWRiOTliNDYuLmEwN2MwYWUy YjQgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvbW92ZW5jLmMKPiArKysgYi9saWJhdmZvcm1h dC9tb3ZlbmMuYwo+IEBAIC0xMzM1LDcgKzEzMzUsNyBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV9h djFjX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFjaykKPiAgIAo+ICAgICAgIGF2 aW9fd2IzMihwYiwgMCk7Cj4gICAgICAgZmZpb193Zm91cmNjKHBiLCAiYXYxQyIpOwo+IC0gICAg ZmZfaXNvbV93cml0ZV9hdjFjKHBiLCB0cmFjay0+dm9zX2RhdGEsIHRyYWNrLT52b3NfbGVuLCAx KTsKPiArICAgIGZmX2lzb21fd3JpdGVfYXYxYyhwYiwgdHJhY2stPnZvc19kYXRhLCB0cmFjay0+ dm9zX2xlbiwgdHJhY2stPm1vZGUgIT0gTU9ERV9BVklGKTsKPiAgICAgICByZXR1cm4gdXBkYXRl X3NpemUocGIsIHBvcyk7Cj4gICB9Cj4gICAKPiBAQCAtMjAzNywxMiArMjAzNywxMyBAQCBzdGF0 aWMgaW50IG1vdl93cml0ZV9jb2xyX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFj aywgaW50IHByZWZlcl9pY2MpCj4gICAgICAgICAgIH0KPiAgICAgICB9Cj4gICAKPiAtICAgIC8q IFdlIHNob3VsZCBvbmx5IGV2ZXIgYmUgY2FsbGVkIGJ5IE1PViBvciBNUDQuICovCj4gLSAgICBh dl9hc3NlcnQwKHRyYWNrLT5tb2RlID09IE1PREVfTU9WIHx8IHRyYWNrLT5tb2RlID09IE1PREVf TVA0KTsKPiArICAgIC8qIFdlIHNob3VsZCBvbmx5IGV2ZXIgYmUgY2FsbGVkIGZvciBNT1YsIE1Q NCBhbmQgQVZJRi4gKi8KPiArICAgIGF2X2Fzc2VydDAodHJhY2stPm1vZGUgPT0gTU9ERV9NT1Yg fHwgdHJhY2stPm1vZGUgPT0gTU9ERV9NUDQgfHwKPiArICAgICAgICAgICAgICAgdHJhY2stPm1v ZGUgPT0gTU9ERV9BVklGKTsKPiAgIAo+ICAgICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUg Ki8KPiAgICAgICBmZmlvX3dmb3VyY2MocGIsICJjb2xyIik7Cj4gLSAgICBpZiAodHJhY2stPm1v ZGUgPT0gTU9ERV9NUDQpCj4gKyAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9NUDQgfHwgdHJh Y2stPm1vZGUgPT0gTU9ERV9BVklGKQo+ICAgICAgICAgICBmZmlvX3dmb3VyY2MocGIsICJuY2x4 Iik7Cj4gICAgICAgZWxzZQo+ICAgICAgICAgICBmZmlvX3dmb3VyY2MocGIsICJuY2xjIik7Cj4g QEAgLTIwNTIsNyArMjA1Myw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX2NvbHJfdGFnKEFWSU9D b250ZXh0ICpwYiwgTU9WVHJhY2sgKnRyYWNrLCBpbnQgcHJlZmVyX2ljYykKPiAgICAgICBhdmlv X3diMTYocGIsIHRyYWNrLT5wYXItPmNvbG9yX3ByaW1hcmllcyk7Cj4gICAgICAgYXZpb193YjE2 KHBiLCB0cmFjay0+cGFyLT5jb2xvcl90cmMpOwo+ICAgICAgIGF2aW9fd2IxNihwYiwgdHJhY2st PnBhci0+Y29sb3Jfc3BhY2UpOwo+IC0gICAgaWYgKHRyYWNrLT5tb2RlID09IE1PREVfTVA0KSB7 Cj4gKyAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9NUDQgfHwgdHJhY2stPm1vZGUgPT0gTU9E RV9BVklGKSB7Cj4gICAgICAgICAgIGludCBmdWxsX3JhbmdlID0gdHJhY2stPnBhci0+Y29sb3Jf cmFuZ2UgPT0gQVZDT0xfUkFOR0VfSlBFRzsKPiAgICAgICAgICAgYXZpb193OChwYiwgZnVsbF9y YW5nZSA8PCA3KTsKPiAgICAgICB9Cj4gQEAgLTIxMTgsNyArMjExOSw3IEBAIHN0YXRpYyB2b2lk IGZpbmRfY29tcHJlc3NvcihjaGFyICogY29tcHJlc3Nvcl9uYW1lLCBpbnQgbGVuLCBNT1ZUcmFj ayAqdHJhY2spCj4gICAgICAgICAgICAgICAgICAgICB8fCAodHJhY2stPnBhci0+d2lkdGggPT0g MTQ0MCAmJiB0cmFjay0+cGFyLT5oZWlnaHQgPT0gMTA4MCkKPiAgICAgICAgICAgICAgICAgICAg IHx8ICh0cmFjay0+cGFyLT53aWR0aCA9PSAxOTIwICYmIHRyYWNrLT5wYXItPmhlaWdodCA9PSAx MDgwKTsKPiAgIAo+IC0gICAgaWYgKHRyYWNrLT5tb2RlID09IE1PREVfTU9WICYmCj4gKyAgICBp ZiAoKHRyYWNrLT5tb2RlID09IE1PREVfQVZJRiB8fCB0cmFjay0+bW9kZSA9PSBNT0RFX01PVikg JiYKPiAgICAgICAgICAgKGVuY29kZXIgPSBhdl9kaWN0X2dldCh0cmFjay0+c3QtPm1ldGFkYXRh LCAiZW5jb2RlciIsIE5VTEwsIDApKSkgewo+ICAgICAgICAgICBhdl9zdHJsY3B5KGNvbXByZXNz b3JfbmFtZSwgZW5jb2Rlci0+dmFsdWUsIDMyKTsKPiAgICAgICB9IGVsc2UgaWYgKHRyYWNrLT5w YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gJiYgeGRjYW1fcmVzKSB7Cj4g QEAgLTIxMzksNiArMjE0MCwyNSBAQCBzdGF0aWMgdm9pZCBmaW5kX2NvbXByZXNzb3IoY2hhciAq IGNvbXByZXNzb3JfbmFtZSwgaW50IGxlbiwgTU9WVHJhY2sgKnRyYWNrKQo+ICAgICAgIH0KPiAg IH0KPiAgIAo+ICtzdGF0aWMgaW50IG1vdl93cml0ZV9jY3N0X3RhZyhBVklPQ29udGV4dCAqcGIp Cj4gK3sKPiArICAgIGludDY0X3QgcG9zID0gYXZpb190ZWxsKHBiKTsKPiArICAgIC8vIFdyaXRl IHNhbmUgZGVmYXVsdHM6Cj4gKyAgICAvLyBhbGxfcmVmX3BpY3NfaW50cmEgPSAwIDogYWxsIHNh bXBsZXMgY2FuIHVzZSBhbnkgdHlwZSBvZiByZWZlcmVuY2UuCj4gKyAgICAvLyBpbnRyYV9wcmVk X3VzZWQgPSAxIDogaW50cmEgcHJlZGljdGlvbiBtYXkgb3IgbWF5IG5vdCBiZSB1c2VkLgo+ICsg ICAgLy8gbWF4X3JlZl9wZXJfcGljID0gMTUgOiByZXNlcnZlZCB2YWx1ZSB0byBpbmRpY2F0ZSB0 aGF0IGFueSBudW1iZXIgb2YKPiArICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJl bmNlIGltYWdlcyBjYW4gYmUgdXNlZC4KPiArICAgIHVpbnQ4X3QgY2NzdFZhbHVlID0gKDAgPDwg NykgfCAgLyogYWxsX3JlZl9waWNzX2ludHJhICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICgxIDw8IDYpIHwgIC8qIGludHJhX3ByZWRfdXNlZCAqLwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAoMTUgPDwgMik7ICAvKiBtYXhfcmVmX3Blcl9waWMgKi8KPiArICAgIGF2aW9fd2IzMihw YiwgMCk7IC8qIHNpemUgKi8KPiArICAgIGZmaW9fd2ZvdXJjYyhwYiwgImNjc3QiKTsKPiArICAg IGF2aW9fd2IzMihwYiwgMCk7IC8qIFZlcnNpb24gJiBmbGFncyAqLwo+ICsgICAgYXZpb193OChw YiwgY2NzdFZhbHVlKTsKPiArICAgIGF2aW9fd2IyNChwYiwgMCk7ICAvKiByZXNlcnZlZCAqLwo+ ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGlu dCBtb3Zfd3JpdGVfdmlkZW9fdGFnKEFWRm9ybWF0Q29udGV4dCAqcywgQVZJT0NvbnRleHQgKnBi LCBNT1ZNdXhDb250ZXh0ICptb3YsIE1PVlRyYWNrICp0cmFjaykKPiAgIHsKPiAgICAgICBpbnQg cmV0ID0gQVZFUlJPUl9CVUc7Cj4gQEAgLTIyNzIsNyArMjI5Miw3IEBAIHN0YXRpYyBpbnQgbW92 X3dyaXRlX3ZpZGVvX3RhZyhBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgTU9W TXV4Q29udGV4Cj4gICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgIGF2X2xvZyhtb3YtPmZj LCBBVl9MT0dfV0FSTklORywgIk5vdCB3cml0aW5nICdnYW1hJyBhdG9tLiBGb3JtYXQgaXMgbm90 IE1PVi5cbiIpOwo+ICAgICAgIH0KPiAtICAgIGlmICh0cmFjay0+bW9kZSA9PSBNT0RFX01PViB8 fCB0cmFjay0+bW9kZSA9PSBNT0RFX01QNCkgewo+ICsgICAgaWYgKHRyYWNrLT5tb2RlID09IE1P REVfTU9WIHx8IHRyYWNrLT5tb2RlID09IE1PREVfTVA0IHx8IHRyYWNrLT5tb2RlID09IE1PREVf QVZJRikgewo+ICAgICAgICAgICBpbnQgaGFzX2NvbG9yX2luZm8gPSB0cmFjay0+cGFyLT5jb2xv cl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEICYmCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRyYWNrLT5wYXItPmNvbG9yX3RyYyAhPSBBVkNPTF9UUkNfVU5TUEVD SUZJRUQgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPnBhci0+Y29s b3Jfc3BhY2UgIT0gQVZDT0xfU1BDX1VOU1BFQ0lGSUVEOwo+IEBAIC0yMzI0LDYgKzIzNDQsOSBA QCBzdGF0aWMgaW50IG1vdl93cml0ZV92aWRlb190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklP Q29udGV4dCAqcGIsIE1PVk11eENvbnRleAo+ICAgICAgIGlmIChhdmlkKQo+ICAgICAgICAgICBh dmlvX3diMzIocGIsIDApOwo+ICAgCj4gKyAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9BVklG KQo+ICsgICAgICAgIG1vdl93cml0ZV9jY3N0X3RhZyhwYik7Cj4gKwo+ICAgICAgIHJldHVybiB1 cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiAgIH0KPiAgIAo+IEBAIC0yODI2LDggKzI4NDksMTMgQEAg c3RhdGljIGludCBtb3Zfd3JpdGVfaGRscl90YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBBVklPQ29u dGV4dCAqcGIsIE1PVlRyYWNrICp0cmEKPiAgICAgICBpZiAodHJhY2spIHsKPiAgICAgICAgICAg aGRsciA9ICh0cmFjay0+bW9kZSA9PSBNT0RFX01PVikgPyAibWhsciIgOiAiXDBcMFwwXDAiOwo+ ICAgICAgICAgICBpZiAodHJhY2stPnBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklE RU8pIHsKPiAtICAgICAgICAgICAgaGRscl90eXBlID0gInZpZGUiOwo+IC0gICAgICAgICAgICBk ZXNjciAgICAgPSAiVmlkZW9IYW5kbGVyIjsKPiArICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2Rl ID09IE1PREVfQVZJRikgewo+ICsgICAgICAgICAgICAgICAgaGRscl90eXBlID0gInBpY3QiOwo+ ICsgICAgICAgICAgICAgICAgZGVzY3IgICAgID0gIlBpY3R1cmVIYW5kbGVyIjsKPiArICAgICAg ICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIGhkbHJfdHlwZSA9ICJ2aWRlIjsKPiAr ICAgICAgICAgICAgICAgIGRlc2NyICAgICA9ICJWaWRlb0hhbmRsZXIiOwo+ICsgICAgICAgICAg ICB9Cj4gICAgICAgICAgIH0gZWxzZSBpZiAodHJhY2stPnBhci0+Y29kZWNfdHlwZSA9PSBBVk1F RElBX1RZUEVfQVVESU8pIHsKPiAgICAgICAgICAgICAgIGhkbHJfdHlwZSA9ICJzb3VuIjsKPiAg ICAgICAgICAgICAgIGRlc2NyICAgICA9ICJTb3VuZEhhbmRsZXIiOwo+IEBAIC0yODkyLDYgKzI5 MjAsMTI4IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX2hkbHJfdGFnKEFWRm9ybWF0Q29udGV4dCAq cywgQVZJT0NvbnRleHQgKnBiLCBNT1ZUcmFjayAqdHJhCj4gICAgICAgcmV0dXJuIHVwZGF0ZV9z aXplKHBiLCBwb3MpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQgbW92X3dyaXRlX3BpdG1fdGFn KEFWSU9Db250ZXh0ICpwYiwgaW50IGl0ZW1faWQpCj4gK3sKPiArICAgIGludDY0X3QgcG9zID0g YXZpb190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiArICAg IGZmaW9fd2ZvdXJjYyhwYiwgInBpdG0iKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIFZl cnNpb24gJiBmbGFncyAqLwo+ICsgICAgYXZpb193YjE2KHBiLCBpdGVtX2lkKTsgLyogaXRlbV9p ZCAqLwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG1vdl93cml0ZV9pbG9jX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQg Km1vdiwgQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9f dGVsbChwYik7Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gKyAgICBmZmlv X3dmb3VyY2MocGIsICJpbG9jIik7Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9u ICYgZmxhZ3MgKi8KPiArICAgIGF2aW9fdzgocGIsICg0IDw8IDQpICsgNCk7IC8qIG9mZnNldF9z aXplKDQpIGFuZCBsZW5ndGhfc2l6ZSg0KSAqLwo+ICsgICAgYXZpb193OChwYiwgMCk7IC8qIGJh c2Vfb2Zmc2V0X3NpemUoNCkgYW5kIHJlc2VydmVkKDQpICovCj4gKyAgICBhdmlvX3diMTYocGIs IDEpOyAvKiBpdGVtX2NvdW50ICovCj4gKwo+ICsgICAgYXZpb193YjE2KHBiLCAxKTsgLyogaXRl bV9pZCAqLwo+ICsgICAgYXZpb193YjE2KHBiLCAwKTsgLyogZGF0YV9yZWZlcmVuY2VfaW5kZXgg Ki8KPiArICAgIGF2aW9fd2IxNihwYiwgMSk7IC8qIGV4dGVudF9jb3VudCAqLwo+ICsgICAgbW92 LT5hdmlmX2V4dGVudF9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsgICAgYXZpb193YjMyKHBiLCAw KTsgLyogZXh0ZW50X29mZnNldCAod3JpdHRlbiBsYXRlcikgKi8KPiArICAgIC8vIEZvciBhbmlt YXRlZCBBVklGLCB3ZSBzaW1wbHkgd3JpdGUgdGhlIGZpcnN0IHBhY2tldCdzIHNpemUuCj4gKyAg ICBhdmlvX3diMzIocGIsIG1vdi0+YXZpZl9leHRlbnRfbGVuZ3RoKTsgLyogZXh0ZW50X2xlbmd0 aCAqLwo+ICsKPiArICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBtb3Zfd3JpdGVfaWluZl90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250 ZXh0ICptb3YsIEFWRm9ybWF0Q29udGV4dCAqcykKPiArewo+ICsgICAgaW50NjRfdCBpbmZlX3Bv czsKPiArICAgIGludDY0X3QgaWluZl9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsgICAgYXZpb193 YjMyKHBiLCAwKTsgLyogc2l6ZSAqLwo+ICsgICAgZmZpb193Zm91cmNjKHBiLCAiaWluZiIpOwo+ ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyogVmVyc2lvbiAmIGZsYWdzICovCj4gKyAgICBhdmlv X3diMTYocGIsIDEpOyAvKiBlbnRyeV9jb3VudCAqLwo+ICsKPiArICAgIGluZmVfcG9zID0gYXZp b190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUgKi8KPiArICAgIGZm aW9fd2ZvdXJjYyhwYiwgImluZmUiKTsKPiArICAgIGF2aW9fdzgocGIsIDB4Mik7IC8qIFZlcnNp b24gKi8KPiArICAgIGF2aW9fd2IyNChwYiwgMCk7IC8qIGZsYWdzICovCj4gKyAgICBhdmlvX3di MTYocGIsIDEpOyAvKiBpdGVtX2lkICovCj4gKyAgICBhdmlvX3diMTYocGIsIDApOyAvKiBpdGVt X3Byb3RlY3Rpb25faW5kZXggKi8KPiArICAgIGF2aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7IC8q IGl0ZW1fdHlwZSAqLwo+ICsgICAgYXZpb193cml0ZShwYiwgIkNvbG9yXDAiLCA2KTsgLyogaXRl bV9uYW1lICovCj4gKyAgICB1cGRhdGVfc2l6ZShwYiwgaW5mZV9wb3MpOwo+ICsKPiArICAgIHJl dHVybiB1cGRhdGVfc2l6ZShwYiwgaWluZl9wb3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1v dl93cml0ZV9pc3BlX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwgQVZG b3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7 Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gKyAgICBmZmlvX3dmb3VyY2Mo cGIsICJpc3BlIik7Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBWZXJzaW9uICYgZmxhZ3Mg Ki8KPiArICAgIGF2aW9fd2IzMihwYiwgcy0+c3RyZWFtc1swXS0+Y29kZWNwYXItPndpZHRoKTsg LyogaW1hZ2Vfd2lkdGggKi8KPiArICAgIGF2aW9fd2IzMihwYiwgcy0+c3RyZWFtc1swXS0+Y29k ZWNwYXItPmhlaWdodCk7IC8qIGltYWdlX2hlaWdodCAqLwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9z aXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1vdl93cml0ZV9waXhpX3RhZyhB VklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwgQVZGb3JtYXRDb250ZXh0ICpzKQo+ ICt7Cj4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7Cj4gKyAgICBjb25zdCBBVlBp eEZtdERlc2NyaXB0b3IgKnBpeGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHMtPnN0cmVhbXNb MF0tPmNvZGVjcGFyLT5mb3JtYXQpOwo+ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyogc2l6ZSAq Lwo+ICsgICAgZmZpb193Zm91cmNjKHBiLCAicGl4aSIpOwo+ICsgICAgYXZpb193YjMyKHBiLCAw KTsgLyogVmVyc2lvbiAmIGZsYWdzICovCj4gKyAgICBhdmlvX3c4KHBiLCBwaXhkZXNjLT5uYl9j b21wb25lbnRzKTsgLyogbnVtX2NoYW5uZWxzICovCj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IHBpeGRlc2MtPm5iX2NvbXBvbmVudHM7ICsraSkgewo+ICsgICAgICBhdmlvX3c4KHBiLCBwaXhk ZXNjLT5jb21wW2ldLmRlcHRoKTsgLyogYml0c19wZXJfY2hhbm5lbCAqLwo+ICsgICAgfQo+ICsg ICAgcmV0dXJuIHVwZGF0ZV9zaXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1v dl93cml0ZV9pcGNvX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwgQVZG b3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBpbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7 Cj4gKyAgICBhdmlvX3diMzIocGIsIDApOyAvKiBzaXplICovCj4gKyAgICBmZmlvX3dmb3VyY2Mo cGIsICJpcGNvIik7Cj4gKyAgICBtb3Zfd3JpdGVfaXNwZV90YWcocGIsIG1vdiwgcyk7Cj4gKyAg ICBtb3Zfd3JpdGVfcGl4aV90YWcocGIsIG1vdiwgcyk7Cj4gKyAgICBtb3Zfd3JpdGVfYXYxY190 YWcocGIsICZtb3YtPnRyYWNrc1swXSk7Cj4gKyAgICBtb3Zfd3JpdGVfY29scl90YWcocGIsICZt b3YtPnRyYWNrc1swXSwgMCk7Cj4gKyAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgbW92X3dyaXRlX2lwbWFfdGFnKEFWSU9Db250ZXh0ICpwYiwg TU9WTXV4Q29udGV4dCAqbW92LCBBVkZvcm1hdENvbnRleHQgKnMpCj4gK3sKPiArICAgIGludDY0 X3QgcG9zID0gYXZpb190ZWxsKHBiKTsKPiArICAgIGF2aW9fd2IzMihwYiwgMCk7IC8qIHNpemUg Ki8KPiArICAgIGZmaW9fd2ZvdXJjYyhwYiwgImlwbWEiKTsKPiArICAgIGF2aW9fd2IzMihwYiwg MCk7IC8qIFZlcnNpb24gJiBmbGFncyAqLwo+ICsgICAgYXZpb193YjMyKHBiLCAxKTsgLyogZW50 cnlfY291bnQgKi8KPiArICAgIGF2aW9fd2IxNihwYiwgMSk7IC8qIGl0ZW1fSUQgKi8KPiArICAg IGF2aW9fdzgocGIsIDQpOyAvKiBhc3NvY2lhdGlvbl9jb3VudCAqLwo+ICsKPiArICAgIC8vIGlz cGUgYXNzb2NpYXRpb24uCj4gKyAgICBhdmlvX3c4KHBiLCAxKTsgLyogZXNzZW50aWFsIGFuZCBw cm9wZXJ0eV9pbmRleCAqLwo+ICsgICAgLy8gcGl4aSBhc3NvY2lhdGlvbi4KPiArICAgIGF2aW9f dzgocGIsIDIpOyAvKiBlc3NlbnRpYWwgYW5kIHByb3BlcnR5X2luZGV4ICovCj4gKyAgICAvLyBh djFDIGFzc29jaWF0aW9uLgo+ICsgICAgYXZpb193OChwYiwgMHg4MCB8IDMpOyAvKiBlc3NlbnRp YWwgYW5kIHByb3BlcnR5X2luZGV4ICovCj4gKyAgICAvLyBjb2xyIGFzc29jaWF0aW9uLgo+ICsg ICAgYXZpb193OChwYiwgNCk7IC8qIGVzc2VudGlhbCBhbmQgcHJvcGVydHlfaW5kZXggKi8KPiAr ICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBt b3Zfd3JpdGVfaXBycF90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsIEFW Rm9ybWF0Q29udGV4dCAqcykKPiArewo+ICsgICAgaW50NjRfdCBwb3MgPSBhdmlvX3RlbGwocGIp Owo+ICsgICAgYXZpb193YjMyKHBiLCAwKTsgLyogc2l6ZSAqLwo+ICsgICAgZmZpb193Zm91cmNj KHBiLCAiaXBycCIpOwo+ICsgICAgbW92X3dyaXRlX2lwY29fdGFnKHBiLCBtb3YsIHMpOwo+ICsg ICAgbW92X3dyaXRlX2lwbWFfdGFnKHBiLCBtb3YsIHMpOwo+ICsgICAgcmV0dXJuIHVwZGF0ZV9z aXplKHBiLCBwb3MpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBtb3Zfd3JpdGVfaG1oZF90YWco QVZJT0NvbnRleHQgKnBiKQo+ICAgewo+ICAgICAgIC8qIFRoaXMgYXRvbSBtdXN0IGJlIHByZXNl bnQsIGJ1dCBsZWF2aW5nIHRoZSB2YWx1ZXMgYXQgemVybwo+IEBAIC0zMTM3LDcgKzMyODcsNyBA QCBzdGF0aWMgaW50IG1vdl93cml0ZV90a2hkX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENv bnRleHQgKm1vdiwKPiAgICAgICBpZiAoc3QgJiYgKHRyYWNrLT5wYXItPmNvZGVjX3R5cGUgPT0g QVZNRURJQV9UWVBFX1ZJREVPIHx8Cj4gICAgICAgICAgICAgICAgICB0cmFjay0+cGFyLT5jb2Rl Y190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkpIHsKPiAgICAgICAgICAgaW50NjRfdCB0 cmFja193aWR0aF8xNjE2Owo+IC0gICAgICAgIGlmICh0cmFjay0+bW9kZSA9PSBNT0RFX01PVikg ewo+ICsgICAgICAgIGlmICh0cmFjay0+bW9kZSA9PSBNT0RFX01PViB8fCB0cmFjay0+bW9kZSA9 PSBNT0RFX0FWSUYpIHsKPiAgICAgICAgICAgICAgIHRyYWNrX3dpZHRoXzE2MTYgPSB0cmFjay0+ cGFyLT53aWR0aCAqIDB4MTAwMDBVTEw7Cj4gICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAg ICAgICB0cmFja193aWR0aF8xNjE2ID0gYXZfcmVzY2FsZShzdC0+c2FtcGxlX2FzcGVjdF9yYXRp by5udW0sCj4gQEAgLTM1MzYsNiArMzY4Niw3IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX212aGRf dGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WTXV4Q29udGV4dCAqbW92KQo+ICAgICAgIGludCBtYXhf dHJhY2tfaWQgPSAxLCBpOwo+ICAgICAgIGludDY0X3QgbWF4X3RyYWNrX2xlbiA9IDA7Cj4gICAg ICAgaW50IHZlcnNpb247Cj4gKyAgICBpbnQgdGltZXNjYWxlOwo+ICAgCj4gICAgICAgZm9yIChp ID0gMDsgaSA8IG1vdi0+bmJfc3RyZWFtczsgaSsrKSB7Cj4gICAgICAgICAgIGlmIChtb3YtPnRy YWNrc1tpXS5lbnRyeSA+IDAgJiYgbW92LT50cmFja3NbaV0udGltZXNjYWxlKSB7Cj4gQEAgLTM1 NzAsNyArMzcyMSwxMiBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV9tdmhkX3RhZyhBVklPQ29udGV4 dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdikKPiAgICAgICAgICAgYXZpb193YjMyKHBiLCBtb3Yt PnRpbWUpOyAvKiBjcmVhdGlvbiB0aW1lICovCj4gICAgICAgICAgIGF2aW9fd2IzMihwYiwgbW92 LT50aW1lKTsgLyogbW9kaWZpY2F0aW9uIHRpbWUgKi8KPiAgICAgICB9Cj4gLSAgICBhdmlvX3di MzIocGIsIG1vdi0+bW92aWVfdGltZXNjYWxlKTsKPiArCj4gKyAgICB0aW1lc2NhbGUgPSBtb3Yt Pm1vdmllX3RpbWVzY2FsZTsKPiArICAgIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklGICYmICF0 aW1lc2NhbGUpCj4gKyAgICAgICAgdGltZXNjYWxlID0gbW92LT50cmFja3NbMF0udGltZXNjYWxl Owo+ICsKPiArICAgIGF2aW9fd2IzMihwYiwgdGltZXNjYWxlKTsKPiAgICAgICAodmVyc2lvbiA9 PSAxKSA/IGF2aW9fd2I2NChwYiwgbWF4X3RyYWNrX2xlbikgOiBhdmlvX3diMzIocGIsIG1heF90 cmFja19sZW4pOyAvKiBkdXJhdGlvbiBvZiBsb25nZXN0IHRyYWNrICovCj4gICAKPiAgICAgICBh dmlvX3diMzIocGIsIDB4MDAwMTAwMDApOyAvKiByZXNlcnZlZCAocHJlZmVycmVkIHJhdGUpIDEu MCA9IG5vcm1hbCAqLwo+IEBAIC0zOTQ3LDggKzQxMDMsMTUgQEAgc3RhdGljIGludCBtb3Zfd3Jp dGVfbWV0YV90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsCj4gICAgICAg ICAgIG1vdl93cml0ZV9tZHRhX2hkbHJfdGFnKHBiLCBtb3YsIHMpOwo+ICAgICAgICAgICBtb3Zf d3JpdGVfbWR0YV9rZXlzX3RhZyhwYiwgbW92LCBzKTsKPiAgICAgICAgICAgbW92X3dyaXRlX21k dGFfaWxzdF90YWcocGIsIG1vdiwgcyk7Cj4gLSAgICB9Cj4gLSAgICBlbHNlIHsKPiArICAgIH0g ZWxzZSBpZiAobW92LT5tb2RlID09IE1PREVfQVZJRikgewo+ICsgICAgICAgIG1vdl93cml0ZV9o ZGxyX3RhZyhzLCBwYiwgJm1vdi0+dHJhY2tzWzBdKTsKPiArICAgICAgICAvLyBXZSBhbHdheXMg d3JpdGUgdGhlIHByaW1hcnkgaXRlbSBpZCBhcyAxIHNpbmNlIG9ubHkgb25lIHRyYWNrIGlzCj4g KyAgICAgICAgLy8gc3VwcG9ydGVkIGZvciBBVklGLgo+ICsgICAgICAgIG1vdl93cml0ZV9waXRt X3RhZyhwYiwgMSk7Cj4gKyAgICAgICAgbW92X3dyaXRlX2lsb2NfdGFnKHBiLCBtb3YsIHMpOwo+ ICsgICAgICAgIG1vdl93cml0ZV9paW5mX3RhZyhwYiwgbW92LCBzKTsKPiArICAgICAgICBtb3Zf d3JpdGVfaXBycF90YWcocGIsIG1vdiwgcyk7Cj4gKyAgICB9IGVsc2Ugewo+ICAgICAgICAgICAv KiBpVHVuZXMgbWV0YWRhdGEgdGFnICovCj4gICAgICAgICAgIG1vdl93cml0ZV9pdHVuZXNfaGRs cl90YWcocGIsIG1vdiwgcyk7Cj4gICAgICAgICAgIG1vdl93cml0ZV9pbHN0X3RhZyhwYiwgbW92 LCBzKTsKPiBAQCAtNDI3OCwxMCArNDQ0MSwxMSBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV9tb292 X3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwKPiAgICAgICB9Cj4gICAK PiAgICAgICBtb3Zfd3JpdGVfbXZoZF90YWcocGIsIG1vdik7Cj4gLSAgICBpZiAobW92LT5tb2Rl ICE9IE1PREVfTU9WICYmICFtb3YtPmlvZHNfc2tpcCkKPiArICAgIGlmIChtb3YtPm1vZGUgIT0g TU9ERV9NT1YgJiYgbW92LT5tb2RlICE9IE1PREVfQVZJRiAmJiAhbW92LT5pb2RzX3NraXApCj4g ICAgICAgICAgIG1vdl93cml0ZV9pb2RzX3RhZyhwYiwgbW92KTsKPiAgICAgICBmb3IgKGkgPSAw OyBpIDwgbW92LT5uYl9zdHJlYW1zOyBpKyspIHsKPiAtICAgICAgICBpZiAobW92LT50cmFja3Nb aV0uZW50cnkgPiAwIHx8IG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFHTUVOVCkgewo+ICsg ICAgICAgIGlmIChtb3YtPnRyYWNrc1tpXS5lbnRyeSA+IDAgfHwgbW92LT5mbGFncyAmIEZGX01P Vl9GTEFHX0ZSQUdNRU5UIHx8Cj4gKyAgICAgICAgICAgIG1vdi0+bW9kZSA9PSBNT0RFX0FWSUYp IHsKPiAgICAgICAgICAgICAgIGludCByZXQgPSBtb3Zfd3JpdGVfdHJha190YWcocywgcGIsIG1v diwgJihtb3YtPnRyYWNrc1tpXSksIGkgPCBzLT5uYl9zdHJlYW1zID8gcy0+c3RyZWFtc1tpXSA6 IE5VTEwpOwo+ICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiBAQCAtNDI5Miw3ICs0NDU2LDcgQEAgc3RhdGljIGludCBtb3Zfd3JpdGVf bW9vdl90YWcoQVZJT0NvbnRleHQgKnBiLCBNT1ZNdXhDb250ZXh0ICptb3YsCj4gICAKPiAgICAg ICBpZiAobW92LT5tb2RlID09IE1PREVfUFNQKQo+ICAgICAgICAgICBtb3Zfd3JpdGVfdXVpZHVz bXRfdGFnKHBiLCBzKTsKPiAtICAgIGVsc2UKPiArICAgIGVsc2UgaWYgKG1vdi0+bW9kZSAhPSBN T0RFX0FWSUYpCj4gICAgICAgICAgIG1vdl93cml0ZV91ZHRhX3RhZyhwYiwgbW92LCBzKTsKPiAg IAo+ICAgICAgIHJldHVybiB1cGRhdGVfc2l6ZShwYiwgcG9zKTsKPiBAQCAtNTAzOSw2ICs1MjAz LDkgQEAgc3RhdGljIHZvaWQgbW92X3dyaXRlX2Z0eXBfdGFnX2ludGVybmFsKEFWSU9Db250ZXh0 ICpwYiwgQVZGb3JtYXRDb250ZXh0ICpzLAo+ICAgICAgIGVsc2UgaWYgKG1vdi0+bW9kZSA9PSBN T0RFXzNHUCkgewo+ICAgICAgICAgICBmZmlvX3dmb3VyY2MocGIsIGhhc19oMjY0ID8gIjNncDYi ICA6ICIzZ3A0Iik7Cj4gICAgICAgICAgIG1pbm9yID0gICAgIGhhc19oMjY0ID8gICAweDEwMCA6 ICAgMHgyMDA7Cj4gKyAgICB9IGVsc2UgaWYgKG1vdi0+bW9kZSA9PSBNT0RFX0FWSUYpIHsKPiAr ICAgICAgICBmZmlvX3dmb3VyY2MocGIsIG1vdi0+aXNfYW5pbWF0ZWRfYXZpZiA/ICJhdmlzIiA6 ICJhdmlmIik7Cj4gKyAgICAgICAgbWlub3IgPSAwOwo+ICAgICAgIH0gZWxzZSBpZiAobW92LT5t b2RlICYgTU9ERV8zRzIpIHsKPiAgICAgICAgICAgZmZpb193Zm91cmNjKHBiLCBoYXNfaDI2NCA/ ICIzZzJiIiAgOiAiM2cyYSIpOwo+ICAgICAgICAgICBtaW5vciA9ICAgICBoYXNfaDI2NCA/IDB4 MjAwMDAgOiAweDEwMDAwOwo+IEBAIC01MTAyLDYgKzUyNjksMzEgQEAgc3RhdGljIGludCBtb3Zf d3JpdGVfZnR5cF90YWcoQVZJT0NvbnRleHQgKnBiLCBBVkZvcm1hdENvbnRleHQgKnMpCj4gICAg ICAgLy8gY29tcGF0aWJsZSBicmFuZCBhIHNlY29uZCB0aW1lLgo+ICAgICAgIGlmIChtb3YtPm1v ZGUgPT0gTU9ERV9JU00pIHsKPiAgICAgICAgICAgZmZpb193Zm91cmNjKHBiLCAicGlmZiIpOwo+ ICsgICAgfSBlbHNlIGlmIChtb3YtPm1vZGUgPT0gTU9ERV9BVklGKSB7Cj4gKyAgICAgICAgY29u c3QgQVZQaXhGbXREZXNjcmlwdG9yICpwaXhfZm10X2Rlc2MgPQo+ICsgICAgICAgICAgICBhdl9w aXhfZm10X2Rlc2NfZ2V0KHMtPnN0cmVhbXNbMF0tPmNvZGVjcGFyLT5mb3JtYXQpOwo+ICsgICAg ICAgIGNvbnN0IGludCBkZXB0aCA9IHBpeF9mbXRfZGVzYy0+Y29tcFswXS5kZXB0aDsKPiArICAg ICAgICBpZiAobW92LT5pc19hbmltYXRlZF9hdmlmKSB7Cj4gKyAgICAgICAgICAgIC8vIEZvciBh bmltYXRlZCBBVklGLCBtYWpvciBicmFuZCBpcyAiYXZpcyIuIEFkZCAiYXZpZiIgYXMgYQo+ICsg ICAgICAgICAgICAvLyBjb21wYXRpYmxlIGJyYW5kLgo+ICsgICAgICAgICAgICBmZmlvX3dmb3Vy Y2MocGIsICJhdmlmIik7Cj4gKyAgICAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwgIm1zZjEiKTsK PiArICAgICAgICAgICAgZmZpb193Zm91cmNjKHBiLCAiaXNvOCIpOwo+ICsgICAgICAgIH0KPiAr ICAgICAgICBmZmlvX3dmb3VyY2MocGIsICJtaWYxIik7Cj4gKyAgICAgICAgZmZpb193Zm91cmNj KHBiLCAibWlhZiIpOwo+ICsgICAgICAgIGlmIChkZXB0aCA9PSA4IHx8IGRlcHRoID09IDEwKSB7 Cj4gKyAgICAgICAgICAgIC8vIE1BMUIgYW5kIE1BMUEgYnJhbmRzIGFyZSBiYXNlZCBvbiBBVjEg cHJvZmlsZS4gU2hvcnQgaGFuZCBmb3IKPiArICAgICAgICAgICAgLy8gY29tcHV0aW5nIHRoYXQg aXMgYmFzZWQgb24gY2hyb21hIHN1YnNhbXBsaW5nIHR5cGUuIDQyMCBjaHJvbWEKPiArICAgICAg ICAgICAgLy8gc3Vic2FtcGxpbmcgaXMgTUExQi4gIDQ0NCBjaHJvbWEgc3Vic2FtcGxpbmcgaXMg TUExQS4KPiArICAgICAgICAgICAgaWYgKCFwaXhfZm10X2Rlc2MtPmxvZzJfY2hyb21hX3cgJiYg IXBpeF9mbXRfZGVzYy0+bG9nMl9jaHJvbWFfaCkgewo+ICsgICAgICAgICAgICAgICAgLy8gNDQ0 IGNocm9tYSBzdWJzYW1wbGluZy4KPiArICAgICAgICAgICAgICAgIGZmaW9fd2ZvdXJjYyhwYiwg Ik1BMUEiKTsKPiArICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIC8vIDQy MCBjaHJvbWEgc3Vic2FtcGxpbmcuCj4gKyAgICAgICAgICAgICAgICBmZmlvX3dmb3VyY2MocGIs ICJNQTFCIik7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gICAgICAgfSBlbHNlIGlm IChtb3YtPm1vZGUgIT0gTU9ERV9NT1YpIHsKPiAgICAgICAgICAgLy8gV2UgYWRkIHRmZHQgYXRv bXMgd2hlbiBmcmFnbWVudGluZywgc2lnbmFsIHRoaXMgd2l0aCB0aGUgaXNvNiBjb21wYXRpYmxl Cj4gICAgICAgICAgIC8vIGJyYW5kLCBpZiBub3QgYWxyZWFkeSB0aGUgbWFqb3IgYnJhbmQuIFRo aXMgaXMgY29tcGF0aWJsZSB3aXRoIHVzZXJzIHRoYXQKPiBAQCAtNTcwNSw3ICs1ODk3LDcgQEAg aW50IGZmX21vdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0 KQo+ICAgICAgIGlmIChyZXQgPCAwKQo+ICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgCj4gLSAg ICBpZiAobW92LT5mbGFncyAmIEZGX01PVl9GTEFHX0ZSQUdNRU5UKSB7Cj4gKyAgICBpZiAobW92 LT5mbGFncyAmIEZGX01PVl9GTEFHX0ZSQUdNRU5UIHx8IG1vdi0+bW9kZSA9PSBNT0RFX0FWSUYp IHsKPiAgICAgICAgICAgaW50IHJldDsKPiAgICAgICAgICAgaWYgKG1vdi0+bW9vdl93cml0dGVu IHx8IG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19FTVBUWV9NT09WKSB7Cj4gICAgICAgICAgICAg ICBpZiAobW92LT5mcmFnX2ludGVybGVhdmUgJiYgbW92LT5mcmFnbWVudHMgPiAwKSB7Cj4gQEAg LTU4NDYsNyArNjAzOCwxMSBAQCBpbnQgZmZfbW92X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRl eHQgKnMsIEFWUGFja2V0ICpwa3QpCj4gICAgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCByZWZv cm1hdHRlZF9kYXRhLCBzaXplKTsKPiAgICAgICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAg IHNpemUgPSBmZl9hdjFfZmlsdGVyX29idXMocGIsIHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKPiAr ICAgICAgICAgICAgaWYgKHRyay0+bW9kZSA9PSBNT0RFX0FWSUYgJiYgIW1vdi0+YXZpZl9leHRl bnRfbGVuZ3RoKSB7Cj4gKyAgICAgICAgICAgICAgICBtb3YtPmF2aWZfZXh0ZW50X2xlbmd0aCA9 IHNpemU7Cj4gKyAgICAgICAgICAgIH0KPiAgICAgICAgICAgfQo+ICsKPiAgICNpZiBDT05GSUdf QUMzX1BBUlNFUgo+ICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9FQUMzKSB7Cj4gICAgICAgICAgIHNpemUgPSBoYW5kbGVfZWFjMyhtb3YsIHBrdCwgdHJrKTsK PiBAQCAtNjU3OSwxMSArNjc3NSwxNSBAQCBzdGF0aWMgaW50IG1vdl9pbml0KEFWRm9ybWF0Q29u dGV4dCAqcykKPiAgICAgICBlbHNlIGlmIChJU19NT0RFKGlwb2QsIElQT0QpKSBtb3YtPm1vZGUg PSBNT0RFX0lQT0Q7Cj4gICAgICAgZWxzZSBpZiAoSVNfTU9ERShpc212LCBJU01WKSkgbW92LT5t b2RlID0gTU9ERV9JU007Cj4gICAgICAgZWxzZSBpZiAoSVNfTU9ERShmNHYsICAgRjRWKSkgbW92 LT5tb2RlID0gTU9ERV9GNFY7Cj4gKyAgICBlbHNlIGlmIChJU19NT0RFKGF2aWYsIEFWSUYpKSBt b3YtPm1vZGUgPSBNT0RFX0FWSUY7Cj4gICAjdW5kZWYgSVNfTU9ERQo+ICAgCj4gICAgICAgaWYg KG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19ERUxBWV9NT09WKQo+ICAgICAgICAgICBtb3YtPmZs YWdzIHw9IEZGX01PVl9GTEFHX0VNUFRZX01PT1Y7Cj4gICAKPiArICAgIGlmIChtb3YtPm1vZGUg PT0gTU9ERV9BVklGKQo+ICsgICAgICAgIG1vdi0+ZmxhZ3MgfD0gRkZfTU9WX0ZMQUdfREVMQVlf TU9PVjsKPiArCj4gICAgICAgLyogU2V0IHRoZSBGUkFHTUVOVCBmbGFnIGlmIGFueSBvZiB0aGUg ZnJhZ21lbnRhdGlvbiBtZXRob2RzIGFyZQo+ICAgICAgICAqIGVuYWJsZWQuICovCj4gICAgICAg aWYgKG1vdi0+bWF4X2ZyYWdtZW50X2R1cmF0aW9uIHx8IG1vdi0+bWF4X2ZyYWdtZW50X3NpemUg fHwKPiBAQCAtNjY2NCwxMSArNjg2NCwyNSBAQCBzdGF0aWMgaW50IG1vdl9pbml0KEFWRm9ybWF0 Q29udGV4dCAqcykKPiAgICAgICAvKiBOb24tc2Vla2FibGUgb3V0cHV0IGlzIG9rIGlmIHVzaW5n IGZyYWdtZW50YXRpb24uIElmIGlzbV9sb29rYWhlYWQKPiAgICAgICAgKiBpcyBlbmFibGVkLCB3 ZSBkb24ndCBzdXBwb3J0IG5vbi1zZWVrYWJsZSBvdXRwdXQgYXQgYWxsLiAqLwo+ICAgICAgIGlm ICghKHMtPnBiLT5zZWVrYWJsZSAmIEFWSU9fU0VFS0FCTEVfTk9STUFMKSAmJgo+IC0gICAgICAg ICghKG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFHTUVOVCkgfHwgbW92LT5pc21fbG9va2Fo ZWFkKSkgewo+ICsgICAgICAgICghKG1vdi0+ZmxhZ3MgJiBGRl9NT1ZfRkxBR19GUkFHTUVOVCkg fHwgbW92LT5pc21fbG9va2FoZWFkIHx8Cj4gKyAgICAgICAgIG1vdi0+bW9kZSA9PSBNT0RFX0FW SUYpKSB7Cj4gICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJtdXhlciBkb2VzIG5v dCBzdXBwb3J0IG5vbiBzZWVrYWJsZSBvdXRwdXRcbiIpOwo+ICAgICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOwo+ICAgICAgIH0KPiAgIAo+ICsgICAgLyogQVZJRiBvdXRwdXQgbXVzdCBo YXZlIGV4YWN0bHkgb25lIHZpZGVvIHN0cmVhbSAqLwo+ICsgICAgaWYgKG1vdi0+bW9kZSA9PSBN T0RFX0FWSUYpIHsKPiArICAgICAgICBpZiAocy0+bmJfc3RyZWFtcyA+IDEpIHsKPiArICAgICAg ICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkFWSUYgb3V0cHV0IHJlcXVpcmVzIGV4YWN0 bHkgb25lIHN0cmVhbVxuIik7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7 Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmIChzLT5zdHJlYW1zWzBdLT5jb2RlY3Bhci0+Y29k ZWNfdHlwZSAhPSBBVk1FRElBX1RZUEVfVklERU8pIHsKPiArICAgICAgICAgICAgYXZfbG9nKHMs IEFWX0xPR19FUlJPUiwgIkFWSUYgb3V0cHV0IHJlcXVpcmVzIG9uZSB2aWRlbyBzdHJlYW1cbiIp Owo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgIH0KPiAr ICAgICAgICBzLT5zdHJlYW1zWzBdLT5kaXNwb3NpdGlvbiB8PSBBVl9ESVNQT1NJVElPTl9ERUZB VUxUOwo+ICsgICAgfQo+ICsKPiAgICAgICBtb3YtPm5iX3N0cmVhbXMgPSBzLT5uYl9zdHJlYW1z Owo+ICAgICAgIGlmIChtb3YtPm1vZGUgJiAoTU9ERV9NUDR8TU9ERV9NT1Z8TU9ERV9JUE9EKSAm JiBzLT5uYl9jaGFwdGVycykKPiAgICAgICAgICAgbW92LT5jaGFwdGVyX3RyYWNrID0gbW92LT5u Yl9zdHJlYW1zKys7Cj4gQEAgLTY4MTEsMTIgKzcwMjUsMTMgQEAgc3RhdGljIGludCBtb3ZfaW5p dChBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhfZm10 ID09IEFWX1BJWF9GTVRfTU9OT1dISVRFIHx8Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICBw aXhfZm10ID09IEFWX1BJWF9GTVRfTU9OT0JMQUNLOwo+ICAgICAgICAgICAgICAgfQo+IC0gICAg ICAgICAgICBpZiAodHJhY2stPnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5IHx8Cj4g LSAgICAgICAgICAgICAgICB0cmFjay0+cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEp IHsKPiAtICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSAhPSBNT0RFX01QNCkgewo+IC0g ICAgICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICIlcyBvbmx5IHN1cHBv cnRlZCBpbiBNUDQuXG4iLCBhdmNvZGVjX2dldF9uYW1lKHRyYWNrLT5wYXItPmNvZGVjX2lkKSk7 Cj4gLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiAtICAgICAg ICAgICAgICAgIH0KPiArICAgICAgICAgICAgaWYgKHRyYWNrLT5wYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQOSAmJiB0cmFjay0+bW9kZSAhPSBNT0RFX01QNCkgewo+ICsgICAgICAgICAg ICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIiVzIG9ubHkgc3VwcG9ydGVkIGluIE1QNC5c biIsIGF2Y29kZWNfZ2V0X25hbWUodHJhY2stPnBhci0+Y29kZWNfaWQpKTsKPiArICAgICAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAo dHJhY2stPnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxICYmCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgdHJhY2stPm1vZGUgIT0gTU9ERV9NUDQgJiYgdHJhY2stPm1vZGUgIT0gTU9E RV9BVklGKSB7Cj4gKyAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiJXMg b25seSBzdXBwb3J0ZWQgaW4gTVA0IGFuZCBBVklGLlxuIiwgYXZjb2RlY19nZXRfbmFtZSh0cmFj ay0+cGFyLT5jb2RlY19pZCkpOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKPiAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHJhY2stPnBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfVlA4KSB7Cj4gICAgICAgICAgICAgICAgICAgLyogYWx0cmVmIGZyYW1lcyBo YW5kbGluZyBpcyBub3QgZGVmaW5lZCBpbiB0aGUgc3BlYyBhcyBvZiB2ZXJzaW9uIHYxLjAsCj4g ICAgICAgICAgICAgICAgICAgICogc28ganVzdCBmb3JiaWQgbXV4aW5nIFZQOCBzdHJlYW1zIGFs dG9nZXRoZXIgdW50aWwgYSBuZXcgdmVyc2lvbiBkb2VzICovCj4gQEAgLTcwMzQsNyArNzI0OSw3 IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkZfTU9WX0ZMQUdfRlJBR19FVkVSWV9GUkFNRSkp ICYmCj4gICAgICAgICAgICAgICAhbW92LT5tYXhfZnJhZ21lbnRfZHVyYXRpb24gJiYgIW1vdi0+ bWF4X2ZyYWdtZW50X3NpemUpCj4gICAgICAgICAgICAgICBtb3YtPmZsYWdzIHw9IEZGX01PVl9G TEFHX0ZSQUdfS0VZRlJBTUU7Cj4gLSAgICB9IGVsc2Ugewo+ICsgICAgfSBlbHNlIGlmIChtb3Yt Pm1vZGUgIT0gTU9ERV9BVklGKSB7Cj4gICAgICAgICAgIGlmIChtb3YtPmZsYWdzICYgRkZfTU9W X0ZMQUdfRkFTVFNUQVJUKQo+ICAgICAgICAgICAgICAgbW92LT5yZXNlcnZlZF9oZWFkZXJfcG9z ID0gYXZpb190ZWxsKHBiKTsKPiAgICAgICAgICAgbW92X3dyaXRlX21kYXRfdGFnKHBiLCBtb3Yp Owo+IEBAIC03MzIyLDYgKzc1MzcsNTAgQEAgc3RhdGljIGludCBtb3ZfY2hlY2tfYml0c3RyZWFt KEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LAo+ICAgICAgIHJldHVybiByZXQ7Cj4g ICB9Cj4gICAKPiArc3RhdGljIGludCBhdmlmX3dyaXRlX3RyYWlsZXIoQVZGb3JtYXRDb250ZXh0 ICpzKQo+ICt7Cj4gKyAgICBBVklPQ29udGV4dCAqcGIgPSBzLT5wYjsKPiArICAgIE1PVk11eENv bnRleHQgKm1vdiA9IHMtPnByaXZfZGF0YTsKPiArICAgIGludDY0X3QgcG9zX2JhY2t1cCwgbWRh dF9wb3M7Cj4gKyAgICB1aW50OF90ICpidWY7Cj4gKyAgICBpbnQgYnVmX3NpemUsIG1vb3Zfc2l6 ZTsKPiArCj4gKyAgICBpZiAobW92LT5tb292X3dyaXR0ZW4pIHJldHVybiAwOwo+ICsKPiArICAg IG1vdi0+aXNfYW5pbWF0ZWRfYXZpZiA9IHMtPnN0cmVhbXNbMF0tPm5iX2ZyYW1lcyA+IDE7Cj4g KyAgICBtb3Zfd3JpdGVfaWRlbnRpZmljYXRpb24ocGIsIHMpOwo+ICsgICAgbW92X3dyaXRlX21l dGFfdGFnKHBiLCBtb3YsIHMpOwo+ICsKPiArICAgIG1vb3Zfc2l6ZSA9IGdldF9tb292X3NpemUo cyk7Cj4gKyAgICBtb3YtPnRyYWNrc1swXS5kYXRhX29mZnNldCA9IGF2aW9fdGVsbChwYikgKyBt b292X3NpemUgKyA4Owo+ICsKPiArICAgIGlmIChtb3YtPmlzX2FuaW1hdGVkX2F2aWYpIHsKPiAr ICAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgIGlmICgocmV0ID0gbW92X3dyaXRlX21vb3ZfdGFn KHBiLCBtb3YsIHMpKSA8IDApCj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgYnVmX3NpemUgPSBhdmlvX2dldF9keW5fYnVmKG1vdi0+bWRhdF9idWYsICZidWYp Owo+ICsgICAgYXZpb193YjMyKHBiLCBidWZfc2l6ZSArIDgpOwo+ICsgICAgZmZpb193Zm91cmNj KHBiLCAibWRhdCIpOwo+ICsgICAgbWRhdF9wb3MgPSBhdmlvX3RlbGwocGIpOwo+ICsKPiArICAg IGlmIChtZGF0X3BvcyAhPSAodWludDMyX3QpbWRhdF9wb3MpIHsKPiArICAgICAgICBhdl9sb2co cywgQVZfTE9HX0VSUk9SLCAibWRhdCBvZmZzZXQgZG9lcyBub3QgZml0IGluIDMyIGJpdHNcbiIp Owo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgfQo+ICsKPiAr ICAgIGF2aW9fd3JpdGUocGIsIGJ1ZiwgYnVmX3NpemUpOwo+ICsKPiArICAgIC8vIHdyaXRlIGV4 dGVudCBvZmZzZXQuCj4gKyAgICBwb3NfYmFja3VwID0gYXZpb190ZWxsKHBiKTsKPiArICAgIGF2 aW9fc2VlayhwYiwgbW92LT5hdmlmX2V4dGVudF9wb3MsIFNFRUtfU0VUKTsKPiArICAgIGF2aW9f d2IzMihwYiwgbWRhdF9wb3MpOyAvKiByZXdyaXRlIG9mZnNldCAqLwo+ICsgICAgYXZpb19zZWVr KHBiLCBwb3NfYmFja3VwLCBTRUVLX1NFVCk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gICAjaWYgQ09ORklHX1RHUF9NVVhFUiB8fCBDT05GSUdfVEcyX01VWEVSCj4gICBzdGF0aWMg Y29uc3QgQVZDb2RlY1RhZyBjb2RlY18zZ3BfdGFnc1tdID0gewo+ICAgICAgIHsgQVZfQ09ERUNf SURfSDI2MywgICAgIE1LVEFHKCdzJywnMicsJzYnLCczJykgfSwKPiBAQCAtNzQwNCw2ICs3NjYz LDIwIEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGNvZGVjX2Y0dl90YWdzW10gPSB7Cj4gICAg ICAgeyBBVl9DT0RFQ19JRF9OT05FLCAwIH0sCj4gICB9Owo+ICAgCj4gKyNpZiBDT05GSUdfQVZJ Rl9NVVhFUgo+ICtzdGF0aWMgY29uc3QgQVZDb2RlY1RhZyBjb2RlY19hdmlmX3RhZ3NbXSA9IHsK PiArICAgIHsgQVZfQ09ERUNfSURfQVYxLCAgICAgTUtUQUcoJ2EnLCd2JywnMCcsJzEnKSB9LAo+ ICsgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAwIH0sCj4gK307Cj4gK3N0YXRpYyBjb25zdCBBVkNv ZGVjVGFnICpjb25zdCBjb2RlY19hdmlmX3RhZ3NfbGlzdFtdID0geyBjb2RlY19hdmlmX3RhZ3Ms IE5VTEwgfTsKPiArCj4gK3N0YXRpYyBjb25zdCBBVkNsYXNzIG1vdl9hdmlmX211eGVyX2NsYXNz ID0gewo+ICsgICAgLmNsYXNzX25hbWUgPSAiYXZpZiBtdXhlciIsCj4gKyAgICAuaXRlbV9uYW1l ICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAo+ICsgICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxf VkVSU0lPTl9JTlQsCj4gK307Cj4gKyNlbmRpZgo+ICsKPiAgICNpZiBDT05GSUdfTU9WX01VWEVS Cj4gICBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9tb3ZfbXV4ZXIgPSB7Cj4gICAgICAgLm5hbWUg ICAgICAgICAgICAgID0gIm1vdiIsCj4gQEAgLTc1NjYsMyArNzgzOSwyMSBAQCBjb25zdCBBVk91 dHB1dEZvcm1hdCBmZl9mNHZfbXV4ZXIgPSB7Cj4gICAgICAgLnByaXZfY2xhc3MgICAgICAgID0g Jm1vdl9pc29ibWZmX211eGVyX2NsYXNzLAo+ICAgfTsKPiAgICNlbmRpZgo+ICsjaWYgQ09ORklH X0FWSUZfTVVYRVIKPiArY29uc3QgQVZPdXRwdXRGb3JtYXQgZmZfYXZpZl9tdXhlciA9IHsKPiAr ICAgIC5uYW1lICAgICAgICAgICAgICA9ICJhdmlmIiwKPiArICAgIC5sb25nX25hbWUgICAgICAg ICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJBVklGIiksCj4gKyAgICAubWltZV90eXBlICAgICAg ICAgPSAiaW1hZ2UvYXZpZiIsCj4gKyAgICAuZXh0ZW5zaW9ucyAgICAgICAgPSAiYXZpZiIsCj4g KyAgICAucHJpdl9kYXRhX3NpemUgICAgPSBzaXplb2YoTU9WTXV4Q29udGV4dCksCj4gKyAgICAu dmlkZW9fY29kZWMgICAgICAgPSBBVl9DT0RFQ19JRF9BVjEsCj4gKyAgICAuaW5pdCAgICAgICAg ICAgICAgPSBtb3ZfaW5pdCwKPiArICAgIC53cml0ZV9oZWFkZXIgICAgICA9IG1vdl93cml0ZV9o ZWFkZXIsCj4gKyAgICAud3JpdGVfcGFja2V0ICAgICAgPSBtb3Zfd3JpdGVfcGFja2V0LAo+ICsg ICAgLndyaXRlX3RyYWlsZXIgICAgID0gYXZpZl93cml0ZV90cmFpbGVyLAo+ICsgICAgLmRlaW5p dCAgICAgICAgICAgID0gbW92X2ZyZWUsCj4gKyAgICAuZmxhZ3MgICAgICAgICAgICAgPSBBVkZN VF9HTE9CQUxIRUFERVIgfCBBVkZNVF9BTExPV19GTFVTSCwKPiArICAgIC5jb2RlY190YWcgICAg ICAgICA9IGNvZGVjX2F2aWZfdGFnc19saXN0LAo+ICsgICAgLnByaXZfY2xhc3MgICAgICAgID0g Jm1vdl9hdmlmX211eGVyX2NsYXNzLAo+ICt9Owo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvbW92ZW5jLmggYi9saWJhdmZvcm1hdC9tb3ZlbmMuaAo+IGluZGV4IGNhNTA3ZTBl MDQuLjI4MTU3NmNjNjYgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvbW92ZW5jLmgKPiArKysg Yi9saWJhdmZvcm1hdC9tb3ZlbmMuaAo+IEBAIC00Myw2ICs0Myw3IEBACj4gICAjZGVmaW5lIE1P REVfSVBPRCAweDIwCj4gICAjZGVmaW5lIE1PREVfSVNNICAweDQwCj4gICAjZGVmaW5lIE1PREVf RjRWICAweDgwCj4gKyNkZWZpbmUgTU9ERV9BVklGIDB4MTAwCj4gICAKPiAgIHR5cGVkZWYgc3Ry dWN0IE1PVkllbnRyeSB7Cj4gICAgICAgdWludDY0X3QgICAgIHBvczsKPiBAQCAtMjQ0LDYgKzI0 NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBNT1ZNdXhDb250ZXh0IHsKPiAgICAgICBNT1ZQcmZ0Qm94 IHdyaXRlX3ByZnQ7Cj4gICAgICAgaW50IGVtcHR5X2hkbHJfbmFtZTsKPiAgICAgICBpbnQgbW92 aWVfdGltZXNjYWxlOwo+ICsKPiArICAgIGludDY0X3QgYXZpZl9leHRlbnRfcG9zOwo+ICsgICAg aW50IGF2aWZfZXh0ZW50X2xlbmd0aDsKPiArICAgIGludCBpc19hbmltYXRlZF9hdmlmOwo+ICAg fSBNT1ZNdXhDb250ZXh0Owo+ICAgCj4gICAjZGVmaW5lIEZGX01PVl9GTEFHX1JUUF9ISU5UICAg ICAgICAgICAgICAoMSA8PCAgMCkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K