From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:47408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gmg7r-00030p-Cf for qemu-devel@nongnu.org; Thu, 24 Jan 2019 09:37:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gmg7p-0002l7-PP for qemu-devel@nongnu.org; Thu, 24 Jan 2019 09:37:03 -0500 From: Vladimir Sementsov-Ogievskiy Date: Thu, 24 Jan 2019 14:36:50 +0000 Message-ID: <62aa7f86-4ac7-0eeb-9e9d-30cb6ff229de@virtuozzo.com> References: <20190110132048.49451-1-vsementsov@virtuozzo.com> <20190111104126.GC5010@dhcp-200-186.str.redhat.com> <20190122185740.GC5220@localhost.localdomain> <4474e54a-1c60-a04b-e404-ad8e570edc1d@virtuozzo.com> <20190123163303.GC5748@linux.fritz.box> In-Reply-To: <20190123163303.GC5748@linux.fritz.box> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <47F648A7FAE04845A4B42848562EB6DE@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] block: don't probe zeroes in bs->file by default on block_status List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: "qemu-devel@nongnu.org" , "qemu-block@nongnu.org" , "armbru@redhat.com" , "eblake@redhat.com" , "fam@euphon.net" , "stefanha@redhat.com" , "mreitz@redhat.com" , "pbonzini@redhat.com" , Denis Lunev MjMuMDEuMjAxOSAxOTozMywgS2V2aW4gV29sZiB3cm90ZToNCj4gQW0gMjMuMDEuMjAxOSB1bSAx Mjo1MyBoYXQgVmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSBnZXNjaHJpZWJlbjoNCj4+IDIy LjAxLjIwMTkgMjE6NTcsIEtldmluIFdvbGYgd3JvdGU6DQo+Pj4gQW0gMTEuMDEuMjAxOSB1bSAx Mjo0MCBoYXQgVmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSBnZXNjaHJpZWJlbjoNCj4+Pj4g MTEuMDEuMjAxOSAxMzo0MSwgS2V2aW4gV29sZiB3cm90ZToNCj4+Pj4+IEFtIDEwLjAxLjIwMTkg dW0gMTQ6MjAgaGF0IFZsYWRpbWlyIFNlbWVudHNvdi1PZ2lldnNraXkgZ2VzY2hyaWViZW46DQo+ Pj4+Pj4gZHJ2X2NvX2Jsb2NrX3N0YXR1cyBkaWdzIGJzLT5maWxlIGZvciBhZGRpdGlvbmFsLCBt b3JlIGFjY3VyYXRlIHNlYXJjaA0KPj4+Pj4+IGZvciBob2xlIGluc2lkZSByZWdpb24sIHJlcG9y dGVkIGFzIERBVEEgYnkgYnMgc2luY2UgNWRhYTc0YTZlYmMuDQo+Pj4+Pj4NCj4+Pj4+PiBUaGlz IGFjY3VyYWN5IGlzIG5vdCBmcmVlOiBhc3N1bWUgd2UgaGF2ZSBxY293MiBkaXNrLiBBY3R1YWxs eSwgcWNvdzINCj4+Pj4+PiBrbm93cywgd2hlcmUgYXJlIGhvbGVzIGFuZCB3aGVyZSBpcyBkYXRh LiBCdXQgZXZlcnkgYmxvY2tfc3RhdHVzDQo+Pj4+Pj4gcmVxdWVzdCBjYWxscyBsc2VlayBhZGRp dGlvbmFsbHkuIEFzc3VtZSBhIGJpZyBkaXNrLCBmdWxsIG9mDQo+Pj4+Pj4gZGF0YSwgaW4gYW55 IGl0ZXJhdGl2ZSBjb3B5aW5nIGJsb2NrIGpvYiAob3IgaW1nIGNvbnZlcnQpIHdlJ2xsIGNhbGwN Cj4+Pj4+PiBsc2VlayhIT0xFKSBvbiBldmVyeSBpdGVyYXRpb24sIGFuZCBlYWNoIG9mIHRoZXNl IGxzZWVrcyB3aWxsIGhhdmUgdG8NCj4+Pj4+PiBpdGVyYXRlIHRocm91Z2ggYWxsIG1ldGFkYXRh IHVwIHRvIHRoZSBlbmQgb2YgZmlsZS4gSXQncyBvYnZpb3VzbHkNCj4+Pj4+PiBpbmVmZmVjdGl2 ZSBiZWhhdmlvci4gQW5kIGZvciBtYW55IHNjZW5hcmlvcyB3ZSBkb24ndCBuZWVkIHRoaXMgbHNl ZWsNCj4+Pj4+PiBhdCBhbGwuDQo+Pj4+Pj4NCj4+Pj4+PiBTbywgbGV0J3MgIjVkYWE3NGE2ZWJj IiBieSBkZWZhdWx0LCBsZWF2aW5nIGFuIG9wdGlvbiB0byByZXR1cm4NCj4+Pj4+PiBwcmV2aW91 cyBiZWhhdmlvciwgd2hpY2ggaXMgbmVlZGVkIGZvciBzY2VuYXJpb3Mgd2l0aCBwcmVhbGxvY2F0 ZWQNCj4+Pj4+PiBpbWFnZXMuDQo+Pj4+Pj4NCj4+Pj4+PiBBZGQgaW90ZXN0IGlsbHVzdHJhdGlu ZyBuZXcgb3B0aW9uIHNlbWFudGljcy4NCj4+Pj4+Pg0KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFZs YWRpbWlyIFNlbWVudHNvdi1PZ2lldnNraXkgPHZzZW1lbnRzb3ZAdmlydHVvenpvLmNvbT4NCj4+ Pj4+DQo+Pj4+PiBJIHN0aWxsIHRoaW5rIHRoYXQgYW4gb3B0aW9uIGlzbid0IGEgZ29vZCBzb2x1 dGlvbiBhbmQgd2Ugc2hvdWxkIHRyeSB1c2UNCj4+Pj4+IHNvbWUgaGV1cmlzdGljcyBpbnN0ZWFk Lg0KPj4+Pg0KPj4+PiBEbyB5b3UgdGhpbmsgdGhhdCBoZXVyaXN0aWNzIHdvdWxkIGJlIGJldHRl ciB0aGFuIGZhaXIgY2FjaGUgZm9yIGxzZWVrIHJlc3VsdHM/DQo+Pj4NCj4+PiBJIGp1c3QgcGxh eWVkIGEgYml0IHdpdGggdGhpcyAocWVtdS1pbWcgY29udmVydCBvbmx5KSwgYW5kIGhvdyBtdWNo DQo+Pj4gY2FjaGluZyBsc2VlaygpIHJlc3VsdHMgaGVscHMgZGVwZW5kcyBjb21wbGV0ZWx5IG9u IHRoZSBpbWFnZS4gQXMgaXQNCj4+PiBoYXBwZW5lZCwgbXkgdGVzdCBpbWFnZSB3YXMgdGhlIHdv cnN0IGNhc2Ugd2hlcmUgY2FjaGluZyBkaWRuJ3QgYnV5IHVzDQo+Pj4gbXVjaC4gT2J2aW91c2x5 LCBJIGNhbiBqdXN0IGFzIGVhc2lseSBjb25zdHJ1Y3QgYW4gaW1hZ2Ugd2hlcmUgaXQgbWFrZXMN Cj4+PiBhIGh1Z2UgZGlmZmVyZW5jZS4gSSB0aGluayB0aGF0IG1vc3QgcmVhbC13b3JsZCBpbWFn ZXMgc2hvdWxkIGJlIGFibGUgdG8NCj4+PiB0YWtlIGdvb2QgYWR2YW50YWdlIG9mIGl0LCB0aG91 Z2gsIGFuZCBpdCBkb2Vzbid0IGh1cnQsIHNvIG1heWJlIHRoYXQncw0KPj4+IGEgZmlyc3QgdGhp bmcgdGhhdCB3ZSBjYW4gZG8gaW4gYW55IGNhc2UuIEl0IG1pZ2h0IG5vdCBiZSB0aGUgY29tcGxl dGUNCj4+PiBzb2x1dGlvbiwgdGhvdWdoLg0KPj4+DQo+Pj4gTGV0IG1lIGV4cGxhaW4gbXkgdGVz dCBpbWFnZXM6IFRoZSBjYXNlIHdoZXJlIGFsbCBvZiB0aGlzIGFjdHVhbGx5DQo+Pj4gbWF0dGVy cyBmb3IgcWVtdS1pbWcgY29udmVydCBpcyBmcmFnbWVudGVkIHFjb3cyIGltYWdlcy4gSWYgeW91 ciBpbWFnZQ0KPj4+IGlzbid0IGZyYWdtZW50ZWQsIHdlIGRvbid0IGRvIGxzZWVrKCkgYSBsb3Qg YW55d2F5IGJlY2F1c2UgYSBzaW5nbGUNCj4+PiBiZHJ2X2Jsb2NrX3N0YXR1cygpIGNhbGwgYWxy ZWFkeSBnaXZlcyB5b3UgdGhlIGluZm9ybWF0aW9uIGZvciB0aGUgd2hvbGUNCj4+PiBpbWFnZS4g U28gSSBjb25zdHJ1Y3RlZCBhIGZyYWdtZW50ZWQgaW1hZ2UsIGJ5IHdyaXRpbmcgdG8gaXQgYmFj a3dhcmRzOg0KPj4+DQo+Pj4gLi9xZW11LWltZyBjcmVhdGUgLWYgcWNvdzIgL3RtcC90ZXN0LnFj b3cyIDFHDQo+Pj4gZm9yIGkgaW4gJChzZXEgMTYzODQgLTEgMCk7IGRvDQo+Pj4gICAgICAgZWNo byAid3JpdGUgJCgoaSAqIDY1NTM2KSkgNjRrIg0KPj4+IGRvbmUgfCAuL3FlbXUtaW8gL3RtcC90 ZXN0LnFjb3cyDQo+Pj4NCj4+PiBJdCdzIG5vdCByZWFsbHkgc3VycHJpc2luZyB0aGF0IGNhY2hp bmcgdGhlIGxzZWVrKCkgcmVzdWx0cyBkb2Vzbid0IGhlbHANCj4+PiBtdWNoIHRoZXJlIGFzIHdl J3JlIG1vdmluZyBiYWNrd2FyZHMgYW5kIGxzZWVrKCkgb25seSByZXR1cm5zIHJlc3VsdHMNCj4+ PiBhYm91dCB0aGUgdGhpbmdzIGFmdGVyIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBub3QgYmVmb3Jl IHRoZSBjdXJyZW50DQo+Pj4gcG9zaXRpb24uIFNvIHRoaXMgaXMgcHJvYmFibHkgdGhlIHdvcnN0 IGNhc2UuDQo+Pj4NCj4+PiBTbyBJIGNvbnN0cnVjdGVkIGEgc2Vjb25kIGltYWdlLCB3aGljaCBp cyBmcmFnbWVudGVkLCB0b28sIGJ1dCBzdGFydHMgYXQNCj4+PiB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBpbWFnZSBmaWxlOg0KPj4+DQo+Pj4gLi9xZW11LWltZyBjcmVhdGUgLWYgcWNvdzIgL3RtcC90 ZXN0X2ZvcndhcmQucWNvdzIgMUcNCj4+PiBmb3IgaSBpbiAkKHNlcSAwIDIgMTYzODQpOyBkbw0K Pj4+ICAgICAgIGVjaG8gIndyaXRlICQoKGkgKiA2NTUzNikpIDY0ayINCj4+PiBkb25lIHwgLi9x ZW11LWlvIC90bXAvdGVzdF9mb3J3YXJkLnFjb3cyDQo+Pj4gZm9yIGkgaW4gJChzZXEgMSAyIDE2 Mzg0KTsgZG8NCj4+PiAgICAgICBlY2hvICJ3cml0ZSAkKChpICogNjU1MzYpKSA2NGsiDQo+Pj4g ZG9uZSB8IC4vcWVtdS1pbyAvdG1wL3Rlc3RfZm9yd2FyZC5xY293Mg0KPj4+DQo+Pj4gSGVyZSBj YWNoaW5nIG1ha2VzIGEgaHVnZSBkaWZmZXJlbmNlOg0KPj4+DQo+Pj4gICAgICAgdGltZSAuL3Fl bXUtaW1nIGNvbnZlcnQgLXAgLW4gJElNRyBudWxsLWNvOi8vDQo+Pj4NCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuY2FjaGVkICAgICAgICBjYWNoZWQNCj4+PiAgICAgICB0ZXN0LnFj b3cyICAgICAgICAgICAgIH4xNDVzICAgICAgICAgfjcwcw0KPj4+ICAgICAgIHRlc3RfZm9yd2Fy ZC5xY293MiAgICAgfjExMHMgICAgICAgIH4wLjJzDQo+Pg0KPj4gVW5zdXJlIGFib3V0IHlvdXIg cmVzdWx0cywgYXQgbGVhc3QgMC4ycyBtZWFucywgdGhhdCB3ZSBiZW5lZml0IGZyb20NCj4+IGNh Y2hlZCByZWFkLCBub3QgbHNlZWsuDQo+IA0KPiBZZXMsIGFsbCByZWFkcyBhcmUgZnJvbSB0aGUg a2VybmVsIHBhZ2UgY2FjaGUsIHRoaXMgaXMgb24gdG1wZnMuDQo+IA0KPiBJIGNob3NlIHRtcGZz IGZvciB0d28gcmVhc29uczogSSB3YW50ZWQgdG8gZ2V0IGV4cGVuc2l2ZSBJL08gb3V0IG9mIHRo ZQ0KPiB3YXkgc28gdGhhdCB0aGUgbHNlZWsoKSBwZXJmb3JtYW5jZSBpcyBldmVuIHZpc2libGU7 IGFuZCB0bXBmcyB3YXMNCj4gcmVwb3J0ZWQgdG8gcGVyZm9ybSBlc3BlY2lhbGx5IGJhZCBmb3Ig U0VFS19EQVRBL0hPTEUgKHdoaWNoIG15IHJlc3VsdHMNCj4gY29uZmlybSkuIFNvIHllcywgdGhp cyBzZXR1cCByZWFsbHkgbWFrZXMgdGhlIGxzZWVrKCkgY2FsbHMgc3RhbmQgb3V0DQo+IG11Y2gg bW9yZSB0aGFuIGluIHRoZSBjb21tb24gY2FzZSAod2hpY2ggbWFrZXMgc2Vuc2Ugd2hlbiB5b3Ug d2FudCB0bw0KPiBmaXggdGhlIG92ZXJoZWFkIGludHJvZHVjZWQgYnkgdGhlbSkuDQoNCk9rLCBt aXNzZWQgdGhpcy4gT24gdGhlIG90aGVyIGhhbmQgdG1wZnMgaXMgbm90IGEgcmVhbCBwcm9kdWN0 aW9uIGNhc2UuLg0KDQo+IA0KPj4gPSBteSByZXN1bHRzID0NCj4+DQo+PiBpbiBzaG9ydDoNCj4+ DQo+PiB1bmNhY2hlZCByZWFkOg0KPj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSst LS0tLS0rLS0tLS0tLS0rDQo+PiB8ICAgICAgICAgICAgICB8IG1hc3RlciB8IHlvdSAgfCAgbWUg IHwgbWFzdGVyIHwNCj4+ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0t LS0tLS0tKw0KPj4gfCB0ZXN0ICAgICAgICAgfCAgIDMwLjQgfCAzMi42IHwgMzMuOSB8ICAgMzIu NCB8DQo+PiB8IHRlc3RfZm9yd2FyZCB8ICAgMjguMyB8IDMzLjUgfCAzMi45IHwgICAzMi44IHwN Cj4+ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKw0KPj4N Cj4+ICgneW91JyBpcyB5b3VyIHBhdGNoLCAnbWUnIGlzIG15IHNpbXBsZSBwYXRjaCwgc2VlIGJl bG93KQ0KPj4NCj4+IChJIHJldGVzdGVkIG1hc3RlciwgYXMgZmlyc3QgdGVzdCBydW4gc2VlbWVk IG5vdGljZWFibGUgZmFzdGVyIHRoYW4gcGF0Y2hlZCkNCj4+IFNvLCBObyBzaWduaWZpY2FudCBk aWZmZXJlbmNlIG1heSBiZSBub3RpY2VkIChpZiBpZ25vcmUgZmlyc3QgcnVuOikuIE9yIEkgbmVl ZCBhIGxvdCBtb3JlIHRlc3QgcnVucywNCj4+IHRvIGNhbGN1bGF0ZSB0aGUgYXZlcmFnZS4NCj4+ IEhvd2V2ZXIsIEkgZG9uJ3QgZXhwZWN0IGFueSBkaWZmZXJlbmNlIGhlcmUsIEknbSBhZnJhaWQg dGhhdCBsc2VlaygpIHRpbWUgYmVjb21lcyBub3RpY2VhYmxlIGluDQo+PiBjb21wYXJpc29uIHdp dGggcmVhZCgpIGZvciBhIGxvdCBsYXJnZXIgZGlza3MuDQo+PiBBbHNvLCBwcm9ibGVtcyBvZiBs c2VlayBhcmUgbW9zdGx5IHJlbGF0ZWQgdG8gbHNlZWsgYnVncywgbm93IHNlZW1zIHRoYXQgbXkg a2VybmVsIGlzIG5vdCBidWdneS4uDQo+PiBXaGF0IGtlcm5lbCBhbmQgZnMgZG8geW91IHVzZSB0 byBnZXQgc3VjaCBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiBjYWNoZWQvdW5jYWNo ZWQgbHNlZWs/DQo+IA0KPiAkIHVuYW1lIC1yDQo+IDQuMjAuMy0yMDAuZmMyOS54ODZfNjQNCg0K SSBqdXN0IGRpZG4ndCBndWVzcyBvciBtaXNzZWQgdGhhdCB5b3UgcnVuIHRlc3RzIG9uIHRtcHMu DQoNCj4gDQo+PiBPbiB0aGUgb3RoZXIgaGFuZCwgcmVzdWx0cyB3aXRoIGNhY2hlZCByZWFkIGFy ZSBtb3JlIGludGVyZXN0aW5nOg0KPj4NCj4+ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0rLS0tLS0tKy0tLS0tLS0tKw0KPj4gfCAgICAgICAgICAgICAgfCBtYXN0ZXIgfCB5b3UgIHwg IG1lICB8IG1hc3RlciB8DQo+PiArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tKy0tLS0t LSstLS0tLS0tLSsNCj4+IHwgdGVzdCAgICAgICAgIHwgICAwLjI0IHwgMC4yMCB8IDAuMTYgfCAg IDAuMjQgfA0KPj4gfCB0ZXN0X2ZvcndhcmQgfCAgIDAuMjQgfCAwLjE2IHwgMC4xNiB8ICAgMC4y NCB8DQo+PiArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSsN Cj4+DQo+PiBBbmQgdGhleSBzaG93LCB0aGF0IG15IHBhdGNoIHdpbnMuIFNvIG5vIGxzZWVrcyA9 IG5vIHByb2JsZW1zLg0KPiANCj4gVGhpcyBpcyBub3Qgc3VycHJpc2luZy4gWW91IGluY2x1ZGVk IHRoZSB3b3JzdCBjYXNlIGZvciBteSBwYXRjaCwgYnV0DQo+IG5vdCB0aGUgd29yc3QgY2FzZSBm b3IgeW91ciBwYXRjaC4gSWYgSSBpbmNsdWRlIHRoYXQsIHRvbywgSSBnZXQ6DQo+IA0KPiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsN Cj4gfCAgICAgICAgICAgICAgICAgfCAgIG1hc3RlciAgIHwgIG5vIGxzZWVrICB8IGNhY2hlZCBs c2VlayB8DQo+ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKw0KPiB8IG9uIHRtcGZzOiAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICAgICAgICAgIHwNCj4gfCAgIHRlc3QgICAgICAgICAgfCAgICAgICAgMTE1IHwg ICAgICAgMC4xNiB8ICAgICAgICAgICA1OCB8DQo+IHwgICB0ZXN0X2ZvcndhcmQgIHwgICAgICAg IDExNSB8ICAgICAgIDAuMTYgfCAgICAgICAgIDAuMTYgfA0KPiB8ICAgdGVzdF9wcmVhbGxvYyB8 ICAgICAgIDAuMDcgfCAgICAgICAwLjY1IHwgICAgICAgICAwLjA3IHwNCj4gKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rDQo+IHwgb24g eGZzICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfA0K PiB8ICAgdGVzdCAgICAgICAgICB8ICAgICAgIDAuMjAgfCAgICAgICAwLjE2IHwgICAgICAgICAw LjE4IHwNCj4gfCAgIHRlc3RfZm9yd2FyZCAgfCAgICAgICAwLjIwIHwgICAgICAgMC4xNiB8ICAg ICAgICAgMC4xNiB8DQo+IHwgICB0ZXN0X3ByZWFsbG9jIHwgICAgICAgMC4wNyB8ICAgICAgIDAu NzMgfCAgICAgICAgIDAuMDcgfA0KPiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsNCj4gfCBvbiB4ZnMsIC1UIG5vbmUgfCAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICB8DQo+IHwgICB0ZXN0ICAgICAgICAgIHwg ICAgICAgMS4zMyB8ICAgICAgIDEuMzEgfCAgICAgICAgIDEuMzMgfA0KPiB8ICAgdGVzdF9mb3J3 YXJkICB8ICAgICAgIDEuMDAgfCAgICAgICAxLjAwIHwgICAgICAgICAxLjAwIHwNCj4gfCAgIHRl c3RfcHJlYWxsb2MgfCAgICAgICAwLjA4IHwgICAgICAgMC42NSB8ICAgICAgICAgMC4wOCB8DQo+ ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKw0KPiANCj4gdGVzdF9wcmVhbGxvYyBpcyBhbiBlbXB0eSBpbWFnZSB3aXRoIG1ldGFkYXRh IHByZWFsbG9jYXRpb246DQo+IA0KPiAkIC4vcWVtdS1pbWcgY3JlYXRlIC1mIHFjb3cyIC1vIHBy ZWFsbG9jYXRpb249bWV0YWRhdGEgfi90bXAvdGVzdF9wcmVhbGxvYy5xY293MiAxRw0KPiANCj4g U28geW91ciBwYXRjaCBpcyBhIGNsZWFyIHdpbm5lciBmb3IgdGVzdCBvbiB0bXBmcywgYnV0IGFs c28gYSBjbGVhcg0KPiBsb3NlciBmb3IgdGVzdF9wcmVhbGxvYyBvbiBhbGwgYmFja2VuZHMuIE90 aGVyd2lzZSwgSSBkb24ndCBzZWUgbXVjaCBvZg0KPiBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2Uu DQoNClllcywgb2YgY291cnNlLg0KDQo+IA0KPj4gTW9yZW92ZXIsIGtlZXBpbmcgaW4gbWluZCwg dGhhdCB3ZSBpbiBWaXJ0dW96em8gZG9uJ3QgaGF2ZSBzY2VuYXJpb3MsDQo+PiB3aGVyZSB3ZSds bCBiZW5lZml0IGZyb20gbHNlZWtzLCBhbmQgYWZ0ZXIgdHdvIHNsb3ctbHNlZWsgYnVncywgaXQn cw0KPj4gZGVmaW5pdGVseSBzYWZlciBmb3IgbWUgdG8ganVzdCBrZWVwIG9uZSBvdXQtb2YtdHJl ZSBwYXRjaCwgdGhhbg0KPj4gcmVseSBvbiBsc2Vlay1jYWNoZSArIGxzZWVrLCB3aGljaCBib3Ro IGFyZSBub3QgbmVlZGVkIGluIG91ciBjYXNlLg0KPiANCj4gV2l0aCB3aGljaCBmaWxlc3lzdGVt cyBkaWQgeW91IGhhdmUgdGhvc2Ugc2xvdyBsc2VlayBidWdzPw0KDQpleHQ0LiBGb3IgZXhhbXBs ZSwgdGhlIGZpcnN0IGJ1ZyB3YXMgZml4ZWQgYnkgdGhpczoNCmh0dHBzOi8vd3d3LnNwaW5pY3Mu bmV0L2xpc3RzL2xpbnV4LWV4dDQvbXNnNTEzNDYuaHRtbA0KDQo+IA0KPiBJIG1lYW4sIEkgY2Fu IHVuZGVyc3RhbmQgeW91ciBwb2ludCB0aGF0IHlvdSdyZSBub3QgdXNpbmcgcHJlYWxsb2NhdGlv bg0KPiBhbnl3YXksIGJ1dCBmb3IgdXBzdHJlYW0sIHRoYXQncyBvYnZpb3VzbHkgbm90IGdvaW5n IHRvIHdvcmsuIE15DQo+IHByaW9yaXR5IGlzIGdldHRpbmcgc29tZXRoaW5nIHRoYXQgaW1wcm92 ZXMgdGhlIHNpdHVhdGlvbiBmb3IgZXZlcnlvbmUuDQo+IElmIHdlIHRoZW4gc3RpbGwgbmVlZCBh IHVzZXItdmlzaWJsZSBvcHRpb24gdG8gc3F1ZWV6ZSBvdXQgdGhlIGxhc3QNCj4gbWlsbGlzZWNv bmQsIHdlIGNhbiB0YWxrIGFib3V0IGl0LiBCdXQgdGhlIG9wdGlvbiBjYW4ndCBiZSB0aGUgcHJp bWFyeQ0KPiBzb2x1dGlvbiBmb3IgZXZlcnlvbmUuDQo+IA0KPj4gT2YtY291cnNlLCBsc2Vlay1j YWNoZSBpcyBhIGdvb2QgdGhpbmcsIGFuZCB5b3VyIHBhdGNoIHNlZW1zIHJlYXNvbmFibGUsDQo+ PiBidXQgSSdsbCBnbyB3aXRoIG15IHBhdGNoIGFueXdheSwgYW5kIEkgcHJvcG9zZWQgYW4gb3B0 aW9uIHRvIGJyaW5nDQo+PiBzdWNoIGJlaGF2aW9yIHRvIHVwc3RyZWFtLCBpZiBzb21lb25lIHdh bnRzIGl0Lg0KPiANCj4gT2theSwgaWYgeW91IHRoaW5rIGl0IG1ha2VzIHNlbnNlLCBJIGNhbiBw b3N0IGl0IGFzIGEgcHJvcGVyIHBhdGNoLg0KPiANCj4gS2V2aW4NCj4gDQoNCg0KLS0gDQpCZXN0 IHJlZ2FyZHMsDQpWbGFkaW1pcg0K