From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhanghaoyu (A)" Subject: Re: vm performance degradation after kvm live migration or save-restore with EPT enabled Date: Tue, 20 Aug 2013 13:33:33 +0000 Message-ID: References: <20130729234716.GA8136@amt.cnet> <20130801061650.GJ7484@redhat.com> <20130805084309.GE2258@redhat.com> <20130805093747.GJ2258@redhat.com> <20130807055223.GG15901@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Marcelo Tosatti , "Huangweidong \(C\)" , KVM , "Michael S. Tsirkin" , "paolo.bonzini@gmail.com" , Xiejunyong , Luonengjun , qemu-devel , Xiahai , Zanghongyong , Xin Rong Fu , Yi Li , "xiaoguangrong@linux.vnet.ibm.com" , Bruce Rogers , Hanweidong , =?utf-8?B?QW5kcmVhcyBGw6RyYmVy?= To: "Zhanghaoyu (A)" , Gleb Natapov , Eric Blake , "pl@kamp.de" , Paolo Bonzini Return-path: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org Pj4+ID4+PiBUaGUgUUVNVSBjb21tYW5kIGxpbmUgKC92YXIvbG9nL2xpYnZpcnQvcWVtdS9bZG9t YWluIG5hbWVdLmxvZyksIA0KPj4+ID4+PiBMQ19BTEw9QyBQQVRIPS9iaW46L3NiaW46L3Vzci9i aW46L3Vzci9zYmluIEhPTUU9LyANCj4+PiA+Pj4gUUVNVV9BVURJT19EUlY9bm9uZQ0KPj4+ID4+ PiAvdXNyL2xvY2FsL2Jpbi9xZW11LXN5c3RlbS14ODZfNjQgLW5hbWUgQVRTMSAtUyAtTSBwYy0w LjEyIC1jcHUNCj4+PiA+Pj4gcWVtdTMyIC1lbmFibGUta3ZtIC1tIDEyMjg4IC1zbXAgNCxzb2Nr ZXRzPTQsY29yZXM9MSx0aHJlYWRzPTEgDQo+Pj4gPj4+IC11dWlkDQo+Pj4gPj4+IDA1MDVlYzkx LTM4MmQtODAwZS0yYzc5LWU1YjI4NmViNjBiNSAtbm8tdXNlci1jb25maWcgLW5vZGVmYXVsdHMg DQo+Pj4gPj4+IC1jaGFyZGV2IA0KPj4+ID4+PiBzb2NrZXQsaWQ9Y2hhcm1vbml0b3IscGF0aD0v dmFyL2xpYi9saWJ2aXJ0L3FlbXUvQVRTMS5tb25pdG9yLHNlcg0KPj4+ID4+PiB2ZXIsIG4gb3dh aXQgLW1vbiBjaGFyZGV2PWNoYXJtb25pdG9yLGlkPW1vbml0b3IsbW9kZT1jb250cm9sIA0KPj4+ ID4+PiAtcnRjIGJhc2U9bG9jYWx0aW1lIC1uby1zaHV0ZG93biAtZGV2aWNlDQo+Pj4gPj4+IHBp aXgzLXVzYi11aGNpLGlkPXVzYixidXM9cGNpLjAsYWRkcj0weDEuMHgyIC1kcml2ZSANCj4+PiA+ Pj4gZmlsZT0vb3B0L25lL3ZtL0FUUzEuaW1nLGlmPW5vbmUsaWQ9ZHJpdmUtdmlydGlvLWRpc2sw LGZvcm1hdD1yYXcNCj4+PiA+Pj4gLGNhYw0KPj4+ID4+PiBoDQo+Pj4gPj4+IGU9bm9uZSAtZGV2 aWNlDQo+Pj4gPj4+IHZpcnRpby1ibGstcGNpLHNjc2k9b2ZmLGJ1cz1wY2kuMCxhZGRyPTB4OCxk cml2ZT1kcml2ZS12aXJ0aW8tZGlzDQo+Pj4gPj4+IGswLGkNCj4+PiA+Pj4gZA0KPj4+ID4+PiA9 dmlydGlvLWRpc2swLGJvb3RpbmRleD0xIC1uZXRkZXYNCj4+PiA+Pj4gdGFwLGZkPTIwLGlkPWhv c3RuZXQwLHZob3N0PW9uLHZob3N0ZmQ9MjEgLWRldmljZSANCj4+PiA+Pj4gdmlydGlvLW5ldC1w Y2ksbmV0ZGV2PWhvc3RuZXQwLGlkPW5ldDAsbWFjPTAwOmUwOmZjOjAwOjBmOjAwLGJ1cz1wY2ku DQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHgzLGJvb3RpbmRleD0yIC1uZXRkZXYNCj4+PiA+ Pj4gdGFwLGZkPTIyLGlkPWhvc3RuZXQxLHZob3N0PW9uLHZob3N0ZmQ9MjMgLWRldmljZSANCj4+ PiA+Pj4gdmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQxLGlkPW5ldDEsbWFjPTAwOmUwOmZj OjAxOjBmOjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg0IC1uZXRkZXYg dGFwLGZkPTI0LGlkPWhvc3RuZXQyLHZob3N0PW9uLHZob3N0ZmQ9MjUgDQo+Pj4gPj4+IC1kZXZp Y2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQyLGlkPW5ldDIsbWFjPTAwOmUwOmZjOjAy OjBmOjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg1IC1uZXRkZXYgdGFw LGZkPTI2LGlkPWhvc3RuZXQzLHZob3N0PW9uLHZob3N0ZmQ9MjcgDQo+Pj4gPj4+IC1kZXZpY2Ug dmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQzLGlkPW5ldDMsbWFjPTAwOmUwOmZjOjAzOjBm OjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg2IC1uZXRkZXYgdGFwLGZk PTI4LGlkPWhvc3RuZXQ0LHZob3N0PW9uLHZob3N0ZmQ9MjkgDQo+Pj4gPj4+IC1kZXZpY2Ugdmly dGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQ0LGlkPW5ldDQsbWFjPTAwOmUwOmZjOjBhOjBmOjAw LGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg3IC1uZXRkZXYgdGFwLGZkPTMw LGlkPWhvc3RuZXQ1LHZob3N0PW9uLHZob3N0ZmQ9MzEgDQo+Pj4gPj4+IC1kZXZpY2UgdmlydGlv LW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQ1LGlkPW5ldDUsbWFjPTAwOmUwOmZjOjBiOjBmOjAwLGJ1 cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg5IC1jaGFyZGV2IHB0eSxpZD1jaGFy c2VyaWFsMCAtZGV2aWNlIA0KPj4+ID4+PiBpc2Etc2VyaWFsLGNoYXJkZXY9Y2hhcnNlcmlhbDAs aWQ9c2VyaWFsMCAtdm5jICo6MCAtayBlbi11cyAtdmdhIA0KPj4+ID4+PiBjaXJydXMgLWRldmlj ZSBpNjMwMGVzYixpZD13YXRjaGRvZzAsYnVzPXBjaS4wLGFkZHI9MHhiDQo+Pj4gPj4+IC13YXRj aGRvZy1hY3Rpb24gcG93ZXJvZmYgLWRldmljZSANCj4+PiA+Pj4gdmlydGlvLWJhbGxvb24tcGNp LGlkPWJhbGxvb24wLGJ1cz1wY2kuMCxhZGRyPTB4YQ0KPj4+ID4+PiANCj4+PiA+PldoaWNoIFFF TVUgdmVyc2lvbiBpcyB0aGlzPyBDYW4geW91IHRyeSB3aXRoIGUxMDAwIE5JQ3MgaW5zdGVhZCBv ZiB2aXJ0aW8/DQo+Pj4gPj4NCj4+PiA+VGhpcyBRRU1VIHZlcnNpb24gaXMgMS4wLjAsIGJ1dCBJ IGFsc28gdGVzdCBRRU1VIDEuNS4yLCB0aGUgc2FtZSBwcm9ibGVtIGV4aXN0cywgaW5jbHVkaW5n IHRoZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBhbmQgcmVhZG9ubHkgR0ZOcycgZmxvb2Rpbmcu DQo+Pj4gPkkgdHJpZWQgd2l0aCBlMTAwMCBOSUNzIGluc3RlYWQgb2YgdmlydGlvLCBpbmNsdWRp bmcgdGhlIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGFuZCByZWFkb25seSBHRk5zJyBmbG9vZGlu ZywgdGhlIFFFTVUgdmVyc2lvbiBpcyAxLjUuMi4NCj4+PiA+Tm8gbWF0dGVyIGUxMDAwIE5JQ3Mg b3IgdmlydGlvIE5JQ3MsIHRoZSBHRk5zJyBmbG9vZGluZyBpcyBpbml0aWF0ZWQgYXQgcG9zdC1y ZXN0b3JlIHN0YWdlIChpLmUuIHJ1bm5pbmcgc3RhZ2UpLCBhcyBzb29uIGFzIHRoZSByZXN0b3Jp bmcgY29tcGxldGVkLCB0aGUgZmxvb2RpbmcgaXMgc3RhcnRpbmcuDQo+Pj4gPg0KPj4+ID5UaGFu a3MsDQo+Pj4gPlpoYW5nIEhhb3l1DQo+Pj4gPg0KPj4+ID4+LS0NCj4+PiA+PgkJCUdsZWIuDQo+ Pj4gDQo+Pj4gU2hvdWxkIHdlIGZvY3VzIG9uIHRoZSBmaXJzdCBiYWQgY29tbWl0KDYxMjgxOWMz YzZlNjdiYWM4ZmNlYWE3Y2M0MDJmMTNiMWI2M2Y3ZTQpIGFuZCB0aGUgc3VycHJpc2luZyBHRk5z JyBmbG9vZGluZz8NCj4+PiANCj4+Tm90IHJlYWxseS4gVGhlcmUgaXMgbm8gcG9pbnQgaW4gZGVi dWdnaW5nIHZlcnkgb2xkIHZlcnNpb24gY29tcGlsZWQgDQo+PndpdGgga3ZtLWttb2QsIHRoZXJl IGFyZSB0byBtYW55IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQuIEkgY2Fubm90IA0KPj5y ZXByb2R1Y2UgdGhlIEdGTiBmbG9vZGluZyBvbiB1cHN0cmVhbSwgc28gdGhlIHByb2JsZW0gbWF5 IGJlIGdvbmUsIG1heSANCj4+YmUgYSByZXN1bHQgb2Yga3ZtLWttb2QgcHJvYmxlbSBvciBzb21l dGhpbmcgZGlmZmVyZW50IGluIGhvdyBJIGludm9rZSANCj4+cWVtdS4gU28gdGhlIGJlc3Qgd2F5 IHRvIHByb2NlZWQgaXMgZm9yIHlvdSB0byByZXByb2R1Y2Ugd2l0aCB1cHN0cmVhbSANCj4+dmVy c2lvbiB0aGVuIGF0IGxlYXN0IEkgd2lsbCBiZSBzdXJlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBz YW1lIGNvZGUuDQo+Pg0KPlRoYW5rcywgSSB3aWxsIHRlc3QgdGhlIGNvbWJvcyBvZiB1cHN0cmVh bSBrdm0ga2VybmVsIGFuZCB1cHN0cmVhbSBxZW11Lg0KPkFuZCwgdGhlIGd1ZXN0IG9zIHZlcnNp b24gYWJvdmUgSSBzYWlkIHdhcyB3cm9uZywgY3VycmVudCBydW5uaW5nIGd1ZXN0IG9zIGlzIFNM RVMxMFNQNC4NCj4NCkkgdGVzdGVkIGJlbG93IGNvbWJvcyBvZiBxZW11IGFuZCBrZXJuZWwsDQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBrdm0ga2VybmVsICAgICB8ICAgICAgUUVNVSAgICAgICB8ICAgdGVzdCByZXN1bHQgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBrdm0tMy4xMS0yICAgICB8ICAgcWVtdS0xLjUuMiAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjAuMCAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjQuMCAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjQuMiAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8IHFlbXUtMS41LjAtcmMwICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMCAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMSAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMiAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQpO T1RFOg0KMS4gYWJvdmUga3ZtLTMuMTEtMiBpbiB0aGUgdGFibGUgaXMgdGhlIHdob2xlIHRhZyBr ZXJuZWwgZG93bmxvYWQgZnJvbSBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdmlydC9r dm0va3ZtLmdpdA0KMi4gU0xFUzExU1AyJ3Mga2VybmVsIHZlcnNpb24gaXMgMy4wLjEzLTAuMjcN Cg0KVGhlbiBJIGdpdCBiaXNlY3QgdGhlIHFlbXUgY2hhbmdlcyBiZXR3ZWVuIHFlbXUtMS40LjIg YW5kIHFlbXUtMS41LjAtcmMwIGJ5IG1hcmtpbmcgdGhlIGdvb2QgdmVyc2lvbiBhcyBiYWQsIGFu ZCB0aGUgYmFkIHZlcnNpb24gYXMgZ29vZCwNCnNvIHRoZSBmaXJzdCBiYWQgY29tbWl0IGlzIGp1 c3QgdGhlIHBhdGNoIHdoaWNoIGZpeGVzIHRoZSBkZWdyYWRhdGlvbiBwcm9ibGVtLg0KKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCBiaXNlY3QgTm8uIHwgICAgICAgICAg ICAgICAgICBjb21taXQgICAgICAgICAgICAgICAgICAgfCAgc2F2ZS1yZXN0b3JlICAgfCAgICBt aWdyYXRpb24gICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAg ICAgIDEgICAgIHwgMDNlOTRlMzljZTUyNTllZmRiZGVlZmExZjI0OWRkYjQ5OWQ1NzMyMSAgfCAg ICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDIgICAgIHwgOTk4MzVlMDA4NDkzNjliYWI3MjZhNGRj NGNlZWQxZjZmOWVkOTY3YyAgfCAgICAgIEdPT0QgICAgICAgfCAgICAgICBHT09EICAgICAgfA0K Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDMgICAgIHwgNjJl MWFlYWVlNGQwNDUwMjIyYTBlYTQzYzcxM2I1OTUyNmUzZTBmZSAgfCAgICAgIEJBRCAgICAgICAg fCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Kw0KfCAgICAgIDQgICAgIHwgOWQ5ODAxY2Y4MDNjZGNlYWE0ODQ1ZmUyNzE1MGIyNGQ1YWIwODNl NiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDUgICAgIHwgZDc2YmI3MzU0OWZjYWMwNzUy NGFlYTUxMzUyODBlYTUzM2E5NGZkNiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAg ICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDYgICAg IHwgZDkxMzgyOWYwZmQ4NDUxYWJjYjFmZDlkNmRmY2U1NTg2ZDlkN2UxMCAgfCAgICAgIEdPT0Qg ICAgICAgfCAgICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKw0KfCAgICAgIDcgICAgIHwgZDJmMzhhMGFjYjBhMWM1YjdhYjc2MjFhMzJkNjAzZDA4 ZDUxM2JlYSAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDggICAgIHwgZTM0NGI4YTE2ZGU0 MjlhZGEzZDkxMjZmMjZlMmE5NmQ3MTM0ODM1NiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBC QUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAg IDkgICAgIHwgNTZkZWQ3MDhlYzM4ZTRjYjc1YTdjNzM1NzQ4MGNhMzRjMGRjNjg3NSAgfCAgICAg IEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKw0KfCAgICAgIDEwICAgIHwgNzhkMDdhZTdhYzc0YmNjN2Y3OWFlZWZiYWZm MTdmYjE0MmY0NGI0ZCAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDExICAgIHwgNzBjODY1 MmJmM2MxZmVhNzliN2I2ODg2NGU4NjkyNjcxNWM0OTI2MSAgfCAgICAgIEdPT0QgICAgICAgfCAg ICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0K fCAgICAgIDEyICAgIHwgZjFjNzI3OTVhZjU3M2IyNGE3ZGE1ZWI1MjM3NWM5YWJhOGEzNzk3MiAg fCAgICAgIEdPT0QgICAgICAgfCAgICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKw0KTk9URTogYWJvdmUgdGVzdHMgd2VyZSBtYWRlIG9uIFNMRVMx MVNQMi4NCg0KU28sIHRoZSBjb21taXQgZjFjNzI3OTVhZjU3M2IyNGE3ZGE1ZWI1MjM3NWM5YWJh OGEzNzk3MiBpcyBqdXN0IHRoZSBwYXRjaCB3aGljaCBmaXhlcyB0aGUgZGVncmFkYXRpb24uDQoN ClRoZW4sIEkgcmVwbGFjZSBTTEVTMTFTUDIncyBkZWZhdWx0IGt2bS1rbW9kIHdpdGgga3ZtLWtt b2QtMy42LCBhbmQgYXBwbGllZCBiZWxvdyBwYXRjaCB0byBfX2RpcmVjdF9tYXAoKSwNCkBAIC0y NTk5LDYgKzI1OTksOSBAQCBzdGF0aWMgaW50IF9fZGlyZWN0X21hcChzdHJ1Y3Qga3ZtX3ZjcHUN CiAgICAgICAgaW50IGVtdWxhdGUgPSAwOw0KICAgICAgICBnZm5fdCBwc2V1ZG9fZ2ZuOw0KDQor ICAgICAgICBpZiAoIW1hcF93cml0YWJsZSkNCisgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5f RVJSICIlczogJXM6IGdmbiA9ICVsbHUgXG4iLCBfX0ZJTEVfXywgX19mdW5jX18sIGdmbik7DQor DQogICAgICAgIGZvcl9lYWNoX3NoYWRvd19lbnRyeSh2Y3B1LCAodTY0KWdmbiA8PCBQQUdFX1NI SUZULCBpdGVyYXRvcikgew0KICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5sZXZlbCA9PSBs ZXZlbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHRlX2FjY2VzcyA9IEFD Q19BTEw7DQphbmQsIEkgcmVidWlsZCB0aGUga3ZtLWttb2QsIHRoZW4gcmUtaW5zbW9kIGl0LCB0 ZXN0IHRoZSBhZGphY2VudCBjb21taXRzIGFnYWluLCB0ZXN0IHJlc3VsdHMgc2hvd24gYXMgYmVs b3csDQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8IGJpc2VjdCBOby4g fCAgICAgICAgICAgICAgICAgIGNvbW1pdCAgICAgICAgICAgICAgICAgICB8ICBzYXZlLXJlc3Rv cmUgICB8ICAgIG1pZ3JhdGlvbiAgICB8DQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rDQp8ICAgICAgMTAgICAgfCA3OGQwN2FlN2FjNzRiY2M3Zjc5YWVlZmJhZmYxN2ZiMTQy ZjQ0YjRkICB8ICAgICAgQkFEICAgICAgICB8ICAgICAgIEJBRCAgICAgICB8DQorLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8ICAgICAgMTIgICAgfCBmMWM3Mjc5NWFmNTcz YjI0YTdkYTVlYjUyMzc1YzlhYmE4YTM3OTcyICB8ICAgICAgR09PRCAgICAgICB8ICAgICAgIEJB RCAgICAgICB8DQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQpXaGlsZSB0 ZXN0aW5nIGNvbW1pdCA3OGQwN2FlN2FjNzRiY2M3Zjc5YWVlZmJhZmYxN2ZiMTQyZjQ0YjRkLCBh cyBzb29uIGFzIHRoZSByZXN0b3JhdGlvbi9taWdyYXRpb24gY29tcGxldGUsIHRoZSBHRk5zIGZs b29kaW5nIGlzIHN0YXJ0aW5nLA0KdGFrZSBzb21lIGV4YW1wbGVzIHNob3duIGFzIGJlbG93LA0K MjA3MzQ2Mg0KMjg1NzIwMw0KMjA3MzQ2Mw0KMjA3MzQ2NA0KMjA3MzQ2NQ0KMzIxODc1MQ0KMjA3 MzQ2Ng0KMjg1NzIwNg0KMjg1NzIwNw0KMjA3MzQ2Nw0KMjA3MzQ2OA0KMjg1NzIxMA0KMjg1NzIx MQ0KMzIxODc1Mg0KMjg1NzIxNA0KMjg1NzIxNQ0KMzIxODc1Mw0KMjg1NzIxNw0KMjg1NzIxOA0K Mjg1NzIyMQ0KMjg1NzIyMg0KMzIxODc1NA0KMjg1NzIyNQ0KMjg1NzIyNg0KMzIxODc1NQ0KMjg1 NzIyOQ0KMjg1NzIzMA0KMjg1NzIzMg0KMjg1NzIzMw0KMzIxODc1Ng0KMjc4MDM5Mw0KMjc4MDM5 NA0KMjg1NzIzNg0KMjc4MDM5NQ0KMjg1NzIzNw0KMjc4MDM5Ng0KMjc4MDM5Nw0KMjc4MDM5OA0K Mjc4MDM5OQ0KMjc4MDQwMA0KMjc4MDQwMQ0KMzIxODc1Nw0KMjg1NzI0MA0KMjg1NzI0MQ0KMjg1 NzI0NA0KMzIxODc1OA0KMjg1NzI0Nw0KMjg1NzI0OA0KMjg1NzI1MQ0KMjg1NzI1Mg0KMzIxODc1 OQ0KMjg1NzI1NQ0KMjg1NzI1Ng0KMzIxODc2MA0KMjg1NzI4OQ0KMjg1NzI5MA0KMjg1NzI5Mw0K Mjg1NzI5NA0KMzIxODc2MQ0KMjg1NzI5Nw0KMjg1NzI5OA0KMzIxODc2Mg0KMzIxODc2Mw0KMzIx ODc2NA0KMzIxODc2NQ0KMzIxODc2Ng0KMzIxODc2Nw0KMzIxODc2OA0KMzIxODc2OQ0KMzIxODc3 MA0KMzIxODc3MQ0KMzIxODc3Mg0KDQpidXQsIGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUsIHRoZSBm bG9vZGluZyByYXRlIHNsb3dlZCBkb3duLg0KDQp3aGlsZSB0ZXN0aW5nIGNvbW1pdCBmMWM3Mjc5 NWFmNTczYjI0YTdkYTVlYjUyMzc1YzlhYmE4YTM3OTcyLCBhZnRlciByZXN0b3JhdGlvbiwgbm8g R0ZOIHdhcyBwcmludGVkLCBhbmQgbm8gcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uDQpidXQgYXMg c29vbiBhcyBsaXZlIG1pZ3JhdGlvbiBjb21wbGV0ZSwgR0ZOcyBmbG9vZGluZyBpcyBzdGFydGlu ZywgYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGFsc28gaGFwcGVuZWQuDQoNCk5PVEU6IFRo ZSB0ZXN0IHJlc3VsdHMgb2YgY29tbWl0IGYxYzcyNzk1YWY1NzNiMjRhN2RhNWViNTIzNzVjOWFi YThhMzc5NzIgc2VlbWVkIHRvIGJlIHVuc3RhYmxlLCBJIHdpbGwgbWFrZSB2ZXJpZmljYXRpb24g YWdhaW4uDQoNCg0KPlRoYW5rcywNCj5aaGFuZyBIYW95dQ0KPg0KPj4+IEkgYXBwbGllZCBiZWxv dyBwYXRjaCB0byAgX19kaXJlY3RfbWFwKCksIEBAIC0yMjIzLDYgKzIyMjMsOCBAQCANCj4+PiBz dGF0aWMgaW50IF9fZGlyZWN0X21hcChzdHJ1Y3Qga3ZtX3ZjcHUNCj4+PiAgICAgICAgIGludCBw dF93cml0ZSA9IDA7DQo+Pj4gICAgICAgICBnZm5fdCBwc2V1ZG9fZ2ZuOw0KPj4+IA0KPj4+ICsg ICAgICAgIG1hcF93cml0YWJsZSA9IHRydWU7DQo+Pj4gKw0KPj4+ICAgICAgICAgZm9yX2VhY2hf c2hhZG93X2VudHJ5KHZjcHUsICh1NjQpZ2ZuIDw8IFBBR0VfU0hJRlQsIGl0ZXJhdG9yKSB7DQo+ Pj4gICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5sZXZlbCA9PSBsZXZlbCkgew0KPj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB0ZV9hY2Nlc3MgPSBBQ0NfQUxMOyBhbmQg cmVidWlsZCANCj4+PiB0aGUga3ZtLWttb2QsIHRoZW4gcmUtaW5zbW9kIGl0Lg0KPj4+IEFmdGVy IEkgc3RhcnRlZCBhIFZNLCB0aGUgaG9zdCBzZWVtZWQgdG8gYmUgYWJub3JtYWwsIHNvIG1hbnkg cHJvZ3JhbXMgY2Fubm90IGJlIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCBzZWdtZW50YXRpb24gZmF1 bHQgaXMgcmVwb3J0ZWQuDQo+Pj4gSW4gbXkgb3BpbmlvbiwgYWZ0ZXIgYWJvdmUgcGF0Y2ggYXBw bGllZCwgdGhlIGNvbW1pdDogNjEyODE5YzNjNmU2N2JhYzhmY2VhYTdjYzQwMmYxM2IxYjYzZjdl NCBzaG91bGQgYmUgb2Ygbm8gZWZmZWN0LCBidXQgdGhlIHRlc3QgcmVzdWx0IHByb3ZlZCBtZSB3 cm9uZy4NCj4+PiBEb3NlIHRoZSBtYXBfd3JpdGFibGUgdmFsdWUncyBnZXR0aW5nIHByb2Nlc3Mg aW4gaHZhX3RvX3BmbigpIGhhdmUgZWZmZWN0IG9uIHRoZSByZXN1bHQ/DQo+Pj4gDQo+PklmIGh2 YV90b19wZm4oKSByZXR1cm5zIG1hcF93cml0YWJsZSA9PSBmYWxzZSBpdCBtZWFucyB0aGF0IHBh Z2UgaXMgDQo+Pm1hcHBlZCBhcyByZWFkIG9ubHkgb24gcHJpbWFyeSBNTVUsIHNvIGl0IHNob3Vs ZCBub3QgYmUgbWFwcGVkIHdyaXRhYmxlIA0KPj5vbiBzZWNvbmRhcnkgTU1VIGVpdGhlci4gVGhp cyBzaG91bGQgbm90IGhhcHBlbiB1c3VhbGx5Lg0KPj4NCj4+LS0NCj4+CQkJR2xlYi4NCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53338) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VBm4o-00030Y-U7 for qemu-devel@nongnu.org; Tue, 20 Aug 2013 09:34:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VBm4i-0007T0-Rg for qemu-devel@nongnu.org; Tue, 20 Aug 2013 09:34:26 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:27389) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VBm4h-0007Rx-LX for qemu-devel@nongnu.org; Tue, 20 Aug 2013 09:34:20 -0400 From: "Zhanghaoyu (A)" Date: Tue, 20 Aug 2013 13:33:33 +0000 Message-ID: References: <20130729234716.GA8136@amt.cnet> <20130801061650.GJ7484@redhat.com> <20130805084309.GE2258@redhat.com> <20130805093747.GJ2258@redhat.com> <20130807055223.GG15901@redhat.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] vm performance degradation after kvm live migration or save-restore with EPT enabled List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Zhanghaoyu (A)" , Gleb Natapov , Eric Blake , "pl@kamp.de" , Paolo Bonzini Cc: Marcelo Tosatti , "Huangweidong (C)" , KVM , "Michael S. Tsirkin" , "paolo.bonzini@gmail.com" , Xiejunyong , Luonengjun , qemu-devel , Xiahai , Zanghongyong , Xin Rong Fu , Yi Li , "xiaoguangrong@linux.vnet.ibm.com" , Bruce Rogers , Hanweidong , =?utf-8?B?QW5kcmVhcyBGw6RyYmVy?= Pj4+ID4+PiBUaGUgUUVNVSBjb21tYW5kIGxpbmUgKC92YXIvbG9nL2xpYnZpcnQvcWVtdS9bZG9t YWluIG5hbWVdLmxvZyksIA0KPj4+ID4+PiBMQ19BTEw9QyBQQVRIPS9iaW46L3NiaW46L3Vzci9i aW46L3Vzci9zYmluIEhPTUU9LyANCj4+PiA+Pj4gUUVNVV9BVURJT19EUlY9bm9uZQ0KPj4+ID4+ PiAvdXNyL2xvY2FsL2Jpbi9xZW11LXN5c3RlbS14ODZfNjQgLW5hbWUgQVRTMSAtUyAtTSBwYy0w LjEyIC1jcHUNCj4+PiA+Pj4gcWVtdTMyIC1lbmFibGUta3ZtIC1tIDEyMjg4IC1zbXAgNCxzb2Nr ZXRzPTQsY29yZXM9MSx0aHJlYWRzPTEgDQo+Pj4gPj4+IC11dWlkDQo+Pj4gPj4+IDA1MDVlYzkx LTM4MmQtODAwZS0yYzc5LWU1YjI4NmViNjBiNSAtbm8tdXNlci1jb25maWcgLW5vZGVmYXVsdHMg DQo+Pj4gPj4+IC1jaGFyZGV2IA0KPj4+ID4+PiBzb2NrZXQsaWQ9Y2hhcm1vbml0b3IscGF0aD0v dmFyL2xpYi9saWJ2aXJ0L3FlbXUvQVRTMS5tb25pdG9yLHNlcg0KPj4+ID4+PiB2ZXIsIG4gb3dh aXQgLW1vbiBjaGFyZGV2PWNoYXJtb25pdG9yLGlkPW1vbml0b3IsbW9kZT1jb250cm9sIA0KPj4+ ID4+PiAtcnRjIGJhc2U9bG9jYWx0aW1lIC1uby1zaHV0ZG93biAtZGV2aWNlDQo+Pj4gPj4+IHBp aXgzLXVzYi11aGNpLGlkPXVzYixidXM9cGNpLjAsYWRkcj0weDEuMHgyIC1kcml2ZSANCj4+PiA+ Pj4gZmlsZT0vb3B0L25lL3ZtL0FUUzEuaW1nLGlmPW5vbmUsaWQ9ZHJpdmUtdmlydGlvLWRpc2sw LGZvcm1hdD1yYXcNCj4+PiA+Pj4gLGNhYw0KPj4+ID4+PiBoDQo+Pj4gPj4+IGU9bm9uZSAtZGV2 aWNlDQo+Pj4gPj4+IHZpcnRpby1ibGstcGNpLHNjc2k9b2ZmLGJ1cz1wY2kuMCxhZGRyPTB4OCxk cml2ZT1kcml2ZS12aXJ0aW8tZGlzDQo+Pj4gPj4+IGswLGkNCj4+PiA+Pj4gZA0KPj4+ID4+PiA9 dmlydGlvLWRpc2swLGJvb3RpbmRleD0xIC1uZXRkZXYNCj4+PiA+Pj4gdGFwLGZkPTIwLGlkPWhv c3RuZXQwLHZob3N0PW9uLHZob3N0ZmQ9MjEgLWRldmljZSANCj4+PiA+Pj4gdmlydGlvLW5ldC1w Y2ksbmV0ZGV2PWhvc3RuZXQwLGlkPW5ldDAsbWFjPTAwOmUwOmZjOjAwOjBmOjAwLGJ1cz1wY2ku DQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHgzLGJvb3RpbmRleD0yIC1uZXRkZXYNCj4+PiA+ Pj4gdGFwLGZkPTIyLGlkPWhvc3RuZXQxLHZob3N0PW9uLHZob3N0ZmQ9MjMgLWRldmljZSANCj4+ PiA+Pj4gdmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQxLGlkPW5ldDEsbWFjPTAwOmUwOmZj OjAxOjBmOjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg0IC1uZXRkZXYg dGFwLGZkPTI0LGlkPWhvc3RuZXQyLHZob3N0PW9uLHZob3N0ZmQ9MjUgDQo+Pj4gPj4+IC1kZXZp Y2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQyLGlkPW5ldDIsbWFjPTAwOmUwOmZjOjAy OjBmOjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg1IC1uZXRkZXYgdGFw LGZkPTI2LGlkPWhvc3RuZXQzLHZob3N0PW9uLHZob3N0ZmQ9MjcgDQo+Pj4gPj4+IC1kZXZpY2Ug dmlydGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQzLGlkPW5ldDMsbWFjPTAwOmUwOmZjOjAzOjBm OjAwLGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg2IC1uZXRkZXYgdGFwLGZk PTI4LGlkPWhvc3RuZXQ0LHZob3N0PW9uLHZob3N0ZmQ9MjkgDQo+Pj4gPj4+IC1kZXZpY2Ugdmly dGlvLW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQ0LGlkPW5ldDQsbWFjPTAwOmUwOmZjOjBhOjBmOjAw LGJ1cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg3IC1uZXRkZXYgdGFwLGZkPTMw LGlkPWhvc3RuZXQ1LHZob3N0PW9uLHZob3N0ZmQ9MzEgDQo+Pj4gPj4+IC1kZXZpY2UgdmlydGlv LW5ldC1wY2ksbmV0ZGV2PWhvc3RuZXQ1LGlkPW5ldDUsbWFjPTAwOmUwOmZjOjBiOjBmOjAwLGJ1 cz1wY2kuDQo+Pj4gPj4+IDANCj4+PiA+Pj4gLGFkZHI9MHg5IC1jaGFyZGV2IHB0eSxpZD1jaGFy c2VyaWFsMCAtZGV2aWNlIA0KPj4+ID4+PiBpc2Etc2VyaWFsLGNoYXJkZXY9Y2hhcnNlcmlhbDAs aWQ9c2VyaWFsMCAtdm5jICo6MCAtayBlbi11cyAtdmdhIA0KPj4+ID4+PiBjaXJydXMgLWRldmlj ZSBpNjMwMGVzYixpZD13YXRjaGRvZzAsYnVzPXBjaS4wLGFkZHI9MHhiDQo+Pj4gPj4+IC13YXRj aGRvZy1hY3Rpb24gcG93ZXJvZmYgLWRldmljZSANCj4+PiA+Pj4gdmlydGlvLWJhbGxvb24tcGNp LGlkPWJhbGxvb24wLGJ1cz1wY2kuMCxhZGRyPTB4YQ0KPj4+ID4+PiANCj4+PiA+PldoaWNoIFFF TVUgdmVyc2lvbiBpcyB0aGlzPyBDYW4geW91IHRyeSB3aXRoIGUxMDAwIE5JQ3MgaW5zdGVhZCBv ZiB2aXJ0aW8/DQo+Pj4gPj4NCj4+PiA+VGhpcyBRRU1VIHZlcnNpb24gaXMgMS4wLjAsIGJ1dCBJ IGFsc28gdGVzdCBRRU1VIDEuNS4yLCB0aGUgc2FtZSBwcm9ibGVtIGV4aXN0cywgaW5jbHVkaW5n IHRoZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBhbmQgcmVhZG9ubHkgR0ZOcycgZmxvb2Rpbmcu DQo+Pj4gPkkgdHJpZWQgd2l0aCBlMTAwMCBOSUNzIGluc3RlYWQgb2YgdmlydGlvLCBpbmNsdWRp bmcgdGhlIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGFuZCByZWFkb25seSBHRk5zJyBmbG9vZGlu ZywgdGhlIFFFTVUgdmVyc2lvbiBpcyAxLjUuMi4NCj4+PiA+Tm8gbWF0dGVyIGUxMDAwIE5JQ3Mg b3IgdmlydGlvIE5JQ3MsIHRoZSBHRk5zJyBmbG9vZGluZyBpcyBpbml0aWF0ZWQgYXQgcG9zdC1y ZXN0b3JlIHN0YWdlIChpLmUuIHJ1bm5pbmcgc3RhZ2UpLCBhcyBzb29uIGFzIHRoZSByZXN0b3Jp bmcgY29tcGxldGVkLCB0aGUgZmxvb2RpbmcgaXMgc3RhcnRpbmcuDQo+Pj4gPg0KPj4+ID5UaGFu a3MsDQo+Pj4gPlpoYW5nIEhhb3l1DQo+Pj4gPg0KPj4+ID4+LS0NCj4+PiA+PgkJCUdsZWIuDQo+ Pj4gDQo+Pj4gU2hvdWxkIHdlIGZvY3VzIG9uIHRoZSBmaXJzdCBiYWQgY29tbWl0KDYxMjgxOWMz YzZlNjdiYWM4ZmNlYWE3Y2M0MDJmMTNiMWI2M2Y3ZTQpIGFuZCB0aGUgc3VycHJpc2luZyBHRk5z JyBmbG9vZGluZz8NCj4+PiANCj4+Tm90IHJlYWxseS4gVGhlcmUgaXMgbm8gcG9pbnQgaW4gZGVi dWdnaW5nIHZlcnkgb2xkIHZlcnNpb24gY29tcGlsZWQgDQo+PndpdGgga3ZtLWttb2QsIHRoZXJl IGFyZSB0byBtYW55IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQuIEkgY2Fubm90IA0KPj5y ZXByb2R1Y2UgdGhlIEdGTiBmbG9vZGluZyBvbiB1cHN0cmVhbSwgc28gdGhlIHByb2JsZW0gbWF5 IGJlIGdvbmUsIG1heSANCj4+YmUgYSByZXN1bHQgb2Yga3ZtLWttb2QgcHJvYmxlbSBvciBzb21l dGhpbmcgZGlmZmVyZW50IGluIGhvdyBJIGludm9rZSANCj4+cWVtdS4gU28gdGhlIGJlc3Qgd2F5 IHRvIHByb2NlZWQgaXMgZm9yIHlvdSB0byByZXByb2R1Y2Ugd2l0aCB1cHN0cmVhbSANCj4+dmVy c2lvbiB0aGVuIGF0IGxlYXN0IEkgd2lsbCBiZSBzdXJlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBz YW1lIGNvZGUuDQo+Pg0KPlRoYW5rcywgSSB3aWxsIHRlc3QgdGhlIGNvbWJvcyBvZiB1cHN0cmVh bSBrdm0ga2VybmVsIGFuZCB1cHN0cmVhbSBxZW11Lg0KPkFuZCwgdGhlIGd1ZXN0IG9zIHZlcnNp b24gYWJvdmUgSSBzYWlkIHdhcyB3cm9uZywgY3VycmVudCBydW5uaW5nIGd1ZXN0IG9zIGlzIFNM RVMxMFNQNC4NCj4NCkkgdGVzdGVkIGJlbG93IGNvbWJvcyBvZiBxZW11IGFuZCBrZXJuZWwsDQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBrdm0ga2VybmVsICAgICB8ICAgICAgUUVNVSAgICAgICB8ICAgdGVzdCByZXN1bHQgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBrdm0tMy4xMS0yICAgICB8ICAgcWVtdS0xLjUuMiAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjAuMCAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjQuMCAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjQuMiAgICB8ICAgICAgQkFEICAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8IHFlbXUtMS41LjAtcmMwICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMCAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMSAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8 ICBTTEVTMTFTUDIgICAgICB8ICAgcWVtdS0xLjUuMiAgICB8ICAgICAgR09PRCAgICAgICB8DQor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQpO T1RFOg0KMS4gYWJvdmUga3ZtLTMuMTEtMiBpbiB0aGUgdGFibGUgaXMgdGhlIHdob2xlIHRhZyBr ZXJuZWwgZG93bmxvYWQgZnJvbSBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdmlydC9r dm0va3ZtLmdpdA0KMi4gU0xFUzExU1AyJ3Mga2VybmVsIHZlcnNpb24gaXMgMy4wLjEzLTAuMjcN Cg0KVGhlbiBJIGdpdCBiaXNlY3QgdGhlIHFlbXUgY2hhbmdlcyBiZXR3ZWVuIHFlbXUtMS40LjIg YW5kIHFlbXUtMS41LjAtcmMwIGJ5IG1hcmtpbmcgdGhlIGdvb2QgdmVyc2lvbiBhcyBiYWQsIGFu ZCB0aGUgYmFkIHZlcnNpb24gYXMgZ29vZCwNCnNvIHRoZSBmaXJzdCBiYWQgY29tbWl0IGlzIGp1 c3QgdGhlIHBhdGNoIHdoaWNoIGZpeGVzIHRoZSBkZWdyYWRhdGlvbiBwcm9ibGVtLg0KKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCBiaXNlY3QgTm8uIHwgICAgICAgICAg ICAgICAgICBjb21taXQgICAgICAgICAgICAgICAgICAgfCAgc2F2ZS1yZXN0b3JlICAgfCAgICBt aWdyYXRpb24gICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAg ICAgIDEgICAgIHwgMDNlOTRlMzljZTUyNTllZmRiZGVlZmExZjI0OWRkYjQ5OWQ1NzMyMSAgfCAg ICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDIgICAgIHwgOTk4MzVlMDA4NDkzNjliYWI3MjZhNGRj NGNlZWQxZjZmOWVkOTY3YyAgfCAgICAgIEdPT0QgICAgICAgfCAgICAgICBHT09EICAgICAgfA0K Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDMgICAgIHwgNjJl MWFlYWVlNGQwNDUwMjIyYTBlYTQzYzcxM2I1OTUyNmUzZTBmZSAgfCAgICAgIEJBRCAgICAgICAg fCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Kw0KfCAgICAgIDQgICAgIHwgOWQ5ODAxY2Y4MDNjZGNlYWE0ODQ1ZmUyNzE1MGIyNGQ1YWIwODNl NiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDUgICAgIHwgZDc2YmI3MzU0OWZjYWMwNzUy NGFlYTUxMzUyODBlYTUzM2E5NGZkNiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAg ICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDYgICAg IHwgZDkxMzgyOWYwZmQ4NDUxYWJjYjFmZDlkNmRmY2U1NTg2ZDlkN2UxMCAgfCAgICAgIEdPT0Qg ICAgICAgfCAgICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKw0KfCAgICAgIDcgICAgIHwgZDJmMzhhMGFjYjBhMWM1YjdhYjc2MjFhMzJkNjAzZDA4 ZDUxM2JlYSAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDggICAgIHwgZTM0NGI4YTE2ZGU0 MjlhZGEzZDkxMjZmMjZlMmE5NmQ3MTM0ODM1NiAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBC QUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAg IDkgICAgIHwgNTZkZWQ3MDhlYzM4ZTRjYjc1YTdjNzM1NzQ4MGNhMzRjMGRjNjg3NSAgfCAgICAg IEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKw0KfCAgICAgIDEwICAgIHwgNzhkMDdhZTdhYzc0YmNjN2Y3OWFlZWZiYWZm MTdmYjE0MmY0NGI0ZCAgfCAgICAgIEJBRCAgICAgICAgfCAgICAgICBCQUQgICAgICAgfA0KKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0KfCAgICAgIDExICAgIHwgNzBjODY1 MmJmM2MxZmVhNzliN2I2ODg2NGU4NjkyNjcxNWM0OTI2MSAgfCAgICAgIEdPT0QgICAgICAgfCAg ICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKw0K fCAgICAgIDEyICAgIHwgZjFjNzI3OTVhZjU3M2IyNGE3ZGE1ZWI1MjM3NWM5YWJhOGEzNzk3MiAg fCAgICAgIEdPT0QgICAgICAgfCAgICAgICBHT09EICAgICAgfA0KKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKw0KTk9URTogYWJvdmUgdGVzdHMgd2VyZSBtYWRlIG9uIFNMRVMx MVNQMi4NCg0KU28sIHRoZSBjb21taXQgZjFjNzI3OTVhZjU3M2IyNGE3ZGE1ZWI1MjM3NWM5YWJh OGEzNzk3MiBpcyBqdXN0IHRoZSBwYXRjaCB3aGljaCBmaXhlcyB0aGUgZGVncmFkYXRpb24uDQoN ClRoZW4sIEkgcmVwbGFjZSBTTEVTMTFTUDIncyBkZWZhdWx0IGt2bS1rbW9kIHdpdGgga3ZtLWtt b2QtMy42LCBhbmQgYXBwbGllZCBiZWxvdyBwYXRjaCB0byBfX2RpcmVjdF9tYXAoKSwNCkBAIC0y NTk5LDYgKzI1OTksOSBAQCBzdGF0aWMgaW50IF9fZGlyZWN0X21hcChzdHJ1Y3Qga3ZtX3ZjcHUN CiAgICAgICAgaW50IGVtdWxhdGUgPSAwOw0KICAgICAgICBnZm5fdCBwc2V1ZG9fZ2ZuOw0KDQor ICAgICAgICBpZiAoIW1hcF93cml0YWJsZSkNCisgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5f RVJSICIlczogJXM6IGdmbiA9ICVsbHUgXG4iLCBfX0ZJTEVfXywgX19mdW5jX18sIGdmbik7DQor DQogICAgICAgIGZvcl9lYWNoX3NoYWRvd19lbnRyeSh2Y3B1LCAodTY0KWdmbiA8PCBQQUdFX1NI SUZULCBpdGVyYXRvcikgew0KICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5sZXZlbCA9PSBs ZXZlbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHRlX2FjY2VzcyA9IEFD Q19BTEw7DQphbmQsIEkgcmVidWlsZCB0aGUga3ZtLWttb2QsIHRoZW4gcmUtaW5zbW9kIGl0LCB0 ZXN0IHRoZSBhZGphY2VudCBjb21taXRzIGFnYWluLCB0ZXN0IHJlc3VsdHMgc2hvd24gYXMgYmVs b3csDQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8IGJpc2VjdCBOby4g fCAgICAgICAgICAgICAgICAgIGNvbW1pdCAgICAgICAgICAgICAgICAgICB8ICBzYXZlLXJlc3Rv cmUgICB8ICAgIG1pZ3JhdGlvbiAgICB8DQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rDQp8ICAgICAgMTAgICAgfCA3OGQwN2FlN2FjNzRiY2M3Zjc5YWVlZmJhZmYxN2ZiMTQy ZjQ0YjRkICB8ICAgICAgQkFEICAgICAgICB8ICAgICAgIEJBRCAgICAgICB8DQorLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQp8ICAgICAgMTIgICAgfCBmMWM3Mjc5NWFmNTcz YjI0YTdkYTVlYjUyMzc1YzlhYmE4YTM3OTcyICB8ICAgICAgR09PRCAgICAgICB8ICAgICAgIEJB RCAgICAgICB8DQorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rDQpXaGlsZSB0 ZXN0aW5nIGNvbW1pdCA3OGQwN2FlN2FjNzRiY2M3Zjc5YWVlZmJhZmYxN2ZiMTQyZjQ0YjRkLCBh cyBzb29uIGFzIHRoZSByZXN0b3JhdGlvbi9taWdyYXRpb24gY29tcGxldGUsIHRoZSBHRk5zIGZs b29kaW5nIGlzIHN0YXJ0aW5nLA0KdGFrZSBzb21lIGV4YW1wbGVzIHNob3duIGFzIGJlbG93LA0K MjA3MzQ2Mg0KMjg1NzIwMw0KMjA3MzQ2Mw0KMjA3MzQ2NA0KMjA3MzQ2NQ0KMzIxODc1MQ0KMjA3 MzQ2Ng0KMjg1NzIwNg0KMjg1NzIwNw0KMjA3MzQ2Nw0KMjA3MzQ2OA0KMjg1NzIxMA0KMjg1NzIx MQ0KMzIxODc1Mg0KMjg1NzIxNA0KMjg1NzIxNQ0KMzIxODc1Mw0KMjg1NzIxNw0KMjg1NzIxOA0K Mjg1NzIyMQ0KMjg1NzIyMg0KMzIxODc1NA0KMjg1NzIyNQ0KMjg1NzIyNg0KMzIxODc1NQ0KMjg1 NzIyOQ0KMjg1NzIzMA0KMjg1NzIzMg0KMjg1NzIzMw0KMzIxODc1Ng0KMjc4MDM5Mw0KMjc4MDM5 NA0KMjg1NzIzNg0KMjc4MDM5NQ0KMjg1NzIzNw0KMjc4MDM5Ng0KMjc4MDM5Nw0KMjc4MDM5OA0K Mjc4MDM5OQ0KMjc4MDQwMA0KMjc4MDQwMQ0KMzIxODc1Nw0KMjg1NzI0MA0KMjg1NzI0MQ0KMjg1 NzI0NA0KMzIxODc1OA0KMjg1NzI0Nw0KMjg1NzI0OA0KMjg1NzI1MQ0KMjg1NzI1Mg0KMzIxODc1 OQ0KMjg1NzI1NQ0KMjg1NzI1Ng0KMzIxODc2MA0KMjg1NzI4OQ0KMjg1NzI5MA0KMjg1NzI5Mw0K Mjg1NzI5NA0KMzIxODc2MQ0KMjg1NzI5Nw0KMjg1NzI5OA0KMzIxODc2Mg0KMzIxODc2Mw0KMzIx ODc2NA0KMzIxODc2NQ0KMzIxODc2Ng0KMzIxODc2Nw0KMzIxODc2OA0KMzIxODc2OQ0KMzIxODc3 MA0KMzIxODc3MQ0KMzIxODc3Mg0KDQpidXQsIGFmdGVyIGEgcGVyaW9kIG9mIHRpbWUsIHRoZSBm bG9vZGluZyByYXRlIHNsb3dlZCBkb3duLg0KDQp3aGlsZSB0ZXN0aW5nIGNvbW1pdCBmMWM3Mjc5 NWFmNTczYjI0YTdkYTVlYjUyMzc1YzlhYmE4YTM3OTcyLCBhZnRlciByZXN0b3JhdGlvbiwgbm8g R0ZOIHdhcyBwcmludGVkLCBhbmQgbm8gcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uDQpidXQgYXMg c29vbiBhcyBsaXZlIG1pZ3JhdGlvbiBjb21wbGV0ZSwgR0ZOcyBmbG9vZGluZyBpcyBzdGFydGlu ZywgYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGFsc28gaGFwcGVuZWQuDQoNCk5PVEU6IFRo ZSB0ZXN0IHJlc3VsdHMgb2YgY29tbWl0IGYxYzcyNzk1YWY1NzNiMjRhN2RhNWViNTIzNzVjOWFi YThhMzc5NzIgc2VlbWVkIHRvIGJlIHVuc3RhYmxlLCBJIHdpbGwgbWFrZSB2ZXJpZmljYXRpb24g YWdhaW4uDQoNCg0KPlRoYW5rcywNCj5aaGFuZyBIYW95dQ0KPg0KPj4+IEkgYXBwbGllZCBiZWxv dyBwYXRjaCB0byAgX19kaXJlY3RfbWFwKCksIEBAIC0yMjIzLDYgKzIyMjMsOCBAQCANCj4+PiBz dGF0aWMgaW50IF9fZGlyZWN0X21hcChzdHJ1Y3Qga3ZtX3ZjcHUNCj4+PiAgICAgICAgIGludCBw dF93cml0ZSA9IDA7DQo+Pj4gICAgICAgICBnZm5fdCBwc2V1ZG9fZ2ZuOw0KPj4+IA0KPj4+ICsg ICAgICAgIG1hcF93cml0YWJsZSA9IHRydWU7DQo+Pj4gKw0KPj4+ICAgICAgICAgZm9yX2VhY2hf c2hhZG93X2VudHJ5KHZjcHUsICh1NjQpZ2ZuIDw8IFBBR0VfU0hJRlQsIGl0ZXJhdG9yKSB7DQo+ Pj4gICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5sZXZlbCA9PSBsZXZlbCkgew0KPj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB0ZV9hY2Nlc3MgPSBBQ0NfQUxMOyBhbmQg cmVidWlsZCANCj4+PiB0aGUga3ZtLWttb2QsIHRoZW4gcmUtaW5zbW9kIGl0Lg0KPj4+IEFmdGVy IEkgc3RhcnRlZCBhIFZNLCB0aGUgaG9zdCBzZWVtZWQgdG8gYmUgYWJub3JtYWwsIHNvIG1hbnkg cHJvZ3JhbXMgY2Fubm90IGJlIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCBzZWdtZW50YXRpb24gZmF1 bHQgaXMgcmVwb3J0ZWQuDQo+Pj4gSW4gbXkgb3BpbmlvbiwgYWZ0ZXIgYWJvdmUgcGF0Y2ggYXBw bGllZCwgdGhlIGNvbW1pdDogNjEyODE5YzNjNmU2N2JhYzhmY2VhYTdjYzQwMmYxM2IxYjYzZjdl NCBzaG91bGQgYmUgb2Ygbm8gZWZmZWN0LCBidXQgdGhlIHRlc3QgcmVzdWx0IHByb3ZlZCBtZSB3 cm9uZy4NCj4+PiBEb3NlIHRoZSBtYXBfd3JpdGFibGUgdmFsdWUncyBnZXR0aW5nIHByb2Nlc3Mg aW4gaHZhX3RvX3BmbigpIGhhdmUgZWZmZWN0IG9uIHRoZSByZXN1bHQ/DQo+Pj4gDQo+PklmIGh2 YV90b19wZm4oKSByZXR1cm5zIG1hcF93cml0YWJsZSA9PSBmYWxzZSBpdCBtZWFucyB0aGF0IHBh Z2UgaXMgDQo+Pm1hcHBlZCBhcyByZWFkIG9ubHkgb24gcHJpbWFyeSBNTVUsIHNvIGl0IHNob3Vs ZCBub3QgYmUgbWFwcGVkIHdyaXRhYmxlIA0KPj5vbiBzZWNvbmRhcnkgTU1VIGVpdGhlci4gVGhp cyBzaG91bGQgbm90IGhhcHBlbiB1c3VhbGx5Lg0KPj4NCj4+LS0NCj4+CQkJR2xlYi4NCg==