From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90741C43603 for ; Wed, 18 Dec 2019 02:20:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5990621835 for ; Wed, 18 Dec 2019 02:20:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=gmx.net header.i=@gmx.net header.b="dQgNg9VU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726467AbfLRCUJ (ORCPT ); Tue, 17 Dec 2019 21:20:09 -0500 Received: from mout.gmx.net ([212.227.15.18]:42939 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725975AbfLRCUJ (ORCPT ); Tue, 17 Dec 2019 21:20:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1576635599; bh=moNQGhYHj8lkXk9qIxTbKfSdHDlF+faSatAqJb9TmuE=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=dQgNg9VUltyRehj9NtJd0xYUlM4P5vGpnasfrX6VZWXALA2uHsfJexEZwlSq9G6gT r4VSreCCEPPWmUrRZ33dChT7rfXd81S+MhSv+7zOOcQyMAJd6EEV/J/9oq02Iq/udK vklWx3khjdhL8+havyRZib4++wRHhrTkUxqgRp7k= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.2.178] ([34.92.249.81]) by mail.gmx.com (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1N5G9n-1hial90JAj-011860; Wed, 18 Dec 2019 03:19:59 +0100 Subject: Re: [PATCH 2/6] btrfs-progs: check/original: Do extra verification on file extent item To: Qu Wenruo , Qu Wenruo , linux-btrfs@vger.kernel.org References: <20191218011942.9830-1-wqu@suse.com> <20191218011942.9830-3-wqu@suse.com> From: Su Yue Message-ID: Date: Wed, 18 Dec 2019 10:19:53 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:JN58rejosX6fsjzLzoW+ExQ3b7Xco/xhu2MWrvTEU3oY4w/n8Xv DFIICjXojaZKXJ39kUVw32kejVhYlVoP4o/eYiMZ7UyBxEtYElkGXbsBoAWNg+GIgcWU5+9 ZIUaOeK8ZCVnza0vIv3f9WW0hyTh8uLJDfGbnPumd2Q778b9spBcutbGYZwY/JUeOZfBLq5 /b84vvMsW9NzrqXviorsw== X-UI-Out-Filterresults: notjunk:1;V03:K0:5AxvvgH5vxo=:FfpMaW/1kiY9xraRJVy60A CBCUJKBiPiXMLO6hkLkff6/RVVd9BYdZ/hZKzBvSXioVq5SIA5LxX9KTvPgFeh4w0tCkwN64l V752OgRWhYjsj5V09eQ9fUzloz0P0LdMlxU/JmumcB8k6R91udxDJ+Ex5+NK9vOKZ8SiovP+Z nOpPsQEvGIKx9Zse1Ugnfwf8L+9/W4QtBy+tbIu8w3zCzjJ6GohgAwKJ0LjQnxy82Ho3XM4v5 8EtrZF/MSOoqzZK9SApVGokJ57Gz4u8aQhaitbAWK4CpXX8pp6kQS0TJh+qCRlhnO0+6UBA4J WsbPs/wzAMvfzQf3aQOcynGphsxbJSLbmRncRXP9QeYn3UmKj9W7AexEF36xDQ9kBVgrfY8G5 Ckml9LgvAJrWuH5TRkEz5ZlIAU0sGu61SaCpydXdsMxEFN/TMJKMffqLgGiRysCjyZTynV9G4 V9y7I2CPFFMVb9tI9gjffhowS5Pu3hCpCxIfT61jEdW61HuifrG2YIM0ZzfPUgrlf7FvPP0A5 DentzQiOiQZdkhhDtydagJwMoXxBkb6i/1e18/GFZ2MvgYo9+EJR+syjZuOwQQ4tw97oRqKA6 JeBYv91L271l+v/Q3xxThJzhCwxztDVj4ziz7vnarVFnmqNOhPjsn22L2Ycrqjek3RgQE+OnM WVuU1svS01nVJ94aJDyuZZBgCXXcNRPu7gyysP0Co6eO2EjwH9rof9KBY0JR7vEFYTjezepB8 rvpBNqMX62LKbr55TumXEMJKxYwyLCctwTtcBFuzSXIcLSgEO74B9JxM3U0zwLrnnT8V2WjJW 2rDA0MTMU0UnrVzOGAHdK3QY8piV9zx4fMJgGrsfBUsaJvnk/rbuuK/ZjRweSlXG1w9pNjtMq cWp1BkU8FqeUkXJx/9PG8avlTyEDSrhOaR5FDfbH7nL321ZqFTckWJOx/ZXMAyrunwPwLmb0O tLXQWsYXvuXflDgJUBoI6NI4dxke0EvpnpRp5NRGUEloNj3N96rS8JFqqZS3UDJHOwCUZ8uW9 tXzePGCoXxM2fHktp3a5bAqv/A/3NMwdSD5I4G2YUPSqxP+NxtOSIbmHIVfePEjooscQdRRVG Bp4vCq6x0EONMIF9uyo3kYpf3lY+uz8uOS/nXiUWi5AQir1fCiQURK7Np3DtreiM2I2p54DH2 3sVz1PuxKeI/DsrPjor/ZRL1eaBUTigOotOnQEpwtOmsOLl+URag76qJbZ9e+Bgd50ibA5IAP QuThl2sWB8DLkMOEKmSvjQdNxLByygtc9yQV7FZl6AdCQ+OluDSTP0Cw1fjE= Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org T24gMjAxOS8xMi8xOCAxMDoxNyBBTSwgUXUgV2VucnVvIHdyb3RlOg0KPiANCj4gDQo+IE9uIDIw MTkvMTIvMTgg5LiK5Y2IMTA6MDksIFN1IFl1ZSB3cm90ZToNCj4+IE9uIDIwMTkvMTIvMTggOTox OSBBTSwgUXUgV2VucnVvIHdyb3RlOg0KPj4+IFtCVUddDQo+Pj4gRm9yIGNlcnRhaW4gZnV6emVk IGltYWdlLCBgYnRyZnMgY2hlY2tgIHdpbGwgZmFpbCB3aXRoIHRoZSBmb2xsb3dpbmcNCj4+PiBj YWxsIHRyYWNlOg0KPj4+ICDCoMKgIENoZWNraW5nIGZpbGVzeXN0ZW0gb24gaXNzdWVfMjEzLnJh dw0KPj4+ICDCoMKgIFVVSUQ6IDk5ZTUwODY4LTBiZGEtNGQ4OS1iMGU0LTdlODU2MDMxMmVmOQ0K Pj4+ICDCoMKgIFsxLzddIGNoZWNraW5nIHJvb3QgaXRlbXMNCj4+PiAgwqDCoCBbMi83XSBjaGVj a2luZyBleHRlbnRzDQo+Pj4gIMKgwqAgUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHQUJSVCwg QWJvcnRlZC4NCj4+PiAgwqDCoCAweDAwMDA3ZmZmZjdjODhmMjUgaW4gcmFpc2UgKCkgZnJvbSAv dXNyL2xpYi9saWJjLnNvLjYNCj4+PiAgwqDCoCAoZ2RiKSBidA0KPj4+ICDCoMKgICMwwqAgMHgw MDAwN2ZmZmY3Yzg4ZjI1IGluIHJhaXNlICgpIGZyb20gL3Vzci9saWIvbGliYy5zby42DQo+Pj4g IMKgwqAgIzHCoCAweDAwMDA3ZmZmZjdjNzI4OTcgaW4gYWJvcnQgKCkgZnJvbSAvdXNyL2xpYi9s aWJjLnNvLjYNCj4+PiAgwqDCoCAjMsKgIDB4MDAwMDU1NTU1NTVhYmMzZSBpbiBydW5fbmV4dF9i bG9jayAoLi4uKSBhdCBjaGVjay9tYWluLmM6NjM5OA0KPj4+ICDCoMKgICMzwqAgMHgwMDAwNTU1 NTU1NWIwZjM2IGluIGRlYWxfcm9vdF9mcm9tX2xpc3QgKC4uLikgYXQNCj4+PiBjaGVjay9tYWlu LmM6ODQwOA0KPj4+ICDCoMKgICM0wqAgMHgwMDAwNTU1NTU1NWIxYTNkIGluIGNoZWNrX2NodW5r c19hbmRfZXh0ZW50cw0KPj4+IChmc19pbmZvPTB4NTU1NTU1NmExZTMwKSBhdCBjaGVjay9tYWlu LmM6ODY5MA0KPj4+ICDCoMKgICM1wqAgMHgwMDAwNTU1NTU1NWIxZTNlIGluIGRvX2NoZWNrX2No dW5rc19hbmRfZXh0ZW50cw0KPj4+IChmc19pbmZvPTB4NTU1NTU1NmExZTMwKSBhDQo+Pj4gIMKg wqAgIzbCoCAweDAwMDA1NTU1NTU1YjU3MTAgaW4gY21kX2NoZWNrIChjbWQ9MHg1NTU1NTU2OTY5 MjANCj4+PiA8Y21kX3N0cnVjdF9jaGVjaz4sIGFyZ2MNCj4+PiAgwqDCoCAjN8KgIDB4MDAwMDU1 NTU1NTU2OGRjNyBpbiBjbWRfZXhlY3V0ZSAoY21kPTB4NTU1NTU1Njk2OTIwDQo+Pj4gPGNtZF9z dHJ1Y3RfY2hlY2s+LCBhcg0KPj4+ICDCoMKgICM4wqAgMHgwMDAwNTU1NTU1NTY5NzEzIGluIG1h aW4gKGFyZ2M9MiwgYXJndj0weDdmZmZmZmZmZGU3MCkgYXQNCj4+PiBidHJmcy5jOjM4Ng0KPj4+ DQo+Pj4gW0NBVVNFXQ0KPj4+IFRoaXMgZnV6emVkIGltYWdlcyBoYXMgYSBjb3JydXB0ZWQgRVhU RU5UX0RBVEEgaXRlbSBpbiBkYXRhIHJlbG9jIHRyZWU6DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqAg aXRlbSAxIGtleSAoMjU2IEVYVEVOVF9EQVRBIDI1NikgaXRlbW9mZiAxNjExMSBpdGVtc2l6ZSAx Mg0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZW5lcmF0aW9uIDAgdHlw ZSAyIChwcmVhbGxvYykNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJl YWxsb2MgZGF0YSBkaXNrIGJ5dGUgMTY3NzcyMTYgbnIgMA0KPj4+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcmVhbGxvYyBkYXRhIG9mZnNldCAwIG5yIDANCj4+Pg0KPj4+IFRo ZXJlIGFyZSBzZXZlcmFsIHByb2JsZW1zIHdpdGggdGhlIGl0ZW06DQo+Pj4gLSBCYWQgaXRlbSBz aXplDQo+Pj4gIMKgwqAgMTIgaXMgdG9vIHNtYWxsLg0KPj4+IC0gQmFkIGtleSBvZmZzZXQNCj4+ PiAgwqDCoCBvZmZzZXQgb2YgRVhURU5UX0RBVEEgdHlwZSBrZXkgcmVwcmVzZW50cyBmaWxlIG9m ZnNldCwgd2hpY2ggc2hvdWxkDQo+Pj4gIMKgwqAgYWx3YXlzIGJlIGFsaWduZWQgdG8gc2VjdG9y IHNpemUgKDRLIGluIHRoaXMgcGFydGljdWxhciBjYXNlKS4NCj4+Pg0KPj4+IFtGSVhdDQo+Pj4g RG8gZXh0cmEgaXRlbSBzaXplIGFuZCBrZXkgb2Zmc2V0IGNoZWNrIGZvciBvcmlnaW5hbCBtb2Rl LCBhbmQgcmVtb3ZlDQo+Pj4gdGhlIGFib3J0KCkgY2FsbCBpbiBydW5fbmV4dF9ibG9jaygpLg0K Pj4+DQo+Pj4gQW5kIHRvIHNob3cgb2ZmIGhvdyByb2J1c3QgbG93bWVtIG1vZGUgaXMsIGxvd21l bSBjYW4gaGFuZGxlIGl0IHdpdGhvdXQNCj4+PiBhbnkgaGljY3VwLg0KPj4+DQo+Pj4gV2l0aCB0 aGlzIGZpeCwgb3JpZ2luYWwgbW9kZSBjYW4gZGV0ZWN0IHRoZSBwcm9ibGVtIHByb3Blcmx5Og0K Pj4+ICDCoMKgIENoZWNraW5nIGZpbGVzeXN0ZW0gb24gaXNzdWVfMjEzLnJhdw0KPj4+ICDCoMKg IFVVSUQ6IDk5ZTUwODY4LTBiZGEtNGQ4OS1iMGU0LTdlODU2MDMxMmVmOQ0KPj4+ICDCoMKgIFsx LzddIGNoZWNraW5nIHJvb3QgaXRlbXMNCj4+PiAgwqDCoCBbMi83XSBjaGVja2luZyBleHRlbnRz DQo+Pj4gIMKgwqAgRVJST1I6IGludmFsaWQgZmlsZSBleHRlbnQgaXRlbSBzaXplLCBoYXZlIDEy IGV4cGVjdCAoMjEsIDE2MjgzXQ0KPj4+ICDCoMKgIEVSUk9SOiBlcnJvcnMgZm91bmQgaW4gZXh0 ZW50IGFsbG9jYXRpb24gdHJlZSBvciBjaHVuayBhbGxvY2F0aW9uDQo+Pj4gIMKgwqAgWzMvN10g Y2hlY2tpbmcgZnJlZSBzcGFjZSBjYWNoZQ0KPj4+ICDCoMKgIFs0LzddIGNoZWNraW5nIGZzIHJv b3RzDQo+Pj4gIMKgwqAgcm9vdCAxODQ0Njc0NDA3MzcwOTU1MTYwNyByb290IGRpciAyNTYgZXJy b3INCj4+PiAgwqDCoCByb290IDE4NDQ2NzQ0MDczNzA5NTUxNjA3IGlub2RlIDI1NiBlcnJvcnMg NjIsIG5vIG9ycGhhbiBpdGVtLCBvZGQNCj4+PiBmaWxlIGV4dGVudCwgYmFkIGZpbGUgZXh0ZW50 DQo+Pj4gIMKgwqAgRVJST1I6IGVycm9ycyBmb3VuZCBpbiBmcyByb290cw0KPj4+ICDCoMKgIGZv dW5kIDEzMTA3MiBieXRlcyB1c2VkLCBlcnJvcihzKSBmb3VuZA0KPj4+ICDCoMKgIHRvdGFsIGNz dW0gYnl0ZXM6IDANCj4+PiAgwqDCoCB0b3RhbCB0cmVlIGJ5dGVzOiAxMzEwNzINCj4+PiAgwqDC oCB0b3RhbCBmcyB0cmVlIGJ5dGVzOiAzMjc2OA0KPj4+ICDCoMKgIHRvdGFsIGV4dGVudCB0cmVl IGJ5dGVzOiAxNjM4NA0KPj4+ICDCoMKgIGJ0cmVlIHNwYWNlIHdhc3RlIGJ5dGVzOiAxMjQ3NzQN Cj4+PiAgwqDCoCBmaWxlIGRhdGEgYmxvY2tzIGFsbG9jYXRlZDogMA0KPj4+ICDCoMKgwqAgcmVm ZXJlbmNlZCAwDQo+Pj4NCj4+PiBJc3N1ZTogIzIxMw0KPj4+IFNpZ25lZC1vZmYtYnk6IFF1IFdl bnJ1byA8d3F1QHN1c2UuY29tPg0KPj4NCj4+IEFsbW9zdCBmaW5lLiBUd28gbml0cGlja3MgYmVs b3cuDQo+PiBJIGd1ZXNzIHRoYXQgdGhleSBjb3VsZCBiZSBmaXhlZCB3aGVuIG1lcmdpbmcuDQo+ Pg0KPj4+IC0tLQ0KPj4+ICDCoCBjaGVjay9tYWluLmMgfCAzNCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tDQo+Pj4gIMKgIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQ0KPj4+DQo+Pj4gZGlmZiAtLWdpdCBhL2NoZWNrL21haW4uYyBiL2No ZWNrL21haW4uYw0KPj4+IGluZGV4IDA4ZGM5ZTY2Li45MTc1MmRjZSAxMDA2NDQNCj4+PiAtLS0g YS9jaGVjay9tYWluLmMNCj4+PiArKysgYi9jaGVjay9tYWluLmMNCj4+PiBAQCAtNjI2OCw3ICs2 MjY4LDEwIEBAIHN0YXRpYyBpbnQgcnVuX25leHRfYmxvY2soc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBidHJlZV9zcGFjZV93YXN0ZSArPSBidHJmc19s ZWFmX2ZyZWVfc3BhY2UoYnVmKTsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7 IGkgPCBucml0ZW1zOyBpKyspIHsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGJ0cmZzX2ZpbGVfZXh0ZW50X2l0ZW0gKmZpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHVuc2lnbmVkIGxvbmcgaW5saW5lX29mZnNldDsNCj4+Pg0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlubGluZV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgYnRyZnNfZmlsZV9leHRl bnRfaXRlbSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRpc2tfYnl0ZW5yKTsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnRy ZnNfaXRlbV9rZXlfdG9fY3B1KGJ1ZiwgJmtleSwgaSk7DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBDaGVjayBr ZXkgdHlwZSBhZ2FpbnN0IHRoZSBsZWFmIG93bmVyLg0KPj4+IEBAIC02Mzg0LDE4ICs2Mzg3LDQ1 IEBAIHN0YXRpYyBpbnQgcnVuX25leHRfYmxvY2soc3RydWN0IGJ0cmZzX3Jvb3QNCj4+PiAqcm9v dCwNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoa2V5LnR5cGUgIT0gQlRSRlNfRVhURU5UX0RBVEFfS0VZKQ0KPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIENoZWNrIGl0ZW1zaXplIGJlZm9yZSB3ZSBjb250aW51ZSov DQo+Pg0KPj4gT25lIG1vcmUgc3BhY2UgYXQgdGhlIHRhaWwuDQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKGJ0cmZzX2l0ZW1fc2l6ZV9ucihidWYsIGkpIDwgaW5saW5lX29mZnNldCkg ew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVVQ0xFQU47DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJvcigNCj4+PiArwqDCoMKgwqDC oMKgwqAgImludmFsaWQgZmlsZSBleHRlbnQgaXRlbSBzaXplLCBoYXZlICV1IGV4cGVjdCAoJWx1 LCAlbHVdIiwNCj4+DQo+PiBzaG91bGQgaXQgYmUgIlslbGx1LCAlbHUpIj8NCj4gDQo+IElmIHRo ZSBmaWxlIGV4dGVudCBzaXplIG1hdGNoZXMgaW5saW5lX29mZnNldCwgdGhlbiBpdCdzIGFuIGVt cHR5IGlubGluZQ0KPiBmaWxlIGV4dGVudCwgd2hpY2ggaXMgbm90IHZhbGlkLg0KPiBTbyBsZWZ0 IHNpZGUgbXVzdCBiZSAnKCcuDQo+IA0KPiBGb3IgdGhlIHJpZ2h0IHNpZGUsIGl0IGNhbiB0YWtl IHRoZSB3aG9sZSBsZWFmLCBlLmcuIGZvciA0SyBub2Rlc2l6ZS4NCj4gDQo+IFNvIGl0J3MgKCVs bHUsICVsdV0uDQo+IA0KDQpSZXZpZXdlZC1ieTogU3UgWXVlIDxEYW1lbmx5X1N1QGdteC5jb20+ DQoNCj4gVGhhbmtzLA0KPiBRdQ0KPj4NCj4+IFRoYW5rcy4NCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnRyZnNfaXRlbV9zaXplX25yKGJ1ZiwgaSksDQo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlubGluZV9vZmZzZXQsDQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJUUkZTX0xFQUZfREFU QV9TSVpFKGZzX2luZm8pKTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnRpbnVlOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZmkgPSBidHJmc19pdGVtX3B0cihidWYsIGksDQo+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBidHJmc19m aWxlX2V4dGVudF9pdGVtKTsNCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJ0 cmZzX2ZpbGVfZXh0ZW50X3R5cGUoYnVmLCBmaSkgPT0NCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCVFJGU19GSUxFX0VYVEVOVF9JTkxJTkUpDQo+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4gKw0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIFByZWFsbG9jL3JlZ3VsYXIgZXh0ZW50IG11c3QgaGF2ZSBmaXhl ZCBpdGVtIHNpemUgKi8NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYnRyZnNfaXRl bV9zaXplX25yKGJ1ZiwgaSkgIT0NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNpemVvZihzdHJ1Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSkpIHsNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FVUNMRUFOOw0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IoDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImlu dmFsaWQgZmlsZSBleHRlbnQgaXRlbSBzaXplLCBoYXZlICV1IGV4cGVjdCAlenUiLA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidHJmc19pdGVtX3NpemVfbnIo YnVmLCBpKSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6 ZW9mKHN0cnVjdCBidHJmc19maWxlX2V4dGVudF9pdGVtKSk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoga2V5Lm9mZnNldCAoZmlsZSBvZmZzZXQp IG11c3QgYmUgYWxpZ25lZCAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghSVNf QUxJR05FRChrZXkub2Zmc2V0LCBmc19pbmZvLT5zZWN0b3JzaXplKSkgew0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVVQ0xFQU47DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJvcigNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi aW52YWxpZCBmaWxlIG9mZnNldCwgaGF2ZSAlbGx1IGV4cGVjdCBhbGlnbmVkIHRvICV1IiwNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2V5Lm9mZnNldCwgZnNf aW5mby0+c2VjdG9yc2l6ZSk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b250aW51ZTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChidHJmc19maWxlX2V4dGVudF9kaXNrX2J5dGVucihidWYsIGZp KSA9PSAwKQ0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Ow0KPj4+DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGFfYnl0ZXNfYWxsb2Nh dGVkICs9DQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnRyZnNfZmls ZV9leHRlbnRfZGlza19udW1fYnl0ZXMoYnVmLCBmaSk7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGRhdGFfYnl0ZXNfYWxsb2NhdGVkIDwgcm9vdC0+ZnNfaW5mby0+c2VjdG9yc2l6 ZSkNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFib3J0KCk7DQo+Pj4NCj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YV9ieXRlc19yZWZlcmVuY2VkICs9DQo+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnRyZnNfZmlsZV9leHRlbnRf bnVtX2J5dGVzKGJ1ZiwgZmkpOw0KPj4+DQo+Pg0KPiANCg0K