From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bWlaV-00052z-2i for qemu-devel@nongnu.org; Mon, 08 Aug 2016 10:31:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bWlaP-0004jf-Nj for qemu-devel@nongnu.org; Mon, 08 Aug 2016 10:31:29 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:55719) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bWlaN-0004f0-Lc for qemu-devel@nongnu.org; Mon, 08 Aug 2016 10:31:25 -0400 From: "Gonglei (Arei)" Date: Mon, 8 Aug 2016 14:30:37 +0000 Message-ID: References: <33183CC9F5247A488A2544077AF19020B038C0BA@SZXEMA503-MBS.china.huawei.com> <20160808121313.GB2015@work-vm> <33183CC9F5247A488A2544077AF19020B038C684@SZXEMA503-MBS.china.huawei.com>, <20160808141802.GC2015@work-vm> In-Reply-To: <20160808141802.GC2015@work-vm> Content-Language: zh-CN MIME-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [Question] virtio-serial misses irq delivery on migration? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert" Cc: Paolo Bonzini , Jan Kiszka , Amit Shah , Juan Quintela , "Huangweidong (C)" , qemu-devel , kvm VGhhdCdzIGJlY2F1c2UgdGhlIHZpcnR1YWwgdm0gY2xvY2sgaXMgZW5hYmxlZCBhdCBpbml0aWFs aXphdGlvbi4gSXQgZG9lc24ndCBuZWVkIHRvIHdhaXQgZm9yIGludm9raW5nIHZtX3N0YXJ0KCkg dG8gZmlyZS4NCreivP7Iy6O6RHIuIERhdmlkIEFsYW4gR2lsYmVydA0KytW8/sjLo7q5qMDaLA0K s63LzaO6UGFvbG8gQm9uemluaSxKYW4gS2lzemthLEFtaXQgU2hhaCxKdWFuIFF1aW50ZWxhLLvG zrC2sCxxZW11LWRldmVsQG5vbmdudS5vcmcsa3ZtQHZnZXIua2VybmVsLm9yZywNCsqxvOSjujIw MTYtMDgtMDggMjI6MTg6MTUNCtb3zOI6UmU6IFtRZW11LWRldmVsXSBbUXVlc3Rpb25dIHZpcnRp by1zZXJpYWwgbWlzc2VzIGlycSBkZWxpdmVyeSBvbiBtaWdyYXRpb24/DQoNCiogR29uZ2xlaSAo QXJlaSkgKGFyZWkuZ29uZ2xlaUBodWF3ZWkuY29tKSB3cm90ZToNCj4gSGkgRGF2ZSwNCj4NCj4N Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IERyLiBEYXZpZCBBbGFu IEdpbGJlcnQgW21haWx0bzpkZ2lsYmVydEByZWRoYXQuY29tXQ0KPiA+IFNlbnQ6IE1vbmRheSwg QXVndXN0IDA4LCAyMDE2IDg6MTMgUE0NCj4gPiBUbzogR29uZ2xlaSAoQXJlaSkNCj4gPiBDYzog UGFvbG8gQm9uemluaTsgamFuLmtpc3prYUBzaWVtZW5zLmNvbTsgYW1pdC5zaGFoQHJlZGhhdC5j b207DQo+ID4gcXVpbnRlbGFAcmVkaGF0LmNvbTsgSHVhbmd3ZWlkb25nIChDKTsgcWVtdS1kZXZl bEBub25nbnUub3JnOw0KPiA+IGt2bUB2Z2VyLmtlcm5lbC5vcmcNCj4gPiBTdWJqZWN0OiBSZTog W1FlbXUtZGV2ZWxdIFtRdWVzdGlvbl0gdmlydGlvLXNlcmlhbCBtaXNzZXMgaXJxIGRlbGl2ZXJ5 IG9uDQo+ID4gbWlncmF0aW9uPw0KPiA+DQo+ID4gKiBHb25nbGVpIChBcmVpKSAoYXJlaS5nb25n bGVpQGh1YXdlaS5jb20pIHdyb3RlOg0KPiA+ID4gSGkgYWxsLA0KPiA+ID4NCj4gPiA+IEkgbWln aHQgY2F0Y2ggdGhlIGJ1Zy4gTm93LCB3ZSByZWx5IG9uIGEgdm1fY2xvY2sgdGltZXIgdG8gYXNz dXJlIHRoYXQgdGhlDQo+ID4gdmNwdXMgYXJlIHN0YXJ0ZWQNCj4gPiA+IGJlZm9yZSB3ZSBpbnZv a2Ugc2VuZF9jb250cm9sX2V2ZW50KCksd2hpY2ggcXVldWUgYSBtZXNzYWdlIGluIHRoZSB2aXJ0 aW8NCj4gPiByaW5nIGFuZCB0cmlnZ2VyIGEgaXJxLg0KPiA+ID4NCj4gPiA+IEluIGFjdHVhbGx5 LCB3ZSBjYW4ndCBhdHRhY2ggb3VyIGluaXRpYWwgaW50ZW50aW9uIHVuZGVyIGEgc3BlY2lhbCBz aXR1YXRpb246DQo+ID4gPg0KPiA+ID4gMS4gdGhlIHByb2Nlc3Mgb2YgbWlncmF0aW9uIGRlc3Rp bmF0aW9uIGlzIGluIGEgY29yb3V0aW5lDQo+ID4gPiAgQ29tbWl0IDgyYTRkYTc5ZmQ2DQo+ID4g PiAyLiBUaGUgY29yb3VudGluZSB3aWxsIHlpbGVkIHRoZSBjcHUgKGNhbGxpbmcgeWllbGRfdW50 aWxfZmRfcmVhZGFibGUocy0+ZmQpKQ0KPiA+ID4gIGlmIHRoZSBRZW11IGVuY291bnRlciBhIEVB R0lOIHdoaWxlIHJlYWRpbmcgUUVNVUZpbGUuDQo+ID4gPiAgY29tbWl0IDU5NWFiNjQxNjliDQo+ ID4gPg0KPiA+ID4gc3RhdGljIHNzaXplX3Qgc29ja2V0X2dldF9idWZmZXIodm9pZCAqb3BhcXVl LCB1aW50OF90ICpidWYsIGludDY0X3QgcG9zLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IHNpemUpDQo+ID4gPiB7DQo+ID4gPiAgICAgUUVNVUZpbGVTb2Nr ZXQgKnMgPSBvcGFxdWU7DQo+ID4gPiAgICAgc3NpemVfdCBsZW47DQo+ID4gPg0KPiA+ID4gICAg IGZvciAoOzspIHsNCj4gPiA+ICAgICAgICAgbGVuID0gcWVtdV9yZWN2KHMtPmZkLCBidWYsIHNp emUsIDApOw0KPiA+ID4gICAgICAgICBpZiAobGVuICE9IC0xKSB7DQo+ID4gPiAgICAgICAgICAg ICBicmVhazsNCj4gPiA+ICAgICAgICAgfQ0KPiA+ID4gICAgICAgICBpZiAoc29ja2V0X2Vycm9y KCkgPT0gRUFHQUlOKSB7DQo+ID4gPiAgICAgICAgICAgICB5aWVsZF91bnRpbF9mZF9yZWFkYWJs ZShzLT5mZCk7DQo+ID4gPiAgICAgICAgIH0gZWxzZSBpZiAoc29ja2V0X2Vycm9yKCkgIT0gRUlO VFIpIHsNCj4gPiA+ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gICAgICAgICB9DQo+ID4gPiAg ICAgfQ0KPiA+ID4NCj4gPiA+ICAgICBpZiAobGVuID09IC0xKSB7DQo+ID4gPiAgICAgICAgIGxl biA9IC1zb2NrZXRfZXJyb3IoKTsNCj4gPiA+ICAgICB9DQo+ID4gPiAgICAgcmV0dXJuIGxlbjsN Cj4gPiA+IH0NCj4gPiA+DQo+ID4gPiAzLiBUaGUgbWFpbiB0aHJlYWQgY2FuIGdldCB0aGUgY3B1 IGFuZCB0aW1lciB3aWxsIHJ1biwgYXN1bWVzIHRoYXQgd2UgZ2V0DQo+ID4gRUFHSU4NCj4gPiA+ ICAgYWZ0ZXIgaW52b2tpbmcgZmV0Y2hfYWN0aXZlX3BvcnRzX2xpc3QoKS4NCj4gPg0KPiA+IEkg ZG9uJ3QgdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiB0aGlzIGludGVycnVwdCBpbmplY3Rpb24s IG9yIHdoeSB0aGUgdGltZXINCj4gPiB3aWxsIHJ1biBpZiB3ZSdyZSBzdGlsbCBub3QgZmluaXNo ZWQgbWlncmF0aW9uOyBpdCBkb2Vzbid0IHNvdW5kIHJpZ2h0IHRoYXQgYQ0KPiA+IFFFTVVfQ0xP Q0tfVklSVFVBTA0KPiA+IHRpbWVyIHNob3VsZCB0cmlnZ2VyIHdoaWxlIHdlJ3JlIHN0aWxsIHJl Y2VpdmluZyB0aGUgVk0gYW5kIHRoZSBndWVzdCBpcyBwYXVzZWQuDQo+ID4NCj4NCj4gQmVjYXVz ZSB0aGUgbWlncmF0aW9uIGNvcm91dGluZSB3aWxsIHlpbGVkIGNwdSBpZiBpdCBnZXQgYSBFQUdB SU4gZXJyb3IgZnJvbSB1bml4IHNvY2tldC4NCj4gWW91IGNhbiBzZWUgdGhlIGFib3ZlIHN0ZXAg MikNCj4NCj4gRm9yIHRoZSB1cHN0cmVhbSBxZW11LCB5b3UgY2FuIHNlZSB0aGUgaGFuZGVyIG9m IFFJT19DSEFOTkVMX0VSUl9CTE9DSyBpbiBjaGFubmVsX2dldF9idWZmZXIoKQ0KPg0KPiBzdGF0 aWMgc3NpemVfdCBjaGFubmVsX2dldF9idWZmZXIodm9pZCAqb3BhcXVlLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50NjRfdCBwb3MsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3Qgc2l6ZSkNCj4gew0KPiAgICAgUUlPQ2hhbm5lbCAqaW9jID0gUUlP X0NIQU5ORUwob3BhcXVlKTsNCj4gICAgIHNzaXplX3QgcmV0Ow0KPg0KPiAgICAgZG8gew0KPiAg ICAgICAgIHJldCA9IHFpb19jaGFubmVsX3JlYWQoaW9jLCAoY2hhciAqKWJ1Ziwgc2l6ZSwgTlVM TCk7DQo+ICAgICAgICAgaWYgKHJldCA8IDApIHsNCj4gICAgICAgICAgICAgaWYgKHJldCA9PSBR SU9fQ0hBTk5FTF9FUlJfQkxPQ0spIHsNCj4gICAgICAgICAgICAgICAgIHFpb19jaGFubmVsX3lp ZWxkKGlvYywgR19JT19JTik7ICAgLy8geWlsZWQgY3B1DQo+ICAgICAgICAgICAgIH0gZWxzZSB7 DQo+ICAgICAgICAgICAgICAgICAvKiBYWFggaGFuZGxlIEVycm9yICogb2JqZWN0ICovDQo+ICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gICAgICAgICAgICAgfQ0KPiAgICAgICAgIH0N Cj4gICAgIH0gd2hpbGUgKHJldCA9PSBRSU9fQ0hBTk5FTF9FUlJfQkxPQ0spOw0KPg0KPiAgICAg cmV0dXJuIHJldDsNCj4gfQ0KDQpZZXMsIEkgdW5kZXJzdGFuZCBpdCB5aWVsZHM7IGJ1dCBJIHdv dWxkIGhhdmUgZXhwZWN0ZWQgdGhlIHRpbWVyIGNvZGUNCm5vdCB0byBmaXJlIHZpcnR1YWwgdGlt ZXJzIHdoaWxlIHRoZSBWTSBpcyBpbiBwYXVzZWQgc3RhdGUuDQoNCj4gPiBIb3dldmVyLCB3b3Vs ZCBpdCBiZSBmaXhlZCBieSB1c2luZyBhIHZtX2NoYW5nZV9zdGF0ZV9oYW5kbGVyIGxpa2UNCj4g PiB1aS9zcGljZS1jb3JlLmMgZG9lcz8NCj4gPg0KPg0KPiBJJ2xsIGNoZWNrIHRoaXMgbWV0aG9k LCB0aGFua3MhDQo+DQoNCkRhdmUNCg0KPiBSZWdhcmRzLA0KPiAtR29uZ2xlaQ0KPg0KPiA+IERh dmUNCj4gPg0KPiA+DQo+ID4gPiA0LiByZXByb2R1Y2UgdGhlIHByb2JsZW0gYnkgZmF1bHQgaW5q ZWN0aW9uLg0KPiA+ID4NCj4gPiA+IFRoZSBkZWJ1ZyBsb2dzOg0KPiA+ID4NCj4gPiA+IFsyMDE2 LTA4LTA2IDE2OjUyOjU2XSBoYW5kbGVfcW1wX2NvbW1hbmQ6NTEwNiBxbXBfY21kX25hbWU6DQo+ ID4gcXVlcnktbWlncmF0ZS1jYXBhYmlsaXRpZXMNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUyOjU2 XSBoYW5kbGVfcW1wX2NvbW1hbmQ6NTExNiBxbXBfY21kX25hbWU6DQo+ID4gbWlncmF0ZS1zZXQt Y2FwYWJpbGl0aWVzLCBxbXBfY21kX2FyZ3VtZW50czogeyJjYXBhYmlsaXRpZXMiOiBbeyJzdGF0 ZSI6IGZhbHNlLA0KPiA+ICJjYXBhYmlsaXR5IjogInhienJsZSJ9XX0NCj4gPiA+IFsyMDE2LTA4 LTA2IDE2OjUyOjU2XSBoYW5kbGVfcW1wX2NvbW1hbmQ6NTEwNiBxbXBfY21kX25hbWU6DQo+ID4g cXVlcnktbWlncmF0ZS1jYXBhYmlsaXRpZXMNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUyOjU2XSBo YW5kbGVfcW1wX2NvbW1hbmQ6NTExNiBxbXBfY21kX25hbWU6DQo+ID4gbWlncmF0ZS1zZXQtY2Fw YWJpbGl0aWVzLCBxbXBfY21kX2FyZ3VtZW50czogeyJjYXBhYmlsaXRpZXMiOiBbeyJzdGF0ZSI6 IGZhbHNlLA0KPiA+ICJjYXBhYmlsaXR5IjogInJkbWEtcGluLWFsbCJ9XX0NCj4gPiA+IFsyMDE2 LTA4LTA2IDE2OjUyOjU2XSBwcm9jZXNzX2luY29taW5nX21pZ3JhdGlvbl9jbzoxNzAgZ29uZ2xl aTogZW50ZXINCj4gPiBwcm9jZXNzX2luY29taW5nX21pZ3JhdGlvbl9jbygpICAgIC8vIEVudGVy IGNvcm91bnRpbmUNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBhcGljX2Rpc3BhdGNoX3Bv c3RfbG9hZDozNzAgZ29uZ2xlaToNCj4gPiBhcGljX2Rpc3BhdGNoX3Bvc3RfbG9hZA0KPiA+ID4g WzIwMTYtMDgtMDYgMTY6NTM6MDFdIGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkOjM3MCBnb25nbGVp Og0KPiA+IGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1Mzow MV0gYXBpY19kaXNwYXRjaF9wb3N0X2xvYWQ6MzcwIGdvbmdsZWk6DQo+ID4gYXBpY19kaXNwYXRj aF9wb3N0X2xvYWQNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBhcGljX2Rpc3BhdGNoX3Bv c3RfbG9hZDozNzAgZ29uZ2xlaToNCj4gPiBhcGljX2Rpc3BhdGNoX3Bvc3RfbG9hZA0KPiA+ID4g WzIwMTYtMDgtMDYgMTY6NTM6MDFdIGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkOjM3MCBnb25nbGVp Og0KPiA+IGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1Mzow MV0gYXBpY19kaXNwYXRjaF9wb3N0X2xvYWQ6MzcwIGdvbmdsZWk6DQo+ID4gYXBpY19kaXNwYXRj aF9wb3N0X2xvYWQNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBhcGljX2Rpc3BhdGNoX3Bv c3RfbG9hZDozNzAgZ29uZ2xlaToNCj4gPiBhcGljX2Rpc3BhdGNoX3Bvc3RfbG9hZA0KPiA+ID4g WzIwMTYtMDgtMDYgMTY6NTM6MDFdIGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkOjM3MCBnb25nbGVp Og0KPiA+IGFwaWNfZGlzcGF0Y2hfcG9zdF9sb2FkDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1Mzow MV0ga3ZtX2lvYXBpY19wdXQ6OTcgZ29uZ2xlaToga3ZtX2lvYXBpY19wdXQNCj4gPiA+IFsyMDE2 LTA4LTA2IDE2OjUzOjAxXSB2aXJ0aW9fc2VyaWFsX2xvYWQ6NzQ1IGdvbmdsZWk6IHZpcnRpb19z ZXJpYWxfbG9hZCB3aWxsDQo+ID4gaW5pdCB2aXJ0cXVldWUNCj4gPiA+IFsyMDE2LTA4LTA2IDE2 OjUzOjAxXSBmZXRjaF9hY3RpdmVfcG9ydHNfbGlzdDo3MzUgZ29uZ2xlaTogKioqKioqKioqKioq KioNCj4gPiBiZWdpbiB0byBpbmplY3QgZGVidWcgKioqKioqKioqKiAgICAvLyBmYXVsdCBpbmpl Y3Rpb24gYmVnaW4sIG1pZ3JhdGlvbg0KPiA+IGNvcm91dGluZSB5aWxlZCBjcHUNCj4gPiA+IFsy MDE2LTA4LTA2IDE2OjUzOjAxXSB0aW1lcmxpc3RfcnVuX3RpbWVyczo0OTYgZ29uZ2xlaTogZXhw aXJlX3RpbWU6IDEsDQo+ID4gY3VycmVudF90aW1lOiA5NzUwNzcxMDYxNTkyICAgIC8vdm1fY2xv Y2sgdGltZXIgYm9vbQ0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHZpcnRpb19zZXJpYWxf cG9zdF9sb2FkX3RpbWVyX2NiOjY1OCBnb25nbGVpOg0KPiA+IHZpcnRpb19zZXJpYWxfcG9zdF9s b2FkX3RpbWVyX2NiICAgLy9jYWxsaW5nIHRoZSB0aW1lciBjYWxsYmFjaw0KPiA+ID4gWzIwMTYt MDgtMDYgMTY6NTM6MDFdIHNlbmRfY29udHJvbF9ldmVudDoyMjUgdmlydGlvIHNlcmlhbCBwb3J0 IDEgc2VuZA0KPiA+IGNvbnRyb2wgbWVzc2FnZSBldmVudCA9IDYsIHZhbHVlID0gMCAvLyBzZW5k IGEgbWVzc2FnZSB0byB0aGUgZ3Vlc3QsIHJhaXNlIHRoZQ0KPiA+IGlycSBsaW5lLg0KPiA+ID4g WzIwMTYtMDgtMDYgMTY6NTM6MDFdIHZpcnRpb19zZXJpYWxfcG9zdF9sb2FkX3RpbWVyX2NiOjY2 OSBnb25nbGVpOg0KPiA+IHBvcnQtPmhvc3RfY29ubmVjdGVkOiAwDQo+ID4gPiBbMjAxNi0wOC0w NiAxNjo1MzowMV0gbW9uaXRvcl9xYXBpX2V2ZW50X2VtaXQ6NDgzIHsidGltZXN0YW1wIjoNCj4g PiB7InNlY29uZHMiOiAxNDcwNDczNTgxLCAibWljcm9zZWNvbmRzIjogNjQwNTZ9LCAiZXZlbnQi Og0KPiA+ICJWU0VSUE9SVF9DSEFOR0UiLCAiZGF0YSI6IHsib3BlbiI6IHRydWUsICJpZCI6ICJj aGFubmVsMCJ9fQ0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHNlbmRfY29udHJvbF9ldmVu dDoyMjUgdmlydGlvIHNlcmlhbCBwb3J0IDMgc2VuZA0KPiA+IGNvbnRyb2wgbWVzc2FnZSBldmVu dCA9IDYsIHZhbHVlID0gMA0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHZpcnRpb19zZXJp YWxfcG9zdF9sb2FkX3RpbWVyX2NiOjY2OSBnb25nbGVpOg0KPiA+IHBvcnQtPmhvc3RfY29ubmVj dGVkOiAwDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gdGltZXJsaXN0X3J1bl90aW1lcnM6 NDk2IGdvbmdsZWk6IGV4cGlyZV90aW1lOg0KPiA+IDk3NTA3NzA3ODg0NzgsIGN1cnJlbnRfdGlt ZTogOTc1MDc3MTA2MTU5Mg0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIGt2bV9wdXRfYXBp Y19zdGF0ZTozMiBnb25nbGVpOiBrdm1fcHV0X2FwaWNfc3RhdGUNCj4gPiAvL0VudGVyIG1pZ3Jh dGlvbiBjb3JvdXRpbmUgYWdhaW4sIGFuZCB0aGUgcmVzdG9yZSB0aGUgbGFwaWMgcmVnaXN0ZXIs IHRoZQ0KPiA+IHByZXZpb3VzIGxhcGljJ3MgaW5mbyB3aWxsIGJlIGNvdmVyZWQgOigNCj4gPiA+ IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBrdm1fcHV0X2FwaWNfc3RhdGU6MzIgZ29uZ2xlaToga3Zt X3B1dF9hcGljX3N0YXRlDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0ga3ZtX3B1dF9hcGlj X3N0YXRlOjMyIGdvbmdsZWk6IGt2bV9wdXRfYXBpY19zdGF0ZQ0KPiA+ID4gWzIwMTYtMDgtMDYg MTY6NTM6MDFdIGt2bV9wdXRfYXBpY19zdGF0ZTozMiBnb25nbGVpOiBrdm1fcHV0X2FwaWNfc3Rh dGUNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBrdm1fcHV0X2FwaWNfc3RhdGU6MzIgZ29u Z2xlaToga3ZtX3B1dF9hcGljX3N0YXRlDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0ga3Zt X3B1dF9hcGljX3N0YXRlOjMyIGdvbmdsZWk6IGt2bV9wdXRfYXBpY19zdGF0ZQ0KPiA+ID4gWzIw MTYtMDgtMDYgMTY6NTM6MDFdIGt2bV9wdXRfYXBpY19zdGF0ZTozMiBnb25nbGVpOiBrdm1fcHV0 X2FwaWNfc3RhdGUNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBrdm1fcHV0X2FwaWNfc3Rh dGU6MzIgZ29uZ2xlaToga3ZtX3B1dF9hcGljX3N0YXRlDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1 MzowMV0gaGFuZGxlX3FtcF9jb21tYW5kOjUxMDYgcW1wX2NtZF9uYW1lOiBjb250DQo+ID4gPiBb MjAxNi0wOC0wNiAxNjo1MzowMV0gcW1wX2NvbnQ6MTg5IHFtcCBjb250IGlzIHJlY2VpdmVkIGFu ZCB2bSBpcyBzdGFydGVkDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gdm1fc3RhcnQ6OTgx IGdvbmdsZWk6IGVudGVyIHZtX3N0YXJ0DQo+ID4gLy9lbnRlciB2bV9zdGFydCBoZXJlDQo+ID4g PiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gdmlydGlvX3NldF9zdGF0dXM6NTIyIHZpcnRpby1uZXQg ZGV2aWNlIHN0YXR1cyBpcyA3IHRoYXQNCj4gPiBtZWFucyBEUklWRVIgT0sNCj4gPiA+IFsyMDE2 LTA4LTA2IDE2OjUzOjAxXSB2aXJ0aW9fc2V0X3N0YXR1czo1MjIgdmlydGlvLXNlcmlhbCBkZXZp Y2Ugc3RhdHVzIGlzIDcNCj4gPiB0aGF0IG1lYW5zIERSSVZFUiBPSw0KPiA+ID4gWzIwMTYtMDgt MDYgMTY6NTM6MDFdIHZpcnRpb19zZXRfc3RhdHVzOjUyMiB2aXJ0aW8tc2NzaSBkZXZpY2Ugc3Rh dHVzIGlzIDcgdGhhdA0KPiA+IG1lYW5zIERSSVZFUiBPSw0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6 NTM6MDFdIHZtX3N0YXJ0OjEwMDAgdm1fc3RhdGUtbm90aWZ5OjIzbXMNCj4gPiA+IFsyMDE2LTA4 LTA2IDE2OjUzOjAxXSBxZW11X2Nsb2NrX2VuYWJsZToxNjMgZ29uZ2xlaTogdHlwZTogMSwgZW5h YmxlZDogMSwNCj4gPiBvbGQ6IDENCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSBtb25pdG9y X3FhcGlfZXZlbnRfZW1pdDo0ODMgeyJ0aW1lc3RhbXAiOg0KPiA+IHsic2Vjb25kcyI6IDE0NzA0 NzM1ODEsICJtaWNyb3NlY29uZHMiOiAxMTIxOTF9LCAiZXZlbnQiOiAiUkVTVU1FIn0NCj4gPiA+ IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSB0aW1lcmxpc3RfcnVuX3RpbWVyczo0OTYgZ29uZ2xlaTog ZXhwaXJlX3RpbWU6DQo+ID4gOTc1MDc3MjA2MTU5MiwgY3VycmVudF90aW1lOiA5NzUwNzk0MjY5 ODA1DQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gc2VuZF9jb250cm9sX2V2ZW50OjIyNSB2 aXJ0aW8gc2VyaWFsIHBvcnQgMSBzZW5kDQo+ID4gY29udHJvbCBtZXNzYWdlIGV2ZW50ID0gNiwg dmFsdWUgPSAxDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gdGltZXJsaXN0X3J1bl90aW1l cnM6NDk2IGdvbmdsZWk6IGV4cGlyZV90aW1lOg0KPiA+IDk3NTA3OTUyODQxNDgsIGN1cnJlbnRf dGltZTogOTc1MDc5NTMxMjY4NQ0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHNlbmRfY29u dHJvbF9ldmVudDoyMjUgdmlydGlvIHNlcmlhbCBwb3J0IDMgc2VuZA0KPiA+IGNvbnRyb2wgbWVz c2FnZSBldmVudCA9IDYsIHZhbHVlID0gMQ0KPiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHRp bWVybGlzdF9ydW5fdGltZXJzOjQ5NiBnb25nbGVpOiBleHBpcmVfdGltZToNCj4gPiA5NzUwNzk2 MzI5NjU2LCBjdXJyZW50X3RpbWU6IDk3NTA3OTYzNjk0NTgNCj4gPiA+IFsyMDE2LTA4LTA2IDE2 OjUzOjAxXSB0aW1lcmxpc3RfcnVuX3RpbWVyczo0OTYgZ29uZ2xlaTogZXhwaXJlX3RpbWU6DQo+ ID4gOTc1MDc5NzM5NjIwOCwgY3VycmVudF90aW1lOiA5NzUwNzk3NDI2NzUyDQo+ID4gPiBbMjAx Ni0wOC0wNiAxNjo1MzowMV0gdGltZXJsaXN0X3J1bl90aW1lcnM6NDk2IGdvbmdsZWk6IGV4cGly ZV90aW1lOg0KPiA+IDk3NTA3OTg0NDU3MDcsIGN1cnJlbnRfdGltZTogOTc1MDc5ODQ3NzUyMA0K PiA+ID4gWzIwMTYtMDgtMDYgMTY6NTM6MDFdIHRpbWVybGlzdF9ydW5fdGltZXJzOjQ5NiBnb25n bGVpOiBleHBpcmVfdGltZToNCj4gPiA5NzUwNzk5NDk2MTYyLCBjdXJyZW50X3RpbWU6IDk3NTA3 OTk1MzIxODMNCj4gPiA+IFsyMDE2LTA4LTA2IDE2OjUzOjAxXSB0aW1lcmxpc3RfcnVuX3RpbWVy czo0OTYgZ29uZ2xlaTogZXhwaXJlX3RpbWU6DQo+ID4gOTc1MDgwMDU1NjgxNywgY3VycmVudF90 aW1lOiA5NzUwODAwNTg4NzQxDQo+ID4gPiBbMjAxNi0wOC0wNiAxNjo1MzowMV0gdGltZXJsaXN0 X3J1bl90aW1lcnM6NDk2IGdvbmdsZWk6IGV4cGlyZV90aW1lOg0KPiA+IDk3NTA4MDE2MDY1OTYs IGN1cnJlbnRfdGltZTogOTc1MDgwMTYzNzk2MQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGUgYmVs b3cgaXMgbXkgZGVidWdnaW5nIGRpZmYgKE5vdCBiYXNlZCBvbiB0aGUgbmV3ZXN0IG1hc3RlciBi cmFuY2gpDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2h3L2NoYXIvdmlydGlvLXNlcmlhbC1i dXMuYyBiL2h3L2NoYXIvdmlydGlvLXNlcmlhbC1idXMuYw0KPiA+ID4gaW5kZXggNmE0NWFmOS4u YTAwYjAyZiAxMDA2NDQNCj4gPiA+IC0tLSBhL2h3L2NoYXIvdmlydGlvLXNlcmlhbC1idXMuYw0K PiA+ID4gKysrIGIvaHcvY2hhci92aXJ0aW8tc2VyaWFsLWJ1cy5jDQo+ID4gPiBAQCAtNjU0LDYg KzY1NCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19zZXJpYWxfcG9zdF9sb2FkX3RpbWVyX2NiKHZv aWQNCj4gPiAqb3BhcXVlKQ0KPiA+ID4gICAgICBpZiAoIXMtPnBvc3RfbG9hZCkgew0KPiA+ID4g ICAgICAgICAgcmV0dXJuOw0KPiA+ID4gICAgICB9DQo+ID4gPiArICAgIFFFTVVfTE9HKCJnb25n bGVpOiB2aXJ0aW9fc2VyaWFsX3Bvc3RfbG9hZF90aW1lcl9jYlxuIik7DQo+ID4gPiAgICAgIGZv ciAoaSA9IDAgOyBpIDwgcy0+cG9zdF9sb2FkLT5ucl9hY3RpdmVfcG9ydHM7ICsraSkgew0KPiA+ ID4gICAgICAgICAgcG9ydCA9IHMtPnBvc3RfbG9hZC0+Y29ubmVjdGVkW2ldLnBvcnQ7DQo+ID4g PiAgICAgICAgICBob3N0X2Nvbm5lY3RlZCA9IHMtPnBvc3RfbG9hZC0+Y29ubmVjdGVkW2ldLmhv c3RfY29ubmVjdGVkOw0KPiA+ID4gQEAgLTY2NCw2ICs2NjUsNyBAQCBzdGF0aWMgdm9pZCB2aXJ0 aW9fc2VyaWFsX3Bvc3RfbG9hZF90aW1lcl9jYih2b2lkDQo+ID4gKm9wYXF1ZSkNCj4gPiA+ICAg ICAgICAgICAgICAgKi8NCj4gPiA+ICAgICAgICAgICAgICBzZW5kX2NvbnRyb2xfZXZlbnQocywg cG9ydC0+aWQsDQo+ID4gVklSVElPX0NPTlNPTEVfUE9SVF9PUEVOLA0KPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwb3J0LT5ob3N0X2Nvbm5lY3RlZCk7DQo+ID4gPiArICAg ICAgICAgICAgUUVNVV9MT0coImdvbmdsZWk6IHBvcnQtPmhvc3RfY29ubmVjdGVkOiAldVxuIiwN Cj4gPiBwb3J0LT5ob3N0X2Nvbm5lY3RlZCk7DQo+ID4gPiAgICAgICAgICB9DQo+ID4gPiAgICAg ICAgICB2c2MgPSBWSVJUSU9fU0VSSUFMX1BPUlRfR0VUX0NMQVNTKHBvcnQpOw0KPiA+ID4gICAg ICAgICAgaWYgKHZzYy0+c2V0X2d1ZXN0X2Nvbm5lY3RlZCkgew0KPiA+ID4gQEAgLTcyOSw2ICs3 MzEsOCBAQCBzdGF0aWMgaW50IGZldGNoX2FjdGl2ZV9wb3J0c19saXN0KFFFTVVGaWxlICpmLCBp bnQNCj4gPiB2ZXJzaW9uX2lkLA0KPiA+ID4gICAgICAgICAgfQ0KPiA+ID4gICAgICB9DQo+ID4g PiAgICAgIHRpbWVyX21vZChzLT5wb3N0X2xvYWQtPnRpbWVyLCAxKTsNCj4gPiA+ICsgICAgUUVN VV9MT0coImdvbmdsZWk6ICoqKioqKioqKioqKioqIGJlZ2luIHRvIGluamVjdCBkZWJ1Zw0KPiA+ ICoqKioqKioqKipcbiIpOw0KPiA+ID4gKyAgICB5aWVsZF91bnRpbF9mZF9yZWFkYWJsZShxZW11 X2dldF9mZChmKSk7DQo+ID4gPiAgICAgIHJldHVybiAwOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4g PiBAQCAtNzM3LDcgKzc0MSw3IEBAIHN0YXRpYyBpbnQgdmlydGlvX3NlcmlhbF9sb2FkKFFFTVVG aWxlICpmLCB2b2lkDQo+ID4gKm9wYXF1ZSwgaW50IHZlcnNpb25faWQpDQo+ID4gPiAgICAgIGlm ICh2ZXJzaW9uX2lkID4gMykgew0KPiA+ID4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g PiAgICAgIH0NCj4gPiA+IC0NCj4gPiA+ICsgICAgUUVNVV9MT0coImdvbmdsZWk6IHZpcnRpb19z ZXJpYWxfbG9hZCB3aWxsIGluaXQgdmlydHF1ZXVlXG4iKTsNCj4gPiA+ICAgICAgLyogVGhlIHZp cnRpbyBkZXZpY2UgKi8NCj4gPiA+ICAgICAgcmV0dXJuIHZpcnRpb19sb2FkKFZJUlRJT19ERVZJ Q0Uob3BhcXVlKSwgZiwgdmVyc2lvbl9pZCk7DQo+ID4gPiAgfQ0KPiA+ID4gZGlmZiAtLWdpdCBh L2h3L2kzODYva3ZtL2FwaWMuYyBiL2h3L2kzODYva3ZtL2FwaWMuYw0KPiA+ID4gaW5kZXggNWI0 NzA1Ni4uMmQ5ODhjYiAxMDA2NDQNCj4gPiA+IC0tLSBhL2h3L2kzODYva3ZtL2FwaWMuYw0KPiA+ ID4gKysrIGIvaHcvaTM4Ni9rdm0vYXBpYy5jDQo+ID4gPiBAQCAtMjksNyArMjksNyBAQCB2b2lk IGt2bV9wdXRfYXBpY19zdGF0ZShEZXZpY2VTdGF0ZSAqZGV2LCBzdHJ1Y3QNCj4gPiBrdm1fbGFw aWNfc3RhdGUgKmthcGljKQ0KPiA+ID4gIHsNCj4gPiA+ICAgICAgQVBJQ0NvbW1vblN0YXRlICpz ID0gQVBJQ19DT01NT04oZGV2KTsNCj4gPiA+ICAgICAgaW50IGk7DQo+ID4gPiAtDQo+ID4gPiAr ICAgIFFFTVVfTE9HKCJnb25nbGVpOiBrdm1fcHV0X2FwaWNfc3RhdGVcbiIpOw0KPiA+ID4gICAg ICBtZW1zZXQoa2FwaWMsIDAsIHNpemVvZigqa2FwaWMpKTsNCj4gPiA+ICAgICAga3ZtX2FwaWNf c2V0X3JlZyhrYXBpYywgMHgyLCBzLT5pZCA8PCAyNCk7DQo+ID4gPiAgICAgIGt2bV9hcGljX3Nl dF9yZWcoa2FwaWMsIDB4OCwgcy0+dHByKTsNCj4gPiA+IGRpZmYgLS1naXQgYS9ody9pMzg2L2t2 bS9pb2FwaWMuYyBiL2h3L2kzODYva3ZtL2lvYXBpYy5jDQo+ID4gPiBpbmRleCBkMmE2YzRjLi4w NzY5OWVjIDEwMDY0NA0KPiA+ID4gLS0tIGEvaHcvaTM4Ni9rdm0vaW9hcGljLmMNCj4gPiA+ICsr KyBiL2h3L2kzODYva3ZtL2lvYXBpYy5jDQo+ID4gPiBAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMg dm9pZCBrdm1faW9hcGljX3B1dChJT0FQSUNDb21tb25TdGF0ZSAqcykNCj4gPiA+DQo+ID4gPiAg ICAgIGNoaXAuY2hpcF9pZCA9IEtWTV9JUlFDSElQX0lPQVBJQzsNCj4gPiA+ICAgICAga2lvYXBp YyA9ICZjaGlwLmNoaXAuaW9hcGljOw0KPiA+ID4gLQ0KPiA+ID4gKyAgICBRRU1VX0xPRygiZ29u Z2xlaToga3ZtX2lvYXBpY19wdXRcbiIpOw0KPiA+ID4gICAgICBraW9hcGljLT5pZCA9IHMtPmlk Ow0KPiA+ID4gICAgICBraW9hcGljLT5pb3JlZ3NlbCA9IHMtPmlvcmVnc2VsOw0KPiA+ID4gICAg ICBraW9hcGljLT5iYXNlX2FkZHJlc3MgPSBzLT5idXNkZXYubW1pb1swXS5hZGRyOw0KPiA+ID4g ZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpY19jb21tb24uYyBiL2h3L2ludGMvYXBpY19jb21tb24u Yw0KPiA+ID4gaW5kZXggMDQyZTk2MC4uMTEwYmUyMCAxMDA2NDQNCj4gPiA+IC0tLSBhL2h3L2lu dGMvYXBpY19jb21tb24uYw0KPiA+ID4gKysrIGIvaHcvaW50Yy9hcGljX2NvbW1vbi5jDQo+ID4g PiBAQCAtMzY2LDYgKzM2Niw3IEBAIHN0YXRpYyBpbnQgYXBpY19kaXNwYXRjaF9wb3N0X2xvYWQo dm9pZCAqb3BhcXVlLCBpbnQNCj4gPiB2ZXJzaW9uX2lkKQ0KPiA+ID4gICAgICBpZiAoaW5mby0+ cG9zdF9sb2FkKSB7DQo+ID4gPiAgICAgICAgICBpbmZvLT5wb3N0X2xvYWQocyk7DQo+ID4gPiAg ICAgIH0NCj4gPiA+ICsgICAgUUVNVV9MT0coImdvbmdsZWk6IGFwaWNfZGlzcGF0Y2hfcG9zdF9s b2FkXG4iKTsNCj4gPiA+ICAgICAgcmV0dXJuIDA7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IGRp ZmYgLS1naXQgYS9taWdyYXRpb24vbWlncmF0aW9uLmMgYi9taWdyYXRpb24vbWlncmF0aW9uLmMN Cj4gPiA+IGluZGV4IDkyYzE0MjcuLmQwNzRjMGEgMTAwNjQ0DQo+ID4gPiAtLS0gYS9taWdyYXRp b24vbWlncmF0aW9uLmMNCj4gPiA+ICsrKyBiL21pZ3JhdGlvbi9taWdyYXRpb24uYw0KPiA+ID4g QEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2luY29taW5nX21pZ3JhdGlv bl9jbyh2b2lkDQo+ID4gKm9wYXF1ZSkNCj4gPiA+ICAgICAgY29uc3QgY2hhciAqYXJwR3Vlc3RD TUQgPQ0KPiA+ICJ7XCJleGVjdXRlXCI6XCJndWVzdC13cml0ZS1mbGFnLWFycFwifVxuIjsNCj4g PiA+ICAgICAgY29uc3QgY2hhciAqcG9ydE5hbWUgPSAiY2hhcmNoYW5uZWwxIjsNCj4gPiA+ICAg ICAgc2l6ZV90IHVSZXQ7DQo+ID4gPiAtDQo+ID4gPiArICAgIFFFTVVfTE9HKCJnb25nbGVpOiBl bnRlciBwcm9jZXNzX2luY29taW5nX21pZ3JhdGlvbl9jbygpXG4iKTsNCj4gPiA+ICAgICAgcmV0 ID0gcWVtdV9sb2Fkdm1fc3RhdGUoZik7DQo+ID4gPiAgICAgIHFlbXVfZmNsb3NlKGYpOw0KPiA+ ID4gICAgICBmcmVlX3hienJsZV9kZWNvZGVkX2J1ZigpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL3Fl bXUtdGltZXIuYyBiL3FlbXUtdGltZXIuYw0KPiA+ID4gaW5kZXggNTc0MWYwZC4uZGQzNmJjOSAx MDA2NDQNCj4gPiA+IC0tLSBhL3FlbXUtdGltZXIuYw0KPiA+ID4gKysrIGIvcWVtdS10aW1lci5j DQo+ID4gPiBAQCAtMTYwLDYgKzE2MCw3IEBAIHZvaWQgcWVtdV9jbG9ja19lbmFibGUoUUVNVUNs b2NrVHlwZSB0eXBlLCBib29sDQo+ID4gZW5hYmxlZCkNCj4gPiA+ICAgICAgUUVNVVRpbWVyTGlz dCAqdGw7DQo+ID4gPiAgICAgIGJvb2wgb2xkID0gY2xvY2stPmVuYWJsZWQ7DQo+ID4gPiAgICAg IGNsb2NrLT5lbmFibGVkID0gZW5hYmxlZDsNCj4gPiA+ICsgICAgUUVNVV9MT0coImdvbmdsZWk6 IHR5cGU6ICV1LCBlbmFibGVkOiAldSwgb2xkOiAldVxuIiwgdHlwZSwgZW5hYmxlZCwNCj4gPiBv bGQpOw0KPiA+ID4gICAgICBpZiAoZW5hYmxlZCAmJiAhb2xkKSB7DQo+ID4gPiAgICAgICAgICBx ZW11X2Nsb2NrX25vdGlmeSh0eXBlKTsNCj4gPiA+ICAgICAgfSBlbHNlIGlmICghZW5hYmxlZCAm JiBvbGQpIHsNCj4gPiA+IEBAIC00NzUsNiArNDc2LDcgQEAgYm9vbCB0aW1lcmxpc3RfcnVuX3Rp bWVycyhRRU1VVGltZXJMaXN0DQo+ID4gKnRpbWVyX2xpc3QpDQo+ID4gPiAgICAgIGJvb2wgcHJv Z3Jlc3MgPSBmYWxzZTsNCj4gPiA+ICAgICAgUUVNVVRpbWVyQ0IgKmNiOw0KPiA+ID4gICAgICB2 b2lkICpvcGFxdWU7DQo+ID4gPiArICAgIHN0YXRpYyBpbnQgY291bnQgPSAxMDsNCj4gPiA+DQo+ ID4gPiAgICAgIHFlbXVfZXZlbnRfcmVzZXQoJnRpbWVyX2xpc3QtPnRpbWVyc19kb25lX2V2KTsN Cj4gPiA+ICAgICAgaWYgKCF0aW1lcl9saXN0LT5jbG9jay0+ZW5hYmxlZCkgew0KPiA+ID4gQEAg LTQ4OSw3ICs0OTEsMTAgQEAgYm9vbCB0aW1lcmxpc3RfcnVuX3RpbWVycyhRRU1VVGltZXJMaXN0 DQo+ID4gKnRpbWVyX2xpc3QpDQo+ID4gPiAgICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2so JnRpbWVyX2xpc3QtPmFjdGl2ZV90aW1lcnNfbG9jayk7DQo+ID4gPiAgICAgICAgICAgICAgYnJl YWs7DQo+ID4gPiAgICAgICAgICB9DQo+ID4gPiAtDQo+ID4gPiArIGlmICh0aW1lcl9saXN0LT5j bG9jay0+dHlwZSA9PSBRRU1VX0NMT0NLX1ZJUlRVQUwgJiYgY291bnQtLSA+IDApIHsNCj4gPiA+ ICsgICAgIFFFTVVfTE9HKCJnb25nbGVpOiBleHBpcmVfdGltZTogJWxsZCwgY3VycmVudF90aW1l OiAlbGxkXG4iLA0KPiA+ID4gKyAgICAgICAgICAgICB0cy0+ZXhwaXJlX3RpbWUsIGN1cnJlbnRf dGltZSk7DQo+ID4gPiArIH0NCj4gPiA+ICAgICAgICAgIC8qIHJlbW92ZSB0aW1lciBmcm9tIHRo ZSBsaXN0IGJlZm9yZSBjYWxsaW5nIHRoZSBjYWxsYmFjayAqLw0KPiA+ID4gICAgICAgICAgdGlt ZXJfbGlzdC0+YWN0aXZlX3RpbWVycyA9IHRzLT5uZXh0Ow0KPiA+ID4gICAgICAgICAgdHMtPm5l eHQgPSBOVUxMOw0KPiA+ID4gZGlmZiAtLWdpdCBhL3ZsLmMgYi92bC5jDQo+ID4gPiBpbmRleCAw NmYzNGZlLi44MjRiMjQ2IDEwMDY0NA0KPiA+ID4gLS0tIGEvdmwuYw0KPiA+ID4gKysrIGIvdmwu Yw0KPiA+ID4gQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIHZtX3N0YXJ0KHZvaWQpDQo+ID4gPiAg ew0KPiA+ID4gICAgICBSdW5TdGF0ZSByZXF1ZXN0ZWQ7DQo+ID4gPiAgICAgIGludDY0X3Qgc3Rh cnRfdGltZSwgZW5kX3RpbWU7DQo+ID4gPiAtDQo+ID4gPiArICAgIFFFTVVfTE9HKCJnb25nbGVp OiBlbnRlciB2bV9zdGFydFxuIik7DQo+ID4gPiAgICAgIHFlbXVfdm1zdG9wX3JlcXVlc3RlZCgm cmVxdWVzdGVkKTsNCj4gPiA+ICAgICAgaWYgKHJ1bnN0YXRlX2lzX3J1bm5pbmcoKSAmJiByZXF1 ZXN0ZWQgPT0gUlVOX1NUQVRFX01BWCkgew0KPiA+ID4gICAgICAgICAgcmV0dXJuOw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiBDYW4gd2Ugd2FpdCBsb29wbHkgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGZp bmlzaGVkIHdoZW4gRUFHQUlOPw0KPiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiAtR29uZ2xl aQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+IEZyb206IEdvbmdsZWkgKEFyZWkpDQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgQXVndXN0IDA1 LCAyMDE2IDU6MTQgUE0NCj4gPiA+ID4gVG86IFBhb2xvIEJvbnppbmk7ICdqYW4ua2lzemthQHNp ZW1lbnMuY29tJzsgJ2FtaXQuc2hhaEByZWRoYXQuY29tJw0KPiA+ID4gPiBDYzogcWVtdS1kZXZl bEBub25nbnUub3JnOyBrdm1Admdlci5rZXJuZWwub3JnOyBIdWFuZ3dlaWRvbmcgKEMpDQo+ID4g PiA+IFN1YmplY3Q6IFtRdWVzdGlvbl0gdmlydGlvLXNlcmlhbCBtaXNzZXMgaXJxIGRlbGl2ZXJ5 IG9uIG1pZ3JhdGlvbj8NCj4gPiA+ID4NCj4gPiA+ID4gSGkgUGFvbG8gLCBKYW4sIEFtaXQNCj4g PiA+ID4NCj4gPiA+ID4gUmVjZW50bHkgd2UgZW5jb3VudGVyZWQgYSBwcm9ibGVtIHRoYXQgdGhl IHZpcnRpby1zZXJpYWwgY2FuJ3Qgd29yayBhZnRlcg0KPiA+ID4gPiBNaWdyYXRpb24gaW4gUkg1 LjUgVk0uIFRoZSBiaWdnZXIgcHJvYmxlbSBpcywgSSBjYW4ndCByZXByb2R1Y2UgaXQuIDooDQo+ ID4gPiA+DQo+ID4gPiA+IEl0J3MgcGhlbm9tZW5vbiB3YXMgbXVjaCBsaWtlIEJaIDg2NzM2Niwg dGhlIHVzYi10YWJsZSBtb3VzZSBkaWRuJ3Qgd29yaw0KPiA+ID4gPiBiZWNhdXNlDQo+ID4gPiA+ IHRoZSB1aGNpIGFuZCB2aXJ0aW8tc2VyaWFsIHNoYXJkIHRoZSBpcnEgbGluZSAodXNpbmcgSU9B UElDLCBub3QgTVNJKS4gVGhlIG5ldw0KPiA+ID4gPiBpbnRlcnJ1cHQNCj4gPiA+ID4gY2FuJ3Qg YmUgaW5qZWN0ZWQgdG8gVk0gYmVjYXVzZSB0aGUgaXJxIGxpbmUgYml0IGhhZCBiZWVuIHNldCB0 byAxLCBidXQgdGhlDQo+ID4gPiA+IGZyb250ZW5kDQo+ID4gPiA+IGRyaXZlciBuZXZlciBoYW5k bGUgaXQgb3IgbmV2ZXIga25vdyBpdC4NCj4gPiA+ID4NCj4gPiA+ID4gIEJ1ZyA4NjczNjYgLSB2 aXJ0aW8tc2VyaWFsIG1pc3NlcyBpcnEgZGVsaXZlcnkgb24gbWlncmF0aW9uDQo+ID4gPiA+IGh0 dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODY3MzY2DQo+ID4gPiA+ DQo+ID4gPiA+IEJ1dCBteSBxZW11IGlzIHRoZSBuZXdlc3QgcWVtdSwgQm90aCBjb21taXQNCj4g PiA4MGRjZmI4NTMyInZpcnRpby1zZXJpYWwtYnVzOg0KPiA+ID4gPiBwb3N0X2xvYWQNCj4gPiA+ ID4gc2VuZF9ldmVudCB3aGVuIHZtIGlzIHJ1bm5pbmciIGFuZCBjb21taXQgYmM2YjgxNWQ5ZSAi IHZpcnRpby1zZXJpYWw6DQo+ID4gPiA+IHByb3BhZ2F0ZQ0KPiA+ID4gPiBndWVzdF9jb25uZWN0 ZWQgdG8gdGhlIHBvcnQgb24gcG9zdF9sb2FkIiBhcmUgYXBwbGllZC4NCj4gPiA+ID4NCj4gPiA+ ID4gSSBub3RpY2VkIHRoYXQgUGFvbG8gcG9zdGVkIGFub3RoZXIgcHJvYmxlbSBtYXliZSBoYXZl IGEgcGVydGVudGlhbA0KPiA+IHByb2JsZW0NCj4gPiA+ID4gYWJvdXQNCj4gPiA+ID4gYXBpYyBp biBDb21tZW50IDIzLiBCdXQgdGhpcyBwYXRjaA0KPiA+ID4gPiAgaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTYzNTUzNSZhY3Rpb249ZGlmZg0KPiA+ID4gPiBo YXZlbid0IG1lcmdlZCBpbnRvIHFlbXUgbWFzdGVyLg0KPiA+ID4gPg0KPiA+ID4gPiBXb3VsZCB5 b3UgZ2l2ZSBtZSBzb21lIGNsdWVzIHBsZWFzZT8gVGhhbmtzIQ0KPiA+ID4gPg0KPiA+ID4gPiBS ZWdhcmRzLA0KPiA+ID4gPiAtR29uZ2xlaQ0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gLS0N Cj4gPiBEci4gRGF2aWQgQWxhbiBHaWxiZXJ0IC8gZGdpbGJlcnRAcmVkaGF0LmNvbSAvIE1hbmNo ZXN0ZXIsIFVLDQotLQ0KRHIuIERhdmlkIEFsYW4gR2lsYmVydCAvIGRnaWxiZXJ0QHJlZGhhdC5j b20gLyBNYW5jaGVzdGVyLCBVSw0K