From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhaowuyun via Linux-f2fs-devel Subject: =?utf-8?b?562U5aSNOiBbUEFUQ0ggdjIgMS8yXSBta2ZzLmYyZnM6?= =?utf-8?q?_write_fill_chunk_in_sparse_file_for_zeroed_block?= Date: Wed, 15 May 2019 10:23:57 +0800 Message-ID: <001601d50ac5$40357d20$c0a07760$@wingtech.com> References: <000801d50a4f$a957dee0$fc079ca0$@wingtech.com> <390dd5c5-942c-315a-6c68-6213ad9efc05@huawei.com> Reply-To: zhaowuyun Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1hQjaa-0004kc-5k for linux-f2fs-devel@lists.sourceforge.net; Wed, 15 May 2019 02:24:16 +0000 Received: from mail.wingtech.com ([180.166.216.14]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA:256) (Exim 4.90_1) id 1hQjaX-004AFK-75 for linux-f2fs-devel@lists.sourceforge.net; Wed, 15 May 2019 02:24:16 +0000 In-Reply-To: <390dd5c5-942c-315a-6c68-6213ad9efc05@huawei.com> Content-Language: zh-cn List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: 'Chao Yu' , linux-f2fs-devel@lists.sourceforge.net Cc: jaegeuk@kernel.org WW91IGFyZSB3ZWxjb21lLiAgOikKCkJlc3QgV2lzaGVzLApaYWMgKHpoYW93dXl1bkB3aW5ndGVj aC5jb20pCgo+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0KPiDlj5Hku7bkuro6IENoYW8gWXUgW21h aWx0bzp5dWNoYW8wQGh1YXdlaS5jb21dCj4g5Y+R6YCB5pe26Ze0OiAyMDE55bm0NeaciDE15pel IDEwOjEwCj4g5pS25Lu25Lq6OiB6aGFvd3V5dW47IGxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291 cmNlZm9yZ2UubmV0Cj4g5oqE6YCBOiBqYWVnZXVrQGtlcm5lbC5vcmc7IGNoYW9Aa2VybmVsLm9y Zwo+IOS4u+mimDogUmU6IFtQQVRDSCB2MiAxLzJdIG1rZnMuZjJmczogd3JpdGUgZmlsbCBjaHVu ayBpbiBzcGFyc2UgZmlsZSBmb3IgemVyb2VkCj4gYmxvY2sKPiAKPiBIaSBXdXl1biwKPiAKPiBU aGFua3MgZm9yIHRoZSB0ZXN0IGZvciBib3RoIHNwYXJzZSBmaWxlIGVuaGFuY2VtZW50IHBhdGNo ZXMuIDopCj4gCj4gT24gMjAxOS81LzE0IDIwOjIyLCB6aGFvd3V5dW4gd3JvdGU6Cj4gPiBIaSBD aGFvLAo+ID4KPiA+IHVzaW5nIHRoZSBzYW1lIHN0ZXBzLAo+ID4gbWFrZSB0aGUgdXNlcmRhdGEg cGFydGl0aW9uIGRpcnR5IGFuZCBmYXN0Ym9vdC1mbGFzaCB1c2VyZGF0YS5pbWcgdG8KPiA+IHNl ZSB0aGUgbW91bnQgaXMgc3VjY2Vzc2Z1bCBvciBub3QKPiA+Cj4gPiB0byB0ZXN0IHRoZSBwYXRj aCwgY29uZmlybSB0aGF0IGlzc3VlIGlzIGZpeGVkIGJ5IHRoaXMgcGF0Y2guCj4gPiBIb3BlIHRv IHNlZSBpdCBhY2NlcHRlZC4KPiA+Cj4gPiBUZXN0ZWQtYnk6IHpoYW93dXl1biA8emhhb3d1eXVu QHdpbmd0ZWNoLmNvbT4KPiA+Cj4gPiBCZXN0IFdpc2hlcywKPiA+IFphYyAoemhhb3d1eXVuQHdp bmd0ZWNoLmNvbSkKPiA+Cj4gPj4KPiA+PiBBcyB6aGFvd3V5dW4gcmVwb3J0ZWQ6Cj4gPj4KPiA+ PiB3ZSBtZXQgb25lIHByb2JsZW0gb2YgZjJmcywgYW5kIGZvdW5kIG9uZSBpc3N1ZSBvZiBtYWtl X2YyZnMsIHNvIEkKPiA+PiB3cml0ZSB0aGlzIGVtYWlsIHRvIHNlYXJjaCBmb3IgeW91ciBoZWxw IHRvIGNvbmZpcm0gdGhpcyBpc3N1ZS4KPiA+Pgo+ID4+IFRoZSBpc3N1ZSB3YXMgZm91bmQgb24g b25lIG9mIEFuZHJvaWQgcHJvamVjdHMuIFdlIHVzZSBmMmZzIGFzIHRoZQo+ID4+IGZpbGVzeXN0 ZW0gb2YgdXNlcmRhdGEsIGFuZCBtYWtlIHNwYXJzZSB1c2VyZGF0YS5pbWcgdXNpbmcgZm9sbG93 aW5nCj4gPj4gY29tbWFuZCwgd2hpY2ggaW52b2tlZCBpbiBzY3JpcHQgbWtmMmZzdXNlcmltZy5z aCBtYWtlX2YyZnMgLVMgJFNJWkUKPiA+PiAtZiAtTyBlbmNyeXB0IC1PIHF1b3RhIC1PIHZlcml0 eSAkTUtGU19PUFRTICRPVVRQVVRfRklMRQo+ID4+Cj4gPj4gdXNlIGZhc3Rib290IHRvIGZsYXNo IHRoaXMgdXNlcmRhdGEuaW1nIHRvIGRldmljZSwgYW5kIGl0IGVuY291bnRlcmVkCj4gPj4gZjJm cyBwcm9ibGVtIGFuZCBsZWFkaW5nIHRvIHRoZSBtb3VudCBmYWlsIG9mIGRhdGEgcGFydGl0aW9u Lgo+ID4+Cj4gPj4gd2UgY2FuIG1ha2UgdGhpcyBpc3N1ZSAxMDAlIHBlcnNlbnQgcmVwcm9kdWNl ZCBieSBtYWtpbmcgdGhlIGRhdGEKPiA+PiBwYXJ0aXRpb24gZGlydHkgYmVmb3JlIGZsYXNoaW5n IHVzZXJkYXRhLmltZy4KPiA+Pgo+ID4+IHN1c3BlY3QgdGhhdCBpc3N1ZSBpcyBjYXVzZWQgYnkg dGhlIGRpcnR5IGRhdGEgaW4gdGhlIGRhdGEgcGFydGl0aW9uLgo+ID4+IHNvIHdlIGNoZWNrZWQg dGhhdCBzb3VyY2UgY29kZSBvZiBtYWtlX2YyZnMgaW4gZjJmcy10b29sLCBmb3VuZCB0aGF0Cj4g Pj4gd2hlbiBtYWtpbmcgZjJmcywgaXQgdXNlIGRldl9maWxsIHRvIGRvIHNvbWUgcHJvY2VzczoK PiA+Pgo+ID4+IC4uLgo+ID4+Cj4gPj4gd2UgY2hhbmdlIGNvZGUgdG8gdGhlIGZvbGxvd2luZywg YW5kIHRoZSBpc3N1ZSBpcyBnb25lLgo+ID4+Cj4gPj4gaWYgKGMuc3BhcnNlX21vZGUpCj4gPj4g ICAgICAgIHJldHVybiBkZXZfd3JpdGUoYnVmLCBvZmZzZXQsIGxlbik7Cj4gPj4KPiA+PiBDaGFv IFl1Ogo+ID4+Pgo+ID4+PiBBZnRlciBjaGVja2luZyB0aGUgY29kZXMsIElJVUMsIEkgZ3Vlc3Mg dGhlIHByb2JsZW0gaGVyZSBpcywgdW5saWtlCj4gPj4+IGltZzJzaW1nLCBta2ZzLmYyZnMgd29u J3QgcmVjb3JkIHplcm9lZCBibG9jayBpbiBzcGFyc2UgaW1hZ2UsIHNvCj4gPj4+IGR1cmluZyB0 cmFuc2Zvcm1pbmcgdG8gbm9ybWFsIGltYWdlLCBzb21lIGNyaXRpY2FsIHJlZ2lvbiBsaWtlCj4g Pj4+IE5BVC9TSVQvQ1AucGF5bG9hZCBhcmVhIHdlcmVuJ3QgYmUgemVyb2VkIGNvcnJlY3RseSwg bGF0ZXIga2VybmVsCj4gPj4+IG1heSBsb2FkIG9ic29sZXRpbmcgZGF0YSBmcm9tIHRob3NlIHJl Z2lvbi4KPiA+Pj4KPiA+Pj4gQWxzbywgVGhlIHdheSB5b3UgcHJvdmlkZSB3aWxsIG9idmlvdXNs eSBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBzcGFyc2UKPiA+Pj4gZmlsZSwgc2luY2Ugd2l0aCBpdCB3 ZSBuZWVkIHRvIHdyaXRlIGFsbCB6ZXJvZWQgYmxvY2tzIG9mCj4gPj4+IE5BVC9TSVQvQ1AucGF5 bG9hZCB0byBzcGFyc2UgZmlsZSwgaXQncyBub3QgbmVlZGVkLgo+ID4+Pgo+ID4+PiBOb3Qgc3Vy ZSwgbWF5YmUgd2Ugc2hvdWxkIHVzZSBzcGFyc2VfZmlsZV9hZGRfZmlsbCgpIHRvIHJlY29yZAo+ ID4+PiB6ZXJvZWQgYmxvY2tzLCBzbyB0aGF0IHRoaXMgd2lsbCBtYWtlIGZvcm1hdHRlZCBpbWFn ZSBtb3JlIGxpa2UKPiBpbWcyc2ltZ2VkIG9uZS4KPiA+Pgo+ID4+IEphZWdldWs6Cj4gPj4+IFdl IGhhdmUgdG8gY2FsbCBzcGFyc2VfZmlsZV9hZGRfZmlsbCgpIGZvciBkZXZfZmlsbCgpLgo+ID4+ Cj4gPj4gVGhpcyBwYXRjaCBmaXhlcyB0byBzdXBwb3J0IHdyaXRpbmcgZmlsbCBjaHVuayBzcGFy c2UgZmlsZSBmb3IgdGhvc2UKPiA+PiB6ZXJvZWQgYmxvY2tzIGluIG1rZnMuZjJmcy4KPiA+Pgo+ ID4+IFJlcG9ydGVkLWJ5OiB6aGFvd3V5dW4gPHpoYW93dXl1bkB3aW5ndGVjaC5jb20+Cj4gPj4g U2lnbmVkLW9mZi1ieTogQ2hhbyBZdSA8eXVjaGFvMEBodWF3ZWkuY29tPgo+ID4+IC0tLQo+ID4+ IHYyOgo+ID4+IC0gZG9uJ3QgcmV0dXJuIC1FRVhJU1QgaWYgYmxvY2tbeF0gaGFzIG5vbi16ZXJv ZWQgZGF0YS4KPiA+PiAgbGliL2xpYmYyZnNfaW8uYyB8IDg0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0KPiAtLS0KPiA+PiAtLQo+ID4+ICAxIGZpbGUgY2hhbmdl ZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0 IGEvbGliL2xpYmYyZnNfaW8uYyBiL2xpYi9saWJmMmZzX2lvLmMgaW5kZXgKPiA+PiBmODQ4NTEw Li40ZDBlYTBkIDEwMDY0NAo+ID4+IC0tLSBhL2xpYi9saWJmMmZzX2lvLmMKPiA+PiArKysgYi9s aWIvbGliZjJmc19pby5jCj4gPj4gQEAgLTM2LDYgKzM2LDcgQEAgc3RydWN0IGYyZnNfY29uZmln dXJhdGlvbiBjOyAgc3RydWN0IHNwYXJzZV9maWxlCj4gPj4gKmYyZnNfc3BhcnNlX2ZpbGU7ICBz dGF0aWMgY2hhciAqKmJsb2NrczsgIHVfaW50NjRfdCBibG9ja3NfY291bnQ7Cj4gPj4gK3N0YXRp YyBjaGFyICp6ZXJvZWRfYmxvY2s7Cj4gPj4gICNlbmRpZgo+ID4+Cj4gPj4gIHN0YXRpYyBpbnQg X19nZXRfZGV2aWNlX2ZkKF9fdTY0ICpvZmZzZXQpIEBAIC0xMDMsNiArMTA0LDggQEAgc3RhdGlj Cj4gPj4gaW50Cj4gPj4gc3BhcnNlX3dyaXRlX2JsayhfX3U2NCBibG9jaywgaW50IGNvdW50LCBj b25zdCB2b2lkICpidWYpCj4gPj4KPiA+PiAgCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7 Cj4gPj4gIAkJY3VyX2Jsb2NrID0gYmxvY2sgKyBpOwo+ID4+ICsJCWlmIChibG9ja3NbY3VyX2Js b2NrXSA9PSB6ZXJvZWRfYmxvY2spCj4gPj4gKwkJCWJsb2Nrc1tjdXJfYmxvY2tdID0gTlVMTDsK PiA+PiAgCQlpZiAoIWJsb2Nrc1tjdXJfYmxvY2tdKSB7Cj4gPj4gIAkJCWJsb2Nrc1tjdXJfYmxv Y2tdID0gY2FsbG9jKDEsIEYyRlNfQkxLU0laRSk7Cj4gPj4gIAkJCWlmICghYmxvY2tzW2N1cl9i bG9ja10pCj4gPj4gQEAgLTExNCw2ICsxMTcsMjAgQEAgc3RhdGljIGludCBzcGFyc2Vfd3JpdGVf YmxrKF9fdTY0IGJsb2NrLCBpbnQKPiA+PiBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQo+ID4+ICAJ cmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+ICtzdGF0aWMgaW50IHNwYXJzZV93cml0ZV96ZXJv ZWRfYmxrKF9fdTY0IGJsb2NrLCBpbnQgY291bnQpIHsKPiA+PiArCWludCBpOwo+ID4+ICsJX191 NjQgY3VyX2Jsb2NrOwo+ID4+ICsKPiA+PiArCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7 Cj4gPj4gKwkJY3VyX2Jsb2NrID0gYmxvY2sgKyBpOwo+ID4+ICsJCWlmIChibG9ja3NbY3VyX2Js b2NrXSkKPiA+PiArCQkJY29udGludWU7Cj4gPj4gKwkJYmxvY2tzW2N1cl9ibG9ja10gPSB6ZXJv ZWRfYmxvY2s7Cj4gPj4gKwl9Cj4gPj4gKwlyZXR1cm4gMDsKPiA+PiArfQo+ID4+ICsKPiA+PiAg I2lmZGVmIFNQQVJTRV9DQUxMQkFDS19VU0VTX1NJWkVfVAo+ID4+ICBzdGF0aWMgaW50IHNwYXJz ZV9pbXBvcnRfc2VnbWVudCh2b2lkICpVTlVTRUQocHJpdiksIGNvbnN0IHZvaWQgKmRhdGEsCj4g Pj4gIAkJc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGJsb2NrLCB1bnNpZ25lZCBpbnQgbnJfYmxv Y2tzKSBAQCAtCj4gPj4gMTI5LDExICsxNDYsMTcgQEAgc3RhdGljIGludCBzcGFyc2VfaW1wb3J0 X3NlZ21lbnQodm9pZAo+ID4+ICpVTlVTRUQocHJpdiksIGNvbnN0IHZvaWQgKmRhdGEsIGludCBs ZW4sCj4gPj4gIAlyZXR1cm4gc3BhcnNlX3dyaXRlX2JsayhibG9jaywgbnJfYmxvY2tzLCBkYXRh KTsgIH0KPiA+Pgo+ID4+IC1zdGF0aWMgaW50IHNwYXJzZV9tZXJnZV9ibG9ja3ModWludDY0X3Qg c3RhcnQsIHVpbnQ2NF90IG51bSkKPiA+PiArc3RhdGljIGludCBzcGFyc2VfbWVyZ2VfYmxvY2tz KHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBudW0sIGludAo+ID4+ICt6ZXJvKQo+ID4+ICB7Cj4g Pj4gIAljaGFyICpidWY7Cj4gPj4gIAl1aW50NjRfdCBpOwo+ID4+Cj4gPj4gKwlpZiAoemVybykg ewo+ID4+ICsJCWJsb2Nrc1tzdGFydF0gPSBOVUxMOwo+ID4+ICsJCXJldHVybiBzcGFyc2VfZmls ZV9hZGRfZmlsbChmMmZzX3NwYXJzZV9maWxlLCAweDAsCj4gPj4gKwkJCQkJRjJGU19CTEtTSVpF ICogbnVtLCBzdGFydCk7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICAJYnVmID0gY2FsbG9jKG51bSwg RjJGU19CTEtTSVpFKTsKPiA+PiAgCWlmICghYnVmKSB7Cj4gPj4gIAkJZnByaW50ZihzdGRlcnIs ICJmYWlsZWQgdG8gYWxsb2MgJWxsdVxuIiwgQEAgLTE1Niw2ICsxNzksNyBAQAo+ID4+IHN0YXRp YyBpbnQgc3BhcnNlX21lcmdlX2Jsb2Nrcyh1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbnVtKSAg I2Vsc2UKPiA+PiBzdGF0aWMgaW50Cj4gPj4gc3BhcnNlX3JlYWRfYmxrKF9fdTY0IGJsb2NrLCBp bnQgY291bnQsIHZvaWQgKmJ1ZikgeyByZXR1cm4gMDsgfQo+ID4+IHN0YXRpYyBpbnQKPiA+PiBz cGFyc2Vfd3JpdGVfYmxrKF9fdTY0IGJsb2NrLCBpbnQgY291bnQsIGNvbnN0IHZvaWQgKmJ1Zikg eyByZXR1cm4gMDsKPiA+PiB9Cj4gPj4gK3N0YXRpYyBpbnQgc3BhcnNlX3dyaXRlX3plcm9lZF9i bGsoX191NjQgYmxvY2ssIGludCBjb3VudCkgeyByZXR1cm4KPiA+PiArMDsgfQo+ID4+ICAjZW5k aWYKPiA+Pgo+ID4+ICBpbnQgZGV2X3JlYWQodm9pZCAqYnVmLCBfX3U2NCBvZmZzZXQsIHNpemVf dCBsZW4pIEBAIC0yMzUsNyArMjU5LDgKPiA+PiBAQCBpbnQgZGV2X2ZpbGwodm9pZCAqYnVmLCBf X3U2NCBvZmZzZXQsIHNpemVfdCBsZW4pCj4gPj4gIAlpbnQgZmQ7Cj4gPj4KPiA+PiAgCWlmIChj LnNwYXJzZV9tb2RlKQo+ID4+IC0JCXJldHVybiAwOwo+ID4+ICsJCXJldHVybiBzcGFyc2Vfd3Jp dGVfemVyb2VkX2JsayhvZmZzZXQgLyBGMkZTX0JMS1NJWkUsCj4gPj4gKwkJCQkJCWxlbiAvIEYy RlNfQkxLU0laRSk7Cj4gPj4KPiA+PiAgCWZkID0gX19nZXRfZGV2aWNlX2ZkKCZvZmZzZXQpOwo+ ID4+ICAJaWYgKGZkIDwgMCkKPiA+PiBAQCAtMzA3LDYgKzMzMiwxMiBAQCBpbnQgZjJmc19pbml0 X3NwYXJzZV9maWxlKHZvaWQpCj4gPj4gIAkJcmV0dXJuIC0xOwo+ID4+ICAJfQo+ID4+Cj4gPj4g Kwl6ZXJvZWRfYmxvY2sgPSBjYWxsb2MoMSwgRjJGU19CTEtTSVpFKTsKPiA+PiArCWlmICghemVy b2VkX2Jsb2NrKSB7Cj4gPj4gKwkJTVNHKDAsICJcdEVycm9yOiBDYWxsb2MgRmFpbGVkIGZvciB6 ZXJvZWQgYmxvY2shISFcbiIpOwo+ID4+ICsJCXJldHVybiAtMTsKPiA+PiArCX0KPiA+PiArCj4g Pj4gIAlyZXR1cm4gc3BhcnNlX2ZpbGVfZm9yZWFjaF9jaHVuayhmMmZzX3NwYXJzZV9maWxlLCB0 cnVlLCBmYWxzZSwKPiA+PiAgCQkJCXNwYXJzZV9pbXBvcnRfc2VnbWVudCwgTlVMTCk7Cj4gPj4g ICNlbHNlCj4gPj4gQEAgLTMxNSw3ICszNDYsOCBAQCBpbnQgZjJmc19pbml0X3NwYXJzZV9maWxl KHZvaWQpICAjZW5kaWYgIH0KPiA+Pgo+ID4+IC0jZGVmaW5lIE1BWF9DSFVOS19TSVpFICgxICog MTAyNCAqIDEwMjQgKiAxMDI0VUxMKQo+ID4+ICsjZGVmaW5lIE1BWF9DSFVOS19TSVpFCQkoMSAq IDEwMjQgKiAxMDI0ICogMTAyNFVMTCkKPiA+PiArI2RlZmluZSBNQVhfQ0hVTktfQ09VTlQJCShN QVhfQ0hVTktfU0laRSAvCj4gPj4gRjJGU19CTEtTSVpFKQo+ID4+ICBpbnQgZjJmc19maW5hbGl6 ZV9kZXZpY2Uodm9pZCkKPiA+PiAgewo+ID4+ICAJaW50IGk7Cj4gPj4gQEAgLTMzNiwyNCArMzY4 LDQ0IEBAIGludCBmMmZzX2ZpbmFsaXplX2RldmljZSh2b2lkKQo+ID4+ICAJCX0KPiA+Pgo+ID4+ ICAJCWZvciAoaiA9IDA7IGogPCBibG9ja3NfY291bnQ7ICsraikgewo+ID4+IC0JCQlpZiAoIWJs b2Nrc1tqXSAmJiBjaHVua19zdGFydCAhPSAtMSkgewo+ID4+IC0JCQkJcmV0ID0gc3BhcnNlX21l cmdlX2Jsb2NrcyhjaHVua19zdGFydCwKPiA+PiAtCQkJCQkJCWogLSBjaHVua19zdGFydCk7Cj4g Pj4gLQkJCQljaHVua19zdGFydCA9IC0xOwo+ID4+IC0JCQl9IGVsc2UgaWYgKGJsb2Nrc1tqXSAm JiBjaHVua19zdGFydCA9PSAtMSkgewo+ID4+IC0JCQkJY2h1bmtfc3RhcnQgPSBqOwo+ID4+IC0J CQl9IGVsc2UgaWYgKGJsb2Nrc1tqXSAmJiAoY2h1bmtfc3RhcnQgIT0gLTEpICYmCj4gPj4gLQkJ CQkgKGogKyAxIC0gY2h1bmtfc3RhcnQgPj0KPiA+PiAtCQkJCQkoTUFYX0NIVU5LX1NJWkUgLyBG MkZTX0JMS1NJWkUpKSkKPiA+PiB7Cj4gPj4gKwkJCWlmIChjaHVua19zdGFydCAhPSAtMSkgewo+ ID4+ICsJCQkJaWYgKGogLSBjaHVua19zdGFydCA+PSBNQVhfQ0hVTktfQ09VTlQpIHsKPiA+PiAr CQkJCQlyZXQgPQo+ID4+IHNwYXJzZV9tZXJnZV9ibG9ja3MoY2h1bmtfc3RhcnQsCj4gPj4gKwkJ CQkJCQlqIC0gY2h1bmtfc3RhcnQsIDApOwo+ID4+ICsJCQkJCUFTU0VSVCghcmV0KTsKPiA+PiAr CQkJCQljaHVua19zdGFydCA9IC0xOwo+ID4+ICsJCQkJfQo+ID4+ICsJCQl9Cj4gPj4gKwo+ID4+ ICsJCQlpZiAoY2h1bmtfc3RhcnQgPT0gLTEpIHsKPiA+PiArCQkJCWlmICghYmxvY2tzW2pdKQo+ ID4+ICsJCQkJCWNvbnRpbnVlOwo+ID4+ICsKPiA+PiArCQkJCWlmIChibG9ja3Nbal0gPT0gemVy b2VkX2Jsb2NrKSB7Cj4gPj4gKwkJCQkJcmV0ID0gc3BhcnNlX21lcmdlX2Jsb2NrcyhqLCAxLCAx KTsKPiA+PiArCQkJCQlBU1NFUlQoIXJldCk7Cj4gPj4gKwkJCQl9IGVsc2Ugewo+ID4+ICsJCQkJ CWNodW5rX3N0YXJ0ID0gajsKPiA+PiArCQkJCX0KPiA+PiArCQkJfSBlbHNlIHsKPiA+PiArCQkJ CWlmIChibG9ja3Nbal0gJiYgYmxvY2tzW2pdICE9IHplcm9lZF9ibG9jaykKPiA+PiArCQkJCQlj b250aW51ZTsKPiA+PiArCj4gPj4gIAkJCQlyZXQgPSBzcGFyc2VfbWVyZ2VfYmxvY2tzKGNodW5r X3N0YXJ0LAo+ID4+IC0JCQkJCQkJICBqICsgMSAtIGNodW5rX3N0YXJ0KTsKPiA+PiArCQkJCQkJ aiAtIGNodW5rX3N0YXJ0LCAwKTsKPiA+PiArCQkJCUFTU0VSVCghcmV0KTsKPiA+PiArCj4gPj4g KwkJCQlpZiAoYmxvY2tzW2pdID09IHplcm9lZF9ibG9jaykgewo+ID4+ICsJCQkJCXJldCA9IHNw YXJzZV9tZXJnZV9ibG9ja3MoaiwgMSwgMSk7Cj4gPj4gKwkJCQkJQVNTRVJUKCFyZXQpOwo+ID4+ ICsJCQkJfQo+ID4+ICsKPiA+PiAgCQkJCWNodW5rX3N0YXJ0ID0gLTE7Cj4gPj4gIAkJCX0KPiA+ PiAtCQkJQVNTRVJUKCFyZXQpOwo+ID4+ICAJCX0KPiA+PiAgCQlpZiAoY2h1bmtfc3RhcnQgIT0g LTEpIHsKPiA+PiAgCQkJcmV0ID0gc3BhcnNlX21lcmdlX2Jsb2NrcyhjaHVua19zdGFydCwKPiA+ PiAtCQkJCQkJYmxvY2tzX2NvdW50IC0gY2h1bmtfc3RhcnQpOwo+ID4+ICsJCQkJCQlibG9ja3Nf Y291bnQgLSBjaHVua19zdGFydCwKPiA+PiAwKTsKPiA+PiAgCQkJQVNTRVJUKCFyZXQpOwo+ID4+ ICAJCX0KPiA+Pgo+ID4+IEBAIC0zNjUsNiArNDE3LDggQEAgaW50IGYyZnNfZmluYWxpemVfZGV2 aWNlKHZvaWQpCj4gPj4gIAkJCWZyZWUoYmxvY2tzW2pdKTsKPiA+PiAgCQlmcmVlKGJsb2Nrcyk7 Cj4gPj4gIAkJYmxvY2tzID0gTlVMTDsKPiA+PiArCQlmcmVlKHplcm9lZF9ibG9jayk7Cj4gPj4g KwkJemVyb2VkX2Jsb2NrID0gTlVMTDsKPiA+PiAgCQlmMmZzX3NwYXJzZV9maWxlID0gTlVMTDsK PiA+PiAgCX0KPiA+PiAgI2VuZGlmCj4gPj4gLS0KPiA+PiAyLjE4LjAucmMxCj4gPgo+ID4gLgo+ ID4KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vm b3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGlu dXgtZjJmcy1kZXZlbAo=