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 8E796423CB for ; Thu, 14 Apr 2022 16:46:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A3DD668B488; Thu, 14 Apr 2022 19:46:56 +0300 (EEST) Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8EF9668B38D for ; Thu, 14 Apr 2022 19:46:50 +0300 (EEST) Received: by mail-oi1-f169.google.com with SMTP id k10so6047675oia.0 for ; Thu, 14 Apr 2022 09:46:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=HwJIiFgy9+NGCMz8VbI5s2aCMuzfNR8LZPzrU4YostQ=; b=UXoCzlrd9/VnLNCFsqRPK567KNBXWlYtBXPJg0NXlYV5szLKqEZ/iUPDA8bgcNeHT5 BEMh8QBGG1E679J18mqzg8unMnsHfFlRWxee/iNV5iNVQfd35jQ+9lVe+NjcECFT7cZT EPSDQSBxQ+CAbVQZeNDUQ1NoHT2DxjEVvjVY8Wk0II2P+BaigHgpOV/xJVRdDkDVZQU3 Y0MgEdXoZWW1sauUP7coIlQaZOPlFUvT2mibnSDyV3Al50gk6T7Frzj+VEGjFxFn/O7Q RfAErvJFyASM9iPHmLwV08tmwzXZWQ9JYiTtLcUry3fwix2G7D6Zp2PrljqaRICyvuSn upPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=HwJIiFgy9+NGCMz8VbI5s2aCMuzfNR8LZPzrU4YostQ=; b=VXVAi/xBGoAjuWJKYFUL6q4zVvwEIeSNWOZNHq/iDYIwDC5xV3jAd+J2e3hVymNN5R /AISBJxCWXEJdORON1U41vikY7ZUxXII68X043X11kX/X64PSOkNjVazW5yaf9Wj/V2O E1cmbu3iWTFO/lL1n3RgEg//wOfGVSnioXtuqyrDHVbhdRWb17NNKIBOEag5BLkhQfd2 aBN0F1ocVAO+rXlvGZt4+bS7EALq3MvSB+7lcItIrDydvdAl+jYmR1fZi62e0b0hyRi+ oE4Cyq30cH50JrYvve2wnXkIRwOW7x7YA6H1lCEEQozblrW8QRi6ti/J5jIqVhXswN6m Snpg== X-Gm-Message-State: AOAM533i1Jy4UTrcXBxPG3e2sD2xNjWiftzC0nYvsBQR52clnbtjTqcq 3+kL6hL51U/vptlPOAFT9YKQbDAD6r0= X-Google-Smtp-Source: ABdhPJy9G6oRlu2dFlWiYbyTKZVv+N2DWA9+qE6Y28nyNK22cRYsVpgiNJMyy8QqUvURyIogwhTFNw== X-Received: by 2002:a05:6808:170a:b0:2fa:7168:392b with SMTP id bc10-20020a056808170a00b002fa7168392bmr2083297oib.84.1649954808754; Thu, 14 Apr 2022 09:46:48 -0700 (PDT) Received: from [192.168.0.13] ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id p16-20020a05680811d000b002d72ec3a921sm202880oiv.21.2022.04.14.09.46.47 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 14 Apr 2022 09:46:48 -0700 (PDT) Message-ID: <9e9f836e-3426-216d-c2e9-4b006293128e@gmail.com> Date: Thu, 14 Apr 2022 13:46:47 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 2/5] avcodec/mjpegdec: Don't create unnecessary AVFrame reference 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: CgpPbiA0LzE0LzIwMjIgMTo0MyBQTSwgQW5kcmVhcyBSaGVpbmhhcmR0IHdyb3RlOgo+IEphbWVz IEFsbWVyOgo+PiBPbiA0LzE0LzIwMjIgMTI6NTcgUE0sIEFuZHJlYXMgUmhlaW5oYXJkdCB3cm90 ZToKPj4+IE1KUEVHIGlzIGFuIGludHJhLWNvZGVjLCBzbyBpdCBtYWtlcyBubyBzZW5zZSB0byBr ZWVwIHRoZSByZWZlcmVuY2UuCj4+PiBJdCBpcyBiYXNpY2FsbHkgdW51c2VkIGxhdGVyb24gYW55 d2F5Lgo+Pgo+PiBXb3VsZG4ndCB0aGlzIG1lYW4geW91IGNhbiByZW1vdmUgdGhlIEFWX0dFVF9C VUZGRVJfRkxBR19SRUYgZmxhZyBmcm9tCj4+IHRoZSBmZl9nZXRfYnVmZmVyKCkgY2FsbD8KPj4K PiAKPiBOb3QgaW4gY2FzZSBvZiBTTVYuIFRoZSBzbXYgY29kZSBrZWVwcyBhIHJlZmVyZW5jZSBh bmQgcmV1c2VzIGl0LiBTZWUKPiBzbXZfcHJvY2Vzc19mcmFtZS4KCk1ha2UgaXQgQVZfR0VUX0JV RkZFUl9GTEFHX1JFRiAqIChzLT5hdmN0eC0+Y29kZWNfaWQgPT0gCkFWX0NPREVDX0lEX1NNVkpQ RUcpIHRoZW4uCgo+IAo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8 YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgo+Pj4gLS0tCj4+PiAgwqAgbGliYXZjb2Rl Yy9tanBlZ2RlYy5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+Pj4gIMKgIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlv bnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tanBlZ2RlYy5jIGIvbGliYXZj b2RlYy9tanBlZ2RlYy5jCj4+PiBpbmRleCAwZTc2YmY0YzI2Li45MzlkZWRjZTMzIDEwMDY0NAo+ Pj4gLS0tIGEvbGliYXZjb2RlYy9tanBlZ2RlYy5jCj4+PiArKysgYi9saWJhdmNvZGVjL21qcGVn ZGVjLmMKPj4+IEBAIC0yNTg5LDggKzI1ODksNyBAQCBlb2lfcGFyc2VyOgo+Pj4gIMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfZnJlZXAoJnMtPmh3YWNjZWxfcGljdHVy ZV9wcml2YXRlKTsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoKHJldCA9IGF2X2ZyYW1lX3JlZihmcmFtZSwgcy0+cGljdHVy ZV9wdHIpKSA8IDApCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9mcmFtZV9tb3ZlX3JlZihmcmFtZSwg cy0+cGljdHVyZV9wdHIpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMtPmdvdF9w aWN0dXJlID0gMDsKPj4+ICDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmcmFtZS0+cGt0 X2R0cyA9IHMtPnBrdC0+ZHRzOwo+Pj4gQEAgLTI2NzUsOSArMjY3NCw5IEBAIHRoZV9lbmQ6Cj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHJldDsKPj4+ICDCoCAtwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5u Yl9jb21wb25lbnRzID09Cj4+PiBhdl9waXhfZm10X2NvdW50X3BsYW5lcyhzLT5waWN0dXJlX3B0 ci0+Zm9ybWF0KSk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21wb25l bnRzID09Cj4+PiBhdl9waXhfZm10X2NvdW50X3BsYW5lcyhmcmFtZS0+Zm9ybWF0KSk7Cj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgIGZvciAocCA9IDA7IHA8cy0+bmJfY29tcG9uZW50czsgcCsrKSB7 Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpsaW5lID0gcy0+cGljdHVyZV9w dHItPmRhdGFbcF07Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpsaW5lID0g ZnJhbWUtPmRhdGFbcF07Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHcgPSBz LT53aWR0aDsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgaCA9IHMtPmhlaWdo dDsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXMtPnVwc2NhbGVfaFtwXSkK Pj4+IEBAIC0yNzM3LDcgKzI3MzYsNyBAQCB0aGVfZW5kOgo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAocmV0KQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ PiAgwqAgLcKgwqDCoMKgwqDCoMKgIGF2X2Fzc2VydDAocy0+bmJfY29tcG9uZW50cyA9PQo+Pj4g YXZfcGl4X2ZtdF9jb3VudF9wbGFuZXMocy0+cGljdHVyZV9wdHItPmZvcm1hdCkpOwo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGF2X2Fzc2VydDAocy0+bmJfY29tcG9uZW50cyA9PQo+Pj4gYXZfcGl4X2Zt dF9jb3VudF9wbGFuZXMoZnJhbWUtPmZvcm1hdCkpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBm b3IgKHAgPSAwOyBwIDwgcy0+bmJfY29tcG9uZW50czsgcCsrKSB7Cj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0Owo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGludCB3ID0gcy0+d2lkdGg7Cj4+PiBAQCAtMjc0OCwxMCArMjc0NywxMCBAQCB0aGVfZW5k Ogo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdyA9IEFWX0NFSUxfUlNI SUZUKHcsIGhzaGlmdCk7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBo ID0gQVZfQ0VJTF9SU0hJRlQoaCwgdnNoaWZ0KTsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3QgPSAmKCh1aW50OF90ICopcy0+ cGljdHVyZV9wdHItPmRhdGFbcF0pWyhoIC0gMSkgKgo+Pj4gcy0+bGluZXNpemVbcF1dOwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0ID0gJmZyYW1lLT5kYXRhW3BdWyhoIC0gMSkgKiBz LT5saW5lc2l6ZVtwXV07Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0g aCAtIDE7IGk7IGktLSkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50 OF90ICpzcmMxID0gJigodWludDhfdAo+Pj4gKilzLT5waWN0dXJlX3B0ci0+ZGF0YVtwXSlbaSAq IHMtPnVwc2NhbGVfdltwXSAvIChzLT51cHNjYWxlX3ZbcF0gKyAxKQo+Pj4gKiBzLT5saW5lc2l6 ZVtwXV07Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgKnNyYzIg PSAmKCh1aW50OF90Cj4+PiAqKXMtPnBpY3R1cmVfcHRyLT5kYXRhW3BdKVsoaSArIDEpICogcy0+ dXBzY2FsZV92W3BdIC8KPj4+IChzLT51cHNjYWxlX3ZbcF0gKyAxKSAqIHMtPmxpbmVzaXplW3Bd XTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqc3JjMSA9ICZm cmFtZS0+ZGF0YVtwXVsgacKgwqDCoMKgwqAgKgo+Pj4gcy0+dXBzY2FsZV92W3BdIC8gKHMtPnVw c2NhbGVfdltwXSArIDEpICogcy0+bGluZXNpemVbcF1dOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1aW50OF90ICpzcmMyID0gJmZyYW1lLT5kYXRhW3BdWyhpICsgMSkgKgo+ Pj4gcy0+dXBzY2FsZV92W3BdIC8gKHMtPnVwc2NhbGVfdltwXSArIDEpICogcy0+bGluZXNpemVb cF1dOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHMtPnVwc2Nh bGVfdltwXSAhPSAyICYmIChzcmMxID09IHNyYzIgfHwgaSA9PSBoCj4+PiAtIDEpKSB7Cj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNweShkc3QsIHNy YzEsIHcpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsK Pj4+IEBAIC0yNzY4LDM2ICsyNzY3LDM2IEBAIHRoZV9lbmQ6Cj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXQpCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4+ICDCoCAtwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21wb25lbnRzID09Cj4+ PiBhdl9waXhfZm10X2NvdW50X3BsYW5lcyhzLT5waWN0dXJlX3B0ci0+Zm9ybWF0KSk7Cj4+PiAr wqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21wb25lbnRzID09Cj4+PiBhdl9waXhf Zm10X2NvdW50X3BsYW5lcyhmcmFtZS0+Zm9ybWF0KSk7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoaW5kZXg9MDsgaW5kZXg8cy0+bmJfY29tcG9uZW50czsgaW5kZXgrKykgewo+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0ID0gcy0+cGljdHVyZV9wdHItPmRhdGFb aW5kZXhdOwo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHcgPSBzLT5waWN0dXJlX3B0 ci0+d2lkdGg7Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgaCA9IHMtPnBpY3R1cmVf cHRyLT5oZWlnaHQ7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpkc3QgPSBm cmFtZS0+ZGF0YVtpbmRleF07Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdyA9IGZy YW1lLT53aWR0aDsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBoID0gZnJhbWUtPmhl aWdodDsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZihpbmRleCAmJiBpbmRleDwz KXsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHcgPSBBVl9DRUlMX1JT SElGVCh3LCBoc2hpZnQpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aCA9IEFWX0NFSUxfUlNISUZUKGgsIHZzaGlmdCk7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmKGRzdCl7Cj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgKmRzdDIgPSBkc3QgKwo+Pj4gcy0+ cGljdHVyZV9wdHItPmxpbmVzaXplW2luZGV4XSooaC0xKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0MiA9IGRzdCArIGZyYW1lLT5saW5lc2l6ZVtpbmRl eF0qKGgtMSk7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGk9 MDsgaTxoLzI7IGkrKykgewo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBmb3IgKGo9MDsgajx3OyBqKyspCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRkZTV0FQKGludCwgZHN0W2pdLCBkc3QyW2pdKTsK Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3TCoCArPSBzLT5w aWN0dXJlX3B0ci0+bGluZXNpemVbaW5kZXhdOwo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRzdDIgLT0gcy0+cGljdHVyZV9wdHItPmxpbmVzaXplW2luZGV4XTsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3TCoCArPSBmcmFt ZS0+bGluZXNpemVbaW5kZXhdOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRzdDIgLT0gZnJhbWUtPmxpbmVzaXplW2luZGV4XTsKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ICDCoMKgwqDCoMKgIH0KPj4+ICDCoMKgwqDC oMKgIGlmIChzLT5hZG9iZV90cmFuc2Zvcm0gPT0gMCAmJiBzLT5hdmN0eC0+cGl4X2ZtdCA9PQo+ Pj4gQVZfUElYX0ZNVF9HQlJBUCkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIGludCB3ID0gcy0+cGlj dHVyZV9wdHItPndpZHRoOwo+Pj4gLcKgwqDCoMKgwqDCoMKgIGludCBoID0gcy0+cGljdHVyZV9w dHItPmhlaWdodDsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpbnQgdyA9IGZyYW1lLT53aWR0aDsKPj4+ ICvCoMKgwqDCoMKgwqDCoCBpbnQgaCA9IGZyYW1lLT5oZWlnaHQ7Cj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgIGF2X2Fzc2VydDAocy0+bmJfY29tcG9uZW50cyA9PSA0KTsKPj4+ICDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpPTA7IGk8aDsgaSsrKSB7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50IGo7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDhfdCAqZHN0 WzRdOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaW5kZXg9MDsgaW5kZXg8 NDsgaW5kZXgrKykgewo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkc3RbaW5k ZXhdID3CoMKgIHMtPnBpY3R1cmVfcHRyLT5kYXRhW2luZGV4XQo+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICsgcy0+cGljdHVyZV9w dHItPmxpbmVzaXplW2luZGV4XSppOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkc3RbaW5kZXhdID3CoMKgIGZyYW1lLT5kYXRhW2luZGV4XQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICsgZnJhbWUtPmxpbmVz aXplW2luZGV4XSppOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGo9MDsgajx3OyBqKyspIHsKPj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBrID0gZHN0WzNdW2pdOwo+Pj4gQEAgLTI4 MTIsMTUgKzI4MTEsMTUgQEAgdGhlX2VuZDoKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4g IMKgwqDCoMKgwqAgfQo+Pj4gIMKgwqDCoMKgwqAgaWYgKHMtPmFkb2JlX3RyYW5zZm9ybSA9PSAy ICYmIHMtPmF2Y3R4LT5waXhfZm10ID09Cj4+PiBBVl9QSVhfRk1UX1lVVkE0NDRQKSB7Cj4+PiAt wqDCoMKgwqDCoMKgwqAgaW50IHcgPSBzLT5waWN0dXJlX3B0ci0+d2lkdGg7Cj4+PiAtwqDCoMKg wqDCoMKgwqAgaW50IGggPSBzLT5waWN0dXJlX3B0ci0+aGVpZ2h0Owo+Pj4gK8KgwqDCoMKgwqDC oMKgIGludCB3ID0gZnJhbWUtPndpZHRoOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGludCBoID0gZnJh bWUtPmhlaWdodDsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfYXNzZXJ0MChzLT5uYl9jb21w b25lbnRzID09IDQpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGk9MDsgaTxoOyBpKysp IHsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgajsKPj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1aW50OF90ICpkc3RbNF07Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpbmRleD0wOyBpbmRleDw0OyBpbmRleCsrKSB7Cj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdFtpbmRleF0gPcKgwqAgcy0+cGljdHVyZV9wdHItPmRh dGFbaW5kZXhdCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKyBzLT5waWN0dXJlX3B0ci0+bGluZXNpemVbaW5kZXhdKmk7Cj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdFtpbmRleF0gPcKgwqAgZnJhbWUtPmRh dGFbaW5kZXhdCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKyBmcmFtZS0+bGluZXNpemVbaW5kZXhdKmk7Cj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAo aj0wOyBqPHc7IGorKykgewo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW50IGsgPSBkc3RbM11bal07Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZm bXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2 ZWwKPiAKPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxp bmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBz dWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==