From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3BCB86E0C6 for ; Tue, 18 Jun 2019 01:36:21 +0000 (UTC) Message-ID: <737426f4ebc8221c3f689e3f9b17e0f40ce029a9.camel@intel.com> From: Carlos Santa Date: Mon, 17 Jun 2019 18:35:08 -0700 In-Reply-To: <155912059960.13891.10910226313540523152@skylake-alporthouse-com> References: <20190528213600.61118-1-carlos.santa@intel.com> <155912059960.13891.10910226313540523152@skylake-alporthouse-com> Mime-Version: 1.0 Subject: Re: [igt-dev] [RFC v5] tests/gem_watchdog: Initial set of tests for GPU watchdog List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , igt-dev@lists.freedesktop.org Cc: Ursulin Tvrtko List-ID: T24gV2VkLCAyMDE5LTA1LTI5IGF0IDEwOjAzICswMTAwLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4g UXVvdGluZyBDYXJsb3MgU2FudGEgKDIwMTktMDUtMjggMjI6MzU6NTkpCj4gPiBUaGlzIHRlc3Qg YWRkcyBiYXNpYyBzZXQgb2YgdGVzdHMgdG8gcmVzZXQgdGhlIGRpZmZlcmVudAo+ID4gR1BVIGVu Z2luZXMgdGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgo+ID4gCj4gPiBDcmVkaXRzIHRv IEFudG9uaW8gZm9yIHRoZSBvcmlnaW5hbCBjb2RlYmFzZSB0aGlzIGlzIGJhc2VkIG9uLgo+ID4g Cj4gPiB2MjogcmVtb3ZlIGdlbV9jb250ZXh0X2dldF9wYXJhbSgpIGR1cmluZyBzZXQgKEFudG9u aW8pCj4gPiAgICAgcmVtb3ZlIGNsZWFyaW5nIG9mIHRoZSBlbmdpbmVzX3RocmVzaG9sZFtdIGlu IHRoZSBkZWZhdWx0IGNhc2UKPiA+ICAgICBpbnNpZGUgY29udGV4dF9zZXRfd2F0Y2hkb2coKS4g KEFudG9uaW8pCj4gPiAgICAgZml4IGluZGV4aW5nIHdoZW4gY3JlYXRpbmcgbG93L2hpZ2ggcHJp b3JpdHkgY29udGV4dHMKPiA+ICAgICBnZXQgcmlkIG9mIDIgdGhyZWFkcyBpZGVhIChBbnRvbmlv KQo+ID4gICAgIGZpeCBjb250ZXh0IHByaW8gYnVnIGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50 b25pbykKPiA+IHYzOiBubyBuZWVkIHRvIGZvcmNlIGNsZWFyIGRybV9pOTE1X2dlbV93YXRjaGRv Z190aW1lb3V0IHN0cnVjdAo+ID4gICAgIHdoZW4gc2V0dGluZyB0aGUgd2F0Y2hkb2cgdGltZW91 dHMgKEFudG9uaW8pCj4gPiAgICAgLXVzZSBnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoKSBpbnN0 ZWFkIHRvIHVzZSBlcnJvciBjaGVja2luZwo+ID4gICAgIC1hbHdheXMgdXNlIGEgbG9vcGVyIHRv IHRlc3QgYWxsIGVuZ2luZXMgKEFudG9uaW8pCj4gPiAgICAgLW1vZGlmeSB0ZXN0IGdwdV93YXRj aG9kZ19oYW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2luZSgpCj4gPiAgICAgdG8gdXNlIGEgY291 cGxlIG9mIGJhdGNoZXMgYW5kIHNldCB0aGUgdGltZW91dCBpbiBiZXR3ZWVuIHRoZW0KPiA+IChB bnRvbmlvKQo+ID4gICAgIC1tYWtlIHVzZSBvZiBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFu Y2UoKSAoQW50b25pbykKPiA+IHY0OiAtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHMv dyB3YXRjaGRvZyB0aW1lb3V0IChUdnJ0a28pCj4gPiAgICAgLXJlbW92ZSBkZWFkIGNvZGUgaW5z aWRlIGJhdGNoX2J1ZmZlciBmYWN0b3J5IChUdnJ0a28pCj4gPiAgICAgLXNldF93YXRjaGRvZygp IHNob3VsZCByZXR1cm4gRU5PREVWIGZvciBmYWlsIGNhc2VzIChUdnJ0a28pCj4gPiAgICAgLWVu Y2xvc2UgbmFtZSwgcHJpb3JpdHkgYW5kIHJlc2V0IHBhcmFtcyBpbnNpZGUgYXJyYXkgKFR2cnRr bykKPiA+IHY1OiAtUmViYXNlZC4gVGVzdHMgNSw2IGFuZCA4IGZyb20gdGhlIHRlc3QgcGxhbiBh cmUgbm93IGFkZGVkCj4gPiAKPiA+IFRlc3QgUGxhbjoKPiA+IAo+ID4gQXNzdW1wdGlvbnM6Cj4g PiAxLiBVc2UgZmVuY2Ugc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY3R4IHdhcyByZXNldAo+ ID4gMi4gVXNlIHNwaW4gYmF0Y2hlcyB3LyB1c2VyIHNwYWNlIHRpbWVycyB0byBjb250cm9sIGR1 cmF0aW9uCj4gPiBhbmQgY29ya2luZyB0byBjb250cm9sIG9yZGVyaW5nCj4gPiAzLiBVc2UgY29u dGV4dCBwcmlvcml0aWVzIHRvIGZvcmNlIHByZWVtcHRpb24KPiA+IAo+ID4gVGVzdHM6Cj4gPiAx LiBjdHgxLCBsb25nX2JhdGNoIC0+IGV4ZWN1dGUKPiA+IDIuIGN0eDEsIHNldF93YXRjaGRvZyAt PiByZXNldAo+ID4gMy4gY3R4Mi9jdHgxIC0+IGV4ZWN1dGUsIHJlc2V0Cj4gPiA0LiBjdHgxL2N0 eDIgLT4gcmVzZXQsIGV4ZWN1dGUKPiA+IDUuIGN0eDFfanVzdF9iZWxvd190aHJlc2hvbGQgLT4g ZXhlY3V0ZQo+ID4gNi4gY3R4X292ZXJfdGhlX3RocmVzaG9sZCAtPiByZXNldAo+ID4gNy4gc2V0 IHdhdGNoZG9nIG9uIHNvbWUgZW5naW5lcyAtPiBleGVjdXRlCj4gPiA4LiBzdWJtaXQgbG9uZ19i YXRjaCBhbmQgYWZ0ZXIgaGFsZiBvZiB0aGUKPiA+IGV4cGVjdGVkIHJ1bnRpbWUgc3VibWl0IGhp Z2hlciBwcmlvIGJhdGNoCj4gPiA5LiBzdWJtaXQgbG93IHByaW8gYmF0Y2ggdy9vIHdhdGNoZG9n IHRoZW4KPiA+IGhpZ2hlciBwcmlvIHdpdGggd2F0Y2hkb2cKPiA+IAo+ID4gVW5zcmVzb2x2ZWQg aXRlbXM6Cj4gPiAxLiBUaGUgY2hlY2sgZm9yIHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSkKPiA+ IHJldHVybnMgLTEgaW5zdGVhZCBvZiBFSU8uCj4gPiAKPiA+IENjOiBVcnN1bGluIFR2cnRrbyA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ID4gQ2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50 b25pby5hcmdlbnppYW5vQGludGVsLmNvbT4KPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiA+IFNpZ25lZC1vZmYtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9z LnNhbnRhQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAg fCAgIDMgKwo+ID4gIHRlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMgfCA0OTAKPiA+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAg ICAgICB8ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygrKQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCj4gPiAKPiA+IGRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+ID4gaW5kZXggMmQ1YzkyOWUzMmZjLi42NWI4NjhlN2Q5MjcgMTAwNjQ0Cj4gPiAtLS0gYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4g PiBAQCAtNDQ2LDYgKzQ0Niw5IEBAIGdlbV91c2VycHRyX2JsaXRzX1NPVVJDRVMgPQo+ID4gaTkx NS9nZW1fdXNlcnB0cl9ibGl0cy5jCj4gPiAgVEVTVFNfcHJvZ3MgKz0gZ2VtX3dhaXQKPiA+ICBn ZW1fd2FpdF9TT1VSQ0VTID0gaTkxNS9nZW1fd2FpdC5jCj4gPiAgCj4gPiArVEVTVFNfcHJvZ3Mg Kz0gZ2VtX3dhdGNoZG9nCj4gPiArZ2VtX3dhdGNoZG9nX1NPVVJDRVMgPSBpOTE1L2dlbV93YXRj aGRvZy5jCj4gPiArCj4gPiAgVEVTVFNfcHJvZ3MgKz0gZ2VtX3dvcmthcm91bmRzCj4gPiAgZ2Vt X3dvcmthcm91bmRzX1NPVVJDRVMgPSBpOTE1L2dlbV93b3JrYXJvdW5kcy5jCj4gPiAgCj4gPiBk aWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYyBiL3Rlc3RzL2k5MTUvZ2VtX3dh dGNoZG9nLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LmU5Y2RiODg2ZDNkNgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVzdHMvaTkxNS9nZW1f d2F0Y2hkb2cuYwo+ID4gQEAgLTAsMCArMSw0OTAgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+ID4gb2J0YWlu aW5nIGEKPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlCj4gPiAiU29mdHdhcmUiKSwKPiA+ICsgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+ID4gbGlt aXRhdGlvbgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLAo+ID4gc3VibGljZW5zZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8KPiA+IHdob20g dGhlCj4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcKPiA+IGNvbmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZQo+ID4gKGluY2x1ZGluZyB0 aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbAo+ID4gcG9ydGlvbnMgb2YgdGhlCj4gPiArICogU29mdHdhcmUuCj4g PiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwKPiA+IEVYUFJFU1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gPiBNRVJDSEFOVEFC SUxJVFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PCj4gPiBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4gREFNQUdFUyBP UiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4gQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+IE9USEVS IERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqLwo+ID4gKyNpbmNsdWRl ICJpZ3QuaCIKPiA+ICsjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gPiArI2luY2x1ZGUgInN3X3N5 bmMuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ID4gKyNpbmNsdWRlIDxmY250 bC5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ID4gKyNpbmNsdWRlIDxzeXMv aW9jdGwuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3BvbGwuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3Np Z25hbC5oPgo+ID4gKyNpbmNsdWRlICJpOTE1L2dlbV9yaW5nLmgiCj4gPiArCj4gPiArI2RlZmlu ZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUICAgICAgKDEzKQo+ID4gKyNkZWZpbmUgTE9DQUxf STkxNV9FWEVDX0JTRF9SSU5HMSAgICAgICgxIDw8Cj4gPiBMT0NBTF9JOTE1X0VYRUNfQlNEX1NI SUZUKQo+ID4gKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9SSU5HMiAgICAgICgyIDw8Cj4g PiBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUKQo+ID4gKwo+ID4gKyNkZWZpbmUgTUFYX1BSSU8g TE9DQUxfSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCj4gPiArI2RlZmluZSBERUZBVUxU X1BSSU8gTE9DQUxfSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkKPiA+ICsjZGVmaW5lIE1J Tl9QUklPIExPQ0FMX0k5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQo+ID4gKyNkZWZpbmUg SElHSCAxCj4gPiArI2RlZmluZSBMT1cgMAo+ID4gKyNkZWZpbmUgV0FUQ0hET0dfT1ZFUl9USFJF U0hPTEQgKDIwNzAwMDApCj4gPiArI2RlZmluZSBXQVRDSERPR19CRUxPV19USFJFU0hPTEQgKDEy MDAwMDApCj4gPiArI2RlZmluZSBXQVRDSERPR19USFJFU0hPTEQgKDEyMDApCj4gPiArI2RlZmlu ZSBNQVhfRU5HSU5FUyA1Cj4gPiArI2RlZmluZSBSRU5ERVJfQ0xBU1MgMAo+ID4gKyNkZWZpbmUg VklERU9fREVDT0RFX0NMQVNTIDEKPiA+ICsjZGVmaW5lIFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNT IDIKPiA+ICsjZGVmaW5lIENPUFlfRU5HSU5FX0NMQVNTIDMKPiA+ICsjZGVmaW5lIExPQ0FMX0k5 MTVfQ09OVEVYVF9QQVJBTV9XQVRDSERPRyAweDEwCj4gPiArCj4gPiArI2RlZmluZSBHRVRfUkVT RVRfU1RBVFNfSU9DVEwgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIDB4MzIsCj4gPiBzdHJ1 Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMpCj4gPiArc3RydWN0IGxvY2FsX2RybV9pOTE1 X3Jlc2V0X3N0YXRzIHsKPiA+ICsgICAgICAgX191MzIgY3R4X2lkOwo+ID4gKyAgICAgICBfX3Uz MiBmbGFnczsKPiA+ICsgICAgICAgX191MzIgcmVzZXRfY291bnQ7Cj4gPiArICAgICAgIF9fdTMy IGJhdGNoX2FjdGl2ZTsKPiA+ICsgICAgICAgX191MzIgYmF0Y2hfcGVuZGluZzsKPiA+ICsgICAg ICAgX191MzIgcGFkOwo+ID4gK307Cj4gPiArCj4gPiArY29uc3QgdWludDY0X3QgdGltZW91dF8x MDBtcyA9IDEwMDAwMDAwMExMOwo+ID4gK2Zsb2F0IHRpbWVkaWZmZXJlbmNlX21zZWMoc3RydWN0 IHRpbWV2YWwgdDAsIHN0cnVjdCB0aW1ldmFsIHQxKTsKPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgewo+ID4gKyAgICAgICB1bmlvbiB7Cj4gPiArICAgICAg ICAgICAgICAgc3RydWN0IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25m aWd1cmVkCj4gPiBvciBxdWVyaWVkLgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiBlbmdpbmVfY2xhc3M7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBfX3UxNiBlbmdpbmVfaW5zdGFuY2U7Cj4gPiArICAgICAgICAgICAg ICAgfTsKPiA+ICsgICAgICAgICAgICAgICAvKiBJbmRleCBiYXNlZCBhZGRyZXNzaW5nIG1vZGUg Ki8KPiA+ICsgICAgICAgICAgICAgICBfX3UzMiBpbmRleDsKPiA+ICsgICAgICAgfTsKPiA+ICsg ICAgICAgLyogR1BVIEVuZ2luZSB3YXRjaGRvZyByZXNldHMgdGltZW91dCBpbiB1cyAqLwo+ID4g KyAgICAgICBfX3UzMiB0aW1lb3V0X3VzOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg Y2xlYXJfZXJyb3Jfc3RhdGUoaW50IGZkKQo+ID4gK3sKPiA+ICsgICAgICAgaW50IGRpcjsKPiA+ ICsKPiA+ICsgICAgICAgZGlyID0gaWd0X3N5c2ZzX29wZW4oZmQpOwo+ID4gKwo+ID4gKyAgICAg ICBpZiAoZGlyIDwgMCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAg ICAgIC8qIEFueSB3cml0ZSB0byB0aGUgZXJyb3Igc3RhdGUgY2xlYXJzIGl0ICovCj4gPiArICAg ICAgIGlndF9zeXNmc19zZXQoZGlyLCAiZXJyb3IiLCAiIik7Cj4gPiArICAgICAgIGNsb3NlKGRp cik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgY29udGV4dF9zZXRfd2F0Y2hkb2coaW50 IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICplbmdpbmVfbmFtZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjdHhfaWQsIHVuc2lnbmVkCj4gPiB0aHJlc2hvbGQpCj4gPiAr ewo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQKPiA+IGVu Z2luZXNfdGhyZXNob2xkW01BWF9FTkdJTkVTXTsKPiA+ICsgICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKPiA+ICsgICAgICAgICAgICAgICAucGFyYW0gPSBM T0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1fV0FUQ0hET0csCj4gPiArICAgICAgICAgICAgICAgLmN0 eF9pZCA9IGN0eF9pZCwKPiA+ICsgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZihlbmdpbmVz X3RocmVzaG9sZCksCj4gCj4gV29uJ3QgdGhlIGtlcm5lbCBjb21wbGFpbiBhYm91dCB0aGUgaW52 YWxpZCB2YWx1ZXM/CgpObywgYnV0IEknbGwgY2hlY2sgYWdhaW4gc2luY2UgSSBoYWQgc29tZSBl eHRyYSBkZWJ1Z2dpbmcgYWRkZWQuLi4KPiAKPiA+ICsgICAgICAgICAgICAgICAudmFsdWUgPSAo dWludDY0X3QpJmVuZ2luZXNfdGhyZXNob2xkCj4gPiArICAgICAgIH07Cj4gPiArCj4gPiArICAg ICAgIG1lbXNldCgmZW5naW5lc190aHJlc2hvbGQsIDAsIHNpemVvZihlbmdpbmVzX3RocmVzaG9s ZCkpOwo+IAo+IFlvdSBzZXQgYWxsIHRoZSB1bnNwZWNpZmllZCB2YWx1ZXMgdG8gYmUgcmNzMCB3 aXRoIDAgdGltZW91dC4KCkkgdGhpbmsgSSBmb3JjZWQgZXZlcnl0aGluZyB0byAwIHRvIGF2b2lk IGdhcmJhZ2UgZGF0YS4uLgoKPiAKPiA+ICsKPiA+ICsgICAgICAgc3dpdGNoIChlbmdpbmVfaWQg JiBJOTE1X0VYRUNfUklOR19NQVNLKSB7Cj4gPiArICAgICAgIGNhc2UgSTkxNV9FWEVDX1JFTkRF UjoKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFswXS50aW1lb3V0X3VzID0g dGhyZXNob2xkOwo+IAo+IEkgcHJlc3VtZSB0aGlzIGlzIGEgdTY0LCBzbyBtaWdodCBhcyB3ZWxs IHVzZSBfbnMgZm9yIGNvbnNpc3RlbmN5LgoKVGhlIHVBcGkgaXMgdTMyIGJ1dCBJJ2xsIGNoYW5n ZSBpdCB0byB1NjQuCj4gCj4gPiArICAgICAgICAgICAgICAgZW5naW5lc190aHJlc2hvbGRbMF0u ZW5naW5lX2NsYXNzID0gUkVOREVSX0NMQVNTOwo+ID4gKyAgICAgICAgICAgICAgIGVuZ2luZXNf dGhyZXNob2xkWzBdLmVuZ2luZV9pbnN0YW5jZSA9IDA7Cj4gCj4gVXNlIHN0cnVjdCBpOTE1X2Vu Z2luZV9jbGFzc19pbnN0YW5jZS4KCk9rLgoKPiAKPiA+ICsgICAgICAgICAgICAgICBicmVhazsK PiA+ICsgICAgICAgY2FzZSBJOTE1X0VYRUNfQkxUOgo+ID4gKyAgICAgICAgICAgICAgIGlmIChf X2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZykgPT0gLUVOT0RFVikKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+IAo+IEFuZCBvdGhlcndpc2Ugc2V0dGlu ZyByYW5kb20gdmFsdWVzIGludG8gZW5naW5lX3RocmVzaG9sZHMuCgpIbW0sIFVyc3VsaW4gc3Rp bGwgd2FudGVkIHRvIGFkZCBzdXBwb3J0IGZvciBDUFUgd2F0Y2hkb2cgc28gdGhpcyBpcwpob3cg d2UgY2hlY2sgd2hldGhlciB0aGVyZSdzIHN1cHBvcnQgZm9yIHdhdGNoZG9nIG9uIEJMVCwgaXQg cmV0dXJucwpFTk9ERVYgZm9yIHRoaXMgY2FzZS4uLgoKPiAKPiA+ICsgICAgICAgICAgICAgICBl bHNlCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFszXS50aW1l b3V0X3VzID0KPiA+IHRocmVzaG9sZDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVuZ2lu ZXNfdGhyZXNob2xkWzNdLmVuZ2luZV9jbGFzcyA9Cj4gPiBDT1BZX0VOR0lORV9DTEFTUzsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZXNfdGhyZXNob2xkWzNdLmVuZ2luZV9pbnN0 YW5jZSA9IDA7Cj4gPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgIGNhc2UgSTkx NV9FWEVDX0JTRDoKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFsxXS50aW1l b3V0X3VzID0gdGhyZXNob2xkOwo+ID4gKyAgICAgICAgICAgICAgIGVuZ2luZXNfdGhyZXNob2xk WzFdLmVuZ2luZV9jbGFzcyA9Cj4gPiBWSURFT19ERUNPREVfQ0xBU1M7Cj4gPiArICAgICAgICAg ICAgICAgZW5naW5lc190aHJlc2hvbGRbMV0uZW5naW5lX2luc3RhbmNlID0gMDsKPiA+ICsgICAg ICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgY2FzZSBJOTE1X0VYRUNfVkVCT1g6Cj4gPiAr ICAgICAgICAgICAgICAgZW5naW5lc190aHJlc2hvbGRbMl0udGltZW91dF91cyA9IHRocmVzaG9s ZDsKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFsyXS5lbmdpbmVfY2xhc3Mg PQo+ID4gVklERU9fRU5IQU5DRU1FTlRfQ0xBU1M7Cj4gPiArICAgICAgICAgICAgICAgZW5naW5l c190aHJlc2hvbGRbMl0uZW5naW5lX2luc3RhbmNlID0gMDsKPiA+ICsgICAgICAgICAgICAgICBi cmVhazsKPiA+ICsgICAgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgICAgICAgICBicmVhazsKPiA+ ICsgICAgICAgfQo+IAo+IE9rLCBzbyB5b3Ugb25seSBzZXQgb25lIGVuZ2luZSBhbmQgdGhlIHJl c3QgdG8gemVyby4gVGhhdCBzZWVtcyBsaWtlCj4gYQo+IGJhZCBleGFtcGxlIGluIGhvdyB0byB1 c2UgdGhlIHVBUEkuCgpUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gc2V0IHRoZW0gYWxsIGF0 IG9uY2U/PyBidXQgdGhlbiB3aGF0IGFib3V0CnRoZSBtZWRpYSBkZWNvZGUgZW5naW5lIHRoYXQg b25seSBjYXJlcyBhYm91dCB0aGUgbWVkaWEgZW5naW5lcywKd291bGRuJ3QgdGhpcyBjYXNlIG9u bHkgYmUgc2V0dGluZyB0aGUgdGhyZXNob2xkIHRvIG9uZSBzcGVjaWZpYwplbmdpbmU/IEFsc28s IEkgYW0gbG9vcGluZyB0aHJvdWdoIGFsbCBlbmdpbmVzIHNvIGV2ZW50dWFsbHkgdGhleSBhbGwK Z2V0IHBvcHVsYXRlZC4KCgo+IAo+ID4gKyAgICAgICBnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh dGljIHZvaWQgYmF0Y2hfYnVmZmVyX2ZhY3RvcnkodWludDMyX3QgZmQsIHVpbnQzMl90IGN0eF9p ZCwKPiA+IHVuc2lnbmVkIGV4ZWNfaWQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG9mZnNldCwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpoYW5kbGUsIHVpbnQ2NF90Cj4gPiB0aW1lb3V0 LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmZW5jZSwgaW50IGZl bmNlX2luZGV4KQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgb2JqWzJdOwo+ID4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkg cmVsb2M7Cj4gPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsK PiA+ICsgICAgaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7Cj4gPiArICAgIGNvbnN0IHVpbnQzMl90 IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gPiArICAgIGludCBpID0gMDsKPiA+ICsKPiA+ ICsgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ID4gKwo+ID4gKyAgICBtZW1zZXQoJmV4ZWNi dWYsIDAsIHNpemVvZihleGVjYnVmKSk7Cj4gPiArICAgIG1lbXNldCgmb2JqLCAwLCBzaXplb2Yo b2JqKSk7Cj4gPiArICAgIG1lbXNldCgmcmVsb2MsIDAsIHNpemVvZihyZWxvYykpOwo+ID4gKwo+ ID4gKyAgICBleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaik7Cj4gPiAr Cj4gPiArICAgIGV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsKPiA+ICsgICAgZXhlY2J1Zi5mbGFn cyA9IGV4ZWNfaWQgfCBJOTE1X0VYRUNfRkVOQ0VfT1VUIDsKPiA+ICsKPiA+ICsgICAgb2JqWzBd LmhhbmRsZSA9IHRhcmdldDsKPiA+ICsgICAgb2JqWzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQs IDQwOTYpOwo+ID4gKwo+ID4gKyAgICBvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7Cj4gPiAr ICAgIG9ialsxXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZyZWxvYyk7Cj4gPiArCj4g PiArICAgIHJlbG9jLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+ID4gKyAgICByZWxv Yy5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKPiA+ICsgICAgcmVsb2Mu d3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cj4gPiArICAgIHJlbG9jLmRl bHRhID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90KTsKPiA+ICsKPiA+ICsgICAgcmVsb2Mub2Zm c2V0ID0gaSAqIHNpemVvZih1aW50MzJfdCk7Cj4gPiArICAgIGdlbV93cml0ZShmZCwgb2JqWzFd LmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkpOwo+ID4gKwo+ID4gKyAgICBfX3N5bmNfc3lu Y2hyb25pemUoKTsKPiAKPiBXaGF0PwoKTm90IHN1cmUgYnV0IEknbGwgcmVtb3ZlIGl0LCB0aGlz IGlzIGZyb20gdGhlIG9sZGVyIHJlZmVyZW5jZSBjb2RlIHRoaXMKaXMgYmFzZWQgb24uCj4gCj4g PiArCj4gPiArICAgIGdlbV9zeW5jKGZkLCBvYmpbMV0uaGFuZGxlKTsKPiA+ICsgICAgZXhlY2J1 Zi5yc3ZkMSA9IGN0eF9pZDsKPiA+ICsgICAgZXhlY2J1Zi5yc3ZkMiA9IC0xOwo+ID4gKwo+ID4g KyAgICBzcGluID0gaWd0X3NwaW5fbmV3KGZkLCAuZGVwZW5kZW5jeSA9IG9ialswXS5oYW5kbGUp Owo+ID4gKyAgICBpZ3Rfc3Bpbl9zZXRfdGltZW91dChzcGluLCB0aW1lb3V0KTsKPiA+ICsgICAg aWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgb2JqWzBdLmhhbmRsZSkpOwo+ID4gKwo+ID4gKyAg ICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOwo+ID4gKyAgICBpZ3Rfc3Bpbl9mcmVlKGZk LCBzcGluKTsKPiAKPiBUaGlzIHN0aWxsIGRvZXNuJ3QgZG8gd2hhdCB5b3UgdGhpbmsgaXQgZG9l cy4gSGludCwgdGhpcyBuZXZlciBydW5zCj4gdG8KPiB0aW1lb3V0Lgo+IAo+ID4gKyAgICBmZW5j ZVtmZW5jZV9pbmRleF0gPSBleGVjYnVmLnJzdmQyID4+IDMyOwo+IAo+IFlvdSBjYW4ganVzdCBh c2sgdGhlIHNwaW5uZXIgdG8gcmV0dXJuIGEgZmVuY2UuCj4gc3BpbiA9IGlndF9zcGluX25ldyhm ZCwgLmVuZ2luZSA9ZW5naW5lLCAuZmxhZ3MgPQo+IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gdGhl biBmZW5jZSA9IHNwaW4tPm91dF9mZW5jZS4KPiAKCk9rLCBJIGRpZCB0aGUgYWJvdmVidXQgcGxl YXNlIHJldmlldyB0aGUgbmV3IGltcGxlbWVudGF0aW9uIHdoZW4gSSBzZW5kCml0IChob3BlZnVs bHkgdG9tb3Jyb3cpIGJlY2F1c2UgSSBkaWQganVzdCB0aGF0IGJ1dCBJIHN0aWxsIG11c3QgYmUK bWlzc2luZyBzb21ldGhpbmcgYXMgSSBub3cgZ2V0IGEgLTkgd2hlbiBJIGNoZWNrIHRoZSBzdGF0 dXMgb2YgdGhlCmZlbmNlLgoKPiA+ICsgICAgZ2VtX2Nsb3NlKGZkLCBvYmpbMV0uaGFuZGxlKTsK PiA+ICsgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBpbmplY3RfaGFuZyh1aW50MzJfdCBmZCwgdW5zaWduZWQgZW5naW5lX2lkLCB1aW50MzJf dAo+ID4gY3R4X2lkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdz KQo+ID4gK3sKPiA+ICsgICAgICAgaWd0X2hhbmdfdCBoYW5nOwo+ID4gKyAgICAgICBoYW5nID0g aWd0X2hhbmdfY3R4KGZkLCBjdHhfaWQsIGVuZ2luZV9pZCwgZmxhZ3MpOwo+ID4gKyAgICAgICBn ZW1fc3luYyhmZCwgaGFuZy5zcGluLT5oYW5kbGUpOwo+ID4gK30KPiA+ICsKPiA+ICsvKiBUZXN0 IzE6IGNyZWF0ZSBzb21lIHdvcmsgYW5kIGxldCBpdCBydW4gb24gYWxsIGVuZ2luZXMgKi8KPiA+ ICtzdGF0aWMgdm9pZCBsb25nX2JhdGNoX3Rlc3QxKGludCBmZCwgaW50IHByaW8xLCBpbnQgcHJp bzIsIGludAo+ID4gcmVzZXRfY3R4MSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBy ZXNldF9jdHgyLCB1bnNpZ25lZCB0aHJlc2hvbGQpCj4gPiArewo+ID4gKyAgICAgICB1bnNpZ25l ZCBlbmdpbmVfaWQgPSAwOwo+ID4gKyAgICAgICB1bnNpZ25lZCBuZW5naW5lID0gMDsKPiA+ICsg ICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKPiA+ICsgICAgICAgdWlu dDMyX3QgY3R4WzhdOwo+ID4gKyAgICAgICB1aW50MzJfdCBzY3JhdGNoWzhdOwo+ID4gKyAgICAg ICB1aW50MzJfdCBjdHgyWzhdOwo+ID4gKyAgICAgICB1aW50MzJfdCBzY3JhdGNoMls4XTsKPiAK PiBBIHN0cnVjdCBtaWdodCBzcGVsbCBpdCBvdXQgYSBsaXR0bGUgbW9yZSBjb25jaXNlbHkuCgpB Z3JlZWQuCgo+IAo+IEFuZCA4ISBUaGF0J3MgY3V0dGluZyBpdCBhIGxpdHRsZSBmaW5lLiBNQVhf RU5HSU5FUyBpcyA2NCBhbmQgd2UgYXJlCj4gYWxyZWFkeSBkcmVhZGluZyB0aGUgZGF5IHdlIGV4 Y2VlZCB0aGF0LgoKT2suIAo+IAo+ID4gKyAgICAgICBpbnQgKmZlbmNlLCBpID0gMDsKPiA+ICsg ICAgICAgY29uc3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAwbXMgKiA0 Owo+ID4gKwo+ID4gKyAgICAgICBmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqOCk7 Cj4gCj4gUGxlYXNlIGJlIGtpbmQgdG8gcmVhZGVycy4gVGhlIGNhc3QgaXMgaW1wbGljaXQsIGFu ZCBzcGFjZXMgYXJlCj4gcmVxdWlyZWQKPiBhcm91bmQgJyonLgoKU29ycnkgYWJvdXQgdGhhdC4K Cj4gCj4gPiArICAgICAgIGlndF9hc3NlcnQoZmVuY2UpOwo+ID4gKwo+ID4gKyAgICAgICBfX2Zv cl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZV8pIHsKPiA+ICsgICAgICAgICAgICAgICBlbmdp bmVfaWQgPSBlXy0+ZmxhZ3M7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgc2NyYXRjaDJbbmVu Z2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiA+ICsgICAgICAgICAgICAgICBjdHgyW25l bmdpbmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPiA+ICsgICAgICAgICAgICAgICBnZW1f Y29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eDJbbmVuZ2luZV0sIHByaW8yKTsKPiA+ICsgICAg ICAgICAgICAgICBiYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4MltuZW5naW5lXSwgZW5naW5l X2lkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJbbmVuZ2lu ZV0sIDAsIE5VTEwsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF90 aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgc2Ny YXRjaFtuZW5naW5lXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ID4gKyAgICAgICAgICAgICAg IGN0eFtuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gPiArICAgICAgICAgICAg ICAgZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHhbbmVuZ2luZV0sIHByaW8xKTsKPiA+ ICsgICAgICAgICAgICAgICBiYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4W25lbmdpbmVdLCBl bmdpbmVfaWQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoW25l bmdpbmVdLCAwLCBOVUxMLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0 Y2hfdGltZW91dF9tcywgZmVuY2UsIG5lbmdpbmUpOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9p bmZvKCJUZXN0ICMxOiBjdHgxL2N0eDIgLS0+IGV4ZWN1dGUgb24KPiA+ICVzXG4iLGVfLT5uYW1l KTsKPiA+ICsgICAgICAgICAgICAgICBuZW5naW5lKys7Cj4gCj4gU28gdGhhdCBkb2Vzbid0IHRl c3QgYW55dGhpbmcgYXQgYWxsLgoKSG1tLCBVcnN1bGluIGhhcyBwcm92aWRlZCBhIHRlc3QgcGxh biAocGxlYXNlIHNlZSB0aGUgY29tbWl0IG1lc3NhZ2UKYWJvdmUpIHNvbWUgdGltZSBiYWNrIGFu ZCB0aGF0J3MgcGFydCBvZiB0aGF0LCB3ZSB3ZXJlIHRyeWluZyB0byBjb3ZlcgpkaWZmZXJlbnQg Y2FzZXMgYW5kIHRoYXQncyBvbmUgb2YgdGhlbSwgaXQgc2ltcGx5IGNyZWF0ZSBzb21lIHdvcmsg YW5kCmxldCBpdCBydW4gb24gYWxsIHRoZSBkaWZmZXJlbnQgZW5naW5lcy4uLi4KCj4gCj4gPiAr ICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykg ewo+ID4gKyAgICAgICAgICAgICAgIGNsb3NlKGZlbmNlW2ldKTsKPiA+ICsgICAgICAgICAgICAg ICBnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbaV0pOwo+ID4gKyAgICAgICAgICAgICAgIGdl bV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eDJbaV0pOwo+ID4gKyAgICAgICAgICAgICAgIGdlbV9j bG9zZShmZCwgc2NyYXRjaFtpXSk7Cj4gPiArICAgICAgICAgICAgICAgZ2VtX2Nsb3NlKGZkLCBz Y3JhdGNoMltpXSk7Cj4gPiArICAgICAgIH0KPiA+ICt9Cj4gPiArCj4gPiArZmxvYXQgdGltZWRp ZmZlcmVuY2VfbXNlYyhzdHJ1Y3QgdGltZXZhbCB0MCwgc3RydWN0IHRpbWV2YWwgdDEpCj4gPiAr ewo+ID4gKyAgICByZXR1cm4gKHQxLnR2X3NlYyAtIHQwLnR2X3NlYykgKiAxMDAwLjBmICsgKHQx LnR2X3VzZWMgLQo+ID4gdDAudHZfdXNlYykgLyAxMDAwLjBmOwo+ID4gK30KPiA+ICsKPiA+ICsv KiBUZXN0IzI6IHN1Ym1pdCBhIGxvbmcgYmF0Y2ggYW5kIGFmdGVyIGhhbGYgb2YgdGhlIGV4cGVj dGVkCj4gPiBydW50aW1lCj4gPiArICAgc3VibWl0IGEgaGlnaGVyIHByaW9yaXR5IGJhdGNoIGFu ZCB0aGVuIHRyeSB0byBjYW5jZWwgdGhlCj4gPiBleGVjdXRpb24qLwo+ID4gK3N0YXRpYyB2b2lk IGxvbmdfYmF0Y2hfdGVzdDIoaW50IGZkLCBpbnQgcHJpbzEsIGludCBwcmlvMiwgaW50Cj4gPiBy ZXNldF9jdHgxLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2V0X2N0eDIsIHVu c2lnbmVkIHRocmVzaG9sZCkKPiA+ICt7Cj4gPiArICAgICAgIHVuc2lnbmVkIGVuZ2luZV9pZCA9 IDA7Cj4gPiArICAgICAgIHVuc2lnbmVkIG5lbmdpbmUgPSAwOwo+ID4gKyAgICAgICBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ID4gKyAgICAgICB1aW50MzJfdCBjdHhbOF07 Cj4gPiArICAgICAgIHVpbnQzMl90IHNjcmF0Y2hbOF07Cj4gPiArICAgICAgIHVpbnQzMl90IGN0 eDJbOF07Cj4gPiArICAgICAgIHVpbnQzMl90IHNjcmF0Y2gyWzhdOwo+ID4gKyAgICAgICBpbnQg KmZlbmNlLCBpID0gMDsKPiA+ICsgICAgICAgdW5zaWduZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NB UFRVUkU7Cj4gPiArICAgICAgIGNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1l b3V0XzEwMG1zICogNDsKPiA+ICsgICAgICAgc3RydWN0IHRpbWV2YWwgdDA7Cj4gPiArICAgICAg IHN0cnVjdCB0aW1ldmFsIHQxOwo+ID4gKyAgICAgICBmbG9hdCBlbGFwc2VkOwo+ID4gKwo+ID4g KyAgICAgICBmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqOCk7Cj4gPiArICAgICAg IGlndF9hc3NlcnQoZmVuY2UpOwo+ID4gKwo+ID4gKyAgICAgICBuZW5naW5lID0gMDsKPiA+ICsK PiA+ICsgICAgICAgX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGVfKSB7Cj4gPiArICAg ICAgICAgICAgICAgZW5naW5lX2lkID0gZV8tPmZsYWdzOwo+ID4gKwo+ID4gKyAgICAgICAgICAg ICAgIHNjcmF0Y2gyW25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gPiArICAgICAg ICAgICAgICAgY3R4MltuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gPiArICAg ICAgICAgICAgICAgZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHgyW25lbmdpbmVdLCBw cmlvMik7Cj4gPiArICAgICAgICAgICAgICAgYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0eDJb bmVuZ2luZV0sIGVuZ2luZV9pZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjcmF0Y2gyW25lbmdpbmVdLCAwLCBOVUxMLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIG5lbmdpbmUpOwo+ID4gKwo+ID4gKyAg ICAgICAgICAgICAgIGdldHRpbWVvZmRheSgmdDAsIDApOwo+ID4gKyAgICAgICAgICAgICAgIHdo aWxlKGVsYXBzZWQgPCAyMDApIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdldHRpbWVv ZmRheSgmdDEsIDApOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZCArPSB0aW1l ZGlmZmVyZW5jZV9tc2VjKHQwLCB0MSk7Cj4gPiArICAgICAgICAgICAgICAgfQo+IAo+IFNlZSB1 c2xlZXAoKSBvciBuYW5vc2xlZXAoKQoKT2suIAo+IAo+ID4gKyAgICAgICAgICAgICAgIHNjcmF0 Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiA+ICsgICAgICAgICAgICAgICBj dHhbbmVuZ2luZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ID4gKyAgICAgICAgICAgICAg IGdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4W25lbmdpbmVdLCBwcmlvMSk7Cj4gPiAr ICAgICAgICAgICAgICAgYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0eFtuZW5naW5lXSwgZW5n aW5lX2lkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaFtuZW5n aW5lXSwgMCwgTlVMTCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNo X3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBp ZiAoY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVuZ2luZV9pZCwgZV8tPm5hbWUsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eFtuZW5naW5lXSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkKSA9PSAtRU5P REVWKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZ3RfaW5mbygiTm8gc3VwcG9ydCBm b3IgZ3B1IGgvdyB3YXRjaGRvZwo+ID4gb24gJXNcbiIsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgZV8tPm5hbWUpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBza2lwX2Nh c2U7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAgICAgIGNsZWFyX2Vycm9y X3N0YXRlKGZkKTsKPiA+ICsgICAgICAgICAgICAgICBpbmplY3RfaGFuZyhmZCwgZW5naW5lX2lk LCBjdHhbbmVuZ2luZV0sIGZsYWdzKTsKPiA+ICsgICAgICAgICAgICAgICAvKiBOb3cgY2hlY2sg dGhlIGVuZ2luZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5ICovCj4gPiArICAgICAgICAgICAgICAg Ly9pZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSksIC1FSU8pOwo+IAo+IFll YWgsIHRoYXQgZmVuY2UgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBhbnl0aGluZy4KPiAKPiA+ICsg ICAgICAgICAgICAgICBpZ3RfaW5mbygiVGVzdCAjMiBjdHgxL2N0eDIgLS0+IHNldCB3YXRjaGRv ZyBhbmQiCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2FuY2VsIGN0eDIg YXQgaGFsZiBleHBlY3RlZCBydW4KPiA+IHdpdGggaGlnaGVyIgo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiIHByaW9yaXR5IGVuZ2luZTogJXMsIGZlbmNlCj4gPiBzdGF0dXM6 IDB4JXggXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVf LT5uYW1lLAo+ID4gc3luY19mZW5jZV9zdGF0dXMoKmZlbmNlKSk7Cj4gCj4gWW91J3ZlIHNldCBh IHdhdGNoZG9nLCBidXQgZG9uJ3QgdmFsaWRhdGUgdGhhdCBpdCBoYWQgYW55IGVmZmVjdC4KPiAK PiBNYXkgSSBzdWdnZXN0LCB5b3UgdXNpbmcgYSB0aW1pbmcgYmF0Y2guIFdyaXRlIHRoZSBpbml0 aWFsIHRpbWVzdGFtcAo+IHRvCj4gc2NyYXRjaCwgYW5kIHdyaXRlIGEgc2Vjb25kIHRpbWVzdGFt cCBhbmQgcmVjdXJzZSBiYWNrIHRvIHdyaXRpbmcgdGhlCj4gc2Vjb25kIHRpbWVzdGFtcC4gQWZ0 ZXIgdGhhdCBiYXRjaCBpcyBmb3JjaWJseSByZXNldCwgeW91IGNhbiBjb21wYXJlCj4gdGhlIHR3 byB0aW1lc3RhbXBzIHRvIHNlZSBob3cgbG9uZyBpdCBleGVjdXRlZCBmb3IgKHdpdGhvdXQgaGF2 aW5nIHRvCj4gZGlnIGludG8gdGhlIGNvbnRleHQgaW1hZ2UgdG8gZXh0cmFjdCB0aGUgcHBIV1NQ IHJ1bnRpbWVzKS4gVGhlCj4gY29udHJhY3QKPiBnaXZlbiBieSB0aGUgd2F0Y2hkb2cgdUFQSSB3 b3VsZCBzZWVtIHRvIGJlIHRoYXQgdGhlIGJhdGNoIGlzIGh1bmcKPiBhZnRlcgo+IHRoYXQgcnVu dGltZSBleGNlZWRzIHRoZSB0aW1lb3V0IHRocmVzaG9sZCAodGhvdWdoIGhvdyBzdHJpY3RseSB3 ZQo+IGZhaWwKPiBmb3IgZXhjZWVkaW5nIHRoZSB0aW1lb3V0Pz8/KSBhbmQgbW9zdCBkZWZpbml0 ZWx5IG5vdCBiZSByZXNldCBiZWZvcmUKPiB3ZQo+IHJlYWNoIHRoZSB0aHJlc2hvbGQgKGdpdmUg b3IgdGFrZSBhIGZldyBtaWNyb3NlY29uZHMgcmVxdWlyZWQgZm9yIHRoZQo+IHJlY3Vyc2lvbiBh bmQgY29udGV4dCBzd2l0Y2hpbmcvZXhlY3V0aW9uIHRoYXQgd2lsbCBiZSBjaGFyZ2VkIHRvIHRo ZQo+IHdhdGNoZG9nIGFuZCBub3QgcmVjb3JkZWQgYnkgdGhlIGJhdGNoKS4KPiAtQ2hyaXMKCkkg c3luY2VkIHdpdGggQW50b25pbyBhbmQgd2UgdGhpbmsgd2UgaGF2ZSB3aGF0IHlvdSdyZSBkZXNj cmliaW5nCmFib3ZlLCBob3dldmVyIHRoZSBjYWxjdWxhdGVkIGRlbHRhIHNlZW1zIHRvIGJlIHdh eSB0byBiaWcgZm9yIHRoZSB3b3JrCmJlaW5nIHN1Ym1pdHRlZC4gUGxlYXNlIHJldmlldyB3aGVu IEkgc2VuZCB0aGUgbmV3IHZlcnNpb24uCgpSZWdhcmRzLApDYXJsb3MKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=