From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 077386E66A for ; Thu, 6 Dec 2018 21:17:19 +0000 (UTC) From: Antonio Argenziano Date: Thu, 6 Dec 2018 13:17:04 -0800 Message-Id: <20181206211704.18631-1-antonio.argenziano@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] igt: Remove incorrect get_aperture IOCTL arg 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: igt-dev@lists.freedesktop.org Cc: Tvrtko Ursulin List-ID: VGhlIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIHN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X2FwZXJ0 dXJlIGlzCmluY29uc2lzdGVudCB3aXRoIHdoYXQgaXMgZGVmaW5lZCBpbiB0aGUgZHJpdmVyIGFu ZCBub3cgbWFkZSBpdHMgd2F5CmludG8gSUdUJ3MgaW5jbHVkZSBmb2xkZXIuIFRoZSBjb3JyZWN0 IHN0cnVjdHVyZSBhbHNvIGRvZXNuJ3QgY29udGFpbgpmaWVsZHMgdGhhdCB3ZXJlIGJlaW5nIHVz ZWQgaXMgc29tZSByZXF1aXJlIGZ1bmN0aW9ucyBhYm91dCBzdG9sZW4Kc2l6ZS4gUmVtb3ZlZCB0 aG9zZSBmdW5jdGlvbnMgYW5kIGFsbCB0ZXN0cyB0aGF0IHVzZWQgdGhlIHJlcXVpcmUsIHRoZXkK aGF2ZSBiZWVuIHNraXBwaW5nIGZvciBhIHdoaWxlIGFuZCBpZiBub25lIGNvbXBsYWluZWQgdGhl eSBtdXN0IG5vdCBiZQpuZWVkZWQuCgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIEFyZ2Vuemlhbm8g PGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+CkNjOiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL2lvY3Rs X3dyYXBwZXJzLmMgICAgfCAgNjUgLS0tLS0tCiBsaWIvaW9jdGxfd3JhcHBlcnMuaCAgICB8ICAx MyAtLQogdGVzdHMvaTkxNS9nZW1fY3JlYXRlLmMgfCAgMjQgLS0tCiB0ZXN0cy9pOTE1L2dlbV9w cmVhZC5jICB8ICA4NSAtLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fcHdyaXRlLmMgfCAgMzggLS0t LQogdGVzdHMvaTkxNS9nZW1fc3RvbGVuLmMgfCA0NTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgLQogNyBmaWxl cyBjaGFuZ2VkLCA2ODEgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkx NS9nZW1fc3RvbGVuLmMKCmRpZmYgLS1naXQgYS9saWIvaW9jdGxfd3JhcHBlcnMuYyBiL2xpYi9p b2N0bF93cmFwcGVycy5jCmluZGV4IDlmMjU1NTA4Li5mOWYxMzgzMCAxMDA2NDQKLS0tIGEvbGli L2lvY3RsX3dyYXBwZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKQEAgLTQ2OCwyNiAr NDY4LDYgQEAgdm9pZCBnZW1fc3luYyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSkKIAllcnJubyA9 IDA7CiB9CiAKLQotYm9vbCBnZW1fY3JlYXRlX19oYXNfc3RvbGVuX3N1cHBvcnQoaW50IGZkKQot ewotCXN0YXRpYyBpbnQgaGFzX3N0b2xlbl9zdXBwb3J0ID0gLTE7Ci0Jc3RydWN0IGRybV9pOTE1 X2dldHBhcmFtIGdwOwotCWludCB2YWwgPSAtMTsKLQotCWlmIChoYXNfc3RvbGVuX3N1cHBvcnQg PCAwKSB7Ci0JCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOwotCQlncC5wYXJhbSA9IDM4OyAv KiBDUkVBVEVfVkVSU0lPTiAqLwotCQlncC52YWx1ZSA9ICZ2YWw7Ci0KLQkJLyogRG8gd2UgaGF2 ZSB0aGUgZXh0ZW5kZWQgZ2VtX2NyZWF0ZV9pb2N0bD8gKi8KLQkJaW9jdGwoZmQsIERSTV9JT0NU TF9JOTE1X0dFVFBBUkFNLCAmZ3ApOwotCQloYXNfc3RvbGVuX3N1cHBvcnQgPSB2YWwgPj0gMjsK LQl9Ci0KLQlyZXR1cm4gaGFzX3N0b2xlbl9zdXBwb3J0OwotfQotCiBzdHJ1Y3QgbG9jYWxfaTkx NV9nZW1fY3JlYXRlX3YyIHsKIAl1aW50NjRfdCBzaXplOwogCXVpbnQzMl90IGhhbmRsZTsKQEAg LTExOTEsNTEgKzExNzEsNiBAQCBib29sIGdlbV9oYXNfYnNkMihpbnQgZmQpCiAJcmV0dXJuIGhh c19ic2QyOwogfQogCi1zdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fZ2V0X2FwZXJ0dXJlIHsKLQlfX3U2 NCBhcGVyX3NpemU7Ci0JX191NjQgYXBlcl9hdmFpbGFibGVfc2l6ZTsKLQlfX3U2NCB2ZXJzaW9u OwotCV9fdTY0IG1hcF90b3RhbF9zaXplOwotCV9fdTY0IHN0b2xlbl90b3RhbF9zaXplOwotfTsK LSNkZWZpbmUgRFJNX0k5MTVfR0VNX0dFVF9BUEVSVFVSRQkweDIzCi0jZGVmaW5lIExPQ0FMX0lP Q1RMX0k5MTVfR0VNX0dFVF9BUEVSVFVSRSBEUk1fSU9SICAoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9JOTE1X0dFTV9HRVRfQVBFUlRVUkUsIHN0cnVjdCBsb2NhbF9pOTE1X2dlbV9nZXRfYXBlcnR1 cmUpCi0vKioKLSAqIGdlbV90b3RhbF9tYXBwYWJsZV9zaXplOgotICogQGZkOiBvcGVuIGk5MTUg ZHJtIGZpbGUgZGVzY3JpcHRvcgotICoKLSAqIEZlYXR1cmUgdGVzdCBtYWNybyB0byBxdWVyeSB0 aGUga2VybmVsIGZvciB0aGUgdG90YWwgbWFwcGFibGUgc2l6ZS4KLSAqCi0gKiBSZXR1cm5zOiBU b3RhbCBtYXBwYWJsZSBhZGRyZXNzIHNwYWNlIHNpemUuCi0gKi8KLXVpbnQ2NF90IGdlbV90b3Rh bF9tYXBwYWJsZV9zaXplKGludCBmZCkKLXsKLQlzdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fZ2V0X2Fw ZXJ0dXJlIGFwZXJ0dXJlOwotCi0JbWVtc2V0KCZhcGVydHVyZSwgMCwgc2l6ZW9mKGFwZXJ0dXJl KSk7Ci0JZG9faW9jdGwoZmQsIExPQ0FMX0lPQ1RMX0k5MTVfR0VNX0dFVF9BUEVSVFVSRSwgJmFw ZXJ0dXJlKTsKLQotCXJldHVybiBhcGVydHVyZS5tYXBfdG90YWxfc2l6ZTsKLX0KLQotLyoqCi0g KiBnZW1fdG90YWxfc3RvbGVuX3NpemU6Ci0gKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNj cmlwdG9yCi0gKgotICogRmVhdHVyZSB0ZXN0IG1hY3JvIHRvIHF1ZXJ5IHRoZSBrZXJuZWwgZm9y IHRoZSB0b3RhbCBzdG9sZW4gc2l6ZS4KLSAqCi0gKiBSZXR1cm5zOiBUb3RhbCBzdG9sZW4gbWVt b3J5LgotICovCi11aW50NjRfdCBnZW1fdG90YWxfc3RvbGVuX3NpemUoaW50IGZkKQotewotCXN0 cnVjdCBsb2NhbF9pOTE1X2dlbV9nZXRfYXBlcnR1cmUgYXBlcnR1cmU7Ci0KLQltZW1zZXQoJmFw ZXJ0dXJlLCAwLCBzaXplb2YoYXBlcnR1cmUpKTsKLQlkb19pb2N0bChmZCwgTE9DQUxfSU9DVExf STkxNV9HRU1fR0VUX0FQRVJUVVJFLCAmYXBlcnR1cmUpOwotCi0JcmV0dXJuIGFwZXJ0dXJlLnN0 b2xlbl90b3RhbF9zaXplOwotfQotCiAvKioKICAqIGdlbV9hdmFpbGFibGVfYXBlcnR1cmVfc2l6 ZToKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKZGlmZiAtLWdpdCBhL2xp Yi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5kZXggYjIyYjM2YjAu LjgwMTk4Y2UyIDEwMDY0NAotLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuaAorKysgYi9saWIvaW9j dGxfd3JhcHBlcnMuaApAQCAtMTAwLDE3ICsxMDAsNiBAQCB2b2lkICpfX2dlbV9tbWFwX193Yyhp bnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1 bgogCiBpbnQgZ2VtX211bm1hcCh2b2lkICpwdHIsIHVpbnQ2NF90IHNpemUpOwogCi0vKioKLSAq IGdlbV9yZXF1aXJlX3N0b2xlbl9zdXBwb3J0OgotICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUg ZGVzY3JpcHRvcgotICoKLSAqIFRlc3QgbWFjcm8gdG8gcXVlcnkgd2hldGhlciBzdXBwb3J0IGZv ciBhbGxvY2F0aW5nIG9iamVjdHMgZnJvbSBzdG9sZW4KLSAqIG1lbW9yeSBpcyBhdmFpbGFibGUu IEF1dG9tYXRpY2FsbHkgc2tpcHMgdGhyb3VnaCBpZ3RfcmVxdWlyZSgpIGlmIG5vdC4KLSAqLwot I2RlZmluZSBnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChmZCkgXAotCQkJaWd0X3JlcXVpcmUo Z2VtX2NyZWF0ZV9faGFzX3N0b2xlbl9zdXBwb3J0KGZkKSAmJiBcCi0JCQkJICAgIChnZW1fdG90 YWxfc3RvbGVuX3NpemUoZmQpID4gMCkpCi0KIC8qKgogICogZ2VtX3JlcXVpcmVfbW1hcF93YzoK ICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE1Myw4ICsxNDIsNiBA QCBpbnQgZ2VtX2dwdV9yZXNldF90eXBlKGludCBmZCk7CiBib29sIGdlbV9ncHVfcmVzZXRfZW5h YmxlZChpbnQgZmQpOwogYm9vbCBnZW1fZW5naW5lX3Jlc2V0X2VuYWJsZWQoaW50IGZkKTsKIGlu dCBnZW1fYXZhaWxhYmxlX2ZlbmNlcyhpbnQgZmQpOwotdWludDY0X3QgZ2VtX3RvdGFsX21hcHBh YmxlX3NpemUoaW50IGZkKTsKLXVpbnQ2NF90IGdlbV90b3RhbF9zdG9sZW5fc2l6ZShpbnQgZmQp OwogdWludDY0X3QgZ2VtX2F2YWlsYWJsZV9hcGVydHVyZV9zaXplKGludCBmZCk7CiB1aW50NjRf dCBnZW1fYXBlcnR1cmVfc2l6ZShpbnQgZmQpOwogdWludDY0X3QgZ2VtX2dsb2JhbF9hcGVydHVy ZV9zaXplKGludCBmZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jcmVhdGUuYyBiL3Rl c3RzL2k5MTUvZ2VtX2NyZWF0ZS5jCmluZGV4IDI1YzVlODA4Li45YjE1MDYzNSAxMDA2NDQKLS0t IGEvdGVzdHMvaTkxNS9nZW1fY3JlYXRlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fY3JlYXRlLmMK QEAgLTcyLDI3ICs3Miw2IEBAIHN0cnVjdCBsb2NhbF9pOTE1X2dlbV9jcmVhdGVfdjIgewogCXVp bnQzMl90IGZsYWdzOwogfSBjcmVhdGU7CiAKLSNkZWZpbmUgTE9DQUxfSU9DVExfSTkxNV9HRU1f Q1JFQVRFICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ1JF QVRFLCBzdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fY3JlYXRlX3YyKQotCi1zdGF0aWMgdm9pZCBpbnZh bGlkX2ZsYWdfdGVzdChpbnQgZmQpCi17Ci0JaW50IHJldDsKLQotCWdlbV9yZXF1aXJlX3N0b2xl bl9zdXBwb3J0KGZkKTsKLQotCWNyZWF0ZS5oYW5kbGUgPSAwOwotCWNyZWF0ZS5zaXplID0gUEFH RV9TSVpFOwotCWNyZWF0ZS5mbGFncyA9IH5JOTE1X0NSRUFURV9QTEFDRU1FTlRfU1RPTEVOOwot CXJldCA9IGRybUlvY3RsKGZkLCBMT0NBTF9JT0NUTF9JOTE1X0dFTV9DUkVBVEUsICZjcmVhdGUp OwotCi0JaWd0X2Fzc2VydChyZXQgPD0gMCk7Ci0KLQljcmVhdGUuZmxhZ3MgPSB+MDsKLQlyZXQg PSBkcm1Jb2N0bChmZCwgTE9DQUxfSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCAmY3JlYXRlKTsKLQot CWlndF9hc3NlcnQocmV0IDw9IDApOwotfQotCiBzdGF0aWMgdm9pZCBpbnZhbGlkX3NpemVfdGVz dChpbnQgZmQpCiB7CiAJdWludDMyX3QgaGFuZGxlOwpAQCAtMTUxLDkgKzEzMCw2IEBAIGlndF9t YWluCiAJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CiAJfQogCi0JaWd0X3N1 YnRlc3QoInN0b2xlbi1pbnZhbGlkLWZsYWciKQotCQlpbnZhbGlkX2ZsYWdfdGVzdChmZCk7Ci0K IAlpZ3Rfc3VidGVzdCgiY3JlYXRlLWludmFsaWQtc2l6ZSIpCiAJCWludmFsaWRfc2l6ZV90ZXN0 KGZkKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcHJlYWQuYyBiL3Rlc3RzL2k5MTUv Z2VtX3ByZWFkLmMKaW5kZXggMDAzNzk1ODAuLjBhM2I0NWE0IDEwMDY0NAotLS0gYS90ZXN0cy9p OTE1L2dlbV9wcmVhZC5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3ByZWFkLmMKQEAgLTE1MCw5MSAr MTUwLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCi0JaWd0 X3N1YnRlc3QoInN0b2xlbi1ub3JtYWwiKSB7Ci0JCWdlbV9yZXF1aXJlX3N0b2xlbl9zdXBwb3J0 KGZkKTsKLQkJZm9yIChjb3VudCA9IDE7IGNvdW50IDw9IDE8PDE3OyBjb3VudCA8PD0gMSkgewot CQkJc3RydWN0IHRpbWV2YWwgc3RhcnQsIGVuZDsKLQotCQkJZ2V0dGltZW9mZGF5KCZzdGFydCwg TlVMTCk7Ci0JCQlkb19nZW1fcmVhZChmZCwgc3JjX3N0b2xlbiwgZHN0X3VzZXIsIG9iamVjdF9z aXplLCBjb3VudCk7Ci0JCQlnZXR0aW1lb2ZkYXkoJmVuZCwgTlVMTCk7Ci0JCQl1c2VjcyA9IGVs YXBzZWQoJnN0YXJ0LCAmZW5kLCBjb3VudCk7Ci0JCQlicHMgPSBieXRlc19wZXJfc2VjKGJ1Ziwg b2JqZWN0X3NpemUvdXNlY3MqMWU2KTsKLQkJCWlndF9pbmZvKCJUaW1lIHRvIHByZWFkICVkIGJ5 dGVzIHggJTZkOgklNy4zZsK1cywgJXNcbiIsCi0JCQkJIG9iamVjdF9zaXplLCBjb3VudCwgdXNl Y3MsIGJwcyk7Ci0JCQlmZmx1c2goc3Rkb3V0KTsKLQkJfQotCX0KLQlmb3IgKGMgPSBjYWNoZTsg Yy0+bGV2ZWwgIT0gLTE7IGMrKykgewotCQlpZ3Rfc3VidGVzdF9mKCJzdG9sZW4tJXMiLCBjLT5u YW1lKSB7Ci0JCQlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChmZCk7Ci0JCQlnZW1fc2V0X2Nh Y2hpbmcoZmQsIHNyY19zdG9sZW4sIGMtPmxldmVsKTsKLQotCQkJZm9yIChjb3VudCA9IDE7IGNv dW50IDw9IDE8PDE3OyBjb3VudCA8PD0gMSkgewotCQkJCXN0cnVjdCB0aW1ldmFsIHN0YXJ0LCBl bmQ7Ci0KLQkJCQlnZXR0aW1lb2ZkYXkoJnN0YXJ0LCBOVUxMKTsKLQkJCQlkb19nZW1fcmVhZChm ZCwgc3JjX3N0b2xlbiwgZHN0X3VzZXIsCi0JCQkJCSAgICBvYmplY3Rfc2l6ZSwgY291bnQpOwot CQkJCWdldHRpbWVvZmRheSgmZW5kLCBOVUxMKTsKLQkJCQl1c2VjcyA9IGVsYXBzZWQoJnN0YXJ0 LCAmZW5kLCBjb3VudCk7Ci0JCQkJYnBzID0gYnl0ZXNfcGVyX3NlYyhidWYsIG9iamVjdF9zaXpl L3VzZWNzKjFlNik7Ci0JCQkJaWd0X2luZm8oIlRpbWUgdG8gc3RvbGVuLSVzIHByZWFkICVkIGJ5 dGVzIHggJTZkOiAgICAgICU3LjNmwrVzLCAlc1xuIiwKLQkJCQkJIGMtPm5hbWUsIG9iamVjdF9z aXplLCBjb3VudCwgdXNlY3MsIGJwcyk7Ci0JCQkJZmZsdXNoKHN0ZG91dCk7Ci0JCQl9Ci0JCX0K LQl9Ci0KLQkvKiBMaXN0IHRoZSB0aW1lIHRha2VuIGluIHByZWFkIG9wZXJhdGlvbiBmb3Igc3Rv bGVuIG9iamVjdHMsIHdpdGgKLQkgKiBhbmQgd2l0aG91dCB0aGUgb3ZlcmhlYWQgb2YgcGFnZSBm YXVsdCBoYW5kbGluZyBvbiBhY2Nlc3NpbmcgdGhlCi0JICogdXNlciBzcGFjZSBidWZmZXIKLQkg Ki8KLQlpZ3Rfc3VidGVzdCgicGFnZWZhdWx0LXByZWFkIikgewotCQlnZW1fcmVxdWlyZV9zdG9s ZW5fc3VwcG9ydChmZCk7Ci0JCWxhcmdlX3N0b2xlbiA9IGdlbV9jcmVhdGVfc3RvbGVuKGZkLCBM QVJHRV9PQkpFQ1RfU0laRSk7Ci0JCXN0b2xlbl9ub3BmX3VzZXIgPSAodWludDMyX3QgKikgbW1h cChOVUxMLCBMQVJHRV9PQkpFQ1RfU0laRSwKLQkJCQkJCVBST1RfV1JJVEUsCi0JCQkJCQlNQVBf QU5PTllNT1VTfE1BUF9QUklWQVRFLAotCQkJCQkJLTEsIDApOwotCQlpZ3RfYXNzZXJ0KHN0b2xl bl9ub3BmX3VzZXIpOwotCi0JCWZvciAoY291bnQgPSAxOyBjb3VudCA8PSAxMDsgY291bnQgKysp IHsKLQkJCXN0cnVjdCB0aW1ldmFsIHN0YXJ0LCBlbmQ7Ci0JCQlkb3VibGUgdF9lbGFwc2VkID0g MDsKLQotCQkJZ2V0dGltZW9mZGF5KCZzdGFydCwgTlVMTCk7Ci0JCQlkb19nZW1fcmVhZChmZCwg bGFyZ2Vfc3RvbGVuLCBzdG9sZW5fbm9wZl91c2VyLAotCQkJCSAgICBMQVJHRV9PQkpFQ1RfU0la RSwgMSk7Ci0JCQlnZXR0aW1lb2ZkYXkoJmVuZCwgTlVMTCk7Ci0JCQl0X2VsYXBzZWQgPSBlbGFw c2VkKCZzdGFydCwgJmVuZCwgY291bnQpOwotCQkJYnBzID0gYnl0ZXNfcGVyX3NlYyhidWYsIG9i amVjdF9zaXplL3RfZWxhcHNlZCoxZTYpOwotCQkJaWd0X2luZm8oIlBhZ2VmYXVsdC1OIC0gVGlt ZSB0byBwcmVhZCAlZCBieXRlczogJTcuM2bCtXMsICVzXG4iLAotCQkJCSBMQVJHRV9PQkpFQ1Rf U0laRSwgdF9lbGFwc2VkLCBicHMpOwotCi0JCQlzdG9sZW5fcGZfdXNlciA9ICh1aW50MzJfdCAq KSBtbWFwKE5VTEwsIExBUkdFX09CSkVDVF9TSVpFLAotCQkJCQkJICAgICAgUFJPVF9XUklURSwK LQkJCQkJCSAgICAgIE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUsCi0JCQkJCQkgICAgICAtMSwg MCk7Ci0JCQlpZ3RfYXNzZXJ0KHN0b2xlbl9wZl91c2VyKTsKLQotCQkJZ2V0dGltZW9mZGF5KCZz dGFydCwgTlVMTCk7Ci0JCQlkb19nZW1fcmVhZChmZCwgbGFyZ2Vfc3RvbGVuLCBzdG9sZW5fcGZf dXNlciwKLQkJCQkgICAgTEFSR0VfT0JKRUNUX1NJWkUsIDEpOwotCQkJZ2V0dGltZW9mZGF5KCZl bmQsIE5VTEwpOwotCQkJdXNlY3MgPSBlbGFwc2VkKCZzdGFydCwgJmVuZCwgY291bnQpOwotCQkJ YnBzID0gYnl0ZXNfcGVyX3NlYyhidWYsIG9iamVjdF9zaXplL3VzZWNzKjFlNik7Ci0JCQlpZ3Rf aW5mbygiUGFnZWZhdWx0LVkgLSBUaW1lIHRvIHByZWFkICVkIGJ5dGVzOiAlNy4zZsK1cywgJXMl cyVzXG4iLAotCQkJCSBMQVJHRV9PQkpFQ1RfU0laRSwgdXNlY3MsCi0JCQkJIHRfZWxhcHNlZCA8 IHVzZWNzID8gS0dSTiA6IEtSRUQsIGJwcywgS05STSk7Ci0JCQlmZmx1c2goc3Rkb3V0KTsKLQkJ CW11bm1hcChzdG9sZW5fcGZfdXNlciwgTEFSR0VfT0JKRUNUX1NJWkUpOwotCQl9Ci0JCW11bm1h cChzdG9sZW5fbm9wZl91c2VyLCBMQVJHRV9PQkpFQ1RfU0laRSk7Ci0JCWdlbV9jbG9zZShmZCwg bGFyZ2Vfc3RvbGVuKTsKLQl9Ci0KLQogCWlndF9maXh0dXJlIHsKIAkJZnJlZShzcmMpOwogCQln ZW1fY2xvc2UoZmQsIGRzdCk7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9wd3JpdGUuYyBi L3Rlc3RzL2k5MTUvZ2VtX3B3cml0ZS5jCmluZGV4IDY5NmJkMzE2Li5hOTk2NDJjNSAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fcHdyaXRlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fcHdyaXRl LmMKQEAgLTI3Nyw0NCArMjc3LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQl9CiAJfQogCi0JaWd0X3N1YnRlc3QoInN0b2xlbi1ub3JtYWwiKSB7Ci0JCWdlbV9yZXF1aXJl X3N0b2xlbl9zdXBwb3J0KGZkKTsKLQkJZm9yIChjb3VudCA9IDE7IGNvdW50IDw9IDE8PDE3OyBj b3VudCA8PD0gMSkgewotCQkJc3RydWN0IHRpbWV2YWwgc3RhcnQsIGVuZDsKLQotCQkJZ2V0dGlt ZW9mZGF5KCZzdGFydCwgTlVMTCk7Ci0JCQlkb19nZW1fd3JpdGUoZmQsIGRzdF9zdG9sZW4sIHNy Y191c2VyLAotCQkJCSAgICAgb2JqZWN0X3NpemUsIGNvdW50KTsKLQkJCWdldHRpbWVvZmRheSgm ZW5kLCBOVUxMKTsKLQkJCXVzZWNzID0gZWxhcHNlZCgmc3RhcnQsICZlbmQsIGNvdW50KTsKLQkJ CWJwcyA9IGJ5dGVzX3Blcl9zZWMoYnVmLCBvYmplY3Rfc2l6ZS91c2VjcyoxZTYpOwotCQkJaWd0 X2luZm8oIlRpbWUgdG8gcHdyaXRlICVkIGJ5dGVzIHggJTZkOiAgICAgICAgJTcuM2bCtXMsICVz XG4iLAotCQkJCSBvYmplY3Rfc2l6ZSwgY291bnQsIHVzZWNzLCBicHMpOwotCQkJZmZsdXNoKHN0 ZG91dCk7Ci0JCX0KLQl9Ci0KLQlmb3IgKGMgPSBjYWNoZTsgYy0+bGV2ZWwgIT0gLTE7IGMrKykg ewotCQlpZ3Rfc3VidGVzdF9mKCJzdG9sZW4tJXMiLCBjLT5uYW1lKSB7Ci0JCQlnZW1fcmVxdWly ZV9zdG9sZW5fc3VwcG9ydChmZCk7Ci0JCQlnZW1fc2V0X2NhY2hpbmcoZmQsIGRzdCwgYy0+bGV2 ZWwpOwotCQkJZm9yIChjb3VudCA9IDE7IGNvdW50IDw9IDE8PDE3OyBjb3VudCA8PD0gMSkgewot CQkJCXN0cnVjdCB0aW1ldmFsIHN0YXJ0LCBlbmQ7Ci0KLQkJCQlnZXR0aW1lb2ZkYXkoJnN0YXJ0 LCBOVUxMKTsKLQkJCQlkb19nZW1fd3JpdGUoZmQsIGRzdF9zdG9sZW4sIHNyY191c2VyLAotCQkJ CQkgICAgIG9iamVjdF9zaXplLCBjb3VudCk7Ci0JCQkJZ2V0dGltZW9mZGF5KCZlbmQsIE5VTEwp OwotCQkJCWJwcyA9IGJ5dGVzX3Blcl9zZWMoYnVmLAotCQkJCQkJICAgIG9iamVjdF9zaXplL3Vz ZWNzKjFlNik7Ci0JCQkJaWd0X2luZm8oIlRpbWUgdG8gc3RvbGVuLSVzIHB3cml0ZSAlZCBieXRl cyB4ICU2ZDogICAgICU3LjNmwrVzLCAlc1xuIiwKLQkJCQkJIGMtPm5hbWUsIG9iamVjdF9zaXpl LCBjb3VudCwKLQkJCQkJIHVzZWNzLCBicHMpOwotCQkJCWZmbHVzaChzdGRvdXQpOwotCQkJfQot CQl9Ci0JfQotCiAJaWd0X2ZpeHR1cmUgewogCQlmcmVlKHNyYyk7CiAJCWdlbV9jbG9zZShmZCwg ZHN0KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3N0b2xlbi5jIGIvdGVzdHMvaTkxNS9n ZW1fc3RvbGVuLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNDg5OTc2Li4wMDAw MDAwMAotLS0gYS90ZXN0cy9pOTE1L2dlbV9zdG9sZW4uYworKysgL2Rldi9udWxsCkBAIC0xLDQ1 NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KLSAq Ci0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKLSAqIFNvZnR3 YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAotICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0g KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTCi0gKiBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQXV0aG9y czoKLSAqICAgIEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWEgYXQgaW50 ZWwuY29tPgotICoKLSAqLwotCi0vKiogQGZpbGUgZ2VtX2NyZWF0ZV9zdG9sZW4uYwotICoKLSAq IFRoaXMgaXMgYSB0ZXN0IGZvciB0aGUgZXh0ZW5kZWQgZ2VtX2NyZWF0ZSBpb2N0bCwgdGhhdCBp bmNsdWRlcyBhbGxvY2F0aW9uCi0gKiBvZiBvYmplY3QgZnJvbSBzdG9sZW4gbWVtb3J5LgotICoK LSAqIFRoZSBnb2FsIGlzIHRvIHNpbXBseSBlbnN1cmUgdGhlIGJhc2ljcyB3b3JrLCBhbmQgaW52 YWxpZCBpbnB1dCBjb21iaW5hdGlvbnMKLSAqIGFyZSByZWplY3RlZC4KLSAqLwotCi0jaW5jbHVk ZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4K LSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGludHR5 cGVzLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1 ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0KLSNpbmNsdWRlIDxkcm0uaD4K LQotI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgi Ci0jaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKLSNpbmNsdWRlICJpbnRlbF9pby5oIgot I2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIKLSNpbmNsdWRlICJpZ3RfYXV4LmgiCi0jaW5jbHVk ZSAiZHJtdGVzdC5oIgotI2luY2x1ZGUgImRybS5oIgotI2luY2x1ZGUgImk5MTVfZHJtLmgiCi0K LUlHVF9URVNUX0RFU0NSSVBUSU9OKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGV4ZXRlbmRlZCBn ZW1fY3JlYXRlIGlvY3RsLCIKLQkJICAgICAiIHRoYXQgaW5jbHVkZXMgYWxsb2NhdGlvbiBvZiBv YmogZnJvbSBzdG9sZW4gcmVnaW9uIik7Ci0jZGVmaW5lIENMRUFSKHMpIG1lbXNldCgmcywgMCwg c2l6ZW9mKHMpKQotI2RlZmluZSBTSVpFIDEwMjQqMTAyNAotI2RlZmluZSBEV09SRF9TSVpFIDQK LSNkZWZpbmUgREFUQSAweGRlYWQKLSNkZWZpbmUgTEFSR0VfU0laRSAweGZmZmZmZmZmCi0jZGVm aW5lIE1BWF9PQkpFQ1RTIDEwMAotCi1zdGF0aWMgZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwot c3RhdGljIHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0KLXN0YXRpYyB2b2lkIHZl cmlmeV9jb3B5X29wKGRybV9pbnRlbF9ibyAqc3JjLCBkcm1faW50ZWxfYm8gKmRlc3QpCi17Ci0J dWludDMyX3QgKnZpcnQsIGksIHJldDsKLQkvKiBGaWxsIHRoZSBzcmMgQk8gd2l0aCBkd29yZHMg Ki8KLQlyZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoc3JjKTsKLQlpZ3RfYXNzZXJ0KCFy ZXQpOwotCi0JdmlydCA9IHNyYy0+dmlydHVhbDsKLQlmb3IgKGkgPSAwOyBpIDwgU0laRS9EV09S RF9TSVpFOyBpKyspCi0JCXZpcnRbaV0gPSBpOwotCi0JaW50ZWxfY29weV9ibyhiYXRjaCwgZGVz dCwgc3JjLCBTSVpFKTsKLQotCXJldCA9IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkZXN0KTsK LQlpZ3RfYXNzZXJ0KCFyZXQpOwotCi0JdmlydCA9IGRlc3QtPnZpcnR1YWw7Ci0JLyogdmVyaWZ5 ICovCi0JZm9yIChpID0gMDsgaSA8IFNJWkUvRFdPUkRfU0laRTsgaSsrKQotCQlpZ3RfYXNzZXJ0 X2VxKHZpcnRbaV0sIGkpOwotCi0JZHJtX2ludGVsX2JvX3VubWFwKHNyYyk7Ci0JZHJtX2ludGVs X2JvX3VubWFwKGRlc3QpOwotfQotCi1zdGF0aWMgdm9pZCBzdG9sZW5fcHdyaXRlKGludCBmZCkK LXsKLQlkcm1faW50ZWxfYm8gKmJvOwotCXVpbnQzMl90IGJ1ZltTSVpFL0RXT1JEX1NJWkVdOwot CXVpbnQzMl90IGhhbmRsZSA9IDA7Ci0JdWludDMyX3QgKnZpcnQ7Ci0JaW50IGksIHJldCA9IDA7 Ci0KLQlmb3IgKGkgPSAwOyBpIDwgU0laRS9EV09SRF9TSVpFOyBpKyspCi0JCWJ1ZltpXSA9IERB VEE7Ci0KLQlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChmZCk7Ci0KLQloYW5kbGUgPSBnZW1f Y3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Ci0KLQlnZW1fd3JpdGUoZmQsIGhhbmRsZSwgMCwgYnVm LCBTSVpFKTsKLQlibyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJibyIs IGhhbmRsZSk7Ci0KLQlyZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pOwotCWlndF9h c3NlcnQoIXJldCk7Ci0KLQl2aXJ0ID0gYm8tPnZpcnR1YWw7Ci0KLQlmb3IgKGkgPSAwOyBpIDwg U0laRS9EV09SRF9TSVpFOyBpKyspCi0JCWlndF9hc3NlcnRfZXEodmlydFtpXSwgREFUQSk7Ci0K LQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7 Ci0JZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwotfQotCi1zdGF0aWMgdm9pZCBzdG9sZW5fcHJlYWQo aW50IGZkKQotewotCWRybV9pbnRlbF9ibyAqYm87Ci0JdWludDMyX3QgYnVmW1NJWkUvRFdPUkRf U0laRV07Ci0JdWludDMyX3QgaGFuZGxlID0gMDsKLQl1aW50MzJfdCAqdmlydDsKLQlpbnQgaSwg cmV0ID0gMDsKLQotCUNMRUFSKGJ1Zik7Ci0KLQlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChm ZCk7Ci0KLQloYW5kbGUgPSBnZW1fY3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Ci0KLQlibyA9IGdl bV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJibyIsIGhhbmRsZSk7Ci0KLQlyZXQg PSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pOwotCWlndF9hc3NlcnQoIXJldCk7Ci0KLQl2 aXJ0ID0gYm8tPnZpcnR1YWw7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgU0laRS9EV09SRF9TSVpFOyBp KyspCi0JCXZpcnRbaV0gPSBEQVRBOwotCi0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKLQlkcm1f aW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8pOwotCi0JZ2VtX3JlYWQoZmQsIGhhbmRsZSwgMCwgYnVm LCBTSVpFKTsKLQotCWZvciAoaSA9IDA7IGkgPCBTSVpFL0RXT1JEX1NJWkU7IGkrKykKLQkJaWd0 X2Fzc2VydF9lcShidWZbaV0sIERBVEEpOwotCi0JZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwotfQot Ci1zdGF0aWMgdm9pZCBjb3B5X3Rlc3QoaW50IGZkKQotewotCWRybV9pbnRlbF9ibyAqc3JjLCAq ZGVzdDsKLQl1aW50MzJfdCBzcmNfaGFuZGxlID0gMCwgZGVzdF9oYW5kbGUgPSAwOwotCi0JZ2Vt X3JlcXVpcmVfc3RvbGVuX3N1cHBvcnQoZmQpOwotCi0Jc3JjX2hhbmRsZSA9IGdlbV9jcmVhdGVf c3RvbGVuKGZkLCBTSVpFKTsKLQlkZXN0X2hhbmRsZSA9IGdlbV9jcmVhdGVfc3RvbGVuKGZkLCBT SVpFKTsKLQotCXNyYyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJzcmNf Ym8iLCBzcmNfaGFuZGxlKTsKLQlkZXN0ID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYnVmbWdy LCBmZCwgImRzdF9ibyIsIGRlc3RfaGFuZGxlKTsKLQotCWlndF9hc3NlcnQoc3JjICE9IE5VTEwp OwotCWlndF9hc3NlcnQoZGVzdCAhPSBOVUxMKTsKLQotCXZlcmlmeV9jb3B5X29wKHNyYywgZGVz dCk7Ci0KLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3JjKTsKLQlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2UoZGVzdCk7Ci0JZ2VtX2Nsb3NlKGZkLCBzcmNfaGFuZGxlKTsKLQlnZW1fY2xvc2Uo ZmQsIGRlc3RfaGFuZGxlKTsKLX0KLQotc3RhdGljIHZvaWQgdmVyaWZ5X29iamVjdF9jbGVhcihp bnQgZmQpCi17Ci0JZHJtX2ludGVsX2JvICpibzsKLQl1aW50MzJfdCBoYW5kbGUgPSAwOwotCXVp bnQzMl90ICp2aXJ0OwotCWludCBpLCByZXQ7Ci0KLQlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9y dChmZCk7Ci0KLQloYW5kbGUgPSBnZW1fY3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Ci0KLQlibyA9 IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJ2ZXJpZnlfYm8iLCBoYW5kbGUp OwotCWlndF9hc3NlcnQoYm8gIT0gTlVMTCk7Ci0KLQlyZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21h cF9ndHQoYm8pOwotCWlndF9hc3NlcnQoIXJldCk7Ci0KLQkvKiBWZXJpZnkgaWYgdGhlIEJPIGlz IHplcm9lZCAqLwotCXZpcnQgPSBiby0+dmlydHVhbDsKLQlmb3IgKGkgPSAwOyBpIDwgU0laRSAv IERXT1JEX1NJWkU7IGkrKykKLQkJaWd0X2Fzc2VydCghdmlydFtpXSk7Ci0KLQlkcm1faW50ZWxf Ym9fdW5tYXAoYm8pOwotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Ci0JZ2VtX2Nsb3Nl KGZkLCBoYW5kbGUpOwotfQotCi1zdGF0aWMgdm9pZCBzdG9sZW5fbGFyZ2Vfb2JqX2FsbG9jKGlu dCBmZCkKLXsKLQl1aW50MzJfdCBoYW5kbGUgPSAwOwotCi0JZ2VtX3JlcXVpcmVfc3RvbGVuX3N1 cHBvcnQoZmQpOwotCWhhbmRsZSA9IF9fZ2VtX2NyZWF0ZV9zdG9sZW4oZmQsICh1bnNpZ25lZCBs b25nIGxvbmcpIExBUkdFX1NJWkUgKyA0MDk2KTsKLQlpZ3RfYXNzZXJ0KCFoYW5kbGUpOwotfQot Ci1zdGF0aWMgdm9pZCBzdG9sZW5fZmlsbF9wdXJnZV90ZXN0KGludCBmZCkKLXsKLQlkcm1faW50 ZWxfYm8gKmJvOwotCWludCBvYmpfY291bnQgPSAwLCBpID0gMDsKLQlpbnQgX3JldCA9IDAsIGog PSAwOwotCXVpbnQzMl90IGhhbmRsZVtNQVhfT0JKRUNUU107Ci0JdWludDMyX3QgbmV3X2hhbmRs ZTsKLQl1aW50MzJfdCAqdmlydDsKLQlpbnQgcmV0YWluZWQ7Ci0KLQlnZW1fcmVxdWlyZV9zdG9s ZW5fc3VwcG9ydChmZCk7Ci0KLQkvKiBFeGhhdXN0IFN0b2xlbiBzcGFjZSAqLwotCWRvIHsKLQkJ aGFuZGxlW2ldID0gX19nZW1fY3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Ci0JCWlmIChoYW5kbGVb aV0gIT0gMCkgewotCQkJYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGZkLAot CQkJCQkJICAgICAidmVyaWZ5X2JvIiwgaGFuZGxlW2ldKTsKLQkJCWlndF9hc3NlcnQoYm8gIT0g TlVMTCk7Ci0KLQkJCV9yZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pOwotCQkJaWd0 X2Fzc2VydCghX3JldCk7Ci0KLQkJCXZpcnQgPSBiby0+dmlydHVhbDsKLQkJCWZvciAoaiA9IDA7 IGogPCBTSVpFL0RXT1JEX1NJWkU7IGorKykKLQkJCQl2aXJ0W2pdID0gREFUQTsKLQotCQkJZHJt X2ludGVsX2JvX3VubWFwKGJvKTsKLQkJCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Ci0K LQkJCW9ial9jb3VudCsrOwotCQl9Ci0KLQkJaSsrOwotCX0gd2hpbGUgKGhhbmRsZVtpLTFdICYm IGkgPCBNQVhfT0JKRUNUUyk7Ci0KLQlpZ3RfYXNzZXJ0KG9ial9jb3VudCA+IDApOwotCi0JLyog TWFyayBhbGwgc3RvbGVuIG9iamVjdHMgcHVyZ2VhYmxlICovCi0JZm9yIChpID0gMDsgaSA8IG9i al9jb3VudDsgaSsrKQotCQlyZXRhaW5lZCA9IGdlbV9tYWR2aXNlKGZkLCBoYW5kbGVbaV0sIEk5 MTVfTUFEVl9ET05UTkVFRCk7Ci0KLQkvKiBUcnkgdG8gYWxsb2NhdGUgb25lIG1vcmUgb2JqZWN0 ICovCi0JbmV3X2hhbmRsZSA9IGdlbV9jcmVhdGVfc3RvbGVuKGZkLCBTSVpFKTsKLQotCS8qIENo ZWNrIGlmIHRoZSByZXRhaW5lZCBvYmplY3QncyBtZW1vcnkgY29udGVudHMgYXJlIGludGFjdCAq LwotCWZvciAoaSA9IDA7IGkgPCBvYmpfY291bnQ7IGkrKykgewotCQlyZXRhaW5lZCA9IGdlbV9t YWR2aXNlKGZkLCBoYW5kbGVbaV0sIEk5MTVfTUFEVl9XSUxMTkVFRCk7Ci0JCWlmIChyZXRhaW5l ZCkgewotCQkJYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGZkLAotCQkJCQkJ ICAgICAidmVyaWZ5X2JvIiwgaGFuZGxlW2ldKTsKLQkJCWlndF9hc3NlcnQoYm8gIT0gTlVMTCk7 Ci0KLQkJCV9yZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pOwotCQkJaWd0X2Fzc2Vy dCghX3JldCk7Ci0KLQkJCXZpcnQgPSBiby0+dmlydHVhbDsKLQkJCWZvciAoaiA9IDA7IGogPCBT SVpFL0RXT1JEX1NJWkU7IGorKykKLQkJCQlpZ3RfYXNzZXJ0X2VxKHZpcnRbal0sIERBVEEpOwot Ci0JCQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwotCQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNl KGJvKTsKLQkJfQotCX0KLQotCWdlbV9jbG9zZShmZCwgbmV3X2hhbmRsZSk7Ci0JZm9yIChpID0g MDsgaSA8IG9ial9jb3VudDsgaSsrKQotCQlnZW1fY2xvc2UoZmQsIGhhbmRsZVtpXSk7Ci19Ci0K LXN0YXRpYyB2b2lkIHN0b2xlbl9oaWJlcm5hdGUoaW50IGZkKQotewotCWRybV9pbnRlbF9ibyAq Ym87Ci0JZHJtX2ludGVsX2JvICpzcmMsICpkZXN0OwotCWludCBvYmpfY291bnQgPSAwLCBpID0g MDsKLQlpbnQgcmV0LCBqOwotCXVpbnQzMl90IGhhbmRsZVtNQVhfT0JKRUNUU10sIHNyY19oYW5k bGU7Ci0JdWludDMyX3QgKnZpcnQ7Ci0KLQlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChmZCk7 Ci0KLQlzcmNfaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgU0laRSk7Ci0Jc3JjID0gZ2VtX2hhbmRs ZV90b19saWJkcm1fYm8oYnVmbWdyLCBmZCwKLQkJCQkgICAgICJibyIsIHNyY19oYW5kbGUpOwot CWlndF9hc3NlcnQoc3JjICE9IE5VTEwpOwotCi0JcmV0ID0gZHJtX2ludGVsX2dlbV9ib19tYXBf Z3R0KHNyYyk7Ci0JaWd0X2Fzc2VydF9lcShyZXQsIDApOwotCi0JdmlydCA9IHNyYy0+dmlydHVh bDsKLQlmb3IgKGogPSAwOyBqIDwgU0laRS9EV09SRF9TSVpFOyBqKyspIHsKLQkJaWd0X2Fzc2Vy dF9lcSh2aXJ0W2pdLCAwKTsKLQkJdmlydFtqXSA9IGo7Ci0JfQotCi0JZHJtX2ludGVsX2JvX3Vu bWFwKHNyYyk7Ci0JLyogRXhoYXVzdCBTdG9sZW4gc3BhY2UgKi8KLQlmb3IgKGkgPSAwOyBpIDwg TUFYX09CSkVDVFM7IGkrKykgewotCQloYW5kbGVbaV0gPSBfX2dlbV9jcmVhdGVfc3RvbGVuKGZk LCBTSVpFKTsKLQkJaWYgKCFoYW5kbGVbaV0pCi0JCQlicmVhazsKLQotCQlibyA9IGdlbV9oYW5k bGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsCi0JCQkJCSAgICAgInZlcmlmeV9ibyIsIGhhbmRs ZVtpXSk7Ci0JCWlndF9hc3NlcnQoYm8gIT0gTlVMTCk7Ci0JCXJldCA9IGRybV9pbnRlbF9nZW1f Ym9fbWFwX2d0dChibyk7Ci0JCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKLQotCQl2aXJ0ID0gYm8t PnZpcnR1YWw7Ci0JCWZvciAoaiA9IDA7IGogPCBTSVpFL0RXT1JEX1NJWkU7IGorKykKLQkJCWln dF9hc3NlcnRfZXEodmlydFtqXSwgMCk7Ci0KLQkJZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKLQkJ ZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKLQotCQlvYmpfY291bnQrKzsKLQl9Ci0KLQkv KiBBc3NlcnQgaWYgYXRsZWFzdCBvbmUgb2JqZWN0IGlzIGFsbG9jYXRlZCBmcm9tIHN0b2xlbiwg dGhhdAotCSAqIGlzIGdvb2QgZW5vdWdoIHRvIHZlcmlmeSB0aGUgY29udGVudCBwcmVzZXJ2YXRp b24gYWNyb3NzCi0JICogaGliZXJuYXRpb24uCi0JICovCi0JaWd0X2Fzc2VydChvYmpfY291bnQg PiAwKTsKLQotCS8qIENvcHkgZGF0YSB0byBhbGwgc3RvbGVuIGJhY2tlZCBvYmplY3RzICovCi0J Zm9yIChpID0gMDsgaSA8IG9ial9jb3VudDsgaSsrKSB7Ci0JCWRlc3QgPSBnZW1faGFuZGxlX3Rv X2xpYmRybV9ibyhidWZtZ3IsIGZkLAotCQkJCQkgICAgICAgImRzdF9ibyIsIGhhbmRsZVtpXSk7 Ci0JCWlndF9hc3NlcnQoZGVzdCAhPSBOVUxMKTsKLQkJLyogQ29weSBjb250ZW50cyB0byBzdG9s ZW4gYmFja2VkIG9iamVjdHMgdmlhIGJsdCBhbmQKLQkJICogdmVyaWZ5IHBvc3QtaGliZXJuYXRp b24sIHRoaXMgYWxzbyBoZWxwcyBpbiBpZGVudGlmeWluZwotCQkgKiB0aGF0IHRoZSBvcGVyYXRp b24gd2FzIGNvbXBsZXRlZCBiZWZvcmUgZ29pbmcgdG8KLQkJICogaGliZXJuYXRpb24uCi0JCSAq LwotCQlpbnRlbF9jb3B5X2JvKGJhdGNoLCBkZXN0LCBzcmMsIFNJWkUpOwotCX0KLQotCWRybV9p bnRlbF9ib191bnJlZmVyZW5jZShzcmMpOwotCi0JaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1 bWUoU1VTUEVORF9TVEFURV9ESVNLLCBTVVNQRU5EX1RFU1RfTk9ORSk7Ci0JLyogQ2hlY2sgaWYg dGhlIG9iamVjdCdzIG1lbW9yeSBjb250ZW50cyBhcmUgaW50YWN0Ci0JICogYWNyb3NzIGhpYmVy bmF0aW9uLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBvYmpfY291bnQ7IGkrKykgewotCQlibyA9 IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsCi0JCQkJCSAgICAgInZlcmlmeV9i byIsIGhhbmRsZVtpXSk7Ci0JCWlndF9hc3NlcnQoYm8gIT0gTlVMTCk7Ci0JCXJldCA9IGRybV9p bnRlbF9nZW1fYm9fbWFwX2d0dChibyk7Ci0JCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKLQkJdmly dCA9IGJvLT52aXJ0dWFsOwotCQlmb3IgKGogPSAwOyBqIDwgU0laRS9EV09SRF9TSVpFOyBqKysp Ci0JCQlpZ3RfYXNzZXJ0X2VxKHZpcnRbal0sIGopOwotCi0JCWRybV9pbnRlbF9ib191bm1hcChi byk7Ci0JCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Ci0JfQotCi0JZ2VtX2Nsb3NlKGZk LCBzcmNfaGFuZGxlKTsKLQlmb3IgKGkgPSAwOyBpIDwgb2JqX2NvdW50OyBpKyspCi0JCWdlbV9j bG9zZShmZCwgaGFuZGxlW2ldKTsKLX0KLQotc3RhdGljIHZvaWQKLXN0b2xlbl9ub19tbWFwKGlu dCBmZCkKLXsKLQl2b2lkICphZGRyOwotCXVpbnQzMl90IGhhbmRsZSA9IDA7Ci0KLQlnZW1fcmVx dWlyZV9zdG9sZW5fc3VwcG9ydChmZCk7Ci0KLQloYW5kbGUgPSBnZW1fY3JlYXRlX3N0b2xlbihm ZCwgU0laRSk7Ci0KLQlhZGRyID0gX19nZW1fbW1hcF9fY3B1KGZkLCBoYW5kbGUsIDAsIFNJWkUs IFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwotCWlndF9hc3NlcnQoYWRkciA9PSBOVUxMKTsKLQot CWdlbV9jbG9zZShmZCwgaGFuZGxlKTsKLX0KLQotaWd0X21haW4KLXsKLQlpbnQgZmQ7Ci0JdWlu dDMyX3QgZGV2aWQ7Ci0KLQlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Ci0KLQlpZ3RfZml4dHVy ZSB7Ci0JCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Ci0JCWRldmlkID0gaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCk7Ci0KLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1f aW5pdChmZCwgNDA5Nik7Ci0JCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYnVmbWdy LCBkZXZpZCk7Ci0JfQotCi0JaWd0X3N1YnRlc3QoInN0b2xlbi1jbGVhciIpCi0JCXZlcmlmeV9v YmplY3RfY2xlYXIoZmQpOwotCi0JLyoKLQkgKiBzdG9sZW4gbWVtIHNwZWNpYWwgY2FzZXMgLSBj aGVja2luZyBmb3Igbm9uIGNwdSBtYXBwYWJsZQotCSAqLwotCWlndF9zdWJ0ZXN0KCJzdG9sZW4t bm8tbW1hcCIpCi0JCXN0b2xlbl9ub19tbWFwKGZkKTsKLQotCS8qIGNoZWNraW5nIGZvciBwcmVh ZC9wd3JpdGUgaW50ZXJmYWNlcyAqLwotCWlndF9zdWJ0ZXN0KCJzdG9sZW4tcHdyaXRlIikKLQkJ c3RvbGVuX3B3cml0ZShmZCk7Ci0KLQlpZ3Rfc3VidGVzdCgic3RvbGVuLXByZWFkIikKLQkJc3Rv bGVuX3ByZWFkKGZkKTsKLQotCS8qIEZ1bmN0aW9uYWwgVGVzdCAtIGJsdCBjb3B5ICovCi0JaWd0 X3N1YnRlc3QoInN0b2xlbi1jb3B5IikKLQkJY29weV90ZXN0KGZkKTsKLQotCWlndF9zdWJ0ZXN0 KCJsYXJnZS1vYmplY3QtYWxsb2MiKQotCQlzdG9sZW5fbGFyZ2Vfb2JqX2FsbG9jKGZkKTsKLQot CS8qIEZpbGxpbmcgc3RvbGVuIGNvbXBsZXRlbHkgYW5kIG1hcmtpbmcgYWxsIHRoZSBvYmplY3Rz Ci0JICogcHVyZ2VhYmxlLiBUaGVuIHRyeWluZyB0byBhZGQgb25lIG1vcmUgb2JqZWN0LCB0byB2 ZXJpZnkKLQkgKiB0aGUgcHVyZ2luZyBsb2dpYy4KLQkgKiBBZ2FpbiBtYXJraW5nIGFsbCBvYmpl Y3RzIFdJTExORUVEIGFuZCB2ZXJpZnlpbmcgdGhlCi0JICogY29udGVudHMgb2YgdGhlIHJldGFp bmVkIG9iamVjdHMuCi0JICovCi0JaWd0X3N1YnRlc3QoInN0b2xlbi1maWxsLXB1cmdlIikKLQkJ c3RvbGVuX2ZpbGxfcHVyZ2VfdGVzdChmZCk7Ci0KLQlpZ3Rfc3VidGVzdCgic3RvbGVuLWhpYmVy bmF0ZSIpCi0JCXN0b2xlbl9oaWJlcm5hdGUoZmQpOwotCi0JaWd0X2ZpeHR1cmUgewotCQlpbnRl bF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1 Zm1ncik7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNv bi5idWlsZAppbmRleCBiOGE2ZTYxYi4uMzNjNzczY2UgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29u LmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0xOTksNyArMTk5LDYgQEAgZ2VtX3By b2dzID0gWwogCSdnZW1fc2hyaW5rJywKIAknZ2VtX3NvZnRwaW4nLAogCSdnZW1fc3Bpbl9iYXRj aCcsCi0JJ2dlbV9zdG9sZW4nLAogCSdnZW1fc3RvcmVkd19iYXRjaGVzX2xvb3AnLAogCSdnZW1f c3RvcmVkd19sb29wJywKIAknZ2VtX3N0cmVhbWluZ193cml0ZXMnLAotLSAKMi4xOS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK